npcCount = $npcCount; $this->fillCnt = $fillCnt; } protected function generateNPC($env, int $cnt){ $pickTypeList = ['무'=>1, '지'=>1]; $age = Util::randRangeInt(20, 25); $birthYear = $env['year'] - $age; $deathYear = $env['year'] + Util::randRangeInt(10, 50); $result = []; foreach(pickGeneralFromPool(DB::db(), 0, $cnt) as $pickedNPC){ $newNPC = $pickedNPC->getGeneralBuilder(); $newNPC->setNationID(0) ->setNPCType(3) ->setMoney(1000, 1000) ->setExpDed(0, 0) ->setLifeSpan($birthYear, $deathYear); if($newNPC->getStat()[0]===null){ $newNPC->fillRandomStat($pickTypeList); } $newNPC->fillRemainSpecAsZero($env); $newNPC->build($env); $pickedNPC->occupyGeneralName(); $result[] = [ $newNPC->getGeneralName(), $newNPC->getGeneralID() ]; } return $result; } public function run(array $env){ if($this->npcCount <= 0 && $this->fillCnt <= 0){ return [__CLASS__, []]; } $moreGenCnt = 0; if($this->fillCnt){ $db = DB::db(); $nations = $db->queryFirstColumn('SELECT nation FROM general WHERE npc < 2 AND officer_level = 12'); $regGens = $db->queryFirstField('SELECT count(*) FROM general WHERE nation IN %li AND npc < 4', $nations); $moreGenCnt = count($nations) * $this->fillCnt - $regGens; } $result = $this->generateNPC($env, $this->npcCount + $moreGenCnt); $logger = new \sammo\ActionLogger(0, 0, $env['year'], $env['month']); $genCnt = count($result); if($genCnt == 1){ $npcName = $result[0][0]; $josaRa = \sammo\JosaUtil::pick($npcName, '라'); $logger->pushGlobalActionLog("$npcName{$josaRa}는 장수가 등장하였습니다."); } else{ $logger->pushGlobalActionLog("장수 {$genCnt}명이 등장하였습니다."); } $logger->pushGlobalHistoryLog("장수 {$genCnt}명이 등장했습니다.", \sammo\ActionLogger::NOTICE_YEAR_MONTH); $logger->flush(); return [__CLASS__, $result]; } }