Fallout 1 mod FO1 to FO2 conversion, for real

Status
Not open for further replies.
Sduibek said:
Hmm good point.

Although I insist that increase skill costs is made optional. The skill checks in Fallout are stupid so having increased costs doesn't make sense.

That's easy enough to do anyway with sfall, so don't really object on that point.

So what changes in Sfall need to be made, then? Most of what I said in the previous posts still applies since I'm pretty sure fallout 2 added a bunch of new perks and changed derived stats.

Don't think it changed derived stats (at least, just went through the wiki and couldn't find anything). Perks... Flower Child's addiction stuff can be done through modifying proto data with sfall scripts... withdrawal rate I'm not sure how you'd do that. Animal friend would be tough. I'm pretty sure hostility gets triggered through local vars, so that takes sfall out of the picture. You'd have to go through every single animal script.

Other than that shouldn't be too hard.
 
Oh, also party members Ian Tycho Katja Dogmeat need to be added to the files for the new party member system. Forgot about that. I think there's a tutorial somewhere on here for adding party members.
 
Heh, I think you're thinking of the "tutorial" I made a long time ago (pretty sure there isn't any other party member adding tutorial). It's in the tutorial sticky. Just doesn't cover the whole adding to the master.dat thing.
 
What are AIBDYMSG.TXT and AIGENMSG.TXT used for? They are located in Fallout2/DATA/DATA

AIBYDMSG:
[spoiler:d0ad159434][Berserk Person]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=4
right_arm_end=29
right_leg_end=69
start_block=1300
torso_end=59

[Boxer]
eyes_end=82
groin_end=92
head_end=2
left_arm_end=11
left_leg_end=71
packet_num=26
right_arm_end=21
right_leg_end=61
start_block=18000
torso_end=35

[Cassidy]
eyes_end=86
groin_end=99
head_end=7
left_arm_end=18
left_leg_end=77
packet_num=24
right_arm_end=28
right_leg_end=67
start_block=40800
torso_end=59

[Elron]
eyes_end=82
groin_end=95
head_end=2
left_arm_end=12
left_leg_end=72
packet_num=13
right_arm_end=22
right_leg_end=62
start_block=32700
torso_end=36

[Gangster]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=22
right_arm_end=29
right_leg_end=69
start_block=12400
torso_end=59

[Ghoul]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=8
right_arm_end=29
right_leg_end=69
start_block=1600
torso_end=39

[Goris]
eyes_end=84
groin_end=94
head_end=4
left_arm_end=14
left_leg_end=74
packet_num=20
right_arm_end=24
right_leg_end=64
start_block=44800
torso_end=49

[Junkie]
eyes_end=82
groin_end=98
head_end=4
left_arm_end=13
left_leg_end=72
packet_num=10
right_arm_end=23
right_leg_end=62
start_block=1800
torso_end=37

[Kaga]
eyes_end=82
groin_end=95
head_end=2
left_arm_end=12
left_leg_end=72
packet_num=15
right_arm_end=22
right_leg_end=62
start_block=36000
torso_end=35

[Lenny]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=21
right_arm_end=29
right_leg_end=69
start_block=41200
torso_end=59

[Marcus]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=25
right_arm_end=29
right_leg_end=69
start_block=41600
torso_end=59

[Myron]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=17
left_leg_end=78
packet_num=23
right_arm_end=27
right_leg_end=68
start_block=42000
torso_end=58

[None]
eyes_end=80
groin_end=90
head_end=0
left_arm_end=10
left_leg_end=70
packet_num=27
right_arm_end=20
right_leg_end=60
start_block=50000
torso_end=30

[Normal Person]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=1
right_arm_end=29
right_leg_end=69
start_block=1100
torso_end=59

[Primitive]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=7
right_arm_end=29
right_leg_end=69
start_block=1500
torso_end=59

[Punk (SF)]
eyes_end=82
groin_end=95
head_end=2
left_arm_end=12
left_leg_end=72
packet_num=14
right_arm_end=22
right_leg_end=62
start_block=33200
torso_end=36

[Raider (Khan)]
eyes_end=83
groin_end=96
head_end=9
left_arm_end=12
left_leg_end=73
packet_num=9
right_arm_end=22
right_leg_end=63
start_block=1700
torso_end=35

