diff --git a/classes/Battles/Bank.php b/classes/Battles/Bank.php
index 99a534b..7ebea5a 100644
--- a/classes/Battles/Bank.php
+++ b/classes/Battles/Bank.php
@@ -10,6 +10,7 @@ namespace Battles;
use Exceptions\GameException;
use Battles\Database\Db;
use Throwable;
+use Battles\Models\BankModel;
class Bank
{
@@ -17,15 +18,20 @@ class Bank
private int $money = 0;
private $user;
- const ERROR_NO_MONEY_IN_WALLET = "Ошибка! Нет денег в кошельке!";
- const ERROR_NO_BANK_ACCOUNT = "Ошибка! Счёта не существует!";
- const ERROR_NO_MONEY_IN_BANK_ACCOUNT = "Ошибка! Нет денег на счету!";
- const ERROR_WRONG_AMOUNT = "Ошибка! Сумма должна быть положительной!";
- const LOG = [
- 'sendMoney' => 'Банк: Перевод средств на другой счёт.',
- 'receiveMoney' => 'Банк: Получение средств.',
- 'depositMoney' => 'Пополнение счёта.',
- 'withdrawMoney' => 'Снятие денег со счёта.',
+ private const ERROR_NO_MONEY_IN_WALLET = "Ошибка! Нет денег в кошельке!";
+ private const ERROR_NO_BANK_ACCOUNT = "Ошибка! Счёта не существует!";
+ private const ERROR_NO_MONEY_IN_BANK_ACCOUNT = "Ошибка! Нет денег на счету!";
+ private const ERROR_WRONG_AMOUNT = "Ошибка! Сумма должна быть положительной!";
+ private const MINIMUM_COMISSION_VALUE = 1;
+ private const OPERATION_SEND_MONEY = 'sendMoney';
+ private const OPERATION_DEPOSIT_MONEY = 'depositMoney';
+ private const OPERATION_RECEIVE_MONEY = 'receiveMoney';
+ private const OPERATION_WITHDRAW_MONEY = 'withdrawMoney';
+ private const LOG = [
+ self::OPERATION_SEND_MONEY => 'Банк: Перевод средств на другой счёт.',
+ self::OPERATION_RECEIVE_MONEY => 'Банк: Получение средств.',
+ self::OPERATION_DEPOSIT_MONEY => 'Пополнение счёта.',
+ self::OPERATION_WITHDRAW_MONEY => 'Снятие денег со счёта.',
'clanRegister' => 'Оплата стоимости регистрации клана.',
'sellShop' => 'Продажа товара в магазине.'
];
@@ -51,11 +57,7 @@ class Bank
private function bankCommission(int $amount): int
{
$bankCommission = round($amount * GameConfigs::BANK_COMISSION);
- if ($bankCommission < 1) {
- return 1;
- } else {
- return (int)$bankCommission;
- }
+ return $bankCommission >= self::MINIMUM_COMISSION_VALUE ? (int)$bankCommission : self::MINIMUM_COMISSION_VALUE;
}
/**
@@ -64,25 +66,25 @@ class Bank
* @param int $receiverId ID получателя.
* @param int $amount сумма.
* @param string $operationType тип банковской операции.
- * @param int $senderId ID отправителя (ID игрока, если не указано иное).
+ * @param ?int $senderId ID отправителя (ID игрока, если не указано иное).
*
* @return void
*/
- private function bankLogs(int $receiverId, int $amount, string $operationType, int $senderId = null): void
+ private function bankLogs(int $receiverId, int $amount, string $operationType, ?int $senderId = null): void
{
if (is_null($senderId)) {
$senderId = $this->user_id;
}
$text = self::LOG[$operationType];
- if ($operationType == "sendMoney") {
+ if ($operationType == self::OPERATION_SEND_MONEY) {
$text .= " Комиссия: " . $this->bankCommission($amount);
- } elseif ($operationType == "depositMoney") {
+ } elseif ($operationType == self::OPERATION_DEPOSIT_MONEY) {
$receiverId = $this->user_id;
- } elseif ($operationType == "withdrawMoney") {
+ } elseif ($operationType == self::OPERATION_WITHDRAW_MONEY) {
$receiverId = $this->user_id;
$text .= " Комиссия: " . $this->bankCommission($amount);
}
- GameLogs::addBankLog($senderId,$receiverId,$amount,$operationType,$text);
+ GameLogs::addBankLog($senderId, $receiverId, $amount, $operationType, $text);
}
/**
@@ -110,11 +112,11 @@ class Bank
// Снимаем сумму с комиссией у отправителя
$this->money -= $amountWithComission;
self::setBankMoney($this->money, $this->user_id);
- $this->bankLogs($receiver, $this->money, "sendMoney");
+ $this->bankLogs($receiver, $this->money, self::OPERATION_SEND_MONEY);
// Отдаём сумму на счёт получателю
$receiverWallet->money += $amount;
self::setBankMoney($receiverWallet->money, $receiver);
- $this->bankLogs($receiver, $receiverWallet->money, "receiveMoney");
+ $this->bankLogs($receiver, $receiverWallet->money, self::OPERATION_RECEIVE_MONEY);
// Возвращаем изменившиеся значения
return $this->money;
}
@@ -142,7 +144,7 @@ class Bank
// Отдаём сумму на счёт получателю
$this->money += $amount;
self::setBankMoney($this->money, $this->user_id);
- $this->bankLogs(0, $this->money, "depositMoney");
+ $this->bankLogs(0, $this->money, self::OPERATION_DEPOSIT_MONEY);
// Возвращаем изменившиеся значения
return [
'walletMoney' => $this->user->money,
@@ -170,7 +172,7 @@ class Bank
// Снимаем сумму с комиссией у отправителя
$this->money -= $amountWithComission;
self::setBankMoney($this->money, $this->user_id);
- $this->bankLogs(0, $this->money, "withdrawMoney");
+ $this->bankLogs(0, $this->money, self::OPERATION_WITHDRAW_MONEY);
// Отдаём сумму в кошелёк получателя
$this->user['money'] += $amount;
self::setWalletMoney($this->user['money'], $this->user_id);
@@ -185,15 +187,16 @@ class Bank
* Установить количество денег на банковском счету.
*
* @param int $amount сумма.
- * @param int $user_id ID пользователя.
+ * @param int $uid ID пользователя.
* @param string $operationType Тип операции. По умолчанию пусто. Если ввести, система запишет событие в банковский лог.
*
* @return void
*/
- public static function setBankMoney(int $amount, int $user_id, string $operationType = ''): void
+ public static function setBankMoney(int $amount, int $uid, string $operationType = ''): void
{
+ $bm = new BankModel();
try {
- Db::getInstance()->execute('UPDATE bank SET money = ? WHERE user_id = ?', [$amount, $user_id]);
+ $bm->setMoney($amount, $uid);
if ($operationType) {
GameLogs::addBankLog(0, 0, $amount, $operationType, self::LOG[$operationType]);
}
@@ -207,14 +210,14 @@ class Bank
* Установить количество денег на руках.
*
* @param int $amount сумма.
- * @param int $user_id ID пользователя.
+ * @param int $uid ID пользователя.
*
* @return void
*/
- public static function setWalletMoney(int $amount, int $user_id): void
+ public static function setWalletMoney(int $amount, int $uid): void
{
- User::getInstance($user_id)->setMoney($amount);
- User::getInstance($user_id)->saveMoney();
+ User::getInstance($uid)->setMoney($amount);
+ User::getInstance($uid)->saveMoney();
}
public function getMoney(): int
diff --git a/classes/Battles/City.php b/classes/Battles/City.php
index ccf785f..16d6b69 100644
--- a/classes/Battles/City.php
+++ b/classes/Battles/City.php
@@ -1,9 +1,11 @@
';
+ self::showBuilding(222, "cap_arr_top", 180, 650, "Торговая улица");
} elseif ($id === 21) {
echo '
' .
self::showBuilding(3, "cap_arr_right", 255, 708, "Ристалище") .
@@ -26,15 +27,13 @@ class City
self::showBuilding(5, "spring_cap_bank", 180, 485, self::$roomNames[29]) .
self::showBuilding(13, "spring_cap_flowershop", 220, 613, self::$roomNames[34]) .
self::showBuilding(14, "spring_cap_registratura", 170, 113, self::$roomNames[30]) .
- self::showBuilding(16, "spring_cap_tower", 5, 315, self::$roomNames[31]) .
- '
';
+ self::showBuilding(16, "spring_cap_tower", 5, 315, self::$roomNames[31]);
} elseif ($id === 26) {
echo '' .
self::showBuilding(3, "cap_arr_left", 259, 27, self::$roomNames[2601]) .
self::showBuilding(4, "cap_arr_right", 259, 715, self::$roomNames[20]) .
self::showBuilding(6, "cap_gate", 170, 340, "Городские ворота") .
- self::showBuilding(660, "spring_cap_vokzal", 163, 43, self::$roomNames[661]) .
- '
';
+ self::showBuilding(660, "spring_cap_vokzal", 163, 43, self::$roomNames[661]);
} elseif ($id === 2601) {
echo '' .
self::showBuilding(1, "spring_cap_ruins", 166, 48, "Руины Старого замка") .
@@ -42,43 +41,42 @@ class City
self::showBuilding(10, "ava_post", 240, 300, self::$roomNames[35]) .
self::showBuilding(55, "cap_arr_left", 258, 21, self::$roomNames[2655]) .
self::showBuilding(1051, "spring_cap_lab", 130, 327, self::$roomNames[33]) .
- self::showBuilding(1052, "spring_cap_lavka", 240, 425, self::$roomNames[1053]) .
- '
';
+ self::showBuilding(1052, "spring_cap_lavka", 240, 425, self::$roomNames[1053]);
} elseif ($id === 2655) {
echo '' .
self::showBuilding(10, "arr_right_png2", 260, 710, self::$roomNames[2601]) .
- self::showBuilding(2055, "altr_g", 230, 340, self::$roomNames[603]) .
- '
';
+ self::showBuilding(2055, "altr_g", 230, 340, self::$roomNames[603]);
} elseif ($id === 2111) {
echo '' .
self::showBuilding(1, "cap_arr_left", 240, 30, self::$roomNames[21]) .
self::showBuilding(14, "spring_cap_rist_solo", 210, 160, "Вход в Одиночные сражения") .
self::showBuilding(14, "spring_cap_rist_group", 243, 340, "Вход в Сражение отрядов") .
self::showBuilding(203, "spring_cap_rist_monstr", 145, 570, "Вход в Груповые сражения") .
- self::showBuilding(1000, "av_zamk_rud", 80, 310, self::$roomNames[1001]) .
- '
';
+ self::showBuilding(1000, "av_zamk_rud", 80, 310, self::$roomNames[1001]);
} elseif ($id === 2701) {
echo '' .
self::showBuilding(1, "cap_3strelka", 260, 30, "Берег Залива") .
- self::showBuilding(2, "cap_shar_dark", 234, 356, "Лабиринт Хаоса") .
- '
';
+ self::showBuilding(2, "cap_shar_dark", 234, 356, "Лабиринт Хаоса");
} elseif ($id === 2702) {
echo '' .
self::showBuilding(6, "spring_cap_build1", 175, 70, "Академия") .
self::showBuilding(10, "cap_rist_arr_left", 259, 25, self::$roomNames[20]) .
self::showBuilding(16, "auk", 120, 300, "Аукцион") .
self::showBuilding(21, "spring_cap_build2", 150, 565, "Ломбард") .
- self::showBuilding(16555, "spring_cap_build3", 155, 480, "Прокатная лавка") .
- '
';
+ self::showBuilding(16555, "spring_cap_build3", 155, 480, "Прокатная лавка");
+ }
+ if (in_array($id, [20, 21, 26, 2601, 2655, 2111, 2701, 2702])) {
+ echo '';
}
}
- private static function showBuilding(int $id, string $image, int $top, int $left, string $description)
+ private static function showBuilding(int $id, string $image, int $top, int $left, string $description): string
{
- return sprintf('
-
-
-
',
- $left, $top, $image, $description, $description, $id, $id);
+ return <<
+
+
+ HTML;
}
}
\ No newline at end of file
diff --git a/classes/Battles/Item.php b/classes/Battles/Item.php
index d6472c3..476a631 100644
--- a/classes/Battles/Item.php
+++ b/classes/Battles/Item.php
@@ -131,7 +131,7 @@ class Item
$mods_cost_modifier = 2 + floor($sum_mods / 50);
$damage_cost_modifier = 1 + floor($sum_damage / 100);
$result = intval($sum_stats * $stats_cost_modifier + $sum_mods * $mods_cost_modifier + $sum_damage * $damage_cost_modifier);
- return $result < 1 ? 1 : $result;
+ return max($result, 1);
}
protected function wrap(int $number): string
diff --git a/classes/Battles/Models/BankModel.php b/classes/Battles/Models/BankModel.php
new file mode 100644
index 0000000..4efd7c9
--- /dev/null
+++ b/classes/Battles/Models/BankModel.php
@@ -0,0 +1,22 @@
+columns = [
+ self::$primaryKey => $uid,
+ 'money' => $money,
+ ];
+ $this->updateByPrimaryKey();
+ }
+}
\ No newline at end of file
diff --git a/classes/Battles/Models/Model.php b/classes/Battles/Models/Model.php
new file mode 100644
index 0000000..80c4029
--- /dev/null
+++ b/classes/Battles/Models/Model.php
@@ -0,0 +1,50 @@
+columns[$column];
+ }
+
+ protected function setColumnValue($column, $value)
+ {
+ $this->columns[$column] = $value;
+ }
+
+ /**
+ * Полная перезапись. Отсутствующие параметры превратятся в default|null.
+ * @return void
+ */
+ protected function save()
+ {
+ $q = 'replace into ' . self::$tableName . ' (' . implode(', ', array_keys($this->columns)) . ') values(';
+ $keys = [];
+ foreach ($this->columns as $key => $value) {
+ $keys[':' . $key] = $value;
+ }
+ $q .= implode(', ', array_keys($keys)) . ')';
+ Db::getInstance()->execute($q, $keys);
+ }
+
+ protected function updateByPrimaryKey()
+ {
+ $q = 'update ' . self::$tableName . ' set ';
+ $keys = [];
+ foreach ($this->columns as $key => $value) {
+ $keys[':' . $key] = $value;
+ $q .= $key . ' = :' . $key . ', ';
+ }
+ $q = rtrim($q, ',');
+ $q .= 'where ' . self::$primaryKey . ' = :' . self::$primaryKey;
+ Db::getInstance()->execute($q, $keys);
+ }
+}
diff --git a/classes/Battles/Models/UserStats.php b/classes/Battles/Models/UserStats.php
new file mode 100644
index 0000000..1656f5f
--- /dev/null
+++ b/classes/Battles/Models/UserStats.php
@@ -0,0 +1,104 @@
+id = $uid;
+ }
+
+
+ public function getFull(): object
+ {
+ $stats = Db::getInstance()->ofetch("
+ select
+ strength,
+ dexterity,
+ intuition,
+ endurance,
+ intelligence,
+ wisdom
+ from users where id = $this->id");
+ $itemBonuses = Db::getInstance()->ofetch("
+ select
+ sum(add_strength) as item_strength,
+ sum(add_dexterity) as item_dexterity,
+ sum(add_intuition) as item_intuition,
+ sum(add_endurance) as item_endurance,
+ sum(add_intelligence) as item_intelligence,
+ sum(add_wisdom) as item_wisdom,
+ sum(add_accuracy) as item_accuracy,
+ sum(add_evasion) as item_evasion,
+ sum(add_criticals) as item_criticals,
+ sum(add_min_physical_damage) as item_min_physical_damage,
+ sum(add_max_physical_damage) as item_max_physical_damage
+ from inventory where dressed_slot != 0 and owner_id = $this->id");
+ $effectBonuses = Db::getInstance()->ofetch("
+ select
+ sum(mod_strength) as effect_strength,
+ sum(mod_dexterity) as effect_dexterity,
+ sum(mod_intuition) as effect_intuition,
+ sum(mod_endurance) as effect_endurance,
+ sum(mod_intelligence) as effect_intelligence,
+ sum(mod_wisdom) as effect_wisdom
+ from users_effects where owner_id = $this->id");
+ $obj = (object)[];
+ $obj->strength = max(0,$stats->strength + $itemBonuses->item_strength + $effectBonuses->effect_strength);
+ $obj->dexterity = max(0,$stats->dexterity + $itemBonuses->item_dexterity + $effectBonuses->effect_dexterity);
+ $obj->intuition = max(0,$stats->intuition + $itemBonuses->item_intuition + $effectBonuses->effect_intuition);
+ $obj->endurance = max(0,$stats->endurance + $itemBonuses->item_endurance + $effectBonuses->effect_endurance);
+ $obj->intelligence = max(0,$stats->intelligence + $itemBonuses->item_intelligence + $effectBonuses->effect_intelligence);
+ $obj->wisdom = max(0,$stats->wisdom + $itemBonuses->item_wisdom + $effectBonuses->effect_wisdom);
+ $obj->accuracy = max(0, $itemBonuses->item_accuracy);
+ $obj->evasion = max(0, $itemBonuses->item_evasion);
+ $obj->criticals = max(0, $itemBonuses->item_criticals);
+ $obj->min_physical_damage = max(self::KULAK_MIN_DAMAGE, self::KULAK_MIN_DAMAGE + $itemBonuses->item_min_physical_damage);
+ $obj->max_physical_damage = max(self::KULAK_MAX_DAMAGE, self::KULAK_MAX_DAMAGE + $itemBonuses->item_max_physical_damage);
+ return $obj;
+ }
+
+ public function addPoint(string $stat)
+ {
+ $query = "update users set $stat = $stat + 1, free_stat_points = free_stat_points - 1 where " . self::$primaryKey . " = ?";
+ Db::getInstance()->execute($query, $this->id);
+
+ }
+
+ public function save()
+ {
+ $this->columns = [
+ self::$primaryKey => $this->id,
+ 'strength' => $this->strength,
+ 'dexterity' => $this->dexterity,
+ 'intuition' => $this->intuition,
+ 'endurance' => $this->endurance,
+ 'intelligence' => $this->intelligence,
+ 'wisdom' => $this->wisdom,
+ 'health' => $this->health,
+ 'mana' => $this->mana,
+ 'free_stat_points' => $this->free_stat_points,
+ 'level' => $this->level,
+ ];
+ $this->updateByPrimaryKey();
+ }
+}
\ No newline at end of file
diff --git a/classes/Battles/Moderation.php b/classes/Battles/Moderation.php
index a8cf52e..f3b5b38 100644
--- a/classes/Battles/Moderation.php
+++ b/classes/Battles/Moderation.php
@@ -54,13 +54,13 @@ class Moderation
public static function blockUser(int $target)
{
self::addEffectStatusToUserLog($target, "Блокировка");
- Db::getInstance()->execute('UPDATE battles.users SET block = 1 WHERE id = ?', $target);
+ Db::getInstance()->execute('UPDATE users SET block = 1 WHERE id = ?', $target);
}
public static function unBlockUser(int $target)
{
self::addEffectStatusToUserLog($target, "Блокировка" . self::STATUS_OFF);
- Db::getInstance()->execute('UPDATE battles.users SET block = 0 WHERE block = 1 AND id = ?', $target);
+ Db::getInstance()->execute('UPDATE users SET block = 0 WHERE block = 1 AND id = ?', $target);
}
public static function addToUserLog(int $target, string $message, int $senderId)
diff --git a/classes/Battles/Register.php b/classes/Battles/Register.php
index 4dd5e17..a40fbc4 100644
--- a/classes/Battles/Register.php
+++ b/classes/Battles/Register.php
@@ -11,10 +11,12 @@ class Register
if (Db::getInstance()->execute('select count(*) from users where login = ? or email = ?', [$login, $email])->fetchColumn()) {
return 0;
}
- Db::getInstance()->execute('insert into users (login,pass,email,borndate,ip,session_id,shadow) values (?,?,?,?,?,?,?)',
- [$login, $password, $email, $birthday, $_SERVER['REMOTE_ADDR'], session_id(), '0.png']);
+ Db::getInstance()->execute(
+ 'insert into users (login,pass,email,borndate,ip,session_id,shadow) values (?,?,?,?,?,?,?)',
+ [$login, $password, $email, $birthday, $_SERVER['REMOTE_ADDR'], session_id(), '0.png']
+ );
$userId = Db::getInstance()->lastInsertId();
- Db::getInstance()->execute('insert into online (user_id, login_time, room, real_time) values (?,?,1,?)', [$userId, time(), time()]);
+ Db::getInstance()->execute('insert into online (user_id, login_time, room, real_time) values (?,unix_timestamp(),1,unix_timestamp())', $userId);
Db::getInstance()->execute('insert into bank (user_id) values ?', $userId);
return $userId;
}
diff --git a/classes/Battles/Travel.php b/classes/Battles/Travel.php
index ae88e2a..884b05a 100644
--- a/classes/Battles/Travel.php
+++ b/classes/Battles/Travel.php
@@ -10,7 +10,7 @@ class Travel
* Соответствие ID комнаты игровому файлу.
* @var string[]
*/
- public static $roomFileName = [
+ public static array $roomFileName = [
1 => 'main.php',
20 => 'city.php',
21 => 'city.php',
@@ -98,7 +98,7 @@ class Travel
*/
public static function toRoom(int $roomId, int $roomIdCurrent): void
{
- UserStats::getInstance()->
+ //UserStats::getInstance()->
$itemsWeightOverflow = Db::getInstance()->fetchColumn('SELECT SUM(weight) - (select strength * 4 from users where id = ?) AS weight_overflow FROM inventory WHERE owner_id = ? AND on_sale = 0', [$_SESSION['uid'], $_SESSION['uid']]);
$eff = Db::getInstance()->fetchColumn('SELECT type FROM users_effects WHERE owner_id = ? AND (`type` = 10 OR `type` = 13 OR `type` = 14)', $_SESSION['uid']);
$errors = [];
diff --git a/classes/Battles/UserEffects.php b/classes/Battles/UserEffects.php
index 4182357..904d06f 100644
--- a/classes/Battles/UserEffects.php
+++ b/classes/Battles/UserEffects.php
@@ -4,7 +4,7 @@
namespace Battles;
trait UserEffects
{
- public static $effectName = [
+ public static array $effectName = [
2 => 'Заклинание молчания',
3 => 'Заклятие форумного молчания',
4 => 'Заклятие хаоса',
@@ -50,7 +50,7 @@ trait UserEffects
9994 => 'Антидот/Путы (Эликсир?)',
];
- public static $effectImage = [
+ public static array $effectImage = [
1 => 'travma.gif',
2 => 'magic/sleep.gif',
3 => 'magic/sleepf.gif',
diff --git a/classes/Battles/UserStats.php b/classes/Battles/UserStats.php
index 8e01125..318f429 100644
--- a/classes/Battles/UserStats.php
+++ b/classes/Battles/UserStats.php
@@ -17,6 +17,7 @@ class UserStats extends User
protected $health;
protected $mana;
protected $free_stat_points;
+ private Models\UserStats $db;
private const STAT_MAXIMUM_AMOUNT = 40;
private const ERROR_STAT_IS_MAXIMUM = 'Ошибка: Параметр достиг своего лимита!';
private const ERROR_STAT_UNKNOWN = 'Ошибка: Неизвестный параметр!';
@@ -87,6 +88,8 @@ class UserStats extends User
} else {
$query = "UPDATE users SET {$stat_name} = {$stat_name} + 1, free_stat_points = free_stat_points - 1 WHERE id = ?";
Db::getInstance()->execute($query, $this->id);
+ //$this->db = new \Battles\Models\UserStats(23);
+ $this->db->addPoint($stat_name);
}
}
@@ -161,51 +164,7 @@ class UserStats extends User
public function getFullStats(): object
{
- $stats = Db::getInstance()->ofetch("
- select
- strength,
- dexterity,
- intuition,
- endurance,
- intelligence,
- wisdom
- from users where id = $this->id");
- $itemBonuses = Db::getInstance()->ofetch("
- select
- sum(add_strength) as item_strength,
- sum(add_dexterity) as item_dexterity,
- sum(add_intuition) as item_intuition,
- sum(add_endurance) as item_endurance,
- sum(add_intelligence) as item_intelligence,
- sum(add_wisdom) as item_wisdom,
- sum(add_accuracy) as item_accuracy,
- sum(add_evasion) as item_evasion,
- sum(add_criticals) as item_criticals,
- sum(add_min_physical_damage) as item_min_physical_damage,
- sum(add_max_physical_damage) as item_max_physical_damage
- from inventory where dressed_slot != 0 and owner_id = $this->id");
- $effectBonuses = Db::getInstance()->ofetch("
- select
- sum(mod_strength) as effect_strength,
- sum(mod_dexterity) as effect_dexterity,
- sum(mod_intuition) as effect_intuition,
- sum(mod_endurance) as effect_endurance,
- sum(mod_intelligence) as effect_intelligence,
- sum(mod_wisdom) as effect_wisdom
- from users_effects where owner_id = $this->id");
- $obj = (object)[];
- $obj->strength = max(0,$stats->strength + $itemBonuses->item_strength + $effectBonuses->effect_strength);
- $obj->dexterity = max(0,$stats->dexterity + $itemBonuses->item_dexterity + $effectBonuses->effect_dexterity);
- $obj->intuition = max(0,$stats->intuition + $itemBonuses->item_intuition + $effectBonuses->effect_intuition);
- $obj->endurance = max(0,$stats->endurance + $itemBonuses->item_endurance + $effectBonuses->effect_endurance);
- $obj->intelligence = max(0,$stats->intelligence + $itemBonuses->item_intelligence + $effectBonuses->effect_intelligence);
- $obj->wisdom = max(0,$stats->wisdom + $itemBonuses->item_wisdom + $effectBonuses->effect_wisdom);
- $obj->accuracy = max(0, $itemBonuses->item_accuracy);
- $obj->evasion = max(0, $itemBonuses->item_evasion);
- $obj->criticals = max(0, $itemBonuses->item_criticals);
- $obj->min_physical_damage = max($this->minDamage, $this->minDamage + $itemBonuses->item_min_physical_damage);
- $obj->max_physical_damage = max($this->maxDamage, $this->maxDamage + $itemBonuses->item_max_physical_damage);
- return $obj;
+ return (new Models\UserStats($this->id))->getFull();
}
public function levelUp(): string
@@ -222,6 +181,7 @@ class UserStats extends User
*/
private function saveStats()
{
+ //$this->db->save();
$query = 'update users set strength = ?, dexterity = ?, intuition = ?, endurance = ?,
intelligence = ?, wisdom = ?, health = ?, mana = ?, free_stat_points = ?,
level = ? where id = ?';
diff --git a/databases/battle.logs.db b/databases/battle.logs.db
new file mode 100644
index 0000000..13a00cb
Binary files /dev/null and b/databases/battle.logs.db differ
diff --git a/functions.php b/functions.php
index 28b43f8..9ab5205 100644
--- a/functions.php
+++ b/functions.php
@@ -7,7 +7,6 @@
use Battles\Chat;
use Battles\Database\Db;
-use Battles\DressedItems;
use Battles\InventoryItem;
use Battles\Travel;
use Battles\User;
@@ -25,7 +24,11 @@ if (User::getInstance()->getBlock()) {
}
//Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
-Travel::roomRedirects(User::getInstance()->getRoom(), User::getInstance()->getBattle(), User::getInstance()->getInTower());
+Travel::roomRedirects(
+ User::getInstance()->getRoom(),
+ User::getInstance()->getBattle(),
+ User::getInstance()->getInTower()
+);
///*
// * Проверки на соответствие скрипта и комнаты, которые были натыканы по всем файлам.
@@ -220,7 +223,7 @@ function showhrefmagic(array $dress): string
return $r;
}
-function timeOut($ttm)
+function timeOut($ttm): string
{
$out = '';
$time_still = $ttm;
@@ -281,7 +284,7 @@ function addActions($time, $vars, $vls, $uid)
return $ins;
}
-// использовать магию
+// использовать магию (встроить в предмет?)
function usemagic($id, $target)
{
$user = Db::getInstance()->fetch('select * from users where id = ?', $_SESSION['uid']);