Esempio n. 1
0
 public void StrikeNormal()
 {
     HitFlags      = HitFlags.PlayWoundAnimation;
     VictimState   = VictimState.Wound;
     ProcHitFlags |= ProcHitFlags.NormalHit;
     Blocked       = 0;
     IsCritical    = false;
     DoStrike();
 }
Esempio n. 2
0
 public void StrikeNormal()
 {
     this.HitFlags      = HitFlags.PlayWoundAnimation;
     this.VictimState   = VictimState.Wound;
     this.ProcHitFlags |= ProcHitFlags.NormalHit;
     this.Blocked       = 0;
     this.IsCritical    = false;
     this.DoStrike();
 }
Esempio n. 3
0
 public void Dodge()
 {
     Damage        = 0;
     VictimState   = VictimState.Dodge;
     HitFlags      = HitFlags.Miss;
     ProcHitFlags |= ProcHitFlags.Dodge;
     Blocked       = 0;
     IsCritical    = false;
     DoStrike();
 }
Esempio n. 4
0
 public void StrikeGlancing()
 {
     Damage        = (int)(Damage * CalcGlancingBlowDamageFactor());
     VictimState   = VictimState.Wound;
     HitFlags      = HitFlags.PlayWoundAnimation | HitFlags.Glancing;
     ProcHitFlags |= ProcHitFlags.NormalHit;
     Blocked       = 0;
     IsCritical    = false;
     DoStrike();
 }
Esempio n. 5
0
 public void StrikeCrushing()
 {
     Damage        = (Damage * 10 + 5) / 15;                     // == Damage * 1.5f
     HitFlags      = HitFlags.PlayWoundAnimation | HitFlags.Crushing;
     VictimState   = VictimState.Wound;
     ProcHitFlags |= ProcHitFlags.NormalHit;
     Blocked       = 0;
     IsCritical    = false;
     DoStrike();
 }
Esempio n. 6
0
 public void Dodge()
 {
     this.Damage        = 0;
     this.VictimState   = VictimState.Dodge;
     this.HitFlags      = HitFlags.Miss;
     this.ProcHitFlags |= ProcHitFlags.Dodge;
     this.Blocked       = 0;
     this.IsCritical    = false;
     this.DoStrike();
 }
Esempio n. 7
0
 public void Parry()
 {
     Damage        = 0;
     VictimState   = VictimState.Parry;
     HitFlags      = HitFlags.Miss;
     ProcHitFlags |= ProcHitFlags.Parry;
     Blocked       = 0;
     IsCritical    = false;
     DoStrike();
 }
Esempio n. 8
0
 public void StrikeCritical()
 {
     IsCritical = Victim.StandState == StandState.Stand;
     SetCriticalDamage();
     HitFlags      = HitFlags.PlayWoundAnimation | HitFlags.ResistType1 | HitFlags.ResistType2 | HitFlags.CriticalStrike;
     VictimState   = VictimState.Wound;
     ProcHitFlags |= ProcHitFlags.CriticalHit;
     Blocked       = 0;
     // Automatic double damage against sitting target - but doesn't proc crit abilities
     DoStrike();
 }
Esempio n. 9
0
 public void StrikeCritical()
 {
     this.IsCritical = this.Victim.StandState == StandState.Stand;
     this.SetCriticalDamage();
     this.HitFlags = HitFlags.PlayWoundAnimation | HitFlags.ResistType1 | HitFlags.ResistType2 |
                     HitFlags.CriticalStrike;
     this.VictimState   = VictimState.Wound;
     this.ProcHitFlags |= ProcHitFlags.CriticalHit;
     this.Blocked       = 0;
     this.DoStrike();
 }
Esempio n. 10
0
 public void StrikeCritical()
 {
     IsCritical = Victim.StandState == StandState.Stand;
     SetCriticalDamage();
     HitFlags = HitFlags.PlayWoundAnimation | HitFlags.ResistType1 | HitFlags.ResistType2 |
                HitFlags.CriticalStrike;
     VictimState   = VictimState.Wound;
     ProcHitFlags |= ProcHitFlags.CriticalHit;
     Blocked       = 0;
     DoStrike();
 }
Esempio n. 11
0
 public void Block()
 {
     HitFlags      = HitFlags.PlayWoundAnimation | HitFlags.Block;
     VictimState   = VictimState.Block;
     ProcHitFlags |= ProcHitFlags.Block;
     Blocked       = CalcBlockDamage();
     if (Damage == Blocked)
     {
         ProcHitFlags |= ProcHitFlags.FullBlock;
     }
     IsCritical = false;
     DoStrike();
 }
