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

Hmm, I keep getting the error - "Failure Initializing Input Devices" when I attempt to use a DX9 mode. This happens when trying windowed or fullscreen.

The 8-bit fullscreen mode works fine. :(
 
I've got the same problem Voduar. I installed RP month ago. My character is on the 26th level and after leaving MB I cant get into Chinatown. I tried getting through the docks but with no result. In my case game freezes after 27th of July 2242. Quite annoying :?

Help anyone? :wink:
 
Someone mailed me to say this about an "unpatched" game:

Anyway, when i first go to redding and talk to Doc Johnson, he thanks me for curing the town of it's Jet addiction and i can talk to him as if i've done the quest previously, even if it's a completely new account. This does mean i lose out on a lil bit of xp =/
And in The Den, when doing the Lara/Tyler gang war quest, if Lara dies in the fight, she doesn't have the $300 (?) on her body, so i always save before the fight and reload if she dies.

Are these things you'd expect from an incorrect install of the killapatch, or is this something else?
 
avatar_58 said:
Hmm, I keep getting the error - "Failure Initializing Input Devices" when I attempt to use a DX9 mode. This happens when trying windowed or fullscreen.

The 8-bit fullscreen mode works fine. :(

Anyone? Bueller? :(
 
avatar_58 said:
avatar_58 said:
Hmm, I keep getting the error - "Failure Initializing Input Devices" when I attempt to use a DX9 mode. This happens when trying windowed or fullscreen.

The 8-bit fullscreen mode works fine. :(

Anyone? Bueller? :(
Are you using vista? Does setting BackgroundKeyboard and BackgroundMouse to 1 in ddraw.ini help?
 
Hi all,

I installed this patch on clean US (i think) version and tried to load my save files after converting (basic from 1.0 to 1.02) with the fallout 2 savegame converter.

But when i load the game it gives me black screen and an Application Error. Is there a way to fix this?


sry if this was already posted, couldn't find.

thanks
 
ok, thanks.

Great effort for the patch btw. GJ.

P.S.

is there a way to uninstall the patch? or i would have to reinstall the game?
 
Timeslip said:
avatar_58 said:
avatar_58 said:
Hmm, I keep getting the error - "Failure Initializing Input Devices" when I attempt to use a DX9 mode. This happens when trying windowed or fullscreen.

The 8-bit fullscreen mode works fine. :(

Anyone? Bueller? :(
Are you using vista? Does setting BackgroundKeyboard and BackgroundMouse to 1 in ddraw.ini help?

Perfect thanks :clap:
 
Bugs found in the lastest patch

Hey killap,

I've played a bit through your latest patch, and found some errors. I've tried to organize the buglist by region. Because this is such a LONG list, and because I know you planned an August update, I've tried to isolate the problems and recommend a technical solution the best that I can for each of these bugs.

-- The Haen.

Klamath

1. The "intersting" in line 392 of kcBob.msg should be "interesting".

2. Line 947 in kcSulik.msg should end with a question mark. On scanning through the rest of the file, I noticed that line 3050 is also missing a terminating question mark.

3. You can walk over the lootable crate in the west side Klamath Mall Map -- read on for more instances of this.

4. You can walk over a bowl (with pestle) in one of the the houses in Downtown Klamath. This house is the one closest to the exit grid to the Klamath Trapping Grounds -- again, read on for more instances of this.

5. You can walk over the lootable skeletons found in the Klamath Mall and in the Lair of the Rat God, most likely because the scenary pieces over them can normally be walked over. (The lootable skeleton on the first floor of the rat caves is properly set with a blocking hex).


The Den

1. Line 101 in zsDrvCar.msg currently reads: "Currently, this car doesn't appear to be functional, it needs a fuel cell controller." It should be: "Currently, this car doesn't appear to be functional. It needs a fuel cell controller."

2. Line 210 in zsDrvCar.msg currently reads: "You fail to repair the car. You fail to repair the car with the fuel cell controller." It should be: "You fail to repair the car with the fuel cell controller."


Modoc

1. The "Well,," in line 236 of mcGrisha.msg should be "Well,".

2. You can walk over the lootable crates in the Modoc slaughterhouse and Jo's General Shop.

3. You can walk over the bowl (with pestle) in Farrell's house.


Gecko

1. If you kill a ghoul with critical head insta-kill, you get the line: "This blow buries this ghoul". Try the more idiomatically correct "The blow buries this ghoul" or "This blow buries the ghoul" (combat.msg, line 5401).

On a similar note, many critical hit messages yield idiomatic and/or grammatical errors. Read on for a full list.

2. When you talk to the front desk guard in the Gecko Reactor, there are some dialogue errors if the player asks for directions to the reactor pit. There are two lines in gcRDesk.msg that need to be changed in order to fix this:
-> line 150: "past the control room" should read "past the robot control room" to maintain consistency with rest of dialog
-> line 151: "Where’s the reactor control room?" should read "Where’s the robot control room?"

3. If you save your game in the Gecko junkyard, then there is a chance that Lumpy will teleport on reload. This is caused by a bug in the map_enter_p_proc procedure, which is triggered automatically when the game is loading. Therefore, adding a "is_loading_game" check to procedure map_enter_p_proc in gcLumpy.ssl should solve the problem, as thus:

Code:
procedure map_enter_p_proc begin
   if (not (is_loading_game)) then begin
      Only_Once:=0;
      critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_TEAM_NUM,TEAM_GECKO);
      critter_add_trait(self_obj,TRAIT_OBJECT,OBJECT_AI_PACKET,AI_TOUGH_CITIZEN);
      if ( (game_time_hour <= 600) or (game_time_hour >= 1800) ) then begin
         move_to(self_obj,22285,self_elevation);
      end
      else if (random(1,2) == 1) then begin
         move_to(self_obj,24685,self_elevation);
      end
      else begin
         move_to(self_obj,19912,self_elevation);
      end
   end
end

The procedure can be re-written to be more efficient (for example, the critter_add_trait commands should only need to be run once), but it will prevent Lumpy from jumping from place to place for each game load.

4. Wandering ghouls on the main Settlement map can wander through the reactor doors into the area beyond it, making them inaccessible to the player. A few stratgically places blocking hexes should fix this.


Redding

1. Madam Modjeska repeats "Hello there. What can I help you with?" (line 129 in rcModjes.msg) everytime you return to root dialog node (Node007), making it seem like she's greeting you anew each time.

However, this is the same line that is displayed if the player talks to her any time after the first time (i.e. the herebefore flag is set) but before Doc Johnson successfully administers the Jet Antidote -- the "Hello there" makes sense only the context of an initial greeting.

There are several ways to fix this, but I think the simplest way is to remove the "Hello there" part of line 129. This way, it'll make sense whenever the player returns to Node007, and it'll still make sense as an initial greeting line to the player.

2. The "what" in line 174 of rcLou.msg should be "who".

3. There are a total of four kids in downtown Redding. If you engage them in combat, the game will tell you that you hit a "Townsperson" for three of them - a rather misleading name. For the last kid, Melchior Jr., the game will refer to him as a "Kid".

Fixing the problem for Melchior Jr. is easy enough: Changing entry 994 in scrname.msg from "Kid" to "Melchior Jr." will do it. However, the problem is a bit more complicated for the other three children:

They all use the script RCGenPes.ssl, which is shared by both adult males and females throughout all of Redding. Changing the corresponding entry in scrname.msg (791) will result in the adults being called "Kid" or "Child" (or whatever) as well.

The best way to resolve this is to give the other three Redding children a new and separate script (say, rcKid.ssl), and update the script.lst and scrname.msg files accordingly. It is not difficult to extract the code related to children from RCGenPes.ssl, as it is a relatively simple script, but see the next entry for a bug you should be aware of.

4. If you try to bring up a detailed description of critters that use the RCGenPes.ssl script, you may sometimes get "Error" as the description. Also, when you try to talk to them, nothing will happen (they are supposed to give out float messages). These two are outward symptoms of the same problem.

RCGenPes.ssl assigns detailed descriptions and float message options to a target critter only after procedure look_at_p_proc has been first run - a necessity since the script is applied to many different types of townspeople in Redding. Look_at_p_proc does this by defining two local variables that both description_p_proc and talk_p_proc uses without checking. Since look_at_p_proc is normally triggered on a mouseover, this is usually not a problem. However, the developers forgot that it is possible to mouseover a critter without the look_at_p_proc procedure being triggered. The easiest way to do this is to go in combat mode, activate the targeting cursor, move it over a critter that hasn't been moused over before, then exit targeting mode by either right-clicking or ending combat using keyboard shortcuts. If you now try to talk or bring up a detailed look, you will experience the symptoms described.

There are probably more efficient ways to do this, but the following three steps will fix the bug:

a) Place the code for assigning detailed description lookup and float message options out of look_at_p_proc and into a macro, say, "assign_personality". This should be everything but the last line of look_at_p_proc. Replace the code in look_at_p_proc with the name of the macro.

b) Add a call to the macro at the beginning of talk_p_proc, as thus:

Code:
procedure talk_p_proc begin
   assign_personality

c) Replace description_p_proc with the following:

Code:
procedure description_p_proc begin
   script_overrides;
   assign_personality
   display_msg(mstr(local_var(LVAR_Look_At)));
end


New Reno

1. You can walk over an ice box on 2nd floor of Desparado casino. The ice box in question is located in a closet of the room north of the staircase.

2. You can walk over the bowl (with pestle) in the Masticator's cage.

3. If you use a Lockpick to pick the locked doors in the Desparado basement or the second floor of Bishop's casino, you get a message saying "That does nothing." regardless of whether or not you succeed in your lockpicking attempt. The reason for this is that the script governing the behaviour of these doors, niBasDor.ssl, was not re-compiled with the changes in the updated ziMtlDor.ssl file. As a result of the lack of script_overrides, the "That does nothing." message appears. Recompiling niBasDor.ssl with the updated ziMtlDor.ssl should fix this bug.

4. If you ask Majorie Reed "Why? The Jet seems addictive enough already." (Node013 in ncResear.ssl) then you'll get an option to ask her "What's the deal with Redding?" for two consecutive dialogue nodes -- each giving you a different reply -- see nodes Node014 and Node015 for the details.

Looking at the actual content of the dialogue, the first "What's the deal with Redding?" (line 366) should probably be "Why the tight schedule?" (line 357) instead. This can be done by changing Node015 to the following:

Code:
procedure Node015 begin
   Reply(375);
   NOption(357, Node014, 004);
   NOption(377, Node999, 004);
end

5. Before Myron joins your party, when you ask him about the Mordino family he will say "They're my patrons. They're all right...I guess." (Line 1715) One of the possible responses is "Well what? Aren't they treating you all right?" (Line 1716 - See Node246 for details) The "Well what" part does not make sense -- I'm guessing the developers copied and pasted from the next dialoge node (Line 1486 in Node225 -- "Well what? Are they treating you all right?") and forgot to remove the "Well what". Line 1716 should simply be "Aren't they treating you all right?" or "'I guess?' Aren't they treating you all right?"

6. The "were" in line 696 of ncMason.msg should be "we're".

7. If you decide give 500 coins to McGee, you only really give 473 coins. This is because in ncMcGee.ssl, both procedure Node012 and the macro payoff_mcgee check for the value 473, and Node015 (which calls the macro payoff_mcgee) only has the player paying out 473.

In order to fix this, all references to "473" in both Node012 and Node015 needs to be changed to "500".

Optionally, macro payoff_mcgee can also be fixed to check for 500 instead of 473, but technically speaking this isn't needed to fix the bug.

8. If the player pisses McGee off to the point where he attacks the player, then the ending line 318 ("Let me show you...") is displayed. However, this only makes sense if you had stolen the hunting rifle from McGee prior to speaking with him. This can be fixed by creating a new line 319 "Uh oh..." (or something similar), and defining a macro similar to reply_w_rifle_check to display the correct line depending on the situation. For example, if we define the macro like the one given:

Code:
#define Option_w_rifle_check(x,y)         NOption(x+(obj_is_carrying_obj_pid(self_obj, PID_HUNTING_RIFLE), Node998, y);

Then we can change all instances of:

Code:
NOption(318, Node998, 001);

to:

Code:
Option_w_rifle_check(318, 001)

Though the "001" should really be "004" -- see my next point.

9. Dumb charcters make a rather intelligent reply of "All right then..." (line 428) to McGee when the old man tells them to get lost after they try to ask for permission to "play machine" (See Node020). Similarly, if McGee is provoked through dialogue to attack a dumb character, they respond with the rather intelligent sounding "Let me show you..." (Line 318), which even standing by itself is already suspect due to the bug just described in 6. A more suitable response is merited -- probably a few new lines need to be created for dumb characters.

10. While selecting a made man name or a boxing name, male characters can chose an obviously female alias, and vice versa. The reason for this is because the macros setup_set_made_man_name and setup_set_prizefighter_name simply do not take the player's gender into account (unlike setup_set_porn_star_name, which does take it into account).

However, in the list of names found in newr1.msg, female made man names are thoroughly mixed with male made man names and gender neutral made man names. A similar situation exists for the list of prizefighter names. Therefore, in order to fix this bug, a re-arrangement of the list of names and a change to the macros to take gender into account may be necessary.

11. Depending on the specific boxing name selected by the player, Stuart Little was supposed make some special comments -- all of them are references to Rocky, except for one single reference to Tyson. See Node031 in ncStulit.ssl for details.

Unfortunately, it appears that the order of the boxing names was changed after Node031 was scripted, so picking the special names no longer has the same effect, while picking some other innocent-looking name unexpectedly brings out the special comments. Since the order of names will probably change again if bug #10 is fixed, I'll simply list each special comment line found in ncStulit.msg and match it with the appropriate name and line found in newr1.msg. Once the final order of names is determined, Node031 in ncStulit.msg can be updated to match the names to the lines.
-> Line 500 - (The midget frowns.) Didn't he die against that Russian guy way back when? Aw, whatever. Shall we hit the ring? <-- Apollo (Creed) (Line 434 in newr1.msg)
-> Line 501 - (The midget smirks.) Looks like you and the "Masticator" will be getting along just fine. Just don't bite off too many ears. Well…shall we hit the ring? <-- (Mike) Tyson (Line 437 in newr1.msg)
-> Line 502 - (The midget smirks.) You don't look Russian. But whatever works for you…shall we hit the ring? <-- (Ivan) Drago (Line 439 in newr1.msg)
-> Line 503 - (The midget smirks.) "Pity the fo," huh? Well, okay…but let's hope YOUR career goes somewhere. Shall we head to the ring? <-- Clubber Lang (Line 440 in newr1.msg)
-> Line 504 - (The midget smirks.) Eye of the Tiger, huh? "Aaaydrian," "Aaaaydrian…" Heh-heh. I like it…lot of weight associated with it. Shall we head to the ring? <-- (Rocky) Balboa (Line 448 in newr1.msg)

12. The "Lightning " in line 430 of newr1.msg should be "Lightning" -- note the extra space the end. Of course, if fixing bug #10, then this line will probably need to be moved to somewhere else. Note that the corrections.txt claims to have fixed this...perhaps there has been a regression of some sort?

13. The "Masticators'" in line 1700 of newr1.msg should be "Masticator's" (misplaced apostrophe)

14. Currently in boxing, if either the player or the boxer gets a critical failure and misses a turn as a result, then the fight is called on a due to a KO (oops). The reason this is happening is because the check for both the player and the boxer's status is looking only for CRITTER_IS_DEAD and CRITTER_IS_PRONE.

Instead, the check should be done for critter_state(self_obj or dude_obj) bwand DAM_LOSE_TURN and setting a flag as appropriate. This should allow the player or the boxer to properly miss a turn due to a critical failure without losing the fight outright. See define.h for a complete list of damage types.

15. You if successfully trick T-Ray into thinking you are one of Bishop's lieutenants, your town reputation in Reno will increase (there's another bug that may prevent this from happening at all -- see the next entry for more details). However, judging by the name of the define (REP_NEW_RENO_NON_VIOLENT_CAR_RECOVER), this increase is suppose to only occur if you get the car back non-violently, and not for tricking T-Ray.

To correct this, the macro set_gave_car_exp in ncTRay.ssl needs to be changed to give the town reputation increase at the right place, as thus:

Code:
#define set_gave_car_exp               if (gave_car_exp == false) then begin                             

                                \
                                          display_mstr(1000);                                            

                                \
                                          inc_reno_rep(REP_NEW_RENO_NON_VIOLENT_CAR_RECOVER);            

                                \
                                          give_xp(EXP_NEW_RENO_RECOVER_CAR);                             

                                \
                                          if (((46 <= prev_node) and (prev_node <= 53)) and (dude_family != family_bishop)) then begin   \
                                             display_mstr(1001);                                         

                                \
                                             give_xp(EXP_NEW_RENO_RECOVER_CAR_BISHOP_BONUS);             

                                \
                                          end                                                            

                                \
                                       end                                                               

                                \
                                       set_lvar_bit_on(LVAR_Flags, gave_car_exp_bit)

16. You do not get the experience for getting your car back non-violently from T-Ray until you talk to him again. Moreover, if you managed to fool T-Ray into thinking you are one of Bishop's lieutenants, you may not necessarily get the experience reward for doing so. Also, if you kill off some of the chop shop boys, but not T-Ray, and then return and manage to get into a conversation with T-Ray without entering combat (i.e. sneak), you can gain experience for recovering the car "without using violence"! Note that this last bug can also be reproduced with the orginal v1.02D patch.

All of these bugs are symptoms of the same problem: In ncTray.ssl, the macro that rewards the necessary experience, set_gave_car_exp, is being called ONLY at the start of talk_p_proc -- I assume this was one of Seraph's changes, since the original version from v1.02D has the macro call both near the start and near the end of talk_p_proc. The reason for this seems to be the original developers' questionable decision to give the non-violent experience bonus for both recovering the car and driving away with it.

The macro call near the end of talk_p_proc would capture any peaceful attempts at recovering the car, as well as any Bishop related-trickery if employed, while the macro call near the beginning would capture the drive-away case. With the macro call near the end of talk_p_proc removed, it created the state of things as described above.

Therefore, three things need to be done to fix this bug:

a) In ncTRay.ssl, restore the macro call to set_gave_car_exp near the end of talk_p_proc, and remove the earlier call to prevent rewarding the player double the experience deserved.
b) Change the conditional check for calling set_gave_car_exp to stolen_car_recovered only (i.e. don't check for driving away in ncTRay.ssl)

After implementing a) and b), procedure talk_p_proc would look something like this:

