Hockey Game 2009

Platform:  mIRC
Published  Dec 07, 2010
Updated  Jul 10, 2011

Screenshots

This is a simple hockey script for mIRC. The readme is in the link below and I encourage those who host the script to read it.

IMPORTANT: This game requires other files to play. Download the files below and put them in the same directory as the script. It is recommended that you create a new folder somewhere (such as mIRC/scripts/hockey/) and put all files there. The snippet is included in the link so you don't need to copy the code.

Extra Files: http://www.mediafire.com/?ageg66d89f2s3wo
(last updated July 9, 2011)

Here are some notes:
-Hockey on IRC? Does anyone even care about hockey...
-This can be somewhat spammy at times, so beware.
-I have no control over RL players being traded or injured.
-Goals come at a much higher rate than normal (~60%) because we don't want to run an IRC script for 60 minutes.

Notes on newest version:
-Added anime version for kicks
-Added 1 round of OT where all saves stay in play until a goal is scored
-Improved AI, still inefficient with over 9000 file reads, but hey it's not like we're using Pentium II
-Improved display a bit
-Teams are still 2009 because I'm too lazy alias h.roll {
var %h.nick $nick
if ($2) { var %h.nick $2 }
var %h.stat 3|0|0|0|0|0|0|0|0|0|0|0|X
write -s $+ %h.nick " $+ $scriptdir $+ h_accounts.txt $+ " %h.nick %h.stat

var %h.temp 1
while (%h.temp <= $iif(%hockey.mode == anime,56,38)) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ L $+ %h.temp $+ |*)) { var %h.avail.l $instok(%h.avail.l,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.l,124) <= 1) { halt }
var %h.l1n $rand(1,$numtok(%h.avail.l,124))
var %h.l1 $gettok(%h.avail.l,%h.l1n,124)
var %h.avail.l $deltok(%h.avail.l,%h.l1n,124)
var %h.l2 $gettok(%h.avail.l,$rand(1,$numtok(%h.avail.l,124)),124)

var %h.temp 1
while (%h.temp <= $iif(%hockey.mode == anime,60,37)) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ C $+ %h.temp $+ |*)) { var %h.avail.c $instok(%h.avail.c,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.c,124) <= 1) { halt }
var %h.c1n $rand(1,$numtok(%h.avail.c,124))
var %h.c1 $gettok(%h.avail.c,%h.c1n,124)
var %h.avail.c $deltok(%h.avail.c,%h.c1n,124)
var %h.c2 $gettok(%h.avail.c,$rand(1,$numtok(%h.avail.c,124)),124)

var %h.temp 1
while (%h.temp <= $iif(%hockey.mode == anime,57,36)) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ R $+ %h.temp $+ |*)) { var %h.avail.r $instok(%h.avail.r,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.r,124) <= 1) { halt }
var %h.r1n $rand(1,$numtok(%h.avail.r,124))
var %h.r1 $gettok(%h.avail.r,%h.r1n,124)
var %h.avail.r $deltok(%h.avail.r,%h.r1n,124)
var %h.r2 $gettok(%h.avail.r,$rand(1,$numtok(%h.avail.r,124)),124)

var %h.temp 1
while (%h.temp <= $iif(%hockey.mode == anime,108,77)) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ D $+ %h.temp $+ |*)) { var %h.avail.d $instok(%h.avail.d,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.d,124) <= 3) { halt }
var %h.d1n $rand(1,$numtok(%h.avail.d,124))
var %h.d1 $gettok(%h.avail.d,%h.d1n,124)
var %h.avail.d $deltok(%h.avail.d,%h.d1n,124)
var %h.d2n $rand(1,$numtok(%h.avail.d,124))
var %h.d2 $gettok(%h.avail.d,%h.d2n,124)
var %h.avail.d $deltok(%h.avail.d,%h.d2n,124)
var %h.d3n $rand(1,$numtok(%h.avail.d,124))
var %h.d3 $gettok(%h.avail.d,%h.d3n,124)
var %h.avail.d $deltok(%h.avail.d,%h.d3n,124)
var %h.d4 $gettok(%h.avail.d,$rand(1,$numtok(%h.avail.d,124)),124)

var %h.temp 1
while (%h.temp <= $iif(%hockey.mode == anime,23,24)) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ G $+ %h.temp $+ |*)) { var %h.avail.g $instok(%h.avail.g,%h.temp,1,124) }
inc %h.temp
}
if (!%h.avail.g) { halt }
var %h.g1 $gettok(%h.avail.g,$rand(1,$numtok(%h.avail.g,124)),124)

var %h.stat $puttok(%h.stat,L $+ %h.l1,2,124)
var %h.stat $puttok(%h.stat,C $+ %h.c1,3,124)
var %h.stat $puttok(%h.stat,R $+ %h.r1,4,124)
var %h.stat $puttok(%h.stat,D $+ %h.d1,5,124)
var %h.stat $puttok(%h.stat,D $+ %h.d2,6,124)
var %h.stat $puttok(%h.stat,L $+ %h.l2,7,124)
var %h.stat $puttok(%h.stat,C $+ %h.c2,8,124)
var %h.stat $puttok(%h.stat,R $+ %h.r2,9,124)
var %h.stat $puttok(%h.stat,D $+ %h.d3,10,124)
var %h.stat $puttok(%h.stat,D $+ %h.d4,11,124)
var %h.stat $puttok(%h.stat,G $+ %h.g1,12,124)

if (%hockey.mode != anime) {
var %h.legend $rand(2,12)
if (%h.legend isnum 2-4) || (%h.legend isnum 7-9) {
var %h.temp 1
while (%h.temp <= 23) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ F $+ %h.temp $+ |*)) { var %h.avail.z $instok(%h.avail.z,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.z,124) < 1) { halt }
var %h.z1 $gettok(%h.avail.z,$rand(1,$numtok(%h.avail.z,124)),124)
var %h.stat $puttok(%h.stat,F $+ %h.z1,%h.legend,124)
}
elseif (%h.legend isnum 5-6) || (%h.legend isnum 10-11) {
var %h.temp 121
while (%h.temp <= 131) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ D $+ %h.temp $+ |*)) { var %h.avail.z $instok(%h.avail.z,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.z,124) < 1) { halt }
var %h.z1 $gettok(%h.avail.z,$rand(1,$numtok(%h.avail.z,124)),124)
var %h.stat $puttok(%h.stat,D $+ %h.z1,%h.legend,124)
}
elseif (%h.legend isnum 12) {
var %h.temp 34
while (%h.temp <= 37) {
if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ G $+ %h.temp $+ |*)) { var %h.avail.z $instok(%h.avail.z,%h.temp,1,124) }
inc %h.temp
}
if ($numtok(%h.avail.z,124) < 1) { halt }
var %h.z1 $gettok(%h.avail.z,$rand(1,$numtok(%h.avail.z,124)),124)
var %h.stat $puttok(%h.stat,G $+ %h.z1,%h.legend,124)
}
}

write -s $+ %h.nick " $+ $scriptdir $+ h_accounts.txt $+ " %h.nick %h.stat

h.team return %h.nick
msg $chan $result
}

