Aura.Channel.World.Entities.Creature.GetRndMagicDamage C# (CSharp) Метод

GetRndMagicDamage() публичный Метод

Calculates random base Magic damage for skill, using the given values.
http://wiki.mabinogiworld.com/view/Stats#Magic_Damage
public GetRndMagicDamage ( Skill skill, float baseMin, float baseMax ) : float
skill Skill
baseMin float
baseMax float
Результат float
		public float GetRndMagicDamage(Skill skill, float baseMin, float baseMax)
		{
			var rnd = RandomProvider.Get();

			// Base damage
			float min = baseMin;
			float max = baseMax;

			// Bonus
			var factor = rnd.Between(skill.RankData.FactorMin, skill.RankData.FactorMax);
			var totalMagicAttack = this.MagicAttack + this.MagicAttackMod;

			var wandBonus = 0f;
			var chargeMultiplier = 0f;

			if (skill.Info.Id == SkillId.Icebolt && this.RightHand != null && this.RightHand.HasTag("/ice_wand/"))
				wandBonus = 5;
			else if (skill.Info.Id == SkillId.Firebolt && this.RightHand != null && this.RightHand.HasTag("/fire_wand/"))
				wandBonus = 5;
			else if (skill.Info.Id == SkillId.Lightningbolt && this.RightHand != null && this.RightHand.HasTag("/lightning_wand/"))
				wandBonus = 3.5f;

			if (skill.Info.Id == SkillId.Firebolt || skill.Info.Id == SkillId.IceSpear || skill.Info.Id == SkillId.HailStorm)
				chargeMultiplier = skill.Stacks;

			var bonusDamage = (float)Math.Floor(wandBonus * (1 + chargeMultiplier)) + (factor * totalMagicAttack);
			min += bonusDamage;
			max += bonusDamage;

			// Random balance multiplier
			var multiplier = this.GetRndMagicBalance() / 100f;

			if (min > max)
				min = max;

			return (min + (max - min) * multiplier);
		}

Usage Example

Пример #1
0
		/// <summary>
		/// Returns damage for attacker using skill.
		/// </summary>
		/// <param name="attacker"></param>
		/// <param name="skill"></param>
		/// <returns></returns>
		protected override float GetDamage(Creature attacker, Skill skill)
		{
			var damage = attacker.GetRndMagicDamage(skill, skill.RankData.Var1, skill.RankData.Var2);

			if (skill.Stacks < skill.RankData.StackMax)
				damage *= skill.Stacks;
			else
				damage *= 6.5f;

			return damage;
		}
All Usage Examples Of Aura.Channel.World.Entities.Creature::GetRndMagicDamage