public uint[] BuidPetActionBar() { var bar = new uint[PetConstants.PetActionCount]; var i = 0; bar[i++] = new PetActionEntry { Action = PetAction.Attack, Type = PetActionType.SetAction }.Raw; bar[i++] = new PetActionEntry { Action = PetAction.Follow, Type = PetActionType.SetAction }.Raw; bar[i++] = new PetActionEntry { Action = PetAction.Stay, Type = PetActionType.SetAction }.Raw; var spells = m_spells.GetEnumerator(); for (byte j = 0; j < PetConstants.PetSpellCount; j++) { if (!spells.MoveNext()) { bar[i++] = new PetActionEntry { Type = PetActionType.CastSpell2 + j }.Raw; } else { var spell = spells.Current; var actionEntry = new PetActionEntry(); actionEntry.SetSpell(spell.SpellId, PetActionType.DefaultSpellSetting); bar[i++] = actionEntry.Raw; } } bar[i++] = new PetActionEntry { AttackMode = PetAttackMode.Aggressive, Type = PetActionType.SetMode }.Raw; bar[i++] = new PetActionEntry { AttackMode = PetAttackMode.Defensive, Type = PetActionType.SetMode }.Raw; bar[i++] = new PetActionEntry { AttackMode = PetAttackMode.Passive, Type = PetActionType.SetMode }.Raw; return bar; }
public static void SendPlayerPossessedPetSpells(Character owner, Character possessed) { using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_PET_SPELLS, 20 + (PetConstants.PetActionCount * 4) + 1 + (0) + 1 + (0))) { packet.Write(possessed.EntityId); packet.Write((ushort) CreatureFamilyId.None); packet.Write(0); // duration packet.Write((byte) PetAttackMode.Passive); packet.Write((byte) PetAction.Stay); packet.Write((ushort) PetFlags.None); var action = new PetActionEntry { Action = PetAction.Attack, Type = PetActionType.SetAction }.Raw; packet.Write(action); for (var i = 1; i < PetConstants.PetActionCount; i++) { action = new PetActionEntry { Type = PetActionType.SetAction }.Raw; packet.Write(action); } packet.Write((byte) 0); // No Spells packet.Write((byte) 0); // No Cooldowns owner.Send(packet); } }
public uint[] BuildVehicleActionBar() { var bar = new uint[PetConstants.PetActionCount]; var i = 0; byte j; if (Entry.Spells != null) { var spells = Entry.Spells.GetEnumerator(); for (j = 0; j < PetConstants.PetSpellCount; j++) { if (!spells.MoveNext()) { bar[i++] = new PetActionEntry { Type = PetActionType.CastSpell2 + j }.Raw; } else { var spell = spells.Current; var actionEntry = new PetActionEntry(); if (spell.Value.IsPassive) { var cast = SpellCast; if (cast != null) cast.TriggerSelf(spell.Value); actionEntry.Type = PetActionType.CastSpell2 + j; } else { actionEntry.SetSpell(spell.Key, PetActionType.CastSpell2 + j); } bar[i++] = actionEntry.Raw; } } } else { for (j = 0; j < PetConstants.PetSpellCount; j++) { bar[i++] = new PetActionEntry { Type = PetActionType.CastSpell2 + j }.Raw; } } for (; j < PetConstants.PetActionCount; j++) { bar[i++] = new PetActionEntry { Type = PetActionType.CastSpell2 + j }.Raw; } return bar; }