Основные классы переехали на обёртку PDO. Плановое №16.

This commit is contained in:
lopar
2021-01-28 23:05:34 +02:00
parent 0099c235a7
commit 8402912098
22 changed files with 284 additions and 1940 deletions
+16 -19
View File
@@ -3,12 +3,10 @@
namespace Battles\Magic;
use Battles\Database\DBPDO;
use Battles\DressedItems;
use Battles\Item;
use Battles\User;
use Krugozor\Database\Mysql\Exception;
use db;
class Sharpen extends Magic
{
@@ -20,30 +18,29 @@ class Sharpen extends Magic
* @param int $sharpenStrength
* @param int $magicDifficulty
*
* @throws Exception
*/
public function __construct(int $sharpenStrength, int $magicDifficulty)
{
$this->magicDifficulty = $magicDifficulty;
if ($this->isUsable()) {
$item = DressedItems::getDressedItemBySlot(Item::ITEM_TYPE_WEAPON, $_SESSION['uid']);
// Проверяем, что в названии предмета нет цифр и плюсов.
if (preg_match('/[\W\S]+\+\[?[\d]]?/', $item['name'])) {
return 'Этот предмет точить нельзя!';
}
$newMinPhysicalDamage = $item['add_min_physical_damage'] + $sharpenStrength;
$newMaxPhysicalDamage = $item['add_max_physical_damage'] + $sharpenStrength;
$newItemName = $item['name'] . " [+$sharpenStrength]";
db::c()->query('UPDATE battles.inventory SET name = "?s", add_min_physical_damage = "?s", add_max_physical_damage = "?s" WHERE item_id = ?i ', $newItemName, $newMinPhysicalDamage, $newMaxPhysicalDamage, $item['item_id']);
return "У вас получилось изготовить предмет $newItemName!";
} else {
if (!$this->isUsable()) {
return $this->status;
}
$item = DressedItems::getDressedItemBySlot(Item::ITEM_TYPE_WEAPON, $_SESSION['uid']);
// Проверяем, что в названии предмета нет цифр и плюсов.
if (preg_match('/[\W\S]+\+\[?[\d]]?/', $item['name'])) {
return 'Этот предмет точить нельзя!';
}
$newMinPhysicalDamage = $item['add_min_physical_damage'] + $sharpenStrength;
$newMaxPhysicalDamage = $item['add_max_physical_damage'] + $sharpenStrength;
$newItemName = $item['name'] . " [+$sharpenStrength]";
DBPDO::INIT()->execute('UPDATE battles.inventory SET name = ?, add_min_physical_damage = ?, add_max_physical_damage = ? WHERE item_id = ? ', [$newItemName, $newMinPhysicalDamage, $newMaxPhysicalDamage, $item['item_id']]);
return "У вас получилось изготовить предмет $newItemName!";
}
private function isUsable():bool
private function isUsable(): bool
{
$caster = new User($_SESSION['uid']);
return $this->isNotInBattle($caster) && $this->skillCheck($caster, $this->magicDifficulty);
return $this->isNotInBattle($caster) && $this->isSuccess($caster, $this->magicDifficulty);
}
}