fix: add Nexus Tower missing scripts (#1349)

add final missing scripts for nt

also fix the turnin for the breadcrumb missions not showing the completion window.

Fix another missing script

Add another script

fix include guards

Fix dirt clouds not appearing on mission accept
This commit is contained in:
David Markowitz
2023-12-22 23:53:21 -08:00
committed by GitHub
parent c07c909a57
commit c1e8546d48
38 changed files with 334 additions and 17 deletions

View File

@@ -18,9 +18,12 @@ set(DSCRIPTS_SOURCES_02_SERVER_MAP_NT
"NtXRayServer.cpp"
"NtSleepingGuard.cpp"
"NtImagimeterVisibility.cpp"
"NTPipeVisibilityServer.cpp"
"NtSentinelWalkwayServer.cpp"
"NtDarkitectRevealServer.cpp"
"NtParadoxTeleServer.cpp"
"NtVentureSpeedPadServer.cpp"
"NtVentureCannonServer.cpp"
"NtBcSubmitServer.cpp"
"NtNaomiBreadcrumbServer.cpp"
PARENT_SCOPE)

View File

@@ -0,0 +1,15 @@
#include "NTPipeVisibilityServer.h"
#include "Entity.h"
#include "Character.h"
void NTPipeVisibilityServer::OnRebuildComplete(Entity* self, Entity* target) {
const auto flag = self->GetVar<int32_t>(u"flag");
if (flag == 0) return;
auto* character = target->GetCharacter();
if (!character) return;
character->SetPlayerFlag(flag, true);
GameMessages::SendNotifyClientObject(self->GetObjectID(), u"PipeBuilt");
}

View File

@@ -0,0 +1,11 @@
#ifndef __NTPIPEVISIBILITYSERVER__H__
#define __NTPIPEVISIBILITYSERVER__H__
#include "CppScripts.h"
class NTPipeVisibilityServer : public CppScripts::Script {
public:
void OnRebuildComplete(Entity* self, Entity* target) override;
};
#endif //!__NTPIPEVISIBILITYSERVER__H__

View File

@@ -0,0 +1,34 @@
#include "NtBcSubmitServer.h"
#include <cstdint>
#include <map>
#include "Entity.h"
#include "MissionComponent.h"
// https://explorer.lu/missions/
// Key is the main mission, value is the breadcrumb mission to reset upon Mission Dialogue Ok.
// To see the actual missions, just append the number to the end of the URL.
namespace {
std::map<uint32_t, uint32_t> ResetMissionsTable = {
{999, 1335},
{1002, 1355},
{1006, 1349},
{1009, 1348},
{1379, 1335},
{1380, 1355},
{1378, 1349},
{1377, 1348},
};
}
void NtBcSubmitServer::OnMissionDialogueOK(Entity* self, Entity* target, int missionID, eMissionState missionState) {
auto* missionComponent = target->GetComponent<MissionComponent>();
if (!missionComponent) return;
auto it = ResetMissionsTable.find(missionID);
if (it == ResetMissionsTable.end()) return;
const auto missionToReset = it->second;
missionComponent->ResetMission(missionToReset);
}

View File

@@ -0,0 +1,11 @@
#ifndef __NTBCSUBMITSERVER__H__
#define __NTBCSUBMITSERVER__H__
#include "CppScripts.h"
class NtBcSubmitServer : public virtual CppScripts::Script {
public:
void OnMissionDialogueOK(Entity* self, Entity* target, int missionID, eMissionState missionState) override;
};
#endif //!__NTBCSUBMITSERVER__H__

View File

@@ -37,4 +37,5 @@ void NtDukeServer::OnMissionDialogueOK(Entity* self, Entity* target, int mission
inventoryComponent->RemoveItem(m_SwordLot, lotCount);
}
}
NtBcSubmitServer::OnMissionDialogueOK(self, target, missionID, missionState);
}

View File

