arg === null) { return false; } if (!key_exists('colorType', $this->arg)) { return false; } $colorType = $this->arg['colorType']; if (!key_exists($colorType, GetNationColors())) { return false; } $this->arg = [ 'colorType' => $colorType, ]; return true; } protected function init() { $general = $this->generalObj; $env = $this->env; $this->setCity(); $this->setNation(['aux']); $actionName = $this->getName(); $this->minConditionConstraints = [ ConstraintHelper::OccupiedCity(), ConstraintHelper::BeChief(), ConstraintHelper::SuppliedCity(), ConstraintHelper::ReqNationAuxValue("can_{$actionName}", 0, '>', 0, '더이상 변경이 불가능합니다.') ]; } protected function initWithArg() { $actionName = $this->getName(); $this->fullConditionConstraints = [ ConstraintHelper::OccupiedCity(), ConstraintHelper::BeChief(), ConstraintHelper::SuppliedCity(), ConstraintHelper::ReqNationAuxValue("can_{$actionName}", 0, '>', 0, '더이상 변경이 불가능합니다.') ]; } public function getCost(): array { return [0, 0]; } public function getPreReqTurn(): int { return 0; } public function getPostReqTurn(): int { return 0; } public function getBrief(): string { $color = GetNationColors()[$this->arg['colorType']]; return "【국기】를 변경"; } public function run(): bool { if (!$this->hasFullConditionMet()) { throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도'); } $db = DB::db(); $actionName = $this->getName(); $general = $this->generalObj; $generalID = $general->getID(); $generalName = $general->getName(); $date = $general->getTurnTime($general::TURNTIME_HM); $colorType = $this->arg['colorType']; $color = GetNationColors()[$colorType]; $nationID = $general->getNationID(); $nationName = $this->nation['name']; $logger = $general->getLogger(); $general->addExperience(5 * ($this->getPreReqTurn() + 1)); $general->addDedication(5 * ($this->getPreReqTurn() + 1)); $josaYi = JosaUtil::pick($generalName, '이'); $josaYiNation = JosaUtil::pick($nationName, '이'); $aux = Json::decode($this->nation['aux']); $aux["can_{$actionName}"] = 0; $db->update('nation', [ 'color'=>$color, 'aux'=>Json::encode($aux) ], 'nation=%i', $nationID); $logger->pushGeneralActionLog("국기를 변경하였습니다 <1>$date"); $logger->pushGeneralHistoryLog("국기를 변경"); $logger->pushNationalHistoryLog("{$generalName}{$josaYi} 국기를 변경하였습니다"); $logger->pushGlobalActionLog("{$generalName}{$josaYi} 국기를 변경하였습니다"); $logger->pushGlobalHistoryLog("【국기변경】{$nationName}{$josaYiNation} 국기를 변경하였습니다."); $general->increaseInheritancePoint('active_action', 1); $this->setResultTurn(new LastTurn($this->getName(), $this->arg, 0)); $general->applyDB($db); return true; } public function exportJSVars(): array { return [ 'procRes' => [ 'colors' => GetNationColors(), ], ]; } }