0) { $result += rand(1,$die); $diecount--; } switch($op) { case "add" : $result += $mod; break; case "sub" : $result -= $mod; break; case "mul" : $result *= $mod; break; case "div" : $result = ceil($result / $mod); break; } break; case 'high': $results = array($diecount); while($diecount > 1) { $thisroll = rand(1,$die); $results[] = $thisroll; $diecount--; } arsort($results); $i = 0; $result = ''; foreach($results AS $key => $thing) { if($i > 0) { $result .= ' '; } if($i < ($mod)) { $result .= ''; } else { $result .= '('; } $result .= $thing; if($i < ($mod)) { $result .= ''; } else { $result .= ')'; } $i++; } break; case 'burn': $results = array($diecount); while($diecount > 1) { $thisroll = rand(1,$die); $results[] = $thisroll; $diecount--; } arsort($results); $i = 0; $result = ''; $successes = 0; $pluralstr = ''; foreach($results AS $key => $thing) { if($i > 0) { $result .= ' '; } if($thing > 3) { $result .= ''; $successes++; } else { $result .= '('; } $result .= $thing; if($thing > 3) { $result .= ''; } else { $result .= ')'; } $i++; } if($successes != 1) { $pluralstr = 'es'; } $result .= ' = ' . $successes . ' success' . $pluralstr; break; case 'fate': $results = array($diecount); while($diecount > 1) { $thisroll = rand(1,$die); $results[] = $thisroll; $diecount--; } $i = 0; $result = ''; foreach($results AS $key => $thing) { if($i > 0) { $result .= ' '; } switch($thing) { case 3: $result .= '+1'; break; case 1: $result .= '-1'; break; default: $result .= '0'; break; } $i++; } $result .= ''; break; case 'open': $keeprolling = 1; while($keeprolling) { while($diecount > 0) { $thisroll = rand(1,$die); $result += $thisroll; $diecount--; } if($die == 100 AND $thisroll > 95) { $diecount++; } elseif($thisroll == $die) { $diecount++; } else { $keeprolling = 0; } } break; } return $result; } // EXAMPLES // echo '1d10' . ' = ' . dieroll('1d10') . '
'; // echo '2d10' . ' = ' . dieroll('2d10') . '
'; // echo '3d6+30' . ' = ' . dieroll('3d6+30') . '
'; // echo '2d6-2' . ' = ' . dieroll('2d6-2') . '
'; // echo '1d10*3' . ' = ' . dieroll('1d10*3') . '
'; // echo '2d100/2' . ' = ' . dieroll('2d100/2') . '
'; // echo '4d6h3' . ' = ' . dieroll('4d6h3') . '
'; // echo '4d6h1' . ' = ' . dieroll('4d6h1') . '
'; // echo '4d6b' . ' = ' . dieroll('4d6b') . '
'; // echo '4df' . ' = ' . dieroll('4df') . '
'; // echo '1d100o' . ' = ' . dieroll('1d100o') . '
'; ?>