diff --git a/hwe/sammo/Event/Action/LostUniqueItem.php b/hwe/sammo/Event/Action/LostUniqueItem.php index 0463d40a..f3c9450a 100644 --- a/hwe/sammo/Event/Action/LostUniqueItem.php +++ b/hwe/sammo/Event/Action/LostUniqueItem.php @@ -25,13 +25,13 @@ class LostUniqueItem extends \sammo\Event\Action $db = DB::db(); $generalIDList = $db->queryFirstColumn("SELECT `no` FROM general WHERE npc <= 1"); - if(!$generalIDList){ + if (!$generalIDList) { return; } $generals = General::createGeneralObjListFromDB($generalIDList); $lostItems = []; - $lostCnt = 0; + $totalLostCnt = 0; $year = $env['year']; $month = $env['month']; @@ -42,9 +42,14 @@ class LostUniqueItem extends \sammo\Event\Action $month, ))); + $maxLostByGenCnt = 0; + $maxLostGenList = []; + foreach ($generals as $general) { $itemList = $general->getItems(); $didLoseItem = false; + $lostByGenCnt = 0; + foreach ($itemList as $itemType => $item) { if ($item->isBuyable()) { continue; @@ -58,26 +63,46 @@ class LostUniqueItem extends \sammo\Event\Action $itemRawName = $item->getRawName(); $josaUl = JosaUtil::pick($itemRawName, '을'); $lostItems[$itemName] = 1; - $lostCnt++; + $totalLostCnt++; + $lostByGenCnt++; $general->setItem($itemType, 'None'); $didLoseItem = true; $logger->pushGeneralActionLog("{$itemName}{$josaUl} 잃었습니다."); } } - if ($didLoseItem) { - $general->applyDB($db); + if (!$didLoseItem) { + continue; + } + + $general->applyDB($db); + + if ($maxLostByGenCnt < $lostByGenCnt) { + $maxLostByGenCnt = $lostByGenCnt; + $maxLostGenList = [$general->getName()]; + } else if ($maxLostByGenCnt === $lostByGenCnt) { + $maxLostGenList[] = $general->getName(); } } $logger = new ActionLogger(0, 0, $year, $month); - if($lostCnt == 0){ + if ($totalLostCnt == 0) { $logger->pushGlobalHistoryLog("【망실】어떤 아이템도 잃지 않았습니다!"); - } - else{ - $logger->pushGlobalHistoryLog("【망실】{$lostCnt}개의 아이템을 잃었습니다!"); + } else { + $genCnt = count($maxLostGenList); + if($genCnt > 4){ + $maxLostGenList = array_slice($maxLostGenList, 0, 4); + + } + $maxLostGenListStr = implode(', ', $maxLostGenList); + + if($genCnt > 4){ + $maxLostGenListStr .= ' 외 ' . ($genCnt - 4) . '명'; + } + $josaYi = JosaUtil::pick($maxLostGenListStr, '이'); + + $logger->pushGlobalHistoryLog("【망실】불운하게도 {$maxLostGenListStr}{$josaYi} 한 번에 유니크 {$maxLostByGenCnt}종을 잃었습니다! (총 {$totalLostCnt}개)"); } $logger->flush(); - } }