Fallout 2 mod Unofficial Fo2 patch thread - problems, reports, suggestions

So, while avoiding the military base for a while I postponed the bug, but again later on (May 2244) the bug began appearing again, without the military base at all, so I am at a bit of a loss. Its a screen freeze bug, for what its worth.
 
Voduar said:
So, while avoiding the military base for a while I postponed the bug, but again later on (May 2244) the bug began appearing again, without the military base at all, so I am at a bit of a loss. Its a screen freeze bug, for what its worth.
It may be the "too many items" bug. Check this list and see how many of those items you and your party + car are having.
 
Haenlomal said:
The best way to fix this is to remove all references to LVAR_Locked in hscrldr.ssl. As far as I can tell, all they do is to direct map_enter_p_proc and map_update_p_proc to automatically lock or unlock the door depending on whether or not STATE is ACTIVE or INACTIVE. While a nice idea in theory, in practice, all this does is prevent any door "remotely" locked or unlocked by another script from staying in that state.

I believe they also serve the function of locking the door in the first place. You'd have to do this with a map variable.

Also, if you look at the message files and scripts for the Masticator, Holyfeld, and McNeely, they have special float messages for the player being the champion.

Do any of them exist outside the ring other than the Masticator?

Instead, what I would do if the player kills the Masticator with a disqualifying blow is to prevent Stuart Little from offering another chance. It's not like they really deserve becoming a Prizefighter for pulling a stunt like that!

RP stuff, I think.
 
Per said:
Haenlomal said:
The best way to fix this is to remove all references to LVAR_Locked in hscrldr.ssl. As far as I can tell, all they do is to direct map_enter_p_proc and map_update_p_proc to automatically lock or unlock the door depending on whether or not STATE is ACTIVE or INACTIVE. While a nice idea in theory, in practice, all this does is prevent any door "remotely" locked or unlocked by another script from staying in that state.

I believe they also serve the function of locking the door in the first place. You'd have to do this with a map variable.

Hmmm...good point. Yeah, in that case, a map variable is probably needed to properly lock the door. Perhaps define a new map variable in broken1.h, and have hscrldr.ssl check both LVAR_Locked and the map variable before deciding to lock/unlock things.

Do any of them exist outside the ring other than the Masticator?

Actually, they all do exist outside the ring, except for Joqq. :) You already know where the Masticator is located. McNeely and Holyfeld are both located on the left side of the ring, if you are looking at it just as you enter the Jungle Gym itself -- maybe more material for your guide? :D

Incidentally, how I found out about them was when I failed to steal back my winnings from the 1st round from Stuart Little, everyone attacked me. I was a bit surprised to see their names appear in the message window as I attacked what I thought were generic boxers.

To get their names to appear in a more peaceable fashion, talk to them first, then try to get a detailed look at them. After that, whenever you move your mouse over them, you should see their names instead of the generic "You see a boxer" line.

And yes, if you defeat them (or technically speaking, another critter representing them), they do disappear from the Jungle Gym. :)

-- The Haen.
 
More bugs from Haenlomal! I'll get to the new list in a day or so. I was thinking the next patch update was going to be minor, but this is no longer the case.

Thanks again for everything Haenlomal.
 
f you kill Tyson -- sorry, the Masticator -- with a disqualifying blow, his replacement is much, much weaker. I really don't think that this was the developers' intention at all.
Actually, if you lose a match, the opponent progression starts over from the start. For example, if you disqualify yourself in the second match, you'll fight Joqq, Pete, and Evan afterward. (I usually lose the first one to get all the experience for beating the Masticator.) A fix is simply to stay at the current opponent instead. There would be a bit of discontinuity if you managed to kill them, but it's probably more trouble than it's worth to do something about it.
 
Darek said:
Voduar said:
So, while avoiding the military base for a while I postponed the bug, but again later on (May 2244) the bug began appearing again, without the military base at all, so I am at a bit of a loss. Its a screen freeze bug, for what its worth.
It may be the "too many items" bug. Check this list and see how many of those items you and your party + car are having.

That seems to have done the trick. Good call, damn military holodisks.
 
The Pathfinder perk doesn't seem to work; it takes 25.5 hours to cross a square of mountains with 0, 1, or 2 levels of it. Can anyone else confirm this?
 
Kanhef said:
The Pathfinder perk doesn't seem to work; it takes 25.5 hours to cross a square of mountains with 0, 1, or 2 levels of it. Can anyone else confirm this?
Wait, you are running the Mac version of the patch, right? If so, the pathfinder perk fix is included in Timeslip's tweaks - Win only.
 
Yeah. At least it's a known and addressed issue. Not that it matters much with the car and no time limits.

It does work as advertised in FO1. Hacking the savegame a bit, 4 ranks does result in a 100% reduction in travel time - no time passes. 5 or more and the clock starts running backward!
 
hey i have a problem with f2rp. i get an empty encounter every half a tile on the map while travelling. basically once every second im on the map, which is a lot. any way to fix that? just travelling from arroyo to klamath is a tedious since i have to move to the edge of the scene all the time just to continue travelling.

i looked through the ddraw.ini and i found a WorldMapEncounterRate variable but i logically deducted that there has to be a bug/glitch since its the default value and i never changed anything and i doubt the creator of f2rp would want his users to grind through empty encounters just to get somewhere.

any help would be appreciated.

info:
us version fallout 2 patched to official 1.02 before installing latest version of f2rp (manual zip version). i extracted everything to the main fallout 2 directory using intact subfolders (except for the 95/98 .exes and .dlls since im using xp)

