From b14afd6a2942118ad324c9dab6496912e2cbc029 Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 10 Aug 2021 02:36:48 +0900 Subject: [PATCH] =?UTF-8?q?=ED=83=9C=EC=88=98=EA=B5=AD=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EC=84=A4=EC=A0=95=20-=20=ED=83=9C=EC=88=98?= =?UTF-8?q?=EA=B5=AD=20=EC=9E=A5=EC=88=98=EC=9D=98=20=EC=88=98=EB=AA=85(10?= =?UTF-8?q?=EB=85=84=20=ED=9B=84=206=EB=85=84=EB=A7=88=EB=8B=A4=20?= =?UTF-8?q?=EC=A0=88=EB=B0=98=20=EC=A0=95=EB=8F=84)=20-=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=EC=9E=A5=EC=9D=80=20=ED=83=9C=EC=88=98=EA=B5=AD=20?= =?UTF-8?q?=EC=9E=84=EA=B4=80=20=EB=B6=88=EA=B0=80=20-=20=EA=B3=B5?= =?UTF-8?q?=EB=B0=B1=EC=A7=80=20=EC=8B=9C=EB=82=98=EB=A6=AC=EC=98=A4?= =?UTF-8?q?=EC=97=90=20=EA=B8=B0=EB=B3=B8=20=EC=84=B8=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/Command/General/che_임관.php | 7 +++++- .../Command/General/che_장수대상임관.php | 8 +++++- hwe/sammo/Constraint/AllowJoinDestNation.php | 5 ++++ hwe/sammo/Event/Action/RaiseNPCNation.php | 25 +++++++++++-------- hwe/scenario/scenario_0.json | 14 ++++++++++- hwe/scenario/scenario_1.json | 14 ++++++++++- hwe/scenario/scenario_2.json | 5 ++++ 7 files changed, 63 insertions(+), 15 deletions(-) diff --git a/hwe/sammo/Command/General/che_임관.php b/hwe/sammo/Command/General/che_임관.php index 15175e7e..d0c0041d 100644 --- a/hwe/sammo/Command/General/che_임관.php +++ b/hwe/sammo/Command/General/che_임관.php @@ -202,6 +202,8 @@ class che_임관 extends Command\GeneralCommand{ $nationList[$nationID]['scoutmsg'] = $scoutMsg; } + $hiddenItems = []; + foreach($nationList as &$nation){ if($env['year'] < $env['startyear']+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit){ $nation['availableJoin'] = false; @@ -217,7 +219,9 @@ class che_임관 extends Command\GeneralCommand{ $nation['availableJoin'] = false; } - + if(Util::starts_with($nation['name'], 'ⓤ')){ + $hiddenItems[$nation['nation']] = $nation['nation']; + } } unset($nation); ob_start(); @@ -228,6 +232,7 @@ class che_임관 extends Command\GeneralCommand{ 임관할 국가를 목록에서 선택하세요.
+ diff --git a/hwe/sammo/Constraint/AllowJoinDestNation.php b/hwe/sammo/Constraint/AllowJoinDestNation.php index d0b0dcdb..f7e9ac9b 100644 --- a/hwe/sammo/Constraint/AllowJoinDestNation.php +++ b/hwe/sammo/Constraint/AllowJoinDestNation.php @@ -50,6 +50,11 @@ class AllowJoinDestNation extends Constraint{ return false; } + if($this->general['npc']??2 < 2 && \sammo\Util::starts_with($this->destNation['name'], 'ⓤ')){ + $this->reason = "유저장은 태수국에 임관할 수 없습니다."; + return false; + } + $joinedNations = $this->general['auxVar']['joinedNations']??[]; if(in_array($this->destNation['nation'], $joinedNations)){ $this->reason = "이미 임관했었던 국가입니다."; diff --git a/hwe/sammo/Event/Action/RaiseNPCNation.php b/hwe/sammo/Event/Action/RaiseNPCNation.php index 76670291..dd40e8fb 100644 --- a/hwe/sammo/Event/Action/RaiseNPCNation.php +++ b/hwe/sammo/Event/Action/RaiseNPCNation.php @@ -138,7 +138,7 @@ class RaiseNPCNation extends \sammo\Event\Action $techSum += $nation['tech']; $nationCnt += 1; } - if($nationCnt == 0){ + if ($nationCnt == 0) { return 0; } return Util::toInt($techSum / $nationCnt); @@ -165,26 +165,29 @@ class RaiseNPCNation extends \sammo\Event\Action $nationObj = new Nation($nationID, $nationName, $color, 0, 2000, "우리도 할 수 있다! {$cityName}군", $tech, null, 2, [$cityName]); $nationObj->build($env); - $affinity = Util::randRangeInt(1, 150); $ruler = (new GeneralBuilder("{$cityName}태수", false, null, $nationID)) ->setOfficerLevel(12) ->setCityID($cityID) ->setNPCType(6) ->setGoldRice(1000, 1000) - ->setAffinity($affinity) ->fillRandomStat($pickTypeList) ->fillRemainSpecAsZero($env); $ruler->build($env); $nationObj->addGeneral($ruler); + $birthYear = $env['year'] - 20; + $deadYearMin = $env['year'] + 10; + foreach (pickGeneralFromPool(DB::db(), 0, $genCnt - 1) as $pickedNPC) { + //대충 10년후부터 6년마다 절반? + $deadYear = $deadYearMin + Util::toInt(60 * (1 - log(Util::randRange(1, 1024), 2)/10)); $newNPC = $pickedNPC->getGeneralBuilder(); $newNPC->setNationID($nationID) ->setCityID($cityID) ->setNPCType(6) ->setGoldRice(1000, 1000) - ->setAffinity($affinity) + ->setLifeSpan($birthYear, $deadYear) ->fillRandomStat($pickTypeList) ->fillRemainSpecAsZero($env); $newNPC->build($env); @@ -237,24 +240,24 @@ class RaiseNPCNation extends \sammo\Event\Action $cityID = $emptyCity['city']; $minDistance = 999; - foreach($occupiedCitiesID as $targetCityID){ + foreach ($occupiedCitiesID as $targetCityID) { $minDistance = min(\sammo\calcCityDistance($cityID, $targetCityID, null), $minDistance); - if($minDistance < static::MIN_DIST_USERNATION){ + if ($minDistance < static::MIN_DIST_USERNATION) { break; } } - if($minDistance < static::MIN_DIST_USERNATION){ + if ($minDistance < static::MIN_DIST_USERNATION) { continue; } $minDistance = 999; - foreach($npcCitiesID as $targetCityID){ + foreach ($npcCitiesID as $targetCityID) { $minDistance = min(\sammo\calcCityDistance($cityID, $targetCityID, null), $minDistance); - if($minDistance < static::MIN_DIST_NPCNATION){ + if ($minDistance < static::MIN_DIST_NPCNATION) { break; } } - if($minDistance < static::MIN_DIST_NPCNATION){ + if ($minDistance < static::MIN_DIST_NPCNATION) { continue; } @@ -265,7 +268,7 @@ class RaiseNPCNation extends \sammo\Event\Action $npcCitiesID[] = $cityID; } - if(count($npcCities) > 0){ + if (count($npcCities) > 0) { $logger = new ActionLogger(0, 0, $env['year'], $env['month']); $logger->pushGlobalHistoryLog("【공지】공백지에 임의의 국가가 생성되었습니다."); $logger->flush(); diff --git a/hwe/scenario/scenario_0.json b/hwe/scenario/scenario_0.json index 143f1bb6..2f919edb 100644 --- a/hwe/scenario/scenario_0.json +++ b/hwe/scenario/scenario_0.json @@ -5,5 +5,17 @@ ], "const": { "joinRuinedNPCProp":0 - } + }, + "events":[ + [ + ["Date", "==", null, 12], + ["CreateManyNPC", 30], + ["DeleteEvent"] + ], + [ + ["Date", "==", 181, 1], + ["RaiseNPCNation"], + ["DeleteEvent"] + ] + ] } \ No newline at end of file diff --git a/hwe/scenario/scenario_1.json b/hwe/scenario/scenario_1.json index 5a7161e5..53634559 100644 --- a/hwe/scenario/scenario_1.json +++ b/hwe/scenario/scenario_1.json @@ -8,5 +8,17 @@ ], "const": { "joinRuinedNPCProp":0 - } + }, + "events":[ + [ + ["Date", "==", null, 12], + ["CreateManyNPC", 30], + ["DeleteEvent"] + ], + [ + ["Date", "==", 181, 1], + ["RaiseNPCNation"], + ["DeleteEvent"] + ] + ] } \ No newline at end of file diff --git a/hwe/scenario/scenario_2.json b/hwe/scenario/scenario_2.json index fcffdf98..c1d5c41e 100644 --- a/hwe/scenario/scenario_2.json +++ b/hwe/scenario/scenario_2.json @@ -18,6 +18,11 @@ ["Date", "==", null, 12], ["CreateManyNPC", 30], ["DeleteEvent"] + ], + [ + ["Date", "==", 181, 1], + ["RaiseNPCNation"], + ["DeleteEvent"] ] ] } \ No newline at end of file