preprocessCommand 정리

This commit is contained in:
2018-10-02 00:15:15 +09:00
parent 5565ec2ddb
commit 6a49887ad7
4 changed files with 65 additions and 21 deletions
@@ -0,0 +1,35 @@
<?php
namespace sammo\GeneralTrigger;
use sammo\BaseGeneralTrigger;
use sammo\General;
use sammo\ActionLogger;
use sammo\DB;
use sammo\Util;
use sammo\JosaUtil;
class che_강제소집해제 extends BaseGeneralTrigger{
static protected $priority = 50000;
public function action(?array $env=null, $arg=null):?array{
/** @var \sammo\General $general */
$general = $this->object;
if($general->getVar('crew') >= 100){
$currentRice = $general->getVar('rice');
$consumeRice = Util::toInt($general->getVar('crew') / 100);
if($consumeRice <= $currentRice){
$general->increaseVar('rice', -$consumeRice);
}
else{
$general->setVar('rice', 0);
$general->getLogger()->pushGeneralActionLog(
'군량이 모자라 병사들이 <R>소집해제</>되었습니다!', ActionLogger::PLAIN
);
}
$general->activateSkill('pre.소집해제');
}
return $env;
}
}
@@ -8,7 +8,7 @@ use sammo\Util;
use sammo\JosaUtil;
class che_도시치료 extends BaseGeneralTrigger{
static protected $priority = 50000;
static protected $priority = 10000;
public function action(?array $env=null, $arg=null):?array{
@@ -0,0 +1,25 @@
<?php
namespace sammo\GeneralTrigger;
use sammo\BaseGeneralTrigger;
use sammo\General;
use sammo\ActionLogger;
use sammo\DB;
use sammo\Util;
use sammo\JosaUtil;
class che_부상경감 extends BaseGeneralTrigger{
static protected $priority = 30000;
public function action(?array $env=null, $arg=null):?array{
/** @var \sammo\General $general */
$general = $this->object;
if($general->getVar('injury') && !$general->hasActivatedSkill('pre.부상경감')){
$general->increaseVarWithLimit('injury', -10, 0);
$general->activateSkill('pre.부상경감');
}
return $env;
}
}
+4 -20
View File
@@ -33,29 +33,13 @@ class TurnExecutionHelper
public function preprocessCommand(){
$general = $this->getGeneral();
$caller = $general->getPreTurnExecuteTriggerList($general);
$caller->merge(new GeneralTriggerCaller([
new GeneralTrigger\che_부상경감($general),
new GeneralTrigger\che_강제소집해제($general),
]));
$caller->fire();
if($general->getVar('injury') && !$general->hasActivatedSkill('pre.부상경감')){
$general->increaseVarWithLimit('injury', -10, 0);
$general->activateSkill('pre.부상경감');
}
if($general->getVar('crew') >= 100){
$currentRice = $general->getVar('rice');
$consumeRice = Util::toInt($general->getVar('crew') / 100);
if($consumeRice <= $currentRice){
$general->increaseVar('rice', -$consumeRice);
}
else{
$general->setVar('rice', 0);
$general->getLogger()->pushGeneralActionLog(
'군량이 모자라 병사들이 <R>소집해제</>되었습니다!', ActionLogger::PLAIN
);
}
$general->activateSkill('pre.소집해제');
}
$general->clearActivatedSkill();
}