Compare commits

...

10 Commits

Author SHA1 Message Date
David Markowitz
0e4e1def81 Update names 2024-05-12 22:53:03 -07:00
David Markowitz
6218266a4a add script tests 2024-05-12 22:48:13 -07:00
David Markowitz
9f382aca42 fix: use after free in mission progression after removing item from inventory (#1567)
that method is cursed.

no longer has ub when deleting an item from the inventory
2024-05-12 07:30:03 -05:00
David Markowitz
4d1395e522 Update CheatDetection.cpp (#1559) 2024-05-10 16:20:42 -05:00
9e36510c6b chore: Bump verion to 2.3.0 (#1564)
fix versions.txt, update cmake version
2024-05-10 15:21:10 -05:00
David Markowitz
2ca61c3e57 feat: Dragonmaw (#1562)
* rigid as heck

* abstract physics creation to separate function

* loading

Update FvRacePillarDServer.cpp

consolidate abcd pillar logic

modularization

Update SimplePhysicsComponent.cpp

Update EntityManager.cpp

Update MovingPlatformComponent.cpp

still need another pass

* geiser works

* columns working finally

* consolidate logic

* constiness

* Update PhantomPhysicsComponent.cpp

* Update PhysicsComponent.cpp

* revert testing code

* add versions info

---------

Co-authored-by: Aaron Kimbre <aronwk.aaron@gmail.com>
2024-05-10 09:22:26 -05:00
07cb19cc30 chore: remove json (#1561)
we can't use it currently due to threadsafety issues, so just going to remove it until we actually need it and will re-add it as a vendored file later due to cmake issues pulling in things
2024-05-02 06:35:55 -05:00
David Markowitz
794b254fe7 remove md5 new (#1560)
tested that sqlite hash is still calculated
2024-05-02 06:35:44 -05:00
Gie "Max" Vanommeslaeghe
ab7f6f0b57 Merge pull request #1558 from DarkflameUniverse/swap-update-order
fix: out of order physics updates
2024-05-01 22:33:45 +02:00
David Markowitz
58cc569c75 fix out of order physics updates
fixes an issue where physics entities were not given a chance to be marked as sleeping, causing a initial sleeping calls to be missed and causing objects that collided with one another to not register new collisions since they were sleeping at the time the new collision fired off.

Tested that Brick Fury now corectly aggros the _first_ spawn of enemies near by to him.
Tested that the turrets in crux prime now correctly shoot the _first_ wave of enemies that spawn.
2024-04-30 23:09:35 -07:00
39 changed files with 2606 additions and 261 deletions

View File

@@ -96,7 +96,6 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
find_package(MariaDB)
find_package(JSON)
# Create a /resServer directory
make_directory(${CMAKE_BINARY_DIR}/resServer)
@@ -230,6 +229,7 @@ include_directories(
"tests/dCommonTests"
"tests/dGameTests"
"tests/dGameTests/dComponentsTests"
"tests/dGameTests/dScriptsTests"
SYSTEM "thirdparty/magic_enum/include/magic_enum"
SYSTEM "thirdparty/raknet/Source"
@@ -285,7 +285,7 @@ add_subdirectory(dPhysics)
add_subdirectory(dServer)
# Create a list of common libraries shared between all binaries
set(COMMON_LIBRARIES "dCommon" "dDatabase" "dNet" "raknet" "MariaDB::ConnCpp" "magic_enum" "nlohmann_json::nlohmann_json")
set(COMMON_LIBRARIES "dCommon" "dDatabase" "dNet" "raknet" "MariaDB::ConnCpp" "magic_enum")
# Add platform specific common libraries
if(UNIX)

View File

@@ -1,6 +1,6 @@
PROJECT_VERSION_MAJOR=1
PROJECT_VERSION_MINOR=1
PROJECT_VERSION_PATCH=1
PROJECT_VERSION_MAJOR=2
PROJECT_VERSION_MINOR=3
PROJECT_VERSION_PATCH=0
# Debugging
# Set DYNAMIC to 1 to enable the -rdynamic flag for the linker, yielding some symbols in crashlogs.

View File

@@ -1,20 +0,0 @@
include(FetchContent)
message(STATUS "Fetching json...")
FetchContent_Declare(
json
GIT_REPOSITORY https://github.com/nlohmann/json
GIT_TAG v3.11.3
)
FetchContent_GetProperties(json)
if(NOT json_POPULATED)
FetchContent_Populate(json)
add_subdirectory(${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
FetchContent_MakeAvailable(json)
message(STATUS "json fetched and is now ready.")
set(JSON_FOUND TRUE)

View File

@@ -1840,6 +1840,12 @@ const NiPoint3& Entity::GetPosition() const {
return vehicel->GetPosition();
}
auto* rigidBodyPhantomPhysicsComponent = GetComponent<RigidbodyPhantomPhysicsComponent>();
if (rigidBodyPhantomPhysicsComponent != nullptr) {
return rigidBodyPhantomPhysicsComponent->GetPosition();
}
return NiPoint3Constant::ZERO;
}
@@ -1868,6 +1874,12 @@ const NiQuaternion& Entity::GetRotation() const {
return vehicel->GetRotation();
}
auto* rigidBodyPhantomPhysicsComponent = GetComponent<RigidbodyPhantomPhysicsComponent>();
if (rigidBodyPhantomPhysicsComponent != nullptr) {
return rigidBodyPhantomPhysicsComponent->GetRotation();
}
return NiQuaternionConstant::IDENTITY;
}
@@ -1896,6 +1908,12 @@ void Entity::SetPosition(const NiPoint3& position) {
vehicel->SetPosition(position);
}
auto* rigidBodyPhantomPhysicsComponent = GetComponent<RigidbodyPhantomPhysicsComponent>();
if (rigidBodyPhantomPhysicsComponent != nullptr) {
rigidBodyPhantomPhysicsComponent->SetPosition(position);
}
Game::entityManager->SerializeEntity(this);
}
@@ -1924,6 +1942,12 @@ void Entity::SetRotation(const NiQuaternion& rotation) {
vehicel->SetRotation(rotation);
}
auto* rigidBodyPhantomPhysicsComponent = GetComponent<RigidbodyPhantomPhysicsComponent>();
if (rigidBodyPhantomPhysicsComponent != nullptr) {
rigidBodyPhantomPhysicsComponent->SetRotation(rotation);
}
Game::entityManager->SerializeEntity(this);
}

View File

@@ -47,7 +47,7 @@ PhantomPhysicsComponent::PhantomPhysicsComponent(Entity* parent) : PhysicsCompon
m_Direction = NiPoint3(); // * m_DirectionalMultiplier
if (m_Parent->GetVar<bool>(u"create_physics")) {
CreatePhysics();
m_dpEntity = CreatePhysicsLnv(m_Scale, ComponentType);
}
if (m_Parent->GetVar<bool>(u"respawnVol")) {
@@ -89,105 +89,9 @@ PhantomPhysicsComponent::PhantomPhysicsComponent(Entity* parent) : PhysicsCompon
m_RespawnRot = m_Rotation;
}
/*
for (LDFBaseData* data : settings) {
if (data) {
if (data->GetKey() == u"create_physics") {
if (bool(std::stoi(data->GetValueAsString()))) {
CreatePhysics(settings);
}
}
if (data->GetKey() == u"respawnVol") {
if (bool(std::stoi(data->GetValueAsString()))) {
m_IsRespawnVolume = true;
}
}
if (m_IsRespawnVolume) {
if (data->GetKey() == u"rspPos") {
//Joy, we get to split strings!
std::stringstream test(data->GetValueAsString());
std::string segment;
std::vector<std::string> seglist;
while (std::getline(test, segment, '\x1f')) {
seglist.push_back(segment);
}
m_RespawnPos = NiPoint3(std::stof(seglist[0]), std::stof(seglist[1]), std::stof(seglist[2]));
}
if (data->GetKey() == u"rspRot") {
//Joy, we get to split strings!
std::stringstream test(data->GetValueAsString());
std::string segment;
std::vector<std::string> seglist;
while (std::getline(test, segment, '\x1f')) {
seglist.push_back(segment);
}
m_RespawnRot = NiQuaternion(std::stof(seglist[0]), std::stof(seglist[1]), std::stof(seglist[2]), std::stof(seglist[3]));
}
}
if (m_Parent->GetLOT() == 4945) // HF - RespawnPoints
{
m_IsRespawnVolume = true;
m_RespawnPos = m_Position;
m_RespawnRot = m_Rotation;
}
}
}
*/
if (!m_HasCreatedPhysics) {
CDComponentsRegistryTable* compRegistryTable = CDClientManager::GetTable<CDComponentsRegistryTable>();
auto componentID = compRegistryTable->GetByIDAndType(m_Parent->GetLOT(), eReplicaComponentType::PHANTOM_PHYSICS);
CDPhysicsComponentTable* physComp = CDClientManager::GetTable<CDPhysicsComponentTable>();
if (physComp == nullptr) return;
auto* info = physComp->GetByID(componentID);
if (info == nullptr || info->physicsAsset == "" || info->physicsAsset == "NO_PHYSICS") return;
//temp test
if (info->physicsAsset == "miscellaneous\\misc_phys_10x1x5.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 10.0f, 5.0f, 1.0f);
} else if (info->physicsAsset == "miscellaneous\\misc_phys_640x640.hkx") {
// TODO Fix physics simulation to do simulation at high velocities due to bullet through paper problem...
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 1638.4f, 13.521004f * 2.0f, 1638.4f);
// Move this down by 13.521004 units so it is still effectively at the same height as before
m_Position = m_Position - NiPoint3Constant::UNIT_Y * 13.521004f;
} else if (info->physicsAsset == "env\\trigger_wall_tall.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 10.0f, 25.0f, 1.0f);
} else if (info->physicsAsset == "env\\env_gen_placeholderphysics.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 20.0f, 20.0f, 20.0f);
} else if (info->physicsAsset == "env\\POI_trigger_wall.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 1.0f, 12.5f, 20.0f); // Not sure what the real size is
} else if (info->physicsAsset == "env\\NG_NinjaGo\\env_ng_gen_gate_chamber_puzzle_ceiling_tile_falling_phantom.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 18.0f, 5.0f, 15.0f);
m_Position += m_Rotation.GetForwardVector() * 7.5f;
} else if (info->physicsAsset == "env\\NG_NinjaGo\\ng_flamejet_brick_phantom.HKX") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 1.0f, 1.0f, 12.0f);
m_Position += m_Rotation.GetForwardVector() * 6.0f;
} else if (info->physicsAsset == "env\\Ring_Trigger.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 6.0f, 6.0f, 6.0f);
} else if (info->physicsAsset == "env\\vfx_propertyImaginationBall.hkx") {
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 4.5f);
} 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_Position.y -= (111.467964f * m_Scale) / 2;
} else {
// LOG_DEBUG("This one is supposed to have %s", info->physicsAsset.c_str());
//add fallback cube:
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), 2.0f, 2.0f, 2.0f);
}
if (!m_dpEntity) {
m_dpEntity = CreatePhysicsEntity(ComponentType);
if (!m_dpEntity) return;
m_dpEntity->SetScale(m_Scale);
m_dpEntity->SetRotation(m_Rotation);
m_dpEntity->SetPosition(m_Position);
@@ -201,69 +105,6 @@ PhantomPhysicsComponent::~PhantomPhysicsComponent() {
}
}
void PhantomPhysicsComponent::CreatePhysics() {
unsigned char alpha;
unsigned char red;
unsigned char green;
unsigned char blue;
int type = -1;
float x = 0.0f;
float y = 0.0f;
float z = 0.0f;
float width = 0.0f; //aka "radius"
float height = 0.0f;
if (m_Parent->HasVar(u"primitiveModelType")) {
type = m_Parent->GetVar<int32_t>(u"primitiveModelType");
x = m_Parent->GetVar<float>(u"primitiveModelValueX");
y = m_Parent->GetVar<float>(u"primitiveModelValueY");
z = m_Parent->GetVar<float>(u"primitiveModelValueZ");
} else {
CDComponentsRegistryTable* compRegistryTable = CDClientManager::GetTable<CDComponentsRegistryTable>();
auto componentID = compRegistryTable->GetByIDAndType(m_Parent->GetLOT(), eReplicaComponentType::PHANTOM_PHYSICS);
CDPhysicsComponentTable* physComp = CDClientManager::GetTable<CDPhysicsComponentTable>();
if (physComp == nullptr) return;
auto info = physComp->GetByID(componentID);
if (info == nullptr) return;
type = info->pcShapeType;
width = info->playerRadius;
height = info->playerHeight;
}
switch (type) {
case 1: { //Make a new box shape
NiPoint3 boxSize(x, y, z);
if (x == 0.0f) {
//LU has some weird values, so I think it's best to scale them down a bit
if (height < 0.5f) height = 2.0f;
if (width < 0.5f) width = 2.0f;
//Scale them:
width = width * m_Scale;
height = height * m_Scale;
boxSize = NiPoint3(width, height, width);
}
m_dpEntity = new dpEntity(m_Parent->GetObjectID(), boxSize);
break;
}
}
if (!m_dpEntity) return;
m_dpEntity->SetPosition({ m_Position.x, m_Position.y - (height / 2), m_Position.z });
dpWorld::AddEntity(m_dpEntity);
m_HasCreatedPhysics = true;
}
void PhantomPhysicsComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) {
PhysicsComponent::Serialize(outBitStream, bIsInitialUpdate);
@@ -308,8 +149,9 @@ void ApplyCollisionEffect(const LWOOBJID& target, const ePhysicsEffectType effec
controllablePhysicsComponent->SetGravityScale(effectScale);
GameMessages::SendSetGravityScale(target, effectScale, targetEntity->GetSystemAddress());
}
break;
}
// The other types are not handled by the server
case ePhysicsEffectType::ATTRACT:
case ePhysicsEffectType::FRICTION:
case ePhysicsEffectType::PUSH:
@@ -317,6 +159,7 @@ void ApplyCollisionEffect(const LWOOBJID& target, const ePhysicsEffectType effec
default:
break;
}
// The other types are not handled by the server and are here to handle all cases of the enum.
}
void PhantomPhysicsComponent::Update(float deltaTime) {
@@ -356,24 +199,12 @@ void PhantomPhysicsComponent::SetDirection(const NiPoint3& pos) {
m_IsDirectional = true;
}
void PhantomPhysicsComponent::SpawnVertices() {
if (!m_dpEntity) return;
LOG("%llu", m_Parent->GetObjectID());
auto box = static_cast<dpShapeBox*>(m_dpEntity->GetShape());
for (auto vert : box->GetVertices()) {
LOG("%f, %f, %f", vert.x, vert.y, vert.z);
EntityInfo info;
info.lot = 33;
info.pos = vert;
info.spawner = nullptr;
info.spawnerID = m_Parent->GetObjectID();
info.spawnerNodeID = 0;
Entity* newEntity = Game::entityManager->CreateEntity(info, nullptr);
Game::entityManager->ConstructEntity(newEntity);
void PhantomPhysicsComponent::SpawnVertices() const {
if (!m_dpEntity) {
LOG("No dpEntity to spawn vertices for %llu:%i", m_Parent->GetObjectID(), m_Parent->GetLOT());
return;
}
PhysicsComponent::SpawnVertices(m_dpEntity);
}
void PhantomPhysicsComponent::SetDirectionalMultiplier(float mul) {

View File

@@ -18,6 +18,7 @@ class LDFBaseData;
class Entity;
class dpEntity;
enum class ePhysicsEffectType : uint32_t ;
enum class eReplicaComponentType : uint32_t;
/**
* Allows the creation of phantom physics for an entity: a physics object that is generally invisible but can be
@@ -34,11 +35,6 @@ public:
void Update(float deltaTime) override;
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
/**
* Creates the physics shape for this entity based on LDF data
*/
void CreatePhysics();
/**
* Sets the direction this physics object is pointed at
* @param pos the direction to set
@@ -109,7 +105,7 @@ public:
/**
* Spawns an object at each of the vertices for debugging purposes
*/
void SpawnVertices();
void SpawnVertices() const;
/**
* Legacy stuff no clue what this does
@@ -166,11 +162,6 @@ private:
*/
dpEntity* m_dpEntity;
/**
* Whether or not the physics object has been created yet
*/
bool m_HasCreatedPhysics = false;
/**
* Whether or not this physics object represents an object that updates the respawn pos of an entity that crosses it
*/

View File

@@ -1,5 +1,19 @@
#include "PhysicsComponent.h"
#include "eReplicaComponentType.h"
#include "NiPoint3.h"
#include "NiQuaternion.h"
#include "CDComponentsRegistryTable.h"
#include "CDPhysicsComponentTable.h"
#include "dpEntity.h"
#include "dpWorld.h"
#include "dpShapeBox.h"
#include "dpShapeSphere.h"
#include "EntityInfo.h"
PhysicsComponent::PhysicsComponent(Entity* parent) : Component(parent) {
m_Position = NiPoint3Constant::ZERO;
m_Rotation = NiQuaternionConstant::IDENTITY;
@@ -19,3 +33,190 @@ void PhysicsComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsInitia
if (!bIsInitialUpdate) m_DirtyPosition = false;
}
}
dpEntity* PhysicsComponent::CreatePhysicsEntity(eReplicaComponentType type) {
CDComponentsRegistryTable* compRegistryTable = CDClientManager::GetTable<CDComponentsRegistryTable>();
auto componentID = compRegistryTable->GetByIDAndType(m_Parent->GetLOT(), type);
CDPhysicsComponentTable* physComp = CDClientManager::GetTable<CDPhysicsComponentTable>();
if (physComp == nullptr) return nullptr;
auto* info = physComp->GetByID(componentID);
if (info == nullptr || info->physicsAsset == "" || info->physicsAsset == "NO_PHYSICS") return nullptr;
dpEntity* toReturn;
if (info->physicsAsset == "miscellaneous\\misc_phys_10x1x5.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 10.0f, 5.0f, 1.0f);
} else if (info->physicsAsset == "miscellaneous\\misc_phys_640x640.hkx") {
// TODO Fix physics simulation to do simulation at high velocities due to bullet through paper problem...
toReturn = new dpEntity(m_Parent->GetObjectID(), 1638.4f, 13.521004f * 2.0f, 1638.4f);
// Move this down by 13.521004 units so it is still effectively at the same height as before
m_Position = m_Position - NiPoint3Constant::UNIT_Y * 13.521004f;
} else if (info->physicsAsset == "env\\trigger_wall_tall.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 10.0f, 25.0f, 1.0f);
} else if (info->physicsAsset == "env\\env_gen_placeholderphysics.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 20.0f, 20.0f, 20.0f);
} else if (info->physicsAsset == "env\\POI_trigger_wall.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 1.0f, 12.5f, 20.0f); // Not sure what the real size is
} else if (info->physicsAsset == "env\\NG_NinjaGo\\env_ng_gen_gate_chamber_puzzle_ceiling_tile_falling_phantom.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 18.0f, 5.0f, 15.0f);
m_Position += m_Rotation.GetForwardVector() * 7.5f;
} else if (info->physicsAsset == "env\\NG_NinjaGo\\ng_flamejet_brick_phantom.HKX") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 1.0f, 1.0f, 12.0f);
m_Position += m_Rotation.GetForwardVector() * 6.0f;
} else if (info->physicsAsset == "env\\Ring_Trigger.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 6.0f, 6.0f, 6.0f);
} else if (info->physicsAsset == "env\\vfx_propertyImaginationBall.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 4.5f);
} else if (info->physicsAsset == "env\\env_won_fv_gas-blocking-volume.hkx") {
toReturn = new dpEntity(m_Parent->GetObjectID(), 390.496826f, 111.467964f, 600.821534f, true);
m_Position.y -= (111.467964f * m_Parent->GetDefaultScale()) / 2;
} else {
// LOG_DEBUG("This one is supposed to have %s", info->physicsAsset.c_str());
//add fallback cube:
toReturn = new dpEntity(m_Parent->GetObjectID(), 2.0f, 2.0f, 2.0f);
}
return toReturn;
}
dpEntity* PhysicsComponent::CreatePhysicsLnv(const float scale, const eReplicaComponentType type) const {
int pcShapeType = -1;
float x = 0.0f;
float y = 0.0f;
float z = 0.0f;
float width = 0.0f; //aka "radius"
float height = 0.0f;
dpEntity* toReturn = nullptr;
if (m_Parent->HasVar(u"primitiveModelType")) {
pcShapeType = m_Parent->GetVar<int32_t>(u"primitiveModelType");
x = m_Parent->GetVar<float>(u"primitiveModelValueX");
y = m_Parent->GetVar<float>(u"primitiveModelValueY");
z = m_Parent->GetVar<float>(u"primitiveModelValueZ");
} else {
CDComponentsRegistryTable* compRegistryTable = CDClientManager::GetTable<CDComponentsRegistryTable>();
auto componentID = compRegistryTable->GetByIDAndType(m_Parent->GetLOT(), type);
CDPhysicsComponentTable* physComp = CDClientManager::GetTable<CDPhysicsComponentTable>();
if (physComp == nullptr) return nullptr;
auto info = physComp->GetByID(componentID);
if (info == nullptr) return nullptr;
pcShapeType = info->pcShapeType;
width = info->playerRadius;
height = info->playerHeight;
}
switch (pcShapeType) {
case 0: { // HKX type
break;
}
case 1: { //Make a new box shape
NiPoint3 boxSize(x, y, z);
if (x == 0.0f) {
//LU has some weird values, so I think it's best to scale them down a bit
if (height < 0.5f) height = 2.0f;
if (width < 0.5f) width = 2.0f;
//Scale them:
width = width * scale;
height = height * scale;
boxSize = NiPoint3(width, height, width);
}
toReturn = new dpEntity(m_Parent->GetObjectID(), boxSize);
toReturn->SetPosition({ m_Position.x, m_Position.y - (height / 2), m_Position.z });
break;
}
case 2: { //Make a new cylinder shape
break;
}
case 3: { //Make a new sphere shape
auto [x, y, z] = m_Position;
toReturn = new dpEntity(m_Parent->GetObjectID(), width);
toReturn->SetPosition({ x, y, z });
break;
}
case 4: { //Make a new capsule shape
break;
}
}
if (toReturn) dpWorld::AddEntity(toReturn);
return toReturn;
}
void PhysicsComponent::SpawnVertices(dpEntity* entity) const {
if (!entity) return;
LOG("Spawning vertices for %llu", m_Parent->GetObjectID());
EntityInfo info;
info.lot = 33;
info.spawner = nullptr;
info.spawnerID = m_Parent->GetObjectID();
info.spawnerNodeID = 0;
// These don't use overloaded methods as dPhysics does not link with dGame at the moment.
auto box = dynamic_cast<dpShapeBox*>(entity->GetShape());
if (box) {
for (auto vert : box->GetVertices()) {
LOG("Vertex at %f, %f, %f", vert.x, vert.y, vert.z);
info.pos = vert;
Entity* newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
}
}
auto sphere = dynamic_cast<dpShapeSphere*>(entity->GetShape());
if (sphere) {
auto [x, y, z] = entity->GetPosition(); // Use shapes position instead of the parent's position in case it's different
float plusX = x + sphere->GetRadius();
float minusX = x - sphere->GetRadius();
float plusY = y + sphere->GetRadius();
float minusY = y - sphere->GetRadius();
float plusZ = z + sphere->GetRadius();
float minusZ = z - sphere->GetRadius();
auto radius = sphere->GetRadius();
LOG("Radius: %f", radius);
LOG("Plus Vertices %f %f %f", plusX, plusY, plusZ);
LOG("Minus Vertices %f %f %f", minusX, minusY, minusZ);
info.pos = NiPoint3{ x, plusY, z };
Entity* newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
info.pos = NiPoint3{ x, minusY, z };
newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
info.pos = NiPoint3{ plusX, y, z };
newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
info.pos = NiPoint3{ minusX, y, z };
newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
info.pos = NiPoint3{ x, y, plusZ };
newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
info.pos = NiPoint3{ x, y, minusZ };
newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
info.pos = NiPoint3{ x, y, z };
newEntity = Game::entityManager->CreateEntity(info);
Game::entityManager->ConstructEntity(newEntity);
}
}

View File

@@ -9,6 +9,10 @@ namespace Raknet {
class BitStream;
};
enum class eReplicaComponentType : uint32_t;
class dpEntity;
class PhysicsComponent : public Component {
public:
PhysicsComponent(Entity* parent);
@@ -22,6 +26,12 @@ public:
const NiQuaternion& GetRotation() const { return m_Rotation; }
virtual void SetRotation(const NiQuaternion& rot) { if (m_Rotation == rot) return; m_Rotation = rot; m_DirtyPosition = true; }
protected:
dpEntity* CreatePhysicsEntity(eReplicaComponentType type);
dpEntity* CreatePhysicsLnv(const float scale, const eReplicaComponentType type) const;
void SpawnVertices(dpEntity* entity) const;
NiPoint3 m_Position;
NiQuaternion m_Rotation;

View File

@@ -817,8 +817,10 @@ void RacingControlComponent::Update(float deltaTime) {
// Some offset up to make they don't fall through the terrain on a
// respawn, seems to fix itself to the track anyhow
player.respawnPosition = position + NiPoint3Constant::UNIT_Y * 5;
player.respawnRotation = vehicle->GetRotation();
if (waypoint.racing.isResetNode) {
player.respawnPosition = position + NiPoint3Constant::UNIT_Y * 5;
player.respawnRotation = vehicle->GetRotation();
}
player.respawnIndex = respawnIndex;
// Reached the start point, lapped

View File

@@ -1,16 +1,57 @@
/*
* Darkflame Universe
* Copyright 2023
*/
// Darkflame Universe
// Copyright 2024
#include "RigidbodyPhantomPhysicsComponent.h"
#include "Entity.h"
#include "dpEntity.h"
#include "CDComponentsRegistryTable.h"
#include "CDPhysicsComponentTable.h"
#include "dpWorld.h"
#include "dpShapeBox.h"
#include "dpShapeSphere.h"
#include"EntityInfo.h"
RigidbodyPhantomPhysicsComponent::RigidbodyPhantomPhysicsComponent(Entity* parent) : PhysicsComponent(parent) {
m_Position = m_Parent->GetDefaultPosition();
m_Rotation = m_Parent->GetDefaultRotation();
m_Scale = m_Parent->GetDefaultScale();
if (m_Parent->GetVar<bool>(u"create_physics")) {
m_dpEntity = CreatePhysicsLnv(m_Scale, ComponentType);
if (!m_dpEntity) {
m_dpEntity = CreatePhysicsEntity(ComponentType);
if (!m_dpEntity) return;
m_dpEntity->SetScale(m_Scale);
m_dpEntity->SetRotation(m_Rotation);
m_dpEntity->SetPosition(m_Position);
dpWorld::AddEntity(m_dpEntity);
}
}
}
void RigidbodyPhantomPhysicsComponent::Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) {
PhysicsComponent::Serialize(outBitStream, bIsInitialUpdate);
}
void RigidbodyPhantomPhysicsComponent::Update(const float deltaTime) {
if (!m_dpEntity) return;
//Process enter events
for (const auto id : m_dpEntity->GetNewObjects()) {
m_Parent->OnCollisionPhantom(id);
}
//Process exit events
for (const auto id : m_dpEntity->GetRemovedObjects()) {
m_Parent->OnCollisionLeavePhantom(id);
}
}
void RigidbodyPhantomPhysicsComponent::SpawnVertices() const {
if (!m_dpEntity) {
LOG("No dpEntity to spawn vertices for %llu:%i", m_Parent->GetObjectID(), m_Parent->GetLOT());
return;
}
PhysicsComponent::SpawnVertices(m_dpEntity);
}

View File

@@ -1,10 +1,8 @@
/*
* Darkflame Universe
* Copyright 2023
*/
// Darkflame Universe
// Copyright 2024
#ifndef __RIGIDBODYPHANTOMPHYSICS_H__
#define __RIGIDBODYPHANTOMPHYSICS_H__
#ifndef RIGIDBODYPHANTOMPHYSICS_H
#define RIGIDBODYPHANTOMPHYSICS_H
#include "BitStream.h"
#include "dCommonVars.h"
@@ -13,6 +11,8 @@
#include "PhysicsComponent.h"
#include "eReplicaComponentType.h"
class dpEntity;
/**
* Component that handles rigid bodies that can be interacted with, mostly client-side rendered. An example is the
* bananas that fall from trees in GF.
@@ -23,7 +23,15 @@ public:
RigidbodyPhantomPhysicsComponent(Entity* parent);
void Update(const float deltaTime) override;
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
void SpawnVertices() const;
private:
float m_Scale{};
dpEntity* m_dpEntity{};
};
#endif // __RIGIDBODYPHANTOMPHYSICS_H__
#endif // RIGIDBODYPHANTOMPHYSICS_H

View File

@@ -369,8 +369,8 @@ void GameMessages::SendPlatformResync(Entity* entity, const SystemAddress& sysAd
const auto lot = entity->GetLOT();
if (lot == 12341 || lot == 5027 || lot == 5028 || lot == 14335 || lot == 14447 || lot == 14449) {
iDesiredWaypointIndex = 0;
if (lot == 12341 || lot == 5027 || lot == 5028 || lot == 14335 || lot == 14447 || lot == 14449 || lot == 11306 || lot == 11308) {
iDesiredWaypointIndex = (lot == 11306 || lot == 11308) ? 1 : 0;
iIndex = 0;
nextIndex = 0;
bStopAtDesiredWaypoint = true;
@@ -5354,14 +5354,14 @@ void GameMessages::HandleRemoveItemFromInventory(RakNet::BitStream& inStream, En
if (eInvType == eInventoryType::MODELS) {
item->DisassembleModel(iStackCount);
}
auto lot = item->GetLot();
item->SetCount(item->GetCount() - iStackCount, true);
Game::entityManager->SerializeEntity(entity);
auto* missionComponent = entity->GetComponent<MissionComponent>();
if (missionComponent != nullptr) {
missionComponent->Progress(eMissionTaskType::GATHER, item->GetLot(), LWOOBJID_EMPTY, "", -iStackCount);
missionComponent->Progress(eMissionTaskType::GATHER, lot, LWOOBJID_EMPTY, "", -iStackCount);
}
}
}

View File

@@ -130,12 +130,6 @@ bool CheatDetection::VerifyLwoobjidIsSender(const LWOOBJID& id, const SystemAddr
// This will be true if the player does not possess the entity they are trying to send a packet as.
// or if the user does not own the character they are trying to send a packet as.
if (invalidPacket) {
va_list args;
va_start(args, messageIfNotSender);
LogAndSaveFailedAntiCheatCheck(id, sysAddr, checkType, messageIfNotSender, args);
va_end(args);
}
return !invalidPacket;
}

View File

@@ -41,6 +41,7 @@
#include "ScriptedActivityComponent.h"
#include "SkillComponent.h"
#include "TriggerComponent.h"
#include "RigidbodyPhantomPhysicsComponent.h"
// Enums
#include "eGameMasterLevel.h"
@@ -1129,8 +1130,13 @@ namespace DEVGMCommands {
void SpawnPhysicsVerts(Entity* entity, const SystemAddress& sysAddr, const std::string args) {
//Go tell physics to spawn all the vertices:
auto entities = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::PHANTOM_PHYSICS);
for (auto en : entities) {
auto phys = static_cast<PhantomPhysicsComponent*>(en->GetComponent(eReplicaComponentType::PHANTOM_PHYSICS));
for (const auto* en : entities) {
const auto* phys = static_cast<PhantomPhysicsComponent*>(en->GetComponent(eReplicaComponentType::PHANTOM_PHYSICS));
if (phys)
phys->SpawnVertices();
}
for (const auto* en : Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::RIGID_BODY_PHANTOM_PHYSICS)) {
const auto* phys = en->GetComponent<RigidbodyPhantomPhysicsComponent>();
if (phys)
phys->SpawnVertices();
}

View File

@@ -82,7 +82,7 @@ void AuthPackets::SendHandshake(dServer* server, const SystemAddress& sysAddr, c
if (serverType == ServerType::Auth) bitStream.Write(ServiceId::Auth);
else if (serverType == ServerType::World) bitStream.Write(ServiceId::World);
else bitStream.Write(ServiceId::General);
bitStream.Write<uint64_t>(215523405360);
bitStream.Write<uint64_t>(215523470896);
server->Send(bitStream, sysAddr, false);
}

View File

@@ -1,3 +1,6 @@
set(DSCRIPTS_SOURCES_02_SERVER_MAP_FV_RACING
"RaceFireballs.cpp"
"RaceMaelstromGeiser.cpp"
"RaceShipLapColumnsServer.cpp"
"FvRacingColumns.cpp"
PARENT_SCOPE)

View File

@@ -0,0 +1,15 @@
#include "FvRacingColumns.h"
#include "MovingPlatformComponent.h"
void FvRacingColumns::OnStartup(Entity* self) {
auto* movingPlatformComponent = self->GetComponent<MovingPlatformComponent>();
if (!movingPlatformComponent) return;
movingPlatformComponent->StopPathing();
movingPlatformComponent->SetSerialized(true);
int32_t pathStart = 0;
if (self->HasVar(u"attached_path_start")) {
pathStart = self->GetVar<uint32_t>(u"attached_path_start");
}
movingPlatformComponent->WarpToWaypoint(pathStart);
}

View File

@@ -0,0 +1,6 @@
#include "CppScripts.h"
class FvRacingColumns : public CppScripts::Script {
public:
void OnStartup(Entity* self) override;
};

View File

@@ -0,0 +1,15 @@
#include "RaceFireballs.h"
#include "SkillComponent.h"
void RaceFireballs::OnStartup(Entity* self) {
self->AddTimer("fire", GeneralUtils::GenerateRandomNumber<float>(3.0f, 10.0f));
}
void RaceFireballs::OnTimerDone(Entity* self, std::string timerName) {
if (timerName == "fire") {
auto* skillComponent = self->GetComponent<SkillComponent>();
if (skillComponent) skillComponent->CastSkill(894);
self->AddTimer("fire", GeneralUtils::GenerateRandomNumber<float>(3.0f, 10.0f));
}
}

View File

@@ -0,0 +1,9 @@
#pragma once
#include "CppScripts.h"
class RaceFireballs : public CppScripts::Script
{
public:
void OnStartup(Entity* self) override;
void OnTimerDone(Entity* self, std::string timerName) override;
};

View File

@@ -0,0 +1,47 @@
#include "RaceShipLapColumnsServer.h"
#include "RacingControlComponent.h"
#include "MovingPlatformComponent.h"
void RaceShipLapColumnsServer::OnStartup(Entity* self) {
self->SetVar(u"Lap2Complete", false);
self->SetVar(u"Lap3Complete", false);
}
void SetMovingToWaypoint(const int32_t waypointIndex, const std::string group) {
const auto entities = Game::entityManager->GetEntitiesInGroup(group);
if (entities.empty()) return;
auto* entity = entities[0];
entity->SetIsGhostingCandidate(false);
auto* movingPlatfromComponent = entity->GetComponent<MovingPlatformComponent>();
if (!movingPlatfromComponent) return;
movingPlatfromComponent->SetSerialized(true);
movingPlatfromComponent->GotoWaypoint(waypointIndex);
Game::entityManager->SerializeEntity(entity);
}
void RaceShipLapColumnsServer::OnCollisionPhantom(Entity* self, Entity* target) {
if (!target) return;
const auto racingControllers = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::RACING_CONTROL);
if (racingControllers.empty()) return;
auto* racingControlComponent = racingControllers[0]->GetComponent<RacingControlComponent>();
if (!racingControlComponent) return;
const auto* player = racingControlComponent->GetPlayerData(target->GetObjectID());
if (!player) return;
if (player->lap == 1 && !self->GetVar<bool>(u"Lap2Complete")) {
self->SetVar(u"Lap2Complete", true);
SetMovingToWaypoint(1, "Lap2Column");
SetMovingToWaypoint(0, "Lap2Ramp");
} else if (player->lap == 2 && !self->GetVar<bool>(u"Lap3Complete")) {
self->SetVar(u"Lap3Complete", true);
SetMovingToWaypoint(1, "Lap3Column");
SetMovingToWaypoint(0, "Lap3Ramp");
}
}

View File

@@ -0,0 +1,8 @@
#pragma once
#include "CppScripts.h"
class RaceShipLapColumnsServer : public CppScripts::Script {
public:
void OnStartup(Entity* self) override;
void OnCollisionPhantom(Entity* self, Entity* target) override;
};

View File

@@ -154,6 +154,11 @@
#include "FvBounceOverWall.h"
#include "FvFong.h"
#include "FvMaelstromGeyser.h"
#include "FvRaceDragon.h"
#include "FvRacePillarABCServer.h"
#include "FvRacePillarDServer.h"
#include "RaceFireballs.h"
#include "RaceShipLapColumnsServer.h"
// FB Scripts
#include "AgJetEffectServer.h"
@@ -179,6 +184,7 @@
#include "RaceMaelstromGeiser.h"
#include "FvRaceSmashEggImagineServer.h"
#include "RaceSmashServer.h"
#include "FvRacingColumns.h"
// NT Scripts
#include "NtSentinelWalkwayServer.h"
@@ -622,9 +628,25 @@ CppScripts::Script* const CppScripts::GetScript(Entity* parent, const std::strin
script = new FvBounceOverWall();
else if (scriptName == "scripts\\02_server\\Map\\FV\\L_NPC_FONG.lua")
script = new FvFong();
else if (scriptName == "scripts\\ai\\FV\\L_FV_MAELSTROM_GEYSER.lua") {
else if (scriptName == "scripts\\ai\\FV\\L_FV_MAELSTROM_GEYSER.lua")
script = new FvMaelstromGeyser();
}
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\RACE_SHIP_LAP_COLUMNS_SERVER.lua")
script = new RaceShipLapColumnsServer();
// yes we know the lap numbers dont match the file name or anim. thats what they desgined it as.
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP1_SERVER.lua")
script = new FvRaceDragon("lap_01", 2);
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP2_SERVER.lua")
script = new FvRaceDragon("lap_02", 0);
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP3_SERVER.lua")
script = new FvRaceDragon("lap_03", 1);
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_ABC_SERVER.lua")
script = new FvRacePillarABCServer();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_D_SERVER.lua")
script = new FvRacePillarDServer();
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\RACE_FIREBALLS.lua")
script = new RaceFireballs();
//Misc:
if (scriptName == "scripts\\02_server\\Map\\General\\L_EXPLODING_ASSET.lua")
@@ -661,6 +683,8 @@ CppScripts::Script* const CppScripts::GetScript(Entity* parent, const std::strin
script = new RaceMaelstromGeiser();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_SMASH_EGG_IMAGINE_SERVER.lua")
script = new FvRaceSmashEggImagineServer();
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\FV_RACING_COLUMNS.lua")
script = new FvRacingColumns();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\RACE_SMASH_SERVER.lua")
script = new RaceSmashServer();

View File

@@ -1,6 +1,10 @@
set(DSCRIPTS_SOURCES_AI_RACING_OBJECTS
"RaceImagineCrateServer.cpp"
"RaceImaginePowerup.cpp"
"FvRaceDragon.cpp"
"FvRacePillarServer.cpp"
"FvRacePillarABCServer.cpp"
"FvRacePillarDServer.cpp"
"FvRaceSmashEggImagineServer.cpp"
"RaceSmashServer.cpp"
PARENT_SCOPE)

View File

@@ -0,0 +1,30 @@
#include "FvRaceDragon.h"
#include "RenderComponent.h"
#include "RacingControlComponent.h"
void FvRaceDragon::OnCollisionPhantom(Entity* self, Entity* target) {
if (!target) return;
const auto racingControllers = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::RACING_CONTROL);
if (racingControllers.empty()) return;
auto* racingControlComponent = racingControllers[0]->GetComponent<RacingControlComponent>();
if (!racingControlComponent) return;
const auto* player = racingControlComponent->GetPlayerData(target->GetObjectID());
if (!player) return;
if (player->lap != m_Lap) return;
const auto dragons = Game::entityManager->GetEntitiesInGroup("dragon");
for (const auto& dragon : dragons) {
if (!dragon || dragon->GetLOT() != this->m_Dragon) continue;
auto* renderComponent = dragon->GetComponent<RenderComponent>();
if (!renderComponent) continue;
renderComponent->PlayAnimation(dragon, m_LapAnimName);
}
Game::entityManager->DestroyEntity(self);
}

View File

@@ -0,0 +1,15 @@
#pragma once
#include "CppScripts.h"
#include <string>
#include <string_view>
class FvRaceDragon : public CppScripts::Script {
public:
FvRaceDragon(const std::string_view lapAnimName, const int32_t lap) : m_LapAnimName(lapAnimName), m_Lap(lap) {}
private:
void OnCollisionPhantom(Entity* self, Entity* target) override;
const std::string m_LapAnimName;
const int32_t m_Lap;
const LOT m_Dragon = 11898;
};

View File

@@ -0,0 +1,34 @@
#include "FvRacePillarABCServer.h"
#include "RenderComponent.h"
#include "RacingControlComponent.h"
void FvRacePillarABCServer::OnCollisionPhantom(Entity* self, Entity* target) {
if (!target) return;
const auto racingControllers = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::RACING_CONTROL);
if (racingControllers.empty()) return;
auto* racingControlComponent = racingControllers[0]->GetComponent<RacingControlComponent>();
if (!racingControlComponent) return;
const auto* player = racingControlComponent->GetPlayerData(target->GetObjectID());
if (!player || player->lap != 1) return;
PlayAnimation("crumble", "pillars", m_PillarA);
PlayAnimation("roar", "dragon", m_Dragon);
self->AddTimer("PillarBFall", 2.5f);
self->AddTimer("PillarCFall", 3.7f);
self->AddTimer("DeleteObject", 3.8f);
}
void FvRacePillarABCServer::OnTimerDone(Entity* self, std::string timerName) {
if (timerName == "PillarBFall") {
PlayAnimation("crumble", "pillars", m_PillarB);
} else if (timerName == "PillarCFall") {
PlayAnimation("crumble", "pillars", m_PillarC);
} else if (timerName == "DeleteObject") {
Game::entityManager->DestroyEntity(self);
}
}

View File

@@ -0,0 +1,13 @@
#pragma once
#include "CppScripts.h"
#include "FvRacePillarServer.h"
class FvRacePillarABCServer : public FvRacePillarServer {
void OnCollisionPhantom(Entity* self, Entity* target) override;
void OnTimerDone(Entity* self, std::string timerName) override;
private:
const LOT m_PillarA = 11946;
const LOT m_PillarB = 11947;
const LOT m_PillarC = 11948;
const LOT m_Dragon = 11898;
};

View File

@@ -0,0 +1,21 @@
#include "FvRacePillarDServer.h"
#include "RenderComponent.h"
#include "RacingControlComponent.h"
void FvRacePillarDServer::OnCollisionPhantom(Entity* self, Entity* target) {
if (!target) return;
const auto racingControllers = Game::entityManager->GetEntitiesByComponent(eReplicaComponentType::RACING_CONTROL);
if (racingControllers.empty()) return;
auto* racingControlComponent = racingControllers[0]->GetComponent<RacingControlComponent>();
if (!racingControlComponent) return;
const auto* player = racingControlComponent->GetPlayerData(target->GetObjectID());
if (!player) return;
if (player->lap == 2) {
PlayAnimation("crumble", "pillars", m_PillarD);
PlayAnimation("roar", "dragon", m_Dragon);
}
}

View File

@@ -0,0 +1,10 @@
#pragma once
#include "CppScripts.h"
#include "FvRacePillarServer.h"
class FvRacePillarDServer : public FvRacePillarServer {
void OnCollisionPhantom(Entity* self, Entity* target) override;
private:
const LOT m_PillarD = 11949;
const LOT m_Dragon = 11898;
};

View File

@@ -0,0 +1,15 @@
#include "FvRacePillarServer.h"
#include "Game.h"
#include "EntityManager.h"
#include "RenderComponent.h"
void FvRacePillarServer::PlayAnimation(const std::string animName, const std::string group, const LOT lot) {
const auto entities = Game::entityManager->GetEntitiesInGroup(group);
for (const auto& entity : entities) {
if (!entity || entity->GetLOT() != lot) continue;
auto* renderComponent = entity->GetComponent<RenderComponent>();
if (!renderComponent) continue;
renderComponent->PlayAnimation(entity, animName);
}
}

View File

@@ -0,0 +1,12 @@
#ifndef FVRACEPILLARSERVER__H
#define FVRACEPILLARSERVER__H
#include "CppScripts.h"
class FvRacePillarServer : public virtual CppScripts::Script {
protected:
// Plays an animation on all entities in a group with a specific LOT
void PlayAnimation(const std::string animName, const std::string group, const LOT lot);
};
#endif // FVRACEPILLARSERVER__H

View File

@@ -282,24 +282,22 @@ int main(int argc, char** argv) {
}
const int32_t bufferSize = 1024;
MD5* md5 = new MD5();
MD5 md5;
char fileStreamBuffer[1024] = {};
while (!fileStream.eof()) {
memset(fileStreamBuffer, 0, bufferSize);
fileStream.read(fileStreamBuffer, bufferSize);
md5->update(fileStreamBuffer, fileStream.gcount());
md5.update(fileStreamBuffer, fileStream.gcount());
}
fileStream.close();
const char* nullTerminateBuffer = "\0";
md5->update(nullTerminateBuffer, 1); // null terminate the data
md5->finalize();
databaseChecksum = md5->hexdigest();
delete md5;
md5.update(nullTerminateBuffer, 1); // null terminate the data
md5.finalize();
databaseChecksum = md5.hexdigest();
LOG("FDB Checksum calculated as: %s", databaseChecksum.c_str());
}
@@ -388,14 +386,14 @@ int main(int argc, char** argv) {
//In world we'd update our other systems here.
if (zoneID != 0 && deltaTime > 0.0f) {
Metrics::StartMeasurement(MetricVariable::Physics);
dpWorld::StepWorld(deltaTime);
Metrics::EndMeasurement(MetricVariable::Physics);
Metrics::StartMeasurement(MetricVariable::UpdateEntities);
Game::entityManager->UpdateEntities(deltaTime);
Metrics::EndMeasurement(MetricVariable::UpdateEntities);
Metrics::StartMeasurement(MetricVariable::Physics);
dpWorld::StepWorld(deltaTime);
Metrics::EndMeasurement(MetricVariable::Physics);
Metrics::StartMeasurement(MetricVariable::Ghosting);
if (std::chrono::duration<float>(currentTime - ghostingLastTime).count() >= 1.0f) {
Game::entityManager->UpdateGhosting();

View File

@@ -8,18 +8,33 @@ list(APPEND DGAMETEST_SOURCES ${DCOMPONENTS_TESTS})
add_subdirectory(dGameMessagesTests)
list(APPEND DGAMETEST_SOURCES ${DGAMEMESSAGES_TESTS})
add_subdirectory(dScriptsTests)
list(APPEND DGAMETEST_SOURCES ${DSCRIPTS_TESTS})
include_directories(${CMAKE_SOURCE_DIR}/dScripts)
file(COPY ${GAMEMESSAGE_TESTBITSTREAMS} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
# Add the executable. Remember to add all tests above this!
add_executable(dGameTests ${DGAMETEST_SOURCES})
add_dependencies(dGameTests conncpp_tests)
target_include_directories(dGameTests PRIVATE
$<TARGET_PROPERTY:dScriptsBase,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:dScriptsServer,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:dScriptsAI,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:dScriptsClient,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:dScriptsEquipmentScripts,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:dScriptsEquipmentTriggers,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:dScriptsZone,INTERFACE_INCLUDE_DIRECTORIES>
)
# Apple needs some special linkage for the mariadb connector for tests.
if(APPLE)
add_custom_command(TARGET dGameTests POST_BUILD
COMMAND install_name_tool ARGS -change libmariadbcpp.dylib @rpath/libmariadbcpp.dylib dGameTests
COMMAND otool ARGS -L dGameTests
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
add_custom_command(TARGET dGameTests POST_BUILD
COMMAND install_name_tool ARGS -change libmariadbcpp.dylib @rpath/libmariadbcpp.dylib dGameTests
COMMAND otool ARGS -L dGameTests
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endif()
target_link_libraries(dGameTests ${COMMON_LIBRARIES} GTest::gtest_main

View File

@@ -0,0 +1,11 @@
set(DSCRIPTS_TESTS
"dScriptsTests.cpp"
"CppScriptsOld.cpp"
)
# Get the folder name and prepend it to the files above
get_filename_component(thisFolderName ${CMAKE_CURRENT_SOURCE_DIR} NAME)
list(TRANSFORM DSCRIPTS_TESTS PREPEND "${thisFolderName}/")
# Export to parent scope
set(DSCRIPTS_TESTS ${DSCRIPTS_TESTS} PARENT_SCOPE)

View File

@@ -0,0 +1,991 @@
#include "CppScriptsOld.h"
//I can feel my soul being torn apart with every script added to this monstrosity.
// skate fast eat trash
// do you think god stays in heaven because he too lives in fear of what he's created?
#include "GameMessages.h"
#include "Entity.h"
#include "ScriptComponent.h"
#include "Game.h"
#include "Logger.h"
#include "InvalidScript.h"
//VE / AG scripts:
#include "AgShipPlayerDeathTrigger.h"
#include "AgShipPlayerShockServer.h"
#include "AgSpaceStuff.h"
#include "AgImagSmashable.h"
#include "NpcNpSpacemanBob.h"
#include "StoryBoxInteractServer.h"
#include "Binoculars.h"
#include "AllCrateChicken.h"
#include "SsModularBuildServer.h"
#include "ZoneAgProperty.h"
#include "TouchMissionUpdateServer.h"
#include "ActSharkPlayerDeathTrigger.h"
#include "BaseEnemyMech.h"
#include "ZoneAgSurvival.h"
#include "AgBusDoor.h"
#include "MaestromExtracticatorServer.h"
#include "NpcWispServer.h"
#include "AgCagedBricksServer.h"
#include "NpcEpsilonServer.h"
#include "AgTurret.h"
#include "AgMonumentBirds.h"
#include "AgLaserSensorServer.h"
#include "AgMonumentLaserServer.h"
#include "AgFans.h"
#include "RemoveRentalGear.h"
#include "NpcNjAssistantServer.h"
#include "EnemySpiderSpawner.h"
#include "AgQbElevator.h"
#include "AgPropGuard.h"
#include "AgBugsprayer.h"
#include "WishingWellServer.h"
#include "NpcAgCourseStarter.h"
#include "AgMonumentRaceGoal.h"
#include "ZoneAgSpiderQueen.h"
#include "SpiderBossTreasureChestServer.h"
#include "NpcCowboyServer.h"
#include "ZoneAgMedProperty.h"
#include "AgStromlingProperty.h"
#include "AgDarkSpiderling.h"
#include "PropertyFXDamage.h"
#include "AgPropguards.h"
#include "NpcPirateServer.h"
#include "AgPicnicBlanket.h"
#include "AgMonumentRaceCancel.h"
#include "VeBricksampleServer.h"
#include "PropertyBankInteract.h"
#include "VeMech.h"
#include "VeMissionConsole.h"
#include "VeEpsilonServer.h"
#include "AgSurvivalBuffStation.h"
#include "QbSpawner.h"
#include "AgQbWall.h"
// NS Scripts
#include "NsModularBuild.h"
#include "NsGetFactionMissionServer.h"
#include "NsQbImaginationStatue.h"
#include "NsConcertChoiceBuildManager.h"
#include "NsConcertChoiceBuild.h"
#include "NsConcertQuickBuild.h"
#include "AgStagePlatforms.h"
#include "NsConcertInstrument.h"
#include "NsJohnnyMissionServer.h"
#include "StinkyFishTarget.h"
#include "ZoneNsProperty.h"
#include "ZoneNsMedProperty.h"
#include "NsTokenConsoleServer.h"
#include "NsLupTeleport.h"
#include "ZoneNsWaves.h"
#include "WaveBossHammerling.h"
#include "WaveBossApe.h"
#include "WaveBossSpiderling.h"
#include "WaveBossHorsemen.h"
#include "MinigameTreasureChestServer.h"
#include "NsLegoClubDoor.h"
#include "ClRing.h"
#include "WildAmbients.h"
#include "PropertyDeathPlane.h"
// PR Scripts
#include "PrWhistle.h"
#include "PrSeagullFly.h"
#include "HydrantBroken.h"
#include "HydrantSmashable.h"
#include "PetDigServer.h"
#include "PetFromDigServer.h"
#include "PetFromObjectServer.h"
#include "DamagingPets.h"
#include "SpawnGryphonServer.h"
// GF Scripts
#include "GfTikiTorch.h"
#include "GfCampfire.h"
#include "GfOrgan.h"
#include "GfBanana.h"
#include "GfBananaCluster.h"
#include "GfJailkeepMission.h"
#include "TriggerAmbush.h"
#include "GfCaptainsCannon.h"
#include "MastTeleport.h"
#include "GfJailWalls.h"
#include "QbEnemyStunner.h"
#include "PetDigBuild.h"
#include "SpawnLionServer.h"
#include "BaseEnemyApe.h"
#include "GfApeSmashingQB.h"
#include "ZoneGfProperty.h"
#include "GfArchway.h"
#include "GfMaelstromGeyser.h"
#include "PirateRep.h"
#include "GfParrotCrash.h"
// SG Scripts
#include "SGCannon.h"
#include "ZoneSGServer.h"
// FV Scripts
#include "FvCandle.h"
#include "EnemyRoninSpawner.h"
#include "ActNinjaTurret.h"
#include "FvMaelstromCavalry.h"
#include "FvHorsemenTrigger.h"
#include "FvFlyingCreviceDragon.h"
#include "FvMaelstromDragon.h"
#include "FvDragonSmashingGolemQb.h"
#include "TreasureChestDragonServer.h"
#include "InstanceExitTransferPlayerToLastNonInstance.h"
#include "FvFreeGfNinjas.h"
#include "FvPandaServer.h"
#include "FvPandaSpawnerServer.h"
#include "ZoneFvProperty.h"
#include "FvBrickPuzzleServer.h"
#include "FvConsoleLeftQuickbuild.h"
#include "FvConsoleRightQuickbuild.h"
#include "FvFacilityBrick.h"
#include "FvFacilityPipes.h"
#include "ImgBrickConsoleQB.h"
#include "ActParadoxPipeFix.h"
#include "FvNinjaGuard.h"
#include "FvPassThroughWall.h"
#include "FvBounceOverWall.h"
#include "FvFong.h"
#include "FvMaelstromGeyser.h"
#include "FvRaceDragon.h"
#include "FvRacePillarABCServer.h"
#include "FvRacePillarDServer.h"
#include "RaceFireballs.h"
#include "RaceShipLapColumnsServer.h"
// FB Scripts
#include "AgJetEffectServer.h"
#include "AgSalutingNpcs.h"
#include "BossSpiderQueenEnemyServer.h"
#include "RockHydrantSmashable.h"
// Misc Scripts
#include "ExplodingAsset.h"
#include "ActPlayerDeathTrigger.h"
#include "CrabServer.h"
#include "GrowingFlower.h"
#include "BaseFootRaceManager.h"
#include "PropertyPlatform.h"
#include "MailBoxServer.h"
#include "ActMine.h"
#include "FireFirstSkillonStartup.h"
// Racing Scripts
#include "RaceImagineCrateServer.h"
#include "ActVehicleDeathTrigger.h"
#include "RaceImaginePowerup.h"
#include "RaceMaelstromGeiser.h"
#include "FvRaceSmashEggImagineServer.h"
#include "RaceSmashServer.h"
#include "FvRacingColumns.h"
// NT Scripts
#include "NtSentinelWalkwayServer.h"
#include "NtParadoxTeleServer.h"
#include "NtDarkitectRevealServer.h"
#include "BankInteractServer.h"
#include "NtVentureSpeedPadServer.h"
#include "NtVentureCannonServer.h"
#include "NtCombatChallengeServer.h"
#include "NtCombatChallengeDummy.h"
#include "NtCombatChallengeExplodingDummy.h"
#include "BaseInteractDropLootServer.h"
#include "NtAssemblyTubeServer.h"
#include "NtParadoxPanelServer.h"
#include "TokenConsoleServer.h"
#include "NtImagBeamBuffer.h"
#include "NtBeamImaginationCollectors.h"
#include "NtDirtCloudServer.h"
#include "NtConsoleTeleportServer.h"
#include "SpawnShrakeServer.h"
#include "SpawnSaberCatServer.h"
#include "SpawnStegoServer.h"
#include "NtDukeServer.h"
#include "NtHaelServer.h"
#include "NtOverbuildServer.h"
#include "NtVandaServer.h"
#include "ForceVolumeServer.h"
#include "NtXRayServer.h"
#include "NtSleepingGuard.h"
#include "NtImagimeterVisibility.h"
#include "FrictionVolumeServer.h"
#include "NTPipeVisibilityServer.h"
#include "NTNaomiDirtServer.h"
#include "MinigameBlueMark.h"
#include "NtNaomiBreadcrumbServer.h"
// DLU Scripts
#include "DLUVanityTeleportingObject.h"
// AM Scripts
#include "AmConsoleTeleportServer.h"
#include "RandomSpawnerFin.h"
#include "RandomSpawnerPit.h"
#include "RandomSpawnerStr.h"
#include "RandomSpawnerZip.h"
#include "AmDarklingMech.h"
#include "AmBridge.h"
#include "AmDrawBridge.h"
#include "AmShieldGenerator.h"
#include "AmShieldGeneratorQuickbuild.h"
#include "AmDropshipComputer.h"
#include "AmScrollReaderServer.h"
#include "AmTemplateSkillVolume.h"
#include "EnemyNjBuff.h"
#include "AmSkeletonEngineer.h"
#include "AmSkullkinDrill.h"
#include "AmSkullkinDrillStand.h"
#include "AmSkullkinTower.h"
#include "AmDarklingDragon.h"
#include "AmBlueX.h"
#include "AmTeapotServer.h"
#include "WanderingVendor.h"
// NJ Scripts
#include "NjGarmadonCelebration.h"
#include "NjWuNPC.h"
#include "NjScrollChestServer.h"
#include "EnemySkeletonSpawner.h"
#include "NjRailSwitch.h"
#include "NjRailPostServer.h"
#include "NjRailActivatorsServer.h"
#include "NjColeNPC.h"
#include "NjNPCMissionSpinjitzuServer.h"
#include "NjJayMissionItems.h"
#include "FallingTile.h"
#include "ImaginationShrineServer.h"
#include "Lieutenant.h"
#include "RainOfArrows.h"
#include "NjIceRailActivator.h"
#include "CavePrisonCage.h"
#include "NjMonastryBossInstance.h"
#include "CatapultBouncerServer.h"
#include "CatapultBaseServer.h"
#include "NjhubLavaPlayerDeathTrigger.h"
#include "MonCoreNookDoors.h"
#include "MonCoreSmashableDoors.h"
#include "FlameJetServer.h"
#include "BurningTile.h"
#include "NjEarthDragonPetServer.h"
#include "NjEarthPetServer.h"
#include "NjDragonEmblemChestServer.h"
#include "NjNyaMissionitems.h"
// Scripted equipment
#include "AnvilOfArmor.h"
#include "CauldronOfLife.h"
#include "FountainOfImagination.h"
#include "Sunflower.h"
#include "BootyDigServer.h"
#include "PersonalFortress.h"
#include "PropertyDevice.h"
#include "ImaginationBackpackHealServer.h"
#include "LegoDieRoll.h"
#include "BuccaneerValiantShip.h"
#include "GemPack.h"
#include "ShardArmor.h"
#include "TeslaPack.h"
#include "StunImmunity.h"
// Survival scripts
#include "AgSurvivalStromling.h"
#include "AgSurvivalMech.h"
#include "AgSurvivalSpiderling.h"
// Frostburgh Scripts
#include "RockHydrantBroken.h"
#include "WhFans.h"
// WBL scripts
#include "WblGenericZone.h"
// Alpha Scripts
#include "TriggerGas.h"
#include "ActNinjaSensei.h"
// pickups
#include "SpecialCoinSpawner.h"
#include "SpecialPowerupSpawner.h"
#include "SpecialSpeedBuffSpawner.h"
// Wild Scripts
#include "WildAndScared.h"
#include "WildGfGlowbug.h"
#include "WildAmbientCrab.h"
#include "WildPants.h"
#include "WildNinjaStudent.h"
#include "WildNinjaSensei.h"
#include "WildNinjaBricks.h"
#include "VisToggleNotifierServer.h"
#include "LupGenericInteract.h"
#include "WblRobotCitizen.h"
#include "CppScripts.h"
namespace {
// This is in the translation unit instead of the header to prevent wierd linker errors
InvalidScript* const InvalidToReturn = new InvalidScript();
std::map<std::string, CppScripts::Script*> m_Scripts;
};
CppScripts::Script* const CppScriptsOld::GetScript(Entity* parent, const std::string& scriptName) {
auto itr = m_Scripts.find(scriptName);
if (itr != m_Scripts.end()) {
return itr->second;
}
CppScripts::Script* script = InvalidToReturn;
//VE / AG:
if (scriptName == "scripts\\ai\\AG\\L_AG_SHIP_PLAYER_DEATH_TRIGGER.lua")
script = new AgShipPlayerDeathTrigger();
else if (scriptName == "scripts\\ai\\NP\\L_NPC_NP_SPACEMAN_BOB.lua")
script = new NpcNpSpacemanBob();
else if (scriptName == "scripts\\ai\\AG\\L_AG_SPACE_STUFF.lua") // Broken, will (sometimes) display all animations at once on initial login
script = new AgSpaceStuff();
else if (scriptName == "scripts\\ai\\AG\\L_AG_SHIP_PLAYER_SHOCK_SERVER.lua")
script = new AgShipPlayerShockServer();
else if (scriptName == "scripts\\ai\\AG\\L_AG_IMAG_SMASHABLE.lua")
script = new AgImagSmashable();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_STORY_BOX_INTERACT_SERVER.lua")
script = new StoryBoxInteractServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_BINOCULARS.lua")
script = new Binoculars();
else if (scriptName == "scripts\\ai\\WILD\\L_ALL_CRATE_CHICKEN.lua")
script = new AllCrateChicken();
else if (scriptName == "scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_SMASHABLE.lua")
script = new RockHydrantSmashable(); // Broken?
else if (scriptName == "scripts\\02_server\\Map\\SS\\L_SS_MODULAR_BUILD_SERVER.lua")
script = new SsModularBuildServer();
else if (scriptName == "scripts\\02_server\\Map\\Property\\AG_Small\\L_ZONE_AG_PROPERTY.lua")
script = new ZoneAgProperty();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_POI_MISSION.lua")
script = new InvalidScript(); // this is done in Entity.cpp, not needed for our implementation
else if (scriptName == "scripts\\02_server\\Map\\General\\L_TOUCH_MISSION_UPDATE_SERVER.lua")
script = new TouchMissionUpdateServer();
else if (scriptName == "scripts\\ai\\AG\\L_ACT_SHARK_PLAYER_DEATH_TRIGGER.lua")
script = new ActSharkPlayerDeathTrigger();
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_MECH.lua")
script = new BaseEnemyMech();
else if (scriptName == "scripts\\zone\\AG\\L_ZONE_AG_SURVIVAL.lua")
script = new ZoneAgSurvival();
else if (scriptName == "scripts\\02_server\\Objects\\L_BUFF_STATION_SERVER.lua")
script = new AgSurvivalBuffStation();
else if (scriptName == "scripts\\ai\\AG\\L_AG_BUS_DOOR.lua")
script = new AgBusDoor();
else if (scriptName == "scripts\\02_server\\Equipment\\L_MAESTROM_EXTRACTICATOR_SERVER.lua")
script = new MaestromExtracticatorServer();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_AG_CAGED_BRICKS_SERVER.lua")
script = new AgCagedBricksServer();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_WISP_SERVER.lua")
script = new NpcWispServer();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_EPSILON_SERVER.lua")
script = new NpcEpsilonServer();
else if (scriptName == "scripts\\ai\\AG\\L_AG_TURRET.lua" || scriptName == "scripts\\ai\\AG\\L_AG_TURRET_FOR_SHIP.lua")
script = new AgTurret();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_AG_LASER_SENSOR_SERVER.lua")
script = new AgLaserSensorServer();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_AG_MONUMENT_LASER_SERVER.lua")
script = new AgMonumentLaserServer();
else if (scriptName == "scripts\\ai\\AG\\L_AG_FANS.lua")
script = new AgFans();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_AG_MONUMENT_BIRDS.lua")
script = new AgMonumentBirds();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_REMOVE_RENTAL_GEAR.lua")
script = new RemoveRentalGear();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_NJ_ASSISTANT_SERVER.lua")
script = new NpcNjAssistantServer();
else if (scriptName == "scripts\\ai\\AG\\L_AG_SALUTING_NPCS.lua")
script = new AgSalutingNpcs();
else if (scriptName == "scripts\\ai\\AG\\L_AG_JET_EFFECT_SERVER.lua")
script = new AgJetEffectServer();
else if (scriptName == "scripts\\02_server\\Enemy\\AG\\L_BOSS_SPIDER_QUEEN_ENEMY_SERVER.lua")
script = new BossSpiderQueenEnemyServer();
else if (scriptName == "scripts\\02_server\\Map\\Property\\AG_Small\\L_ENEMY_SPIDER_SPAWNER.lua")
script = new EnemySpiderSpawner();
else if (scriptName == "scripts/02_server/Map/Property/AG_Small/L_ENEMY_SPIDER_SPAWNER.lua")
script = new EnemySpiderSpawner();
else if (scriptName == "scripts\\ai\\AG\\L_AG_QB_Elevator.lua")
script = new AgQbElevator();
else if (scriptName == "scripts\\ai\\PROPERTY\\AG\\L_AG_PROP_GUARD.lua")
script = new AgPropGuard();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_AG_BUGSPRAYER.lua")
script = new AgBugsprayer();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_AG_COURSE_STARTER.lua")
script = new NpcAgCourseStarter();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L__AG_MONUMENT_RACE_GOAL.lua")
script = new AgMonumentRaceGoal();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L__AG_MONUMENT_RACE_CANCEL.lua")
script = new AgMonumentRaceCancel();
else if (scriptName == "scripts\\02_server\\Map\\AG_Spider_Queen\\L_ZONE_AG_SPIDER_QUEEN.lua")
script = new ZoneAgSpiderQueen();
else if (scriptName == "scripts\\02_server\\Map\\AG_Spider_Queen\\L_SPIDER_BOSS_TREASURE_CHEST_SERVER.lua")
script = new SpiderBossTreasureChestServer();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_COWBOY_SERVER.lua")
script = new NpcCowboyServer();
else if (scriptName == "scripts\\02_server\\Map\\Property\\AG_Med\\L_ZONE_AG_MED_PROPERTY.lua")
script = new ZoneAgMedProperty();
else if (scriptName == "scripts\\ai\\AG\\L_AG_STROMBIE_PROPERTY.lua")
script = new AgStromlingProperty();
else if (scriptName == "scripts\\ai\\AG\\L_AG_DARKLING_MECH.lua")
script = new BaseEnemyMech();
else if (scriptName == "scripts\\ai\\AG\\L_AG_DARK_SPIDERLING.lua")
script = new AgDarkSpiderling();
else if (scriptName == "scripts\\ai\\PROPERTY\\L_PROP_GUARDS.lua")
script = new AgPropguards();
else if (scriptName == "scripts\\ai\\PROPERTY\\L_PROPERTY_FX_DAMAGE.lua")
script = new PropertyFXDamage();
else if (scriptName == "scripts\\02_server\\Map\\AG\\L_NPC_PIRATE_SERVER.lua")
script = new NpcPirateServer();
else if (scriptName == "scripts\\ai\\AG\\L_AG_PICNIC_BLANKET.lua")
script = new AgPicnicBlanket();
else if (scriptName == "scripts\\02_server\\Map\\Property\\L_PROPERTY_BANK_INTERACT_SERVER.lua")
script = new PropertyBankInteract();
else if (scriptName == "scripts\\02_server\\Enemy\\VE\\L_VE_MECH.lua")
script = new VeMech();
else if (scriptName == "scripts\\02_server\\Map\\VE\\L_MISSION_CONSOLE_SERVER.lua")
script = new VeMissionConsole();
else if (scriptName == "scripts\\02_server\\Map\\VE\\L_EPSILON_SERVER.lua")
script = new VeEpsilonServer();
// Win32 thinks this if chain is too long, let's cut it up and serve it as a three course meal
//NS:
if (scriptName == "scripts\\ai\\NS\\L_NS_MODULAR_BUILD.lua")
script = new NsModularBuild();
else if (scriptName == "scripts\\ai\\NS\\L_NS_GET_FACTION_MISSION_SERVER.lua")
script = new NsGetFactionMissionServer();
else if (scriptName == "scripts\\ai\\NS\\L_NS_QB_IMAGINATION_STATUE.lua")
script = new NsQbImaginationStatue();
else if (scriptName == "scripts\\02_server\\Map\\NS\\CONCERT_CHOICEBUILD_MANAGER_SERVER.lua")
script = new NsConcertChoiceBuildManager();
else if (scriptName == "scripts\\ai\\NS\\L_NS_CONCERT_CHOICEBUILD.lua")
script = new NsConcertChoiceBuild();
else if (scriptName == "scripts\\ai\\NS\\L_NS_CONCERT_QUICKBUILD.lua")
script = new NsConcertQuickBuild();
else if (scriptName == "scripts\\ai\\AG\\L_AG_STAGE_PLATFORMS.lua")
script = new AgStagePlatforms();
else if (scriptName == "scripts\\ai\\NS\\L_NS_CONCERT_INSTRUMENT_QB.lua")
script = new NsConcertInstrument();
else if (scriptName == "scripts\\ai\\NS\\L_NS_JONNY_FLAG_MISSION_SERVER.lua")
script = new NsJohnnyMissionServer();
else if (scriptName == "scripts\\02_server\\Objects\\L_STINKY_FISH_TARGET.lua")
script = new StinkyFishTarget();
else if (scriptName == "scripts\\zone\\PROPERTY\\NS\\L_ZONE_NS_PROPERTY.lua")
script = new ZoneNsProperty();
else if (scriptName == "scripts\\02_server\\Map\\Property\\NS_Med\\L_ZONE_NS_MED_PROPERTY.lua")
script = new ZoneNsMedProperty();
else if (scriptName == "scripts\\02_server\\Map\\NS\\L_NS_TOKEN_CONSOLE_SERVER.lua")
script = new NsTokenConsoleServer();
else if (scriptName == "scripts\\02_server\\Map\\NS\\L_NS_LUP_TELEPORT.lua")
script = new NsLupTeleport();
else if (scriptName == "scripts\\02_server\\Map\\NS\\Waves\\L_ZONE_NS_WAVES.lua")
script = new ZoneNsWaves();
else if (scriptName == "scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_HAMMERLING_ENEMY_SERVER.lua")
script = new WaveBossHammerling();
else if (scriptName == "scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_APE_ENEMY_SERVER.lua")
script = new WaveBossApe();
else if (scriptName == "scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_DARK_SPIDERLING_ENEMY_SERVER.lua")
script = new WaveBossSpiderling();
else if (scriptName == "scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_HORESEMEN_ENEMY_SERVER.lua")
script = new WaveBossHorsemen();
else if (scriptName == "scripts\\02_server\\Minigame\\General\\L_MINIGAME_TREASURE_CHEST_SERVER.lua")
script = new MinigameTreasureChestServer();
else if (scriptName == "scripts\\02_server\\Map\\NS\\L_NS_LEGO_CLUB_DOOR.lua")
script = new NsLegoClubDoor();
else if (scriptName == "scripts/ai/NS/L_CL_RING.lua")
script = new ClRing();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_AMBIENTS.lua")
script = new WildAmbients();
else if (scriptName == "scripts\\ai\\NS\\NS_PP_01\\L_NS_PP_01_TELEPORT.lua")
script = new PropertyDeathPlane();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_QB_SPAWNER.lua")
script = new QbSpawner();
else if (scriptName == "scripts\\ai\\AG\\L_AG_QB_Wall.lua")
script = new AgQbWall();
//GF:
else if (scriptName == "scripts\\02_server\\Map\\GF\\L_GF_TORCH.lua")
script = new GfTikiTorch();
else if (scriptName == "scripts\\ai\\GF\\L_SPECIAL_FIREPIT.lua")
script = new GfCampfire();
else if (scriptName == "scripts\\ai\\GF\\L_GF_ORGAN.lua")
script = new GfOrgan();
else if (scriptName == "scripts\\ai\\GF\\L_GF_BANANA.lua")
script = new GfBanana();
else if (scriptName == "scripts\\ai\\GF\\L_GF_BANANA_CLUSTER.lua")
script = new GfBananaCluster();
else if (scriptName == "scripts/ai/GF/L_GF_JAILKEEP_MISSION.lua")
script = new GfJailkeepMission();
else if (scriptName == "scripts\\ai\\GF\\L_TRIGGER_AMBUSH.lua")
script = new TriggerAmbush();
else if (scriptName == "scripts\\02_server\\Map\\GF\\L_GF_CAPTAINS_CANNON.lua")
script = new GfCaptainsCannon();
else if (scriptName == "scripts\\02_server\\Map\\GF\\L_MAST_TELEPORT.lua")
script = new MastTeleport();
else if (scriptName == "scripts\\ai\\GF\\L_GF_JAIL_WALLS.lua")
script = new GfJailWalls();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_QB_ENEMY_STUNNER.lua")
script = new QbEnemyStunner();
else if (scriptName == "scripts\\ai\\GF\\L_GF_PET_DIG_BUILD.lua")
script = new PetDigBuild(); // Technically also used once in AG
else if (scriptName == "scripts\\02_server\\Map\\GF\\L_SPAWN_LION_SERVER.lua")
script = new SpawnLionServer();
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_APE.lua")
script = new BaseEnemyApe();
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_GF_APE_SMASHING_QB.lua")
script = new GfApeSmashingQB();
else if (scriptName == "scripts\\zone\\PROPERTY\\GF\\L_ZONE_GF_PROPERTY.lua")
script = new ZoneGfProperty();
else if (scriptName == "scripts\\ai\\GF\\L_GF_ARCHWAY.lua")
script = new GfArchway();
else if (scriptName == "scripts\\ai\\GF\\L_GF_MAELSTROM_GEYSER.lua")
script = new GfMaelstromGeyser();
else if (scriptName == "scripts\\ai\\GF\\L_PIRATE_REP.lua")
script = new PirateRep();
else if (scriptName == "scripts\\ai\\GF\\L_GF_PARROT_CRASH.lua")
script = new GfParrotCrash();
// SG
else if (scriptName == "scripts\\ai\\MINIGAME\\SG_GF\\SERVER\\SG_CANNON.lua")
script = new SGCannon();
else if (scriptName == "scripts\\ai\\MINIGAME\\SG_GF\\L_ZONE_SG_SERVER.lua")
script = new ZoneSGServer();
//PR:
else if (scriptName == "scripts\\client\\ai\\PR\\L_PR_WHISTLE.lua")
script = new PrWhistle();
if (scriptName == "scripts\\02_server\\Map\\PR\\L_PR_SEAGULL_FLY.lua")
script = new PrSeagullFly();
else if (scriptName == "scripts\\ai\\PETS\\L_HYDRANT_SMASHABLE.lua")
script = new HydrantSmashable();
else if (scriptName == "scripts\\02_server\\map\\PR\\L_HYDRANT_BROKEN.lua")
script = new HydrantBroken();
else if (scriptName == "scripts\\02_server\\Map\\General\\PET_DIG_SERVER.lua" || scriptName == "scripts\\02_server\\Map\\AM\\L_SKELETON_DRAGON_PET_DIG_SERVER.lua")
script = new PetDigServer();
else if (scriptName == "scripts\\client\\ai\\PR\\L_CRAB_SERVER.lua")
script = new CrabServer();
else if (scriptName == "scripts\\02_server\\Pets\\L_PET_FROM_DIG_SERVER.lua")
script = new PetFromDigServer();
else if (scriptName == "scripts\\02_server\\Pets\\L_PET_FROM_OBJECT_SERVER.lua")
script = new PetFromObjectServer();
else if (scriptName == "scripts\\02_server\\Pets\\L_DAMAGING_PET.lua")
script = new DamagingPets();
else if (scriptName == "scripts\\02_server\\Map\\PR\\L_SPAWN_GRYPHON_SERVER.lua")
script = new SpawnGryphonServer();
//FV Scripts:
else if (scriptName == "scripts\\02_server\\Map\\FV\\L_ACT_CANDLE.lua")
script = new FvCandle();
else if (scriptName == "scripts\\02_server\\Map\\FV\\L_ENEMY_RONIN_SPAWNER.lua")
script = new EnemyRoninSpawner();
else if (scriptName == "scripts\\02_server\\Enemy\\FV\\L_FV_MAELSTROM_CAVALRY.lua")
script = new FvMaelstromCavalry();
else if (scriptName == "scripts\\ai\\FV\\L_ACT_NINJA_TURRET_1.lua")
script = new ActNinjaTurret();
else if (scriptName == "scripts\\02_server\\Map\\FV\\L_FV_HORSEMEN_TRIGGER.lua")
script = new FvHorsemenTrigger();
else if (scriptName == "scripts\\ai\\FV\\L_FV_FLYING_CREVICE_DRAGON.lua")
script = new FvFlyingCreviceDragon();
else if (scriptName == "scripts\\02_server\\Enemy\\FV\\L_FV_MAELSTROM_DRAGON.lua")
script = new FvMaelstromDragon();
else if (scriptName == "scripts\\ai\\FV\\L_FV_DRAGON_SMASHING_GOLEM_QB.lua")
script = new FvDragonSmashingGolemQb();
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_TREASURE_CHEST_DRAGON_SERVER.lua")
script = new TreasureChestDragonServer();
else if (scriptName == "scripts\\ai\\GENERAL\\L_INSTANCE_EXIT_TRANSFER_PLAYER_TO_LAST_NON_INSTANCE.lua")
script = new InstanceExitTransferPlayerToLastNonInstance();
else if (scriptName == "scripts\\ai\\FV\\L_NPC_FREE_GF_NINJAS.lua")
script = new FvFreeGfNinjas();
else if (scriptName == "scripts\\ai\\FV\\L_FV_PANDA_SPAWNER_SERVER.lua")
script = new FvPandaSpawnerServer();
else if (scriptName == "scripts\\ai\\FV\\L_FV_PANDA_SERVER.lua")
script = new FvPandaServer();
else if (scriptName == "scripts\\zone\\PROPERTY\\FV\\L_ZONE_FV_PROPERTY.lua")
script = new ZoneFvProperty();
else if (scriptName == "scripts\\ai\\FV\\L_FV_BRICK_PUZZLE_SERVER.lua")
script = new FvBrickPuzzleServer();
else if (scriptName == "scripts\\ai\\FV\\L_FV_CONSOLE_LEFT_QUICKBUILD.lua")
script = new FvConsoleLeftQuickbuild();
else if (scriptName == "scripts\\ai\\FV\\L_FV_CONSOLE_RIGHT_QUICKBUILD.lua")
script = new FvConsoleRightQuickbuild();
else if (scriptName == "scripts\\ai\\FV\\L_FV_FACILITY_BRICK.lua")
script = new FvFacilityBrick();
else if (scriptName == "scripts\\ai\\FV\\L_FV_FACILITY_PIPES.lua")
script = new FvFacilityPipes();
else if (scriptName == "scripts\\02_server\\Map\\FV\\L_IMG_BRICK_CONSOLE_QB.lua")
script = new ImgBrickConsoleQB();
else if (scriptName == "scripts\\ai\\FV\\L_ACT_PARADOX_PIPE_FIX.lua")
script = new ActParadoxPipeFix();
else if (scriptName == "scripts\\ai\\FV\\L_FV_NINJA_GUARDS.lua")
script = new FvNinjaGuard();
else if (scriptName == "scripts\\ai\\FV\\L_ACT_PASS_THROUGH_WALL.lua")
script = new FvPassThroughWall();
else if (scriptName == "scripts\\ai\\FV\\L_ACT_BOUNCE_OVER_WALL.lua")
script = new FvBounceOverWall();
else if (scriptName == "scripts\\02_server\\Map\\FV\\L_NPC_FONG.lua")
script = new FvFong();
else if (scriptName == "scripts\\ai\\FV\\L_FV_MAELSTROM_GEYSER.lua")
script = new FvMaelstromGeyser();
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\RACE_SHIP_LAP_COLUMNS_SERVER.lua")
script = new RaceShipLapColumnsServer();
// yes we know the lap numbers dont match the file name or anim. thats what they desgined it as.
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP1_SERVER.lua")
script = new FvRaceDragon("lap_01", 2);
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP2_SERVER.lua")
script = new FvRaceDragon("lap_02", 0);
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP3_SERVER.lua")
script = new FvRaceDragon("lap_03", 1);
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_ABC_SERVER.lua")
script = new FvRacePillarABCServer();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_D_SERVER.lua")
script = new FvRacePillarDServer();
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\RACE_FIREBALLS.lua")
script = new RaceFireballs();
//Misc:
if (scriptName == "scripts\\02_server\\Map\\General\\L_EXPLODING_ASSET.lua")
script = new ExplodingAsset();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_WISHING_WELL_SERVER.lua")
script = new WishingWellServer();
else if (scriptName == "scripts\\ai\\ACT\\L_ACT_PLAYER_DEATH_TRIGGER.lua")
script = new ActPlayerDeathTrigger();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_GROWING_FLOWER_SERVER.lua")
script = new GrowingFlower();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_TOKEN_CONSOLE_SERVER.lua")
script = new TokenConsoleServer();
else if (scriptName == "scripts\\ai\\ACT\\FootRace\\L_ACT_BASE_FOOT_RACE.lua")
script = new BaseFootRaceManager();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_PROP_PLATFORM.lua")
script = new PropertyPlatform();
else if (scriptName == "scripts\\02_server\\Map\\VE\\L_VE_BRICKSAMPLE_SERVER.lua")
script = new VeBricksampleServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_MAIL_BOX_SERVER.lua")
script = new MailBoxServer();
else if (scriptName == "scripts\\ai\\ACT\\L_ACT_MINE.lua")
script = new ActMine();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_WANDERING_VENDOR.lua")
script = new WanderingVendor();
//Racing:
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_CRATE_SERVER.lua")
script = new RaceImagineCrateServer();
else if (scriptName == "scripts\\ai\\ACT\\L_ACT_VEHICLE_DEATH_TRIGGER.lua")
script = new ActVehicleDeathTrigger();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_POWERUP.lua")
script = new RaceImaginePowerup();
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\RACE_MAELSTROM_GEISER.lua")
script = new RaceMaelstromGeiser();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\FV_RACE_SMASH_EGG_IMAGINE_SERVER.lua")
script = new FvRaceSmashEggImagineServer();
else if (scriptName == "scripts\\02_server\\Map\\FV\\Racing\\FV_RACING_COLUMNS.lua")
script = new FvRacingColumns();
else if (scriptName == "scripts\\ai\\RACING\\OBJECTS\\RACE_SMASH_SERVER.lua")
script = new RaceSmashServer();
//NT:
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_SENTINELWALKWAY_SERVER.lua")
script = new NtSentinelWalkwayServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_PARADOXTELE_SERVER.lua")
script = new NtParadoxTeleServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_DARKITECT_REVEAL_SERVER.lua")
script = new NtDarkitectRevealServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_BANK_INTERACT_SERVER.lua")
script = new BankInteractServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_VENTURESPEEDPAD_SERVER.lua")
script = new NtVentureSpeedPadServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_VENTURE_CANNON_SERVER.lua")
script = new NtVentureCannonServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_COMBAT_CHALLENGE_SERVER.lua")
script = new NtCombatChallengeServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_COMBAT_CHALLENGE_DUMMY.lua")
script = new NtCombatChallengeDummy();
else if (scriptName == "scripts\\02_server\\Map\\NT\\\\L_NT_COMBAT_EXPLODING_TARGET.lua")
script = new NtCombatChallengeExplodingDummy();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_BASE_INTERACT_DROP_LOOT_SERVER.lua")
script = new BaseInteractDropLootServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_ASSEMBLYTUBE_SERVER.lua")
script = new NtAssemblyTubeServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_PARADOX_PANEL_SERVER.lua")
script = new NtParadoxPanelServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_IMAG_BEAM_BUFFER.lua")
script = new NtImagBeamBuffer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_BEAM_IMAGINATION_COLLECTORS.lua")
script = new NtBeamImaginationCollectors();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_DIRT_CLOUD_SERVER.lua")
script = new NtDirtCloudServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_CONSOLE_TELEPORT_SERVER.lua")
script = new NtConsoleTeleportServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_SPAWN_STEGO_SERVER.lua")
script = new SpawnStegoServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_SPAWN_SABERCAT_SERVER.lua")
script = new SpawnSaberCatServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_SPAWN_SHRAKE_SERVER.lua")
script = new SpawnShrakeServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_DUKE_SERVER.lua")
script = new NtDukeServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_HAEL_SERVER.lua")
script = new NtHaelServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_FACTION_SPY_SERVER.lua")
script = new NtFactionSpyServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_OVERBUILD_SERVER.lua")
script = new NtOverbuildServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_VANDA_SERVER.lua")
script = new NtVandaServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_FORCE_VOLUME_SERVER.lua")
script = new ForceVolumeServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_FRICTION_VOLUME_SERVER.lua")
script = new FrictionVolumeServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_XRAY_SERVER.lua")
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();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_PIPE_VISIBILITY_SERVER.lua")
script = new NTPipeVisibilityServer();
else if (scriptName == "scripts\\ai\\MINIGAME\\Objects\\MINIGAME_BLUE_MARK.lua")
script = new MinigameBlueMark();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_NAOMI_BREADCRUMB_SERVER.lua")
script = new NtNaomiBreadcrumbServer();
else if (scriptName == "scripts\\02_server\\Map\\NT\\L_NT_NAOMI_DIRT_SERVER.lua")
script = new NTNaomiDirtServer();
//AM:
if (scriptName == "scripts\\02_server\\Map\\AM\\L_AM_CONSOLE_TELEPORT_SERVER.lua")
script = new AmConsoleTeleportServer();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_FIN.lua")
script = new RandomSpawnerFin();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_PIT.lua")
script = new RandomSpawnerPit();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_STR.lua")
script = new RandomSpawnerStr();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_ZIP.lua")
script = new RandomSpawnerZip();
else if (scriptName == "scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_MECH.lua")
script = new AmDarklingMech();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_BRIDGE.lua")
script = new AmBridge();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_DRAW_BRIDGE.lua")
script = new AmDrawBridge();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_SHIELD_GENERATOR.lua")
script = new AmShieldGenerator();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_SHIELD_GENERATOR_QUICKBUILD.lua")
script = new AmShieldGeneratorQuickbuild();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_DROPSHIP_COMPUTER.lua")
script = new AmDropshipComputer();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_SCROLL_READER_SERVER.lua")
script = new AmScrollReaderServer();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_TEMPLE_SKILL_VOLUME.lua")
script = new AmTemplateSkillVolume();
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_ENEMY_NJ_BUFF.lua")
script = new EnemyNjBuff();
else if (scriptName == "scripts\\02_server\\Enemy\\AM\\L_AM_SKELETON_ENGINEER.lua")
script = new AmSkeletonEngineer();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_SKULLKIN_DRILL.lua")
script = new AmSkullkinDrill();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_SKULLKIN_DRILL_STAND.lua")
script = new AmSkullkinDrillStand();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_SKULLKIN_TOWER.lua")
script = new AmSkullkinTower();
else if (scriptName == "scripts\\02_server\\Enemy\\AM\\L_AM_NAMED_DARKLING_DRAGON.lua")
script = new AmDarklingDragon();
else if (scriptName == "scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_DRAGON.lua")
script = new AmDarklingDragon();
else if (scriptName == "scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_APE.lua")
script = new BaseEnemyApe();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_BLUE_X.lua")
script = new AmBlueX();
else if (scriptName == "scripts\\02_server\\Map\\AM\\L_TEAPOT_SERVER.lua")
script = new AmTeapotServer();
// Ninjago
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_GARMADON_CELEBRATION_SERVER.lua")
script = new NjGarmadonCelebration();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_WU_NPC.lua")
script = new NjWuNPC();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_SCROLL_CHEST_SERVER.lua")
script = new NjScrollChestServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_COLE_NPC.lua")
script = new NjColeNPC();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_JAY_MISSION_ITEMS.lua")
script = new NjJayMissionItems();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_NPC_MISSION_SPINJITZU_SERVER.lua")
script = new NjNPCMissionSpinjitzuServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_ENEMY_SKELETON_SPAWNER.lua")
script = new EnemySkeletonSpawner();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_NJ_RAIL_SWITCH.lua")
script = new NjRailSwitch();
else if (scriptName == "scripts\\02_server\\Map\\General\\Ninjago\\L_RAIL_ACTIVATORS_SERVER.lua")
script = new NjRailActivatorsServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\Ninjago\\L_RAIL_POST_SERVER.lua")
script = new NjRailPostServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\Ninjago\\L_ICE_RAIL_ACTIVATOR_SERVER.lua")
script = new NjIceRailActivator();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_FALLING_TILE.lua")
script = new FallingTile();
else if (scriptName == "scripts\\02_server\\Enemy\\General\\L_ENEMY_NJ_BUFF_STUN_IMMUNITY.lua")
script = new EnemyNjBuff();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_IMAGINATION_SHRINE_SERVER.lua")
script = new ImaginationShrineServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_LIEUTENANT.lua")
script = new Lieutenant();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_RAIN_OF_ARROWS.lua")
script = new RainOfArrows();
if (scriptName == "scripts\\02_server\\Map\\njhub\\L_CAVE_PRISON_CAGE.lua")
script = new CavePrisonCage();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\boss_instance\\L_MONASTERY_BOSS_INSTANCE_SERVER.lua")
script = new NjMonastryBossInstance();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_CATAPULT_BOUNCER_SERVER.lua")
script = new CatapultBouncerServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_CATAPULT_BASE_SERVER.lua")
script = new CatapultBaseServer();
else if (scriptName == "scripts\\02_server\\Map\\General\\Ninjago\\L_NJHUB_LAVA_PLAYER_DEATH_TRIGGER.lua")
script = new NjhubLavaPlayerDeathTrigger();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_MON_CORE_NOOK_DOORS.lua")
script = new MonCoreNookDoors();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_MON_CORE_SMASHABLE_DOORS.lua")
script = new MonCoreSmashableDoors();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_FLAME_JET_SERVER.lua")
script = new FlameJetServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_BURNING_TILE.lua")
script = new BurningTile();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_SPAWN_EARTH_PET_SERVER.lua")
script = new NjEarthDragonPetServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_EARTH_PET_SERVER.lua")
script = new NjEarthPetServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_DRAGON_EMBLEM_CHEST_SERVER.lua")
script = new NjDragonEmblemChestServer();
else if (scriptName == "scripts\\02_server\\Map\\njhub\\L_NYA_MISSION_ITEMS.lua")
script = new NjNyaMissionitems();
//DLU:
else if (scriptName == "scripts\\02_server\\DLU\\DLUVanityTeleportingObject.lua")
script = new DLUVanityTeleportingObject();
// Survival minigame
else if (scriptName == "scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_STROMBIE.lua")
script = new AgSurvivalStromling();
else if (scriptName == "scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_DARKLING_MECH.lua")
script = new AgSurvivalMech();
else if (scriptName == "scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_DARK_SPIDERLING.lua")
script = new AgSurvivalSpiderling();
// Scripted equipment
else if (scriptName == "scripts\\EquipmentScripts\\Sunflower.lua")
script = new Sunflower();
else if (scriptName == "scripts/EquipmentScripts/AnvilOfArmor.lua")
script = new AnvilOfArmor();
else if (scriptName == "scripts/EquipmentScripts/FountainOfImagination.lua")
script = new FountainOfImagination();
else if (scriptName == "scripts/EquipmentScripts/CauldronOfLife.lua")
script = new CauldronOfLife();
else if (scriptName == "scripts\\02_server\\Equipment\\L_BOOTYDIG_SERVER.lua")
script = new BootyDigServer();
else if (scriptName == "scripts\\EquipmentScripts\\PersonalFortress.lua")
script = new PersonalFortress();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_PROPERTY_DEVICE.lua")
script = new PropertyDevice();
else if (scriptName == "scripts\\02_server\\Map\\General\\L_IMAG_BACKPACK_HEALS_SERVER.lua")
script = new ImaginationBackpackHealServer();
else if (scriptName == "scripts\\ai\\GENERAL\\L_LEGO_DIE_ROLL.lua")
script = new LegoDieRoll();
else if (scriptName == "scripts\\EquipmentScripts\\BuccaneerValiantShip.lua")
script = new BuccaneerValiantShip();
else if (scriptName == "scripts\\EquipmentScripts\\FireFirstSkillonStartup.lua")
script = new FireFirstSkillonStartup();
else if (scriptName == "scripts\\equipmenttriggers\\gempack.lua")
script = new GemPack();
else if (scriptName == "scripts\\equipmenttriggers\\shardarmor.lua")
script = new ShardArmor();
else if (scriptName == "scripts\\equipmenttriggers\\coilbackpack.lua")
script = new TeslaPack();
else if (scriptName == "scripts\\EquipmentScripts\\stunImmunity.lua")
script = new StunImmunity();
// FB
else if (scriptName == "scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_BROKEN.lua")
script = new RockHydrantBroken();
else if (scriptName == "scripts\\ai\\NS\\L_NS_WH_FANS.lua")
script = new WhFans();
// WBL
else if (scriptName == "scripts\\zone\\LUPs\\WBL_generic_zone.lua")
script = new WblGenericZone();
// Alpha
if (scriptName == "scripts\\ai\\FV\\L_TRIGGER_GAS.lua")
script = new TriggerGas();
else if (scriptName == "scripts\\ai\\FV\\L_ACT_NINJA_SENSEI.lua")
script = new ActNinjaSensei();
// pickups
if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_1_BRONZE-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(1);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_1_GOLD-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(10000);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_1_SILVER-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(100);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_10_BRONZE-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(10);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_10_GOLD-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(100000);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_10_SILVER-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(1000);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_25_BRONZE-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(25);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_25_GOLD-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(250000);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_25_SILVER-COIN-SPAWNER.lua")
script = new SpecialCoinSpawner(2500);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER.lua")
script = new SpecialPowerupSpawner(13);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER-2PT.lua")
script = new SpecialPowerupSpawner(129);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_LIFE-POWERUP-SPAWNER.lua")
script = new SpecialPowerupSpawner(5);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_ARMOR-POWERUP-SPAWNER.lua")
script = new SpecialPowerupSpawner(747);
else if (scriptName == "scripts\\ai\\SPEC\\L_SPECIAL_SPEED_BUFF_SPAWNER.lua")
script = new SpecialSpeedBuffSpawner();
// Wild
if (scriptName == "scripts\\ai\\WILD\\L_WILD_GF_RAT.lua" || scriptName == "scripts\\ai\\WILD\\L_WILD_GF_SNAIL.lua")
script = new WildAndScared();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_GF_GLOWBUG.lua")
script = new WildGfGlowbug();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_AMBIENT_CRAB.lua")
script = new WildAmbientCrab();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_PANTS.lua")
script = new WildPants();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_NINJA_BRICKS.lua")
script = new WildNinjaBricks();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_NINJA_STUDENT.lua")
script = new WildNinjaStudent();
else if (scriptName == "scripts\\ai\\WILD\\L_WILD_NINJA_SENSEI.lua")
script = new WildNinjaSensei();
else if (scriptName == "scripts\\ai\\WILD\\L_LUP_generic_interact.lua")
script = new LupGenericInteract();
else if (scriptName.rfind("scripts\\zone\\LUPs\\RobotCity Intro\\WBL_RCIntro_RobotCitizen", 0) == 0)
script = new WblRobotCitizen();
// handle invalid script reporting if the path is greater than zero and it's not an ignored script
// information not really needed for sys admins but is for developers
else if (script == InvalidToReturn) {
if ((scriptName.length() > 0) && !((scriptName == "scripts\\02_server\\Enemy\\General\\L_SUSPEND_LUA_AI.lua") ||
(scriptName == "scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_SPIDERLING.lua") ||
(scriptName =="scripts\\ai\\FV\\L_ACT_NINJA_STUDENT.lua") ||
(scriptName == "scripts\\ai\\WILD\\L_WILD_GF_FROG.lua") ||
(scriptName == "scripts\\empty.lua")
)) LOG_DEBUG("LOT %i attempted to load CppScript for '%s', but returned InvalidScript.", parent->GetLOT(), scriptName.c_str());
}
m_Scripts[scriptName] = script;
return script;
}

View File

@@ -0,0 +1,16 @@
#ifndef CPPSCRIPTSOLD_H
#define CPPSCRIPTSOLD_H
#include <string>
class Entity;
namespace CppScripts {
class Script;
};
namespace CppScriptsOld {
CppScripts::Script* const GetScript(Entity* entity, const std::string& scriptName);
};
#endif //!CPPSCRIPTSOLD_H

View File

@@ -0,0 +1,941 @@
#include <gtest/gtest.h>
#include "dCommonVars.h"
#include "eCinematicEvent.h"
#include "CppScripts.h"
#include "CppScriptsOld.h"
#include "Entity.h"
#include "EntityInfo.h"
#include "LupGenericInteract.h"
#include "InvalidScript.h"
//VE / AG scripts:
#include "AgShipPlayerDeathTrigger.h"
#include "AgShipPlayerShockServer.h"
#include "AgSpaceStuff.h"
#include "AgImagSmashable.h"
#include "NpcNpSpacemanBob.h"
#include "StoryBoxInteractServer.h"
#include "Binoculars.h"
#include "AllCrateChicken.h"
#include "SsModularBuildServer.h"
#include "ZoneAgProperty.h"
#include "TouchMissionUpdateServer.h"
#include "ActSharkPlayerDeathTrigger.h"
#include "BaseEnemyMech.h"
#include "ZoneAgSurvival.h"
#include "AgBusDoor.h"
#include "MaestromExtracticatorServer.h"
#include "NpcWispServer.h"
#include "AgCagedBricksServer.h"
#include "NpcEpsilonServer.h"
#include "AgTurret.h"
#include "AgMonumentBirds.h"
#include "AgLaserSensorServer.h"
#include "AgMonumentLaserServer.h"
#include "AgFans.h"
#include "RemoveRentalGear.h"
#include "NpcNjAssistantServer.h"
#include "EnemySpiderSpawner.h"
#include "AgQbElevator.h"
#include "AgPropGuard.h"
#include "AgBugsprayer.h"
#include "WishingWellServer.h"
#include "NpcAgCourseStarter.h"
#include "AgMonumentRaceGoal.h"
#include "ZoneAgSpiderQueen.h"
#include "SpiderBossTreasureChestServer.h"
#include "NpcCowboyServer.h"
#include "ZoneAgMedProperty.h"
#include "AgStromlingProperty.h"
#include "AgDarkSpiderling.h"
#include "PropertyFXDamage.h"
#include "AgPropguards.h"
#include "NpcPirateServer.h"
#include "AgPicnicBlanket.h"
#include "AgMonumentRaceCancel.h"
#include "VeBricksampleServer.h"
#include "PropertyBankInteract.h"
#include "VeMech.h"
#include "VeMissionConsole.h"
#include "VeEpsilonServer.h"
#include "AgSurvivalBuffStation.h"
#include "QbSpawner.h"
#include "AgQbWall.h"
// NS Scripts
#include "NsModularBuild.h"
#include "NsGetFactionMissionServer.h"
#include "NsQbImaginationStatue.h"
#include "NsConcertChoiceBuildManager.h"
#include "NsConcertChoiceBuild.h"
#include "NsConcertQuickBuild.h"
#include "AgStagePlatforms.h"
#include "NsConcertInstrument.h"
#include "NsJohnnyMissionServer.h"
#include "StinkyFishTarget.h"
#include "ZoneNsProperty.h"
#include "ZoneNsMedProperty.h"
#include "NsTokenConsoleServer.h"
#include "NsLupTeleport.h"
#include "ZoneNsWaves.h"
#include "WaveBossHammerling.h"
#include "WaveBossApe.h"
#include "WaveBossSpiderling.h"
#include "WaveBossHorsemen.h"
#include "MinigameTreasureChestServer.h"
#include "NsLegoClubDoor.h"
#include "ClRing.h"
#include "WildAmbients.h"
#include "PropertyDeathPlane.h"
// PR Scripts
#include "PrWhistle.h"
#include "PrSeagullFly.h"
#include "HydrantBroken.h"
#include "HydrantSmashable.h"
#include "PetDigServer.h"
#include "PetFromDigServer.h"
#include "PetFromObjectServer.h"
#include "DamagingPets.h"
#include "SpawnGryphonServer.h"
// GF Scripts
#include "GfTikiTorch.h"
#include "GfCampfire.h"
#include "GfOrgan.h"
#include "GfBanana.h"
#include "GfBananaCluster.h"
#include "GfJailkeepMission.h"
#include "TriggerAmbush.h"
#include "GfCaptainsCannon.h"
#include "MastTeleport.h"
#include "GfJailWalls.h"
#include "QbEnemyStunner.h"
#include "PetDigBuild.h"
#include "SpawnLionServer.h"
#include "BaseEnemyApe.h"
#include "GfApeSmashingQB.h"
#include "ZoneGfProperty.h"
#include "GfArchway.h"
#include "GfMaelstromGeyser.h"
#include "PirateRep.h"
#include "GfParrotCrash.h"
// SG Scripts
#include "SGCannon.h"
#include "ZoneSGServer.h"
// FV Scripts
#include "FvCandle.h"
#include "EnemyRoninSpawner.h"
#include "ActNinjaTurret.h"
#include "FvMaelstromCavalry.h"
#include "FvHorsemenTrigger.h"
#include "FvFlyingCreviceDragon.h"
#include "FvMaelstromDragon.h"
#include "FvDragonSmashingGolemQb.h"
#include "TreasureChestDragonServer.h"
#include "InstanceExitTransferPlayerToLastNonInstance.h"
#include "FvFreeGfNinjas.h"
#include "FvPandaServer.h"
#include "FvPandaSpawnerServer.h"
#include "ZoneFvProperty.h"
#include "FvBrickPuzzleServer.h"
#include "FvConsoleLeftQuickbuild.h"
#include "FvConsoleRightQuickbuild.h"
#include "FvFacilityBrick.h"
#include "FvFacilityPipes.h"
#include "ImgBrickConsoleQB.h"
#include "ActParadoxPipeFix.h"
#include "FvNinjaGuard.h"
#include "FvPassThroughWall.h"
#include "FvBounceOverWall.h"
#include "FvFong.h"
#include "FvMaelstromGeyser.h"
#include "FvRaceDragon.h"
#include "FvRacePillarABCServer.h"
#include "FvRacePillarDServer.h"
#include "RaceFireballs.h"
#include "RaceShipLapColumnsServer.h"
// FB Scripts
#include "AgJetEffectServer.h"
#include "AgSalutingNpcs.h"
#include "BossSpiderQueenEnemyServer.h"
#include "RockHydrantSmashable.h"
// Misc Scripts
#include "ExplodingAsset.h"
#include "ActPlayerDeathTrigger.h"
#include "CrabServer.h"
#include "GrowingFlower.h"
#include "BaseFootRaceManager.h"
#include "PropertyPlatform.h"
#include "MailBoxServer.h"
#include "ActMine.h"
#include "FireFirstSkillonStartup.h"
// Racing Scripts
#include "RaceImagineCrateServer.h"
#include "ActVehicleDeathTrigger.h"
#include "RaceImaginePowerup.h"
#include "RaceMaelstromGeiser.h"
#include "FvRaceSmashEggImagineServer.h"
#include "RaceSmashServer.h"
#include "FvRacingColumns.h"
// NT Scripts
#include "NtSentinelWalkwayServer.h"
#include "NtParadoxTeleServer.h"
#include "NtDarkitectRevealServer.h"
#include "BankInteractServer.h"
#include "NtVentureSpeedPadServer.h"
#include "NtVentureCannonServer.h"
#include "NtCombatChallengeServer.h"
#include "NtCombatChallengeDummy.h"
#include "NtCombatChallengeExplodingDummy.h"
#include "BaseInteractDropLootServer.h"
#include "NtAssemblyTubeServer.h"
#include "NtParadoxPanelServer.h"
#include "TokenConsoleServer.h"
#include "NtImagBeamBuffer.h"
#include "NtBeamImaginationCollectors.h"
#include "NtDirtCloudServer.h"
#include "NtConsoleTeleportServer.h"
#include "SpawnShrakeServer.h"
#include "SpawnSaberCatServer.h"
#include "SpawnStegoServer.h"
#include "NtDukeServer.h"
#include "NtHaelServer.h"
#include "NtOverbuildServer.h"
#include "NtVandaServer.h"
#include "ForceVolumeServer.h"
#include "NtXRayServer.h"
#include "NtSleepingGuard.h"
#include "NtImagimeterVisibility.h"
#include "FrictionVolumeServer.h"
#include "NTPipeVisibilityServer.h"
#include "NTNaomiDirtServer.h"
#include "MinigameBlueMark.h"
#include "NtNaomiBreadcrumbServer.h"
// DLU Scripts
#include "DLUVanityTeleportingObject.h"
// AM Scripts
#include "AmConsoleTeleportServer.h"
#include "RandomSpawnerFin.h"
#include "RandomSpawnerPit.h"
#include "RandomSpawnerStr.h"
#include "RandomSpawnerZip.h"
#include "AmDarklingMech.h"
#include "AmBridge.h"
#include "AmDrawBridge.h"
#include "AmShieldGenerator.h"
#include "AmShieldGeneratorQuickbuild.h"
#include "AmDropshipComputer.h"
#include "AmScrollReaderServer.h"
#include "AmTemplateSkillVolume.h"
#include "EnemyNjBuff.h"
#include "AmSkeletonEngineer.h"
#include "AmSkullkinDrill.h"
#include "AmSkullkinDrillStand.h"
#include "AmSkullkinTower.h"
#include "AmDarklingDragon.h"
#include "AmBlueX.h"
#include "AmTeapotServer.h"
#include "WanderingVendor.h"
// NJ Scripts
#include "NjGarmadonCelebration.h"
#include "NjWuNPC.h"
#include "NjScrollChestServer.h"
#include "EnemySkeletonSpawner.h"
#include "NjRailSwitch.h"
#include "NjRailPostServer.h"
#include "NjRailActivatorsServer.h"
#include "NjColeNPC.h"
#include "NjNPCMissionSpinjitzuServer.h"
#include "NjJayMissionItems.h"
#include "FallingTile.h"
#include "ImaginationShrineServer.h"
#include "Lieutenant.h"
#include "RainOfArrows.h"
#include "NjIceRailActivator.h"
#include "CavePrisonCage.h"
#include "NjMonastryBossInstance.h"
#include "CatapultBouncerServer.h"
#include "CatapultBaseServer.h"
#include "NjhubLavaPlayerDeathTrigger.h"
#include "MonCoreNookDoors.h"
#include "MonCoreSmashableDoors.h"
#include "FlameJetServer.h"
#include "BurningTile.h"
#include "NjEarthDragonPetServer.h"
#include "NjEarthPetServer.h"
#include "NjDragonEmblemChestServer.h"
#include "NjNyaMissionitems.h"
// Scripted equipment
#include "AnvilOfArmor.h"
#include "CauldronOfLife.h"
#include "FountainOfImagination.h"
#include "Sunflower.h"
#include "BootyDigServer.h"
#include "PersonalFortress.h"
#include "PropertyDevice.h"
#include "ImaginationBackpackHealServer.h"
#include "LegoDieRoll.h"
#include "BuccaneerValiantShip.h"
#include "GemPack.h"
#include "ShardArmor.h"
#include "TeslaPack.h"
#include "StunImmunity.h"
// Survival scripts
#include "AgSurvivalStromling.h"
#include "AgSurvivalMech.h"
#include "AgSurvivalSpiderling.h"
// Frostburgh Scripts
#include "RockHydrantBroken.h"
#include "WhFans.h"
// WBL scripts
#include "WblGenericZone.h"
// Alpha Scripts
#include "TriggerGas.h"
#include "ActNinjaSensei.h"
// pickups
#include "SpecialCoinSpawner.h"
#include "SpecialPowerupSpawner.h"
#include "SpecialSpeedBuffSpawner.h"
// Wild Scripts
#include "WildAndScared.h"
#include "WildGfGlowbug.h"
#include "WildAmbientCrab.h"
#include "WildPants.h"
#include "WildNinjaStudent.h"
#include "WildNinjaSensei.h"
#include "WildNinjaBricks.h"
#include "VisToggleNotifierServer.h"
#include "LupGenericInteract.h"
#include "WblRobotCitizen.h"
#define CHECK_SCRIPT(scriptName, scriptType) do { \
auto* script = dynamic_cast<scriptType*>(CppScripts::GetScript(&entity, scriptName)); \
auto* oldScript = dynamic_cast<scriptType*>(CppScriptsOld::GetScript(&entity, scriptName)); \
ASSERT_NE(script, nullptr); \
ASSERT_NE(oldScript, nullptr); \
} while (0)
#define CHECK_CACHE(scriptName) do { \
ASSERT_EQ(CppScripts::GetScript(&entity, scriptName), CppScripts::GetScript(&entity, scriptName)); \
} while (0)
TEST(dScriptsTests, OldCppScriptsCheck) {
Entity entity(LWOOBJID_EMPTY, EntityInfo{});
CHECK_SCRIPT("scripts\\ai\\WILD\\L_LUP_generic_interact.lua", LupGenericInteract);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_SHIP_PLAYER_DEATH_TRIGGER.lua", AgShipPlayerDeathTrigger);
CHECK_SCRIPT("scripts\\ai\\NP\\L_NPC_NP_SPACEMAN_BOB.lua", NpcNpSpacemanBob);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_SPACE_STUFF.lua", AgSpaceStuff);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_SHIP_PLAYER_SHOCK_SERVER.lua", AgShipPlayerShockServer);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_IMAG_SMASHABLE.lua", AgImagSmashable);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_STORY_BOX_INTERACT_SERVER.lua", StoryBoxInteractServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_BINOCULARS.lua", Binoculars);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_ALL_CRATE_CHICKEN.lua", AllCrateChicken);
CHECK_SCRIPT("scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_SMASHABLE.lua", RockHydrantSmashable);
CHECK_SCRIPT("scripts\\02_server\\Map\\SS\\L_SS_MODULAR_BUILD_SERVER.lua", SsModularBuildServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\Property\\AG_Small\\L_ZONE_AG_PROPERTY.lua", ZoneAgProperty);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_POI_MISSION.lua", InvalidScript);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_TOUCH_MISSION_UPDATE_SERVER.lua", TouchMissionUpdateServer);
CHECK_SCRIPT("scripts\\ai\\AG\\L_ACT_SHARK_PLAYER_DEATH_TRIGGER.lua", ActSharkPlayerDeathTrigger);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_MECH.lua", BaseEnemyMech);
CHECK_SCRIPT("scripts\\zone\\AG\\L_ZONE_AG_SURVIVAL.lua", ZoneAgSurvival);
CHECK_SCRIPT("scripts\\02_server\\Objects\\L_BUFF_STATION_SERVER.lua", AgSurvivalBuffStation);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_BUS_DOOR.lua", AgBusDoor);
CHECK_SCRIPT("scripts\\02_server\\Equipment\\L_MAESTROM_EXTRACTICATOR_SERVER.lua", MaestromExtracticatorServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_AG_CAGED_BRICKS_SERVER.lua", AgCagedBricksServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_NPC_WISP_SERVER.lua", NpcWispServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_NPC_EPSILON_SERVER.lua", NpcEpsilonServer);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_TURRET.lua", AgTurret);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_TURRET_FOR_SHIP.lua", AgTurret);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_AG_LASER_SENSOR_SERVER.lua", AgLaserSensorServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_AG_MONUMENT_LASER_SERVER.lua", AgMonumentLaserServer);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_FANS.lua", AgFans);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_AG_MONUMENT_BIRDS.lua", AgMonumentBirds);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_REMOVE_RENTAL_GEAR.lua", RemoveRentalGear);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_NPC_NJ_ASSISTANT_SERVER.lua", NpcNjAssistantServer);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_SALUTING_NPCS.lua", AgSalutingNpcs);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_JET_EFFECT_SERVER.lua", AgJetEffectServer);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\AG\\L_BOSS_SPIDER_QUEEN_ENEMY_SERVER.lua", BossSpiderQueenEnemyServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\Property\\AG_Small\\L_ENEMY_SPIDER_SPAWNER.lua", EnemySpiderSpawner);
CHECK_SCRIPT("scripts/02_server/Map/Property/AG_Small/L_ENEMY_SPIDER_SPAWNER.lua", EnemySpiderSpawner);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_QB_Elevator.lua", AgQbElevator);
CHECK_SCRIPT("scripts\\ai\\PROPERTY\\AG\\L_AG_PROP_GUARD.lua", AgPropGuard);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_AG_BUGSPRAYER.lua", AgBugsprayer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_NPC_AG_COURSE_STARTER.lua", NpcAgCourseStarter);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L__AG_MONUMENT_RACE_GOAL.lua", AgMonumentRaceGoal);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L__AG_MONUMENT_RACE_CANCEL.lua", AgMonumentRaceCancel);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG_Spider_Queen\\L_ZONE_AG_SPIDER_QUEEN.lua", ZoneAgSpiderQueen);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG_Spider_Queen\\L_SPIDER_BOSS_TREASURE_CHEST_SERVER.lua", SpiderBossTreasureChestServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_NPC_COWBOY_SERVER.lua", NpcCowboyServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\Property\\AG_Med\\L_ZONE_AG_MED_PROPERTY.lua", ZoneAgMedProperty);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_STROMBIE_PROPERTY.lua", AgStromlingProperty);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_DARKLING_MECH.lua", BaseEnemyMech);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_DARK_SPIDERLING.lua", AgDarkSpiderling);
CHECK_SCRIPT("scripts\\ai\\PROPERTY\\L_PROP_GUARDS.lua", AgPropguards);
CHECK_SCRIPT("scripts\\ai\\PROPERTY\\L_PROPERTY_FX_DAMAGE.lua", PropertyFXDamage);
CHECK_SCRIPT("scripts\\02_server\\Map\\AG\\L_NPC_PIRATE_SERVER.lua", NpcPirateServer);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_PICNIC_BLANKET.lua", AgPicnicBlanket);
CHECK_SCRIPT("scripts\\02_server\\Map\\Property\\L_PROPERTY_BANK_INTERACT_SERVER.lua", PropertyBankInteract);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\VE\\L_VE_MECH.lua", VeMech);
CHECK_SCRIPT("scripts\\02_server\\Map\\VE\\L_MISSION_CONSOLE_SERVER.lua", VeMissionConsole);
CHECK_SCRIPT("scripts\\02_server\\Map\\VE\\L_EPSILON_SERVER.lua", VeEpsilonServer);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_MODULAR_BUILD.lua", NsModularBuild);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_GET_FACTION_MISSION_SERVER.lua", NsGetFactionMissionServer);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_QB_IMAGINATION_STATUE.lua", NsQbImaginationStatue);
CHECK_SCRIPT("scripts\\02_server\\Map\\NS\\CONCERT_CHOICEBUILD_MANAGER_SERVER.lua", NsConcertChoiceBuildManager);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_CONCERT_CHOICEBUILD.lua", NsConcertChoiceBuild);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_CONCERT_QUICKBUILD.lua", NsConcertQuickBuild);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_STAGE_PLATFORMS.lua", AgStagePlatforms);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_CONCERT_INSTRUMENT_QB.lua", NsConcertInstrument);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_JONNY_FLAG_MISSION_SERVER.lua", NsJohnnyMissionServer);
CHECK_SCRIPT("scripts\\02_server\\Objects\\L_STINKY_FISH_TARGET.lua", StinkyFishTarget);
CHECK_SCRIPT("scripts\\zone\\PROPERTY\\NS\\L_ZONE_NS_PROPERTY.lua", ZoneNsProperty);
CHECK_SCRIPT("scripts\\02_server\\Map\\Property\\NS_Med\\L_ZONE_NS_MED_PROPERTY.lua", ZoneNsMedProperty);
CHECK_SCRIPT("scripts\\02_server\\Map\\NS\\L_NS_TOKEN_CONSOLE_SERVER.lua", NsTokenConsoleServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NS\\L_NS_LUP_TELEPORT.lua", NsLupTeleport);
CHECK_SCRIPT("scripts\\02_server\\Map\\NS\\Waves\\L_ZONE_NS_WAVES.lua", ZoneNsWaves);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_HAMMERLING_ENEMY_SERVER.lua", WaveBossHammerling);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_APE_ENEMY_SERVER.lua", WaveBossApe);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_DARK_SPIDERLING_ENEMY_SERVER.lua", WaveBossSpiderling);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_HORESEMEN_ENEMY_SERVER.lua", WaveBossHorsemen);
CHECK_SCRIPT("scripts\\02_server\\Minigame\\General\\L_MINIGAME_TREASURE_CHEST_SERVER.lua", MinigameTreasureChestServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NS\\L_NS_LEGO_CLUB_DOOR.lua", NsLegoClubDoor);
CHECK_SCRIPT("scripts/ai/NS/L_CL_RING.lua", ClRing);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_AMBIENTS.lua", WildAmbients);
CHECK_SCRIPT("scripts\\ai\\NS\\NS_PP_01\\L_NS_PP_01_TELEPORT.lua", PropertyDeathPlane);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_QB_SPAWNER.lua", QbSpawner);
CHECK_SCRIPT("scripts\\ai\\AG\\L_AG_QB_Wall.lua", AgQbWall);
CHECK_SCRIPT("scripts\\02_server\\Map\\GF\\L_GF_TORCH.lua", GfTikiTorch);
CHECK_SCRIPT("scripts\\ai\\GF\\L_SPECIAL_FIREPIT.lua", GfCampfire);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_ORGAN.lua", GfOrgan);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_BANANA.lua", GfBanana);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_BANANA_CLUSTER.lua", GfBananaCluster);
CHECK_SCRIPT("scripts/ai/GF/L_GF_JAILKEEP_MISSION.lua", GfJailkeepMission);
CHECK_SCRIPT("scripts\\ai\\GF\\L_TRIGGER_AMBUSH.lua", TriggerAmbush);
CHECK_SCRIPT("scripts\\02_server\\Map\\GF\\L_GF_CAPTAINS_CANNON.lua", GfCaptainsCannon);
CHECK_SCRIPT("scripts\\02_server\\Map\\GF\\L_MAST_TELEPORT.lua", MastTeleport);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_JAIL_WALLS.lua", GfJailWalls);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_QB_ENEMY_STUNNER.lua", QbEnemyStunner);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_PET_DIG_BUILD.lua", PetDigBuild);
CHECK_SCRIPT("scripts\\02_server\\Map\\GF\\L_SPAWN_LION_SERVER.lua", SpawnLionServer);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_APE.lua", BaseEnemyApe);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\General\\L_GF_APE_SMASHING_QB.lua", GfApeSmashingQB);
CHECK_SCRIPT("scripts\\zone\\PROPERTY\\GF\\L_ZONE_GF_PROPERTY.lua", ZoneGfProperty);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_ARCHWAY.lua", GfArchway);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_MAELSTROM_GEYSER.lua", GfMaelstromGeyser);
CHECK_SCRIPT("scripts\\ai\\GF\\L_PIRATE_REP.lua", PirateRep);
CHECK_SCRIPT("scripts\\ai\\GF\\L_GF_PARROT_CRASH.lua", GfParrotCrash);
CHECK_SCRIPT("scripts\\ai\\MINIGAME\\SG_GF\\SERVER\\SG_CANNON.lua", SGCannon);
CHECK_SCRIPT("scripts\\ai\\MINIGAME\\SG_GF\\L_ZONE_SG_SERVER.lua", ZoneSGServer);
CHECK_SCRIPT("scripts\\client\\ai\\PR\\L_PR_WHISTLE.lua", PrWhistle);
CHECK_SCRIPT("scripts\\02_server\\Map\\PR\\L_PR_SEAGULL_FLY.lua", PrSeagullFly);
CHECK_SCRIPT("scripts\\ai\\PETS\\L_HYDRANT_SMASHABLE.lua", HydrantSmashable);
CHECK_SCRIPT("scripts\\02_server\\map\\PR\\L_HYDRANT_BROKEN.lua", HydrantBroken);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\PET_DIG_SERVER.lua", PetDigServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SKELETON_DRAGON_PET_DIG_SERVER.lua", PetDigServer);
CHECK_SCRIPT("scripts\\client\\ai\\PR\\L_CRAB_SERVER.lua", CrabServer);
CHECK_SCRIPT("scripts\\02_server\\Pets\\L_PET_FROM_DIG_SERVER.lua", PetFromDigServer);
CHECK_SCRIPT("scripts\\02_server\\Pets\\L_PET_FROM_OBJECT_SERVER.lua", PetFromObjectServer);
CHECK_SCRIPT("scripts\\02_server\\Pets\\L_DAMAGING_PET.lua", DamagingPets);
CHECK_SCRIPT("scripts\\02_server\\Map\\PR\\L_SPAWN_GRYPHON_SERVER.lua", SpawnGryphonServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\L_ACT_CANDLE.lua", FvCandle);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\L_ENEMY_RONIN_SPAWNER.lua", EnemyRoninSpawner);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\FV\\L_FV_MAELSTROM_CAVALRY.lua", FvMaelstromCavalry);
CHECK_SCRIPT("scripts\\ai\\FV\\L_ACT_NINJA_TURRET_1.lua", ActNinjaTurret);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\L_FV_HORSEMEN_TRIGGER.lua", FvHorsemenTrigger);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_FLYING_CREVICE_DRAGON.lua", FvFlyingCreviceDragon);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\FV\\L_FV_MAELSTROM_DRAGON.lua", FvMaelstromDragon);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_DRAGON_SMASHING_GOLEM_QB.lua", FvDragonSmashingGolemQb);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\General\\L_TREASURE_CHEST_DRAGON_SERVER.lua", TreasureChestDragonServer);
CHECK_SCRIPT("scripts\\ai\\GENERAL\\L_INSTANCE_EXIT_TRANSFER_PLAYER_TO_LAST_NON_INSTANCE.lua", InstanceExitTransferPlayerToLastNonInstance);
CHECK_SCRIPT("scripts\\ai\\FV\\L_NPC_FREE_GF_NINJAS.lua", FvFreeGfNinjas);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_PANDA_SPAWNER_SERVER.lua", FvPandaSpawnerServer);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_PANDA_SERVER.lua", FvPandaServer);
CHECK_SCRIPT("scripts\\zone\\PROPERTY\\FV\\L_ZONE_FV_PROPERTY.lua", ZoneFvProperty);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_BRICK_PUZZLE_SERVER.lua", FvBrickPuzzleServer);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_CONSOLE_LEFT_QUICKBUILD.lua", FvConsoleLeftQuickbuild);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_CONSOLE_RIGHT_QUICKBUILD.lua", FvConsoleRightQuickbuild);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_FACILITY_BRICK.lua", FvFacilityBrick);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_FACILITY_PIPES.lua", FvFacilityPipes);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\L_IMG_BRICK_CONSOLE_QB.lua", ImgBrickConsoleQB);
CHECK_SCRIPT("scripts\\ai\\FV\\L_ACT_PARADOX_PIPE_FIX.lua", ActParadoxPipeFix);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_NINJA_GUARDS.lua", FvNinjaGuard);
CHECK_SCRIPT("scripts\\ai\\FV\\L_ACT_PASS_THROUGH_WALL.lua", FvPassThroughWall);
CHECK_SCRIPT("scripts\\ai\\FV\\L_ACT_BOUNCE_OVER_WALL.lua", FvBounceOverWall);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\L_NPC_FONG.lua", FvFong);
CHECK_SCRIPT("scripts\\ai\\FV\\L_FV_MAELSTROM_GEYSER.lua", FvMaelstromGeyser);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\Racing\\RACE_SHIP_LAP_COLUMNS_SERVER.lua", RaceShipLapColumnsServer);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP1_SERVER.lua", FvRaceDragon);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP2_SERVER.lua", FvRaceDragon);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP3_SERVER.lua", FvRaceDragon);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_ABC_SERVER.lua", FvRacePillarABCServer);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_D_SERVER.lua", FvRacePillarDServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\Racing\\RACE_FIREBALLS.lua", RaceFireballs);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_EXPLODING_ASSET.lua", ExplodingAsset);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_WISHING_WELL_SERVER.lua", WishingWellServer);
CHECK_SCRIPT("scripts\\ai\\ACT\\L_ACT_PLAYER_DEATH_TRIGGER.lua", ActPlayerDeathTrigger);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_GROWING_FLOWER_SERVER.lua", GrowingFlower);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_TOKEN_CONSOLE_SERVER.lua", TokenConsoleServer);
CHECK_SCRIPT("scripts\\ai\\ACT\\FootRace\\L_ACT_BASE_FOOT_RACE.lua", BaseFootRaceManager);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_PROP_PLATFORM.lua", PropertyPlatform);
CHECK_SCRIPT("scripts\\02_server\\Map\\VE\\L_VE_BRICKSAMPLE_SERVER.lua", VeBricksampleServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_MAIL_BOX_SERVER.lua", MailBoxServer);
CHECK_SCRIPT("scripts\\ai\\ACT\\L_ACT_MINE.lua", ActMine);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_WANDERING_VENDOR.lua", WanderingVendor);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_CRATE_SERVER.lua", RaceImagineCrateServer);
CHECK_SCRIPT("scripts\\ai\\ACT\\L_ACT_VEHICLE_DEATH_TRIGGER.lua", ActVehicleDeathTrigger);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_POWERUP.lua", RaceImaginePowerup);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\Racing\\RACE_MAELSTROM_GEISER.lua", RaceMaelstromGeiser);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_SMASH_EGG_IMAGINE_SERVER.lua", FvRaceSmashEggImagineServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\FV\\Racing\\FV_RACING_COLUMNS.lua", FvRacingColumns);
CHECK_SCRIPT("scripts\\ai\\RACING\\OBJECTS\\RACE_SMASH_SERVER.lua", RaceSmashServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_SENTINELWALKWAY_SERVER.lua", NtSentinelWalkwayServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_PARADOXTELE_SERVER.lua", NtParadoxTeleServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_DARKITECT_REVEAL_SERVER.lua", NtDarkitectRevealServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_BANK_INTERACT_SERVER.lua", BankInteractServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_VENTURESPEEDPAD_SERVER.lua", NtVentureSpeedPadServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_VENTURE_CANNON_SERVER.lua", NtVentureCannonServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_COMBAT_CHALLENGE_SERVER.lua", NtCombatChallengeServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_COMBAT_CHALLENGE_DUMMY.lua", NtCombatChallengeDummy);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\\\L_NT_COMBAT_EXPLODING_TARGET.lua", NtCombatChallengeExplodingDummy);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_BASE_INTERACT_DROP_LOOT_SERVER.lua", BaseInteractDropLootServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_ASSEMBLYTUBE_SERVER.lua", NtAssemblyTubeServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_PARADOX_PANEL_SERVER.lua", NtParadoxPanelServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_IMAG_BEAM_BUFFER.lua", NtImagBeamBuffer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_BEAM_IMAGINATION_COLLECTORS.lua", NtBeamImaginationCollectors);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_DIRT_CLOUD_SERVER.lua", NtDirtCloudServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_CONSOLE_TELEPORT_SERVER.lua", NtConsoleTeleportServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_SPAWN_STEGO_SERVER.lua", SpawnStegoServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_SPAWN_SABERCAT_SERVER.lua", SpawnSaberCatServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_SPAWN_SHRAKE_SERVER.lua", SpawnShrakeServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_DUKE_SERVER.lua", NtDukeServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_HAEL_SERVER.lua", NtHaelServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_FACTION_SPY_SERVER.lua", NtFactionSpyServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_OVERBUILD_SERVER.lua", NtOverbuildServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_VANDA_SERVER.lua", NtVandaServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_FORCE_VOLUME_SERVER.lua", ForceVolumeServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_FRICTION_VOLUME_SERVER.lua", FrictionVolumeServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_XRAY_SERVER.lua", NtXRayServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_SLEEPING_GUARD.lua", NtSleepingGuard);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_IMAGIMETER_VISIBILITY_SERVER.lua", NTImagimeterVisibility);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_PIPE_VISIBILITY_SERVER.lua", NTPipeVisibilityServer);
CHECK_SCRIPT("scripts\\ai\\MINIGAME\\Objects\\MINIGAME_BLUE_MARK.lua", MinigameBlueMark);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_NAOMI_BREADCRUMB_SERVER.lua", NtNaomiBreadcrumbServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\NT\\L_NT_NAOMI_DIRT_SERVER.lua", NTNaomiDirtServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_AM_CONSOLE_TELEPORT_SERVER.lua", AmConsoleTeleportServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_FIN.lua", RandomSpawnerFin);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_PIT.lua", RandomSpawnerPit);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_STR.lua", RandomSpawnerStr);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_ZIP.lua", RandomSpawnerZip);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_MECH.lua", AmDarklingMech);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_BRIDGE.lua", AmBridge);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_DRAW_BRIDGE.lua", AmDrawBridge);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SHIELD_GENERATOR.lua", AmShieldGenerator);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SHIELD_GENERATOR_QUICKBUILD.lua", AmShieldGeneratorQuickbuild);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_DROPSHIP_COMPUTER.lua", AmDropshipComputer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SCROLL_READER_SERVER.lua", AmScrollReaderServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_TEMPLE_SKILL_VOLUME.lua", AmTemplateSkillVolume);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\General\\L_ENEMY_NJ_BUFF.lua", EnemyNjBuff);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\AM\\L_AM_SKELETON_ENGINEER.lua", AmSkeletonEngineer);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SKULLKIN_DRILL.lua", AmSkullkinDrill);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SKULLKIN_DRILL_STAND.lua", AmSkullkinDrillStand);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_SKULLKIN_TOWER.lua", AmSkullkinTower);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\AM\\L_AM_NAMED_DARKLING_DRAGON.lua", AmDarklingDragon);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_APE.lua", BaseEnemyApe);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_BLUE_X.lua", AmBlueX);
CHECK_SCRIPT("scripts\\02_server\\Map\\AM\\L_TEAPOT_SERVER.lua", AmTeapotServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_GARMADON_CELEBRATION_SERVER.lua", NjGarmadonCelebration);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_WU_NPC.lua", NjWuNPC);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_SCROLL_CHEST_SERVER.lua", NjScrollChestServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_COLE_NPC.lua", NjColeNPC);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_JAY_MISSION_ITEMS.lua", NjJayMissionItems);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_NPC_MISSION_SPINJITZU_SERVER.lua", NjNPCMissionSpinjitzuServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_ENEMY_SKELETON_SPAWNER.lua", EnemySkeletonSpawner);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_NJ_RAIL_SWITCH.lua", NjRailSwitch);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\Ninjago\\L_RAIL_ACTIVATORS_SERVER.lua", NjRailActivatorsServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\Ninjago\\L_RAIL_POST_SERVER.lua", NjRailPostServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\Ninjago\\L_ICE_RAIL_ACTIVATOR_SERVER.lua", NjIceRailActivator);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_FALLING_TILE.lua", FallingTile);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\General\\L_ENEMY_NJ_BUFF_STUN_IMMUNITY.lua", EnemyNjBuff);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_IMAGINATION_SHRINE_SERVER.lua", ImaginationShrineServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_LIEUTENANT.lua", Lieutenant);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_RAIN_OF_ARROWS.lua", RainOfArrows);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_CAVE_PRISON_CAGE.lua", CavePrisonCage);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\boss_instance\\L_MONASTERY_BOSS_INSTANCE_SERVER.lua", NjMonastryBossInstance);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_CATAPULT_BOUNCER_SERVER.lua", CatapultBouncerServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_CATAPULT_BASE_SERVER.lua", CatapultBaseServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\Ninjago\\L_NJHUB_LAVA_PLAYER_DEATH_TRIGGER.lua", NjhubLavaPlayerDeathTrigger);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_MON_CORE_NOOK_DOORS.lua", MonCoreNookDoors);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_MON_CORE_SMASHABLE_DOORS.lua", MonCoreSmashableDoors);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_MON_CORE_SMASHABLE_DOORS.lua", MonCoreSmashableDoors);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_FLAME_JET_SERVER.lua", FlameJetServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_BURNING_TILE.lua", BurningTile);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_SPAWN_EARTH_PET_SERVER.lua", NjEarthDragonPetServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_EARTH_PET_SERVER.lua", NjEarthPetServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_DRAGON_EMBLEM_CHEST_SERVER.lua", NjDragonEmblemChestServer);
CHECK_SCRIPT("scripts\\02_server\\Map\\njhub\\L_NYA_MISSION_ITEMS.lua", NjNyaMissionitems);
CHECK_SCRIPT("scripts\\02_server\\DLU\\DLUVanityTeleportingObject.lua", DLUVanityTeleportingObject);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_STROMBIE.lua", AgSurvivalStromling);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_DARKLING_MECH.lua", AgSurvivalMech);
CHECK_SCRIPT("scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_DARK_SPIDERLING.lua", AgSurvivalSpiderling);
CHECK_SCRIPT("scripts\\EquipmentScripts\\Sunflower.lua", Sunflower);
CHECK_SCRIPT("scripts/EquipmentScripts/AnvilOfArmor.lua", AnvilOfArmor);
CHECK_SCRIPT("scripts/EquipmentScripts/FountainOfImagination.lua", FountainOfImagination);
CHECK_SCRIPT("scripts/EquipmentScripts/CauldronOfLife.lua", CauldronOfLife);
CHECK_SCRIPT("scripts\\02_server\\Equipment\\L_BOOTYDIG_SERVER.lua", BootyDigServer);
CHECK_SCRIPT("scripts\\EquipmentScripts\\PersonalFortress.lua", PersonalFortress);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_PROPERTY_DEVICE.lua", PropertyDevice);
CHECK_SCRIPT("scripts\\02_server\\Map\\General\\L_IMAG_BACKPACK_HEALS_SERVER.lua", ImaginationBackpackHealServer);
CHECK_SCRIPT("scripts\\ai\\GENERAL\\L_LEGO_DIE_ROLL.lua", LegoDieRoll);
CHECK_SCRIPT("scripts\\EquipmentScripts\\BuccaneerValiantShip.lua", BuccaneerValiantShip);
CHECK_SCRIPT("scripts\\EquipmentScripts\\FireFirstSkillonStartup.lua", FireFirstSkillonStartup);
CHECK_SCRIPT("scripts\\equipmenttriggers\\gempack.lua", GemPack);
CHECK_SCRIPT("scripts\\equipmenttriggers\\shardarmor.lua", ShardArmor);
CHECK_SCRIPT("scripts\\equipmenttriggers\\coilbackpack.lua", TeslaPack);
CHECK_SCRIPT("scripts\\EquipmentScripts\\stunImmunity.lua", StunImmunity);
CHECK_SCRIPT("scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_BROKEN.lua", RockHydrantBroken);
CHECK_SCRIPT("scripts\\ai\\NS\\L_NS_WH_FANS.lua", WhFans);
CHECK_SCRIPT("scripts\\zone\\LUPs\\WBL_generic_zone.lua", WblGenericZone);
CHECK_SCRIPT("scripts\\ai\\FV\\L_TRIGGER_GAS.lua", TriggerGas);
CHECK_SCRIPT("scripts\\ai\\FV\\L_ACT_NINJA_SENSEI.lua", ActNinjaSensei);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_1_BRONZE-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_1_SILVER-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_10_BRONZE-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_10_GOLD-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_10_SILVER-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_25_BRONZE-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_25_GOLD-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_25_SILVER-COIN-SPAWNER.lua", SpecialCoinSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER.lua", SpecialPowerupSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER-2PT.lua", SpecialPowerupSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_LIFE-POWERUP-SPAWNER.lua", SpecialPowerupSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_ARMOR-POWERUP-SPAWNER.lua", SpecialPowerupSpawner);
CHECK_SCRIPT("scripts\\ai\\SPEC\\L_SPECIAL_SPEED_BUFF_SPAWNER.lua", SpecialSpeedBuffSpawner);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_GF_RAT.lua", WildAndScared);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_GF_SNAIL.lua", WildAndScared);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_GF_GLOWBUG.lua", WildGfGlowbug);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_AMBIENT_CRAB.lua", WildAmbientCrab);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_PANTS.lua", WildPants);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_NINJA_BRICKS.lua", WildNinjaBricks);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_NINJA_STUDENT.lua", WildNinjaStudent);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_WILD_NINJA_SENSEI.lua", WildNinjaSensei);
CHECK_SCRIPT("scripts\\ai\\WILD\\L_LUP_generic_interact.lua", LupGenericInteract);
}
TEST(dScriptsTests, CacheCheck) {
Entity entity(LWOOBJID_EMPTY, EntityInfo{});
CHECK_CACHE("scripts\\ai\\WILD\\L_LUP_generic_interact.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_SHIP_PLAYER_DEATH_TRIGGER.lua");
CHECK_CACHE("scripts\\ai\\NP\\L_NPC_NP_SPACEMAN_BOB.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_SPACE_STUFF.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_SHIP_PLAYER_SHOCK_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_IMAG_SMASHABLE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_STORY_BOX_INTERACT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_BINOCULARS.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_ALL_CRATE_CHICKEN.lua");
CHECK_CACHE("scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_SMASHABLE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\SS\\L_SS_MODULAR_BUILD_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\Property\\AG_Small\\L_ZONE_AG_PROPERTY.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_POI_MISSION.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_TOUCH_MISSION_UPDATE_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_ACT_SHARK_PLAYER_DEATH_TRIGGER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_MECH.lua");
CHECK_CACHE("scripts\\zone\\AG\\L_ZONE_AG_SURVIVAL.lua");
CHECK_CACHE("scripts\\02_server\\Objects\\L_BUFF_STATION_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_BUS_DOOR.lua");
CHECK_CACHE("scripts\\02_server\\Equipment\\L_MAESTROM_EXTRACTICATOR_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_AG_CAGED_BRICKS_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_NPC_WISP_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_NPC_EPSILON_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_TURRET.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_TURRET_FOR_SHIP.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_AG_LASER_SENSOR_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_AG_MONUMENT_LASER_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_FANS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_AG_MONUMENT_BIRDS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_REMOVE_RENTAL_GEAR.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_NPC_NJ_ASSISTANT_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_SALUTING_NPCS.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_JET_EFFECT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\AG\\L_BOSS_SPIDER_QUEEN_ENEMY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\Property\\AG_Small\\L_ENEMY_SPIDER_SPAWNER.lua");
CHECK_CACHE("scripts/02_server/Map/Property/AG_Small/L_ENEMY_SPIDER_SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_QB_Elevator.lua");
CHECK_CACHE("scripts\\ai\\PROPERTY\\AG\\L_AG_PROP_GUARD.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_AG_BUGSPRAYER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_NPC_AG_COURSE_STARTER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L__AG_MONUMENT_RACE_GOAL.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L__AG_MONUMENT_RACE_CANCEL.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG_Spider_Queen\\L_ZONE_AG_SPIDER_QUEEN.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG_Spider_Queen\\L_SPIDER_BOSS_TREASURE_CHEST_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_NPC_COWBOY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\Property\\AG_Med\\L_ZONE_AG_MED_PROPERTY.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_STROMBIE_PROPERTY.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_DARKLING_MECH.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_DARK_SPIDERLING.lua");
CHECK_CACHE("scripts\\ai\\PROPERTY\\L_PROP_GUARDS.lua");
CHECK_CACHE("scripts\\ai\\PROPERTY\\L_PROPERTY_FX_DAMAGE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AG\\L_NPC_PIRATE_SERVER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_PICNIC_BLANKET.lua");
CHECK_CACHE("scripts\\02_server\\Map\\Property\\L_PROPERTY_BANK_INTERACT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\VE\\L_VE_MECH.lua");
CHECK_CACHE("scripts\\02_server\\Map\\VE\\L_MISSION_CONSOLE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\VE\\L_EPSILON_SERVER.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_MODULAR_BUILD.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_GET_FACTION_MISSION_SERVER.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_QB_IMAGINATION_STATUE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NS\\CONCERT_CHOICEBUILD_MANAGER_SERVER.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_CONCERT_CHOICEBUILD.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_CONCERT_QUICKBUILD.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_STAGE_PLATFORMS.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_CONCERT_INSTRUMENT_QB.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_JONNY_FLAG_MISSION_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Objects\\L_STINKY_FISH_TARGET.lua");
CHECK_CACHE("scripts\\zone\\PROPERTY\\NS\\L_ZONE_NS_PROPERTY.lua");
CHECK_CACHE("scripts\\02_server\\Map\\Property\\NS_Med\\L_ZONE_NS_MED_PROPERTY.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NS\\L_NS_TOKEN_CONSOLE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NS\\L_NS_LUP_TELEPORT.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NS\\Waves\\L_ZONE_NS_WAVES.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_HAMMERLING_ENEMY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_APE_ENEMY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_DARK_SPIDERLING_ENEMY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Waves\\L_WAVES_BOSS_HORESEMEN_ENEMY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Minigame\\General\\L_MINIGAME_TREASURE_CHEST_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NS\\L_NS_LEGO_CLUB_DOOR.lua");
CHECK_CACHE("scripts/ai/NS/L_CL_RING.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_AMBIENTS.lua");
CHECK_CACHE("scripts\\ai\\NS\\NS_PP_01\\L_NS_PP_01_TELEPORT.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_QB_SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\AG\\L_AG_QB_Wall.lua");
CHECK_CACHE("scripts\\02_server\\Map\\GF\\L_GF_TORCH.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_SPECIAL_FIREPIT.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_ORGAN.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_BANANA.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_BANANA_CLUSTER.lua");
CHECK_CACHE("scripts/ai/GF/L_GF_JAILKEEP_MISSION.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_TRIGGER_AMBUSH.lua");
CHECK_CACHE("scripts\\02_server\\Map\\GF\\L_GF_CAPTAINS_CANNON.lua");
CHECK_CACHE("scripts\\02_server\\Map\\GF\\L_MAST_TELEPORT.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_JAIL_WALLS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_QB_ENEMY_STUNNER.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_PET_DIG_BUILD.lua");
CHECK_CACHE("scripts\\02_server\\Map\\GF\\L_SPAWN_LION_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\General\\L_BASE_ENEMY_APE.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\General\\L_GF_APE_SMASHING_QB.lua");
CHECK_CACHE("scripts\\zone\\PROPERTY\\GF\\L_ZONE_GF_PROPERTY.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_ARCHWAY.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_MAELSTROM_GEYSER.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_PIRATE_REP.lua");
CHECK_CACHE("scripts\\ai\\GF\\L_GF_PARROT_CRASH.lua");
CHECK_CACHE("scripts\\ai\\MINIGAME\\SG_GF\\SERVER\\SG_CANNON.lua");
CHECK_CACHE("scripts\\ai\\MINIGAME\\SG_GF\\L_ZONE_SG_SERVER.lua");
CHECK_CACHE("scripts\\client\\ai\\PR\\L_PR_WHISTLE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\PR\\L_PR_SEAGULL_FLY.lua");
CHECK_CACHE("scripts\\ai\\PETS\\L_HYDRANT_SMASHABLE.lua");
CHECK_CACHE("scripts\\02_server\\map\\PR\\L_HYDRANT_BROKEN.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\PET_DIG_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SKELETON_DRAGON_PET_DIG_SERVER.lua");
CHECK_CACHE("scripts\\client\\ai\\PR\\L_CRAB_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Pets\\L_PET_FROM_DIG_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Pets\\L_PET_FROM_OBJECT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Pets\\L_DAMAGING_PET.lua");
CHECK_CACHE("scripts\\02_server\\Map\\PR\\L_SPAWN_GRYPHON_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\L_ACT_CANDLE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\L_ENEMY_RONIN_SPAWNER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\FV\\L_FV_MAELSTROM_CAVALRY.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_ACT_NINJA_TURRET_1.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\L_FV_HORSEMEN_TRIGGER.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_FLYING_CREVICE_DRAGON.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\FV\\L_FV_MAELSTROM_DRAGON.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_DRAGON_SMASHING_GOLEM_QB.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\General\\L_TREASURE_CHEST_DRAGON_SERVER.lua");
CHECK_CACHE("scripts\\ai\\GENERAL\\L_INSTANCE_EXIT_TRANSFER_PLAYER_TO_LAST_NON_INSTANCE.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_NPC_FREE_GF_NINJAS.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_PANDA_SPAWNER_SERVER.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_PANDA_SERVER.lua");
CHECK_CACHE("scripts\\zone\\PROPERTY\\FV\\L_ZONE_FV_PROPERTY.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_BRICK_PUZZLE_SERVER.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_CONSOLE_LEFT_QUICKBUILD.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_CONSOLE_RIGHT_QUICKBUILD.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_FACILITY_BRICK.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_FACILITY_PIPES.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\L_IMG_BRICK_CONSOLE_QB.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_ACT_PARADOX_PIPE_FIX.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_NINJA_GUARDS.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_ACT_PASS_THROUGH_WALL.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_ACT_BOUNCE_OVER_WALL.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\L_NPC_FONG.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_FV_MAELSTROM_GEYSER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\Racing\\RACE_SHIP_LAP_COLUMNS_SERVER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP1_SERVER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP2_SERVER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_DRAGON_LAP3_SERVER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_ABC_SERVER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_PILLAR_D_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\Racing\\RACE_FIREBALLS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_EXPLODING_ASSET.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_WISHING_WELL_SERVER.lua");
CHECK_CACHE("scripts\\ai\\ACT\\L_ACT_PLAYER_DEATH_TRIGGER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_GROWING_FLOWER_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_TOKEN_CONSOLE_SERVER.lua");
CHECK_CACHE("scripts\\ai\\ACT\\FootRace\\L_ACT_BASE_FOOT_RACE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_PROP_PLATFORM.lua");
CHECK_CACHE("scripts\\02_server\\Map\\VE\\L_VE_BRICKSAMPLE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_MAIL_BOX_SERVER.lua");
CHECK_CACHE("scripts\\ai\\ACT\\L_ACT_MINE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_WANDERING_VENDOR.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_CRATE_SERVER.lua");
CHECK_CACHE("scripts\\ai\\ACT\\L_ACT_VEHICLE_DEATH_TRIGGER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\RACE_IMAGINE_POWERUP.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\Racing\\RACE_MAELSTROM_GEISER.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\FV_RACE_SMASH_EGG_IMAGINE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\FV\\Racing\\FV_RACING_COLUMNS.lua");
CHECK_CACHE("scripts\\ai\\RACING\\OBJECTS\\RACE_SMASH_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_SENTINELWALKWAY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_PARADOXTELE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_DARKITECT_REVEAL_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_BANK_INTERACT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_VENTURESPEEDPAD_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_VENTURE_CANNON_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_COMBAT_CHALLENGE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_COMBAT_CHALLENGE_DUMMY.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\\\L_NT_COMBAT_EXPLODING_TARGET.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_BASE_INTERACT_DROP_LOOT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_ASSEMBLYTUBE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_PARADOX_PANEL_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_IMAG_BEAM_BUFFER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_BEAM_IMAGINATION_COLLECTORS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_DIRT_CLOUD_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_CONSOLE_TELEPORT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_SPAWN_STEGO_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_SPAWN_SABERCAT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_SPAWN_SHRAKE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_DUKE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_HAEL_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_FACTION_SPY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_OVERBUILD_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_VANDA_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_FORCE_VOLUME_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_FRICTION_VOLUME_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_XRAY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_SLEEPING_GUARD.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_IMAGIMETER_VISIBILITY_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_PIPE_VISIBILITY_SERVER.lua");
CHECK_CACHE("scripts\\ai\\MINIGAME\\Objects\\MINIGAME_BLUE_MARK.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_NAOMI_BREADCRUMB_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\NT\\L_NT_NAOMI_DIRT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_AM_CONSOLE_TELEPORT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_FIN.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_PIT.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_STR.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_RANDOM_SPAWNER_ZIP.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_MECH.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_BRIDGE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_DRAW_BRIDGE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SHIELD_GENERATOR.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SHIELD_GENERATOR_QUICKBUILD.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_DROPSHIP_COMPUTER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SCROLL_READER_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_TEMPLE_SKILL_VOLUME.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\General\\L_ENEMY_NJ_BUFF.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\AM\\L_AM_SKELETON_ENGINEER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SKULLKIN_DRILL.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SKULLKIN_DRILL_STAND.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_SKULLKIN_TOWER.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\AM\\L_AM_NAMED_DARKLING_DRAGON.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_APE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_BLUE_X.lua");
CHECK_CACHE("scripts\\02_server\\Map\\AM\\L_TEAPOT_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_GARMADON_CELEBRATION_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_WU_NPC.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_SCROLL_CHEST_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_COLE_NPC.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_JAY_MISSION_ITEMS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_NPC_MISSION_SPINJITZU_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_ENEMY_SKELETON_SPAWNER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_NJ_RAIL_SWITCH.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\Ninjago\\L_RAIL_ACTIVATORS_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\Ninjago\\L_RAIL_POST_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\Ninjago\\L_ICE_RAIL_ACTIVATOR_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_FALLING_TILE.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\General\\L_ENEMY_NJ_BUFF_STUN_IMMUNITY.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_IMAGINATION_SHRINE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_LIEUTENANT.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_RAIN_OF_ARROWS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_CAVE_PRISON_CAGE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\boss_instance\\L_MONASTERY_BOSS_INSTANCE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_CATAPULT_BOUNCER_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_CATAPULT_BASE_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\Ninjago\\L_NJHUB_LAVA_PLAYER_DEATH_TRIGGER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_MON_CORE_NOOK_DOORS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_MON_CORE_SMASHABLE_DOORS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_MON_CORE_SMASHABLE_DOORS.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_FLAME_JET_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_BURNING_TILE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_SPAWN_EARTH_PET_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_EARTH_PET_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_DRAGON_EMBLEM_CHEST_SERVER.lua");
CHECK_CACHE("scripts\\02_server\\Map\\njhub\\L_NYA_MISSION_ITEMS.lua");
CHECK_CACHE("scripts\\02_server\\DLU\\DLUVanityTeleportingObject.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_STROMBIE.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_DARKLING_MECH.lua");
CHECK_CACHE("scripts\\02_server\\Enemy\\Survival\\L_AG_SURVIVAL_DARK_SPIDERLING.lua");
CHECK_CACHE("scripts\\EquipmentScripts\\Sunflower.lua");
CHECK_CACHE("scripts/EquipmentScripts/AnvilOfArmor.lua");
CHECK_CACHE("scripts/EquipmentScripts/FountainOfImagination.lua");
CHECK_CACHE("scripts/EquipmentScripts/CauldronOfLife.lua");
CHECK_CACHE("scripts\\02_server\\Equipment\\L_BOOTYDIG_SERVER.lua");
CHECK_CACHE("scripts\\EquipmentScripts\\PersonalFortress.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_PROPERTY_DEVICE.lua");
CHECK_CACHE("scripts\\02_server\\Map\\General\\L_IMAG_BACKPACK_HEALS_SERVER.lua");
CHECK_CACHE("scripts\\ai\\GENERAL\\L_LEGO_DIE_ROLL.lua");
CHECK_CACHE("scripts\\EquipmentScripts\\BuccaneerValiantShip.lua");
CHECK_CACHE("scripts\\EquipmentScripts\\FireFirstSkillonStartup.lua");
CHECK_CACHE("scripts\\equipmenttriggers\\gempack.lua");
CHECK_CACHE("scripts\\equipmenttriggers\\shardarmor.lua");
CHECK_CACHE("scripts\\equipmenttriggers\\coilbackpack.lua");
CHECK_CACHE("scripts\\EquipmentScripts\\stunImmunity.lua");
CHECK_CACHE("scripts\\ai\\NS\\WH\\L_ROCKHYDRANT_BROKEN.lua");
CHECK_CACHE("scripts\\ai\\NS\\L_NS_WH_FANS.lua");
CHECK_CACHE("scripts\\zone\\LUPs\\WBL_generic_zone.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_TRIGGER_GAS.lua");
CHECK_CACHE("scripts\\ai\\FV\\L_ACT_NINJA_SENSEI.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_1_BRONZE-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_1_SILVER-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_10_BRONZE-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_10_GOLD-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_10_SILVER-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_25_BRONZE-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_25_GOLD-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_25_SILVER-COIN-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_IMAGINE-POWERUP-SPAWNER-2PT.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_LIFE-POWERUP-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_ARMOR-POWERUP-SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\SPEC\\L_SPECIAL_SPEED_BUFF_SPAWNER.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_GF_RAT.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_GF_SNAIL.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_GF_GLOWBUG.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_AMBIENT_CRAB.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_PANTS.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_NINJA_BRICKS.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_NINJA_STUDENT.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_WILD_NINJA_SENSEI.lua");
CHECK_CACHE("scripts\\ai\\WILD\\L_LUP_generic_interact.lua");
}

View File

@@ -1,3 +1,7 @@
2.3 - Dragonmaw functional, new slash command system, vanity system overhaul
2.2 - Code cleanup and QoL fixes
2.1 - Bug and crash fixes
2.0 - Whole lot of fixed bugs and implemented features
1.0 - Final cleanup and bug fixing for public release
0.9 - Includes BBB without the need for a UGC server, cannon cove minigame, and bug fixes.
0.8 - Added Ninjago! and it's various features + frakjaw minigame. AG survival now works.
@@ -7,4 +11,4 @@
0.4 - Added Havok to replace Bullet, Instancing, Quickbuilds, rockets, and a ton more fixes and additions.
0.3 - FrostBurgh, Snowdrift and Snowman's Land testing version. Includes bodged systems.
0.2 - Transfer to VS2019 & Bullet
0.1 - Initial transfer from NixLU, up until BehaviorManager inclusion
0.1 - Initial transfer from NixLU, up until BehaviorManager inclusion