peace
 
@ryo

This thread is for the unofficial patch, not the restoration project. You may get better results posting your inquiries there. Having said that, here's a question for you: Since you said you used the manual install after you upgraded to the official v1.02d version, did you remove the Patch000.dat file in the main fallout directory?

In other news, I'm patiently working my way through NCR. I've already found 16 bugs. While a couple of them are minor dialog errors, there 2 of them which are of the quest breaking variety, and there is 1 pretty nasty 100% reproducible crash bug. Fortunately, I've managed to isolate the cause for each of them, so it's a matter of me finding the time to type them up and post it here. Expect to see something by the end of the week latest -- hopefully sooner.

-- Haenlomal

Edit: And here's another updated bug list! More to come if and when I finally get to San Fran.

NCR

1. If you offend the Enlightened One, the dialog exits without any warning. However, what was suppose to happen is that line 118 is displayed before ending the conversation. Unfortunately, Node004 (which is responsible for displaying line 118) does not give the player any options for replying, so the entire node jumps ahead and ends before the player can notice. The fix is to add a simple ending option, as thus:

Code:
procedure Node004 begin
   set_local_var(LVAR_Hostile, 1);
   Reply(118);
   ENDOPTION;
end

2. For the Enlightened One, the entire "LVAR_Freeibe" (I think they really meant "Freebie", but oh well) line of dialog, starting at Node008, is bugged. This is because, with the single exception of line 174, none of the lines referenced exist in the text file scEnlOne.msg! Judging by the name of the variables involved (EXP_TALK_FALLOUT2 and REP_BONUS_NCR_TALK_FALLOUT2), this was supposed to be a free 100xp given to player in the context of a humorous inside joke, achieved by stepping slightly outside of the game, and then returning player to Node008 to get back into the "proper" mindset.

The simplest fix would be to leave the entire LVAR_Freeibe option commented out, like it was in the original scEnlOne.ssl file. However, what's the fun in that? ;) But if you want to make it work, then you need to do two things:

a) Point the MOREOPTION macro in Node021 back to Node008, and decrement the Node8Rep counter so that the Node008 response would still make sense. So something like this:

Code:
procedure Node021 begin
   Node8Rep -= 1;
   Reply(175);
   MOREOPTION(Node008);
end

b) Create some humorous text to fill in the missing space. I would imagine something like the following, though I'm sure you can think of something better:
In Node008:
-> Line 138: "I'm level"
-> Line 217: "."
(This will make the player answer "I'm level 27." or something similar).
In Node020:
-> Line 173: "What? That is not a valid-- Wait a minute…are you talking about your Fallout 2 level in a lame and pathetic attempt to earn cheap experience points through dialog!?"
-> Line 174: "Yes!" <-- This line already exists, given as a player response.
In Node021:
-> Line 175: "[Sigh] The things some people will do for experience points. Very well, here are your experience points… Now that we have that out of the way, shall we try again?"

3. If you kill the Enlightened One, you get a bonus for "taking care of" her for Merk, even if you had never spoken to Merk before. The check and xp reward for killing the Hubologist should probably be done in Merk's script. At the same time, the flag MERK_STATUS_PLEASED can still be set in the Enlightened One's script, but only if MSS_KILL_ELRON is already set -- the player can kill the Hubologist before ever meeting Merk, and in this case he'll need to do something else to prove himself to Merk. At the same time, care must be taken in Merk's script to process it carefully so that Merk does not tell you to try to kill the Hubologist again.

On another note, this is one of the few places where the macro give_xp is not used, so you may want to standardize this as well as per what you wrote in corrections.txt. Lines 218 and 219 can be consolidated into "You have "taken care of" the Hubologist for Merk." and placed into Merk's message file.

So destroy_p_proc in scEnlOne.ssl should look something like this:

Code:
procedure destroy_p_proc begin

/* Increment the aligned critter counter*/
   inc_good_critter

