Exemple #1
0
        public DirectDamage(Fighter source, SpellLevelRecord spellLevel, EffectInstance effect,
                            Fighter[] targets, MapPoint castPoint, bool critical)
            : base(source, spellLevel, effect, targets, castPoint, critical)
        {
            switch (effect.EffectEnum)
            {
            case EffectsEnum.Effect_DamageEarth:
                ElementType = EffectElementType.Earth;
                break;

            case EffectsEnum.Effect_DamageWater:
                ElementType = EffectElementType.Water;
                break;

            case EffectsEnum.Effect_DamageFire:
                ElementType = EffectElementType.Fire;
                break;

            case EffectsEnum.Effect_DamageAir:
                ElementType = EffectElementType.Air;
                break;

            case EffectsEnum.Effect_DamageNeutral:
                ElementType = EffectElementType.Neutral;
                break;
            }
        }
Exemple #2
0
        public Jet EvaluateJet(Fighter source, EffectElementType elementType, short jetMin, short jetMax, short boost, bool useWeapon)
        {
            if (jetMax == 0 || jetMax <= jetMin)
            {
                jetMin += boost;

                short delta = GetJetDelta(source, jetMin, elementType, useWeapon);

                return(new Jet(delta, delta, delta));
            }
            else
            {
                jetMin += boost;

                jetMax += boost;

                short deltaMin = GetJetDelta(source, jetMin, elementType, useWeapon);

                short deltaMax = GetJetDelta(source, jetMax, elementType, useWeapon);

                short delta = (short)new AsyncRandom().Next(deltaMin, deltaMax + 1);

                return(new Jet(deltaMin, deltaMax, delta));
            }
        }
        public DamagePerMpUsed(Fighter source, SpellLevelRecord level, EffectInstance effect,
                               Fighter[] targets, MapPoint castPoint, bool critical)
            : base(source, level, effect, targets, castPoint, critical)
        {
            switch (Effect.EffectEnum)
            {
            case EffectsEnum.Effect_DamageAirPerMP:
                ElementType = EffectElementType.Air;
                break;

            case EffectsEnum.Effect_DamageEarthPerMP:
                ElementType = EffectElementType.Earth;
                break;

            case EffectsEnum.Effect_DamageFirePerMP:
                ElementType = EffectElementType.Fire;
                break;

            case EffectsEnum.Effect_DamageNeutralPerMP:
                ElementType = EffectElementType.Neutral;
                break;

            case EffectsEnum.Effect_DamageWaterPerMP:
                ElementType = EffectElementType.Water;
                break;
            }
        }
