전투 특기 클래스 추가,

This commit is contained in:
2018-09-17 03:31:36 +09:00
parent 6eb67b1a3c
commit b79045eddb
34 changed files with 487 additions and 41 deletions
+14 -2
View File
@@ -101,12 +101,24 @@ class GameConstBase
];
/** @var array 기본 국가 성향 */
public static $neutralNationType = 'che_중립';
/** @var array 기본 내정 특기 */
public static $defaultSpecialDomestic = 'None';
/** @var array 선택 가능한 장수 내정 특기 */
public static $availableSpecialDomestic = [
'che_경작', 'che_상재', 'che_발명', 'che_축성', 'che_수비', 'che_통찰', 'che_인덕', 'che_귀모',
];
/** @var array 기본 특기(공용) */
public static $defaultSpecial = 'None';
/** @var array 기본 전투 특기 */
public static $defaultSpecialWar = 'None';
/** @var array 선택 가능한 장수 내정 특기 */
public static $availableSpecialWar = [
'che_귀병', 'che_신산', 'che_환술', 'che_집중', 'che_신중', 'che_반계',
'che_보병', 'che_궁병', 'che_기병', 'che_공성',
'che_돌격', 'che_무쌍', 'che_견고', 'che_위압',
'che_저격', 'che_필살', 'che_징병', 'che_의술', 'che_격노', 'che_척사',
];
/** @var array 기본 성향(공용) */
public static $neutralPersonality = 'None';
+2
View File
@@ -52,6 +52,8 @@ class General implements iActionTrigger{
$specialDomesticClass = getGeneralSpecialDomesticClass($raw['special']);
$this->specialDomesticObj = new $specialDomesticClass;
$specialWarClass = getGeneralSpecialWarClass($raw['special']);
$this->specialWarObj = new $specialWarClass;
//TODO: $specialWarClass 설정
$personalityClass = getPersonalityClass($raw['personal']);
+2 -2
View File
@@ -62,7 +62,7 @@ class NPC{
'intel'=>$intel
];
$this->charDomestic = \sammo\GameConst::$defaultSpecial;
$this->charDomestic = \sammo\GameConst::$defaultSpecialDomestic;
if($char === '랜덤전특'){
$this->charWar = \sammo\SpecialityConst::pickSpecialWar($general);
@@ -159,7 +159,7 @@ class NPC{
if($isFictionMode){
$charWar = 0;
$charDomestic = GameConst::$defaultSpecial;
$charDomestic = GameConst::$defaultSpecialDomestic;
}
$name = 'ⓝ'.$this->name;
@@ -21,7 +21,7 @@ class che_귀모 implements iActionTrigger{
public function onCalcDomestic(string $turnType, string $varType, float $value):float{
if($turnType == '계략'){
if($varType == 'success') return $value + 0.1;
if($varType == 'success') return $value + 0.2;
}
@@ -0,0 +1,21 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_격노 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 74;
static $name = '격노';
static $info = '[전투] 상대방 필살 및 회피 시도시 일정 확률로 격노(필살) 발동, 공격 시 일정 확률로 진노(1페이즈 추가)';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER,
SpecialityConst::STAT_INTEL
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_견고 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 62;
static $name = '견고';
static $info = '[전투] 상대 필살 불가, 상대 계략 시도시 성공 확률 -10%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER
];
}
@@ -0,0 +1,21 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_공성 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 53;
static $name = '공성';
static $info = '[군사] 차병 계통 징·모병비 -10%<br>[전투] 성벽 공격 시 대미지 +100%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_SIEGE,
SpecialityConst::STAT_POWER | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_SIEGE,
SpecialityConst::STAT_INTEL | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_SIEGE,
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_궁병 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 51;
static $name = '궁병';
static $info = '[군사] 궁병 계통 징·모병비 -10%<br>[전투] 회피 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_ARCHER,
SpecialityConst::STAT_POWER | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_ARCHER
];
}
@@ -0,0 +1,19 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_귀병 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 40;
static $name = '귀병';
static $info = '[군사] 귀병 계통 징·모병비 -10%<br>[전투] 계략 성공 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL | SpecialityConst::ARMY_WIZARD | SpecialityConst::REQ_DEXTERITY
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_기병 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 52;
static $name = '기병';
static $info = '[군사] 기병 계통 징·모병비 -10%<br>[전투] 수비 시 대미지 +10%, 공격 시 대미지 +20%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_CAVALRY,
SpecialityConst::STAT_POWER | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_CAVALRY
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_돌격 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 60;
static $name = '돌격';
static $info = '[전투] 상대 회피 불가, 공격 시 전투 페이즈 +1, 공격 시 대미지 +10%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_무쌍 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 61;
static $name = '무쌍';
static $info = '[전투] 대미지 +10%, 공격 시 필살 확률 +10%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER
];
}
@@ -0,0 +1,19 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_신중 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 45;
static $name = '반계';
static $info = '[전투] 상대의 계략을 30% 확률로 되돌림, 반목 성공시 대미지 추가(+60% → +100%)';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_보병 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 50;
static $name = '보병';
static $info = '[군사] 보병 계통 징·모병비 -10%<br>[전투] 공격 시 아군 피해 -10%, 수비 시 아군 피해 -20%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_FOOTMAN,
SpecialityConst::STAT_POWER | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_FOOTMAN
];
}
@@ -0,0 +1,27 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_신산 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 41;
static $name = '신산';
static $info = '[계략] 화계·탈취·파괴·선동 : 성공률 +10%p<br>[전투] 계략 시도 확률 +20%p, 계략 성공 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
];
public function onCalcDomestic(string $turnType, string $varType, float $value):float{
if($turnType == '계략'){
if($varType == 'success') return $value + 0.1;
}
return $value;
}
}
@@ -0,0 +1,19 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_신중 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 44;
static $name = '신중';
static $info = '[전투] 계략 성공 확률 100%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
];
}
@@ -0,0 +1,20 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_위압 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 63;
static $name = '위압';
static $info = '[전투] 훈련/사기≥90, 병력≥1,000 일 때 첫 페이즈 위압 발동(적 공격 불가)';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER
];
}
@@ -0,0 +1,25 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_의술 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 73;
static $name = '의술';
static $info = '[군사] 매 턴마다 자신(100%)과 소속 도시 장수(적 포함 50%) 부상 회복<br>[전투] 페이즈마다 20% 확률로 치료 발동(아군 피해 1/3 감소)';
static $selectWeightType = SpecialityConst::WEIGHT_PERCENT;
static $selectWeight = 2;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER,
SpecialityConst::STAT_INTEL
];
public function onPreTurnExecute(General $general):array{
return [];
}
}
@@ -0,0 +1,21 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_저격 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 70;
static $name = '저격';
static $info = '[전투] 전투 개시 시 1/3 확률로 저격 발동';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER,
SpecialityConst::STAT_INTEL
];
}
@@ -0,0 +1,19 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_집중 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 43;
static $name = '집중';
static $info = '[전투] 계략 성공 시 대미지 +50%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
];
}
@@ -0,0 +1,21 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_징병 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 72;
static $name = '징병';
static $info = '[군사] 징·모병비 -50%, 통솔 순수 능력치 보정 +15%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER,
SpecialityConst::STAT_INTEL
];
}
@@ -0,0 +1,21 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_척사 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 75;
static $name = '척사';
static $info = '[전투] 지역·도시 병종 상대로 대미지 +10%, 아군 피해 -10%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER,
SpecialityConst::STAT_INTEL
];
}
@@ -0,0 +1,21 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_필살 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 71;
static $name = '필살';
static $info = '[전투] 필살 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_POWER,
SpecialityConst::STAT_INTEL
];
}
@@ -0,0 +1,19 @@
<?php
namespace sammo\TriggerSpecialWar;
use \sammo\iActionTrigger;
use \sammo\General;
use \sammo\SpecialityConst;
class che_환술 implements iActionTrigger{
use \sammo\DefaultActionTrigger;
static $id = 42;
static $name = '환술';
static $info = '[전투] 계략 성공 확률 +10%p, 계략 성공 시 대미지 +30%';
static $selectWeightType = SpecialityConst::WEIGHT_PERCENT;
static $selectWeight = 5;
static $type = [
SpecialityConst::STAT_INTEL,
];
}
+1 -1
View File
@@ -111,7 +111,7 @@ class WarUnit{
}
function getSpecialDomestic():string{
return GameConst::$defaultSpecial;
return GameConst::$defaultSpecialDomestic;
}
function getSpecialWar():int{