/* Set global_variable for Enemy status*/
   set_mss(MSS_ELRON_DEAD);
   set_global_var(GVAR_NCR_KILL_ELRON_QST, 2);

   if (merk_seed_status(MSS_KILL_ELRON) then begin
      set_merk_status(MERK_STATUS_PLEASED);
   end
end

The relevant changes in Merk's script would be located in Node042:

Code:
nbody(042)
   if (global_var(GVAR_NCR_SCMERK_SEED_STATUS) bwand (MSS_KILL_ELRON+MSS_ELRON_DEAD)) then begin
      display_msg(mstr(300)); // Assuming line 300 in scMerk.msg is {You have "taken care of" the Hubologist for Merk.}
      give_xp(EXP_MERK_HUB_DEAD);
   end

   Reply(235);
   NOption(236, Node019, 4);
   NOption(237, Node047, 4);
   NOption(264, Node020, 4);
nbodyEnd

4. Several NOption calls in scEnlOne.ssl should be BOption calls instead. More specifically, the NOption calls in Node005 and Node018 to Node004 should both be BOption calls.

5. CRASH BUG ALERT! If you proved yourself to Merk by killing Lenny in the ring using the Mutagenic Serum, and then rejected his quest to retrieve Dr. Henry's paper, Merk will be pissed with you, and won't offer you the job again unless you prove yourself once more. However, in the list of options of proving yourself, the option to kill Lenny is still there. If you select this option, and follow the dialog to the end, Merk will try to arrange another fight, which will result in a crash!

The cause of this crash seems to be an engine bug: if you kill Lenny using the Mutagenic Serum, then destroy_p_proc never gets called. Thus MVAR_Lenny_Dead never gets updated, resulting in Merk thinking Lenny's still around. The only solution seems to be using scripts for a quick and dirty hack to use_obj_on_p_proc, destroy_p_proc, map_update_p_proc in scLenny.ssl, as thus:

Code:
procedure use_obj_on_p_proc begin
   variable tool;

   tool := obj_pid(obj_being_used_with);

   if (tool == PID_MUTAGENIC_SYRUM) then begin
      set_ncr_flag(NCR_KILLED_LENNY_SERUM_FLAG);
      if (not (MVAR_Lenny_Dead == 1)) then begin
         call destroy_p_proc
      end
   end
end

procedure destroy_p_proc begin

   /* If player uses the serum, and then kills Lenny before it */
   /* takes effect, this will prevent the kill counter from    */
   /* being incremented twice.                                 */
   if (not (MVAR_Lenny_Dead == 1)) then begin
      /* Increment the aligned critter counter*/
      inc_evil_critter

      /* Set global_variable for Enemy status*/
      set_map_var(MVAR_Lenny_Dead, 1);
   end
end

procedure map_update_p_proc begin
   if (not (MVAR_Lenny_Dead == 1)) then begin
      lenny_obj := self_obj;
   end
end

6. Here's a pretty interesting little bug that takes some work to duplicate. First, tell Merk you want to work, and prove yourself in anyway you want. Then retrieve the papers from Dr. Henry -- being careful keep the good doctor alive, as Merk requested. After that, talk to Doofus when he's high, ask him "What place is this?" and then "Yes?", and he'll tell you to go see Merk for stuff to do. Return to Merk and tell him that "informed sources" told you that he can do business. Merk will get unhappy and ask you to kill Doofus. Refuse to do so, and he'll end the conversation on an insulting note. Talk to him again, apologize, and assuming you have a high enough charisma, you will get the option to ask him for work again! If you do so, you'll have once again have the choice of proving yourself. If you decide to kill Lenny, sell Myron, or call yourself a "badass mofo" the second time around, Merk will even offer you the job to retrieve Dr. Henry's papers again! Fortunately, you can't give him the papers a second time around, even if you steal/barter the papers from him.

The reason for this bug lies in Node005 of scMerk.ssl. Part of the code looks like this:

Code:
   if (not (merk_status == MERK_STATUS_PLEASED)) then
      NOption(129, Node008, 4);

The idea is that Merk is pleased with you once you have completed the Dr. Henry paper retrieving job, so the option to ask him for more work shouldn't appear once the papers have been retrieved. Unfortunately, refusing to kill Doofus for Merk will make him displeased again, thus allowing the player an opportunity to ask for more work. A secondary issue is at work here: if Doofus tells the player to look up Merk for work opportunities, and the player already has done the Dr. Henry job, then logically speaking, there is no longer any need to tell Merk that "informed sources" let the player know that Merk is the man with whom to do business -- the player already knows this fact very well for himself or herself!

There are a few ways to fix this bug. The easiest way is to check to see if the papers have already been retrieved, and if yes, don't present this option at all. The same check should probably be done on the "informed sources" line for the reasons discussed above, but more needs to be done due to another bug -- read on!

7. Talk to Doofus when he's high, and ask him "What place is this?" and then "Yes?" to get him to tell you to go to Merk for some work. Tell Merk that "informed sources" told you to look him up, and he'll tell you to kill Doofus for him. Accept the offer, then kill Doofus. Return to Merk, and pick the "informed sources" line again. Despite the fact that you've already iced Doofus, Merk will once again tell you to kill the carhop! Hmm...

The reason for this bug lies once again in Node005. You have the following snippet of code in Node005:

Code:
   if (global_var(GVAR_NCR_MERK_WORK) == 1) then
      NOption(130, Node009, 4);

This code does not check at all to see if Doofus has bought the farm. So an added check should be made to see if Merk has already told the player to kill Doofus, in addition to what was discussed in bug #6. Also, a check should be made to see if Doofus is still alive in the first place -- after all, it is entirely possible for the player to have killed Doofus before ever talking to Merk! In this scenario, Merk should proably ask the player to prove himself -- i.e. go to Node008 -- since in theory he will have no idea who killed his carhop.

When the fixes to both 6 and 7 are implemented, the final result for Node005 should look something like this:

Code:
nbody(005)
   if (merk_status == MERK_STATUS_MET or global_var(GVAR_NCR_SCMERK_HEREBEFORE) == 1) then
      Reply(126);
   else if (bad_critter_reaction or merk_status == MERK_STATUS_BAD_REACTION) then
      Reply(127);
   else
      Reply(125);

   NLowOption(128, Node007);
   if (not merk_seed_status(MSS_DR_HENRY_DONE)) then
      NOption(129, Node008, 4);
   if (global_var(GVAR_NCR_MERK_WORK) == 1) then begin
      if (not merk_seed_status(MSS_DR_HENRY_DONE) then begin
         if ((not merk_seed_status(MSS_KILL_SKEETER)) and (not merk_seed_status(MSS_SKEETER_DEAD))) then begin
            NOption(130, Node009, 4);
         end else begin
            NOption(130, Node008, 4);
         end
      end
   end
   if (global_var(GVAR_NCR_CAR_JACKED) == 1) then
      BOption(131, Node1011a, 4);
   NOption(132, Node020, 4);
   if (global_var(GVAR_NCR_CAR_JACKED) == 1) then
      NOption(133, Node1211a, 7);
   if (global_var(GVAR_NCR_FAKE_VAULT13_MAP) == DUDE_FIGURED_FAKE_MAP) then
      NOption(266, Node037, 4);

nbodyEnd

8. This is kind of related to the previous bug. After you have killed Doofus, Merk does not really react to it at all. Judging by the Merk's dialog when he asks you to "cap" Doofus, he was supposed to give you the job to retrieve Dr. Henry's papers after the carhop is toast. The fix is to set MERK_STATUS_PLEASED in Doofus' destroy_p_proc, if MSS_KILL_SKEETER is previously set:

Code:
procedure destroy_p_proc begin

/* Increment the aligned critter counter*/

   //inc_good_critter
   inc_evil_critter

   if (merk_seed_status(MSS_KILL_SKEETER)) then begin
      set_merk_status(MERK_STATUS_PLEASED);
   end
   set_mss(MSS_SKEETER_DEAD);
end

At the same time, there probably should be a quest entry for this, since it's just like killing the Hubologist, and with the same end result. Only the target is different.

9. According to destroy_p_proc in scSkeete.ssl, Doofus is an evil critter. However, in Node999b of scMerk.ssl, the comment in that script specifically states there should be a karma drop for taking on the quest. This leads me to believe that counting Doofus as an evil critter is a bug. I think that he really should be a neutral critter, so destroy_p_proc should call inc_neutral_critter instead of inc_evil_critter.

10. When you find out that Merk has been stealing from your car, you can confront him with it. If your barter skill is high enough, one possible option is to buy your stolen stuff back. See Nodes 012, 25a, and 025 for details. However, notice that line 155 is a line that would be spoken by a male character. I think the developers simply forgot to include a female version of 155, especially considering the deliberately gender-neutral tone of Merk's response in line 185 instead of the more common male expression. One way to fix this would be to create a feminine equivalent of line 155, but the easier fix (to match Merk's response in line 185) would be to simply make line 155 gender neutral, as thus:

Code:
{155}{}{Now if a person had some things missing, do you suppose such a person could buy those things back?}

11. The xp gain message for retrieving Dr. Henry's papers is not standardized, as per your corrections.txt file. Lines 271 and 272 can be consolidated into "You retrieved Dr. Henry's paper." Then Node5051a in scMerk.ssl can look like this:

Code:
procedure Node5051a begin
   variable papers;

   papers := obj_carrying_pid_obj(dude_obj, PID_DOC_PAPERS);

   if (papers) then begin
      item_caps_adjust(dude_obj, 1000);
      rm_obj_from_inven(dude_obj, papers);
      add_obj_to_inven(self_obj, papers);
      set_merk_seed_status(MSS_DR_HENRY_DONE);
      set_global_var(GVAR_NCR_DRPAPR_QST, 2);
      display_msg(mstr(271)); // Asuming line 271 in scMerk.msg is {You retrieved Dr. Henry's paper.}
      give_xp(EXP_MERK_GET_PAPERS);
   end
   if (merk_seed_status(MSS_DR_HENRY_DEAD)) then
      call Node050;
   else
      call Node051;
end

12. If you try to repair the terminal before dealing with Officer Jack (wait until nightfall before you go to the powerplant), you will either "fail" or successfully "fix" the terminal. If you "failed" to repair it, then Dorothy will be in full panic mode until you can successfully "fix" the terminal. Regardless, once you are successful, Dorothy will reward you with four skill books and 3,000xp. In the meantime, Officer Jack will still make his way to the Powerplant everyday and say threatening float messages, but he won't actually blow anything up. At the same time, you can't do anything more about it, and Dorothy seems to think that everything is fine despite the madman standing next to the terminal.

The cause of this bug is found in procedure use_skill_on_p_proc in ssComp.ssl. There is no check at all to see if the terminal needs repairing -- it assumes that it does need repairs, and rolls for success or failure accordingly. Furthermore, the state of the powerplant is kept in the global variable GVAR_NCR_POWERPLANT, but none of the defines in ncr.h relates to the state where the Officer Jack problem has yet been initiated. Therefore, the fix consists of two steps.

a) In ncr.h, define a zero state under "//Dorothy Crap", as thus:

