public function cast(SR_Player $player, SR_Player $target, $level, $hits, SR_Player $potion_player) { // echo "Casting Firewall with level $level and $hits hits.\n"; # Firebolt ads 0.20 per level $firebolt = $potion_player->getSpell('firebolt'); $firebolt = $firebolt === false ? 0 : $firebolt->getLevel($potion_player); $firebolt = round($firebolt / 5, 1); $level += $firebolt; # Fireball ads 0.25 per level $fireball = $potion_player->getSpell('fireball'); $fireball = $fireball === false ? 0 : $fireball->getLevel($potion_player); $fireball = round($fireball / 4, 1); $level += $fireball; $line = $target->getY(); $damage = array(); $ep = $target->getParty(); foreach ($ep->getMembers() as $t) { $t instanceof SR_Player; $d = abs($line - $t->getY()); // echo "Distance to target is $d\n"; $l = $level - $d; if ($l >= 0) { $hits = $this->dice($potion_player, $t, $l); $damage[$t->getID()] = $this->calcFirewallDamage($player, $t, $level, $hits); } } $this->announceADV($player, $target, $level); Shadowfunc::multiDamage($player, $damage); return true; }
public static function calcDistance(SR_Player $player, SR_Player $target) { $x1 = $player->getX(); $y1 = $player->getY(); $x2 = $target->getX(); $y2 = $target->getY(); return self::calcDistanceB($x1, $y1, $x2, $y2); }
public function moveTowards(SR_Player $player, SR_Player $target) { $move = $player->getMovePerSecond(); $d1 = $player->getY(); $d2 = $target->getY(); $dt = $d1 - $d2; if ($dt < 0) { $dt = -$dt; if ($move > $dt) { $move = $dt; } $move = -$move; } else { if ($move > $dt) { $move = $dt; } } $pid = $player->getID(); $move = -$move; $new_d = 0; $move = round($move, 1); $this->movePlayerB($pid, $move, $new_d); $new_d = round($new_d, 1); $busy = $player->busy(25); $name = $player->displayNameNB(); $tn = $target->displayNameNB(); $ep = $this->getEnemyParty(); $args = array($name, abs($move), $tn, $new_d, $busy); $this->ntice('5097', $args); $ep->ntice('5097', $args); // $ep->ntice('5098', array($name, abs($move), $tn, $new_d)); // $this->notice(sprintf('%s moves %.01f meters towards %s and is now on position %.01f meters. %ds busy.', $name, abs($move), $tn, $new_d, $busy)); // $this->getEnemyParty()->notice(sprintf('%s moves %.01f meters towards %s and is now on position %.01f meters.', $name, abs($move), $tn, $new_d)); return true; }