####################################################
# by wiebe @ QuakeNet
#
####################################################

####################################################
# frag:help:pubm
####################################################
bind pubm fvlomn|fvlomn "% ${botnet-nick} help frag" frag:help:pubm
proc frag:help:pubm { n u h c t } {
  if {[matchattr $h bkZ]} { return 0 }
  lappend o "frag: usage frag \[<chan>\] <nick>"
  lappend o "frag: electrifies nick with the enhanced shockrifle"
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "frag: " } }
  putloglev c $c "help: $n $u $h $c frag"
  return 1
}


####################################################
# frag:help:msg
####################################################
bind msgm fvlomn|fvlomn "help frag" frag:help:msgm
proc frag:help:msgm { n u h t } {
  if {[matchattr $h bkZ]} { return 0 }
  lappend o "frag: usage frag <chan> <nick>"
  lappend o "frag: electrifies nick with the enhanced shockrifle"
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "frag: " } }
  putcmdlog "($n!$u) !$h! help frag"
  return 1
}


####################################################
# frag:pub
####################################################
bind pubm fvlomn|fvlomn "% ${botnet-nick} frag" frag:pubm
bind pubm fvlomn|fvlomn "% ${botnet-nick} frag *" frag:pubm
proc frag:pubm { n u h c t } {
  if {[matchattr $h bkZ]} { return 0 }
  set t [join [lrange [split $t] 2 end]]
  if {[string equal $t ""]} { lappend o "frag: usage frag \[<chan>\] <nick>"
  } else { set o [frag:frag $h $t $c $n] }
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "frag: " } }
  putloglev c $c "frag: $n $u $h $c $t"
  return 1
}


####################################################
# frag:msg
####################################################
bind msg fvlomn|fvlomn frag frag:msg
proc frag:msg { n u h t } {
  if {[matchattr $h bkZ]} { return 0 }
  if {[string equal $t ""]} { lappend o "frag: usage frag <chan> <nick>"
  } else { set o [frag:frag $h $t "" $n] }
  if {[string equal [info procs cnotice] ""]} { foreach l $o { puthelp "NOTICE $n :$l" }
  } else { foreach l $o { cnotice $n $l puthelp "frag: " } }
  return 1
}


####################################################
# frag:dcc
####################################################
bind dcc -|- frag frag:dcc
proc frag:dcc { h i t } {
  if {![valididx $i]} { return 0 }
  set c [lindex [split [console $i]] 0]
  if {![validchan $c]} { set c "" }
  if {[string equal $t ""]} {
    lappend o "frag: usage frag \[<chan>\] <nick>"
    lappend o "frag: electrifies nick with the enhanced shockrifle"
  } else { set o [frag:frag $h $t $c] }
  foreach l $o { putidx $i $l }
  return 1
}


####################################################
# frag:frag
####################################################
proc frag:frag { h t {c ""} {n ""} } {
  set t [split $t]; set d [lindex $t 0]; set m ""; set o ""
  if {[string equal $c ""] || [string match {[#&]*} $d]} {
    set c $d; set t [join [lrange $t 1 end]]
  }
  if {![validchan $c] && ![string equal [info procs whichchan] ""]} { set c [whichchan $h $c] }
  set t [string trimright [join $t] " "]
  if {[validchan $c]} { set m [lindex [split [getchanmode $c]] 0] }
  if {[string equal $c ""] || [string equal $t ""]} {
    lappend o "frag: usage frag \[<chan>\] <nick>"
  } elseif {![validchan $c] || ![matchattr $h fvlomn|fvlomn $c]} {
    lappend o "frag: no access or unknown channel $c"
  } elseif {![botonchan $c]} {
    lappend o "frag: I am not on $c"
  } elseif {[string match *m* $m] && ![botisop $c] && ![botishalfop $c] && ![botisvoice $c]} {
    lappend o "frag: channel $c is moderated"
  } else {
    set a "electrifies $t with the enhanced shockrifle"
    if {[string equal $n ""] || ![onchan $n $c] || [onchansplit $n $c]} {
      lappend o "frag: fragged '$t\017' on $c"
    }
    if {[string match *c* $m] } { set a [stripcodes bcru $a] }
    if {[string equal [info procs action] ""]} { puthelp "PRIVMSG $c :\001ACTION$a\001"
    } else { action $c $a puthelp "" }
  }
  return $o
}


set scriptdb(frag) {
  "provides frag command to frag users"
}