Code:
//Dorothy Crap
#define PP_NOTSTARTED    0
#define PP_MURDER        1
#define PP_DEFUSED       2

This step is of course technically speaking not necessary, but will help with future code maintenance.

b) In ssComp.ssl, change use_skill_on_p_proc to the following:

Code:
procedure use_skill_on_p_proc begin
   script_overrides;
   if (global_var(GVAR_NCR_POWERPLANT) != PP_NOTSTARTED) then begin
      debug_msg("SSCOMP: using sscomp console");
      if (local_var(LVAR_Working) == STATE_WORKING) then begin
         if (skill_success(source_obj,USE_WITH_SKILL1,ROLL_ADJUSTMENT1)) then begin
            call use_success;
         end
         else begin
            call use_fail;
         end
      end else call use_fail;
   end
end

If you didn't define PP_NOSTARTED in ncr.h, then substitute the value of "0" in the code above.

13. If you are playing an intelligent character and kill Officer Jack, then tell Mira about it, she will give you a P90c as a reward, though you don't get the experience points associated with getting the same quest as a dumb character. However, if you killed Jack in jail, this does not happen: the dialog option to talk about Jack never appears in Mira's dialog, and so you will never get the reward.

There's a related problem: if you successfully killed Jack, you are rewarded the xp right away, and the quest is crossed off your PIPBoy. This really should only happen if after you return to Mira for a reward, though one can argue that this is subjective.

