Fallout 2 utility Quantum's Fallout Modding 'How To' Videos

QuantumApprentice

Where'd That 6th Toe Come From?
A couple months ago, Lexx requested I make a single post with all my modding videos on it for posterity.
Well...here it is :P

Basic Setup and Install Procedure for 4 of the best modding programs for Fallout 2.

Original Forum Post: https://www.nma-fallout.com/threads/fallout-2-modding-tools-install-procedure.219690/

You may want to consider perusing the Restoration Project and the Unofficial Patch scripts for bug fixes or if you want to contribute to one of their mods.
Some info about alternative sets of script headers UPU and RPU: https://www.nma-fallout.com/threads/help-setting-up-ssl-scripting-properly.219689/

Links to Modding Utilities used in this video:
Fallout 2 Mapper -- https://www.nma-fallout.com/resources/bis-mapper.55/
Fallout 2 Proto Manager -- https://www.nma-fallout.com/resources/fallout-2-proto-manager.73/
Fallout 2 DAT Explorer -- https://www.nma-fallout.com/resources/dat-explorer-by-dims.56/
sFall Script Editor-- https://drive.google.com/file/d/1FfRbKX1sdY8aBpnUCZ0ncHr9FAj5GnAg/view?usp=sharing
-- https://github.com/rotators/fallout-tools/tree/master/sFall-ScriptEditor
-- https://www.nma-fallout.com/resources/sfall-script-editor.77/ (removed - sad face)
-- https://github.com/FakelsHub/sFall-ScriptEditor (not currently available outside Russia :.( )
sFall v4.2.6 -- https://sourceforge.net/projects/sfall/files/
---------------------------------------------------------------------------------------------------------------------------------------

Fallout 2 Mapper - A basic guide to creating a new map and setting your copy of Fallout 2 to start the game with that new map.

Original Post: https://www.nma-fallout.com/threads/mapper-crash-when-walking-on-world-map-exit-grid.219699/

Links to Modding Utilities used in this video:
Fallout 2 Mapper -- https://www.nma-fallout.com/resources/bis-mapper.55/
---------------------------------------------------------------------------------------------------------------------------------------

Mapper problems on Windows 10 - A short description of a fix to one possible problem getting the mapper to work on windows 10.

Original Forum Post: https://www.nma-fallout.com/threads/bis-mapper-error-initializing-video.218376/

---------------------------------------------------------------------------------------------------------------------------------------

A bunch of useful tips and tricks I've discovered throughout the process of learning to make a mod. There is a specific tip on how to adjust the Sfall mod to allow for uncommon resolutions.


Info on alternative resolution settings: https://www.nma-fallout.com/threads/how-to-set-correct-widescreen-resolution-for-fallout-2.213432/

---------------------------------------------------------------------------------------------------------------------------------------

Exit Grids - A detailed breakdown of how exit grids work in the mapper, how to set them to point to other maps, and how to change city settings on the world map.

Original Post: https://www.nma-fallout.com/threads/mapper-crash-when-walking-on-world-map-exit-grid.219699/

Links to Modding Utilities used in this video:
Fallout 2 Mapper -- https://www.nma-fallout.com/resources/bis-mapper.55/
DAT Explorer -- https://www.nma-fallout.com/resources/dat-explorer-by-dims.56/

Links to Wiki entries used in this video:
Exit Grids Wiki: https://falloutmods.fandom.com/wiki/Exit_grids
Description of the MAPS.TXT settings: https://falloutmods.fandom.com/wiki/MAPS.TXT_File_Format
Description of the CITY.TXT settings: https://falloutmods.fandom.com/wiki/CITY.TXT_File_Format
Other informative links that provide further descriptions of the same content:
https://falloutmods.fandom.com/wiki/Adding_maps
https://falloutmods.fandom.com/wiki/Worldmap,_Maps_and_City_text_editing_guide
---------------------------------------------------------------------------------------------------------------------------------------
 
Last edited:
Sfall Script Editor - Basic Guide to the Sfall Script Editor.

Info on Dialogue Functions Config: https://www.nma-fallout.com/threads/sfall-script-editor-dialog-functions-config.219805/

