void IPipelineElement.Process() { foreach(var fishData in _Request.FishDatas) { // 有值代表是特殊武器 var specialWeaponPower = new SpecialWeaponPowerTable().WeaponPowers.Find(x => x.WeaponType == _Request.WeaponData.WeaponType); if(specialWeaponPower != null && _Request.WeaponData.WeaponType != WEAPON_TYPE.FREE_POWER) { new SpecialWeaponRateCal(_Visitor, _Request).Cal(fishData); } else { new NormalWeaponRateCal(_Visitor, _Request).Cal(fishData); } } }
public void Cal(RequsetFishData fish_data) { if(_IsCertainDeath(fish_data)) { return; } long dieRate = new SpecialWeaponPowerTable().WeaponPowers.Find(x => x.WeaponType == _Request.WeaponData.WeaponType) .Power; dieRate *= 0x0FFFFFFF; dieRate /= _Request.FishDatas.Sum(x => x.GetRealOdds()); // 总倍数 if(dieRate > 0x0FFFFFFF) { dieRate = 0x10000000; // > 100% } fish_data.HitDieRate = dieRate; }