Packet: KeepAliveMessage and add all game packet opcodes

This commit is contained in:
Chord 2016-05-19 01:54:51 -04:00
parent 6b02d2faab
commit e8031f0109
3 changed files with 619 additions and 7 deletions

View file

@ -28,17 +28,610 @@ object GamePacketOpcode extends Enumeration {
DestroyMessage,
ReloadMessage,
MountVehicleMsg,
DismountVehicleMsg
DismountVehicleMsg,
UseItemMessage,
UnknownMessage17,
ChatMsg,
CharacterNoRecordMessage,
// OPCODE 20
CharacterInfoMessage,
UnknownMessage21,
BindPlayerMessage,
UnknownMessage23,
ObjectCreateMessage,
ObjectDeleteMessage,
UnknownMessage26,
VehicleStateMessage,
FrameVehicleStateMessage,
GenericObjectStateMsg,
// OPCODE 30
UnknownMessage30,
ActionResultMessage,
UnknownMessage32,
ActionProgressMessage,
ActionCancelMessage,
ActionCancelAcknowledgeMessage,
SetEmpireMessage,
EmoteMsg,
UnuseItemMessage,
ObjectDetachMessage,
// OPCODE 40
CreateShortcutMessage,
ChangeShortcutBankMessage,
ObjectAttachMessage,
UnknownMessage43,
PlanetsideAttributeMessage,
UnknownMessage45,
UnknownMessage46,
UnknownMessage47,
UnknownMessage48,
LoadMapMessage,
// OPCODE 50
PlayerAvatarChangedMessage,
ObjectHeldMessage,
WeaponFireMessage,
UnknownMessage53,
UnknownMessage54,
UnknownMessage55,
InventoryStateMessage,
UnknownMessage57,
ChangeFireStateMessage,
UnknownMessage59,
// OPCODE 60
UnknownMessage60,
QuantityUpdateMessage,
ArmorChangedMessage,
ProjectileStateMessage,
MountVehicleCargoMsg,
DismountVehicleCargoMsg,
CargoMountPointStatusMessage,
BeginZoningMessage,
UnknownMessage68,
ItemTransactionResultMessage,
// OPCODE 70
ChangeFireModeMessage,
ChangeAmmoMessage,
TimeOfDayMessage,
UnknownMessage73,
SpawnRequestMessage,
DeployRequestMessage,
UnknownMessage76,
RepairMessage,
ServerVehicleOverrideMsg,
UnknownMessage79,
// OPCODE 80
TargetingInfoMessage,
TriggerEffectMessage,
WeaponDryFireMessage,
UnknownMessage83,
HackMessage,
DroppodLaunchResponseMessage,
GenericObjectActionMessage,
AvatarVehicleTimerMessage,
AvatarImplantMessage,
UnknownMessage89,
// OPCODE 90
DelayedPathMountMsg,
OrbitalShuttleTimeMsg,
UnknownMessage92,
UnknownMessage93,
UnknownMessage94,
FavoritesResponse,
FavoritesMessage,
ObjectDetectedMessage,
UnknownMessage98,
SetChatFilterMessage,
// OPCODE 100
AvatarSearchCriteriaMessage,
AvatarSearchResponse,
WeaponJammedMessage,
LinkDeadAwarenessMsg,
DroppodFreefallingMessage,
AvatarFirstTimeEventMessage,
AggravatedDamageMessage,
TriggerSoundMessage,
UnknownMessage108,
UnknownMessage109,
// OPCODE 110
UnknownMessage110,
SquadMembershipResponse,
SquadMemberEvent,
PlatoonEvent,
UnknownMessage114,
FriendsResponse,
TriggerEnvironmentalDamageMessage,
TrainingZoneMessage,
DeployableObjectsInfoMessage,
SquadState,
// OPCODE 120
OxygenStateMessage,
TradeMessage,
UnknownMessage122,
DamageFeedbackMessage,
UnknownMessage124,
UnknownMessage125,
UnknownMessage126,
AvatarStatisticsMessage,
GenericObjectAction2Message,
DestroyDisplayMessage,
// OPCODE 130
TriggerBotAction,
UnknownMessage131,
SquadWaypointEvent,
OffshoreVehicleMessage,
ObjectDeployedMessage,
ObjectDeployedCountMessage,
UnknownMessage136,
UnknownMessage137,
PlayerStasisMessage,
UnknownMessage139,
// OPCODE 140
UnknownMessage140,
OutfitMembershipResponse,
UnknownMessage142,
OutfitEvent,
OutfitMemberEvent,
OutfitMemberUpdate,
PlanetsideStringAttributeMessage,
DataChallengeMessage,
UnknownMessage148,
WeatherMessage,
// OPCODE 150
SimDataChallengeResp,
UnknownMessage151,
OutfitListEvent,
EmpireIncentivesMessage,
UnknownMessage154,
SyncMessage,
DebugDrawMessage,
SoulMarkMessage,
UplinkPositionEvent,
HotSpotUpdateMessage,
// OPCODE 160
BuildingInfoUpdateMessage,
FireHintMessage,
UnknownMessage162,
UplinkResponse,
UnknownMessage164,
WarpgateResponse,
DamageWithPositionMessage,
GenericActionMessage,
ContinentalLockUpdateMessage,
AvatarGrenadeStateMessage,
// OPCODE 170
UnknownMessage170,
UnknownMessage171,
UnknownMessage172,
AvatarDeadStateMessage,
CSAssistMessage,
CSAssistCommentMessage,
UnknownMessage176,
UnknownMessage177,
VoiceHostInfo,
BattleplanMessage,
// OPCODE 180
BattleExperienceMessage,
UnknownMessage181,
ZonePopulationUpdateMessage,
DisconnectMessage,
ExperienceAddedMessage,
OrbitalStrikeWaypointMessage,
KeepAliveMessage,
MapObjectStateBlockMessage,
SnoopMsg,
PlayerStateMessageUpstream,
// OPCODE 190
PlayerStateShiftMessage,
ZipLineMessage,
CaptureFlagUpdateMessage,
VanuModuleUpdateMessage,
UnknownMessage194,
ProximityTerminalUseMessage,
QuantityDeltaUpdateMessage,
ChainLashMessage,
ZoneInfoMessage,
UnknownMessage199,
// OPCODE 200
WeaponLazeTargetPositionMessage,
ModuleLimitsMessage,
OutfitBenefitMessage,
EmpireChangeTimeMessage,
ClockCalibrationMessage,
DensityLevelUpdateMessage,
ActOfGodMessage,
AvatarAwardMessage,
UnknownMessage208,
DisplayedAwardMessage,
// OPCODE 210
RespawnAMSInfoMessage,
ComponentDamageMessage,
UnknownMessage212,
PropertyOverrideMessage,
WarpgateLinkOverrideMessage,
EmpireBenefitsMessage,
ForceEmpireMessage,
BroadcastWarpgateUpdateMessage,
UnknownMessage218,
UnknownMessage219,
// OPCODE 220
SquadMainTerminalResponseMessage,
SquadOrderMessage,
UnknownMessage222,
ZoneLockInfoMessage,
SquadBindInfoMessage,
AudioSequenceMessage,
SquadFacilityBindInfoMessage,
ZoneForcedCavernConnectionsMessage,
MissionActionMessage,
UnknownMessage229,
// OPCODE 230
ReplicationStreamMessage,
SquadDefinitionActionMessage,
SquadDetailDefinitionUpdateMessage,
TacticsMessage,
RabbitUpdateMessage,
SquadInvitationRequestMessage,
CharacterKnowledgeMessage,
GameScoreUpdateMessage,
UnknownMessage238,
UnknownMessage239,
// OPCODE 240
QueueTimedHelpMessage,
MailMessage,
UnknownMessage242,
ClientCheatedMessage,
UnknownMessage244,
UnknownMessage245,
UnknownMessage246,
UnknownMessage247,
UnknownMessage248,
UnknownMessage249,
// OPCODE 250
UnknownMessage250,
UnknownMessage251,
UnknownMessage252,
UnknownMessage253,
UnknownMessage254,
UnknownMessage255
= Value
private def noDecoder(opcode : GamePacketOpcode.Type) = (a : BitVector) =>
Attempt.failure(Err(s"Could not find a marshaller for game packet ${opcode}"))
def getPacketDecoder(opcode : GamePacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideGamePacket]] = opcode match {
case ConnectToWorldRequestMessage => game.ConnectToWorldRequestMessage.decode
case ConnectToWorldMessage => game.ConnectToWorldMessage.decode
// OPCODE 0
case Unknown0 => noDecoder(opcode)
case LoginMessage => game.LoginMessage.decode
case LoginRespMessage => game.LoginRespMessage.decode
case ConnectToWorldRequestMessage => game.ConnectToWorldRequestMessage.decode
case ConnectToWorldMessage => game.ConnectToWorldMessage.decode
case VNLWorldStatusMessage => game.VNLWorldStatusMessage.decode
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for game packet ${opcode}"))
}
case UnknownMessage6 => noDecoder(opcode)
case UnknownMessage7 => noDecoder(opcode)
case PlayerStateMessage => noDecoder(opcode)
case UnknownMessage9 => noDecoder(opcode)
// OPCODE 10
case HitHint => noDecoder(opcode)
case DamageMessage => noDecoder(opcode)
case DestroyMessage => noDecoder(opcode)
case ReloadMessage => noDecoder(opcode)
case MountVehicleMsg => noDecoder(opcode)
case DismountVehicleMsg => noDecoder(opcode)
case UseItemMessage => noDecoder(opcode)
case UnknownMessage17 => noDecoder(opcode)
case ChatMsg => noDecoder(opcode)
case CharacterNoRecordMessage => noDecoder(opcode)
// OPCODE 20
case CharacterInfoMessage => noDecoder(opcode)
case UnknownMessage21 => noDecoder(opcode)
case BindPlayerMessage => noDecoder(opcode)
case UnknownMessage23 => noDecoder(opcode)
case ObjectCreateMessage => noDecoder(opcode)
case ObjectDeleteMessage => noDecoder(opcode)
case UnknownMessage26 => noDecoder(opcode)
case VehicleStateMessage => noDecoder(opcode)
case FrameVehicleStateMessage => noDecoder(opcode)
case GenericObjectStateMsg => noDecoder(opcode)
// OPCODE 30
case UnknownMessage30 => noDecoder(opcode)
case ActionResultMessage => noDecoder(opcode)
case UnknownMessage32 => noDecoder(opcode)
case ActionProgressMessage => noDecoder(opcode)
case ActionCancelMessage => noDecoder(opcode)
case ActionCancelAcknowledgeMessage => noDecoder(opcode)
case SetEmpireMessage => noDecoder(opcode)
case EmoteMsg => noDecoder(opcode)
case UnuseItemMessage => noDecoder(opcode)
case ObjectDetachMessage => noDecoder(opcode)
// OPCODE 40
case CreateShortcutMessage => noDecoder(opcode)
case ChangeShortcutBankMessage => noDecoder(opcode)
case ObjectAttachMessage => noDecoder(opcode)
case UnknownMessage43 => noDecoder(opcode)
case PlanetsideAttributeMessage => noDecoder(opcode)
case UnknownMessage45 => noDecoder(opcode)
case UnknownMessage46 => noDecoder(opcode)
case UnknownMessage47 => noDecoder(opcode)
case UnknownMessage48 => noDecoder(opcode)
case LoadMapMessage => noDecoder(opcode)
// OPCODE 50
case PlayerAvatarChangedMessage => noDecoder(opcode)
case ObjectHeldMessage => noDecoder(opcode)
case WeaponFireMessage => noDecoder(opcode)
case UnknownMessage53 => noDecoder(opcode)
case UnknownMessage54 => noDecoder(opcode)
case UnknownMessage55 => noDecoder(opcode)
case InventoryStateMessage => noDecoder(opcode)
case UnknownMessage57 => noDecoder(opcode)
case ChangeFireStateMessage => noDecoder(opcode)
case UnknownMessage59 => noDecoder(opcode)
// OPCODE 60
case UnknownMessage60 => noDecoder(opcode)
case QuantityUpdateMessage => noDecoder(opcode)
case ArmorChangedMessage => noDecoder(opcode)
case ProjectileStateMessage => noDecoder(opcode)
case MountVehicleCargoMsg => noDecoder(opcode)
case DismountVehicleCargoMsg => noDecoder(opcode)
case CargoMountPointStatusMessage => noDecoder(opcode)
case BeginZoningMessage => noDecoder(opcode)
case UnknownMessage68 => noDecoder(opcode)
case ItemTransactionResultMessage => noDecoder(opcode)
// OPCODE 70
case ChangeFireModeMessage => noDecoder(opcode)
case ChangeAmmoMessage => noDecoder(opcode)
case TimeOfDayMessage => noDecoder(opcode)
case UnknownMessage73 => noDecoder(opcode)
case SpawnRequestMessage => noDecoder(opcode)
case DeployRequestMessage => noDecoder(opcode)
case UnknownMessage76 => noDecoder(opcode)
case RepairMessage => noDecoder(opcode)
case ServerVehicleOverrideMsg => noDecoder(opcode)
case UnknownMessage79 => noDecoder(opcode)
// OPCODE 80
case TargetingInfoMessage => noDecoder(opcode)
case TriggerEffectMessage => noDecoder(opcode)
case WeaponDryFireMessage => noDecoder(opcode)
case UnknownMessage83 => noDecoder(opcode)
case HackMessage => noDecoder(opcode)
case DroppodLaunchResponseMessage => noDecoder(opcode)
case GenericObjectActionMessage => noDecoder(opcode)
case AvatarVehicleTimerMessage => noDecoder(opcode)
case AvatarImplantMessage => noDecoder(opcode)
case UnknownMessage89 => noDecoder(opcode)
// OPCODE 90
case DelayedPathMountMsg => noDecoder(opcode)
case OrbitalShuttleTimeMsg => noDecoder(opcode)
case UnknownMessage92 => noDecoder(opcode)
case UnknownMessage93 => noDecoder(opcode)
case UnknownMessage94 => noDecoder(opcode)
case FavoritesResponse => noDecoder(opcode)
case FavoritesMessage => noDecoder(opcode)
case ObjectDetectedMessage => noDecoder(opcode)
case UnknownMessage98 => noDecoder(opcode)
case SetChatFilterMessage => noDecoder(opcode)
// OPCODE 100
case AvatarSearchCriteriaMessage => noDecoder(opcode)
case AvatarSearchResponse => noDecoder(opcode)
case WeaponJammedMessage => noDecoder(opcode)
case LinkDeadAwarenessMsg => noDecoder(opcode)
case DroppodFreefallingMessage => noDecoder(opcode)
case AvatarFirstTimeEventMessage => noDecoder(opcode)
case AggravatedDamageMessage => noDecoder(opcode)
case TriggerSoundMessage => noDecoder(opcode)
case UnknownMessage108 => noDecoder(opcode)
case UnknownMessage109 => noDecoder(opcode)
// OPCODE 110
case UnknownMessage110 => noDecoder(opcode)
case SquadMembershipResponse => noDecoder(opcode)
case SquadMemberEvent => noDecoder(opcode)
case PlatoonEvent => noDecoder(opcode)
case UnknownMessage114 => noDecoder(opcode)
case FriendsResponse => noDecoder(opcode)
case TriggerEnvironmentalDamageMessage => noDecoder(opcode)
case TrainingZoneMessage => noDecoder(opcode)
case DeployableObjectsInfoMessage => noDecoder(opcode)
case SquadState => noDecoder(opcode)
// OPCODE 120
case OxygenStateMessage => noDecoder(opcode)
case TradeMessage => noDecoder(opcode)
case UnknownMessage122 => noDecoder(opcode)
case DamageFeedbackMessage => noDecoder(opcode)
case UnknownMessage124 => noDecoder(opcode)
case UnknownMessage125 => noDecoder(opcode)
case UnknownMessage126 => noDecoder(opcode)
case AvatarStatisticsMessage => noDecoder(opcode)
case GenericObjectAction2Message => noDecoder(opcode)
case DestroyDisplayMessage => noDecoder(opcode)
// OPCODE 130
case TriggerBotAction => noDecoder(opcode)
case UnknownMessage131 => noDecoder(opcode)
case SquadWaypointEvent => noDecoder(opcode)
case OffshoreVehicleMessage => noDecoder(opcode)
case ObjectDeployedMessage => noDecoder(opcode)
case ObjectDeployedCountMessage => noDecoder(opcode)
case UnknownMessage136 => noDecoder(opcode)
case UnknownMessage137 => noDecoder(opcode)
case PlayerStasisMessage => noDecoder(opcode)
case UnknownMessage139 => noDecoder(opcode)
// OPCODE 140
case UnknownMessage140 => noDecoder(opcode)
case OutfitMembershipResponse => noDecoder(opcode)
case UnknownMessage142 => noDecoder(opcode)
case OutfitEvent => noDecoder(opcode)
case OutfitMemberEvent => noDecoder(opcode)
case OutfitMemberUpdate => noDecoder(opcode)
case PlanetsideStringAttributeMessage => noDecoder(opcode)
case DataChallengeMessage => noDecoder(opcode)
case UnknownMessage148 => noDecoder(opcode)
case WeatherMessage => noDecoder(opcode)
// OPCODE 150
case SimDataChallengeResp => noDecoder(opcode)
case UnknownMessage151 => noDecoder(opcode)
case OutfitListEvent => noDecoder(opcode)
case EmpireIncentivesMessage => noDecoder(opcode)
case UnknownMessage154 => noDecoder(opcode)
case SyncMessage => noDecoder(opcode)
case DebugDrawMessage => noDecoder(opcode)
case SoulMarkMessage => noDecoder(opcode)
case UplinkPositionEvent => noDecoder(opcode)
case HotSpotUpdateMessage => noDecoder(opcode)
// OPCODE 160
case BuildingInfoUpdateMessage => noDecoder(opcode)
case FireHintMessage => noDecoder(opcode)
case UnknownMessage162 => noDecoder(opcode)
case UplinkResponse => noDecoder(opcode)
case UnknownMessage164 => noDecoder(opcode)
case WarpgateResponse => noDecoder(opcode)
case DamageWithPositionMessage => noDecoder(opcode)
case GenericActionMessage => noDecoder(opcode)
case ContinentalLockUpdateMessage => noDecoder(opcode)
case AvatarGrenadeStateMessage => noDecoder(opcode)
// OPCODE 170
case UnknownMessage170 => noDecoder(opcode)
case UnknownMessage171 => noDecoder(opcode)
case UnknownMessage172 => noDecoder(opcode)
case AvatarDeadStateMessage => noDecoder(opcode)
case CSAssistMessage => noDecoder(opcode)
case CSAssistCommentMessage => noDecoder(opcode)
case UnknownMessage176 => noDecoder(opcode)
case UnknownMessage177 => noDecoder(opcode)
case VoiceHostInfo => noDecoder(opcode)
case BattleplanMessage => noDecoder(opcode)
// OPCODE 180
case BattleExperienceMessage => noDecoder(opcode)
case UnknownMessage181 => noDecoder(opcode)
case ZonePopulationUpdateMessage => noDecoder(opcode)
case DisconnectMessage => noDecoder(opcode)
case ExperienceAddedMessage => noDecoder(opcode)
case OrbitalStrikeWaypointMessage => noDecoder(opcode)
case KeepAliveMessage => game.KeepAliveMessage.decode
case MapObjectStateBlockMessage => noDecoder(opcode)
case SnoopMsg => noDecoder(opcode)
case PlayerStateMessageUpstream => noDecoder(opcode)
// OPCODE 190
case PlayerStateShiftMessage => noDecoder(opcode)
case ZipLineMessage => noDecoder(opcode)
case CaptureFlagUpdateMessage => noDecoder(opcode)
case VanuModuleUpdateMessage => noDecoder(opcode)
case UnknownMessage194 => noDecoder(opcode)
case ProximityTerminalUseMessage => noDecoder(opcode)
case QuantityDeltaUpdateMessage => noDecoder(opcode)
case ChainLashMessage => noDecoder(opcode)
case ZoneInfoMessage => noDecoder(opcode)
case UnknownMessage199 => noDecoder(opcode)
// OPCODE 200
case WeaponLazeTargetPositionMessage => noDecoder(opcode)
case ModuleLimitsMessage => noDecoder(opcode)
case OutfitBenefitMessage => noDecoder(opcode)
case EmpireChangeTimeMessage => noDecoder(opcode)
case ClockCalibrationMessage => noDecoder(opcode)
case DensityLevelUpdateMessage => noDecoder(opcode)
case ActOfGodMessage => noDecoder(opcode)
case AvatarAwardMessage => noDecoder(opcode)
case UnknownMessage208 => noDecoder(opcode)
case DisplayedAwardMessage => noDecoder(opcode)
// OPCODE 210
case RespawnAMSInfoMessage => noDecoder(opcode)
case ComponentDamageMessage => noDecoder(opcode)
case UnknownMessage212 => noDecoder(opcode)
case PropertyOverrideMessage => noDecoder(opcode)
case WarpgateLinkOverrideMessage => noDecoder(opcode)
case EmpireBenefitsMessage => noDecoder(opcode)
case ForceEmpireMessage => noDecoder(opcode)
case BroadcastWarpgateUpdateMessage => noDecoder(opcode)
case UnknownMessage218 => noDecoder(opcode)
case UnknownMessage219 => noDecoder(opcode)
// OPCODE 220
case SquadMainTerminalResponseMessage => noDecoder(opcode)
case SquadOrderMessage => noDecoder(opcode)
case UnknownMessage222 => noDecoder(opcode)
case ZoneLockInfoMessage => noDecoder(opcode)
case SquadBindInfoMessage => noDecoder(opcode)
case AudioSequenceMessage => noDecoder(opcode)
case SquadFacilityBindInfoMessage => noDecoder(opcode)
case ZoneForcedCavernConnectionsMessage => noDecoder(opcode)
case MissionActionMessage => noDecoder(opcode)
case UnknownMessage229 => noDecoder(opcode)
// OPCODE 230
case ReplicationStreamMessage => noDecoder(opcode)
case SquadDefinitionActionMessage => noDecoder(opcode)
case SquadDetailDefinitionUpdateMessage => noDecoder(opcode)
case TacticsMessage => noDecoder(opcode)
case RabbitUpdateMessage => noDecoder(opcode)
case SquadInvitationRequestMessage => noDecoder(opcode)
case CharacterKnowledgeMessage => noDecoder(opcode)
case GameScoreUpdateMessage => noDecoder(opcode)
case UnknownMessage238 => noDecoder(opcode)
case UnknownMessage239 => noDecoder(opcode)
// OPCODE 240
case QueueTimedHelpMessage => noDecoder(opcode)
case MailMessage => noDecoder(opcode)
case UnknownMessage242 => noDecoder(opcode)
case ClientCheatedMessage => noDecoder(opcode)
case UnknownMessage244 => noDecoder(opcode)
case UnknownMessage245 => noDecoder(opcode)
case UnknownMessage246 => noDecoder(opcode)
case UnknownMessage247 => noDecoder(opcode)
case UnknownMessage248 => noDecoder(opcode)
case UnknownMessage249 => noDecoder(opcode)
// OPCODE 250
case UnknownMessage250 => noDecoder(opcode)
case UnknownMessage251 => noDecoder(opcode)
case UnknownMessage252 => noDecoder(opcode)
case UnknownMessage253 => noDecoder(opcode)
case UnknownMessage254 => noDecoder(opcode)
case UnknownMessage255 => noDecoder(opcode)
case default => noDecoder(opcode)
}
implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L)
}

