Fallout 2 mod Banjo's Fallout 2 Mods

Discussion in 'Fallout General Modding' started by banjo_oz, May 30, 2021.

  1. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    Rather than a separate thread for each one, I've started this single thread for the little Fallout 2 mods I've been working on. Some are for use only with "Et Tu" (Fallout1in2), while others can be used with any version of Fallout 2. Most (but not all) Fallout 2 targeted ones require Sfall and the Restoration Project Update.

    This is my first serious attempt at modding Fallout 2 and certainly the first time I've ever posted any mods I've made, so please give feedback but be gentle!

    These mods are also posted on my blog, but for their first release (and testing) I could think of no better place than the true home of Fallout fandom.


    ----------------------------
    CORPSE LOOT DROP
    ----------------------------
    This mod allows you to loot certain creatures after they die to gain meat (in the form of Jerky) or scrap (in the form of Robot Parts). This makes hunting a more viable option for gaining money.

    The amount of meat or scrap dropped will vary according to critter size. By default, Brahmin, Rats, Pigrats, Molerats, Dogs and Geckos will drop meat. Brainbots, Repairbots and Sentrybots will drop scrap. This can be easily changed according to your personal preferences by editing the included ini file, along with many other options like whether poisonous critters drop meat or if you need a high Repair to get Robot Parts.

    The included and detailed readme will explain more.


    ----------------------------------------------------
    CORPSE LOOT DROP: ET TU EDITION
    ----------------------------------------------------
    The same mod as above, except for Et Tu (Fallout1in2).

    Again, includes a detailed readme.


    -----------------------
    SNEAK TO DRUG
    -----------------------
    Full credit to Lexx for the awesome script here and Zorchar for inspiring the mod. I simply modified the script and built on the concept a bit.

    This mod changes the game so that using a drug on an NPC requires a Sneak check to be successful.

    * Stimpacks, Healing Powder and Hypos are treated as "good drugs".
    * Beer, Booze, Rot Gut, Gamma Gulp Beer, Roentgen Rum are treated as "soft drugs".
    * Jet, Buffout, Mentats, Psycho, Super Stimpacks are treated as "hard druugs".
    * Poison Hypos and Mutagenic Serum are treated as "bad drugs"

    You may use "good drugs" on NPCs freely, however if you attempt to use any other listed drug, you must first pass a Sneak roll. If you are caught (Sneak roll failed) using a "soft drug", the item will not be used and the NPC will refuse it. If you are caught (Sneak roll failed) using a "hard drug" or "bad drug", the item will not be used and the NPC will immediately turn hostile.


    -----------------------
    DEADLY POISON
    -----------------------
    This mod allows you to use poison syringes on any NPC as an assassination method.

    Poison Syringes now inflict 60 damage and raise poison level by 50. Their cost is increased to 500 (was 200).

    For the sake of balance, it is *strongly* recommended that you also use my "Sneak To Drug" mod (above) with this too.

    Poison Hypos are still extremely rare as per the vanilla game, so use them sparingly (I may slightly increase their availability if people request it).


    --------------------
    BOZAR SNIPER
    --------------------
    This mod changes the Bozar weapon from a burst-fire machinegun into the heavy sniper rifle the description claims it is. I'm sure I'm not the first to make this mod, but it was the first mod I made and was good practice.

    The following changes are made:
    * Ammo Type changed to 14mm (was .223).
    * Damage increased to 40-75 (was 25-35).
    * Max Ammo changed to 10 (was 60).
    * "Fire Burst" changed to "Fire Single".
    * Attack Range changed to 60 (was 35).
    * Sound changed to 69E (was 76L).
    * Added the "Weapon Scope Range" Perk so it suffers penalties when used at close range.


    ---------------------------------
    SKIP TEMPLE OF TRIALS
    ---------------------------------
    Sick of that bloody Temple of Trials intro in Fallout 2 but don't want to break immersion by completely removing it? This mod allows you to skip the Temple of Trials, as long as you meet a few basic requirements.

    Simply talk to Klint before entering the temple and you will have various new dialog options, depending on your character build. Options available will depend on your gender, tag skills, attributes and traits. Once Klint moves the obelisk and stands aside, you may return to the village. This will trigger the end of the Trial.

    I also added a few little extra options with Klint just for fun. Low IQ dialog options were taken into consideration too.


    ---------------------------------------
    TEMPLE OF TRIALS TWEAKS
    ---------------------------------------
    A work in progress, this mod allows you to complete the Temple of Trials in several new ways, including
    cheating in the final fight with Cameron.

    New options include:
    * Alternate ways to open the door that previously could only be opened with explosives (using various skills or a high Perception).
    * A second opportunity to talk Cameron down from fighting if you didn't the first time.
    * Show dishonor by distracting Cameron and/or using weapons in the fight.
    * Skip the last fight by blowing Cameron up with explosives (major karma loss). :)

    As part of this mod, Cameron will now notice if you "cheat" by dropping a weapon and then picking it up, and you will lose karma.

    Low Intelligence responses have been added as needed, for extra flavor.

    I am open to adding more options, as well as perhaps editing the temple map to make straying from the straight path more rewarding (minor treasure in other rooms, etc.). If so, I may also change the "bomb" door since it currently has no proper opening animation.


    ----------------------------------------
    SHADY TRADER (FOR ET TU)
    ----------------------------------------
    This mod adds a merchant to Shady Sands when using the "Et Tu" (Fallout1in2) mod. Updated from the version that gets spawned using the "GVAR_ENABLE_SHADY_SANDS_MERCHANT" ini setting, this merchant will have a new look and be accompanied by bodyguards with upgraded weapons, a wagon and a brahmin.

    This mod also disables the ini setting check, meaning that when it is installed, the trader and his cohorts will appear in Shady Sands regardless of whatever the setting "GVAR_ENABLE_SHADY_SANDS_MERCHANT" in Fallout1in2\config\fo1_settings.ini is set to.


    -----------------------------------------
    KENJI REARMED (FOR ET TU)
    -----------------------------------------
    This small add-on changes Kenji - the gunslinger who tries to kill Killian Darkwater the first time you speak to him in Junktown - to carry a shotgun instead of a hunting rifle.

    I just felt this was a more appropriate weapon for an assassin to use at close range than a scoped rifle.


    -------------------------------------------------
    WEAPONIZED RADSCORPION LIMBS
    -------------------------------------------------
    Way back when I first played Fallout 2, I was confused that you couldn't use the Radscorpiopn Limbs as an unarmed weapon. They looked like that was their purpose, but nope. It always felt like an unfinished or bugged item to me.

    Now, thanks to the power of modding, you can finally strap giant scorpion pincers to your arms and tear up your enemies!


    ***
    Please let me know if there are any issues or bugs; like I said, this is my first public modding attempt so making these work with installations aside from my own is something I'm still unsure about (all these are based on the GOG versions, mostly with the RPU added and Sfall updated, but some will work on "vanilla" Fallout 2; see included readmes).

    The biggest issue I encountered was that the RPU overwrites most things and is loaded as a dat rather than a "patchfile" so cannot be assigned a load order manually. I "fixed" that by making the mods that need to be loaded after the RPU by naming their folders as .dat and adding the prefix "z" (e.g. "zTempleTweaks.dat"). This felt a bit "hacky" but I am unsure what other option there is in this situation.

    Anyway, I hope some folks get a kick out of these mods! I've been a Fallout fan since the first game back in the 90's and it honestly feels amazing to be able to mod them so much at long last!

    If I make new mods (and I already have a couple in the works), I will add them to this first post.
     
    Last edited: Jul 22, 2021
    • [Rad] [Rad] x 6
  2. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    About the Shady Sands merchant. Is there a reason why you need a new script for the wagon? Same with the brahmin.
    /Edit: I just decompiled the scripts. You should spawn the wagon and the brahmin via the merchant script.

    You could do all of these changes in script, then you don't have to release with a modified map file + 2 new scripts, and gain more compatibility:
    For the caravan cart, you can use one of the macros, see the scenepid.h file.
    Code:
    Create_EW_Red_Caravan(Hex_Num,Elevation)
    (This also creates the necessary scenery blockers, so you can't walk through the object.)

    For the visual changes of the merchant critter you can use
    Code:
    art_change_fid_num(critter pointer, FID);
    And for his guards you just spawn the critter PID that you want and give them the guard script.

    And to change their position, just
    Code:
    critter_attempt_placement(critter pointer, hex, elevation);
    obj_rotate(critter pointer, direction)
    You could run the code in the map_enter procedure of the merchant himself on first map enter and done.

    I guess you did it this way because the merchant runs on a config toggle right now, no? If so, you shouldn't bother with it. Use the initial check if the merchant is there and then spawn all your stuff. If the player disables him later for whatever reason then IMO this is not your problem anymore.
    In fact, you could as well just completely ignore the config setting, because players who disable it will never use your mod in the first place.
     
    Last edited: May 30, 2021
  3. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    Thanks so much for the help!

    I was actually thinking tonight after posting "I wonder if I could just spawn those on map load so I don't have to edit the actual map?" after thinking about how Kenji is "warped in" in the vanilla F1 game. You're 100% right: I couldn't figure out how to make the wagon and brahmin appear via the ini toggle without their own scripts, as I got it working by looking at the existing merchant script. Like you say, it would be MUCH better to A) not edit the map and B) not need to add additional scripts to scripts.lst for compatibility.

    The most obvious thing which I didn't even think of is your suggestion of just ignoring the ini config setting and making it a standalone mod! Doh!

    I had no idea about those spawn codes, really helpful!

    Like I said elsewhere, still *very* much a beginner at this but it's rather fun and exciting to see my own changes in a game that I had zero capability to change back when I first played it on release! Very much appreciate all the help you in particular have provided to my efforts and questions so far.

    EDIT: Did I forget to include the source scripts for that one? I wanted to include them with all my mods just in case.
     
  4. gustarballs1983

    gustarballs1983 Water Chip? Been There, Done That

    885
    Oct 28, 2009
    @banjo_oz
    Yo what about deathclaws? Aren't they sepose to give meat? I initially thought of a concept to grind boneyard deathclaws for exp. but they need to drop something so that one could exchange for ammo in shops (assuming one tries to get to lvl99). I know there's enaugh loot in the game after finishing the game (ammo wise), but most of it is locked behind two final assaults (cathedral and military base). Before that one might not have enaugh ammo to get to lvl 99 without extensive purchases, and that requires some loot to be gained from somwhere in order to buy the bullets. Otherwise it's just Slayer + haymaker vs deathclaws in the end.

    Actually I also was thinking of a sort of humanoid robot/android companion for Fo1 that would occupy second Raiders cell, that has severed arms, due to getting in a fight with raiders, they disabled it took the battery out, tared through armor plating, and wrecked it's arms.
    the idea behind it was there's not enaugh carry capacity for Ian and Dude to carry everything Riders had to Junktown, so additional mule was nessecary, at the beginning android was seposedly to be powered up, factory wiped, to remove hostility, and could only folow dude around carrying stuff, later (possibly at glow) player could find android compatible arm in one of the cryotanks on west tek (glow) level 5, which could be installed onto the robot by brotherhood, also brotherhood upgrades the programing of this android (in few steps), at first after attaching one arm, brotherhood alters programming to enable combat support with one handed weapons, when player gets a hold of spare Power Armor or Hardned Power Armor, a communication socket discovered by brotherhood doctor during severed arm attachment procedure could be used to link PA/HPA moovement control directly to the android in such a way that PA/HPA would mimick missing arm (fully controlled by the android when wearing PA/HPA) enabling it to use even 2 handed weapons as if the robot has 2 arms (the second one beeing bypassed by direct wired link to PA/HPA, where PA/HPA uses servos controlled by android over the wired link to the armor as if andrid actually had a working arm). Additionally brotherhood doctor after examining android's destroyed internal armor planting, could propose to rebuild it by scrapping few combat armors (similar to dermal impact/phoneix implants + enhancments) ofc an additional way to make use of those now uselless spare combat armors (even without merchant restocking mod one can easily find 4 combat armors in the game + 1 brotherhood armor), It would also be an additional way to spend caps.I planned android to specialise in big guns and energy weapons ofc. and would not take neither a seat in the motorcycle (robots can run as fast as the motorcycle), nor companion CHA limit slot even if the Fo2 style CHA limit is enabled.
     
  5. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    Yeh, it's one of the reasons why I like doing mini-mods now. Just little bits here and there. Doesn't always need to be some huge total conversion that eats 5 years of your life. :>
     
  6. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    I assume I'm missing something obvious, but how do I know/get the pointer for a critter or item that's *not* obj_self (i.e not the one in the script)?

    For example, the "Bodyguard" of the merchant in Shady Sands, if I want to "art_change_fid_num" him.

    This is my code so far:
    Code:
       if not(CreateMerchant) then begin
          CreateMerchant := 1;
          Create_EW_Red_Caravan(18936, 0)
          BBrahmin_ptr := create_object_sid(PID_BRAHMIN, 19130, 0, SCRIPT_BRAHMIN);
          obj_rotate(BBrahmin_ptr, 0);
          art_change_fid_num(self_obj, FID_NMPEAS);
          critter_attempt_placement(self_obj, 18135, 0);
          obj_rotate(self_obj, 5);
          art_change_fid_num(BGuard1_ptr, FID_HMMAXX);
          critter_attempt_placement(BGuard1_ptr, 19340, 0);
          obj_rotate(BGuard1_ptr, 5);
          BGuard2_ptr := create_object_sid(PID_GENGUARD, 18730, 0, SCRIPT_BGUARD);
          art_change_fid_num(BGuard2_ptr, FID_HFLTHR);
          obj_rotate(BGuard2_ptr, 5);
       end
    
    ... but I don't know how to set "BGuard1_ptr" to the existing "Bodyguard" already placed on the map.
     
    Last edited: Jun 1, 2021
  7. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    You can check if the critter PID is on tileX. This will give you a pointer to the object:
    Code:
    BGuard1_ptr := tile_contains_pid_obj(17527, 0, PID_GENGUARD);
    /Edit: You should also validate the data, to be sure that something is there.
    Code:
    if (BGuard1_ptr > 0) then ...
    Otherwise, if the critter is not there for whatever reason (a different mod, etc), your script will crash.

    PS: Your CreateMerchant is a temporary variable. If you reload the game or enter the map a second time, it will be back to 0. You either have to turn it into an LVAR, or you run the code on the very first map_enter:
    Code:
    procedure map_enter_p_proc begin
       if map_first_run then begin
          Create_EW_Red_Caravan(18936, 0)
          ...
       end
    end
     
    Last edited: Jun 1, 2021
  8. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    Thanks, that's awesome!

    I was just thinking during dinner if the answer was to somehow look in a certain hex. I was previously trying to find a command along the lines of "get critter (at hex x)" rather than setting the pointer the correct way like you showed.

    I've added the check just in case, too.

    I didn't know about the "on first load" for maps, which I've used instead as it seems a better way to do things (though I suspect the downside is it doesn't work if the player has already entered that map?).

    Testing now and will reupload when I make sure it all works right. I also just ignored the ini setting now so it's "just another mod".

    Thanks again!
     
  9. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    Yes, but then you would get issues with your merchant anyways. IMO it makes no sense to try to workaround such stuff - Fallout is an old game and if someone wants to use mods, they have to start a new game. That's just how it is.
     
  10. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    That makes sense to me too. I just put a warning in my readme to say "must not have visited this area before installing the mod".

    One other question I can't figure out: is there a way to disable the "push" command for an existing critter without changing their own script? So I can stop the player pushing the merchant's brahmin around!

    I tried setting the script to CARCOW instead of BRAHMIN (since it seems better suited to pack brahmins) but that script seems a bit odd; when I shot the brahmin in-game, it vanished when it had that script (presumably because that script has no "damage" procedure). Is CARCOW even used in-game at all (in Falllout 1/Et Tu)?

    Deathclaws can drop meat, but they are set to "don't drop" by default. Edit corpsedrop.ini and set deathclaws=1 and they should drop meat now. Happy to make it "yes" by default if people think that's better. I did think about them dropping eggs too, eventually...

    I like that robot companion idea!
     
    Last edited: Jun 1, 2021
  11. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    The CARCOW script is used in caravan encounters. It disappears because it checks if the brahmin is in a caravan encounter map, which it isn't in this case.

    Sadly you don't have much choice - either cow.int or brahmin.int, but both use the same push_proc.
    You could edit one of the scripts (I think cow.int is used less) and add a map check to the push_proc. Other than that I don't think there is much choice.

    /Edit: It seems cow.int are wild cows, while brahmin.int are the domesticated critters. Though I have no memory of why there is caravan encounter stuff in the cow.ssl file. It's certainly not spawned in caravan encounters. Maybe this is some old / deprecated stuff from when I was getting mad about the stupid buggy caravan jobs.

    /Edit2: Seems the only place where cow.int is used is the talking cow special encounter. Can't find anything else.
     
    Last edited: Jun 1, 2021
  12. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    Thanks for the detailed info. I think I will edit either brahmin.int or carcow.int to work around it; it's not a huge deal if the player can push them so if someone loads a bigger/better mod than mine and it overwrites that edit, no big loss. If not, it would actually be useful for other mods to have a workaround allowing "no pushing" if the modder wants that.
     
  13. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    Actually there is another possible solution in the form of a hook script. You could check if the script is e.g. cow.int, then you check if the current map is shady sands east side, and then you'll overwrite the push_proc with returning -1.

    Checking for cow.int would mean the other brahmin in the map are unaffected, as they are using the brahmin.int script.
     
  14. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    That's a good idea, though it might take me awhile to figure out. Eventually, if I can, I'll use that to hook brahmin.int I think (check for both map and tile).

    For now, I've updated the first post with v1.1 of Kenji Rearmed (just added the sources I forgot to include) and v2.0 of Shady Trader for Et Tu, which stops the player messing with - pushing, drugging, etc. - that particular brahmin but not others (and also fixes an issue where the guards may disappeared when you left and returned!).

    As always, let me know of any issues.
     
  15. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    Checking for tile won't work, as brahmin will wander around randomly in a small area.

    /Edit: I just checked your new brahmin script. The only way for this to keep working after the brahmin moved away is to set an LVAR that marks it as your stationary critter.
    If map_first_run and self_tile == x then set LVAR to 1 .... if LVAR == 1 then don't do stuff, etc.

    /Edit2: Ok, I just saw you also prevent the critter movement. That means it'll work - but if the player somehow manages to move the brahmin away (attacking and running away, etc.) it won't work anymore.
     
  16. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    Yup, I got it that far but couldn't figure out how to stop movement if the player attacks the brahmin or somehow manages to knock it out of it's starting position. Same with the merchant float; if he moves for some reason, he won't scold you for touching his brahmin anymore.

    That said, I thought this was enough as if the player *does* attack the brahmin or merchant (causing them to move), they've made an enemy of all Shady Sands and "not pushing the brahmin" is the least of anyone's concerns now as a fight will ensure. :)

    Originally my plan was actually to use "if the critter is on a certain team on this map" rather than a "if critter is on a certain tile on this map" so location didn't matter, and manually set the brahmin to "Team_Shady_Sands" like the merchant and guards instead of the default "Team_4". It would thus be the only brahmin on that team so the others on the same map wouldn't be affected. However, I discovered that changing the team via the merchant's script when spawning the brahmin didn't work and it was always on "Team_4" regardless... presumably because its own script overwrote my team assignment (when it initializes, brahmin.int sets the owner to "Team_4") and/or this happens "after" spawning and my command to assign a team? If so, I suppose I could change this since I'm editing brahmin.int anyway...

    EDIT: I tried testing your issue of attacking the brahmin then running away. Next screen, Ian attacked me (presumably because he's team Shady Sands!) so I ran back and the merchant and guards *didn't* attack me (brahmin could indeed be pushed as you said would happen). I walked over to a random farmer and *they* turned hostile on sight, attacked me, I ran without fighting and *now* the merchant and guards turned hostile and shot me dead! I expected all of the above to happen *except* the merchant not being hostile when I entered the map. Why would that have happened? Is it worth making it so that any attack on the brahmin turns the merchant hostile automatically?

    EDIT 2: I can now set the brahmin on team Shady Sands when it spawns... do you think it's too odd if it therefore attacks the player unprovoked if they attack the merchant like a loyal pet? That's the only issue I have now... I also set it so that if it's this particular brahmin, it is put on team Shady Sands the moment it is attacked, so the merchant attacks you instantly if you attack his brahmin!
     
    Last edited: Jun 2, 2021
  17. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    That happens because the guards have a check in their critter_proc if the player is an enemy of shady sands - if true, they will attack on sight. Once that happens, the rest of their team will attack you naturally.
    Curtis - the "random farmer" has the same.
    Generic citizens, the merchant and his bodyguards however do not have that check in their critter_proc, so they won't attack you on sight.

    For the merchant and his bodyguards this might be something that Fixt forgot to add. Dunno if it's done on purpose for the generic shady sands people. Maybe it's done so you can return to shady sands but have to avoid guards, as they are looking out for you, etc. Who knows.
     
  18. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    Thanks, I was confused and didn't know different folks were set to decide if you were a foe differently!

    I've updated to v2.1 where the brahmin is on Team Shady Sands from the start. Only thing I'm not sure on is that it now attacks you like a "guard dog" if you attack the merchant! Not sure if that's worth the flexibility of now being able to find the brahmin in its script via its team rather than tile (so even if it moves, the script still works) or if I should just saw "screw it" and leave it as it was in v2.0 but add checks so the merchant and guards attack you on sight if you run off?

    EDIT: I think I've settled on v2.2 (the version linked in the first post now), where the brahmin is *not* on Team Shady Sands from the start (so won't attack you instantly if you attack the merchant) but I did add checks for the merchant and bodyguards to attack you on sight if you're an enemy (so if you shoot the brahmin and run off, they'll attack when you return). This means that you can still "push" his pack brahmin if you move it through attacking, etc. but as the merchant and guards will either be dead or trying to kill you now, it doesn't really matter I think! :)
     
    Last edited: Jun 2, 2021
  19. Lexx

    Lexx Testament to the ghoul lifespan
    Moderator Modder

    Apr 24, 2005
    Dunno. I guess most people won't care / bother with it. If someone decides to attack, they'll kill everything anyways, and if they attack "by accident", they'll usually reload a savegame. So... it probably really doesn't matter.
     
  20. banjo_oz

    banjo_oz First time out of the vault

    57
    Mar 3, 2007
    I agree. I think I am happy with v2.2 as it "fixes" the merchant and guard not attacking you on sight (I feel they should) anyway, but doesn't have the brahmin go crazy and attack you on sight itself! Like you say, at the point you're an enemy of Shady Sands, you're either reloading or planning to wipe the place out anyway, not mess with a brahmin! ;) Thanks for helping me not only fix the issues but also brainstorm the final outcome.

    PS I deliberately left the brahmin script so it can be easily modified if I (or someone else) ever wants to add a similar "static/can't be pushed" brahmin in another location besides Shady Sands (i.e. one can just add the tile and area to the check).

    EDIT: Added new mod: Weaponized Radscorpion Limbs. :)
     
    Last edited: Jun 3, 2021