Esempio n. 12
0
 public void Block()
 {
     this.HitFlags      = HitFlags.PlayWoundAnimation | HitFlags.Block;
     this.VictimState   = VictimState.Block;
     this.ProcHitFlags |= ProcHitFlags.Block;
     this.Blocked       = this.CalcBlockDamage();
     if (this.Damage == this.Blocked)
     {
         this.ProcHitFlags |= ProcHitFlags.FullBlock;
     }
     this.IsCritical = false;
     this.DoStrike();
 }
Esempio n. 13
0
		public void StrikeCritical()
		{
			IsCritical = Victim.StandState == StandState.Stand;
			SetCriticalDamage();
			HitFlags = HitFlags.NormalSwingAnim | HitFlags.Resist_1 | HitFlags.Resist_2 | HitFlags.CriticalStrike;
			VictimState = VictimState.Wound;
			Blocked = 0;
			// Automatic double damage against sitting target - but doesn't proc crit abilities
			DoStrike();
		}
Esempio n. 14
0
		public void StrikeCrushing()
		{
			Damage = (Damage * 10 + 5) / 15;		// == Damage * 1.5f
			HitFlags = HitFlags.NormalSwingAnim | HitFlags.Crushing;
			VictimState = VictimState.Wound;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 15
0
		public void Parry()
		{
			Damage = 0;
			VictimState = VictimState.Parry;
			HitFlags = HitFlags.Miss;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 16
0
		public void StrikeGlancing()
		{
			Damage = (int)(Damage * CalcGlancingBlowDamageFactor());
			VictimState = VictimState.Wound;
			HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Glancing;
			ProcHitFlags |= ProcHitFlags.NormalHit;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 17
0
 public static bool HasAnyFlag(this HitFlags flags, HitFlags otherFlags)
 {
     return((flags & otherFlags) != 0);
 }
Esempio n. 18
0
		public void Dodge()
		{
			Damage = 0;
			VictimState = VictimState.Dodge;
			HitFlags = HitFlags.Miss;
			ProcHitFlags |= ProcHitFlags.Dodge;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 19
0
		/// <summary>
		/// Strikes the target
		/// </summary>
		public void DoStrike()
		{
			if (Damage > 0)
			{
				var level = Attacker.Level;
				var res = Victim.GetResistance(UsedSchool) - Attacker.GetTargetResistanceMod(UsedSchool);

				if (res > 0)
				{
					// This formula only applies for armor
					if (UsedSchool == DamageSchool.Physical)
					{
						if (level < 60)
						{
							ResistPct = (res / (res + 400f + 85f * level)) * 100f;
						}
						else
						{
							ResistPct = (res / (res - 22167.5f + 467.5f * level)) * 100f;
						}

					}
					else
					{
						// Magical damageschool
						ResistPct = Victim.GetResistChancePct(Attacker, UsedSchool);
					}
				}
				else
				{
					ResistPct = 0;
				}

				if (ResistPct > 75)
				{
					ResistPct = 75;
				}
				if (ResistPct < 0)
				{
					ResistPct = 0;
				}

				Victim.DeathPrevention++;
				Attacker.DeathPrevention++;
				try
				{
					// add mods and call events
					AddDamageMods();
					Victim.OnDefend(this);
					Attacker.OnAttack(this);

					Resisted = MathUtil.RoundInt(ResistPct * Damage / 100f);
					if (Absorbed > 0)
					{
						HitFlags |= HitFlags.Absorb_1 | HitFlags.Absorb_2;
					}
					else
					{
						Absorbed = Resisted = 0;
					}

					if (Weapon == Attacker.OffHandWeapon)
					{
						HitFlags |= HitFlags.LeftSwing;
					}

					Victim.DoRawDamage(this);
				}
				finally
				{
					Victim.DeathPrevention--;
					Attacker.DeathPrevention--;
				}
			}

			//if ()
			//CombatHandler.SendMeleeDamage(attacker, this, schools, hitInfo, (uint)totalDamage,
			//(uint)absorbed, (uint)resisted, (uint)blocked, victimState);
			if (SpellEffect != null)
			{
				CombatLogHandler.SendMagicDamage(this);
			}
			else
			{
				CombatHandler.SendAttackerStateUpdate(this);
			}
		}
Esempio n. 20
0
        /// <summary>
        /// Whether the given flags has any of the specified flags
        /// </summary>
        /// <param name="flags"></param>
        /// <param name="toCheck"></param>
        /// <returns></returns>
        public static bool HasAny(this HitFlags flags, HitFlags toCheck)
        {
            return (flags & toCheck) != 0;
		}
Esempio n. 21
0
		public void StrikeCritical()
		{
			Damage = Attacker.CalcCritDamage(Damage, Victim, SpellEffect).RoundInt();
			HitFlags = HitFlags.NormalSwingAnim | HitFlags.Resist_1 | HitFlags.Resist_2 | HitFlags.CriticalStrike;
			VictimState = VictimState.Wound;
			Blocked = 0;
			// Automatic double damage against sitting target - but doesn't proc crit abilities
			IsCritical = Victim.StandState == StandState.Stand;
			DoStrike();
		}
Esempio n. 22
0
		public static bool HasAnyFlag(this HitFlags flags, HitFlags otherFlags)
		{
			return (flags & otherFlags) != 0;
		}
Esempio n. 23
0
        /// <summary>
        /// Strikes the target
        /// </summary>
        public void DoStrike()
        {
            if (Damage > 0)
            {
                var level = Attacker.Level;
                var res   = Victim.GetResistance(UsedSchool) - Attacker.GetTargetResistanceMod(UsedSchool);

                if (res > 0)
                {
                    ProcHitFlags |= ProcHitFlags.Resist;

                    // This formula only applies for armor
                    if (UsedSchool == DamageSchool.Physical)
                    {
                        if (level < 60)
                        {
                            ResistPct = (res / (res + 400f + 85f * level)) * 100f;
                        }
                        else
                        {
                            ResistPct = (res / (res - 22167.5f + 467.5f * level)) * 100f;
                        }
                    }
                    else
                    {
                        // Magical damageschool
                        ResistPct = Victim.GetResistChancePct(Attacker, UsedSchool);
                    }
                }
                else
                {
                    ResistPct = 0;
                }

                if (ResistPct > 75)
                {
                    ResistPct = 75;
                }
                if (ResistPct < 0)
                {
                    ResistPct = 0;
                }

                Victim.DeathPrevention++;
                Attacker.DeathPrevention++;
                try
                {
                    // add mods and call events
                    AddDamageMods();
                    Victim.OnDefend(this);
                    Attacker.OnAttack(this);

                    Resisted = MathUtil.RoundInt(ResistPct * Damage / 100f);
                    if (Absorbed > 0)
                    {
                        HitFlags     |= HitFlags.AbsorbType1 | HitFlags.AbsorbType2;
                        ProcHitFlags |= ProcHitFlags.Absorb;
                    }
                    else
                    {
                        Absorbed = Resisted = 0;
                    }

                    if (Weapon == Attacker.OffHandWeapon)
                    {
                        HitFlags |= HitFlags.OffHand;
                    }

                    Victim.DoRawDamage(this);
                }
                finally
                {
                    Victim.DeathPrevention--;
                    Attacker.DeathPrevention--;
                }
            }

            //if ()
            //CombatHandler.SendMeleeDamage(attacker, this, schools, hitInfo, (uint)totalDamage,
            //(uint)absorbed, (uint)resisted, (uint)blocked, victimState);
            if (SpellEffect != null)
            {
                CombatLogHandler.SendMagicDamage(this);
            }
            else
            {
                CombatHandler.SendAttackerStateUpdate(this);
            }

            TriggerProcOnStrike();
        }
Esempio n. 24
0
		public void StrikeCrushing()
		{
			Damage = (Damage * 10 + 5) / 15;		// == Damage * 1.5f
			HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Crushing;
			VictimState = VictimState.Wound;
			ProcHitFlags |= ProcHitFlags.NormalHit;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 25
0
		public void StrikeCritical()
		{
			IsCritical = Victim.StandState == StandState.Stand;
			SetCriticalDamage();
			HitFlags = HitFlags.PlayWoundAnimation | HitFlags.ResistType1 | HitFlags.ResistType2 | HitFlags.CriticalStrike;
			VictimState = VictimState.Wound;
			ProcHitFlags |= ProcHitFlags.CriticalHit;
			Blocked = 0;
			// Automatic double damage against sitting target - but doesn't proc crit abilities
			DoStrike();
		}
Esempio n. 26
0
		public void StrikeGlancing()
		{
			Damage = (int)(Damage * CalcGlancingBlowDamageFactor());
			VictimState = VictimState.Wound;
			HitFlags = HitFlags.NormalSwingAnim | HitFlags.Glancing;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 27
0
		public void StrikeNormal()
		{
			HitFlags = HitFlags.NormalSwingAnim;
			VictimState = VictimState.Wound;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}
Esempio n. 28
0
		public void Block()
		{
			HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Block;
			VictimState = VictimState.Block;
			ProcHitFlags |= ProcHitFlags.Block;
			Blocked = CalcBlockDamage();
			if (Damage == Blocked)
			{
				ProcHitFlags |= ProcHitFlags.FullBlock;
			}
			IsCritical = false;
			DoStrike();
		}
Esempio n. 29
0
 /// <summary>
 /// Return the top-most widget at the given screen coords.
 /// </summary>
 /// <param name="pt">The screen coords.</param>
 /// <param name="hitflags">The set of flags to check for.</param>
 /// <returns>The found widget, or null.</returns>
 public Widget ChildAtPoint(Point pt, HitFlags hitflags)
 {
     for (int i = children.Count - 1; i >= 0; i--)
     {
         Widget child = children[i].ChildAtPoint(pt, hitflags);
         if (child != null)
             return child;
     }
     return (HitFlags & hitflags) != 0 && CalculatedBoundsI.Contains(pt) ? this : null;
 }
Esempio n. 30
0
		/// <summary>
		/// Strikes the target
		/// </summary>
		public void DoStrike()
		{
			if (Damage > 0)
			{
				var level = Attacker.Level;
				float resPct;
				var res = Victim.GetResistance(UsedSchool) - Attacker.GetTargetResistanceMod(UsedSchool);


                if (res > 0)
                {
                    // This formula only applies for armor
                    if (UsedSchool == DamageSchool.Physical)
                    {
                        if (level < 60)
                        {
                            resPct = (res/(res + 400f + 85f*level))*100f;
                        }
                        else
                        {
                            resPct = (res/(res - 22167.5f + 467.5f*level))*100f;
                        }

                    }
                    else
                    {
                        // Magical damageschool
                        resPct = Victim.GetResistChance(Attacker, UsedSchool);
                    }
                }
                else
                {
                    resPct = 0;
                }

			    if (resPct > 75)
			    {
			        resPct = 75;
			    }
			    if (resPct < 0)
			    {
			        resPct = 0;
			    }

			    Damage = Attacker.AddDamageMods(Damage, SpellEffect, UsedSchool);

				Resisted = (resPct * Damage / 100f).RoundInt();
				Absorbed = Victim.Absorb(UsedSchool, Damage);
				if (Absorbed > 0)
				{
					HitFlags |= HitFlags.Absorb_1 | HitFlags.Absorb_2;
				}
			}
			else
			{
				Absorbed = Resisted = 0;
			}

			if (Weapon == Attacker.OffHandWeapon)
			{
				HitFlags |= HitFlags.LeftSwing;
			}

			Victim.DoRawDamage(this);

			//if ()
			//CombatHandler.SendMeleeDamage(attacker, this, schools, hitInfo, (uint)totalDamage,
			//(uint)absorbed, (uint)resisted, (uint)blocked, victimState);
			if (SpellEffect != null)
			{
				CombatLogHandler.SendMagicDamage(this);
			}
			else
			{
				CombatHandler.SendAttackerStateUpdate(this);
			}

			// reset Target
			Victim = null;
		}
Esempio n. 31
0
 public static bool HasAnyFlag(this HitFlags flags, HitFlags otherFlags)
 {
     return((flags & otherFlags) != HitFlags.NormalSwing);
 }
Esempio n. 32
0
		public void Block()
		{
			HitFlags = HitFlags.NormalSwingAnim | HitFlags.Block;
			VictimState = VictimState.Block;
			Blocked = CalcBlockDamage();
			IsCritical = false;
			DoStrike();
		}
Esempio n. 33
0
		public void Block()
		{
			HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Block;
			VictimState = VictimState.Block;
			Blocked = CalcBlockDamage();
			IsCritical = false;
			DoStrike();
		}
Esempio n. 34
0
		public void StrikeNormal()
		{
			HitFlags = HitFlags.PlayWoundAnimation;
			VictimState = VictimState.Wound;
			ProcHitFlags |= ProcHitFlags.NormalHit;
			Blocked = 0;
			IsCritical = false;
			DoStrike();
		}