Biohazard on 13/6/2004 at 05:24
<h3 id="difficulty">Custom Difficulty</h3>
Originally posted (http://www.ttlg.com/forums/showthread.php?t=84417) here by Saracoth.I, for one, would prefer few or no limits on equipment carried. If Garrett can technically haul around every single piece of loot stolen from day one 'til endgame, and even somehow smuggle it all into jail with him, I see little reason not to go higher. I hardly used anything my first game anyway, much less depleted my supply of anything. I had close to 50,000 gold to my name and was only short two noisemakers from absolutely maxed out equipment. It's just a flavor thing for me, really. A throwback to T1/2 if you will. More incentive to scour every inch of the city daily.
Usual warnings here. Back up what you're changing, you take responsibility for whatever breaks as a result, etc. etc. etc. You'll need a hex editor. I still use Hex Workshop myself, but there must be other newer, good, free ones out there. Be sure to overwrite existing values, not insert new ones.
These are in the System\T3Gamesys.t3u file. Lots of nifty stuff here, no doubt. Even references to ropes and rope arrows. Devs, we know you tried. *salute* Note that these are only maximums you may hold, not the amount you obtain when picking up items (though that might be there as well), and not a direct way to give you infinite items. The default value will look something like 1900 0000 in a hex editor, and the maximum value is FFFF 7FFF (roughly two billion). Also, note that having more than three digits looks sloppy, so you may want to keep the limits to 999 or less (E703 0000). If you want to set you own, you can convert a decimal number to hexidecimal with the Windows calcultor by switching the View to Scientific and clicking the appropriate radio buttons. Be sure to add 0s where needed. Due to the way the computer stores data, you have to reverse each pair of digits. So, two billion is 7735 9400, but you must put 0094 3577 into the hex editor. Likewise 999 comes out as 3E7, but you see the result in the above example.
Prices are at least 1 gold per item when you actually go to buy them, even if set lower here. Also note that at really high maximum values and really low prices, stores get a little...slow. The purchase slider is the issue. Expect long pauses as it counts through hundreds or thousands of items when it's used to counting only a handful. Even clicking on a specific location rather than dragging will cause a pause. They will pass, however.
Most of these are untested (except for water/broadhead arrow max and broadhead price), but since I was surprised to even see what looked like the price for climbing gloves (given my elemental arrow problems), I pointed it out specifically. I'm about as confident in them, however. Likewise for practice locks. I suppose that the elemental arrows (and only these) have prices stored elsewhere. Holy Water flasks, being unavailible for purchase, have no price.
I have since become aware that someone on the Ion boards has posted some of these offsets and defaults (for item maximums, anyway). I'm not ripping off that work (didn't even scour the boards until after doing my own research). It's just that finding this stuff is about as low-level, script kiddie-ish as one can get in this area--so very simple with knowing just the basics, really.
Also, though this sort of goes without saying, these offsets can and probably will change when the patch comes out.
Offset - Item, Default (decimal)
Maximums:
2531D - Water Arrow, 19 (25)
2618C - Moss Arrow, 14 (20)
26382 - Fire Arrow, 0F (15)
26D36 - Flashbomb, 14 (20)
2924C - Noisemaker Arrow, 05 (5)
2B0B8 - Gas Arrow, 05 (5)
2BC21 - Explosive Mine, 05 (5)
2D11C - Holy Water, 05 (5)
2FD8C - Broadhead Arrow, 1E (30)
351BA - Gas Bomb, 05 (5)
41847 - Oil Flask, 05 (5)
53ACD - Health Potion, 0A (10)
Prices:
291F6 - Noisemaker Arrow, E1 (225)
2A6F5 - Water Crystal, 64 (100)
2FD37 - Broadhead Arrow, 64 (100)
34EFD - Practice Lock (Fancy, Gold), E803 (1000) - untested
35088 - Practice Lock (Square, Silver), EE02 (750) - untested
35307 - Practice Lock (Shield, "Default" ... Iron?), F401 (500) - untested
354AA - Practice Lock (Diamond, "Default" ... Iron?), FA (250) - untested
3DC07 - Fire Crystal, FA (250)
3F239 - Moss Crystal, 7D (125)
3FAAE - Gas Crystal, 4501 (325)
46C4E - Oil Flask, AF (175)
50F48 - Gas Bomb, 7701 (375)
53A7A - Health Potion, C8 (200)
4F850 - Explosive Mine, 1301 (275)
4FC29 - Flashbomb, 64 (100)
98858 - Climbing Gloves, D007 (2000) - untested
Somewhere I read someone requesting different loot percentage requirements. I would agree with this, especially on Expert. I routinely got over 90% loot anyway (and plan to do so even on my second, Easy, killing spree playthrough), but there's one mission where playing on Expert means you're forced to be a bastage (because one item you might want to skip is worth over 10% of the total loot), depriving you of a potential lesser reward and warm fuzzies later on. These are also 4-byte sets, in the same file. For obvious reasons, you probably won't want to set any of these higher than 100% or higher than 3 special loot items ;)
Better yet, I saw a lot of FFFF FFFF flags in the T3DifficultyInfo section which turned out to be gold. Just see the list below.... Remember, though, some of these may be impossible in certain missions (like completing in one minute, blackjacking more than the number of BJable AI, etc.). There is no counter for how many you've blackjacked or killed, or times caught, and the time limit always shows 0 remaining so there's no easy way to know how close you are to that limit, but it does indeed work otherwise. I haven't gotten the Minimum blackjacks and kills to appear on the pre-mission screen, but those objectives WILL be added once you've started the mission. Note that minimums are objectives. Everything else is a restriction. Kind of thought that area of the screen was blank, didn't you? You can have both minimums and maximums, and the cap on time limit seems to be 100 minutes. Set a maximum to zero for not at all (like, "Don't get caught at all").
I can say this, the bodies discovered is indeed based on the body. So if two AI discover the same body, even at different times and places, it only counts once. Bodies you are carrying count as discovered if you get caught. An unconscious AI that dies on its own torch does not count as a kill for you, but if you directly attack a dead body it will. I'm not sure about, say, tossing an AI into a damaging area of the level (pre-existing fire, etc.). Likewise, I'm not sure if non-human or non-living kills count towards minimums and maximums.
1877C - Easy Percentage, 1E (30%)
18783 - Easy Special Loot, FFFF FFFF (-1, a special flag saying "N/A, and no objective")
1878A - Easy Minimum BJs, FFFF FFFF (-1)
18791 - Easy Maximum BJs, FFFF FFFF (-1)
18798 - Easy Minimum Kills, FFFF FFFF (-1)
1879F - Easy Maximum Kills, FFFF FFFF (-1)
187A6 - Easy Maximum Times Caught, FFFF FFFF (-1)
187AD - Easy Maximum Bodies Discovered, FFFF FFFF (-1)
187B8 - Easy Time Limit, FFFF FFFF (-1)
187CC - Normal Percentage, 28 (40%)
187D3 - Normal Special Loot, 01 (1)
187DA - Normal Minimum BJs, FFFF FFFF (-1)
187E1 - Normal Maximum BJs, FFFF FFFF (-1)
187E8 - Normal Minimum Kills, FFFF FFFF (-1)
187EF - Normal Maximum Kills, FFFF FFFF (-1)
187F6 - Normal Maximum Times Caught, FFFF FFFF (-1)
187FD - Normal Maximum Bodies Discovered, FFFF FFFF (-1)
18814 - Normal Time Limit, FFFF FFFF (-1)
18881 - Hard Percentage, 3C (60%)
18888 - Hard Special Loot, 02 (2)
1888F - Hard Minimum BJs, FFFF FFFF (-1)
18896 - Hard Maximum BJs, FFFF FFFF (-1)
1889D - Hard Minimum Kills, FFFF FFFF (-1)
188A4 - Hard Maximum Kills, FFFF FFFF (-1)
188AB - Hard Maximum Times Caught, FFFF FFFF (-1)
188B2 - Hard Maximum Bodies Discovered, FFFF FFFF (-1)
188C9 - Hard Time Limit, FFFF FFFF (-1)
188DD - Expert Percentage, 5A (90%)
188E4 - Expert Special Loot, 03 (3)
188EB - Expert Minimum BJs, FFFF FFFF (-1)
188F2 - Expert Maximum BJs, FFFF FFFF (-1)
188F9 - Expert Minimum Kills, FFFF FFFF (-1)
18900 - Expert Maximum Kills, FFFF FFFF (-1)
1890B - Expert Maximum Times Caught, FFFF FFFF (-1)
18912 - Expert Maximum Bodies Discovered, FFFF FFFF (-1)
18925 - Expert Time Limit, FFFF FFFF (-1)
The awareness, combat speed, and damage dealt is stored in Default.ini, of course. Number (and locations) of opponents is almost certainly stored in each mission's map, so no easy edits there. Yet.
I've found traces of other things. Spawn points, for example. Nothing, I don't think, which can be done here, but it seems to match up with my impressions of the city areas. If you cause a lot of havok one day, the next day is likely to have more guards walking around (ParanoiaSpawnPointLow, Medium, and High). They appear to be mostly just markers, similar to those in T1/2, so there's very little data and probably nothing that can be altered without tweaking the maps or some other aspect of the game. I'd like to see at least a little delay...greater distance (so you're even less likely to see people popping out of thin air, as I have).
The only difficulty I can think of in finding the value of pieces of loot is having a list of what they all are and their values for reference purposes. That's a lot of tedium is all, but that information is definitely stored here as well, ripe for editing.
Now if someone with a little more time and ambition wanted to put together a little application to tweak these values in a user-friendly manner, I'm sure everyone would appreciate it. Things like bulk adjusting all prices, maximums, and/or loot values by a percentage (rounding to the nearest multiple of 5 or something). Maybe integrate it into an ini tweaker.
(Edit) Actually, prices for elemental arrows are stored with data for the crystals (WaterCrystal, etc.), not the arrows. Added their offsets above. (/Edit)
(Edit) After playtesting, I've realize that equipment works similarly to arrows--maximums in projectiles, prices in stationary items (exception for healing potions, which of course are not thrown). Changed offsets and updated program accordingly. If you're paranoid, you can restore the default values for the incorrect offsets below, but they've had no impact on my game anyway. Only a few of the maximums were incorrect. All else, thus far, has proven right.
Old/Incorrect Maximum Offsets (no in-game effect).
46C90 - Oil Flask, 05 (5)
46D9B - Holy Water, 05 (5)
4F897 - Explosive Mine, 05 (5)
4FC6C - Flashbomb, 14 (20)
50F89 - Gas Bomb, 05 (5)
---------------------------------------------------------------------
I decided to make a simple program to edit the offsets I've found so far (still currently too lazy to pinpoint loot values). You can download it from (
http://saracoth.the-engine.org/downloads/TDSGameSys.zip) here, a 28 KB zip file (if anyone else wants to help host, please feel free). Coded in VB.Net (so you'll need the .Net framework installed via Windows Update if you don't already have it--a 23 MB or so download, unfortunately). Only minimal testing has been done, so definitely back up your gamesys file first. It stores a few settings in the registry (price rounding for scaling, default tab on startup, and the location of the gamesys). I just included them with TDSs: HKEY_LOCAL_MACHINE\SOFTWARE\Ion Storm\Thief - Deadly Shadows
Like the help message says, difficulty objectives are enabled/disabled by double-clicking on the appropriate number box. Don't freak if you do it on accident; they're not technically disabled (just the color changed to seem that way), so just keep clicking arrows or whatever you're doing to set the value and enable it when you're done, if needed/desired.
Also, nothing is saved until you click the appropriate save button or use the option in the file menu. The former saves only the settings on that page, the latter saves them all. So Restore Defaults, Reload Values, etc. do not write to the gamesys--they only change the values displayed in the program.
Currently there's no checking of anything except whether the file exists or not (not size, date, or anything else). I won't even bother until I become aware of alternate versions of the file.