Open Jedi Project Cooperative Play

Table of Contents

Converting ICARUS scripts to work with MP

Basically, what we're doing here is changing the format for the camera calls so that the MP ICARUS scripting can read it.  Unfortunately, the ability to fix the issue without doing this would require the full engine code, which we are not going to get.

Tools Required

What To Do

What we're doing is converting the camera function calls from camera () to set ().  This is very easy.  All you gotta do is copy the first part of a set () onto the first part of a camera ().

For example, this...
camera ( /*@CAMERA_COMMANDS*/ MOVE, $tag( "endcam1", ORIGIN)$, 0 );
Becomes this...
set ( /*@SET_TYPES*/ "MOVE, $tag( "endcam1", ORIGIN)$, 0 );

NOTE:  For you non-programmers out there, the stuff inside /**/ (like /*@CAMERA_COMMANDS*/ or /*@SET_TYPES*/) are just code comments.  They don't matter to the scripting.

The second step is to add quotes to the camera action type (PAN/MOVE/FADE/etc).
set ( /*@SET_TYPES*/ "MOVE", $tag( "endcam1", ORIGIN)$, 0 );

The third step is to add quotes around all of the camera settings data.  What this is doing is converting all of it into a single data string to be processed by the game.
set ( /*@SET_TYPES*/ "MOVE", "$tag( "endcam1", ORIGIN)$, 0" );

The final step is to remove any internal quotes that are inside your single data string [i]for the camera sets only[/i].  If you don't, you'll have the ICARUS compiler erroring about too many parameters.  In this case, we're removing the quotes about the entity name in the tag.
set ( /*@SET_TYPES*/ "MOVE", "$tag( endcam1, ORIGIN)$, 0" );

NOTE:  Do not alter the tags on sets that aren't camera functions that you converted.  You'll totally break the tag system for everything other than cameras.

NOTE:  The ENABLE and DISABLE camera commands do require a value.  I normally just use "1" but it doesn't matter what you use.
set ( /*@SET_TYPES*/ "ENABLE", "1" );

That's all you gotta do in terms of editing.  From there, you need to save the file into .txt format and then use BehavED to compile the script.  If you get compile errors, you screwed something up.  Feel free to post questions if you have troubles but please be sure to include the exact compiler error.

CoOp Cvars

ojp_skipcutscenes

CoOp Map Compatibility

Jedi Knight Academy Singleplayer Maps

Map Name Completable Mission Name World
Training
yavin1b X Starting Level Yavin
t1_inter Intermission Cutscene - Yavin Yavin
Tier 1
t1_danger X Merchant Rescue (Sand Creature) Blenjeer
t1_fatal X Emergency Assistance (Bomb Disarm) Bakura
t1_rail X Cult Investigation (Rail Train) Corellia
t1_sour X Mercenary Activity (Chewbacca) Tatooine
t1_surprise Droid Recovery Tatooine
Hoth Mission
hoth2 X Luke Skywalker's vision Hoth
hoth3 X Luke Skywalker's vision continued Hoth
Tier 2
t2_dpred Cult Investigation Dossun
t2_rancor Rescue Mission Nar Kreeta
t2_rogue X Capture Crime Lord Coruscant
t2_trip Meet Contact (Swoop) Zonju V
t2_wedge Covert Operation Kril'dor
Vjun Mission
vjun1 X Enter Darth Vader's Castle - Part 1 Vjun
vjun2 Enter Darth Vader's Castle - Part 2 Vjun
vjun3 Enter Darth Vader's Castle - Part 3 Vjun
Tier 3
t3_bounty Weapon Destruction Ord Mantell
t3_byss X Force Theft Investigation Byss
t3_hevil Dismantle Device Yalara
t3_rift X Cult Sighting Chandrila
t3_stamp Cult Investigation Tanaab
Taspir Mission
taspir1 X Search for Rosh Penn - Part 1 Taspir
taspir2 Search for Rosh Penn - Part 2 Taspir
Korriban Mission
kor1 Final Mission - Part 1 Korriban
kor2 Final Mission - Part 2 Korriban
  

Jedi Knight Outcast Singleplayer Maps

Map Name Completable Mission Name World
kejim_post Starting Level Kejim
kejim_base Kejim
artus_mine Artus
artus_detention Rescue the Miners Artus
artus_topside Save the Miners Artus
valley Valley of the Jedi cutscene Unknown
yavin_temple Temple explore Yavin
yavin_trial Jedi Training/Trial Yavin
ns_streets First Jedi level Nar Shadda
ns_hideout Reelo's Hideout Nar Shadda
ns_starpad Nar Shadda
bespin_under-city Bespin
bespin_streets Bespin
bespin_platform Bespin
cairn_bay
cairn_assembly
cairn_reactor
cairn_dock1
doom_comm
doom_detention
doom_shields
yavin_swamp
yavin_canyon
yavin_courtyard
yavin_final

Map-Specific Issues:

t1_fatal

t1_rail

t1_sour

t1_surprise

t2_rogue

t2_trip

t2_wedge

vjun1

vjun2

t3_byss

t3_hevil

t3_stamp

kor1

kor2

AutoSave/Spawnpoint CoOp Editor

To resolve some issues with preexisting maps and the multiplayer CoOp enviroment, we're created a handy ingame editor that allows you to create additional spawnpoints and autosave locations.

To activate the editor, simply start up the map with the bot waypoint editor activated (bot_wp_edit 1).

While in the editor, manually created spawnpoints look like small vertical tick marks and manually created autosave points look like large diangle lines. 

CoOp Editor Commands

/autosave_add [t] <size>

Description:
Adds an autosave point at the player's current position.  The 't' flag sets the autosave point to be a teleporting autosave.  IE, this makes all players to be transported to the autosave, like in Halo.  <size> overrides the default size of the autosave area (the default value is 30).  In terms of game scale, 10 game units = 1 foot. 

Giving a size of -1 will create a spawnpoint at the current location instead of an autosave point.  Additional spawnpoints are useful for maps that don't have enough space for multiple players spawning at the beginning of the level.

Examples:

/autosave_delete

Description:
This command will delete all the manually added spawnpoints and autosave positions that the player is currently touching.

/autosave_save

Description:
This command saves all the current custom autosave/spawnpoint data to an .autosp file for this map.  This file will be automatically loaded the next time this map is run.