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(); } }