Exemple #4
0
        public LifeSteal(Fighter source, SpellLevelRecord spellLevel, EffectInstance effect,
                         Fighter[] targets, MapPoint castPoint, bool critical)
            : base(source, spellLevel, effect, targets, castPoint, critical)
        {
            switch (effect.EffectEnum)
            {
            case EffectsEnum.Effect_StealHPEarth:
                ElementType = EffectElementType.Earth;
                break;

            case EffectsEnum.Effect_StealHPWater:
                ElementType = EffectElementType.Water;
                break;

            case EffectsEnum.Effect_StealHPFire:
                ElementType = EffectElementType.Fire;
                break;

            case EffectsEnum.Effect_StealHPAir:
                ElementType = EffectElementType.Air;
                break;

            case EffectsEnum.Effect_StealHPNeutral:
                ElementType = EffectElementType.Neutral;
                break;

            case EffectsEnum.Effect_StealHPFix:
                ElementType = EffectElementType.Neutral;     // todo, neutral but no jet
                break;
            }
        }
        private static short GetJetDelta(Fighter fighter, short jet, EffectElementType elementType, bool useWeapon)
        {
            short result;

            switch (elementType)
            {
            case EffectElementType.Neutral:
                result = (short)((double)(jet * (100 + fighter.Stats.Strength.TotalInContext() + fighter.Stats.DamagesBonusPercent.TotalInContext() + (useWeapon ? fighter.Stats.WeaponDamagesBonusPercent.TotalInContext() : 0)) / 100.0 + (double)(fighter.Stats.AllDamagesBonus.TotalInContext() + fighter.Stats.NeutralDamageBonus.TotalInContext())));
                break;

            case EffectElementType.Earth:
                result = (short)((double)(jet * (100 + fighter.Stats.Strength.TotalInContext() + fighter.Stats.DamagesBonusPercent.TotalInContext() + (useWeapon ? fighter.Stats.WeaponDamagesBonusPercent.TotalInContext() : 0)) / 100.0 + (double)(fighter.Stats.AllDamagesBonus.TotalInContext() + fighter.Stats.EarthDamageBonus.TotalInContext())));
                break;

            case EffectElementType.Water:
                result = (short)((double)(jet * (100 + fighter.Stats.Chance.TotalInContext() + fighter.Stats.DamagesBonusPercent.TotalInContext() + (useWeapon ? fighter.Stats.WeaponDamagesBonusPercent.TotalInContext() : 0)) / 100.0 + (double)(fighter.Stats.AllDamagesBonus.TotalInContext() + fighter.Stats.WaterDamageBonus.TotalInContext())));
                break;

            case EffectElementType.Air:
                result = (short)((double)(jet * (100 + fighter.Stats.Agility.TotalInContext() + fighter.Stats.DamagesBonusPercent.TotalInContext() + (useWeapon ? fighter.Stats.WeaponDamagesBonusPercent.TotalInContext() : 0)) / 100.0 + (double)(fighter.Stats.AllDamagesBonus.TotalInContext() + fighter.Stats.AirDamageBonus.TotalInContext())));
                break;

            case EffectElementType.Fire:
                result = (short)((double)(jet * (100 + fighter.Stats.Intelligence.TotalInContext() + fighter.Stats.DamagesBonusPercent.TotalInContext() + (useWeapon ? fighter.Stats.WeaponDamagesBonusPercent.TotalInContext() : 0)) / 100.0 + (double)(fighter.Stats.AllDamagesBonus.TotalInContext() + fighter.Stats.FireDamageBonus.TotalInContext())));
                break;

            default:
                result = jet;
                break;
            }
            result = result < jet ? jet : result;
            return(result);
        }
Exemple #6
0
 public Damage(Fighter source, Fighter target, short delta, EffectElementType elementType = EffectElementType.Direct)
 {
     this.Source      = source;
     this.Target      = target;
     this.Jet         = new Jet(delta, delta, delta);
     this.Effect      = null;
     this.ElementType = elementType;
     this.Randomizer  = new AsyncRandom();
     this.Critical    = false;
 }
Exemple #7
0
 public Damage(Fighter source, Fighter target, Jet jet, EffectElementType elementType, EffectInstance effect, bool critical)
 {
     this.Source      = source;
     this.Target      = target;
     this.Jet         = jet;
     this.Effect      = effect;
     this.ElementType = elementType;
     this.Randomizer  = new AsyncRandom();
     this.Critical    = critical;
 }
        public DamageHPLostPercent(Fighter source,
                                   SpellLevelRecord spellLevel,
                                   EffectInstance effect,
                                   Fighter[] targets,
                                   MapPoint castPoint,
                                   bool critical)
            : base(source, spellLevel, effect, targets, castPoint, critical)
        {
            switch (effect.EffectEnum)
            {
            case EffectsEnum.Effect_DamageHPLostPercentStrenght:
                this.ElementType = EffectElementType.Earth;

                break;

            case EffectsEnum.Effect_DamageHPLostPercentWater:
                this.ElementType = EffectElementType.Water;

                break;

            case EffectsEnum.Effect_DamageHPLostPercentFire:
                this.ElementType = EffectElementType.Fire;

                break;

            case EffectsEnum.Effect_DamageHPLostPercentAir:
                this.ElementType = EffectElementType.Air;

                break;

            case EffectsEnum.Effect_DamageHPLostPercentNeutral:
                this.ElementType = EffectElementType.Neutral;

                break;
            }
        }
Exemple #9
0
 public Jet EvaluateJet(Fighter source, EffectElementType elementType, EffectInstance effect, ushort spellId)
 {
     return(this.EvaluateJet(source, elementType, (short)effect.DiceMin, (short)effect.DiceMax, source.GetSpellBoost(spellId), spellId == WeaponManager.PunchSpellId));
 }