If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Star Wars Jedi Knight II: Jedi Outcast (Windows, Mac OS Classic, Mac OS X)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Star Wars Jedi Knight II: Jedi Outcast

Developers: Raven Software, Westlake Interactive (Mac)
Publishers: LucasArts, Aspyr Media (Mac), CyberFront (JP)
Platforms: Windows, Mac OS Classic, Mac OS X
Released in JP: June 27, 2002
Released in US: March 26, 2002
Released in EU: March 26, 2002

AreasIcon.png This game has unused areas.
Sgf2-unusedicon1.png This game has unused abilities.
RegionIcon.png This game has regional differences.
PiracyIcon.png This game has anti-piracy features.

The sequel to Star Wars: Jedi Knight: Dark Forces II.

Unused Areas

The Pit

The creators realized that they could make another Jedi Knight game.

An unused level with Tavion in the middle. This level was meant to be another battle with Tavion. Tavion does return in Jedi Knight: Jedi Academy. In the level, if you wait a second, Tavion will say "I sense your presence". When you defeat Tavion, the level does not end.

A multiplayer map titled "Trial Pit" uses a similar map design.

To access this level, type the command devmap pit.


   uses	artus_detention

A reference to a mission called cairn_stockpile is mentioned in dms.dat, the file for determining how the dynamic music system works on levels. It would've used the same dynamic music as Artus Detention and Doomgiver Detention based on the files, and presumably would've come between Cairn Assembly and Cairn Reactor, judging from the file's layout. The map itself is missing from the files however.


   uses	kejim_post

Most likely a test mission that wasn't included in the game for obvious reasons.

Unused Text

The game contains all of its subtitles in .sp files (in the /strip/ folder in assets1.pk3), which are plaintext and can be viewed in Notepad. Several lines from here appear to be alternate, unused takes of existing lines, or reveal clues as to previous stages of a mission's development. All of these reference sound files that don't exist. Every single line in the game has subtitles, but the options menu only allows for subtitles in cinematics, making effectively 90% of the subtitle text go unused in the PC version without console commands. They can be re-enabled with the console command "g_subtitles 1", the Xbox version allows these subtitles to be enabled in the menu.

To do:
Investigate this further.
 TEXT_LANGUAGE1 "Maybe we can get in without being noticed."

Contained in kejim_post.sp, this might indicate that that mission may have included stealth portions like cairn_dock2 does.

 TEXT_LANGUAGE1 "All right! Now let's see what's so important."

Also contained in kejim_post.sp and spoken by Kyle, this may have indicated that another part of the mission may have been cut.

 TEXT_LANGUAGE1 "We're going to have company!"

Also contained in kejim_post.sp and spoken by Jan.

Unused Code

The game's SDK, containing the multiplayer mod code (not the engine) and a version of Q3Radiant (the Quake 3 map editor) dubbed JK2Radiant was released shortly after the game's launch. The complete source code for Jedi Knight 2 was made available by Raven Software in April 2013, but was later taken down due to copyright issues regarding the BINK and Xbox XDK code, which were accidentally included in the files.


 #ifdef JK2AWARDS
   cgs.media.captureAwardSound = trap_S_RegisterSound( "sound/teamplay/flagcapture_yourteam.wav" );

A fully working Quake 3 style system of in-game awards, such as "Humiliation!" (from getting killed with a stun baton) exists, and would've been announced by Mon Mothma. The code for it is not included in the shipped game, but is enabled with a preprocessor command. A fan mod exists of this system working.

Saga Mode

An entire multiplayer game mode, called Saga Mode, exists in the code. It is pretty close to functioning, and would've worked very similarly to Jedi Academy's Siege mode. In fact, the code files for Siege in Jedi Academy retain the same file names (bg_saga.h, bg_saga.c, g_saga.c, g_saga.h), and unlike Jedi Academy's Siege Mode, there is some preliminary support for bots in this mode.

There's also some interesting tidbits in the Saga code itself that give background into the game's development.

 #define DEFAULT_WIN_OBJECTIVE	"sound/chars/kyle/prototype/personal.mp3"
 #define DEFAULT_LOSE_OBJECTIVE	"sound/chars/kyle/prototype/isntworking.mp3"

These sound files mentioned would've been used as announcer voices, perhaps suggesting that Kyle was originally going to be the announcer, not Mon Mothma. Or these were possibly just a batch of sound effects being used to play around with.

Console Commands

Realistic Saber Combat

What you could originally do with the light saber.

Originally, you were able to slice enemies in half with the lightsaber. This feature can be enabled with this command: g_saberrealisticcombat. This also works in cutscene areas, spawning areas, and the unused pit level. This variable also changes how the lightsaber damages with higher numbers doing more damage.

Alternatively, setting g_dismemberment to exactly 11381138 or higher can result in unrestricted saber dismemberment without affecting the saber damage and game balance.

Mind Trick Level 4

Mind Trick Level 4 used on a Rocket Trooper

If you type the command setmindtrick 4 while playing the game, you have the ability to take control of enemies. When you do, they have limited ammo and their guns are all rapid-fire.

X-Wing Fighter

There is a command titled fly_xwing in the coding meaning that an X-Wing Fighter was planned for the game. Using the command will crash the game.


Subtitles for all ingame dialogue can be turned on with g_subtitles 1. Strangely, the menu only allows you to select subtitles for cinematics (the equivalent value being g_subtitles 2)

Regional Differences

Dismemberment is always disallowed in German versions of the game because g_dismemberment is forced to 0. In other versions of the game, setting either the game's text or dialogue to German will also force g_dismemberment to be 0.


When the game is launched in multiplayer, it checksums the executable, and compares this checksum to a known value. If the value doesn't match (as it wouldn't in a poorly-cracked version of the game), the game will randomly insert a bad snapshot during gameplay, causing an innocuous-looking error: CL_PacketParseEntities: End of message.

This piracy check doesn't exist in singleplayer, but the same anti-piracy check exists in Medal of Honor: Allied Assault, as well as this game's sequel.

When the full source code of the game was released, it was revealed that these piracy measures use some strange names. The anti-piracy code is only included if the preprocessor macro SPANK_MONKEYS is defined. Likewise, if the game is deemed "cracked", a variable sys_monkeySpank is set to qtrue. Finally, Sys_ShouldMonkeyBeSpanked returns the value of sys_monkeySpank. "Spanking the monkey" is a well-known euphemism. The code to trigger the error message is called CL_MakeMonkeyDoLaundry.