Code:
procedure talk_p_proc begin
   hold_on := false;
   if (t_ray_max_fucked) then begin
      call Node999;
   end else begin
      move_obj_inven_to_obj(self_obj, new_reno_t_ray_box);
      move_obj_inven_to_obj(new_reno_t_ray_box, self_obj);
         if ((Fallout2_enclave_destroyed) and (get_stolen_car(stolen_car_recovered))) then begin
            start_dialog_at_node(Node033);
         end else begin
            start_dialog_at_node(Node006);
         end
      move_obj_inven_to_obj(self_obj, new_reno_t_ray_box);
      move_obj_inven_to_obj(new_reno_t_ray_box, self_obj);
      if (get_stolen_car(stolen_car_recovered)) then begin
        set_gave_car_exp;
      end
      set_herebefore;
      nr_add_timer_event_rand(self_obj, 25, 35, float_param);
      gdialog_set_barter_mod(0);
   end
end

c) In script zsDrvCar.ssl, award the experience for driving away right after setting the flag. So, the relevant part in procedure use_p_proc would look something like this:

Code:
         if (get_stolen_car(stolen_car_stolen)) then begin
            set_stolen_car(stolen_car_drive_away);
            display_msg(message_str(SCRIPT_NCTRAY, 1001));
            give_xp(EXP_NEW_RENO_RECOVER_CAR);
            inc_reno_rep(REP_NEW_RENO_NON_VIOLENT_CAR_RECOVER);
         end

