# Created by The |mmortaL (asn@cdc.net)
# Mail me all bugs & stuff, Copy it & die =)
# Simply set rvchan & rvowner to the correct vars =)
# It only works on one chan =), and rvowner will get
# notes when the revenge system did some thing to an op =)
# Eggdrop some times does things on it's own! It's NOT my Fault!

set rvowner ImmortaL
set rvchan #abhome
set rvooff 1
set rvcounter 0

if {[info exists rvtimer] == 1} {unset rvtimer}



#### (**) Bot Revenge Systems (**)
bind mode - "*-o $botnick*" mode:botrevenge
bind mode - "*+o $botnick*" mode:botrevdo
bind kick - *$botnick* kick:botrevenge

proc kick:botrevenge {nick uhost handle chan knick reason} {
 global botnick rvchan rvkicknick rvkicklevel rvowner
 if {[string tolower $nick] == [string tolower $botnick]} {return 0}
 if {[string tolower $chan] != [string tolower $rvchan]} {return 0}
 if {[matchchanattr $handle f $rvchan] == 1} {return 0}
 if {[matchattr $handle f] == 1} {return 0}
 if {[matchattr $handle m] == 1} {return 0}
 if {[matchchanattr $handle m $rvchan] == 1} {return 0}
 if {$handle == "*"} {
   newchanban $chan [maskhost $uhost] Revengesys "Kicked bot [ctime [unixtime]]" 0 
   set rvkicknick $nick
   set rvkicklevel 1
   sendnote RevengeSystem $rvowner "(UNKNOWN) $nick ($uhost) Kicked The bot, perm ban added. ([ctime [unixtime]])"
   return 0
 }
 if {([matchattr $handle o] == 0) && ([matchchanattr $handle o $chan] == 0)} {
   newchanban $chan [maskhost $uhost] Revengesys "Kicked bot [ctime [unixtime]]" 0 
   set rvkicknick $nick
   set rvkicklevel 1
   sendnote RevengeSystem $rvowner "($handle) $nick ($uhost) Kicked The bot, perm ban added. ([ctime [unixtime]])"
   return 0
 }
 newchanban $chan [maskhost $uhost] Revengesys "Kicked bot [ctime [unixtime]] (60min Ban)"
 chattr $handle -o+d $chan
 set rvkicknick $nick
 set rvkicklevel 2
 sendnote RevengeSystem $rvowner "($handle) $nick ($uhost) Kicked The bot, Ops removed & added 60min Ban. ([ctime [unixtime]])"
}
proc mode:botrevenge {nick uhost handle chan modechg} {
 global botnick rvchan rvdopnick rvdoplevel rvowner
 if {[string tolower $nick] == [string tolower $botnick]} {return 0}
 if {[string tolower $chan] != [string tolower $rvchan]} {return 0}
 if {[matchchanattr $handle f $rvchan] == 1} {return 0}
 if {[matchattr $handle f] == 1} {return 0}
 if {[matchattr $handle m] == 1} {return 0}
 if {[matchchanattr $handle m $rvchan] == 1} {return 0}
 if {$handle == "*"} {
   set rvdopnick $nick
   set rvdoplevel 1
   newchanban $chan [maskhost $uhost] RevengeSys "Deoped Bot [ctime [unixtime]] (60min Ban)
   sendnote RevengeSystem $rvowner "(UNKNOWN) $nick ($uhost) Deoped the bot, added 60min Ban. ([ctime [unixtime]])"
   return 0
 }
 if {([matchattr $handle o] == 0) && ([matchchanattr $handle o $chan] == 0)} {
   set rvdopnick $nick
   set rvdoplevel 1
   newchanban $chan [maskhost $uhost] RevengeSys "Deoped the bot [ctime [unixtime]] (60min ban)"
   sendnote RevengeSystem $rvowner "($handle) $nick ($uhost) Deoped The bot, Ops removed & added 60min Ban. ([ctime [unixtime]])"
   return 0
 }
 set rvdopnick $nick
 set rvdoplevel 2
 chattr $handle -o+d $chan
 sendnote RevengeSystem $rvowner "($handle) $nick ($uhost) Deoped bot, ops removed"
}

