Fallout 2 mod Fallout 1 in Fallout 2

Discussion in 'Fallout General Modding' started by Lexx, Jul 12, 2019.

Thread Status:
Not open for further replies.
  1. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    Thanks, I've updated my files with some of that stuff.


    Also I just realized that the whole master / vats destruction video, etc. stuff wasn't done. So I've spend the last few hours on trying to get it right... Due to this and some other things, it now seems quite unlikely that I can wrap up some sort of alpha build this weekend. Sucks, but I can't help it.
     
    • [Rad] [Rad] x 1
  2. Oracle

    Oracle Water Chip? Been There, Done That

    May 19, 2003
    no rush :)
     
  3. Continuum

    Continuum Vault Fossil

    Nov 8, 2006
    Differences in protos: IIRC, conversion to 416 bytes makes them working in both engines.

    Some mess you can clean up:

    a) in Fallout all stairs, ladders, etc. that take to another level or map have a single script attached to it. IIRC, in Fallout 2 you can write data directly in Mapper.

    In my sandbox I made a single script to cut down that ridiculous number of them + to keep all stuff is in one place:

    Code:
    procedure start;
    procedure use_p_proc;
    
    import variable Ian_ptr;
    import variable Dog_ptr;
    import variable Tycho_ptr;
    import variable Katja_ptr;
    
    #include ".\HEADERS\COMMAND.H"
    #include ".\HEADERS\DEFINE.H"
    
    #define NAME SCRIPT_GENSTAIR
    
    procedure start begin
    
    end
    
    procedure use_p_proc begin
       script_overrides;
       if (map_is(MAP_JUNKTOWN_ENTRANCE)) then begin
           // MORBID'S HIDEOUT
           if (self_is(obj_on_map(13099, 0, PID_LADDER3_DN))) then begin
               /*
               if (combat_is_initialized) then begin
                   critter_stop_attacking(source_obj);
               end
               */
               move_to(source_obj, 12498, 1);
           end
           if (self_is(obj_on_map(12298, 1, PID_LADDER1_UP))) then begin
               move_to(source_obj, 12898, 0);
           end
       end
       if (map_is(MAP_HUB_DOWNTOWN)) then begin
           // DECKER'S HIDEOUT
           if (self_is(obj_on_map(25943, 0, PID_STAIRS1_DN))) then begin
               move_to(source_obj, 25927, 1);
           end
           if (self_is(obj_on_map(25520, 1, PID_STAIRS1_UP))) then begin
               move_to(source_obj, 25740, 0);
           end
       end
       if (map_is(MAP_HUB_OLDTOWN)) then begin
           // THIEVES' CIRCLE
           if (self_is(obj_on_map(18878, 0, PID_STAIRS1_DN))) then begin
               move_to(source_obj, 20482, 1);
           end
           if (self_is(obj_on_map(19878, 1, PID_STAIRS1_UP))) then begin
               move_to(source_obj, 19278, 0);
           end
       end
       if (map_is(MAP_NECROPOLIS_HALL)) then begin
           // NORTH
           if (self_is(obj_on_map(17074, 1, PID_LADDER1_DN))) then begin
               move_to(source_obj, 15891, 0);
           end
           if (self_is(obj_on_map(15488, 0, PID_LADDER1_UP))) then begin
               move_to(source_obj, 17074, 1);
           end
           // SOUTH
           if (self_is(obj_on_map(28276, 1, PID_LADDER1_DN))) then begin
               move_to(source_obj, 27097, 0);
           end
           if (self_is(obj_on_map(26694, 0, PID_LADDER1_UP))) then begin
               move_to(source_obj, 28276, 1);
           end
       end
       if (map_is(MAP_NECROPOLIS_WATERSHED)) then begin
           // SOUTH
           if (self_is(obj_on_map(26656, 1, PID_LADDER1_DN))) then begin
               move_to(source_obj, 24058, 0);
           end
           if (self_is(obj_on_map(23858, 0, PID_LADDER1_UP))) then begin
               move_to(source_obj, 26857, 1);
           end
           // FROM WATERSHED TO VAULT
           if (self_is(obj_on_map(18658, 1, PID_LADDER1_DN))) then begin
               move_to(source_obj, 19653, 0);
           end
           if (self_is(obj_on_map(19052, 0, PID_LADDER1_UP))) then begin
               move_to(source_obj, 19057, 1);
           end
           // TO VAULT
           if (self_is(obj_on_map(20053, 0, PID_MANHOLE))) then begin
               load_map("VAULTNEC.MAP", 12);
           end
       end
       if (map_is(MAP_LA_ADYTUM)) then begin
           // STORE
           if (self_is(obj_on_map(11515, 0, PID_LADDER2_DN))) then begin
               move_to(source_obj, 11715, 1);
           end
           if (self_is(obj_on_map(11315, 1, PID_LADDER1_UP))) then begin
               move_to(source_obj, 11915, 0);
           end
           // ZIMMERMAN'S CELL
           if (self_is(obj_on_map(17110, 0, PID_LADDER1_DN))) then begin
               move_to(source_obj, 17111, 1);
           end
           if (self_is(obj_on_map(16911, 1, PID_LADDER1_UP))) then begin
               move_to(source_obj, 17312, 0);
           end
           // FARM
           if (self_is(obj_on_map(23119, 0, PID_LADDER2_DN))) then begin
               move_to(source_obj, 23521, 1);
           end
           if (self_is(obj_on_map(23121, 1, PID_LADDER1_UP))) then begin
               move_to(source_obj, 23519, 0);
           end
       end
       if (map_is(MAP_LA_RIPPERS)) then begin
           // STAIR
           if (self_is(obj_on_map(13686, 0, PID_STAIRS1_DN))) then begin
               move_to(source_obj, 14495, 1);
           end
           if (self_is(obj_on_map(13888, 1, PID_STAIRS1_UP))) then begin
               move_to(source_obj, 14283, 0);
           end
           // TANGLER'S ROOM
           if (self_is(obj_on_map(19478, 0, PID_LADDER1_DN))) then begin
               move_to(source_obj, 19678, 1);
           end
           if (self_is(obj_on_map(19278, 1, PID_LADDER1_UP))) then begin
               move_to(source_obj, 19879, 0);
           end
       end
       /*
       if (map_is(MAP_LA_GUN_RUNNERS)) then begin
    
       end
       */
       if (map_is(MAP_LA_FOLLOWERS)) then begin
           if (self_is(obj_on_map(15069, 0, PID_STAIRS1_DN))) then begin
               move_to(source_obj, 15072, 1);
           end
           if (self_is(obj_on_map(15066, 1, PID_STAIRS1_UP))) then begin
               move_to(source_obj, 15268, 0);
           end
       end
       if (map_is(MAP_CATHEDRAL)) then begin
           // FROM HALL TO MASTER'S LAIR
           if (self_is(obj_on_map(12108, 0, PID_STAIRS2_DN))) then begin
               load_map("MSTRLR12.MAP", 0);
           end
           // FROM HALL TO TOWER
           if (self_is(obj_on_map(12678, 0, PID_STAIRS2_UP))) then begin
               load_map("CHILDRN2.MAP", 0);
           end
       end
       if (map_is(MAP_CATHEDRAL_TOWER)) then begin
           // FROM LEVEL 1 TO HALL
           if (self_is(obj_on_map(18894, 0, PID_STAIRS2_DN))) then begin
               load_map("CHILDRN1.MAP", 4);
           end
           // FROM LEVEL 1 TO LEVEL 2
           if (self_is(obj_on_map(19096, 0, PID_STAIRS2_UP))) then begin
               move_to(source_obj, 19101, 1);
           end
           // FROM LEVEL 2 TO LEVEL 1
           if (self_is(obj_on_map(18894, 1, PID_STAIRS2_DN))) then begin
               move_to(source_obj, 19101, 0);
           end
           // FROM LEVEL 2 TO LEVEL 3
           if (self_is(obj_on_map(19096, 1, PID_STAIRS2_UP))) then begin
               move_to(source_obj, 19294, 2);
           end
           // FROM LEVEL 3 TO LEVEL 2
           if (self_is(obj_on_map(18894, 2, PID_STAIRS2_DN))) then begin
               move_to(source_obj, 19101, 1);
           end
       end
       if (map_is(MAP_MASTERS_LAIR_12)) then begin
           // FROM MASTER'S LAIR TO HALL
           if (self_is(obj_on_map(20732, 0, PID_STAIRS2_UP))) then begin
               load_map("CHILDRN1.MAP", 3);
           end
       end
       if (dude_is_source) then begin
           if (global_var(GVAR_KATJA_STATUS) == 1) then begin
               reg_anim_clear(Katja_ptr);
           end
           if (global_var(GVAR_DOG_EMPATHY) == 1) then begin
               reg_anim_clear(Dog_ptr);
           end
           reg_anim_clear(dude_obj);
           reg_anim_begin;
           reg_anim(dude_obj, ANIM_STAND, -1);
           reg_anim_end;
       end
    end
    
    each "self_is" is a script less.



    b) start procedure is filled with tons of shit. In Fallout you only need:

    - map case:

    Code:
    procedure start begin
       if (script_action == 15) then begin
           call map_enter_p_proc;
       end
       if (script_action == 16) then begin
           call map_exit_p_proc;
       end
       if (script_action == 23) then begin
           call map_update_p_proc;
       end
    end
    
    - non map case:

    Code:
    procedure start begin
       if (script_action == 3) then begin
           call description_p_proc;
       end
    end
    
     
    Last edited: Jul 28, 2019
  4. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    I rewrote a lot of this code already. Compared to how it began, it's starting to look pretty damn good now, I'd say.
    Moved lots of shit into headers, which makes modifying the data in the future a lot easier as well.

    About the stairs - yes, you don't need a script for that in Fo2, but I'm keeping it in for now anyway. It doesn't hurt and when it comes to ladders, it actually fixes a visual bug (dude hanging in the last frame of the climbing animation). Putting it all into a single script isn't a bad idea, though. Maybe at some point in the future...

    Anyways. Status update:
    • Finished the party member conversion yesterday. Now they run on the Fallout 2 system.
    • Party members can level up now.
    • As party members grow stronger with time, I've also added in Fo2's recruitment system: If you use charisma as a dump stat, you will not be able to take everyone with you (This is optional and can be disabled).
    • Ai packages need adjustments, but that's a minor issue.
    • Also took the time to implement the Sfall party armor change mod. Works good so far, only Tycho reverts to his default after every map change - no idea why. Maybe I'll find out some day. - found out why. Fixed.
    • Fixed various random encounter related bugs (critters not drawing weapons, crash bugs, invulnerable critters, etc).
    • Reactivated the "fluff" encounters that were removed in Fixt. Stuff like "you are dehydrated", etc. Instead I've added a toggle setting, so you can decide for yourself if you want this or not.
    • Max rad resistance is 100% now, not 95% anymore (Fo1 value).
    • Still working on the Vats / Cathedral destruction scene. Maybe I'll get it done today. Vats / Cathedral destruction scene is finished. Not exactly in the way I would like, but it works.

     
    Last edited: Jul 28, 2019
    • [Rad] [Rad] x 1
  5. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    I have long wanted to fix it. This will be fixed in future versions of sfall.
     
    • [Rad] [Rad] x 1
  6. Nineeva

    Nineeva First time out of the vault

    Aug 20, 2009
    That is impressive given how little time it's taken you both.

    Is there much more you need to do other than test for bugs? i.e. can you play the game from start to finish now doing side quests and having random encounters as it was in fallout 1?
     
  7. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    Keep in mind that a lot was already done by other folks. I merely picked up the latest sources I could find and started working on it. Still lots to do, but all the grunt work like setting up protos, maps, and data files was already done.

    In theory, yes. But as I haven't done that myself yet, I can't say for sure. All the core elements are tested, though (the timers, getting the water chip, returning the chip, destroying vats and cathedral and then ending the game in a cutscene with slideshow and video).

    So... yeah, in theory it works.

    I've also fixed certain bugs that are introduced by Fixt (I cross-checked ingame in Fo1 and reproduced the same issues), so going by that, the Fo2 port should even be less buggy than the Fo1 Fixt version at this point.
     
    Last edited: Jul 29, 2019
  8. .Pixote.

    .Pixote. Venerable Relic of the Wastes
    Modder

    Sep 14, 2009
    I'm looking forward to playing this when it's complete, you're the man Lexx...:notworthy:
     
    • [Rad] [Rad] x 1
  9. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    I started a test playthrough yesterday. Made it to the Hub when I had to call it quits for the night. Found lots of proto issues (wrongly ported, bad settings, etc), which I fixed then. Also some other tiny script issues, which I was able to fix right away.
    Here's a pic of the leather gang just leaving Junktown.
    Other than these issues, it seemed to run well. I'll continue later today.

    Anyway, as quite a bit happened, another status update:
    • Reworked all invasion timer code / moved it into a gl script.
    • Forgot to mention that Animal Friend perk, Mental Block, Scrounger and Flower Child are back, no matter how useless they seem.
    • Fixed some Brotherhood location related bugs.
    • Smitty in Boneyard now doesn't make the player naked when upgrading his plasma rifle.
    • I allowed some critters to run, such as Ian gangers and dogs. This always annoyed me in Fo1.
    That's all I remember right now.

    /Edit: Made it to Necropolis now. Catching the Water Chip soon. Necropolis caravans are still bugged from original Fallout. Will see how / if / when I fix them.

    /Edit2: For some reason my skills.ini file isn't working, thus the 1 skill point == 1% skill increase doesn't work anymore. I have no clue why. Worked all the time, now not anymore. Love these kind of issues... - fixed.
     
    Last edited: Jul 30, 2019
    • [Rad] [Rad] x 5
  10. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    Good news, everyone!
    Master is kill.

    So my tl,dr is ... Everything is playable. You can start the game, you can end the game. However, in my playthrough I've noticed lots of tiny things that annoyed me or that I knew are wrong. Now the thing is, lots of these elements might as well be changes introduced by Fixt and some of these I really don't like. Started reverting and rewriting, etc. bla bla. Some things also are just unfinished / wrongly ported elements. As example the previously mentioned proto errors.
    This is all stuff that can and will be fixed in the future, but it's a bit tedious and annoying.

    Since yesterday, this happened:
    • Fixed: Huge performance issue in Gun Runners location after player gets all weapons.
    • Fixed: Blades will correctly invade Adytum after the player gave the holodisk to Jon Zimmermann.
    • Fixed: After giving the water chip to the overseer, the player is correctly teleported to the library and files a report.
    • Fixed: Necropolis Vault glowing ghouls were invincible.
    • Fixed: Necropolis Watershed prisoner now walks correctly out of the map. Also replaced a useless gvar with an lvar.
    • Changed: Gizmo's guard Izo will behave like in thy olde days.
    • Also updated ai.txt file - needs testing.
    • Added: Hub deathclaw map to... the Hub.
    • Also added: Irwine's Farm to the Hub.
    • Fixed: broken ai packs (talking rats, dogs, animals in general)
    • Added: 4 levels to Dogmeat.
    • Added: Wooden doors will close automatically now. This can be toggled on / off in fo1_settings.ini - best used in combination with gl_autodoors.
    • Tweaked: Killian's store tables, so it won't be *that* easy anymore to steal from him. Needs further testing.
    • Fixed: After destroying the Vats, the MBENT entrance wasn't disabled.
    • Fixed: Location tabs on worldmap now appear in the same order as in Fo1.
    As said, some of these issues are based on the Fo1 -> Fo2 port, but others are because of Fixt or bugs introduced by Fixt (the version I played last should be called Brokt, I guess. I joke. It's a joke, ok? Sorry).
     
    • [Rad] [Rad] x 7
  11. dozen

    dozen First time out of the vault

    Jul 22, 2011
    That's awesome! Hope, there will be a stable version available soon. Feel free to use us as beta testers once you decide that you are done with major changes.

    I happened to translate Fixt, but have never actually played it, so the question might seem weird: is the Fallout Demo quest a part of the general campaign now available for the Vault Dweller?
     
  12. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    Nah, I won't be including the demo location into this package. It would be possible, but it's just not what I want to work on.
    Btw. the demo was turned into its own mod just a short while ago.

    Other than that, I just fixed the ages old Necropolis caravan escort bug + found out the same one appears on the route to the Boneyard, which I have fixed as well. Turns out it was a very trivial thing to fix...
     
    Last edited: Jul 31, 2019
    • [Rad] [Rad] x 5
  13. Continuum

    Continuum Vault Fossil

    Nov 8, 2006
    Are the random encounters fully scriptable (like in Fallout), or can they be only driven by that some sort of procedural txt file?

    Anyway, I'm thinking to move my sandbox over there... but...

    a) are you still adding shits there?
    b) I want to repack critter.dat and master.dat to avoid trucktons of files in data directory + Fallout 2 useless shits*,
    c) I see some globals.txt with RESERVED_FOR_FALLOUT2_ENGINE - what that shit is?
    d) what are engine specific GVARs?
    e) are there any other things I should be aware of?

    * long time ago I did it with my compact (~ 165MB) Mapper for Fallout.
     
  14. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    There are global variables that are processed by the F2 engine. It’s strange that you don’t know anything about it.
     
  15. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    Everything is in script. It's a total mess of code that still needs serious cleanup. Maybe in the far future it'll all be ported over to Fo2's encounter system, but for now... I'm ok with how things are.

    Yes. It'll be a while before I stopp adding and changing code around. We are still refactoring.

    Well, the plan is to deliver only the necessary files with the alpha build. It'll come with a small gui extractor that picks specific files from the fo1 master.dat - not everything. The main mod files will come in a custom *.dat file.

    Lots of stuff is still hardcoded in the engine. These variables should not be used anywhere else and remain "free".
    "Globals.txt" is part of the debug gui, by the way (currently disabled / not working I think).

    They control perks and other engine specific stuff. Don't ask me what exactly. Better not touch them.

    The project is still under heavy development. So porting your code now might mean you have to revisit everything again often. Personally I wouldn't do that yet and wait for something more stable.
     
  16. Continuum

    Continuum Vault Fossil

    Nov 8, 2006
    Ok, will wait then.

    Can't really help you because of total incompatibility with my scripts and other shits, but I can point you out bugs here or there - I've fixed many of them, but I don't have any list of what I've changed + it was five years ago.

    Looked at Nicole, originally you could piss her off ad infinitum. Where to fix + restored herebefore:
    Code:
    procedure talk_p_proc begin
       call GetReaction;
       dialogue_start(HEAD_NICOLE, BACKGROUND_FOLLOWER, -1)
       if (ThiefFlag) then begin
           ThiefFlag := 0;
           if (local_var(LVAR_TALKED_TO_NICOLE) == 0) then begin
               set_local_var(LVAR_TALKED_TO_NICOLE, 1);
           end
           // --> NODE GOES HERE
       end
       else begin
           if (reaction_min) then begin
               call Node077;
           end
           else begin
               if (reaction_bad) then begin
                   call Node070;
               end
               else begin
                   if (local_var(LVAR_TALKED_TO_NICOLE) == 0) then begin
                       set_local_var(LVAR_TALKED_TO_NICOLE, 1);
                       call Node001;
                   end
                   else begin
                       call Node069;
                   end
               end
           end
       end
       dialogue_end
       ReactionFlag := 0;
    end
    

    Code:
    # Node069   [UNUSED - ADDED]
    {351}{NIC_69}{Well hi. What can I help you with now?}
    {352}{}{I need to ask a few questions.}
    {353}{}{I have some information for you.}
    {354}{}{I've talked to Laura.}
    {355}{}{Nothing. Thanks.}
    {356}{}{Mom!?}
    
    # Node070   [UNUSED - ADDED]
    {357}{NIC_70}{What do you want now?}
    {358}{}{I wanted to say I'm sorry.}
    {359}{}{I just wanted to see you again.}
    {360}{}{}
    
    # Node077   [UNUSED - ADDED]
    {369}{NIC_77}{Hey! Get out of here!}
    {370}{}{Or else what?}
    {371}{}{Ok, I'm leaving.}
    



    Obviously later you'll have to add stuff, like:
    Code:
    procedure Node010 begin
       inc_local_var(LVAR_APOLOGIZE_FLAG);
       ReactionFlag := -25; // --> INCREASE
       call DecReaction;
       BMessage(145);
       set_map_var(MVAR_SHOW_PLAYER_OUT, 1);  // --> KICK OUT PLAYER
    end
    
    procedure Node070 begin
       Reply(357);
       if (local_var(LVAR_APOLOGIZE_FLAG) < 2) then begin
           GOption(4, 358, Node071);
       end
       else begin
           BOption(4, 358, Node070a);
       end
       BOption(4, 359, Node070a);
    end
    
    Code:
    # Node070a   [UNUSED - ADDED]
    {361}{NIC_70A}{Just leave.}
    
    # Node071   [UNUSED - ADDED]
    {362}{NIC_71}{Apology accepted. What can I help you with?}
    {363}{}{Can I ask a few more questions?}
    {364}{}{That was all for now. I gotta go.}
    
     
    Last edited: Aug 3, 2019
  17. Lexx

    Lexx Background Radiant
    Moderator

    Apr 24, 2005
    This shows a problem already - you completely changed the dialog. :p No idea where what is. My talk_p_proc looks completely different, your nodes seem to be in a different order. Also you've added some thief stuff, which doesn't exist in my version.
     
  18. Continuum

    Continuum Vault Fossil

    Nov 8, 2006
    ThiefFlag is for this:
    Code:
    procedure pickup_p_proc begin
       ThiefFlag := 1;
       dialogue_system_enter;
    end
    
    # [UNUSED]
    {366}{NIC_74}{What are you doing? Put that down!}
    {367}{NIC_75}{Stop!}
    {368}{NIC_76}{Stop that!}
    

    On a side note: every single script which is edited by me has "NodeXXX" (in Fallout 2 way - it's nicer) instead of, for example "NicoleXX" + every msg associated with it is commented with Node number, like Nicole I posted above.


    I can point you out some things, but you'll have to track down and rewrite them on your own.


    In attachment you'll find fun stuff I added (IIRC, originally there was only MSG). I haven't changed position of manholes/ladders in Necropolis, so it should work with original maps.
     

    Attached Files:

  19. Mr.Stalin

    Mr.Stalin Agent of Enclave Modder

    Oct 29, 2015
    If the vault13.gam file is extracted to the <game_root>\data\data\ folder, then the names are taken from it, instead of from .txt
     
    • [Rad] [Rad] x 1
  20. naossano

    naossano So Old I'm Losing Radiation Signs

    Oct 19, 2006
    The demo itself isn't part of either fo1 or fo2, but it is very likely that you will find the text from the demo in the english\text\dialogs of fo1 or fo2, which can confuses some translators. (also, the demo can be packaged in the installation, but in a separate file)
     
Thread Status:
Not open for further replies.