示例#1
0
 /**
  * Poison the target.
  * @see SR_Weapon::onDealDamage()
  */
 public function onDealDamage(SR_Player $player, SR_Player $target, $hits, $damage)
 {
     $biotech = Common::clamp($target->getVar('biotech'), 0, 15);
     $min = 0.1 - $biotech * 0.01;
     $max = 0.3 - $biotech * 0.02;
     $duration = rand(20, 40);
     $per_sec = Shadowfunc::diceFloat($min, $max, 2);
     if ($per_sec > 0) {
         $modifiers = array('hp' => $per_sec);
         $target->addEffects(new SR_Effect($duration, $modifiers));
         $target->msg('5294', array(sprintf('%.02f', $per_sec), GWF_Time::humanDuration($duration)));
     }
 }
示例#2
0
 public static function combatTimer(SR_Player $player)
 {
     $ai = $player->getVar('sr4pl_combat_ai');
     if ($ai === NULL) {
         if ($player->isHuman()) {
             return;
         } else {
             $ai = self::DEFAULT_COMBAT_AI;
         }
     }
     //		$data = array();
     //		$total = 0;
     $decisions = array();
     $ai = explode(';', $ai);
     foreach ($ai as $func) {
         $func = trim($func);
         if (preg_match('/([a-z_]+)(\\([^\\)]+\\))?([-+*\\/]\\d+)?/i', $func, $matches)) {
             $funcname = $matches[1];
             $classname = 'ShadowAI_' . $funcname;
             if (class_exists($classname)) {
                 $args = isset($matches[1]) ? explode(',', $matches[1]) : NULL;
                 $multi = isset($matches[2]) ? $matches[2] : '*1';
                 $decision = call_user_func(array($classname, 'decideCombat'), $player, $args);
                 if ($decision !== NULL) {
                     $command = $decision[0];
                     $prefer = $decision[1];
                     $prefer = eval("{$prefer}{$multi};");
                     //						$chance = (int)($prefer*100);
                     //						$total += $chance;
                     //						$data[] = array($command, $chance);
                     $decisions[$command] = $prefer;
                 }
             } else {
                 Dog_Log::debug(sprintf('%s has an invalid AI method: %s.', $player->getName(), $funcname));
             }
         } else {
             Dog_Log::debug(sprintf('PREG MATCH FAILED: %s.', $func));
         }
     }
     # Best
     if (count($decisions) > 0) {
         arsort($decisions);
         $command = key($decisions);
         $player->combatPush($command);
     }
     # Rand
     //		if (false !== ($command = Shadowfunc::randomData($data, $total)))
     //		{
     //			$player->combatPush($command);
     //		}
 }
示例#3
0
 public static function getRandomName(SR_Player $player)
 {
     static $rand = array('fairy_male' => array('Schwunkol'), 'fairy_female' => array('Ambra', 'Elina'), 'vampire_male' => array('Dracool', 'Vincent'), 'vampire_female' => array('Daria'), 'elve_male' => array('Filöen', 'Vincent'), 'elve_female' => array('Anja', 'Joanna'), 'darkelve_male' => array('Noplan'), 'darkelve_female' => array('Noplan'), 'woodelve_male' => array('Noplan'), 'woodelve_female' => array('Noplan'), 'halfelve_male' => array('Filöen', 'Alaster'), 'halfelve_female' => array('Anja'), 'human_male' => array('Lesley', 'Norman', 'Simon', 'Jessey', 'Tobias', 'Marcus', 'Oliver', 'Richard', 'Gandalf', 'Carsten', 'Mike', 'Paul', 'Wesley', 'Mathew', 'Jersey', 'Stephen'), 'human_female' => array('Mary', 'Tanny'), 'gnome_male' => array('Garry'), 'gnome_female' => array('Sabine'), 'dwarf_male' => array('Roon', 'Reiner', 'Oscar'), 'dwarf_female' => array('Alisa'), 'ork_male' => array('Grunt', 'Bruno'), 'ork_female' => array('Broga'), 'halfork_male' => array('Bren', 'Diego'), 'halfork_female' => array('Yuly'), 'halftroll_male' => array('Roon', 'Rodrigo'), 'halftroll_female' => array('Björk'), 'troll_male' => array('Roog'), 'troll_female' => array('Gunda'), 'gremlin_male' => array('gizmo'), 'gremlin_female' => array('gizma'));
     $r = $rand[$player->getVar('sr4pl_race') . '_' . $player->getVar('sr4pl_gender')];
     return GWF_Random::arrayItem($r);
 }