This isn't actually too hard to do with a debugger, but it may appear a bit intimidating if you don't understand much of it. But no worries, this should be easy to follow if you do it as you read it:
1. Download OllyDbg
, (or a similar debugger, but instructions here are for OllyDbg).
2. Start up OllyDbg and open Outpost2.exe with it.
3. Quick check to make sure it loaded correctly. The main area should be populated with assembly code, it'll probably say "Program entry point" in the bottom left, and "paused" in yellow in the bottom right.
4. Click on the main pane titled "CPU - main thread, module Outpost2". Press Ctrl+N to bring up a list of symbol names.
5. Find the function for a disaster you want to disable. They are named something like "SetDisaster
". (A lot of functions start with "Set", so you might have to read closely). You can start typing the symbol name, and the selection will jump down to the first entry with a prefix matching what you've typed so far. Try "SetTornado". Double click on the entry to see the code for the function.
6. Disabled the function by overwriting it's first instruction with an appropriate "RET" (return) instruction. Basically, you're going to shortcircuit the function body and turn it into a do nothing function. There is a constant at the end of the RET instruction to say how many bytes to pop off the stack while returning, and this depends on the number and types of arguments passed to the function. It will not be the same for each function, so you'll have to do a quick visual inspection to find the right value from the original RET instruction for that function. If you get it wrong and try running the game, it will most likely crash when that function is called. No worries, just load everything up again and try again. OllyDbg tends to highlight function boundaries quite well, and the RET instruction will be the last instruction in the function.
Here's the first line of "SetTornado":
Here's the last line of "SetTornado":
Just replace the first line with the last line.
To replace the line, highlight it and start typing the new instruction "RET 10". A box should open up for you to type into. You can also hit spacebar on the line to open up the box without starting to replace what's in it. Press enter, or click "assemble" to overwrite the instruction. The highlighted line will change and turn red, and the box will stay open (letting you overwrite the next instruction). Press ESC or click "cancel" to close it. You only need to overwrite one line. If you accidentally overwrite two, it really doesn't matter, just as long as you're only trashing the rest of the function which will no longer run. If you overwrite too much and it bothers you, use Alt+Backspace with the line highlighted to undo your changes.
7. Repeat for other disaster functions you want to disable (or stop and test what you have so far). Use Ctrl+N to get back to the symbol names window, and find other disaster functions such as "SetMeteor", doubling clicking on them to go to the function's code. Again, replace the first instruction with the last "RET" instruction for that function.
8. When you're done and ready to play, hit F9 to start the game up and play. It will run under OllyDbg with the modified (gutted) functions.
Note that these changes are only done in memory, and do not actually change the exe file on disk. This means it's fairly safe to do, as you can't screw up and permanently damage the exe file. It also means you'll have to go through the same steps each time you start the game up. (But you'll get pretty fast at it). B)
Also, if you have a program running under a debugger, such as OllyDbg, and you close the debugger, you will also kill whatever is running under the debugger. This means you'll need to leave OllyDbg open while you play. If you try to close it, it will kill the game, and you'll have to reapply the patches.
If you're successful with this, we can probably tell you how to save changes to disk as a new exe file. But, try them first to make sure you can get the patches working.