battles/classes/Battles/Magic/Magic.php

78 lines
2.1 KiB
PHP
Raw Normal View History

<?php
# Date: 16.09.2020 (08:45)
namespace Battles\Magic;
2022-06-10 23:18:04 +00:00
use Battles\Database\Db;
class Magic
{
2022-06-10 23:18:04 +00:00
protected string $status;
private Db $db;
private object $magic;
public function __construct(Db $db, int $id)
{
$this->magic = $db->ofetch('select * from magic where id = ?', $id);
}
public function getMagic(): object
{
return $this->magic;
}
2022-06-10 23:18:04 +00:00
protected function isVisible($caster, $target): bool
{
if ($caster->battle != $target->battle || $caster->room != $target->room) {
$this->status = 'Вы не видите цель!';
return false;
} else {
return true;
}
}
2022-06-10 23:18:04 +00:00
protected function isNotDead($caster): bool
{
if ($caster->health < 1) {
$this->status = 'Вы мертвы!';
return false;
} else {
return true;
}
}
2022-06-10 23:18:04 +00:00
protected function enoughMana($caster): bool
{
if ($caster->mana < 1) {
$this->status = 'Недостаточно пыли!';
return false;
} else {
return true;
}
}
2022-06-10 23:18:04 +00:00
protected function isNotInBattle($caster): bool
{
if ($caster->battle) {
$this->status = 'Невозможно применить в поединке!';
return false;
} else {
return true;
}
}
/**
* Проверка на успех заклинания. Чем выше интеллект, тем выше шанс успеха.
* @param $caster - заклинатель (массив значений из базы).
* @param int $difficulty - сложность произнесения заклинания. Чем выше значение, тем сложнее проверка. 40 - самая сложная проверка.
*
* @return bool
*/
2022-06-10 23:18:04 +00:00
protected function isSuccess($caster, int $difficulty = 40): bool
{
# 40 - потолок стата.
if ($difficulty > 40) {
$difficulty = 40;
}
2022-06-10 23:18:04 +00:00
return mt_rand(1, $difficulty) < $caster->intelligence;
}
}