From 4c44b751e3ab2097867a4f6dd380b46ba1ae1fe8 Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 9 Jun 2020 01:45:52 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A0=80=EA=B2=A9=EC=8B=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=ED=85=9C=EC=9D=B4=20=EB=AC=B4=EC=A1=B0=EA=B1=B4=20?= =?UTF-8?q?=EC=86=8C=EB=AA=A8=EB=90=98=EB=8A=94=20=EB=B2=84=EA=B7=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/BaseWarUnitTrigger.php | 208 +++++++++++++++---------------- 1 file changed, 104 insertions(+), 104 deletions(-) diff --git a/hwe/sammo/BaseWarUnitTrigger.php b/hwe/sammo/BaseWarUnitTrigger.php index 31a53a0c..f9a49f73 100644 --- a/hwe/sammo/BaseWarUnitTrigger.php +++ b/hwe/sammo/BaseWarUnitTrigger.php @@ -1,104 +1,104 @@ -object = $unit; - $this->raiseType = $raiseType; - } - - public function getUniqueID():string{ - $priority = $this->priority; - $fqn = static::class; - if($this->object === null){ - $objID = ''; - } - else{ - $objID = spl_object_id($this->object); - } - return "{$priority}_{$fqn}_{$objID}_{$this->raiseType}"; - } - - public function action(?array $env=null, $arg=null):?array{ - if($env === null){ - $env = []; - } - if(!key_exists('e_attacker', $env)){ - $env['e_attacker'] = []; - } - if(!key_exists('e_defender', $env)){ - $env['e_defender'] = []; - } - - if($env['stopNextAction']??false){ - return $env; - } - - /** @var WarUnitGeneral $attacker */ - /** @var WarUnit $defender */ - [$attacker, $defender] = $arg; - - /** @var WarUnit $self */ - $self = $this->object; - $isAttacker = $self->isAttacker(); - $oppose = $isAttacker?$defender:$attacker; - - $selfEnv = $isAttacker?$env['e_attacker']:$env['e_defender']; - $opposeEnv = $isAttacker?$env['e_defender']:$env['e_attacker']; - - $callNextAction = $this->actionWar($self, $oppose, $selfEnv, $opposeEnv); - - $env['e_attacker'] = $isAttacker?$selfEnv:$opposeEnv; - $env['e_defender'] = $isAttacker?$opposeEnv:$selfEnv; - - if(!$callNextAction){ - $env['stopNextAction'] = true; - } - - return $env; - } - - abstract protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool; - - public function processConsumableItem():bool{ - if(!($this->raiseType & static::TYPE_ITEM)){ - return false; - } - - /** @var WarUnit $self */ - $self = $this->object; - - if($self->hasActivatedSkill('아이템사용')){ - return false; - } - - $self->activateSkill('아이템사용'); - $item = $self->getGeneral()->getItem(); - $itemName = $item->getName(); - $itemRawName = $item->getRawName(); - $self->activateSkill($itemName); - - if (!($this->raiseType & static::TYPE_CONSUMABLE_ITEM)) { - return false; - } - - if($self->hasActivatedSkill('아이템소모')){ - return false; - } - - $self->activateSkill('아이템소모'); - $josaUl = JosaUtil::pick($itemRawName, '을'); - $self->getLogger()->pushGeneralActionLog("{$itemName}{$josaUl} 사용!", ActionLogger::PLAIN); - $self->getGeneral()->deleteItem(); - - return true; - } -} +object = $unit; + $this->raiseType = $raiseType; + } + + public function getUniqueID():string{ + $priority = $this->priority; + $fqn = static::class; + if($this->object === null){ + $objID = ''; + } + else{ + $objID = spl_object_id($this->object); + } + return "{$priority}_{$fqn}_{$objID}_{$this->raiseType}"; + } + + public function action(?array $env=null, $arg=null):?array{ + if($env === null){ + $env = []; + } + if(!key_exists('e_attacker', $env)){ + $env['e_attacker'] = []; + } + if(!key_exists('e_defender', $env)){ + $env['e_defender'] = []; + } + + if($env['stopNextAction']??false){ + return $env; + } + + /** @var WarUnitGeneral $attacker */ + /** @var WarUnit $defender */ + [$attacker, $defender] = $arg; + + /** @var WarUnit $self */ + $self = $this->object; + $isAttacker = $self->isAttacker(); + $oppose = $isAttacker?$defender:$attacker; + + $selfEnv = $isAttacker?$env['e_attacker']:$env['e_defender']; + $opposeEnv = $isAttacker?$env['e_defender']:$env['e_attacker']; + + $callNextAction = $this->actionWar($self, $oppose, $selfEnv, $opposeEnv); + + $env['e_attacker'] = $isAttacker?$selfEnv:$opposeEnv; + $env['e_defender'] = $isAttacker?$opposeEnv:$selfEnv; + + if(!$callNextAction){ + $env['stopNextAction'] = true; + } + + return $env; + } + + abstract protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool; + + public function processConsumableItem():bool{ + if(!($this->raiseType & static::TYPE_ITEM)){ + return false; + } + + /** @var WarUnit $self */ + $self = $this->object; + + if($self->hasActivatedSkill('아이템사용')){ + return false; + } + + $self->activateSkill('아이템사용'); + $item = $self->getGeneral()->getItem(); + $itemName = $item->getName(); + $itemRawName = $item->getRawName(); + $self->activateSkill($itemName); + + if ($this->raiseType != static::TYPE_CONSUMABLE_ITEM) { + return false; + } + + if($self->hasActivatedSkill('아이템소모')){ + return false; + } + + $self->activateSkill('아이템소모'); + $josaUl = JosaUtil::pick($itemRawName, '을'); + $self->getLogger()->pushGeneralActionLog("{$itemName}{$josaUl} 사용!", ActionLogger::PLAIN); + $self->getGeneral()->deleteItem(); + + return true; + } +}