[Raider (Non-Khan)]
eyes_end=82
groin_end=96
head_end=3
left_arm_end=12
left_leg_end=73
packet_num=11
right_arm_end=22
right_leg_end=63
start_block=12300
torso_end=35

[Robo Brain (Chimp/Ab)]
eyes_end=80
groin_end=90
head_end=0
left_arm_end=10
left_leg_end=70
packet_num=18
right_arm_end=20
right_leg_end=60
start_block=44000
torso_end=30

[Robo Brain (Hum/Cyb)]
eyes_end=83
groin_end=92
head_end=8
left_arm_end=13
left_leg_end=73
packet_num=19
right_arm_end=23
right_leg_end=63
start_block=44400
torso_end=39

[Robot]
eyes_end=82
groin_end=92
head_end=2
left_arm_end=12
left_leg_end=72
packet_num=6
right_arm_end=22
right_leg_end=62
start_block=1400
torso_end=39

[Shi]
eyes_end=82
groin_end=95
head_end=2
left_arm_end=12
left_leg_end=72
packet_num=12
right_arm_end=22
right_leg_end=62
start_block=32000
torso_end=36

[Sulik]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=17
right_arm_end=29
right_leg_end=69
start_block=40000
torso_end=59

[Super Mutant (Master Army)]
eyes_end=82
groin_end=95
head_end=2
left_arm_end=12
left_leg_end=72
packet_num=16
right_arm_end=22
right_leg_end=62
start_block=36600
torso_end=45

[Tough Person]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=2
right_arm_end=29
right_leg_end=69
start_block=1200
torso_end=59

[Wimpy Person]
eyes_end=89
groin_end=99
head_end=9
left_arm_end=19
left_leg_end=79
packet_num=0
right_arm_end=29
right_leg_end=69
start_block=1000
torso_end=59

[/spoiler:d0ad159434]

AIGENMSG:
[spoiler:d0ad159434][Badger]
attack_end=48
missed_end=65
move_end=28
packet_num=20
run_end=5
start_block=32400

[Berserk Person]
attack_end=59
missed_end=72
move_end=39
packet_num=4
run_end=19
start_block=2300

[Bounty Hunter]
attack_end=59
missed_end=79
move_end=39
packet_num=32
run_end=19
start_block=36800

[Boxer]
attack_end=54
missed_end=77
move_end=27
packet_num=43
run_end=7
start_block=18100

[Cassidy]
attack_end=59
missed_end=79
move_end=29
packet_num=39
run_end=12
start_block=40900

[Chip]
attack_end=48
missed_end=65
move_end=25
packet_num=19
run_end=5
start_block=32300

[Crazed Robot]
attack_end=59
missed_end=60
move_end=39
packet_num=41
run_end=0
start_block=10100

[Cyberdog]
attack_end=41
missed_end=60
move_end=20
packet_num=46
run_end=0
start_block=60000

[Dragon (The)]
attack_end=49
missed_end=65
move_end=28
packet_num=17
run_end=5
start_block=32100

[Elron Guards]
attack_end=47
missed_end=65
move_end=28
packet_num=23
run_end=5
start_block=32800

[Gangster]
attack_end=49
missed_end=66
move_end=28
packet_num=14
run_end=5
start_block=12200

[Ghoul]
attack_end=59
missed_end=79
move_end=39
packet_num=10
run_end=19
start_block=3100

[Goris]
attack_end=59
missed_end=79
move_end=39
packet_num=36
run_end=9
start_block=44900

[Guard (Normal)]
attack_end=49
missed_end=65
move_end=27
packet_num=3
run_end=5
start_block=2400

[Guard (Tough)]
attack_end=52
missed_end=65
move_end=25
packet_num=5
run_end=5
start_block=2500

[Junkie]
attack_end=46
missed_end=65
move_end=26
packet_num=11
run_end=5
start_block=3200

[Kaga (1)]
attack_end=48
missed_end=65
move_end=24
packet_num=26
run_end=5
start_block=36100

[Kaga (2)]
attack_end=49
missed_end=65
move_end=23
packet_num=27
run_end=5
start_block=36200

[Kaga (3)]
attack_end=48
missed_end=65
move_end=23
packet_num=28
run_end=5
start_block=36300

[Kaga (4)]
attack_end=49
missed_end=65
move_end=23
packet_num=29
run_end=5
start_block=36400

