queryFirstColumn("SELECT `no` FROM general WHERE npc <= 1"); if(!$generalIDList){ return; } $generals = General::createGeneralObjListFromDB($generalIDList); $lostItems = []; $lostCnt = 0; $year = $env['year']; $month = $env['month']; $rng = new RandUtil(new LiteHashDRBG(Util::simpleSerialize( UniqueConst::$hiddenSeed, 'LostUniqueItem', $year, $month, ))); foreach ($generals as $general) { $itemList = $general->getItems(); $didLoseItem = false; foreach ($itemList as $itemType => $item) { if ($item->isBuyable()) { continue; } $logger = $general->getLogger(); if ($rng->nextBool($this->lostProb)) { $itemName = $item->getName(); $itemRawName = $item->getRawName(); $josaUl = JosaUtil::pick($itemRawName, '을'); $lostItems[$itemName] = 1; $lostCnt++; $general->setItem($itemType, 'None'); $didLoseItem = true; $logger->pushGeneralActionLog("{$itemName}{$josaUl} 잃었습니다."); } } if ($didLoseItem) { $general->applyDB($db); } } $logger = new ActionLogger(0, 0, $year, $month); if($lostCnt == 0){ $logger->pushGlobalHistoryLog("【망실】어떤 아이템도 잃지 않았습니다!"); } else{ $logger->pushGlobalHistoryLog("【망실】{$lostCnt}개의 아이템을 잃었습니다!"); } $logger->flush(); } }