Fallout 1 mod FO1 to FO2 conversion, for real

Discussion in 'Fallout General Modding' started by Dude101, Nov 27, 2007.

  1. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

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

    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.
     
  2. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  3. Oppen

    Oppen FIXT n°1 fan

    Dec 26, 2011
    I'm sure there is. I have no idea where, but I took a glance to it at some point.
     
  4. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    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.
     
  5. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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: Jun 27, 2015
  6. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    When dealing with AI, it's useful to always check here:

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

    The other one does something similar:

     
  7. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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:
     
  8. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    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?
     
  9. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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)
     
  10. Darek

    Darek is currently unavailable

    Jan 7, 2008
  11. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  12. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  13. JimTheDinosaur

    JimTheDinosaur Vault Dweller
    Modder

    Mar 17, 2013
    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)
     
  14. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  15. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  16. Oppen

    Oppen FIXT n°1 fan

    Dec 26, 2011
    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?
     
  17. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  18. Oppen

    Oppen FIXT n°1 fan

    Dec 26, 2011
    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 :)
     
  19. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.
     
  20. Sduibek

    Sduibek Creator of Fallout Fixt Moderator Modder

    Oct 27, 2010
    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.