[Kaga (5)]
attack_end=48
missed_end=65
move_end=23
packet_num=30
run_end=0
start_block=36500

[Khan (Normal)]
attack_end=50
missed_end=60
move_end=25
packet_num=15
run_end=5
start_block=26000

[Khan (Tough)]
attack_end=49
missed_end=66
move_end=26
packet_num=16
run_end=5
start_block=26100

[Lenny]
attack_end=59
missed_end=79
move_end=39
packet_num=37
run_end=19
start_block=41300

[Lo Pan]
attack_end=49
missed_end=65
move_end=28
packet_num=18
run_end=5
start_block=32200

[Marcus]
attack_end=59
missed_end=79
move_end=39
packet_num=42
run_end=19
start_block=41700

[Myron]
attack_end=59
missed_end=77
move_end=33
packet_num=38
run_end=17
start_block=42100

[None]
attack_end=40
missed_end=60
move_end=20
packet_num=45
run_end=0
start_block=50100

[Normal Person]
attack_end=59
missed_end=72
move_end=39
packet_num=1
run_end=19
start_block=2100

[OZ-7]
attack_end=49
missed_end=65
move_end=28
packet_num=25
run_end=5
start_block=33100

[OZ-9]
attack_end=45
missed_end=64
move_end=28
packet_num=24
run_end=5
start_block=33000

[Primitive]
attack_end=51
missed_end=69
move_end=29
packet_num=6
run_end=6
start_block=2600

[Raider]
attack_end=50
missed_end=64
move_end=25
packet_num=8
run_end=5
start_block=2900

[Raider Captain]
attack_end=49
missed_end=65
move_end=25
packet_num=13
run_end=5
start_block=12100

[Raider Mercs]
attack_end=49
missed_end=65
move_end=38
packet_num=12
run_end=6
start_block=12000

[Rat God]
attack_end=58
missed_end=60
move_end=38
packet_num=40
run_end=0
start_block=10000

[Robo Brain (Chimp/Ab)]
attack_end=0
missed_end=0
move_end=0
packet_num=34
run_end=2
start_block=44100

[Robo Brain (Hum/Cyb)]
attack_end=49
missed_end=66
move_end=28
packet_num=35
run_end=7
start_block=44500

[Robot]
attack_end=49
missed_end=65
move_end=25
packet_num=9
run_end=5
start_block=3000

[Ryan]
attack_end=49
missed_end=65
move_end=26
packet_num=21
run_end=5
start_block=32500

[Shi Guards]
attack_end=49
missed_end=65
move_end=26
packet_num=22
run_end=4
start_block=32600

[Soldier]
attack_end=49
missed_end=65
move_end=27
packet_num=7
run_end=5
start_block=2700

[Sulik]
attack_end=59
missed_end=79
move_end=39
packet_num=33
run_end=19
start_block=40100

[Super Mutant (Master Army)]
attack_end=49
missed_end=65
move_end=27
packet_num=31
run_end=5
start_block=36700

[The Brain]
attack_end=49
missed_end=69
move_end=29
packet_num=44
run_end=9
start_block=14000

[Tough Person]
attack_end=59
missed_end=72
move_end=39
packet_num=2
run_end=19
start_block=2200

[Wimpy Person]
attack_end=59
missed_end=79
move_end=39
packet_num=0
run_end=19
start_block=2000
Also it looks like maybe party members work OK, all that's missing in the current setup is the Wimpy/Aggressive/etc modes, which is whatever, those can stay missing for now. I just want a release out so people can test it.

Also also, I want to get the full list of city names in one list without having to scroll. Scrolling for only like 13 cities is retarded. How do I change that so it works like Fallout 1 did?
 
Last edited:
When dealing with AI, it's useful to always check here:

body_type = string

Defines the block of messages that critters say in response to being hit. The blocks are from master.dat/data/AIBDYMSG.TXT, which in turn refers to lines in combatai.msg .

So the reference goes from AI.txt to AIBDYMSG.txt to combatai.msg. Quite a lovely train.

The other one does something similar:

general_type = string

Defines the block of combat taunts that the critter periodically shouts during a battle (attack, retreat, miss). The blocks are in master.dat/data/AIGENMSG.TXT, and refer to lines in combatai.msg .
 
