From 3ede7006f9b7c911a3a20fde9a5bdfc1fcd59d8a Mon Sep 17 00:00:00 2001 From: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com> Date: Mon, 17 Jan 2022 19:43:37 -0800 Subject: [PATCH 1/5] Added Joined a faction flag Added logic to set the player flag for joining a faction. Tested on Ubuntu and had zero issues. --- dScripts/NsGetFactionMissionServer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/dScripts/NsGetFactionMissionServer.cpp b/dScripts/NsGetFactionMissionServer.cpp index 99f2f838..d4d03243 100644 --- a/dScripts/NsGetFactionMissionServer.cpp +++ b/dScripts/NsGetFactionMissionServer.cpp @@ -44,6 +44,7 @@ void NsGetFactionMissionServer::OnRespondToMission(Entity* self, int missionID, } if (flagID != -1) { + player->GetCharacter()->SetPlayerFlag(ePlayerFlags::JOINED_A_FACTION, true); player->GetCharacter()->SetPlayerFlag(flagID, true); } From d69a4ffaf0618a1fb529159115bdbed155ca8f1b Mon Sep 17 00:00:00 2001 From: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com> Date: Tue, 18 Jan 2022 17:51:12 -0800 Subject: [PATCH 2/5] Added retroactive check for player faction flags Added a retroactive check for player flag when loading into a world. --- dWorldServer/WorldServer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index 2a6cbaa5..b046e6d4 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -1042,6 +1042,12 @@ void HandlePacket(Packet* packet) { EntityManager::Instance()->ConstructAllEntities(packet->systemAddress); player->GetComponent()->SetLastRocketConfig(u""); + // Retroactive check for if player has joined a faction to set their 'joined a faction' flag to true. + if (c->GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) == true || c->GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) == true || + c->GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) == true || c->GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION) == true) { + c->SetPlayerFlag(ePlayerFlags::JOINED_A_FACTION, true); + } + player->GetCharacter()->SetTargetScene(""); // Fix the destroyable component From 2bfff2933a4f331dc752c987642e6093d78eaef7 Mon Sep 17 00:00:00 2001 From: Jett <55758076+Jettford@users.noreply.github.com> Date: Wed, 19 Jan 2022 11:35:46 +0000 Subject: [PATCH 3/5] Remove equal checks --- dWorldServer/WorldServer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index b046e6d4..e27c5c93 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -1043,8 +1043,8 @@ void HandlePacket(Packet* packet) { player->GetComponent()->SetLastRocketConfig(u""); // Retroactive check for if player has joined a faction to set their 'joined a faction' flag to true. - if (c->GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) == true || c->GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) == true || - c->GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) == true || c->GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION) == true) { + if (c->GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) || c->GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) || + c->GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) || c->GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION)) { c->SetPlayerFlag(ePlayerFlags::JOINED_A_FACTION, true); } From 7cf458cff2098306c3e634851220e92c21dabb36 Mon Sep 17 00:00:00 2001 From: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com> Date: Wed, 19 Jan 2022 03:36:18 -0800 Subject: [PATCH 4/5] Removed redundant comparison --- dWorldServer/WorldServer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index b046e6d4..e27c5c93 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -1043,8 +1043,8 @@ void HandlePacket(Packet* packet) { player->GetComponent()->SetLastRocketConfig(u""); // Retroactive check for if player has joined a faction to set their 'joined a faction' flag to true. - if (c->GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) == true || c->GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) == true || - c->GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) == true || c->GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION) == true) { + if (c->GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) || c->GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) || + c->GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) || c->GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION)) { c->SetPlayerFlag(ePlayerFlags::JOINED_A_FACTION, true); } From 850ae40f056f3f2dd550d87acdb2fe87b928a459 Mon Sep 17 00:00:00 2001 From: EmosewaMC <39972741+EmosewaMC@users.noreply.github.com> Date: Wed, 19 Jan 2022 17:34:53 -0800 Subject: [PATCH 5/5] Moved retroactive flag check to Character.cpp --- dGame/Character.cpp | 7 +++++++ dGame/Character.h | 6 ++++++ dWorldServer/WorldServer.cpp | 7 ++----- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/dGame/Character.cpp b/dGame/Character.cpp index 4383ee46..d396382c 100644 --- a/dGame/Character.cpp +++ b/dGame/Character.cpp @@ -451,6 +451,13 @@ bool Character::GetPlayerFlag(const uint32_t flagId) const { return false; //by def, return false. } +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); + } +} + void Character::SaveXmlRespawnCheckpoints() { //Export our respawn points: diff --git a/dGame/Character.h b/dGame/Character.h index 61017ccb..9678eb3d 100644 --- a/dGame/Character.h +++ b/dGame/Character.h @@ -413,6 +413,12 @@ public: */ void SendMuteNotice() const; + /** + * Sets any flags that are meant to have been set that may not have been set due to them being + * missing in a previous patch. + */ + void SetRetroactiveFlags(); + /** * Get the equipped items for this character, only used for character creation * @return the equipped items for this character on world load diff --git a/dWorldServer/WorldServer.cpp b/dWorldServer/WorldServer.cpp index e27c5c93..53abfd7a 100644 --- a/dWorldServer/WorldServer.cpp +++ b/dWorldServer/WorldServer.cpp @@ -1042,11 +1042,8 @@ void HandlePacket(Packet* packet) { EntityManager::Instance()->ConstructAllEntities(packet->systemAddress); player->GetComponent()->SetLastRocketConfig(u""); - // Retroactive check for if player has joined a faction to set their 'joined a faction' flag to true. - if (c->GetPlayerFlag(ePlayerFlags::VENTURE_FACTION) || c->GetPlayerFlag(ePlayerFlags::ASSEMBLY_FACTION) || - c->GetPlayerFlag(ePlayerFlags::PARADOX_FACTION) || c->GetPlayerFlag(ePlayerFlags::SENTINEL_FACTION)) { - c->SetPlayerFlag(ePlayerFlags::JOINED_A_FACTION, true); - } + + c->SetRetroactiveFlags(); player->GetCharacter()->SetTargetScene("");