diff --git a/magic/Healing.php b/magic/Healing.php index 8da5b56..8da87c9 100644 --- a/magic/Healing.php +++ b/magic/Healing.php @@ -1,13 +1,9 @@ magicPower = $power; - $this->isPercentage = $isPercentage; if ($target && $this->isUsable()) { //TODO: Проверка на то, что магу хватает навыка владения школой магии. //IDEA: Можно добавить проверку на интеллект, где при определённом интеллекте шанс на успех становится 95-100%. - return $this->useSpell($isPercentage); + if ($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}."; } else { return $this->status; } @@ -35,37 +40,11 @@ class Healing 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; + if ($this->target == $_SESSION['uid']) { + $this->target = $caster; } else { - $healHealthAmount = $this->target->health + $this->magicPower; + $this->target = new User($this->target); } - 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}."; + return ($this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster)); } }