fix: 성벽선제 동작 개시
This commit is contained in:
@@ -337,10 +337,6 @@ if ($action == 'reorder') {
|
||||
]);
|
||||
}
|
||||
|
||||
usort($defenderList, function (WarUnit $lhs, WarUnit $rhs) use ($attacker) {
|
||||
return - (extractBattleOrder($lhs, $attacker) <=> extractBattleOrder($rhs, $attacker));
|
||||
});
|
||||
|
||||
$rawDefenderList = [];
|
||||
foreach($defenderList as $unit){
|
||||
if(extractBattleOrder($unit, $attacker) <= 0){
|
||||
@@ -413,6 +409,9 @@ function simulateBattle(
|
||||
$defenderList[] = $city;
|
||||
}
|
||||
|
||||
usort($defenderList, function (WarUnit $lhs, WarUnit $rhs) use ($attacker) {
|
||||
return - (extractBattleOrder($lhs, $attacker) <=> extractBattleOrder($rhs, $attacker));
|
||||
});
|
||||
|
||||
$iterDefender = new \ArrayIterator($defenderList);
|
||||
$iterDefender->rewind();
|
||||
@@ -444,12 +443,14 @@ function simulateBattle(
|
||||
$defender = $iterDefender->current();
|
||||
|
||||
if (extractBattleOrder($defender, $attacker) <= 0) {
|
||||
logError('noDefence', TVarDumper::dump($defender, 2), '', []);
|
||||
return null;
|
||||
}
|
||||
|
||||
$defenderRice += $defender->getVar('rice');
|
||||
|
||||
$iterDefender->next();
|
||||
logError('nextDefender', TVarDumper::dump($defender, 2), '', []);
|
||||
return $defender;
|
||||
};
|
||||
|
||||
|
||||
+16
-9
@@ -424,21 +424,28 @@ function processWar_NG(
|
||||
$attacker->logBattleResult();
|
||||
$defender->logBattleResult();
|
||||
|
||||
$attacker->addWin();
|
||||
$defender->addLose();
|
||||
if (!($defender instanceof WarUnitCity) || $defender->isSiege()){
|
||||
$attacker->addWin();
|
||||
$defender->addLose();
|
||||
|
||||
$attacker->tryWound();
|
||||
$defender->tryWound();
|
||||
$attacker->tryWound();
|
||||
$defender->tryWound();
|
||||
|
||||
if ($defender === $city) {
|
||||
$attacker->addLevelExp(1000);
|
||||
$conquerCity = true;
|
||||
break;
|
||||
if ($defender === $city) {
|
||||
$attacker->addLevelExp(1000);
|
||||
$conquerCity = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$josaYi = JosaUtil::pick($defender->getCrewTypeName(), '이');
|
||||
|
||||
if ($noRice) {
|
||||
if ($defender instanceof WarUnitCity && !$defender->isSiege()){
|
||||
//실제 공성을 위해 다시 초기화
|
||||
$defender->setOppose(null);
|
||||
}
|
||||
else if ($noRice) {
|
||||
$logger->pushGlobalActionLog("<Y>{$defender->getName()}</>의 {$defender->getCrewTypeName()}{$josaYi} 패퇴했습니다.");
|
||||
$attacker->getLogger()->pushGeneralActionLog("<Y>{$defender->getName()}</>의 {$defender->getCrewTypeName()}{$josaYi} 패퇴했습니다.", ActionLogger::PLAIN);
|
||||
$defender->getLogger()->pushGeneralActionLog("군량 부족으로 패퇴합니다.", ActionLogger::PLAIN);
|
||||
|
||||
@@ -82,6 +82,10 @@ class WarUnitCity extends WarUnit{
|
||||
$this->onSiege = true;
|
||||
}
|
||||
|
||||
function isSiege(): bool{
|
||||
return $this->onSiege;
|
||||
}
|
||||
|
||||
function getDex(GameUnitDetail $crewType){
|
||||
return ($this->cityTrainAtmos - 60) * 7200;
|
||||
}
|
||||
@@ -99,6 +103,12 @@ class WarUnitCity extends WarUnit{
|
||||
function continueWar(&$noRice):bool{
|
||||
//전투가 가능하면 true
|
||||
$noRice = false;
|
||||
|
||||
//본 공성이 아닌 경우에는 한대만 맞아줌
|
||||
if(!$this->onSiege){
|
||||
return false;
|
||||
}
|
||||
|
||||
if($this->getHP() <= 0){
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user