Links to Modding Utilities used in this video:
sFall Script Editor -- https://www.nma-fallout.com/resources/sfall-script-editor.77/
sFall v4.2.6 -- https://sourceforge.net/projects/sfall/files/
Sfall Modders Pack (don't click the "Download" button, instead click the most recent version of the Modders pack to get the correct download)
https://sourceforge.net/projects/sfall/files/Modders pack/
---------------------------------------------------------------------------------------------------------------------------------------

Basic Dialogue - Very Basic Guide to Creating Dialogue with the Sfall Script Editor.


Links to Modding Utilities used in this video:
Fallout 2 DAT Explorer -- https://www.nma-fallout.com/resources/dat-explorer-by-dims.56/
sFall Script Editor -- https://www.nma-fallout.com/resources/sfall-script-editor.77/

---------------------------------------------------------------------------------------------------------------------------------------

New SFX Guide - How to add new sound effects to Fallout 2, and how to attach them to weapons and items.

Original Post: https://www.nma-fallout.com/threads/help-adding-sound-files-to-weapons.219874/

Batch File Scripts used in this video:
Convert to WAV:
Code:
set /p vtype="The original video file extension is (default mkv): "
IF NOT DEFINED vtype SET "vtype=mkv"
For /F "tokens=*" %%G IN ('dir /b *.%vtype%') DO ffmpeg -i "%%G" -ar 11025 "%%~nG WAV.WAV"

Convert to ACM:
Code:
set /p atype="The original audio file extension is (default wav): "
IF NOT DEFINED atype SET "atype=wav"
For /F "tokens=*" %%G IN ('dir /b *.%atype%') DO snd2acm "%%G" "%%~nG.acm"

Links to Modding Utilities used in this video:
Snd2Acm -- https://www.mediafire.com/file/pkbfbepo98y5fbs/snd2acm_v1.0b_by_ABel.rar/file
RegSnd -- (THIS VERSION HAS A VIRUS!!! DON"T DOWNLOAD!!! I'll be uploading a clean version later this evening!) w__.mediafire.com/file/mlx8s52bzgczsf6/regsnd_v1.4_by_ABel.rar/file
DAT Explorer II beta1.0 -- https://www.nma-fallout.com/resources/fallout-dat-explorer-ii.121/
Audacity -- https://www.audacityteam.org/download/
FFmpeg -- https://ffmpeg.org/download.html
---------------------------------------------------------------------------------------------------------------------------------------

New Critters From Scratch - Includes scene set-up and render from Blender, conversion to image formats compatible with Fallout, adding those images to Fallout 2, then attaching those images to a new critter in the Proto Manager.

Original Forum Post: https://www.nma-fallout.com/threads/making-a-new-critter-for-fallout-2.219904/
I drew inspiration from this post: https://www.nma-fallout.com/threads/blender-camera-resource.219687/

Lexx pointed out that you can just press F12 in the mapper to screencap, so consider that as an alternative to the ALT+Print Screen method I used.

Scripts used in this video:
Frame Animator Script to Create an FRM from Multiple Folders:
Code:
ADD_FRAMES, 0, NE\*.PNG
ADD_FRAMES, 1, E\*.PNG
ADD_FRAMES, 2, SE\*.PNG
ADD_FRAMES, 3, SW\*.PNG
ADD_FRAMES, 4, W\*.PNG
ADD_FRAMES, 5, NW\*.PNG
SET_OPTION,AUTOCUTTING,1
SET_FRAMES_OFFSET, 0,-6,6
SET_FRAMES_OFFSET, 1,-6,6
SET_FRAMES_OFFSET, 2,-6,6
SET_FRAMES_OFFSET, 3,-6,6
SET_FRAMES_OFFSET, 4,-6,6
SET_FRAMES_OFFSET, 5,-6,6

Blender Python Render Multiple Cameras to Folders Script
Code:
import bpy
import os
# save for restore
path_dir = bpy.context.scene.render.filepath
# list of cameras
for cam in [obj for obj in bpy.data.objects if obj.type == 'CAMERA']:
    bpy.context.scene.camera = cam
    original_file_path = path_dir
    camera_path = cam.name.replace("Camera_", "")   
    file_path = os.path.join(path_dir, camera_path + "\\")
    bpy.context.scene.render.filepath = file_path
    bpy.ops.render.render(animation=True, write_still=True)
    bpy.context.scene.render.filepath = original_file_path

Links to other sources of information:
FRM Naming Conventions Wiki: https://falloutmods.fandom.com/wiki/Critter_FRM_Nomenclature_(Naming_System)
Fallout 2 written tutorial on converting from 3D to FRM: https://falloutmods.fandom.com/wiki/Generating_images_in_3ds_Max

Links to Modding Utilities used in this video:
Frame Animator 2.70.1 (This one works with scripts) -- https://www.mediafire.com/file/5j459iahzyus5h4/Frame_Animator_v2.70.1_by_Jochua.zip/file

---------------------------------------------------------------------------------------------------------------------------------------

How to Install FFmpeg - I cover as many different ways to edit and convert different file types as I can in each video, but by far the most useful tool I've ever used is ffmpeg, and I tend to use it a lot to automate certain tasks.


Link to download FFmpeg:
FFmpeg -- https://ffmpeg.org/download.html
 
Last edited:
This video explains the basic steps to make a new world map for Fallout 2 in about 20 minutes, but once you get the steps down it'll only take a minute to actually convert and copy all the pieces to the right places.



+++Downloads+++
MSK2BMP2020 Github download page:
https://github.com/temaperacl/msk2bmp/releases

+++Scripts+++
All three of the scripts used in this video can be found here:
https://github.com/QuantumApprentice/FO2-Modding-Batch_Scripts

+++Other Links+++
These links are to different wiki's that cover the World Map:
https://falloutmods.fandom.com/wiki/Editing_the_world_map
https://falloutmods.fandom.com/wiki/Making_a_new_worldmap
https://falloutmods.fandom.com/wiki/Worldmap.txt_File_Format

---------------------------------------------------------------------------------------------------------------------------------------
3 Ways to Write a Follow Script.


My first full length scripting video...complicated and long...but I hope the editing at least makes sense.
I'd love any feedback on how to better explain what's going on with the scripting process.
And, though I hesitate to ask, I'd love any feedback on anything I missed or got wrong :)

A couple of tips from the author of the Sfall Script Editor:
"Instead of the old assignment := you can use modern way =

There are some tricks to writing code, so writing the word
'var' press the Tab key and the word replaced to 'variable'
the same thing with:
proc -> Тab -> procedure
if -> Тab
elif -> Тab
while/for -> Тab

to avoid writing the keyword 'end' every time, press Enter after the keyword 'begin' - this will automatically insert the keyword end."

The largest collection of scripting tutorials I've found to date:
https://falloutmods.fandom.com/wiki/Category:Fallout_2_tutorials_-_scripting
Backup link: https://falloutmods.fandom.com/wiki/Fallout_2_tutorials

"Miria Mod" scripting tutorial:
https://falloutmods.fandom.com/wiki/Building_a_Better_Miria_Mod

"for" loop examples:
1) FO1in2 mod - https://github.com/rotators/Fo1in2/...Mapper/source/scripts/headers/command.h#L1036
2) sfall sample script - https://github.com/phobos2077/sfall...mods/ComputeDamage/gl_compute_damage.ssl#L102
"while" loop example:
1) FO1in2 mod - https://github.com/rotators/Fo1in2/...1in2/Mapper/source/scripts/headers/fo1.h#L503
 
