# Entertainment, StripTease (ent_striptease.tcl)
# Modified by nukie (02 Dec 2001) - http://nukie.front.ru/
#
# Description : StripTease will, once triggered, make your bot perform
#               a strip tease in the channel. Pretty useless, but kinda amusing.
# Commands:
#  Where     F  CMD
# ---------- - ---------
#  Public:   o !striptease  (in channel)           
#    MSG:   o striptease #channelname
#    DCC:   o striptease #channelname

# Settings
set strip(active) 0
set cmdchar_ "!"
set strip(chan) ""
set strip(nouser) "ChanServ NickServ nukie caosa NoNi Vadya"


######### Please do not edit anything below unless you know what you are doing ;) #########
proc cmdchar { } {
global cmdchar_
return $cmdchar_
}

bind msg o strip msg_striptease
bind msg o striptease msg_striptease
bind dcc o strip dcc_striptease
bind dcc o striptease dcc_striptease
bind pub o [cmdchar]strip pub_striptease
bind pub o [cmdchar]striptease pub_striptease

proc msg_striptease {nick uhost hand rest} {
global strip botnick
set chan $rest
  if {$rest == ""} {putserv "NOTICE $nick :\[4x]: usage: striptease #channel"
                    return 0}
if {[validchan $chan] == 0} {putserv "NOTICE $nick :\[4x]: $chan is an invalid channel (I'm not on it)"
                                   return 0}

set strip(active) 1
set strip(chan) $chan
set strip(nick) $nick
putserv "NOTICE $strip(nick) :\[4x]: initializing striptease in $chan"
init_striptease

utimer 10 "striptease 1"
}


proc dcc_striptease {hand idx text} {
global strip 
set chan [string tolower [lindex [console $idx] 0]]
if {($strip(active) == 1)} {putdcc $idx "sorry, I'm already doing a striptease in $strip(chan)"
                        return 1}
set stripp(action) 1
set strip(chan) $chan
putdcc $idx "\[4x]: initializing striptease in $chan"
init_striptease

utimer 10 "striptease 1"
}


proc pub_striptease {nick uhost handle chan args} {
global clothes strip stripline
if {($strip(active) == 1)} {putserv "NOTICE $nick :\[4x]: sorry, i'm already doing a striptease in $strip(chan)"
                        return 1}
set strip(active) 1
set strip(chan) $chan
set strip(nick) $nick

putserv "NOTICE $strip(nick) :\[4x]: initializing striptease in $chan"
init_striptease

utimer 10 "striptease 1"
}