alias h.select {
var %h.nick $nick
if ($1 != h.select) { var %h.nick $1 }

if (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*|X)) || ($1 != h.select) {
if ($read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ $2-)) && ($1 == h.select) { msg $chan 06[PUCK] Team 06already chosen. }
elseif ($read(" $+ $scriptdir $+ h_select.txt $+ ",w,$2- $+ |*)) {
var %h.lineup $read(" $+ $scriptdir $+ h_select.txt $+ ",$readn)
if ($1 != h.select) { var %h.nick $replace($gettok(%h.lineup,1,124),$chr(32),_) }
h.character $gettok(%h.lineup,2,124)
var %h.team 3| $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,3,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,4,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,8,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,9,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,5,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,6,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,7,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,10,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,11,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ |
h.character $gettok(%h.lineup,12,124)
var %h.team %h.team $+ $gettok($result,1,32) $+ $gettok($result,2,32) $+ $chr(124) $+ $gettok(%h.lineup,1,124)
write -s $+ $strip(%h.nick) " $+ $scriptdir $+ h_accounts.txt $+ " $strip(%h.nick) %h.team
if ($1 != h.select) { return %h.team }
else {
h.team return %h.nick
msg $chan $result
}
}
else { msg $chan 06[PUCK] Team 06not in database. }
}
else { msg $chan 06[PUCK] You 06cannot select until after the next game. }
}

alias h.simulate {
var %h.team1 $gettok($2-,1,47)
var %h.team2 $gettok($2-,2,47)
h.select simulation %h.team1
var %h.s1 $gettok($result,13,124)
h.select simulation %h.team2
var %h.s2 $gettok($result,13,124)
if ($read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$replace(%h.team1,$chr(32),_))) && ($read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$replace(%h.team2,$chr(32),_))) { h.accept simulation $replace(%h.s1,$chr(32),_) $replace(%h.s2,$chr(32),_) }
else {
var %h.temp $read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$replace(%h.team1,$chr(32),_))
if (%h.temp) { write -dl $+ $readn " $+ $scriptdir $+ h_accounts.txt $+ " }
var %h.temp $read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$replace(%h.team2,$chr(32),_))
if (%h.temp) { write -dl $+ $readn " $+ $scriptdir $+ h_accounts.txt $+ " }
}
}

alias h.replace {
var %h.account $read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$nick)
var %h.actions $gettok(%h.account,1,124)
if (!%h.account) {
msg $chan 06[PUCK] You have 06no players in your team!
halt
}
elseif (%h.actions <= 0) {
msg $chan 06[PUCK] You 06cannot make any more replacements!
halt
}
h.character $3-
var %h.pos $gettok($result,1,32)
var %h.num $gettok($result,2,32)
if ($result == null) { msg $chan Error: Player not in Database }
elseif ($read(" $+ $scriptdir $+ h_accounts.txt $+ ",w,*| $+ %h.pos $+ %h.num $+ |*)) { msg $chan Error: Duplicate }
elseif (%h.pos isletter F) || ((%h.pos isletter D) && (%h.num > 120)) || ((%h.pos isletter G) && (%h.num > 33)) { msg $chan Error: This player cannot be picked }
elseif ($gettok($result,1,32) isin $read(" $+ $scriptdir $+ h_order.txt $+ ",s,$2)) {
var %h.account $puttok(%h.account,%h.pos $+ %h.num,$calc($2 + 1),124)
var %h.account $puttok(%h.account,$calc(%h.actions - 1),1,124)
var %h.account $puttok(%h.account,X,13,124)
write -s $+ $nick " $+ $scriptdir $+ h_accounts.txt $+ " $nick %h.account
h.team return $nick
msg $chan $result
}
else { msg $chan Error: Wrong Position }
}

alias h.team {
if (%hockey.mode == anime) { var %h.forward q_forward.txt | var %h.defender q_defender.txt | var %h.goalie q_goalie.txt }
else { var %h.forward %h.forward | var %h.defender %h.defender | var %h.goalie %h.goalie }
if ($2) && (!$read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$2)) {
if ($1 != return) msg $chan 06[PUCK] 12 $+ $2 06does not have a team!
halt
}
else {
var %h.nick $nick
if ($2) { var %h.nick $2 }
}
var %h.account $read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,%h.nick)
if (!%h.account) {
if ($1 != return) msg $chan 06[PUCK] 06You have no players in your team!
halt
}
else {
var %h.l1.id $gettok(%h.account,2,124)
var %h.l1.read $read(" $+ $scriptdir $+ %h.forward $+ ",s,%h.l1.id)
if (!%h.l1.read) { var %h.l1.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.l1.id) }
var %h.l1.name $gettok(%h.l1.read,1,124)
var %h.c1.id $gettok(%h.account,3,124)
var %h.c1.read $read(" $+ $scriptdir $+ %h.forward $+ ",s,%h.c1.id)
if (!%h.c1.read) { var %h.c1.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.c1.id) }
var %h.c1.name $gettok(%h.c1.read,1,124)
var %h.r1.id $gettok(%h.account,4,124)
var %h.r1.read $read(" $+ $scriptdir $+ %h.forward $+ ",s,%h.r1.id)
if (!%h.r1.read) { var %h.r1.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.r1.id) }
var %h.r1.name $gettok(%h.r1.read,1,124)
var %h.d1.id $gettok(%h.account,5,124)
var %h.d1.read $read(" $+ $scriptdir $+ %h.defender $+ ",s,%h.d1.id)
if (!%h.d1.read) { var %h.d1.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.d1.id) }
var %h.d1.name $gettok(%h.d1.read,1,124)
var %h.d2.id $gettok(%h.account,6,124)
var %h.d2.read $read(" $+ $scriptdir $+ %h.defender $+ ",s,%h.d2.id)
if (!%h.d2.read) { var %h.d2.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.d2.id) }
var %h.d2.name $gettok(%h.d2.read,1,124)
var %h.l2.id $gettok(%h.account,7,124)
var %h.l2.read $read(" $+ $scriptdir $+ %h.forward $+ ",s,%h.l2.id)
if (!%h.l2.read) { var %h.l2.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.l2.id) }
var %h.l2.name $gettok(%h.l2.read,1,124)
var %h.c2.id $gettok(%h.account,8,124)
var %h.c2.read $read(" $+ $scriptdir $+ %h.forward $+ ",s,%h.c2.id)
if (!%h.c2.read) { var %h.c2.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.c2.id) }
var %h.c2.name $gettok(%h.c2.read,1,124)
var %h.r2.id $gettok(%h.account,9,124)
var %h.r2.read $read(" $+ $scriptdir $+ %h.forward $+ ",s,%h.r2.id)
if (!%h.r2.read) { var %h.r2.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.r2.id) }
var %h.r2.name $gettok(%h.r2.read,1,124)
var %h.d3.id $gettok(%h.account,10,124)
var %h.d3.read $read(" $+ $scriptdir $+ %h.defender $+ ",s,%h.d3.id)
if (!%h.d3.read) { var %h.d3.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.d3.id) }
var %h.d3.name $gettok(%h.d3.read,1,124)
var %h.d4.id $gettok(%h.account,11,124)
var %h.d4.read $read(" $+ $scriptdir $+ %h.defender $+ ",s,%h.d4.id)
if (!%h.d4.read) { var %h.d4.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.d4.id) }
var %h.d4.name $gettok(%h.d4.read,1,124)
var %h.g1.id $gettok(%h.account,12,124)
var %h.g1.read $read(" $+ $scriptdir $+ %h.goalie $+ ",s,%h.g1.id)
if (!%h.g1.read) { var %h.g1.read $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,%h.g1.id) }
var %h.g1.name $gettok(%h.g1.read,1,124)

if (!%h.l1.name) { var %h.l1.name (L1) }
if (!%h.c1.name) { var %h.c1.name (C1) }
if (!%h.r1.name) { var %h.r1.name (R1) }
if (!%h.d1.name) { var %h.d1.name (D1) }
if (!%h.d2.name) { var %h.d2.name (D2) }
if (!%h.l2.name) { var %h.l2.name (L2) }
if (!%h.c2.name) { var %h.c2.name (C2) }
if (!%h.r2.name) { var %h.r2.name (R2) }
if (!%h.d3.name) { var %h.d3.name (D3) }
if (!%h.d4.name) { var %h.d4.name (D4) }
if (!%h.g1.name) { var %h.g1.name (G) }

