battles/magic/healing.php

92 lines
4.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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
* 8cure30.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'];
//Статус, отображаемый игроку
$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 Пять раз перепроверить!!!
if ($chance >= mt_rand(1,100)) {
//TODO: В нескольких файлах добавлялся процент от максимального(?) здоровья, а не константа. Надо внедрить.
if (($receiver['hp'] + $magic_power) > $receiver['maxhp']) {
$new_hp = $receiver['maxhp'];
} else {
$new_hp = $receiver['hp'] + $magic_power;
}
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>";