17. T-Ray always acts as if you have never met him before when you talk to him, instead of the more appropriate "You again?" comment after your initial meeting. The reason for this bug is because the know_t_ray flag in ncTRay.ssl is being set in the wrong spot. To fix this, move set_know_t_ray to the proper place in procedure Node006, as thus:

Code:
procedure Node006 begin
   if (know_t_ray == false) then begin
      set_know_t_ray;
      Reply(275 + ((dude_is_female) and ((dude_is_pornstar) or (dude_charisma > 6))));
   end else begin
      Reply(277 + banged_t_ray);
   end

18. And yet another T-Ray bug/bad implementation report! The various container objects around T-Ray are being watched by him, and T-Ray will warn the player if he catches them trying to attempt anything on the sly. However, T-Ray uses the generic "Stay away from there." comment instead of the specialized lines found in his message file (Lines 940 to 951 in ncTRay.msg). The is not too surprising, considering that there is no code under timed_event_p_proc in T-Ray's script that has to do with watching the locker, and the watch script niTRyLk.ssl does not set up any timer events either.

To fix this, several things needs to be done to both ncTRay.ssl and niTRyLk.ssl.

a) In niTRyLk.ssl, remove the line "#define DO_CHECK_TAMPER_CONDITION (dude_is_made_man == false)" -- you want the script to "catch" the player all the time so that proper processing can occur.

