JEDI KNIGHT 2013 PATCH (JK13)
Compiled by FastGamerr
Patch made by Xzero

================================================================

* * * * *

THIS PATCH WILL OVERWRITE EXISTING DDRAW.DLL AND JK.DLL FILES!

THIS PATCH WILL EXTRACT CERTAIN FILES INTO YOUR JEDI KNIGHT\RESOURCE DIRECTORY THAT MAY OVERWRITE EXISTING FILES!

* * * * *

INSTALLATION:

1#) Extract all the files from the 7z file onto your Jedi Knight directory (for instance C:\Games\Jedi Knight\). 

2) Run JK13 Updater.exe in order to patch the ////ORIGINAL, UNPATCHED NON-STEAM JK.EXE//// to the latest unofficially patched (i.e. TODOA TC) version of the executable. 

	If you have the Steam version of Jedi Knight, use the 'JKVersions.exe' tool available from the following address to retrieve the original JK.exe: 
	http://www.jkhub.net/project/show.php?projid=511&section=downloads

	(JKVersions.exe is also available in the package file for TODOA 2)

	(Even though the patcher takes a backup of your existing JK.EXE, it doesn't hurt to take a backup of it before running the patcher.)

# = If you don't wish to extract the default font from TODOA TC, do not extract the 'ui' directory from the 7z file.

================================================================

USE / DISTRIBUTION:

Authors MAY use this mod as a base to build additional mods, provide that you give credit to the original author XZERO.

And credit MUST be given.

This mod has been supplied with the default font from TODOA TC.
	* If you don't want to use it:
	1) Do not extract the 'ui' directory from the JK13 7z file
	2) If you've already extracted the 'ui' directory from the 7z file, remove the msgfont.sft and msgfont16.sft files from your JK\Resource directory. 

================================================================

	FOR EDITORS: ENABLING PROPERLY TRANSLUCENT LIGHTSABERS

			Use the COG command " jkSetSaberFaceFlags(player, 0x2); " to make the JK13 lightsabers appear as they should (as in, not like a black box).

			Take a look at JK13's kyle.cog for tips on where the command could be placed (usually under startup and newplayer), but for custom
			levels I recommend putting a separate cog that runs a continuous pulse with the said command in it (check darkjedi_saber.cog to see 
			how it can be done).

================================================================

KNOWN ISSUES:

* THE INCLUDED FILES ARE IN "BETA" STATE, SO USE AT YOUR OWN RISK.

* At the beginning of a level, your lightsaber can appear really thin (like a giant laser toothpick) due to the cog values used by the original JK sabers being different from the JK13 ones. Dying and respawning should fix this problem.

* If you die during the Dark Jedi battles and respawn, the enemy's lightsaber will not appear properly - looking more like a black box. This is because of the aforementioned COG issues, and each Dark Jedi level (or their COGs) should be modified manually to fix the issue. 

* As JK13 uses a new custom kyle.cog, mod compatibility cannot be guaranteed.

================================================================

CREDITS:

