game: 이민족 발동 관련 변경

- 이민족 멸망 후 타국가 임관
- 이민족 발동 시 명성을 평균치로
This commit is contained in:
2022-01-21 01:00:31 +09:00
parent fea9529bc8
commit 59515d5276
3 changed files with 23 additions and 17 deletions
@@ -55,6 +55,11 @@ class AllowJoinDestNation extends Constraint{
return false; return false;
} }
if(($this->general['npc'] != 9) && \str_starts_with($this->destNation['name'], 'ⓞ')){
$this->reason = "이민족 국가에 임관할 수 없습니다.";
return false;
}
$joinedNations = $this->general['auxVar']['joinedNations']??[]; $joinedNations = $this->general['auxVar']['joinedNations']??[];
if(in_array($this->destNation['nation'], $joinedNations)){ if(in_array($this->destNation['nation'], $joinedNations)){
$this->reason = "이미 임관했었던 국가입니다."; $this->reason = "이미 임관했었던 국가입니다.";
+4 -4
View File
@@ -14,9 +14,9 @@ class AutoDeleteInvader extends \sammo\Event\Action{
public function run(array $env){ public function run(array $env){
$db = DB::db(); $db = DB::db();
if(getNationStaticInfo($this->nationID)===null){ if(getNationStaticInfo($this->nationID)===null){
$db->update('general', [ /*$db->update('general', [
'killturn'=>5 'killturn'=>5
], 'nation = 0 AND npc = 9'); ], 'nation = 0 AND npc = 9');*/
$eventID = Util::array_get($env['currentEventID']); $eventID = Util::array_get($env['currentEventID']);
$db->delete('event', 'id = %i', $eventID); $db->delete('event', 'id = %i', $eventID);
return [__CLASS__, "Not Exists"]; return [__CLASS__, "Not Exists"];
@@ -33,9 +33,9 @@ class AutoDeleteInvader extends \sammo\Event\Action{
'arg'=>'[]', 'arg'=>'[]',
'brief'=>"이민족 방랑" 'brief'=>"이민족 방랑"
], 'general_id = %i', $rulerID); ], 'general_id = %i', $rulerID);
$db->update('general', [ /*$db->update('general', [
'killturn'=>5 'killturn'=>5
], 'nation = %i', $this->nationID); ], 'nation = %i', $this->nationID);*/
$eventID = Util::array_get($env['currentEventID']); $eventID = Util::array_get($env['currentEventID']);
$db->delete('event', 'id = %i', $eventID); $db->delete('event', 'id = %i', $eventID);
+8 -7
View File
@@ -20,8 +20,8 @@ use function sammo\refreshNationStaticInfo;
* 양수 : 정해진 값. [절대값] * 양수 : 정해진 값. [절대값]
* 음수 : 합산(장수 등), 혹은 평균(기술 등)을 곱해 적용한 값 [상대값] * 음수 : 합산(장수 등), 혹은 평균(기술 등)을 곱해 적용한 값 [상대값]
* *
* event_1.php, 센 이민족 : npcEachCount = -0.5, specAvg = 195, tech = 15000, dex = 450000 * event_1.php, 센 이민족 : npcEachCount = -2, specAvg = 195, tech = 15000, dex = 450000
* event_2.php, 약한 이민족 : npcEachCount = -0.5, specAvg = 150, tech = -1, dex = 0 * event_2.php, 약한 이민족 : npcEachCount = -2, specAvg = 150, tech = -1, dex = 0
* event_3.php, 엄청 약한 이민족 : npcEachCount = 100, specAvg = 50, tech = 0, dex = 0 * event_3.php, 엄청 약한 이민족 : npcEachCount = 100, specAvg = 50, tech = 0, dex = 0
*/ */
class RaiseInvader extends \sammo\Event\Action class RaiseInvader extends \sammo\Event\Action
@@ -105,10 +105,10 @@ class RaiseInvader extends \sammo\Event\Action
$specAvg = $this->specAvg; $specAvg = $this->specAvg;
if ($specAvg < 0) { if ($specAvg < 0) {
$specAvg = $db->queryFirstField('SELECT avg((`leadership` + `strength` + `intel`)/3) from general where npc < 4'); $specAvg = $db->queryFirstField('SELECT avg((`leadership` + `strength` + `intel`)) from general where npc < 4');
$specAvg *= -1 * $this->specAvg; $specAvg *= -1 * $this->specAvg;
} }
$specAvg = Util::toInt($specAvg); $specAvg = Util::toInt($specAvg / 3);
$tech = $this->tech; $tech = $this->tech;
if ($tech < 0) { if ($tech < 0) {
@@ -131,6 +131,8 @@ class RaiseInvader extends \sammo\Event\Action
$db->queryFirstField("SELECT max(`nation`) FROM `ng_old_nations` WHERE server_id = %s", $serverID), $db->queryFirstField("SELECT max(`nation`) FROM `ng_old_nations` WHERE server_id = %s", $serverID),
); );
$exp = $db->queryFirstField("SELECT avg(experience) from general where npc < 6");
$db->update('general', [ $db->update('general', [
'gold' => 999999, 'gold' => 999999,
@@ -163,6 +165,7 @@ class RaiseInvader extends \sammo\Event\Action
->setNPCType(9) ->setNPCType(9)
->setStat(Util::toInt($specAvg * 1.8), Util::toInt($specAvg * 1.8), Util::toInt($specAvg * 1.2)) ->setStat(Util::toInt($specAvg * 1.8), Util::toInt($specAvg * 1.8), Util::toInt($specAvg * 1.2))
->setAffinity(999) ->setAffinity(999)
->setExpDed($exp * 1.2, null)
->setGoldRice(99999, 99999); ->setGoldRice(99999, 99999);
$ruler->build($env); $ruler->build($env);
@@ -176,6 +179,7 @@ class RaiseInvader extends \sammo\Event\Action
->setCityID($cityObj->id) ->setCityID($cityObj->id)
->setNPCType(9) ->setNPCType(9)
->setAffinity(999) ->setAffinity(999)
->setExpDed($exp, null)
->setGoldRice(99999, 99999); ->setGoldRice(99999, 99999);
$leadership = Util::randRangeInt(Util::toInt($specAvg * 1.2), Util::toInt($specAvg * 1.4)); $leadership = Util::randRangeInt(Util::toInt($specAvg * 1.2), Util::toInt($specAvg * 1.4));
@@ -210,9 +214,6 @@ class RaiseInvader extends \sammo\Event\Action
'action' => Json::encode([["InvaderEnding"]]), 'action' => Json::encode([["InvaderEnding"]]),
]); ]);
$db->update('nation', [
'scout' => 1
], 'nation IN %li', $invaderNationIDList);
$db->update('diplomacy', [ $db->update('diplomacy', [
'state' => 1, 'state' => 1,
'term' => 24, 'term' => 24,