b) In niTRyLk.ssl, add a define for the macro "genereral_caught_action" to override the default behaviour found in ziLocker.ssl -- yes, the developers apparently took spelling lessons with Bubbles the Chimpanzee. All this macro needs to do is to set up a timer event, which should look something like this:

Code:
#define genereral_caught_action            if (caught_tamper) then begin                                 

          \
                                              if (Fallout2_enclave_destroyed) then begin                 

          \
                                                 flush_add_timer_event(new_t_ray_obj, 0, 

tamper_good_CSObj_param); \
                                              end else if (dude_made_man == false) then begin            

          \
                                                 script_overrides;                                       

          \
                                                 flush_add_timer_event(new_t_ray_obj, 0, 

tamper_CSObj_param);      \
                                              end                                                        

          \
                                           end

, assuming that you have defined a new "tamper_CSObj_param" and "tamper_good_CSObj_param" in NewReno.h.

Of course, you can always "borrow" another param from the list found there, since T-Ray doesn't use most of them anyway.

c) In ncTRay.ssl, process the timed event. The processing for this should come right after the "combat_is_initialized == false" line. Call Node056 on tamper_good_CSObj_param, or Node057 on tamper_CSObj_param, or attack the player if Node057 has already been called once.

19. One of the stuff on the tables in the Chop Shop cannot be accessed. If we consider T-Ray's office to be in the north west corner of the Chop Shop, then the stuff in question is the one located closest to the north east corner. According to the Mapper, there is a rope that the player can loot, assuming that the player can escape the scrutiny of the nearby chop shop boyz, of course.


Broken Hills

1. If you tell Liz that she's a "crabby one" (Node008, Line 129), then she responds with "Hi. I'm Liz. What do you want?" (Node001, Line 103) instead of the more appropriate "Now what?" (Line 104). The reason is because Node001 checks to see if the player has been here before and has the WTG variable set, or came from Node007 in order to display line 104. This is needlessly complicated.

To fix this bug, remove all references to From_WTG and From_7 variables, set LVAR_Herebefore to 1 right after the displaying line 103 instead of , and make the condition for displaying Line 104 to simply check for LVAR_Herebefore equal to 1. So Node001 would look something like this:

Code:
procedure Node001 begin
   if( local_var(LVAR_Herebefore) == 1 ) then begin
      // Only display this Reply if we have already met Liz.
      Reply(104);
   end
   else begin
      set_local_var( LVAR_Herebefore, 1 );
      Reply(103);
   end

   if( dude_iq == 1 ) then
      NOption(105, Node002, 001);
   if( ( dude_iq == 2 ) or ( dude_iq == 3 ) ) then
      NOption(106,Node003,002);
   NOption(107,Node007,004);
   NOption(108,Node008,004);
   if ( check_general_rep <= -250) then
      NOption(109,Node009,004);
   if ( ( map_var(MVAR_Know_Liz_Guns) == 1 ) and ( map_var( MVAR_Basement_Permission ) == 0 ) ) then
      NOption(110,Node010,004);
   //if (global_var(GVAR_BH_JAIL) == JAIL_ENLISTED) then
//      NOption(111,Node010,004);
   NOption(112,Node999,004);
end

2. If you ask Liz for permission to access her basement, but do not agree to end the "mutants' domination", then Liz will claim that she got rid of her weapons -- a not-too-subtle hint to stay away from her arsenal. If you then persist in trying to enter the basement without sneaking or killing her, you won't be able to enter, but Liz does not warn you off either.

The reason this bug occurs is because procedure critter_p_proc triggers Liz's warning-the-player routine if MVAR_Basement_Permission is 0. But if you do not agree to end the "mutants' domination", MVAR_Basement_Permission is set to 2 instead, so Liz's warning-the-player routine does not get triggered. Additionally, since another script (hiManhol.ssl) only permits entry to the basement if MVAR_Basement_Permission is 1, the player gets into the situation where he isn't warned, but he isn't moved to the basement either.

The simplest fix here is to change critter_p_proc to check for MVAR_Basement_Permission == 2 in addition to 0, as thus:

Code:
  if( map_var(MVAR_Player_Tried_Basement) == 1 ) then begin
      set_map_var( MVAR_Player_Tried_Basement, 0 );
      if( (map_var( MVAR_Basement_Permission ) == 0) or (map_var( MVAR_Basement_Permission ) == 2) )then begin
         if( local_var(LVAR_Basement_Warning) == 0 ) then begin
            set_local_var(LVAR_Basement_Warning, 1);
            floater(179);
         end
         else if( local_var(LVAR_Basement_Warning) == 1 ) then begin
            set_local_var(LVAR_Basement_Warning, 2);
            floater(180);
         end
         else begin
            floater(181);
            call Node998;
         end
      end
   end

3. If you free Franc and Manson from the jail, accept the quest from Jacob to blow up the mine, then return to Jacob and change your mind, then try to talk to Franc, you can get very weird dialog. Basically, the dialogue box will open up, and the last dialog you saw from ANY critter will be displayed, with "Go on" as your only possible reply. Clicking on "Go on" exits the dialog, while clicking on the REVIEW button shows absolutely nothing. This is a rather serious bug, since Franc can potentially display dialogue belonging to any other critter out there, which may mean it's reading into old memory that it's not supposed to access (i.e. potential memory leak, though hopefully it's just an old variable they haven't re-initialized).

The cause of this bug seems to be found in procedure talk_p_proc in hcFrank.ssl. You have the following snippet of code in talk_p_proc:

Code:
   else if (global_var(GVAR_BH_CONSPIRACY) == CONSPIRACY_REJECTED) then begin
       start_gdialog(NAME,self_obj,4,-1,-1);
       gSay_Start;
           call Node011;
       gSay_End;
       end_dialogue;
   end

But Node011 is simply a floater (i.e. no true dialog):

Code:
procedure Node011 begin
   //Reply(137);
   //NOption(132,Node999,004);
   floater(137);
end

Apparently, the engine doesn't quite like this. ;) The fix is to simply call Node011 in talk_p_proc without invoking start_gdialog and its associated commands.

4. If the player leaves conversation with Dan immediately after it was started, then the next time the player talks to Dan, he'll ask the player whether or not he found his wife, despite the fact that the subject of the missing wife was never brought up. The problem is due to an erroneous conditional in procedure talk_p_proc:

Code:
   else if( ( local_var( LVAR_Herebefore ) == 1 ) or
            ( local_var( LVAR_Spouse_Status ) == SPOUSE_TOLD ) ) then begin

