public void doDamage(ulong GUID) { int dmg = 0; StatManager.CalculateSpellDamage(client.Player, null, spell, out dmg); ServerPacket pkg9 = new ServerPacket(SMSG.SPELLNONMELEEDAMAGELOG); // Target GUID pkg9.Write((ulong)GUID); // Caster GUID pkg9.Write((ulong)client.Player.GUID); // spellID pkg9.Write((short)spellId); // Fill the hole pkg9.Write((UInt16)0); // damage done pkg9.Write((short)dmg); // Fill the hole pkg9.Write((UInt16)0); // flag? pkg9.Write((byte)0x01); // damage absorbed pkg9.Write((UInt32)0); pkg9.Write((byte)0); pkg9.Write((byte)0); // damage blocked pkg9.Write((UInt32)0); pkg9.Write((byte)0); pkg9.Finish(); client.Player.MapTile.Map.Send(pkg9, client.Player.Position, 25.0f); client.Player.UpdateData(); // LivingObject targetObject = (LivingObject)ObjectManager.GetWorldObjectByGUID(GUID); // if (targetObject.ObjectType==OBJECTTYPE.UNIT) UnitBase uobj = (UnitBase)ObjectManager.GetWorldObject(OBJECTTYPE.UNIT, GUID); if (uobj != null) { client.Player.LastPosition = client.Player.Position;; // UnitBase uobj = (UnitBase)targetObject; if (!uobj.Attacking) { uobj.StartCombat(client.Player.GUID); } uobj.DealDamage(client.Player, dmg); if (uobj.Dead && this.player.Selection != null && this.player.Selection.GUID == GUID) { this.player.StopCombat(); } } }