/** * Ustaw statystyki dla wskazanej istoty * @param \Game\Creature $creature */ private function setCustomStats(Creature $creature) { CLI::writeLine(); CLI::write("Ustawianie statystyk dla: " . $creature); CLI::write(sprintf("Podaj sile (od 1 do 20) [domyslnie: %d]", $creature->getStrength())); $creature->setStrength(CLI::readInteger(1, 20, $creature->getStrength())); CLI::write(sprintf("Podaj zrecznosc (od 1 do 20) [domyslnie: %d]", $creature->getDexterity())); $creature->setDexterity(CLI::readInteger(1, 20, $creature->getDexterity())); CLI::write(sprintf("Podaj witalnosc (od 1 do 20) [domyslnie: %d]", $creature->getVitality())); $creature->setVitality(CLI::readInteger(1, 20, $creature->getVitality())); CLI::write(sprintf("Podaj szybkosc (od 1 do 20) [domyslnie: %d]", $creature->getSpeed())); $creature->setSpeed(CLI::readInteger(1, 20, $creature->getSpeed())); }
/** * 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}"); } }