protected function doAttack(Model $defender, $weapon) { $result = new AttackResult(); $result->setDead($defender->isDead()); if (!$this->usedCharge && $this->getSim()->isChargeAttack()) { $result->setCharge(); $this->usedCharge = true; } $result = $this->evalAttack($defender, $weapon, $result); $this->getSim()->addDamageDone($result->getDamage()); if (!$result->isDead() && $defender->isDead()) { $result->setKilled(); $this->getSim()->setKilled(true); $this->getSim()->debug("[{$defender->getName()} died"); } return $result; }