The OR conditional should be an AND conditional, which is probably the original intent of the developers. However, I think a better way to fix the bug is to make Dan ramble on anyway -- on a more technical level, make all NOptions in Node001 point to Node003. This is more in keeping with Dan's character -- he's so distracted that he ignores the player and rambles onward even if threatened with robbery, so why should he pay anymore attention if the player tries to say bye? :)

5. Dan does not give the promised $500 if the player initially rejects his offer but then reconsiders the decision (pick the grammatically awkward "Fine. Fine, just stop pestering me." line). What happens instead is that the conversation ends, and if the player tries to restart the conversation, Dan starts asking the player if his wife has been located. To fix this, Node007 should point to Node008 if the player changes his or her mind instead of simply ending the dialog, as thus:

Code:
procedure Node007 begin
   Reply(123);

   NOption(124, Node009, 004);
   NOption(125, Node008, 004);
end

6. As alluded to in bug #5, there are several minor text errors in hcDan.msg. I'll enumerate them one by one:
-> Line 116: Extra space between "ask," and "you"
-> Line 125: This should read "Fine! Fine! Just stop pestering me."
-> Lines 126, 129, and 144: Trailing whitespace at the end of the line.

7. After you persuade Dan to leave Broken Hills, he remains there forever, even though his float message suggests that he's getting out ASAP. This is because the code to remove him simply does not exist. Given how consistent the developers were in removing other critters who decide to move out, I'm inclined to think this is an oversight on their part and therefore a bug.

8. One of the entrances to the ant tunnels is through a manhole in the outhouse. The player can open the manhole and descend into the tunnels. However, the player can click and "use" the out edge of the manhole, and this will allow the player to go down without first removing the cover! Unfortunately, this seems to be an engine bug, so I'm not sure if much can be done about it.


Raiders

1. You can walk over the lootable skeleton found in the Raider caves, and you can walk over one out of the two lootable skeletons found in the Scorpion pits.


Random Encounters/Miscellaneous

1. As previously mentioned, a few of the critical comment messages are idiomatically and/or grammatically awkward -- mostly due lack/improper use of conjunctions and comma splices. I've quickly gone through combat.msg and highlighted the problematic lines.
-> Line 5000, 5100: "and really hurts" should be ". That really hurts"
-> Line 5007, 5107: ", death is instantaneous" should be ". Death is instantaneous"
-> Line 5017: " blowing through the armor" should be ", blowing through the armor"
-> Line 5020: " knocking the air out, he slumps to the ground out of the fight" should be ", knocking the air out. He slumps to the ground out of the fight"
-> Line 5022: " putting a major hurt on his leg" should be ", putting a major hurt on his leg"
-> Line 5027, 5127: " inflicting some extra pain" should be ", inflicting some extra pain"
-> Line 5028: " causing blindness, unluckily for him" should be ". Unluckily for him, it causes blindness"
-> Line 5029, 5129: ", and with no protection there, causing serious pain" should be ". With no protection there, it causes serious pain"
-> Line 5032: ", sadly, he is too busy feeling the rush of air on the brain to notice death approaching" should be ". Sadly, he is too busy feeling the rush of air on the brain to notice death approaching"
-> Line 5035: " and without protection, he falls over, groaning in agony" should be ". Without protection, he falls over, groaning in agony"
-> Line 5117: " piercing through her defenses" should be ", piercing through her defenses"
-> Line 5120: " knocking the air out, she slumps to the ground" should be ", knocking the air out. She slumps to the ground"
-> Line 5122: " putting a major hurt on her leg" should be ", putting a major hurt on her leg"
-> Line 5128: " causing blindness. She grimaces" should be ", causing blindness. She grimaces"
-> Line 5132: ", sadly, she doesn't get to pray to her gods before she meets them" should be ". Sadly, she doesn't get to pray to her gods before she meets them"
-> Line 5223: " causing blindness. The young child drops to the ground" should be ", causing blindness. The young child drops to the ground"
-> Line 5401: ". This blow buries this ghoul" should be ". This blow buries the ghoul"
-> Line 5501: ", the large mutant bovine stumbles for a moment" should be ". The large mutant bovine stumbles for a moment"
-> Line 5600: ", sending the Radscorpion flying on it's back" should be ", sending the Radscorpion flying on its back"
-> Line 5603: ", putting a major hurt on it's claws" should be ", putting a major hurt on it's claws"
-> Line 5608: ", sending the 'scorpion flying and crippling some of it's legs" should be ", sending the 'scorpion flying and crippling some of its legs"
-> Line 5800: ", the floater falls to the ground" should be ". The floater falls to the ground"
-> Line 5801: ", the floater falls to the ground, seemingly lifeless" should be ". The floater falls to the ground, seemingly lifeless"
-> Line 5802: ", with serious consequences to the creatures continued existence" should be ", with serious consequences to the creature's continued existence"
-> Line 5806: ", the blow causing some sort of violent reaction in the creature" should be ". The blow causing some sort of violent reaction in the creature"
-> Line 5808: " then it jerks wildly and quivers like a pudding surprise" should be ". It jerks wildly and quivers like a pudding surprise"
-> Line 5900: ", pushed like a bad habit, the centaur falls over and is stunned" should be ". Pushed like a bad habit, the centaur falls over and is stunned"
-> Line 5902: ", causing a massive neurological failure" should be ", causing massive neurological failure"
-> Line 5905: " striking a critical spot, and crippling the arm" should be ", striking a critical spot. The arm is crippled"
-> Line 6001: ", sparks fly and the robot goes momentarily out of control" should be ". Sparks fly and the robot goes momentarily out of control"
-> Line 6103: ", the animal coughs up a spurt of blood" should be ". The animal coughs up a spurt of blood"
-> Line 6201: ", which collapses" should be ". It collapses"
-> Line 6202: ". The manti ponders whether to continue living" should be ". The manti ponders whether or not to continue living"
-> Line 6204: ", causing the Manti to lick it's wounds. It holds the limb oddly" should be ", causing the manti to lick its wounds. It holds the limb oddly"
-> Line 6207: ", which causes the manti to fall over. A limb is bent at an odd shape" should be ", which causes the manti to fall over. A limb is bent at an odd angle"
-> Line 6405: ". almost tipping it over" should be ", almost tipping it over"
-> Line 6504: ", the shock makes your vision go dark. After a moment, you notice that your vision has not returned" should be ". The shock makes your vision go dark. After a moment, you notice that your vision has not returned"
-> Line 6519: ". Unlucky for you, it also causes immediate vision loss" should be ". Unluckily for you, it also causes immediate vision loss"
-> Line 6526: ". There are not enough words in the universe to describe the pain your are feeling at this moment" should be ". There are not enough words in the universe to describe the pain you are feeling at this moment"
-> Line 7105: ", causing him to pause and shake of your massive attack" should be ", causing him to pause and shake off your massive attack"

