diff --git a/webapp/services/BattleDataService.php b/webapp/services/BattleDataService.php index 08ab7284..7ff5c022 100644 --- a/webapp/services/BattleDataService.php +++ b/webapp/services/BattleDataService.php @@ -470,6 +470,18 @@ class BattleDataService extends BaseService { } $onlineNum = $this->getOnlineNumber(); + + $heroProbability = min($heroFragment[$now].total / $onlineNum * 5 * ($instanceRankRate + $bossReward*0.2) * pow(2, $todayPveBattleTimes - $todayPveGetFragmentNum -1), 1); + $gunProbability = min($gunFragment[$now].total / $onlineNum * $dropRate * ($instanceRankRate + $bossReward*0.2) * pow(2, $todayPveBattleTimes - $todayPveGetFragmentNum -1), 1); + + $heroProbability = max($heroProbability, 0); + $gunProbability = max($gunProbability, 0); + $emptyProbability = max(1 - $heroProbability - $gunProbability, 0); + + $dropIdx = $this->randWeight(array($heroProbability, $gunProbability, $emptyProbability)); + if ($dropIdx < 0 || $dropIdx == 2) { + return; + } } private function rewardFragmentPve()