Bug: New Reno: Car Trunk Upgrade

VicTT

First time out of the vault
I am running the last version of RP (2.2).
After getting my car stolen in New Reno, I went to the Chop Shop to get it back. I got 3x750 XP for: getting the car peacefully, tricking T-Ray and getting batteries. The problem is that after this, but before actually driving off with the car, I talked to T-Ray about the upgrade. I gave him 500$ to upgrade the car trunk, but the car trunk is not upgraded (most likely due to a bug).
Question is: Is there any way I can edit my savegame to hack-in the car trunk upgrade I should have gotten?
P.S. Reloading is not a solution; I stupidly quicksaved after getting the 3x750 XP and my last save is 2+ months ago.
Thank you in advance, and kindly help!
 
Quick update: I don't know most of anything about Fallout 2 Modding, reason for which I don't have any tools installed, nor know how to use them, BUT after loading my savegame in F2se (found it on the forum), I noticed GVAR 455.
Can anybody confirm that 455:GVAR_NEW_RENO_CAR_UPGRADE should be 1 if one gets the car trunk upgrade? Should it be something else?
Is there any point to uploading my savegame so that someone can have a look at it and figure out why I don't have the trunk upgrade?
 
Unfortunately changing that variable won't do anything, it's only used to show you got the upgrade. The script increases the trunk capacity with a special function call that I would guess swaps out the trunk container object for another, so I doubt a regular save game editor can do this.
 
So how would I begin to fix this? I'm willing to go to mostly any lengths to do so.
Is there any way to call the function from within the game? Can the function be called twice without any ill behaviour happening? (Maybe the dialogue script could be patched so that the function gets called during/after talking to T-Ray?)
Any help at all would be much appreciated.
Idea[2]: How about switching the containers some other way?
 
Well, the nctray.ssl script does this:

Code:
   set_super_car;

which is defined in newreno.h as this:

Code:
#define set_super_car                                 if (get_super_car == false) then begin                   \
                                                         set_car_carry_amount((110*car_carry_amount) / 100);   \
                                                      end                                                      \
                                                      set_global_var(GVAR_NEW_RENO_CAR_UPGRADE, 1)

and that's defined in define.h as this:

Code:
#define DEFINE_METARULE_SET_CAR_CARRY_AMOUNT 52
#define set_car_carry_amount(VALUE)   metarule(DEFINE_METARULE_SET_CAR_CARRY_AMOUNT, VALUE)

The trunk's original capacity is 250. I haven't done this myself, but it's possible you could take some innocent item script like a holodisk, add the line "metarule(52, 275);" to it, compile, put in an override folder, load your game, make sure you're on the same map as your car, and use the item. You'd have to ask someone else for the details.

Edit: I don't think switching containers will do it as the trunk is kind of treated as an NPC. It gets created and removed on maps as you move around. I'm not super sure, though.
 
THANKS! I kept trying to reverse-engineer nctray.ssl (decompiled from the original override version: learned a bit about scripting too :P), but I was missing newreno.h and define.h. Where did you get those and the original .ssl's (the override versions, not the ones that come with the official Fallout 2 Mapper)?
I kept working backwards from the .MSG and dialog rules, but I guess I was missing a few relevant pieces. Thanks again! Who do you reckon I should ask?
EDIT: Since I don't (yet) have the .h's available, can you confirm that VALUE is indeed 275, and not 500?
 
All the headers and original scripts come with the official Mapper.
There's also updated scripts available in the download section.

I'm pretty sure you can just edit the proto file for the car trunk directly instead. Might be easier.

I'm on vacation now and writing from my phone, so can't help much at the moment.

Is it possible to edit the car trunk proto with F2se? I mean is it listed with the other party members?

Otherwise you would have to extract the proto from the items folder in your save slot. It's gzip format and should be available in the download section as well.
Then look at proto file format in the wiki page named something similar. Use a hex editor to change the container value and compress the file back again.

Give it a try and keep a backup if you are unsure how to to it.
 
Found the headers (HEADERS dir, Doh!).
I didn't have any holodisks handy, so I picked the only other thing in my inventory that can be "used", which is Anna's Diary:
I couldn't get it to work without including Den.h, the other includes were added by Fallout Script Editor when I did Convert script noID->Iplay (I think):
#include "C:\Fallout2scr\Fallout 2 Mapper\scripts\HEADERS\define.h"
#include "C:\Fallout2scr\Fallout 2 Mapper\scripts\HEADERS\Den.h"

#define NAME SCRIPT_DIDIARY //Script name from scripts.h
#define TOWN_REP_VAR GVAR_TOWN_REP_ //Global variable name for this Town

