<?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>";