2019-12-23 18:04:05 +00:00
< ? php
// Магия исцеления
// В с е их соберём, вместе соберём...
/*
* Сейчас в игре ( да , один этот файл заменит кучу тех , что ниже ) :
* cure15 . php
* cure30 . php
* cure30_8 . php
* cure30_100 . php
* cure45 . php
* cure60 . php
* cure120 . php
* cure150 . php
* cure300 . php
* cure_20 . php
* cure_35 . php
* cure_50 . php
* cure_d . php
* cure_rep_90 . php
* cure_rep_120 . php
* cure_rep_150 . php
* cure_rep_180 . php
* cure_rep_270 . php
* cure_rep_360 . php
* c30_100 . php
* 8 cure30 . php
* klan / heal20 . php
* klan / heal35 . php
* klan / heal50 . php
* user / heal20 . php
* user / heal35 . php
* user / heal50 . php
* */
// Если не в игре - идём нахер.
if ( $_SESSION [ 'uid' ] == null ) header ( " Location: index.php " );
// Если нет цели заклинания - идём нахер.
// IDEA: Или кастуем на себя. Н о тут нужны дополнительные проверки.
if ( empty ( $_POST [ 'target' ])) header ( " Location: index.php " );
//Цель заклинания
$target = $_POST [ 'target' ];
//Шанс на успех
$chance = 0 ;
$chance = $_POST [ 'chance' ];
if ( $chance > 95 ) $chance = 95 ;
//Интеллект заклинателя
$mage_intellect = 0 ;
$mage_intellect = $user [ 'intel' ];
//Данные игрока, на которого колдуем
$receiver = db :: c () -> query ( 'SELECT *, (select `id` from `online` WHERE `id` = `users`.`id` AND `date` >= ?i) as `online` FROM `users` WHERE `login` = "?s"' , time () - 60 , $_POST [ 'target' ]) -> fetch_assoc ();
//Сила заклинания (на сколько лечим)
//Если не указано, лечим на случайное значение от 0 до уровня интеллекта мага.
$magic_power = mt_rand ( 0 , $mage_intellect );
$magic_power = $_POST [ 'magic_power' ];
2019-12-23 19:53:10 +00:00
//Является ли сила лечения процентом?
$percentage = false ;
if ( ! empty ( $_POST [ 'percentage' ])) {
$percentage = true ;
if ( $magic_power > 100 ) $magic_power = 100 ;
}
//Статус, отображаемый магу
2019-12-23 18:04:05 +00:00
$status = '' ;
if ( $receiver [ 'battle' ] != $user [ 'battle' ]) {
$status = " Персонаж находится в поединке! " ;
} elseif ( $user [ 'room' ] != $receiver [ 'room' ] && ! $receiver [ 'battle' ]) {
$status = " Персонаж в другой комнате! " ;
} elseif ( $receiver [ 'battle' ] && ! in_array ( $receiver [ 'id' ], $fbattle -> team_mine )) {
$status = " Нельзя лечить противников! " ;
} else {
//TODO: Проверка на то, что маг не умер.
//TODO: Проверка на то, что магу хватает навыка владения школой магии.
//IDEA: Можно добавить проверку на интеллект, где при определённом интеллекте шанс на успех становится 95-100%.
//FIXME Пять раз перепроверить!!!
2019-12-23 19:53:10 +00:00
if ( $chance >= mt_rand ( 1 , 100 )) {
2019-12-23 18:04:05 +00:00
2019-12-23 19:53:10 +00:00
//Проверка на то, повышается здоровье на константу или на процент.
if ( $percentage ) {
$new_hp = $receiver [ 'hp' ] + $receiver [ 'maxhp' ] / 100 * $magic_power ;
2019-12-23 18:04:05 +00:00
} else {
$new_hp = $receiver [ 'hp' ] + $magic_power ;
}
2019-12-23 19:53:10 +00:00
if ( $new_hp >= $receiver [ 'maxhp' ]) $new_hp = $receiver [ 'maxhp' ];
2019-12-23 18:04:05 +00:00
if ( $user [ 'battle' ] > 0 ) {
db :: c () -> query ( 'UPDATE `battle` SET `to1` = ?i, `to2` = ?i WHERE `id` = ?i' , time (), time (), $user [ 'battle' ]);
$fbattle -> AddToLog ( '<span class=date>' . date ( " H:i " ) . '</span> ' . nick :: id ( $user [ 'id' ]) -> short () . ' колдует заклятие лечения и восстанавливает ' . (( $receiver [ 'id' ] != $user [ 'id' ]) ? nick :: id ( $receiver [ 'id' ]) -> short () : " с е б е " ) . ' здоровье <B>' . $magic_power . '</B> [' . ( $new_hp ) . '/' . $receiver [ 'maxhp' ] . ']<BR>' );
$fbattle -> write_log ();
}
db :: c () -> query ( 'UPDATE `users` SET `hp` = ?i WHERE `id` = ?i' , $new_hp , $receiver [ 'id' ]);
$status = " Вы восстановили { $magic_power } Н Р персонажу { $receiver [ 'login' ] } ! " ;
} else {
$status = " Свиток рассыпался в ваших руках... " ;
}
}
echo " <span style='color:red;'> $status </span> " ;