토너먼트값, 전투, 계략값을 분리

This commit is contained in:
2020-03-29 05:03:49 +09:00
parent 6f47e92050
commit 0561cc3320
59 changed files with 858 additions and 640 deletions
+1 -1
View File
@@ -149,7 +149,7 @@ class che_강행 extends Command\GeneralCommand{
[$reqGold, $reqRice] = $this->getCost();
$general->increaseVarWithLimit('gold', -$reqGold, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
$general->applyDB($db);
+3 -3
View File
@@ -77,13 +77,13 @@ class che_견문 extends Command\GeneralCommand{
$exp += 60;
}
if($type & SightseeingMessage::IncLeadership){
$general->increaseVar('leadership_max', 2);
$general->increaseVar('leadership_exp', 2);
}
if($type & SightseeingMessage::IncStrength){
$general->increaseVar('strength_max', 2);
$general->increaseVar('strength_exp', 2);
}
if($type & SightseeingMessage::IncIntel){
$general->increaseVar('intel_max', 2);
$general->increaseVar('intel_exp', 2);
}
if($type & SightseeingMessage::IncGold){
$general->increaseVar('gold', 300);
@@ -158,9 +158,9 @@ class che_군량매매 extends Command\GeneralCommand{
$ded = $general->onCalcStat($general, 'dedication', $ded);
$incStat = Util::choiceRandomUsingWeight([
'leadership_max'=>$general->getLeadership(false, false, false, false),
'strength_max'=>$general->getStrength(false, false, false, false),
'intel_max'=>$general->getIntel(false, false, false, false)
'leadership_exp'=>$general->getLeadership(false, false, false, false),
'strength_exp'=>$general->getStrength(false, false, false, false),
'intel_exp'=>$general->getIntel(false, false, false, false)
]);
$general->increaseVar('experience', $exp);
+1 -1
View File
@@ -102,7 +102,7 @@ class che_귀환 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
$general->applyDB($db);
@@ -126,7 +126,7 @@ class che_기술연구 extends che_상업투자{
$general->increaseVarWithLimit('gold', -$this->reqGold, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar(static::$statKey.'_max', 1);
$general->increaseVar(static::$statKey.'_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
+3 -3
View File
@@ -116,9 +116,9 @@ class che_단련 extends Command\GeneralCommand{
$general->addDex($general->getCrewTypeObj(), $score, false);
$incStat = Util::choiceRandomUsingWeight([
'leadership_max'=>$general->getLeadership(false, false, false, false),
'strength_max'=>$general->getStrength(false, false, false, false),
'intel_max'=>$general->getIntel(false, false, false, false)
'leadership_exp'=>$general->getLeadership(false, false, false, false),
'strength_exp'=>$general->getStrength(false, false, false, false),
'intel_exp'=>$general->getIntel(false, false, false, false)
]);
[$reqGold, $reqRice] = $this->getCost();
+1 -1
View File
@@ -147,7 +147,7 @@ class che_등용 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->increaseVarWithLimit('gold', -$reqGold, 0);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
@@ -111,9 +111,9 @@ class che_물자조달 extends Command\GeneralCommand{
$ded = $general->onCalcStat($general, 'dedication', $ded);
$incStat = Util::choiceRandomUsingWeight([
'leadership_max'=>$general->getLeadership(false, false, false, false),
'strength_max'=>$general->getStrength(false, false, false, false),
'intel_max'=>$general->getIntel(false, false, false, false)
'leadership_exp'=>$general->getLeadership(false, false, false, false),
'strength_exp'=>$general->getStrength(false, false, false, false),
'intel_exp'=>$general->getIntel(false, false, false, false)
]);
$general->increaseVar('experience', $exp);
@@ -100,7 +100,7 @@ class che_사기진작 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
@@ -198,7 +198,7 @@ class che_상업투자 extends Command\GeneralCommand{
$general->increaseVarWithLimit('gold', -$this->reqGold, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar(static::$statKey.'_max', 1);
$general->increaseVar(static::$statKey.'_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
+1 -1
View File
@@ -147,7 +147,7 @@ class che_이동 extends Command\GeneralCommand{
[$reqGold, $reqRice] = $this->getCost();
$general->increaseVarWithLimit('gold', -$reqGold, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
$general->applyDB($db);
@@ -129,9 +129,9 @@ class che_인재탐색 extends Command\GeneralCommand{
$logger->pushGeneralActionLog("인재를 찾을 수 없었습니다. <1>$date</>");
$incStat = Util::choiceRandomUsingWeight([
'leadership_max'=>$general->getLeadership(false, false, false, false),
'strength_max'=>$general->getStrength(false, false, false, false),
'intel_max'=>$general->getIntel(false, false, false, false)
'leadership_exp'=>$general->getLeadership(false, false, false, false),
'strength_exp'=>$general->getStrength(false, false, false, false),
'intel_exp'=>$general->getIntel(false, false, false, false)
]);
[$reqGold, $reqRice] = $this->getCost();
@@ -290,9 +290,9 @@ class che_인재탐색 extends Command\GeneralCommand{
$logger->pushGeneralHistoryLog("<Y>$npcName</>{$josaRa}는 <C>인재</>를 {$scoutType}");
$incStat = Util::choiceRandomUsingWeight([
'leadership_max'=>$general->getLeadership(false, false, false, false),
'strength_max'=>$general->getStrength(false, false, false, false),
'intel_max'=>$general->getIntel(false, false, false, false)
'leadership_exp'=>$general->getLeadership(false, false, false, false),
'strength_exp'=>$general->getStrength(false, false, false, false),
'intel_exp'=>$general->getIntel(false, false, false, false)
]);
[$reqGold, $reqRice] = $this->getCost();
@@ -123,7 +123,7 @@ class che_전투태세 extends Command\GeneralCommand{
$general->addDex($general->getCrewTypeObj(), $crew / 100 * 3, false);
$general->increaseVar('leadership_max', 3);
$general->increaseVar('leadership_exp', 3);
$general->setResultTurn($turnResult);
$general->checkStatChange();
tryUniqueItemLottery($general);
@@ -183,7 +183,7 @@ class che_정착장려 extends Command\GeneralCommand{
$general->increaseVarWithLimit('rice', -$this->reqRice, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar(static::$statKey.'_max', 1);
$general->increaseVar(static::$statKey.'_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
@@ -181,7 +181,7 @@ class che_주민선정 extends Command\GeneralCommand{
$general->increaseVarWithLimit('rice', -$this->reqRice, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar(static::$statKey.'_max', 1);
$general->increaseVar(static::$statKey.'_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
+1 -1
View File
@@ -153,7 +153,7 @@ class che_증여 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
+1 -1
View File
@@ -106,7 +106,7 @@ class che_집합 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
+1 -1
View File
@@ -207,7 +207,7 @@ class che_징병 extends Command\GeneralCommand{
$general->increaseVar('dedication', $ded);
$general->increaseVarWithLimit('gold', -$reqGold, 0);
$general->increaseVarWithLimit('rice', -$reqRice, 0);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
+1 -1
View File
@@ -195,7 +195,7 @@ class che_첩보 extends Command\GeneralCommand{
$general->increaseVarWithLimit('rice', -$reqRice, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
$general->applyDB($db);
+1 -1
View File
@@ -133,7 +133,7 @@ class che_헌납 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
+3 -3
View File
@@ -273,7 +273,7 @@ class che_화계 extends Command\GeneralCommand{
$general->increaseVarWithLimit('rice', -$reqRice, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar($statType.'_max', 1);
$general->increaseVar($statType.'_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
@@ -310,8 +310,8 @@ class che_화계 extends Command\GeneralCommand{
$general->increaseVarWithLimit('rice', -$reqRice, 0);
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar($statType.'_max', 1);
$general->increaseVar('firenum', 1);
$general->increaseVar($statType.'_exp', 1);
$general->increaseRankVar('firenum', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
$general->applyDB($db);
+1 -1
View File
@@ -104,7 +104,7 @@ class che_훈련 extends Command\GeneralCommand{
$general->increaseVar('experience', $exp);
$general->increaseVar('dedication', $ded);
$general->increaseVar('leadership_max', 1);
$general->increaseVar('leadership_exp', 1);
$general->setResultTurn(new LastTurn(static::getName(), $this->arg));
$general->checkStatChange();
tryUniqueItemLottery($general);
+147 -20
View File
@@ -18,6 +18,11 @@ class General implements iAction{
protected $raw = [];
protected $rawCity = null;
protected $rankVarRead = [];
protected $rankVarIncrease = [];
protected $rankVarSet = [];
/** @var \sammo\ActionLogger */
protected $logger;
@@ -35,6 +40,13 @@ class General implements iAction{
protected $lastTurn = null;
protected $resultTurn = null;
const RANK_COLUMN = [
'firenum'=>1, 'warnum'=>1, 'killnum'=>1, 'deathnum'=>1, 'killcrew'=>1, 'deathcrew'=>1,
'ttw'=>1, 'ttd'=>1, 'ttl'=>1, 'ttg'=>1, 'ttp'=>1, 'tlw'=>1, 'tld'=>1, 'tll'=>1, 'tlg'=>1, 'tlp'=>1,
'tsw'=>1, 'tsd'=>1, 'tsl'=>1, 'tsg'=>1, 'tsp'=>1, 'tiw'=>1, 'tid'=>1, 'til'=>1, 'tig'=>1, 'tip'=>1,
'betwin'=>1, 'betgold'=>1, 'betwingold'=>1,
];
const TURNTIME_FULL_MS = -1;
const TURNTIME_FULL = 0;
const TURNTIME_HMS = 1;
@@ -67,7 +79,7 @@ class General implements iAction{
* @param int $month 게임 월
* @param bool $fullConstruct iAction, 및 ActionLogger 초기화 여부, false인 경우 no, name, city, nation, level 정도로 초기화 가능
*/
public function __construct(array $raw, ?array $city, ?int $year, ?int $month, bool $fullConstruct=true){
public function __construct(array $raw, ?array $rawRank, ?array $city, ?int $year, ?int $month, bool $fullConstruct=true){
//TODO: 밖에서 가져오도록 하면 버그 확률이 높아짐. 필요한 raw 값을 직접 구해야함.
$staticNation = getNationStaticInfo($raw['nation']);
@@ -99,6 +111,10 @@ class General implements iAction{
$this->itemObjs['weapon'] = buildItemClass($raw['weapon']);
$this->itemObjs['book'] = buildItemClass($raw['book']);
$this->itemObjs['item'] = buildItemClass($raw['item']);
if($rawRank){
$this->rankVarRead = $rawRank;
}
}
function initLogger(int $year, int $month){
@@ -427,10 +443,6 @@ class General implements iAction{
$this->setVar('injury', 0);
$this->multiplyVar('experience', 0.5);
$this->multiplyVar('dedication', 0.5);
$this->setVar('firenum', 0);
$this->setVar('warnum', 0);
$this->setVar('killnum', 0);
$this->setVar('killcrew', 0);
$this->setVar('age', 20);
$this->setVar('specage', 0);
$this->setVar('specage2', 0);
@@ -440,12 +452,70 @@ class General implements iAction{
$this->multiplyVar('dex30', 0.5);
$this->multiplyVar('dex40', 0.5);
$this->setRankVar('firenum', 0);
$this->setRankVar('warnum', 0);
$this->setRankVar('killnum', 0);
$this->setRankVar('killcrew', 0);
$josaYi = JosaUtil::pick($generalName, '이');
$logger->pushGlobalActionLog("{$generalName}</>{$josaYi} <R>은퇴</>하고 그 자손이 유지를 이어받았습니다.");
$logger->pushGeneralActionLog('나이가 들어 <R>은퇴</>하고 자손에게 자리를 물려줍니다.', ActionLogger::PLAIN);
$logger->pushGeneralHistoryLog('나이가 들어 은퇴하고, 자손에게 관직을 물려줌');
}
function increaseRankVar(string $key, int $value){
if(!key_exists($key, static::RANK_COLUMN)){
throw new \InvalidArgumentException('올바르지 않은 인자 :'.$key);
}
if(key_exists($key, $this->rankVarSet)){
$this->rankVarSet[$key] += $value;
return;
}
if(key_exists($key, $this->rankVarRead)){
$this->rankVarSet[$key] = $this->rankVarRead[$key] + $value;
unset($this->rankVarRead[$key]);
return;
}
if(key_exists($key, $this->rankVarIncrease)){
$this->rankVarIncrease[$key] += $value;
return;
}
$this->rankVarIncrease[$key] = $value;
}
function setRankVar(string $key, int $value){
if(!key_exists($key, static::RANK_COLUMN)){
throw new \InvalidArgumentException('올바르지 않은 인자 :'.$key);
}
if(key_exists($key, $this->rankVarRead)){
unset($this->rankVarRead[$key]);
}
else if(key_exists($key, $this->rankVarIncrease)){
unset($this->rankVarIncrease[$key]);
}
$this->rankVarSet[$key]=$value;
}
function getRankVar(string $key):int{
if(!key_exists($key, static::RANK_COLUMN)){
throw new \InvalidArgumentException('올바르지 않은 인자 :'.$key);
}
if(key_exists($key, $this->rankVarSet)){
return $this->rankVarSet[$key];
}
if(!key_exists($key, $this->rankVarRead)){
throw new \RuntimeException('인자가 없음 : '.$key);
}
return $this->rankVarRead[$key];
}
/**
* @param \MeekroDB $db
@@ -459,8 +529,30 @@ class General implements iAction{
if(!$updateVals){
return false;
}
$generalID = $this->getID();
$db->update('general', $updateVals, 'no=%i', $this->raw['no']);
$db->update('general', $updateVals, 'no=%i', $generalID);
if(key_exists('nation', $updateVals)){
$db->update('rank_data', [
'nation_id'=>$updateVals['nation']
], 'general_id = %i', $generalID);
}
foreach($this->rankVarIncrease as $rankKey => $rankVal){
$db->update('rank_data', [
'value'=>$db->sqleval('value + %i', $rankVal)
], 'general_id = %i AND type = %s', $generalID, $rankKey);
}
foreach($this->rankVarSet as $rankKey => $rankVal){
$db->update('rank_data', [
'value'=>$rankVal
], 'general_id = %i AND type = %s', $generalID, $rankKey);
$this->rankVarRead[$rankKey] = $rankVal;
}
$this->rankVarIncrease = [];
$this->rankVarSet = [];
$this->getLogger()->flush();
return $db->affectedRows() > 0;
}
@@ -478,7 +570,7 @@ class General implements iAction{
$result = false;
foreach($table as [$statNickName, $statName]){
$statExpName = $statName.'_max';
$statExpName = $statName.'_exp';
if($this->getVar($statExpName) < 0){
$logger->pushGeneralActionLog("<R>{$statNickName}</>이 <C>1</> 떨어졌습니다!", ActionLogger::PLAIN);
@@ -664,7 +756,7 @@ class General implements iAction{
//TODO:createGeneralObjListFromDB로, 조건으로 select query나 generalIDList가 들어가는 녀석이 필요할 수 있음
static private function mergeQueryColumn(?array $column=null, int $constructMode=2):array{
static private function mergeQueryColumn(?array $reqColumns=null, int $constructMode=2):array{
$minimumColumn = ['no', 'name', 'city', 'nation', 'level'];
$defaultEventColumn = [
'no', 'name', 'city', 'nation', 'level',
@@ -673,24 +765,35 @@ class General implements iAction{
];
$fullColumn = [
'no', 'name', 'name2', 'picture', 'imgsvr', 'nation', 'city', 'troop', 'injury', 'affinity',
'leadership', 'leadership_max', 'strength', 'strength_max', 'intel', 'intel_max', 'weapon', 'book', 'horse', 'item',
'leadership', 'leadership_exp', 'strength', 'strength_exp', 'intel', 'intel_exp', 'weapon', 'book', 'horse', 'item',
'experience', 'dedication', 'level', 'gold', 'rice', 'crew', 'crewtype', 'train', 'atmos', 'turntime',
'makelimit', 'killturn', 'block', 'dedlevel', 'explevel', 'age', 'startage', 'belong',
'personal', 'special', 'special2', 'defence_train', 'tnmt', 'npc', 'npc_org', 'deadyear', 'npcmsg',
'dex0', 'dex10', 'dex20', 'dex30', 'dex40',
'warnum', 'firenum', 'killnum', 'deathnum', 'killcrew', 'deathcrew', 'recwar', 'last_turn', 'myset',
'recwar', 'last_turn', 'myset',
'specage', 'specage2', 'con', 'connect', 'owner', 'aux'
];
if($column === null){
return $fullColumn;
if($reqColumns === null){
return [$fullColumn, static::RANK_COLUMN];
}
else if($constructMode > 1){
return array_unique(array_merge($defaultEventColumn, $column));
$rankColumn = [];
$subColumn = [];
foreach($reqColumns as $column){
if(key_exists($column, static::RANK_COLUMN)){
$rankColumn[] = $column;
}
else{
$subColumn[] = $column;
}
}
else{
return array_unique(array_merge($minimumColumn, $column));
if($constructMode > 1){
return [array_unique(array_merge($defaultEventColumn, $subColumn)), $rankColumn];
}
return [array_unique(array_merge($minimumColumn, $subColumn)), $rankColumn];
}
/**
@@ -715,20 +818,35 @@ class General implements iAction{
$month = null;
}
$column = static::mergeQueryColumn($column, $constructMode);
[$column, $rankColumn] = static::mergeQueryColumn($column, $constructMode);
$rawGenerals = Util::convertArrayToDict(
$db->queryFirstRow('SELECT %l FROM general WHERE no IN %li', Util::formatListOfBackticks($column), $generalIDList),
'no'
);
$rawRanks = [];
if($rankColumn){
$rawValue = $db->queryAllLists(
'SELECT `general_id`, `type`, `value` FROM rank_data WHERE general_id IN %li AND `type` IN %ls',
$generalIDList,
$rankColumn
);
foreach($rawValue as [$generalID, $rankType, $rankValue]){
if(!key_exists($generalID, $rawRanks)){
$rawRanks[$generalID] = [];
}
$rawRanks[$generalID][$rankType] = $rankValue;
}
}
$result = [];
foreach($generalIDList as $generalID){
if(!key_exists($generalID, $rawGenerals)){
$result[$generalID] = new DummyGeneral($constructMode > 0);
continue;
}
$result[$generalID] = new static($rawGenerals[$generalID], null, $year, $month, $constructMode > 1);
$result[$generalID] = new static($rawGenerals[$generalID], $rawRanks[$generalID], null, $year, $month, $constructMode > 1);
}
return $result;
@@ -745,14 +863,23 @@ class General implements iAction{
$month = null;
}
$column = static::mergeQueryColumn($column, $constructMode);
[$column, $rankColumn] = static::mergeQueryColumn($column, $constructMode);
$rawGeneral = $db->queryFirstRow('SELECT %l FROM general WHERE no = %i', Util::formatListOfBackticks($column), $generalID);
if(!$rawGeneral){
return new DummyGeneral($constructMode > 0);
}
$general = new static($rawGeneral, null, $year, $month, $constructMode > 1);
$rawRankValues = [];
if($rankColumn){
$rawValue = $db->queryAllLists('SELECT `type`, `value` FROM rank_data WHERE general_id = %i AND `type` IN %ls', $generalID, $rankColumn);
foreach($rawValue as [$rankType, $rankValue]){
$rawRankValues[$rankType] = $rankValue;
}
}
$general = new static($rawGeneral, $rawRankValues, null, $year, $month, $constructMode > 1);
return $general;
}
+2 -2
View File
@@ -1355,8 +1355,8 @@ class GeneralAI{
);//기본 병종
$baseArmCost = $general->onCalcDomestic('징병', 'cost', $baseArmCost);
$baseArmRice = $general->getLeadership(false) / 2 * $crewType->rice * getTechCost($tech);
if($general->getVar('deathcrew') > 500 && $general->getVar('killcrew') > 500){
$baseArmRice *= $general->getVar('killcrew') / $general->getVar('deathcrew');
if($general->getRankVar('deathcrew') > 500 && $general->getRankVar('killcrew') > 500){
$baseArmRice *= $general->getRankVar('killcrew') / $general->getRankVar('deathcrew');
}
return [$baseArmCost, $baseArmRice];
+9
View File
@@ -282,6 +282,15 @@ class ResetHelper{
];
}
$db->insert('general_turn', $turnRows);
foreach(General::RANK_COLUMN as $rankColumn){
$db->insert('rank_data', [
'general_id'=>$generalID,
'nation_id'=>0,
'type'=>$rankColumn,
'value'=>0
]);
}
}
foreach($env as $key=>$value){
+9
View File
@@ -358,6 +358,15 @@ class NPC{
}
$db->insert('general_turn', $turnRows);
foreach(\sammo\General::RANK_COLUMN as $rankColumn){
$db->insert('rank_data', [
'general_id'=>$this->generalID,
'nation_id'=>0,
'type'=>$rankColumn,
'value'=>0
]);
}
return true; //생성되었다.
}
}
+7 -7
View File
@@ -113,7 +113,7 @@ class WarUnitGeneral extends WarUnit{
function addWin(){
$general = $this->general;
$general->increaseVar('killnum', 1);
$general->increaseRankVar('killnum', 1);
$general->multiplyVarWithLimit('atmos', 1.1, null, GameConst::$maxAtmosByWar);
$this->addStatExp(1);
@@ -122,11 +122,11 @@ class WarUnitGeneral extends WarUnit{
function addStatExp(int $value = 1){
$general = $this->general;
if($this->crewType->armType == GameUnitConst::T_WIZARD) { // 귀병
$general->increaseVar('intel_max', $value);
$general->increaseVar('intel_exp', $value);
} elseif($this->crewType->armType == GameUnitConst::T_SIEGE) { // 차병
$general->increaseVar('leadership_max', $value);
$general->increaseVar('leadership_exp', $value);
} else {
$general->increaseVar('strength_max', $value);
$general->increaseVar('strength_exp', $value);
}
}
@@ -147,7 +147,7 @@ class WarUnitGeneral extends WarUnit{
function addLose(){
$general = $this->general;
$general->increaseVar('deathnum', 1);
$general->increaseRankVar('deathnum', 1);
$this->addStatExp(1);
}
@@ -310,8 +310,8 @@ class WarUnitGeneral extends WarUnit{
$this->isFinished = true;
$general = $this->general;
$general->increaseVar('killcrew', $this->killed);
$general->increaseVar('deathcrew', $this->dead);
$general->increaseRankVar('killcrew', $this->killed);
$general->increaseRankVar('deathcrew', $this->dead);
$general->updateVar('rice', Util::round($general->getVar('rice')));
$general->updateVar('experience', Util::round($general->getVar('experience')));