2. The player can walk over quite a few pots, bowls, and other things in many random maps. I've gone through each of them and tried to locate places where the player can go where one isn't supposed to go.
-> coast7.map, coast9.map, coast10.map, coast11.map, coast12.map: You can walk over almost all pots and bowls located on these maps.
-> coast8.map: You can walk over all bowls located on this map.
-> coast12.map: You can walk over the shelf located on this map.
-> desert6.map: The inner divider wall of the house has a hole in it. (The mapper actually shows two more holes, though I think they are inaccessible to the player. That being said, they should probably be patched anyway just in case.)
-> desrt12.map: The lettuce inside the house CANNOT be walked over. While this makes sense to me personally, all the other lettuce in the game allows the player to walk over them, so I see this as a bug.
-> dnslvrun.map: You can walk over one bowl in the east end of the map.
-> mountn4.map, mountn6.map: You can walk over the lootable crates located on these maps.
-> rndbhead.map: You can walk over the edges of the stone bench located close to the head.

3. I'm not sure if anything can be done about this, as it seems like the engine handles this part. Anyway, if a critter is wielding a weapon and has crippled limbs, and a player with the Awareness perk looks at it, you get a pretty weird message. For example, if Sulik is armed and crippled, and you examine him in detail, you may get a message like this: "He has 47/134 hps and is wielding a Wakizashi Blade.and has crippled limbs." Basically, lines 530 or 531 in proto.msg is being appended directly to the end of lines 546 or 547 in proto.msg. The ideal fix is to modify 546 and 547 not to end in a period, and to append line 545 if there is no crippled limbs, else append lines 544 and then 530 or 531 otherwise. But like I said before, I'm not sure if we can fix this through the script.

4. Sulik never seems to be able to level up to his sixth stage (PID = 16777531). At first, I thought that no other party members can reach their final form, but Cassidy can do so no problem. I've not played enough yet to see whether other party members with a sixth stage (Vic, Goris, Dogmeat) ever reach theirs, but I suspect not. This is probably an engine bug -- any chance that Timeslip can fix this?
 
Re: Bugs found in the lastest patch

I'm taking a few notes as well!

Haenlomal said:
14. Currently in boxing, if either the player or the boxer gets a critical failure and misses a turn as a result, then the fight is called on a due to a KO (oops). The reason this is happening is because the check for both the player and the boxer's status is looking only for CRITTER_IS_DEAD and CRITTER_IS_PRONE.

From the readme: "All boxing problems have been addressed. Critical failures count as a knockdown, this is not going to be changed."

8. One of the entrances to the ant tunnels is through a manhole in the outhouse. The player can open the manhole and descend into the tunnels. However, the player can click and "use" the out edge of the manhole, and this will allow the player to go down without first removing the cover! Unfortunately, this seems to be an engine bug, so I'm not sure if much can be done about it.

This would be the case with all manholes, then? Maybe there aren't that many in Fo2.
 
@Haenlomal

Wow, great list there. I shall go through it in the coming days and include them in my next patch update. Good timing too since I really want to make this next update the last.
 
Glad I can be of help, killap. :) Hopefully, more bugs will come in from me as I work through the game...I haven't been to NCR, San Francisco, Vaults 13 & 15, Navarro, the Military Base, and of course, the Enclave yet, so chances are I'll bump into something.

I also look forward to Per's list of bugs. Maybe even track down the causes of a few of 'em.

A quick update to New Reno bug #16: In addition to the changes I mentioned there, you will also need set stolen_car_stolen to stolen_car_drive_away whenever T-Ray or one of the chop shop boy turns hostile. If you don't do that, then it is theoretically possible to start combat, kill everyone, and get experience points for a non-violent resolution when you drive away with your car again!

-- The Haen.
 
Haenlomal said:
I also look forward to Per's list of bugs. Maybe even track down the causes of a few of 'em.

Oh, sorry, just meant that I was noting down a few of your bugs that might affect gameplay for eventual guide usage.
 
A very little bug I just found...

Hello killap,

I'm finally back from the land of dead. I hope that this time for good. I just found this little bug and wanted to let you know about it.

Arroyo, Aunt Morlis (ACMORLIS.MSG):
When you pass the speak-check (and get both flint and 50 exp. points), Morlis actually tells you:

Code:
{303}{}{Well... Oh, I'm sorry but I seem to have misplaced the flint. I wish you a safe journey though, child. }
instead of:
Code:
{154}{}{Well... Oh, very well. Here is the flint. I wish you a safe journey, child.

I don't have the scripting tools installed so I can't fix it myself (acmorlis.int). Sorry.
 
Nikki said:
I'm finally back from the land of dead. I hope that this time for good.
Hey, long time no chat. Hope everything is going well with you.

Nikki said:
I just found this little bug and wanted to let you know about it.
I think I have addressed this for the upcoming patch, but either way your post has reminded me to check. Thanks.


Okay, I've made it through the huge bug list by Haenlomal.

Haenlomal said:
GECKO:

2. When you talk to the front desk guard in the Gecko Reactor, there are some dialogue errors if the player asks for directions to the reactor pit. There are two lines in gcRDesk.msg that need to be changed in order to fix this:
-> line 150: "past the control room" should read "past the robot control room" to maintain consistency with rest of dialog
-> line 151: "Where’s the reactor control room?" should read "Where’s the robot control room?"
I'm not sure about this one.

To make it to the reactor pit, you pass a room with lots of computers and ghouls. Is this not the reactor control room? Next you pass Festus’ room, and then finally enter the robot control room. Am I correct in the understanding of where these rooms are? From the rest of the dialogue the player asks directions to another room based on a location said in the response. Thus, the desk ghoul told to go past the (reactor) control room to get to the reactor pit. The player then has the chance to ask where the this control room is. Thus I think line 151 should point to Node008 (the reactor control room node) rather than to Node009 (the robot control room node)

Ya?


Haenlomal said:
REDDING:

3. There are a total of four kids in downtown Redding. If you engage them in combat, the game will tell you that you hit a "Townsperson" for three of them - a rather misleading name.
I chose not address this. I did correct the Melchior Jr. oversight though.

Haenlomal said:
NEW RENO:

14. Currently in boxing, if either the player or the boxer gets a critical failure and misses a turn as a result, then the fight is called on a due to a KO (oops). The reason this is happening is because the check for both the player and the boxer's status is looking only for CRITTER_IS_DEAD and CRITTER_IS_PRONE.
Though I tire of the questions I get regarding this issue, I am going to side with Per. Apparently this is intended.

Haenlomal said:
NEW RENO:

10. While selecting a made man name or a boxing name, male characters can chose an obviously female alias, and vice versa. The reason for this is because the macros setup_set_made_man_name and setup_set_prizefighter_name simply do not take the player's gender into account (unlike setup_set_porn_star_name, which does take it into account).
I chose not to address this. I did fix the special boxing name bug with Stuart Little though.

Haenlomal said:
NEW RENO:

5. Before Myron joins your party, when you ask him about the Mordino family he will say "They're my patrons. They're all right...I guess." (Line 1715) One of the possible responses is "Well what? Aren't they treating you all right?" (Line 1716 - See Node246 for details) The "Well what" part does not make sense -- I'm guessing the developers copied and pasted from the next dialoge node (Line 1486 in Node225 -- "Well what? Are they treating you all right?") and forgot to remove the "Well what". Line 1716 should simply be "Aren't they treating you all right?" or "'I guess?' Aren't they treating you all right?"
I don't see a problem with this.
 
killap said:
Okay, I've made it through the huge bug list by Haenlomal.

Wow, out of all those bugs I submitted, you only had questions/rejected 5 of them? I was actually expecting a higher reject rate, so go me...or something like that. 8-)

killap said:
Haenlomal said:
GECKO:

2. When you talk to the front desk guard in the Gecko Reactor, there are some dialogue errors if the player asks for directions to the reactor pit. There are two lines in gcRDesk.msg that need to be changed in order to fix this:
-> line 150: "past the control room" should read "past the robot control room" to maintain consistency with rest of dialog
-> line 151: "Where’s the reactor control room?" should read "Where’s the robot control room?"
I'm not sure about this one.

To make it to the reactor pit, you pass a room with lots of computers and ghouls. Is this not the reactor control room? Next you pass Festus’ room, and then finally enter the robot control room. Am I correct in the understanding of where these rooms are? From the rest of the dialogue the player asks directions to another room based on a location said in the response. Thus, the desk ghoul told to go past the (reactor) control room to get to the reactor pit. The player then has the chance to ask where the this control room is. Thus I think line 151 should point to Node008 (the reactor control room node) rather than to Node009 (the robot control room node)

Ya?

Actually, I meant to say that we should change line 150 to read:

Code:
{150}{}{The reactor pit is just past the robot control room. But you’re going to need a Red Keycard to get in there.}

Note that all references to Festus' room is removed. Hopefully, the rest of my suggested changes make a bit more sense. The neat thing about doing this is that the player can sorta "chain" his or her questions in order, something along the lines of "Where is the reactor pit? Past the robot control room, you say? Well, where is that? Past the reactor control room? Really! Where is the reactor control room, then? Ah, I see! Thanks for your time."

Having said that, though, what you wrote is equally as valid, more conservative, and less work to boot. So go with which ever one you feel more comfortable. :)

