# 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.