#include "C:\Fallout2scr\Fallout 2 Mapper\scripts\HEADERS\command.h"
#include "C:\Fallout2scr\Fallout 2 Mapper\scripts\HEADERS\ModReact.h"
#include "C:\Fallout2scr\Fallout 2 Mapper\scripts\HEADERS\partybkg.h"

#define LVAR_Herebefore (4)
#define LVAR_Hostile (5)
#define LVAR_Personal_Enemy (6)
The piece of code is here:
procedure use_p_proc
begin
script_overrides;
metarule(52,275); //added by me
if (global_var(GVAR_PIP_BOY_ANNA_DIARY)) then
display_msg(message_str(SCRIPT_DIDIARY, 102));
else
begin
set_global_var(GVAR_PIP_BOY_ANNA_DIARY, 1);
display_msg(message_str(SCRIPT_DIDIARY, 101));
give_exp_points(100);
display_msg(message_str(SCRIPT_GENERIC, 100) + 100 + message_str(SCRIPT_GENERIC, 101));
end
end
Problem is, whether I put 275 or 500 in there, when I use it, I get the "That does nothing." message and, indeed, nothing happens.
Should I put it in start? Is it, for some reason hardcoded to only work in the Den?
I'm obviously going to try all variations of the above; I'm just kinda thinking out loud here. Per, good sir?
 
The message might just be related to the book's usual function (is it added by the RP?). Did you try cramming the trunk to capacity and then putting in something more after doing this?

Darek's suggestion to edit the proto file may be simple and sound. Look in the proto/items folder in your save to find 00000455.pro. Back up and then use some hex editor to change:

FD 0B to 5F 18 at position 2E

D3 8F C8 AD to D8 F9 50 43 at position 33

I don't know what each byte means but these are the differences I can see in my own saves.
 
Not yet..

The book is added by the RP, but the message "That does nothing." is not output by the script (cross-referenced with .msg file, does not contain the string).
Your 00000455.pro does not match my 00000455.pro.
2E->2F:C4BF
33->36:F63030
neither of which match anything.
I'm stumped. Here's an archive of my savefile..Take a look for yourself.
This is so messed up.
http://www.girlshare.ro/32739154.8
 
One reason for the proto values not matching could be if one of you have extracted the proto and the other did not. Remember the protos in the save folder is compressed with gzip. With an unpacked 455.proto the offset to edit should be 0x0039, if I understood it correctly.
I can have a look yat it on Thursday or Friday if no one has fixed it before that.
 
Unpacked proto offset mismatch

Darek said:
One reason for the proto values not matching could be if one of you have extracted the proto and the other did not. Remember the protos in the save folder is compressed with gzip. With an unpacked 455.proto the offset to edit should be 0x0039, if I understood it correctly.
I can have a look yat it on Thursday or Friday if no one has fixed it before that.
I hadn't unpacked the proto prior to checking offsets, but after doing so, it is clear that it doesn't match either:
UNPACKED PROTO HEX DUMP:
(65 bytes, debug.com output)
185F:0100 00 00 01 C7 00 00 B1 BC-00 00 00 AA 00 00 00 00
185F:0110 00 00 00 00 A0 00 10 00-00 00 20 00 FF FF FF FF
185F:0120 00 00 00 01 00 00 00 01-00 00 00 01 00 00 00 0A
185F:0130 00 00 00 00 07 00 00 00-30 00 00 00 FA 00 00 00
185F:0140 00
What now?
EDIT: Would it be the same thing if I used F2wedit to edit 455.proto to update container max size from 250 to 275? As I understand, the files are extracted from master.dat, then modified, and repacked. I see a few issues:
1) It doesn't modifiy proto's from savegames, and there is no option to select a file. It only extracts from master.dat, modifies and repacks.
2) Wouldn't the new size apply to ALL games from now on, not just my current savegame? (Applying the Car Trunk upgrade from the beginning instead of getting it in New Reno?)
3) Does the savegame proto take precedence over the default master.dat proto? I don't know how this works. Is the savegame proto a sort of override, like the scripts in the data\scripts folder?
EDIT2: I downloaded GZIP 1.24. When repacking the proto's after modifying them, which command-line switch should I use? -1? -6? -9? Can Fallout 2 extract them regardless of compression switches?
 
Darek said:
One reason for the proto values not matching could be if one of you have extracted the proto and the other did not.

Yeah, I'm talking about the packed proto in the save folder, which should be the one to edit. That explains why the nice FA byte in the unpacked proto wasn't present in the save file.
 
Back
Top