on *:TEXT:roll*:*: { %dice = 1 %sides = 20 %modifier = 0 %total = 0 if ($chan) { %sender = $chan } else { %sender = $nick } if ($4) { set %dice $2 set %sides $3 set %modifier $4 } elseif ($3) { set %dice $2 set %sides $3 } elseif ($2) { set %modifier $2 } if (%dice !isnum) || (%sides !isnum) || (%modifier !isnum) || (%dice < 1) || (%sides < 2) || (%dice > 30) { msg %sender INVALID PARAMETERS! halt } %i = 0 while (%i < %dice) { %i = %i + 1 %roll = $rand(1,%sides) msg %sender Roll %i $+ : %roll %total = %total + %roll } if (%modifier != 0) { msg %sender  $+ $nick $+ : %total + %modifier = $calc(%total + %modifier) } else { msg %sender  $+ $nick $+ : %total } }