diff --git a/hwe/sammo/DefaultAction.php b/hwe/sammo/DefaultAction.php index f6aec8e8..6b77c848 100644 --- a/hwe/sammo/DefaultAction.php +++ b/hwe/sammo/DefaultAction.php @@ -46,4 +46,8 @@ trait DefaultAction{ public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ return null; } + + public function onArbitraryAction(General $general, string $actionType, ?string $phase=null, $aux=null): null|array{ + return $aux; + } } \ No newline at end of file diff --git a/hwe/sammo/General.php b/hwe/sammo/General.php index d00912ca..b5027204 100644 --- a/hwe/sammo/General.php +++ b/hwe/sammo/General.php @@ -1010,6 +1010,25 @@ class General implements iAction return $amount; } + public function onArbitraryAction(General $general, string $actionType, ?string $phase=null, $aux=null): null|array{ + foreach (array_merge([ + $this->nationType, + $this->officerLevelObj, + $this->specialDomesticObj, + $this->specialWarObj, + $this->personalityObj, + $this->getCrewTypeObj(), + $this->inheritBuffObj, + ], $this->itemObjs) as $iObj) { + if (!$iObj) { + continue; + } + /** @var iAction $iObj */ + $aux = $iObj->onArbitraryAction($general, $actionType, $phase, $aux); + } + return $aux; + } + public function getWarPowerMultiplier(WarUnit $unit): array { //xxx:$unit diff --git a/hwe/sammo/iAction.php b/hwe/sammo/iAction.php index d0393dec..54b5588e 100644 --- a/hwe/sammo/iAction.php +++ b/hwe/sammo/iAction.php @@ -18,4 +18,6 @@ interface iAction{ public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller; public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller; //NOTE: getBattleEndSkillTriggerList도 필요한가? + + public function onArbitraryAction(General $general, string $actionType, ?string $phase=null, ?array $aux=null): null|array; } \ No newline at end of file