コード例 #1
0
        public static void SendMagicDamage(WorldObject victim, IEntity attacker,
                                           SpellId spell, uint damage, uint overkill, DamageSchoolMask schools,
                                           uint absorbed, uint resisted, uint blocked,
                                           bool unkBool, SpellLogFlags flags)
        {
            using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40))
            {
                victim.EntityId.WritePacked(packet);
                if (attacker != null)
                {
                    attacker.EntityId.WritePacked(packet);
                }
                else
                {
                    packet.Write((byte)0);
                }
                packet.Write((uint)spell);

                packet.Write(damage);
                packet.Write(overkill);
                packet.Write((byte)schools);
                packet.Write(absorbed);
                packet.Write(resisted);
                packet.Write(0);                                        // apparently always 0
                packet.Write(unkBool);                                  // 0 or 1
                packet.Write(blocked);
                // also flags 0x8, 0x10,
                packet.Write((uint)flags);
                packet.Write((byte)0);                // unused by client

                victim.SendPacketToArea(packet, true, false);
            }
        }
コード例 #2
0
ファイル: CombatLogHandler.cs プロジェクト: uvbs/Asda2-Server
 public static void SendMagicDamage(WorldObject victim, IEntity attacker, SpellId spell, uint damage,
                                    uint overkill, DamageSchoolMask schools, uint absorbed, uint resisted, uint blocked, bool unkBool,
                                    SpellLogFlags flags)
 {
     using (RealmPacketOut packet =
                new RealmPacketOut((PacketId)RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40))
     {
         victim.EntityId.WritePacked((BinaryWriter)packet);
         if (attacker != null)
         {
             attacker.EntityId.WritePacked((BinaryWriter)packet);
         }
         else
         {
             packet.Write((byte)0);
         }
         packet.Write((uint)spell);
         packet.Write(damage);
         packet.Write(overkill);
         packet.Write((byte)schools);
         packet.Write(absorbed);
         packet.Write(resisted);
         packet.Write(0);
         packet.Write(unkBool);
         packet.Write(blocked);
         packet.Write((uint)flags);
         packet.Write((byte)0);
         victim.SendPacketToArea(packet, true, false, Locale.Any, new float?());
     }
 }
コード例 #3
0
ファイル: CombatLogHandler.cs プロジェクト: uvbs/Asda2-Server
 /// <summary>
 /// Any spell and ranged damage
 /// SMSG_SPELLNONMELEEDAMAGELOG
 /// </summary>
 public static void SendMagicDamage(DamageAction state)
 {
     using (RealmPacketOut packet =
                new RealmPacketOut((PacketId)RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40))
     {
         state.Victim.EntityId.WritePacked((BinaryWriter)packet);
         if (state.Attacker != null)
         {
             state.Attacker.EntityId.WritePacked((BinaryWriter)packet);
         }
         else
         {
             packet.Write((byte)0);
         }
         packet.Write(state.SpellEffect != null ? state.SpellEffect.Spell.Id : 0U);
         packet.Write(state.Damage);
         packet.Write(0);
         packet.Write((byte)state.Schools);
         packet.Write(state.Absorbed);
         packet.Write(state.Resisted);
         packet.Write(state.Schools.HasAnyFlag(DamageSchoolMask.Physical));
         packet.Write((byte)0);
         packet.Write(state.Blocked);
         SpellLogFlags spellLogFlags = state.IsCritical ? SpellLogFlags.Critical : SpellLogFlags.None;
         packet.Write((int)spellLogFlags);
         packet.Write((byte)0);
         state.Victim.SendPacketToArea(packet, true, false, Locale.Any, new float?());
     }
 }
コード例 #4
0
ファイル: CombatLogHandler.cs プロジェクト: pallmall/WCell
		public static void SendMagicDamage(WorldObject victim, IEntity attacker,
			SpellId spell, uint damage, uint overkill, DamageSchoolMask schools,
			uint absorbed, uint resisted, uint blocked, 
			bool unkBool, SpellLogFlags  flags)
		{
			using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40))
			{
				victim.EntityId.WritePacked(packet);
				if (attacker != null)
				{
					attacker.EntityId.WritePacked(packet);
				}
				else
				{
					packet.Write((byte)0);
				}
				packet.Write((uint)spell);

				packet.Write(damage);
				packet.Write(overkill);
				packet.Write((byte)schools);
				packet.Write(absorbed);
				packet.Write(resisted);
				packet.Write(0);				// apparently always 0
				packet.Write(unkBool);			// 0 or 1
				packet.Write(blocked);
				// also flags 0x8, 0x10, 
				packet.Write((uint)flags);
				packet.Write((byte)0);// unused by client

				victim.SendPacketToArea(packet, true);
			}
		}