diff --git a/hwe/sammo/ActionBuff/g65_전투순위보정.php b/hwe/sammo/ActionBuff/g65_전투순위보정.php new file mode 100644 index 00000000..4739776e --- /dev/null +++ b/hwe/sammo/ActionBuff/g65_전투순위보정.php @@ -0,0 +1,56 @@ +getCrewTypeObj(); + $attackerCrewType = $attacker->getCrewTypeObj(); + + $attackerCoef = $attackerCrewType->getAttackCoef($defenderCrewType) * $defenderCrewType->getDefenceCoef($attackerCrewType); + $defenderCoef = $defenderCrewType->getAttackCoef($attackerCrewType) * $attackerCrewType->getDefenceCoef($defenderCrewType); + + if($attackerCoef > $defenderCoef){ + return $value * 3; + } else if($attackerCoef < $defenderCoef){ + return $value / 3; + } + } + return $value; + } + + function onCalcOpposeStat(General $defender, string $statName, $value, $aux = null) + { + //공격자 입장에서 coef가 높다면 전투순위를 높인다. + if ($statName == 'battleOrder') { + if($aux === null) throw new \RuntimeException('전투순위보정에 필요한 aux가 없습니다.'); + /** @var General */ + $attacker = $aux['attacker']; + $defenderCrewType = $defender->getCrewTypeObj(); + $attackerCrewType = $attacker->getCrewTypeObj(); + + $attackerCoef = $attackerCrewType->getAttackCoef($defenderCrewType) * $defenderCrewType->getDefenceCoef($attackerCrewType); + $defenderCoef = $defenderCrewType->getAttackCoef($attackerCrewType) * $attackerCrewType->getDefenceCoef($defenderCrewType); + + if($attackerCoef < $defenderCoef){ + return $value * 3; + } else if($attackerCoef > $defenderCoef){ + return $value / 3; + } + } + return $value; + } +}