Last edited:
Cool series, very well made.

In the video where someone said he gets black screen if he changes resolution for the mapper, it's easy to fix, just right click the .exe, Compatibility, DPI settings, then set aside DPI scaling for use for Programs (sorry probably a bad translation, i don't have english OS).
 
Cool series, very well made.

In the video where someone said he gets black screen if he changes resolution for the mapper, it's easy to fix, just right click the .exe, Compatibility, DPI settings, then set aside DPI scaling for use for Programs (sorry probably a bad translation, i don't have english OS).

Thanks for the tip! Hopefully others will find it useful :)
Also, the translation was fine :)
 
I just wanted to say Thank You for this. It made setting up the scripting IDE for modern Fallout 2 / sfall quite easy.
 
How would you organize something like a random loot table?
Oh wow, sorry for the late reply.
You'd just need to add a line or two in the destroy_p_proc section, randomly choosing an item from a list you've made. You should be able to find item defines in the ITEMPID.H header file, which you should be able to find in the mapper "Updated source codes" folder in the "RP source\headers" folder, or another version in the "RP 2.3.3 source codes by Killap\HEADERS" folder. Both should work fine, although there might be a couple new items not found in vanilla Fallout 2.

Examples:
C:
//using an sfall array
procedure destroy_p_proc begin
   variable arr := [
      PID_HOLY_HAND_GRENADE,
      PID_ABNORMAL_BRAIN,
      PID_DECK_OF_CARDS,
      PID_CHEEZY_POOFS,
      PID_RUBBER_BOOTS
   ];
   variable index := random(0,4);                     //<== 0,4 because arrays are 0-indexed
   variable item_PID := arr[index];                   //<== pick item PID (Proto ID) from the list

   variable item  := create_object(item_PID,0,0);     //<== create a single item
   add_obj_to_inven(self_obj, item);                  //<== add single item to inventory
   variable item_count := 5;                          //<== number to create for multiple items
   add_mult_objs_to_inven(self_obj,item,item_count);  //<== create multiple items in inventory