h.stats team $gettok(%h.account,2,124)
var %h.rate $gettok($result,10,124)
h.stats team $gettok(%h.account,3,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,4,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,5,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,6,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,7,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,8,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,9,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,10,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,11,124)
var %h.rate $calc($gettok($result,10,124) + %h.rate)
h.stats team $gettok(%h.account,12,124)
var %h.rate $calc($gettok($result,11,124) + %h.rate)

$iif($1 != return,msg $chan,return) 06 $+ Line 1: 05[12 %h.l1.name - %h.c1.name - %h.r1.name 05|03 %h.d1.name - %h.d2.name 05] 06 $+ Line 2: 05[12 %h.l2.name - %h.c2.name - %h.r2.name 05|03 %h.d3.name - %h.d4.name 05] 06 $+ Goalie: 05[04 %h.g1.name 05] 06 $+ Team Rating: 05[12 $round($calc(%h.rate / 11),1) 05]
}
}

alias h.character {
if (%hockey.mode == anime) { var %h.forward q_forward.txt | var %h.defender q_defender.txt | var %h.goalie q_goalie.txt }
else { var %h.forward p_forward.txt | var %h.defender p_defender.txt | var %h.goalie p_goalie.txt }
if ($len($1) <= 4) && ($left($1,1) isletter lcrdgfLCRDGF) && ($right($1,-1) isnum) {
var %h.query $read(" $+ $scriptdir $+ %h.forward $+ ",s,$1)
if (!%h.query) { var %h.query $read(" $+ $scriptdir $+ %h.defender $+ ",s,$1) }
if (!%h.query) { var %h.query $read(" $+ $scriptdir $+ %h.goalie $+ ",s,$1) }
if (!%h.query) { var %h.query $read(" $+ $scriptdir $+ p_legend.txt $+ ",s,$1) }
return $iif(%h.query,$upper($left($1,1)) $right($1,-1) %h.query,null)
}
else {
var %h.query $read(" $+ $scriptdir $+ %h.forward $+ ",w,* * $+ $1- $+ *|*|*|*|*|*|*|*|*) | var %h.line $readn
if (!%h.query) { var %h.query $read(" $+ $scriptdir $+ %h.defender $+ ",w,* * $+ $1- $+ *|*|*|*|*|*|*|*|*) | var %h.line $readn }
if (!%h.query) { var %h.query $read(" $+ $scriptdir $+ %h.goalie $+ ",w,* * $+ $1- $+ *|*|*|*|*|*|*|*|*) | var %h.line $readn }
if (!%h.query) { var %h.query $read(" $+ $scriptdir $+ p_legend.txt $+ ",w,* * $+ $1- $+ *|*|*|*|*|*|*|*|*) | var %h.line $readn }
var %h.pos $gettok(%h.query,1,32)
return $iif(%h.query,$left(%h.pos,1) $right(%h.pos,-1) $deltok(%h.query,1,32),null)
}
}

alias h.stats {
h.character $2-
if ($result == null) { msg $chan 06[PUCK] 06No such player exists. | halt }
var %h.pos $gettok($result,1,32)
var %h.id $gettok($result,2,32)
var %h.stats $deltok($result,1-2,32)
var %h.name $gettok(%h.stats,1,124)
var %h.team $gettok(%h.stats,9,124)

if (%h.pos isletter lcrdfLCRDF) {
var %h.wrist $gettok(%h.stats,2,124)
var %h.slap $gettok(%h.stats,3,124)
var %h.face $gettok(%h.stats,4,124)
var %h.pass $gettok(%h.stats,5,124)
var %h.speed $gettok(%h.stats,6,124)
var %h.check $gettok(%h.stats,7,124)
var %h.block $gettok(%h.stats,8,124)
var %h.wrist $calc(%h.wrist / 0.12)
var %h.slap $calc(%h.slap / 0.12)
var %h.fo $calc(%h.face / (%h.face + 77.25) * 1000)
var %h.ctrl $calc((%h.pass * 2 - 84.33) / 0.75)
var %h.blk $calc((%h.block * 2 - 83.88) / 0.65)
var %h.off $calc(%h.face / %h.pass * 833 - (%h.face / %h.pass * 83) ^ 1.1)
var %h.con $round($calc((%h.check / %h.speed * 100) - 100),1)
if (%h.con >= 0) { var %h.con + $+ %h.con }
if (%h.pos isletter lrLR) {
var %h.rate $round($calc((0.12 * %h.wrist + 0.12 * %h.slap + 0.6 * %h.face + 0.8 * %h.pass + 0.9 * %h.speed + 0.4 * %h.check + 0.3 * %h.block) / 5),1)
var %h.wrist $calc(%h.wrist * 1.1)
var %h.slap $calc(%h.slap * 1.1)
var %h.ctrl $calc(%h.ctrl / 1.1)
var %h.blk $calc(%h.blk / 1.25)
var %h.off $calc(%h.off * 1.15)
}
elseif (%h.pos isletter cC) {
var %h.rate $calc((0.12 * 0.9 * %h.wrist + 0.12 * 0.9 * %h.slap + 0.6 * %h.face + %h.pass + 0.9 * %h.speed + 0.4 * %h.check + 0.3 * %h.block) / 5)
var %h.ctrl $calc(%h.ctrl * 1.1)
var %h.blk $calc(%h.blk / 1.25)
}
elseif (%h.pos isletter dD) {
var %h.rate $round($calc((0.12 * 0.5 * %h.wrist + 0.12 * 0.5 * %h.slap + %h.pass + 0.5 * %h.speed + %h.check + 1.5 * %h.block) / 5),1)
var %h.wrist $calc(%h.wrist / 1.1)
var %h.slap $calc(%h.slap / 1.1)
var %h.ctrl $calc(%h.ctrl * 1.1)
var %h.blk $calc(%h.blk * 1.25)
var %h.off $calc(%h.off / 1.15)
}
else { var %h.rate $round($calc((0.12 * 0.95 * %h.wrist + 0.12 * 0.95 * %h.slap + 0.6 * %h.face + 0.9 * %h.pass + 0.9 * %h.speed + 0.3 * %h.check + 0.4 * %h.block) / 5),1) }
if ($1 == h.stats) { msg $chan 06[PUCK] 04 $+ %h.pos $+ %h.id $+ : 12 $+ %h.name - 06Off: 03 $+ $round($calc(%h.off / 10),1) $+ $chr(37) $+ 06, Acc: 03 $+ $round($calc((%h.wrist + %h.slap) / 20),1) $+ $chr(37) $+ 06, FO: 03 $+ $iif(%h.pos isletter dD,--,$round($calc(%h.fo / 10),1) $+ $chr(37)) $+ 06, Ctrl: 03 $+ $round($calc(%h.ctrl / 10),1) $+ $chr(37) $+ 06, Blk: 03 $+ $round($calc(%h.blk / 10),1) $+ $chr(37) $+ 06, Con: 03 $+ %h.con $+ 06, Rtg: 03 $+ $round(%h.rate,1) $+ 06, $iif(%hockey.mode == anime,Ability:,Team:) 02 $+ %h.team }
else { return %h.name $+ $chr(124) $+ %h.off $+ $chr(124) $+ %h.wrist $+ $chr(124) $+ %h.slap $+ $chr(124) $+ %h.face $+ $chr(124) $+ %h.pass $+ $chr(124) $+ %h.speed $+ $chr(124) $+ %h.check $+ $chr(124) $+ %h.block $+ $chr(124) $+ %h.rate $+ $chr(124) $+ %h.team }
}
elseif (%h.pos isletter gG) {
var %h.gl $gettok(%h.stats,2,124)
var %h.gh $gettok(%h.stats,3,124)
var %h.sl $gettok(%h.stats,4,124)
var %h.sh $gettok(%h.stats,5,124)
var %h.fh $gettok(%h.stats,6,124)
var %h.pc $calc($gettok(%h.stats,7,124) / 4)
var %h.rc $calc($gettok(%h.stats,8,124) / 4)
var %h.stam $gettok(%h.stats,10,124)
var %h.save $calc((%h.gl + %h.gh + %h.sl + %h.sh) / 10)
var %h.rate $calc((0.015 * (%h.gl + %h.gh + %h.sl + %h.sh) + 0.16 * %h.rc) * (%h.stam / 100) ^ 0.33)
var %h.glove $round($calc((%h.gl + %h.gh) / (%h.sl + %h.sh) * (1000 - %h.rc)),1)
if ($1 == h.stats) { msg $chan 06[PUCK] 04 $+ %h.pos $+ %h.id $+ : 12 $+ %h.name - 06Save: 03 $+ $round($calc(%h.save / 10),1) $+ $chr(37) $+ 06, Poke: 03 $+ $round($calc(%h.pc / 10),1) $+ 06, Rbnd: 03 $+ $round($calc(%h.rc / 10),1) $+ 06, Stam: 03 $+ %h.stam $+ $chr(37) $+ 06, Rtg: 03 $+ $round(%h.rate,1) $+ 06, $iif(%hockey.mode == anime,Ability:,Team:) 02 $+ %h.team }
else { return %h.name $+ $chr(124) $+ %h.gl $+ $chr(124) $+ %h.gh $+ $chr(124) $+ %h.sl $+ $chr(124) $+ %h.sh $+ $chr(124) $+ %h.fh $+ $chr(124) $+ %h.pc $+ $chr(124) $+ %h.rc $+ $chr(124) $+ %h.glove $+ $chr(124) $+ %h.stam $+ $chr(124) $+ %h.rate $+ $chr(124) $+ %h.team }
}
}

