Функция используемая один раз объединена с конструктором
This commit is contained in:
parent
5936fd1d28
commit
bdf74b0beb
@ -1,13 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
// Магия исцеления
|
// Магия восстагновления здоровья
|
||||||
// Все их соберём, вместе соберём...
|
|
||||||
|
|
||||||
class Healing
|
class Healing extends Magic
|
||||||
{
|
{
|
||||||
private $target;
|
|
||||||
private $magicPower;
|
private $magicPower;
|
||||||
private $status;
|
|
||||||
private $isPercentage;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Магия лечения.
|
* Магия лечения.
|
||||||
@ -18,11 +14,20 @@ class Healing
|
|||||||
public function __construct($target, $power, $isPercentage = null)
|
public function __construct($target, $power, $isPercentage = null)
|
||||||
{
|
{
|
||||||
$this->magicPower = $power;
|
$this->magicPower = $power;
|
||||||
$this->isPercentage = $isPercentage;
|
|
||||||
if ($target && $this->isUsable()) {
|
if ($target && $this->isUsable()) {
|
||||||
//TODO: Проверка на то, что магу хватает навыка владения школой магии.
|
//TODO: Проверка на то, что магу хватает навыка владения школой магии.
|
||||||
//IDEA: Можно добавить проверку на интеллект, где при определённом интеллекте шанс на успех становится 95-100%.
|
//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 {
|
} else {
|
||||||
return $this->status;
|
return $this->status;
|
||||||
}
|
}
|
||||||
@ -35,37 +40,11 @@ class Healing
|
|||||||
private function isUsable()
|
private function isUsable()
|
||||||
{
|
{
|
||||||
$caster = new User($_SESSION['uid']);
|
$caster = new User($_SESSION['uid']);
|
||||||
$this->target = new User($this->target);
|
if ($this->target == $_SESSION['uid']) {
|
||||||
if ($caster->battle != $this->target->battle || $caster->room != $this->target->room) {
|
$this->target = $caster;
|
||||||
$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 {
|
} else {
|
||||||
$healHealthAmount = $this->target->health + $this->magicPower;
|
$this->target = new User($this->target);
|
||||||
}
|
}
|
||||||
if ($healHealthAmount > $this->target->maxHealth) {
|
return ($this->isVisible($caster, $this->target) && $this->isNotDead($caster) && $this->enoughMana($caster));
|
||||||
$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}.";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user