From 6565fdbe7e4e858619b049fa02a3246bf138ef91 Mon Sep 17 00:00:00 2001 From: hide_d Date: Tue, 9 Jun 2020 01:25:35 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B4=EC=9E=A5=20=EC=8B=A0=EC=82=B0=20?= =?UTF-8?q?=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/WarUnitTrigger/che_계략시도.php | 156 +++++++++++----------- 1 file changed, 77 insertions(+), 79 deletions(-) diff --git a/hwe/sammo/WarUnitTrigger/che_계략시도.php b/hwe/sammo/WarUnitTrigger/che_계략시도.php index fe1517f0..478862e6 100644 --- a/hwe/sammo/WarUnitTrigger/che_계략시도.php +++ b/hwe/sammo/WarUnitTrigger/che_계략시도.php @@ -1,80 +1,78 @@ -[1.2, 1.1], - '매복'=>[1.4, 1.2], - '반목'=>[1.6, 1.3], - '화계'=>[1.8, 1.4], - '혼란'=>[2.0, 1.5] - ]; - static protected $tableToCity = [ - '급습'=>[1.2, 1.1], - '위보'=>[1.4, 1.2], - '혼란'=>[1.6, 1.3] - ]; - - protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool{ - assert($self instanceof WarUnitGeneral, 'General만 발동 가능'); - - $general = $self->getGeneral(); - $crewType = $general->getCrewTypeObj(); - - if($crewType->magicCoef <= 0){ - //NOTE: -인 경우를 고려해야하나? 계략 맞을 확률 증가? - return true; - } - - if($self->hasActivatedSkill('계략불가')){ - return true; - } - - $magicTrialProb = $general->getIntel(true, true, true, false) / 100; - $magicTrialProb *= $crewType->magicCoef; - - $magicTrialProb = $general->onCalcStat($general, 'warMagicTrialProb', $magicTrialProb); - - if(!Util::randBool($magicTrialProb)){ - return true; - } - - $magicSuccessProb = 0.7; - $magicSuccessProb = $general->onCalcStat($general, 'warMagicSuccessProb', $magicSuccessProb); - if($self->hasActivatedSkill('계략약화')){ - $magicSuccessProb -= 0.1; //NOTE: 앞으로 이건 oppose의 onCalcStat에 들어가야하지 않을까? - } - - if($oppose instanceof WarUnitCity){ - $magic = Util::choiceRandom(array_keys(static::$tableToCity)); - [$successDamage, $failDamage] = static::$tableToCity[$magic]; - } - else{ - $magic = Util::choiceRandom(array_keys(static::$tableToGeneral)); - [$successDamage, $failDamage] = static::$tableToGeneral[$magic]; - } - - $successDamage = $general->onCalcStat($general, 'warMagicSuccessDamage', $successDamage, $magic); - - $self->activateSkill('계략시도', $magic); - if(Util::randBool($magicSuccessProb)){ - $self->activateSkill('계략'); - $selfEnv['magic'] = [$magic, $successDamage]; - } - else{ - $self->activateSkill('계략실패'); - $selfEnv['magic'] = [$magic, $failDamage]; - } - - return true; - } +[1.2, 1.1], + '매복'=>[1.4, 1.2], + '반목'=>[1.6, 1.3], + '화계'=>[1.8, 1.4], + '혼란'=>[2.0, 1.5] + ]; + static protected $tableToCity = [ + '급습'=>[1.2, 1.1], + '위보'=>[1.4, 1.2], + '혼란'=>[1.6, 1.3] + ]; + + protected function actionWar(WarUnit $self, WarUnit $oppose, array &$selfEnv, array &$opposeEnv):bool{ + assert($self instanceof WarUnitGeneral, 'General만 발동 가능'); + + $general = $self->getGeneral(); + $crewType = $general->getCrewTypeObj(); + + if($self->hasActivatedSkill('계략불가')){ + return true; + } + + $magicTrialProb = $general->getIntel(true, true, true, false) / 100; + $magicTrialProb *= $crewType->magicCoef; + + $magicTrialProb = $general->onCalcStat($general, 'warMagicTrialProb', $magicTrialProb); + if($magicTrialProb <= 0){ + return true; + } + + if(!Util::randBool($magicTrialProb)){ + return true; + } + + $magicSuccessProb = 0.7; + $magicSuccessProb = $general->onCalcStat($general, 'warMagicSuccessProb', $magicSuccessProb); + if($self->hasActivatedSkill('계략약화')){ + $magicSuccessProb -= 0.1; //NOTE: 앞으로 이건 oppose의 onCalcStat에 들어가야하지 않을까? + } + + if($oppose instanceof WarUnitCity){ + $magic = Util::choiceRandom(array_keys(static::$tableToCity)); + [$successDamage, $failDamage] = static::$tableToCity[$magic]; + } + else{ + $magic = Util::choiceRandom(array_keys(static::$tableToGeneral)); + [$successDamage, $failDamage] = static::$tableToGeneral[$magic]; + } + + $successDamage = $general->onCalcStat($general, 'warMagicSuccessDamage', $successDamage, $magic); + + $self->activateSkill('계략시도', $magic); + if(Util::randBool($magicSuccessProb)){ + $self->activateSkill('계략'); + $selfEnv['magic'] = [$magic, $successDamage]; + } + else{ + $self->activateSkill('계략실패'); + $selfEnv['magic'] = [$magic, $failDamage]; + } + + return true; + } } \ No newline at end of file