diff --git a/hwe/sammo/Event/Action/LostUniqueItem.php b/hwe/sammo/Event/Action/LostUniqueItem.php new file mode 100644 index 00000000..0463d40a --- /dev/null +++ b/hwe/sammo/Event/Action/LostUniqueItem.php @@ -0,0 +1,83 @@ +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(); + + } +}