* Xzero for GlowSaberX and the original update files - based on the Jedi Knight Unofficial Patches ( http://www.jkhub.net/project/show.php?projid=292 )

================================================================================================================================================================================================

XZERO'S NOTES (DECEMBER 2010)

For use with JKE!

- Default lightsaber sizes have been scaled to accomodate new 16-bit materials.
- COGs modified for all jedi AI and levels to match.
- New lightsaber hilt models for dark jedi.
- New cog verbs (Check GSX_Patch_Log for more info).
- New beta ddraw.dll allowing between 16bit and 32bit selection. Untested publicly. If any issues, revert back to standard 16bit ddraw from JKHub.net main page.

Bugs:
- Saber size doesn't work on Yun and Sarris levels for some reason.
- Lightsaber tips clip with blades (unfortunate engine limitation that needs fixing).
- Sabers still clip off translucent surfaces.

================================================================

Notes: Some new cog verbs may seem a bit useless, but the more access we give to editors, the more possibilities there are.

---Wednesday December 16 2010---

- Added
	New Cog Verbs:
		- jkDisablePOVModel(int player, int value) - If value = 1, internal weapon model will not be rendered. Reset when jkSetPOVModel is used. Doesn't include saber blade.
		- jkDisableWeaponMesh(int creature, int value) - If value = 1, external weapon mesh will not be rendered. Reset when jkSetWeaponMesh is used. Doesn't include saber blade.
		- jkGetSaberInfo(int player) - Returns, in vector form, the information about the saber (length, tip and base radii)

- Changed:
	-GetDisplayInfo() is now just DisplayInfo()
	-GetAspectRatio() is now just AspectRatio()
	- GetJKUPMode() was changed to IsPatchedJK()

- Removed:
	- jkGetSaberBaseRadius(int player) was removed in favor of jkGetSaberInfo(int player)

---Tuesday December 15 2010---

- Added
	New Cog Verbs:
		- jkGetSaberSideFaceFlags(int thing) - Returns the saber's side-surface face flag value.
		- jkSetSaberSideFaceFlags(int thing, int flags) - Sets the saber's side-surface face flag value.
		- jkGetSaberBaseRadius(int thing) - Returns the lightsabers base radius. Originally used for debugging.
		- jkGetSaberAnimOffset(int thing) - Returns the lightsabers current animation offset. Used for debugging.
		- SetLODDistances(int lodDist1, int lodDist2, int lodDist3, int lodDist4) - Sets the lod distances for the current level.
		- SetMipMapDistances(int mipDist1, int mipDist2, int mipDist3, int mipDist4) - Sets the mip map distances for the current level.

	Added new info to the WeaponMesh struct:
		- geo mode, face flags, vertex count, etc.

---Tuesday December 14 2010---

- Added
	New Cog Verbs:
		- jkGetSFXVolume() - Returns the value of the SFX volume slider in the sound menu.
		- jkGet3DAccel() - Returns the value of the 3D Accel checkbox in the display menu.
		- jkGetBackBufferInSysMem() - Returns the value of "Back Buffer In System Memory" in display menu.
		- jkGetCrosshair() - Returns the value of "Display aiming crosshair" in gameplay menu.
		- jkGetDebugOutput() - Returns the value of the "debug" command-line switch.
		- jkGetDevMode() - Returns the value of the "devmode" command-line switch.
		- jkGetDisableCutscene() - Returns the value of "Disable Cutscenes" in the general menu.
		- jkGetDisplayConfig() - Returns the display device config value from the advanced display menu.
		- jkGetDispStats() - Returns the value of "dispstats" command-line switch.
		- jkGetDrawStatus() - Returns the value of "draw status".
		- jkGetFrameRate() - Returns the framerate.
		- jkGetGammaLevel() - Returns the value of "Brightness" (F11) from the display menu.
		- jkGetMinTexSize() - Returns the value of "Minimum texture size" from the display menu.
		- jkGetModPath() - Doesn't work yet (need to return a string). Will return the current mod path.
		- jkGetNoHUD() - Returns the value of "nohud" command-line switch.
		- jkGetDisablePageFlip() - Returns the value of "Disable Page-Flip" from the advanced display menu.
		- jkGetRotateMap() - Returns the value of "Rotate Overlay Map" from gameplay menu.
		- jkGetScreenSize() - Returns value of "Screen Size"(-, +) from the menu. NOT RESOLUTION.
		- jkGetSubtitles() - Returns value of "Full Subtitles" from general menu.
		- jkGetVerbosity() - Returns the value of "verbose" command-line switch.
		- jkGetWindowGui() - Returns the value of "windowgui" command-line switch.
		- GetJKUPMode() - Returns 1 if user has JKUP installed, 0 otherwise (JK will return 0 for the unknown verb).


---Sunday December 12 2010---

- Todo
	Make GetSithMode return 2 if patched.

- Added
	New Cog Verbs:
		CycleFlyMode() - Turns fly mode on if it's off, off if it's on. Just a more general verb, rather than playing with Physics flags.

---Monday December 06 2010--- 

- Added
	New Cog Verbs:
		CycleScoreTally() - Shows the score tally if it's hidden, hides if it if it's showing.

- Fixed
	Aspect-correct FOV works with SetCameraFOV

---Sunday, December 05 2010---

- Added
	New cog verbs:
		ChangeModelMaterial(model sourceModel, int materialIndex, material newMat) - Doesn't work currently.

	New function called when the Display is changed:
		- FOV is adjusted to fit aspect ratio.
		- Doesn't work with SetCameraFOV

- Fixed
	SerCameraFOV:
		-Now stores the new FOV value so that SetCameraZoom works properly.
	SetCameraZoom:
		-Now uses the new FOV as a base when zooming.

- Changed
	jkGetAspectRatio:
		- Moved to display category and changed to GetAspectRatio();


---Saturaday, December 04 2010---

TODO: Fix FOV on startup

- Added new cog verbs:

	Camera:
	- SetCameraZoom(int cameraIndex, int zoomMultiplier, int zoomSpeed) - Zoom like MotS WIP: Doesn't smoothly transition using speedScale

	Display:
	- GetDisplayInfo() - returns the display information in vector format (width, height, bpp)

	Misc:
	- jkGetAspectRatio() - gets the current aspect ratio
	- jkGetSaberDamage() - gets the current lightsaber damage amount
	- jkGetSaberLength() - gets the current lightsaber length
	- jkGetSaberSideMat() - same as GetSaberSideMat, but using the naming conventions of MotS "jkGetSaberSideMat" for compatibility
	- jkScreenShot() - takes a screenshot, basically the same as in MotS

	Time:
	- GetTime() - returns the system time as a vector
	- GetDate() - returns the system date as a vector

- Fixed:
	SetCameraFov:
		- FOV is adjusted for widescreen resolutions. This means widescreen players get a proper field of view.

================================================================

* I admit that * 
(as required by the LEC Licence Agreement about Addon Levels)

1. My Level works only with the retail version of the
   Software, and does not work with any demo or OEM versions
   of the Software.  
2. My Level does not modify any COM, EXE, DLL or other executable files.
3. My Level does not contain any illegal, scandalous, 
   illicit, defamatory, libelous, or objectionable material
   (as may be determined by LEC in its sole discretion), or
   any material that infringes any trademarks, copyrights,
   protected works, publicity, proprietary, or other rights
   of any third party or of LEC.  
4. My Level does not include any LEC sound effects or music files or 
   portions thereof.
5. My Level identifies in every description file, on-
   line description, read-me, and in comments in the New
   Level code: (a) the name, address, and e-mail address of
   the level's creators, and (b) the following disclaimer:
   "THIS LEVEL IS NOT MADE, DISTRIBUTED, OR SUPPORTED BY
   LUCASARTS ENTERTAINMENT COMPANY.  ELEMENTS TM & (C) 
   LUCASARTS ENTERTAINMENT COMPANY."
6. My Level may not be sold, bartered, or distributed with
   any other product for which any charge is made (other than
   incidental charges for time spent on-line), but rather
   must be distributed free of charge. 
7. By distributing or permitting the distribution of any New
   Levels, all creators or owners of any trademark, 
   copyright, or other right, title or interest therein grant
   to LEC an irrevocable, perpetual, royalty-free, sub-
   licensable right to distribute the New Level by any means
   (whether now known or hereafter invented), and to create
   and distribute by any means (whether now known or here-
   after invented) derivative works thereof, and to charge
   for the distribution of such New Level or such derivative
   work, with no obligation to account to any creators or
   owners of the New Level in any manner.

* Copyright / Permissions *

Authors MAY use this mod as a base to build additional mods, provided
that you give credit to the original author XZERO.

THIS LEVEL IS NOT MADE, DISTRIBUTED, OR SUPPORTED BY LUCASARTS ENTERTAINMENT 
COMPANY.  ELEMENTS TM & (C) LUCASARTS ENTERTAINMENT COMPANY.

You MAY distribute this level, provided you include this file, with
no modifications.  You may distribute this file in any electronic
format (BBS, Diskette, CD, etc) as long as you include this file 
intact, with NO charge (other than incidental charges for time spent on-line). 

================================================================