@@ -1,7 +1,8 @@
#pragma once
#include "NtFactionSpyServer.h"
#include "NtBcSubmitServer.h"
class NtDukeServer : public NtFactionSpyServer {
class NtDukeServer : public NtFactionSpyServer, public NtBcSubmitServer {
void SetVariables(Entity* self) override;
void OnMissionDialogueOK(Entity* self, Entity* target, int missionID, eMissionState missionState) override;
const uint32_t m_SwordMissionID = 1448;

View File

@@ -1,6 +1,7 @@
#pragma once
#include "NtFactionSpyServer.h"
#include "NtBcSubmitServer.h"
class NtHaelServer : public NtFactionSpyServer {
class NtHaelServer : public NtFactionSpyServer, public NtBcSubmitServer {
void SetVariables(Entity* self) override;
};

View File

@@ -0,0 +1,43 @@
#include "NtNaomiBreadcrumbServer.h"
#include <map>
#include "eMissionState.h"
#include "MissionComponent.h"
// https://explorer.lu/missions/
// Key is the main mission, value is the breadcrumb mission to reset upon Mission Dialogue Ok.
// To see the actual missions, just append the number to the end of the URL.
namespace {
std::map<int32_t, std::vector<int32_t>> CompleteBcMissionTable = {
{1377, {1378, 1379, 1380, 1349, 1335, 1355}},
{1378, {1377, 1379, 1380, 1348, 1335, 1355}},
{1379, {1377, 1378, 1380, 1348, 1349, 1355}},
{1380, {1377, 1378, 1379, 1348, 1349, 1335}},
};
std::map<int32_t, int32_t> MatchingBCTable = {
{1377, 1348},
{1378, 1349},
{1379, 1335},
{1380, 1355}
};
}
void NtNaomiBreadcrumbServer::OnMissionDialogueOK(Entity* self, Entity* target, int missionID, eMissionState missionState) {
auto* missionComponent = target->GetComponent<MissionComponent>();
if (!missionComponent) return;
auto itr = MatchingBCTable.find(missionID);
if (itr == MatchingBCTable.end()) return;
missionComponent->AcceptMission(itr->second);
auto it = CompleteBcMissionTable.find(missionID);
if (it == CompleteBcMissionTable.end()) return;
if (missionState == eMissionState::AVAILABLE || missionState == eMissionState::COMPLETE_AVAILABLE) {
for (const auto& bcMission : it->second) {
missionComponent->ResetMission(bcMission);
}
}
}

View File

@@ -0,0 +1,11 @@
#ifndef __NTNAOMIBREADCRUMBSERVER__H__
#define __NTNAOMIBREADCRUMBSERVER__H__
#include "CppScripts.h"
class NtNaomiBreadcrumbServer : public CppScripts::Script {
public:
void OnMissionDialogueOK(Entity* self, Entity* target, int missionID, eMissionState missionState) override;
};
#endif //!__NTNAOMIBREADCRUMBSERVER__H__

View File

@@ -1,7 +1,8 @@
#pragma once
#include "NtFactionSpyServer.h"
#include "NtBcSubmitServer.h"
class NtOverbuildServer : public NtFactionSpyServer {
class NtOverbuildServer : public NtFactionSpyServer, public NtBcSubmitServer {
void SetVariables(Entity* self) override;
const std::u16string m_OtherEntitiesGroupVariable = u"SpyConvo2Group";
};

View File

@@ -11,4 +11,5 @@ void NtVandaServer::OnMissionDialogueOK(Entity* self, Entity* target, int missio
inventoryComponent->RemoveItem(alienPartLot, 1);
}
}
NtBcSubmitServer::OnMissionDialogueOK(self, target, missionID, missionState);
}

View File

@@ -1,7 +1,8 @@
#pragma once
#include "CppScripts.h"
#include "NtBcSubmitServer.h"
class NtVandaServer : public CppScripts::Script {
class NtVandaServer : public NtBcSubmitServer {
void OnMissionDialogueOK(Entity* self, Entity* target, int missionID, eMissionState missionState) override;
const uint32_t m_AlienPartMissionID = 1183;
const std::vector<LOT> m_AlienPartLots = { 12479, 12480, 12481 };