From 0aa2f2c44df5871b454b545487a6842fdc75ad06 Mon Sep 17 00:00:00 2001 From: hide_d Date: Mon, 15 Oct 2018 01:23:44 +0900 Subject: [PATCH] =?UTF-8?q?NPC=EB=8A=A5=EB=8F=99=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/Command/General/che_NPC능동.php | 94 ++++++++++++++++++++++ hwe/sammo/Command/General/che_기술연구.php | 7 +- hwe/sammo/Command/General/che_상업투자.php | 6 +- hwe/sammo/Command/General/che_정착장려.php | 6 +- hwe/sammo/Command/General/che_주민선정.php | 6 +- hwe/sammo/Constraint/MustBeNPC.php | 30 +++++++ hwe/sql/schema.sql | 2 - 7 files changed, 141 insertions(+), 10 deletions(-) create mode 100644 hwe/sammo/Command/General/che_NPC능동.php create mode 100644 hwe/sammo/Constraint/MustBeNPC.php diff --git a/hwe/sammo/Command/General/che_NPC능동.php b/hwe/sammo/Command/General/che_NPC능동.php new file mode 100644 index 00000000..32861733 --- /dev/null +++ b/hwe/sammo/Command/General/che_NPC능동.php @@ -0,0 +1,94 @@ +generalObj; + + $this->runnableConstraints=[ + ['MustBeNPC'] + ]; + + } + + protected function argTest():bool{ + if(!key_exists('optionText', $this->arg)){ + return false; + } + + if($this->arg['optionText'] == '순간이동'){ + if(!key_exists('destCityID', $this->arg)){ + return false; + } + if(!key_exists($this->arg['destCityID'], CityConst::all())){ + return false; + } + $this->arg = [ + 'optionText'=>$this->arg['optionText'], + 'destCityID'=>$this->arg['destCityID'] + ]; + return true; + } + + return false; + } + + public function getCost():array{ + return [0, 0]; + } + + public function getPreReqTurn():int{ + return 0; + } + + public function getPostReqTurn():int{ + return 0; + } + + public function run():bool{ + if(!$this->isRunnable()){ + throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도'); + } + + $db = DB::db(); + + $general = $this->generalObj; + + $logger = $general->getLogger(); + + $date = substr($general->getVar('turntime'),11,5); + + if($this->arg['optionText'] == '순간이동'){ + $destCityID = $this->arg['destCityID']; + $city = CityConst::byID($destCityID); + $cityName = $city->name; + $josaRo = JosaUtil::pick($cityName, '로'); + $logger->pushGeneralActionLog("NPC 전용 명령을 이용해 {$cityName}{$josaRo} 이동했습니다."); + $general->setVar('city', $destCityID); + + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); + } + + $general->applyDB($db); + } + + +} \ No newline at end of file diff --git a/hwe/sammo/Command/General/che_기술연구.php b/hwe/sammo/Command/General/che_기술연구.php index 72dc501e..1431e74a 100644 --- a/hwe/sammo/Command/General/che_기술연구.php +++ b/hwe/sammo/Command/General/che_기술연구.php @@ -8,7 +8,8 @@ use \sammo\{ getGeneralLeadership,getGeneralPower,getGeneralIntel, getDomesticExpLevelBonus, CriticalRatioDomestic, CriticalScore, TechLimit, - uniqueItemEx + uniqueItemEx, + LastTurn }; use \sammo\Command; @@ -46,6 +47,7 @@ class che_기술연구 extends che_상업투자{ } protected function argTest():bool{ + $this->arg = null; return true; } @@ -124,7 +126,8 @@ class che_기술연구 extends che_상업투자{ $general->increaseVar('experience', $exp); $general->increaseVar('dedication', $ded); $general->increaseVar(static::$statKey.'2', 1); - $general->updateVar('resturn', 'SUCCESS'); + + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); $general->applyDB($db); $this->checkStatChange(); diff --git a/hwe/sammo/Command/General/che_상업투자.php b/hwe/sammo/Command/General/che_상업투자.php index ce4018df..a9c19fee 100644 --- a/hwe/sammo/Command/General/che_상업투자.php +++ b/hwe/sammo/Command/General/che_상업투자.php @@ -8,7 +8,8 @@ use \sammo\{ getGeneralLeadership,getGeneralPower,getGeneralIntel, getDomesticExpLevelBonus, CriticalRatioDomestic, CriticalScore, - uniqueItemEx + uniqueItemEx, + LastTurn }; use \sammo\Command; @@ -48,6 +49,7 @@ class che_상업투자 extends Command\GeneralCommand{ } protected function argTest():bool{ + $this->arg = null; return true; } @@ -166,7 +168,7 @@ class che_상업투자 extends Command\GeneralCommand{ $general->increaseVar('experience', $exp); $general->increaseVar('dedication', $ded); $general->increaseVar(static::$statKey.'2', 1); - $general->updateVar('resturn', 'SUCCESS'); + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); $general->applyDB($db); $this->checkStatChange(); diff --git a/hwe/sammo/Command/General/che_정착장려.php b/hwe/sammo/Command/General/che_정착장려.php index 17d2f79e..1bca00a0 100644 --- a/hwe/sammo/Command/General/che_정착장려.php +++ b/hwe/sammo/Command/General/che_정착장려.php @@ -8,7 +8,8 @@ use \sammo\{ getGeneralLeadership,getGeneralPower,getGeneralIntel, getDomesticExpLevelBonus, CriticalRatioDomestic, CriticalScore, - uniqueItemEx + uniqueItemEx, + LastTurn }; use \sammo\Command; @@ -47,6 +48,7 @@ class che_정착장려 extends Command\GeneralCommand{ } protected function argTest():bool{ + $this->arg = null; return true; } @@ -152,7 +154,7 @@ class che_정착장려 extends Command\GeneralCommand{ $general->increaseVar('experience', $exp); $general->increaseVar('dedication', $ded); $general->increaseVar(static::$statKey.'2', 1); - $general->updateVar('resturn', 'SUCCESS'); + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); $general->applyDB($db); $this->checkStatChange(); diff --git a/hwe/sammo/Command/General/che_주민선정.php b/hwe/sammo/Command/General/che_주민선정.php index 212824e8..bd833475 100644 --- a/hwe/sammo/Command/General/che_주민선정.php +++ b/hwe/sammo/Command/General/che_주민선정.php @@ -8,7 +8,8 @@ use \sammo\{ getGeneralLeadership,getGeneralPower,getGeneralIntel, getDomesticExpLevelBonus, CriticalRatioDomestic, CriticalScore, - uniqueItemEx + uniqueItemEx, + LastTurn }; use \sammo\Command; @@ -47,6 +48,7 @@ class che_주민선정 extends Command\GeneralCommand{ } protected function argTest():bool{ + $this->arg = null; return true; } @@ -150,7 +152,7 @@ class che_주민선정 extends Command\GeneralCommand{ $general->increaseVar('experience', $exp); $general->increaseVar('dedication', $ded); $general->increaseVar(static::$statKey.'2', 1); - $general->updateVar('resturn', 'SUCCESS'); + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); $general->applyDB($db); $this->checkStatChange(); diff --git a/hwe/sammo/Constraint/MustBeNPC.php b/hwe/sammo/Constraint/MustBeNPC.php new file mode 100644 index 00000000..7787ad4e --- /dev/null +++ b/hwe/sammo/Constraint/MustBeNPC.php @@ -0,0 +1,30 @@ +general)){ + if(!$throwExeception){return false; } + throw new \InvalidArgumentException("require npc in general"); + } + + return true; + } + + public function test():bool{ + $this->checkInputValues(); + $this->tested = true; + + if($this->general['npc'] < 2){ + $this->reason = "NPC여야 합니다."; + return false; + } + return true; + } +} \ No newline at end of file diff --git a/hwe/sql/schema.sql b/hwe/sql/schema.sql index 2f0d34a4..b4526a47 100644 --- a/hwe/sql/schema.sql +++ b/hwe/sql/schema.sql @@ -124,8 +124,6 @@ CREATE TABLE `general` ( `betgold` INT(8) NULL DEFAULT '0', `betwingold` INT(8) NULL DEFAULT '0', `last_turn` TEXT NOT NULL DEFAULT '{}', - `recturn` TEXT NULL DEFAULT '', - `resturn` VARCHAR(30) NULL DEFAULT '', `aux` TEXT NOT NULL DEFAULT '{}' COMMENT 'JSON', PRIMARY KEY (`no`), INDEX `nation` (`nation`, `npc`),