diff --git a/README.md b/README.md
index df782a32..f51b5e2a 100644
--- a/README.md
+++ b/README.md
@@ -245,30 +245,11 @@ To connect to a server follow these steps:
* In the client directory, locate `boot.cfg`
* Open it in a text editor and locate where it says `AUTHSERVERIP=0:`
* Replace the contents after to `:` and the following `,` with what you configured as the server's public facing IP. For example `AUTHSERVERIP=0:localhost` for locally hosted servers
+* Next locate the line `UGCUSE3DSERVICES=7:`
+* Ensure the number after the 7 is a `0`
* Launch `legouniverse.exe`, through `wine` if on a Unix-like operating system
* Note that if you are on WSL2, you will need to configure the public IP in the server and client to be the IP of the WSL2 instance and not localhost, which can be found by running `ifconfig` in the terminal. Windows defaults to WSL1, so this will not apply to most users.
-## Brick-By-Brick building
-Should you choose to do any brick building, you will want to have some form of a http server that returns a 404 error since we are unable to emulate live User Generated Content at the moment. If you attempt to do any brick building without a 404 server running properly, you will be unable to load into your game. Python is the easiest way to do this, but any thing that returns a 404 should work fine.
-* Note: the client hard codes this request on port 80.
-
-**If you do not plan on doing any Brick Building, then you can skip this step.**
-
-The easiest way to do this is to install [python](https://www.python.org/downloads/).
-
-### Allowing a user to build in Brick-by-Brick mode
-Brick-By-Brick building requires `PATCHSERVERIP=0:` and `UGCSERVERIP=0:` in the `boot.cfg` to point to a HTTP server which always returns `HTTP 404 - Not Found` for all requests. This can be most easily achieved by pointing both of those variables to `localhost` while having running in the background.
-Each client must have their own 404 server running if they are using a locally hosted 404 server.
-```bash
-# If on linux run this command. Because this is run on a port below 1024, binary network permissions are needed.
-sudo python3 -m http.server 80
-
-# If on windows one of the following will work when run through Powershell or Command Prompt assuming python is installed
-python3 -m http.server 80
-python http.server 80
-py -m http.server 80
-```
-
## Updating your server
To update your server to the latest version navigate to your cloned directory
```bash
diff --git a/dAuthServer/AuthServer.cpp b/dAuthServer/AuthServer.cpp
index f5090495..ddec32db 100644
--- a/dAuthServer/AuthServer.cpp
+++ b/dAuthServer/AuthServer.cpp
@@ -15,10 +15,13 @@
//RakNet includes:
#include "RakNetDefines.h"
+#include
//Auth includes:
#include "AuthPackets.h"
-#include "dMessageIdentifiers.h"
+#include "eConnectionType.h"
+#include "eServerMessageType.h"
+#include "eAuthMessageType.h"
#include "Game.h"
namespace Game {
@@ -169,12 +172,12 @@ dLogger* SetupLogger() {
void HandlePacket(Packet* packet) {
if (packet->data[0] == ID_USER_PACKET_ENUM) {
- if (packet->data[1] == SERVER) {
- if (packet->data[3] == MSG_SERVER_VERSION_CONFIRM) {
+ if (static_cast(packet->data[1]) == eConnectionType::SERVER) {
+ if (static_cast(packet->data[3]) == eServerMessageType::VERSION_CONFIRM) {
AuthPackets::HandleHandshake(Game::server, packet);
}
- } else if (packet->data[1] == AUTH) {
- if (packet->data[3] == MSG_AUTH_LOGIN_REQUEST) {
+ } else if (static_cast(packet->data[1]) == eConnectionType::AUTH) {
+ if (static_cast(packet->data[3]) == eAuthMessageType::LOGIN_REQUEST) {
AuthPackets::HandleLoginRequest(Game::server, packet);
}
}
diff --git a/dChatServer/ChatPacketHandler.cpp b/dChatServer/ChatPacketHandler.cpp
index 592c3870..9b5ca761 100644
--- a/dChatServer/ChatPacketHandler.cpp
+++ b/dChatServer/ChatPacketHandler.cpp
@@ -3,7 +3,6 @@
#include "Database.h"
#include
#include "PacketUtils.h"
-#include "dMessageIdentifiers.h"
#include "Game.h"
#include "dServer.h"
#include "GeneralUtils.h"
@@ -12,6 +11,12 @@
#include "eAddFriendResponseType.h"
#include "RakString.h"
#include "dConfig.h"
+#include "eObjectBits.h"
+#include "eConnectionType.h"
+#include "eChatMessageType.h"
+#include "eChatInternalMessageType.h"
+#include "eClientMessageType.h"
+#include "eGameMessageType.h"
extern PlayerContainer playerContainer;
@@ -45,8 +50,8 @@ void ChatPacketHandler::HandleFriendlistRequest(Packet* packet) {
FriendData fd;
fd.isFTP = false; // not a thing in DLU
fd.friendID = res->getUInt(1);
- GeneralUtils::SetBit(fd.friendID, static_cast(eObjectBits::OBJECT_BIT_PERSISTENT));
- GeneralUtils::SetBit(fd.friendID, static_cast(eObjectBits::OBJECT_BIT_CHARACTER));
+ GeneralUtils::SetBit(fd.friendID, eObjectBits::PERSISTENT);
+ GeneralUtils::SetBit(fd.friendID, eObjectBits::CHARACTER);
fd.isBestFriend = res->getInt(2) == 3; //0 = friends, 1 = left_requested, 2 = right_requested, 3 = both_accepted - are now bffs
if (fd.isBestFriend) player->countOfBestFriends += 1;
@@ -71,11 +76,11 @@ void ChatPacketHandler::HandleFriendlistRequest(Packet* packet) {
//Now, we need to send the friendlist to the server they came from:
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(playerID);
//portion that will get routed:
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_GET_FRIENDS_LIST_RESPONSE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::GET_FRIENDS_LIST_RESPONSE);
bitStream.Write(0);
bitStream.Write(1); //Length of packet -- just writing one as it doesn't matter, client skips it.
bitStream.Write((uint16_t)friends.size());
@@ -178,10 +183,10 @@ void ChatPacketHandler::HandleFriendRequest(Packet* packet) {
bestFriendStatus = oldBestFriendStatus;
// Set the bits
- GeneralUtils::SetBit(queryPlayerID, static_cast(eObjectBits::OBJECT_BIT_CHARACTER));
- GeneralUtils::SetBit(queryPlayerID, static_cast(eObjectBits::OBJECT_BIT_PERSISTENT));
- GeneralUtils::SetBit(queryFriendID, static_cast(eObjectBits::OBJECT_BIT_CHARACTER));
- GeneralUtils::SetBit(queryFriendID, static_cast(eObjectBits::OBJECT_BIT_PERSISTENT));
+ GeneralUtils::SetBit(queryPlayerID, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(queryPlayerID, eObjectBits::PERSISTENT);
+ GeneralUtils::SetBit(queryFriendID, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(queryFriendID, eObjectBits::PERSISTENT);
// Since this player can either be the friend of someone else or be friends with someone else
// their column in the database determines what bit gets set. When the value hits 3, they
@@ -336,8 +341,8 @@ void ChatPacketHandler::HandleRemoveFriend(Packet* packet) {
}
// Convert friendID to LWOOBJID
- GeneralUtils::SetBit(friendID, static_cast(eObjectBits::OBJECT_BIT_PERSISTENT));
- GeneralUtils::SetBit(friendID, static_cast(eObjectBits::OBJECT_BIT_CHARACTER));
+ GeneralUtils::SetBit(friendID, eObjectBits::PERSISTENT);
+ GeneralUtils::SetBit(friendID, eObjectBits::CHARACTER);
std::unique_ptr deletestmt(Database::CreatePreppedStmt("DELETE FROM friends WHERE (player_id = ? AND friend_id = ?) OR (player_id = ? AND friend_id = ?) LIMIT 1;"));
deletestmt->setUInt(1, static_cast(playerID));
@@ -412,10 +417,10 @@ void ChatPacketHandler::HandleChatMessage(Packet* packet) {
const auto otherName = std::string(otherMember->playerName.c_str());
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(otherMember->playerID);
- PacketUtils::WriteHeader(bitStream, CHAT, MSG_CHAT_PRIVATE_CHAT_MESSAGE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT, eChatMessageType::PRIVATE_CHAT_MESSAGE);
bitStream.Write(otherMember->playerID);
bitStream.Write(8);
bitStream.Write(69);
@@ -451,10 +456,10 @@ void ChatPacketHandler::HandlePrivateChatMessage(Packet* packet) {
//To the sender:
{
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(goonA->playerID);
- PacketUtils::WriteHeader(bitStream, CHAT, MSG_CHAT_PRIVATE_CHAT_MESSAGE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT, eChatMessageType::PRIVATE_CHAT_MESSAGE);
bitStream.Write(goonA->playerID);
bitStream.Write(7);
bitStream.Write(69);
@@ -474,10 +479,10 @@ void ChatPacketHandler::HandlePrivateChatMessage(Packet* packet) {
//To the receiver:
{
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(goonB->playerID);
- PacketUtils::WriteHeader(bitStream, CHAT, MSG_CHAT_PRIVATE_CHAT_MESSAGE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT, eChatMessageType::PRIVATE_CHAT_MESSAGE);
bitStream.Write(goonA->playerID);
bitStream.Write(7);
bitStream.Write(69);
@@ -716,11 +721,11 @@ void ChatPacketHandler::HandleTeamStatusRequest(Packet* packet) {
void ChatPacketHandler::SendTeamInvite(PlayerData* receiver, PlayerData* sender) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_TEAM_INVITE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::TEAM_INVITE);
PacketUtils::WritePacketWString(sender->playerName.c_str(), 33, &bitStream);
bitStream.Write(sender->playerID);
@@ -731,14 +736,14 @@ void ChatPacketHandler::SendTeamInvite(PlayerData* receiver, PlayerData* sender)
void ChatPacketHandler::SendTeamInviteConfirm(PlayerData* receiver, bool bLeaderIsFreeTrial, LWOOBJID i64LeaderID, LWOZONEID i64LeaderZoneID, uint8_t ucLootFlag, uint8_t ucNumOfOtherPlayers, uint8_t ucResponseCode, std::u16string wsLeaderName) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
CMSGHEADER;
bitStream.Write(receiver->playerID);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_INVITE_CONFIRM);
+ bitStream.Write(eGameMessageType::TEAM_INVITE_CONFIRM);
bitStream.Write(bLeaderIsFreeTrial);
bitStream.Write(i64LeaderID);
@@ -758,14 +763,14 @@ void ChatPacketHandler::SendTeamInviteConfirm(PlayerData* receiver, bool bLeader
void ChatPacketHandler::SendTeamStatus(PlayerData* receiver, LWOOBJID i64LeaderID, LWOZONEID i64LeaderZoneID, uint8_t ucLootFlag, uint8_t ucNumOfOtherPlayers, std::u16string wsLeaderName) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
CMSGHEADER;
bitStream.Write(receiver->playerID);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_GET_STATUS_RESPONSE);
+ bitStream.Write(eGameMessageType::TEAM_GET_STATUS_RESPONSE);
bitStream.Write(i64LeaderID);
bitStream.Write(i64LeaderZoneID);
@@ -783,14 +788,14 @@ void ChatPacketHandler::SendTeamStatus(PlayerData* receiver, LWOOBJID i64LeaderI
void ChatPacketHandler::SendTeamSetLeader(PlayerData* receiver, LWOOBJID i64PlayerID) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
CMSGHEADER;
bitStream.Write(receiver->playerID);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_SET_LEADER);
+ bitStream.Write(eGameMessageType::TEAM_SET_LEADER);
bitStream.Write(i64PlayerID);
@@ -800,14 +805,14 @@ void ChatPacketHandler::SendTeamSetLeader(PlayerData* receiver, LWOOBJID i64Play
void ChatPacketHandler::SendTeamAddPlayer(PlayerData* receiver, bool bIsFreeTrial, bool bLocal, bool bNoLootOnDeath, LWOOBJID i64PlayerID, std::u16string wsPlayerName, LWOZONEID zoneID) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
CMSGHEADER;
bitStream.Write(receiver->playerID);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_ADD_PLAYER);
+ bitStream.Write(eGameMessageType::TEAM_ADD_PLAYER);
bitStream.Write(bIsFreeTrial);
bitStream.Write(bLocal);
@@ -829,14 +834,14 @@ void ChatPacketHandler::SendTeamAddPlayer(PlayerData* receiver, bool bIsFreeTria
void ChatPacketHandler::SendTeamRemovePlayer(PlayerData* receiver, bool bDisband, bool bIsKicked, bool bIsLeaving, bool bLocal, LWOOBJID i64LeaderID, LWOOBJID i64PlayerID, std::u16string wsPlayerName) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
CMSGHEADER;
bitStream.Write(receiver->playerID);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_REMOVE_PLAYER);
+ bitStream.Write(eGameMessageType::TEAM_REMOVE_PLAYER);
bitStream.Write(bDisband);
bitStream.Write(bIsKicked);
@@ -855,14 +860,14 @@ void ChatPacketHandler::SendTeamRemovePlayer(PlayerData* receiver, bool bDisband
void ChatPacketHandler::SendTeamSetOffWorldFlag(PlayerData* receiver, LWOOBJID i64PlayerID, LWOZONEID zoneID) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
CMSGHEADER;
bitStream.Write(receiver->playerID);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_SET_OFF_WORLD_FLAG);
+ bitStream.Write(eGameMessageType::TEAM_SET_OFF_WORLD_FLAG);
bitStream.Write(i64PlayerID);
if (receiver->zoneID.GetCloneID() == zoneID.GetCloneID()) {
@@ -889,11 +894,11 @@ void ChatPacketHandler::SendFriendUpdate(PlayerData* friendData, PlayerData* pla
[bool] - is FTP*/
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(friendData->playerID);
//portion that will get routed:
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_UPDATE_FRIEND_NOTIFY);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::UPDATE_FRIEND_NOTIFY);
bitStream.Write(notifyType);
std::string playerName = playerData->playerName.c_str();
@@ -928,11 +933,11 @@ void ChatPacketHandler::SendFriendRequest(PlayerData* receiver, PlayerData* send
}
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_ADD_FRIEND_REQUEST);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::ADD_FRIEND_REQUEST);
PacketUtils::WritePacketWString(sender->playerName.c_str(), 33, &bitStream);
bitStream.Write(0); // This is a BFF flag however this is unused in live and does not have an implementation client side.
@@ -944,11 +949,11 @@ void ChatPacketHandler::SendFriendResponse(PlayerData* receiver, PlayerData* sen
if (!receiver || !sender) return;
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
// Portion that will get routed:
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_ADD_FRIEND_RESPONSE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::ADD_FRIEND_RESPONSE);
bitStream.Write(responseCode);
// For all requests besides accepted, write a flag that says whether or not we are already best friends with the receiver.
bitStream.Write(responseCode != eAddFriendResponseType::ACCEPTED ? isBestFriendsAlready : sender->sysAddr != UNASSIGNED_SYSTEM_ADDRESS);
@@ -969,11 +974,11 @@ void ChatPacketHandler::SendRemoveFriend(PlayerData* receiver, std::string& pers
if (!receiver) return;
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::ROUTE_TO_PLAYER);
bitStream.Write(receiver->playerID);
//portion that will get routed:
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_REMOVE_FRIEND_RESPONSE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::REMOVE_FRIEND_RESPONSE);
bitStream.Write(isSuccessful); //isOnline
PacketUtils::WritePacketWString(personToRemove, 33, &bitStream);
diff --git a/dChatServer/ChatServer.cpp b/dChatServer/ChatServer.cpp
index a75c4d51..3e3ddfd3 100644
--- a/dChatServer/ChatServer.cpp
+++ b/dChatServer/ChatServer.cpp
@@ -9,19 +9,23 @@
#include "dLogger.h"
#include "Database.h"
#include "dConfig.h"
-#include "dMessageIdentifiers.h"
#include "dChatFilter.h"
#include "Diagnostics.h"
#include "AssetManager.h"
#include "BinaryPathFinder.h"
-
+#include "eConnectionType.h"
#include "PlayerContainer.h"
#include "ChatPacketHandler.h"
+#include "eChatMessageType.h"
+#include "eChatInternalMessageType.h"
+#include "eWorldMessageType.h"
#include "Game.h"
//RakNet includes:
#include "RakNetDefines.h"
+#include
+
namespace Game {
dLogger* logger = nullptr;
dServer* server = nullptr;
@@ -68,7 +72,7 @@ int main(int argc, char** argv) {
Game::assetManager = new AssetManager(clientPath);
} catch (std::runtime_error& ex) {
Game::logger->Log("ChatServer", "Got an error while setting up assets: %s", ex.what());
-
+
return EXIT_FAILURE;
}
@@ -199,25 +203,25 @@ void HandlePacket(Packet* packet) {
Game::logger->Log("ChatServer", "A server is connecting, awaiting user list.");
}
- if (packet->data[1] == CHAT_INTERNAL) {
- switch (packet->data[3]) {
- case MSG_CHAT_INTERNAL_PLAYER_ADDED_NOTIFICATION:
+ if (static_cast(packet->data[1]) == eConnectionType::CHAT_INTERNAL) {
+ switch (static_cast(packet->data[3])) {
+ case eChatInternalMessageType::PLAYER_ADDED_NOTIFICATION:
playerContainer.InsertPlayer(packet);
break;
- case MSG_CHAT_INTERNAL_PLAYER_REMOVED_NOTIFICATION:
+ case eChatInternalMessageType::PLAYER_REMOVED_NOTIFICATION:
playerContainer.RemovePlayer(packet);
break;
- case MSG_CHAT_INTERNAL_MUTE_UPDATE:
+ case eChatInternalMessageType::MUTE_UPDATE:
playerContainer.MuteUpdate(packet);
break;
- case MSG_CHAT_INTERNAL_CREATE_TEAM:
+ case eChatInternalMessageType::CREATE_TEAM:
playerContainer.CreateTeamServer(packet);
break;
- case MSG_CHAT_INTERNAL_ANNOUNCEMENT: {
+ case eChatInternalMessageType::ANNOUNCEMENT: {
//we just forward this packet to every connected server
CINSTREAM;
Game::server->Send(&inStream, packet->systemAddress, true); //send to everyone except origin
@@ -229,67 +233,67 @@ void HandlePacket(Packet* packet) {
}
}
- if (packet->data[1] == CHAT) {
- switch (packet->data[3]) {
- case MSG_CHAT_GET_FRIENDS_LIST:
+ if (static_cast(packet->data[1]) == eConnectionType::CHAT) {
+ switch (static_cast(packet->data[3])) {
+ case eChatMessageType::GET_FRIENDS_LIST:
ChatPacketHandler::HandleFriendlistRequest(packet);
break;
- case MSG_CHAT_GET_IGNORE_LIST:
+ case eChatMessageType::GET_IGNORE_LIST:
Game::logger->Log("ChatServer", "Asked for ignore list, but is unimplemented right now.");
break;
- case MSG_CHAT_TEAM_GET_STATUS:
+ case eChatMessageType::TEAM_GET_STATUS:
ChatPacketHandler::HandleTeamStatusRequest(packet);
break;
- case MSG_CHAT_ADD_FRIEND_REQUEST:
+ case eChatMessageType::ADD_FRIEND_REQUEST:
//this involves someone sending the initial request, the response is below, response as in from the other player.
//We basically just check to see if this player is online or not and route the packet.
ChatPacketHandler::HandleFriendRequest(packet);
break;
- case MSG_CHAT_ADD_FRIEND_RESPONSE:
+ case eChatMessageType::ADD_FRIEND_RESPONSE:
//This isn't the response a server sent, rather it is a player's response to a received request.
//Here, we'll actually have to add them to eachother's friend lists depending on the response code.
ChatPacketHandler::HandleFriendResponse(packet);
break;
- case MSG_CHAT_REMOVE_FRIEND:
+ case eChatMessageType::REMOVE_FRIEND:
ChatPacketHandler::HandleRemoveFriend(packet);
break;
- case MSG_CHAT_GENERAL_CHAT_MESSAGE:
+ case eChatMessageType::GENERAL_CHAT_MESSAGE:
ChatPacketHandler::HandleChatMessage(packet);
break;
- case MSG_CHAT_PRIVATE_CHAT_MESSAGE:
+ case eChatMessageType::PRIVATE_CHAT_MESSAGE:
//This message is supposed to be echo'd to both the sender and the receiver
//BUT: they have to have different responseCodes, so we'll do some of the ol hacky wacky to fix that right up.
ChatPacketHandler::HandlePrivateChatMessage(packet);
break;
- case MSG_CHAT_TEAM_INVITE:
+ case eChatMessageType::TEAM_INVITE:
ChatPacketHandler::HandleTeamInvite(packet);
break;
- case MSG_CHAT_TEAM_INVITE_RESPONSE:
+ case eChatMessageType::TEAM_INVITE_RESPONSE:
ChatPacketHandler::HandleTeamInviteResponse(packet);
break;
- case MSG_CHAT_TEAM_LEAVE:
+ case eChatMessageType::TEAM_LEAVE:
ChatPacketHandler::HandleTeamLeave(packet);
break;
- case MSG_CHAT_TEAM_SET_LEADER:
+ case eChatMessageType::TEAM_SET_LEADER:
ChatPacketHandler::HandleTeamPromote(packet);
break;
- case MSG_CHAT_TEAM_KICK:
+ case eChatMessageType::TEAM_KICK:
ChatPacketHandler::HandleTeamKick(packet);
break;
- case MSG_CHAT_TEAM_SET_LOOT:
+ case eChatMessageType::TEAM_SET_LOOT:
ChatPacketHandler::HandleTeamLootOption(packet);
break;
@@ -298,9 +302,9 @@ void HandlePacket(Packet* packet) {
}
}
- if (packet->data[1] == WORLD) {
- switch (packet->data[3]) {
- case MSG_WORLD_CLIENT_ROUTE_PACKET: {
+ if (static_cast(packet->data[1]) == eConnectionType::WORLD) {
+ switch (static_cast(packet->data[3])) {
+ case eWorldMessageType::ROUTE_PACKET: {
Game::logger->Log("ChatServer", "Routing packet from world");
break;
}
diff --git a/dChatServer/PlayerContainer.cpp b/dChatServer/PlayerContainer.cpp
index 6bf3ccd1..dcc9ebb9 100644
--- a/dChatServer/PlayerContainer.cpp
+++ b/dChatServer/PlayerContainer.cpp
@@ -6,9 +6,10 @@
#include "dLogger.h"
#include "ChatPacketHandler.h"
#include "GeneralUtils.h"
-#include "dMessageIdentifiers.h"
#include "PacketUtils.h"
#include "Database.h"
+#include "eConnectionType.h"
+#include "eChatInternalMessageType.h"
PlayerContainer::PlayerContainer() {
}
@@ -149,7 +150,7 @@ void PlayerContainer::CreateTeamServer(Packet* packet) {
void PlayerContainer::BroadcastMuteUpdate(LWOOBJID player, time_t time) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_MUTE_UPDATE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::MUTE_UPDATE);
bitStream.Write(player);
bitStream.Write(time);
@@ -348,7 +349,7 @@ void PlayerContainer::TeamStatusUpdate(TeamData* team) {
void PlayerContainer::UpdateTeamsOnWorld(TeamData* team, bool deleteTeam) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_TEAM_UPDATE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::TEAM_UPDATE);
bitStream.Write(team->teamID);
bitStream.Write(deleteTeam);
diff --git a/dCommon/AMFFormat_BitStream.cpp b/dCommon/AMFFormat_BitStream.cpp
index b603ba31..dcb9197d 100644
--- a/dCommon/AMFFormat_BitStream.cpp
+++ b/dCommon/AMFFormat_BitStream.cpp
@@ -65,6 +65,15 @@ void RakNet::BitStream::Write(AMFValue* value) {
this->Write((AMFArrayValue*)value);
break;
}
+ case AMFObject:
+ case AMFXML:
+ case AMFByteArray:
+ case AMFVectorInt:
+ case AMFVectorUInt:
+ case AMFVectorDouble:
+ case AMFVectorObject:
+ case AMFDictionary:
+ break;
}
}
}
diff --git a/dCommon/Brick.h b/dCommon/Brick.h
new file mode 100644
index 00000000..e8bd747e
--- /dev/null
+++ b/dCommon/Brick.h
@@ -0,0 +1,11 @@
+#ifndef __BRICK__H__
+#define __BRICK__H__
+
+#include
+
+struct Brick {
+ uint32_t designerID;
+ uint32_t materialID;
+};
+
+#endif //!__BRICK__H__
diff --git a/dCommon/Diagnostics.cpp b/dCommon/Diagnostics.cpp
index 3025f083..58d558de 100644
--- a/dCommon/Diagnostics.cpp
+++ b/dCommon/Diagnostics.cpp
@@ -111,7 +111,7 @@ static void ErrorCallback(void* data, const char* msg, int errnum) {
void GenerateDump() {
std::string cmd = "sudo gcore " + std::to_string(getpid());
- system(cmd.c_str());
+ int ret = system(cmd.c_str()); // Saving a return just to prevent warning
}
void CatchUnhandled(int sig) {
diff --git a/dCommon/GeneralUtils.h b/dCommon/GeneralUtils.h
index 0555a45e..0a8a0a16 100644
--- a/dCommon/GeneralUtils.h
+++ b/dCommon/GeneralUtils.h
@@ -16,6 +16,7 @@
#include "dLogger.h"
enum eInventoryType : uint32_t;
+enum class eObjectBits : size_t;
enum class eReplicaComponentType : uint32_t;
/*!
@@ -66,9 +67,9 @@ namespace GeneralUtils {
//! Sets a bit on a numerical value
template
- void SetBit(T& value, size_t index) {
+ inline void SetBit(T& value, eObjectBits bits) {
static_assert(std::is_arithmetic::value, "Not an arithmetic type");
-
+ auto index = static_cast(bits);
if (index > (sizeof(T) * 8) - 1) {
return;
}
@@ -78,9 +79,9 @@ namespace GeneralUtils {
//! Clears a bit on a numerical value
template
- void ClearBit(T& value, size_t index) {
+ inline void ClearBit(T& value, eObjectBits bits) {
static_assert(std::is_arithmetic::value, "Not an arithmetic type");
-
+ auto index = static_cast(bits);
if (index > (sizeof(T) * 8 - 1)) {
return;
}
diff --git a/dCommon/LDFFormat.cpp b/dCommon/LDFFormat.cpp
index 767ec81a..cb921842 100644
--- a/dCommon/LDFFormat.cpp
+++ b/dCommon/LDFFormat.cpp
@@ -3,122 +3,174 @@
// Custom Classes
#include "GeneralUtils.h"
+#include "Game.h"
+#include "dLogger.h"
+
// C++
-#include
+#include
#include
+using LDFKey = std::string_view;
+using LDFTypeAndValue = std::string_view;
+
+using LDFType = std::string_view;
+using LDFValue = std::string_view;
+
//! Returns a pointer to a LDFData value based on string format
-LDFBaseData* LDFBaseData::DataFromString(const std::string& format) {
+LDFBaseData* LDFBaseData::DataFromString(const std::string_view& format) {
+ // A valid LDF must be at least 3 characters long (=0:) is the shortest valid LDF (empty UTF-16 key with no initial value)
+ if (format.empty() || format.length() <= 2) return nullptr;
+ auto equalsPosition = format.find('=');
+ // You can have an empty key, just make sure the type and value might exist
+ if (equalsPosition == std::string::npos || equalsPosition == (format.size() - 1)) return nullptr;
- // First, check the format
- std::istringstream ssFormat(format);
- std::string token;
+ std::pair keyValue;
+ keyValue.first = format.substr(0, equalsPosition);
+ keyValue.second = format.substr(equalsPosition + 1, format.size());
- std::vector keyValueArray;
- while (std::getline(ssFormat, token, '=')) {
- keyValueArray.push_back(token);
+ std::u16string key = GeneralUtils::ASCIIToUTF16(keyValue.first);
+
+ auto colonPosition = keyValue.second.find(':');
+
+ // If : is the first thing after an =, then this is an invalid LDF since
+ // we dont have a type to use.
+ if (colonPosition == std::string::npos || colonPosition == 0) return nullptr;
+
+ std::pair ldfTypeAndValue;
+ ldfTypeAndValue.first = keyValue.second.substr(0, colonPosition);
+ ldfTypeAndValue.second = keyValue.second.substr(colonPosition + 1, keyValue.second.size());
+
+ // Only allow empty values for string values.
+ if (ldfTypeAndValue.second.size() == 0 && !(ldfTypeAndValue.first == "0" || ldfTypeAndValue.first == "13")) return nullptr;
+
+ eLDFType type;
+ char* storage;
+ try {
+ type = static_cast(strtol(ldfTypeAndValue.first.data(), &storage, 10));
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Attempted to process invalid ldf type (%s) from string (%s)", ldfTypeAndValue.first.data(), format.data());
+ return nullptr;
}
- if (keyValueArray.size() == 2) {
- std::u16string key = GeneralUtils::ASCIIToUTF16(keyValueArray[0]);
+ LDFBaseData* returnValue = nullptr;
+ switch (type) {
+ case LDF_TYPE_UTF_16: {
+ std::u16string data = GeneralUtils::UTF8ToUTF16(ldfTypeAndValue.second);
+ returnValue = new LDFData(key, data);
+ break;
+ }
- std::vector dataArray;
- std::istringstream ssData(keyValueArray[1]);
- while (std::getline(ssData, token, ':')) {
- dataArray.push_back(token);
+ case LDF_TYPE_S32: {
+ try {
+ int32_t data = static_cast(strtoul(ldfTypeAndValue.second.data(), &storage, 10));
+ returnValue = new LDFData(key, data);
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid int32 value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ return nullptr;
}
+ break;
+ }
- if (dataArray.size() > 2) { // hacky fix for strings with colons in them
- std::vector newDataArray;
- newDataArray.push_back(dataArray[0]);
- std::string value = "";
- for (size_t i = 1; i < dataArray.size(); ++i) {
- value += dataArray[i] + ':';
- }
- value.pop_back(); // remove last colon
- newDataArray.push_back(value);
- dataArray = newDataArray;
+ case LDF_TYPE_FLOAT: {
+ try {
+ float data = strtof(ldfTypeAndValue.second.data(), &storage);
+ returnValue = new LDFData(key, data);
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid float value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ return nullptr;
}
+ break;
+ }
- if ((dataArray[0] == "0" || dataArray[0] == "13") && dataArray.size() == 1) {
- dataArray.push_back("");
+ case LDF_TYPE_DOUBLE: {
+ try {
+ double data = strtod(ldfTypeAndValue.second.data(), &storage);
+ returnValue = new LDFData(key, data);
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid double value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ return nullptr;
}
+ break;
+ }
- if (dataArray.size() == 2) {
- eLDFType type = static_cast(stoi(dataArray[0]));
+ case LDF_TYPE_U32:
+ {
+ uint32_t data;
- switch (type) {
- case LDF_TYPE_UTF_16: {
- std::u16string data = GeneralUtils::UTF8ToUTF16(dataArray[1]);
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_S32: {
- int32_t data = static_cast(stoull(dataArray[1]));
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_FLOAT: {
- float data = static_cast(stof(dataArray[1]));
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_DOUBLE: {
- double data = static_cast(stod(dataArray[1]));
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_U32:
- {
- uint32_t data;
-
- if (dataArray[1] == "true") {
- data = 1;
- } else if (dataArray[1] == "false") {
- data = 0;
- } else {
- data = static_cast(stoul(dataArray[1]));
- }
-
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_BOOLEAN: {
- bool data;
-
- if (dataArray[1] == "true") {
- data = true;
- } else if (dataArray[1] == "false") {
- data = false;
- } else {
- data = static_cast(stoi(dataArray[1]));
- }
-
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_U64: {
- uint64_t data = static_cast(stoull(dataArray[1]));
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_OBJID: {
- LWOOBJID data = static_cast(stoll(dataArray[1]));
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_UTF_8: {
- std::string data = dataArray[1];
- return new LDFData(key, data);
- }
-
- case LDF_TYPE_UNKNOWN: {
+ if (ldfTypeAndValue.second == "true") {
+ data = 1;
+ } else if (ldfTypeAndValue.second == "false") {
+ data = 0;
+ } else {
+ try {
+ data = static_cast(strtoul(ldfTypeAndValue.second.data(), &storage, 10));
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid uint32 value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
return nullptr;
}
- }
}
+
+ returnValue = new LDFData(key, data);
+ break;
}
- return nullptr;
+ case LDF_TYPE_BOOLEAN: {
+ bool data;
+ if (ldfTypeAndValue.second == "true") {
+ data = true;
+ } else if (ldfTypeAndValue.second == "false") {
+ data = false;
+ } else {
+ try {
+ data = static_cast(strtol(ldfTypeAndValue.second.data(), &storage, 10));
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid bool value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ return nullptr;
+ }
+ }
+
+ returnValue = new LDFData(key, data);
+ break;
+ }
+
+ case LDF_TYPE_U64: {
+ try {
+ uint64_t data = static_cast(strtoull(ldfTypeAndValue.second.data(), &storage, 10));
+ returnValue = new LDFData(key, data);
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid uint64 value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ return nullptr;
+ }
+ break;
+ }
+
+ case LDF_TYPE_OBJID: {
+ try {
+ LWOOBJID data = static_cast(strtoll(ldfTypeAndValue.second.data(), &storage, 10));
+ returnValue = new LDFData(key, data);
+ } catch (std::exception) {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid LWOOBJID value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ return nullptr;
+ }
+ break;
+ }
+
+ case LDF_TYPE_UTF_8: {
+ std::string data = ldfTypeAndValue.second.data();
+ returnValue = new LDFData(key, data);
+ break;
+ }
+
+ case LDF_TYPE_UNKNOWN: {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid unknown value (%s) from string (%s)", ldfTypeAndValue.second.data(), format.data());
+ break;
+ }
+
+ default: {
+ Game::logger->Log("LDFFormat", "Warning: Attempted to process invalid LDF type (%d) from string (%s)", type, format.data());
+ break;
+ }
+ }
+ return returnValue;
}
diff --git a/dCommon/LDFFormat.h b/dCommon/LDFFormat.h
index 9b62efa7..0921d04c 100644
--- a/dCommon/LDFFormat.h
+++ b/dCommon/LDFFormat.h
@@ -1,4 +1,5 @@
-#pragma once
+#ifndef __LDFFORMAT__H__
+#define __LDFFORMAT__H__
// Custom Classes
#include "dCommonVars.h"
@@ -6,18 +7,12 @@
// C++
#include
+#include
#include
// RakNet
+#include "BitStream.h"
-#include "../thirdparty/raknet/Source/BitStream.h"
-
-/*!
- \file LDFFormat.hpp
- \brief A collection of LDF format classes
- */
-
- //! An enum for LDF Data Types
enum eLDFType {
LDF_TYPE_UNKNOWN = -1, //!< Unknown data type
LDF_TYPE_UTF_16 = 0, //!< UTF-16 wstring data type
@@ -31,36 +26,21 @@ enum eLDFType {
LDF_TYPE_UTF_8 = 13, //!< UTF-8 string data type
};
-//! A base class for the LDF data
class LDFBaseData {
public:
- //! Destructor
- virtual ~LDFBaseData(void) {}
+ virtual ~LDFBaseData() {}
- //! Writes the data to a packet
- /*!
- \param packet The packet
- */
virtual void WriteToPacket(RakNet::BitStream* packet) = 0;
- //! Gets the key
- /*!
- \return The key
- */
- virtual const std::u16string& GetKey(void) = 0;
+ virtual const std::u16string& GetKey() = 0;
- //! Gets the value type
- /*!
- \return The value type
- */
- virtual eLDFType GetValueType(void) = 0;
+ virtual eLDFType GetValueType() = 0;
- //! Gets a string from the key/value pair
- /*!
- \param includeKey Whether or not to include the key in the data
- \param includeTypeId Whether or not to include the type id in the data
- \return The string representation of the data
+ /** Gets a string from the key/value pair
+ * @param includeKey Whether or not to include the key in the data
+ * @param includeTypeId Whether or not to include the type id in the data
+ * @return The string representation of the data
*/
virtual std::string GetString(bool includeKey = true, bool includeTypeId = true) = 0;
@@ -68,19 +48,15 @@ public:
virtual LDFBaseData* Copy() = 0;
- // MARK: Functions
-
- //! Returns a pointer to a LDFData value based on string format
- /*!
- \param format The format
+ /**
+ * Given an input string, return the data as a LDF key.
*/
- static LDFBaseData* DataFromString(const std::string& format);
+ static LDFBaseData* DataFromString(const std::string_view& format);
};
-//! A structure for an LDF key-value pair
template
-class LDFData : public LDFBaseData {
+class LDFData: public LDFBaseData {
private:
std::u16string key;
T value;
@@ -164,15 +140,11 @@ public:
if (includeKey) {
const std::string& sKey = GeneralUtils::UTF16ToWTF8(this->key, this->key.size());
-
- stream << sKey << "=";
+ stream << sKey << '=';
}
if (includeTypeId) {
- const std::string& sType = std::to_string(this->GetValueType());
-
-
- stream << sType << ":";
+ stream << this->GetValueType() << ':';
}
const std::string& sData = this->GetValueString();
@@ -234,20 +206,18 @@ inline void LDFData::WriteValue(RakNet::BitStream* packet) {
}
}
-// MARK: String Data
-template<> inline std::string LDFData::GetValueString(void) {
- //std::string toReturn(this->value.begin(), this->value.end());
- //return toReturn;
-
+template<> inline std::string LDFData::GetValueString() {
return GeneralUtils::UTF16ToWTF8(this->value, this->value.size());
}
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
+template<> inline std::string LDFData::GetValueString() { return std::to_string(this->value); }
-template<> inline std::string LDFData::GetValueString(void) { return this->value; }
+template<> inline std::string LDFData::GetValueString() { return this->value; }
+
+#endif //!__LDFFORMAT__H__
diff --git a/dCommon/dClient/AssetManager.cpp b/dCommon/dClient/AssetManager.cpp
index ed86d719..00cedba9 100644
--- a/dCommon/dClient/AssetManager.cpp
+++ b/dCommon/dClient/AssetManager.cpp
@@ -47,6 +47,10 @@ AssetManager::AssetManager(const std::filesystem::path& path) {
this->LoadPackIndex();
break;
}
+ case eAssetBundleType::None:
+ case eAssetBundleType::Unpacked: {
+ break;
+ }
}
}
@@ -111,7 +115,7 @@ bool AssetManager::GetFile(const char* name, char** data, uint32_t* len) {
*len = ftell(file);
*data = (char*)malloc(*len);
fseek(file, 0, SEEK_SET);
- fread(*data, sizeof(uint8_t), *len, file);
+ int32_t readInData = fread(*data, sizeof(uint8_t), *len, file);
fclose(file);
return true;
diff --git a/dCommon/dClient/Pack.cpp b/dCommon/dClient/Pack.cpp
index 1c1a643a..11345fc9 100644
--- a/dCommon/dClient/Pack.cpp
+++ b/dCommon/dClient/Pack.cpp
@@ -77,7 +77,7 @@ bool Pack::ReadFileFromPack(uint32_t crc, char** data, uint32_t* len) {
if (!isCompressed) {
char* tempData = (char*)malloc(pkRecord.m_UncompressedSize);
- fread(tempData, sizeof(uint8_t), pkRecord.m_UncompressedSize, file);
+ int32_t readInData = fread(tempData, sizeof(uint8_t), pkRecord.m_UncompressedSize, file);
*data = tempData;
*len = pkRecord.m_UncompressedSize;
@@ -97,11 +97,11 @@ bool Pack::ReadFileFromPack(uint32_t crc, char** data, uint32_t* len) {
if (currentReadPos >= pkRecord.m_UncompressedSize) break;
uint32_t size;
- fread(&size, sizeof(uint32_t), 1, file);
+ int32_t readInData = fread(&size, sizeof(uint32_t), 1, file);
pos += 4; // Move pointer position 4 to the right
char* chunk = (char*)malloc(size);
- fread(chunk, sizeof(int8_t), size, file);
+ int32_t readInData2 = fread(chunk, sizeof(int8_t), size, file);
pos += size; // Move pointer position the amount of bytes read to the right
int32_t err;
diff --git a/dCommon/dEnums/dCommonVars.h b/dCommon/dEnums/dCommonVars.h
index 16cae3c9..e11866f1 100644
--- a/dCommon/dEnums/dCommonVars.h
+++ b/dCommon/dEnums/dCommonVars.h
@@ -7,11 +7,11 @@
#include
#include
#include "BitStream.h"
+#include "eConnectionType.h"
+#include "eClientMessageType.h"
#pragma warning (disable:4251) //Disables SQL warnings
-typedef int RESTICKET;
-
// These are the same define, but they mean two different things in different contexts
// so a different define to distinguish what calculation is happening will help clarity.
#define FRAMES_TO_MS(x) 1000 / x
@@ -30,7 +30,7 @@ constexpr uint32_t lowFrameDelta = FRAMES_TO_MS(lowFramerate);
#define CBITSTREAM RakNet::BitStream bitStream;
#define CINSTREAM RakNet::BitStream inStream(packet->data, packet->length, false);
-#define CMSGHEADER PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_GAME_MSG);
+#define CMSGHEADER PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::GAME_MSG);
#define SEND_PACKET Game::server->Send(&bitStream, sysAddr, false);
#define SEND_PACKET_BROADCAST Game::server->Send(&bitStream, UNASSIGNED_SYSTEM_ADDRESS, true);
@@ -45,23 +45,16 @@ typedef uint16_t LWOINSTANCEID; //!< Used for Instance IDs
typedef uint32_t PROPERTYCLONELIST; //!< Used for Property Clone IDs
typedef uint32_t StripId;
-typedef int32_t PetTamingPiece; //!< Pet Taming Pieces
-
const LWOOBJID LWOOBJID_EMPTY = 0; //!< An empty object ID
const LOT LOT_NULL = -1; //!< A null LOT
const int32_t LOOTTYPE_NONE = 0; //!< No loot type available
const float SECONDARY_PRIORITY = 1.0f; //!< Secondary Priority
-const uint32_t INVENTORY_INVALID = -1; //!< Invalid Inventory
-const uint32_t INVENTORY_DEFAULT = -1; //!< Default Inventory
-const uint32_t StatusChangeInfo = 0; //!< Status Change Info (???)
const uint32_t INVENTORY_MAX = 9999999; //!< The Maximum Inventory Size
const uint32_t LWOCLONEID_INVALID = -1; //!< Invalid LWOCLONEID
const uint16_t LWOINSTANCEID_INVALID = -1; //!< Invalid LWOINSTANCEID
const uint16_t LWOMAPID_INVALID = -1; //!< Invalid LWOMAPID
const uint64_t LWOZONEID_INVALID = 0; //!< Invalid LWOZONEID
-typedef std::set TSetObjID;
-
const float PI = 3.14159f;
//============ STRUCTS ==============
@@ -164,401 +157,4 @@ public:
}
};
-struct Brick {
- uint32_t designerID;
- uint32_t materialID;
-};
-
-//This union is used by the behavior system
-union suchar {
- unsigned char usigned;
- char svalue;
-};
-
-//=========== LU ENUMS ============
-
-//! An enum for object ID bits
-enum eObjectBits : int32_t {
- OBJECT_BIT_PERSISTENT = 32, //!< The 32 bit index
- OBJECT_BIT_CLIENT = 46, //!< The 46 bit index
- OBJECT_BIT_SPAWNED = 58, //!< The 58 bit index
- OBJECT_BIT_CHARACTER = 60 //!< The 60 bit index
-};
-
-//! An enum for MatchUpdate types
-enum eMatchUpdate : int {
- MATCH_UPDATE_PLAYER_JOINED = 0,
- MATCH_UPDATE_PLAYER_LEFT = 1,
- MATCH_UPDATE_TIME = 3,
- MATCH_UPDATE_TIME_START_DELAY = 4,
- MATCH_UPDATE_PLAYER_READY = 5,
- MATCH_UPDATE_PLAYER_UNREADY = 6
-};
-
-//! An enum for camera cycling modes
-enum eCyclingMode : uint32_t {
- ALLOW_CYCLE_TEAMMATES,
- DISALLOW_CYCLING
-};
-
-enum eCinematicEvent : uint32_t {
- STARTED,
- WAYPOINT,
- ENDED,
-};
-
-//! An enum for character creation responses
-enum eCreationResponse : uint8_t {
- CREATION_RESPONSE_SUCCESS = 0, //!< The creation was successful
- CREATION_RESPONSE_OBJECT_ID_UNAVAILABLE, //!< The Object ID can't be used
- CREATION_RESPONSE_NAME_NOT_ALLOWED, //!< The name is not allowed
- CREATION_RESPONSE_PREDEFINED_NAME_IN_USE, //!< The predefined name is already in use
- CREATION_RESPONSE_CUSTOM_NAME_IN_USE //!< The custom name is already in use
-};
-
-//! An enum for login responses
-enum eLoginResponse : uint8_t {
- LOGIN_RESPONSE_GENERAL_FAILED = 0,
- LOGIN_RESPONSE_SUCCESS = 1,
- LOGIN_RESPONSE_BANNED = 2,
- LOGIN_RESPONSE_PERMISSIONS_NOT_HIGH_ENOUGH = 5,
- LOGIN_RESPONSE_WRONG_PASS_OR_USER = 6,
- LOGIN_RESPONSE_ACCOUNT_LOCKED = 7
-};
-
-//! An enum for character rename responses
-enum eRenameResponse : uint8_t {
- RENAME_RESPONSE_SUCCESS = 0, //!< The renaming was successful
- RENAME_RESPONSE_UNKNOWN_ERROR, //!< There was an unknown error
- RENAME_RESPONSE_NAME_UNAVAILABLE, //!< The name is unavailable
- RENAME_RESPONSE_NAME_IN_USE //!< The name is already in use
-};
-
-//! A replica packet type
-enum eReplicaPacketType {
- PACKET_TYPE_CONSTRUCTION, //!< A construction packet
- PACKET_TYPE_SERIALIZATION, //!< A serialization packet
- PACKET_TYPE_DESTRUCTION //!< A destruction packet
-};
-
-//! The Behavior Types for use with the AI system
-enum eCombatBehaviorTypes : uint32_t {
- PASSIVE = 0, //!< The object is passive
- AGGRESSIVE = 1, //!< The object is aggressive
- PASSIVE_TURRET = 2, //!< The object is a passive turret
- AGGRESSIVE_TURRET = 3 //!< The object is an aggressive turret
-};
-
-//! The Combat Role Type for use with the AI system
-enum eCombatRoleType : uint32_t {
- MELEE = 0, //!< Used for melee attacks
- RANGED = 1, //!< Used for range attacks
- SUPPORT = 2 //!< Used for support
-};
-
-//! The kill types for the Die packet
-enum eKillType : uint32_t {
- VIOLENT,
- SILENT
-};
-
-//! The various world states used throughout the server
-enum eObjectWorldState {
- WORLDSTATE_INWORLD, //!< Probably used when the object is in the world
- WORLDSTATE_ATTACHED, //!< Probably used when the object is attached to another object
- WORLDSTATE_INVENTORY //!< Probably used when the object is in an inventory
-};
-
-//! The trigger stats (???)
-enum eTriggerStat {
- INVALID_STAT, //!< ???
- HEALTH, //!< Probably used for health
- ARMOR, //!< Probably used for armor
- IMAGINATION //!< Probably used for imagination
-};
-
-//! The trigger operations (???)
-enum eTriggerOperator {
- INVALID_OPER, //!< ???
- EQUAL, //!< ???
- NOT_EQUAL, //!< ???
- GREATER, //!< ???
- GREATER_EQUAL, //!< ???
- LESS, //!< ???
- LESS_EQUAL //!< ???
-};
-
-//! The various build types
-enum eBuildType {
- BUILD_NOWHERE, //!< Used if something can't be built anywhere
- BUILD_IN_WORLD, //!< Used if something can be built in the world
- BUILD_ON_PROPERTY //!< Used if something can be build on a property
-};
-
-//! Quickbuild fail reasons
-enum eFailReason : uint32_t {
- REASON_NOT_GIVEN,
- REASON_OUT_OF_IMAGINATION,
- REASON_CANCELED_EARLY,
- REASON_BUILD_ENDED
-};
-
-//! Terminate interaction type
-enum eTerminateType : uint32_t {
- RANGE,
- USER,
- FROM_INTERACTION
-};
-
-//! The combat state
-enum eCombatState {
- IDLE, //!< The AI is in an idle state
- AGGRO, //!< The AI is in an aggressive state
- TETHER, //!< The AI is being redrawn back to tether point
- SPAWN, //!< The AI is spawning
- DEAD //!< The AI is dead
-};
-
-enum eControlSceme {
- SCHEME_A,
- SCHEME_D,
- SCHEME_GAMEPAD,
- SCHEME_E,
- SCHEME_FPS,
- SCHEME_DRIVING,
- SCHEME_TAMING,
- SCHEME_MODULAR_BUILD,
- SCHEME_WEAR_A_ROBOT //== freecam?
-};
-
-enum class eStateChangeType : uint32_t {
- PUSH,
- POP
-};
-
-enum eNotifyType {
- NOTIFY_TYPE_SUCCESS,
- NOTIFY_TYPE_QUIT,
- NOTIFY_TYPE_FAILED,
- NOTIFY_TYPE_BEGIN,
- NOTIFY_TYPE_READY,
- NOTIFY_TYPE_NAMINGPET
-};
-
-
-enum class UseItemResponse : uint32_t {
- NoImaginationForPet = 1,
- FailedPrecondition,
- MountsNotAllowed
-};
-
-enum eRebuildState : uint32_t {
- REBUILD_OPEN,
- REBUILD_COMPLETED = 2,
- REBUILD_RESETTING = 4,
- REBUILD_BUILDING,
- REBUILD_INCOMPLETE
-};
-
-/**
- * The loot source's type.
- */
-enum eLootSourceType : int32_t {
- LOOT_SOURCE_NONE = 0,
- LOOT_SOURCE_CHEST,
- LOOT_SOURCE_MISSION,
- LOOT_SOURCE_MAIL,
- LOOT_SOURCE_CURRENCY,
- LOOT_SOURCE_ACHIEVEMENT,
- LOOT_SOURCE_TRADE,
- LOOT_SOURCE_QUICKBUILD,
- LOOT_SOURCE_DELETION,
- LOOT_SOURCE_VENDOR,
- LOOT_SOURCE_ACTIVITY,
- LOOT_SOURCE_PICKUP,
- LOOT_SOURCE_BRICK,
- LOOT_SOURCE_PROPERTY,
- LOOT_SOURCE_MODERATION,
- LOOT_SOURCE_EXHIBIT,
- LOOT_SOURCE_INVENTORY,
- LOOT_SOURCE_CLAIMCODE,
- LOOT_SOURCE_CONSUMPTION,
- LOOT_SOURCE_CRAFTING,
- LOOT_SOURCE_LEVEL_REWARD,
- LOOT_SOURCE_RELOCATE
-};
-
-enum eGameActivities : uint32_t {
- ACTIVITY_NONE,
- ACTIVITY_QUICKBUILDING,
- ACTIVITY_SHOOTING_GALLERY,
- ACTIVITY_RACING,
- ACTIVITY_PINBALL,
- ACTIVITY_PET_TAMING
-};
-
-enum ePlayerFlags {
- BTARR_TESTING = 0,
- PLAYER_HAS_ENTERED_PET_RANCH = 1,
- MINIMAP_UNLOCKED = 2,
- ACTIVITY_REBUILDING_FAIL_TIME = 3,
- ACTIVITY_REBUILDING_FAIL_RANGE = 4,
- ACTIVITY_SHOOTING_GALLERY_HELP = 5,
- HELP_WALKING_CONTROLS = 6,
- FIRST_SMASHABLE = 7,
- FIRST_IMAGINATION_PICKUP = 8,
- FIRST_DAMAGE = 9,
- FIRST_ITEM = 10,
- FIRST_BRICK = 11,
- FIRST_CONSUMABLE = 12,
- FIRST_EQUIPPABLE = 13,
- CHAT_HELP = 14,
- FIRST_PET_TAMING_MINIGAME = 15,
- FIRST_PET_ON_SWITCH = 16,
- FIRST_PET_JUMPED_ON_SWITCH = 17,
- FIRST_PET_FOUND_TREASURE = 18,
- FIRST_PET_DUG_TREASURE = 19,
- FIRST_PET_OWNER_ON_PET_BOUNCER = 20,
- FIRST_PET_DESPAWN_NO_IMAGINATION = 21,
- FIRST_PET_SELECTED_ENOUGH_BRICKS = 22,
- FIRST_EMOTE_UNLOCKED = 23,
- GF_PIRATE_REP = 24,
- AG_BOB_CINEMATIC_EVENT = 25,
- HELP_JUMPING_CONTROLS = 26,
- HELP_DOUBLE_JUMP_CONTROLS = 27,
- HELP_CAMERA_CONTROLS = 28,
- HELP_ROTATE_CONTROLS = 29,
- HELP_SMASH = 30,
- MONUMENT_INTRO_MUSIC_PLAYED = 31,
- BEGINNING_ZONE_SUMMARY_DISPLAYED = 32,
- AG_FINISH_LINE_BUILT = 33,
- AG_BOSS_AREA_FOUND = 34,
- AG_LANDED_IN_BATTLEFIELD = 35,
- GF_PLAYER_HAS_BEEN_TO_THE_RAVINE = 36,
- MODULAR_BUILD_STARTED = 37,
- MODULAR_BUILD_FINISHED_CLICK_BUTTON = 38,
- THINKING_HAT_RECEIVED_GO_TO_MODULAR_BUILD_AREA = 39,
- BUILD_AREA_ENTERED_MOD_NOT_ACTIVATED_PUT_ON_HAT = 40,
- HAT_ON_INSIDE_OF_MOD_BUILD_EQUIP_A_MODULE_FROM_LEG = 41,
- MODULE_EQUIPPED_PLACE_ON_GLOWING_BLUE_SPOT = 42,
- FIRST_MODULE_PLACED_CORRECTLY_NOW_DO_THE_REST = 43,
- ROCKET_COMPLETE_NOW_LAUNCH_FROM_PAD = 44,
- JOINED_A_FACTION = 45,
- VENTURE_FACTION = 46,
- ASSEMBLY_FACTION = 47,
- PARADOX_FACTION = 48,
- SENTINEL_FACTION = 49,
- LUP_WORLD_ACCESS = 50,
- AG_FIRST_FLAG_COLLECTED = 51,
- TOOLTIP_TALK_TO_SKYLAND_TO_GET_HAT = 52,
- MODULAR_BUILD_PLAYER_PLACES_FIRST_MODEL_IN_SCRATCH = 53,
- MODULAR_BUILD_FIRST_ARROW_DISPLAY_FOR_MODULE = 54,
- AG_BEACON_QB_SO_THE_PLAYER_CAN_ALWAYS_BUILD_THEM = 55,
- GF_PET_DIG_FLAG_1 = 56,
- GF_PET_DIG_FLAG_2 = 57,
- GF_PET_DIG_FLAG_3 = 58,
- SUPPRESS_SPACESHIP_CINEMATIC_FLYTHROUGH = 59,
- GF_PLAYER_FALL_DEATH = 60,
- GF_PLAYER_CAN_GET_FLAG_1 = 61,
- GF_PLAYER_CAN_GET_FLAG_2 = 62,
- GF_PLAYER_CAN_GET_FLAG_3 = 63,
- ENTER_BBB_FROM_PROPERTY_EDIT_CONFIRMATION_DIALOG = 64,
- AG_FIRST_COMBAT_COMPLETE = 65,
- AG_COMPLETE_BOB_MISSION = 66,
- IS_NEWS_SCREEN_VISIBLE = 114,
- NJ_GARMADON_CINEMATIC_SEEN = 125,
- ELEPHANT_PET_3050 = 801,
- CAT_PET_3054 = 802,
- TRICERATOPS_PET_3195 = 803,
- TERRIER_PET_3254 = 804,
- SKUNK_PET_3261 = 805,
- LION_PET_3520 = 806,
- BUNNY_PET_3672 = 807,
- CROCODILE_PET_3994 = 808,
- DOBERMAN_PET_5635 = 809,
- BUFFALO_PET_5636 = 810,
- ROBOT_DOG_PET_5637 = 811,
- EUROPEAN_DRAGON_PET_5639 = 812,
- TORTOISE_PET_5640 = 813,
- ASIAN_DRAGON_PET_5641 = 814,
- MANTIS_PET_5642 = 815,
- PANDA_PET_5643 = 816,
- WARTHOG_PET_6720 = 817,
- GOAT_PET_7638 = 818,
- CRAB_PET_7694 = 819,
- AG_SPACE_SHIP_BINOC_AT_LAUNCH = 1001,
- AG_SPACE_SHIP_BINOC_AT_LAUNCH_PLATFORM = 1002,
- AG_SPACE_SHIP_BINOC_ON_PLATFORM_TO_LEFT_OF_START = 1003,
- AG_SPACE_SHIP_BINOC_ON_PLATFORM_TO_RIGHT_OF_START = 1004,
- AG_SPACE_SHIP_BINOC_AT_BOB = 1005,
- AG_BATTLE_BINOC_FOR_TRICERETOPS = 1101,
- AG_BATTLE_BINOC_AT_PARADOX = 1102,
- AG_BATTLE_BINOC_AT_MISSION_GIVER = 1103,
- AG_BATTLE_BINOC_AT_BECK = 1104,
- AG_MONUMENT_BINOC_INTRO = 1105,
- AG_MONUMENT_BINOC_OUTRO = 1106,
- AG_LAUNCH_BINOC_INTRO = 1107,
- AG_LAUNCH_BINOC_BISON = 1108,
- AG_LAUNCH_BINOC_SHARK = 1109,
- NS_BINOC_CONCERT_TRANSITION = 1201,
- NS_BINOC_RACE_PLACE_TRANSITION = 1202,
- NS_BINOC_BRICK_ANNEX_TRANSITION = 1203,
- NS_BINOC_GF_LAUNCH = 1204,
- NS_BINOC_FV_LAUNCH = 1205,
- NS_BINOC_BRICK_ANNEX_WATER = 1206,
- NS_BINOC_AG_LAUNCH_AT_RACE_PLACE = 1207,
- NS_BINOC_AG_LAUNCH_AT_BRICK_ANNEX = 1208,
- NS_BINOC_AG_LAUNCH_AT_PLAZA = 1209,
- NS_BINOC_TBA = 1210,
- NS_FLAG_COLLECTABLE_1_BY_JONNY_THUNDER = 1211,
- NS_FLAG_COLLECTABLE_2_UNDER_CONCERT_BRIDGE = 1212,
- NS_FLAG_COLLECTABLE_3_BY_FV_LAUNCH = 1213,
- NS_FLAG_COLLECTABLE_4_IN_PLAZA_BEHIND_BUILDING = 1214,
- NS_FLAG_COLLECTABLE_5_BY_GF_LAUNCH = 1215,
- NS_FLAG_COLLECTABLE_6_BY_DUCK_SG = 1216,
- NS_FLAG_COLLECTABLE_7_BY_LUP_LAUNCH = 1217,
- NS_FLAG_COLLECTABLE_8_BY_NT_LUANCH = 1218,
- NS_FLAG_COLLECTABLE_9_BY_RACE_BUILD = 1219,
- NS_FLAG_COLLECTABLE_10_ON_AG_LAUNCH_PATH = 1220,
- PR_BINOC_AT_LAUNCH_PAD = 1251,
- PR_BINOC_AT_BEGINNING_OF_ISLAND_B = 1252,
- PR_BINOC_AT_FIRST_PET_BOUNCER = 1253,
- PR_BINOC_ON_BY_CROWS_NEST = 1254,
- PR_PET_DIG_AT_BEGINNING_OF_ISLAND_B = 1261,
- PR_PET_DIG_AT_THE_LOCATION_OF_OLD_BOUNCE_BACK = 1262,
- PR_PET_DIG_UNDER_QB_BRIDGE = 1263,
- PR_PET_DIG_BACK_SIDE_BY_PARTNER_BOUNCE = 1264,
- PR_PET_DIG_BY_LAUNCH_PAD = 1265,
- PR_PET_DIG_BY_FIRST_PET_BOUNCER = 1266,
- GF_BINOC_ON_LANDING_PAD = 1301,
- GF_BINOC_AT_RAVINE_START = 1302,
- GF_BINOC_ON_TOP_OF_RAVINE_HEAD = 1303,
- GF_BINOC_AT_TURTLE_AREA = 1304,
- GF_BINOC_IN_TUNNEL_TO_ELEPHANTS = 1305,
- GF_BINOC_IN_ELEPHANTS_AREA = 1306,
- GF_BINOC_IN_RACING_AREA = 1307,
- GF_BINOC_IN_CROC_AREA = 1308,
- GF_BINOC_IN_JAIL_AREA = 1309,
- GF_BINOC_TELESCOPE_NEXT_TO_CAPTAIN_JACK = 1310,
- NT_PLINTH_REBUILD = 1919,
- NT_FACTION_SPY_DUKE = 1974,
- NT_FACTION_SPY_OVERBUILD = 1976,
- NT_FACTION_SPY_HAEL = 1977,
- NJ_EARTH_SPINJITZU = 2030,
- NJ_LIGHTNING_SPINJITZU = 2031,
- NJ_ICE_SPINJITZU = 2032,
- NJ_FIRE_SPINJITZU = 2033,
- NJ_WU_SHOW_DAILY_CHEST = 2099
-};
-
-//======== FUNC ===========
-
-template
-inline T const& clamp(const T& val, const T& low, const T& high) {
- if (val < low) return low;
- else if (val > high) return high;
-
- return val;
-}
-
#endif //!__DCOMMONVARS__H__
diff --git a/dCommon/dEnums/dMessageIdentifiers.h b/dCommon/dEnums/dMessageIdentifiers.h
deleted file mode 100644
index 7c810a2d..00000000
--- a/dCommon/dEnums/dMessageIdentifiers.h
+++ /dev/null
@@ -1,564 +0,0 @@
-#pragma once
-#include "MessageIdentifiers.h"
-
-enum CONNECTION_TYPE {
- SERVER = 0, //!< Means it is used throughout all servers
- AUTH, //!< Means it is sent from the client authentication
- CHAT, //!< Means it is sent from and to the chat server
- CHAT_INTERNAL, //!< Unused - We can potentially use this in the future for various things
- WORLD, //!< Means it is sent from the client world
- CLIENT, //!< Means it is sent to the client from the world server
- MASTER //!< Means it is sent to and from the master server
-};
-
-//! The Internal Server Packet Identifiers
-enum SERVER {
- MSG_SERVER_VERSION_CONFIRM = 0, /*!< Sent during a handshake to confirm the server/client version */
- MSG_SERVER_DISCONNECT_NOTIFY, /*!< Sent when a user disconnected */
- MSG_SERVER_GENERAL_NOTIFY /*!< A general notification */
-};
-
-//! The Internal Authentication Packet Identifiers
-enum AUTH {
- MSG_AUTH_LOGIN_REQUEST = 0, /*!< Sent from the client when a user logs in */
- MSG_AUTH_LOGOUT_REQUEST, /*!< Sent from the client when a user logs out */
- MSG_AUTH_CREATE_NEW_ACCOUNT_REQUEST, /*!< Sent from the client when a user creates a new account */
- MSG_AUTH_LEGOINTERFACE_AUTH_RESPONSE, /*!< Unknown */
- MSG_AUTH_SESSIONKEY_RECEIVED_CONFIRM, /*!< Sent when the server recieved the session key (?) */
- MSG_AUTH_RUNTIME_CONFIG /*!< Unknown */
-};
-
-//! The Internal Chat Packet Identifiers
-enum CHAT {
- MSG_CHAT_LOGIN_SESSION_NOTIFY = 0, /*!< When a user logs in */
- MSG_CHAT_GENERAL_CHAT_MESSAGE, /*!< Used for global chat messages */
- MSG_CHAT_PRIVATE_CHAT_MESSAGE, /*!< Used for private chat messages */
- MSG_CHAT_USER_CHANNEL_CHAT_MESSAGE, /*!< Unknown */
- MSG_CHAT_WORLD_DISCONNECT_REQUEST, /*!< Unknown */
- MSG_CHAT_WORLD_PROXIMITY_RESPONSE, /*!< Unknown */
- MSG_CHAT_WORLD_PARCEL_RESPONSE, /*!< Unknown */
- MSG_CHAT_ADD_FRIEND_REQUEST, /*!< When the client requests to add a friend */
- MSG_CHAT_ADD_FRIEND_RESPONSE, /*!< Sent from the server when the client adds a friend */
- MSG_CHAT_REMOVE_FRIEND, /*!< When the client removes a friend */
- MSG_CHAT_GET_FRIENDS_LIST, /*!< Sent when the client requests a user's friends list */
- MSG_CHAT_ADD_IGNORE, /*!< Sent when the client adds a friend to the "ignore" list */
- MSG_CHAT_REMOVE_IGNORE, /*!< Sent when the client removes a friend from the "ignore" list */
- MSG_CHAT_GET_IGNORE_LIST, /*!< Sent when the client requests a user's ignored list */
- MSG_CHAT_TEAM_MISSED_INVITE_CHECK, /*!< Unknown (Something with an unresponded-to friend request probably) */
- MSG_CHAT_TEAM_INVITE, /*!< When the client invites a user to a team */
- MSG_CHAT_TEAM_INVITE_RESPONSE, /*!< Sent from the server when the client invites someone to the team */
- MSG_CHAT_TEAM_KICK, /*!< Sent when the client kicks a member from a team */
- MSG_CHAT_TEAM_LEAVE, /*!< Sent when the client leaves a team */
- MSG_CHAT_TEAM_SET_LOOT, /*!< Unknown (Something to do with team loot) */
- MSG_CHAT_TEAM_SET_LEADER, /*!< Unknown (Probably sets the team leader or something) */
- MSG_CHAT_TEAM_GET_STATUS, /*!< Check to see if we are in a team or not, sent on world join */
- MSG_CHAT_GUILD_CREATE, /*!< Guild Creation */
- MSG_CHAT_GUILD_INVITE, /*!< Guild Invitation */
- MSG_CHAT_GUILD_INVITE_RESPONSE, /*!< Guild Invite Response */
- MSG_CHAT_GUILD_LEAVE, /*!< Guild Leave */
- MSG_CHAT_GUILD_KICK, /*!< Guild Kick */
- MSG_CHAT_GUILD_GET_STATUS, /*!< Guild Get Status */
- MSG_CHAT_GUILD_GET_ALL, /*!< Guild Get All */
- MSG_CHAT_SHOW_ALL,
- MSG_CHAT_BLUEPRINT_MODERATED,
- MSG_CHAT_BLUEPRINT_MODEL_READY,
- MSG_CHAT_PROPERTY_READY_FOR_APPROVAL,
- MSG_CHAT_PROPERTY_MODERATION_CHANGED,
- MSG_CHAT_PROPERTY_BUILDMODE_CHANGED,
- MSG_CHAT_PROPERTY_BUILDMODE_CHANGED_REPORT,
- MSG_CHAT_MAIL,
- MSG_CHAT_WORLD_INSTANCE_LOCATION_REQUEST,
- MSG_CHAT_REPUTATION_UPDATE,
- MSG_CHAT_SEND_CANNED_TEXT,
- MSG_CHAT_GMLEVEL_UPDATE,
- MSG_CHAT_CHARACTER_NAME_CHANGE_REQUEST,
- MSG_CHAT_CSR_REQUEST,
- MSG_CHAT_CSR_REPLY,
- MSG_CHAT_GM_KICK,
- MSG_CHAT_GM_ANNOUNCE,
- MSG_CHAT_GM_MUTE,
- MSG_CHAT_ACTIVITY_UPDATE,
- MSG_CHAT_WORLD_ROUTE_PACKET,
- MSG_CHAT_GET_ZONE_POPULATIONS,
- MSG_CHAT_REQUEST_MINIMUM_CHAT_MODE,
- MSG_CHAT_REQUEST_MINIMUM_CHAT_MODE_PRIVATE,
- MSG_CHAT_MATCH_REQUEST,
- MSG_CHAT_UGCMANIFEST_REPORT_MISSING_FILE,
- MSG_CHAT_UGCMANIFEST_REPORT_DONE_FILE,
- MSG_CHAT_UGCMANIFEST_REPORT_DONE_BLUEPRINT,
- MSG_CHAT_UGCC_REQUEST,
- MSG_CHAT_WHO,
- MSG_CHAT_WORLD_PLAYERS_PET_MODERATED_ACKNOWLEDGE,
- MSG_CHAT_ACHIEVEMENT_NOTIFY,
- MSG_CHAT_GM_CLOSE_PRIVATE_CHAT_WINDOW,
- MSG_CHAT_UNEXPECTED_DISCONNECT,
- MSG_CHAT_PLAYER_READY,
- MSG_CHAT_GET_DONATION_TOTAL,
- MSG_CHAT_UPDATE_DONATION,
- MSG_CHAT_PRG_CSR_COMMAND,
- MSG_CHAT_HEARTBEAT_REQUEST_FROM_WORLD,
- MSG_CHAT_UPDATE_FREE_TRIAL_STATUS
-};
-
-//! Used for packets related to chatting
-enum CHAT_INTERNAL {
- MSG_CHAT_INTERNAL_PLAYER_ADDED_NOTIFICATION = 0,
- MSG_CHAT_INTERNAL_PLAYER_REMOVED_NOTIFICATION,
- MSG_CHAT_INTERNAL_ADD_FRIEND,
- MSG_CHAT_INTERNAL_ADD_BEST_FRIEND,
- MSG_CHAT_INTERNAL_ADD_TO_TEAM,
- MSG_CHAT_INTERNAL_ADD_BLOCK,
- MSG_CHAT_INTERNAL_REMOVE_FRIEND,
- MSG_CHAT_INTERNAL_REMOVE_BLOCK,
- MSG_CHAT_INTERNAL_REMOVE_FROM_TEAM,
- MSG_CHAT_INTERNAL_DELETE_TEAM,
- MSG_CHAT_INTERNAL_REPORT,
- MSG_CHAT_INTERNAL_PRIVATE_CHAT,
- MSG_CHAT_INTERNAL_PRIVATE_CHAT_RESPONSE,
- MSG_CHAT_INTERNAL_ANNOUNCEMENT,
- MSG_CHAT_INTERNAL_MAIL_COUNT_UPDATE,
- MSG_CHAT_INTERNAL_MAIL_SEND_NOTIFY,
- MSG_CHAT_INTERNAL_REQUEST_USER_LIST,
- MSG_CHAT_INTERNAL_FRIEND_LIST,
- MSG_CHAT_INTERNAL_ROUTE_TO_PLAYER,
- MSG_CHAT_INTERNAL_TEAM_UPDATE,
- MSG_CHAT_INTERNAL_MUTE_UPDATE,
- MSG_CHAT_INTERNAL_CREATE_TEAM,
-};
-
-//! Used for packets send to the world
-enum WORLD {
- MSG_WORLD_CLIENT_VALIDATION = 1, // Session info
- MSG_WORLD_CLIENT_CHARACTER_LIST_REQUEST,
- MSG_WORLD_CLIENT_CHARACTER_CREATE_REQUEST,
- MSG_WORLD_CLIENT_LOGIN_REQUEST, // Character selected
- MSG_WORLD_CLIENT_GAME_MSG,
- MSG_WORLD_CLIENT_CHARACTER_DELETE_REQUEST,
- MSG_WORLD_CLIENT_CHARACTER_RENAME_REQUEST,
- MSG_WORLD_CLIENT_HAPPY_FLOWER_MODE_NOTIFY,
- MSG_WORLD_CLIENT_SLASH_RELOAD_MAP, // Reload map cmp
- MSG_WORLD_CLIENT_SLASH_PUSH_MAP_REQUEST, // Push map req cmd
- MSG_WORLD_CLIENT_SLASH_PUSH_MAP, // Push map cmd
- MSG_WORLD_CLIENT_SLASH_PULL_MAP, // Pull map cmd
- MSG_WORLD_CLIENT_LOCK_MAP_REQUEST,
- MSG_WORLD_CLIENT_GENERAL_CHAT_MESSAGE, // General chat message
- MSG_WORLD_CLIENT_HTTP_MONITOR_INFO_REQUEST,
- MSG_WORLD_CLIENT_SLASH_DEBUG_SCRIPTS, // Debug scripts cmd
- MSG_WORLD_CLIENT_MODELS_CLEAR,
- MSG_WORLD_CLIENT_EXHIBIT_INSERT_MODEL,
- MSG_WORLD_CLIENT_LEVEL_LOAD_COMPLETE, // Character data request
- MSG_WORLD_CLIENT_TMP_GUILD_CREATE,
- MSG_WORLD_CLIENT_ROUTE_PACKET, // Social?
- MSG_WORLD_CLIENT_POSITION_UPDATE,
- MSG_WORLD_CLIENT_MAIL,
- MSG_WORLD_CLIENT_WORD_CHECK, // Whitelist word check
- MSG_WORLD_CLIENT_STRING_CHECK, // Whitelist string check
- MSG_WORLD_CLIENT_GET_PLAYERS_IN_ZONE,
- MSG_WORLD_CLIENT_REQUEST_UGC_MANIFEST_INFO,
- MSG_WORLD_CLIENT_BLUEPRINT_GET_ALL_DATA_REQUEST,
- MSG_WORLD_CLIENT_CANCEL_MAP_QUEUE,
- MSG_WORLD_CLIENT_HANDLE_FUNNESS,
- MSG_WORLD_CLIENT_FAKE_PRG_CSR_MESSAGE,
- MSG_WORLD_CLIENT_REQUEST_FREE_TRIAL_REFRESH,
- MSG_WORLD_CLIENT_GM_SET_FREE_TRIAL_STATUS
-};
-
-//! An enum for packets sent to the client
-enum CLIENT {
- MSG_CLIENT_LOGIN_RESPONSE = 0,
- MSG_CLIENT_LOGOUT_RESPONSE,
- MSG_CLIENT_LOAD_STATIC_ZONE,
- MSG_CLIENT_CREATE_OBJECT,
- MSG_CLIENT_CREATE_CHARACTER,
- MSG_CLIENT_CREATE_CHARACTER_EXTENDED,
- MSG_CLIENT_CHARACTER_LIST_RESPONSE,
- MSG_CLIENT_CHARACTER_CREATE_RESPONSE,
- MSG_CLIENT_CHARACTER_RENAME_RESPONSE,
- MSG_CLIENT_CHAT_CONNECT_RESPONSE,
- MSG_CLIENT_AUTH_ACCOUNT_CREATE_RESPONSE,
- MSG_CLIENT_DELETE_CHARACTER_RESPONSE,
- MSG_CLIENT_GAME_MSG,
- MSG_CLIENT_CONNECT_CHAT,
- MSG_CLIENT_TRANSFER_TO_WORLD,
- MSG_CLIENT_IMPENDING_RELOAD_NOTIFY,
- MSG_CLIENT_MAKE_GM_RESPONSE,
- MSG_CLIENT_HTTP_MONITOR_INFO_RESPONSE,
- MSG_CLIENT_SLASH_PUSH_MAP_RESPONSE,
- MSG_CLIENT_SLASH_PULL_MAP_RESPONSE,
- MSG_CLIENT_SLASH_LOCK_MAP_RESPONSE,
- MSG_CLIENT_BLUEPRINT_SAVE_RESPONSE,
- MSG_CLIENT_BLUEPRINT_LUP_SAVE_RESPONSE,
- MSG_CLIENT_BLUEPRINT_LOAD_RESPONSE_ITEMID,
- MSG_CLIENT_BLUEPRINT_GET_ALL_DATA_RESPONSE,
- MSG_CLIENT_MODEL_INSTANTIATE_RESPONSE,
- MSG_CLIENT_DEBUG_OUTPUT,
- MSG_CLIENT_ADD_FRIEND_REQUEST,
- MSG_CLIENT_ADD_FRIEND_RESPONSE,
- MSG_CLIENT_REMOVE_FRIEND_RESPONSE,
- MSG_CLIENT_GET_FRIENDS_LIST_RESPONSE,
- MSG_CLIENT_UPDATE_FRIEND_NOTIFY,
- MSG_CLIENT_ADD_IGNORE_RESPONSE,
- MSG_CLIENT_REMOVE_IGNORE_RESPONSE,
- MSG_CLIENT_GET_IGNORE_LIST_RESPONSE,
- MSG_CLIENT_TEAM_INVITE,
- MSG_CLIENT_TEAM_INVITE_INITIAL_RESPONSE,
- MSG_CLIENT_GUILD_CREATE_RESPONSE,
- MSG_CLIENT_GUILD_GET_STATUS_RESPONSE,
- MSG_CLIENT_GUILD_INVITE,
- MSG_CLIENT_GUILD_INVITE_INITIAL_RESPONSE,
- MSG_CLIENT_GUILD_INVITE_FINAL_RESPONSE,
- MSG_CLIENT_GUILD_INVITE_CONFIRM,
- MSG_CLIENT_GUILD_ADD_PLAYER,
- MSG_CLIENT_GUILD_REMOVE_PLAYER,
- MSG_CLIENT_GUILD_LOGIN_LOGOUT,
- MSG_CLIENT_GUILD_RANK_CHANGE,
- MSG_CLIENT_GUILD_DATA,
- MSG_CLIENT_GUILD_STATUS,
- MSG_CLIENT_MAIL,
- MSG_CLIENT_DB_PROXY_RESULT,
- MSG_CLIENT_SHOW_ALL_RESPONSE,
- MSG_CLIENT_WHO_RESPONSE,
- MSG_CLIENT_SEND_CANNED_TEXT,
- MSG_CLIENT_UPDATE_CHARACTER_NAME,
- MSG_CLIENT_SET_NETWORK_SIMULATOR,
- MSG_CLIENT_INVALID_CHAT_MESSAGE,
- MSG_CLIENT_MINIMUM_CHAT_MODE_RESPONSE,
- MSG_CLIENT_MINIMUM_CHAT_MODE_RESPONSE_PRIVATE,
- MSG_CLIENT_CHAT_MODERATION_STRING,
- MSG_CLIENT_UGC_MANIFEST_RESPONSE,
- MSG_CLIENT_IN_LOGIN_QUEUE,
- MSG_CLIENT_SERVER_STATES,
- MSG_CLIENT_GM_CLOSE_TARGET_CHAT_WINDOW,
- MSG_CLIENT_GENERAL_TEXT_FOR_LOCALIZATION,
- MSG_CLIENT_UPDATE_FREE_TRIAL_STATUS,
- MSG_CLIENT_UGC_DOWNLOAD_FAILED = 120
-};
-
-//! Used for packets sent to the master server
-enum MASTER {
- MSG_MASTER_REQUEST_PERSISTENT_ID = 1,
- MSG_MASTER_REQUEST_PERSISTENT_ID_RESPONSE,
- MSG_MASTER_REQUEST_ZONE_TRANSFER,
- MSG_MASTER_REQUEST_ZONE_TRANSFER_RESPONSE,
- MSG_MASTER_SERVER_INFO,
- MSG_MASTER_REQUEST_SESSION_KEY,
- MSG_MASTER_SET_SESSION_KEY,
- MSG_MASTER_SESSION_KEY_RESPONSE,
- MSG_MASTER_PLAYER_ADDED,
- MSG_MASTER_PLAYER_REMOVED,
-
- MSG_MASTER_CREATE_PRIVATE_ZONE,
- MSG_MASTER_REQUEST_PRIVATE_ZONE,
-
- MSG_MASTER_WORLD_READY,
- MSG_MASTER_PREP_ZONE,
-
- MSG_MASTER_SHUTDOWN,
- MSG_MASTER_SHUTDOWN_RESPONSE,
- MSG_MASTER_SHUTDOWN_IMMEDIATE,
-
- MSG_MASTER_SHUTDOWN_UNIVERSE,
-
- MSG_MASTER_AFFIRM_TRANSFER_REQUEST,
- MSG_MASTER_AFFIRM_TRANSFER_RESPONSE,
-
- MSG_MASTER_NEW_SESSION_ALERT
-};
-
-//! The Game messages
-enum GAME_MSG : unsigned short {
- GAME_MSG_TELEPORT = 19,
- GAME_MSG_SET_PLAYER_CONTROL_SCHEME = 26,
- GAME_MSG_DROP_CLIENT_LOOT = 30,
- GAME_MSG_DIE = 37,
- GAME_MSG_REQUEST_DIE = 38,
- GAME_MSG_PLAY_EMOTE = 41,
- GAME_MSG_PLAY_ANIMATION = 43,
- GAME_MSG_CONTROL_BEHAVIOR = 48,
- GAME_MSG_SET_NAME = 72,
- GAME_MSG_ECHO_START_SKILL = 118,
- GAME_MSG_START_SKILL = 119,
- GAME_MSG_VERIFY_ACK = 121,
- GAME_MSG_ADD_SKILL = 127,
- GAME_MSG_REMOVE_SKILL = 128,
- GAME_MSG_SET_CURRENCY = 133,
- GAME_MSG_PICKUP_CURRENCY = 137,
- GAME_MSG_PICKUP_ITEM = 139,
- GAME_MSG_TEAM_PICKUP_ITEM = 140,
- GAME_MSG_PLAY_FX_EFFECT = 154,
- GAME_MSG_STOP_FX_EFFECT = 155,
- GAME_MSG_REQUEST_RESURRECT = 159,
- GAME_MSG_RESURRECT = 160,
- GAME_MSG_PUSH_EQUIPPED_ITEMS_STATE = 191,
- GAME_MSG_POP_EQUIPPED_ITEMS_STATE = 192,
- GAME_MSG_SET_GM_LEVEL = 193,
- GAME_MSG_SET_STUNNED = 198,
- GAME_MSG_SET_STUN_IMMUNITY = 200,
- GAME_MSG_KNOCKBACK = 202,
- GAME_MSG_REBUILD_CANCEL = 209,
- GAME_MSG_ENABLE_REBUILD = 213,
- GAME_MSG_MOVE_ITEM_IN_INVENTORY = 224,
- GAME_MSG_ADD_ITEM_TO_INVENTORY_CLIENT_SYNC = 227,
- GAME_MSG_REMOVE_ITEM_FROM_INVENTORY = 230,
- GAME_MSG_EQUIP_ITEM = 231,
- GAME_MSG_UN_EQUIP_ITEM = 233,
- GAME_MSG_OFFER_MISSION = 248,
- GAME_MSG_RESPOND_TO_MISSION = 249,
- GAME_MSG_NOTIFY_MISSION = 254,
- GAME_MSG_NOTIFY_MISSION_TASK = 255,
- GAME_MSG_REBUILD_NOTIFY_STATE = 336,
- GAME_MSG_TERMINATE_INTERACTION = 357,
- GAME_MSG_SERVER_TERMINATE_INTERACTION = 358,
- GAME_MSG_REQUEST_USE = 364,
- GAME_MSG_VENDOR_OPEN_WINDOW = 369,
- GAME_MSG_BUY_FROM_VENDOR = 373,
- GAME_MSG_SELL_TO_VENDOR = 374,
- GAME_MSG_TEAM_SET_OFF_WORLD_FLAG = 383,
- GAME_MSG_SET_INVENTORY_SIZE = 389,
- GAME_MSG_ACKNOWLEDGE_POSSESSION = 391,
- GAME_MSG_SET_SHOOTING_GALLERY_PARAMS = 400,
- GAME_MSG_REQUEST_ACTIVITY_START_STOP = 402,
- GAME_MSG_REQUEST_ACTIVITY_ENTER = 403,
- GAME_MSG_REQUEST_ACTIVITY_EXIT = 404,
- GAME_MSG_ACTIVITY_ENTER = 405,
- GAME_MSG_ACTIVITY_EXIT = 406,
- GAME_MSG_ACTIVITY_START = 407,
- GAME_MSG_ACTIVITY_STOP = 408,
- GAME_MSG_SHOOTING_GALLERY_CLIENT_AIM_UPDATE = 409,
- GAME_MSG_SHOOTING_GALLERY_FIRE = 411,
- GAME_MSG_REQUEST_VENDOR_STATUS_UPDATE = 416,
- GAME_MSG_VENDOR_STATUS_UPDATE = 417,
- GAME_MSG_NOTIFY_CLIENT_SHOOTING_GALLERY_SCORE = 425,
- GAME_MSG_CONSUME_CLIENT_ITEM = 427,
- GAME_MSG_CLIENT_ITEM_CONSUMED = 428,
- GAME_MSG_UPDATE_SHOOTING_GALLERY_ROTATION = 448,
- GAME_MSG_SET_FLAG = 471,
- GAME_MSG_NOTIFY_CLIENT_FLAG_CHANGE = 472,
- GAME_MSG_VENDOR_TRANSACTION_RESULT = 476,
- GAME_MSG_HAS_BEEN_COLLECTED = 486,
- GAME_MSG_DISPLAY_CHAT_BUBBLE = 495,
- GAME_MSG_SPAWN_PET = 498,
- GAME_MSG_DESPAWN_PET = 499,
- GAME_MSG_PLAYER_LOADED = 505,
- GAME_MSG_PLAYER_READY = 509,
- GAME_MSG_REQUEST_LINKED_MISSION = 515,
- GAME_MSG_INVALID_ZONE_TRANSFER_LIST = 519,
- GAME_MSG_MISSION_DIALOGUE_OK = 520,
- GAME_MSG_DISPLAY_MESSAGE_BOX = 529,
- GAME_MSG_MESSAGE_BOX_RESPOND = 530,
- GAME_MSG_CHOICE_BOX_RESPOND = 531,
- GAME_MSG_SMASH = 537,
- GAME_MSG_UNSMASH = 538,
- GAME_MSG_SET_SHOOTING_GALLERY_RETICULE_EFFECT = 548,
- GAME_MSG_PLACE_MODEL_RESPONSE = 0x223,
- GAME_MSG_SET_JET_PACK_MODE = 561,
- GAME_MSG_REGISTER_PET_ID = 565,
- GAME_MSG_REGISTER_PET_DBID = 566,
- GAME_MSG_SHOW_ACTIVITY_COUNTDOWN = 568,
- GAME_MSG_START_ACTIVITY_TIME = 576,
- GAME_MSG_ACTIVITY_PAUSE = 602,
- GAME_MSG_USE_NON_EQUIPMENT_ITEM = 603,
- GAME_MSG_USE_ITEM_RESULT = 607,
- GAME_MSG_COMMAND_PET = 640,
- GAME_MSG_PET_RESPONSE = 641,
- GAME_MSG_REQUEST_ACTIVITY_SUMMARY_LEADERBOARD_DATA = 648,
- GAME_MSG_SEND_ACTIVITY_SUMMARY_LEADERBOARD_DATA = 649,
- GAME_MSG_NOTIFY_OBJECT = 656,
- GAME_MSG_CLIENT_NOTIFY_PET = 659,
- GAME_MSG_NOTIFY_PET = 660,
- GAME_MSG_NOTIFY_PET_TAMING_MINIGAME = 661,
- GAME_MSG_START_SERVER_PET_MINIGAME_TIMER = 662,
- GAME_MSG_CLIENT_EXIT_TAMING_MINIGAME = 663,
- GAME_MSG_PET_NAME_CHANGED = 686,
- GAME_MSG_PET_TAMING_MINIGAME_RESULT = 667,
- GAME_MSG_PET_TAMING_TRY_BUILD_RESULT = 668,
- GAME_MSG_NOTIFY_TAMING_BUILD_SUCCESS = 673,
- GAME_MSG_NOTIFY_TAMING_MODEL_LOADED_ON_SERVER = 674,
- GAME_MSG_ACTIVATE_BUBBLE_BUFF = 678,
- GAME_MSG_DEACTIVATE_BUBBLE_BUFF = 679,
- GAME_MSG_ADD_PET_TO_PLAYER = 681,
- GAME_MSG_REQUEST_SET_PET_NAME = 683,
- GAME_MSG_SET_PET_NAME = 684,
- GAME_MSG_NOTIFY_PET_TAMING_PUZZLE_SELECTED = 675,
- GAME_MSG_SHOW_PET_ACTION_BUTTON = 692,
- GAME_MSG_SET_EMOTE_LOCK_STATE = 693,
- GAME_MSG_USE_ITEM_REQUIREMENTS_RESPONSE = 703,
- GAME_MSG_PLAY_EMBEDDED_EFFECT_ON_ALL_CLIENTS_NEAR_OBJECT = 713,
- GAME_MSG_DOWNLOAD_PROPERTY_DATA = 716,
- GAME_MSG_QUERY_PROPERTY_DATA = 717,
- GAME_MSG_PROPERTY_EDITOR_BEGIN = 724,
- GAME_MSG_PROPERTY_EDITOR_END = 725,
- GAME_MSG_IS_MINIFIG_IN_A_BUBBLE = 729,
- GAME_MSG_START_PATHING = 733,
- GAME_MSG_ACTIVATE_BUBBLE_BUFF_FROM_SERVER = 734,
- GAME_MSG_DEACTIVATE_BUBBLE_BUFF_FROM_SERVER = 735,
- GAME_MSG_NOTIFY_CLIENT_ZONE_OBJECT = 737,
- GAME_MSG_UPDATE_REPUTATION = 746,
- GAME_MSG_PROPERTY_RENTAL_RESPONSE = 750,
- GAME_MSG_REQUEST_PLATFORM_RESYNC = 760,
- GAME_MSG_PLATFORM_RESYNC = 761,
- GAME_MSG_PLAY_CINEMATIC = 762,
- GAME_MSG_END_CINEMATIC = 763,
- GAME_MSG_CINEMATIC_UPDATE = 764,
- GAME_MSG_TOGGLE_GHOST_REFERENCE_OVERRIDE = 767,
- GAME_MSG_SET_GHOST_REFERENCE_POSITION = 768,
- GAME_MSG_FIRE_EVENT_SERVER_SIDE = 770,
- GAME_MSG_SET_NETWORK_SCRIPT_VAR = 781,
- GAME_MSG_UPDATE_MODEL_FROM_CLIENT = 793,
- GAME_MSG_DELETE_MODEL_FROM_CLIENT = 794,
- GAME_MSG_PLAY_ND_AUDIO_EMITTER = 821,
- GAME_MSG_PLAY2_DAMBIENT_SOUND = 831,
- GAME_MSG_ENTER_PROPERTY1 = 840,
- GAME_MSG_ENTER_PROPERTY2 = 841,
- GAME_MSG_PROPERTY_ENTRANCE_SYNC = 842,
- GAME_MSG_PROPERTY_SELECT_QUERY = 845,
- GAME_MSG_PARSE_CHAT_MESSAGE = 850,
- GAME_MSG_BROADCAST_TEXT_TO_CHATBOX = 858,
- GAME_MSG_OPEN_PROPERTY_MANAGEMENT = 860,
- GAME_MSG_OPEN_PROPERTY_VENDOR = 861,
- GAME_MSG_UPDATE_PROPERTY_OR_MODEL_FOR_FILTER_CHECK = 863,
- GAME_MSG_CLIENT_TRADE_REQUEST = 868,
- GAME_MSG_SERVER_TRADE_REQUEST = 869,
- GAME_MSG_SERVER_TRADE_INVITE = 870,
- GAME_MSG_CLIENT_TRADE_REPLY = 871,
- GAME_MSG_SERVER_TRADE_REPLY = 872,
- GAME_MSG_SERVER_TRADE_INITIAL_REPLY = 873,
- GAME_MSG_SERVER_TRADE_FINAL_REPLY = 874,
- GAME_MSG_CLIENT_TRADE_UPDATE = 875,
- GAME_MSG_SERVER_SIDE_TRADE_UPDATE = 876,
- GAME_MSG_SERVER_TRADE_UPDATE = 877,
- GAME_MSG_CLIENT_TRADE_CANCEL = 878,
- GAME_MSG_CLIENT_SIDE_TRADE_CANCEL = 879,
- GAME_MSG_CLIENT_TRADE_ACCEPT = 880,
- GAME_MSG_SERVER_SIDE_TRADE_ACCEPT = 881,
- GAME_MSG_SERVER_SIDE_TRADE_CANCEL = 882,
- GAME_MSG_SERVER_TRADE_CANCEL = 883,
- GAME_MSG_SERVER_TRADE_ACCEPT = 884,
- GAME_MSG_READY_FOR_UPDATES = 888,
- GAME_MSG_ORIENT_TO_OBJECT = 905,
- GAME_MSG_ORIENT_TO_POSITION = 906,
- GAME_MSG_ORIENT_TO_ANGLE = 907,
- GAME_MSG_BOUNCER_ACTIVE_STATUS = 942,
- GAME_MSG_UN_USE_BBB_MODEL = 999,
- GAME_MSG_BBB_LOAD_ITEM_REQUEST = 1000,
- GAME_MSG_BBB_SAVE_REQUEST = 1001,
- GAME_MSG_BBB_SAVE_RESPONSE = 1006,
- GAME_MSG_NOTIFY_CLIENT_OBJECT = 1042,
- GAME_MSG_DISPLAY_ZONE_SUMMARY = 1043,
- GAME_MSG_ZONE_SUMMARY_DISMISSED = 1044,
- GAME_MSG_ACTIVITY_STATE_CHANGE_REQUEST = 1053,
- GAME_MSG_MODIFY_PLAYER_ZONE_STATISTIC = 1046,
- GAME_MSG_START_BUILDING_WITH_ITEM = 1057,
- GAME_MSG_START_ARRANGING_WITH_ITEM = 1061,
- GAME_MSG_FINISH_ARRANGING_WITH_ITEM = 1062,
- GAME_MSG_DONE_ARRANGING_WITH_ITEM = 1063,
- GAME_MSG_SET_BUILD_MODE = 1068,
- GAME_MSG_BUILD_MODE_SET = 1069,
- GAME_MSG_SET_BUILD_MODE_CONFIRMED = 1073,
- GAME_MSG_NOTIFY_CLIENT_FAILED_PRECONDITION = 1081,
- GAME_MSG_MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1093,
- GAME_MSG_MODULAR_BUILD_BEGIN = 1094,
- GAME_MSG_MODULAR_BUILD_END = 1095,
- GAME_MSG_MODULAR_BUILD_MOVE_AND_EQUIP = 1096,
- GAME_MSG_MODULAR_BUILD_FINISH = 1097,
- GAME_MSG_REPORT_BUG = 1198,
- GAME_MSG_MISSION_DIALOGUE_CANCELLED = 1129,
- GAME_MSG_ECHO_SYNC_SKILL = 1144,
- GAME_MSG_SYNC_SKILL = 1145,
- GAME_MSG_REQUEST_SERVER_PROJECTILE_IMPACT = 1148,
- GAME_MSG_DO_CLIENT_PROJECTILE_IMPACT = 1151,
- GAME_MSG_MODULAR_BUILD_CONVERT_MODEL = 1155,
- GAME_MSG_SET_PLAYER_ALLOWED_RESPAWN = 1165,
- GAME_MSG_UI_MESSAGE_SERVER_TO_SINGLE_CLIENT = 1184,
- GAME_MSG_UI_MESSAGE_SERVER_TO_ALL_CLIENTS = 1185,
- GAME_MSG_PET_TAMING_TRY_BUILD = 1197,
- GAME_MSG_REQUEST_SMASH_PLAYER = 1202,
- GAME_MSG_FIRE_EVENT_CLIENT_SIDE = 1213,
- GAME_MSG_TOGGLE_GM_INVIS = 1218,
- GAME_MSG_CHANGE_OBJECT_WORLD_STATE = 1223,
- GAME_MSG_VEHICLE_LOCK_INPUT = 1230,
- GAME_MSG_VEHICLE_UNLOCK_INPUT = 1231,
- GAME_MSG_RACING_RESET_PLAYER_TO_LAST_RESET = 1252,
- GAME_MSG_RACING_SERVER_SET_PLAYER_LAP_AND_PLANE = 1253,
- GAME_MSG_RACING_SET_PLAYER_RESET_INFO = 1254,
- GAME_MSG_RACING_PLAYER_INFO_RESET_FINISHED = 1255,
- GAME_MSG_LOCK_NODE_ROTATION = 1260,
- GAME_MSG_VEHICLE_SET_WHEEL_LOCK_STATE = 1273,
- GAME_MSG_NOTIFY_VEHICLE_OF_RACING_OBJECT = 1276,
- GAME_MSG_SET_NAME_BILLBOARD_STATE = 1284,
- GAME_MSG_PLAYER_REACHED_RESPAWN_CHECKPOINT = 1296,
- GAME_MSG_HANDLE_UGC_EQUIP_POST_DELETE_BASED_ON_EDIT_MODE = 1300,
- GAME_MSG_HANDLE_UGC_EQUIP_PRE_CREATE_BASED_ON_EDIT_MODE = 1301,
- GAME_MSG_PROPERTY_CONTENTS_FROM_CLIENT = 1305,
- GAME_MSG_GET_MODELS_ON_PROPERTY = 1306,
- GAME_MSG_MATCH_REQUEST = 1308,
- GAME_MSG_MATCH_RESPONSE = 1309,
- GAME_MSG_MATCH_UPDATE = 1310,
- GAME_MSG_MODULE_ASSEMBLY_DB_DATA_FOR_CLIENT = 1131,
- GAME_MSG_MODULE_ASSEMBLY_QUERY_DATA = 1132,
- GAME_MSG_SHOW_BILLBOARD_INTERACT_ICON = 1337,
- GAME_MSG_CHANGE_IDLE_FLAGS = 1338,
- GAME_MSG_VEHICLE_ADD_PASSIVE_BOOST_ACTION = 1340,
- GAME_MSG_VEHICLE_REMOVE_PASSIVE_BOOST_ACTION = 1341,
- GAME_MSG_VEHICLE_NOTIFY_SERVER_ADD_PASSIVE_BOOST_ACTION = 1342,
- GAME_MSG_VEHICLE_NOTIFY_SERVER_REMOVE_PASSIVE_BOOST_ACTION = 1343,
- GAME_MSG_VEHICLE_ADD_SLOWDOWN_ACTION = 1344,
- GAME_MSG_VEHICLE_REMOVE_SLOWDOWN_ACTION = 1345,
- GAME_MSG_VEHICLE_NOTIFY_SERVER_ADD_SLOWDOWN_ACTION = 1346,
- GAME_MSG_VEHICLE_NOTIFY_SERVER_REMOVE_SLOWDOWN_ACTION = 1347,
- GAME_MSG_BUYBACK_FROM_VENDOR = 1350,
- GAME_MSG_SET_PROPERTY_ACCESS = 1366,
- GAME_MSG_ZONE_PROPERTY_MODEL_PLACED = 1369,
- GAME_MSG_ZONE_PROPERTY_MODEL_ROTATED = 1370,
- GAME_MSG_ZONE_PROPERTY_MODEL_REMOVED_WHILE_EQUIPPED = 1371,
- GAME_MSG_ZONE_PROPERTY_MODEL_EQUIPPED = 1372,
- GAME_MSG_ZONE_PROPERTY_MODEL_PICKED_UP = 1373,
- GAME_MSG_ZONE_PROPERTY_MODEL_REMOVED = 1374,
- GAME_MSG_NOTIFY_RACING_CLIENT = 1390,
- GAME_MSG_RACING_PLAYER_HACK_CAR = 1391,
- GAME_MSG_RACING_PLAYER_LOADED = 1392,
- GAME_MSG_RACING_CLIENT_READY = 1393,
- GAME_MSG_UPDATE_CHAT_MODE = 1395,
- GAME_MSG_VEHICLE_NOTIFY_FINISHED_RACE = 1396,
- GAME_MSG_SET_CONSUMABLE_ITEM = 1409,
- GAME_MSG_SET_STATUS_IMMUNITY = 1435,
- GAME_MSG_SET_PET_NAME_MODERATED = 1448,
- GAME_MSG_MODIFY_LEGO_SCORE = 1459,
- GAME_MSG_RESTORE_TO_POST_LOAD_STATS = 1468,
- GAME_MSG_SET_RAIL_MOVEMENT = 1471,
- GAME_MSG_START_RAIL_MOVEMENT = 1472,
- GAME_MSG_CANCEL_RAIL_MOVEMENT = 1474,
- GAME_MSG_CLIENT_RAIL_MOVEMENT_READY = 1476,
- GAME_MSG_PLAYER_RAIL_ARRIVED_NOTIFICATION = 1477,
- GAME_MSG_UPDATE_PLAYER_STATISTIC = 1481,
- GAME_MSG_MODULAR_ASSEMBLY_NIF_COMPLETED = 1498,
- GAME_MSG_NOTIFY_NOT_ENOUGH_INV_SPACE = 1516,
- GAME_MSG_TEAM_SET_LEADER = 0x0615,
- GAME_MSG_TEAM_INVITE_CONFIRM = 0x0616,
- GAME_MSG_TEAM_GET_STATUS_RESPONSE = 0x0617,
- GAME_MSG_TEAM_ADD_PLAYER = 0x061a,
- GAME_MSG_TEAM_REMOVE_PLAYER = 0x061b,
- GAME_MSG_START_CELEBRATION_EFFECT = 1618,
- GAME_MSG_ADD_BUFF = 1647,
- GAME_MSG_SERVER_DONE_LOADING_ALL_OBJECTS = 1642,
- GAME_MSG_PLACE_PROPERTY_MODEL = 1170,
- GAME_MSG_VEHICLE_NOTIFY_HIT_IMAGINATION_SERVER = 1606,
- GAME_MSG_ADD_RUN_SPEED_MODIFIER = 1505,
- GAME_MSG_HANDLE_HOT_PROPERTY_DATA = 1511,
- GAME_MSG_SEND_HOT_PROPERTY_DATA = 1510,
- GAME_MSG_REMOVE_RUN_SPEED_MODIFIER = 1506,
- GAME_MSG_UPDATE_PROPERTY_PERFORMANCE_COST = 1547,
- GAME_MSG_PROPERTY_ENTRANCE_BEGIN = 1553,
- GAME_MSG_SET_RESURRECT_RESTORE_VALUES = 1591,
- GAME_MSG_VEHICLE_STOP_BOOST = 1617,
- GAME_MSG_REMOVE_BUFF = 1648,
- GAME_MSG_REQUEST_MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1666,
- GAME_MSG_RESPONSE_MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1667,
- GAME_MSG_PLAYER_SET_CAMERA_CYCLING_MODE = 1676,
- GAME_MSG_SET_MOUNT_INVENTORY_ID = 1726,
- GAME_MSG_NOTIFY_SERVER_LEVEL_PROCESSING_COMPLETE = 1734,
- GAME_MSG_NOTIFY_LEVEL_REWARDS = 1735,
- GAME_MSG_DISMOUNT_COMPLETE = 1756,
- GAME_MSG_MARK_INVENTORY_ITEM_AS_ACTIVE = 1767,
- END
-};
diff --git a/dCommon/dEnums/eAuthMessageType.h b/dCommon/dEnums/eAuthMessageType.h
new file mode 100644
index 00000000..ecc17a37
--- /dev/null
+++ b/dCommon/dEnums/eAuthMessageType.h
@@ -0,0 +1,15 @@
+#ifndef __EAUTHMESSAGETYPE__H__
+#define __EAUTHMESSAGETYPE__H__
+
+#include
+
+enum class eAuthMessageType : uint32_t {
+ LOGIN_REQUEST = 0,
+ LOGOUT_REQUEST,
+ CREATE_NEW_ACCOUNT_REQUEST,
+ LEGOINTERFACE_AUTH_RESPONSE,
+ SESSIONKEY_RECEIVED_CONFIRM,
+ RUNTIME_CONFIG
+};
+
+#endif //!__EAUTHMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eBuildType.h b/dCommon/dEnums/eBuildType.h
new file mode 100644
index 00000000..f28f43cc
--- /dev/null
+++ b/dCommon/dEnums/eBuildType.h
@@ -0,0 +1,12 @@
+#ifndef __EBUILDTYPE__H__
+#define __EBUILDTYPE__H__
+
+#include
+
+enum class eBuildType :uint32_t {
+ NOWHERE,
+ IN_WORLD,
+ ON_PROPERTY
+};
+
+#endif //!__EBUILDTYPE__H__
diff --git a/dCommon/dEnums/eCharacterCreationResponse.h b/dCommon/dEnums/eCharacterCreationResponse.h
new file mode 100644
index 00000000..da1ec0f2
--- /dev/null
+++ b/dCommon/dEnums/eCharacterCreationResponse.h
@@ -0,0 +1,14 @@
+#ifndef __ECHARACTERCREATIONRESPONSE__H__
+#define __ECHARACTERCREATIONRESPONSE__H__
+
+#include
+
+enum class eCharacterCreationResponse : uint8_t {
+ SUCCESS = 0,
+ OBJECT_ID_UNAVAILABLE,
+ NAME_NOT_ALLOWED,
+ PREDEFINED_NAME_IN_USE,
+ CUSTOM_NAME_IN_USE
+};
+
+#endif //!__ECHARACTERCREATIONRESPONSE__H__
diff --git a/dCommon/dEnums/eChatInternalMessageType.h b/dCommon/dEnums/eChatInternalMessageType.h
new file mode 100644
index 00000000..d3b7020b
--- /dev/null
+++ b/dCommon/dEnums/eChatInternalMessageType.h
@@ -0,0 +1,31 @@
+#ifndef __ECHATINTERNALMESSAGETYPE__H__
+#define __ECHATINTERNALMESSAGETYPE__H__
+
+#include
+
+enum eChatInternalMessageType : uint32_t {
+ PLAYER_ADDED_NOTIFICATION = 0,
+ PLAYER_REMOVED_NOTIFICATION,
+ ADD_FRIEND,
+ ADD_BEST_FRIEND,
+ ADD_TO_TEAM,
+ ADD_BLOCK,
+ REMOVE_FRIEND,
+ REMOVE_BLOCK,
+ REMOVE_FROM_TEAM,
+ DELETE_TEAM,
+ REPORT,
+ PRIVATE_CHAT,
+ PRIVATE_CHAT_RESPONSE,
+ ANNOUNCEMENT,
+ MAIL_COUNT_UPDATE,
+ MAIL_SEND_NOTIFY,
+ REQUEST_USER_LIST,
+ FRIEND_LIST,
+ ROUTE_TO_PLAYER,
+ TEAM_UPDATE,
+ MUTE_UPDATE,
+ CREATE_TEAM,
+};
+
+#endif //!__ECHATINTERNALMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eChatMessageType.h b/dCommon/dEnums/eChatMessageType.h
new file mode 100644
index 00000000..52895ba3
--- /dev/null
+++ b/dCommon/dEnums/eChatMessageType.h
@@ -0,0 +1,78 @@
+#ifndef __ECHATMESSAGETYPE__H__
+#define __ECHATMESSAGETYPE__H__
+
+#include
+
+//! The Internal Chat Packet Identifiers
+enum class eChatMessageType :uint32_t {
+ LOGIN_SESSION_NOTIFY = 0,
+ GENERAL_CHAT_MESSAGE,
+ PRIVATE_CHAT_MESSAGE,
+ USER_CHANNEL_CHAT_MESSAGE,
+ WORLD_DISCONNECT_REQUEST,
+ WORLD_PROXIMITY_RESPONSE,
+ WORLD_PARCEL_RESPONSE,
+ ADD_FRIEND_REQUEST,
+ ADD_FRIEND_RESPONSE,
+ REMOVE_FRIEND,
+ GET_FRIENDS_LIST,
+ ADD_IGNORE,
+ REMOVE_IGNORE,
+ GET_IGNORE_LIST,
+ TEAM_MISSED_INVITE_CHECK,
+ TEAM_INVITE,
+ TEAM_INVITE_RESPONSE,
+ TEAM_KICK,
+ TEAM_LEAVE,
+ TEAM_SET_LOOT,
+ TEAM_SET_LEADER,
+ TEAM_GET_STATUS,
+ GUILD_CREATE,
+ GUILD_INVITE,
+ GUILD_INVITE_RESPONSE,
+ GUILD_LEAVE,
+ GUILD_KICK,
+ GUILD_GET_STATUS,
+ GUILD_GET_ALL,
+ SHOW_ALL,
+ BLUEPRINT_MODERATED,
+ BLUEPRINT_MODEL_READY,
+ PROPERTY_READY_FOR_APPROVAL,
+ PROPERTY_MODERATION_CHANGED,
+ PROPERTY_BUILDMODE_CHANGED,
+ PROPERTY_BUILDMODE_CHANGED_REPORT,
+ MAIL,
+ WORLD_INSTANCE_LOCATION_REQUEST,
+ REPUTATION_UPDATE,
+ SEND_CANNED_TEXT,
+ GMLEVEL_UPDATE,
+ CHARACTER_NAME_CHANGE_REQUEST,
+ CSR_REQUEST,
+ CSR_REPLY,
+ GM_KICK,
+ GM_ANNOUNCE,
+ GM_MUTE,
+ ACTIVITY_UPDATE,
+ WORLD_ROUTE_PACKET,
+ GET_ZONE_POPULATIONS,
+ REQUEST_MINIMUM_CHAT_MODE,
+ REQUEST_MINIMUM_CHAT_MODE_PRIVATE,
+ MATCH_REQUEST,
+ UGCMANIFEST_REPORT_MISSING_FILE,
+ UGCMANIFEST_REPORT_DONE_FILE,
+ UGCMANIFEST_REPORT_DONE_BLUEPRINT,
+ UGCC_REQUEST,
+ WHO,
+ WORLD_PLAYERS_PET_MODERATED_ACKNOWLEDGE,
+ ACHIEVEMENT_NOTIFY,
+ GM_CLOSE_PRIVATE_CHAT_WINDOW,
+ UNEXPECTED_DISCONNECT,
+ PLAYER_READY,
+ GET_DONATION_TOTAL,
+ UPDATE_DONATION,
+ PRG_CSR_COMMAND,
+ HEARTBEAT_REQUEST_FROM_WORLD,
+ UPDATE_FREE_TRIAL_STATUS
+};
+
+#endif //!__ECHATMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eCinematicEvent.h b/dCommon/dEnums/eCinematicEvent.h
new file mode 100644
index 00000000..7fb82ca7
--- /dev/null
+++ b/dCommon/dEnums/eCinematicEvent.h
@@ -0,0 +1,12 @@
+#ifndef __ECINEMATICEVENT__H__
+#define __ECINEMATICEVENT__H__
+
+#include
+
+enum class eCinematicEvent : uint32_t {
+ STARTED,
+ WAYPOINT,
+ ENDED,
+};
+
+#endif //!__ECINEMATICEVENT__H__
diff --git a/dCommon/dEnums/eClientMessageType.h b/dCommon/dEnums/eClientMessageType.h
new file mode 100644
index 00000000..aafccc36
--- /dev/null
+++ b/dCommon/dEnums/eClientMessageType.h
@@ -0,0 +1,76 @@
+#ifndef __ECLIENTMESSAGETYPE__H__
+#define __ECLIENTMESSAGETYPE__H__
+
+#include
+
+enum class eClientMessageType : uint32_t {
+ LOGIN_RESPONSE = 0,
+ LOGOUT_RESPONSE,
+ LOAD_STATIC_ZONE,
+ CREATE_OBJECT,
+ CREATE_CHARACTER,
+ CREATE_CHARACTER_EXTENDED,
+ CHARACTER_LIST_RESPONSE,
+ CHARACTER_CREATE_RESPONSE,
+ CHARACTER_RENAME_RESPONSE,
+ CHAT_CONNECT_RESPONSE,
+ AUTH_ACCOUNT_CREATE_RESPONSE,
+ DELETE_CHARACTER_RESPONSE,
+ GAME_MSG,
+ CONNECT_CHAT,
+ TRANSFER_TO_WORLD,
+ IMPENDING_RELOAD_NOTIFY,
+ MAKE_GM_RESPONSE,
+ HTTP_MONITOR_INFO_RESPONSE,
+ SLASH_PUSH_MAP_RESPONSE,
+ SLASH_PULL_MAP_RESPONSE,
+ SLASH_LOCK_MAP_RESPONSE,
+ BLUEPRINT_SAVE_RESPONSE,
+ BLUEPRINT_LUP_SAVE_RESPONSE,
+ BLUEPRINT_LOAD_RESPONSE_ITEMID,
+ BLUEPRINT_GET_ALL_DATA_RESPONSE,
+ MODEL_INSTANTIATE_RESPONSE,
+ DEBUG_OUTPUT,
+ ADD_FRIEND_REQUEST,
+ ADD_FRIEND_RESPONSE,
+ REMOVE_FRIEND_RESPONSE,
+ GET_FRIENDS_LIST_RESPONSE,
+ UPDATE_FRIEND_NOTIFY,
+ ADD_IGNORE_RESPONSE,
+ REMOVE_IGNORE_RESPONSE,
+ GET_IGNORE_LIST_RESPONSE,
+ TEAM_INVITE,
+ TEAM_INVITE_INITIAL_RESPONSE,
+ GUILD_CREATE_RESPONSE,
+ GUILD_GET_STATUS_RESPONSE,
+ GUILD_INVITE,
+ GUILD_INVITE_INITIAL_RESPONSE,
+ GUILD_INVITE_FINAL_RESPONSE,
+ GUILD_INVITE_CONFIRM,
+ GUILD_ADD_PLAYER,
+ GUILD_REMOVE_PLAYER,
+ GUILD_LOGIN_LOGOUT,
+ GUILD_RANK_CHANGE,
+ GUILD_DATA,
+ GUILD_STATUS,
+ MAIL,
+ DB_PROXY_RESULT,
+ SHOW_ALL_RESPONSE,
+ WHO_RESPONSE,
+ SEND_CANNED_TEXT,
+ UPDATE_CHARACTER_NAME,
+ SET_NETWORK_SIMULATOR,
+ INVALID_CHAT_MESSAGE,
+ MINIMUM_CHAT_MODE_RESPONSE,
+ MINIMUM_CHAT_MODE_RESPONSE_PRIVATE,
+ CHAT_MODERATION_STRING,
+ UGC_MANIFEST_RESPONSE,
+ IN_LOGIN_QUEUE,
+ SERVER_STATES,
+ GM_CLOSE_TARGET_CHAT_WINDOW,
+ GENERAL_TEXT_FOR_LOCALIZATION,
+ UPDATE_FREE_TRIAL_STATUS,
+ UGC_DOWNLOAD_FAILED = 120
+};
+
+#endif //!__ECLIENTMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eConnectionType.h b/dCommon/dEnums/eConnectionType.h
new file mode 100644
index 00000000..ce1ff90c
--- /dev/null
+++ b/dCommon/dEnums/eConnectionType.h
@@ -0,0 +1,14 @@
+#ifndef __ECONNECTIONTYPE__H__
+#define __ECONNECTIONTYPE__H__
+
+enum class eConnectionType : uint16_t {
+ SERVER = 0,
+ AUTH,
+ CHAT,
+ CHAT_INTERNAL,
+ WORLD,
+ CLIENT,
+ MASTER
+};
+
+#endif //!__ECONNECTIONTYPE__H__
diff --git a/dCommon/dEnums/eControlScheme.h b/dCommon/dEnums/eControlScheme.h
new file mode 100644
index 00000000..f7585ebb
--- /dev/null
+++ b/dCommon/dEnums/eControlScheme.h
@@ -0,0 +1,18 @@
+#ifndef __ECONTROLSCHEME__H__
+#define __ECONTROLSCHEME__H__
+
+#include
+
+enum class eControlScheme : uint32_t {
+ SCHEME_A,
+ SCHEME_D,
+ SCHEME_GAMEPAD,
+ SCHEME_E,
+ SCHEME_FPS,
+ SCHEME_DRIVING,
+ SCHEME_TAMING,
+ SCHEME_MODULAR_BUILD,
+ SCHEME_WEAR_A_ROBOT //== freecam?
+};
+
+#endif //!__ECONTROLSCHEME__H__
diff --git a/dCommon/dEnums/eCyclingMode.h b/dCommon/dEnums/eCyclingMode.h
new file mode 100644
index 00000000..b5e3248b
--- /dev/null
+++ b/dCommon/dEnums/eCyclingMode.h
@@ -0,0 +1,11 @@
+#ifndef __ECYCLINGMODE__H__
+#define __ECYCLINGMODE__H__
+
+#include
+
+enum class eCyclingMode : uint32_t {
+ ALLOW_CYCLE_TEAMMATES,
+ DISALLOW_CYCLING
+};
+
+#endif //!__ECYCLINGMODE__H__
diff --git a/dCommon/dEnums/eGameActivity.h b/dCommon/dEnums/eGameActivity.h
new file mode 100644
index 00000000..16b75380
--- /dev/null
+++ b/dCommon/dEnums/eGameActivity.h
@@ -0,0 +1,15 @@
+#ifndef __EGAMEACTIVITY__H__
+#define __EGAMEACTIVITY__H__
+
+#include
+
+enum class eGameActivity : uint32_t {
+ NONE,
+ QUICKBUILDING,
+ SHOOTING_GALLERY,
+ RACING,
+ PINBALL,
+ PET_TAMING
+};
+
+#endif //!__EGAMEACTIVITY__H__
diff --git a/dCommon/dEnums/eGameMessageType.h b/dCommon/dEnums/eGameMessageType.h
new file mode 100644
index 00000000..247ee5e2
--- /dev/null
+++ b/dCommon/dEnums/eGameMessageType.h
@@ -0,0 +1,303 @@
+#ifndef __EGAMEMESSAGETYPE__H__
+#define __EGAMEMESSAGETYPE__H__
+
+#include
+
+enum class eGameMessageType : uint16_t {
+ TELEPORT = 19,
+ SET_PLAYER_CONTROL_SCHEME = 26,
+ DROP_CLIENT_LOOT = 30,
+ DIE = 37,
+ REQUEST_DIE = 38,
+ PLAY_EMOTE = 41,
+ PLAY_ANIMATION = 43,
+ CONTROL_BEHAVIOR = 48,
+ SET_NAME = 72,
+ ECHO_START_SKILL = 118,
+ START_SKILL = 119,
+ VERIFY_ACK = 121,
+ ADD_SKILL = 127,
+ REMOVE_SKILL = 128,
+ SET_CURRENCY = 133,
+ PICKUP_CURRENCY = 137,
+ PICKUP_ITEM = 139,
+ TEAM_PICKUP_ITEM = 140,
+ PLAY_FX_EFFECT = 154,
+ STOP_FX_EFFECT = 155,
+ REQUEST_RESURRECT = 159,
+ RESURRECT = 160,
+ PUSH_EQUIPPED_ITEMS_STATE = 191,
+ POP_EQUIPPED_ITEMS_STATE = 192,
+ SET_GM_LEVEL = 193,
+ SET_STUNNED = 198,
+ SET_STUN_IMMUNITY = 200,
+ KNOCKBACK = 202,
+ REBUILD_CANCEL = 209,
+ ENABLE_REBUILD = 213,
+ MOVE_ITEM_IN_INVENTORY = 224,
+ ADD_ITEM_TO_INVENTORY_CLIENT_SYNC = 227,
+ REMOVE_ITEM_FROM_INVENTORY = 230,
+ EQUIP_ITEM = 231,
+ UN_EQUIP_ITEM = 233,
+ OFFER_MISSION = 248,
+ RESPOND_TO_MISSION = 249,
+ NOTIFY_MISSION = 254,
+ NOTIFY_MISSION_TASK = 255,
+ REBUILD_NOTIFY_STATE = 336,
+ TERMINATE_INTERACTION = 357,
+ SERVER_TERMINATE_INTERACTION = 358,
+ REQUEST_USE = 364,
+ VENDOR_OPEN_WINDOW = 369,
+ BUY_FROM_VENDOR = 373,
+ SELL_TO_VENDOR = 374,
+ TEAM_SET_OFF_WORLD_FLAG = 383,
+ SET_INVENTORY_SIZE = 389,
+ ACKNOWLEDGE_POSSESSION = 391,
+ SET_SHOOTING_GALLERY_PARAMS = 400,
+ REQUEST_ACTIVITY_START_STOP = 402,
+ REQUEST_ACTIVITY_ENTER = 403,
+ REQUEST_ACTIVITY_EXIT = 404,
+ ACTIVITY_ENTER = 405,
+ ACTIVITY_EXIT = 406,
+ ACTIVITY_START = 407,
+ ACTIVITY_STOP = 408,
+ SHOOTING_GALLERY_CLIENT_AIM_UPDATE = 409,
+ SHOOTING_GALLERY_FIRE = 411,
+ REQUEST_VENDOR_STATUS_UPDATE = 416,
+ VENDOR_STATUS_UPDATE = 417,
+ NOTIFY_CLIENT_SHOOTING_GALLERY_SCORE = 425,
+ CONSUME_CLIENT_ITEM = 427,
+ CLIENT_ITEM_CONSUMED = 428,
+ UPDATE_SHOOTING_GALLERY_ROTATION = 448,
+ SET_FLAG = 471,
+ NOTIFY_CLIENT_FLAG_CHANGE = 472,
+ VENDOR_TRANSACTION_RESULT = 476,
+ HAS_BEEN_COLLECTED = 486,
+ DISPLAY_CHAT_BUBBLE = 495,
+ SPAWN_PET = 498,
+ DESPAWN_PET = 499,
+ PLAYER_LOADED = 505,
+ PLAYER_READY = 509,
+ REQUEST_LINKED_MISSION = 515,
+ INVALID_ZONE_TRANSFER_LIST = 519,
+ MISSION_DIALOGUE_OK = 520,
+ DISPLAY_MESSAGE_BOX = 529,
+ MESSAGE_BOX_RESPOND = 530,
+ CHOICE_BOX_RESPOND = 531,
+ SMASH = 537,
+ UNSMASH = 538,
+ PLACE_MODEL_RESPONSE = 547,
+ SET_SHOOTING_GALLERY_RETICULE_EFFECT = 548,
+ SET_JET_PACK_MODE = 561,
+ REGISTER_PET_ID = 565,
+ REGISTER_PET_DBID = 566,
+ SHOW_ACTIVITY_COUNTDOWN = 568,
+ START_ACTIVITY_TIME = 576,
+ ACTIVITY_PAUSE = 602,
+ USE_NON_EQUIPMENT_ITEM = 603,
+ USE_ITEM_RESULT = 607,
+ COMMAND_PET = 640,
+ PET_RESPONSE = 641,
+ REQUEST_ACTIVITY_SUMMARY_LEADERBOARD_DATA = 648,
+ SEND_ACTIVITY_SUMMARY_LEADERBOARD_DATA = 649,
+ NOTIFY_OBJECT = 656,
+ CLIENT_NOTIFY_PET = 659,
+ NOTIFY_PET = 660,
+ NOTIFY_PET_TAMING_MINIGAME = 661,
+ START_SERVER_PET_MINIGAME_TIMER = 662,
+ CLIENT_EXIT_TAMING_MINIGAME = 663,
+ PET_NAME_CHANGED = 686,
+ PET_TAMING_MINIGAME_RESULT = 667,
+ PET_TAMING_TRY_BUILD_RESULT = 668,
+ NOTIFY_TAMING_BUILD_SUCCESS = 673,
+ NOTIFY_TAMING_MODEL_LOADED_ON_SERVER = 674,
+ ACTIVATE_BUBBLE_BUFF = 678,
+ DEACTIVATE_BUBBLE_BUFF = 679,
+ ADD_PET_TO_PLAYER = 681,
+ REQUEST_SET_PET_NAME = 683,
+ SET_PET_NAME = 684,
+ NOTIFY_PET_TAMING_PUZZLE_SELECTED = 675,
+ SHOW_PET_ACTION_BUTTON = 692,
+ SET_EMOTE_LOCK_STATE = 693,
+ USE_ITEM_REQUIREMENTS_RESPONSE = 703,
+ PLAY_EMBEDDED_EFFECT_ON_ALL_CLIENTS_NEAR_OBJECT = 713,
+ DOWNLOAD_PROPERTY_DATA = 716,
+ QUERY_PROPERTY_DATA = 717,
+ PROPERTY_EDITOR_BEGIN = 724,
+ PROPERTY_EDITOR_END = 725,
+ IS_MINIFIG_IN_A_BUBBLE = 729,
+ START_PATHING = 733,
+ ACTIVATE_BUBBLE_BUFF_FROM_SERVER = 734,
+ DEACTIVATE_BUBBLE_BUFF_FROM_SERVER = 735,
+ NOTIFY_CLIENT_ZONE_OBJECT = 737,
+ UPDATE_REPUTATION = 746,
+ PROPERTY_RENTAL_RESPONSE = 750,
+ REQUEST_PLATFORM_RESYNC = 760,
+ PLATFORM_RESYNC = 761,
+ PLAY_CINEMATIC = 762,
+ END_CINEMATIC = 763,
+ CINEMATIC_UPDATE = 764,
+ TOGGLE_GHOST_REFERENCE_OVERRIDE = 767,
+ SET_GHOST_REFERENCE_POSITION = 768,
+ FIRE_EVENT_SERVER_SIDE = 770,
+ SET_NETWORK_SCRIPT_VAR = 781,
+ UPDATE_MODEL_FROM_CLIENT = 793,
+ DELETE_MODEL_FROM_CLIENT = 794,
+ PLAY_ND_AUDIO_EMITTER = 821,
+ PLAY2_DAMBIENT_SOUND = 831,
+ ENTER_PROPERTY1 = 840,
+ ENTER_PROPERTY2 = 841,
+ PROPERTY_ENTRANCE_SYNC = 842,
+ PROPERTY_SELECT_QUERY = 845,
+ PARSE_CHAT_MESSAGE = 850,
+ BROADCAST_TEXT_TO_CHATBOX = 858,
+ OPEN_PROPERTY_MANAGEMENT = 860,
+ OPEN_PROPERTY_VENDOR = 861,
+ UPDATE_PROPERTY_OR_MODEL_FOR_FILTER_CHECK = 863,
+ CLIENT_TRADE_REQUEST = 868,
+ SERVER_TRADE_REQUEST = 869,
+ SERVER_TRADE_INVITE = 870,
+ CLIENT_TRADE_REPLY = 871,
+ SERVER_TRADE_REPLY = 872,
+ SERVER_TRADE_INITIAL_REPLY = 873,
+ SERVER_TRADE_FINAL_REPLY = 874,
+ CLIENT_TRADE_UPDATE = 875,
+ SERVER_SIDE_TRADE_UPDATE = 876,
+ SERVER_TRADE_UPDATE = 877,
+ CLIENT_TRADE_CANCEL = 878,
+ CLIENT_SIDE_TRADE_CANCEL = 879,
+ CLIENT_TRADE_ACCEPT = 880,
+ SERVER_SIDE_TRADE_ACCEPT = 881,
+ SERVER_SIDE_TRADE_CANCEL = 882,
+ SERVER_TRADE_CANCEL = 883,
+ SERVER_TRADE_ACCEPT = 884,
+ READY_FOR_UPDATES = 888,
+ ORIENT_TO_OBJECT = 905,
+ ORIENT_TO_POSITION = 906,
+ ORIENT_TO_ANGLE = 907,
+ BOUNCER_ACTIVE_STATUS = 942,
+ UN_USE_BBB_MODEL = 999,
+ BBB_LOAD_ITEM_REQUEST = 1000,
+ BBB_SAVE_REQUEST = 1001,
+ BBB_SAVE_RESPONSE = 1006,
+ NOTIFY_CLIENT_OBJECT = 1042,
+ DISPLAY_ZONE_SUMMARY = 1043,
+ ZONE_SUMMARY_DISMISSED = 1044,
+ ACTIVITY_STATE_CHANGE_REQUEST = 1053,
+ MODIFY_PLAYER_ZONE_STATISTIC = 1046,
+ START_BUILDING_WITH_ITEM = 1057,
+ START_ARRANGING_WITH_ITEM = 1061,
+ FINISH_ARRANGING_WITH_ITEM = 1062,
+ DONE_ARRANGING_WITH_ITEM = 1063,
+ SET_BUILD_MODE = 1068,
+ BUILD_MODE_SET = 1069,
+ SET_BUILD_MODE_CONFIRMED = 1073,
+ NOTIFY_CLIENT_FAILED_PRECONDITION = 1081,
+ MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1093,
+ MODULAR_BUILD_BEGIN = 1094,
+ MODULAR_BUILD_END = 1095,
+ MODULAR_BUILD_MOVE_AND_EQUIP = 1096,
+ MODULAR_BUILD_FINISH = 1097,
+ REPORT_BUG = 1198,
+ MISSION_DIALOGUE_CANCELLED = 1129,
+ ECHO_SYNC_SKILL = 1144,
+ SYNC_SKILL = 1145,
+ REQUEST_SERVER_PROJECTILE_IMPACT = 1148,
+ DO_CLIENT_PROJECTILE_IMPACT = 1151,
+ MODULAR_BUILD_CONVERT_MODEL = 1155,
+ SET_PLAYER_ALLOWED_RESPAWN = 1165,
+ UI_MESSAGE_SERVER_TO_SINGLE_CLIENT = 1184,
+ UI_MESSAGE_SERVER_TO_ALL_CLIENTS = 1185,
+ PET_TAMING_TRY_BUILD = 1197,
+ REQUEST_SMASH_PLAYER = 1202,
+ FIRE_EVENT_CLIENT_SIDE = 1213,
+ TOGGLE_GM_INVIS = 1218,
+ CHANGE_OBJECT_WORLD_STATE = 1223,
+ VEHICLE_LOCK_INPUT = 1230,
+ VEHICLE_UNLOCK_INPUT = 1231,
+ RACING_RESET_PLAYER_TO_LAST_RESET = 1252,
+ RACING_SERVER_SET_PLAYER_LAP_AND_PLANE = 1253,
+ RACING_SET_PLAYER_RESET_INFO = 1254,
+ RACING_PLAYER_INFO_RESET_FINISHED = 1255,
+ LOCK_NODE_ROTATION = 1260,
+ VEHICLE_SET_WHEEL_LOCK_STATE = 1273,
+ NOTIFY_VEHICLE_OF_RACING_OBJECT = 1276,
+ SET_NAME_BILLBOARD_STATE = 1284,
+ PLAYER_REACHED_RESPAWN_CHECKPOINT = 1296,
+ HANDLE_UGC_EQUIP_POST_DELETE_BASED_ON_EDIT_MODE = 1300,
+ HANDLE_UGC_EQUIP_PRE_CREATE_BASED_ON_EDIT_MODE = 1301,
+ PROPERTY_CONTENTS_FROM_CLIENT = 1305,
+ GET_MODELS_ON_PROPERTY = 1306,
+ MATCH_REQUEST = 1308,
+ MATCH_RESPONSE = 1309,
+ MATCH_UPDATE = 1310,
+ MODULE_ASSEMBLY_DB_DATA_FOR_CLIENT = 1131,
+ MODULE_ASSEMBLY_QUERY_DATA = 1132,
+ SHOW_BILLBOARD_INTERACT_ICON = 1337,
+ CHANGE_IDLE_FLAGS = 1338,
+ VEHICLE_ADD_PASSIVE_BOOST_ACTION = 1340,
+ VEHICLE_REMOVE_PASSIVE_BOOST_ACTION = 1341,
+ VEHICLE_NOTIFY_SERVER_ADD_PASSIVE_BOOST_ACTION = 1342,
+ VEHICLE_NOTIFY_SERVER_REMOVE_PASSIVE_BOOST_ACTION = 1343,
+ VEHICLE_ADD_SLOWDOWN_ACTION = 1344,
+ VEHICLE_REMOVE_SLOWDOWN_ACTION = 1345,
+ VEHICLE_NOTIFY_SERVER_ADD_SLOWDOWN_ACTION = 1346,
+ VEHICLE_NOTIFY_SERVER_REMOVE_SLOWDOWN_ACTION = 1347,
+ BUYBACK_FROM_VENDOR = 1350,
+ SET_PROPERTY_ACCESS = 1366,
+ ZONE_PROPERTY_MODEL_PLACED = 1369,
+ ZONE_PROPERTY_MODEL_ROTATED = 1370,
+ ZONE_PROPERTY_MODEL_REMOVED_WHILE_EQUIPPED = 1371,
+ ZONE_PROPERTY_MODEL_EQUIPPED = 1372,
+ ZONE_PROPERTY_MODEL_PICKED_UP = 1373,
+ ZONE_PROPERTY_MODEL_REMOVED = 1374,
+ NOTIFY_RACING_CLIENT = 1390,
+ RACING_PLAYER_HACK_CAR = 1391,
+ RACING_PLAYER_LOADED = 1392,
+ RACING_CLIENT_READY = 1393,
+ UPDATE_CHAT_MODE = 1395,
+ VEHICLE_NOTIFY_FINISHED_RACE = 1396,
+ SET_CONSUMABLE_ITEM = 1409,
+ SET_STATUS_IMMUNITY = 1435,
+ SET_PET_NAME_MODERATED = 1448,
+ MODIFY_LEGO_SCORE = 1459,
+ RESTORE_TO_POST_LOAD_STATS = 1468,
+ SET_RAIL_MOVEMENT = 1471,
+ START_RAIL_MOVEMENT = 1472,
+ CANCEL_RAIL_MOVEMENT = 1474,
+ CLIENT_RAIL_MOVEMENT_READY = 1476,
+ PLAYER_RAIL_ARRIVED_NOTIFICATION = 1477,
+ UPDATE_PLAYER_STATISTIC = 1481,
+ MODULAR_ASSEMBLY_NIF_COMPLETED = 1498,
+ NOTIFY_NOT_ENOUGH_INV_SPACE = 1516,
+ TEAM_SET_LEADER = 1557,
+ TEAM_INVITE_CONFIRM = 1558,
+ TEAM_GET_STATUS_RESPONSE = 1559,
+ TEAM_ADD_PLAYER = 1526,
+ TEAM_REMOVE_PLAYER = 1563,
+ START_CELEBRATION_EFFECT = 1618,
+ ADD_BUFF = 1647,
+ SERVER_DONE_LOADING_ALL_OBJECTS = 1642,
+ PLACE_PROPERTY_MODEL = 1170,
+ VEHICLE_NOTIFY_HIT_IMAGINATION_SERVER = 1606,
+ ADD_RUN_SPEED_MODIFIER = 1505,
+ HANDLE_HOT_PROPERTY_DATA = 1511,
+ SEND_HOT_PROPERTY_DATA = 1510,
+ REMOVE_RUN_SPEED_MODIFIER = 1506,
+ UPDATE_PROPERTY_PERFORMANCE_COST = 1547,
+ PROPERTY_ENTRANCE_BEGIN = 1553,
+ SET_RESURRECT_RESTORE_VALUES = 1591,
+ VEHICLE_STOP_BOOST = 1617,
+ REMOVE_BUFF = 1648,
+ REQUEST_MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1666,
+ RESPONSE_MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1667,
+ PLAYER_SET_CAMERA_CYCLING_MODE = 1676,
+ SET_MOUNT_INVENTORY_ID = 1726,
+ NOTIFY_SERVER_LEVEL_PROCESSING_COMPLETE = 1734,
+ NOTIFY_LEVEL_REWARDS = 1735,
+ DISMOUNT_COMPLETE = 1756,
+ MARK_INVENTORY_ITEM_AS_ACTIVE = 1767,
+ END
+};
+
+#endif //!__EGAMEMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eKillType.h b/dCommon/dEnums/eKillType.h
new file mode 100644
index 00000000..fe3908c8
--- /dev/null
+++ b/dCommon/dEnums/eKillType.h
@@ -0,0 +1,11 @@
+#ifndef __EKILLTYPE__H__
+#define __EKILLTYPE__H__
+
+#include
+
+enum class eKillType : uint32_t {
+ VIOLENT,
+ SILENT
+};
+
+#endif //!__EKILLTYPE__H__
diff --git a/dCommon/dEnums/eLoginResponse.h b/dCommon/dEnums/eLoginResponse.h
new file mode 100644
index 00000000..01bba3d5
--- /dev/null
+++ b/dCommon/dEnums/eLoginResponse.h
@@ -0,0 +1,24 @@
+#ifndef __ELOGINRESPONSE__H__
+#define __ELOGINRESPONSE__H__
+
+#include
+
+enum class eLoginResponse : uint8_t {
+ GENERAL_FAILED = 0,
+ SUCCESS,
+ BANNED,
+ // Unused 3
+ // Unused 4
+ PERMISSIONS_NOT_HIGH_ENOUGH = 5,
+ INVALID_USER,
+ ACCOUNT_LOCKED,
+ WRONG_PASS,
+ ACCOUNT_ACTIVATION_PENDING,
+ ACCOUNT_DISABLED,
+ GAME_TIME_EXPIRED,
+ FREE_TRIAL_ENDED,
+ PLAY_SCHEDULE_TIME_UP,
+ ACCOUNT_NOT_ACTIVATED
+};
+
+#endif //!__ELOGINRESPONSE__H__
diff --git a/dCommon/dEnums/eLootSourceType.h b/dCommon/dEnums/eLootSourceType.h
new file mode 100644
index 00000000..b8ecca4a
--- /dev/null
+++ b/dCommon/dEnums/eLootSourceType.h
@@ -0,0 +1,31 @@
+#ifndef __ELOOTSOURCETYPE__H__
+#define __ELOOTSOURCETYPE__H__
+
+#include
+
+enum class eLootSourceType : uint32_t {
+ NONE = 0,
+ CHEST,
+ MISSION,
+ MAIL,
+ CURRENCY,
+ ACHIEVEMENT,
+ TRADE,
+ QUICKBUILD,
+ DELETION,
+ VENDOR,
+ ACTIVITY,
+ PICKUP,
+ BRICK,
+ PROPERTY,
+ MODERATION,
+ EXHIBIT,
+ INVENTORY,
+ CLAIMCODE,
+ CONSUMPTION,
+ CRAFTING,
+ LEVEL_REWARD,
+ RELOCATE
+};
+
+#endif //!__ELOOTSOURCETYPE__H__
diff --git a/dCommon/dEnums/eMasterMessageType.h b/dCommon/dEnums/eMasterMessageType.h
new file mode 100644
index 00000000..5c867d70
--- /dev/null
+++ b/dCommon/dEnums/eMasterMessageType.h
@@ -0,0 +1,36 @@
+#ifndef __EMASTERMESSAGETYPE__H__
+#define __EMASTERMESSAGETYPE__H__
+
+#include
+
+enum class eMasterMessageType : uint32_t {
+ REQUEST_PERSISTENT_ID = 1,
+ REQUEST_PERSISTENT_ID_RESPONSE,
+ REQUEST_ZONE_TRANSFER,
+ REQUEST_ZONE_TRANSFER_RESPONSE,
+ SERVER_INFO,
+ REQUEST_SESSION_KEY,
+ SET_SESSION_KEY,
+ SESSION_KEY_RESPONSE,
+ PLAYER_ADDED,
+ PLAYER_REMOVED,
+
+ CREATE_PRIVATE_ZONE,
+ REQUEST_PRIVATE_ZONE,
+
+ WORLD_READY,
+ PREP_ZONE,
+
+ SHUTDOWN,
+ SHUTDOWN_RESPONSE,
+ SHUTDOWN_IMMEDIATE,
+
+ SHUTDOWN_UNIVERSE,
+
+ AFFIRM_TRANSFER_REQUEST,
+ AFFIRM_TRANSFER_RESPONSE,
+
+ NEW_SESSION_ALERT
+};
+
+#endif //!__EMASTERMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eMatchUpdate.h b/dCommon/dEnums/eMatchUpdate.h
new file mode 100644
index 00000000..a42eecd3
--- /dev/null
+++ b/dCommon/dEnums/eMatchUpdate.h
@@ -0,0 +1,17 @@
+#ifndef __EMATCHUPDATE__H__
+#define __EMATCHUPDATE__H__
+
+#include
+
+enum class eMatchUpdate : int32_t {
+ PLAYER_ADDED = 0,
+ PLAYER_REMOVED,
+ PHASE_CREATED,
+ PHASE_WAIT_READY,
+ PHASE_WAIT_START,
+ PLAYER_READY,
+ PLAYER_NOT_READY,
+ PLAYER_UPDATE
+};
+
+#endif //!__EMATCHUPDATE__H__
diff --git a/dCommon/dEnums/eObjectBits.h b/dCommon/dEnums/eObjectBits.h
new file mode 100644
index 00000000..b978aad6
--- /dev/null
+++ b/dCommon/dEnums/eObjectBits.h
@@ -0,0 +1,13 @@
+#ifndef __EOBJECTBITS__H__
+#define __EOBJECTBITS__H__
+
+#include
+
+enum class eObjectBits : size_t {
+ PERSISTENT = 32,
+ CLIENT = 46,
+ SPAWNED = 58,
+ CHARACTER = 60
+};
+
+#endif //!__EOBJECTBITS__H__
diff --git a/dCommon/dEnums/eObjectWorldState.h b/dCommon/dEnums/eObjectWorldState.h
new file mode 100644
index 00000000..9735a072
--- /dev/null
+++ b/dCommon/dEnums/eObjectWorldState.h
@@ -0,0 +1,12 @@
+#ifndef __EOBJECTWORLDSTATE__H__
+#define __EOBJECTWORLDSTATE__H__
+
+#include
+
+enum class eObjectWorldState : uint32_t {
+ INWORLD,
+ ATTACHED,
+ INVENTORY
+};
+
+#endif //!__EOBJECTWORLDSTATE__H__
diff --git a/dCommon/dEnums/ePetTamingNotifyType.h b/dCommon/dEnums/ePetTamingNotifyType.h
new file mode 100644
index 00000000..564e932f
--- /dev/null
+++ b/dCommon/dEnums/ePetTamingNotifyType.h
@@ -0,0 +1,15 @@
+#ifndef __EPETTAMINGNOTIFYTYPE__H__
+#define __EPETTAMINGNOTIFYTYPE__H__
+
+#include
+
+enum class ePetTamingNotifyType : uint32_t {
+ SUCCESS,
+ QUIT,
+ FAILED,
+ BEGIN,
+ READY,
+ NAMINGPET
+};
+
+#endif //!__EPETTAMINGNOTIFYTYPE__H__
diff --git a/dCommon/dEnums/ePlayerFlag.h b/dCommon/dEnums/ePlayerFlag.h
new file mode 100644
index 00000000..fefdfb67
--- /dev/null
+++ b/dCommon/dEnums/ePlayerFlag.h
@@ -0,0 +1,172 @@
+#ifndef __EPLAYERFLAG__H__
+#define __EPLAYERFLAG__H__
+
+#include
+
+enum ePlayerFlag : int32_t {
+ BTARR_TESTING = 0,
+ PLAYER_HAS_ENTERED_PET_RANCH = 1,
+ MINIMAP_UNLOCKED = 2,
+ ACTIVITY_REBUILDING_FAIL_TIME = 3,
+ ACTIVITY_REBUILDING_FAIL_RANGE = 4,
+ ACTIVITY_SHOOTING_GALLERY_HELP = 5,
+ HELP_WALKING_CONTROLS = 6,
+ FIRST_SMASHABLE = 7,
+ FIRST_IMAGINATION_PICKUP = 8,
+ FIRST_DAMAGE = 9,
+ FIRST_ITEM = 10,
+ FIRST_BRICK = 11,
+ FIRST_CONSUMABLE = 12,
+ FIRST_EQUIPPABLE = 13,
+ CHAT_HELP = 14,
+ FIRST_PET_TAMING_MINIGAME = 15,
+ FIRST_PET_ON_SWITCH = 16,
+ FIRST_PET_JUMPED_ON_SWITCH = 17,
+ FIRST_PET_FOUND_TREASURE = 18,
+ FIRST_PET_DUG_TREASURE = 19,
+ FIRST_PET_OWNER_ON_PET_BOUNCER = 20,
+ FIRST_PET_DESPAWN_NO_IMAGINATION = 21,
+ FIRST_PET_SELECTED_ENOUGH_BRICKS = 22,
+ FIRST_EMOTE_UNLOCKED = 23,
+ GF_PIRATE_REP = 24,
+ AG_BOB_CINEMATIC_EVENT = 25,
+ HELP_JUMPING_CONTROLS = 26,
+ HELP_DOUBLE_JUMP_CONTROLS = 27,
+ HELP_CAMERA_CONTROLS = 28,
+ HELP_ROTATE_CONTROLS = 29,
+ HELP_SMASH = 30,
+ MONUMENT_INTRO_MUSIC_PLAYED = 31,
+ BEGINNING_ZONE_SUMMARY_DISPLAYED = 32,
+ AG_FINISH_LINE_BUILT = 33,
+ AG_BOSS_AREA_FOUND = 34,
+ AG_LANDED_IN_BATTLEFIELD = 35,
+ GF_PLAYER_HAS_BEEN_TO_THE_RAVINE = 36,
+ MODULAR_BUILD_STARTED = 37,
+ MODULAR_BUILD_FINISHED_CLICK_BUTTON = 38,
+ THINKING_HAT_RECEIVED_GO_TO_MODULAR_BUILD_AREA = 39,
+ BUILD_AREA_ENTERED_MOD_NOT_ACTIVATED_PUT_ON_HAT = 40,
+ HAT_ON_INSIDE_OF_MOD_BUILD_EQUIP_A_MODULE_FROM_LEG = 41,
+ MODULE_EQUIPPED_PLACE_ON_GLOWING_BLUE_SPOT = 42,
+ FIRST_MODULE_PLACED_CORRECTLY_NOW_DO_THE_REST = 43,
+ ROCKET_COMPLETE_NOW_LAUNCH_FROM_PAD = 44,
+ JOINED_A_FACTION = 45,
+ VENTURE_FACTION = 46,
+ ASSEMBLY_FACTION = 47,
+ PARADOX_FACTION = 48,
+ SENTINEL_FACTION = 49,
+ LUP_WORLD_ACCESS = 50,
+ AG_FIRST_FLAG_COLLECTED = 51,
+ TOOLTIP_TALK_TO_SKYLAND_TO_GET_HAT = 52,
+ MODULAR_BUILD_PLAYER_PLACES_FIRST_MODEL_IN_SCRATCH = 53,
+ MODULAR_BUILD_FIRST_ARROW_DISPLAY_FOR_MODULE = 54,
+ AG_BEACON_QB_SO_THE_PLAYER_CAN_ALWAYS_BUILD_THEM = 55,
+ GF_PET_DIG_FLAG_1 = 56,
+ GF_PET_DIG_FLAG_2 = 57,
+ GF_PET_DIG_FLAG_3 = 58,
+ SUPPRESS_SPACESHIP_CINEMATIC_FLYTHROUGH = 59,
+ GF_PLAYER_FALL_DEATH = 60,
+ GF_PLAYER_CAN_GET_FLAG_1 = 61,
+ GF_PLAYER_CAN_GET_FLAG_2 = 62,
+ GF_PLAYER_CAN_GET_FLAG_3 = 63,
+ ENTER_BBB_FROM_PROPERTY_EDIT_CONFIRMATION_DIALOG = 64,
+ AG_FIRST_COMBAT_COMPLETE = 65,
+ AG_COMPLETE_BOB_MISSION = 66,
+ FIRST_MANUAL_PET_HIBERNATE = 69,
+ CAGED_SPIDER = 74,
+ IS_NEWS_SCREEN_VISIBLE = 114,
+ NJ_GARMADON_CINEMATIC_SEEN = 125,
+ EQUPPED_TRIAL_FACTION_GEAR = 126,
+ ELEPHANT_PET_3050 = 801,
+ CAT_PET_3054 = 803,
+ TRICERATOPS_PET_3195 = 806,
+ TERRIER_PET_3254 = 807,
+ SKUNK_PET_3261 = 811,
+ BUNNY_PET_3672 = 813,
+ CROCODILE_PET_3994 = 814,
+ DOBERMAN_PET_5635 = 815,
+ BUFFALO_PET_5636 = 816,
+ ROBOT_DOG_PET_5637 = 818,
+ RED_DRAGON_PET_5639 = 819,
+ TORTOISE_PET_5640 = 820,
+ GREEN_DRAGON_PET_5641 = 821,
+ PANDA_PET_5643 = 822,
+ MANTIS_PET_5642 = 823,
+ WARTHOG_PET_6720 = 824,
+ LION_PET_3520 = 825,
+ GOAT_PET_7638 = 818,
+ CRAB_PET_7694 = 827,
+ REINDEER_PET_12294 = 829,
+ STEGOSAURUS_PET_12431 = 830,
+ SABER_CAT_PET_12432 = 831,
+ GRYPHON_PET_12433 = 832,
+ ALINE_PET_12334 = 833,
+ UNKNOWN_PET = 834,
+ EARTH_DRAGON_PET_16210 = 836,
+ SKELETON_DRAGON_PET_13067 = 838,
+ AG_SPACE_SHIP_BINOC_AT_LAUNCH = 1001,
+ AG_SPACE_SHIP_BINOC_AT_LAUNCH_PLATFORM = 1002,
+ AG_SPACE_SHIP_BINOC_ON_PLATFORM_TO_LEFT_OF_START = 1003,
+ AG_SPACE_SHIP_BINOC_ON_PLATFORM_TO_RIGHT_OF_START = 1004,
+ AG_SPACE_SHIP_BINOC_AT_BOB = 1005,
+ AG_BATTLE_BINOC_FOR_TRICERETOPS = 1101,
+ AG_BATTLE_BINOC_AT_PARADOX = 1102,
+ AG_BATTLE_BINOC_AT_MISSION_GIVER = 1103,
+ AG_BATTLE_BINOC_AT_BECK = 1104,
+ AG_MONUMENT_BINOC_INTRO = 1105,
+ AG_MONUMENT_BINOC_OUTRO = 1106,
+ AG_LAUNCH_BINOC_INTRO = 1107,
+ AG_LAUNCH_BINOC_BISON = 1108,
+ AG_LAUNCH_BINOC_SHARK = 1109,
+ NS_BINOC_CONCERT_TRANSITION = 1201,
+ NS_BINOC_RACE_PLACE_TRANSITION = 1202,
+ NS_BINOC_BRICK_ANNEX_TRANSITION = 1203,
+ NS_BINOC_GF_LAUNCH = 1204,
+ NS_BINOC_FV_LAUNCH = 1205,
+ NS_BINOC_BRICK_ANNEX_WATER = 1206,
+ NS_BINOC_AG_LAUNCH_AT_RACE_PLACE = 1207,
+ NS_BINOC_AG_LAUNCH_AT_BRICK_ANNEX = 1208,
+ NS_BINOC_AG_LAUNCH_AT_PLAZA = 1209,
+ NS_BINOC_TBA = 1210,
+ NS_FLAG_COLLECTABLE_1_BY_JONNY_THUNDER = 1211,
+ NS_FLAG_COLLECTABLE_2_UNDER_CONCERT_BRIDGE = 1212,
+ NS_FLAG_COLLECTABLE_3_BY_FV_LAUNCH = 1213,
+ NS_FLAG_COLLECTABLE_4_IN_PLAZA_BEHIND_BUILDING = 1214,
+ NS_FLAG_COLLECTABLE_5_BY_GF_LAUNCH = 1215,
+ NS_FLAG_COLLECTABLE_6_BY_DUCK_SG = 1216,
+ NS_FLAG_COLLECTABLE_7_BY_LUP_LAUNCH = 1217,
+ NS_FLAG_COLLECTABLE_8_BY_NT_LUANCH = 1218,
+ NS_FLAG_COLLECTABLE_9_BY_RACE_BUILD = 1219,
+ NS_FLAG_COLLECTABLE_10_ON_AG_LAUNCH_PATH = 1220,
+ PR_BINOC_AT_LAUNCH_PAD = 1251,
+ PR_BINOC_AT_BEGINNING_OF_ISLAND_B = 1252,
+ PR_BINOC_AT_FIRST_PET_BOUNCER = 1253,
+ PR_BINOC_ON_BY_CROWS_NEST = 1254,
+ PR_PET_DIG_AT_BEGINNING_OF_ISLAND_B = 1261,
+ PR_PET_DIG_AT_THE_LOCATION_OF_OLD_BOUNCE_BACK = 1262,
+ PR_PET_DIG_UNDER_QB_BRIDGE = 1263,
+ PR_PET_DIG_BACK_SIDE_BY_PARTNER_BOUNCE = 1264,
+ PR_PET_DIG_BY_LAUNCH_PAD = 1265,
+ PR_PET_DIG_BY_FIRST_PET_BOUNCER = 1266,
+ GF_BINOC_ON_LANDING_PAD = 1301,
+ GF_BINOC_AT_RAVINE_START = 1302,
+ GF_BINOC_ON_TOP_OF_RAVINE_HEAD = 1303,
+ GF_BINOC_AT_TURTLE_AREA = 1304,
+ GF_BINOC_IN_TUNNEL_TO_ELEPHANTS = 1305,
+ GF_BINOC_IN_ELEPHANTS_AREA = 1306,
+ GF_BINOC_IN_RACING_AREA = 1307,
+ GF_BINOC_IN_CROC_AREA = 1308,
+ GF_BINOC_IN_JAIL_AREA = 1309,
+ GF_BINOC_TELESCOPE_NEXT_TO_CAPTAIN_JACK = 1310,
+ NT_HEART_OF_DARKNESS = 1911,
+ NT_PLINTH_REBUILD = 1919,
+ NT_FACTION_SPY_DUKE = 1974,
+ NT_FACTION_SPY_OVERBUILD = 1976,
+ NT_FACTION_SPY_HAEL = 1977,
+ NJ_EARTH_SPINJITZU = 2030,
+ NJ_LIGHTNING_SPINJITZU = 2031,
+ NJ_ICE_SPINJITZU = 2032,
+ NJ_FIRE_SPINJITZU = 2033,
+ NJ_WU_SHOW_DAILY_CHEST = 2099
+};
+
+#endif //!__EPLAYERFLAG__H__
diff --git a/dCommon/dEnums/eQuickBuildFailReason.h b/dCommon/dEnums/eQuickBuildFailReason.h
new file mode 100644
index 00000000..a6144bd5
--- /dev/null
+++ b/dCommon/dEnums/eQuickBuildFailReason.h
@@ -0,0 +1,13 @@
+#ifndef __EQUICKBUILDFAILREASON__H__
+#define __EQUICKBUILDFAILREASON__H__
+
+#include
+
+enum class eQuickBuildFailReason : uint32_t {
+ NOT_GIVEN,
+ OUT_OF_IMAGINATION,
+ CANCELED_EARLY,
+ BUILD_ENDED
+};
+
+#endif //!__EQUICKBUILDFAILREASON__H__
diff --git a/dCommon/dEnums/eRebuildState.h b/dCommon/dEnums/eRebuildState.h
new file mode 100644
index 00000000..497bcb77
--- /dev/null
+++ b/dCommon/dEnums/eRebuildState.h
@@ -0,0 +1,15 @@
+#ifndef __EREBUILDSTATE__H__
+#define __EREBUILDSTATE__H__
+
+#include
+
+enum class eRebuildState : uint32_t {
+ OPEN,
+ COMPLETED = 2,
+ RESETTING = 4,
+ BUILDING,
+ INCOMPLETE
+};
+
+
+#endif //!__EREBUILDSTATE__H__
diff --git a/dCommon/dEnums/eRenameResponse.h b/dCommon/dEnums/eRenameResponse.h
new file mode 100644
index 00000000..2298e922
--- /dev/null
+++ b/dCommon/dEnums/eRenameResponse.h
@@ -0,0 +1,15 @@
+#ifndef __ERENAMERESPONSE__H__
+#define __ERENAMERESPONSE__H__
+
+#include
+
+//! An enum for character rename responses
+enum class eRenameResponse : uint8_t {
+ SUCCESS = 0,
+ UNKNOWN_ERROR,
+ NAME_UNAVAILABLE,
+ NAME_IN_USE
+};
+
+
+#endif //!__ERENAMERESPONSE__H__
diff --git a/dCommon/dEnums/eReplicaPacketType.h b/dCommon/dEnums/eReplicaPacketType.h
new file mode 100644
index 00000000..2650fb30
--- /dev/null
+++ b/dCommon/dEnums/eReplicaPacketType.h
@@ -0,0 +1,12 @@
+#ifndef __EREPLICAPACKETTYPE__H__
+#define __EREPLICAPACKETTYPE__H__
+
+#include
+
+enum class eReplicaPacketType : uint8_t {
+ CONSTRUCTION,
+ SERIALIZATION,
+ DESTRUCTION
+};
+
+#endif //!__EREPLICAPACKETTYPE__H__
diff --git a/dCommon/dEnums/eServerMessageType.h b/dCommon/dEnums/eServerMessageType.h
new file mode 100644
index 00000000..7f211ffb
--- /dev/null
+++ b/dCommon/dEnums/eServerMessageType.h
@@ -0,0 +1,12 @@
+#ifndef __ESERVERMESSAGETYPE__H__
+#define __ESERVERMESSAGETYPE__H__
+
+#include
+//! The Internal Server Packet Identifiers
+enum class eServerMessageType : uint32_t {
+ VERSION_CONFIRM = 0,
+ DISCONNECT_NOTIFY,
+ GENERAL_NOTIFY
+};
+
+#endif //!__ESERVERMESSAGETYPE__H__
diff --git a/dCommon/dEnums/eStateChangeType.h b/dCommon/dEnums/eStateChangeType.h
new file mode 100644
index 00000000..e187e265
--- /dev/null
+++ b/dCommon/dEnums/eStateChangeType.h
@@ -0,0 +1,11 @@
+#ifndef __ESTATECHANGETYPE__H__
+#define __ESTATECHANGETYPE__H__
+
+#include
+
+enum class eStateChangeType : uint32_t {
+ PUSH,
+ POP
+};
+
+#endif //!__ESTATECHANGETYPE__H__
diff --git a/dCommon/dEnums/eTerminateType.h b/dCommon/dEnums/eTerminateType.h
new file mode 100644
index 00000000..189734f8
--- /dev/null
+++ b/dCommon/dEnums/eTerminateType.h
@@ -0,0 +1,12 @@
+#ifndef __ETERMINATETYPE__H__
+#define __ETERMINATETYPE__H__
+
+#include
+
+enum class eTerminateType : uint32_t {
+ RANGE,
+ USER,
+ FROM_INTERACTION
+};
+
+#endif //!__ETERMINATETYPE__H__
diff --git a/dCommon/dEnums/eUseItemResponse.h b/dCommon/dEnums/eUseItemResponse.h
new file mode 100644
index 00000000..ba0ece7f
--- /dev/null
+++ b/dCommon/dEnums/eUseItemResponse.h
@@ -0,0 +1,12 @@
+#ifndef __EUSEITEMRESPONSE__H__
+#define __EUSEITEMRESPONSE__H__
+
+#include
+
+enum class eUseItemResponse : uint32_t {
+ NoImaginationForPet = 1,
+ FailedPrecondition,
+ MountsNotAllowed
+};
+
+#endif //!__EUSEITEMRESPONSE__H__
diff --git a/dCommon/dEnums/eWorldMessageType.h b/dCommon/dEnums/eWorldMessageType.h
new file mode 100644
index 00000000..2a65fd98
--- /dev/null
+++ b/dCommon/dEnums/eWorldMessageType.h
@@ -0,0 +1,42 @@
+#ifndef __EWORLDMESSAGETYPE__H__
+#define __EWORLDMESSAGETYPE__H__
+
+#include
+
+enum class eWorldMessageType : uint32_t {
+ VALIDATION = 1, // Session info
+ CHARACTER_LIST_REQUEST,
+ CHARACTER_CREATE_REQUEST,
+ LOGIN_REQUEST, // Character selected
+ GAME_MSG,
+ CHARACTER_DELETE_REQUEST,
+ CHARACTER_RENAME_REQUEST,
+ HAPPY_FLOWER_MODE_NOTIFY,
+ SLASH_RELOAD_MAP, // Reload map cmp
+ SLASH_PUSH_MAP_REQUEST, // Push map req cmd
+ SLASH_PUSH_MAP, // Push map cmd
+ SLASH_PULL_MAP, // Pull map cmd
+ LOCK_MAP_REQUEST,
+ GENERAL_CHAT_MESSAGE, // General chat message
+ HTTP_MONITOR_INFO_REQUEST,
+ SLASH_DEBUG_SCRIPTS, // Debug scripts cmd
+ MODELS_CLEAR,
+ EXHIBIT_INSERT_MODEL,
+ LEVEL_LOAD_COMPLETE, // Character data request
+ TMP_GUILD_CREATE,
+ ROUTE_PACKET, // Social?
+ POSITION_UPDATE,
+ MAIL,
+ WORD_CHECK, // Whitelist word check
+ STRING_CHECK, // Whitelist string check
+ GET_PLAYERS_IN_ZONE,
+ REQUEST_UGC_MANIFEST_INFO,
+ BLUEPRINT_GET_ALL_DATA_REQUEST,
+ CANCEL_MAP_QUEUE,
+ HANDLE_FUNNESS,
+ FAKE_PRG_CSR_MESSAGE,
+ REQUEST_FREE_TRIAL_REFRESH,
+ GM_SET_FREE_TRIAL_STATUS
+};
+
+#endif //!__EWORLDMESSAGETYPE__H__
diff --git a/dGame/Character.cpp b/dGame/Character.cpp
index b8d08854..e565ed4f 100644
--- a/dGame/Character.cpp
+++ b/dGame/Character.cpp
@@ -18,7 +18,9 @@
#include "InventoryComponent.h"
#include "eMissionTaskType.h"
#include "eMissionState.h"
+#include "eObjectBits.h"
#include "eGameMasterLevel.h"
+#include "ePlayerFlag.h"
Character::Character(uint32_t id, User* parentUser) {
//First load the name, etc:
@@ -69,8 +71,8 @@ Character::Character(uint32_t id, User* parentUser) {
//Set our objectID:
m_ObjectID = m_ID;
- m_ObjectID = GeneralUtils::SetBit(m_ObjectID, OBJECT_BIT_CHARACTER);
- m_ObjectID = GeneralUtils::SetBit(m_ObjectID, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(m_ObjectID, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(m_ObjectID, eObjectBits::PERSISTENT);
m_ParentUser = parentUser;
m_OurEntity = nullptr;
@@ -128,8 +130,8 @@ void Character::UpdateFromDatabase() {
//Set our objectID:
m_ObjectID = m_ID;
- m_ObjectID = GeneralUtils::SetBit(m_ObjectID, OBJECT_BIT_CHARACTER);
- m_ObjectID = GeneralUtils::SetBit(m_ObjectID, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(m_ObjectID, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(m_ObjectID, eObjectBits::PERSISTENT);
m_OurEntity = nullptr;
m_BuildMode = false;
@@ -361,9 +363,9 @@ void Character::SaveXMLToDatabase() {
}
// Prevents the news feed from showing up on world transfers
- if (GetPlayerFlag(ePlayerFlags::IS_NEWS_SCREEN_VISIBLE)) {
+ if (GetPlayerFlag(ePlayerFlag::IS_NEWS_SCREEN_VISIBLE)) {
auto* s = m_Doc->NewElement("s");
- s->SetAttribute("si", ePlayerFlags::IS_NEWS_SCREEN_VISIBLE);
+ s->SetAttribute("si", ePlayerFlag::IS_NEWS_SCREEN_VISIBLE);
flags->LinkEndChild(s);
}
@@ -416,7 +418,7 @@ void Character::WriteToDatabase() {
delete printer;
}
-void Character::SetPlayerFlag(const uint32_t flagId, const bool value) {
+void Character::SetPlayerFlag(const int32_t flagId, const bool value) {
// If the flag is already set, we don't have to recalculate it
if (GetPlayerFlag(flagId) == value) return;
@@ -463,7 +465,7 @@ void Character::SetPlayerFlag(const uint32_t flagId, const bool value) {
GameMessages::SendNotifyClientFlagChange(m_ObjectID, flagId, value, m_ParentUser->GetSystemAddress());
}
-bool Character::GetPlayerFlag(const uint32_t flagId) const {
+bool Character::GetPlayerFlag(const int32_t flagId) const {
// Calculate the index first
const auto flagIndex = uint32_t(std::floor(flagId / 64));
@@ -480,8 +482,8 @@ bool Character::GetPlayerFlag(const uint32_t flagId) const {
void Character::SetRetroactiveFlags() {
// Retroactive check for if player has joined a faction to set their 'joined a faction' flag to true.
- if (GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) || GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) || GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) || GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION)) {
- SetPlayerFlag(ePlayerFlags::JOINED_A_FACTION, true);
+ if (GetPlayerFlag(ePlayerFlag::VENTURE_FACTION) || GetPlayerFlag(ePlayerFlag::ASSEMBLY_FACTION) || GetPlayerFlag(ePlayerFlag::PARADOX_FACTION) || GetPlayerFlag(ePlayerFlag::SENTINEL_FACTION)) {
+ SetPlayerFlag(ePlayerFlag::JOINED_A_FACTION, true);
}
}
@@ -541,7 +543,7 @@ void Character::OnZoneLoad() {
if (missionComponent != nullptr) {
// Fix the monument race flag
if (missionComponent->GetMissionState(319) >= eMissionState::READY_TO_COMPLETE) {
- SetPlayerFlag(33, true);
+ SetPlayerFlag(ePlayerFlag::AG_FINISH_LINE_BUILT, true);
}
}
@@ -557,7 +559,7 @@ void Character::OnZoneLoad() {
*/
if (HasPermission(ePermissionMap::Old)) {
if (GetCoins() > 1000000) {
- SetCoins(1000000, eLootSourceType::LOOT_SOURCE_NONE);
+ SetCoins(1000000, eLootSourceType::NONE);
}
}
@@ -635,7 +637,7 @@ void Character::SetBillboardVisible(bool visible) {
// The GameMessage we send for turning the nameplate off just deletes the BillboardSubcomponent from the parent component.
// Because that same message does not allow for custom parameters, we need to create the BillboardSubcomponent a different way
- // This workaround involves sending an unrelated GameMessage that does not apply to player entites,
+ // This workaround involves sending an unrelated GameMessage that does not apply to player entites,
// but forces the client to create the necessary SubComponent that controls the billboard.
GameMessages::SendShowBillboardInteractIcon(UNASSIGNED_SYSTEM_ADDRESS, m_OurEntity->GetObjectID());
diff --git a/dGame/Character.h b/dGame/Character.h
index 2f0abba5..3759f206 100644
--- a/dGame/Character.h
+++ b/dGame/Character.h
@@ -16,6 +16,7 @@ struct Packet;
class Entity;
enum class ePermissionMap : uint64_t;
enum class eGameMasterLevel : uint8_t;
+enum class eLootSourceType : uint32_t;
/**
* Meta information about a character, like their name and style
@@ -414,14 +415,14 @@ public:
* @param flagId the ID of the flag to set
* @param value the value to set for the flag
*/
- void SetPlayerFlag(uint32_t flagId, bool value);
+ void SetPlayerFlag(int32_t flagId, bool value);
/**
* Gets the value for a certain character flag
* @param flagId the ID of the flag to get a value for
* @return the value of the flag given the ID (the default is false, obviously)
*/
- bool GetPlayerFlag(uint32_t flagId) const;
+ bool GetPlayerFlag(int32_t flagId) const;
/**
* Notifies the character that they're now muted
diff --git a/dGame/Entity.cpp b/dGame/Entity.cpp
index 95a550a6..b9fc79fb 100644
--- a/dGame/Entity.cpp
+++ b/dGame/Entity.cpp
@@ -24,6 +24,7 @@
#include "Loot.h"
#include "eMissionTaskType.h"
#include "eTriggerEventType.h"
+#include "eObjectBits.h"
//Component includes:
#include "Component.h"
@@ -72,6 +73,7 @@
#include "TriggerComponent.h"
#include "eGameMasterLevel.h"
#include "eReplicaComponentType.h"
+#include "eReplicaPacketType.h"
// Table includes
#include "CDComponentsRegistryTable.h"
@@ -727,7 +729,7 @@ void Entity::Initialize() {
if (!m_Character && EntityManager::Instance()->GetGhostingEnabled()) {
// Don't ghost what is likely large scene elements
- if (m_Components.size() == 2 && HasComponent(eReplicaComponentType::SIMPLE_PHYSICS) && HasComponent(eReplicaComponentType::RENDER)) {
+ if (HasComponent(eReplicaComponentType::SIMPLE_PHYSICS) && HasComponent(eReplicaComponentType::RENDER) && (m_Components.size() == 2 || (HasComponent(eReplicaComponentType::TRIGGER) && m_Components.size() == 3))) {
goto no_ghosting;
}
@@ -875,7 +877,7 @@ void Entity::SetGMLevel(eGameMasterLevel value) {
}
void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacketType packetType) {
- if (packetType == PACKET_TYPE_CONSTRUCTION) {
+ if (packetType == eReplicaPacketType::CONSTRUCTION) {
outBitStream->Write(m_ObjectID);
outBitStream->Write(m_TemplateID);
@@ -952,9 +954,9 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke
if (m_ParentEntity != nullptr || m_SpawnerID != 0) {
outBitStream->Write1();
- if (m_ParentEntity != nullptr) outBitStream->Write(GeneralUtils::SetBit(m_ParentEntity->GetObjectID(), OBJECT_BIT_CLIENT));
+ if (m_ParentEntity != nullptr) outBitStream->Write(GeneralUtils::SetBit(m_ParentEntity->GetObjectID(), static_cast(eObjectBits::CLIENT)));
else if (m_Spawner != nullptr && m_Spawner->m_Info.isNetwork) outBitStream->Write(m_SpawnerID);
- else outBitStream->Write(GeneralUtils::SetBit(m_SpawnerID, OBJECT_BIT_CLIENT));
+ else outBitStream->Write(GeneralUtils::SetBit(m_SpawnerID, static_cast(eObjectBits::CLIENT)));
} else outBitStream->Write0();
outBitStream->Write(m_HasSpawnerNodeID);
@@ -977,8 +979,8 @@ void Entity::WriteBaseReplicaData(RakNet::BitStream* outBitStream, eReplicaPacke
}
// Only serialize parent / child info should the info be dirty (changed) or if this is the construction of the entity.
- outBitStream->Write(m_IsParentChildDirty || packetType == PACKET_TYPE_CONSTRUCTION);
- if (m_IsParentChildDirty || packetType == PACKET_TYPE_CONSTRUCTION) {
+ outBitStream->Write(m_IsParentChildDirty || packetType == eReplicaPacketType::CONSTRUCTION);
+ if (m_IsParentChildDirty || packetType == eReplicaPacketType::CONSTRUCTION) {
m_IsParentChildDirty = false;
outBitStream->Write(m_ParentEntity != nullptr);
if (m_ParentEntity) {
@@ -1003,7 +1005,7 @@ void Entity::WriteComponents(RakNet::BitStream* outBitStream, eReplicaPacketType
bool destroyableSerialized = false;
bool bIsInitialUpdate = false;
- if (packetType == PACKET_TYPE_CONSTRUCTION) bIsInitialUpdate = true;
+ if (packetType == eReplicaPacketType::CONSTRUCTION) bIsInitialUpdate = true;
unsigned int flags = 0;
PossessableComponent* possessableComponent;
@@ -1232,6 +1234,7 @@ void Entity::Update(const float deltaTime) {
for (CppScripts::Script* script : CppScripts::GetEntityScripts(this)) {
script->OnTimerDone(this, timerName);
}
+ TriggerEvent(eTriggerEventType::TIMER_DONE, this);
} else {
timerPosition++;
}
@@ -1342,6 +1345,10 @@ void Entity::OnCollisionLeavePhantom(const LWOOBJID otherEntity) {
auto* other = EntityManager::Instance()->GetEntity(otherEntity);
if (!other) return;
+ for (CppScripts::Script* script : CppScripts::GetEntityScripts(this)) {
+ script->OnOffCollisionPhantom(this, other);
+ }
+
TriggerEvent(eTriggerEventType::EXIT, other);
SwitchComponent* switchComp = GetComponent();
@@ -1618,7 +1625,7 @@ void Entity::PickupItem(const LWOOBJID& objectID) {
}
}
} else {
- inv->AddItem(p.second.lot, p.second.count, eLootSourceType::LOOT_SOURCE_PICKUP, eInventoryType::INVALID, {}, LWOOBJID_EMPTY, true, false, LWOOBJID_EMPTY, eInventoryType::INVALID, 1);
+ inv->AddItem(p.second.lot, p.second.count, eLootSourceType::PICKUP, eInventoryType::INVALID, {}, LWOOBJID_EMPTY, true, false, LWOOBJID_EMPTY, eInventoryType::INVALID, 1);
}
}
}
diff --git a/dGame/Entity.h b/dGame/Entity.h
index f8abff31..b980b179 100644
--- a/dGame/Entity.h
+++ b/dGame/Entity.h
@@ -10,6 +10,7 @@
#include "NiPoint3.h"
#include "NiQuaternion.h"
#include "LDFFormat.h"
+#include "eKillType.h"
namespace Loot {
class Info;
@@ -33,6 +34,8 @@ class EntityCallbackTimer;
enum class eTriggerEventType;
enum class eGameMasterLevel : uint8_t;
enum class eReplicaComponentType : uint32_t;
+enum class eReplicaPacketType : uint8_t;
+enum class eCinematicEvent : uint32_t;
namespace CppScripts {
class Script;
diff --git a/dGame/EntityManager.cpp b/dGame/EntityManager.cpp
index d547cdb1..1a77d365 100644
--- a/dGame/EntityManager.cpp
+++ b/dGame/EntityManager.cpp
@@ -20,8 +20,10 @@
#include "MessageIdentifiers.h"
#include "dConfig.h"
#include "eTriggerEventType.h"
+#include "eObjectBits.h"
#include "eGameMasterLevel.h"
#include "eReplicaComponentType.h"
+#include "eReplicaPacketType.h"
EntityManager* EntityManager::m_Address = nullptr;
@@ -108,11 +110,11 @@ Entity* EntityManager::CreateEntity(EntityInfo info, User* user, Entity* parentE
if (!controller && info.lot != 14) {
// The client flags means the client should render the entity
- id = GeneralUtils::SetBit(id, OBJECT_BIT_CLIENT);
+ GeneralUtils::SetBit(id, eObjectBits::CLIENT);
// Spawned entities require the spawned flag to render
if (info.spawnerID != 0) {
- id = GeneralUtils::SetBit(id, OBJECT_BIT_SPAWNED);
+ GeneralUtils::SetBit(id, eObjectBits::SPAWNED);
}
}
}
@@ -196,8 +198,8 @@ void EntityManager::UpdateEntities(const float deltaTime) {
stream.Write(static_cast(ID_REPLICA_MANAGER_SERIALIZE));
stream.Write(static_cast(entity->GetNetworkId()));
- entity->WriteBaseReplicaData(&stream, PACKET_TYPE_SERIALIZATION);
- entity->WriteComponents(&stream, PACKET_TYPE_SERIALIZATION);
+ entity->WriteBaseReplicaData(&stream, eReplicaPacketType::SERIALIZATION);
+ entity->WriteComponents(&stream, eReplicaPacketType::SERIALIZATION);
if (entity->GetIsGhostingCandidate()) {
for (auto* player : Player::GetAllPlayers()) {
@@ -217,9 +219,9 @@ void EntityManager::UpdateEntities(const float deltaTime) {
if (!entity) continue;
if (entity->GetScheduledKiller()) {
- entity->Smash(entity->GetScheduledKiller()->GetObjectID(), SILENT);
+ entity->Smash(entity->GetScheduledKiller()->GetObjectID(), eKillType::SILENT);
} else {
- entity->Smash(LWOOBJID_EMPTY, SILENT);
+ entity->Smash(LWOOBJID_EMPTY, eKillType::SILENT);
}
}
m_EntitiesToKill.clear();
@@ -351,8 +353,8 @@ void EntityManager::ConstructEntity(Entity* entity, const SystemAddress& sysAddr
stream.Write(true);
stream.Write(static_cast(entity->GetNetworkId()));
- entity->WriteBaseReplicaData(&stream, PACKET_TYPE_CONSTRUCTION);
- entity->WriteComponents(&stream, PACKET_TYPE_CONSTRUCTION);
+ entity->WriteBaseReplicaData(&stream, eReplicaPacketType::CONSTRUCTION);
+ entity->WriteComponents(&stream, eReplicaPacketType::CONSTRUCTION);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) {
if (skipChecks) {
diff --git a/dGame/TradingManager.cpp b/dGame/TradingManager.cpp
index e1eac422..281c003d 100644
--- a/dGame/TradingManager.cpp
+++ b/dGame/TradingManager.cpp
@@ -156,21 +156,21 @@ void Trade::Complete() {
}
// Now actually do the trade.
- characterA->SetCoins(characterA->GetCoins() - m_CoinsA + m_CoinsB, eLootSourceType::LOOT_SOURCE_TRADE);
- characterB->SetCoins(characterB->GetCoins() - m_CoinsB + m_CoinsA, eLootSourceType::LOOT_SOURCE_TRADE);
+ characterA->SetCoins(characterA->GetCoins() - m_CoinsA + m_CoinsB, eLootSourceType::TRADE);
+ characterB->SetCoins(characterB->GetCoins() - m_CoinsB + m_CoinsA, eLootSourceType::TRADE);
for (const auto& tradeItem : m_ItemsA) {
auto* itemToRemove = inventoryA->FindItemById(tradeItem.itemId);
if (itemToRemove) itemToRemove->SetCount(itemToRemove->GetCount() - tradeItem.itemCount);
missionsA->Progress(eMissionTaskType::GATHER, tradeItem.itemLot, LWOOBJID_EMPTY, "", -tradeItem.itemCount);
- inventoryB->AddItem(tradeItem.itemLot, tradeItem.itemCount, eLootSourceType::LOOT_SOURCE_TRADE);
+ inventoryB->AddItem(tradeItem.itemLot, tradeItem.itemCount, eLootSourceType::TRADE);
}
for (const auto& tradeItem : m_ItemsB) {
auto* itemToRemove = inventoryB->FindItemById(tradeItem.itemId);
if (itemToRemove) itemToRemove->SetCount(itemToRemove->GetCount() - tradeItem.itemCount);
missionsB->Progress(eMissionTaskType::GATHER, tradeItem.itemLot, LWOOBJID_EMPTY, "", -tradeItem.itemCount);
- inventoryA->AddItem(tradeItem.itemLot, tradeItem.itemCount, eLootSourceType::LOOT_SOURCE_TRADE);
+ inventoryA->AddItem(tradeItem.itemLot, tradeItem.itemCount, eLootSourceType::TRADE);
}
characterA->SaveXMLToDatabase();
diff --git a/dGame/UserManager.cpp b/dGame/UserManager.cpp
index 4f0c456d..0161395c 100644
--- a/dGame/UserManager.cpp
+++ b/dGame/UserManager.cpp
@@ -22,8 +22,12 @@
#include "SkillComponent.h"
#include "AssetManager.h"
#include "CDClientDatabase.h"
-#include "dMessageIdentifiers.h"
+#include "eObjectBits.h"
#include "eGameMasterLevel.h"
+#include "eCharacterCreationResponse.h"
+#include "eRenameResponse.h"
+#include "eConnectionType.h"
+#include "eChatInternalMessageType.h"
UserManager* UserManager::m_Address = nullptr;
@@ -268,13 +272,13 @@ void UserManager::CreateCharacter(const SystemAddress& sysAddr, Packet* packet)
if (name != "" && !UserManager::IsNameAvailable(name)) {
Game::logger->Log("UserManager", "AccountID: %i chose unavailable name: %s", u->GetAccountID(), name.c_str());
- WorldPackets::SendCharacterCreationResponse(sysAddr, CREATION_RESPONSE_CUSTOM_NAME_IN_USE);
+ WorldPackets::SendCharacterCreationResponse(sysAddr, eCharacterCreationResponse::CUSTOM_NAME_IN_USE);
return;
}
if (!IsNameAvailable(predefinedName)) {
Game::logger->Log("UserManager", "AccountID: %i chose unavailable predefined name: %s", u->GetAccountID(), predefinedName.c_str());
- WorldPackets::SendCharacterCreationResponse(sysAddr, CREATION_RESPONSE_PREDEFINED_NAME_IN_USE);
+ WorldPackets::SendCharacterCreationResponse(sysAddr, eCharacterCreationResponse::PREDEFINED_NAME_IN_USE);
return;
}
@@ -293,7 +297,7 @@ void UserManager::CreateCharacter(const SystemAddress& sysAddr, Packet* packet)
if (overlapResult->next()) {
Game::logger->Log("UserManager", "Character object id unavailable, check objectidtracker!");
- WorldPackets::SendCharacterCreationResponse(sysAddr, CREATION_RESPONSE_OBJECT_ID_UNAVAILABLE);
+ WorldPackets::SendCharacterCreationResponse(sysAddr, eCharacterCreationResponse::OBJECT_ID_UNAVAILABLE);
return;
}
@@ -313,16 +317,16 @@ void UserManager::CreateCharacter(const SystemAddress& sysAddr, Packet* packet)
std::stringstream xml2;
LWOOBJID lwoidforshirt = idforshirt;
- lwoidforshirt = GeneralUtils::SetBit(lwoidforshirt, OBJECT_BIT_CHARACTER);
- lwoidforshirt = GeneralUtils::SetBit(lwoidforshirt, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(lwoidforshirt, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(lwoidforshirt, eObjectBits::PERSISTENT);
xml2 << xmlSave1 << "";
std::string xmlSave2 = xml2.str();
ObjectIDManager::Instance()->RequestPersistentID([=](uint32_t idforpants) {
LWOOBJID lwoidforpants = idforpants;
- lwoidforpants = GeneralUtils::SetBit(lwoidforpants, OBJECT_BIT_CHARACTER);
- lwoidforpants = GeneralUtils::SetBit(lwoidforpants, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(lwoidforpants, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(lwoidforpants, eObjectBits::PERSISTENT);
std::stringstream xml3;
xml3 << xmlSave2 << "";
@@ -369,7 +373,7 @@ void UserManager::CreateCharacter(const SystemAddress& sysAddr, Packet* packet)
stmt->execute();
delete stmt;
- WorldPackets::SendCharacterCreationResponse(sysAddr, CREATION_RESPONSE_SUCCESS);
+ WorldPackets::SendCharacterCreationResponse(sysAddr, eCharacterCreationResponse::SUCCESS);
UserManager::RequestCharacterList(sysAddr);
});
});
@@ -419,7 +423,7 @@ void UserManager::DeleteCharacter(const SystemAddress& sysAddr, Packet* packet)
stmt->execute();
delete stmt;
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_PLAYER_REMOVED_NOTIFICATION);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::PLAYER_REMOVED_NOTIFICATION);
bitStream.Write(objectID);
Game::chatServer->Send(&bitStream, SYSTEM_PRIORITY, RELIABLE, 0, Game::chatSysAddr, false);
}
@@ -480,8 +484,8 @@ void UserManager::RenameCharacter(const SystemAddress& sysAddr, Packet* packet)
}
LWOOBJID objectID = PacketUtils::ReadPacketS64(8, packet);
- objectID = GeneralUtils::ClearBit(objectID, OBJECT_BIT_CHARACTER);
- objectID = GeneralUtils::ClearBit(objectID, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::ClearBit(objectID, eObjectBits::CHARACTER);
+ GeneralUtils::ClearBit(objectID, eObjectBits::PERSISTENT);
uint32_t charID = static_cast(objectID);
Game::logger->Log("UserManager", "Received char rename request for ID: %llu (%u)", objectID, charID);
@@ -499,10 +503,10 @@ void UserManager::RenameCharacter(const SystemAddress& sysAddr, Packet* packet)
if (!hasCharacter || !character) {
Game::logger->Log("UserManager", "User %i tried to rename a character that it does not own!", u->GetAccountID());
- WorldPackets::SendCharacterRenameResponse(sysAddr, RENAME_RESPONSE_UNKNOWN_ERROR);
+ WorldPackets::SendCharacterRenameResponse(sysAddr, eRenameResponse::UNKNOWN_ERROR);
} else if (hasCharacter && character) {
if (newName == character->GetName()) {
- WorldPackets::SendCharacterRenameResponse(sysAddr, RENAME_RESPONSE_NAME_UNAVAILABLE);
+ WorldPackets::SendCharacterRenameResponse(sysAddr, eRenameResponse::NAME_UNAVAILABLE);
return;
}
@@ -516,7 +520,7 @@ void UserManager::RenameCharacter(const SystemAddress& sysAddr, Packet* packet)
delete stmt;
Game::logger->Log("UserManager", "Character %s now known as %s", character->GetName().c_str(), newName.c_str());
- WorldPackets::SendCharacterRenameResponse(sysAddr, RENAME_RESPONSE_SUCCESS);
+ WorldPackets::SendCharacterRenameResponse(sysAddr, eRenameResponse::SUCCESS);
UserManager::RequestCharacterList(sysAddr);
} else {
sql::PreparedStatement* stmt = Database::CreatePreppedStmt("UPDATE charinfo SET pending_name=?, needs_rename=0, last_login=? WHERE id=? LIMIT 1");
@@ -527,15 +531,15 @@ void UserManager::RenameCharacter(const SystemAddress& sysAddr, Packet* packet)
delete stmt;
Game::logger->Log("UserManager", "Character %s has been renamed to %s and is pending approval by a moderator.", character->GetName().c_str(), newName.c_str());
- WorldPackets::SendCharacterRenameResponse(sysAddr, RENAME_RESPONSE_SUCCESS);
+ WorldPackets::SendCharacterRenameResponse(sysAddr, eRenameResponse::SUCCESS);
UserManager::RequestCharacterList(sysAddr);
}
} else {
- WorldPackets::SendCharacterRenameResponse(sysAddr, RENAME_RESPONSE_NAME_IN_USE);
+ WorldPackets::SendCharacterRenameResponse(sysAddr, eRenameResponse::NAME_IN_USE);
}
} else {
Game::logger->Log("UserManager", "Unknown error occurred when renaming character, either hasCharacter or character variable != true.");
- WorldPackets::SendCharacterRenameResponse(sysAddr, RENAME_RESPONSE_UNKNOWN_ERROR);
+ WorldPackets::SendCharacterRenameResponse(sysAddr, eRenameResponse::UNKNOWN_ERROR);
}
}
diff --git a/dGame/dBehaviors/AttackDelayBehavior.cpp b/dGame/dBehaviors/AttackDelayBehavior.cpp
index af33aadd..3f12f662 100644
--- a/dGame/dBehaviors/AttackDelayBehavior.cpp
+++ b/dGame/dBehaviors/AttackDelayBehavior.cpp
@@ -13,7 +13,7 @@ void AttackDelayBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bi
};
for (auto i = 0u; i < this->m_numIntervals; ++i) {
- context->RegisterSyncBehavior(handle, this, branch, m_ignoreInterrupts, this->m_delay * i);
+ context->RegisterSyncBehavior(handle, this, branch, this->m_delay * i, m_ignoreInterrupts);
}
}
diff --git a/dGame/dBehaviors/BehaviorContext.cpp b/dGame/dBehaviors/BehaviorContext.cpp
index d0cb68e4..c7db4208 100644
--- a/dGame/dBehaviors/BehaviorContext.cpp
+++ b/dGame/dBehaviors/BehaviorContext.cpp
@@ -10,12 +10,12 @@
#include
-#include "dMessageIdentifiers.h"
#include "DestroyableComponent.h"
#include "EchoSyncSkill.h"
#include "PhantomPhysicsComponent.h"
#include "RebuildComponent.h"
#include "eReplicaComponentType.h"
+#include "eConnectionType.h"
BehaviorSyncEntry::BehaviorSyncEntry() {
}
@@ -253,7 +253,7 @@ bool BehaviorContext::CalculateUpdate(const float deltaTime) {
// Write message
RakNet::BitStream message;
- PacketUtils::WriteHeader(message, CLIENT, MSG_CLIENT_GAME_MSG);
+ PacketUtils::WriteHeader(message, eConnectionType::CLIENT, eClientMessageType::GAME_MSG);
message.Write(this->originator);
echo.Serialize(&message);
diff --git a/dGame/dBehaviors/ImmunityBehavior.cpp b/dGame/dBehaviors/ImmunityBehavior.cpp
index f4a41c52..a5dd4c85 100644
--- a/dGame/dBehaviors/ImmunityBehavior.cpp
+++ b/dGame/dBehaviors/ImmunityBehavior.cpp
@@ -7,6 +7,7 @@
#include "dLogger.h"
#include "DestroyableComponent.h"
#include "ControllablePhysicsComponent.h"
+#include "eStateChangeType.h"
void ImmunityBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, const BehaviorBranchContext branch) {
auto* target = EntityManager::Instance()->GetEntity(branch.target);
diff --git a/dGame/dBehaviors/ProjectileAttackBehavior.cpp b/dGame/dBehaviors/ProjectileAttackBehavior.cpp
index 3ce6c415..f65421cb 100644
--- a/dGame/dBehaviors/ProjectileAttackBehavior.cpp
+++ b/dGame/dBehaviors/ProjectileAttackBehavior.cpp
@@ -6,6 +6,7 @@
#include "dLogger.h"
#include "SkillComponent.h"
#include "../dWorldServer/ObjectIDManager.h"
+#include "eObjectBits.h"
void ProjectileAttackBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) {
LWOOBJID target{};
@@ -107,7 +108,7 @@ void ProjectileAttackBehavior::Calculate(BehaviorContext* context, RakNet::BitSt
for (auto i = 0u; i < this->m_projectileCount; ++i) {
auto id = static_cast(ObjectIDManager::Instance()->GenerateObjectID());
- id = GeneralUtils::SetBit(id, OBJECT_BIT_SPAWNED);
+ GeneralUtils::SetBit(id, eObjectBits::SPAWNED);
bitStream->Write(id);
diff --git a/dGame/dComponents/BaseCombatAIComponent.cpp b/dGame/dComponents/BaseCombatAIComponent.cpp
index 64c739f5..cccaad23 100644
--- a/dGame/dComponents/BaseCombatAIComponent.cpp
+++ b/dGame/dComponents/BaseCombatAIComponent.cpp
@@ -248,7 +248,7 @@ void BaseCombatAIComponent::CalculateCombat(const float deltaTime) {
if (rebuild != nullptr) {
const auto state = rebuild->GetState();
- if (state != REBUILD_COMPLETED) {
+ if (state != eRebuildState::COMPLETED) {
return;
}
}
@@ -566,7 +566,7 @@ bool BaseCombatAIComponent::IsEnemy(LWOOBJID target) const {
if (quickbuild != nullptr) {
const auto state = quickbuild->GetState();
- if (state != REBUILD_COMPLETED) {
+ if (state != eRebuildState::COMPLETED) {
return false;
}
}
diff --git a/dGame/dComponents/CharacterComponent.cpp b/dGame/dComponents/CharacterComponent.cpp
index 6394cc32..82ad5507 100644
--- a/dGame/dComponents/CharacterComponent.cpp
+++ b/dGame/dComponents/CharacterComponent.cpp
@@ -15,6 +15,7 @@
#include "Item.h"
#include "AMFFormat.h"
#include "eGameMasterLevel.h"
+#include "eGameActivity.h"
CharacterComponent::CharacterComponent(Entity* parent, Character* character) : Component(parent) {
m_Character = character;
@@ -35,7 +36,7 @@ CharacterComponent::CharacterComponent(Entity* parent, Character* character) : C
m_EditorLevel = m_GMLevel;
m_Reputation = 0;
- m_CurrentActivity = 0;
+ m_CurrentActivity = eGameActivity::NONE;
m_CountryCode = 0;
m_LastUpdateTimestamp = std::time(nullptr);
}
diff --git a/dGame/dComponents/CharacterComponent.h b/dGame/dComponents/CharacterComponent.h
index 0e047494..e5ca6da5 100644
--- a/dGame/dComponents/CharacterComponent.h
+++ b/dGame/dComponents/CharacterComponent.h
@@ -11,6 +11,8 @@
#include "tinyxml2.h"
#include "eReplicaComponentType.h"
+enum class eGameActivity : uint32_t;
+
/**
* The statistics that can be achieved per zone
*/
@@ -112,13 +114,13 @@ public:
* Gets the current activity that the character is partaking in, see ScriptedActivityComponent for more details
* @return the current activity that the character is partaking in
*/
- const uint32_t GetCurrentActivity() const { return m_CurrentActivity; }
+ const eGameActivity GetCurrentActivity() const { return m_CurrentActivity; }
/**
* Set the current activity of the character, see ScriptedActivityComponent for more details
* @param currentActivity the activity to set
*/
- void SetCurrentActivity(uint32_t currentActivity) { m_CurrentActivity = currentActivity; m_DirtyCurrentActivity = true; }
+ void SetCurrentActivity(eGameActivity currentActivity) { m_CurrentActivity = currentActivity; m_DirtyCurrentActivity = true; }
/**
* Gets if the entity is currently racing
@@ -353,7 +355,7 @@ private:
/**
* The ID of the curently active activity
*/
- int m_CurrentActivity;
+ eGameActivity m_CurrentActivity;
/**
* Whether the social info has been changed
diff --git a/dGame/dComponents/ControllablePhysicsComponent.cpp b/dGame/dComponents/ControllablePhysicsComponent.cpp
index 6a6d69ce..1b8627a7 100644
--- a/dGame/dComponents/ControllablePhysicsComponent.cpp
+++ b/dGame/dComponents/ControllablePhysicsComponent.cpp
@@ -13,6 +13,7 @@
#include "Character.h"
#include "dZoneManager.h"
#include "LevelProgressionComponent.h"
+#include "eStateChangeType.h"
ControllablePhysicsComponent::ControllablePhysicsComponent(Entity* entity) : Component(entity) {
m_Position = {};
diff --git a/dGame/dComponents/ControllablePhysicsComponent.h b/dGame/dComponents/ControllablePhysicsComponent.h
index a7359a26..d6088718 100644
--- a/dGame/dComponents/ControllablePhysicsComponent.h
+++ b/dGame/dComponents/ControllablePhysicsComponent.h
@@ -14,6 +14,7 @@
class Entity;
class dpEntity;
+enum class eStateChangeType : uint32_t;
/**
* Handles the movement of controllable Entities, e.g. enemies and players
diff --git a/dGame/dComponents/DestroyableComponent.cpp b/dGame/dComponents/DestroyableComponent.cpp
index c2d72941..7e7d44aa 100644
--- a/dGame/dComponents/DestroyableComponent.cpp
+++ b/dGame/dComponents/DestroyableComponent.cpp
@@ -33,6 +33,8 @@
#include "dZoneManager.h"
#include "WorldConfig.h"
#include "eMissionTaskType.h"
+#include "eStateChangeType.h"
+#include "eGameActivity.h"
#include "CDComponentsRegistryTable.h"
@@ -468,7 +470,7 @@ bool DestroyableComponent::IsKnockbackImmune() const {
auto* characterComponent = m_Parent->GetComponent();
auto* inventoryComponent = m_Parent->GetComponent();
- if (characterComponent != nullptr && inventoryComponent != nullptr && characterComponent->GetCurrentActivity() == eGameActivities::ACTIVITY_QUICKBUILDING) {
+ if (characterComponent != nullptr && inventoryComponent != nullptr && characterComponent->GetCurrentActivity() == eGameActivity::QUICKBUILDING) {
const auto hasPassive = inventoryComponent->HasAnyPassive({
eItemSetPassiveAbilityID::EngineerRank2, eItemSetPassiveAbilityID::EngineerRank3,
eItemSetPassiveAbilityID::SummonerRank2, eItemSetPassiveAbilityID::SummonerRank3,
@@ -514,7 +516,7 @@ bool DestroyableComponent::CheckValidity(const LWOOBJID target, const bool ignor
if (targetQuickbuild != nullptr) {
const auto state = targetQuickbuild->GetState();
- if (state != REBUILD_COMPLETED) {
+ if (state != eRebuildState::COMPLETED) {
return false;
}
}
@@ -803,7 +805,7 @@ void DestroyableComponent::Smash(const LWOOBJID source, const eKillType killType
coinsTotal -= coinsToLose;
LootGenerator::Instance().DropLoot(m_Parent, m_Parent, -1, coinsToLose, coinsToLose);
- character->SetCoins(coinsTotal, eLootSourceType::LOOT_SOURCE_PICKUP);
+ character->SetCoins(coinsTotal, eLootSourceType::PICKUP);
}
}
@@ -992,7 +994,7 @@ void DestroyableComponent::DoHardcoreModeDrops(const LWOOBJID source){
auto uscoreToLose = uscore * (EntityManager::Instance()->GetHardcoreLoseUscoreOnDeathPercent() / 100);
character->SetUScore(uscore - uscoreToLose);
- GameMessages::SendModifyLEGOScore(m_Parent, m_Parent->GetSystemAddress(), -uscoreToLose, eLootSourceType::LOOT_SOURCE_MISSION);
+ GameMessages::SendModifyLEGOScore(m_Parent, m_Parent->GetSystemAddress(), -uscoreToLose, eLootSourceType::MISSION);
if (EntityManager::Instance()->GetHardcoreDropinventoryOnDeath()) {
//drop all items from inventory:
@@ -1023,7 +1025,7 @@ void DestroyableComponent::DoHardcoreModeDrops(const LWOOBJID source){
auto coins = chars->GetCoins();
//lose all coins:
- chars->SetCoins(0, eLootSourceType::LOOT_SOURCE_NONE);
+ chars->SetCoins(0, eLootSourceType::NONE);
//drop all coins:
GameMessages::SendDropClientLoot(m_Parent, source, LOT_NULL, coins, m_Parent->GetPosition());
@@ -1047,7 +1049,7 @@ void DestroyableComponent::DoHardcoreModeDrops(const LWOOBJID source){
int uscore = maxHealth * EntityManager::Instance()->GetHardcoreUscoreEnemiesMultiplier();
playerStats->SetUScore(playerStats->GetUScore() + uscore);
- GameMessages::SendModifyLEGOScore(player, player->GetSystemAddress(), uscore, eLootSourceType::LOOT_SOURCE_MISSION);
+ GameMessages::SendModifyLEGOScore(player, player->GetSystemAddress(), uscore, eLootSourceType::MISSION);
EntityManager::Instance()->SerializeEntity(m_Parent);
}
diff --git a/dGame/dComponents/DestroyableComponent.h b/dGame/dComponents/DestroyableComponent.h
index 47be96a0..66c8374d 100644
--- a/dGame/dComponents/DestroyableComponent.h
+++ b/dGame/dComponents/DestroyableComponent.h
@@ -11,6 +11,7 @@
namespace CppScripts {
class Script;
}; //! namespace CppScripts
+enum class eStateChangeType : uint32_t;
/**
* Represents the stats of an entity, for example its health, imagination and armor. Also handles factions, which
diff --git a/dGame/dComponents/InventoryComponent.cpp b/dGame/dComponents/InventoryComponent.cpp
index dc8fdbdc..907356ce 100644
--- a/dGame/dComponents/InventoryComponent.cpp
+++ b/dGame/dComponents/InventoryComponent.cpp
@@ -29,6 +29,8 @@
#include "eUnequippableActiveType.h"
#include "CppScripts.h"
#include "eMissionTaskType.h"
+#include "eStateChangeType.h"
+#include "eUseItemResponse.h"
#include "CDComponentsRegistryTable.h"
#include "CDInventoryComponentTable.h"
@@ -356,7 +358,7 @@ void InventoryComponent::MoveItemToInventory(Item* item, const eInventoryType in
left -= delta;
- AddItem(lot, delta, eLootSourceType::LOOT_SOURCE_NONE, inventory, {}, LWOOBJID_EMPTY, showFlyingLot, isModMoveAndEquip, LWOOBJID_EMPTY, origin->GetType(), 0, false, preferredSlot);
+ AddItem(lot, delta, eLootSourceType::NONE, inventory, {}, LWOOBJID_EMPTY, showFlyingLot, isModMoveAndEquip, LWOOBJID_EMPTY, origin->GetType(), 0, false, preferredSlot);
item->SetCount(item->GetCount() - delta, false, false);
@@ -371,7 +373,7 @@ void InventoryComponent::MoveItemToInventory(Item* item, const eInventoryType in
const auto delta = std::min(item->GetCount(), count);
- AddItem(lot, delta, eLootSourceType::LOOT_SOURCE_NONE, inventory, config, LWOOBJID_EMPTY, showFlyingLot, isModMoveAndEquip, subkey, origin->GetType(), 0, item->GetBound(), preferredSlot);
+ AddItem(lot, delta, eLootSourceType::NONE, inventory, config, LWOOBJID_EMPTY, showFlyingLot, isModMoveAndEquip, subkey, origin->GetType(), 0, item->GetBound(), preferredSlot);
item->SetCount(item->GetCount() - delta, false, false);
}
@@ -1247,7 +1249,7 @@ void InventoryComponent::SpawnPet(Item* item) {
auto destroyableComponent = m_Parent->GetComponent();
if (Game::config->GetValue("pets_take_imagination") == "1" && destroyableComponent && destroyableComponent->GetImagination() <= 0) {
- GameMessages::SendUseItemRequirementsResponse(m_Parent->GetObjectID(), m_Parent->GetSystemAddress(), UseItemResponse::NoImaginationForPet);
+ GameMessages::SendUseItemRequirementsResponse(m_Parent->GetObjectID(), m_Parent->GetSystemAddress(), eUseItemResponse::NoImaginationForPet);
return;
}
diff --git a/dGame/dComponents/InventoryComponent.h b/dGame/dComponents/InventoryComponent.h
index d695737c..801f9f51 100644
--- a/dGame/dComponents/InventoryComponent.h
+++ b/dGame/dComponents/InventoryComponent.h
@@ -21,6 +21,7 @@
#include "PossessorComponent.h"
#include "eInventoryType.h"
#include "eReplicaComponentType.h"
+#include "eLootSourceType.h"
class Entity;
class ItemSet;
@@ -99,7 +100,7 @@ public:
void AddItem(
LOT lot,
uint32_t count,
- eLootSourceType lootSourceType = eLootSourceType::LOOT_SOURCE_NONE,
+ eLootSourceType lootSourceType = eLootSourceType::NONE,
eInventoryType inventoryType = INVALID,
const std::vector& config = {},
LWOOBJID parent = LWOOBJID_EMPTY,
diff --git a/dGame/dComponents/LevelProgressionComponent.cpp b/dGame/dComponents/LevelProgressionComponent.cpp
index 814a7a86..8163e736 100644
--- a/dGame/dComponents/LevelProgressionComponent.cpp
+++ b/dGame/dComponents/LevelProgressionComponent.cpp
@@ -59,7 +59,7 @@ void LevelProgressionComponent::HandleLevelUp() {
for (auto* reward : rewards) {
switch (reward->rewardType) {
case 0:
- inventoryComponent->AddItem(reward->value, reward->count, eLootSourceType::LOOT_SOURCE_LEVEL_REWARD);
+ inventoryComponent->AddItem(reward->value, reward->count, eLootSourceType::LEVEL_REWARD);
break;
case 4:
{
diff --git a/dGame/dComponents/ModuleAssemblyComponent.h b/dGame/dComponents/ModuleAssemblyComponent.h
index c6e217ed..39670c9a 100644
--- a/dGame/dComponents/ModuleAssemblyComponent.h
+++ b/dGame/dComponents/ModuleAssemblyComponent.h
@@ -14,7 +14,7 @@ class ModuleAssemblyComponent : public Component {
public:
static const eReplicaComponentType ComponentType = eReplicaComponentType::MODULE_ASSEMBLY;
- ModuleAssemblyComponent(Entity* MSG_CHAT_INTERNAL_PLAYER_REMOVED_NOTIFICATION);
+ ModuleAssemblyComponent(Entity* parent);
~ModuleAssemblyComponent() override;
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags);
diff --git a/dGame/dComponents/PetComponent.cpp b/dGame/dComponents/PetComponent.cpp
index 090e5791..774aa92b 100644
--- a/dGame/dComponents/PetComponent.cpp
+++ b/dGame/dComponents/PetComponent.cpp
@@ -15,6 +15,10 @@
#include "PetDigServer.h"
#include "../dWorldServer/ObjectIDManager.h"
#include "eUnequippableActiveType.h"
+#include "eTerminateType.h"
+#include "ePetTamingNotifyType.h"
+#include "eUseItemResponse.h"
+#include "ePlayerFlag.h"
#include "Game.h"
#include "dConfig.h"
@@ -22,6 +26,7 @@
#include "Database.h"
#include "EntityInfo.h"
#include "eMissionTaskType.h"
+#include "eObjectBits.h"
#include "eGameMasterLevel.h"
std::unordered_map PetComponent::buildCache{};
@@ -32,7 +37,7 @@ std::unordered_map PetComponent::activePets{};
* Maps all the pet lots to a flag indicating that the player has caught it. All basic pets have been guessed by ObjID
* while the faction ones could be checked using their respective missions.
*/
-std::map PetComponent::petFlags = {
+std::map PetComponent::petFlags = {
{ 3050, 801 }, // Elephant
{ 3054, 803 }, // Cat
{ 3195, 806 }, // Triceratops
@@ -284,7 +289,7 @@ void PetComponent::OnUse(Entity* originator) {
m_Parent->GetObjectID(),
LWOOBJID_EMPTY,
true,
- NOTIFY_TYPE_BEGIN,
+ ePetTamingNotifyType::BEGIN,
petPosition,
position,
rotation,
@@ -296,7 +301,7 @@ void PetComponent::OnUse(Entity* originator) {
LWOOBJID_EMPTY,
originator->GetObjectID(),
true,
- NOTIFY_TYPE_BEGIN,
+ ePetTamingNotifyType::BEGIN,
petPosition,
position,
rotation,
@@ -312,7 +317,7 @@ void PetComponent::OnUse(Entity* originator) {
// Notify the start of a pet taming minigame
for (CppScripts::Script* script : CppScripts::GetEntityScripts(m_Parent)) {
- script->OnNotifyPetTamingMinigame(m_Parent, originator, NOTIFY_TYPE_BEGIN);
+ script->OnNotifyPetTamingMinigame(m_Parent, originator, ePetTamingNotifyType::BEGIN);
}
}
@@ -551,8 +556,8 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
LWOOBJID petSubKey = ObjectIDManager::Instance()->GenerateRandomObjectID();
- petSubKey = GeneralUtils::SetBit(petSubKey, OBJECT_BIT_CHARACTER);
- petSubKey = GeneralUtils::SetBit(petSubKey, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(petSubKey, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(petSubKey, eObjectBits::PERSISTENT);
m_DatabaseId = petSubKey;
@@ -565,7 +570,7 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
GameMessages::SendRegisterPetDBID(m_Tamer, petSubKey, tamer->GetSystemAddress());
- inventoryComponent->AddItem(m_Parent->GetLOT(), 1, eLootSourceType::LOOT_SOURCE_ACTIVITY, eInventoryType::MODELS, {}, LWOOBJID_EMPTY, true, false, petSubKey);
+ inventoryComponent->AddItem(m_Parent->GetLOT(), 1, eLootSourceType::ACTIVITY, eInventoryType::MODELS, {}, LWOOBJID_EMPTY, true, false, petSubKey);
auto* item = inventoryComponent->FindItemBySubKey(petSubKey, MODELS);
if (item == nullptr) {
@@ -589,7 +594,7 @@ void PetComponent::NotifyTamingBuildSuccess(NiPoint3 position) {
LWOOBJID_EMPTY,
LWOOBJID_EMPTY,
false,
- NOTIFY_TYPE_NAMINGPET,
+ ePetTamingNotifyType::NAMINGPET,
NiPoint3::ZERO,
NiPoint3::ZERO,
NiQuaternion::IDENTITY,
@@ -669,7 +674,7 @@ void PetComponent::RequestSetPetName(std::u16string name) {
m_Parent->GetObjectID(),
m_Tamer,
false,
- NOTIFY_TYPE_SUCCESS,
+ ePetTamingNotifyType::SUCCESS,
NiPoint3::ZERO,
NiPoint3::ZERO,
NiQuaternion::IDENTITY,
@@ -690,7 +695,7 @@ void PetComponent::RequestSetPetName(std::u16string name) {
// Notify the end of a pet taming minigame
for (CppScripts::Script* script : CppScripts::GetEntityScripts(m_Parent)) {
- script->OnNotifyPetTamingMinigame(m_Parent, tamer, NOTIFY_TYPE_SUCCESS);
+ script->OnNotifyPetTamingMinigame(m_Parent, tamer, ePetTamingNotifyType::SUCCESS);
}
}
@@ -710,7 +715,7 @@ void PetComponent::ClientExitTamingMinigame(bool voluntaryExit) {
m_Parent->GetObjectID(),
m_Tamer,
false,
- NOTIFY_TYPE_QUIT,
+ ePetTamingNotifyType::QUIT,
NiPoint3::ZERO,
NiPoint3::ZERO,
NiQuaternion::IDENTITY,
@@ -731,7 +736,7 @@ void PetComponent::ClientExitTamingMinigame(bool voluntaryExit) {
// Notify the end of a pet taming minigame
for (CppScripts::Script* script : CppScripts::GetEntityScripts(m_Parent)) {
- script->OnNotifyPetTamingMinigame(m_Parent, tamer, NOTIFY_TYPE_QUIT);
+ script->OnNotifyPetTamingMinigame(m_Parent, tamer, ePetTamingNotifyType::QUIT);
}
}
@@ -761,7 +766,7 @@ void PetComponent::ClientFailTamingMinigame() {
m_Parent->GetObjectID(),
m_Tamer,
false,
- NOTIFY_TYPE_FAILED,
+ ePetTamingNotifyType::FAILED,
NiPoint3::ZERO,
NiPoint3::ZERO,
NiQuaternion::IDENTITY,
@@ -782,7 +787,7 @@ void PetComponent::ClientFailTamingMinigame() {
// Notify the end of a pet taming minigame
for (CppScripts::Script* script : CppScripts::GetEntityScripts(m_Parent)) {
- script->OnNotifyPetTamingMinigame(m_Parent, tamer, NOTIFY_TYPE_FAILED);
+ script->OnNotifyPetTamingMinigame(m_Parent, tamer, ePetTamingNotifyType::FAILED);
}
}
@@ -883,7 +888,7 @@ void PetComponent::Activate(Item* item, bool registerPet, bool fromTaming) {
EntityManager::Instance()->SerializeEntity(m_Parent);
- owner->GetCharacter()->SetPlayerFlag(69, true);
+ owner->GetCharacter()->SetPlayerFlag(ePlayerFlag::FIRST_MANUAL_PET_HIBERNATE, true);
if (registerPet) {
GameMessages::SendAddPetToPlayer(m_Owner, 0, GeneralUtils::UTF8ToUTF16(m_Name), m_DatabaseId, m_Parent->GetLOT(), owner->GetSystemAddress());
@@ -927,7 +932,7 @@ void PetComponent::AddDrainImaginationTimer(Item* item, bool fromTaming) {
auto playerEntity = playerDestroyableComponent->GetParent();
if (!playerEntity) return;
- GameMessages::SendUseItemRequirementsResponse(playerEntity->GetObjectID(), playerEntity->GetSystemAddress(), UseItemResponse::NoImaginationForPet);
+ GameMessages::SendUseItemRequirementsResponse(playerEntity->GetObjectID(), playerEntity->GetSystemAddress(), eUseItemResponse::NoImaginationForPet);
}
this->AddDrainImaginationTimer(item);
diff --git a/dGame/dComponents/PetComponent.h b/dGame/dComponents/PetComponent.h
index e3c1556b..b3d089a9 100644
--- a/dGame/dComponents/PetComponent.h
+++ b/dGame/dComponents/PetComponent.h
@@ -263,7 +263,7 @@ private:
/**
* Flags that indicate that a player has tamed a pet, indexed by the LOT of the pet
*/
- static std::map petFlags;
+ static std::map petFlags;
/**
* The ID of the component in the pet component table
diff --git a/dGame/dComponents/PhantomPhysicsComponent.cpp b/dGame/dComponents/PhantomPhysicsComponent.cpp
index ce205826..e6272aa4 100644
--- a/dGame/dComponents/PhantomPhysicsComponent.cpp
+++ b/dGame/dComponents/PhantomPhysicsComponent.cpp
@@ -216,6 +216,13 @@ PhantomPhysicsComponent::PhantomPhysicsComponent(Entity* parent) : Component(par
m_dpEntity->SetRotation(m_Rotation);
m_dpEntity->SetPosition(m_Position);
dpWorld::Instance().AddEntity(m_dpEntity);
+ } else if (info->physicsAsset == "env\\env_won_fv_gas-blocking-volume.hkx"){
+ m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 390.496826f, 111.467964f, 600.821534f, true);
+ m_dpEntity->SetScale(m_Scale);
+ m_dpEntity->SetRotation(m_Rotation);
+ m_Position.y -= (111.467964f * m_Scale) / 2;
+ m_dpEntity->SetPosition(m_Position);
+ dpWorld::Instance().AddEntity(m_dpEntity);
} else {
//Game::logger->Log("PhantomPhysicsComponent", "This one is supposed to have %s", info->physicsAsset.c_str());
diff --git a/dGame/dComponents/PossessorComponent.cpp b/dGame/dComponents/PossessorComponent.cpp
index 69046c3b..387b3479 100644
--- a/dGame/dComponents/PossessorComponent.cpp
+++ b/dGame/dComponents/PossessorComponent.cpp
@@ -4,6 +4,8 @@
#include "EntityManager.h"
#include "GameMessages.h"
#include "eUnequippableActiveType.h"
+#include "eControlScheme.h"
+#include "eStateChangeType.h"
PossessorComponent::PossessorComponent(Entity* parent) : Component(parent) {
m_Possessable = LWOOBJID_EMPTY;
@@ -78,5 +80,5 @@ void PossessorComponent::Dismount(Entity* mount, bool forceDismount) {
if (characterComponent) characterComponent->SetIsRacing(false);
}
// Make sure we don't have wacky controls
- GameMessages::SendSetPlayerControlScheme(m_Parent, eControlSceme::SCHEME_A);
+ GameMessages::SendSetPlayerControlScheme(m_Parent, eControlScheme::SCHEME_A);
}
diff --git a/dGame/dComponents/PropertyEntranceComponent.cpp b/dGame/dComponents/PropertyEntranceComponent.cpp
index c251dc96..5da9a3c4 100644
--- a/dGame/dComponents/PropertyEntranceComponent.cpp
+++ b/dGame/dComponents/PropertyEntranceComponent.cpp
@@ -12,6 +12,7 @@
#include "UserManager.h"
#include "dLogger.h"
#include "AMFFormat.h"
+#include "eObjectBits.h"
#include "eGameMasterLevel.h"
PropertyEntranceComponent::PropertyEntranceComponent(uint32_t componentID, Entity* parent) : Component(parent) {
@@ -243,8 +244,8 @@ void PropertyEntranceComponent::OnPropertyEntranceSync(Entity* entity, bool incl
// Convert owner char id to LWOOBJID
LWOOBJID ownerObjId = owner;
- ownerObjId = GeneralUtils::SetBit(ownerObjId, OBJECT_BIT_CHARACTER);
- ownerObjId = GeneralUtils::SetBit(ownerObjId, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(ownerObjId, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(ownerObjId, eObjectBits::PERSISTENT);
// Query to get friend and best friend fields
auto friendCheck = Database::CreatePreppedStmt("SELECT best_friend FROM friends WHERE (player_id = ? AND friend_id = ?) OR (player_id = ? AND friend_id = ?)");
diff --git a/dGame/dComponents/PropertyManagementComponent.cpp b/dGame/dComponents/PropertyManagementComponent.cpp
index 0b05b10e..c87d0744 100644
--- a/dGame/dComponents/PropertyManagementComponent.cpp
+++ b/dGame/dComponents/PropertyManagementComponent.cpp
@@ -19,6 +19,7 @@
#include "PropertyEntranceComponent.h"
#include "InventoryComponent.h"
#include "eMissionTaskType.h"
+#include "eObjectBits.h"
#include
#include "CppScripts.h"
@@ -66,8 +67,8 @@ PropertyManagementComponent::PropertyManagementComponent(Entity* parent) : Compo
if (propertyEntry->next()) {
this->propertyId = propertyEntry->getUInt64(1);
this->owner = propertyEntry->getUInt64(2);
- this->owner = GeneralUtils::SetBit(this->owner, OBJECT_BIT_CHARACTER);
- this->owner = GeneralUtils::SetBit(this->owner, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(this->owner, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(this->owner, eObjectBits::PERSISTENT);
this->clone_Id = propertyEntry->getInt(2);
this->propertyName = propertyEntry->getString(5).c_str();
this->propertyDescription = propertyEntry->getString(6).c_str();
@@ -372,16 +373,15 @@ void PropertyManagementComponent::UpdateModelPosition(const LWOOBJID id, const N
info.emulated = true;
info.emulator = EntityManager::Instance()->GetZoneControlEntity()->GetObjectID();
- LWOOBJID id = static_cast(persistentId) | 1ull << OBJECT_BIT_CLIENT;
-
- info.spawnerID = id;
+ info.spawnerID = persistentId;
+ GeneralUtils::SetBit(info.spawnerID, eObjectBits::CLIENT);
const auto spawnerId = dZoneManager::Instance()->MakeSpawner(info);
auto* spawner = dZoneManager::Instance()->GetSpawner(spawnerId);
auto ldfModelBehavior = new LDFData(u"modelBehaviors", 0);
- auto userModelID = new LDFData(u"userModelID", id);
+ auto userModelID = new LDFData(u"userModelID", info.spawnerID);
auto modelType = new LDFData(u"modelType", 2);
auto propertyObjectID = new LDFData(u"propertyObjectID", true);
auto componentWhitelist = new LDFData(u"componentWhitelist", 1);
@@ -476,7 +476,7 @@ void PropertyManagementComponent::DeleteModel(const LWOOBJID id, const int delet
settings.push_back(propertyObjectID);
settings.push_back(modelType);
- inventoryComponent->AddItem(6662, 1, eLootSourceType::LOOT_SOURCE_DELETION, eInventoryType::MODELS_IN_BBB, settings, LWOOBJID_EMPTY, false, false, spawnerId);
+ inventoryComponent->AddItem(6662, 1, eLootSourceType::DELETION, eInventoryType::MODELS_IN_BBB, settings, LWOOBJID_EMPTY, false, false, spawnerId);
auto* item = inventoryComponent->FindItemBySubKey(spawnerId);
if (item == nullptr) {
@@ -498,7 +498,7 @@ void PropertyManagementComponent::DeleteModel(const LWOOBJID id, const int delet
if (spawner != nullptr) {
dZoneManager::Instance()->RemoveSpawner(spawner->m_Info.spawnerID);
} else {
- model->Smash(SILENT);
+ model->Smash(LWOOBJID_EMPTY, eKillType::SILENT);
}
item->SetCount(0, true, false, false);
@@ -506,7 +506,7 @@ void PropertyManagementComponent::DeleteModel(const LWOOBJID id, const int delet
return;
}
- inventoryComponent->AddItem(model->GetLOT(), 1, eLootSourceType::LOOT_SOURCE_DELETION, INVALID, {}, LWOOBJID_EMPTY, false);
+ inventoryComponent->AddItem(model->GetLOT(), 1, eLootSourceType::DELETION, INVALID, {}, LWOOBJID_EMPTY, false);
auto* item = inventoryComponent->FindItemByLot(model->GetLOT());
@@ -551,7 +551,7 @@ void PropertyManagementComponent::DeleteModel(const LWOOBJID id, const int delet
if (spawner != nullptr) {
dZoneManager::Instance()->RemoveSpawner(spawner->m_Info.spawnerID);
} else {
- model->Smash(SILENT);
+ model->Smash(LWOOBJID_EMPTY, eKillType::SILENT);
}
}
@@ -622,8 +622,8 @@ void PropertyManagementComponent::Load() {
//BBB property models need to have extra stuff set for them:
if (lot == 14) {
LWOOBJID blueprintID = lookupResult->getUInt(10);
- blueprintID = GeneralUtils::SetBit(blueprintID, OBJECT_BIT_CHARACTER);
- blueprintID = GeneralUtils::SetBit(blueprintID, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(blueprintID, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(blueprintID, eObjectBits::PERSISTENT);
LDFBaseData* ldfBlueprintID = new LDFData(u"blueprintid", blueprintID);
LDFBaseData* componentWhitelist = new LDFData(u"componentWhitelist", 1);
diff --git a/dGame/dComponents/RacingControlComponent.cpp b/dGame/dComponents/RacingControlComponent.cpp
index fe4f1faf..703ec7f3 100644
--- a/dGame/dComponents/RacingControlComponent.cpp
+++ b/dGame/dComponents/RacingControlComponent.cpp
@@ -311,7 +311,7 @@ void RacingControlComponent::OnRequestDie(Entity* player) {
if (!racingPlayer.noSmashOnReload) {
racingPlayer.smashedTimes++;
GameMessages::SendDie(vehicle, vehicle->GetObjectID(), LWOOBJID_EMPTY, true,
- VIOLENT, u"", 0, 0, 90.0f, false, true, 0);
+ eKillType::VIOLENT, u"", 0, 0, 90.0f, false, true, 0);
auto* destroyableComponent = vehicle->GetComponent();
uint32_t respawnImagination = 0;
@@ -765,7 +765,7 @@ void RacingControlComponent::Update(float deltaTime) {
// be smashed by death plane
if (vehiclePosition.y < -500) {
GameMessages::SendDie(vehicle, m_Parent->GetObjectID(),
- LWOOBJID_EMPTY, true, VIOLENT, u"", 0, 0, 0,
+ LWOOBJID_EMPTY, true, eKillType::VIOLENT, u"", 0, 0, 0,
true, false, 0);
OnRequestDie(playerEntity);
diff --git a/dGame/dComponents/RailActivatorComponent.cpp b/dGame/dComponents/RailActivatorComponent.cpp
index 49fc105d..e4091046 100644
--- a/dGame/dComponents/RailActivatorComponent.cpp
+++ b/dGame/dComponents/RailActivatorComponent.cpp
@@ -7,6 +7,7 @@
#include "RebuildComponent.h"
#include "Game.h"
#include "dLogger.h"
+#include "eStateChangeType.h"
RailActivatorComponent::RailActivatorComponent(Entity* parent, int32_t componentID) : Component(parent) {
m_ComponentID = componentID;
@@ -41,7 +42,7 @@ RailActivatorComponent::~RailActivatorComponent() = default;
void RailActivatorComponent::OnUse(Entity* originator) {
auto* rebuildComponent = m_Parent->GetComponent();
- if (rebuildComponent != nullptr && rebuildComponent->GetState() != REBUILD_COMPLETED)
+ if (rebuildComponent != nullptr && rebuildComponent->GetState() != eRebuildState::COMPLETED)
return;
if (rebuildComponent != nullptr) {
diff --git a/dGame/dComponents/RebuildComponent.cpp b/dGame/dComponents/RebuildComponent.cpp
index 2562b313..fcf2738c 100644
--- a/dGame/dComponents/RebuildComponent.cpp
+++ b/dGame/dComponents/RebuildComponent.cpp
@@ -9,6 +9,9 @@
#include "MissionComponent.h"
#include "eMissionTaskType.h"
#include "eTriggerEventType.h"
+#include "eQuickBuildFailReason.h"
+#include "eTerminateType.h"
+#include "eGameActivity.h"
#include "dServer.h"
#include "PacketUtils.h"
@@ -47,7 +50,7 @@ RebuildComponent::~RebuildComponent() {
Entity* builder = GetBuilder();
if (builder) {
- CancelRebuild(builder, eFailReason::REASON_BUILD_ENDED, true);
+ CancelRebuild(builder, eQuickBuildFailReason::BUILD_ENDED, true);
}
DespawnActivator();
@@ -66,7 +69,7 @@ void RebuildComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitia
// If build state is completed and we've already serialized once in the completed state,
// don't serializing this component anymore as this will cause the build to jump again.
// If state changes, serialization will begin again.
- if (!m_StateDirty && m_State == REBUILD_COMPLETED) {
+ if (!m_StateDirty && m_State == eRebuildState::COMPLETED) {
outBitStream->Write0();
outBitStream->Write0();
return;
@@ -90,7 +93,7 @@ void RebuildComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitia
outBitStream->Write1();
- outBitStream->Write(m_State);
+ outBitStream->Write(m_State);
outBitStream->Write(m_ShowResetEffect);
outBitStream->Write(m_Activator != nullptr);
@@ -120,7 +123,7 @@ void RebuildComponent::Update(float deltaTime) {
}*/
switch (m_State) {
- case REBUILD_OPEN: {
+ case eRebuildState::OPEN: {
SpawnActivator();
m_TimeBeforeDrain = 0;
@@ -150,7 +153,7 @@ void RebuildComponent::Update(float deltaTime) {
break;
}
- case REBUILD_COMPLETED: {
+ case eRebuildState::COMPLETED: {
m_Timer += deltaTime;
// For reset times < 0 this has to be handled manually
@@ -172,7 +175,7 @@ void RebuildComponent::Update(float deltaTime) {
}
break;
}
- case REBUILD_BUILDING:
+ case eRebuildState::BUILDING:
{
Entity* builder = GetBuilder();
@@ -201,7 +204,7 @@ void RebuildComponent::Update(float deltaTime) {
++m_DrainedImagination;
if (newImagination == 0 && m_DrainedImagination < m_TakeImagination) {
- CancelRebuild(builder, eFailReason::REASON_OUT_OF_IMAGINATION, true);
+ CancelRebuild(builder, eQuickBuildFailReason::OUT_OF_IMAGINATION, true);
break;
}
@@ -213,7 +216,7 @@ void RebuildComponent::Update(float deltaTime) {
break;
}
- case REBUILD_INCOMPLETE: {
+ case eRebuildState::INCOMPLETE: {
m_TimerIncomplete += deltaTime;
// For reset times < 0 this has to be handled manually
@@ -234,11 +237,12 @@ void RebuildComponent::Update(float deltaTime) {
}
break;
}
+ case eRebuildState::RESETTING: break;
}
}
void RebuildComponent::OnUse(Entity* originator) {
- if (GetBuilder() != nullptr || m_State == REBUILD_COMPLETED) {
+ if (GetBuilder() != nullptr || m_State == eRebuildState::COMPLETED) {
return;
}
@@ -392,18 +396,18 @@ void RebuildComponent::SetRepositionPlayer(bool value) {
}
void RebuildComponent::StartRebuild(Entity* user) {
- if (m_State == eRebuildState::REBUILD_OPEN || m_State == eRebuildState::REBUILD_COMPLETED || m_State == eRebuildState::REBUILD_INCOMPLETE) {
+ if (m_State == eRebuildState::OPEN || m_State == eRebuildState::COMPLETED || m_State == eRebuildState::INCOMPLETE) {
m_Builder = user->GetObjectID();
auto* character = user->GetComponent();
- character->SetCurrentActivity(eGameActivities::ACTIVITY_QUICKBUILDING);
+ character->SetCurrentActivity(eGameActivity::QUICKBUILDING);
EntityManager::Instance()->SerializeEntity(user);
- GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::REBUILD_BUILDING, user->GetObjectID());
- GameMessages::SendEnableRebuild(m_Parent, true, false, false, eFailReason::REASON_NOT_GIVEN, 0.0f, user->GetObjectID());
+ GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::BUILDING, user->GetObjectID());
+ GameMessages::SendEnableRebuild(m_Parent, true, false, false, eQuickBuildFailReason::NOT_GIVEN, 0.0f, user->GetObjectID());
- m_State = eRebuildState::REBUILD_BUILDING;
+ m_State = eRebuildState::BUILDING;
m_StateDirty = true;
EntityManager::Instance()->SerializeEntity(m_Parent);
@@ -431,7 +435,7 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
auto* characterComponent = user->GetComponent();
if (characterComponent != nullptr) {
- characterComponent->SetCurrentActivity(eGameActivities::ACTIVITY_NONE);
+ characterComponent->SetCurrentActivity(eGameActivity::NONE);
characterComponent->TrackRebuildComplete();
} else {
Game::logger->Log("RebuildComponent", "Some user tried to finish the rebuild but they didn't have a character somehow.");
@@ -440,13 +444,13 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
EntityManager::Instance()->SerializeEntity(user);
- GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::REBUILD_COMPLETED, user->GetObjectID());
+ GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::COMPLETED, user->GetObjectID());
GameMessages::SendPlayFXEffect(m_Parent, 507, u"create", "BrickFadeUpVisCompleteEffect", LWOOBJID_EMPTY, 0.4f, 1.0f, true);
- GameMessages::SendEnableRebuild(m_Parent, false, false, true, eFailReason::REASON_NOT_GIVEN, m_ResetTime, user->GetObjectID());
+ GameMessages::SendEnableRebuild(m_Parent, false, false, true, eQuickBuildFailReason::NOT_GIVEN, m_ResetTime, user->GetObjectID());
GameMessages::SendTerminateInteraction(user->GetObjectID(), eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
- m_State = eRebuildState::REBUILD_COMPLETED;
+ m_State = eRebuildState::COMPLETED;
m_StateDirty = true;
m_Timer = 0.0f;
m_DrainedImagination = 0;
@@ -519,17 +523,17 @@ void RebuildComponent::CompleteRebuild(Entity* user) {
void RebuildComponent::ResetRebuild(bool failed) {
Entity* builder = GetBuilder();
- if (m_State == eRebuildState::REBUILD_BUILDING && builder) {
- GameMessages::SendEnableRebuild(m_Parent, false, false, failed, eFailReason::REASON_NOT_GIVEN, m_ResetTime, builder->GetObjectID());
+ if (m_State == eRebuildState::BUILDING && builder) {
+ GameMessages::SendEnableRebuild(m_Parent, false, false, failed, eQuickBuildFailReason::NOT_GIVEN, m_ResetTime, builder->GetObjectID());
if (failed) {
GameMessages::SendPlayAnimation(builder, u"rebuild-fail");
}
}
- GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::REBUILD_RESETTING, LWOOBJID_EMPTY);
+ GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::RESETTING, LWOOBJID_EMPTY);
- m_State = eRebuildState::REBUILD_RESETTING;
+ m_State = eRebuildState::RESETTING;
m_StateDirty = true;
m_Timer = 0.0f;
m_TimerIncomplete = 0.0f;
@@ -551,15 +555,15 @@ void RebuildComponent::ResetRebuild(bool failed) {
}
}
-void RebuildComponent::CancelRebuild(Entity* entity, eFailReason failReason, bool skipChecks) {
- if (m_State != eRebuildState::REBUILD_COMPLETED || skipChecks) {
+void RebuildComponent::CancelRebuild(Entity* entity, eQuickBuildFailReason failReason, bool skipChecks) {
+ if (m_State != eRebuildState::COMPLETED || skipChecks) {
m_Builder = LWOOBJID_EMPTY;
const auto entityID = entity != nullptr ? entity->GetObjectID() : LWOOBJID_EMPTY;
// Notify the client that a state has changed
- GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::REBUILD_INCOMPLETE, entityID);
+ GameMessages::SendRebuildNotifyState(m_Parent, m_State, eRebuildState::INCOMPLETE, entityID);
GameMessages::SendEnableRebuild(m_Parent, false, true, false, failReason, m_Timer, entityID);
// Now terminate any interaction with the rebuild
@@ -567,7 +571,7 @@ void RebuildComponent::CancelRebuild(Entity* entity, eFailReason failReason, boo
GameMessages::SendTerminateInteraction(m_Parent->GetObjectID(), eTerminateType::FROM_INTERACTION, m_Parent->GetObjectID());
// Now update the component itself
- m_State = eRebuildState::REBUILD_INCOMPLETE;
+ m_State = eRebuildState::INCOMPLETE;
m_StateDirty = true;
// Notify scripts and possible subscribers
@@ -585,7 +589,7 @@ void RebuildComponent::CancelRebuild(Entity* entity, eFailReason failReason, boo
CharacterComponent* characterComponent = entity->GetComponent();
if (characterComponent) {
- characterComponent->SetCurrentActivity(eGameActivities::ACTIVITY_NONE);
+ characterComponent->SetCurrentActivity(eGameActivity::NONE);
EntityManager::Instance()->SerializeEntity(entity);
}
}
diff --git a/dGame/dComponents/RebuildComponent.h b/dGame/dComponents/RebuildComponent.h
index a8e11e4c..09dd0465 100644
--- a/dGame/dComponents/RebuildComponent.h
+++ b/dGame/dComponents/RebuildComponent.h
@@ -10,8 +10,10 @@
#include "Preconditions.h"
#include "Component.h"
#include "eReplicaComponentType.h"
+#include "eRebuildState.h"
class Entity;
+enum class eQuickBuildFailReason : uint32_t;
/**
* Component that handles entities that can be built into other entities using the quick build mechanic. Generally
@@ -215,7 +217,7 @@ public:
* @param failReason the reason the rebuild was cancelled
* @param skipChecks whether or not to skip the check for the rebuild not being completed
*/
- void CancelRebuild(Entity* builder, eFailReason failReason, bool skipChecks = false);
+ void CancelRebuild(Entity* builder, eQuickBuildFailReason failReason, bool skipChecks = false);
private:
/**
* Whether or not the quickbuild state has been changed since we last serialized it.
@@ -225,7 +227,7 @@ private:
/**
* The state the rebuild is currently in
*/
- eRebuildState m_State = eRebuildState::REBUILD_OPEN;
+ eRebuildState m_State = eRebuildState::OPEN;
/**
* The time that has passed since initiating the rebuild
diff --git a/dGame/dComponents/RocketLaunchpadControlComponent.cpp b/dGame/dComponents/RocketLaunchpadControlComponent.cpp
index 4f248a40..3cac9e42 100644
--- a/dGame/dComponents/RocketLaunchpadControlComponent.cpp
+++ b/dGame/dComponents/RocketLaunchpadControlComponent.cpp
@@ -15,8 +15,10 @@
#include "PropertyEntranceComponent.h"
#include "RocketLaunchLupComponent.h"
#include "dServer.h"
-#include "dMessageIdentifiers.h"
#include "PacketUtils.h"
+#include "eObjectWorldState.h"
+#include "eConnectionType.h"
+#include "eMasterMessageType.h"
RocketLaunchpadControlComponent::RocketLaunchpadControlComponent(Entity* parent, int rocketId) : Component(parent) {
auto query = CDClientDatabase::CreatePreppedStmt(
@@ -77,7 +79,7 @@ void RocketLaunchpadControlComponent::Launch(Entity* originator, LWOMAPID mapId,
GameMessages::SendFireEventClientSide(m_Parent->GetObjectID(), originator->GetSystemAddress(), u"RocketEquipped", rocket->GetId(), cloneId, -1, originator->GetObjectID());
- GameMessages::SendChangeObjectWorldState(rocket->GetId(), WORLDSTATE_ATTACHED, UNASSIGNED_SYSTEM_ADDRESS);
+ GameMessages::SendChangeObjectWorldState(rocket->GetId(), eObjectWorldState::ATTACHED, UNASSIGNED_SYSTEM_ADDRESS);
EntityManager::Instance()->SerializeEntity(originator);
}
@@ -135,7 +137,7 @@ LWOCLONEID RocketLaunchpadControlComponent::GetSelectedCloneId(LWOOBJID player)
void RocketLaunchpadControlComponent::TellMasterToPrepZone(int zoneID) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, MASTER, MSG_MASTER_PREP_ZONE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::MASTER, eMasterMessageType::PREP_ZONE);
bitStream.Write(zoneID);
Game::server->SendToMaster(&bitStream);
}
diff --git a/dGame/dComponents/ScriptedActivityComponent.cpp b/dGame/dComponents/ScriptedActivityComponent.cpp
index 1bc8c01f..eb4ab761 100644
--- a/dGame/dComponents/ScriptedActivityComponent.cpp
+++ b/dGame/dComponents/ScriptedActivityComponent.cpp
@@ -18,9 +18,11 @@
#include "dConfig.h"
#include "InventoryComponent.h"
#include "DestroyableComponent.h"
-#include "dMessageIdentifiers.h"
#include "Loot.h"
#include "eMissionTaskType.h"
+#include "eMatchUpdate.h"
+#include "eConnectionType.h"
+#include "eChatInternalMessageType.h"
#include "CDCurrencyTableTable.h"
#include "CDActivityRewardsTable.h"
@@ -167,9 +169,9 @@ void ScriptedActivityComponent::PlayerJoinLobby(Entity* player) {
}
std::string matchUpdate = "player=9:" + std::to_string(entity->GetObjectID()) + "\nplayerName=0:" + entity->GetCharacter()->GetName();
- GameMessages::SendMatchUpdate(player, player->GetSystemAddress(), matchUpdate, eMatchUpdate::MATCH_UPDATE_PLAYER_JOINED);
+ GameMessages::SendMatchUpdate(player, player->GetSystemAddress(), matchUpdate, eMatchUpdate::PLAYER_ADDED);
PlayerReady(entity, joinedPlayer->ready);
- GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchUpdateJoined, eMatchUpdate::MATCH_UPDATE_PLAYER_JOINED);
+ GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchUpdateJoined, eMatchUpdate::PLAYER_ADDED);
}
}
}
@@ -185,7 +187,7 @@ void ScriptedActivityComponent::PlayerJoinLobby(Entity* player) {
if (m_ActivityInfo.maxTeamSize != 1 && playerLobby->players.size() >= m_ActivityInfo.minTeamSize || m_ActivityInfo.maxTeamSize == 1 && playerLobby->players.size() >= m_ActivityInfo.minTeams) {
// Update the joining player on the match timer
std::string matchTimerUpdate = "time=3:" + std::to_string(playerLobby->timer);
- GameMessages::SendMatchUpdate(player, player->GetSystemAddress(), matchTimerUpdate, eMatchUpdate::MATCH_UPDATE_TIME);
+ GameMessages::SendMatchUpdate(player, player->GetSystemAddress(), matchTimerUpdate, eMatchUpdate::PHASE_WAIT_READY);
}
}
@@ -201,7 +203,7 @@ void ScriptedActivityComponent::PlayerLeave(LWOOBJID playerID) {
if (entity == nullptr)
continue;
- GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchUpdateLeft, eMatchUpdate::MATCH_UPDATE_PLAYER_LEFT);
+ GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchUpdateLeft, eMatchUpdate::PLAYER_REMOVED);
}
delete lobby->players[i];
@@ -242,7 +244,7 @@ void ScriptedActivityComponent::Update(float deltaTime) {
continue;
std::string matchTimerUpdate = "time=3:" + std::to_string(lobby->timer);
- GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchTimerUpdate, eMatchUpdate::MATCH_UPDATE_TIME);
+ GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchTimerUpdate, eMatchUpdate::PHASE_WAIT_READY);
}
}
@@ -267,7 +269,7 @@ void ScriptedActivityComponent::Update(float deltaTime) {
if (entity == nullptr)
continue;
- GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchTimerUpdate, eMatchUpdate::MATCH_UPDATE_TIME_START_DELAY);
+ GameMessages::SendMatchUpdate(entity, entity->GetSystemAddress(), matchTimerUpdate, eMatchUpdate::PHASE_WAIT_START);
}
}
@@ -375,8 +377,8 @@ void ScriptedActivityComponent::PlayerReady(Entity* player, bool bReady) {
// Update players in lobby on player being ready
std::string matchReadyUpdate = "player=9:" + std::to_string(player->GetObjectID());
- eMatchUpdate readyStatus = eMatchUpdate::MATCH_UPDATE_PLAYER_READY;
- if (!bReady) readyStatus = eMatchUpdate::MATCH_UPDATE_PLAYER_UNREADY;
+ eMatchUpdate readyStatus = eMatchUpdate::PLAYER_READY;
+ if (!bReady) readyStatus = eMatchUpdate::PLAYER_NOT_READY;
for (LobbyPlayer* otherPlayer : lobby->players) {
auto* entity = otherPlayer->GetEntity();
if (entity == nullptr)
@@ -516,7 +518,7 @@ void ActivityInstance::StartZone() {
// only make a team if we have more than one participant
if (participants.size() > 1) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CHAT_INTERNAL, MSG_CHAT_INTERNAL_CREATE_TEAM);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CHAT_INTERNAL, eChatInternalMessageType::CREATE_TEAM);
bitStream.Write(leader->GetObjectID());
bitStream.Write(m_Participants.size());
diff --git a/dGame/dComponents/SkillComponent.cpp b/dGame/dComponents/SkillComponent.cpp
index ae0e82f0..c2f07425 100644
--- a/dGame/dComponents/SkillComponent.cpp
+++ b/dGame/dComponents/SkillComponent.cpp
@@ -20,11 +20,11 @@
#include "ScriptComponent.h"
#include "BuffComponent.h"
#include "EchoStartSkill.h"
-#include "dMessageIdentifiers.h"
#include "DoClientProjectileImpact.h"
#include "CDClientManager.h"
-
#include "CDSkillBehaviorTable.h"
+#include "eConnectionType.h"
+#include "eClientMessageType.h"
ProjectileSyncEntry::ProjectileSyncEntry() {
}
@@ -260,6 +260,8 @@ SkillExecutionResult SkillComponent::CalculateBehavior(const uint32_t skillId, c
context->caster = m_Parent->GetObjectID();
+ context->skillID = skillId;
+
context->clientInitalized = clientInitalized;
context->foundTarget = target != LWOOBJID_EMPTY || ignoreTarget || clientInitalized;
@@ -302,7 +304,7 @@ SkillExecutionResult SkillComponent::CalculateBehavior(const uint32_t skillId, c
// Write message
RakNet::BitStream message;
- PacketUtils::WriteHeader(message, CLIENT, MSG_CLIENT_GAME_MSG);
+ PacketUtils::WriteHeader(message, eConnectionType::CLIENT, eClientMessageType::GAME_MSG);
message.Write(this->m_Parent->GetObjectID());
start.Serialize(&message);
@@ -435,7 +437,7 @@ void SkillComponent::SyncProjectileCalculation(const ProjectileSyncEntry& entry)
RakNet::BitStream message;
- PacketUtils::WriteHeader(message, CLIENT, MSG_CLIENT_GAME_MSG);
+ PacketUtils::WriteHeader(message, eConnectionType::CLIENT, eClientMessageType::GAME_MSG);
message.Write(this->m_Parent->GetObjectID());
projectileImpact.Serialize(&message);
diff --git a/dGame/dComponents/SwitchComponent.cpp b/dGame/dComponents/SwitchComponent.cpp
index 392d885a..c59559c2 100644
--- a/dGame/dComponents/SwitchComponent.cpp
+++ b/dGame/dComponents/SwitchComponent.cpp
@@ -39,7 +39,7 @@ bool SwitchComponent::GetActive() const {
void SwitchComponent::EntityEnter(Entity* entity) {
if (!m_Active) {
if (m_Rebuild) {
- if (m_Rebuild->GetState() != eRebuildState::REBUILD_COMPLETED) return;
+ if (m_Rebuild->GetState() != eRebuildState::COMPLETED) return;
}
m_Active = true;
if (!m_Parent) return;
diff --git a/dGame/dComponents/TriggerComponent.cpp b/dGame/dComponents/TriggerComponent.cpp
index 0f241116..3f05d805 100644
--- a/dGame/dComponents/TriggerComponent.cpp
+++ b/dGame/dComponents/TriggerComponent.cpp
@@ -83,8 +83,12 @@ void TriggerComponent::HandleTriggerCommand(LUTriggers::Command* command, Entity
case eTriggerCommandType::REPEL_OBJECT:
HandleRepelObject(targetEntity, command->args);
break;
- case eTriggerCommandType::SET_TIMER: break;
- case eTriggerCommandType::CANCEL_TIMER: break;
+ case eTriggerCommandType::SET_TIMER:
+ HandleSetTimer(targetEntity, argArray);
+ break;
+ case eTriggerCommandType::CANCEL_TIMER:
+ HandleCancelTimer(targetEntity, command->args);
+ break;
case eTriggerCommandType::PLAY_CINEMATIC:
HandlePlayCinematic(targetEntity, argArray);
break;
@@ -194,7 +198,7 @@ void TriggerComponent::HandleDestroyObject(Entity* targetEntity, std::string arg
void TriggerComponent::HandleToggleTrigger(Entity* targetEntity, std::string args){
auto* triggerComponent = targetEntity->GetComponent();
if (!triggerComponent) {
- Game::logger->Log("TriggerComponent::HandleToggleTrigger", "Trigger component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleToggleTrigger", "Trigger component not found!");
return;
}
triggerComponent->SetTriggerEnabled(args == "1");
@@ -203,7 +207,7 @@ void TriggerComponent::HandleToggleTrigger(Entity* targetEntity, std::string arg
void TriggerComponent::HandleResetRebuild(Entity* targetEntity, std::string args){
auto* rebuildComponent = targetEntity->GetComponent();
if (!rebuildComponent) {
- Game::logger->Log("TriggerComponent::HandleResetRebuild", "Rebuild component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleResetRebuild", "Rebuild component not found!");
return;
}
rebuildComponent->ResetRebuild(args == "1");
@@ -233,7 +237,7 @@ void TriggerComponent::HandleRotateObject(Entity* targetEntity, std::vector argArray){
auto* phantomPhysicsComponent = m_Parent->GetComponent();
if (!phantomPhysicsComponent) {
- Game::logger->Log("TriggerComponent::HandlePushObject", "Phantom Physics component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandlePushObject", "Phantom Physics component not found!");
return;
}
phantomPhysicsComponent->SetPhysicsEffectActive(true);
@@ -250,7 +254,7 @@ void TriggerComponent::HandlePushObject(Entity* targetEntity, std::vectorGetComponent();
if (!phantomPhysicsComponent) {
- Game::logger->Log("TriggerComponent::HandleRepelObject", "Phantom Physics component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleRepelObject", "Phantom Physics component not found!");
return;
}
float forceMultiplier;
@@ -271,6 +275,20 @@ void TriggerComponent::HandleRepelObject(Entity* targetEntity, std::string args)
EntityManager::Instance()->SerializeEntity(m_Parent);
}
+void TriggerComponent::HandleSetTimer(Entity* targetEntity, std::vector argArray){
+ if (argArray.size() != 2) {
+ Game::logger->LogDebug("TriggerComponent::HandleSetTimer", "Not ehought variables!");
+ return;
+ }
+ float time = 0.0;
+ GeneralUtils::TryParse(argArray.at(1), time);
+ m_Parent->AddTimer(argArray.at(0), time);
+}
+
+void TriggerComponent::HandleCancelTimer(Entity* targetEntity, std::string args){
+ m_Parent->CancelTimer(args);
+}
+
void TriggerComponent::HandlePlayCinematic(Entity* targetEntity, std::vector argArray) {
float leadIn = -1.0;
auto wait = eEndBehavior::RETURN;
@@ -300,7 +318,7 @@ void TriggerComponent::HandlePlayCinematic(Entity* targetEntity, std::vectorGetCharacter();
if (!character) {
- Game::logger->Log("TriggerComponent::HandleToggleBBB", "Character was not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleToggleBBB", "Character was not found!");
return;
}
bool buildMode = !(character->GetBuildMode());
@@ -316,7 +334,7 @@ void TriggerComponent::HandleUpdateMission(Entity* targetEntity, std::vectorGetComponent();
if (!missionComponent){
- Game::logger->Log("TriggerComponent::HandleUpdateMission", "Mission component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleUpdateMission", "Mission component not found!");
return;
}
missionComponent->Progress(eMissionTaskType::EXPLORE, 0, 0, argArray.at(4));
@@ -335,7 +353,7 @@ void TriggerComponent::HandlePlayEffect(Entity* targetEntity, std::vectorGetComponent();
if (!skillComponent) {
- Game::logger->Log("TriggerComponent::HandleCastSkill", "Skill component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleCastSkill", "Skill component not found!");
return;
}
uint32_t skillId;
@@ -346,7 +364,7 @@ void TriggerComponent::HandleCastSkill(Entity* targetEntity, std::string args){
void TriggerComponent::HandleSetPhysicsVolumeEffect(Entity* targetEntity, std::vector argArray) {
auto* phantomPhysicsComponent = targetEntity->GetComponent();
if (!phantomPhysicsComponent) {
- Game::logger->Log("TriggerComponent::HandleSetPhysicsVolumeEffect", "Phantom Physics component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleSetPhysicsVolumeEffect", "Phantom Physics component not found!");
return;
}
phantomPhysicsComponent->SetPhysicsEffectActive(true);
@@ -381,7 +399,7 @@ void TriggerComponent::HandleSetPhysicsVolumeEffect(Entity* targetEntity, std::v
void TriggerComponent::HandleSetPhysicsVolumeStatus(Entity* targetEntity, std::string args) {
auto* phantomPhysicsComponent = targetEntity->GetComponent();
if (!phantomPhysicsComponent) {
- Game::logger->Log("TriggerComponent::HandleSetPhysicsVolumeEffect", "Phantom Physics component not found!");
+ Game::logger->LogDebug("TriggerComponent::HandleSetPhysicsVolumeEffect", "Phantom Physics component not found!");
return;
}
phantomPhysicsComponent->SetPhysicsEffectActive(args == "On");
diff --git a/dGame/dComponents/TriggerComponent.h b/dGame/dComponents/TriggerComponent.h
index 317da00e..df65707f 100644
--- a/dGame/dComponents/TriggerComponent.h
+++ b/dGame/dComponents/TriggerComponent.h
@@ -30,6 +30,8 @@ private:
void HandleRotateObject(Entity* targetEntity, std::vector argArray);
void HandlePushObject(Entity* targetEntity, std::vector argArray);
void HandleRepelObject(Entity* targetEntity, std::string args);
+ void HandleSetTimer(Entity* targetEntity, std::vector argArray);
+ void HandleCancelTimer(Entity* targetEntity, std::string args);
void HandlePlayCinematic(Entity* targetEntity, std::vector argArray);
void HandleToggleBBB(Entity* targetEntity, std::string args);
void HandleUpdateMission(Entity* targetEntity, std::vector argArray);
diff --git a/dGame/dComponents/VehiclePhysicsComponent.cpp b/dGame/dComponents/VehiclePhysicsComponent.cpp
index bf6a3bb7..d981acf7 100644
--- a/dGame/dComponents/VehiclePhysicsComponent.cpp
+++ b/dGame/dComponents/VehiclePhysicsComponent.cpp
@@ -11,6 +11,7 @@ VehiclePhysicsComponent::VehiclePhysicsComponent(Entity* parent) : Component(par
m_DirtyPosition = true;
m_DirtyVelocity = true;
m_DirtyAngularVelocity = true;
+ m_EndBehavior = GeneralUtils::GenerateRandomNumber(0, 7);
}
VehiclePhysicsComponent::~VehiclePhysicsComponent() {
@@ -93,7 +94,7 @@ void VehiclePhysicsComponent::Serialize(RakNet::BitStream* outBitStream, bool bI
}
if (bIsInitialUpdate) {
- outBitStream->Write(5);
+ outBitStream->Write(m_EndBehavior);
outBitStream->Write1();
}
diff --git a/dGame/dComponents/VehiclePhysicsComponent.h b/dGame/dComponents/VehiclePhysicsComponent.h
index 551cce42..64609edf 100644
--- a/dGame/dComponents/VehiclePhysicsComponent.h
+++ b/dGame/dComponents/VehiclePhysicsComponent.h
@@ -109,4 +109,5 @@ private:
bool m_IsOnRail;
float m_SoftUpdate = 0;
+ uint32_t m_EndBehavior;
};
diff --git a/dGame/dGameMessages/DoClientProjectileImpact.h b/dGame/dGameMessages/DoClientProjectileImpact.h
index 436e3dd2..6b381aa5 100644
--- a/dGame/dGameMessages/DoClientProjectileImpact.h
+++ b/dGame/dGameMessages/DoClientProjectileImpact.h
@@ -1,13 +1,10 @@
#ifndef __DOCLIENTPROJECTILEIMPACT__H__
#define __DOCLIENTPROJECTILEIMPACT__H__
-#include "dMessageIdentifiers.h"
#include "dCommonVars.h"
/* Tell a client local projectile to impact */
class DoClientProjectileImpact {
- static const GAME_MSG MsgID = GAME_MSG_DO_CLIENT_PROJECTILE_IMPACT;
-
public:
DoClientProjectileImpact() {
i64OrgID = LWOOBJID_EMPTY;
@@ -30,7 +27,7 @@ public:
}
void Serialize(RakNet::BitStream* stream) {
- stream->Write(MsgID);
+ stream->Write(eGameMessageType::DO_CLIENT_PROJECTILE_IMPACT);
stream->Write(i64OrgID != LWOOBJID_EMPTY);
if (i64OrgID != LWOOBJID_EMPTY) stream->Write(i64OrgID);
diff --git a/dGame/dGameMessages/EchoStartSkill.h b/dGame/dGameMessages/EchoStartSkill.h
index 6d912798..f5dee816 100644
--- a/dGame/dGameMessages/EchoStartSkill.h
+++ b/dGame/dGameMessages/EchoStartSkill.h
@@ -2,14 +2,12 @@
#define __ECHOSTARTSKILL__H__
#include "dCommonVars.h"
-#include "dMessageIdentifiers.h"
#include "NiPoint3.h"
#include "NiQuaternion.h"
+#include "eGameMessageType.h"
/* Same as start skill but with different network options. An echo down to other clients that need to play the skill. */
class EchoStartSkill {
- static const GAME_MSG MsgID = GAME_MSG_ECHO_START_SKILL;
-
public:
EchoStartSkill() {
bUsedMouse = false;
@@ -42,7 +40,7 @@ public:
}
void Serialize(RakNet::BitStream* stream) {
- stream->Write(MsgID);
+ stream->Write(eGameMessageType::ECHO_START_SKILL);
stream->Write(bUsedMouse);
diff --git a/dGame/dGameMessages/EchoSyncSkill.h b/dGame/dGameMessages/EchoSyncSkill.h
index b56beae8..ab5a3f2b 100644
--- a/dGame/dGameMessages/EchoSyncSkill.h
+++ b/dGame/dGameMessages/EchoSyncSkill.h
@@ -4,13 +4,11 @@
#include
#include "BitStream.h"
+#include "eGameMessageType.h"
-#include "dMessageIdentifiers.h"
/* Message to synchronize a skill cast */
class EchoSyncSkill {
- static const GAME_MSG MsgID = GAME_MSG_ECHO_SYNC_SKILL;
-
public:
EchoSyncSkill() {
bDone = false;
@@ -31,7 +29,7 @@ public:
}
void Serialize(RakNet::BitStream* stream) {
- stream->Write(MsgID);
+ stream->Write(eGameMessageType::ECHO_SYNC_SKILL);
stream->Write(bDone);
uint32_t sBitStreamLength = sBitStream.length();
diff --git a/dGame/dGameMessages/GameMessageHandler.cpp b/dGame/dGameMessages/GameMessageHandler.cpp
index c0893a09..50c7876b 100644
--- a/dGame/dGameMessages/GameMessageHandler.cpp
+++ b/dGame/dGameMessages/GameMessageHandler.cpp
@@ -33,10 +33,11 @@
#include "EchoSyncSkill.h"
#include "eMissionTaskType.h"
#include "eReplicaComponentType.h"
+#include "eConnectionType.h"
using namespace std;
-void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const SystemAddress& sysAddr, LWOOBJID objectID, GAME_MSG messageID) {
+void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const SystemAddress& sysAddr, LWOOBJID objectID, eGameMessageType messageID) {
CBITSTREAM;
@@ -53,54 +54,54 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
switch (messageID) {
- case GAME_MSG_UN_USE_BBB_MODEL: {
+ case eGameMessageType::UN_USE_BBB_MODEL: {
GameMessages::HandleUnUseModel(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_PLAY_EMOTE: {
+ case eGameMessageType::PLAY_EMOTE: {
GameMessages::HandlePlayEmote(inStream, entity);
break;
}
- case GAME_MSG_MOVE_ITEM_IN_INVENTORY: {
+ case eGameMessageType::MOVE_ITEM_IN_INVENTORY: {
GameMessages::HandleMoveItemInInventory(inStream, entity);
break;
}
- case GAME_MSG_REMOVE_ITEM_FROM_INVENTORY: {
+ case eGameMessageType::REMOVE_ITEM_FROM_INVENTORY: {
GameMessages::HandleRemoveItemFromInventory(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_EQUIP_ITEM:
+ case eGameMessageType::EQUIP_ITEM:
GameMessages::HandleEquipItem(inStream, entity);
break;
- case GAME_MSG_UN_EQUIP_ITEM:
+ case eGameMessageType::UN_EQUIP_ITEM:
GameMessages::HandleUnequipItem(inStream, entity);
break;
- case GAME_MSG_RESPOND_TO_MISSION: {
+ case eGameMessageType::RESPOND_TO_MISSION: {
GameMessages::HandleRespondToMission(inStream, entity);
break;
}
- case GAME_MSG_REQUEST_USE: {
+ case eGameMessageType::REQUEST_USE: {
GameMessages::HandleRequestUse(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_SET_FLAG: {
+ case eGameMessageType::SET_FLAG: {
GameMessages::HandleSetFlag(inStream, entity);
break;
}
- case GAME_MSG_HAS_BEEN_COLLECTED: {
+ case eGameMessageType::HAS_BEEN_COLLECTED: {
GameMessages::HandleHasBeenCollected(inStream, entity);
break;
}
- case GAME_MSG_PLAYER_LOADED: {
+ case eGameMessageType::PLAYER_LOADED: {
GameMessages::SendRestoreToPostLoadStats(entity, sysAddr);
entity->SetPlayerReadyForUpdates();
@@ -174,73 +175,73 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
break;
}
- case GAME_MSG_REQUEST_LINKED_MISSION: {
+ case eGameMessageType::REQUEST_LINKED_MISSION: {
GameMessages::HandleRequestLinkedMission(inStream, entity);
break;
}
- case GAME_MSG_MISSION_DIALOGUE_OK: {
+ case eGameMessageType::MISSION_DIALOGUE_OK: {
GameMessages::HandleMissionDialogOK(inStream, entity);
break;
}
- case GAME_MSG_MISSION_DIALOGUE_CANCELLED: {
+ case eGameMessageType::MISSION_DIALOGUE_CANCELLED: {
//This message is pointless for our implementation, as the client just carries on after
//rejecting a mission offer. We dont need to do anything. This is just here to remove a warning in our logs :)
break;
}
- case GAME_MSG_REQUEST_PLATFORM_RESYNC: {
+ case eGameMessageType::REQUEST_PLATFORM_RESYNC: {
GameMessages::HandleRequestPlatformResync(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_FIRE_EVENT_SERVER_SIDE: {
+ case eGameMessageType::FIRE_EVENT_SERVER_SIDE: {
GameMessages::HandleFireEventServerSide(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_SEND_ACTIVITY_SUMMARY_LEADERBOARD_DATA: {
+ case eGameMessageType::SEND_ACTIVITY_SUMMARY_LEADERBOARD_DATA: {
GameMessages::HandleActivitySummaryLeaderboardData(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_REQUEST_ACTIVITY_SUMMARY_LEADERBOARD_DATA: {
+ case eGameMessageType::REQUEST_ACTIVITY_SUMMARY_LEADERBOARD_DATA: {
GameMessages::HandleRequestActivitySummaryLeaderboardData(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_ACTIVITY_STATE_CHANGE_REQUEST: {
+ case eGameMessageType::ACTIVITY_STATE_CHANGE_REQUEST: {
GameMessages::HandleActivityStateChangeRequest(inStream, entity);
break;
}
- case GAME_MSG_PARSE_CHAT_MESSAGE: {
+ case eGameMessageType::PARSE_CHAT_MESSAGE: {
GameMessages::HandleParseChatMessage(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_NOTIFY_SERVER_LEVEL_PROCESSING_COMPLETE: {
+ case eGameMessageType::NOTIFY_SERVER_LEVEL_PROCESSING_COMPLETE: {
GameMessages::HandleNotifyServerLevelProcessingComplete(inStream, entity);
break;
}
- case GAME_MSG_PICKUP_CURRENCY: {
+ case eGameMessageType::PICKUP_CURRENCY: {
GameMessages::HandlePickupCurrency(inStream, entity);
break;
}
- case GAME_MSG_PICKUP_ITEM: {
+ case eGameMessageType::PICKUP_ITEM: {
GameMessages::HandlePickupItem(inStream, entity);
break;
}
- case GAME_MSG_RESURRECT: {
+ case eGameMessageType::RESURRECT: {
GameMessages::HandleResurrect(inStream, entity);
break;
}
- case GAME_MSG_REQUEST_RESURRECT: {
+ case eGameMessageType::REQUEST_RESURRECT: {
GameMessages::SendResurrect(entity);
/*auto* dest = static_cast(entity->GetComponent(eReplicaComponentType::DESTROYABLE));
if (dest) {
@@ -251,12 +252,12 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
}*/
break;
}
- case GAME_MSG_HANDLE_HOT_PROPERTY_DATA: {
+ case eGameMessageType::HANDLE_HOT_PROPERTY_DATA: {
GameMessages::HandleGetHotPropertyData(inStream, entity, sysAddr);
break;
}
- case GAME_MSG_REQUEST_SERVER_PROJECTILE_IMPACT:
+ case eGameMessageType::REQUEST_SERVER_PROJECTILE_IMPACT:
{
auto message = RequestServerProjectileImpact();
@@ -275,7 +276,7 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
break;
}
- case GAME_MSG_START_SKILL: {
+ case eGameMessageType::START_SKILL: {
StartSkill startSkill = StartSkill();
startSkill.Deserialize(inStream); // inStream replaces &bitStream
@@ -313,7 +314,7 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
if (success) {
//Broadcast our startSkill:
RakNet::BitStream bitStreamLocal;
- PacketUtils::WriteHeader(bitStreamLocal, CLIENT, MSG_CLIENT_GAME_MSG);
+ PacketUtils::WriteHeader(bitStreamLocal, eConnectionType::CLIENT, eClientMessageType::GAME_MSG);
bitStreamLocal.Write(entity->GetObjectID());
EchoStartSkill echoStartSkill;
@@ -333,11 +334,11 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
}
} break;
- case GAME_MSG_SYNC_SKILL: {
+ case eGameMessageType::SYNC_SKILL: {
RakNet::BitStream bitStreamLocal;
- PacketUtils::WriteHeader(bitStreamLocal, CLIENT, MSG_CLIENT_GAME_MSG);
+ PacketUtils::WriteHeader(bitStreamLocal, eConnectionType::CLIENT, eClientMessageType::GAME_MSG);
bitStreamLocal.Write(entity->GetObjectID());
- //bitStreamLocal.Write((unsigned short)GAME_MSG_ECHO_SYNC_SKILL);
+ //bitStreamLocal.Write((unsigned short)eGameMessageType::ECHO_SYNC_SKILL);
//bitStreamLocal.Write(inStream);
SyncSkill sync = SyncSkill(inStream); // inStream replaced &bitStream
@@ -374,306 +375,306 @@ void GameMessageHandler::HandleMessage(RakNet::BitStream* inStream, const System
Game::server->Send(&bitStreamLocal, sysAddr, true);
} break;
- case GAME_MSG_REQUEST_SMASH_PLAYER:
+ case eGameMessageType::REQUEST_SMASH_PLAYER:
entity->Smash(entity->GetObjectID());
break;
- case GAME_MSG_MOVE_ITEM_BETWEEN_INVENTORY_TYPES:
+ case eGameMessageType::MOVE_ITEM_BETWEEN_INVENTORY_TYPES:
GameMessages::HandleMoveItemBetweenInventoryTypes(inStream, entity, sysAddr);
break;
- case GAME_MSG_MODULAR_BUILD_FINISH:
+ case eGameMessageType::MODULAR_BUILD_FINISH:
GameMessages::HandleModularBuildFinish(inStream, entity, sysAddr);
break;
- case GAME_MSG_PUSH_EQUIPPED_ITEMS_STATE:
+ case eGameMessageType::PUSH_EQUIPPED_ITEMS_STATE:
GameMessages::HandlePushEquippedItemsState(inStream, entity);
break;
- case GAME_MSG_POP_EQUIPPED_ITEMS_STATE:
+ case eGameMessageType::POP_EQUIPPED_ITEMS_STATE:
GameMessages::HandlePopEquippedItemsState(inStream, entity);
break;
- case GAME_MSG_BUY_FROM_VENDOR:
+ case eGameMessageType::BUY_FROM_VENDOR:
GameMessages::HandleBuyFromVendor(inStream, entity, sysAddr);
break;
- case GAME_MSG_SELL_TO_VENDOR:
+ case eGameMessageType::SELL_TO_VENDOR:
GameMessages::HandleSellToVendor(inStream, entity, sysAddr);
break;
- case GAME_MSG_BUYBACK_FROM_VENDOR:
+ case eGameMessageType::BUYBACK_FROM_VENDOR:
GameMessages::HandleBuybackFromVendor(inStream, entity, sysAddr);
break;
- case GAME_MSG_MODULAR_BUILD_MOVE_AND_EQUIP:
+ case eGameMessageType::MODULAR_BUILD_MOVE_AND_EQUIP:
GameMessages::HandleModularBuildMoveAndEquip(inStream, entity, sysAddr);
break;
- case GAME_MSG_DONE_ARRANGING_WITH_ITEM:
+ case eGameMessageType::DONE_ARRANGING_WITH_ITEM:
GameMessages::HandleDoneArrangingWithItem(inStream, entity, sysAddr);
break;
- case GAME_MSG_MODULAR_BUILD_CONVERT_MODEL:
+ case eGameMessageType::MODULAR_BUILD_CONVERT_MODEL:
GameMessages::HandleModularBuildConvertModel(inStream, entity, sysAddr);
break;
- case GAME_MSG_BUILD_MODE_SET:
+ case eGameMessageType::BUILD_MODE_SET:
GameMessages::HandleBuildModeSet(inStream, entity);
break;
- case GAME_MSG_REBUILD_CANCEL:
+ case eGameMessageType::REBUILD_CANCEL:
GameMessages::HandleRebuildCancel(inStream, entity);
break;
- case GAME_MSG_MATCH_REQUEST:
+ case eGameMessageType::MATCH_REQUEST:
GameMessages::HandleMatchRequest(inStream, entity);
break;
- case GAME_MSG_USE_NON_EQUIPMENT_ITEM:
+ case eGameMessageType::USE_NON_EQUIPMENT_ITEM:
GameMessages::HandleUseNonEquipmentItem(inStream, entity);
break;
- case GAME_MSG_CLIENT_ITEM_CONSUMED:
+ case eGameMessageType::CLIENT_ITEM_CONSUMED:
GameMessages::HandleClientItemConsumed(inStream, entity);
break;
- case GAME_MSG_SET_CONSUMABLE_ITEM:
+ case eGameMessageType::SET_CONSUMABLE_ITEM:
GameMessages::HandleSetConsumableItem(inStream, entity, sysAddr);
break;
- case GAME_MSG_VERIFY_ACK:
+ case eGameMessageType::VERIFY_ACK:
GameMessages::HandleVerifyAck(inStream, entity, sysAddr);
break;
// Trading
- case GAME_MSG_CLIENT_TRADE_REQUEST:
+ case eGameMessageType::CLIENT_TRADE_REQUEST:
GameMessages::HandleClientTradeRequest(inStream, entity, sysAddr);
break;
- case GAME_MSG_CLIENT_TRADE_CANCEL:
+ case eGameMessageType::CLIENT_TRADE_CANCEL:
GameMessages::HandleClientTradeCancel(inStream, entity, sysAddr);
break;
- case GAME_MSG_CLIENT_TRADE_ACCEPT:
+ case eGameMessageType::CLIENT_TRADE_ACCEPT:
GameMessages::HandleClientTradeAccept(inStream, entity, sysAddr);
break;
- case GAME_MSG_CLIENT_TRADE_UPDATE:
+ case eGameMessageType::CLIENT_TRADE_UPDATE:
GameMessages::HandleClientTradeUpdate(inStream, entity, sysAddr);
break;
// Pets
- case GAME_MSG_PET_TAMING_TRY_BUILD:
+ case eGameMessageType::PET_TAMING_TRY_BUILD:
GameMessages::HandlePetTamingTryBuild(inStream, entity, sysAddr);
break;
- case GAME_MSG_NOTIFY_TAMING_BUILD_SUCCESS:
+ case eGameMessageType::NOTIFY_TAMING_BUILD_SUCCESS:
GameMessages::HandleNotifyTamingBuildSuccess(inStream, entity, sysAddr);
break;
- case GAME_MSG_REQUEST_SET_PET_NAME:
+ case eGameMessageType::REQUEST_SET_PET_NAME:
GameMessages::HandleRequestSetPetName(inStream, entity, sysAddr);
break;
- case GAME_MSG_START_SERVER_PET_MINIGAME_TIMER:
+ case eGameMessageType::START_SERVER_PET_MINIGAME_TIMER:
GameMessages::HandleStartServerPetMinigameTimer(inStream, entity, sysAddr);
break;
- case GAME_MSG_CLIENT_EXIT_TAMING_MINIGAME:
+ case eGameMessageType::CLIENT_EXIT_TAMING_MINIGAME:
GameMessages::HandleClientExitTamingMinigame(inStream, entity, sysAddr);
break;
- case GAME_MSG_COMMAND_PET:
+ case eGameMessageType::COMMAND_PET:
GameMessages::HandleCommandPet(inStream, entity, sysAddr);
break;
- case GAME_MSG_DESPAWN_PET:
+ case eGameMessageType::DESPAWN_PET:
GameMessages::HandleDespawnPet(inStream, entity, sysAddr);
break;
- case GAME_MSG_MESSAGE_BOX_RESPOND:
+ case eGameMessageType::MESSAGE_BOX_RESPOND:
GameMessages::HandleMessageBoxResponse(inStream, entity, sysAddr);
break;
- case GAME_MSG_CHOICE_BOX_RESPOND:
+ case eGameMessageType::CHOICE_BOX_RESPOND:
GameMessages::HandleChoiceBoxRespond(inStream, entity, sysAddr);
break;
// Property
- case GAME_MSG_QUERY_PROPERTY_DATA:
+ case eGameMessageType::QUERY_PROPERTY_DATA:
GameMessages::HandleQueryPropertyData(inStream, entity, sysAddr);
break;
- case GAME_MSG_START_BUILDING_WITH_ITEM:
+ case eGameMessageType::START_BUILDING_WITH_ITEM:
GameMessages::HandleStartBuildingWithItem(inStream, entity, sysAddr);
break;
- case GAME_MSG_SET_BUILD_MODE:
+ case eGameMessageType::SET_BUILD_MODE:
GameMessages::HandleSetBuildMode(inStream, entity, sysAddr);
break;
- case GAME_MSG_PROPERTY_EDITOR_BEGIN:
+ case eGameMessageType::PROPERTY_EDITOR_BEGIN:
GameMessages::HandlePropertyEditorBegin(inStream, entity, sysAddr);
break;
- case GAME_MSG_PROPERTY_EDITOR_END:
+ case eGameMessageType::PROPERTY_EDITOR_END:
GameMessages::HandlePropertyEditorEnd(inStream, entity, sysAddr);
break;
- case GAME_MSG_PROPERTY_CONTENTS_FROM_CLIENT:
+ case eGameMessageType::PROPERTY_CONTENTS_FROM_CLIENT:
GameMessages::HandlePropertyContentsFromClient(inStream, entity, sysAddr);
break;
- case GAME_MSG_ZONE_PROPERTY_MODEL_EQUIPPED:
+ case eGameMessageType::ZONE_PROPERTY_MODEL_EQUIPPED:
GameMessages::HandlePropertyModelEquipped(inStream, entity, sysAddr);
break;
- case GAME_MSG_PLACE_PROPERTY_MODEL:
+ case eGameMessageType::PLACE_PROPERTY_MODEL:
GameMessages::HandlePlacePropertyModel(inStream, entity, sysAddr);
break;
- case GAME_MSG_UPDATE_MODEL_FROM_CLIENT:
+ case eGameMessageType::UPDATE_MODEL_FROM_CLIENT:
GameMessages::HandleUpdatePropertyModel(inStream, entity, sysAddr);
break;
- case GAME_MSG_DELETE_MODEL_FROM_CLIENT:
+ case eGameMessageType::DELETE_MODEL_FROM_CLIENT:
GameMessages::HandleDeletePropertyModel(inStream, entity, sysAddr);
break;
- case GAME_MSG_BBB_LOAD_ITEM_REQUEST:
+ case eGameMessageType::BBB_LOAD_ITEM_REQUEST:
GameMessages::HandleBBBLoadItemRequest(inStream, entity, sysAddr);
break;
- case GAME_MSG_BBB_SAVE_REQUEST:
+ case eGameMessageType::BBB_SAVE_REQUEST:
GameMessages::HandleBBBSaveRequest(inStream, entity, sysAddr);
break;
- case GAME_MSG_CONTROL_BEHAVIOR:
+ case eGameMessageType::CONTROL_BEHAVIOR:
GameMessages::HandleControlBehaviors(inStream, entity, sysAddr);
break;
- case GAME_MSG_PROPERTY_ENTRANCE_SYNC:
+ case eGameMessageType::PROPERTY_ENTRANCE_SYNC:
GameMessages::HandlePropertyEntranceSync(inStream, entity, sysAddr);
break;
- case GAME_MSG_ENTER_PROPERTY1:
+ case eGameMessageType::ENTER_PROPERTY1:
GameMessages::HandleEnterProperty(inStream, entity, sysAddr);
break;
- case GAME_MSG_ZONE_PROPERTY_MODEL_ROTATED:
+ case eGameMessageType::ZONE_PROPERTY_MODEL_ROTATED:
EntityManager::Instance()->GetZoneControlEntity()->OnZonePropertyModelRotated(usr->GetLastUsedChar()->GetEntity());
break;
- case GAME_MSG_UPDATE_PROPERTY_OR_MODEL_FOR_FILTER_CHECK:
+ case eGameMessageType::UPDATE_PROPERTY_OR_MODEL_FOR_FILTER_CHECK:
GameMessages::HandleUpdatePropertyOrModelForFilterCheck(inStream, entity, sysAddr);
break;
- case GAME_MSG_SET_PROPERTY_ACCESS:
+ case eGameMessageType::SET_PROPERTY_ACCESS:
GameMessages::HandleSetPropertyAccess(inStream, entity, sysAddr);
break;
// Racing
- case GAME_MSG_MODULE_ASSEMBLY_QUERY_DATA:
+ case eGameMessageType::MODULE_ASSEMBLY_QUERY_DATA:
GameMessages::HandleModuleAssemblyQueryData(inStream, entity, sysAddr);
break;
- case GAME_MSG_ACKNOWLEDGE_POSSESSION:
+ case eGameMessageType::ACKNOWLEDGE_POSSESSION:
GameMessages::HandleAcknowledgePossession(inStream, entity, sysAddr);
break;
- case GAME_MSG_VEHICLE_SET_WHEEL_LOCK_STATE:
+ case eGameMessageType::VEHICLE_SET_WHEEL_LOCK_STATE:
GameMessages::HandleVehicleSetWheelLockState(inStream, entity, sysAddr);
break;
- case GAME_MSG_MODULAR_ASSEMBLY_NIF_COMPLETED:
+ case eGameMessageType::MODULAR_ASSEMBLY_NIF_COMPLETED:
GameMessages::HandleModularAssemblyNIFCompleted(inStream, entity, sysAddr);
break;
- case GAME_MSG_RACING_CLIENT_READY:
+ case eGameMessageType::RACING_CLIENT_READY:
GameMessages::HandleRacingClientReady(inStream, entity, sysAddr);
break;
- case GAME_MSG_REQUEST_DIE:
+ case eGameMessageType::REQUEST_DIE:
GameMessages::HandleRequestDie(inStream, entity, sysAddr);
break;
- case GAME_MSG_VEHICLE_NOTIFY_SERVER_ADD_PASSIVE_BOOST_ACTION:
+ case eGameMessageType::VEHICLE_NOTIFY_SERVER_ADD_PASSIVE_BOOST_ACTION:
GameMessages::HandleVehicleNotifyServerAddPassiveBoostAction(inStream, entity, sysAddr);
break;
- case GAME_MSG_VEHICLE_NOTIFY_SERVER_REMOVE_PASSIVE_BOOST_ACTION:
+ case eGameMessageType::VEHICLE_NOTIFY_SERVER_REMOVE_PASSIVE_BOOST_ACTION:
GameMessages::HandleVehicleNotifyServerRemovePassiveBoostAction(inStream, entity, sysAddr);
break;
- case GAME_MSG_RACING_PLAYER_INFO_RESET_FINISHED:
+ case eGameMessageType::RACING_PLAYER_INFO_RESET_FINISHED:
GameMessages::HandleRacingPlayerInfoResetFinished(inStream, entity, sysAddr);
break;
- case GAME_MSG_VEHICLE_NOTIFY_HIT_IMAGINATION_SERVER:
+ case eGameMessageType::VEHICLE_NOTIFY_HIT_IMAGINATION_SERVER:
GameMessages::HandleVehicleNotifyHitImaginationServer(inStream, entity, sysAddr);
break;
- case GAME_MSG_UPDATE_PROPERTY_PERFORMANCE_COST:
+ case eGameMessageType::UPDATE_PROPERTY_PERFORMANCE_COST:
GameMessages::HandleUpdatePropertyPerformanceCost(inStream, entity, sysAddr);
break;
// SG
- case GAME_MSG_UPDATE_SHOOTING_GALLERY_ROTATION:
+ case eGameMessageType::UPDATE_SHOOTING_GALLERY_ROTATION:
GameMessages::HandleUpdateShootingGalleryRotation(inStream, entity, sysAddr);
break;
// NT
- case GAME_MSG_REQUEST_MOVE_ITEM_BETWEEN_INVENTORY_TYPES:
+ case eGameMessageType::REQUEST_MOVE_ITEM_BETWEEN_INVENTORY_TYPES:
GameMessages::HandleRequestMoveItemBetweenInventoryTypes(inStream, entity, sysAddr);
break;
- case GAME_MSG_TOGGLE_GHOST_REFERENCE_OVERRIDE:
+ case eGameMessageType::TOGGLE_GHOST_REFERENCE_OVERRIDE:
GameMessages::HandleToggleGhostReferenceOverride(inStream, entity, sysAddr);
break;
- case GAME_MSG_SET_GHOST_REFERENCE_POSITION:
+ case eGameMessageType::SET_GHOST_REFERENCE_POSITION:
GameMessages::HandleSetGhostReferencePosition(inStream, entity, sysAddr);
break;
- case GAME_MSG_READY_FOR_UPDATES:
+ case eGameMessageType::READY_FOR_UPDATES:
//We don't really care about this message, as it's simply here to inform us that the client is done loading an object.
//In the event we _do_ send an update to an object that hasn't finished loading, the client will handle it anyway.
break;
- case GAME_MSG_REPORT_BUG:
+ case eGameMessageType::REPORT_BUG:
GameMessages::HandleReportBug(inStream, entity);
break;
- case GAME_MSG_CLIENT_RAIL_MOVEMENT_READY:
+ case eGameMessageType::CLIENT_RAIL_MOVEMENT_READY:
GameMessages::HandleClientRailMovementReady(inStream, entity, sysAddr);
break;
- case GAME_MSG_CANCEL_RAIL_MOVEMENT:
+ case eGameMessageType::CANCEL_RAIL_MOVEMENT:
GameMessages::HandleCancelRailMovement(inStream, entity, sysAddr);
break;
- case GAME_MSG_PLAYER_RAIL_ARRIVED_NOTIFICATION:
+ case eGameMessageType::PLAYER_RAIL_ARRIVED_NOTIFICATION:
GameMessages::HandlePlayerRailArrivedNotification(inStream, entity, sysAddr);
break;
- case GAME_MSG_CINEMATIC_UPDATE:
+ case eGameMessageType::CINEMATIC_UPDATE:
GameMessages::HandleCinematicUpdate(inStream, entity, sysAddr);
break;
- case GAME_MSG_MODIFY_PLAYER_ZONE_STATISTIC:
+ case eGameMessageType::MODIFY_PLAYER_ZONE_STATISTIC:
GameMessages::HandleModifyPlayerZoneStatistic(inStream, entity);
break;
- case GAME_MSG_UPDATE_PLAYER_STATISTIC:
+ case eGameMessageType::UPDATE_PLAYER_STATISTIC:
GameMessages::HandleUpdatePlayerStatistic(inStream, entity);
break;
- case GAME_MSG_DISMOUNT_COMPLETE:
+ case eGameMessageType::DISMOUNT_COMPLETE:
GameMessages::HandleDismountComplete(inStream, entity, sysAddr);
break;
- case GAME_MSG_DEACTIVATE_BUBBLE_BUFF:
+ case eGameMessageType::DEACTIVATE_BUBBLE_BUFF:
GameMessages::HandleDeactivateBubbleBuff(inStream, entity);
break;
- case GAME_MSG_ACTIVATE_BUBBLE_BUFF:
+ case eGameMessageType::ACTIVATE_BUBBLE_BUFF:
GameMessages::HandleActivateBubbleBuff(inStream, entity);
break;
- case GAME_MSG_ZONE_SUMMARY_DISMISSED:
+ case eGameMessageType::ZONE_SUMMARY_DISMISSED:
GameMessages::HandleZoneSummaryDismissed(inStream, entity);
break;
default:
diff --git a/dGame/dGameMessages/GameMessageHandler.h b/dGame/dGameMessages/GameMessageHandler.h
index 063e97f6..8b6685cb 100644
--- a/dGame/dGameMessages/GameMessageHandler.h
+++ b/dGame/dGameMessages/GameMessageHandler.h
@@ -7,7 +7,6 @@
#define GAMEMESSAGEHANDLER_H
#include "RakNetTypes.h"
-#include "dMessageIdentifiers.h"
#include "dCommonVars.h"
#include
#include
@@ -21,8 +20,10 @@
#include "GameMessages.h"
#include "../dDatabase/CDClientDatabase.h"
+enum class eGameMessageType : uint16_t;
+
namespace GameMessageHandler {
- void HandleMessage(RakNet::BitStream* inStream, const SystemAddress& sysAddr, LWOOBJID objectID, GAME_MSG messageID);
+ void HandleMessage(RakNet::BitStream* inStream, const SystemAddress& sysAddr, LWOOBJID objectID, eGameMessageType messageID);
};
#endif // GAMEMESSAGEHANDLER_H
diff --git a/dGame/dGameMessages/GameMessages.cpp b/dGame/dGameMessages/GameMessages.cpp
index bf7476e9..caab6459 100644
--- a/dGame/dGameMessages/GameMessages.cpp
+++ b/dGame/dGameMessages/GameMessages.cpp
@@ -4,7 +4,6 @@
#include "PacketUtils.h"
#include "BitStream.h"
#include "Game.h"
-#include "dMessageIdentifiers.h"
#include "SlashCommandHandler.h"
#include "NiPoint3.h"
#include "NiQuaternion.h"
@@ -34,7 +33,15 @@
#include "eRacingTaskParam.h"
#include "eMissionTaskType.h"
#include "eMissionState.h"
+#include "eObjectBits.h"
#include "eTriggerEventType.h"
+#include "eMatchUpdate.h"
+#include "eCyclingMode.h"
+#include "eCinematicEvent.h"
+#include "eQuickBuildFailReason.h"
+#include "eControlScheme.h"
+#include "eStateChangeType.h"
+#include "eConnectionType.h"
#include
#include
@@ -82,6 +89,8 @@
#include "eAninmationFlags.h"
#include "AMFFormat_BitStream.h"
#include "eReplicaComponentType.h"
+#include "eClientMessageType.h"
+#include "eGameMessageType.h"
#include "CDComponentsRegistryTable.h"
#include "CDObjectsTable.h"
@@ -91,7 +100,7 @@ void GameMessages::SendFireEventClientSide(const LWOOBJID& objectID, const Syste
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_FIRE_EVENT_CLIENT_SIDE);
+ bitStream.Write(eGameMessageType::FIRE_EVENT_CLIENT_SIDE);
//bitStream.Write(args);
uint32_t argSize = args.size();
@@ -113,7 +122,7 @@ void GameMessages::SendTeleport(const LWOOBJID& objectID, const NiPoint3& pos, c
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_TELEPORT);
+ bitStream.Write(eGameMessageType::TELEPORT);
bool bIgnoreY = (pos.y == 0.0f);
bool bUseNavmesh = false;
@@ -151,7 +160,6 @@ void GameMessages::SendPlayAnimation(Entity* entity, const std::u16string& anima
//Stolen from the old DLU codebase as the new one's autogenerated code doesn't work properly for animationIDs longer than 6 characters.
CBITSTREAM;
CMSGHEADER;
- uint16_t gameMsgID = GAME_MSG_PLAY_ANIMATION;
std::string sAnimationID = GeneralUtils::UTF16ToWTF8(animationName);
uint32_t animationIDLength = sAnimationID.size();
@@ -160,7 +168,7 @@ void GameMessages::SendPlayAnimation(Entity* entity, const std::u16string& anima
bool bTriggerOnCompleteMsg = false;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(gameMsgID);
+ bitStream.Write(eGameMessageType::PLAY_ANIMATION);
bitStream.Write(animationIDLength);
PacketUtils::WriteWString(bitStream, animationName, animationIDLength);
@@ -184,7 +192,7 @@ void GameMessages::SendPlayerReady(Entity* entity, const SystemAddress& sysAddr)
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_PLAYER_READY);
+ bitStream.Write(eGameMessageType::PLAYER_READY);
SEND_PACKET;
}
@@ -193,7 +201,7 @@ void GameMessages::SendPlayerAllowedRespawn(LWOOBJID entityID, bool doNotPromptR
CMSGHEADER;
bitStream.Write(entityID);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_PLAYER_ALLOWED_RESPAWN);
+ bitStream.Write(eGameMessageType::SET_PLAYER_ALLOWED_RESPAWN);
bitStream.Write(doNotPromptRespawn);
SEND_PACKET;
@@ -204,7 +212,7 @@ void GameMessages::SendInvalidZoneTransferList(Entity* entity, const SystemAddre
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_INVALID_ZONE_TRANSFER_LIST);
+ bitStream.Write(eGameMessageType::INVALID_ZONE_TRANSFER_LIST);
uint32_t CustomerFeedbackURLLength = feedbackURL.size();
bitStream.Write(CustomerFeedbackURLLength);
@@ -229,7 +237,7 @@ void GameMessages::SendKnockback(const LWOOBJID& objectID, const LWOOBJID& caste
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG_KNOCKBACK);
+ bitStream.Write(eGameMessageType::KNOCKBACK);
bool casterFlag = caster != LWOOBJID_EMPTY;
bool originatorFlag = originator != LWOOBJID_EMPTY;
@@ -265,7 +273,7 @@ void GameMessages::SendStartArrangingWithItem(
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_START_ARRANGING_WITH_ITEM);
+ bitStream.Write(eGameMessageType::START_ARRANGING_WITH_ITEM);
bitStream.Write(bFirstTime);
bitStream.Write(buildAreaID != LWOOBJID_EMPTY);
@@ -289,13 +297,13 @@ void GameMessages::SendPlayerSetCameraCyclingMode(const LWOOBJID& objectID, cons
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG_PLAYER_SET_CAMERA_CYCLING_MODE);
+ bitStream.Write(eGameMessageType::PLAYER_SET_CAMERA_CYCLING_MODE);
bitStream.Write(bAllowCyclingWhileDeadOnly);
- bitStream.Write(cyclingMode != ALLOW_CYCLE_TEAMMATES);
- if (cyclingMode != ALLOW_CYCLE_TEAMMATES) {
- bitStream.Write(cyclingMode);
+ bitStream.Write(cyclingMode != eCyclingMode::ALLOW_CYCLE_TEAMMATES);
+ if (cyclingMode != eCyclingMode::ALLOW_CYCLE_TEAMMATES) {
+ bitStream.Write(cyclingMode);
}
SEND_PACKET;
@@ -306,7 +314,7 @@ void GameMessages::SendPlayNDAudioEmitter(Entity* entity, const SystemAddress& s
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_PLAY_ND_AUDIO_EMITTER);
+ bitStream.Write((uint16_t)eGameMessageType::PLAY_ND_AUDIO_EMITTER);
bitStream.Write0();
bitStream.Write0();
@@ -335,7 +343,7 @@ void GameMessages::SendStartPathing(Entity* entity) {
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG_START_PATHING);
+ bitStream.Write(eGameMessageType::START_PATHING);
SEND_PACKET_BROADCAST;
}
@@ -357,7 +365,7 @@ void GameMessages::SendPlatformResync(Entity* entity, const SystemAddress& sysAd
}
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_PLATFORM_RESYNC);
+ bitStream.Write((uint16_t)eGameMessageType::PLATFORM_RESYNC);
bool bReverse = false;
int eCommand = 0;
@@ -398,7 +406,7 @@ void GameMessages::SendRestoreToPostLoadStats(Entity* entity, const SystemAddres
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_RESTORE_TO_POST_LOAD_STATS);
+ bitStream.Write(eGameMessageType::RESTORE_TO_POST_LOAD_STATS);
SEND_PACKET;
}
@@ -406,7 +414,7 @@ void GameMessages::SendServerDoneLoadingAllObjects(Entity* entity, const SystemA
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_DONE_LOADING_ALL_OBJECTS);
+ bitStream.Write(eGameMessageType::SERVER_DONE_LOADING_ALL_OBJECTS);
SEND_PACKET;
}
@@ -414,7 +422,7 @@ void GameMessages::SendChatModeUpdate(const LWOOBJID& objectID, eGameMasterLevel
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write((uint16_t)GAME_MSG_UPDATE_CHAT_MODE);
+ bitStream.Write((uint16_t)eGameMessageType::UPDATE_CHAT_MODE);
bitStream.Write(level);
SEND_PACKET_BROADCAST;
}
@@ -423,7 +431,7 @@ void GameMessages::SendGMLevelBroadcast(const LWOOBJID& objectID, eGameMasterLev
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write((uint16_t)GAME_MSG_SET_GM_LEVEL);
+ bitStream.Write((uint16_t)eGameMessageType::SET_GM_LEVEL);
bitStream.Write1();
bitStream.Write(level);
SEND_PACKET_BROADCAST;
@@ -434,13 +442,13 @@ void GameMessages::SendAddItemToInventoryClientSync(Entity* entity, const System
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(static_cast(GAME_MSG_ADD_ITEM_TO_INVENTORY_CLIENT_SYNC));
+ bitStream.Write(eGameMessageType::ADD_ITEM_TO_INVENTORY_CLIENT_SYNC);
bitStream.Write(item->GetBound());
bitStream.Write(item->GetInfo().isBOE);
bitStream.Write(item->GetInfo().isBOP);
- bitStream.Write(lootSourceType != eLootSourceType::LOOT_SOURCE_NONE); // Loot source
- if (lootSourceType != eLootSourceType::LOOT_SOURCE_NONE) bitStream.Write(lootSourceType);
+ bitStream.Write(lootSourceType != eLootSourceType::NONE); // Loot source
+ if (lootSourceType != eLootSourceType::NONE) bitStream.Write(lootSourceType);
LWONameValue extraInfo;
auto config = item->GetConfig();
@@ -488,24 +496,24 @@ void GameMessages::SendAddItemToInventoryClientSync(Entity* entity, const System
SEND_PACKET;
}
-void GameMessages::SendNotifyClientFlagChange(const LWOOBJID& objectID, int iFlagID, bool bFlag, const SystemAddress& sysAddr) {
+void GameMessages::SendNotifyClientFlagChange(const LWOOBJID& objectID, uint32_t iFlagID, bool bFlag, const SystemAddress& sysAddr) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write((uint16_t)GAME_MSG_NOTIFY_CLIENT_FLAG_CHANGE);
+ bitStream.Write((uint16_t)eGameMessageType::NOTIFY_CLIENT_FLAG_CHANGE);
bitStream.Write(bFlag);
bitStream.Write(iFlagID);
SEND_PACKET;
}
-void GameMessages::SendChangeObjectWorldState(const LWOOBJID& objectID, int state, const SystemAddress& sysAddr) {
+void GameMessages::SendChangeObjectWorldState(const LWOOBJID& objectID, eObjectWorldState state, const SystemAddress& sysAddr) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write((uint16_t)GAME_MSG_CHANGE_OBJECT_WORLD_STATE);
+ bitStream.Write((uint16_t)eGameMessageType::CHANGE_OBJECT_WORLD_STATE);
bitStream.Write(state);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST
@@ -523,7 +531,7 @@ void GameMessages::SendOfferMission(const LWOOBJID& entity, const SystemAddress&
CMSGHEADER;
bitStream.Write(offererID);
- bitStream.Write(uint16_t(GAME_MSG_OFFER_MISSION));
+ bitStream.Write(eGameMessageType::OFFER_MISSION);
bitStream.Write(missionID);
bitStream.Write(offererID);
@@ -534,7 +542,7 @@ void GameMessages::SendOfferMission(const LWOOBJID& entity, const SystemAddress&
CMSGHEADER;
bitStream.Write(entity);
- bitStream.Write(uint16_t(GAME_MSG_OFFER_MISSION));
+ bitStream.Write(eGameMessageType::OFFER_MISSION);
bitStream.Write(missionID);
bitStream.Write(offererID);
@@ -547,7 +555,7 @@ void GameMessages::SendNotifyMission(Entity* entity, const SystemAddress& sysAdd
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_NOTIFY_MISSION));
+ bitStream.Write(eGameMessageType::NOTIFY_MISSION);
bitStream.Write(missionID);
bitStream.Write(missionState);
bitStream.Write(sendingRewards);
@@ -560,7 +568,7 @@ void GameMessages::SendNotifyMissionTask(Entity* entity, const SystemAddress& sy
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_NOTIFY_MISSION_TASK);
+ bitStream.Write((uint16_t)eGameMessageType::NOTIFY_MISSION_TASK);
bitStream.Write(missionID);
bitStream.Write(taskMask);
@@ -578,11 +586,11 @@ void GameMessages::SendModifyLEGOScore(Entity* entity, const SystemAddress& sysA
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_MODIFY_LEGO_SCORE);
+ bitStream.Write((uint16_t)eGameMessageType::MODIFY_LEGO_SCORE);
bitStream.Write(score);
- bitStream.Write(sourceType != eLootSourceType::LOOT_SOURCE_NONE);
- if (sourceType != eLootSourceType::LOOT_SOURCE_NONE) bitStream.Write(sourceType);
+ bitStream.Write(sourceType != eLootSourceType::NONE);
+ if (sourceType != eLootSourceType::NONE) bitStream.Write(sourceType);
SEND_PACKET;
}
@@ -592,7 +600,7 @@ void GameMessages::SendUIMessageServerToSingleClient(Entity* entity, const Syste
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_UI_MESSAGE_SERVER_TO_SINGLE_CLIENT);
+ bitStream.Write((uint16_t)eGameMessageType::UI_MESSAGE_SERVER_TO_SINGLE_CLIENT);
bitStream.Write(args);
uint32_t strMessageNameLength = message.size();
@@ -611,7 +619,7 @@ void GameMessages::SendUIMessageServerToAllClients(const std::string& message, A
LWOOBJID empty = 0;
bitStream.Write(empty);
- bitStream.Write((uint16_t)GAME_MSG_UI_MESSAGE_SERVER_TO_ALL_CLIENTS);
+ bitStream.Write((uint16_t)eGameMessageType::UI_MESSAGE_SERVER_TO_ALL_CLIENTS);
bitStream.Write(args);
uint32_t strMessageNameLength = message.size();
@@ -629,7 +637,7 @@ void GameMessages::SendPlayEmbeddedEffectOnAllClientsNearObject(Entity* entity,
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_PLAY_EMBEDDED_EFFECT_ON_ALL_CLIENTS_NEAR_OBJECT);
+ bitStream.Write((uint16_t)eGameMessageType::PLAY_EMBEDDED_EFFECT_ON_ALL_CLIENTS_NEAR_OBJECT);
bitStream.Write(static_cast(effectName.length()));
for (uint32_t k = 0; k < effectName.length(); k++) {
@@ -650,7 +658,7 @@ void GameMessages::SendPlayFXEffect(const LWOOBJID& entity, int32_t effectID, co
CMSGHEADER;
bitStream.Write(entity);
- bitStream.Write((uint16_t)GAME_MSG::GAME_MSG_PLAY_FX_EFFECT);
+ bitStream.Write((uint16_t)eGameMessageType::PLAY_FX_EFFECT);
bitStream.Write(effectID != -1);
if (effectID != -1) bitStream.Write(effectID);
@@ -684,7 +692,7 @@ void GameMessages::SendStopFXEffect(Entity* entity, bool killImmediate, std::str
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_STOP_FX_EFFECT);
+ bitStream.Write(eGameMessageType::STOP_FX_EFFECT);
bitStream.Write(killImmediate);
bitStream.Write(name.size());
@@ -698,7 +706,7 @@ void GameMessages::SendBroadcastTextToChatbox(Entity* entity, const SystemAddres
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG::GAME_MSG_BROADCAST_TEXT_TO_CHATBOX);
+ bitStream.Write((uint16_t)eGameMessageType::BROADCAST_TEXT_TO_CHATBOX);
LWONameValue attribs;
attribs.name = attrs;
@@ -724,7 +732,7 @@ void GameMessages::SendSetCurrency(Entity* entity, int64_t currency, int lootTyp
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_SET_CURRENCY));
+ bitStream.Write(eGameMessageType::SET_CURRENCY);
bitStream.Write(currency);
@@ -742,19 +750,19 @@ void GameMessages::SendSetCurrency(Entity* entity, int64_t currency, int lootTyp
bitStream.Write(sourceTradeID != LWOOBJID_EMPTY);
if (sourceTradeID != LWOOBJID_EMPTY) bitStream.Write(sourceTradeID);
- bitStream.Write(sourceType != LOOTTYPE_NONE);
- if (sourceType != LOOTTYPE_NONE) bitStream.Write(sourceType);
+ bitStream.Write(sourceType != eLootSourceType::NONE);
+ if (sourceType != eLootSourceType::NONE) bitStream.Write(sourceType);
SystemAddress sysAddr = entity->GetSystemAddress();
SEND_PACKET;
}
-void GameMessages::SendRebuildNotifyState(Entity* entity, int prevState, int state, const LWOOBJID& playerID) {
+void GameMessages::SendRebuildNotifyState(Entity* entity, eRebuildState prevState, eRebuildState state, const LWOOBJID& playerID) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_REBUILD_NOTIFY_STATE);
+ bitStream.Write((uint16_t)eGameMessageType::REBUILD_NOTIFY_STATE);
bitStream.Write(prevState);
bitStream.Write(state);
@@ -763,19 +771,19 @@ void GameMessages::SendRebuildNotifyState(Entity* entity, int prevState, int sta
SEND_PACKET_BROADCAST;
}
-void GameMessages::SendEnableRebuild(Entity* entity, bool enable, bool fail, bool success, int failReason, float duration, const LWOOBJID& playerID) {
+void GameMessages::SendEnableRebuild(Entity* entity, bool enable, bool fail, bool success, eQuickBuildFailReason failReason, float duration, const LWOOBJID& playerID) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_ENABLE_REBUILD);
+ bitStream.Write((uint16_t)eGameMessageType::ENABLE_REBUILD);
bitStream.Write(enable);
bitStream.Write(fail);
bitStream.Write(success);
- bitStream.Write(failReason != eFailReason::REASON_NOT_GIVEN);
- if (failReason != eFailReason::REASON_NOT_GIVEN) bitStream.Write(failReason);
+ bitStream.Write(failReason != eQuickBuildFailReason::NOT_GIVEN);
+ if (failReason != eQuickBuildFailReason::NOT_GIVEN) bitStream.Write(failReason);
bitStream.Write(duration);
bitStream.Write(playerID);
@@ -788,7 +796,7 @@ void GameMessages::SendTerminateInteraction(const LWOOBJID& objectID, eTerminate
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write((uint16_t)GAME_MSG_TERMINATE_INTERACTION);
+ bitStream.Write((uint16_t)eGameMessageType::TERMINATE_INTERACTION);
bitStream.Write(terminator);
bitStream.Write(type);
@@ -801,7 +809,7 @@ void GameMessages::SendDieNoImplCode(Entity* entity, const LWOOBJID& killerID, c
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_DIE));
+ bitStream.Write(eGameMessageType::DIE);
bitStream.Write(bClientDeath);
bitStream.Write(bSpawnLoot);
bitStream.Write(deathType);
@@ -824,7 +832,7 @@ void GameMessages::SendDie(Entity* entity, const LWOOBJID& killerID, const LWOOB
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_DIE);
+ bitStream.Write((uint16_t)eGameMessageType::DIE);
bitStream.Write(bClientDeath);
bitStream.Write(bSpawnLoot);
@@ -842,8 +850,8 @@ void GameMessages::SendDie(Entity* entity, const LWOOBJID& killerID, const LWOOB
bitStream.Write(directionRelative_AngleY);
bitStream.Write(directionRelative_Force);
- bitStream.Write(killType != VIOLENT);
- if (killType != VIOLENT) bitStream.Write(killType);
+ bitStream.Write(killType != eKillType::VIOLENT);
+ if (killType != eKillType::VIOLENT) bitStream.Write(killType);
bitStream.Write(killerID);
@@ -860,7 +868,7 @@ void GameMessages::SendSetInventorySize(Entity* entity, int invType, int size) {
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_SET_INVENTORY_SIZE));
+ bitStream.Write(eGameMessageType::SET_INVENTORY_SIZE);
bitStream.Write(invType);
bitStream.Write(size);
@@ -873,7 +881,7 @@ void GameMessages::SendSetEmoteLockState(Entity* entity, bool bLock, int emoteID
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_SET_EMOTE_LOCK_STATE));
+ bitStream.Write(eGameMessageType::SET_EMOTE_LOCK_STATE);
bitStream.Write(bLock);
bitStream.Write(emoteID);
@@ -894,7 +902,7 @@ void GameMessages::SendSetJetPackMode(Entity* entity, bool use, bool bypassCheck
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_SET_JET_PACK_MODE));
+ bitStream.Write(eGameMessageType::SET_JET_PACK_MODE);
bitStream.Write(bypassChecks);
bitStream.Write(doHover);
@@ -930,8 +938,13 @@ void GameMessages::SendResurrect(Entity* entity) {
if (destroyableComponent != nullptr && entity->GetLOT() == 1) {
auto* levelComponent = entity->GetComponent();
if (levelComponent) {
- destroyableComponent->SetHealth(levelComponent->GetLevel() >= 45 ? 8 : 4);
- destroyableComponent->SetImagination(levelComponent->GetLevel() >= 45 ? 20 : 6);
+ int32_t healthToRestore = levelComponent->GetLevel() >= 45 ? 8 : 4;
+ if (healthToRestore > destroyableComponent->GetMaxHealth()) healthToRestore = destroyableComponent->GetMaxHealth();
+ destroyableComponent->SetHealth(healthToRestore);
+
+ int32_t imaginationToRestore = levelComponent->GetLevel() >= 45 ? 20 : 6;
+ if (imaginationToRestore > destroyableComponent->GetMaxImagination()) imaginationToRestore = destroyableComponent->GetMaxImagination();
+ destroyableComponent->SetImagination(imaginationToRestore);
}
}
});
@@ -949,7 +962,7 @@ void GameMessages::SendResurrect(Entity* entity) {
bool bRezImmediately = false;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_RESURRECT));
+ bitStream.Write(eGameMessageType::RESURRECT);
bitStream.Write(bRezImmediately);
SEND_PACKET_BROADCAST;
@@ -960,7 +973,7 @@ void GameMessages::SendStop2DAmbientSound(Entity* entity, bool force, std::strin
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_PLAY2_DAMBIENT_SOUND);
+ bitStream.Write((uint16_t)eGameMessageType::PLAY2_DAMBIENT_SOUND);
uint32_t audioGUIDSize = audioGUID.size();
@@ -983,7 +996,7 @@ void GameMessages::SendPlay2DAmbientSound(Entity* entity, std::string audioGUID,
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_PLAY2_DAMBIENT_SOUND);
+ bitStream.Write((uint16_t)eGameMessageType::PLAY2_DAMBIENT_SOUND);
uint32_t audioGUIDSize = audioGUID.size();
@@ -1002,7 +1015,7 @@ void GameMessages::SendSetNetworkScriptVar(Entity* entity, const SystemAddress&
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_SET_NETWORK_SCRIPT_VAR);
+ bitStream.Write((uint16_t)eGameMessageType::SET_NETWORK_SCRIPT_VAR);
// FIXME: this is a bad place to need to do a conversion because we have no clue whether data is utf8 or plain ascii
// an this has performance implications
@@ -1061,7 +1074,7 @@ void GameMessages::SendDropClientLoot(Entity* entity, const LWOOBJID& sourceID,
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_DROP_CLIENT_LOOT));
+ bitStream.Write(eGameMessageType::DROP_CLIENT_LOOT);
bitStream.Write(bUsePosition);
@@ -1103,7 +1116,7 @@ void GameMessages::SendDropClientLoot(Entity* entity, const LWOOBJID& sourceID,
SEND_PACKET;
}
-void GameMessages::SendSetPlayerControlScheme(Entity* entity, eControlSceme controlScheme) {
+void GameMessages::SendSetPlayerControlScheme(Entity* entity, eControlScheme controlScheme) {
CBITSTREAM;
CMSGHEADER;
@@ -1111,13 +1124,13 @@ void GameMessages::SendSetPlayerControlScheme(Entity* entity, eControlSceme cont
bool bSwitchCam = true;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(uint16_t(GAME_MSG_SET_PLAYER_CONTROL_SCHEME));
+ bitStream.Write(eGameMessageType::SET_PLAYER_CONTROL_SCHEME);
bitStream.Write(bDelayCamSwitchIfInCinematic);
bitStream.Write(bSwitchCam);
- bitStream.Write(controlScheme != SCHEME_A);
- if (controlScheme != SCHEME_A) bitStream.Write(controlScheme);
+ bitStream.Write(controlScheme != eControlScheme::SCHEME_A);
+ if (controlScheme != eControlScheme::SCHEME_A) bitStream.Write(controlScheme);
SystemAddress sysAddr = entity->GetSystemAddress();
SEND_PACKET;
@@ -1128,7 +1141,7 @@ void GameMessages::SendPlayerReachedRespawnCheckpoint(Entity* entity, const NiPo
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_PLAYER_REACHED_RESPAWN_CHECKPOINT);
+ bitStream.Write((uint16_t)eGameMessageType::PLAYER_REACHED_RESPAWN_CHECKPOINT);
bitStream.Write(position.x);
bitStream.Write(position.y);
@@ -1162,7 +1175,7 @@ void GameMessages::SendAddSkill(Entity* entity, TSkillID skillID, int slotID) {
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write((uint16_t)GAME_MSG_ADD_SKILL);
+ bitStream.Write((uint16_t)eGameMessageType::ADD_SKILL);
bitStream.Write(AICombatWeight != 0);
if (AICombatWeight != 0) bitStream.Write(AICombatWeight);
@@ -1194,7 +1207,7 @@ void GameMessages::SendRemoveSkill(Entity* entity, TSkillID skillID) {
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG_REMOVE_SKILL);
+ bitStream.Write(eGameMessageType::REMOVE_SKILL);
bitStream.Write(false);
bitStream.Write(skillID);
@@ -1223,7 +1236,7 @@ void GameMessages::SendFinishArrangingWithItem(Entity* entity, const LWOOBJID& b
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_FINISH_ARRANGING_WITH_ITEM);
+ bitStream.Write(eGameMessageType::FINISH_ARRANGING_WITH_ITEM);
bitStream.Write(buildAreaID != LWOOBJID_EMPTY);
if (buildAreaID != LWOOBJID_EMPTY) bitStream.Write(buildAreaID);
@@ -1249,7 +1262,7 @@ void GameMessages::SendModularBuildEnd(Entity* entity) {
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_MODULAR_BUILD_END);
+ bitStream.Write(eGameMessageType::MODULAR_BUILD_END);
SystemAddress sysAddr = entity->GetSystemAddress();
SEND_PACKET;
@@ -1260,7 +1273,7 @@ void GameMessages::SendVendorOpenWindow(Entity* entity, const SystemAddress& sys
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_VENDOR_OPEN_WINDOW);
+ bitStream.Write(eGameMessageType::VENDOR_OPEN_WINDOW);
SEND_PACKET;
}
@@ -1275,7 +1288,7 @@ void GameMessages::SendVendorStatusUpdate(Entity* entity, const SystemAddress& s
std::map vendorItems = vendor->GetInventory();
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_VENDOR_STATUS_UPDATE);
+ bitStream.Write(eGameMessageType::VENDOR_STATUS_UPDATE);
bitStream.Write(bUpdateOnly);
bitStream.Write(static_cast(vendorItems.size()));
@@ -1296,7 +1309,7 @@ void GameMessages::SendVendorTransactionResult(Entity* entity, const SystemAddre
int iResult = 0x02; // success, seems to be the only relevant one
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_VENDOR_TRANSACTION_RESULT);
+ bitStream.Write(eGameMessageType::VENDOR_TRANSACTION_RESULT);
bitStream.Write(iResult);
SEND_PACKET;
@@ -1322,7 +1335,7 @@ void GameMessages::SendRemoveItemFromInventory(Entity* entity, const SystemAddre
LWOOBJID iTradeID = LWOOBJID_EMPTY;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_REMOVE_ITEM_FROM_INVENTORY);
+ bitStream.Write(eGameMessageType::REMOVE_ITEM_FROM_INVENTORY);
bitStream.Write(bConfirmed);
bitStream.Write(bDeleteItem);
bitStream.Write(bOutSuccess);
@@ -1354,7 +1367,7 @@ void GameMessages::SendConsumeClientItem(Entity* entity, bool bSuccess, LWOOBJID
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG_CONSUME_CLIENT_ITEM);
+ bitStream.Write(eGameMessageType::CONSUME_CLIENT_ITEM);
bitStream.Write(bSuccess);
bitStream.Write(item);
@@ -1367,7 +1380,7 @@ void GameMessages::SendUseItemResult(Entity* entity, LOT templateID, bool useIte
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG_USE_ITEM_RESULT);
+ bitStream.Write(eGameMessageType::USE_ITEM_RESULT);
bitStream.Write(templateID);
bitStream.Write(useItemResult);
@@ -1375,12 +1388,12 @@ void GameMessages::SendUseItemResult(Entity* entity, LOT templateID, bool useIte
SEND_PACKET;
}
-void GameMessages::SendUseItemRequirementsResponse(LWOOBJID objectID, const SystemAddress& sysAddr, UseItemResponse itemResponse) {
+void GameMessages::SendUseItemRequirementsResponse(LWOOBJID objectID, const SystemAddress& sysAddr, eUseItemResponse itemResponse) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_USE_ITEM_REQUIREMENTS_RESPONSE);
+ bitStream.Write(eGameMessageType::USE_ITEM_REQUIREMENTS_RESPONSE);
bitStream.Write(itemResponse);
@@ -1442,18 +1455,18 @@ void GameMessages::SendMatchResponse(Entity* entity, const SystemAddress& sysAdd
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_MATCH_RESPONSE);
+ bitStream.Write(eGameMessageType::MATCH_RESPONSE);
bitStream.Write(response);
SEND_PACKET;
}
-void GameMessages::SendMatchUpdate(Entity* entity, const SystemAddress& sysAddr, std::string data, int type) {
+void GameMessages::SendMatchUpdate(Entity* entity, const SystemAddress& sysAddr, std::string data, eMatchUpdate type) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_MATCH_UPDATE);
+ bitStream.Write(eGameMessageType::MATCH_UPDATE);
bitStream.Write(uint32_t(data.size()));
for (char character : data) {
bitStream.Write(uint16_t(character));
@@ -1472,7 +1485,7 @@ void GameMessages::SendRequestActivitySummaryLeaderboardData(const LWOOBJID& obj
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_REQUEST_ACTIVITY_SUMMARY_LEADERBOARD_DATA);
+ bitStream.Write(eGameMessageType::REQUEST_ACTIVITY_SUMMARY_LEADERBOARD_DATA);
bitStream.Write(gameID != 0);
if (gameID != 0) {
@@ -1505,7 +1518,7 @@ void GameMessages::SendActivityPause(LWOOBJID objectId, bool pause, const System
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ACTIVITY_PAUSE);
+ bitStream.Write(eGameMessageType::ACTIVITY_PAUSE);
bitStream.Write(pause);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
@@ -1517,7 +1530,7 @@ void GameMessages::SendStartActivityTime(LWOOBJID objectId, float_t startTime, c
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_START_ACTIVITY_TIME);
+ bitStream.Write(eGameMessageType::START_ACTIVITY_TIME);
bitStream.Write(startTime);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
@@ -1529,7 +1542,7 @@ void GameMessages::SendRequestActivityEnter(LWOOBJID objectId, const SystemAddre
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_REQUEST_ACTIVITY_ENTER);
+ bitStream.Write(eGameMessageType::REQUEST_ACTIVITY_ENTER);
bitStream.Write(bStart);
bitStream.Write(userID);
@@ -1542,7 +1555,7 @@ void GameMessages::NotifyLevelRewards(LWOOBJID objectID, const SystemAddress& sy
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write((uint16_t)GAME_MSG::GAME_MSG_NOTIFY_LEVEL_REWARDS);
+ bitStream.Write((uint16_t)eGameMessageType::NOTIFY_LEVEL_REWARDS);
bitStream.Write(level);
bitStream.Write(sending_rewards);
@@ -1563,7 +1576,7 @@ void GameMessages::SendSetShootingGalleryParams(LWOOBJID objectId, const SystemA
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_SHOOTING_GALLERY_PARAMS);
+ bitStream.Write(eGameMessageType::SET_SHOOTING_GALLERY_PARAMS);
/*
bitStream.Write(cameraFOV);
bitStream.Write(cooldown);
@@ -1598,7 +1611,7 @@ void GameMessages::SendNotifyClientShootingGalleryScore(LWOOBJID objectId, const
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_CLIENT_SHOOTING_GALLERY_SCORE);
+ bitStream.Write(eGameMessageType::NOTIFY_CLIENT_SHOOTING_GALLERY_SCORE);
bitStream.Write(addTime);
bitStream.Write(score);
bitStream.Write(target);
@@ -1629,7 +1642,7 @@ void GameMessages::SendActivitySummaryLeaderboardData(const LWOOBJID& objectID,
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_SEND_ACTIVITY_SUMMARY_LEADERBOARD_DATA);
+ bitStream.Write(eGameMessageType::SEND_ACTIVITY_SUMMARY_LEADERBOARD_DATA);
bitStream.Write(leaderboard->GetGameID());
bitStream.Write(leaderboard->GetInfoType());
@@ -1708,7 +1721,7 @@ void GameMessages::SendStartCelebrationEffect(Entity* entity, const SystemAddres
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_START_CELEBRATION_EFFECT);
+ bitStream.Write(eGameMessageType::START_CELEBRATION_EFFECT);
bitStream.Write(0); //animation
bitStream.Write0(); //No custom bg obj
@@ -1739,7 +1752,7 @@ void GameMessages::SendSetRailMovement(const LWOOBJID& objectID, bool pathGoForw
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_RAIL_MOVEMENT);
+ bitStream.Write(eGameMessageType::SET_RAIL_MOVEMENT);
bitStream.Write(pathGoForward);
@@ -1773,7 +1786,7 @@ void GameMessages::SendStartRailMovement(const LWOOBJID& objectID, std::u16strin
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_START_RAIL_MOVEMENT);
+ bitStream.Write(eGameMessageType::START_RAIL_MOVEMENT);
bitStream.Write(damageImmune);
bitStream.Write(noAggro);
@@ -1833,7 +1846,7 @@ void GameMessages::SendNotifyClientObject(const LWOOBJID& objectID, std::u16stri
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_CLIENT_OBJECT);
+ bitStream.Write(eGameMessageType::NOTIFY_CLIENT_OBJECT);
bitStream.Write(uint32_t(name.size()));
for (auto character : name) {
@@ -1862,7 +1875,7 @@ void GameMessages::SendNotifyClientZoneObject(const LWOOBJID& objectID, const st
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_CLIENT_ZONE_OBJECT);
+ bitStream.Write(eGameMessageType::NOTIFY_CLIENT_ZONE_OBJECT);
bitStream.Write(uint32_t(name.size()));
for (const auto& character : name) {
@@ -1888,7 +1901,7 @@ void GameMessages::SendNotifyClientFailedPrecondition(LWOOBJID objectId, const S
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_CLIENT_FAILED_PRECONDITION);
+ bitStream.Write(eGameMessageType::NOTIFY_CLIENT_FAILED_PRECONDITION);
bitStream.Write(uint32_t(failedReason.size()));
for (uint16_t character : failedReason) {
@@ -1906,7 +1919,7 @@ void GameMessages::SendToggleGMInvis(LWOOBJID objectId, bool enabled, const Syst
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_TOGGLE_GM_INVIS);
+ bitStream.Write(eGameMessageType::TOGGLE_GM_INVIS);
bitStream.Write(enabled); // does not matter?
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
@@ -1918,7 +1931,7 @@ void GameMessages::SendSetName(LWOOBJID objectID, std::u16string name, const Sys
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_NAME);
+ bitStream.Write(eGameMessageType::SET_NAME);
bitStream.Write(name.size());
@@ -1934,7 +1947,7 @@ void GameMessages::SendBBBSaveResponse(const LWOOBJID& objectId, const LWOOBJID&
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_BBB_SAVE_RESPONSE);
+ bitStream.Write(eGameMessageType::BBB_SAVE_RESPONSE);
bitStream.Write(localID);
@@ -1951,7 +1964,7 @@ void GameMessages::SendBBBSaveResponse(const LWOOBJID& objectId, const LWOOBJID&
bitStream.Write(buffer[i]);
SEND_PACKET;
- PacketUtils::SavePacket("GAME_MSG_BBB_SAVE_RESPONSE.bin", (char*)bitStream.GetData(), bitStream.GetNumberOfBytesUsed());
+ PacketUtils::SavePacket("eGameMessageType::BBB_SAVE_RESPONSE.bin", (char*)bitStream.GetData(), bitStream.GetNumberOfBytesUsed());
}
// Property
@@ -1961,7 +1974,7 @@ void GameMessages::SendOpenPropertyVendor(const LWOOBJID objectId, const SystemA
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_OPEN_PROPERTY_VENDOR);
+ bitStream.Write(eGameMessageType::OPEN_PROPERTY_VENDOR);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -1972,7 +1985,7 @@ void GameMessages::SendOpenPropertyManagment(const LWOOBJID objectId, const Syst
CMSGHEADER;
bitStream.Write(PropertyManagementComponent::Instance()->GetParent()->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_OPEN_PROPERTY_MANAGEMENT);
+ bitStream.Write(eGameMessageType::OPEN_PROPERTY_MANAGEMENT);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -1983,7 +1996,7 @@ void GameMessages::SendDownloadPropertyData(const LWOOBJID objectId, const Prope
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_DOWNLOAD_PROPERTY_DATA);
+ bitStream.Write(eGameMessageType::DOWNLOAD_PROPERTY_DATA);
data.Serialize(bitStream);
@@ -1998,7 +2011,7 @@ void GameMessages::SendPropertyRentalResponse(const LWOOBJID objectId, const LWO
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PROPERTY_RENTAL_RESPONSE);
+ bitStream.Write(eGameMessageType::PROPERTY_RENTAL_RESPONSE);
bitStream.Write(cloneId);
bitStream.Write(code);
@@ -2014,7 +2027,7 @@ void GameMessages::SendLockNodeRotation(Entity* entity, std::string nodeName) {
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_LOCK_NODE_ROTATION);
+ bitStream.Write(eGameMessageType::LOCK_NODE_ROTATION);
bitStream.Write(uint32_t(nodeName.size()));
for (char character : nodeName) {
@@ -2029,7 +2042,7 @@ void GameMessages::SendSetBuildModeConfirmed(LWOOBJID objectId, const SystemAddr
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_BUILD_MODE_CONFIRMED);
+ bitStream.Write(eGameMessageType::SET_BUILD_MODE_CONFIRMED);
bitStream.Write(start);
bitStream.Write(warnVisitors);
@@ -2049,7 +2062,7 @@ void GameMessages::SendGetModelsOnProperty(LWOOBJID objectId, std::map(models.size()));
@@ -2069,7 +2082,7 @@ void GameMessages::SendZonePropertyModelEquipped(LWOOBJID objectId, LWOOBJID pla
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ZONE_PROPERTY_MODEL_EQUIPPED);
+ bitStream.Write(eGameMessageType::ZONE_PROPERTY_MODEL_EQUIPPED);
bitStream.Write(playerId);
bitStream.Write(propertyId);
@@ -2084,7 +2097,7 @@ void GameMessages::SendPlaceModelResponse(LWOOBJID objectId, const SystemAddress
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PLACE_MODEL_RESPONSE);
+ bitStream.Write(eGameMessageType::PLACE_MODEL_RESPONSE);
bitStream.Write(position != NiPoint3::ZERO);
if (position != NiPoint3::ZERO) {
@@ -2116,7 +2129,7 @@ void GameMessages::SendUGCEquipPreCreateBasedOnEditMode(LWOOBJID objectId, const
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_HANDLE_UGC_EQUIP_PRE_CREATE_BASED_ON_EDIT_MODE);
+ bitStream.Write(eGameMessageType::HANDLE_UGC_EQUIP_PRE_CREATE_BASED_ON_EDIT_MODE);
bitStream.Write(modelCount);
bitStream.Write(model);
@@ -2130,7 +2143,7 @@ void GameMessages::SendUGCEquipPostDeleteBasedOnEditMode(LWOOBJID objectId, cons
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_HANDLE_UGC_EQUIP_POST_DELETE_BASED_ON_EDIT_MODE);
+ bitStream.Write(eGameMessageType::HANDLE_UGC_EQUIP_POST_DELETE_BASED_ON_EDIT_MODE);
bitStream.Write(inventoryItem);
@@ -2180,7 +2193,7 @@ void GameMessages::HandleUnUseModel(RakNet::BitStream* inStream, Entity* entity,
if (unknown) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_BLUEPRINT_SAVE_RESPONSE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::BLUEPRINT_SAVE_RESPONSE);
bitStream.Write(LWOOBJID_EMPTY); //always zero so that a check on the client passes
bitStream.Write(eBlueprintSaveResponseType::PlacementFailed); // Sending a non-zero error code here prevents the client from deleting its in progress build for some reason?
bitStream.Write(0);
@@ -2432,7 +2445,7 @@ void GameMessages::HandleBBBLoadItemRequest(RakNet::BitStream* inStream, Entity*
void GameMessages::SendBlueprintLoadItemResponse(const SystemAddress& sysAddr, bool success, LWOOBJID oldItemId, LWOOBJID newItemId) {
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CLIENT, MSG_CLIENT_BLUEPRINT_LOAD_RESPONSE_ITEMID);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::BLUEPRINT_LOAD_RESPONSE_ITEMID);
bitStream.Write(static_cast(success));
bitStream.Write(oldItemId);
bitStream.Write(newItemId);
@@ -2444,7 +2457,7 @@ void GameMessages::SendSmash(Entity* entity, float force, float ghostOpacity, LW
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_SMASH);
+ bitStream.Write(eGameMessageType::SMASH);
bitStream.Write(ignoreObjectVisibility);
bitStream.Write(force);
@@ -2459,7 +2472,7 @@ void GameMessages::SendUnSmash(Entity* entity, LWOOBJID builderID, float duratio
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_UNSMASH);
+ bitStream.Write(eGameMessageType::UNSMASH);
bitStream.Write(builderID != LWOOBJID_EMPTY);
if (builderID != LWOOBJID_EMPTY) bitStream.Write(builderID);
@@ -2570,19 +2583,19 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
//We runs this in async because the http library here is blocking, meaning it'll halt the thread.
//But we don't want the server to go unresponsive, because then the client would disconnect.
- std::async(std::launch::async, [&]() {
+ auto returnVal = std::async(std::launch::async, [&]() {
//We need to get a new ID for our model first:
ObjectIDManager::Instance()->RequestPersistentID([=](uint32_t newID) {
LWOOBJID newIDL = newID;
- newIDL = GeneralUtils::SetBit(newIDL, OBJECT_BIT_CHARACTER);
- newIDL = GeneralUtils::SetBit(newIDL, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(newIDL, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(newIDL, eObjectBits::PERSISTENT);
ObjectIDManager::Instance()->RequestPersistentID([=](uint32_t blueprintIDSmall) {
blueprintIDSmall = ObjectIDManager::Instance()->GenerateRandomObjectID();
LWOOBJID blueprintID = blueprintIDSmall;
- blueprintID = GeneralUtils::SetBit(blueprintID, OBJECT_BIT_CHARACTER);
- blueprintID = GeneralUtils::SetBit(blueprintID, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(blueprintID, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(blueprintID, eObjectBits::PERSISTENT);
//We need to get the propertyID: (stolen from Wincent's propertyManagementComp)
const auto& worldId = dZoneManager::Instance()->GetZone()->GetZoneID();
@@ -2680,7 +2693,7 @@ void GameMessages::HandleBBBSaveRequest(RakNet::BitStream* inStream, Entity* ent
//Tell the client their model is saved: (this causes us to actually pop out of our current state):
CBITSTREAM;
- PacketUtils::WriteHeader(bitStream, CLIENT, CLIENT::MSG_CLIENT_BLUEPRINT_SAVE_RESPONSE);
+ PacketUtils::WriteHeader(bitStream, eConnectionType::CLIENT, eClientMessageType::BLUEPRINT_SAVE_RESPONSE);
bitStream.Write(localId);
bitStream.Write(eBlueprintSaveResponseType::EverythingWorked);
bitStream.Write(1);
@@ -2820,7 +2833,7 @@ void GameMessages::SendPlayCinematic(LWOOBJID objectId, std::u16string pathName,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PLAY_CINEMATIC);
+ bitStream.Write(eGameMessageType::PLAY_CINEMATIC);
bitStream.Write(allowGhostUpdates);
bitStream.Write(bCloseMultiInteract);
@@ -2859,7 +2872,7 @@ void GameMessages::SendEndCinematic(LWOOBJID objectId, std::u16string pathName,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_END_CINEMATIC);
+ bitStream.Write(eGameMessageType::END_CINEMATIC);
bitStream.Write(leadOut != -1);
if (leadOut != -1) bitStream.Write(leadOut);
@@ -2878,7 +2891,7 @@ void GameMessages::SendEndCinematic(LWOOBJID objectId, std::u16string pathName,
void GameMessages::HandleCinematicUpdate(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr) {
eCinematicEvent event;
if (!inStream->ReadBit()) {
- event = STARTED;
+ event = eCinematicEvent::STARTED;
} else {
inStream->Read(event);
}
@@ -2932,7 +2945,7 @@ void GameMessages::SendSetStunned(LWOOBJID objectId, eStateChangeType stateChang
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_STUNNED);
+ bitStream.Write(eGameMessageType::SET_STUNNED);
bitStream.Write(originator != LWOOBJID_EMPTY);
if (originator != LWOOBJID_EMPTY) bitStream.Write(originator);
@@ -2981,7 +2994,7 @@ void GameMessages::SendSetStunImmunity(LWOOBJID target, eStateChangeType state,
CMSGHEADER;
bitStream.Write(target);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_STUN_IMMUNITY);
+ bitStream.Write(eGameMessageType::SET_STUN_IMMUNITY);
bitStream.Write(originator != LWOOBJID_EMPTY);
if (originator != LWOOBJID_EMPTY) bitStream.Write(originator);
@@ -3014,7 +3027,7 @@ void GameMessages::SendSetStatusImmunity(LWOOBJID objectId, eStateChangeType sta
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_STATUS_IMMUNITY);
+ bitStream.Write(eGameMessageType::SET_STATUS_IMMUNITY);
bitStream.Write(state);
@@ -3037,7 +3050,7 @@ void GameMessages::SendOrientToAngle(LWOOBJID objectId, bool bRelativeToCurrent,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ORIENT_TO_ANGLE);
+ bitStream.Write(eGameMessageType::ORIENT_TO_ANGLE);
bitStream.Write(bRelativeToCurrent);
bitStream.Write(fAngle);
@@ -3052,7 +3065,7 @@ void GameMessages::SendAddRunSpeedModifier(LWOOBJID objectId, LWOOBJID caster, u
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ADD_RUN_SPEED_MODIFIER);
+ bitStream.Write(eGameMessageType::ADD_RUN_SPEED_MODIFIER);
bitStream.Write(caster != LWOOBJID_EMPTY);
if (caster != LWOOBJID_EMPTY) bitStream.Write(caster);
@@ -3069,7 +3082,7 @@ void GameMessages::SendRemoveRunSpeedModifier(LWOOBJID objectId, uint32_t modifi
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_REMOVE_RUN_SPEED_MODIFIER);
+ bitStream.Write(eGameMessageType::REMOVE_RUN_SPEED_MODIFIER);
bitStream.Write(modifier != 500);
if (modifier != 500) bitStream.Write(modifier);
@@ -3083,7 +3096,7 @@ void GameMessages::SendPropertyEntranceBegin(LWOOBJID objectId, const SystemAddr
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PROPERTY_ENTRANCE_BEGIN);
+ bitStream.Write(eGameMessageType::PROPERTY_ENTRANCE_BEGIN);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -3094,7 +3107,7 @@ void GameMessages::SendPropertySelectQuery(LWOOBJID objectId, int32_t navOffset,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PROPERTY_SELECT_QUERY);
+ bitStream.Write(eGameMessageType::PROPERTY_SELECT_QUERY);
bitStream.Write(navOffset);
bitStream.Write(thereAreMore);
@@ -3117,7 +3130,7 @@ void GameMessages::SendNotifyObject(LWOOBJID objectId, LWOOBJID objIDSender, std
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_OBJECT);
+ bitStream.Write(eGameMessageType::NOTIFY_OBJECT);
bitStream.Write(objIDSender);
bitStream.Write(static_cast(name.size()));
@@ -3157,7 +3170,7 @@ void GameMessages::SendTeamPickupItem(LWOOBJID objectId, LWOOBJID lootID, LWOOBJ
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_TEAM_PICKUP_ITEM);
+ bitStream.Write(eGameMessageType::TEAM_PICKUP_ITEM);
bitStream.Write(lootID);
bitStream.Write(lootOwnerID);
@@ -3173,7 +3186,7 @@ void GameMessages::SendServerTradeInvite(LWOOBJID objectId, bool bNeedInvitePopU
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_TRADE_INVITE);
+ bitStream.Write(eGameMessageType::SERVER_TRADE_INVITE);
bitStream.Write(bNeedInvitePopUp);
bitStream.Write(i64Requestor);
@@ -3191,7 +3204,7 @@ void GameMessages::SendServerTradeInitialReply(LWOOBJID objectId, LWOOBJID i64In
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_TRADE_INITIAL_REPLY);
+ bitStream.Write(eGameMessageType::SERVER_TRADE_INITIAL_REPLY);
bitStream.Write(i64Invitee);
bitStream.Write(resultType);
@@ -3209,7 +3222,7 @@ void GameMessages::SendServerTradeFinalReply(LWOOBJID objectId, bool bResult, LW
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_TRADE_FINAL_REPLY);
+ bitStream.Write(eGameMessageType::SERVER_TRADE_FINAL_REPLY);
bitStream.Write(bResult);
bitStream.Write(i64Invitee);
@@ -3227,7 +3240,7 @@ void GameMessages::SendServerTradeAccept(LWOOBJID objectId, bool bFirst, const S
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_TRADE_ACCEPT);
+ bitStream.Write(eGameMessageType::SERVER_TRADE_ACCEPT);
bitStream.Write(bFirst);
@@ -3240,7 +3253,7 @@ void GameMessages::SendServerTradeCancel(LWOOBJID objectId, const SystemAddress&
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_TRADE_CANCEL);
+ bitStream.Write(eGameMessageType::SERVER_TRADE_CANCEL);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -3251,7 +3264,7 @@ void GameMessages::SendServerTradeUpdate(LWOOBJID objectId, uint64_t coins, cons
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SERVER_TRADE_UPDATE);
+ bitStream.Write(eGameMessageType::SERVER_TRADE_UPDATE);
bitStream.Write(false);
bitStream.Write(coins);
@@ -3424,12 +3437,12 @@ void GameMessages::HandleClientTradeUpdate(RakNet::BitStream* inStream, Entity*
//Pets:
-void GameMessages::SendNotifyPetTamingMinigame(LWOOBJID objectId, LWOOBJID petId, LWOOBJID playerTamingId, bool bForceTeleport, uint32_t notifyType, NiPoint3 petsDestPos, NiPoint3 telePos, NiQuaternion teleRot, const SystemAddress& sysAddr) {
+void GameMessages::SendNotifyPetTamingMinigame(LWOOBJID objectId, LWOOBJID petId, LWOOBJID playerTamingId, bool bForceTeleport, ePetTamingNotifyType notifyType, NiPoint3 petsDestPos, NiPoint3 telePos, NiQuaternion teleRot, const SystemAddress& sysAddr) {
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_PET_TAMING_MINIGAME);
+ bitStream.Write(eGameMessageType::NOTIFY_PET_TAMING_MINIGAME);
bitStream.Write(petId);
bitStream.Write(playerTamingId);
@@ -3451,7 +3464,7 @@ void GameMessages::SendNotifyTamingModelLoadedOnServer(LWOOBJID objectId, const
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_TAMING_MODEL_LOADED_ON_SERVER);
+ bitStream.Write(eGameMessageType::NOTIFY_TAMING_MODEL_LOADED_ON_SERVER);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -3462,7 +3475,7 @@ void GameMessages::SendNotifyPetTamingPuzzleSelected(LWOOBJID objectId, std::vec
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_PET_TAMING_PUZZLE_SELECTED);
+ bitStream.Write(eGameMessageType::NOTIFY_PET_TAMING_PUZZLE_SELECTED);
bitStream.Write(static_cast(bricks.size()));
for (const auto& brick : bricks) {
@@ -3479,7 +3492,7 @@ void GameMessages::SendPetTamingTryBuildResult(LWOOBJID objectId, bool bSuccess,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PET_TAMING_TRY_BUILD_RESULT);
+ bitStream.Write(eGameMessageType::PET_TAMING_TRY_BUILD_RESULT);
bitStream.Write(bSuccess);
bitStream.Write(iNumCorrect != 0);
@@ -3494,7 +3507,7 @@ void GameMessages::SendPetResponse(LWOOBJID objectId, LWOOBJID objIDPet, int32_t
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PET_RESPONSE);
+ bitStream.Write(eGameMessageType::PET_RESPONSE);
bitStream.Write(objIDPet);
bitStream.Write(iPetCommandType);
@@ -3510,7 +3523,7 @@ void GameMessages::SendAddPetToPlayer(LWOOBJID objectId, int32_t iElementalType,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ADD_PET_TO_PLAYER);
+ bitStream.Write(eGameMessageType::ADD_PET_TO_PLAYER);
bitStream.Write(iElementalType);
bitStream.Write(static_cast(name.size()));
@@ -3530,7 +3543,7 @@ void GameMessages::SendRegisterPetID(LWOOBJID objectId, LWOOBJID objID, const Sy
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_REGISTER_PET_ID);
+ bitStream.Write(eGameMessageType::REGISTER_PET_ID);
bitStream.Write(objID);
@@ -3543,7 +3556,7 @@ void GameMessages::SendRegisterPetDBID(LWOOBJID objectId, LWOOBJID petDBID, cons
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_REGISTER_PET_DBID);
+ bitStream.Write(eGameMessageType::REGISTER_PET_DBID);
bitStream.Write(petDBID);
@@ -3556,7 +3569,7 @@ void GameMessages::SendMarkInventoryItemAsActive(LWOOBJID objectId, bool bActive
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_MARK_INVENTORY_ITEM_AS_ACTIVE);
+ bitStream.Write(eGameMessageType::MARK_INVENTORY_ITEM_AS_ACTIVE);
bitStream.Write(bActive);
@@ -3575,7 +3588,7 @@ void GameMessages::SendClientExitTamingMinigame(LWOOBJID objectId, bool bVolunta
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_CLIENT_EXIT_TAMING_MINIGAME);
+ bitStream.Write(eGameMessageType::CLIENT_EXIT_TAMING_MINIGAME);
bitStream.Write(bVoluntaryExit);
@@ -3588,7 +3601,7 @@ void GameMessages::SendShowPetActionButton(LWOOBJID objectId, int32_t buttonLabe
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SHOW_PET_ACTION_BUTTON);
+ bitStream.Write(eGameMessageType::SHOW_PET_ACTION_BUTTON);
bitStream.Write(buttonLabel);
bitStream.Write(bShow);
@@ -3602,7 +3615,7 @@ void GameMessages::SendPlayEmote(LWOOBJID objectId, int32_t emoteID, LWOOBJID ta
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PLAY_EMOTE);
+ bitStream.Write(eGameMessageType::PLAY_EMOTE);
bitStream.Write(emoteID);
bitStream.Write(target);
@@ -3616,7 +3629,7 @@ void GameMessages::SendRemoveBuff(Entity* entity, bool fromUnEquip, bool removeI
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_REMOVE_BUFF);
+ bitStream.Write(eGameMessageType::REMOVE_BUFF);
bitStream.Write(false); // bFromRemoveBehavior but setting this to true makes the GM not do anything on the client?
bitStream.Write(fromUnEquip);
@@ -3631,7 +3644,7 @@ void GameMessages::SendBouncerActiveStatus(LWOOBJID objectId, bool bActive, cons
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_BOUNCER_ACTIVE_STATUS);
+ bitStream.Write(eGameMessageType::BOUNCER_ACTIVE_STATUS);
bitStream.Write(bActive);
@@ -3645,7 +3658,7 @@ void GameMessages::SendSetPetName(LWOOBJID objectId, std::u16string name, LWOOBJ
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_PET_NAME);
+ bitStream.Write(eGameMessageType::SET_PET_NAME);
bitStream.Write(static_cast(name.size()));
for (const auto character : name) {
@@ -3665,7 +3678,7 @@ void GameMessages::SendSetPetNameModerated(LWOOBJID objectId, LWOOBJID petDBID,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_PET_NAME_MODERATED);
+ bitStream.Write(eGameMessageType::SET_PET_NAME_MODERATED);
bitStream.Write(petDBID != LWOOBJID_EMPTY);
if (petDBID != LWOOBJID_EMPTY) bitStream.Write(petDBID);
@@ -3682,7 +3695,7 @@ void GameMessages::SendPetNameChanged(LWOOBJID objectId, int32_t moderationStatu
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_PET_NAME_CHANGED);
+ bitStream.Write(eGameMessageType::PET_NAME_CHANGED);
bitStream.Write(moderationStatus);
@@ -3931,7 +3944,7 @@ void GameMessages::SendDisplayZoneSummary(LWOOBJID objectId, const SystemAddress
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_DISPLAY_ZONE_SUMMARY);
+ bitStream.Write(eGameMessageType::DISPLAY_ZONE_SUMMARY);
bitStream.Write(isPropertyMap);
bitStream.Write(isZoneStart);
@@ -3949,7 +3962,7 @@ void GameMessages::SendNotifyNotEnoughInvSpace(LWOOBJID objectId, uint32_t freeS
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_NOTIFY_FINISHED_RACE);
+ bitStream.Write(eGameMessageType::VEHICLE_NOTIFY_FINISHED_RACE);
bitStream.Write(freeSlotsNeeded);
bitStream.Write(inventoryType != 0);
@@ -3964,7 +3977,7 @@ void GameMessages::SendDisplayMessageBox(LWOOBJID objectId, bool bShow, LWOOBJID
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_DISPLAY_MESSAGE_BOX);
+ bitStream.Write(eGameMessageType::DISPLAY_MESSAGE_BOX);
bitStream.Write(bShow);
bitStream.Write(callbackClient);
@@ -3991,12 +4004,12 @@ void GameMessages::SendDisplayMessageBox(LWOOBJID objectId, bool bShow, LWOOBJID
}
void GameMessages::SendDisplayChatBubble(LWOOBJID objectId, const std::u16string& text, const SystemAddress& sysAddr) {
- // GAME_MSG_DISPLAY_CHAT_BUBBLE
+ // eGameMessageType::DISPLAY_CHAT_BUBBLE
CBITSTREAM;
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_DISPLAY_CHAT_BUBBLE);
+ bitStream.Write(eGameMessageType::DISPLAY_CHAT_BUBBLE);
bitStream.Write(static_cast(text.size()));
for (const auto character : text) {
@@ -4013,7 +4026,7 @@ void GameMessages::SendChangeIdleFlags(LWOOBJID objectId, eAnimationFlags flagsO
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_CHANGE_IDLE_FLAGS);
+ bitStream.Write(eGameMessageType::CHANGE_IDLE_FLAGS);
bitStream.Write(flagsOff != eAnimationFlags::IDLE_NONE);
if (flagsOff != eAnimationFlags::IDLE_NONE) bitStream.Write(flagsOff);
bitStream.Write(flagsOn != eAnimationFlags::IDLE_NONE);
@@ -4027,7 +4040,7 @@ void GameMessages::SendSetMountInventoryID(Entity* entity, const LWOOBJID& objec
CBITSTREAM;
CMSGHEADER;
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_SET_MOUNT_INVENTORY_ID);
+ bitStream.Write(eGameMessageType::SET_MOUNT_INVENTORY_ID);
bitStream.Write(objectID);
SEND_PACKET_BROADCAST;
@@ -4140,7 +4153,7 @@ void GameMessages::HandleRequestDie(RakNet::BitStream* inStream, Entity* entity,
float directionRelativeAngleXZ;
float directionRelativeAngleY;
float directionRelativeForce;
- int32_t killType = VIOLENT;
+ eKillType killType = eKillType::VIOLENT;
LWOOBJID killerID;
LWOOBJID lootOwnerID = LWOOBJID_EMPTY;
@@ -4230,7 +4243,7 @@ void GameMessages::SendUpdateReputation(const LWOOBJID objectId, const int64_t r
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_UPDATE_REPUTATION);
+ bitStream.Write(eGameMessageType::UPDATE_REPUTATION);
bitStream.Write(reputation);
@@ -4304,7 +4317,7 @@ void GameMessages::SendModuleAssemblyDBDataForClient(LWOOBJID objectId, LWOOBJID
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_MODULE_ASSEMBLY_DB_DATA_FOR_CLIENT);
+ bitStream.Write(eGameMessageType::MODULE_ASSEMBLY_DB_DATA_FOR_CLIENT);
bitStream.Write(assemblyID);
@@ -4323,7 +4336,7 @@ void GameMessages::SendNotifyVehicleOfRacingObject(LWOOBJID objectId, LWOOBJID r
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_VEHICLE_OF_RACING_OBJECT);
+ bitStream.Write(eGameMessageType::NOTIFY_VEHICLE_OF_RACING_OBJECT);
bitStream.Write(racingObjectID != LWOOBJID_EMPTY);
if (racingObjectID != LWOOBJID_EMPTY) bitStream.Write(racingObjectID);
@@ -4338,7 +4351,7 @@ void GameMessages::SendRacingPlayerLoaded(LWOOBJID objectId, LWOOBJID playerID,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_RACING_PLAYER_LOADED);
+ bitStream.Write(eGameMessageType::RACING_PLAYER_LOADED);
bitStream.Write(playerID);
bitStream.Write(vehicleID);
@@ -4353,7 +4366,7 @@ void GameMessages::SendVehicleUnlockInput(LWOOBJID objectId, bool bLockWheels, c
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_UNLOCK_INPUT);
+ bitStream.Write(eGameMessageType::VEHICLE_UNLOCK_INPUT);
bitStream.Write(bLockWheels);
@@ -4367,7 +4380,7 @@ void GameMessages::SendVehicleSetWheelLockState(LWOOBJID objectId, bool bExtraFr
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_SET_WHEEL_LOCK_STATE);
+ bitStream.Write(eGameMessageType::VEHICLE_SET_WHEEL_LOCK_STATE);
bitStream.Write(bExtraFriction);
bitStream.Write(bLocked);
@@ -4382,7 +4395,7 @@ void GameMessages::SendRacingSetPlayerResetInfo(LWOOBJID objectId, int32_t curre
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_RACING_SET_PLAYER_RESET_INFO);
+ bitStream.Write(eGameMessageType::RACING_SET_PLAYER_RESET_INFO);
bitStream.Write(currentLap);
bitStream.Write(furthestResetPlane);
@@ -4400,7 +4413,7 @@ void GameMessages::SendRacingResetPlayerToLastReset(LWOOBJID objectId, LWOOBJID
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_RACING_RESET_PLAYER_TO_LAST_RESET);
+ bitStream.Write(eGameMessageType::RACING_RESET_PLAYER_TO_LAST_RESET);
bitStream.Write(playerID);
@@ -4413,8 +4426,8 @@ void GameMessages::SendVehicleStopBoost(Entity* targetEntity, const SystemAddres
CMSGHEADER;
bitStream.Write(targetEntity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_STOP_BOOST);
-
+ bitStream.Write(eGameMessageType::VEHICLE_STOP_BOOST);
+
bitStream.Write(affectPassive);
SEND_PACKET_BROADCAST;
@@ -4425,8 +4438,8 @@ void GameMessages::SendSetResurrectRestoreValues(Entity* targetEntity, int32_t a
CMSGHEADER;
bitStream.Write(targetEntity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_SET_RESURRECT_RESTORE_VALUES);
-
+ bitStream.Write(eGameMessageType::SET_RESURRECT_RESTORE_VALUES);
+
bitStream.Write(armorRestore != -1);
if (armorRestore != -1) bitStream.Write(armorRestore);
@@ -4444,7 +4457,7 @@ void GameMessages::SendNotifyRacingClient(LWOOBJID objectId, int32_t eventType,
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_NOTIFY_RACING_CLIENT);
+ bitStream.Write(eGameMessageType::NOTIFY_RACING_CLIENT);
bitStream.Write(eventType != 0);
if (eventType != 0) bitStream.Write(eventType);
@@ -4470,7 +4483,7 @@ void GameMessages::SendActivityEnter(LWOOBJID objectId, const SystemAddress& sys
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ACTIVITY_ENTER);
+ bitStream.Write(eGameMessageType::ACTIVITY_ENTER);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -4482,7 +4495,7 @@ void GameMessages::SendActivityStart(LWOOBJID objectId, const SystemAddress& sys
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ACTIVITY_START);
+ bitStream.Write(eGameMessageType::ACTIVITY_START);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -4494,7 +4507,7 @@ void GameMessages::SendActivityExit(LWOOBJID objectId, const SystemAddress& sysA
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ACTIVITY_EXIT);
+ bitStream.Write(eGameMessageType::ACTIVITY_EXIT);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -4506,7 +4519,7 @@ void GameMessages::SendActivityStop(LWOOBJID objectId, bool bExit, bool bUserCan
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ACTIVITY_STOP);
+ bitStream.Write(eGameMessageType::ACTIVITY_STOP);
bitStream.Write(bExit);
bitStream.Write(bUserCancel);
@@ -4521,7 +4534,7 @@ void GameMessages::SendVehicleAddPassiveBoostAction(LWOOBJID objectId, const Sys
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_ADD_PASSIVE_BOOST_ACTION);
+ bitStream.Write(eGameMessageType::VEHICLE_ADD_PASSIVE_BOOST_ACTION);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -4533,7 +4546,7 @@ void GameMessages::SendVehicleRemovePassiveBoostAction(LWOOBJID objectId, const
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_REMOVE_PASSIVE_BOOST_ACTION);
+ bitStream.Write(eGameMessageType::VEHICLE_REMOVE_PASSIVE_BOOST_ACTION);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -4545,7 +4558,7 @@ void GameMessages::SendVehicleNotifyFinishedRace(LWOOBJID objectId, const System
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_VEHICLE_NOTIFY_FINISHED_RACE);
+ bitStream.Write(eGameMessageType::VEHICLE_NOTIFY_FINISHED_RACE);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -4559,7 +4572,7 @@ void GameMessages::SendAddBuff(LWOOBJID& objectID, const LWOOBJID& casterID, uin
CMSGHEADER;
bitStream.Write(objectID);
- bitStream.Write(GAME_MSG::GAME_MSG_ADD_BUFF);
+ bitStream.Write(eGameMessageType::ADD_BUFF);
bitStream.Write(false); // Added by teammate
bitStream.Write(false); // Apply on teammates
@@ -4640,7 +4653,7 @@ void GameMessages::SendShowActivityCountdown(LWOOBJID objectId, bool bPlayAdditi
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SHOW_ACTIVITY_COUNTDOWN);
+ bitStream.Write(eGameMessageType::SHOW_ACTIVITY_COUNTDOWN);
bitStream.Write(bPlayAdditionalSound);
@@ -4765,7 +4778,7 @@ void GameMessages::HandleBuyFromVendor(RakNet::BitStream* inStream, Entity* enti
inv->RemoveItem(tokenId, altCurrencyCost);
- inv->AddItem(item, count, eLootSourceType::LOOT_SOURCE_VENDOR);
+ inv->AddItem(item, count, eLootSourceType::VENDOR);
} else {
float buyScalar = vend->GetBuyScalar();
@@ -4785,8 +4798,8 @@ void GameMessages::HandleBuyFromVendor(RakNet::BitStream* inStream, Entity* enti
inv->RemoveItem(itemComp.currencyLOT, altCurrencyCost);
}
- character->SetCoins(character->GetCoins() - (coinCost), eLootSourceType::LOOT_SOURCE_VENDOR);
- inv->AddItem(item, count, eLootSourceType::LOOT_SOURCE_VENDOR);
+ character->SetCoins(character->GetCoins() - (coinCost), eLootSourceType::VENDOR);
+ inv->AddItem(item, count, eLootSourceType::VENDOR);
}
GameMessages::SendVendorTransactionResult(entity, sysAddr);
@@ -4828,12 +4841,12 @@ void GameMessages::HandleSellToVendor(RakNet::BitStream* inStream, Entity* entit
float sellScalar = vend->GetSellScalar();
if (Inventory::IsValidItem(itemComp.currencyLOT)) {
const auto altCurrency = static_cast(itemComp.altCurrencyCost * sellScalar) * count;
- inv->AddItem(itemComp.currencyLOT, std::floor(altCurrency), eLootSourceType::LOOT_SOURCE_VENDOR); // Return alt currencies like faction tokens.
+ inv->AddItem(itemComp.currencyLOT, std::floor(altCurrency), eLootSourceType::VENDOR); // Return alt currencies like faction tokens.
}
//inv->RemoveItem(count, -1, iObjID);
inv->MoveItemToInventory(item, eInventoryType::VENDOR_BUYBACK, count, true, false, true);
- character->SetCoins(std::floor(character->GetCoins() + (static_cast(itemComp.baseValue * sellScalar) * count)), eLootSourceType::LOOT_SOURCE_VENDOR);
+ character->SetCoins(std::floor(character->GetCoins() + (static_cast(itemComp.baseValue * sellScalar) * count)), eLootSourceType::VENDOR);
//EntityManager::Instance()->SerializeEntity(player); // so inventory updates
GameMessages::SendVendorTransactionResult(entity, sysAddr);
}
@@ -4892,7 +4905,7 @@ void GameMessages::HandleBuybackFromVendor(RakNet::BitStream* inStream, Entity*
//inv->RemoveItem(count, -1, iObjID);
inv->MoveItemToInventory(item, Inventory::FindInventoryTypeForLot(item->GetLot()), count, true, false);
- character->SetCoins(character->GetCoins() - cost, eLootSourceType::LOOT_SOURCE_VENDOR);
+ character->SetCoins(character->GetCoins() - cost, eLootSourceType::VENDOR);
//EntityManager::Instance()->SerializeEntity(player); // so inventory updates
GameMessages::SendVendorTransactionResult(entity, sysAddr);
}
@@ -5014,7 +5027,7 @@ void GameMessages::HandleRebuildCancel(RakNet::BitStream* inStream, Entity* enti
RebuildComponent* rebComp = static_cast(entity->GetComponent(eReplicaComponentType::QUICK_BUILD));
if (!rebComp) return;
- rebComp->CancelRebuild(EntityManager::Instance()->GetEntity(userID), eFailReason::REASON_CANCELED_EARLY);
+ rebComp->CancelRebuild(EntityManager::Instance()->GetEntity(userID), eQuickBuildFailReason::CANCELED_EARLY);
}
void GameMessages::HandleRequestUse(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr) {
@@ -5134,12 +5147,12 @@ void GameMessages::HandleModularBuildConvertModel(RakNet::BitStream* inStream, E
item->Disassemble(TEMP_MODELS);
- item->SetCount(item->GetCount() - 1, false, false, true, eLootSourceType::LOOT_SOURCE_QUICKBUILD);
+ item->SetCount(item->GetCount() - 1, false, false, true, eLootSourceType::QUICKBUILD);
}
void GameMessages::HandleSetFlag(RakNet::BitStream* inStream, Entity* entity) {
bool bFlag{};
- int iFlagID{};
+ int32_t iFlagID{};
inStream->Read(bFlag);
inStream->Read(iFlagID);
@@ -5300,7 +5313,7 @@ void GameMessages::HandlePickupCurrency(RakNet::BitStream* inStream, Entity* ent
auto* ch = entity->GetCharacter();
if (entity->CanPickupCoins(currency)) {
- ch->SetCoins(ch->GetCoins() + currency, eLootSourceType::LOOT_SOURCE_PICKUP);
+ ch->SetCoins(ch->GetCoins() + currency, eLootSourceType::PICKUP);
}
}
@@ -5614,9 +5627,9 @@ void GameMessages::HandleModularBuildFinish(RakNet::BitStream* inStream, Entity*
config.push_back(moduleAssembly);
if (count == 3) {
- inv->AddItem(6416, 1, eLootSourceType::LOOT_SOURCE_QUICKBUILD, eInventoryType::MODELS, config);
+ inv->AddItem(6416, 1, eLootSourceType::QUICKBUILD, eInventoryType::MODELS, config);
} else if (count == 7) {
- inv->AddItem(8092, 1, eLootSourceType::LOOT_SOURCE_QUICKBUILD, eInventoryType::MODELS, config);
+ inv->AddItem(8092, 1, eLootSourceType::QUICKBUILD, eInventoryType::MODELS, config);
}
auto* missionComponent = character->GetComponent();
@@ -5945,7 +5958,7 @@ void GameMessages::SendGetHotPropertyData(RakNet::BitStream* inStream, Entity* e
// TODO This needs to be implemented when reputation is implemented for getting hot properties.
/**
bitStream.Write(entity->GetObjectID());
- bitStream.Write(GAME_MSG::GAME_MSG_SEND_HOT_PROPERTY_DATA);
+ bitStream.Write(eGameMessageType::SEND_HOT_PROPERTY_DATA);
std::vector t = {25166, 25188, 25191, 25194};
bitStream.Write(4);
for (uint8_t i = 0; i < 4; i++) {
@@ -6139,7 +6152,7 @@ void GameMessages::SendActivateBubbleBuffFromServer(LWOOBJID objectId, const Sys
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_ACTIVATE_BUBBLE_BUFF_FROM_SERVER);
+ bitStream.Write(eGameMessageType::ACTIVATE_BUBBLE_BUFF_FROM_SERVER);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -6150,7 +6163,7 @@ void GameMessages::SendDeactivateBubbleBuffFromServer(LWOOBJID objectId, const S
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_DEACTIVATE_BUBBLE_BUFF_FROM_SERVER);
+ bitStream.Write(eGameMessageType::DEACTIVATE_BUBBLE_BUFF_FROM_SERVER);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST;
SEND_PACKET;
@@ -6168,7 +6181,7 @@ void GameMessages::SendSetNamebillboardState(const SystemAddress& sysAddr, LWOOB
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SET_NAME_BILLBOARD_STATE);
+ bitStream.Write(eGameMessageType::SET_NAME_BILLBOARD_STATE);
// Technically these bits would be written, however the client does not
// contain a deserialize method to actually deserialize, so we are leaving it out.
@@ -6186,7 +6199,7 @@ void GameMessages::SendShowBillboardInteractIcon(const SystemAddress& sysAddr, L
CMSGHEADER;
bitStream.Write(objectId);
- bitStream.Write(GAME_MSG::GAME_MSG_SHOW_BILLBOARD_INTERACT_ICON);
+ bitStream.Write(eGameMessageType::SHOW_BILLBOARD_INTERACT_ICON);
if (sysAddr == UNASSIGNED_SYSTEM_ADDRESS) SEND_PACKET_BROADCAST
else SEND_PACKET
diff --git a/dGame/dGameMessages/GameMessages.h b/dGame/dGameMessages/GameMessages.h
index 68f4542f..ce24a105 100644
--- a/dGame/dGameMessages/GameMessages.h
+++ b/dGame/dGameMessages/GameMessages.h
@@ -8,6 +8,9 @@
#include "eMovementPlatformState.h"
#include "NiPoint3.h"
#include "eEndBehavior.h"
+#include "eCyclingMode.h"
+#include "eLootSourceType.h"
+#include "Brick.h"
class AMFValue;
class Entity;
@@ -23,6 +26,16 @@ enum class eAnimationFlags : uint32_t;
enum class eUnequippableActiveType;
enum eInventoryType : uint32_t;
enum class eGameMasterLevel : uint8_t;
+enum class eMatchUpdate : int32_t;
+enum class eKillType : uint32_t;
+enum class eObjectWorldState : uint32_t;
+enum class eTerminateType : uint32_t;
+enum class eControlScheme : uint32_t;
+enum class eStateChangeType : uint32_t;
+enum class ePetTamingNotifyType : uint32_t;
+enum class eUseItemResponse : uint32_t;
+enum class eQuickBuildFailReason : uint32_t;
+enum class eRebuildState : uint32_t;
namespace GameMessages {
class PropertyDataMessage;
@@ -51,8 +64,7 @@ namespace GameMessages {
int targetTYPE = 0
);
- void SendPlayerSetCameraCyclingMode(const LWOOBJID& objectID, const SystemAddress& sysAddr,
- bool bAllowCyclingWhileDeadOnly = true, eCyclingMode cyclingMode = ALLOW_CYCLE_TEAMMATES);
+ void SendPlayerSetCameraCyclingMode(const LWOOBJID& objectID, const SystemAddress& sysAddr, bool bAllowCyclingWhileDeadOnly = true, eCyclingMode cyclingMode = eCyclingMode::ALLOW_CYCLE_TEAMMATES);
void SendPlayNDAudioEmitter(Entity* entity, const SystemAddress& sysAddr, std::string audioGUID);
@@ -66,9 +78,9 @@ namespace GameMessages {
void SendGMLevelBroadcast(const LWOOBJID& objectID, eGameMasterLevel level);
void SendChatModeUpdate(const LWOOBJID& objectID, eGameMasterLevel level);
- void SendAddItemToInventoryClientSync(Entity* entity, const SystemAddress& sysAddr, Item* item, const LWOOBJID& objectID, bool showFlyingLoot, int itemCount, LWOOBJID subKey = LWOOBJID_EMPTY, eLootSourceType lootSourceType = eLootSourceType::LOOT_SOURCE_NONE);
- void SendNotifyClientFlagChange(const LWOOBJID& objectID, int iFlagID, bool bFlag, const SystemAddress& sysAddr);
- void SendChangeObjectWorldState(const LWOOBJID& objectID, int state, const SystemAddress& sysAddr);
+ void SendAddItemToInventoryClientSync(Entity* entity, const SystemAddress& sysAddr, Item* item, const LWOOBJID& objectID, bool showFlyingLoot, int itemCount, LWOOBJID subKey = LWOOBJID_EMPTY, eLootSourceType lootSourceType = eLootSourceType::NONE);
+ void SendNotifyClientFlagChange(const LWOOBJID& objectID, uint32_t iFlagID, bool bFlag, const SystemAddress& sysAddr);
+ void SendChangeObjectWorldState(const LWOOBJID& objectID, eObjectWorldState state, const SystemAddress& sysAddr);
void SendOfferMission(const LWOOBJID& entity, const SystemAddress& sysAddr, int32_t missionID, const LWOOBJID& offererID);
void SendNotifyMission(Entity* entity, const SystemAddress& sysAddr, int missionID, int missionState, bool sendingRewards);
@@ -86,8 +98,8 @@ namespace GameMessages {
void SendBroadcastTextToChatbox(Entity* entity, const SystemAddress& sysAddr, const std::u16string& attrs, const std::u16string& wsText);
void SendSetCurrency(Entity* entity, int64_t currency, int lootType, const LWOOBJID& sourceID, const LOT& sourceLOT, int sourceTradeID, bool overrideCurrent, eLootSourceType sourceType);
- void SendRebuildNotifyState(Entity* entity, int prevState, int state, const LWOOBJID& playerID);
- void SendEnableRebuild(Entity* entity, bool enable, bool fail, bool success, int failReason, float duration, const LWOOBJID& playerID);
+ void SendRebuildNotifyState(Entity* entity, eRebuildState prevState, eRebuildState state, const LWOOBJID& playerID);
+ void SendEnableRebuild(Entity* entity, bool enable, bool fail, bool success, eQuickBuildFailReason failReason, float duration, const LWOOBJID& playerID);
void AddActivityOwner(Entity* entity, LWOOBJID& ownerID);
void SendTerminateInteraction(const LWOOBJID& objectID, eTerminateType type, const LWOOBJID& terminator);
@@ -104,7 +116,7 @@ namespace GameMessages {
void SendSetNetworkScriptVar(Entity* entity, const SystemAddress& sysAddr, std::string data);
void SendDropClientLoot(Entity* entity, const LWOOBJID& sourceID, LOT item, int currency, NiPoint3 spawnPos = NiPoint3::ZERO, int count = 1);
- void SendSetPlayerControlScheme(Entity* entity, eControlSceme controlScheme);
+ void SendSetPlayerControlScheme(Entity* entity, eControlScheme controlScheme);
void SendPlayerReachedRespawnCheckpoint(Entity* entity, const NiPoint3& position, const NiQuaternion& rotation);
void SendAddSkill(Entity* entity, TSkillID skillID, int slotID);
@@ -123,7 +135,7 @@ namespace GameMessages {
void SendMoveInventoryBatch(Entity* entity, uint32_t stackCount, int srcInv, int dstInv, const LWOOBJID& iObjID);
void SendMatchResponse(Entity* entity, const SystemAddress& sysAddr, int response);
- void SendMatchUpdate(Entity* entity, const SystemAddress& sysAddr, std::string data, int type);
+ void SendMatchUpdate(Entity* entity, const SystemAddress& sysAddr, std::string data, eMatchUpdate type);
void HandleUnUseModel(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr);
void SendStartCelebrationEffect(Entity* entity, const SystemAddress& sysAddr, int celebrationID);
@@ -350,7 +362,7 @@ namespace GameMessages {
void HandleClientTradeUpdate(RakNet::BitStream* inStream, Entity* entity, const SystemAddress& sysAddr);
//Pets:
- void SendNotifyPetTamingMinigame(LWOOBJID objectId, LWOOBJID petId, LWOOBJID playerTamingId, bool bForceTeleport, uint32_t notifyType, NiPoint3 petsDestPos, NiPoint3 telePos, NiQuaternion teleRot, const SystemAddress& sysAddr);
+ void SendNotifyPetTamingMinigame(LWOOBJID objectId, LWOOBJID petId, LWOOBJID playerTamingId, bool bForceTeleport, ePetTamingNotifyType notifyType, NiPoint3 petsDestPos, NiPoint3 telePos, NiQuaternion teleRot, const SystemAddress& sysAddr);
void SendNotifyPetTamingPuzzleSelected(LWOOBJID objectId, std::vector& bricks, const SystemAddress& sysAddr);
@@ -520,7 +532,7 @@ namespace GameMessages {
void SendActivityPause(LWOOBJID objectId, bool pause = false, const SystemAddress& sysAddr = UNASSIGNED_SYSTEM_ADDRESS);
void SendStartActivityTime(LWOOBJID objectId, float_t startTime, const SystemAddress& sysAddr = UNASSIGNED_SYSTEM_ADDRESS);
void SendRequestActivityEnter(LWOOBJID objectId, const SystemAddress& sysAddr, bool bStart, LWOOBJID userID);
- void SendUseItemRequirementsResponse(LWOOBJID objectID, const SystemAddress& sysAddr, UseItemResponse itemResponse);
+ void SendUseItemRequirementsResponse(LWOOBJID objectID, const SystemAddress& sysAddr, eUseItemResponse itemResponse);
// SG:
diff --git a/dGame/dGameMessages/RequestServerProjectileImpact.h b/dGame/dGameMessages/RequestServerProjectileImpact.h
index 01426361..090d8274 100644
--- a/dGame/dGameMessages/RequestServerProjectileImpact.h
+++ b/dGame/dGameMessages/RequestServerProjectileImpact.h
@@ -2,13 +2,11 @@
#define __REQUESTSERVERPROJECTILEIMPACT__H__
#include "dCommonVars.h"
-#include "dMessageIdentifiers.h"
+#include "eGameMessageType.h"
/* Notifying the server that a locally owned projectile impacted. Sent to the caster of the projectile
should always be the local char. */
class RequestServerProjectileImpact {
- static const GAME_MSG MsgID = GAME_MSG_REQUEST_SERVER_PROJECTILE_IMPACT;
-
public:
RequestServerProjectileImpact() {
i64LocalID = LWOOBJID_EMPTY;
@@ -29,7 +27,7 @@ public:
}
void Serialize(RakNet::BitStream* stream) {
- stream->Write(MsgID);
+ stream->Write(eGameMessageType::REQUEST_SERVER_PROJECTILE_IMPACT);
stream->Write(i64LocalID != LWOOBJID_EMPTY);
if (i64LocalID != LWOOBJID_EMPTY) stream->Write(i64LocalID);
diff --git a/dGame/dGameMessages/StartSkill.h b/dGame/dGameMessages/StartSkill.h
index af82a9b4..40bc210f 100644
--- a/dGame/dGameMessages/StartSkill.h
+++ b/dGame/dGameMessages/StartSkill.h
@@ -2,16 +2,14 @@
#define __STARTSKILL__H__
#include "dCommonVars.h"
-#include "dMessageIdentifiers.h"
#include "NiPoint3.h"
#include "NiQuaternion.h"
+#include "eGameMessageType.h"
/**
* Same as sync skill but with different network options. An echo down to other clients that need to play the skill.
*/
class StartSkill {
- static const GAME_MSG MsgID = GAME_MSG_START_SKILL;
-
public:
StartSkill() {
bUsedMouse = false;
@@ -46,7 +44,7 @@ public:
}
void Serialize(RakNet::BitStream* stream) {
- stream->Write(MsgID);
+ stream->Write(eGameMessageType::START_SKILL);
stream->Write(bUsedMouse);
diff --git a/dGame/dGameMessages/SyncSkill.h b/dGame/dGameMessages/SyncSkill.h
index 72a88839..6485199e 100644
--- a/dGame/dGameMessages/SyncSkill.h
+++ b/dGame/dGameMessages/SyncSkill.h
@@ -5,11 +5,10 @@
#include
#include "BitStream.h"
+#include "eGameMessageType.h"
/* Message to synchronize a skill cast */
class SyncSkill {
- static const GAME_MSG MsgID = GAME_MSG_SYNC_SKILL;
-
public:
SyncSkill() {
bDone = false;
@@ -30,7 +29,7 @@ public:
}
void Serialize(RakNet::BitStream* stream) {
- stream->Write(MsgID);
+ stream->Write(eGameMessageType::SYNC_SKILL);
stream->Write(bDone);
uint32_t sBitStreamLength = sBitStream.length();
diff --git a/dGame/dInventory/Inventory.cpp b/dGame/dInventory/Inventory.cpp
index d752f87d..3d2c82ae 100644
--- a/dGame/dInventory/Inventory.cpp
+++ b/dGame/dInventory/Inventory.cpp
@@ -244,9 +244,9 @@ eInventoryType Inventory::FindInventoryTypeForLot(const LOT lot) {
return PROPERTY_DEEDS;
case eItemType::MODEL:
- case eItemType::VEHICLE:
+ case eItemType::PET_INVENTORY_ITEM:
case eItemType::LOOT_MODEL:
- case eItemType::LUP_MODEL:
+ case eItemType::VEHICLE:
case eItemType::MOUNT:
return MODELS;
@@ -263,9 +263,8 @@ eInventoryType Inventory::FindInventoryTypeForLot(const LOT lot) {
case eItemType::CHEST:
case eItemType::EGG:
case eItemType::PET_FOOD:
- case eItemType::PET_INVENTORY_ITEM:
case eItemType::PACKAGE:
-
+ case eItemType::LUP_MODEL:
return ITEMS;
case eItemType::QUEST_OBJECT:
diff --git a/dGame/dInventory/Item.cpp b/dGame/dInventory/Item.cpp
index 5795ab12..83ac8869 100644
--- a/dGame/dInventory/Item.cpp
+++ b/dGame/dInventory/Item.cpp
@@ -16,7 +16,9 @@
#include "AssetManager.h"
#include "InventoryComponent.h"
#include "Loot.h"
+#include "eObjectBits.h"
#include "eReplicaComponentType.h"
+#include "eUseItemResponse.h"
#include "CDBrickIDTableTable.h"
#include "CDObjectSkillsTable.h"
@@ -77,13 +79,13 @@ Item::Item(
LWOOBJID id = ObjectIDManager::GenerateRandomObjectID();
- id = GeneralUtils::SetBit(id, OBJECT_BIT_CHARACTER);
- id = GeneralUtils::SetBit(id, OBJECT_BIT_PERSISTENT);
+ GeneralUtils::SetBit(id, eObjectBits::CHARACTER);
+ GeneralUtils::SetBit(id, eObjectBits::PERSISTENT);
const auto type = static_cast(info->itemType);
if (type == eItemType::MOUNT) {
- id = GeneralUtils::SetBit(id, OBJECT_BIT_CLIENT);
+ GeneralUtils::SetBit(id, eObjectBits::CLIENT);
}
this->id = id;
@@ -329,7 +331,7 @@ void Item::UseNonEquip(Item* item) {
}
}
if (playerInventoryComponent->HasSpaceForLoot(rolledLoot)) {
- LootGenerator::Instance().GiveLoot(playerInventoryComponent->GetParent(), rolledLoot, eLootSourceType::LOOT_SOURCE_CONSUMPTION);
+ LootGenerator::Instance().GiveLoot(playerInventoryComponent->GetParent(), rolledLoot, eLootSourceType::CONSUMPTION);
item->SetCount(item->GetCount() - 1);
} else {
success = false;
@@ -338,7 +340,7 @@ void Item::UseNonEquip(Item* item) {
GameMessages::SendUseItemRequirementsResponse(
playerInventoryComponent->GetParent()->GetObjectID(),
playerInventoryComponent->GetParent()->GetSystemAddress(),
- UseItemResponse::FailedPrecondition
+ eUseItemResponse::FailedPrecondition
);
success = false;
}
@@ -378,7 +380,7 @@ void Item::Disassemble(const eInventoryType inventoryType) {
}
for (const auto mod : modArray) {
- inventory->GetComponent()->AddItem(mod, 1, eLootSourceType::LOOT_SOURCE_DELETION, inventoryType);
+ inventory->GetComponent()->AddItem(mod, 1, eLootSourceType::DELETION, inventoryType);
}
}
}
@@ -476,7 +478,7 @@ void Item::DisassembleModel() {
continue;
}
- GetInventory()->GetComponent()->AddItem(brickID[0].NDObjectID, 1, eLootSourceType::LOOT_SOURCE_DELETION);
+ GetInventory()->GetComponent()->AddItem(brickID[0].NDObjectID, 1, eLootSourceType::DELETION);
}
}
diff --git a/dGame/dInventory/Item.h b/dGame/dInventory/Item.h
index 6993a0ba..be2359ef 100644
--- a/dGame/dInventory/Item.h
+++ b/dGame/dInventory/Item.h
@@ -7,6 +7,7 @@
#include "dLogger.h"
#include "Preconditions.h"
#include "eInventoryType.h"
+#include "eLootSourceType.h"
/**
* An item that can be stored in an inventory and optionally consumed or equipped
@@ -38,7 +39,7 @@ public:
const std::vector