From e4a15a0f2efcfc7a668e939fc361b30a3b7db5a9 Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Thu, 18 Aug 2022 00:09:14 -0500 Subject: [PATCH] Add imagimeter visibility script (#738) --- dCommon/dCommonVars.h | 1 + dScripts/CMakeLists.txt | 1 + dScripts/CppScripts.cpp | 4 ++++ dScripts/NtImagimeterVisibility.cpp | 11 +++++++++++ dScripts/NtImagimeterVisibility.h | 7 +++++++ 5 files changed, 24 insertions(+) create mode 100644 dScripts/NtImagimeterVisibility.cpp create mode 100644 dScripts/NtImagimeterVisibility.h diff --git a/dCommon/dCommonVars.h b/dCommon/dCommonVars.h index 986f1c1..4c0e15f 100644 --- a/dCommon/dCommonVars.h +++ b/dCommon/dCommonVars.h @@ -628,6 +628,7 @@ enum ePlayerFlags { 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, diff --git a/dScripts/CMakeLists.txt b/dScripts/CMakeLists.txt index 1fa177b..50b41a1 100644 --- a/dScripts/CMakeLists.txt +++ b/dScripts/CMakeLists.txt @@ -177,6 +177,7 @@ set(DSCRIPT_SOURCES "ActivityManager.cpp" "NtFactionSpyServer.cpp" "NtHaelServer.cpp" "NtImagBeamBuffer.cpp" + "NtImagimeterVisibility.cpp" "NtOverbuildServer.cpp" "NtParadoxPanelServer.cpp" "NtParadoxTeleServer.cpp" diff --git a/dScripts/CppScripts.cpp b/dScripts/CppScripts.cpp index fbcb660..de39fbb 100644 --- a/dScripts/CppScripts.cpp +++ b/dScripts/CppScripts.cpp @@ -201,6 +201,7 @@ #include "ForceVolumeServer.h" #include "NtXRayServer.h" #include "NtSleepingGuard.h" +#include "NtImagimeterVisibility.h" // DLU Scripts #include "DLUVanityNPC.h" @@ -661,6 +662,9 @@ CppScripts::Script* CppScripts::GetScript(Entity* parent, const std::string& scr script = new NtXRayServer(); else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_SLEEPING_GUARD.lua") script = new NtSleepingGuard(); + else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_IMAGIMETER_VISIBILITY_SERVER.lua") { + script = new NTImagimeterVisibility(); + } //AM: else if (scriptName == "scripts\\02_server\\Map\\AM\\L_AM_CONSOLE_TELEPORT_SERVER.lua") diff --git a/dScripts/NtImagimeterVisibility.cpp b/dScripts/NtImagimeterVisibility.cpp new file mode 100644 index 0000000..c0f9bf5 --- /dev/null +++ b/dScripts/NtImagimeterVisibility.cpp @@ -0,0 +1,11 @@ +#include "NtImagimeterVisibility.h" +#include "GameMessages.h" +#include "Entity.h" +#include "Character.h" + +void NTImagimeterVisibility::OnRebuildComplete(Entity* self, Entity* target) { + auto* character = target->GetCharacter(); + if (character) character->SetPlayerFlag(ePlayerFlags::NT_PLINTH_REBUILD, true); + + GameMessages::SendNotifyClientObject(self->GetObjectID(), u"PlinthBuilt", 0, 0, LWOOBJID_EMPTY, "", target->GetSystemAddress()); +} diff --git a/dScripts/NtImagimeterVisibility.h b/dScripts/NtImagimeterVisibility.h new file mode 100644 index 0000000..04669d4 --- /dev/null +++ b/dScripts/NtImagimeterVisibility.h @@ -0,0 +1,7 @@ +#pragma once +#include "CppScripts.h" + +class NTImagimeterVisibility : public CppScripts::Script { +public: + void OnRebuildComplete(Entity* self, Entity* target) override; +};