// Copyright (c) CypherCore All rights reserved. // Licensed under the GNU GENERAL PUBLIC LICENSE. See LICENSE file in the project root for full license information. using Framework.Constants; using Game.Entities; using System.Collections.Generic; namespace Game.Networking.Packets { class UpdateLastInstance : ServerPacket { public UpdateLastInstance() : base(ServerOpcodes.UpdateLastInstance) { } public override void Write() { _worldPacket.WriteUInt32(MapID); } public uint MapID; } class InstanceInfoPkt : ServerPacket { public InstanceInfoPkt() : base(ServerOpcodes.InstanceInfo) { } public override void Write() { _worldPacket.WriteInt32(LockList.Count); foreach (InstanceLockPkt lockInfos in LockList) lockInfos.Write(_worldPacket); } public List LockList = new(); } class ResetInstances : ClientPacket { public ResetInstances(WorldPacket packet) : base(packet) { } public override void Read() { } } class InstanceReset : ServerPacket { public InstanceReset() : base(ServerOpcodes.InstanceReset) { } public override void Write() { _worldPacket.WriteUInt32(MapID); } public uint MapID; } class InstanceResetFailed : ServerPacket { public InstanceResetFailed() : base(ServerOpcodes.InstanceResetFailed) { } public override void Write() { _worldPacket.WriteUInt32(MapID); _worldPacket.WriteBits(ResetFailedReason, 2); _worldPacket.FlushBits(); } public uint MapID; public ResetFailedReason ResetFailedReason; } class ResetFailedNotify : ServerPacket { public ResetFailedNotify() : base(ServerOpcodes.ResetFailedNotify) { } public override void Write() { } } class InstanceSaveCreated : ServerPacket { public InstanceSaveCreated() : base(ServerOpcodes.InstanceSaveCreated) { } public override void Write() { _worldPacket.WriteBit(Gm); _worldPacket.FlushBits(); } public bool Gm; } class InstanceLockResponse : ClientPacket { public InstanceLockResponse(WorldPacket packet) : base(packet) { } public override void Read() { AcceptLock = _worldPacket.HasBit(); } public bool AcceptLock; } class RaidGroupOnly : ServerPacket { public RaidGroupOnly() : base(ServerOpcodes.RaidGroupOnly) { } public override void Write() { _worldPacket.WriteInt32(Delay); _worldPacket.WriteUInt32((uint)Reason); } public int Delay; public RaidGroupReason Reason; } class PendingRaidLock : ServerPacket { public PendingRaidLock() : base(ServerOpcodes.PendingRaidLock) { } public override void Write() { _worldPacket.WriteInt32(TimeUntilLock); _worldPacket.WriteUInt32(CompletedMask); _worldPacket.WriteBit(Extending); _worldPacket.WriteBit(WarningOnly); _worldPacket.FlushBits(); } public int TimeUntilLock; public uint CompletedMask; public bool Extending; public bool WarningOnly; } class RaidInstanceMessage : ServerPacket { public RaidInstanceMessage() : base(ServerOpcodes.RaidInstanceMessage) { } public override void Write() { _worldPacket.WriteInt32((int)Type); _worldPacket.WriteUInt32(MapID); _worldPacket.WriteUInt32((uint)DifficultyID); _worldPacket.WriteInt32(TimeLeft); _worldPacket.WriteBits(WarningMessage, 8); _worldPacket.WriteBit(Locked); _worldPacket.WriteBit(Extended); _worldPacket.FlushBits(); } public InstanceResetWarningType Type; public uint MapID; public Difficulty DifficultyID; public int TimeLeft; public string WarningMessage; // GlobalStrings tag public bool Locked; public bool Extended; } class InstanceEncounterEngageUnit : ServerPacket { public InstanceEncounterEngageUnit() : base(ServerOpcodes.InstanceEncounterEngageUnit, ConnectionType.Instance) { } public override void Write() { _worldPacket.WritePackedGuid(Unit); _worldPacket.WriteUInt8(TargetFramePriority); } public ObjectGuid Unit; public byte TargetFramePriority; // used to set the initial position of the frame if multiple frames are sent } class InstanceEncounterDisengageUnit : ServerPacket { public InstanceEncounterDisengageUnit() : base(ServerOpcodes.InstanceEncounterDisengageUnit, ConnectionType.Instance) { } public override void Write() { _worldPacket.WritePackedGuid(Unit); } public ObjectGuid Unit; } class InstanceEncounterChangePriority : ServerPacket { public InstanceEncounterChangePriority() : base(ServerOpcodes.InstanceEncounterChangePriority, ConnectionType.Instance) { } public override void Write() { _worldPacket.WritePackedGuid(Unit); _worldPacket.WriteUInt8(TargetFramePriority); } public ObjectGuid Unit; public byte TargetFramePriority; // used to update the position of the unit's current frame } class InstanceEncounterTimerStart : ServerPacket { public int TimeRemaining; public InstanceEncounterTimerStart() : base(ServerOpcodes.InstanceEncounterTimerStart) { } public override void Write() { } } class InstanceEncounterObjectiveStart : ServerPacket { public int ObjectiveID; public InstanceEncounterObjectiveStart() : base(ServerOpcodes.InstanceEncounterObjectiveStart) { } public override void Write() { } } class InstanceEncounterObjectiveUpdate : ServerPacket { public int ObjectiveID; public int ProgressAmount; public InstanceEncounterObjectiveUpdate() : base(ServerOpcodes.InstanceEncounterObjectiveUpdate) { } public override void Write() { } } class InstanceEncounterObjectiveComplete : ServerPacket { public int ObjectiveID; public InstanceEncounterObjectiveComplete() : base(ServerOpcodes.InstanceEncounterObjectiveComplete) { } public override void Write() { } } class InstanceEncounterPhaseShiftChanged : ServerPacket { public InstanceEncounterPhaseShiftChanged() : base(ServerOpcodes.InstanceEncounterPhaseShiftChanged, ConnectionType.Instance) { } public override void Write() { } } class InstanceEncounterStart : ServerPacket { public InstanceEncounterStart() : base(ServerOpcodes.InstanceEncounterStart, ConnectionType.Instance) { } public override void Write() { _worldPacket.WriteUInt32(InCombatResCount); _worldPacket.WriteUInt32(MaxInCombatResCount); _worldPacket.WriteUInt32(CombatResChargeRecovery); _worldPacket.WriteUInt32(NextCombatResChargeTime); _worldPacket.WriteBit(InProgress); _worldPacket.FlushBits(); } public uint InCombatResCount; // amount of usable battle ressurections public uint MaxInCombatResCount; public uint CombatResChargeRecovery; public uint NextCombatResChargeTime; public bool InProgress = true; } class InstanceEncounterEnd : ServerPacket { public InstanceEncounterEnd() : base(ServerOpcodes.InstanceEncounterEnd, ConnectionType.Instance) { } public override void Write() { } } class InstanceEncounterInCombatResurrection : ServerPacket { public InstanceEncounterInCombatResurrection() : base(ServerOpcodes.InstanceEncounterInCombatResurrection, ConnectionType.Instance) { } public override void Write() { } } class InstanceEncounterGainCombatResurrectionCharge : ServerPacket { public InstanceEncounterGainCombatResurrectionCharge() : base(ServerOpcodes.InstanceEncounterGainCombatResurrectionCharge, ConnectionType.Instance) { } public override void Write() { _worldPacket.WriteInt32(InCombatResCount); _worldPacket.WriteUInt32(CombatResChargeRecovery); } public int InCombatResCount; public uint CombatResChargeRecovery; } class BossKill : ServerPacket { public BossKill() : base(ServerOpcodes.BossKill, ConnectionType.Instance) { } public override void Write() { _worldPacket.WriteUInt32(DungeonEncounterID); } public uint DungeonEncounterID; } //Structs public struct InstanceLockPkt { public void Write(WorldPacket data) { data.WriteUInt32(MapID); data.WriteUInt32(DifficultyID); data.WriteUInt64(InstanceID); data.WriteInt32(TimeRemaining); data.WriteUInt32(CompletedMask); data.WriteBit(Locked); data.WriteBit(Extended); data.FlushBits(); } public ulong InstanceID; public uint MapID; public uint DifficultyID; public int TimeRemaining; public uint CompletedMask; public bool Locked; public bool Extended; } }