function handle_event($location, $baseLink = false, $needHeader = false) { if ($baseLink === false) { global $PHP_SELF; $baseLink = substr($PHP_SELF, strrpos($PHP_SELF, "/") + 1) . "?"; } else { //debug("Base link was specified as $baseLink"); //debug(debug_backtrace()); } global $session, $playermount, $badguy; $skipdesc = false; tlschema("events"); $allowinactive = false; $eventhandler = httpget('eventhandler'); if ($session['user']['superuser'] & SU_DEVELOPER && $eventhandler != "") { $allowinactive = true; $array = preg_split("/[:-]/", $eventhandler); if ($array[0] == "module") { $session['user']['specialinc'] = "module:" . $array[1]; } else { $session['user']['specialinc'] = ""; } } $_POST['i_am_a_hack'] = 'true'; if ($session['user']['specialinc'] != "") { $specialinc = $session['user']['specialinc']; $session['user']['specialinc'] = ""; if ($needHeader !== false) { page_header($needHeader); } output("`^`c`bSomething Special!`c`b`0"); if (strchr($specialinc, ":")) { $array = split(":", $specialinc); $starttime = getmicrotime(); module_do_event($location, $array[1], $allowinactive, $baseLink); $endtime = getmicrotime(); if ($endtime - $starttime >= 1.0 && $session['user']['superuser'] & SU_DEBUG_OUTPUT) { debug("Slow Event (" . round($endtime - $starttime, 2) . "s): {$hookname} - {$row['modulename']}`n"); } } if (checknavs()) { // The page rendered some linkage, so we just want to exit. page_footer(); } else { $skipdesc = true; $session['user']['specialinc'] = ""; $session['user']['specialmisc'] = ""; httpset("op", ""); } } tlschema(); return $skipdesc; }
function module_events($eventtype, $basechance, $baseLink = false) { if ($baseLink === false) { global $PHP_SELF; $baseLink = substr($PHP_SELF, strrpos($PHP_SELF, "/") + 1) . "?"; } else { //debug("Base link was specified as $baseLink"); //debug(debug_backtrace()); } if (e_rand(1, 100) <= $basechance) { global $PHP_SELF; $events = module_collect_events($eventtype); $chance = r_rand(1, 100); reset($events); $sum = 0; foreach ($events as $event) { if ($event['rawchance'] == 0) { continue; } if ($chance > $sum && $chance <= $sum + $event['normchance']) { $_POST['i_am_a_hack'] = 'true'; tlschema("events"); output("`^`c`bSomething Special!`c`b`0"); tlschema(); $op = httpget('op'); httpset('op', ""); module_do_event($eventtype, $event['modulename'], false, $baseLink); httpset('op', $op); return 1; } $sum += $event['normchance']; } } return 0; }