diff --git a/webapp/controller/BagController.class.php b/webapp/controller/BagController.class.php index a5b4e2f3..11fd58e9 100644 --- a/webapp/controller/BagController.class.php +++ b/webapp/controller/BagController.class.php @@ -395,26 +395,18 @@ class BagController extends BaseAuthedController { // $lucky = Hero::getAccountLucky(myself()->_getAddress()); $lucky = Hero::getAccountLuckyTemp(); $luckyParam = \mt\Parameter::getVal('economy_account_luck_K',0); - $luckyMaxPro = \mt\Parameter::getVal('economy_account_luck_E',0); - $prob = $luckyMaxPro * ($lucky / ($lucky+$luckyParam)); + + $rangeArr = explode("|",\mt\Parameter::getVal('economy_account_luck_range',0)); + $rate = ($rangeArr[1]-$rangeArr[0]) * $lucky/($lucky+$luckyParam) + $rangeArr[0]; + $rnd = rand() / (mt_getrandmax() + 1); $items = array(); - for ($i=0;$i<$itemNum;$i++){ - $times = $this->proEffect($prob,1); + if ($rnd <= $rate){ $itemsTemp = \services\LootService::dropOutItem($itemMeta['loot']); - if ($times > 0){ - foreach ($itemsTemp as $itemTemp){ - $itemTemp['item_num'] += $itemTemp['item_num']*$times; - array_push($items,$itemTemp); - } - }else{ foreach ($itemsTemp as $itemTemp){ array_push($items,$itemTemp); } - } } - - }else{ $items = array(); for ($i=0;$i<$itemNum;$i++){ diff --git a/webapp/controller/GMController.class.php b/webapp/controller/GMController.class.php index 29f3d62a..66a27f08 100644 --- a/webapp/controller/GMController.class.php +++ b/webapp/controller/GMController.class.php @@ -270,21 +270,17 @@ END $lootMeta = mt\LootConfig::find($itemMeta['loot']); if ($lootMeta['isAffected']){ $luckyParam = \mt\Parameter::getVal('economy_account_luck_K',0); - $luckyMaxPro = \mt\Parameter::getVal('economy_account_luck_E',0); - $prob = $luckyMaxPro * ($lucky / ($lucky+$luckyParam)); + $rangeArr = explode("|",\mt\Parameter::getVal('economy_account_luck_range',0)); + $rate = ($rangeArr[1]-$rangeArr[0]) * $lucky/($lucky+$luckyParam) + $rangeArr[0]; + $rnd = rand() / (mt_getrandmax() + 1); for ($i=0; $i<$itemNum; $i++){ - $times = $this->proEffect($prob,1); - $temp = array( - "prob" => $prob, - "times" => $times - ); - $items = \services\LootService::dropOutItem($itemMeta['loot']); - if ($times > 0){ - foreach ($items as &$item){ - $item['item_num'] += $item['item_num']*$times; - } + if ($rnd <= $rate){ + $items = \services\LootService::dropOutItem($itemMeta['loot']); } - array_unshift($items,$temp); + array_unshift($items,array( + 'rnd' => $rnd, + 'rate' => $rate, + )); TGLog::writeToLog("game_2006_api","loot",array( $itemId => $items ));