The problem is found in procedure destroy_p_proc in scOfJack.ssl. For some reason, there was a check added to make sure that Jack is not in jail (or more accurately, not on the tile JACK_JAIL_TILE) before setting the appropriate state in GVAR_NCR_MIRA_STATE. I'm guessing that this was an attempt to prevent the quest entry from appearing in the PIPBoy on Jack's death, even when Mira hasn't given it to the player. Unfortunately, this is only somewhat effective: killing Jack in jail now provides no reward, and you still get the PIPBoy entry without ever talking to Mira if you kill Officer Jack anywhere else but at the jail.

With the above objectives in mind, we can do the following to fix the problem:

a) Undo the check for JACK_JAIL_TILE in destroy_p_proc (i.e. restore it to what was found in v1.02D).

b) In NCR.H, change the Mira related defines to the following order:

Code:
//Mira
#define MJACKTALK         1
#define MJACKDEAD         2
#define MJOBTAKEN         3
#define MJOBJACKEDWHACKED 4
#define MJOBDONE          5
#define HKP90C_PID        PID_HK_P90C

You'll need to recompile scKarl.ssl, scMira.ssl, and scOfJack.ssl in order for the new defines to take effect.

c) In Data\quests.txt, change the entry for Mira's quest to:

Code:
# "Take care of Officer Jack" For Mira, GVAR_NCR_MIRA_STATE
1510, 1101, 217, 3, 5

If you think that the PIPBoy entry should be crossed off right after Jack buys the farm, then change the 5 to a 4.

14. If you let Jack blow himself up, and then tell Mira what happened, according to the dialog in Node026, she gives you a Rad-A-Waster (Booze) on the house (line 193 of scMira.msg). However, this isn't happening, mainly because there is no code in place to do so. The simple fix is to add the necessary code to Node026 of scMira.ssl, as thus:

Code:
procedure Node026 begin
   add_obj_to_inven(dude_obj, create_object(PID_BOOZE, tile_num(self_obj), 0));
   Reply(193);
   NLowOption(194, Node009);
   NLowOption(195, Node999);
   NOption(196, Node011, 4);
   NOption(197, Node999, 4);
end

15. If you killed Lenny in the ring before you resolve the Officer Jack issue, Mira will keep on congratulating you and will no longer bring up any option to reward you for informing her about Jack's demise. The fix is to point all references to Node005 in Node003 to Node001 instead, as thus:

Code:
procedure Node003 begin
   if (ncr_flag(NCR_KILLED_LENNY_SERUM_FLAG)) then begin
      if (local_var(LVAR_N3_Count) == 0) then begin
         Reply(184);
         ENDOPTION;
      end else begin
         Reply(185);
         MOREOPTION(Node001);
      end
   end else begin
      if (local_var(LVAR_N3_Count) == 0) then begin
         add_obj_to_inven(dude_obj, create_object(PID_BOOZE, tile_num(self_obj), 0));
         Reply(115);
         ENDOPTION;
      end else begin
         Reply(116);
         MOREOPTION(Node001);
      end
   end
   inc_local_var(LVAR_N3_Count);
end

16. If you beat up Hoss, and he surrenders, Dusty will give you a free booze in order to congratulate you on your success. However, he keeps on giving you a free booze every time you talk to him, so you have a source of infinite booze. While this definitely appeals to the alcoholic in all of us, I'm sure the developers were only intending a one time bonus. :) See Node007 of scDusty.ssl for the details.

The fix is to add another LVAR to the script -- say, LVAR_Freebie. Set LVAR_Freebie to 1 the first time Dusty gives away free booze, then have him say something else in the future -- a few appropriate lines will need to be created. So, if we have lines 131, 132, and 133 in scDusty.msg looking something like this:

