feat: add missing force field, jetpack NPC and Skullkin volume scripts

Ported from the live server scripts that ship with the client:

- scripts\ai\LS\ForceFieldEffect.lua (LEGO Club and Starbase 3001 force
  fields): plays effect 3671 "cast" on whatever touches the phantom.
- scripts\ai\NP\L_NPC_NP_JETPACK_GUY.lua (jetpack ambient NPCs): plays
  the object's "launch" effect when used.
- scripts\02_server\Map\AM\L_SKELETON_SPAWNER_VOLUME.lua (Crux Prime
  Skullkin area): with 10 or more players in the volume the Skullkin
  engineer, miner and patroller networks maintain 2/6/6 instead of
  1/4/4, with a 60 second cooldown between changes and a catch-up check
  when it ends. Only players are counted, and the count never goes
  below zero.

WBL_Enemy_Grabbler.lua only sets wander variables for the old Lua
movement AI, so it joins the other alpha wander scripts in the excluded
list instead of logging as missing.

Refs #746

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-26 18:42:25 -05:00
parent c485ab2d38
commit 4ad7ddd9c6
10 changed files with 141 additions and 0 deletions

View File

@@ -136,6 +136,8 @@
#include "FvHorsemenTrigger.h"
#include "FvFlyingCreviceDragon.h"
#include "FvDragonInstanceServer.h"
#include "ForceFieldEffect.h"
#include "NpcNpJetpackGuy.h"
#include "FvMaelstromDragon.h"
#include "DragonRonin.h"
#include "FvDragonSmashingGolemQb.h"
@@ -251,6 +253,7 @@
#include "AmDarklingDragon.h"
#include "AmBlueX.h"
#include "AmTeapotServer.h"
#include "AmSkeletonSpawnerVolume.h"
#include "WanderingVendor.h"
// NJ Scripts
@@ -608,6 +611,7 @@ namespace {
{"scripts\\02_server\\Enemy\\AM\\L_AM_DARKLING_APE.lua", []() {return new BaseEnemyApe();}},
{"scripts\\02_server\\Map\\AM\\L_BLUE_X.lua", []() {return new AmBlueX();}},
{"scripts\\02_server\\Map\\AM\\L_TEAPOT_SERVER.lua", []() {return new AmTeapotServer();}},
{"scripts\\02_server\\Map\\AM\\L_SKELETON_SPAWNER_VOLUME.lua", []() {return new AmSkeletonSpawnerVolume();}},
//Ninjago
{"scripts\\02_server\\Map\\njhub\\L_GARMADON_CELEBRATION_SERVER.lua", []() {return new NjGarmadonCelebration();}},
@@ -723,6 +727,8 @@ namespace {
{"scripts\\equipmenttriggers\\ImaginationBackPack.lua", []() {return new ImaginationBackPack();}},
{"scripts\\ai\\MINIGAME\\SG_GF\\SERVER\\SG_CANNON_INSTANCE_ACTOR.lua", [](){return new RegisterWithZoneControl();}},
{"scripts\\ai\\MINIGAME\\SG_GF\\SERVER\\SG_CANNON_INSTANCE_EFFECT.lua", [](){return new RegisterWithZoneControl();}},
{"scripts\\ai\\LS\\ForceFieldEffect.lua", []() {return new ForceFieldEffect();}},
{"scripts\\ai\\NP\\L_NPC_NP_JETPACK_GUY.lua", []() {return new NpcNpJetpackGuy();}},
};
std::set<std::string> g_ExcludedScripts = {
@@ -749,6 +755,7 @@ namespace {
"scripts\\ai\\GENERAL\\L_NPC_GENERIC_MOVEMENT.lua", // Really old alpha script
"scripts\\zone\\LUPs\\DeepFreeze Intro\\WBL_Enemy_Beaver.lua", // Really old alpha script
"scripts\\ai\\GENERAL\\L_NPC_GENERIC_WANDER_SMALL.lua", // Really old alpha script
"scripts\\zone\\LUPs\\Moonbase Intro\\WBL_Enemy_Grabbler.lua", // Really old alpha script, only sets wander variables
"scripts\\ai\\NP\\L_NPC_NP_OLD_MAN_SHERLAND.lua", // This NPC doesn't even exist in modern crux, the only place this is used...
"scripts\\02_server\\Map\\General\\L_SIMPLE_MOVER_SWITCH.lua", // This platform does not exist even when moved manually on a client
};