Why don't they just have it refer directly to combatai.msg like Fallout 1 does? Seems like an unnecessary middleman to me. Woooo!

And whew, adding all those extra fields to AI.TXT is going to be more time-intensive than I'd thought; I forgot that many of them I'll have to basically just use my best guess, so there's the extra time of determining that.

EDIT: Wait, you could just set body_type to None and then it would use the entries directly from AI for that AIpacket, right? The start/end numbers that each packet already has:
hit_eyes_end=
hit_eyes_start=
hit_groin_end=
hit_groin_start=
hit_head_end=
hit_head_start=
hit_left_arm_end=
hit_left_arm_start=
hit_left_leg_end=
hit_left_leg_start=
hit_right_arm_end=
hit_right_arm_start=
hit_right_leg_end=
hit_right_leg_start=
hit_torso_end=
hit_torso_start=
 
you could probably do that, the system FO2 uses is more efficient though. But most of those AI packets are generic anyway, so just assigning them in the scripts would be enough. Right?
 
JimTheDinosaur said:
you could probably do that, the system FO2 uses is more efficient though. But most of those AI packets are generic anyway, so just assigning them in the scripts would be enough. Right?
Yeah I think I can leave all scripts the same.

I was figuring I'd just start with FO1's AI.TXT and add the new entries that FO2 uses, to each packet. I don't see why that wouldn't work.

It's about 100 packets but won't take a huge amount of time, maybe a day. (that estimate includes time for testing)
 
Thanks.

I have to go through all the posts and my files, make sure I'm not duplicating any work, so progress will be pretty slow for a while.
 
I need to know if any readings of the global variables are hard-coded. For example if I just copy over my Vault13.gam from Fallout 1, assuming I update any applicable .txt files?

I'm basically asking, are there GVARs that Fallout2.exe references in a hard-coded fashion, the GVAR# they are referencing cannot be changed via a particular .txt file?

Jordan's conversion started the original Falout 1 GVARs at 1000, so GVARs 0 to 999 were left as "GVAR_RESERVED" for the most part. I need to know if this is a required step. Currently I assume it's not but I have no idea.

It looks like maybe addictions are hard-coded to reference certain GVARs :shrug:

I don't know if it's better to make everything reference numbers beyond Fallout2's default variables, or to convert everything so that it references that variable numbers that I was already using in Fallout1 FIXT.
 
Did some windows grepping, and these are the gvars that don't get set or read anywhere in the scripts. So either they're placeholders or they're hardcoded:

Code:
GVAR_NUKA_COLA_ADDICT                   :=0;    //      (21)
GVAR_BUFF_OUT_ADDICT                    :=0;    //      (22)
GVAR_MENTATS_ADDICT                     :=0;    //      (23)
GVAR_PSYCHO_ADDICT                      :=0;    //      (24)
GVAR_RADAWAY_ADDICT                     :=0;    //      (25)
GVAR_ALCOHOL_ADDICT                     :=0;    //      (26)
GVAR_RUNNING_BURNING_GUY                :=0;    //      (28)
GVAR_ADDICT_TRAGIC                      :=0;    //      (295)
GVAR_ADDICT_JET                         :=0;    //      (296)