Code:
{131}{}{Looking to teach Hoss another lesson?}
{132}{}{Maybe later. But right now, I've got some questions.}
{133}{}{Maybe later. Bye.}

then Node007 could look something like this:

Code:
procedure Node007 begin
   if (LVAR_Freebie == 0) then begin
      set_local_var(LVAR_Freebie, 1);
      add_obj_to_inven(dude_obj, create_object(PID_BOOZE, self_tile, 0));
      Reply(128);
      NOption(129, Node001, 4);
      NOption(130, Node999, 1);
   end else begin
      Reply(131);
      NOption(132, Node001, 4);
      NOption(133, Node999, 1);
   end
end

17. On a similar note, if you beat Hoss up so badly that he is rendered unconscious, Dusty will remain oblivious to your victory until Hoss wakes up and you talk to him. This is because the flag GVAR_NCR_BEAT_HOSS is only set in dialog with Hoss. The fix is to check for is_critter_prone(self_obj) and current hit point levels in combat_p_proc and set GVAR_NCR_BEAT_HOSS if true, but keep LVAR_Surrender at 0. In talk_p_proc, add an additional check to beat_hoss == 1 and local_var(LVAR_Surrendered) == 0 as a possibility to goto Node006 or Node005. Finally, in Nodes 005 and 005, set LVAR_Surrendered to 1 in addition to setting GVAR_NCR_BEAT_HOSS to 1. This way, Dusty will acknowledge the player's victory if Hoss is unconscious, and the player will still get to see Hoss's, um, concession speech when the bully is awake.

18. Dusty's inventory restocks every one to four days, but he doesn't purge his inventory. Unlike most shopkeepers, Dusty actually keeps his inventory on himself. Fortunately, he carries no weapons or any special items, so it is ok to purge his inventory before restocking. Alternately, a box can be created for him. Otherwise, he will keep on accumulating junk.

19. Line 124 in scDusty.msg should be "Thanks." (It was lacking the ending period.)

20. Your NPC companions no longer trigger the dialogue with the door to the craps dealer everytime they try to go through it, which is a good thing. However, they now walk right through the door without opening it, which is a decidedly bad thing.

As far as I can tell, the problem lies in the fact that technically speaking, the doors aren't locked. All that is preventing the player from opening them and walking through is the script, which forces a dialog on any use attempt. Since NPCs are no longer affected by it, they can use the door and go through it with impunity. Yet, because of the script_overrides command, the door does not animate or do anything else the engine would normally do.

The fix is to keep the doors locked via the script. This can be done in the currently empty procedures map_enter_p_proc and map_update_p_proc, as thus:

Code:
procedure map_enter_p_proc begin
   if (local_var(LVAR_Door_Unlocked) == 0) then begin
      obj_close(self_obj);
      obj_lock(self_obj);
   end
end

procedure map_update_p_proc begin
   if (local_var(LVAR_Door_Unlocked) == 0) then begin
      obj_close(self_obj);
      obj_lock(self_obj);
   end
end

21. If you knock down the doors to the craps dealer using a crowbar, you will still get the option to ask Duppo about alternate sources of cash, and he will act as if you don't know anything about the doors.

For the Restoration Mod, a "realistic" fix would be for Duppo to demand compensation when the player next talks to him (he probably shouldn't call the guards right away, seeing that he's running an illegal gambling house), and to refuse to buy/sell unless compensation has been given, or until the player successfully blackmails him.

For the patch, though, a simple way to deal with the issue is to set NCR_CRAPS_KNOWN after the door has been successfully forced open with the crowbar. You will need to modify procedure use_obj_on_p_proc in ssCrpDor.ssl, and change the part about dealing with the crowbar, as shown below:

Code:
   end else if (Tool == PID_CROWBAR) then begin
      script_overrides;
      if (dude_strength > 8) then begin
         if (stat_success(dude_obj, STAT_st, 0)) then begin
            if (local_var(LVAR_Door_Unlocked) == 0) then begin
               ncr_set_global_state(NCR_CRAPS_KNOWN);
               set_local_var(LVAR_Door_Unlocked, 1);
               display_msg(mstr(112));
            end else begin
               display_msg(mstr(113));
            end
         end
      end else begin
         display_msg(mstr(114));
      end
   end

20. scDuppo.msg contains a couple of minor text errors.
-> Line 112: Extra space between "you" and "don't"
-> Line 128: "Weston" should be "Westin"

22. When you use the mutagenic serum on a super mutant, you get the message: "You gain 1000 experience points for using the Mutagenic Serum." In keeping with the standardization of xp gain messages, lines 101 and 102 can be consolidated into one line (say, line 101) which states: "You used the Mutagenic Serum." Then the relevant part of the code in procedure use_obj_on_p_proc can be updated to use the macro give_xp:

Code:
      if (global_var(GVAR_NCR_HENRY_HYPO) < HYPO_USED) then begin
         set_global_var(GVAR_NCR_HENRY_HYPO, HYPO_USED);
         display_msg(mstr(101));
         give_xp(EXP_DOCHENRY_MUTA_TEST);
      end

23. When you use the Mutagenic Serum, the message "That does nothing." appears in the display window. I notice that you've inserted a few more script_overrides commands in an attempt to prevent this, but unfortunately this does not work. In fact, it doesn't seem like that use_obj_on_p_proc is even responsible for the "That does nothing." message: if you insert a test display_msg line just before the end of the procedure, the test display_msg text will be displayed in the display window just before the "That does nothing." line. Thus far, I'm inclined to think that this is an unfixable engine bug -- maybe you'll have better luck locating right event handler to overide.

24. If you try to pick the lock on the door to Westin's house, or use a tool on it, Felix (if he's still alive) will give you a warning even if he can't see you at all. Hmm. Then again, this is perhaps not such a surprising result considering the code found in ssFlxDor.ssl has no such check either. The obvious fix is to place the check under the appropriate places in procedure use_skill_on_p_proc and procedure use_obj_on_p_proc, as thus:

Code:
   if (i_felix_obj != -1) then begin
      if (obj_can_see_obj(i_felix_obj, dude_obj)) then begin
         script_overrides;
         POSTGLOBALTIMER(i_felix_obj, NCR_TIMER_PLAYER_WARN);
      end
   end else begin

25. This is similar to the last bug, except only in reverse: if you try to open the door without Felix's permission, you'll find that you can't: the door is locked. However, Felix makes no attempt to warn you off either, which I think is a bug given that he warns you when you try to use a skill on the door or use a tool against the door. The fix is to add a warning code near the beginning of procedure use_p_proc, as thus:

Code:
   else if (obj_is_locked(self_obj) or map_var(MVAR_FlxDor_Open) == 0) then begin
       script_overrides;
       display_msg(mstr(203));
       if (i_felix_obj != -1) then begin
          if (obj_can_see_obj(i_felix_obj, dude_obj)) then begin
             POSTGLOBALTIMER(i_felix_obj, NCR_TIMER_PLAYER_WARN);
          end
       end
   end

26. scHal.msg contains a minor text error: Line 100 has an extra space between "a" and "muscular"