proc mode:botrevdo {nick uhost handle chan modechg} {
 global botnick rvchan rvdopnick rvdoplevel rvkicknick rvkicklevel rvowner
 if {[string tolower $chan] != [string tolower $rvchan]} {return 0}
 if {([info exists rvkicknick] == 0) && ([info exists rvdopnick] == 0)} {return 0}
 if {[info exists rvdoplevel] == 1} {
   if {[onchan $rvdopnick $chan] == 0} {
     unset rvdopnick
     unset rvdoplevel
     return 0
   }
   if {$rvdoplevel == 1} {
     putserv "MODE $chan -o+b $rvdopnick [maskhost [getchanhost $rvdopnick $chan]]"
     putserv "KICK $chan $rvdopnick :REVENGE SYSTEM - DON'T DEOP ME! 1hour Shitlist!"
     unset rvdopnick
     unset rvdoplevel
     return 0
   }
   if {$rvdoplevel == 2} {
     putserv "KICK $chan $rvdopnick :REVENGE SYSTEM - DON'T DEOP ME! (OPS REMOVED)"
     unset rvdopnick
     unset rvdoplevel
     return 0
   }
 }
 if {[info exists rvkicklevel] == 1} { 
   if {[onchan $rvkicknick $chan] == 0} {
     unset rvkicknick
     unset rvkicklevel
     return 0
   }
   if {$rvkicklevel == 1} {
     putserv "MODE $chan -o+b $rvkicknick [maskhost [getchanhost $rvkicknick $chan]]"
     putserv "KICK $chan $rvkicknick :REVENGE SYSTEM - DON'T KICK ME! PERM SHIT LIST!"
     unset rvkicknick
     unset rvkicklevel
     return 0
   }
   if {$rvkicklevel == 2} {
     putserv "MODE $chan -o+b $rvkicknick [maskhost [getchanhost $rvkicknick $chan]]"
     putserv "KICK $chan $rvkicknick :REVENGE SYSTEM - DON'T KICK ME! (1hour ban)"
putmsg #ABhome "break 1 $rvkicklevel"
     unset rvkicklevel
     unset rvkicknick
     return 0
   }
 }
}
   

#### (**) Op Revenge System (user) (**)
bind mode - *-o* mode:revenge
proc mode:revenge {nick uhost handle channel modechg} {
 global botnick rvchan rvcounter rvooff rvtimer rvowner 
 set who [lindex $modechg 1]
 if {[string tolower $nick] == [string tolower $botnick]} {return 0}
 if {[string tolower $channel] != [string tolower $rvchan]} {return 0}
 if {[matchchanattr $handle f $rvchan] == 1} {return 0}
 if {[matchattr $handle f] == 1} {return 0}
 if {[matchattr $handle m] == 1} {return 0}
 if {[matchchanattr $handle m $rvchan] == 1} {return 0}
 if {[string tolower $who] == [string tolower $nick]} {return 0}
 if {[string tolower [nick2hand $who $rvchan]] == [string tolower $handle]} {return 0}
 if {[nick2hand $who $rvchan] == "*"} {return 0}
 if {([matchattr $handle o] == 0) && ([matchchanattr $handle o $rvchan] == 0)} {return 0}
 if {$who == $botnick} {return 0}
 if {($handle == "*")} {
   putserv "kick $rvchan $nick :Get out of here loser! Don't deop my friends"
   return 0
 }
 if {([matchattr $handle o] == 0) && ([matchchanattr $handle o $rvchan] == 0)} {
   putserv "kick $rvchan $nick :Get out of here loser! Don't deop my friends"
   return 0
 }
 if {($rvcounter == "0") || ([string tolower $nick] != [string tolower $rvooff])} {
   if {[info exists rvtimer] == 1} {
     killtimer $rvtimer
     unset rvtimer
   }
   set rvooff [string tolower $nick]
   set rvcounter 1
   timer 2 proc:rmvars
   set rvtimer [timerexists proc:rmvars]
   putmsg $nick {(WARNING 1) You are not permitted to deop Operators.}
   return 0
 }
 if {$rvcounter == "1"} {
   if {[info exists rvtimer] == 1} {
     killtimer $rvtimer
     unset rvtimer
   }
   set rvcounter 2
   timer 1 proc:rmvars
   set rvtimer [timerexists proc:rmvars]
   putmsg $nick {(WARNING 2) You are not permitted to deop operators, an other offence will remove your OP access.}
   return 0
 }
 if {[info exists rvtimer] == 1} {
   killtimer $rvtimer
   unset rvtimer
 }
 chattr $handle -o+d $rvchan
 pushmode $rvchan -o $nick
 putmsg $rvchan "$nick!$uhost has been stripped of OP access, for multiple deops of Operators, bot owner has been informed."
 sendnote RevengeSystem $rvowner "($handle) $nick ($uhost) deoped op(s) 3 times, ops removed. ([ctime [unixtime]])"
 proc:rmvars
 return 0
}