View file

@ -0,0 +1,18 @@
package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
import scodec.Codec
import scodec.codecs._
/**
* Created by Root on 5/19/2016.
*/
final case class KeepAliveMessage(code : Int) extends PlanetSideGamePacket {
type Packet = KeepAliveMessage
def opcode = GamePacketOpcode.KeepAliveMessage
def encode = KeepAliveMessage.encode(this)
}
object KeepAliveMessage extends Marshallable[KeepAliveMessage] {
implicit val codec : Codec[KeepAliveMessage] = ("keep_alive_code" | uint16L).as[KeepAliveMessage]
}

View file

@ -84,8 +84,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
}
def handleGamePkt(pkt : PlanetSideGamePacket) = pkt match {
case LoginMessage(majorVersion, minorVersion, buildDate, username,
password, token, revision) =>
case LoginMessage(majorVersion, minorVersion, buildDate, username, password, token, revision) =>
val clientVersion = s"Client Version: ${majorVersion}.${minorVersion}.${revision}, ${buildDate}"
@ -97,6 +96,8 @@ class WorldSessionActor extends Actor with MDCContextAware {
// testing
//sendRawResponse(hex"00 09 00 00 00 19 08 2C 00 00 4B 00 00 00 00 02 1F 80 09 9B 05 00 00 00 0D 77 BC F1 05 12 2E 40 00 80 3F D7 04 00 00 00 61 C0 6C 6F 63 6B 2D 7A 33 61 C0 6C 6F 63 6B 2D 7A 34 61 C0 6C 6F 63 6B 2D 7A 39 64 00 6C 6F 63 6B 2D 69 31 2D 69 32 2D 69 33 2D 69 34 04 00 00 00 40 40 10 30 04 10 01 06 00 ")
//sendRawResponse(hex"00 09 00 01 00 19 08 2C 00 00 70 01 00 00 00 6A 95 01 00 00 00 00 79 94 FD BF 00 A1 AF BF F3 A5 D0 3E 26 39 76 3B 08 00 00 00 36 AE 11 3F 70 5D 9B 3E 2E 15 9A 9B 3A 3F CC 90 DB 3E 45 1C EC 0F 14 3D AF CF 36 3F 06 32 BA AF 13 3F 18 4C 12 3F 26 2F D2 2D 71 3F 94 AA FB 3E 4D 16 5D 1B 1A 3F 0C 25 D5 3C 55 6B 38 89 63 3F 5D F5 25 3F 3C AC 8E 5E E6 3E 79 25 62 3F 10 32 1F 12 E3 40 00 9A 40 43 4D 54 5F 43 55 4C 4C 57 41 54 45 52 4D 41 52 4B 5F 73 75 63 63 65 73 73 ")
case KeepAliveMessage(code) =>
sendResponse(PacketCoding.CreateGamePacket(0, KeepAliveMessage(0)))
case default => log.debug(s"Unhandled GamePacket ${pkt}")
}