proc init_striptease {} {
global clothes strip stripline
set miscs "hat scarf shoes sandals cap garter_belt"
set miscrs "tosses slides kicks pitches slides"
set tops "shirt tank-top t-shirt halter_top"
set bottoms "pants skirt shorts mini_skirt leather_mini_skirt leather_pants hot_pants very_short_shorts"
set utops "bra silk_teddie leather_teddy leather_corset tight_corset"
set ubottoms "panties crotch-less_panties leather_panties silk_panties silk_lace_panties"

set miscn [rand [llength $miscs]]
set clothes(misc) [lindex $miscs $miscn]
regsub -all {_} $clothes(misc) " " clothes(misc)

set clothes(miscr) [lindex $miscrs $miscn]
regsub -all {_} $clothes(miscr) " " clothes(miscr)

set clothes(top) [lindex $tops [rand [llength $tops]]]
regsub -all {_} $clothes(top) " " clothes(top)

set clothes(bottom) [lindex $bottoms [rand [llength $bottoms]]]
regsub -all {_} $clothes(bottom) " " clothes(bottom)

set clothes(utop) [lindex $utops [rand [llength $utops]]]
regsub -all {_} $clothes(utop) " " clothes(utop)

set clothes(ubottom) [lindex $ubottoms [rand [llength $ubottoms]]]
regsub -all {_} $clothes(ubottom) " " clothes(ubottom)

unset tops
unset bottoms
unset miscs
unset miscrs
unset utops
unset ubottoms

set stripline(1) {
 {ACTION puts on some rhythmic music}
 {ACTION puts in some sexy music into the CD player and smiles}
 {ACTION hears a seductive song on the radio and turns it up}
                 }
set stripline(2) {
{ACTION starts to sway to the music}
{ACTION becomes entranced by the music and starts to sway back and forth.}
{ACTION moves in time with the music in a very sexual way}
{ACTION starts to make love to the music that flows around her}
                 }

set stripline(3) {
{is it just me or is anyone else feeling very sexual at the moment?}
{ACTION rubs her hands all over her body as her sexual mood heightens.}
{ACTION gets all hot and bothered listening to the sexually charged song}
                 }
set stripline(4) {
{ACTION gets up and starts to dance around, turning to the rythm of the song}
{ACTION sings along with the music playing as her hips pulsate to the rythm}
{ACTION moves her body in time with the pulsating rhythm of the music}
                 }
set stripline(5) {
{ACTION sings "I want to make love to you like an animal. I want to feel you from the inside."}
{ACTION sings "I want to make love to you like an animal! My whole existence is gone, you bring me closer to heaven"}
{ACTION sings "Sex is natural, sex is fun, sex is best when it's one on one"}
{ACTION sings "When I think about you I touch myself... I touch myself."}
{ACTION sings "You and me baby ain't nothing but mammals, so let's do it like they do on the Discovery channel."}
                 }
set stripline(6) {
{ACTION becomes overcomed by the sexual energy and $clothes(miscr) off her $clothes(misc)}
{ACTION $clothes(miscr) off her $clothes(misc)}
{ACTION looks seductively at $nick and $clothes(miscr) off her $clothes(misc) while smiling}
{ACTION $clothes(miscr) off her $clothes(misc) and asks $nick if he'd like to get naked with her}
                 }
set stripline(7) {
{Anyone feel like dancing? I sure do!}
{I feel like getting my groove on and getting nasty}
{The sexual energy in here sure is building up!}
{WOW! Is it hot in here or is it just me?}
{WhooHoo! I feel like getting naked!}
                 }
set stripline(8) {
{ACTION starts to dance in place, swaying her arms back and forth}
{ACTION dances to the music}
{ACTION dances in circles as the music bellows from the stereo}
                 }
set stripline(9) {
{ACTION slowly slides her $clothes(top) up her body and over her head in perfect time to the music.}
{ACTION lifts up her $clothes(top) in a teasing manner, then pulls it off and throws it at $nick }
{ACTION whips off her $clothes(top), dances over and places it on $nick's head while giggling}
{ACTION slowly slides her $clothes(top) up her body and over her head, in perfect time to the music, her neck and shoulders glistening with sweat}
                 }
set stripline(10) {
{ACTION dances around the room seductively looking at everyone}
{ACTION dances over and sexually caresses $nick }
{ACTION dances past $nick and seductively winks at him}
                  }
set stripline(11) {
{ACTION pulls her $clothes(bottom) off slowly.. seductively.. caressing her body as she goes}
{ACTION bends over in front of $nick and slides her $clothes(bottom) off slowly}
{ACTION removes her $clothes(bottom) and drapes them over $nick's head and giggles}
{ACTION slides her $clothes(bottom) off.... slowly.. seductively.. caressing her body with her hot little fingers as she goes...."Ohhhhh yeeeeeessss"}
                  }
set stripline(12) {
{ACTION rubs her almost naked body up against $nick and gives him a kiss}
{ACTION picks up her $clothes(misc) from the floor and moves it out of the way}
{ACTION picks up her $clothes(top) and seductively pulls it back and forth over her groins in front of $nick }
                  }
set stripline(13) {
{ACTION sensually pulls off her $clothes(utop), dances over to $nick and places it around his neck and gives him a kiss}
{ACTION removes her $clothes(utop), dances over to $nick and pushes her bare breasts into $nick's face}
{ACTION cups her covered breasts, moans, and removes her $clothes(utop) then discards it on the floor}
{ACTION slides her hands under her $clothes(utop), fondles her nipples then rips off her $clothes(utop) and laughs as she throws it on $nick }
{ACTION slowly slides her $clothes(utop) up her body and over her head, in perfect time to the music, revealing two perfect breasts glistening with sweat}

                  }
set stripline(14) {
{ACTION dances over to $nick and grinds her groins into him while singing}
{ACTION gyrates in an overtly sexual manner to the music}
{ACTION rubs her naked flesh while she dances to the music}
{ACTION stares into $nick's eyes of and asks "So, do you like what you see?"}
{ACTION picks up her $clothes(misc) from the floor, showing her firm, shapely butt to $nick as she bends over, and moves them out of the way}
{ACTION wraps her bellychain around $nick's waist, pulls him to her as she emits a breathy, light moan then writhes to the beat of the music, hips turning this way and that...}
                  }
set stripline(15) {
{ACTION bends over in front of $nick and seductively slides off her $clothes(ubottom)}
{ACTION sways over to $nick then removes her $clothes(ubottom) and places it on $nick's head}
{ACTION removes her $clothes(ubottom) and straddles $nick, "You like lap dances honey?"}
{ACTION tosses her $clothes(ubottom) at $nick and yells "Ta Da!"}
                  }
set stripline(16) {
{ACTION lays down on the floor while heaving her naked body up and down}
{ACTION dances around the room, seductively caressing $nick as she goes past}
{ACTION lays down and spreads her legs. Her fingers gently caressing the outline of her pussy}
{ACTION moans at her near estactic level of excitement as she caresses her body}
{ACTION exudes a deep, throaty moan as her near estactic level of excitement peaks... she caresses her body with fingers extended, caressing each and every curve....}
{ACTION rubs up against $nick so close and personal her breasts rubs his face}
                  }
set stripline(17) {
{ACTION rubs her totally naked body against $nick and asks if he liked the show}
{ACTION dances mythically around the room giving everyone a very good view of her naked body}
{ACTION twirls around proudly showing off her nakedness to everyone}
{ACTION dances mythically around the room, stopping at each couch, swaying and turning in front of them showing off her hot, sweaty, naked body}
{ACTION walks over to $nick and carresses him with her long hair}
                  }
set stripline(18) {
{ACTION smiles with pride at her nakedness and bows to the audience}
{ACTION radiates with pride over her nakedness and takes a bow}
{ACTION smiles with pride at her beautiful nakedness and bows seductively to the audience, glancing upwards through her long, soft hair...staring at everyone}
                  }
set stripline(19) {
{ACTION walks around picking up her clothes and sits back down}
{ACTION goes over to $nick and takes back her $clothes(utop) "Sorry hon, I kinda need this back" and smiles}
{ACTION stretches out on the sofa and smiles at $nick gazing at her naked body}
{ACTION snatches her $clothes(ubottom)'s away from $nick "Sorry hon, I'll let you sniff them later, k?"}
{ACTION goes over to $nick and gently takes back her $clothes(ubottom), and with a wicked grin says: 'Sorry hon, I kinda need this back' , and then struts out the back door}
                   }

}

proc striptease {level} {
global stripline clothes strip
set nextlevel [expr $level + 1]
if {($level == 20)} {set strip(active) 0
                    unset clothes
                    unset stripline
                    putserv "NOTICE $strip(nick) :\[4x]: finished striptease in $strip(chan)"
                    return 0} else {
                                    set dialog $stripline($level);
                                    set rdialog [rand [llength $dialog]]

strip_sendtxt $strip(chan) "[lindex $stripline($level) [rand [llength $stripline($level)]]]"
                                    utimer 10 "striptease $nextlevel"}
}


proc strip_sendtxt {chan outmsg} {
global clothes botnick
if {($outmsg != "")} {
 set user [rnduser $chan]

 regsub -all {\$nick} $outmsg $user outmsg
 regsub -all {\$chan} $outmsg $chan outmsg
 regsub -all {\$clothes\(misc\)} $outmsg $clothes(misc) outmsg
 regsub -all {\$clothes\(miscr\)} $outmsg $clothes(miscr) outmsg
 regsub -all {\$clothes\(top\)} $outmsg $clothes(top) outmsg
 regsub -all {\$clothes\(utop\)} $outmsg $clothes(utop) outmsg
 regsub -all {\$clothes\(bottom\)} $outmsg $clothes(bottom) outmsg
 regsub -all {\$clothes\(ubottom\)} $outmsg $clothes(ubottom) outmsg
 regsub -all {\\001} $outmsg \001 outmsg
 regsub -all {\\002} $outmsg \002 outmsg
 if {[lindex $outmsg 0] == "ACTION"} {putserv "PRIVMSG $chan :\001$outmsg\001"
                                      return 0}
 if {[lindex $outmsg 0] == "KICK"} {putserv "KICK $chan $nick :[lrange $outmsg 1 end]"} {
                                    putserv "privmsg $chan :$outmsg"}
                  }

}

proc rnduser {chan} {
global botnick strip
 set clist [chanlist $chan] 
 if {([llength $clist] == 1)} {set clist "$clist her"}
 set pickeduser 0
while {$pickeduser == 0} {
                          set user [lindex $clist [rand [llength $clist]]]
                          set pickeduser 1
    foreach n $strip(nouser) {
     if {([string tolower $user] == [string tolower $n])} {set pickeduser  0}
                            }
     if {($user == $botnick)} {set pickeduser 0}
 
                        }
 set uhand [nick2hand $user $chan]
 return $user
}
putlog "\[4x]: Entertainment, StripTease. Loaded."
return "\[4x]: Entertainment, StripTease. Loaded."