killap said:
Haenlomal said:
NEW RENO:

5. Before Myron joins your party, when you ask him about the Mordino family he will say "They're my patrons. They're all right...I guess." (Line 1715) One of the possible responses is "Well what? Aren't they treating you all right?" (Line 1716 - See Node246 for details) The "Well what" part does not make sense -- I'm guessing the developers copied and pasted from the next dialoge node (Line 1486 in Node225 -- "Well what? Are they treating you all right?") and forgot to remove the "Well what". Line 1716 should simply be "Aren't they treating you all right?" or "'I guess?' Aren't they treating you all right?"
I don't see a problem with this.

My point was that the player's response to Myron, starting with a "Well what?", sounds a bit awkward given the player's interaction in Node225. Let me elaborate:

In Node225, this is the dialogue:

Myron: Pretty much. They give me whores, cash, drugs. My own lab. The creative freedom I need to make magic, but, well...no, naw, it's a good gig.
PC: Well what? Are they treating you right?

Note that the "Well what" is a reply to Myron's own words, so it makes sense in that context.

However, in the dialogue node I was talking about (Node246), the following conversation takes place:

Myron: They're my patrons. They're all right...I guess.
PC: Well what? Aren't they treating you all right?

Maybe it's just me, but the "Well what" part feels kinda out of place in this particular context and a bit awkward. Just truncating to "Aren't they treating you all right?" would fix that. If we want to be thematically consistent with the rest of the dialogue branch, we can change that to "I guess? Aren't they treating you all right?"

Hope this helps to clarify what I was saying.

More bugs/comments about the patch coming soon. :)

-- The Haen.

Edit: And here are some more bug reports/comments!

Broken Hills

1. In corrections.txt, you wrote: "Telling Marcus about the missing people will no longer cause him to send the conspirators to jail as if you completed the other quest." However, I think sending them to jail is by design, though due to the general weakness in Broken Hills dialog, the logical connections aren't as obvious as they are in some other places.

In the original v1.02D patch, you get some unique dialog from all four jailbirds if they are tossed into jail. I'll list them one by one:

Aileen: "We were set up! We didn't kill those people in the tunnels!" (Node009, Line 143)
Franc: "This ain't justice. You oughta be ashamed of yourself." (Node019, Line 151)
Jacob: "Now you can see how treacherous the mutants are. If only you had seen earlier." (Node065, Line 294)
Mason: "We wuz framed! We wuz framed!" (Node023, Line176)

The above suggests to me that somehow, there is some incriminating evidence on the bodies (left behind by Francis and Zaius) that implicates Aileen, Jacob, Manson, and Franc. It also matches what is written on Francis' note to Zaius. Marcus trusts Francis quite implicitly (Line 643 in hcMarcus.msg), so there is a strong implication that Francis had previously accused Jacob of something, but Marcus didn't do anything due to lack of evidence. With the missing bodies located, apparently they serve as the "evidence" needed to throw Jacob and his gang into jail.

Personally, I'd undo the fix. It is definitely the original developers' intent, and it makes sense storyline wise. That being said, there are obvious loopholes with the design. Maybe only send them to jail if Francis is still around to accuse them upon the discovery of the dead bodies -- perhaps the dialog and plot can be strengthened/enhanced in your Restoration mod?

2. If you ask Phil the bartender "What's there to do around here?" (Node018, Line 179), he says that you can arm-wrestle Francis even if you had previously beaten him or driven him out of town. Phil also claims that you can look for missing people or fix the mine purifier even if you had already done those things. The fix is to simply place the appropriate conditional checks before replying, skipping to the next node if necessary.

3. Similarly, if you ask Phil "What's been going on in town?" (Node018, Line 178), he'll claim the there a some "loons" in jail and the mine purifier being broken (Line 198), even if you had performed the jailbreak or fixed the purifier. Since Line 198 is fixed to say the same thing over and over, I think you'll need to create new lines that pieces together the relevant components of line 198, and display the appropriate text based on conditional checks.

4. If you had previously broken Franc and Manson out of jail, then double cross them and turn them in to Marcus after they tell you of their plans to blow up the mine purifier, they get tossed right back into jail (along with Aileen and Jacob). However, the jail doors remain unlocked (unless you somehow locked them before talking to Marcus), allowing you free access to them.

The cause of the bug is found in the script that handles the jail doors, hscrldr.ssl. This script sets the local variable LVAR_Locked to STATE_ACTIVE whenever the doors are locked by the player, and STATE_INACTIVE whenever the doors are unlocked by the player. When the player makes the jailbreak, the doors are set to STATE_INACTIVE (because the player has to unlock at least one of the doors to do the jailbreak). When Marcus throws the conspirators back into jail, he does lock the doors. However, Marcus' script has no way of updating LVAR_Locked in hscrldr.ssl. So the procedure map_update_p_proc detects that LVAR_Locked is still in STATE_INACTIVE, and automatically unlocks the door.

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.

