특기 획득 구조 변경

This commit is contained in:
2020-04-26 22:31:49 +09:00
parent 2bb6ef8efb
commit 724c7388af
50 changed files with 545 additions and 543 deletions
+4 -5
View File
@@ -2,19 +2,18 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
class None implements iAction{
use \sammo\DefaultAction;
class None extends \sammo\BaseSpecial{
protected $id = 0;
protected $name = '-';
protected $info = '';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 0;
static $type = [
SpecialityConst::DISABLED
SpecialityHelper::DISABLED
];
}
+6 -7
View File
@@ -2,25 +2,24 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use sammo\WarUnitTrigger\che_격노시도;
use sammo\WarUnitTrigger\che_격노발동;
class che_격노 implements iAction{
use \sammo\DefaultAction;
class che_격노 extends \sammo\BaseSpecial{
protected $id = 74;
protected $name = '격노';
protected $info = '[전투] 상대방 필살 및 회피 시도시 일정 확률로 격노(필살) 발동, 공격 시 일정 확률로 진노(1페이즈 추가)';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH,
SpecialityConst::STAT_INTEL
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
+5 -6
View File
@@ -2,24 +2,23 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use sammo\BaseWarUnitTrigger;
use sammo\WarUnitTrigger\WarActivateSkills;
class che_견고 implements iAction{
use \sammo\DefaultAction;
class che_견고 extends \sammo\BaseSpecial{
protected $id = 62;
protected $name = '견고';
protected $info = '[전투] 상대 필살 불가, 상대 계략 시도시 성공 확률 -10%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH
];
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
+6 -7
View File
@@ -2,24 +2,23 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
use \sammo\WarUnitCity;
class che_공성 implements iAction{
use \sammo\DefaultAction;
class che_공성 extends \sammo\BaseSpecial{
protected $id = 53;
protected $name = '공성';
protected $info = '[군사] 차병 계통 징·모병비 -10%<br>[전투] 성벽 공격 시 대미지 +100%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_SIEGE,
SpecialityConst::STAT_STRENGTH | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_SIEGE,
SpecialityConst::STAT_INTEL | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_SIEGE,
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_SIEGE,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_SIEGE,
SpecialityHelper::STAT_INTEL | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_SIEGE,
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+5 -6
View File
@@ -2,22 +2,21 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
class che_궁병 implements iAction{
use \sammo\DefaultAction;
class che_궁병 extends \sammo\BaseSpecial{
protected $id = 51;
protected $name = '궁병';
protected $info = '[군사] 궁병 계통 징·모병비 -10%<br>[전투] 회피 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_ARCHER,
SpecialityConst::STAT_STRENGTH | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_ARCHER
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_ARCHER,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_ARCHER
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+4 -5
View File
@@ -2,21 +2,20 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
class che_귀병 implements iAction{
use \sammo\DefaultAction;
class che_귀병 extends \sammo\BaseSpecial{
protected $id = 40;
protected $name = '귀병';
protected $info = '[군사] 귀병 계통 징·모병비 -10%<br>[전투] 계략 성공 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL | SpecialityConst::ARMY_WIZARD | SpecialityConst::REQ_DEXTERITY
SpecialityHelper::STAT_INTEL | SpecialityHelper::ARMY_WIZARD | SpecialityHelper::REQ_DEXTERITY
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+5 -6
View File
@@ -2,22 +2,21 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
class che_기병 implements iAction{
use \sammo\DefaultAction;
class che_기병 extends \sammo\BaseSpecial{
protected $id = 52;
protected $name = '기병';
protected $info = '[군사] 기병 계통 징·모병비 -10%<br>[전투] 수비 시 대미지 +10%, 공격 시 대미지 +20%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_CAVALRY,
SpecialityConst::STAT_STRENGTH | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_CAVALRY
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_CAVALRY,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_CAVALRY
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+5 -6
View File
@@ -2,24 +2,23 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use \sammo\BaseWarUnitTrigger;
use \sammo\WarUnitTriggerCaller;
use sammo\WarUnitTrigger\WarActivateSkills;
class che_돌격 implements iAction{
use \sammo\DefaultAction;
class che_돌격 extends \sammo\BaseSpecial{
protected $id = 60;
protected $name = '돌격';
protected $info = '[전투] 상대 회피 불가, 공격 시 전투 페이즈 +1, 공격 시 대미지 +10%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
+5 -6
View File
@@ -2,21 +2,20 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_무쌍 implements iAction{
use \sammo\DefaultAction;
class che_무쌍 extends \sammo\BaseSpecial{
protected $id = 61;
protected $name = '무쌍';
protected $info = '[전투] 대미지 +10%, 공격 시 필살 확률 +10%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
+4 -5
View File
@@ -2,7 +2,7 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use \sammo\BaseWarUnitTrigger;
@@ -10,17 +10,16 @@ use \sammo\WarUnitTrigger\WarActivateSkills;
use \sammo\WarUnitTrigger\che_반계시도;
use \sammo\WarUnitTrigger\che_반계발동;
class che_반계 implements iAction{
use \sammo\DefaultAction;
class che_반계 extends \sammo\BaseSpecial{
protected $id = 45;
protected $name = '반계';
protected $info = '[전투] 상대의 계략 성공 확률 -10%p, 상대의 계략을 40% 확률로 되돌림, 반목 성공시 대미지 추가(+60% → +100%)';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
+5 -6
View File
@@ -2,22 +2,21 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\GameUnitConst;
use \sammo\WarUnit;
class che_보병 implements iAction{
use \sammo\DefaultAction;
class che_보병 extends \sammo\BaseSpecial{
protected $id = 50;
protected $name = '보병';
protected $info = '[군사] 보병 계통 징·모병비 -10%<br>[전투] 공격 시 아군 피해 -10%, 수비 시 아군 피해 -20%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_FOOTMAN,
SpecialityConst::STAT_STRENGTH | SpecialityConst::REQ_DEXTERITY | SpecialityConst::ARMY_FOOTMAN
SpecialityHelper::STAT_LEADERSHIP | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_FOOTMAN,
SpecialityHelper::STAT_STRENGTH | SpecialityHelper::REQ_DEXTERITY | SpecialityHelper::ARMY_FOOTMAN
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+4 -5
View File
@@ -2,20 +2,19 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_신산 implements iAction{
use \sammo\DefaultAction;
class che_신산 extends \sammo\BaseSpecial{
protected $id = 41;
protected $name = '신산';
protected $info = '[계략] 화계·탈취·파괴·선동 : 성공률 +10%p<br>[전투] 계략 시도 확률 +20%p, 계략 성공 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
SpecialityHelper::STAT_INTEL,
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+4 -5
View File
@@ -2,20 +2,19 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_신중 implements iAction{
use \sammo\DefaultAction;
class che_신중 extends \sammo\BaseSpecial{
protected $id = 44;
protected $name = '신중';
protected $info = '[전투] 계략 성공 확률 100%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
+5 -6
View File
@@ -2,24 +2,23 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use \sammo\WarUnitTrigger\che_위압시도;
use \sammo\WarUnitTrigger\che_위압발동;
class che_위압 implements iAction{
use \sammo\DefaultAction;
class che_위압 extends \sammo\BaseSpecial{
protected $id = 63;
protected $name = '위압';
protected $info = '[전투] 훈련/사기≥90, 병력≥1,000 일 때 첫 페이즈 위압 발동(적 공격 불가)';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH
];
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
+6 -7
View File
@@ -2,7 +2,7 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use sammo\BaseGeneralTrigger;
use sammo\SpecialityConst;
use sammo\SpecialityHelper;
use \sammo\General;
use \sammo\GeneralTrigger;
use \sammo\GeneralTriggerCaller;
@@ -11,19 +11,18 @@ use sammo\WarUnitTrigger\che_전투치료발동;
use sammo\WarUnitTrigger\che_전투치료시도;
use sammo\WarUnitTriggerCaller;
class che_의술 implements iAction{
use \sammo\DefaultAction;
class che_의술 extends \sammo\BaseSpecial{
protected $id = 73;
protected $name = '의술';
protected $info = '[군사] 매 턴마다 자신(100%)과 소속 도시 장수(적 포함 50%) 부상 회복<br>[전투] 페이즈마다 20% 확률로 치료 발동(아군 피해 1/3 감소)';
static $selectWeightType = SpecialityConst::WEIGHT_PERCENT;
static $selectWeightType = SpecialityHelper::WEIGHT_PERCENT;
static $selectWeight = 2;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH,
SpecialityConst::STAT_INTEL
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getPreTurnExecuteTriggerList(General $general):?GeneralTriggerCaller{
+6 -7
View File
@@ -2,25 +2,24 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
use sammo\WarUnitTriggerCaller;
use \sammo\WarUnitTrigger\che_저격시도;
use \sammo\WarUnitTrigger\che_저격발동;
class che_저격 implements iAction{
use \sammo\DefaultAction;
class che_저격 extends \sammo\BaseSpecial{
protected $id = 70;
protected $name = '저격';
protected $info = '[전투] 전투 개시 시 1/3 확률로 저격 발동';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH,
SpecialityConst::STAT_INTEL
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
+4 -5
View File
@@ -2,20 +2,19 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_집중 implements iAction{
use \sammo\DefaultAction;
class che_집중 extends \sammo\BaseSpecial{
protected $id = 43;
protected $name = '집중';
protected $info = '[전투] 계략 성공 시 대미지 +50%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_INTEL,
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
+6 -7
View File
@@ -2,22 +2,21 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_징병 implements iAction{
use \sammo\DefaultAction;
class che_징병 extends \sammo\BaseSpecial{
protected $id = 72;
protected $name = '징병';
protected $info = '[군사] 징·모병비 -50%, 통솔 순수 능력치 보정 +15%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH,
SpecialityConst::STAT_INTEL
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function onCalcDomestic(string $turnType, string $varType, float $value, $aux=null):float{
+6 -7
View File
@@ -2,22 +2,21 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_척사 implements iAction{
use \sammo\DefaultAction;
class che_척사 extends \sammo\BaseSpecial{
protected $id = 75;
protected $name = '척사';
protected $info = '[전투] 지역·도시 병종 상대로 대미지 +10%, 아군 피해 -10%';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH,
SpecialityConst::STAT_INTEL
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function getWarPowerMultiplier(WarUnit $unit):array{
+6 -7
View File
@@ -2,22 +2,21 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_필살 implements iAction{
use \sammo\DefaultAction;
class che_필살 extends \sammo\BaseSpecial{
protected $id = 71;
protected $name = '필살';
protected $info = '[전투] 필살 확률 +20%p';
static $selectWeightType = SpecialityConst::WEIGHT_NORM;
static $selectWeightType = SpecialityHelper::WEIGHT_NORM;
static $selectWeight = 1;
static $type = [
SpecialityConst::STAT_LEADERSHIP,
SpecialityConst::STAT_STRENGTH,
SpecialityConst::STAT_INTEL
SpecialityHelper::STAT_LEADERSHIP,
SpecialityHelper::STAT_STRENGTH,
SpecialityHelper::STAT_INTEL
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){
+4 -5
View File
@@ -2,20 +2,19 @@
namespace sammo\ActionSpecialWar;
use \sammo\iAction;
use \sammo\General;
use \sammo\SpecialityConst;
use \sammo\SpecialityHelper;
use \sammo\WarUnit;
class che_환술 implements iAction{
use \sammo\DefaultAction;
class che_환술 extends \sammo\BaseSpecial{
protected $id = 42;
protected $name = '환술';
protected $info = '[전투] 계략 성공 확률 +10%p, 계략 성공 시 대미지 +30%';
static $selectWeightType = SpecialityConst::WEIGHT_PERCENT;
static $selectWeightType = SpecialityHelper::WEIGHT_PERCENT;
static $selectWeight = 5;
static $type = [
SpecialityConst::STAT_INTEL,
SpecialityHelper::STAT_INTEL,
];
public function onCalcStat(General $general, string $statName, $value, $aux=null){