forked from devsam/core
전투 코드 반영
This commit is contained in:
+12
-2
@@ -145,7 +145,12 @@ function processWar_NG(
|
||||
|
||||
$josaYi = JosaUtil::pick($attacker->getCrewTypeName(), '이');
|
||||
$logger->pushGlobalActionLog("<Y>{$attacker->getName()}</>의 {$attacker->getCrewTypeName()}{$josaYi} 퇴각했습니다.");
|
||||
$attacker->getLogger()->pushGeneralActionLog("퇴각했습니다.", ActionLogger::PLAIN);
|
||||
if($noRice){
|
||||
$attacker->getLogger()->pushGeneralActionLog("군량 부족으로 퇴각합니다.", ActionLogger::PLAIN);
|
||||
}
|
||||
else{
|
||||
$attacker->getLogger()->pushGeneralActionLog("퇴각했습니다.", ActionLogger::PLAIN);
|
||||
}
|
||||
$defender->getLogger()->pushGeneralActionLog("<Y>{$attacker->getName()}</>의 {$attacker->getCrewTypeName()}{$josaYi} 퇴각했습니다.", ActionLogger::PLAIN);
|
||||
|
||||
break;
|
||||
@@ -167,7 +172,12 @@ function processWar_NG(
|
||||
$josaYi = JosaUtil::pick($defender->getCrewTypeName(), '이');
|
||||
$logger->pushGlobalActionLog("<Y>{$defender->getName()}</>의 {$defender->getCrewTypeName()}{$josaYi} 퇴각했습니다.");
|
||||
$attacker->getLogger()->pushGeneralActionLog("<Y>{$defender->getName()}</>의 {$defender->getCrewTypeName()}{$josaYi} 퇴각했습니다.", ActionLogger::PLAIN);
|
||||
$defender->getLogger()->pushGeneralActionLog("퇴각했습니다.", ActionLogger::PLAIN);
|
||||
if($noRice){
|
||||
$defender->getLogger()->pushGeneralActionLog("군량 부족으로 퇴각합니다.", ActionLogger::PLAIN);
|
||||
}
|
||||
else{
|
||||
$defender->getLogger()->pushGeneralActionLog("퇴각했습니다.", ActionLogger::PLAIN);
|
||||
}
|
||||
|
||||
$defender->finishBattle();
|
||||
$defender = ($getNextDefender)($defender, true);
|
||||
|
||||
@@ -44,8 +44,6 @@ class WarUnitCity extends WarUnit{
|
||||
$warPower *= Util::randRange(0.9, 1.1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
function increaseKilled(int $damage):int{
|
||||
$this->killed += $damage;
|
||||
return $this->killed;
|
||||
@@ -59,7 +57,8 @@ class WarUnitCity extends WarUnit{
|
||||
$damage = min($damage, $this->hp);
|
||||
$this->dead += $damage;
|
||||
$this->hp -= $damage;
|
||||
$this->trainAtmos -= $damage / 2;
|
||||
$this->trainAtmos = max(0, $this->trainAtmos - $damage / 2);
|
||||
return $this->hp;
|
||||
}
|
||||
|
||||
function continueWar(&$noRice):bool{
|
||||
@@ -79,8 +78,7 @@ class WarUnitCity extends WarUnit{
|
||||
$this->raw['wall'] = Util::round($this->trainAtmos / 10);
|
||||
$this->updatedVar['wall'] = true;
|
||||
|
||||
$this->raw['dead'] += $this->dead;
|
||||
$this->updatedVar['dead'] = true;
|
||||
//NOTE: 전투로 인한 사망자는 여기서 처리하지 않음
|
||||
|
||||
$decWealth = $this->dead / 10;
|
||||
$this->raw['agri'] = max(0, Util::round($this->raw['agri'] - $decWealth));
|
||||
|
||||
@@ -137,7 +137,6 @@ class WarUnitGeneral extends WarUnit{
|
||||
$this->updatedVar['deathnum'] = true;
|
||||
|
||||
$this->addStatExp(1);
|
||||
//TODO: 1패 로그 추가
|
||||
}
|
||||
|
||||
|
||||
@@ -324,13 +323,39 @@ class WarUnitGeneral extends WarUnit{
|
||||
return $this->raw['crew'];
|
||||
}
|
||||
|
||||
function addDex(GameUnitDetail $crewType, float $exp){
|
||||
$armType = $crewType->armType;
|
||||
|
||||
if($armType == GameUnitConst::T_CASTLE){
|
||||
$armType = GameUnitConst::T_SIEGE;
|
||||
}
|
||||
|
||||
if($armType < 0){
|
||||
return;
|
||||
}
|
||||
|
||||
if($armType == GameUnitConst::T_WIZARD) {
|
||||
$exp *= 0.9;
|
||||
}
|
||||
else if($armType == GameUnitConst::T_SIEGE) {
|
||||
$exp *= 0.9;
|
||||
}
|
||||
$exp *= ($this->getComputedTrain() + $this->getComputeAtmos()) / 200;
|
||||
|
||||
$ntype = $armType*10;
|
||||
$dexType = "dex{$ntype}";
|
||||
|
||||
$this->raw[$dexType] += $exp;
|
||||
$this->updatedVar[$dexType] = true;
|
||||
}
|
||||
|
||||
function decreaseHP(int $damage):int{
|
||||
$damage = min($damage, $this->raw['crew']);
|
||||
|
||||
$this->dead += $damage;
|
||||
$this->raw['crew'] -= $damage;
|
||||
|
||||
//TODO: 죽은 만큼 숙련도 변경
|
||||
|
||||
|
||||
return $this->raw['crew'];
|
||||
}
|
||||
@@ -367,7 +392,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
return false;
|
||||
}
|
||||
|
||||
$wound = max(80, $this->raw['injury'] + rand(10, 80));
|
||||
$wound = min(80, $this->raw['injury'] + Util::randRangeInt(10, 80));
|
||||
if($wound < $this->raw['injury']){
|
||||
return false;
|
||||
}
|
||||
@@ -384,7 +409,7 @@ class WarUnitGeneral extends WarUnit{
|
||||
$noRice = false;
|
||||
return false;
|
||||
}
|
||||
if($this->raw['rice'] <= 0){
|
||||
if($this->raw['rice'] <= $this->getHP() / 100){
|
||||
$noRice = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user