alias h.check {
var %h.read $read(" $+ $scriptdir $+ q_abilities.txt $+ ",w,$1- $+ *|*)
var %h.abil $gettok(%h.read,1,124)
var %h.desc $gettok(%h.read,2,124)
if (%hockey.mode != anime) { msg $chan 06[PUCK] 06 $+ Abilities are not available for this hockey mode. }
elseif (%h.abil) { msg $chan 06[PUCK] 04Ability: 12 $+ %h.abil -03 %h.desc }
}

alias h.clear {
write -c " $+ $scriptdir $+ h_accounts.txt $+ "
msg $chan 06[PUCK] All 12teams have been 03cleared and 12h.select is 06available $+ !
}

alias h.toggle {
if ($1 == normal) { set %hockey.mode normal }
elseif ($1 == anime) { set %hockey.mode anime }
write -c " $+ $scriptdir $+ h_accounts.txt $+ "
}

alias h.challenge {
if (%prot.h. [ $+ [ $nick ] ] == on) { notice $nick 06[PUCK] Another 06battle cannot be 12initiated so soon. | halt }
if (%h.fight) { msx.busy $nick | halt }
if (%h.challenge == 1) { notice $nick 06[PUCK] A 06challenge is 12already pending. | halt }
if ($2 == $3) { notice $nick 06[PUCK] 12You can't 06challenge yourself! | halt }
if ($3 !ison $chan) { msg $chan 06[PUCK] 12You can't 06challenge someone 06not in the channel! | halt }
if (%msx.chan) { msg $chan 06[PUCK] An 04[MSX] 12battle is 03currently in progress. | halt }
var %h.account.p1 $read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$2)
var %h.account.p2 $read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$3)
set %h.p1 $2
set %h.p2 $3
if (!%h.account.p1) { notice $nick 06[PUCK] 12You don't have an 06team to battle with! | halt }
if (!%h.account.p2) { msg $chan 06[PUCK] 12 $+ $3 has 06no team to battle with! | halt }
msg $chan 06[PUCK] 12 $+ %h.p2 $+ , do you 06accept or 06decline 12 $+ %h.p1 $+ 's challenge?
set %h.challenge 1
.timer.h.challenge.1 1 30 msg $chan 06[PUCK] 12 $+ %h.p2 has 06ignored 12 $+ %h.p1 $+ 's challenge.
.timer.h.challenge.2 1 30 unset %h.challenge
}

alias h.accept {
unset %h.challenge
.timer.h.challenge* off
set %h.chan $chan
var %h.account.p1 $deltok($deltok($read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$2),1,124),12-14,124)
set %h.p1 $gettok($read(" $+ $scriptdir $+ h_accounts.txt $+ ",$readn),1,32)
var %h.account.p2 $deltok($deltok($read(" $+ $scriptdir $+ h_accounts.txt $+ ",s,$3),1,124),12-14,124)
set %h.p2 $gettok($read(" $+ $scriptdir $+ h_accounts.txt $+ ",$readn),1,32)
write -c " $+ $scriptdir $+ h_player1.txt $+ "
write -c " $+ $scriptdir $+ h_player2.txt $+ "

h.stats battle $gettok(%h.account.p1,1,124)
write " $+ $scriptdir $+ h_player1.txt $+ " L1 $result
h.stats battle $gettok(%h.account.p1,2,124)
write " $+ $scriptdir $+ h_player1.txt $+ " C1 $result
h.stats battle $gettok(%h.account.p1,3,124)
write " $+ $scriptdir $+ h_player1.txt $+ " R1 $result
h.stats battle $gettok(%h.account.p1,4,124)
write " $+ $scriptdir $+ h_player1.txt $+ " D1 $result
h.stats battle $gettok(%h.account.p1,5,124)
write " $+ $scriptdir $+ h_player1.txt $+ " D2 $result
h.stats battle $gettok(%h.account.p1,6,124)
write " $+ $scriptdir $+ h_player1.txt $+ " L2 $result
h.stats battle $gettok(%h.account.p1,7,124)
write " $+ $scriptdir $+ h_player1.txt $+ " C2 $result
h.stats battle $gettok(%h.account.p1,8,124)
write " $+ $scriptdir $+ h_player1.txt $+ " R2 $result
h.stats battle $gettok(%h.account.p1,9,124)
write " $+ $scriptdir $+ h_player1.txt $+ " D3 $result
h.stats battle $gettok(%h.account.p1,10,124)
write " $+ $scriptdir $+ h_player1.txt $+ " D4 $result
h.stats battle $gettok(%h.account.p1,11,124)
write " $+ $scriptdir $+ h_player1.txt $+ " G $result

h.stats battle $gettok(%h.account.p2,1,124)
write " $+ $scriptdir $+ h_player2.txt $+ " L1 $result
h.stats battle $gettok(%h.account.p2,2,124)
write " $+ $scriptdir $+ h_player2.txt $+ " C1 $result
h.stats battle $gettok(%h.account.p2,3,124)
write " $+ $scriptdir $+ h_player2.txt $+ " R1 $result
h.stats battle $gettok(%h.account.p2,4,124)
write " $+ $scriptdir $+ h_player2.txt $+ " D1 $result
h.stats battle $gettok(%h.account.p2,5,124)
write " $+ $scriptdir $+ h_player2.txt $+ " D2 $result
h.stats battle $gettok(%h.account.p2,6,124)
write " $+ $scriptdir $+ h_player2.txt $+ " L2 $result
h.stats battle $gettok(%h.account.p2,7,124)
write " $+ $scriptdir $+ h_player2.txt $+ " C2 $result
h.stats battle $gettok(%h.account.p2,8,124)
write " $+ $scriptdir $+ h_player2.txt $+ " R2 $result
h.stats battle $gettok(%h.account.p2,9,124)
write " $+ $scriptdir $+ h_player2.txt $+ " D3 $result
h.stats battle $gettok(%h.account.p2,10,124)
write " $+ $scriptdir $+ h_player2.txt $+ " D4 $result
h.stats battle $gettok(%h.account.p2,11,124)
write " $+ $scriptdir $+ h_player2.txt $+ " G $result

unset %h.fight
h.game
}

