public void MissImmune() { this.Damage = 0; this.VictimState = VictimState.Immune; this.ProcHitFlags |= ProcHitFlags.Immune; this.DoStrike(); }
public void Evade() { Damage = 0; VictimState = VictimState.Evade; ProcHitFlags |= ProcHitFlags.Evade; DoStrike(); }
public void Evade() { this.Damage = 0; this.VictimState = VictimState.Evade; this.ProcHitFlags |= ProcHitFlags.Evade; this.DoStrike(); }
public void MissImmune() { Damage = 0; VictimState = VictimState.Immune; ProcHitFlags |= ProcHitFlags.Immune; DoStrike(); }
public void StrikeNormal() { this.HitFlags = HitFlags.PlayWoundAnimation; this.VictimState = VictimState.Wound; this.ProcHitFlags |= ProcHitFlags.NormalHit; this.Blocked = 0; this.IsCritical = false; this.DoStrike(); }
public void StrikeNormal() { HitFlags = HitFlags.PlayWoundAnimation; VictimState = VictimState.Wound; ProcHitFlags |= ProcHitFlags.NormalHit; Blocked = 0; IsCritical = false; DoStrike(); }
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(); }
public void StrikeGlancing() { Damage = (int)(Damage * CalcGlancingBlowDamageFactor()); VictimState = VictimState.Wound; HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Glancing; ProcHitFlags |= ProcHitFlags.NormalHit; Blocked = 0; IsCritical = false; DoStrike(); }
public void OnCollisionEnter2D(Collision2D collision) { if (GameStateManager.GameState == StateEnum.Play) { if (collision.collider.tag == "Fire") { ThisVictimState = VictimState.Die; } } }
public void Dodge() { Damage = 0; VictimState = VictimState.Dodge; HitFlags = HitFlags.Miss; ProcHitFlags |= ProcHitFlags.Dodge; Blocked = 0; IsCritical = false; DoStrike(); }
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(); }
public void Parry() { Damage = 0; VictimState = VictimState.Parry; HitFlags = HitFlags.Miss; ProcHitFlags |= ProcHitFlags.Parry; Blocked = 0; IsCritical = false; DoStrike(); }
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(); }
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(); }
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(); }
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(); }
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(); }
void FixedUpdate() { if (GameStateManager.GameState == StateEnum.Play) { if (ThisVictimState != VictimState.Die) { if (victimRb2D.velocity.x > 0.1f) { transform.localRotation = Quaternion.Euler(0, 180f, 0); if (victimRb2D.velocity.x > runningSpeed) { ThisVictimState = VictimState.Run; } else { ThisVictimState = VictimState.Walk; } } else if (victimRb2D.velocity.x < -0.1f) { transform.localRotation = Quaternion.Euler(0, 0, 0); if (victimRb2D.velocity.x < -runningSpeed) { ThisVictimState = VictimState.Run; } else { ThisVictimState = VictimState.Walk; } } else if (Mathf.Approximately(victimRb2D.velocity.x, 0)) { ThisVictimState = VictimState.Idle; } } } }
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(); }
public void StrikeCrushing() { Damage = (Damage * 10 + 5) / 15; // == Damage * 1.5f HitFlags = HitFlags.NormalSwingAnim | HitFlags.Crushing; VictimState = VictimState.Wound; Blocked = 0; IsCritical = false; DoStrike(); }
public void Parry() { Damage = 0; VictimState = VictimState.Parry; HitFlags = HitFlags.Miss; Blocked = 0; IsCritical = false; DoStrike(); }
public void Evade() { Damage = 0; VictimState = VictimState.Evade; DoStrike(); }
/// <param name="swingFlag">usually 1</param> /// <returns>The actual damage (all resistances subtracted)</returns> public static uint SendMeleeDamage(WorldObject attacker, WorldObject target, DamageType type, HitInfo hitInfo, uint totalAmount, uint absorbed, uint resisted, uint blocked, VictimState victimState) { uint amount = totalAmount - blocked - absorbed - resisted; using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SMSG_ATTACKERSTATEUPDATE, 70)) { packet.WriteUInt((uint)hitInfo); attacker.EntityId.WritePacked(packet); target.EntityId.WritePacked(packet); packet.WriteUInt(totalAmount); packet.WriteByte(1); packet.WriteByte((uint)type); packet.WriteFloat(amount); packet.WriteUInt(amount); packet.WriteUInt(absorbed); packet.WriteUInt(resisted); packet.WriteUInt((uint)victimState); packet.Write(absorbed == 0 ? 0 : -1); packet.WriteUInt(0); packet.WriteUInt(blocked); target.PushPacketToSurroundingArea(packet, true, false); } return amount; }
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(); }
public void Evade() { Damage = 0; VictimState = VictimState.Evade; ProcHitFlags |= ProcHitFlags.Evade; DoStrike(); }
public void MissImmune() { Damage = 0; VictimState = VictimState.Immune; ProcHitFlags |= ProcHitFlags.Immune; DoStrike(); }
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(); }
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(); }
public void StrikeGlancing() { Damage = (int)(Damage * CalcGlancingBlowDamageFactor()); VictimState = VictimState.Wound; HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Glancing; ProcHitFlags |= ProcHitFlags.NormalHit; Blocked = 0; IsCritical = false; DoStrike(); }
public void StrikeNormal() { HitFlags = HitFlags.PlayWoundAnimation; VictimState = VictimState.Wound; ProcHitFlags |= ProcHitFlags.NormalHit; Blocked = 0; IsCritical = false; DoStrike(); }
public void StrikeGlancing() { Damage = (int)(Damage * CalcGlancingBlowDamageFactor()); VictimState = VictimState.Wound; HitFlags = HitFlags.NormalSwingAnim | HitFlags.Glancing; Blocked = 0; IsCritical = false; DoStrike(); }
public void StrikeNormal() { HitFlags = HitFlags.NormalSwingAnim; VictimState = VictimState.Wound; Blocked = 0; IsCritical = false; DoStrike(); }
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(); }
public void Dodge() { Damage = 0; VictimState = VictimState.Dodge; HitFlags = HitFlags.Miss; ProcHitFlags |= ProcHitFlags.Dodge; Blocked = 0; IsCritical = false; DoStrike(); }
public void MissImmune() { Damage = 0; VictimState = VictimState.Immune; DoStrike(); }
public void Block() { HitFlags = HitFlags.NormalSwingAnim | HitFlags.Block; VictimState = VictimState.Block; Blocked = CalcBlockDamage(); IsCritical = false; DoStrike(); }
public static bool ParseAttackerStateUpdateOpcode(GenericReader gr, GenericReader gr2, StringBuilder sb, StreamWriter swe, byte direction) { sb.AppendLine("Packet offset " + gr.BaseStream.Position.ToString("X2")); sb.AppendLine("Opcode SMSG_ATTACKERSTATEUPDATE (0x01B1)"); StreamWriter sw = new StreamWriter("attacker_state.log", true, Encoding.ASCII); HitInfo hi = (HitInfo)gr2.ReadUInt32(); ulong attacker = gr2.ReadPackedGuid(); ulong target = gr2.ReadPackedGuid(); uint damage = gr2.ReadUInt32(); sw.WriteLine("HitInfo {0}", hi); sw.WriteLine("attacker {0}", attacker.ToString("X16")); sw.WriteLine("target {0}", target.ToString("X16")); sw.WriteLine("damage {0}", damage); byte count = gr2.ReadByte(); sw.WriteLine("count {0}", count); for (byte i = 0; i < count; i++) { ITEM_DAMAGE_TYPE damagetype = (ITEM_DAMAGE_TYPE)gr2.ReadUInt32(); float damage2 = gr2.ReadSingle(); uint damage3 = gr2.ReadUInt32(); uint adsorb = gr2.ReadUInt32(); uint resist = gr2.ReadUInt32(); sw.WriteLine("damagetype {0}", damagetype); sw.WriteLine("damage2 {0}", damage2); sw.WriteLine("damage3 {0}", damage3); sw.WriteLine("adsorb {0}", adsorb); sw.WriteLine("resist {0}", resist); } VictimState targetstate = (VictimState)gr2.ReadUInt32(); uint unk1 = gr2.ReadUInt32(); uint unk2 = gr2.ReadUInt32(); uint blocked = gr2.ReadUInt32(); sw.WriteLine("targetstate {0}", targetstate); sw.WriteLine("unk1 {0}", unk1); sw.WriteLine("unk2 {0}", unk2); sw.WriteLine("blocked {0}", blocked); sw.WriteLine(); sw.Flush(); sw.Close(); if (gr2.BaseStream.Position == gr2.BaseStream.Length) { sb.AppendLine("parsed: ok..."); } else { sb.AppendLine("parsed: error..."); } return(true); }
public void Block() { HitFlags = HitFlags.PlayWoundAnimation | HitFlags.Block; VictimState = VictimState.Block; Blocked = CalcBlockDamage(); IsCritical = false; DoStrike(); }
/// <param name="swingFlag">usually 1</param> /// <returns>The actual damage (all resistances subtracted)</returns> public static uint SendMeleeDamage(WorldObject attacker, WorldObject target, DamageType type, HitInfo hitInfo, uint totalAmount, uint absorbed, uint resisted, uint blocked, VictimState victimState) { uint amount = totalAmount - blocked - absorbed - resisted; using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SMSG_ATTACKERSTATEUPDATE, 70)) { packet.WriteUInt((uint)hitInfo); attacker.EntityId.WritePacked(packet); target.EntityId.WritePacked(packet); packet.WriteUInt(totalAmount); packet.WriteByte(1); packet.WriteByte((uint)type); packet.WriteFloat(amount); packet.WriteUInt(amount); packet.WriteUInt(absorbed); packet.WriteUInt(resisted); packet.WriteUInt((uint)victimState); packet.Write(absorbed == 0 ? 0 : -1); packet.WriteUInt(0); packet.WriteUInt(blocked); target.PushPacketToSurroundingArea(packet, true, false); } return(amount); }