5. The door in Marcus' house leading to his (very small) backyard does not have any door script attached to it. The same thing can be said of the door leading to the Professor's lab.


Gecko

1. Wooz does not have any inventory to sell, despite strong suggestions otherwise from Harold and himself. However, what his inventory is supposed to be is anyone's guess, so this may be more appropriate for the Restoration mod.


Navarro

1. You can walk over the three bowls located in the fenced off area just next to the sergeant's office.


New Reno

1. A comment about a previous T-Ray fix. In Node045, there was a BOption to a non-existent line 814. Therefore, the simplest fix was to remove this option altogether. However, given that this was supposed to call Node965, which is the same node that is called when the player selects line 794 in Node044, I think a better fix is to add line 814 to ncTRay.msg, which should read: "Mr. Bishop has made a GENEROUS offer of 900 chips. You won't like the next offer."

2. Another comment about another T-Ray fix. In Node049, there was a NOption call to line 857, which simply reads "(Leave.)". However, instead of leading to the expected Node999 to end the conversation, it led to Node048, which is called whenever the player demands free batteries from T-Ray. The fix that was made was to direct the option to Node999.

However, I'm not quite sure that was the original intent of the developers, given the conversation going on in Node049. In this node, T-Ray is offering to sell his batteries to the player's boss (Bishop), and I think the developers wanted to give the option to the player to intimidate T-Ray for free batteries with line 867 -- it fits with the rest of the theme -- but never got around to finishing it and/or fixing the bugs. Witness how bugged T-Ray originally was, even with the v1.02D patch.

Therefore, I would keep the fix, but also add the option to intimidate T-Ray, as thus:

Code:
procedure Node049 begin
   return_node := "Node049";
   Reply(865);
   NOption(866, Node980, 004);
   BOption(867, Node048, 004);
   NOption(857, Node999, 004);
   prev_node := 49;
end

Line 867 is non-existent in ncTRay.msg, but I'm thinking it'd look something like this: "I have a counter-offer. I will take the batteries for no charge, and Mr. Bishop will permit you to continue your operation here."

3. Another minor quibble with ncTRay.ssl: In Node042, there is a NOption call to line 774. However, given that this line is where the player forces T-Ray to give up the car for free, I'm more inclined to think that this should be a BOption call instead.

4. T-Ray does not wipe out his inventory, though he now restocks batteries. Actually, there is a script for restocking T-Ray (niTRyBox.ssl), and T-Ray even has a command to exchange his personal inventory with his box's inventory in talk_p_proc, just like any other shopkeeper. Problem is that the script niTRyBox.ssl isn't attached to anything on the map.

Therefore, create a locker or footlocker outside the visible range of the player, and attach niTRyBox to it. At the same time, remove the battery restocking code in ncTRay.ssl. This should allow T-Ray to sell only batteries to the player while at the same time easily purging any junk the player sells to him for the batteries.

5. Ideally, all sellers in New Reno should have their own box. More specifically, Jagged Jimmy J and the drug dealers do not replenish their supplies, and do not have their own boxes. I can kinda understand it for the drug dealers (they all share the same script, so it would take some work to give them all unique inventories -- maybe directly refresh their inventory without using a box), but if Jules has his own box, then at least Jagged Jimmy J should have one as well.

6. I'm not sure if this belongs in the unofficial patch, but I think there are some serious design bugs in boxing. At the very least, they may belong in your restoration mod. I'll list them here and leave the judgment call up to you.

a) Win or lose, the boxer object the player fights against is destroyed at the end of the match. While this may be working as the developers intended (though I have my doubts about that -- see the next paragraph), permitting this state of things allows for some very big exploits. For example, for the last round with the Masticator, the player can deliberately DQ himself or herself by kicking his opponent. Since the Masticator is destroyed after the match, the player then gets to fight a much easier opponent to win the title. This is such a big exploit that I look at it as a design bug.

In general, I think that the boxers should not be destroyed at all, unless the player kills them in the match. In that case, and if the fatal blow was also the disqualifying blow, then the player should fight against the replacement. 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. These float messages obviously cannot be seen if each boxer is destroyed even if they survived the match, so it seems to me that they were meant to stick around.

b) The bonuses to the player's damage resistances currently come at the beginning of each match. While this may be the intention of the developers, I feel that it creates a serious exploit, because the player can deliberately throw a match just to gain more bonuses. Instead, the bonuses should be awarded at the conclusion of a winning bout. This will prevent players from deliberately throwing a game -- you should get absolutely no reward for losing a match!

c) Joqq, the first fighter, is considerably stronger than Pete McKneely. If we really want the player to go from easiest to hardest, then perhaps those two should be switched around. Even Pete's description suggests this. Then again, perhaps this was the original developers' attempt at some humor, so... *shrug*

d) Line 101 in ncMcKnee.msg reads: "You see Pete "The Hurricaine" McKneely." I'm pretty sure they meant "Hurricane". :)

e) If 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. Originally, it is suppose to mention that "You have defeated the Masticator!" before becoming the champion -- it makes sense to dethrone the reigning champ, after all, before you earn the title for yourself. To me at least, it seems pretty clear that the developers had intended for the player to beat the Masticator before becoming the Heavyweight Champion of Northern California.

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!

f) When you are fighter the boxer in the ring, the game engine refers to them as "Boxer" instead of their name. The reason for this is because the script creates the proper boxing critter pid for each match, but assigns the generic ncPrzFtr.ssl script to them. This translates to the scrname.msg entry 1188, which is "Boxer".

Instead of creating a special critter, why not simply update the scripts for McNeely, Holyfeld, and the Masticator with the fight routines found in ncPrzFtr.ssl (should be simple cut-and-paste for the most part), and move the appropriate critters over when it is their turn? I understand that this cannot be done for Joqq, but it should be feasible enough for the others.


Random Encounters/Miscellaneous

1. When you beat your enemies in combat, you get a message like the following: "For slaying your opponents, you earn 200 experience points." Note the extra space between "opponents," and "you".

The cause of this problem can be traced to proto.msg. When you win a fight, lines 622-625 (626 also possible if you didn't get hurt in combat) are substituted in for the "%s" variable found in line 621. Since there is a space right after the "%s" in line 621, and since 622-626 all end in a space, this results in an extra space being printed out.

The simplest fix is simply to remove the extra space after the "%s" in line 621, but the resulting "%syou earn %d experience points." can cause some intial confusion if someone is going over the work again. Therefore, a fix with readability in mind would be to remove the trailing space for 622-626. Go with whichever is more comfortable for you.

2. Line 624 in proto.msg reads: "You are victorious in combat, ", which is a complete sentence ending with a comma (oops). This should be changed to: "For being victorious in combat,"

3. Since you say in corrections.txt you are trying to standardize the experience gain message, line 621 in proto.msg should be changed to read: "%s you gain %d experience points."

Edit: In Broken Hills problem #1, I just noticed that my quote of Manson's line is messed up...is this something that this board does automatically? :P Anyway, you can look up the line yourself to see what I mean.
 
Back
Top