forked from devsam/core
전투 버그 수정 중
This commit is contained in:
+3
-3
@@ -121,7 +121,6 @@ for($i=1; $i <= $count; $i++) {
|
||||
<td align=center>접률</td>
|
||||
<td align=center>단접</td>
|
||||
<td align=center>국력</td>
|
||||
<td align=center>단합</td>
|
||||
<td align=center>장수</td>
|
||||
<td align=center>속령</td>
|
||||
<td align=center>기술</td>
|
||||
@@ -213,6 +212,7 @@ for($i=0; $i < $nationCount; $i++) {
|
||||
$query = "select COUNT(*) as cnt,
|
||||
SUM(pop) as pop, SUM(pop2) as pop2,
|
||||
ROUND(SUM(pop)/SUM(pop2)*100, 2) as rate,
|
||||
trust,
|
||||
ROUND(SUM(agri)/SUM(agri2)*100, 2) as agri,
|
||||
ROUND(SUM(comm)/SUM(comm2)*100, 2) as comm,
|
||||
ROUND(SUM(secu)/SUM(secu2)*100, 2) as secu,
|
||||
@@ -227,7 +227,7 @@ for($i=0; $i < $nationCount; $i++) {
|
||||
<td align=center style=background-color:{$nation['color']};color:".newColor($nation['color']).";>{$nation['name']}</td>
|
||||
<td align=center> {$nation['connect']} </td>
|
||||
<td align=center> {$nation['con']} </td>
|
||||
<td align=center> {$nation['strength']} </td>
|
||||
<td align=center> {$nation['power']} </td>
|
||||
<td align=center> {$gen['cnt']} </td>
|
||||
<td align=center> {$city['cnt']} </td>
|
||||
<td align=center> {$nation['tech']} </td>
|
||||
@@ -247,7 +247,7 @@ for($i=0; $i < $nationCount; $i++) {
|
||||
<td align=center> {$nation['dex40']} </td>
|
||||
<td align=center> {$gen['crew']}/{$gen['leadership']}00 </td>
|
||||
<td align=center> {$city['pop']}/{$city['pop2']} </td>
|
||||
<td align=center> ".round($city['trust'],1)."% </td>
|
||||
<td align=center> ".round($city['pop']/$city['pop2']*100,1)."% </td>
|
||||
<td align=center> {$city['agri']}% </td>
|
||||
<td align=center> {$city['comm']}% </td>
|
||||
<td align=center> {$city['secu']}% </td>
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@ function processWar(General $attackerGeneral, array $rawAttackerNation, array $r
|
||||
'level'=>0,
|
||||
'gold'=>0,
|
||||
'rice'=>2000,
|
||||
'type'=>0,
|
||||
'type'=>GameConst::$neutralNationType,
|
||||
'tech'=>0,
|
||||
'gennum'=>1
|
||||
];
|
||||
@@ -108,7 +108,7 @@ function processWar(General $attackerGeneral, array $rawAttackerNation, array $r
|
||||
'dead' => $db->sqleval('dead + %i', $totalDead * 0.6)
|
||||
], 'city=%i', $rawDefenderCity['city']);
|
||||
|
||||
$attackerIncTech = buildNationTypeClass($rawAttackerNation['type'])->onCalacDomestic('기술', 'score', $attacker->getDead() * 0.01);
|
||||
$attackerIncTech = buildNationTypeClass($rawAttackerNation['type'])->onCalcDomestic('기술', 'score', $attacker->getDead() * 0.01);
|
||||
$defenderIncTech = buildNationTypeClass($rawDefenderNation['type'])->onCalcDomestic('기술', 'score', $attacker->getKilled() * 0.01);
|
||||
|
||||
$attackerGenCnt = $rawAttackerNation['gennum'];
|
||||
|
||||
@@ -6,6 +6,7 @@ use \sammo\SpecialityConst;
|
||||
use \sammo\WarUnit;
|
||||
use \sammo\BaseWarUnitTrigger;
|
||||
use \sammo\WarUnitTriggerCaller;
|
||||
use sammo\WarUnitTrigger\WarActivateSkills;
|
||||
|
||||
class che_돌격 implements iAction{
|
||||
use \sammo\DefaultAction;
|
||||
|
||||
@@ -60,7 +60,7 @@ abstract class BaseWarUnitTrigger extends ObjectTrigger{
|
||||
return $env;
|
||||
}
|
||||
|
||||
abstract protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):void;
|
||||
abstract protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool;
|
||||
|
||||
public function processConsumableItem():bool{
|
||||
if(!($this->raiseType & static::TYPE_ITEM)){
|
||||
|
||||
@@ -85,10 +85,10 @@ class che_증여 extends Command\GeneralCommand{
|
||||
ConstraintHelper::FriendlyDestGeneral()
|
||||
];
|
||||
if($this->arg['isGold']){
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralGold(1);
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralGold(GameConst::$generalMinimumGold);
|
||||
}
|
||||
else{
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralRice(1);
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralRice(GameConst::$generalMinimumRice);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -121,7 +121,7 @@ class che_증여 extends Command\GeneralCommand{
|
||||
$resName = $isGold?'금':'쌀';
|
||||
$destGeneral = $this->destGeneralObj;
|
||||
|
||||
$amount = Util::valueFit($amount, 0, $general->getVar($resKey));
|
||||
$amount = Util::valueFit($amount, 0, $general->getVar($resKey) - ($isGold?GameConst::$generalMinimumGold:GameConst::$generalMinimumRice));
|
||||
$amountText = number_format($amount, 0);
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
@@ -128,7 +128,8 @@ class che_출병 extends Command\GeneralCommand{
|
||||
$general->applyDB($db);
|
||||
|
||||
//TODO: 장기적으로 통합해야함
|
||||
processWar($general, $general->getStaticNation(), $this->destCity);
|
||||
$attackerNation = $db->queryFirstRow('SELECT nation, name, color, type, level, capital, tech from nation WHERE nation = %i', $attackerNationID);
|
||||
processWar($general, $attackerNation, $this->destCity);
|
||||
|
||||
tryUniqueItemLottery($general);
|
||||
$general->applyDB($db);
|
||||
|
||||
@@ -65,10 +65,10 @@ class che_헌납 extends Command\GeneralCommand{
|
||||
ConstraintHelper::SuppliedCity(),
|
||||
];
|
||||
if($this->arg['isGold']){
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralGold(1);
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralGold(GameConst::$generalMinimumGold);
|
||||
}
|
||||
else{
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralRice(1);
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralRice(GameConst::$generalMinimumRice);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ class che_몰수 extends Command\NationCommand{
|
||||
$resName = $isGold?'금':'쌀';
|
||||
$destGeneral = $this->destGeneralObj;
|
||||
|
||||
$amount = Util::valueFit($amount, 0, $general->getVar[$resKey]);
|
||||
$amount = Util::valueFit($amount, 0, ($general->getVar[$resKey]- $isGold?GameConst::$generalMinimumGold:GameConst::$generalMinimumRice));
|
||||
$amountText = number_format($amount, 0);
|
||||
|
||||
if($destGeneral->getVar('npc') >= 2 && Util::randBool(0.01)){
|
||||
|
||||
@@ -83,7 +83,7 @@ class che_포상 extends Command\NationCommand{
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqNationGold(1);
|
||||
}
|
||||
else{
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqGeneralRice(1+GameConst::$baserice);
|
||||
$this->runnableConstraints[] = ConstraintHelper::ReqNationRice(1+GameConst::$baserice);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ class che_포상 extends Command\NationCommand{
|
||||
$resName = $isGold?'금':'쌀';
|
||||
$destGeneral = $this->destGeneralObj;
|
||||
|
||||
$amount = Util::valueFit($amount, 0, $nation[$resKey]);
|
||||
$amount = Util::valueFit($amount, 0, $nation[$resKey] - ($isGold?GameConst::$basegold:GameConst::$baserice));
|
||||
$amountText = number_format($amount, 0);
|
||||
|
||||
$logger = $general->getLogger();
|
||||
|
||||
@@ -9,6 +9,7 @@ class DummyGeneral extends General{
|
||||
'city'=>0,
|
||||
'nation'=>0,
|
||||
'level'=>0,
|
||||
'crewtype'=>-1
|
||||
];
|
||||
|
||||
$this->raw = $raw;
|
||||
@@ -20,6 +21,14 @@ class DummyGeneral extends General{
|
||||
}
|
||||
}
|
||||
|
||||
public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
|
||||
return new WarUnitTriggerCaller();
|
||||
}
|
||||
|
||||
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
|
||||
return new WarUnitTriggerCaller();
|
||||
}
|
||||
|
||||
function applyDB($db):bool{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -98,6 +98,9 @@ class GameConstBase
|
||||
/** @var int 시작시 쌀 */
|
||||
public static $defaultRice = 1000;
|
||||
|
||||
public static $generalMinimumGold = 0;
|
||||
public static $generalMinimumRice = 500;
|
||||
|
||||
/** @var int 최대 턴 */
|
||||
public static $maxTurn = 30;
|
||||
public static $maxChiefTurn = 12;
|
||||
|
||||
@@ -589,9 +589,6 @@ class General implements iAction{
|
||||
$caller->merge($iObj->getBattleInitSkillTriggerList($unit));
|
||||
}
|
||||
|
||||
if($caller->isEmpty()){
|
||||
return null;
|
||||
}
|
||||
return $caller;
|
||||
}
|
||||
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
|
||||
@@ -619,9 +616,6 @@ class General implements iAction{
|
||||
$caller->merge($iObj->getBattlePhaseSkillTriggerList($unit));
|
||||
}
|
||||
|
||||
if($caller->isEmpty()){
|
||||
return null;
|
||||
}
|
||||
return $caller;
|
||||
}
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ class GeneralAI{
|
||||
}
|
||||
|
||||
$commandList['che_물자조달'] = (
|
||||
(GameConst::$minNationalGold + GameConst::$minNationalRice + 10000) /
|
||||
(GameConst::$minNationalGold + GameConst::$minNationalRice + 24*5*$env['develcost']) /
|
||||
Util::valueFit($nation['gold'] + $nation['rice'], (GameConst::$defaultGold + GameConst::$defaultRice)/2)
|
||||
) * 10;
|
||||
|
||||
@@ -1435,7 +1435,7 @@ class GeneralAI{
|
||||
return null;
|
||||
}
|
||||
|
||||
$frontCities = $db->query('SELECT city, front, officer4 FROM city WHERE nation=%i AND front > 0 AND supply = 1');
|
||||
$frontCities = $db->query('SELECT city, front, officer4 FROM city WHERE nation=%i AND front > 0 AND supply = 1', $nationID);
|
||||
|
||||
if(!$frontCities){
|
||||
//접경이 아직 없음
|
||||
|
||||
@@ -138,7 +138,7 @@ class WarUnit{
|
||||
}
|
||||
|
||||
function getLogger():ActionLogger{
|
||||
return $this->general->logger;
|
||||
return $this->getGeneral()->getLogger();
|
||||
}
|
||||
|
||||
function getKilled():int{
|
||||
@@ -219,7 +219,7 @@ class WarUnit{
|
||||
|
||||
$myAtt = $this->getComputedAttack();
|
||||
$opDef = $oppose->getComputedDefence();
|
||||
// 감소할 병사 수
|
||||
// 감소할 병사
|
||||
$warPower = GameConst::$armperphase + $myAtt - $opDef;
|
||||
$opposeWarPowerMultiply = 1.0;
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ class WarUnitCity extends WarUnit{
|
||||
$general->setVar('city', $raw['city']);
|
||||
$general->setVar('nation', $raw['nation']);
|
||||
$general->initLogger($year, $month);
|
||||
$this->general = $general;
|
||||
$this->raw = $raw;
|
||||
$this->rawNation = $rawNation;
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ use sammo\Util;
|
||||
use sammo\ObjectTrigger;
|
||||
|
||||
class WarActivateSkills extends BaseWarUnitTrigger{
|
||||
protected $priority = ObjectTrigger::PRIORITY_INIT;
|
||||
protected $priority = ObjectTrigger::PRIORITY_BEGIN;
|
||||
|
||||
protected $isSelf;
|
||||
protected $activeSkills;
|
||||
|
||||
@@ -6,6 +6,7 @@ use sammo\WarUnitCity;
|
||||
use sammo\WarUnit;
|
||||
use sammo\GameUnitDetail;
|
||||
use sammo\ObjectTrigger;
|
||||
use sammo\Util;
|
||||
|
||||
class che_필살시도 extends BaseWarUnitTrigger{
|
||||
protected $priority = ObjectTrigger::PRIORITY_PRE + 100;
|
||||
@@ -25,7 +26,7 @@ class che_필살시도 extends BaseWarUnitTrigger{
|
||||
return true;
|
||||
}
|
||||
|
||||
$this->activateSkill('특수', '필살시도', '필살');
|
||||
$self->activateSkill('특수', '필살시도', '필살');
|
||||
|
||||
|
||||
return true;
|
||||
|
||||
@@ -438,6 +438,9 @@ class Util extends \utilphp\util
|
||||
*/
|
||||
public static function valueFit($value, $min = null, $max = null)
|
||||
{
|
||||
if($max !== null && $min !== null && $max < $min){
|
||||
return $min;
|
||||
}
|
||||
if ($min !== null && $value < $min) {
|
||||
return $min;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user