magicPower = $power; $this->isPercentage = $isPercentage; if ($target && $this->isUsable()) { //TODO: Проверка на то, что магу хватает навыка владения школой магии. //IDEA: Можно добавить проверку на интеллект, где при определённом интеллекте шанс на успех становится 95-100%. return $this->useSpell($isPercentage); } else { return $this->status; } } /** * Проверки на успех. * @return bool */ private function isUsable() { $caster = new User($_SESSION['uid']); $this->target = new User($this->target); if ($caster->battle != $this->target->battle || $caster->room != $this->target->room) { $this->status = 'Вы не видите цель!'; } elseif ($caster->health < 1) { $this->status = 'Вы мертвы!'; } elseif ($caster->mana < 1) { $this->status = 'Недостаточно пыли!'; } if ($this->status) { return false; } return true; } /** * Применение заклинания. * @return string * @throws \Krugozor\Database\Mysql\Exception */ private function useSpell() { if ($this->isPercentage) { $healHealthAmount = $this->target->health + $this->target->maxHealth / 100 * $this->magicPower; } else { $healHealthAmount = $this->target->health + $this->magicPower; } if ($healHealthAmount > $this->target->maxHealth) { $healHealthAmount = $this->target->maxHealth; } db::c()->query('UPDATE users SET health = ?i WHERE id = ?i', $healHealthAmount, $this->target->id); $targetName = $this->target->login; return "Вы восстановили ${healHealthAmount} здоровья персонажу ${targetName}."; } }