end
C:
//using a switch (also from sfall)
//switches actually compile to nested if/else statements
//but I think you need modern sfall compiler for this to work
procedure destroy_p_proc begin
   variable item_PID;
   variable index := random(1,5);
   switch (index) begin
      case 1: item_PID := PID_HOLY_HAND_GRENADE;
      case 2: item_PID := PID_ABNORMAL_BRAIN;
      case 3: item_PID := PID_DECK_OF_CARDS;
      case 4: item_PID := PID_CHEEZY_POOFS;
      case 5: item_PID := PID_RUBBER_BOOTS;
   end

   variable item  := create_object(item_PID,0,0);     //<== create a single item
   add_obj_to_inven(self_obj, item);                  //<== add single item to inventory
   variable item_count := 5;                          //<== number to create for multiple items
   add_mult_objs_to_inven(self_obj,item,item_count);  //<== create multiple items in inventory
end
C:
//this one just uses if/else statements
//this arrangement is slightly cleaner than what
//sfall compiler produces from a switch statement
procedure destroy_p_proc begin
   variable item_PID;
   variable index := random(1,5);
        if (index == 1) then item_pid := PID_HOLY_HAND_GRENADE;   //<== I just lined up the "if"s so it looks neat :P
   else if (index == 2) then item_pid := PID_ABNORMAL_BRAIN;
   else if (index == 3) then item_pid := PID_DECK_OF_CARDS;
   else if (index == 4) then item_pid := PID_CHEEZY_POOFS;
   else if (index == 5) then item_pid := PID_RUBBER_BOOTS;

   variable item  := create_object(item_PID,0,0);     //<== create a single item
   add_obj_to_inven(self_obj, item);                  //<== add single item to inventory
   variable item_count := 5;                          //<== number to create for multiple items
   add_mult_objs_to_inven(self_obj,item,item_count);  //<== create multiple items in inventory
end
There might be a better option, but Fallout 1/2 weren't really known for having random loot tables, so I don't thing they made any specific solutions.

Also, note that I left a blank line between the section that picks the item PID and the section that actually creates the item in the critters inventory.
There are unfortunately not that many ways that I'm aware of to have a list in SSL.

The original devs would just have lines of restock item macro calls when trying to implement random restocking.
(These lines come from SISHELF1.SSL in the NCR script folder)
C:
         check_restock_item(PID_44_MAGNUM_JHP, 7, 10, 40)
         check_restock_item(PID_BBS, 30, 50, 10)
         check_restock_item(PID_AVENGER_MINIGUN, 0, 1, 100)
         check_restock_item(PID_HK_G11, 0, 2, 100)
         check_restock_item(PID_PANCOR_JACKHAMMER, 0, 1, 100)
         check_restock_item(PID_LIGHT_SUPPORT_WEAPON, 0, 1, 100)
         check_restock_item(PID_4_7MM_CASELESS, 1, 4, 25)

You can find the check_restock_item() macro in COMMAND.H (once again in the HEADERS folder along with a bunch of other useful macros for restocking), but this is a possible alternative to just choosing an item from a list.
C:
#define check_restock_item(the_item, min_amt, max_amt, res_perc)                    \
        restock_amt := random(min_amt, max_amt);                                    \
        if (obj_is_carrying_obj_pid(self_obj, the_item) < restock_amt) then begin   \
            if (res_perc >= random(1,100)) then begin                               \
               stock_pid_qty(self_obj, the_item, restock_amt)                       \
            end                                                                     \
        end else begin                                                              \
           stock_pid_qty(self_obj, the_item, restock_amt)                           \
        end

Note that restock_amt is also random, if you wanted random amounts of any specific item to spawn.
Similarly you could set "item_count := random(1,5);" to get a similar effect (swap 1 and 5 for your own limits.)
Also, you can loop multiple times over the earlier examples to produce multiple items randomly from the list.

And actually you can just do whatever you want when writing the switch and if/else versions.
Just drop whatever loot you feel like in between "then begin" and "end" :P
Example:
C:
else if (index == 3) then begin
   variable item  := create_object(PID_HOLY_HAND_GRENADE,0,0);
   add_obj_to_inven(self_obj, item);
   item  := create_object(PID_AVENGER_MINIGUN,0,0);
   add_obj_to_inven(self_obj, item);
   item  := create_object(PID_CHEEZY_POOFS,0,0);
   add_obj_to_inven(self_obj, item);
end
 
Last edited:
I am unable to place anything in the mapper unless it is a tile pattern. Anyone know what the issue could be? I followed quantum's guide
Hmm...one thing I forgot to mention in that guide was that you need to right click the items/critters/etc to actually select them, before you can place them on the map. I really need to make a more fleshed out version of that video :*(
But for now, does that help?
 
Hmm...one thing I forgot to mention in that guide was that you need to right click the items/critters/etc to actually select them, before you can place them on the map. I really need to make a more fleshed out version of that video :*(
But for now, does that help?
Thank you so much. I'm at work now, but I'll try when I get home and let you know!
 
Back
Top