전투 엔진 버그 2차 수정
This commit is contained in:
@@ -533,7 +533,7 @@ function processCommand($no) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//장수정보 재로드
|
//장수정보 재로드
|
||||||
$query = "select npc,no,name,picture,imgsvr,nation,nations,city,troop,injury,affinity,leader,leader2,power,power2,intel,intel2,experience,dedication,level,gold,rice,crew,crewtype,train,atmos,weap,book,horse,item,turntime,makenation,makelimit,killturn,block,dedlevel,explevel,age,belong,personal,special,special2,term,turn0,dex0,dex10,dex20,dex30,dex40 from general where no='$no'";
|
$query = "select npc,no,name,picture,imgsvr,nation,nations,city,troop,injury,affinity,leader,leader2,power,power2,intel,intel2,experience,dedication,level,gold,rice,crew,crewtype,train,atmos,weap,book,horse,item,turntime,makenation,makelimit,killturn,block,dedlevel,explevel,age,belong,personal,special,special2,term,turn0,dex0,dex10,dex20,dex30,dex40,warnum,killnum,deathnum,killcrew,deathcrew,recwar from general where no='$no'";
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
||||||
$general = MYDB_fetch_array($result);
|
$general = MYDB_fetch_array($result);
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-12
@@ -186,11 +186,7 @@ function processWar_NG(
|
|||||||
$logger->pushGlobalActionLog("<D><b>{$attacker->getNationVar('name')}</b></>의 <Y>{$attacker->getName()}</>{$josaYi} <G><b>{$city->getName()}</b></>{$josaRo} 진격합니다.");
|
$logger->pushGlobalActionLog("<D><b>{$attacker->getNationVar('name')}</b></>의 <Y>{$attacker->getName()}</>{$josaYi} <G><b>{$city->getName()}</b></>{$josaRo} 진격합니다.");
|
||||||
$logger->pushGeneralActionLog("<G><b>{$city->getName()}</b></>{$josaRo} <M>진격</>합니다. <1>$date</>");
|
$logger->pushGeneralActionLog("<G><b>{$city->getName()}</b></>{$josaRo} <M>진격</>합니다. <1>$date</>");
|
||||||
|
|
||||||
$battleBegin = false;
|
|
||||||
|
|
||||||
for($currPhase = 0; $currPhase < $attacker->getMaxPhase(); $currPhase+=1){
|
for($currPhase = 0; $currPhase < $attacker->getMaxPhase(); $currPhase+=1){
|
||||||
$battleBegin = true;
|
|
||||||
|
|
||||||
if($defender === null){
|
if($defender === null){
|
||||||
$defender = $city;
|
$defender = $city;
|
||||||
|
|
||||||
@@ -346,7 +342,6 @@ function processWar_NG(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!$defender->continueWar($noRice)){
|
if(!$defender->continueWar($noRice)){
|
||||||
$battleBegin = false;
|
|
||||||
|
|
||||||
$attacker->logBattleResult();
|
$attacker->logBattleResult();
|
||||||
$defender->logBattleResult();
|
$defender->logBattleResult();
|
||||||
@@ -376,22 +371,23 @@ function processWar_NG(
|
|||||||
$defender->getLogger()->pushGeneralActionLog("전멸했습니다.", ActionLogger::PLAIN);
|
$defender->getLogger()->pushGeneralActionLog("전멸했습니다.", ActionLogger::PLAIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($currPhase + 1 == $attacker->getMaxPhase()){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
$defender->finishBattle();
|
$defender->finishBattle();
|
||||||
$defender = ($getNextDefender)($defender, true);
|
$defender = ($getNextDefender)($defender, true);
|
||||||
|
|
||||||
if($defender !== null && !($defender instanceof WarUnitGeneral)){
|
if($defender !== null && !($defender instanceof WarUnitGeneral)){
|
||||||
throw new \RuntimeException('다음 수비자를 받아오는데 실패');
|
throw new \RuntimeException('다음 수비자를 받아오는데 실패');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$attacker->finishBattle();
|
$attacker->finishBattle();
|
||||||
|
$defender->finishBattle();
|
||||||
if(!$battleBegin){
|
|
||||||
// 마지막 페이즈까지 갔지만, '갱신된 수비자'와 전투하지 않았다.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if($currPhase == $attacker->getMaxPhase()){
|
if($currPhase == $attacker->getMaxPhase()){
|
||||||
//마지막 페이즈의 전투 마무리
|
//마지막 페이즈의 전투 마무리
|
||||||
@@ -402,8 +398,6 @@ function processWar_NG(
|
|||||||
$defender->logBattleResult();
|
$defender->logBattleResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
$defender->finishBattle();
|
|
||||||
|
|
||||||
if($defender instanceof WarUnitCity){
|
if($defender instanceof WarUnitCity){
|
||||||
$newConflict = $defender->addConflict();
|
$newConflict = $defender->addConflict();
|
||||||
if($newConflict){
|
if($newConflict){
|
||||||
|
|||||||
@@ -69,12 +69,12 @@ class ActionLogger{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($this->generalBattleResultLog){
|
if($this->generalBattleResultLog){
|
||||||
pushGenLog(['no'=>$this->generalId], $this->generalBattleResultLog);
|
pushBatRes(['no'=>$this->generalId], $this->generalBattleResultLog);
|
||||||
$this->generalBattleResultLog = [];
|
$this->generalBattleResultLog = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->generalBattleDetailLog){
|
if($this->generalBattleDetailLog){
|
||||||
pushGenLog(['no'=>$this->generalId], $this->generalBattleDetailLog);
|
pushBatLog(['no'=>$this->generalId], $this->generalBattleDetailLog);
|
||||||
$this->generalBattleDetailLog = [];
|
$this->generalBattleDetailLog = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class WarUnit{
|
|||||||
protected $warPowerMultiply = 1.0;
|
protected $warPowerMultiply = 1.0;
|
||||||
|
|
||||||
protected $activatedSkill = [];
|
protected $activatedSkill = [];
|
||||||
|
protected $isFinished = false;
|
||||||
|
|
||||||
private function __construct(){
|
private function __construct(){
|
||||||
}
|
}
|
||||||
@@ -72,10 +73,10 @@ class WarUnit{
|
|||||||
function increaseVarWithLimit(string $key, $value, $min = null, $max = null){
|
function increaseVarWithLimit(string $key, $value, $min = null, $max = null){
|
||||||
$targetValue = $this->raw[$key] + $value;
|
$targetValue = $this->raw[$key] + $value;
|
||||||
if($min !== null && $targetValue < $min){
|
if($min !== null && $targetValue < $min){
|
||||||
$value = $min;
|
$targetValue = $min;
|
||||||
}
|
}
|
||||||
if($max !== null && $targetValue > $max){
|
if($max !== null && $targetValue > $max){
|
||||||
$value = $max;
|
$targetValue = $max;
|
||||||
}
|
}
|
||||||
$this->updateVar($key, $targetValue);
|
$this->updateVar($key, $targetValue);
|
||||||
}
|
}
|
||||||
@@ -92,10 +93,10 @@ class WarUnit{
|
|||||||
function multiplyVarWithLimit(string $key, $value, $min = null, $max = null){
|
function multiplyVarWithLimit(string $key, $value, $min = null, $max = null){
|
||||||
$targetValue = $this->raw[$key] * $value;
|
$targetValue = $this->raw[$key] * $value;
|
||||||
if($min !== null && $targetValue < $min){
|
if($min !== null && $targetValue < $min){
|
||||||
$value = $min;
|
$targetValue = $min;
|
||||||
}
|
}
|
||||||
if($max !== null && $targetValue > $max){
|
if($max !== null && $targetValue > $max){
|
||||||
$value = $max;
|
$targetValue = $max;
|
||||||
}
|
}
|
||||||
$this->updateVar($key, $targetValue);
|
$this->updateVar($key, $targetValue);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,7 +85,12 @@ class WarUnitCity extends WarUnit{
|
|||||||
}
|
}
|
||||||
|
|
||||||
function finishBattle(){
|
function finishBattle(){
|
||||||
$this->updateVar('def', Util::round($this->hp / 10));
|
if($this->isFinished){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->isFinished = true;
|
||||||
|
|
||||||
|
$this->updateVar('def', Util::round($this->getHP() / 10));
|
||||||
$this->updateVar('wall', Util::round($this->getVar('wall')));
|
$this->updateVar('wall', Util::round($this->getVar('wall')));
|
||||||
|
|
||||||
//NOTE: 전투로 인한 사망자는 여기서 처리하지 않음
|
//NOTE: 전투로 인한 사망자는 여기서 처리하지 않음
|
||||||
|
|||||||
@@ -556,7 +556,7 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
|
|
||||||
//계략
|
//계략
|
||||||
if($crewType->magicCoef){
|
if($crewType->magicCoef){
|
||||||
$magicRatio = getGeneralIntel($general, true, true, true, false) / 100;
|
$magicRatio = getGeneralIntel($this->raw, true, true, true, false) / 100;
|
||||||
$magicRatio *= $crewType->magicCoef;
|
$magicRatio *= $crewType->magicCoef;
|
||||||
|
|
||||||
if($specialWar == 41){
|
if($specialWar == 41){
|
||||||
@@ -932,6 +932,11 @@ class WarUnitGeneral extends WarUnit{
|
|||||||
}
|
}
|
||||||
|
|
||||||
function finishBattle(){
|
function finishBattle(){
|
||||||
|
if($this->isFinished){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$this->isFinished = true;
|
||||||
|
|
||||||
$this->increaseVar('killcrew', $this->killed);
|
$this->increaseVar('killcrew', $this->killed);
|
||||||
$this->increaseVar('deathcrew', $this->dead);
|
$this->increaseVar('deathcrew', $this->dead);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user