battles/classes/Battles/Magic/Sharpen.php

49 lines
1.7 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
namespace Battles\Magic;
use Battles\DressedItems;
use Battles\Item;
use Battles\User;
use Krugozor\Database\Mysql\Exception;
use db;
class Sharpen extends Magic
{
private $magicDifficulty;
/**
* Sharpen constructor.
*
* @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 {
return $this->status;
}
}
private function isUsable():bool
{
$caster = new User($_SESSION['uid']);
return $this->isNotInBattle($caster) && $this->skillCheck($caster, $this->magicDifficulty);
}
}