Ejemplo n.º 1
0
        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);
                }
            }
        }
Ejemplo n.º 2
0
        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;
        }