버그 수정

This commit is contained in:
2020-04-28 01:09:07 +09:00
parent 46eaa35718
commit d521bcede7
8 changed files with 53 additions and 48 deletions
+1 -1
View File
@@ -112,7 +112,7 @@ class che_하야 extends Command\GeneralCommand{
$db->update('nation', [
'gold'=>$db->sqleval('gold + %i', $lostGold),
'rice'=>$db->sqleval('rice + %i', $lostRice),
'gennum'=>$db->sqleval('gennum - 1')
'gennum'=>$db->sqleval('gennum - %i', $general->getVar('npc')!=5?1:0)
], 'nation=%i', $nationID);
\sammo\refreshNationStaticInfo();
+3 -3
View File
@@ -508,14 +508,14 @@ class GameUnitConstBase{
if(!key_exists($armType, $constType)){
$constType[$armType] = [];
}
$constType[$armType][] = $unit;
$constType[$armType][$id] = $unit;
if($unit->reqCities){
foreach($unit->reqCities as $reqCity){
if(!key_exists($reqCity, $constCity)){
$constCity[$reqCity] = [];
}
$constCity[$reqCity][] = $unit;
$constCity[$reqCity][$id] = $unit;
}
}
@@ -525,7 +525,7 @@ class GameUnitConstBase{
if(!key_exists($reqRegion, $constRegion)){
$constRegion[$reqRegion] = [];
}
$constRegion[$reqRegion][] = $unit;
$constRegion[$reqRegion][$id] = $unit;
}
}
+20 -22
View File
@@ -1027,7 +1027,7 @@ class GeneralAI
protected function do유저장긴급포상(LastTurn $lastTurn): ?NationCommand
{
if(!$this->userGenerals){
if(!$this->userWarGenerals){
return null;
}
@@ -1059,7 +1059,7 @@ class GeneralAI
$crewtype = $targetUserGeneral->getCrewTypeObj();
$reqMoney = $crewtype->costWithTech($this->nation['tech'], $targetUserGeneral->getLeadership(false)) * 2 * 4 * 1.1;
if ($this->env['year'] > $this->env['startyear'] + 5) {
if ($this->env['year'] > $this->env['startyear'] + 3) {
$reqMoney = max($reqMoney, $reqHumanMinRes);
}
$enoughMoney = $reqMoney * 1.5;
@@ -1159,7 +1159,7 @@ class GeneralAI
$crewtype = $targetUserGeneral->getCrewTypeObj();
$reqMoney = $crewtype->costWithTech($this->nation['tech'], $targetUserGeneral->getLeadership(false)) * 2 * 4 * 1.1;
if ($this->env['year'] > $this->env['startyear'] + 5) {
if ($this->env['year'] > $this->env['startyear'] + 3) {
$reqMoney = max($reqMoney, $reqHumanMinRes);
}
$enoughMoney = $reqMoney * 1.5;
@@ -1169,6 +1169,8 @@ class GeneralAI
}
//국고와 '충분한 금액'의 기하평균
$payAmount = sqrt(($enoughMoney - $targetUserGeneral->getVar($resName)) * $resVal);
$payAmount = Util::valueFit($payAmount, $resVal - $reqNationRes * 0.5);
if($payAmount < $this->nationPolicy->minimumResourceActionAmount){
continue;
}
@@ -1251,6 +1253,7 @@ class GeneralAI
}
//국고와 '충분한 금액'의 기하평균
$payAmount = sqrt(($enoughMoney - $targetNPCGeneral->getVar($resName)) * $resVal);
$payAmount = Util::valueFit($payAmount, $resVal - $reqNationRes * 0.5);
if($payAmount < $this->nationPolicy->minimumResourceActionAmount){
continue;
@@ -1337,6 +1340,7 @@ class GeneralAI
}
//국고와 '충분한 금액'의 기하평균
$payAmount = sqrt(($enoughMoney - $targetNPCGeneral->getVar($resName)) * $resVal);
$payAmount = Util::valueFit($payAmount, $resVal - $reqNationRes * 0.5);
if ($resVal < $payAmount / 2) {
continue;
@@ -2142,26 +2146,18 @@ class GeneralAI
];
$availableArmType = [];
if($genType & self::t무장){
if($this->fullStrength > $this->fullIntel * 0.9){
$availableArmType[GameUnitConst::T_FOOTMAN] = $dex[GameUnitConst::T_FOOTMAN] * $this->fullStrength;
$availableArmType[GameUnitConst::T_ARCHER] = $dex[GameUnitConst::T_ARCHER] * $this->fullStrength;
$availableArmType[GameUnitConst::T_CAVALRY] = $dex[GameUnitConst::T_CAVALRY] * $this->fullStrength;
}
if($genType & self::t지장){
if($this->fullIntel > $this->fullStrength * 0.9){
$availableArmType[GameUnitConst::T_WIZARD] = $dex[GameUnitConst::T_WIZARD] * $this->fullIntel * 3;
}
if($availableArmType){
$armType = Util::choiceRandomUsingWeight($availableArmType);
}
else{
$armType = Util::choiceRandom([GameUnitConst::T_FOOTMAN,GameUnitConst::T_ARCHER,GameUnitConst::T_CAVALRY]);
}
$armType = Util::choiceRandomUsingWeight($availableArmType);
}
$cities = [];
$regions = [];
@@ -2187,13 +2183,12 @@ class GeneralAI
throw new MustNotBeReachedException('에러:'.var_dump([$general->getName(), $general->getAuxVar('armType'), $armType, $cities, $regions, $relYear, $tech], true));
}
LogText('징병1', "{$general->getAuxVar('armType')}, {$armType}, {$type}");
if($this->generalPolicy->can고급병종){
$currCrewType = $general->getCrewTypeObj();
if ($currCrewType->isValid($cities, $regions, $relYear, $tech)) {
$currScore = $crewtype->pickScore($tech);
if($types[$type] * 0.8 < $currScore){
$type = $currCrewType->id;
}
if ($currCrewType->isValid($cities, $regions, $relYear, $tech) && $currCrewType->reqTech >= 2000) {
$type = $currCrewType->id;
}
}
@@ -2227,7 +2222,7 @@ class GeneralAI
]);
}
else if($gold < $cost && $gold * 2 >= $cost){
$crew *= $gold / $cost;
$crew *= 0.5;
$crew = Util::round($crew-49, -2);
$cmd = buildGeneralCommandClass('che_징병', $general, $env, [
'crewType' => $type,
@@ -2717,7 +2712,7 @@ class GeneralAI
protected function do거병(): ?GeneralCommand
{
$general = $this->general;
// 초반이면서 능력이 좋은놈 위주로 1%확률로 거병
// 초반이면서 능력이 좋은놈 위주로 거병
if($general->getVar('makelimit')){
return null;
}
@@ -2733,7 +2728,10 @@ class GeneralAI
return null;
}
if(!Util::randBool(0.01)){
//XXX: 건국기한 2년
$more = Util::valueFit(3 - $this->env['year'] + $this->env['init_year'], 1, 3);
LogText('건국', $more);
if(!Util::randBool(0.005*$more)){
return null;
}
+2 -2
View File
@@ -279,7 +279,7 @@ WHERE turntime < %s ORDER BY turntime ASC, `no` ASC',
if($hasNationTurn){
if($tryAutorun){
$nationCommandObj = $ai->chooseNationTurn($nationCommandObj);
//LogText("NationTurn", "General, {$general->getName()}, {$general->getID()}, {$general->getStaticNation()['name']}, {$nationCommandObj->getBrief()}, {$nationCommandObj->reason}, ");
LogText("NationTurn", "General, {$general->getName()}, {$general->getID()}, {$general->getStaticNation()['name']}, {$nationCommandObj->getBrief()}, {$nationCommandObj->reason}, ");
}
$resultNationTurn = $turnObj->processNationCommand(
$nationCommandObj
@@ -293,7 +293,7 @@ WHERE turntime < %s ORDER BY turntime ASC, `no` ASC',
$autorunMode = true;
$generalCommandObj = $newGeneralCommandObj;
}
//LogText("turn", "General, {$general->getName()}, {$general->getID()}, {$general->getStaticNation()['name']}, {$generalCommandObj->getBrief()}, {$generalCommandObj->reason}, ");
LogText("turn", "General, {$general->getName()}, {$general->getID()}, {$general->getStaticNation()['name']}, {$generalCommandObj->getBrief()}, {$generalCommandObj->reason}, ");
}
$turnObj->processCommand($generalCommandObj, $autorunMode);