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; } }
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; } }
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); }
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; }
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; } }
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)); }