2020-09-16 15:15:37 +00:00
< ? php
# Date: 16.09.2020 (08:23)
// Магия лечения травм
2020-10-28 20:21:08 +00:00
namespace Battles\Magic ;
2021-01-28 21:05:34 +00:00
use Battles\UserEffects , Battles\Database\DBPDO , Battles\User ;
2020-09-16 15:15:37 +00:00
2021-01-25 17:58:58 +00:00
class CureInjury extends Magic
2020-09-16 15:15:37 +00:00
{
private $target ;
2021-01-28 21:05:34 +00:00
private $login ;
2020-09-16 15:15:37 +00:00
use UserEffects ;
/**
* Магия лечения травм . Если у персонажа несколько травм , лечится самая тяжёлая .
2021-01-28 21:05:34 +00:00
* @ param int $target - кого лечим .
* @ param int $injuryType - тип травмы , которую лечим . 11 лёгкая , 12 средняя , 13 тяжёлая , 14 неизлечимая , 15 все травмы .
2020-09-16 15:15:37 +00:00
*/
2021-01-28 21:05:34 +00:00
public function __construct ( int $target , int $injuryType )
2020-09-16 15:15:37 +00:00
{
2021-01-28 21:05:34 +00:00
$db = DBPDO :: INIT ();
2020-09-16 15:38:18 +00:00
$this -> target = $target ;
2021-01-28 21:05:34 +00:00
if ( ! $this -> isUsable ()) {
return $this -> status ;
}
$ok = null ;
$injury = $db -> ofetch ( 'SELECT effect_id, type, name FROM users_effects WHERE type IN (11,12,13,14) AND owner_id = ? ORDER BY type DESC LIMIT 1' , $target );
if ( in_array ( $injury -> type , [ 11 , 12 , 13 , 14 ]) && $injuryType >= $injury -> type ) {
$db -> execute ( 'DELETE FROM users_effects WHERE effect_id = ?' , $injury -> effect_id );
if ( empty ( $injury -> name ) || $injury -> name == 'Неизвестный эффект' ) {
$injuryName = self :: $effectName [ $injury -> type ];
2020-09-16 15:15:37 +00:00
} else {
2021-01-28 21:05:34 +00:00
$injuryName = $injury -> name ;
2020-09-16 15:15:37 +00:00
}
2021-01-28 21:05:34 +00:00
$ok = " Вы вылечили повреждение ${ injuryName } персонажу $this->login . " ;
} elseif ( $injury -> effect_id && $injuryType == 15 ) {
$db -> execute ( 'DELETE FROM users_effects WHERE type IN (11,12,13,14) AND owner_id = ?' , $target );
$ok = " Вы вылечили все повреждения персонажу $this->login . " ;
2020-09-16 15:15:37 +00:00
}
2021-01-28 21:05:34 +00:00
return $ok ;
2020-09-16 15:15:37 +00:00
}
/**
* Проверки на успех .
* @ return bool
*/
2021-01-28 21:05:34 +00:00
private function isUsable () : bool
2020-09-16 15:15:37 +00:00
{
$caster = new User ( $_SESSION [ 'uid' ]);
if ( $this -> target == $_SESSION [ 'uid' ]) {
$this -> target = $caster ;
} else {
$this -> target = new User ( $this -> target );
}
2021-01-28 21:05:34 +00:00
$this -> login = $this -> target -> login ;
2020-09-16 15:15:37 +00:00
return ( $this -> isVisible ( $caster , $this -> target ) && $this -> isNotDead ( $caster ) && $this -> enoughMana ( $caster ) && $this -> isNotInBattle ( $caster ));
}
}