diff --git a/hwe/sammo/ActionItem/che_무기_09_동호비궁.php b/hwe/sammo/ActionItem/che_무기_09_동호비궁.php index 3982e333..e262e1f3 100644 --- a/hwe/sammo/ActionItem/che_무기_09_동호비궁.php +++ b/hwe/sammo/ActionItem/che_무기_09_동호비궁.php @@ -14,12 +14,12 @@ class che_무기_09_동호비궁 extends \sammo\BaseStatItem{ public function __construct() { parent::__construct(); - $this->info .= "
[전투] 새로운 상대와 전투 시 20% 확률로 저격 발동, 성공 시 사기+10"; + $this->info .= "
[전투] 새로운 상대와 전투 시 20% 확률로 저격 발동, 성공 시 사기+20"; } public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ return new WarUnitTriggerCaller( - new che_저격시도($unit, che_저격시도::TYPE_ITEM + che_저격시도::TYPE_DEDUP_TYPE_BASE * 109, 0.2, 20, 40), + new che_저격시도($unit, che_저격시도::TYPE_ITEM + che_저격시도::TYPE_DEDUP_TYPE_BASE * 109, 0.2, 20, 40, 20), new che_저격발동($unit, che_저격발동::TYPE_ITEM) ); } diff --git a/hwe/sammo/ActionItem/che_무기_11_이광궁.php b/hwe/sammo/ActionItem/che_무기_11_이광궁.php index 7bd69012..4afcb58b 100644 --- a/hwe/sammo/ActionItem/che_무기_11_이광궁.php +++ b/hwe/sammo/ActionItem/che_무기_11_이광궁.php @@ -19,7 +19,7 @@ class che_무기_11_이광궁 extends \sammo\BaseStatItem{ public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ return new WarUnitTriggerCaller( - new che_저격시도($unit, che_저격시도::TYPE_ITEM + che_저격시도::TYPE_DEDUP_TYPE_BASE * 111, 0.10, 20, 40), + new che_저격시도($unit, che_저격시도::TYPE_ITEM + che_저격시도::TYPE_DEDUP_TYPE_BASE * 111, 0.10, 20, 40, 10), new che_저격발동($unit, che_저격발동::TYPE_ITEM) ); } diff --git a/hwe/sammo/ActionItem/che_무기_13_양유기궁.php b/hwe/sammo/ActionItem/che_무기_13_양유기궁.php index fa8f04e9..a5acbd6e 100644 --- a/hwe/sammo/ActionItem/che_무기_13_양유기궁.php +++ b/hwe/sammo/ActionItem/che_무기_13_양유기궁.php @@ -19,7 +19,7 @@ class che_무기_13_양유기궁 extends \sammo\BaseStatItem{ public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ return new WarUnitTriggerCaller( - new che_저격시도($unit, che_저격시도::TYPE_ITEM + che_저격시도::TYPE_DEDUP_TYPE_BASE * 113, 0.1, 20, 40), + new che_저격시도($unit, che_저격시도::TYPE_ITEM + che_저격시도::TYPE_DEDUP_TYPE_BASE * 113, 0.1, 20, 40, 10), new che_저격발동($unit, che_저격발동::TYPE_ITEM) ); } diff --git a/hwe/sammo/ActionItem/che_저격_매화수전.php b/hwe/sammo/ActionItem/che_저격_매화수전.php index 084a76cf..a72e9c55 100644 --- a/hwe/sammo/ActionItem/che_저격_매화수전.php +++ b/hwe/sammo/ActionItem/che_저격_매화수전.php @@ -15,7 +15,7 @@ class che_저격_매화수전 extends \sammo\BaseItem{ protected $id = 70; protected $rawName = '매화수전'; protected $name = '매화수전(저격)'; - protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+10'; + protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+20'; protected $cost = 200; protected $consumable = false; diff --git a/hwe/sammo/ActionItem/che_저격_비도.php b/hwe/sammo/ActionItem/che_저격_비도.php index 04e7e8c2..5ab2c493 100644 --- a/hwe/sammo/ActionItem/che_저격_비도.php +++ b/hwe/sammo/ActionItem/che_저격_비도.php @@ -15,7 +15,7 @@ class che_저격_비도 extends \sammo\BaseItem{ protected $id = 70; protected $rawName = '비도'; protected $name = '비도(저격)'; - protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+10'; + protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+20'; protected $cost = 200; protected $consumable = false; diff --git a/hwe/sammo/ActionItem/event_전투특기_저격.php b/hwe/sammo/ActionItem/event_전투특기_저격.php index 98b530ac..223f7a5f 100644 --- a/hwe/sammo/ActionItem/event_전투특기_저격.php +++ b/hwe/sammo/ActionItem/event_전투특기_저격.php @@ -13,7 +13,7 @@ class event_전투특기_저격 extends \sammo\BaseItem{ protected $id = 70; protected $rawName = '비급'; protected $name = '비급(저격)'; - protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+10'; + protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+20'; protected $cost = 100; protected $buyable = true; protected $consumable = false; diff --git a/hwe/sammo/ActionSpecialDomestic/che_event_견고.php b/hwe/sammo/ActionSpecialDomestic/che_event_견고.php index 1cd1131d..b1844b8d 100644 --- a/hwe/sammo/ActionSpecialDomestic/che_event_견고.php +++ b/hwe/sammo/ActionSpecialDomestic/che_event_견고.php @@ -13,7 +13,7 @@ class che_event_견고 extends \sammo\BaseSpecial{ protected $id = 62; protected $name = '견고'; - protected $info = '[전투] 상대 필살, 저격 불가, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -10%'; + protected $info = '[전투] 상대 필살 확률 -20%p, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -10%'; static $selectWeightType = SpecialityHelper::WEIGHT_NORM; static $selectWeight = 1; @@ -25,6 +25,7 @@ class che_event_견고 extends \sammo\BaseSpecial{ { $debuff = [ 'warMagicSuccessProb' => 0.1, + 'warCriticalRatio' => 0.20, ][$statName] ?? 0; return $value - $debuff; } @@ -32,13 +33,12 @@ class che_event_견고 extends \sammo\BaseSpecial{ public function getBattleInitSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ return new WarUnitTriggerCaller( new che_부상무효($unit, BaseWarUnitTrigger::TYPE_ITEM), - new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_ITEM + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE*402, false, '저격불가') ); } public function getBattlePhaseSkillTriggerList(WarUnit $unit):?WarUnitTriggerCaller{ return new WarUnitTriggerCaller( - new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_ITEM + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE*402, false, '필살불가', '저격불가') + new che_부상무효($unit, BaseWarUnitTrigger::TYPE_ITEM), ); } diff --git a/hwe/sammo/ActionSpecialDomestic/che_event_저격.php b/hwe/sammo/ActionSpecialDomestic/che_event_저격.php index 73098d24..b09e52c1 100644 --- a/hwe/sammo/ActionSpecialDomestic/che_event_저격.php +++ b/hwe/sammo/ActionSpecialDomestic/che_event_저격.php @@ -12,7 +12,7 @@ class che_event_저격 extends \sammo\BaseSpecial{ protected $id = 70; protected $name = '저격'; - protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+10'; + protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+20'; static $selectWeightType = SpecialityHelper::WEIGHT_NORM; static $selectWeight = 1; diff --git a/hwe/sammo/ActionSpecialWar/che_견고.php b/hwe/sammo/ActionSpecialWar/che_견고.php index ed8bd76c..d387f6d2 100644 --- a/hwe/sammo/ActionSpecialWar/che_견고.php +++ b/hwe/sammo/ActionSpecialWar/che_견고.php @@ -16,7 +16,7 @@ class che_견고 extends \sammo\BaseSpecial protected $id = 62; protected $name = '견고'; - protected $info = '[전투] 상대 필살, 저격 불가, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -10%'; + protected $info = '[전투] 상대 필살 확률 -20%p, 상대 계략 시도시 성공 확률 -10%p, 부상 없음, 아군 피해 -10%'; static $selectWeightType = SpecialityHelper::WEIGHT_NORM; static $selectWeight = 1; @@ -28,6 +28,7 @@ class che_견고 extends \sammo\BaseSpecial { $debuff = [ 'warMagicSuccessProb' => 0.1, + 'warCriticalRatio' => 0.20, ][$statName] ?? 0; return $value - $debuff; } @@ -35,15 +36,14 @@ class che_견고 extends \sammo\BaseSpecial public function getBattleInitSkillTriggerList(WarUnit $unit): ?WarUnitTriggerCaller { return new WarUnitTriggerCaller( - new che_부상무효($unit, BaseWarUnitTrigger::TYPE_ITEM + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE * 404), - new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_ITEM + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE * 404, false, '저격불가') + new che_부상무효($unit, BaseWarUnitTrigger::TYPE_NONE + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE * 404), ); } public function getBattlePhaseSkillTriggerList(WarUnit $unit): ?WarUnitTriggerCaller { return new WarUnitTriggerCaller( - new WarActivateSkills($unit, BaseWarUnitTrigger::TYPE_ITEM + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE * 404, false, '필살불가', '저격불가') + new che_부상무효($unit, BaseWarUnitTrigger::TYPE_NONE + BaseWarUnitTrigger::TYPE_DEDUP_TYPE_BASE * 404), ); } diff --git a/hwe/sammo/ActionSpecialWar/che_저격.php b/hwe/sammo/ActionSpecialWar/che_저격.php index b2ef90d7..c8a3140e 100644 --- a/hwe/sammo/ActionSpecialWar/che_저격.php +++ b/hwe/sammo/ActionSpecialWar/che_저격.php @@ -12,7 +12,7 @@ class che_저격 extends \sammo\BaseSpecial{ protected $id = 70; protected $name = '저격'; - protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+10'; + protected $info = '[전투] 새로운 상대와 전투 시 50% 확률로 저격 발동, 성공 시 사기+20'; static $selectWeightType = SpecialityHelper::WEIGHT_NORM; static $selectWeight = 1; diff --git a/hwe/sammo/WarUnitTrigger/che_부상무효.php b/hwe/sammo/WarUnitTrigger/che_부상무효.php index 3e4e3a11..0bcdc1f7 100644 --- a/hwe/sammo/WarUnitTrigger/che_부상무효.php +++ b/hwe/sammo/WarUnitTrigger/che_부상무효.php @@ -12,7 +12,6 @@ class che_부상무효 extends BaseWarUnitTrigger{ protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool{ assert($self instanceof WarUnitGeneral, 'General만 발동 가능'); - $oppose->activateSkill('저격불가'); $self->activateSkill('부상무효'); return true; diff --git a/hwe/sammo/WarUnitTrigger/che_저격발동.php b/hwe/sammo/WarUnitTrigger/che_저격발동.php index db1e4928..f6b801e9 100644 --- a/hwe/sammo/WarUnitTrigger/che_저격발동.php +++ b/hwe/sammo/WarUnitTrigger/che_저격발동.php @@ -1,5 +1,7 @@ hasActivatedSkill('저격')){ + protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv): bool + { + if (!$self->hasActivatedSkill('저격')) { return true; } - if($selfEnv['저격발동']??false){ + if ($selfEnv['저격발동'] ?? false) { return true; } $selfEnv['저격발동'] = true; $general = $self->getGeneral(); - $self->getLogger()->pushGeneralActionLog("상대를 저격했다!", ActionLogger::PLAIN); - $self->getLogger()->pushGeneralBattleDetailLog("상대를 저격했다!", ActionLogger::PLAIN); - $oppose->getLogger()->pushGeneralActionLog("상대에게 저격당했다!", ActionLogger::PLAIN); - $oppose->getLogger()->pushGeneralBattleDetailLog("상대에게 저격당했다!", ActionLogger::PLAIN); + if ($oppose instanceof WarUnitGeneral) { + $self->getLogger()->pushGeneralActionLog("상대를 저격했다!", ActionLogger::PLAIN); + $self->getLogger()->pushGeneralBattleDetailLog("상대를 저격했다!", ActionLogger::PLAIN); + $oppose->getLogger()->pushGeneralActionLog("상대에게 저격당했다!", ActionLogger::PLAIN); + $oppose->getLogger()->pushGeneralBattleDetailLog("상대에게 저격당했다!", ActionLogger::PLAIN); + } + else{ + $self->getLogger()->pushGeneralActionLog("성벽 수비대장을 저격했다!", ActionLogger::PLAIN); + $self->getLogger()->pushGeneralBattleDetailLog("성벽 수비대장을 저격했다!", ActionLogger::PLAIN); + } - $general->increaseVarWithLimit('atmos', 10, 0, GameConst::$maxAtmosByWar); - $oppose->getGeneral()->increaseVarWithLimit('injury', Util::randRangeInt($selfEnv['woundMin'], $selfEnv['woundMax']), null, 80); + $general->increaseVarWithLimit('atmos', $selfEnv['addAtmos'], 0, GameConst::$maxAtmosByWar); + + if (!$oppose->hasActivatedSkill('부상무효') && $oppose instanceof WarUnitGeneral) { + $oppose->getGeneral()->increaseVarWithLimit('injury', Util::randRangeInt($selfEnv['woundMin'], $selfEnv['woundMax']), null, 80); + } $this->processConsumableItem(); return true; } -} \ No newline at end of file +} diff --git a/hwe/sammo/WarUnitTrigger/che_저격시도.php b/hwe/sammo/WarUnitTrigger/che_저격시도.php index 05e632fe..332e49b7 100644 --- a/hwe/sammo/WarUnitTrigger/che_저격시도.php +++ b/hwe/sammo/WarUnitTrigger/che_저격시도.php @@ -14,20 +14,19 @@ class che_저격시도 extends BaseWarUnitTrigger{ protected $woundMin; protected $woundMax; protected $ratio; + protected $addAtmos; - public function __construct(WarUnit $unit, int $raiseType, float $ratio, float $woundMin, float $woundMax){ + public function __construct(WarUnit $unit, int $raiseType, float $ratio, float $woundMin, float $woundMax, int $addAtmos = 20){ $this->object = $unit; $this->raiseType = $raiseType; $this->ratio = $ratio; $this->woundMin = $woundMin; $this->woundMax = $woundMax; + $this->addAtmos = $addAtmos; } protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool{ assert($self instanceof WarUnitGeneral, 'General만 발동 가능'); - if(!$oppose instanceof WarUnitGeneral){ - return true; - } if($self->getPhase() !== 0 && $oppose->getPhase() !== 0){ return true; } @@ -44,6 +43,7 @@ class che_저격시도 extends BaseWarUnitTrigger{ $self->activateSkill('저격'); $selfEnv['woundMin'] = $this->woundMin; $selfEnv['woundMax'] = $this->woundMax; + $selfEnv['addAtmos'] = $this->addAtmos; return true; }