This commit is contained in:
aozhiwei 2022-09-19 20:08:11 +08:00
parent 7a94f56644
commit 7635c820e7
2 changed files with 62 additions and 12 deletions

View File

@ -541,18 +541,30 @@ class BattleDataService extends BaseService {
$bossReward = getReqVal('pve_kill_boss', 0) ? 1 : 0;
$heroQuality = $this->heroDto['quality'];
$dropRate = max(1.15 - ($heroQuality - $instanceLevel) * 0.25, 0);
$dropMul = 0.8 - ($instanceRank - 1) * 0.25 + $bossReward * 0.2;
$heroProbability = min($heroFragmentNum / $onlineNum *
$dropRate * ($instanceRankRate + $bossReward*0.2) *
pow(2, $todayPveBattleTimes - $todayPveGetFragmentNum -1), 1);
$gunProbability = min($gunFragmentNum / $onlineNum *
$dropRate * ($instanceRankRate + $bossReward*0.2) *
pow(2, $todayPveBattleTimes - $todayPveGetFragmentNum -1), 1);
$heroProbability = max($heroProbability, 0);
$gunProbability = max($gunProbability, 0);
$heroProbability = FormulaService::calcHeroFragmentProbabilityPve
(
$heroQuality,
$onlineNum,
$heroFragmentNum,
$todayPveBattleTimes,
$instanceLevel,
$instanceRank,
$instanceRankRate,
$bossReward,
$todayPveGetFragmentNum
);
$gunProbability = FormulaService::calcWeaponFragmentProbabilityPve
(
$heroQuality,
$onlineNum,
$gunFragmentNum,
$todayPveBattleTimes,
$instanceLevel,
$instanceRank,
$instanceRankRate,
$bossReward,
$todayPveGetFragmentNum
);
$emptyProbability = max(1 - $heroProbability - $gunProbability, 0);
$dropIdx = $this->randWeight(array($heroProbability, $gunProbability, $emptyProbability));

View File

@ -150,6 +150,44 @@ class FormulaService extends BaseService {
return max(0, $weaponProbability);
}
public static function calcHeroFragmentProbabilityPve($heroQuality,
$onlineNum,
$heroFragmentNum,
$todayPvpBattleTimes,
$instanceLevel,
$instanceRank,
$instanceRankRate,
$bossReward,
$todayPveGetFragmentNum)
{
$dropRate = max(1.15 - ($heroQuality - $instanceLevel) * 0.25, 0);
$dropMul = 0.8 - ($instanceRank - 1) * 0.25 + $bossReward * 0.2;
$heroProbability = min($heroFragmentNum / $onlineNum *
$dropRate * ($instanceRankRate + $bossReward*0.2) *
pow(2, $todayPveBattleTimes - $todayPveGetFragmentNum - 1), 1);
return max(0, $heroProbability);
}
public static function calcWeaponFragmentProbabilityPve($heroQuality,
$onlineNum,
$gunFragmentNum,
$todayPvpBattleTimes,
$instanceLevel,
$instanceRank,
$instanceRankRate,
$bossReward,
$todayPveGetFragmentNum)
{
$dropRate = max(1.15 - ($heroQuality - $instanceLevel) * 0.25, 0);
$dropMul = 0.8 - ($instanceRank - 1) * 0.25 + $bossReward * 0.2;
$gunProbability = min($gunFragmentNum / $onlineNum *
$dropRate * ($instanceRankRate + $bossReward*0.2) *
pow(2, $todayPveBattleTimes - $todayPveGetFragmentNum - 1), 1);
return max(0, $gunProbability);
}
public static function getHeroPvpTiliTotalValue($heroDb)
{
//ROUND((0.0241*角色NFT阶数^3-0.5675*角色NFT阶数^2+7.1798*角色NFT阶数+2.4114)+(0.0161*角色幸运值^3-1.2943*角色幸运值^2+36.5664*角色幸运值-336.144),0)+系统参数