<?php
// Магия восстагновления здоровья
use Battles\User;
class Healing extends \Battles\Magic\Magic
{
    private $target;
    private $magicPower;

    /**
     * Магия лечения.
     * @param      $target - кого лечим.
     * @param      $power - на сколько лечим.
     * @param null $isPercentage - если включён, считает $power в процентах, иначе, по-умочанию просто как число.
     */
    public function __construct($target, $power, $isPercentage = null)
    {
        $this->magicPower = $power;
        $this->target = $target;
        if ($target && $this->isUsable()) {
            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;
        }
    }

    /**
     * Проверки на успех.
     * @return bool
     */
    private function isUsable()
    {
        $caster = new User($_SESSION['uid']);
        if ($this->target == $_SESSION['uid']) {
            $this->target = $caster;
        } else {
            $this->target = new User($this->target);
        }
        return ($this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster));
    }
}