alias h.decline {
msg $chan 06[PUCK] 12 $+ %h.p2 has 06declined 12 $+ %h.p1 $+ 's challenge.
unset %h.challenge
.timer.h.challenge* off
}

alias h.game {
if (!%h.fight) {
set %h.p1.score 0
set %h.p2.score 0
set %h.fight 1
set %h.p1.net $read(" $+ $scriptdir $+ h_player1.txt $+ ",s,G)
set %h.p1.goalie $gettok(%h.p1.net,1,124)
set %h.p1.stam $gettok(%h.p1.net,10,124)
set %h.p1.netm.a $gettok(%h.p1.net,12,124)
set %h.p2.net $read(" $+ $scriptdir $+ h_player2.txt $+ ",s,G)
set %h.p2.goalie $gettok(%h.p2.net,1,124)
set %h.p2.stam $gettok(%h.p2.net,10,124)
set %h.p2.netm.a $gettok(%h.p2.net,12,124)
msg %h.chan 06[PUCK] 04Hockey Match between 12 $+ Team %h.p1 and 03 $+ Team %h.p2 has started!
}
if (%h.fight > 1) { .timer.score 1 1 msg %h.chan 06[PUCK] 12 $+ Team %h.p1 has 06 $+ %h.p1.score points. 03 $+ Team %h.p2 has 06 $+ %h.p2.score points. }
if ((%h.fight > 5) && ($abs($calc(%h.p1.score - %h.p2.score)) > 0)) || ((%h.fight == 4) && ($abs($calc(%h.p1.score - %h.p2.score)) == 3)) || ((%h.fight == 5) && ($abs($calc(%h.p1.score - %h.p2.score)) >= 2)) {
write -c " $+ $scriptdir $+ h_accounts.txt $+ "
var %h.win $iif(%h.p1.score > %h.p2.score,%h.p1,%h.p2)
.timer.h.end 1 2 msg %h.chan Congratulations to $iif(%h.p1.score > %h.p2.score,12 $+,03 $+) $+ Team %h.win $+ , the 06winner of this 04Hockey Match!
unset %h.*
halt
}
unset %h.line %h.rink %h.t1 %h.t2 %h.t3
.timer.h.new 1 3 h.faceoff
}

alias h.rink {
var %h.prob $calc(($1 + 200) / 400 * 1000)
var %h.rand $rand(1,1000)
if (%h.rand <= %h.prob) {
var %h.new $rand(1,3)
while (%h.new == %h.num) { var %h.new $rand(1,3) }
return %h.new
}
else {
var %h.new $rand(4,5)
while (%h.new == %h.num) { var %h.new $rand(4,5) }
return %h.new
}
}

alias h.puck {
var %h.puck $floor($calc(($1 + 260) / 40))
var %h.pos $puttok(-|-|-|-|-|+|-|-|-|-|-,04o,%h.puck,124)
return 12[ $+ $remove(%h.pos,|) $+ 03] $iif(!$2,%h.clr.o $+ $iif(%h.file == h_player1.txt,$chr(187),$chr(171)),)
}

alias h.faceoff {
set %h.line.1 $iif($rand(1,1000) > 350,L1|C1|R1|D1|D2,L2|C2|R2|D3|D4)
set %h.line.2 $iif($rand(1,1000) > 350,L1|C1|R1|D1|D2,L2|C2|R2|D3|D4)
set %h.rink 0
var %p1.rand $rand(1,3)
var %p2.rand $rand(1,3)
var %p1.stat $read(" $+ $scriptdir $+ h_player1.txt $+ ",s,$gettok(%h.line.1,%p1.rand,124))
var %p2.stat $read(" $+ $scriptdir $+ h_player2.txt $+ ",s,$gettok(%h.line.2,%p2.rand,124))
var %p1.char $gettok(%p1.stat,1,124)
var %p2.char $gettok(%p2.stat,1,124)
var %p1.fo $gettok(%p1.stat,5,124)
var %p2.fo $gettok(%p2.stat,5,124)
var %p1.fop $round($calc(%p1.fo / (%p1.fo + %p2.fo) * 1000),0)
var %p2.fop $calc(1000 - %p1.fop)
msg %h.chan 06[PUCK] 04Faceoff $iif(%h.fight > 5,OT,%h.fight) $+ : 12 $+ %p1.char ( $+ $calc(%p1.fop / 10) $+ $chr(37) $+ ) 06vs. 03 $+ %p2.char ( $+ $calc(%p2.fop / 10) $+ $chr(37) $+ )
var %h.rand $rand(1,1000)
if (%h.rand <= %p1.fop) {
set %h.char %p1.char
set %h.num %p1.rand
set %h.line %h.line.1
set %h.line.d %h.line.2
set %h.file h_player1.txt
set %h.othr h_player2.txt
set %h.clr.o 12
set %h.clr.d 03
}
else {
set %h.char %p2.char
set %h.num %p2.rand
set %h.line %h.line.2
set %h.line.d %h.line.1
set %h.file h_player2.txt
set %h.othr h_player1.txt
set %h.clr.o 03
set %h.clr.d 12
}
var %h.len $rand(50,100)
set %h.rink $calc(%h.rink - %h.len)
h.rink %h.rink
set %h.stat $read(" $+ $scriptdir $+ %h.file $+ ",s,$gettok(%h.line,$result,124))
var %h.dest $gettok(%h.stat,1,124)
set %h.num $result
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink))
.timer.h.faceoff 1 2.5 msg %h.chan 06[PUCK] %h.clr.o $+ %h.char wins the 04faceoff and passes to %h.clr.o $+ %h.dest $+ . $result
set %h.t1 %h.dest | set %h.t2 %h.char
set %h.char %h.dest
.timer.h.change 1 5 h.trans
}

