game: 반계도구 제거, 도구 밸런스 조정
This commit is contained in:
+3
-1
@@ -2415,7 +2415,9 @@ function SabotageInjury(array $cityGeneralList, string $reason): int
|
||||
|
||||
foreach ($cityGeneralList as $general) {
|
||||
/** @var General $general */
|
||||
if (!Util::randBool(0.3)) {
|
||||
$injuryProb = 0.3;
|
||||
$injuryProb = $general->onCalcStat($general, 'injuryProb', $injuryProb);
|
||||
if (!Util::randBool($injuryProb)) {
|
||||
continue;
|
||||
}
|
||||
$general->getLogger()->pushGeneralActionLog($text);
|
||||
|
||||
@@ -3,17 +3,20 @@ namespace sammo\ActionItem;
|
||||
use \sammo\iAction;
|
||||
use \sammo\General;
|
||||
|
||||
class che_회피저지_노군입산부 extends \sammo\BaseItem{
|
||||
class che_간파_노군입산부 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '노군입산부';
|
||||
protected $name = '노군입산부(회피저지)';
|
||||
protected $info = '[전투] 상대 회피 확률 -15%p';
|
||||
protected $name = '노군입산부(간파)';
|
||||
protected $info = '[전투] 상대 회피 확률 -30%p, 상대 필살 확률 -10%p';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function onCalcOpposeStat(General $general, string $statName, $value, $aux=null){
|
||||
if($statName === 'warAvoidRatio'){
|
||||
return $value - 0.15;
|
||||
return $value - 0.30;
|
||||
}
|
||||
if($statName === 'warCriticalRatio'){
|
||||
return $value - 0.10;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
@@ -12,15 +12,10 @@ class che_격노_구정신단경 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '구정신단경';
|
||||
protected $name = '구정신단경(격노)';
|
||||
protected $info = '[전투] 상대방 필살 시 격노(필살) 발동, 회피 시도시 25% 확률로 격노 발동, 공격 시 일정 확률로 진노(1페이즈 추가), 격노마다 대미지 20% 추가 중첩';
|
||||
protected $info = '[전투] 상대방 필살 시 격노(필살) 발동, 회피 시도시 25% 확률로 격노 발동, 공격 시 일정 확률로 진노(1페이즈 추가)';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function getWarPowerMultiplier(WarUnit $unit):array{
|
||||
$activatedCnt = $unit->hasActivatedSkillOnLog('격노');
|
||||
return [1 + 0.2*$activatedCnt, 1];
|
||||
}
|
||||
|
||||
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
|
||||
return new WarUnitTriggerCaller(
|
||||
new che_격노시도($unit, che_격노시도::TYPE_ITEM),
|
||||
|
||||
@@ -16,6 +16,11 @@ class che_농성_위공자병법 extends \sammo\BaseItem{
|
||||
if($statName === 'sabotageDefence'){
|
||||
return $value + 0.3;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function onCalcOpposeStat(General $general, string $statName, $value, $aux = null)
|
||||
{
|
||||
if($statName === 'warMagicTrialProb'){
|
||||
return $value - 0.1;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,11 @@ class che_농성_주서음부 extends \sammo\BaseItem{
|
||||
if($statName === 'sabotageDefence'){
|
||||
return $value + 0.3;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function onCalcOpposeStat(General $general, string $statName, $value, $aux = null)
|
||||
{
|
||||
if($statName === 'warMagicTrialProb'){
|
||||
return $value - 0.1;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ class che_능력치_무력_두강주 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '두강주';
|
||||
protected $name = '두강주(무력)';
|
||||
protected $info = '[능력치] 무력 보정 +5 + (5년마다 +1)';
|
||||
protected $info = '[능력치] 무력 +5 +(5년마다 +1)';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class che_능력치_지력_이강주 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '이강주';
|
||||
protected $name = '이강주(지력)';
|
||||
protected $info = '[능력치] 지력 보정 +5 + (5년마다 +1)';
|
||||
protected $info = '[능력치] 지력 +5 +(5년마다 +1)';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ class che_능력치_통솔_보령압주 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '보령압주';
|
||||
protected $name = '보령압주(통솔)';
|
||||
protected $info = '[능력치] 통솔 보정 +5 + (5년마다 +1)';
|
||||
protected $info = '[능력치] 통솔 +5 +(5년마다 +1)';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
|
||||
@@ -21,6 +21,14 @@ class che_부적_태현청생부 extends \sammo\BaseItem
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux = null)
|
||||
{
|
||||
if($statName === 'injuryProb'){
|
||||
return $value -= 1;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
public function getBattleInitSkillTriggerList(WarUnit $unit): ?WarUnitTriggerCaller
|
||||
{
|
||||
return new WarUnitTriggerCaller(
|
||||
|
||||
@@ -11,13 +11,13 @@ class che_약탈_옥벽 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '옥벽';
|
||||
protected $name = '옥벽(약탈)';
|
||||
protected $info = '[전투] 새로운 상대와 전투 시 10% 확률로 상대 금, 쌀 10% 약탈';
|
||||
protected $info = '[전투] 새로운 상대와 전투 시 20% 확률로 상대 금, 쌀 10% 약탈';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
|
||||
return new WarUnitTriggerCaller(
|
||||
new che_약탈시도($unit, che_약탈시도::TYPE_ITEM, 0.1, 0.1),
|
||||
new che_약탈시도($unit, che_약탈시도::TYPE_ITEM, 0.2, 0.1),
|
||||
new che_약탈발동($unit, che_약탈발동::TYPE_ITEM)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,21 +2,27 @@
|
||||
namespace sammo\ActionItem;
|
||||
|
||||
use sammo\BaseWarUnitTrigger;
|
||||
use sammo\Util;
|
||||
use sammo\WarUnit;
|
||||
use sammo\WarUnitTrigger\che_저지발동;
|
||||
use sammo\WarUnitTrigger\WarActivateSkills;
|
||||
use sammo\WarUnitTriggerCaller;
|
||||
|
||||
class che_저지_삼황내문 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '삼황내문';
|
||||
protected $name = '삼황내문(저지)';
|
||||
protected $info = '[전투] 수비 시 저지';
|
||||
protected $info = '[전투] 수비 시 첫 페이즈 저지, 50% 확률로 2 페이즈 저지';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{
|
||||
if($unit->getPhase() != 0){
|
||||
if($unit->isAttacker()){
|
||||
return null;
|
||||
}
|
||||
if($unit->getPhase() >= 2){
|
||||
return null;
|
||||
}
|
||||
if($unit->getPhase() == 1 && Util::randBool(0.5)){
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,17 +8,14 @@ class che_집중_전국책 extends \sammo\BaseItem
|
||||
{
|
||||
protected $rawName = '전국책';
|
||||
protected $name = '전국책(집중)';
|
||||
protected $info = '[전투] 계략 성공 시 대미지 +50%, 공격 시 페이즈 -1';
|
||||
protected $info = '[전투] 계략 성공 시 대미지 +30%';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux = null)
|
||||
{
|
||||
if ($statName === 'initWarPhase') {
|
||||
return $value - 1;
|
||||
}
|
||||
if ($statName === 'warMagicSuccessDamage') {
|
||||
return $value * 1.5;
|
||||
return $value * 1.3;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ class che_징병_낙주 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '낙주';
|
||||
protected $name = '낙주(징병)';
|
||||
protected $info = '[군사] 징·모병비 -50%, 통솔 순수 능력치 보정 +25%';
|
||||
protected $info = '[군사] 징·모병비 -50%, 통솔 순수 능력치 보정 +15%';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
@@ -23,7 +23,7 @@ class che_징병_낙주 extends \sammo\BaseItem{
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if($statName === 'leadership'){
|
||||
return $value + $general->getVar('leadership') * 0.25;
|
||||
return $value + $general->getVar('leadership') * 0.15;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@ class che_필살_둔갑천서 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '둔갑천서';
|
||||
protected $name = '둔갑천서(필살)';
|
||||
protected $info = '[전투] 필살 확률 +20%p';
|
||||
protected $info = '[전투] 필살 확률 +25%p';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if($statName === 'warCriticalRatio'){
|
||||
return $value + 0.2;
|
||||
return $value + 0.25;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
@@ -8,20 +8,17 @@ class che_환술_논어집해 extends \sammo\BaseItem
|
||||
{
|
||||
protected $rawName = '논어집해';
|
||||
protected $name = '논어집해(환술)';
|
||||
protected $info = '[전투] 계략 성공 확률 +10%p, 계략 성공 시 대미지 +30%, 공격 시 페이즈 -1';
|
||||
protected $info = '[전투] 계략 성공 확률 +10%p, 계략 성공 시 대미지 +20%';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux = null)
|
||||
{
|
||||
if ($statName === 'initWarPhase') {
|
||||
return $value - 1;
|
||||
}
|
||||
if ($statName === 'warMagicSuccessProb') {
|
||||
return $value + 0.1;
|
||||
}
|
||||
if ($statName === 'warMagicSuccessDamage') {
|
||||
return $value * 1.3;
|
||||
return $value * 1.2;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@ class che_회피_태평요술 extends \sammo\BaseItem{
|
||||
|
||||
protected $rawName = '태평요술';
|
||||
protected $name = '태평요술(회피)';
|
||||
protected $info = '[전투] 회피 확률 +15%p';
|
||||
protected $info = '[전투] 회피 확률 +20%p';
|
||||
protected $cost = 200;
|
||||
protected $consumable = false;
|
||||
|
||||
public function onCalcStat(General $general, string $statName, $value, $aux=null){
|
||||
if($statName === 'warAvoidRatio'){
|
||||
return $value + 0.15;
|
||||
return $value + 0.20;
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
@@ -256,11 +256,11 @@ class GameConstBase
|
||||
'che_내정_납금박산로' => 1, 'che_전략_평만지장도' => 1, 'che_숙련_동작' => 1, 'che_명성_구석' => 1,
|
||||
|
||||
'che_척사_오악진형도' => 1, 'che_격노_구정신단경' => 1, 'che_징병_낙주' => 1,
|
||||
'che_저격_매화수전' => 1, 'che_위압_조목삭' => 1, 'che_공성_묵자' => 1,
|
||||
'che_반계_백우선' => 1, 'che_집중_전국책' => 1, 'che_환술_논어집해' => 1,
|
||||
'che_저격_매화수전' => 1, 'che_저격_비도'=>1, 'che_위압_조목삭' => 1, 'che_공성_묵자' => 1,
|
||||
'che_집중_전국책' => 1, 'che_환술_논어집해' => 1,
|
||||
|
||||
'che_반계저지_박혁론' => 1, 'che_부적_태현청생부' => 1, 'che_저지_삼황내문' => 1,
|
||||
'che_행동_서촉지형도' => 1, 'che_회피저지_노군입산부' => 1, 'che_불굴_상편' => 1,
|
||||
'che_행동_서촉지형도' => 1, 'che_간파_노군입산부' => 1, 'che_불굴_상편' => 1,
|
||||
'che_약탈_옥벽' => 1,
|
||||
|
||||
'che_농성_주서음부' => 1, 'che_농성_위공자병법' => 1,
|
||||
|
||||
Reference in New Issue
Block a user