city의 officer를 general로 이동

This commit is contained in:
2020-04-18 03:57:58 +09:00
parent 5d23032500
commit eab8a3b94e
98 changed files with 680 additions and 889 deletions
+2 -2
View File
@@ -226,8 +226,8 @@ abstract class BaseCommand{
return $this->generalObj->getNationID();
}
public function getGeneralLevel(){
return $this->generalObj->getVar('level');
public function getOfficerLevel(){
return $this->generalObj->getVar('officer_level');
}
public function getBrief():string{
+1 -1
View File
@@ -128,7 +128,7 @@ class che_강행 extends Command\GeneralCommand{
$exp = 100;
$general->setVar('city', $destCityID);
if($general->getVar('level') == 12 && $this->nation['level'] == 0){
if($general->getVar('officer_level') == 12 && $this->nation['level'] == 0){
$generalList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND no!=%i', $general->getNationID(), $general->getID());
if($generalList){
+3 -2
View File
@@ -135,7 +135,7 @@ class che_거병 extends Command\GeneralCommand{
foreach(Util::range(GameConst::$maxChiefTurn) as $turnIdx){
$turnRows[] = [
'nation_id'=>$nationID,
'level'=>$chiefLevel,
'officer_level'=>$chiefLevel,
'turn_idx'=>$turnIdx,
'action'=>'휴식',
'arg'=>null,
@@ -161,7 +161,8 @@ class che_거병 extends Command\GeneralCommand{
$general->addExperience($exp);
$general->addDedication($ded);
$general->setVar('belong', 1);
$general->setVar('level', 12);
$general->setVar('officer_level', 12);
$general->setVar('officer_city', 0);
$general->setVar('nation', $nationID);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
+11 -14
View File
@@ -12,6 +12,7 @@ use \sammo\{
use function \sammo\{
function getNationStaticInfo,
tryUniqueItemLottery
};
@@ -71,32 +72,28 @@ class che_귀환 extends Command\GeneralCommand{
$env = $this->env;
$general = $this->generalObj;
$generalID = $general->getID();
$date = $general->getTurnTime($general::TURNTIME_HM);
$generalLevel = $general->getVar('level');
$target = null;
if(2 <= $generalLevel && $generalLevel <= 4){
$target = $db->queryFirstList(
'SELECT city, name FROM city WHERE %b=%i AND nation = %i',
'officer'.$general->getVar('level'), $generalID, $general->getNationID()
);
$officerLevel = $general->getVar('officer_level');
$destCityID = null;
if(2 <= $officerLevel && $officerLevel <= 4){
$destCityID = $general->getVar('officer_city');
}
if(!$target){
$target = $db->queryFirstList('SELECT city, name FROM city WHERE city=%i', $this->nation['capital']);
else{
$destCityID = $this->nation['capital'];
}
$destCityName = CityConst::byID($destCityID)->name;
[$cityID, $cityName] = $target;
$josaRo = JosaUtil::pick($cityName, '로');
$josaRo = JosaUtil::pick($destCityName, '로');
$logger = $general->getLogger();
$logger->pushGeneralActionLog("<G><b>{$cityName}</b></>{$josaRo} 귀환했습니다. <1>$date</>");
$logger->pushGeneralActionLog("<G><b>{$destCityName}</b></>{$josaRo} 귀환했습니다. <1>$date</>");
$exp = 70;
$ded = 100;
$general->setVar('city', $cityID);
$general->setVar('city', $destCityID);
$general->addExperience($exp);
$general->addDedication($ded);
+2 -2
View File
@@ -78,7 +78,7 @@ class che_등용 extends Command\GeneralCommand{
ConstraintHelper::ReqGeneralRice($reqRice),
];
if($this->destGeneralObj->getVar('level') == 12){
if($this->destGeneralObj->getVar('officer_level') == 12){
$this->runnableConstraints[] = ConstraintHelper::AlwaysFail('군주에게는 등용장을 보낼 수 없습니다.');
}
}
@@ -160,7 +160,7 @@ class che_등용 extends Command\GeneralCommand{
$db = DB::db();
$destGenerals = [];
$destRawGenerals = $db->query('SELECT no,name,npc,nation FROM general WHERE npc < 2 AND no != %i AND level != 12 ORDER BY npc,binary(name)',$this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,npc,nation FROM general WHERE npc < 2 AND no != %i AND officer_level != 12 ORDER BY npc,binary(name)',$this->generalObj->getID());
foreach($destRawGenerals as $destGeneral){
$destNationID = $destGeneral['nation'];
if(!key_exists($destNationID, $destGenerals)){
+7 -13
View File
@@ -92,7 +92,7 @@ class che_등용수락 extends Command\GeneralCommand{
ConstraintHelper::AllowJoinDestNation($relYear),
ConstraintHelper::ReqDestNationValue('level', '국가규모', '>', 0, '방랑군에는 임관할 수 없습니다.'),
ConstraintHelper::DifferentDestNation(),
ConstraintHelper::ReqGeneralValue('level', '직위', '!=', 12, '군주는 등용장을 수락할 수 없습니다')
ConstraintHelper::ReqGeneralValue('officer_level', '직위', '!=', 12, '군주는 등용장을 수락할 수 없습니다')
];
}
@@ -138,7 +138,6 @@ class che_등용수락 extends Command\GeneralCommand{
$destGeneral->addExperience(100);
$destGeneral->addDedication(100);
$setOriginalCityValues = [];
$setOriginalNationValues = [
'gennum'=>$db->sqleval('gennum - 1')
];
@@ -159,12 +158,9 @@ class che_등용수락 extends Command\GeneralCommand{
$general->setVar('rice', GameConst::$defaultRice);
}
$generalLevel = $general->getVar('level');
if(5 <= $generalLevel && $generalLevel <= 11){
$setOriginalNationValues["l{$generalLevel}set"] = 0;
}
else if(2 <= $generalLevel && $generalLevel <= 4){
$setOriginalCityValues['officer'.$generalLevel] = 0;
$officerLevel = $general->getVar('officer_level');
if(5 <= $officerLevel && $officerLevel <= 11){
$setOriginalNationValues["l{$officerLevel}set"] = 0;
}
// 재야가 아니면 명성N*10% 공헌N*10%감소
@@ -201,14 +197,12 @@ class che_등용수락 extends Command\GeneralCommand{
$db->update('nation', $setOriginalNationValues, 'nation=%i', $nationID);
}
$db->update('nation', $setScoutNationValues, 'nation=%i', $destNationID);
if($setOriginalCityValues){
$db->update('city', $setOriginalCityValues, 'city=%i', $cityID);
}
$general->setVar('permission', 'normal');
$general->setVar('belong', 1);
$general->setVar('level', 1);
$general->setVar('officer_level', 1);
$general->setVar('officer_city', 0);
$general->setVar('nation', $destNationID);
$general->setVar('city', $this->destNation['capital']);
$general->setVar('troop', 0);
@@ -234,7 +228,7 @@ class che_등용수락 extends Command\GeneralCommand{
$db = DB::db();
$destGenerals = [];
$destRawGenerals = $db->query('SELECT no,name,npc,nation FROM general WHERE npc < 2 AND no != %i AND level != 12 ORDER BY npc,binary(name)',$this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,npc,nation FROM general WHERE npc < 2 AND no != %i AND officer_level != 12 ORDER BY npc,binary(name)',$this->generalObj->getID());
foreach($destRawGenerals as $destGeneral){
$destNationID = $destGeneral['nation'];
if(!key_exists($destNationID, $destGenerals)){
@@ -110,14 +110,14 @@ class che_랜덤임관 extends Command\GeneralCommand{
if ($general->getVar('npc') >= 2 && !$env['fiction'] && 1000 <= $env['scenario'] && $env['scenario'] < 2000) {
if($notIn){
$nations = $db->query(
'SELECT nation.`name` as `name`,nation.nation as nation,scout,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.level = 12 WHERE scout=0 and gennum<%i and nation.nation not in %li',
'SELECT nation.`name` as `name`,nation.nation as nation,scout,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.officer_level = 12 WHERE scout=0 and gennum<%i and nation.nation not in %li',
$relYear<3?GameConst::$initialNationGenLimit:GameConst::$defaultMaxGeneral,
$notIn
);
}
else{
$nations = $db->query(
'SELECT nation.`name` as `name`,nation.nation as nation,scout,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.level = 12 WHERE scout=0 and gennum<%i',
'SELECT nation.`name` as `name`,nation.nation as nation,scout,gennum,`affinity` FROM nation join general on general.nation = nation.nation and general.officer_level = 12 WHERE scout=0 and gennum<%i',
$relYear<3?GameConst::$initialNationGenLimit:GameConst::$defaultMaxGeneral
);
}
@@ -239,14 +239,15 @@ class che_랜덤임관 extends Command\GeneralCommand{
}
$general->setVar('nation', $destNationID);
$general->setVar('level', 1);
$general->setVar('officer_level', 1);
$general->setVar('officer_city', 0);
$general->setVar('belong', 1);
if($this->destGeneralObj !== null){
$general->setVar('city', $this->destGeneralObj->getCityID());
}
else{
$targetCityID = $db->queryFirstField('SELECT city FROM general WHERE nation = %i AND level=12', $destNationID);
$targetCityID = $db->queryFirstField('SELECT city FROM general WHERE nation = %i AND officer_level=12', $destNationID);
$general->setVar('city', $targetCityID);
}
+6 -10
View File
@@ -70,7 +70,7 @@ class che_모반시도 extends Command\GeneralCommand{
$nationID = $general->getNationID();
$lordID = $db->queryFirstField('SELECT no FROM general WHERE nation = %i AND level = 12', $nationID);
$lordID = $db->queryFirstField('SELECT no FROM general WHERE nation = %i AND officer_level = 12', $nationID);
$lordGeneral = General::createGeneralObjFromDB($lordID);
@@ -82,16 +82,12 @@ class che_모반시도 extends Command\GeneralCommand{
$logger = $general->getLogger();
$lordLogger = $this->destGeneralObj->getLogger();
$generalLevel = $general->getVar('level');
$general->setVar('level', 12);
$lordGeneral->setVar('level', 1);
$general->setVar('officer_level', 12);
$general->setVar('officer_city', 0);
$lordGeneral->setVar('officer_level', 1);
$lordGeneral->setVar('officer_city', 0);
$lordGeneral->multiplyVar('experience', 0.7);
if(2 <= $generalLevel && $generalLevel <= 4){
$db->update('city', [
'officer'.$generalLevel=>0
], "officer{$generalLevel}=%i", $general->getID());
}
$josaYi = JosaUtil::pick($generalName, '이');
$logger->pushGlobalHistoryLog("<Y><b>【모반】</b></><Y>{$generalName}</>{$josaYi} <D><b>{$nationName}</b></>의 군주 자리를 찬탈했습니다.");
+4 -5
View File
@@ -107,17 +107,16 @@ class che_방랑 extends Command\GeneralCommand{
'makelimit'=>12
], 'nation=%i', $nationID);
$general->setVar('makelimit', 12);
$general->setVar('officer_city', 0);
$db->update('general', [
'level'=>1,
], 'nation=%i AND level < 12', $nationID);
'officer_level'=>1,
'officer_city'=>0,
], 'nation=%i AND officer_level < 12', $nationID);
$db->update('city', [
'nation'=>0,
'front'=>0,
'officer4'=>0,
'officer3'=>0,
'officer2'=>0,
'conflict'=>'{}'
], 'nation=%i', $nationID);
+6 -11
View File
@@ -109,17 +109,12 @@ class che_선양 extends Command\GeneralCommand{
$logger = $general->getLogger();
$destLogger = $destGeneral->getLogger();
$destGeneralLevel = $destGeneral->getVar('level');
$destGeneral->setVar('level', 12);
$general->setVar('level', 1);
$destGeneral->setVar('officer_level', 12);
$destGeneral->setVar('officer_city', 0);
$general->setVar('officer_level', 1);
$general->setVar('officer_city', 0);
$general->multiplyVar('experience', 0.7);
if(2 <= $destGeneralLevel && $destGeneralLevel <= 4){
$db->update('city', [
'officer'.$destGeneralLevel=>0
], "officer{$destGeneralLevel}=%i", $destGeneral->getID());
}
$josaYi = JosaUtil::pick($generalName, '이');
$logger->pushGlobalHistoryLog("<Y><b>【선양】</b></><Y>{$generalName}</>{$josaYi} <D><b>{$nationName}</b></>의 군주 자리를 <Y>{$destGeneralName}</>에게 선양했습니다.");
$logger->pushNationalHistoryLog("<Y>{$generalName}</>{$josaYi} <Y>{$destGeneralName}</>에게 선양");
@@ -143,7 +138,7 @@ class che_선양 extends Command\GeneralCommand{
//TODO: 암행부처럼 보여야...
$db = DB::db();
$destRawGenerals = $db->query('SELECT no,name,level,npc FROM general WHERE nation != 0 AND nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,officer_level,npc FROM general WHERE nation != 0 AND nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
ob_start();
?>
군주의 자리를 다른 장수에게 물려줍니다.<br>
@@ -155,7 +150,7 @@ class che_선양 extends Command\GeneralCommand{
$color = " style='color:{$color}'";
}
$name = $destGeneral['name'];
if($destGeneral['level'] >= 5){
if($destGeneral['officer_level'] >= 5){
$name = "*{$name}*";
}
?>
+1 -1
View File
@@ -129,7 +129,7 @@ class che_이동 extends Command\GeneralCommand{
$general->setVar('city', $destCityID);
if($general->getVar('level') == 12 && $this->nation['level'] == 0){
if($general->getVar('officer_level') == 12 && $this->nation['level'] == 0){
$generalList = $db->queryFirstColumn('SELECT no FROM general WHERE nation=%i AND no!=%i', $general->getNationID(), $general->getID());
if($generalList){
$db->update('general', [
+3 -2
View File
@@ -154,14 +154,15 @@ class che_임관 extends Command\GeneralCommand{
}
$general->setVar('nation', $destNationID);
$general->setVar('level', 1);
$general->setVar('officer_level', 1);
$general->setVar('officer_city', 0);
$general->setVar('belong', 1);
if($this->destGeneralObj !== null){
$general->setVar('city', $this->destGeneralObj->getCityID());
}
else{
$targetCityID = $db->queryFirstField('SELECT city FROM general WHERE nation = %i AND level=12', $destNationID);
$targetCityID = $db->queryFirstField('SELECT city FROM general WHERE nation = %i AND officer_level=12', $destNationID);
$general->setVar('city', $targetCityID);
}
+2 -2
View File
@@ -165,7 +165,7 @@ class che_증여 extends Command\GeneralCommand{
//TODO: 암행부처럼 보여야...
$db = DB::db();
$destRawGenerals = $db->query('SELECT no,name,level,npc,gold,rice FROM general WHERE nation != 0 AND nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,officer_level,npc,gold,rice FROM general WHERE nation != 0 AND nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
ob_start();
?>
자신의 자금이나 군량을 다른 장수에게 증여합니다.<br>
@@ -177,7 +177,7 @@ class che_증여 extends Command\GeneralCommand{
$color = " style='color:{$color}'";
}
$name = $destGeneral['name'];
if($destGeneral['level'] >= 5){
if($destGeneral['officer_level'] >= 5){
$name = "*{$name}*";
}
?>
+2 -1
View File
@@ -117,7 +117,8 @@ class che_하야 extends Command\GeneralCommand{
\sammo\refreshNationStaticInfo();
$general->setVar('nation', 0);
$general->setVar('level', 0);
$general->setVar('officer_level', 0);
$general->setVar('officer_city', 0);
$general->setVar('belong', 0);
$general->setVar('makelimit', 12);
+1 -1
View File
@@ -246,7 +246,7 @@ class che_화계 extends Command\GeneralCommand{
[$year, $month] = [$env['year'], $env['month']];
foreach($db->query(
'SELECT `no`,name,city,nation,level,leadership,horse,strength,weapon,intel,book,item,last_turn,injury,special,special2,injury,crew,atmos,train FROM general WHERE city = %i',
'SELECT `no`,name,city,nation,officer_level,leadership,horse,strength,weapon,intel,book,item,last_turn,injury,special,special2,injury,crew,atmos,train FROM general WHERE city = %i',
$destCityID,
$destNationID
) as $rawDestCityGeneral){
+2 -2
View File
@@ -193,7 +193,7 @@ class che_몰수 extends Command\NationCommand{
//TODO: 암행부처럼 보여야...
$db = DB::db();
$destRawGenerals = $db->query('SELECT no,name,level,npc,gold,rice FROM general WHERE nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,officer_level,npc,gold,rice FROM general WHERE nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destGeneralList = [];
foreach($destRawGenerals as $destGeneral){
$nameColor = \sammo\getNameColor($destGeneral['npc']);
@@ -202,7 +202,7 @@ class che_몰수 extends Command\NationCommand{
}
$name = $destGeneral['name'];
if($destGeneral['level'] >= 5){
if($destGeneral['officer_level'] >= 5){
$name = "*{$name}*";
}
@@ -178,7 +178,7 @@ class che_물자원조 extends Command\NationCommand{
$broadcastMessage = "<D><b>{$destNationName}</b></>{$josaRo} 금<C>{$goldAmountText}</> 쌀<C>{$riceAmountText}</>을 지원했습니다.";
$chiefList = $db->queryFirstColumn('SELECT no FROM general WHERE level >= 5 AND no != %i AND nation = %i', $generalID, $nationID);
$chiefList = $db->queryFirstColumn('SELECT no FROM general WHERE officer_level >= 5 AND no != %i AND nation = %i', $generalID, $nationID);
foreach($chiefList as $chiefID){
$chiefLogger = new ActionLogger($chiefID, $nationID, $year, $month);
$chiefLogger->pushGeneralActionLog($broadcastMessage, ActionLogger::PLAIN);
@@ -193,7 +193,7 @@ class che_물자원조 extends Command\NationCommand{
$logger->pushGeneralActionLog("<D><b>{$destNationName}</b></>{$josaRo} 물자를 지원합니다. <1>$date</>", ActionLogger::PLAIN);
$destBroadcastMessage = $broadcastMessage = "<D><b>{$nationName}</b></>에서 금<C>{$goldAmountText}</> 쌀<C>{$riceAmountText}</>을 원조했습니다.";
$destChiefList = $db->queryFirstColumn('SELECT no FROM general WHERE level >= 5 AND nation = %i', $destNationID);
$destChiefList = $db->queryFirstColumn('SELECT no FROM general WHERE officer_level >= 5 AND nation = %i', $destNationID);
foreach($destChiefList as $destChiefID){
$destChiefLogger = new ActionLogger($destChiefID, $nationID, $year, $month);
$destChiefLogger->pushGeneralActionLog($destBroadcastMessage, ActionLogger::PLAIN);
+2 -2
View File
@@ -159,7 +159,7 @@ class che_발령 extends Command\NationCommand{
{
$db = DB::db();
$destRawGenerals = $db->query('SELECT no,name,level,npc,gold,rice FROM general WHERE nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,officer_level,npc,gold,rice FROM general WHERE nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destGeneralList = [];
foreach($destRawGenerals as $destGeneral){
$nameColor = \sammo\getNameColor($destGeneral['npc']);
@@ -168,7 +168,7 @@ class che_발령 extends Command\NationCommand{
}
$name = $destGeneral['name'];
if($destGeneral['level'] >= 5){
if($destGeneral['officer_level'] >= 5){
$name = "*{$name}*";
}
+1 -1
View File
@@ -124,7 +124,7 @@ class che_천도 extends Command\NationCommand{
$nationStor = \sammo\KVStorage::getStorage(DB::db(), 'nation_env');
$general = $this->getGeneral();
$nationID = $general->getNationID();
$nationStor->setValue("last천도Trial_{$nationID}", [$general->getVar('level'), $general->getTurnTime()]);
$nationStor->setValue("last천도Trial_{$nationID}", [$general->getVar('officer_level'), $general->getTurnTime()]);
if($lastTurn->getCommand() != $commandName && $lastTurn->getArg() !== $this->arg){
$this->setResultTurn(new LastTurn(
+2 -2
View File
@@ -162,7 +162,7 @@ class che_포상 extends Command\NationCommand{
//TODO: 암행부처럼 보여야...
$db = DB::db();
$destRawGenerals = $db->query('SELECT no,name,level,npc,gold,rice FROM general WHERE nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destRawGenerals = $db->query('SELECT no,name,officer_level,npc,gold,rice FROM general WHERE nation = %i AND no != %i ORDER BY npc,binary(name)',$this->generalObj->getNationID(), $this->generalObj->getID());
$destGeneralList = [];
foreach($destRawGenerals as $destGeneral){
$nameColor = \sammo\getNameColor($destGeneral['npc']);
@@ -171,7 +171,7 @@ class che_포상 extends Command\NationCommand{
}
$name = $destGeneral['name'];
if($destGeneral['level'] >= 5){
if($destGeneral['officer_level'] >= 5){
$name = "*{$name}*";
}