;################
;# General Info #
;################
;
;Filename: <TimeBomb.mrc>
;Required Files: <TimeBomb.ini>
;
;TimeBomb Channel Game v1.0 (Fully Functional, Minimal Features)
;
;"Just like diffusing the real thing, only with 100% more replay value if you lose!"
;
;Coded by: Checkers (Network: DALnet | Channel: #Helpdesk | Email: dadums@gmail.com | AIM: Sp4rkyJ0n3z)
;
;
;################
;# Instructions #
;################
;
;Load the game by extracting the files into your mIRC directory and /load -rs timebomb.mrc
;
;Use the Channel popups to Enable/Disable the game.
;Also there is an option whether or not to kick the person who failed to diffuse the bomb.
;
;To play, someone initiates the game by typing !Bomb in a channel.
;Then it will display instructions on how to diffuse the bomb and how much time you have.
;
;
;###########
;# Version #
;###########
;Release v1.0
;
;Created basic functionality.
;No known issues.
;
;I will add more features depending on feedback.
;
;Feedback / Bug Reports / Features requests -> dadums@gmail.com
#TimeBomb off
ON *:TEXT:!Bomb*:#: {
IF (!%Bomb.Ticking) { BombStart $nick $chan }
ELSE { .msg # Warining! %Bomb.Nick is already trying to diffuse a bomb on $iif($chan == %Bomb.Chan,this channel,%Bomb.Chan) }
}
ON *:TEXT:!Cut*:%Bomb.Chan: {
IF ((%Bomb.Ticking) && (%Bomb.Nick == $nick) && ($chan == %Bomb.Chan)) { BombCutWire $2 }
}
alias BombStart {
set %Bomb.Ticking 1
set %Bomb.Nick $1
set %Bomb.Chan $2
set %Bomb.Time $r(15,40)
var %Bomb.Start = $BombWires
set %Bomb.NWires $gettok(%Bomb.Start,1,94)
set %Bomb.CWires $gettok(%Bomb.Start,2,94)
set %Bomb.DWires $gettok(%Bomb.Start,3,94)
.msg $2 $BombReply(Start)
.msg $2 $BombReply(Wires)
.timerBomb 1 %Bomb.Time BombBoom $1 $2
}
alias BombCutWire {
IF ($1 == %Bomb.DiffuseWire) { BombBoom Diffused }
ELSEIF ($istok(%Bomb.AlreadyCut,$1,32)) { BombBoom AlreadyCut }
ELSEIF (!$istok($remove($strip(%Bomb.CWires),$chr(44)),$1,32)) { BombBoom NoSuchWire }
ELSEIF ($istok(%Bomb.DudWires,$1,32)) {
set %Bomb.AlreadyCut %Bomb.AlreadyCut $1
%Bomb.DWires = $deltok(%Bomb.DWires,$findtok(%Bomb.DWires,$1,32),32)
%Bomb.CWires = $deltok(%Bomb.CWires,$findtok($remove($strip(%Bomb.CWires),$chr(44)),$1,32),32)
dec %Bomb.NWires
BombBoom DudWire
}
ELSE { BombBoom WrongWire }
}
alias BombWires {
;Colors
var %Bomb.WireColors = 4Red,3Green,2Blue,10Teal,7Orange,8Yellow,5Brown,13Purple
;Number of Wires
var %Bomb.Wires = $r(2,$numtok(%Bomb.WireColors,44))
;Wires to choose from.
var %Bomb.Temp.Inc = 0
var %Bomb.Temp.Wires = %Bomb.WireColors
while (%Bomb.Temp.Inc < %Bomb.Wires) {
var %Bomb.Temp.Tok = $r(1,$numtok(%Bomb.Temp.Wires,44))
var %Bomb.CutWires = $iif(%Bomb.CutWires,$+(%Bomb.CutWires,$chr(44))) $gettok(%Bomb.Temp.Wires,%Bomb.Temp.Tok,44)
var %Bomb.Temp.Wires = $deltok(%Bomb.Temp.Wires,%Bomb.Temp.Tok,44)
inc %Bomb.Temp.Inc
}
;Set the Bombs Diffuse Wire
set %Bomb.DiffuseWire $remove($strip($gettok(%Bomb.CutWires,$r(1,$numtok(%Bomb.CutWires,32)),32)),$chr(44))
;Set The wires that won't trigger the bomb.
IF ($numtok(%Bomb.CutWires,32) > 2) {
var %Bomb.DudWires.N = $int($calc($numtok(%Bomb.CutWires,32) * .5))
set %Bomb.DudWires
var %Bomb.DudWires.Temp = %Bomb.CutWires
var %Bomb.DudWires.Temp2 = $remove($strip(%Bomb.CutWires),$chr(44))
var %Bomb.DudWires.Temp = $deltok(%Bomb.DudWires.Temp2,$findtok(%Bomb.DudWires.Temp2,%Bomb.DiffuseWire,32),32)
while (%Bomb.DudWires.N > $numtok(%Bomb.DudWires,32)) {
var %Bomb.DudWires.Temp.Tok = $r(1,$numtok(%Bomb.DudWires.Temp,32))
%Bomb.DudWires = %Bomb.DudWires $gettok(%Bomb.DudWires.Temp,%Bomb.DudWires.Temp.Tok,32)
var %Bomb.DudWires.Temp = $deltok(%Bomb.DudWires.Temp,%Bomb.DudWires.Temp.Tok,32)
}
}
return $+(%Bomb.Wires,^,%Bomb.CutWires,^,%Bomb.DudWires,^)
}
alias BombBoom {
IF ($1 == Diffused) { .msg %Bomb.Chan $BombReply(Diffused) | goto end }
IF ($1 == DudWire) { .msg %Bomb.Chan $BombReply(DudWire) | .msg %Bomb.Chan $BombReply(Wires) | halt }
IF ($1 == AlreadyCut) { .msg %Bomb.Chan $BombReply(AlreadyCut) | halt }
IF ($1 == NoSuchWire) { .msg %Bomb.Chan $BombReply(NoSuchWire) | halt }
IF ($1 == WrongWire) { var %Bomb.BoomMsg = $BombReply(WrongWire) }
ELSE { var %Bomb.BoomMsg = $BombReply(Failed) }
IF ($me IsOp %Bomb.Chan) && (%Bomb.KickToggle) {
.Kick %Bomb.Chan %Bomb.Nick %Bomb.BoomMsg
}
ELSE { .msg %Bomb.Chan %Bomb.BoomMsg }
;Pick Random People to die.
var %Bomb.Dead.N = $r(2,5)
while (%Bomb.Dead.N) {
set %Bomb.Dead $addtok(%Bomb.Dead,$nick(%Bomb.Chan,$r(1,$nick(%Bomb.Chan,0,a)),0,a),32)
dec %Bomb.Dead.N
}
:end
.unset %bomb.*
.timerBomb off
}
alias BombReply {
var %BombReply.File = $+($ScriptDir,TimeBomb.ini)
IF ($exists(%BombReply.File)) {
var %BombReply.N = $readini(%BombReply.File,$1,N)
return $readini(%BombReply.File,$1,$r(1,%BombReply.N))
}
ELSE { echo -s TimeBomb: BombReply File Does Not Exist! }
}
#TimeBomb END
;Popups! YAY!
menu Channel {
TimeBomb
.$iif($group(#TimeBomb).status == on,Disable,Enable) TimeBomb:.$iif($group(#TimeBomb).status == on,DISABLE,ENABLE) #timebomb
.$iif(%Bomb.KickToggle,Disable,Enable) Kicking: set %Bomb.KickToggle $iif(%Bomb.KickToggle,0,1)
.-
.Advertise:/msg # TimeBomb Channel Game v1.0 by Checkers (DALnet), Type !bomb to start the game.
}
==================below is the ini file====================
[script]
n0=;################
n1=;# General Info #
n2=;################
n3=;
n4=;Filename: <TimeBomb.mrc>
n5=;Required Files: <TimeBomb.ini>
n6=;
n7=;TimeBomb Channel Game v1.0 (Fully Functional, Minimal Features)
n8=;
n9=;"Just like diffusing the real thing, only with 100% more replay value if you lose!"
n10=;
n11=;Coded by: Checkers (Network: DALnet | Channel: #Helpdesk | Email: dadums@gmail.com | AIM: Sp4rkyJ0n3z)
n12=;
n13=;
n14=;################
n15=;# Instructions #
n16=;################
n17=;
n18=;Load the game by extracting the files into your mIRC directory and /load -rs timebomb.mrc
n19=;
n20=;Use the Channel popups to Enable/Disable the game.
n21=;Also there is an option whether or not to kick the person who failed to diffuse the bomb.
n22=;
n23=;To play, someone initiates the game by typing !Bomb in a channel.
n24=;Then it will display instructions on how to diffuse the bomb and how much time you have.
n25=;
n26=;
n27=;###########
n28=;# Version #
n29=;###########
n30=;Release v1.0
n31=;
n32=;Created basic functionality.
n33=;No known issues.
n34=;
n35=;I will add more features depending on feedback.
n36=;
n37=;Feedback / Bug Reports / Features requests -> dadums@gmail.com
n38=
n39=
n40=#TimeBomb off
n41=
n42=ON *:TEXT:!Bomb*:#: {
n43= IF (!%Bomb.Ticking) { BombStart $nick $chan }
n44= ELSE { .msg # Warining! %Bomb.Nick is already trying to diffuse a bomb on $iif($chan == %Bomb.Chan,this channel,%Bomb.Chan) }
n45=}
n46=
n47=ON *:TEXT:!Cut*:%Bomb.Chan: {
n48= IF ((%Bomb.Ticking) && (%Bomb.Nick == $nick) && ($chan == %Bomb.Chan)) { BombCutWire $2 }
n49=}
n50=
n51=alias BombStart {
n52= set %Bomb.Ticking 1
n53= set %Bomb.Nick $1
n54= set %Bomb.Chan $2
n55= set %Bomb.Time $r(15,40)
n56= var %Bomb.Start = $BombWires
n57= set %Bomb.NWires $gettok(%Bomb.Start,1,94)
n58= set %Bomb.CWires $gettok(%Bomb.Start,2,94)
n59= set %Bomb.DWires $gettok(%Bomb.Start,3,94)
n60= .msg $2 $BombReply(Start)
n61= .msg $2 $BombReply(Wires)
n62= .timerBomb 1 %Bomb.Time BombBoom $1 $2
n63=}
n64=
n65=
n66=alias BombCutWire {
n67= IF ($1 == %Bomb.DiffuseWire) { BombBoom Diffused }
n68= ELSEIF ($istok(%Bomb.AlreadyCut,$1,32)) { BombBoom AlreadyCut }
n69= ELSEIF (!$istok($remove($strip(%Bomb.CWires),$chr(44)),$1,32)) { BombBoom NoSuchWire }
n70= ELSEIF ($istok(%Bomb.DudWires,$1,32)) {
n71= set %Bomb.AlreadyCut %Bomb.AlreadyCut $1
n72= %Bomb.DWires = $deltok(%Bomb.DWires,$findtok(%Bomb.DWires,$1,32),32)
n73= %Bomb.CWires = $deltok(%Bomb.CWires,$findtok($remove($strip(%Bomb.CWires),$chr(44)),$1,32),32)
n74= dec %Bomb.NWires
n75= BombBoom DudWire
n76= }
n77= ELSE { BombBoom WrongWire }
n78=}
n79=
n80=alias BombWires {
n81= ;Colors
n82= var %Bomb.WireColors = 4Red,3Green,2Blue,10Teal,7Orange,8Yellow,5Brown,13Purple
n83= ;Number of Wires
n84= var %Bomb.Wires = $r(2,$numtok(%Bomb.WireColors,44))
n85= ;Wires to choose from.
n86= var %Bomb.Temp.Inc = 0
n87= var %Bomb.Temp.Wires = %Bomb.WireColors
n88= while (%Bomb.Temp.Inc < %Bomb.Wires) {
n89= var %Bomb.Temp.Tok = $r(1,$numtok(%Bomb.Temp.Wires,44))
n90= var %Bomb.CutWires = $iif(%Bomb.CutWires,$+(%Bomb.CutWires,$chr(44))) $gettok(%Bomb.Temp.Wires,%Bomb.Temp.Tok,44)
n91= var %Bomb.Temp.Wires = $deltok(%Bomb.Temp.Wires,%Bomb.Temp.Tok,44)
n92= inc %Bomb.Temp.Inc
n93= }
n94= ;Set the Bombs Diffuse Wire
n95= set %Bomb.DiffuseWire $remove($strip($gettok(%Bomb.CutWires,$r(1,$numtok(%Bomb.CutWires,32)),32)),$chr(44))
n96= ;Set The wires that won't trigger the bomb.
n97= IF ($numtok(%Bomb.CutWires,32) > 2) {
n98= var %Bomb.DudWires.N = $int($calc($numtok(%Bomb.CutWires,32) * .5))
n99= set %Bomb.DudWires
n100= var %Bomb.DudWires.Temp = %Bomb.CutWires
n101= var %Bomb.DudWires.Temp2 = $remove($strip(%Bomb.CutWires),$chr(44))
n102= var %Bomb.DudWires.Temp = $deltok(%Bomb.DudWires.Temp2,$findtok(%Bomb.DudWires.Temp2,%Bomb.DiffuseWire,32),32)
n103= while (%Bomb.DudWires.N > $numtok(%Bomb.DudWires,32)) {
n104= var %Bomb.DudWires.Temp.Tok = $r(1,$numtok(%Bomb.DudWires.Temp,32))
n105= %Bomb.DudWires = %Bomb.DudWires $gettok(%Bomb.DudWires.Temp,%Bomb.DudWires.Temp.Tok,32)
n106= var %Bomb.DudWires.Temp = $deltok(%Bomb.DudWires.Temp,%Bomb.DudWires.Temp.Tok,32)
n107= }
n108= }
n109= return $+(%Bomb.Wires,^,%Bomb.CutWires,^,%Bomb.DudWires,^)
n110=}
n111=
n112=alias BombBoom {
n113= IF ($1 == Diffused) { .msg %Bomb.Chan $BombReply(Diffused) | goto end }
n114= IF ($1 == DudWire) { .msg %Bomb.Chan $BombReply(DudWire) | .msg %Bomb.Chan $BombReply(Wires) | halt }
n115= IF ($1 == AlreadyCut) { .msg %Bomb.Chan $BombReply(AlreadyCut) | halt }
n116= IF ($1 == NoSuchWire) { .msg %Bomb.Chan $BombReply(NoSuchWire) | halt }
n117= IF ($1 == WrongWire) { var %Bomb.BoomMsg = $BombReply(WrongWire) }
n118= ELSE { var %Bomb.BoomMsg = $BombReply(Failed) }
n119=
n120= IF ($me IsOp %Bomb.Chan) && (%Bomb.KickToggle) {
n121= .Kick %Bomb.Chan %Bomb.Nick %Bomb.BoomMsg
n122= }
n123= ELSE { .msg %Bomb.Chan %Bomb.BoomMsg }
n124=
n125= ;Pick Random People to die.
n126= var %Bomb.Dead.N = $r(2,5)
n127= while (%Bomb.Dead.N) {
n128= set %Bomb.Dead $addtok(%Bomb.Dead,$nick(%Bomb.Chan,$r(1,$nick(%Bomb.Chan,0,a)),0,a),32)
n129= dec %Bomb.Dead.N
n130= }
n131= :end
n132= .unset %bomb.*
n133= .timerBomb off
n134=}
n135=
n136=alias BombReply {
n137= var %BombReply.File = $+($ScriptDir,TimeBomb.ini)
n138= IF ($exists(%BombReply.File)) {
n139= var %BombReply.N = $readini(%BombReply.File,$1,N)
n140= return $readini(%BombReply.File,$1,$r(1,%BombReply.N))
n141= }
n142= ELSE { echo -s TimeBomb: BombReply File Does Not Exist! }
n143=}
n144=#TimeBomb END
n145=
n146=;Popups! YAY!
n147=menu Channel {
n148= TimeBomb
n149= .$iif($group(#TimeBomb).status == on,Disable,Enable) TimeBomb:.$iif($group(#TimeBomb).status == on,DISABLE,ENABLE) #timebomb
n150= .$iif(%Bomb.KickToggle,Disable,Enable) Kicking: set %Bomb.KickToggle $iif(%Bomb.KickToggle,0,1)
n151= .-
n152= .Advertise:/msg # TimeBomb Channel Game v1.0 by Checkers (DALnet), Type !bomb to start the game.
n153=}
[Start]
N=4
1=Hurry %Bomb.Nick $+ ! Diffuse the bomb before your head a splode. You are having %Bomb.Time seconds to diffuse it.
2=Somebody set us up the bomb! %Bomb.Nick $+ , you must diffuse it in %Bomb.Time seconds.
3=N. Korea just aimed a missle in on your city %Bomb.Nick $+ ! You only have %Bomb.Time seconds to diffuse it.
4=Hi my name a Borat and I... Wawawewa! A bomb! ( $+ %Bomb.Time seconds untill it goes off.)
[Wires]
N=1
1=There are %Bomb.NWires present, They are $instok(%Bomb.CWires,or,-1,32) $+ . (Use !Cut <wire>)
[Diffused]
N=5
1=Success! You've saved the lives of $nick(%Bomb.Chan,0) people, including your own hide.
2=Hoorah.. another bomb diffused.. *yawn*
3=Congratulations! you've just won an inoperable nuclear device.
4=Darn.. another lucky one.
5=Good Job McGyver!
[WrongWire]
N=5
1=*KABOOM* - You cut the wrong wire.
2=*KABOOM* - Another one bites the dust.
3=*KABOOM* - Your head a splode.
4=*KABOOM* - The last thing that went through your mind as the bomb went off... Your teeth.
5=*KABOOM* - Don't worry, there have been a lot of sucessful people with no brains.
[Failed]
N=1
1=*KABOOM* - %Bomb.Nick failed to diffuse the bomb in time, you're all dead now. Say Thank you %Bomb.Nick
[DudWire]
N=3
1=*Snip* Lucky Lucky, That wire didn't set off the bomb, you have $timer(Bomb).secs seconds remaining.
2=*Snip* Phew! That wasn't the right one, but that wasn't the wrong one either.
3=*Snip* Wrong wire. I hope you have a good pair of running shoes.
[AlreadyCut]
N=2
1=You already cut that one, quit screwing around!
2=Your color blindness is going to be the end of you and a few of your close friends.
[NoSuchWire]
N=1
1=Oh a funny guy eh? Lets see how funny it is when that bomb goes off in your face.