These ones get set (or at least can get set), but don't get read, so maybe only the reading is hardcoded (or they're placeholders, again), but even that might cause problems (not sure though, don't know anything about hardcoded stuff):

Code:
GVAR_HOLODISK_SIERRA_EVACUATION         :=0;    //      (164)
GVAR_HOLODISK_SIERRA_MED_LOG            :=0;    //      (165)
GVAR_HOLODISK_SIERRA_EXP_LOG            :=0;    //      (166)
GVAR_HOLODISK_MB_OUTSIDE                :=0;    //      (220)
GVAR_HOLODISK_MB_LEVEL_1                :=0;    //      (221)
GVAR_HOLODISK_MB_LEVEL_2                :=0;    //      (222)
GVAR_HOLODISK_MB_LEVEL_3                :=0;    //      (223)
GVAR_HOLODISK_MB_LEVEL_4                :=0;    //      (224)
GVAR_HOLODISK_ENCLAVE_SECURITY          :=0;    //      (573)
GVAR_HOLODISK_ENCLAVE_STATE             :=0;    //      (574)
GVAR_HOLODISK_ENCLAVE_WORD              :=0;    //      (575)
GVAR_HOLODISK_ENCLAVE_CHEMICAL          :=0;    //      (576)
GVAR_HOLODISK_ENCLAVE_ATOMIC            :=0;    //      (577)
GVAR_ENDGAME_MOVIE_ARROYO               :=0;    //      (408)
GVAR_ENDGAME_MOVIE_MODOC                :=0;    //      (409)
GVAR_ENDGAME_MOVIE_DEN                  :=0;    //      (410)
GVAR_ENDGAME_MOVIE_VAULT_CITY           :=0;    //      (411)
GVAR_ENDGAME_MOVIE_RENO                 :=0;    //      (412)
GVAR_ENDGAME_MOVIE_RENO_ADD1            :=0;    //      (413)
GVAR_ENDGAME_MOVIE_RENO_ADD2            :=0;    //      (414)
GVAR_ENDGAME_MOVIE_RENO_ADD3            :=0;    //      (415)
GVAR_ENDGAME_MOVIE_RENO_ADD4            :=0;    //      (416)
GVAR_ENDGAME_MOVIE_GECKO                :=0;    //      (417)
GVAR_ENDGAME_MOVIE_REDDING              :=0;    //      (418)
GVAR_ENDGAME_MOVIE_BROKEN_HILLS         :=0;    //      (419)
GVAR_ENDGAME_MOVIE_NCR                  :=0;    //      (420)
GVAR_ENDGAME_MOVIE_VAULT_15             :=0;    //      (421)
GVAR_ENDGAME_MOVIE_VAULT_13             :=0;    //      (422)
GVAR_ENDGAME_MOVIE_SAN_FRAN_SHI         :=0;    //      (423)
GVAR_ENDGAME_MOVIE_SAN_FRAN_ELRON       :=0;    //      (424)
GVAR_ENDGAME_MOVIE_SAN_FRAN_PUNKS       :=0;    //      (425)
 
Reading addictions seems hard coded because if you set one of those it shows up in your character sheet, even if you change the name.

Hmm.

I'm thinking maybe I should take the "better safe than sorry" approach and just start mine at the end of Fallout 2's list. Starting at 1000 like he did is overkill, but tracking down bugs regarding usage of hard coded globals is really annoying, I've done it before.
 
Oppen I just realized I think there's already a command-line DAT packer... could you do me a favor and check on teamx.ru for that? Run it through Google Translate, they'll have a big list of programs that work with DAT, see if one of them can be passed a huge list of files and build the DAT that way.

Other than that, like I said earlier what I need help with is Sfall scripters. I'll be busy with the encounter table and stuff like that for a while.

If you are reading this and want to help, but don't know Sfall scripting, click the link in my sig and there's a bunch of basic stuff -- copying over the names of quests from Fallout 1, names of Holodisks, basically any text listed in Pip-Boy needs to be copied over. Once you have the files from DATA/TEXT/GAME it should be pretty obvious what needs to be done -- just copy into the appropriate file listed in the status post (link in my sig)

Also I still don't know what version of Fallout2.exe I'm supposed to be using.
 
I'm checking it. I found a lot that seem to do the work, but I investigate in more depth briefly.

EDIT: What you need to do would be unpacking from F1's master.dat and repacking it into F2's format, right?
 
Oppen said:
EDIT: What you need to do would be unpacking from F1's master.dat and repacking it into F2's format, right?
Yes.

As an added bonus, file size ends up being a bit smaller :) Or it was with critter.dat anyway.

So it will be easy command at first, just "F1UNDAT -ep master.dat", next part is putting those ~25,000 files into new master.dat Fallout 2 format.
 
This one seems to work for both packing and unpacking of bulks of files, and for both file formats :)

Try it and tell me if it works right.

EDIT: On another front, you probably already thought about this, but it might be a good idea to merge the modded files before creating the dat files, so users can save up some disk space in the setup :)
 
I didn't test much yet but yeah I think that should work. And stupidly I hadn't even thought of including the mod files, good idea.

In fact that will actually save like a few hundred megs of drive space, easily.
 
Currently working on the Pip-Boy files, so transferring over text of :

Quest, Holodisks, cutscenes, etc.

TarkinMX says he should be able to automate creation of "Tell Me About" button as dialog trees, which is very good news.
 
Status
Not open for further replies.
Back
Top