diff --git a/hwe/func_process_personnel.php b/hwe/func_process_personnel.php deleted file mode 100644 index 7f3b2bb5..00000000 --- a/hwe/func_process_personnel.php +++ /dev/null @@ -1,145 +0,0 @@ -get(); - - $log = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['startyear', 'year', 'month']); - - $nation = getNationStaticInfo($general['nation']); - - //현재 외교 진행중(평시, 불가침만 제외)일때 - $query = "select state from diplomacy where me='{$general['nation']}' and state!='2' and state!='7'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $dipcount = MYDB_num_rows($result); - - - if($general['level'] != 12) { - $log[] = "●{$admin['month']}월:군주가 아닙니다. <1>$date"; - } elseif($admin['year'] < $admin['startyear']+3) { - $log[] = "●{$admin['month']}월:초반제한중에는 방랑이 불가능합니다. 방랑 실패."; - } elseif($dipcount != 0) { - $log[] = "●{$admin['month']}월:방랑할 수 없는 외교상태입니다. 방랑 실패."; - } elseif($nation['level'] == 0) { - $log[] = "●{$admin['month']}월:이미 방랑군입니다. 방랑 실패."; - } else { - $josaYi = JosaUtil::pick($general['name'], '이'); - $log[] = "●{$admin['month']}월:영토를 버리고 방랑의 길을 떠납니다. <1>$date"; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 방랑의 길을 떠납니다."; - $josaUl = JosaUtil::pick($nation['name'], '을'); - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:{$nation['name']}{$josaUl} 버리고 방랑"); - - $josaUn = JosaUtil::pick($general['name'], '은'); - $history[] = "●{$admin['year']}년 {$admin['month']}월:【방랑】{$general['name']}{$josaUn} 방랑의 길을 떠납니다."; - - //분쟁기록 모두 지움 - DeleteConflict($general['nation']); - // 국명, 색깔 바꿈 국가 레벨 0, 성향리셋, 기술0 - $db->update('nation', [ - 'name'=>$general['name'], - 'color'=>'#330000', //TODO: 기본 방랑군색 별도 지정 - 'level'=>0, - 'type'=>0, - 'tech'=>0, - 'capital'=>0 - ], 'nation=%i', $general['nation']); - // 본인 빼고 건국/임관제한 - $query = "update general set makelimit='12' where no!='{$general['no']}' and nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 건국/임관제한 - $query = "update general set resturn='SUCCESS',makelimit='12' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 관직장수 일반으로 - $query = "update general set level=1 where nation='{$general['nation']}' and level <= 11"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 전 도시 공백지로 - $query = "update city set nation='0',front='0',gen1='0',gen2='0',gen3='0',conflict='{}' where nation='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 외교 리셋 - $query = "update diplomacy set state='2',term='0' where me='{$general['nation']}' or you='{$general['nation']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - pushWorldHistory($history, $admin['year'], $admin['month']); - - refreshNationStaticInfo(); - } - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushGenLog($general, $log); -} - -function process_57(&$general) { - $db = DB::db(); - $gameStor = KVStorage::getStorage($db, 'game_env'); - $connect=$db->get(); - - $log = []; - $youlog = []; - $alllog = []; - $history = []; - $date = substr($general['turntime'],11,5); - - $admin = $gameStor->getValues(['year', 'month', 'killturn']); - - $query = "select nation,name from nation where nation='{$general['nation']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $nation = MYDB_fetch_array($result); - - $query = "select nation,supply from city where city='{$general['city']}'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $city = MYDB_fetch_array($result); - - $query = "select npc,no,name,killturn from general where nation='{$general['nation']}' and level='12'"; - $result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $ruler = MYDB_fetch_array($result); - - if($general['level'] == 0) { - $log[] = "●{$admin['month']}월:재야 입니다. 모반 실패. <1>$date"; - } elseif($general['level'] < 5) { - $log[] = "●{$admin['month']}월:수뇌부 이상만 가능합니다. 모반 실패. <1>$date"; - } elseif($city['nation'] != $general['nation']) { - $log[] = "●{$admin['month']}월:아국이 아닙니다. 모반 실패. <1>$date"; - } elseif($city['supply'] == 0) { - $log[] = "●{$admin['month']}월:고립된 도시입니다. 모반 실패. <1>$date"; - } elseif($general['level'] == 12) { - $log[] = "●{$admin['month']}월:이미 군주 입니다. 모반 실패. <1>$date"; - } elseif($ruler['killturn'] >= $admin['killturn']) { - $log[] = "●{$admin['month']}월:군주가 활동중입니다. 모반 실패. <1>$date"; - } elseif($ruler['npc'] >= 2) { - $log[] = "●{$admin['month']}월:군주가 NPC입니다. 모반 실패. <1>$date"; - } else { - //군주 교체 - $query = "update general set resturn='SUCCESS',level='12' where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - // 태수,군사,시중이었다면 해제 - $query = "update city set gen1='0' where gen1='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update city set gen2='0' where gen2='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $query = "update city set gen3='0' where gen3='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $query = "update general set level='1',experience=experience*0.7 where no='{$ruler['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - - $josaYi = JosaUtil::pick($general['name'], '이'); - $log[] = "●{$admin['month']}월:모반에 성공했습니다. <1>$date"; - $youlog[] = "●{$admin['month']}월:{$general['name']}에게 군주의 자리를 뺏겼습니다."; - $alllog[] = "●{$admin['month']}월:{$general['name']}{$josaYi} 모반에 성공했습니다."; - $history[] = "●{$admin['year']}년 {$admin['month']}월:【모반】{$general['name']}{$josaYi} {$nation['name']}의 군주 자리를 찬탈했습니다."; - - pushGeneralHistory($general, "●{$admin['year']}년 {$admin['month']}월:모반으로 {$nation['name']}의 군주자리를 찬탈"); - pushGeneralHistory($ruler, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}의 모반으로 인해 {$nation['name']}의 군주자리를 박탈당함"); - pushNationHistory($nation, "●{$admin['year']}년 {$admin['month']}월:{$general['name']}{$josaYi} {$ruler['name']}에게서 군주자리를 찬탈"); - } - pushGenLog($general, $log); - pushGenLog($ruler, $youlog); - pushGeneralPublicRecord($alllog, $admin['year'], $admin['month']); - pushWorldHistory($history, $admin['year'], $admin['month']); -} diff --git a/hwe/sammo/Command/General/che_방랑.php b/hwe/sammo/Command/General/che_방랑.php new file mode 100644 index 00000000..11e7c8b0 --- /dev/null +++ b/hwe/sammo/Command/General/che_방랑.php @@ -0,0 +1,135 @@ +arg = null; + return true; + } + + protected function init(){ + + $general = $this->generalObj; + $env = $this->env; + + $this->setCity(); + $this->setNation(); + + $relYear = $env['year'] - $env['startyear']; + + $this->runnableConstraints=[ + ConstraintHelper::BeLord(), + ConstraintHelper::NotWanderingNation(), + ConstraintHelper::NotOpeningPart($relYear), + ConstraintHelper::DisallowDiplomacyStatus([0, 1, 3, 4, 5, 6], '방랑할 수 없는 외교상태입니다.'), + //TODO:diplomacy status 상수화 + ]; + } + + public function getCost():array{ + return [0, 0]; + } + + public function getPreReqTurn():int{ + return 0; + } + + public function getPostReqTurn():int{ + return 0; + } + + public function run():bool{ + if(!$this->isRunnable()){ + throw new \RuntimeException('불가능한 커맨드를 강제로 실행 시도'); + } + + $db = DB::db(); + $env = $this->env; + + $general = $this->generalObj; + $date = substr($general->getVar('turntime'),11,5); + $generalName = $general->getName(); + $josaYi = JosaUtil::pick($generalName, '이'); + $josaUn = JosaUtil::pick($generalName, '은'); + + $nationID = $general->getNationID(); + $nationName = $this->nation['name']; + $josaUl = JosaUtil::pick($nationName, '을'); + + $logger = $general->getLogger(); + + + + $logger->pushGeneralActionLog("영토를 버리고 방랑의 길을 떠납니다. <1>$date"); + $logger->pushGlobalActionLog("{$generalName}{$josaYi} 방랑의 길을 떠납니다."); + + $logger->pushGlobalHistoryLog("【방랑】{$generalName}{$josaUn} 방랑의 길을 떠납니다."); + $logger->pushGeneralHistoryLog("{$nationName}{$josaUl} 버리고 방랑"); + + + //분쟁기록 모두 지움 + DeleteConflict($nationID); + // 국명, 색깔 바꿈 국가 레벨 0, 성향리셋, 기술0 + $db->update('nation', [ + 'name'=>$generalName, + 'color'=>'#330000', //TODO: 기본 방랑군색 별도 지정 + 'level'=>0, + 'type'=>0, + 'tech'=>0, + 'capital'=>0 + ], 'nation=%i', $nationID); + + $db->update('general', [ + 'makelimit'=>12 + ], 'nation=%i', $nationID); + $general->setVar('makelimit', 12); + + $db->update('general', [ + 'level'=>1, + ], 'nation=%i AND level < 12', $nationID); + + $db->update('city', [ + 'nation'=>0, + 'front'=>0, + 'gen1'=>0, + 'gen2'=>0, + 'gen3'=>0, + 'conflict'=>'{}' + ], 'nation=%i', $nationID); + + $db->update('diplomacy', [ + 'state'=>2, + 'term'=>0, + ], 'me=%i OR you=%i', $nationID, $nationID); + + refreshNationStaticInfo(); + + $general->setResultTurn(new LastTurn(static::getName(), $this->arg)); + $general->applyDB($db); + + return true; + } +} \ No newline at end of file