alias h.trans {
var %h.char.a $gettok(%h.stat,11,124)
var %h.shoot $round($calc((%h.rink - $iif(%h.char.a == Super Luck,-20,80)) / 100 * $gettok(%h.stat,2,124)),1)
if ($2 < -30) { var %h.shoot 1000 }
var %h.netm $read(" $+ $scriptdir $+ %h.othr $+ ",s,G)
var %h.netm.a $gettok(%h.netm,12,124)
var %h.poke $calc($gettok(%h.netm,7,124) * $iif(%h.netm.a == Frisk,1.5,1))
if (%h.char.a == Keen Eye) {
var %h.acc $calc(0.5 * $gettok(%h.stat,3,124) + 0.5 * $gettok(%h.stat,4,124))
var %h.acc $calc((%h.rink / 100) ^ 0.5 * %h.acc * 1.25)
if (%h.acc >= 750) { var %h.shoot 1000 }
else { var %h.shoot 0 }
echo $chan Keen Eye - Rink: %h.rink - Acc: %h.acc
}
if (%h.rink >= $iif(%h.netm.a == Frisk,170,180)) && ($rand(1,1000) <= %h.poke) {
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink))
var %h.goalie $gettok(%h.netm,1,124)
msg %h.chan 10[POKE] $iif(%h.netm.a == Frisk,04+Frisk+ $chr(32),) $+ %h.clr.d $+ %h.goalie 04poke checks the puck away from %h.clr.o $+ %h.char $+ ! $result ( $+ $round($calc(%h.poke / 10),1) $+ )
.timer.h.poke 1 2.5 h.rebound check $rand(140,180)
}
elseif (%h.shoot <= 0) || ($rand(1,1000) > %h.shoot) {
h.rink $calc(0 - %h.rink)
var %h.oppt $read(" $+ $scriptdir $+ %h.othr $+ ",s,$gettok(%h.line.d,$result,124))
var %h.dfnd $gettok(%h.oppt,1,124)
var %h.dnum $result
var %h.oppt.a $gettok(%h.oppt,11,124)
var %h.oppt.pass $gettok(%h.oppt,6,124)
var %h.char.pass $gettok(%h.stat,6,124)
var %h.steal $calc(100 * (%h.oppt.pass / %h.char.pass) / $iif(%h.char.a == Forewarn,3,$iif(%h.char.a == Technician,2,1)) * $iif(%h.oppt.a == Own Tempo,3,1))
var %h.speed $gettok(%h.stat,7,124)
var %h.oppt.check $gettok(%h.oppt,8,124)
var %h.char.check $gettok(%h.stat,8,124)
var %h.check $calc(100 * (%h.oppt.check / %h.char.check) / $iif(%h.char.a == Wonder Guard,3,$iif(%h.char.a == Speed Boost,2,1)) * $iif(%h.oppt.a == Reckless,3,1))
if (%h.steal > 0) && (%h.char.a == Forewarn) { var %h.abil1 %h.char.a }
if (%h.check > 0) && (%h.char.a == Wonder Guard) { var %h.abil1 %h.char.a }
if ($rand(1,1000) <= %h.steal) {
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink)) steal
msg %h.chan 06[PUCK] $iif(%h.oppt.a == Own Tempo,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.o $+ %h.char is 04intercepted by %h.clr.d $+ %h.dfnd $+ ! $result ( $+ $round($calc(%h.steal / 10),1) $+ )
set %h.rink $calc(0 - %h.rink)
set %h.char %h.dfnd
set %h.stat %h.oppt
set %h.num %h.dnum
var %h.file.temp %h.file
set %h.file %h.othr
set %h.othr %h.file.temp
var %h.clr.temp %h.clr.o
set %h.clr.o %h.clr.d
set %h.clr.d %h.clr.temp
var %h.line.temp %h.line
set %h.line %h.line.d
set %h.line.d %h.line.temp
unset %h.t2 %h.t3 | set %h.t1 %h.char
.timer.h.pass 1 2.5 h.trans steal
}
elseif ($rand(1,1000) <= %h.check) {
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink)) check
var %h.type $rand(1,999)
if (%h.check >= 120) && (%h.type <= 25) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04smashes $iif(%hockey.mode == anime,her,his) elbow into %h.clr.o $+ %h.char $+ s head! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
elseif (%h.check >= 120) && (%h.type <= 50) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04chops carelessly, 04tripping %h.clr.o $+ %h.char onto the ice! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
elseif (%h.check >= 120) && (%h.type <= 75) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04cross checks %h.clr.o $+ %h.char from behind! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
elseif (%h.check >= 120) && (%h.type <= 100) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04swings upward into %h.clr.o $+ %h.char $+ 's face! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
elseif (%h.check >= 120) && (%h.type <= 125) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04slashes down at %h.clr.o $+ %h.char $+ 's hand! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
elseif (%h.type <= 333) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04poke checks the puck away from %h.clr.o $+ %h.char $+ ! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
elseif (%h.type <= 666) { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04slams $iif(%hockey.mode == anime,her,his) shoulder into %h.clr.o $+ %h.char $+ ! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
else { msg %h.chan 06[PUCK] $iif(%h.oppt.a == Reckless,04+ $+ %h.oppt.a $+ + $chr(32),) $+ %h.clr.d $+ %h.dfnd 04pushes %h.clr.o $+ %h.char violently into the boards! $result ( $+ $round($calc(%h.check / 10),1) $+ ) }
.timer.h.check 1 2.5 h.rebound check %h.rink
}
elseif ($rand(1,100) <= $calc(%h.speed / 3)) && (%h.rink < 140) {
if (%h.rink <= 0) { var %h.mult $sqrt($calc((%h.rink / 2 - 100) / -100)) }
else { var %h.mult 1 }
var %h.len $round($calc($rand($calc(%h.speed / 1.25),%h.speed) * %h.mult * $iif(%h.char.a == Speed Boost,1.25,1)),0)
set %h.rink $calc(%h.rink + %h.len)
if (%h.rink <= -200) { set %h.rink $calc(0 - $rand(180,195)) }
elseif (%h.rink >= 200) { set %h.rink $rand(180,195) }
if (%h.char.a == Speed Boost) { var %h.abil1 %h.char.a }
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink))
msg %h.chan 06[PUCK] $iif(%h.abil1,04+ $+ %h.abil1 $+ + $chr(32),) $+ %h.clr.o $+ %h.char skates 06forward with the puck. $result
.timer.h.skate 1 2.5 h.trans skate
}
else {
if (%h.rink < -20) { var %h.len $round($calc($rand(75,95) * $sqrt($calc((%h.rink / 2 - 100) / -100)))) }
elseif (%h.rink < 80) { var %h.len $iif($rand(1,100) > 15,$rand(75,95),$calc(0 - $rand(10,30))) }
elseif (%h.rink < 160) { var %h.len $rand(60,95) }
else { var %h.len $calc(0 - $rand(31,50)) }
if (%h.char.a == Technician) || (%h.len > 0) { var %h.len $calc(%h.len * 1.25) }
set %h.rink $calc(%h.rink + %h.len)
if (%h.rink <= -200) { set %h.rink $calc(0 - $rand(180,195)) }
elseif (%h.rink >= 200) { set %h.rink $rand(180,195) }
if (%h.char.a == Keen Eye) {
if (%h.rink > 0) {
var %h.rand $rand(1,3)
while (%h.rand == %h.num) { var %h.rand $rand(1,3) }
}
else {
if (%h.num isnum 4) { var %h.rand 5 }
elseif (%h.num isnum 5) { var %h.rand 4 }
else { var %h.rand $rand(4,5) }
}
set %h.stat $read(" $+ $scriptdir $+ %h.file $+ ",s,$gettok(%h.line,%h.rand,124))
set %h.num %h.rand
}
else {
h.rink %h.rink
set %h.stat $read(" $+ $scriptdir $+ %h.file $+ ",s,$gettok(%h.line,$result,124))
set %h.num $result
}
var %h.dest $gettok(%h.stat,1,124)
if (%h.char.a == Technician && %h.len > 0) || (%h.char.a == Keen Eye) { var %h.abil1 %h.char.a }
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink))
msg %h.chan 06[PUCK] $iif(%h.abil1,04+ $+ %h.abil1 $+ + $chr(32),) $+ %h.clr.o $+ %h.char passes $iif(%h.len >= 0,06forward,10backward) to %h.clr.o $+ %h.dest $+ . $result
set %h.char %h.dest
if (%h.t2 != %h.char) { set %h.t3 %h.t2 } | set %h.t2 %h.t1 | set %h.t1 %h.char
.timer.h.pass 1 2.5 h.trans %h.len
}
}
else {
var %h.char.a $gettok(%h.stat,11,124)
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink))
var %h.loc $iif($rand(1,100) > 50,high,low)
var %h.shot $iif($rand(1,100) > 80 || $1 == skate || %h.rink >= 180,wrist,slap)
if (%h.char.a == Sniper) || (%h.char.a == Zen Mode) || (%h.char.a == Super Luck) || (%h.char.a == Keen Eye) { var %h.abil1 %h.char.a }
if (%h.rink >= 180) && ($1 isnum) {
msg %h.chan 13[LUCK] $iif(%h.abil1,04+ $+ %h.abil1 $+ + $chr(32),) $+ %h.clr.o $+ %h.char 04<deflects> the puck towards the net! $result
var %h.shot deflect
}
else {
if (%h.char.a == Pure Power) && (%h.shot == slap) { var %h.abil1 %h.char.a }
msg %h.chan 13[LUCK] $iif(%h.abil1,04+ $+ %h.abil1 $+ + $chr(32),) $+ %h.clr.o $+ %h.char 04<shoots> the puck %h.loc with a %h.shot $+ shot! $result
}
.timer.h.shoot 1 $iif(%h.shot == deflect,1.5,2.5) h.shoot %h.loc %h.shot
}
}

