From c8d08e4b2c3f2f52457603b06ff23ee2005737fa Mon Sep 17 00:00:00 2001 From: hide_d Date: Sat, 23 Jun 2018 02:22:32 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A0=80=EA=B2=A9=20=ED=8A=B9=EA=B8=B0,=20?= =?UTF-8?q?=ED=99=9C=20=EC=9C=A0=EB=8B=88=ED=81=AC,=20=EC=88=98=EA=B7=B9?= =?UTF-8?q?=20=ED=99=95=EB=A5=A0=EC=9D=B4=20=EA=B0=81=EA=B0=81=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/process_war.php | 70 +++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/hwe/process_war.php b/hwe/process_war.php index cda4335f..b2e10e49 100644 --- a/hwe/process_war.php +++ b/hwe/process_war.php @@ -599,19 +599,30 @@ function processWar($general, $city) { $query = "update general set recwar='{$general['turntime']}',train='{$oppose['train']}',warnum=warnum+1 where no='{$oppose['no']}'"; MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); - $ratio = rand() % 100; //특기보정 : 저격(수극), 활무기저격 - if(($general['special2'] == 70 && $ratio <= 33) || ($general['item'] == 2 && $ratio <= 20) || (($general['weap'] == 10 || $general['weap'] == 14 || $general['weap'] == 18 || $general['weap'] == 22) && $ratio <= 20)) { + $snipe = false; + $snipeItem = false; + if(!$snipe && $general['special2'] == 70 && Util::randF(1/3)){ + $snipe = true; + } + if(!$snipe && in_array($general['weap'], [10, 14, 18, 22]) && Util::randF(1/5)){ + $snipe = true; + } + if(!$snipe && $general['item'] == 2){ + if(Util::randF(1/5)){ + $snipe = true; + $snipeItem = true; + } + //수극을 사용했지만 저격 실패한 케이스도 '필요하면' 넣을 것.(밸런스) + + } + if($snipe) { //수극 사용 - if($general['item'] == 2) { - $query = "update general set item=0 where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); + if($snipeItem) { $josaUl = JosaUtil::pick($general['item'], '을'); $log[] = "".getItemName($general['item'])."{$josaUl} 사용!"; $general['item'] = 0; - } elseif($general['weap'] == 10 || $general['weap'] == 14 || $general['weap'] == 18 || $general['weap'] == 22) { -// $josaUl = JosaUtil::pick($general['weap'], '을'); -// $log[] = "".getWeapName($general['weap'])."{$josaUl} 사용!"; + $db->update('general', ['item'=>0], 'no=%i', $general['no']); } $log[] = "●상대를 저격했다!"; $batlog[] = "●상대를 저격했다!"; @@ -620,26 +631,37 @@ function processWar($general, $city) { // 부상 $oppose['injury'] += rand() % 41 + 20; // 20 ~ 60 if($oppose['injury'] > 80) { $oppose['injury'] = 80; } - } else if($general['item'] == 2 && $ratio <= 40) { - $query = "update general set item=0 where no='{$general['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); + } + else if($snipeItem) { + $db->update('general', ['item'=>0], 'no=%i', $general['no']); $josaYi = JosaUtil::pick($general['item'], '이'); $batlog[] = "".getItemName($general['item'])."{$josaYi} 빗나갑니다!"; $general['item'] = 0; } - $ratio = rand() % 100; + //특기보정 : 저격(수극), 활무기저격 - if(($oppose['special2'] == 70 && $ratio <= 33) || ($oppose['item'] == 2 && $ratio <= 20) || (($oppose['weap'] == 10 || $oppose['weap'] == 14 || $oppose['weap'] == 18 || $oppose['weap'] == 22) && $ratio <= 20)) { + $snipe = false; + $snipeItem = false; + if(!$snipe && $oppose['special2'] == 70 && Util::randF(1/3)){ + $snipe = true; + } + if(!$snipe && in_array($oppose['weap'], [10, 14, 18, 22]) && Util::randF(1/5)){ + $snipe = true; + } + if(!$snipe && $oppose['item'] == 2){ + if(Util::randF(1/5)){ + $snipe = true; + $snipeItem = true; + } + //수극을 사용했지만 저격 실패한 케이스도 '필요하면' 넣을 것.(밸런스) + } + if($snipe) { //수극 사용 - if($oppose['item'] == 2) { - $query = "update general set item=0 where no='{$oppose['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); + if($snipeItem) { $josaUl = JosaUtil::pick($oppose['item'], '을'); - $opplog[] = "".getItemName($oppose['item'])."{$josaUl} 사용!"; + $log[] = "".getItemName($oppose['item'])."{$josaUl} 사용!"; $oppose['item'] = 0; - } elseif($oppose['weap'] == 10 || $oppose['weap'] == 14 || $oppose['weap'] == 18 || $oppose['weap'] == 22) { -// $josaUl = JosaUtil::pick($oppose['weap'], '을'); -// $opplog[] = "".getWeapName($oppose['weap'])."{$josaUl} 사용!"; + $db->update('general', ['item'=>0], 'no=%i', $oppose['no']); } $oppbatlog[] = "●상대를 저격했다!"; $opplog[] = "●상대를 저격했다!"; @@ -648,11 +670,11 @@ function processWar($general, $city) { // 부상 $general['injury'] += rand() % 41 + 20; // 20 ~ 60 if($general['injury'] > 80) { $general['injury'] = 80; } - } else if($oppose['item'] == 2 && $ratio <= 40) { - $query = "update general set item=0 where no='{$oppose['no']}'"; - MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),""); + } + else if($snipeItem) { + $db->update('general', ['item'=>0], 'no=%i', $oppose['no']); $josaYi = JosaUtil::pick($oppose['item'], '이'); - $oppbatlog[] = "".getItemName($oppose['item'])."{$josaYi} 빗나갑니다!"; + $batlog[] = "".getItemName($oppose['item'])."{$josaYi} 빗나갑니다!"; $oppose['item'] = 0; }