# JK Resurrection ## Purpose To add singleplayer replay value to classic multiplayer Jedi Knight: Dark Forces 2 levels by providing remixing abilities - known as build hax - that are casual to use & persistently save / load changes per-JK level. ## Description A Jedi Knight: Dark Forces 2 launcher/companion EXE that programmatically generates COGs & other MOD files to provide singleplayer sandbox functionality to multiplayer levels. Resurrection.exe can be associated with GOB files to launch "directly" into that episode, or can be launched standalone & an episode be chosen from a UI. After the GOD/episode is specified, Resurrection.exe does several things: 1. Manages the ```mod``` folder by purging (OR by moving into the ```mod/off``` folder) all GOBs that are not on the whitelist. 1. Copies the specified episode GOB into the "mod" folder, so that it will be the ONLY one shown on in-game episode lists. 1. Finds a spawns enemies (and other templates) into classic multiplayer levels after they are loaded. No modification of the original multiplayer level's GOB is needed. ## Components - Dynamic Launcher/Companion Mode - Export to normie regular MOD GOB mode to share. ## Notes ``` JK Resurrection UI ------------------------- TAB: PLAY ------------------------- | GOB Name | [...] | Level Title | Ref Thing | Ref Sector | Ref Pos | [...] | Instance Title | [...] [Launch JK] Use Mods: [0/1] ------------------------- TAB: MODS ------------------------- | Active | Mod GOB | [...] ------------------------- TAB: SETTINGS ------------------------- Options ADDITIONAL_LAUNCH_OPTIONS: -devmode JK_EXECUTABLE: H:\SteamLibrary\steamapps\common\Star Wars Jedi Knight Remastered\inject.exe Mods MOD_MANAGMENT: [0/1] MOD_FOLDER: mod MOD_OFF_FOLDER: off Character RANDOMIZE_CHARACTER: [0/1] RANDOMIZE_MODEL_WITH_BSP: [0/1] RANDOMIZE_SABER_WITH_BSP: [0/1] ================ JSON STRUCTURES: ================ settings: { USE_MODS: true, USE_HEAPHAX: true, ACTIVE_MODS: [], LAUNCH_OPTIONS: "", EXECUTABLE: "JK.exe", MOD_ACTIVE_FOLDER: "mod", MOD_STORAGE_FOLDER: "mod/off", RANDOMIZE_CHARACTER: false, RANDOMIZE_MODEL_WITH_BFP: false, RANDOMIZE_SABER_WITH_BFP: false, LAST_USED_EPISODE_GOB: "" } levels: { LEVEL_ID: { gob: <string> title: <string> reference_thing: <number> reference_sector: <number> reference_pos: <string> } } instances: { INSTANCE_ID: { title: <string> level: <LEVEL_ID string> objects: { OBJECT_ID: { //media: <MEDIA_ID string> template: <string> pos: <array> rot: <array> } } } } Random notes: Resurrection Random.mpc MY_MODS: ["BFP2X.gob", "JKE.gob", "JKR.gob", "Scope_v1.0Beta.gob", "XtremeFinWarfare.gob"] ``` ## File Structure | Contents | Path | | :------- | :--- | | Active Mod GOBs | mods | | Inactive Mod GOBs | mods/off | | Active Resurrection COG | mods/cog/active_jkl.cog | | Inactive Resurrection COGs | mods/resurrection/cogs | | Mod GOB | mods/resurrection.gob | ### JK Resurrection Mod - Just a regular JK mod GOB that users put into their mod folder. - When a compatible JK MP map is loaded, all of the saved Things for that map are spawned in. - The user kills all the bad guys. - A few game modes, like respawning enemies or race-the-clock mode. ### JK Ressurection SDK - Contains the instructions & tools to add support to more levels. - It's a companion EXE that devs use to save their Thing placements. - Users can use it too, if polished up enough. ## etc.