Exemple #1
0
 public function announceUsage(SR_Player $player, SR_Player $target, $message = '', $message2 = '', $useamt = 1)
 {
     if ($player->isFighting()) {
         $busy = $player->busy($this->getItemUsetime());
         $busymsg = $player->lang('busy', array($busy));
         #sprintf(' %ds busy.', $busy);
     } else {
         $busymsg = '';
     }
     $player->getParty()->ntice('5228', array($player->displayNameNB(), $this->getName(), $target->displayNameNB(), $busymsg, $message));
     // 		$player->getParty()->notice(sprintf('%s used %s on %s.%s%s', $player->getName(), $this->getName(), $target->getName(), $busymsg, $message));
     if ($player->isFighting()) {
         $player->getEnemyParty()->ntice('5229', array($player->displayNameNB(), $this->getName(), $target->displayNameNB(), $busymsg, $message2));
         // 			$player->getEnemyParty()->notice(sprintf('%s used %s on %s.%s', $player->getName(), $this->getName(), $target->getName(), $message2));
     }
     if ($useamt > 0) {
         return $this->useAmount($player, $useamt);
     }
     return true;
 }
Exemple #2
0
 public function onCast(SR_Player $player, array $args, $wanted_level = true)
 {
     if ($this instanceof SR_CombatSpell) {
         if ($this->mode === self::MODE_BREW) {
         } elseif (!$player->isFighting()) {
             $player->msg('1052', array($this->getName()));
             // 				$player->message(sprintf('The spell %s works in combat only.', $this->getName()));
             return false;
         } elseif (count($args) === 0) {
             $members = $player->getEnemyParty()->getMembers();
             if (count($members) === 0) {
                 $player->msg('1052', array($this->getName()));
                 return false;
             }
             $member = $members[array_rand($members)];
             $args[] = $member->getEnum();
             //				$args[] = rand(1, $player->getEnemyParty()->getMemberCount());
         }
     } else {
         if (count($args) === 0) {
             $args[] = $player->getName();
         }
     }
     if ($this->mode === self::MODE_BREW) {
         # Dummy player
         $target = Shadowrun4::getDummyPlayer();
     } elseif (false === ($target = $this->getTarget($player, $args))) {
         return false;
     }
     $level = $this->getLevel($this->getCaster());
     if ($this->mode === self::MODE_BREW) {
         $level = $wanted_level;
     } elseif ($wanted_level !== true) {
         $wanted_level = (int) $wanted_level;
         if ($wanted_level < 0) {
             $player->msg('1053');
             // 				$player->message('You cannot cast a spell with a level smaller than 0.');
             return false;
         } elseif ($wanted_level > $level) {
             $player->msg('1054', array($this->getName(), $wanted_level, $level));
             // 				$player->message(sprintf('You cannot cast %s level %s because your spell level is only %s.', $this->getName(), $wanted_level, $level));
             return false;
         } else {
             $level = $wanted_level;
         }
     }
     $mp_faktor = $this->mode === self::MODE_BREW ? 1.5 : 1.0;
     $need = round($this->getManaCost($player, $level) * $mp_faktor, 1);
     $need = Common::clamp($need, 1, 1000000);
     $have = $player->getMP();
     if ($need > $have && false === $this->isPotionMode()) {
         $player->msg('1055', array($need, $this->getName(), $level, $have));
         // 			$player->message(sprintf('You need %s MP to cast %s, but you only have %s.', $need, $this->getName(), $have));
         return false;
     }
     $hits = $this->dice($this->getCaster(), $target, $level);
     echo "!!! CASTED {$hits} hits !!!\n";
     $busy = '';
     if ($player->isFighting()) {
         $busy = Shadowfunc::displayBusy($player->busy($this->getCastTime($level)));
     }
     // 		if ($hits < $target->get('essence'))
     // 		{
     // 			$waste = round($need/2, 1);
     // 			$player->healMP(-$waste);
     // 			$player->msg('1056', array($this->getName(), $waste, $busy));
     // // 			$player->message(sprintf('You failed to cast %s. %s MP wasted.%s', $this->getName(), $waste, $busy));
     // 			return false;
     // 		}
     if (false === $this->isPotionMode()) {
         $player->healMP(-$need);
     }
     if ($this->mode === self::MODE_BREW) {
         return true;
     }
     return $this->cast($player, $target, $level, $hits, $player);
 }
Exemple #3
0
 /**
  * @param SR_Player $player
  * @param string $arg
  * @return SR_Player
  */
 public static function getOffensiveTarget(SR_Player $player, $arg)
 {
     return self::getTarget($player->getEnemyParty()->getMembers(), $arg);
 }
Exemple #4
0
 /**
  * Calculate the smallest distance the player has from any enemy.
  * @param $player
  */
 private function getSmallestDistance(SR_Player $player)
 {
     $d1 = $this->distance[$player->getID()];
     $ep = $player->getEnemyParty();
     $back = 1000;
     foreach ($ep->distance as $pid => $d2) {
         $d3 = abs($d1 - $d2);
         if ($d3 < $back) {
             $back = $d3;
         }
     }
     return $back;
 }