alias h.shoot {
var %h.char.a $gettok(%h.stat,11,124)
h.rink $calc(0 - %h.rink) shoot
var %h.oppt $read(" $+ $scriptdir $+ %h.othr $+ ",s,$gettok(%h.line.d,$result,124))
var %h.oppt.a $gettok(%h.oppt,11,124)
var %h.dfnd $gettok(%h.oppt,1,124)
var %h.tough $gettok(%h.oppt,9,124)
var %h.shot $iif($2 == wrist,$gettok(%h.stat,3,124),$gettok(%h.stat,4,124))
var %h.block $calc((20 * %h.tough - %h.shot) / 6.5 * $iif(%h.oppt.a == Sturdy,2,1))
if (%h.char.a == Zen Mode) { set %h.block 0 }
if ($rand(1,1000) <= %h.block) {
msg %h.chan 06[PUCK] $iif(%h.oppt.a == Sturdy,04+Sturdy+ $chr(32),) $+ %h.clr.d $+ %h.dfnd 04blocks the shot! ( $+ $round($calc(%h.block / 10),1) $+ )
.timer.h.reb 1 1.5 h.rebound shoot $round($calc((%h.rink + 200) / 2),0)
}
else {
var %h.acc $gettok(%h.stat,$iif($2 == wrist,3,4),124)
if (%h.char.a == Sniper) || ((%h.char.a == Keen Eye) && (%h.rink isnum 160-200)) { var %h.mult 1.25 }
var %h.acc $calc((%h.rink / 100) ^ 0.5 * %h.acc * $iif(%h.mult,1.25,$iif(%h.char.a == Pure Power && $2 == slap,1.5,1)))
if (%h.char.a == Super Luck) { var %h.acc 1000 }
if ($1 == low) {
var %h.p1.save $calc($gettok(%h.p1.net,2,124) / 5 + $gettok(%h.p1.net,4,124) / 5 * (%h.p1.stam / 100) ^ $log(%h.fight))
var %h.p2.save $calc($gettok(%h.p2.net,2,124) / 5 + $gettok(%h.p2.net,4,124) / 5 * (%h.p2.stam / 100) ^ $log(%h.fight))
}
else {
var %h.p1.save $calc($gettok(%h.p1.net,3,124) / 5 + $gettok(%h.p1.net,5,124) / 5 * (%h.p1.stam / 100) ^ $log(%h.fight))
var %h.p2.save $calc($gettok(%h.p2.net,3,124) / 5 + $gettok(%h.p2.net,5,124) / 5 * (%h.p2.stam / 100) ^ $log(%h.fight))
}
if ($rand(1,1000) > %h.acc) {
msg %h.chan 06[PUCK] The 06shot goes 10 $+ $iif($1 == low,wide,over the net) $+ ! $round($calc(%h.acc / 10),1)
.timer.h.reb 1 1.5 h.rebound shoot $rand(185,199)
}
elseif (%h.file == h_player1.txt) {
var %h.rebound $gettok(%h.p2.net,8,124)
var %h.glove $gettok(%h.p2.net,9,124)
if ($2 == wrist) && (%h.p2.netm.a == Inner Focus) {
var %h.focus $true
var %h.p2.save $calc(%h.p2.save * 1.5)
}
else { unset %h.focus }
if ($rand(1,1000) <= %h.p2.save) {
var %h.save $rand(1,1000)
if (%h.save <= %h.rebound) || (%h.fight > 5) {
if (%hockey.mode == anime) { msg %h.chan 10[SAVE] $iif(%h.focus || %h.p2.netm.a == Magic Bounce,04+ $+ %h.p2.netm.a $+ + $chr(32),) $+ %h.clr.d $+ %h.p2.goalie effortlessly 10swats the puck aside. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
else { msg %h.chan 10[SAVE] $iif(%h.focus || %h.p2.netm.a == Magic Bounce,04+ $+ %h.p2.netm.a $+ + $chr(32),) $+ %h.clr.d $+ %h.p2.goalie makes a difficult 10blocker save. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
.timer.h.reb 1 1.5 h.rebound blocker $rand(120,180) $iif(%h.p2.netm.a == Magic Bounce,bounce,)
}
elseif (%h.save <= %h.glove) {
if (%hockey.mode == anime) { msg %h.chan 10[SAVE] $iif(%h.focus,04+Inner Focus+ $chr(32),) $+ %h.clr.d $+ %h.p2.goalie deftly 10snatches the puck out of mid-air. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
else { msg %h.chan 10[SAVE] $iif(%h.focus,04+Inner Focus+ $chr(32),) $+ %h.clr.d $+ %h.p2.goalie easily 10catches the puck in his glove. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
inc %h.fight
.timer.h.next 1 2 h.game
}
else {
msg %h.chan 10[SAVE] $iif(%h.focus,04+Inner Focus+ $chr(32),) $+ %h.clr.d $+ %h.p2.goalie 10deflects the puck into the netting. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ )
inc %h.fight
.timer.h.next 1 2 h.game
}
}
else {
msg %h.chan 04[GOAL] %h.clr.o $+ %h.char 04<scores>! ( $+ $round($calc((1000 - %h.p2.save) / 10000 * $iif(%h.acc > 1000,1000,%h.acc)),1) $+ ) 05[06 $iif(!%h.t2 && !%h.t3,Unassisted,$iif(%h.t3,Assists:,Assist:) %h.clr.o $+ %h.t2 $+ $iif(%h.t3,06 $+ $chr(44) %h.clr.o $+ %h.t3)) 05]
inc %h.p1.score
inc %h.fight
.timer.h.next 1 2 h.game
}
}
elseif (%h.file == h_player2.txt) {
var %h.rebound $gettok(%h.p1.net,8,124)
var %h.glove $gettok(%h.p1.net,9,124)
if ($2 == wrist) && (%h.p1.netm.a == Inner Focus) {
var %h.focus $true
var %h.p1.save $calc(%h.p1.save * 1.33)
}
else { unset %h.focus }
if ($rand(1,1000) <= %h.p1.save) {
var %h.save $rand(1,1000)
if (%h.save <= %h.rebound) || (%h.fight > 5) {
if (%hockey.mode == anime) { msg %h.chan 10[SAVE] $iif(%h.focus || %h.p1.netm.a == Magic Bounce,04+ $+ %h.p1.netm.a $+ + $chr(32),) $+ %h.clr.d $+ %h.p1.goalie effortlessly 10swats the puck aside. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
else { msg %h.chan 10[SAVE] $iif(%h.focus || %h.p1.netm.a == Magic Bounce,04+ $+ %h.p1.netm.a $+ + $chr(32),) $+ %h.clr.d $+ %h.p1.goalie makes a difficult 10blocker save. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
.timer.h.reb 1 1.5 h.rebound blocker $rand(120,180) $iif(%h.p1.netm.a == Magic Bounce,bounce,)
}
elseif (%h.save <= %h.glove) {
if (%hockey.mode == anime) { msg %h.chan 10[SAVE] $iif(%h.focus,04+Inner Focus+ $chr(32),) $+ %h.clr.d $+ %h.p1.goalie deftly 10snatches the puck out of mid-air. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
else { msg %h.chan 10[SAVE] $iif(%h.focus,04+Inner Focus+ $chr(32),) $+ %h.clr.d $+ %h.p1.goalie easily 10catches the puck in $iif(%hockey.mode == anime,her,his) glove. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ ) }
inc %h.fight
.timer.h.next 1 2 h.game
}
else {
msg %h.chan 10[SAVE] $iif(%h.focus,04+Inner Focus+ $chr(32),) $+ %h.clr.d $+ %h.p1.goalie 10deflects the puck into the netting. ( $+ $round($calc((1000 - %h.p2.save) / 10000 * %h.acc),1) $+ )
inc %h.fight
.timer.h.next 1 2 h.game
}
}
else {
msg %h.chan 04[GOAL] %h.clr.o $+ %h.char 04<scores>! ( $+ $round($calc((1000 - %h.p1.save) / 10000 * $iif(%h.acc > 1000,1000,%h.acc)),1) $+ ) 05[06 $iif(!%h.t2 && !%h.t3,Unassisted,$iif(%h.t3,Assists:,Assist:) %h.clr.o $+ %h.t2 $+ $iif(%h.t3,06 $+ $chr(44) %h.clr.o $+ %h.t3)) 05]
inc %h.p2.score
inc %h.fight
.timer.h.next 1 2 h.game
}
}
}
}

alias h.rebound {
unset %h.num
var %h.rbnd 333
h.rink $2
var %h.stat.t $read(" $+ $scriptdir $+ %h.file $+ ",s,$gettok(%h.line,$result,124))
var %h.char.a $gettok(%h.stat.t,11,124)
var %h.num.1 $result
if (%h.char.a == Magnet Pull) { var %h.rbnd $calc(%h.rbnd + 444) }
h.rink $calc(0 - $2)
var %h.oppt.t $read(" $+ $scriptdir $+ %h.othr $+ ",s,$gettok(%h.line.d,$result,124))
var %h.oppt.a $gettok(%h.oppt.t,11,124)
var %h.num.2 $result
if (%h.oppt.a == Magnet Pull) { var %h.rbnd $calc(%h.rbnd - 111) }
var %h.side $rand(1,1000)
if ($1 == blocker) && (%h.side <= 250) && (%h.fight <= 5) {
msg %h.chan 06[PUCK] %h.clr.d $+ $iif(%h.file == h_player1.txt,%h.p2.goalie,%h.p1.goalie) quickly 10freezes the puck. ( $+ $round($calc(%h.side / 10),1) $+ )
inc %h.fight
.timer.h.next 1 2 h.game
halt
}
elseif (%h.side <= $iif($3 == bounce,250,%h.rbnd)) {
set %h.rink $2
set %h.stat %h.stat.t
if (%h.char.a == Magnet Pull) && ($3 != bounce) { var %h.magnet Magnet Pull }
set %h.char $gettok(%h.stat,1,124)
set %h.num %h.num.1
if (%h.t1 != %h.char) { if (%h.t2 != %h.char) { set %h.t3 %h.t2 } | set %h.t2 %h.t1 | set %h.t1 %h.char }
}
else {
set %h.rink $calc(0 - $2)
set %h.stat %h.oppt.t
if (%h.oppt.a == Magnet Pull) { var %h.magnet Magnet Pull }
set %h.char $gettok(%h.stat,1,124)
set %h.num %h.num.2
var %h.file.temp %h.file
set %h.file %h.othr
set %h.othr %h.file.temp
var %h.clr.temp %h.clr.o
set %h.clr.o %h.clr.d
set %h.clr.d %h.clr.temp
var %h.line.temp %h.line
set %h.line %h.line.d
set %h.line.d %h.line.temp
unset %h.t2 %h.t3 | set %h.t1 %h.char
}
h.puck $iif(%h.file == h_player1.txt,%h.rink,$calc(0 - %h.rink))
if ($1 == shoot) || ($1 == blocker) { msg %h.chan 06[PUCK] $iif(%h.magnet,04+Magnet Pull+ $chr(32),) $+ %h.clr.o $+ %h.char grabs the 06rebound. $result }
elseif ($1 == check) { msg %h.chan 06[PUCK] $iif(%h.magnet,04+Magnet Pull+ $chr(32),) $+ %h.clr.o $+ %h.char 06comes away with the puck. $result }
.timer.h.pass 1 2.5 h.trans
}

on *:INPUT:#: {
if ($1 == h.accept) && (%h.challenge == 1) && (%h.p2 == $nick) { msg $chan $1- | h.accept challenge %h.p1 %h.p2 | haltdef }
elseif ($1 == h.challenge) && ($2) { msg $chan $1- | h.challenge challenge $nick $2 | haltdef }
elseif ($1 == h.check) && ($2) { msg $chan $1- | h.check $2- | haltdef }
elseif ($1 == h.clear) { msg $chan $1- | h.clear | haltdef }
elseif ($1 == h.replace) && ($2 isnum 1-11) && ($3) { msg $chan $1- | h.replace $1- | haltdef }
elseif ($1 == h.roll) { msg $chan $1- | h.roll $1- | haltdef }
elseif ($1 == h.select) { msg $chan $1- | h.select $1- | haltdef }
elseif ($1 == h.simulate) && ($chr(47) isin $2-) { msg $chan $1- | h.simulate $1- | haltdef }
elseif ($1 == h.stats) { msg $chan $1- | h.stats $1- | haltdef }
elseif ($1 == h.team) { msg $chan $1- | h.team $1- | haltdef }
elseif ($1 == h.toggle) { msg $chan $1- | h.toggle $2- | haltdef }
}

on *:TEXT:*:*: {
if ($1 == h.accept) && (%h.challenge == 1) && (%h.p2 == $nick) { h.accept challenge %h.p1 %h.p2 }
elseif ($1 == h.challenge) && ($2) { h.challenge challenge $nick $2 }
elseif ($1 == h.check) && ($2) { h.check $2- }
elseif ($1 == h.replace) && ($2 isnum 1-11) && ($3) { h.replace $1- }
elseif ($1 == h.roll) && (!%h.chan) { h.roll }
elseif ($1 == h.select) { h.select $1- }
elseif ($1 == h.stats) { h.stats $1- }
elseif ($1 == h.team) { h.team $1- }
}

Comments

Sign in to comment.
SunnyD   -  Dec 07, 2010
Kudos though, doesn't look like an easy snippet by any means.
 Respond  
MashhitDK   -  Dec 07, 2010
Looks like you spend a lot of time on this...

Nice work...
 Respond  
KholdStare88   -  Dec 07, 2010
Yeah, but fortunately they're mostly local variables. It's a game with lots of stats and calculations after all, and I complicate everything just for the fun of it...
 Respond  
SunnyD   -  Dec 07, 2010
Looks like a tsunami of variables. o.o
 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.