/** * Wykonaj atak * @param \Game\Creature $attacker * @param \Game\Creature $defender */ private function makeAttack(Creature $attacker, Creature $defender) { CLI::write("{$attacker} atakuje cel: {$defender}"); // Wylicz skutecznosc ataku $sk = round(\max(\min(50 + ($attacker->getDexterity() - $defender->getDexterity()) / $defender->getDexterity() * 100, 90), 10)); CLI::write("Oszacowana skutecznosc ataku: {$sk}%"); if (\rand(1, 100) <= $sk) { $defender->setVitality($defender->getVitality() - 1); CLI::write("Atak celny {$attacker} zadaje celny cios w {$defender}"); CLI::write("Aktualna witalnosc przeciwnika: {$defender->getVitality()}"); } else { CLI::write("Pudlo, {$attacker} nie trafia w {$defender}"); } }
/** * Wykonaj atak * @param \Game\Creature $attacker * @param \Game\Creature $defender */ private function makeAttack(Creature $attacker, Creature $defender) { // Wylicz skutecznosc ataku $sk = round(\max(\min(50 + ($attacker->getDexterity() - $defender->getDexterity()) / $defender->getDexterity() * 100, 90), 10)); CLI::write("{$attacker} atakuje cel: {$defender}, ze skutecznoscia ataku: {$sk}%"); // Losuj atak if (\rand(1, 100) <= $sk) { // Odejmij staty witalnosci $defender->setVitality(max($defender->getVitality() - $attacker->getStrength(), 0)); // Pokaz informacje wyniku ataku CLI::write("Atak celny {$attacker} zadaje celny cios w {$defender} za {$attacker->getStrength()} punktow sily"); CLI::write("Aktualna witalnosc przeciwnika: {$defender->getVitality()}"); } else { CLI::write("Pudlo, {$attacker} nie trafia w {$defender}"); } }