27. Tandi talks about Roger Westin as if he were alive, even if he's dead. The easiest way to stop this is to further check if Westin has bought the farm before presenting the options in the first place. There are two Nodes where this needs to be done: Node007 and Node021. Looking further at the script, the same issue seems to be present for VP Carlson, though I haven't gotten that far in my game yet. Again, a check should be made to see if the vice-president is still around before allowing the option to be displayed.

28. What Tress MacNeille (voice actor for Tandi) says and what the text in shTandi.msg says doesn't quite match up in a few spots. Also, the text seems to be a bit confused in a few spots about the short form for the word "them" ("'em") and the short for "him" ("'im"). Here's the list as far as I can find.
-> Line 136: Change "Your choice" to "Well, your choice"
-> Lines 148, 156, 158: Change "vault" to "Vault" (Upper case is more consistent with rest of the dialog text)
-> Line 193: Change "Lot of folks" to "Lots of folks"
-> Line 208: Change "If you see 'em" to "If you see any of 'em"
-> Line 216: Change "one way or another." to "one way or the other."
-> Line 221: Change "spreads" to "spread's"
-> Line 221 (yes, same line again): Change "you aren't" to "you are not"
-> Line 233: Change "we won't take kindly" to "we don't take kindly" (yes, it's idiomatically incorrect, but it does fit the theme, and that's what Tress said anyhow.)
-> Line 242: Change "Who'd" to "who'd"
-> Line 245: Change "'em" to "'im"

29. scRobo.msg contains a few minor text errors:
-> Lines 1700, 1800, 1900: "too" should be "to"

30. scMikey.msg has a couple of minor text errors:
-> Line 114: "Capice?" should be "Capiche?"
-> Line 118: missing the word "you" after "troubling"

31. ssSign.msg has a minor text error in line 125: "you" should be "your"


New Reno

1. On the 2nd floor of the Shark Club, there is a room with some ammo (10mm AP and .44 Magnum JHP) and leather armor lying on the floor, waiting for the player to pick them up. Actually, there is one more ammo lying on the floor: 10mm JHP. Unfortunately, the stairs leading up to Bishop's room is in the way, so the player can never see this 10mm JHP ammo and pick it up. It should be moved to somewhere accessible to the player.

2. Myron displays a rather unusual level up message when he transitions to stage three. The reason is found in misc.msg, line 9012. The line reads: "I feel a great disturbance in the force. As if all my skills have gained % points." However, the in-game parser inteprets % as a variable and tries to substitute a value for it. The fix is to replace the symbol "%" with the word "percentage", which is what I think Myron is really trying to say.

3. I'm not quite sure if this belongs in the patch or not, since there's a possibility that the developers purposely disabled the feature. I'll simply list the issue and a fix for it, and leave the decision up to you. At the very least, though, it can be useful for your Restoration Pack.

Just like Stuart Little's special comments for selected Prizefighter names, there were supposed to be special comments for selected Pornstar names from the Corsican Brothers as well. Unfortunately, this was not fully implemented -- perhaps Interplay was afraid of the possibility of slander and libel lawsuits from Ron Jeremy? ;) This is a pity, because the comments (esp. the "bad" special name one) are quite funny to read. To fix this, quite a few steps are needed.

a) The script ncCorBro.ssl gives us no clue as to what the special names are supposed to be, but fortunately, the text file ncCorBro.msg documented the developers' intentions. The special bad comment was supposed to be if the player chooses "Ron Jeremy", while the special good comment is supposed to be for players who choose "Dirk Diggler" or its female equivalent, which is presumably "Amber Waves" -- they are the names of lead characters in the 1997 cult hit Boogie Nights. Unfortunately, neither "Dirk Diggler" or "Ron Jeremy" is found in newr1.msg, though "Amber Waves" is present (Line 553). So, we need to add "Ron Jeremy" and "Dirk Diggler" to the list of male porn star names. There's plenty of room after line 530 to do so, though personally I'd replace line 503 with "Dirk Diggler" and move the current 503 ("Freddy Barkwood") down in order to make things a bit easier to code. I'd probably also put "Ron Jeremy" closer to the top so that the player has a higher chance of selecting the name and seeing the special comment.

b) In NewReno.h, since the player now has the chance to set up a new porn name more than once, we need to make sure that GVAR_NEW_RENO_PORN_STAR is set to 0 so that the numbers crunch properly. To do that, we need to replace the macro setup_set_porn_star_name with the following:

Code:
#define setup_set_porn_star_name(the_msg, the_node)                     \
         begin                                                          \
            var_num := GVAR_NEW_RENO_PORN_STAR;                         \
            set_global_var(var_num, 0);                                 \
            top_msg := porn_star_msg_start + (50*dude_is_female) + 1;   \
            stored_msg := the_msg;                                      \
            stored_node := the_node;                                    \
            call ChooseFromList;                                        \
         end

c) In NcCorBro.ssl, change the defines for bad_porn_name and great_porn_name from "(false)" to the following (it's the "false" setting that makes me think that developers deliberately disabled this feature):

Code:
#define bad_porn_name                  dude_porn_star_number == 31 // assuming you made line 531 "Ron Jeremy" -- replace with appropriate number if this isn't the case.
#define great_porn_name                dude_porn_star_number == (50*dude_is_female) + 3 // assuming you made line 503 "Dirk Diggler". Otherwise, you'll need separate conditionals check for "Dirk Diggler" and "Amber Waves" instead of doing it all in one go.

d) Node986 gives the xp bonus, the rep bonus, plus the Pornstar karmic title all in one go, because the player wouldn't be able to return to the node. However, since this is no longer true, we need to move all that somewhere else. So Node986 of ncCorBro.ssl should now look like:

Code:
procedure Node986 begin
   if (bad_porn_name and dude_is_male) then begin
      call Node031;
   end else if (great_porn_name) then begin
      call Node032;
   end else begin
      call Node030;
   end
end

e) Put the xp bonus, rep bonus, and the Pornstar karmic title rewards in Node984, as thus:

Code:
procedure Node984 begin
   display_mstr(1250);
   give_xp(EXP_NEW_RENO_PORN_STAR);
   inc_reno_rep(REP_NEW_RENO_PORN_STAR);
   call Node987;
end

f) Finally, there is a small bug in Node032 that could allow a line meant for male characters to be displayed to female characters. At the same time, there is an unnecessary flag being set. On top of that, there are two random comments meant for male characters, while only one for female characters. To fix this, add the following line 558 to ncCorBro.msg:

Code:
{558}{}{Now, THAT'S a name so bright and so sharp, that it'll just EXPLODE because it's just so powerful! Good choice, honey-tits, good choice. Now, let's FILM! Lights! Camera! Action!}

Then, change Node032 in ncCorBro.ssl to the following:

Code:
procedure Node032 begin
   Reply(random(555 + (2*dude_is_female), 556 + (2*dude_is_female)));
   NOption(536, Node984, -003);
   NOption(537, Node984, 004);
   prev_node := 32;
end

4. Again, this seems like an incomplete implementation of something, so it may be more appropriate in your Restoration Mod. You be the judge. :)

If you look at lines 1390 and 1406 in ncJules.msg, you were supposed to be able to smell the cologne on Cody's dead body and deduce that Jules is the killer. However, this wassn't implemented, since there is no command anywhere to set the look_cody bit. So lines 1390 and 1406 never gets displayed in a normal game.

What is needed is for a spatial script to be placed on Cody's home tile, and for it to trigger a message like "As you approach Cody's body, the overwhelming scent of Jules' cologne slams into you." Or, if Jules is unknown: "...the overwhelming scent of a distinctive cologne slams into you." At the same time, it will set the look_cody bit. This will enable the player to approach Jules and say lines 1390 or 1406 as desired.
 
i started playing fallout 2 for the first time today i installed all the patches first the official one, then "killap's Fallout 1.02+ (1.02.25) US/UK Patch" and the "MIB88 megamod" and I have already found a bug at the very start its quite annoying: the man who accosts you at the start I tell him I've come to do the trial, then say "Klint, lets try to do it together"..... then the "But why not?" is shown as an option, but when i click on it, or press 1, nothing happens!? it just wont let me choose the option? The other speech option is "I see. Bye, Klint" and thats the only one out of the two I can choose :(
 
oh and when you tell the stupid boy to stop whining, it spells it 'wining', i say this cos i read that the megamod one updates and adds a lot of dialogue i guess that got missed :)
 
I started replaying Fallout 2 a while ago after not touching it for many, many years and at first I installed with all patches+resolution mods. It's been mostly problem free for me even if I think that tribal that keeps hunting the player showed up one more time after I killed him.

Anyway on to the real issue I recently come across a bug that prevents me from advancing any futher into the game. I'm at Vault 13 and playing a char with negative karma wich means Gruthar won't let me pass peacefully. I read somewhere even evil characters could be allowed in with high enough stats but when I tried to use drugs to buff it it doesn't seem to work so the only option for me seems to be combat and there is where the game crashes for me.

I'm level 14 at the moment and Gruthar and his friend is two hard deathclaws so the only real chance I have of winning is to blind them to prevent them from killing me in 2-3 turns like they otherwise do.. But after I shoot both of them in the eyes with a critical strike and they start to run around aimlessly the game always seems to crash after a round or two after that while I'm trying to gun them down. I rather often used blinding tactics on hard fights before without problems but somehow I never seem to be able to get Gruthar or the other death claw under 150 health or so before the game crashes. Anyway the screen turns black when this happens and a small box saying Fallout 2 encountered a unknown program exeption pops up.

Since it's been years since I last touched Fallout 2 I have no idea if this is a regular game bug that happend for me or something connected with the restoration mod. I do know I can't try it without the mod though since the saved moded files don't work with just the official patch. Also I read on some sites that it should be possible to sneak past Gruthar in combat mode but that doesn't seem to work for me either.

If I remember correctly Fallout 2 always been buggy but I would hate to have to stop playing now that I gotten so far so far and I have no idea how to progress futher so any help would be appreciated.
 
Daremyth said:
I read somewhere even evil characters could be allowed in with high enough stats but when I tried to use drugs to buff it it doesn't seem to work

That may have been in my guide, though I think you misunderstood. Gruthar will let you in if your IN is no higher than 3, and using Psycho drops your IN.
 
Ahhh.. That might be it. If you don't mind telling me.. where can I find Psycho? I got fairly high int so I might need a bit of it unless it drops it by a lot. Would at least get me in and then I can continue the game even if I never gets to gun down all the death claws.. but thats not a big deal since my goal never been to play as mean as possible even if I'm having negative karma ^^
 
Daremyth said:
Ahhh.. That might be it. If you don't mind telling me.. where can I find Psycho?

You should go to San Francisco, the merchants should have everything you need (especially Lao Chou).
 
you could always use FALCHE2 to edit your intelligence down, do whatever you need to do then edit it back up - you can do it while the game is open even, you just save edit then re-load
 
Back
Top