재야에서는 국메가 안보내지던 버그 수정
일반장이 국메를 보낼 수 없던 버그 수정 외교 서신 클래스 에러 수정
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
namespace sammo\Engine;
|
||||
|
||||
use \sammo\DB;
|
||||
use \sammo\DiplomacticMessage;
|
||||
use \sammo\DiplomaticMessage;
|
||||
|
||||
//NOTE: A가 B에게 항복, 통합 서신을 보냈을 때 통합 후 대상이 A이므로 A가 주체임.
|
||||
class Diplomacy{
|
||||
@@ -73,8 +73,8 @@ class Diplomacy{
|
||||
//항복시 : 양국 다 외교제한이 지나지 않았어야함. 국력, 장수수가 적절해야함. 인접한 국가여야함. 서로 교전중이어선 안됨.
|
||||
// 송신자가 선포, 전쟁중이어선 안됨. 송신자가 C국과 불가침인데 수신자가 C국과 전쟁중이면 안됨
|
||||
|
||||
protected function checkValidNation(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkValidNation(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
@@ -83,39 +83,39 @@ class Diplomacy{
|
||||
}
|
||||
|
||||
if($this->srcNation['level'] == 0 || $this->destNation['level'] == 0){
|
||||
return [DiplomacticMessage::DECLINED, '방랑군과 외교룰 수행할 수 없습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '방랑군과 외교룰 수행할 수 없습니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkNotWar(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkNotWar(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if($this->srcToDestDiplomacy['state'] == 0 || $this->srcToDestDiplomacy['state'] == 0
|
||||
||$this->destToSrcDiplomacy['state'] == 1 || $this->destToSrcDiplomacy['state'] == 1){
|
||||
return [DiplomacticMessage::DECLINED, '상대국과 선포, 전쟁 중입니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국과 선포, 전쟁 중입니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkNonAggressionTreaty(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkNonAggressionTreaty(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if($this->srcToDestDiplomacy['state'] !== 7 || $this->destToSrcDiplomacy['state'] !== 7){
|
||||
return [DiplomacticMessage::DECLINED, '상대국과 불가침 중이 아닙니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국과 불가침 중이 아닙니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkInWar(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkInWar(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
@@ -124,64 +124,64 @@ class Diplomacy{
|
||||
return $prev;
|
||||
}
|
||||
|
||||
return [DiplomacticMessage::DECLINED, '상대국과 선포, 전쟁 중이 아닙니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국과 선포, 전쟁 중이 아닙니다.'];
|
||||
}
|
||||
|
||||
protected function checkDiplomacyLimit(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkDiplomacyLimit(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if($this->destNation['surlimit'] > 0){
|
||||
return [DiplomacticMessage::DECLINED, '본국의 외교 기한이 남아있습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '본국의 외교 기한이 남아있습니다.'];
|
||||
}
|
||||
|
||||
if($this->srcNation['surlimit'] > 0){
|
||||
return [DiplomacticMessage::DECLINED, '상대국의 외교 기한이 남아있습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국의 외교 기한이 남아있습니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkStrictlyAdjacent(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkStrictlyAdjacent(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if(!\sammo\isClose($this->srcNation['nation'], $this->destNation['nation'], false)){
|
||||
return [DiplomacticMessage::DECLINED, '상대국의 도시들과 보급선이 이어지지 않았습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국의 도시들과 보급선이 이어지지 않았습니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkAdjacent(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkAdjacent(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if(!\sammo\isClose($this->srcNation['nation'], $this->destNation['nation'], true)){
|
||||
return [DiplomacticMessage::DECLINED, '상대국의 도시와 인접하지 않았습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국의 도시와 인접하지 않았습니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkAlreadyMerging(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkAlreadyMerging(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if((3 <= $this->srcToDestDiplomacy['state'] && $this->srcToDestDiplomacy['state'] <= 6)
|
||||
||(3 <= $this->destToSrcDiplomacy['state'] && $this->destToSrcDiplomacy['state'] <= 6)){
|
||||
return [DiplomacticMessage::DECLINED, '상대국과 합병 중입니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국과 합병 중입니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkSrcNationHasNeutralDiplomacy(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkSrcNationHasNeutralDiplomacy(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
@@ -195,18 +195,18 @@ class Diplomacy{
|
||||
|
||||
foreach($states as $state){
|
||||
if($state == 0 || $state == 1){
|
||||
return [DiplomacticMessage::DECLINED, '상대국이 전쟁 중입니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국이 전쟁 중입니다.'];
|
||||
}
|
||||
if(3 <= $state && $state <= 6){
|
||||
return [DiplomacticMessage::DECLINED, '상대국이 합병 중입니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국이 합병 중입니다.'];
|
||||
}
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkContradictoryDiplomacy(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkContradictoryDiplomacy(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
@@ -221,26 +221,26 @@ class Diplomacy{
|
||||
);
|
||||
|
||||
if($cnt > 0){
|
||||
return [DiplomacticMessage::DECLINED, '상대국이 본국의 교전국과 불가침중입니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국이 본국의 교전국과 불가침중입니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkMorePower(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkMorePower(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
if($this->srcNation['power'] < $this->destNation['power'] * 3){
|
||||
return [DiplomacticMessage::DECLINED, '상대국과 국력차가 크지 않습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '상대국과 국력차가 크지 않습니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}
|
||||
|
||||
protected function checkMergePower(array $prev = [DiplomacticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomacticMessage::ACCEPTED){
|
||||
protected function checkMergePower(array $prev = [DiplomaticMessage::ACCEPTED, '']){
|
||||
if($prev[0] !== DiplomaticMessage::ACCEPTED){
|
||||
return $prev;
|
||||
}
|
||||
|
||||
@@ -257,13 +257,13 @@ class Diplomacy{
|
||||
$mergedPower = ($this->srcNation['power'] + $this->destNation['power'])/2;
|
||||
$ZPower = ($mergedPower - $powerAvg) / $powerStddev;
|
||||
if($ZPower >= -0.25){
|
||||
return [DiplomacticMessage::DECLINED, '두 국가의 국력 평균이 상위 60% 보다 높습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '두 국가의 국력 평균이 상위 60% 보다 높습니다.'];
|
||||
}
|
||||
|
||||
$mergedGeneral = ($this->srcNation['gennum'] + $this->destNation['gennum'])/2;
|
||||
$ZGeneral = ($mergedGeneral - $genAvg) / $genStddev;
|
||||
if($ZGeneral >= -0.67){
|
||||
return [DiplomacticMessage::DECLINED, '두 국가의 장수수 평균이 상위 75% 보다 높습니다.'];
|
||||
return [DiplomaticMessage::DECLINED, '두 국가의 장수수 평균이 상위 75% 보다 높습니다.'];
|
||||
}
|
||||
|
||||
return $prev;
|
||||
@@ -275,7 +275,7 @@ class Diplomacy{
|
||||
$chk = $this->checkAlreadyMerging($chk);
|
||||
|
||||
list($result, $reason) = $chk;
|
||||
if($result !== DiplomacticMessage::ACCEPTED){
|
||||
if($result !== DiplomaticMessage::ACCEPTED){
|
||||
return $chk;
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ class Diplomacy{
|
||||
$chk = $this->checkNonAggressionTreaty($chk);
|
||||
|
||||
list($result, $reason) = $chk;
|
||||
if($result !== DiplomacticMessage::ACCEPTED){
|
||||
if($result !== DiplomaticMessage::ACCEPTED){
|
||||
return $chk;
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ class Diplomacy{
|
||||
$chk = $this->checkInWar($chk);
|
||||
|
||||
list($result, $reason) = $chk;
|
||||
if($result !== DiplomacticMessage::ACCEPTED){
|
||||
if($result !== DiplomaticMessage::ACCEPTED){
|
||||
return $chk;
|
||||
}
|
||||
|
||||
@@ -345,7 +345,7 @@ class Diplomacy{
|
||||
$chk = $this->checkMergePower($chk);
|
||||
|
||||
list($result, $reason) = $chk;
|
||||
if($result !== DiplomacticMessage::ACCEPTED){
|
||||
if($result !== DiplomaticMessage::ACCEPTED){
|
||||
return $chk;
|
||||
}
|
||||
|
||||
@@ -378,7 +378,7 @@ class Diplomacy{
|
||||
$chk = $this->checkMorePower($chk);
|
||||
|
||||
list($result, $reason) = $chk;
|
||||
if($result !== DiplomacticMessage::ACCEPTED){
|
||||
if($result !== DiplomaticMessage::ACCEPTED){
|
||||
return $chk;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user