proc proc:rmvars {} {
 global rvooff
 global rvcounter
 global rvtimer
 set rvooff 1
 set rvcounter 0
 if {[info exists rvtimer] == 1} {unset rvtimer}
}

#### (**) Kick Revenge System (**)
bind kick - * kick:revenge
proc kick:revenge {nick uhost handle channel knick reason} {
 global rvchan botnick rvowner 
 if {[string tolower $channel] != [string tolower $rvchan]} {return 0}
 if {[nick2hand $knick $rvchan] == "*"} {return 0}
 if {([matchattr [nick2hand $knick $rvchan] o] == 0) && ([matchattr [nick2hand $knick $rvchan] m] == 0) && ([matchattr [nick2hand $knick $rvchan] f] == 0) && ([matchchanattr [nick2hand $knick $rvchan] o $rvchan] == 0) && ([matchchanattr [nick2hand $knick $rvchan] m $rvchan] == 0) && ([matchchanattr [nick2hand $knick $rvchan] f $rvchan] == 0)} {return 0}
 if {[string tolower $botnick] == [string tolower $nick]} {return 0}
 if {[string tolower $nick] == [string tolower $knick]} {return 0}
 if {[string tolower $handle] == [string tolower [nick2hand $knick $rvchan]]} {return 0}
 if {([matchattr $handle f] == 1) || ([matchattr $handle m] == 1) || ([matchchanattr $handle f $rvchan] == 1) || ([matchchanattr $handle m $rvchan] == 1)} {return 0}
 if {$knick == $botnick} {return 0}
 if {([matchattr $handle o] == 1) || ([matchchanattr $handle o $rvchan] == 1)} {
   chattr $handle -o+d $chan
   putserv "MODE $rvchan -o $nick"
   putmsg $rvchan "$nick!$uhost (WAS OP) has been removed of ops for kicking $knick![getchanhost $knick $rvchan]."
   sendnote RevengeSystem $rvowner " ($handle) $nick ($uhost) kicked $knick ([getchanhost $knick $rvchan]) Op access removed. ([ctime [unixtime]])"
   return 0
 }
 putserv "MODE $rvchan -o+b $nick [maskhost $uhost]"
 putserv "KICK $rvchan $nick :Kicked $knick![getchanhost $knick $rvchan] [date] (60 min ban)"
 newchanban $rvchan [maskhost $uhost] RevengeSys "Kicked $knick![getchanhost $knick $rvchan] [ctime [unixtime]]"
 putmsg $rvchan "$nick!$uhost (WAS NORM USER) has been added to a 1 hour shitlist for kicking $knick![getchanhost $knick $rvchan]."
 sendnote RevengeSystem $rvowner" ($handle) $nick ($uhost) kicked $knick ([getchanhost $knick $rvchan]) 60min perm ban. ([ctime [unixtime]]) "
}

putlog "Eggdrog-grant1.1 - Revevenge Mode on: $rvchan, fully loaded... --The |mmortaL (asn@cdc.net)
