Fallout 2 mod FO2 Engine Tweaks (Sfall)

Y
Most recent version, 3.8.4, listed here: https://sourceforge.net/projects/sfall/files/sfall/

Is this 3.8.4 version still compatible with the Restoration Project 2.3.3, which I believe is the most recent Restoration Project version?

I ask because the restoration project comes with sfall version 3.3a, but the ddraw.ini isn't entirely updated in that version. For example, the character control option is listed wrongly, and must be changed to the newer command in order to actually work. So, of course, that makes me wonder what other commands are not being utilized because the .ini file isn't properly updated with the correct commands. So, if the 3.8.4 version is still fully compatible with RP 2.3.3, then I would like to find the instructions on how to update sfall without breaking RP 2.3.3 in the process. I mean, would it be a simple matter of copy-paste overwrite of everything, or must I do some other stuff?

Update:
I actually just discovered the readme that comes with the sfall download and followed its instruction, only replacing the dll. However, I also edited the ini manually line-by-line to ensure the commands were the same. I noticed several additions. Many I was unsure about. Some I didn't know if the RP already addressed the problem or not.

I commented out everything I was unsure of, which means I copy-pasted most of the extra additions, and then commented out most everything. I did this because your .ini seems to comment out every command that is unlikely to be used.

Is merely commenting out every command that I am unsure about sufficient to avoid it being used, or is there some kind of instruction site online that can show me what these options are and how to ensure they aren't being used?
The following line:
ModifiedIni=42
Is the ONLY thing you need to put in the new ddraw.ini.

Basically,
1. Install RP
2. Overwrite sfall with version 3.8.4
3. Put ModifiedIni=42 in ddraw.ini.
 
Y

The following line:
ModifiedIni=42
Is the ONLY thing you need to put in the new ddraw.ini.

Basically,
1. Install RP
2. Overwrite sfall with version 3.8.4
3. Put ModifiedIni=42 in ddraw.ini.
Not that easy. You still miss the BoostScriptDialogLimit, WorldMapSlots and ElevatorsFile, and RP will be in a half-working state. :P
 
Code:
---------------------------
Application Error: C:\GOG Games\Fallout 2\fallout2HR.exe
---------------------------
The instruction at 004af46a referenced memory at 099b8024
The memory could not be read from

Click on OK to terminate the application
---------------------------
OK  
---------------------------

Windows XP SP3, Fallout 2 GoG version, RP 2.3.3 + sfall 3.8.4

I was trying to save Vic from Metzger and tried to wipe all enemies with APA / Plated Boxing Gloves fun.

This time it was enemy turn when this happened, one of the Metzger guards started to move inside house and run towards my character and screen went black, but like you see this time I managed to get error report! CTRL+C worked this time.

My save was front of Slaver guild, battle went around 5 minutes, I think before black screen came?

https://ufile.io/yry9k

Here is my ddraw.ini, if you need it for something:
https://pastebin.com/raw/T9gdtXbt
 
I would like to change the FID of dude into a specific critter- That's easily possible with art_change_fid_num. But: As soon as I will open the inventory, etc. the FID changes back to default. My original idea was to run a check in dude's critter_p_proc, see if the FID changes via self_fid and then revert it... but I hadn't thought about the fact that the FID *always* changes if the player stands, walks, uses something, etc... so this becomes a shitty solution.

Is there any smart Sfall way to prevent this?
 
Maybe use (get_game_mode bwand INVENTORY) to check if it's in the inventory screen and also change player's FID?
 
My test doesn't appear to work. Whenever I'm in the inventory, dude is back to his former human appearance.
 
The way I can think of is rather dirty, basically like how the vault boxer appearance works in RP.
Also in Resurrection you can "control" a brain bot for a short time, but it got the same graphic issue as yours.
 
I've checked out the RP script-- if I see it right, it's working with new armor items? That could be a solution... kind of... Not the best one, but uh.
 
I'm testing 4.0 with RP 2.3.3, should be able to release it within one or two weeks if nothing goes wrong.
 
Last edited:
Would like to point out two minor issues with ControlCombat=2 in v3.8.4

1.(not a big deal) after stripping party members of player owned perks (few updates ago) now when having Awareness perk during npc turn, one has no idea how many hit points does the enemy have left, as during their turn Awareness perk does not work.

2.( bigger issue) similar to above npc's don't have the gecko skinning perk and when they get the killing blow on a gecko that gecko does not yeald a gecko/golden gecko skin. Only when player character does the killing blow the gecko has coresponding skin in inventory.

such stuf can be bypassed as Crafty prooved it... For example in Crafty's Sfall for Fo1 v1.7.28 (last one I've tested), when player chooses the Awareness perk, than this perk is also given to party npc's so that no matter who's turn is it, party npc or player's character, everyone can view enemy details so that player (*in front of monitor* is aware of enemy health all the time).

3. also a QoL feature found in above mentioned Crafty's Sfall, is that when turn is handed over to party npc, a small box with blue coloured npc name is shown above shout box (similar place to where sneak/level/addiction status is shown). The icon resembles more of name icon from character sheet, the only difference is that the letters are blue. This is ultra-helpful in determining wich npc turn is it. Without such QoL when for example player having multiple npc's in their team and some of them/all of them lost a fraction of their health pool so that they are not at their max, it is tiersome to hit char sheet, just to identify wich npc is beeing controlled at the moment, and doing so every spacebar hit is super annoying. It would be cool to have this QoL improovement in some future sfall update.
 
Truth told, I don't like the awareness perk at all the way it is--- I mean, is there any person in existence who does *not* take it right away? It's always my first perk. Always. And it activates a mechanic that should be activated by default (similar to party member outlines).
There should be a toggle option to activate the feature by default and deactivate the perk. Now that would be something I could get behind with.

/edit: I just checked the vanilla scripts and there is not a single use of the perk anywhere outside of "show me hitpoints and weapon". So yeah, complete shit that should be removed.
 
Last edited:
Another question: When using a scenery object, the player will *always* play the "use" animation first (either "ground" or "middle"), then the actual script action runs. Do we have any way to override the use animation? I'd like to have my script kick in right away, without the use animation to appear. Something like script_overrides sadly doesn't work in this case.
 
@Lexx
As long as awareness effect is enabled by default (and the perk gone) [same way as Friendly Foe perk in Sfall for Fo1] I'm all for it. However it would have to work for all party members when CombatControl=2

also Gecko Skinning perk should be global and not only when player character does a gecko kill.

The notification indicating who's turn is it when running with ControlCombat=2 would also be nice.

And it would be even cooler if those changes in Sfall were compatible not only with Fo2RP but also for example Ressurection. i find that modification even more awsome than original fallouts. Probably due to the fact that I don't know yet what's under every stone and bookcase yet.
 
The gecko skinning part can be scripted, and it's been added to the party control script in the coming 4.0. All controlled critters will have Gecko Skinning perk.

As for Awareness, from my testing it seems not possible to add it to other controlled critters in combat with scripting. While it's possible and easy to exclude it from the perk resetting in the party control code in sfall, I'm not sure if it should be made "global" once it's taken. In my opinion it's your player character has good enough awareness to notice how many bullets left in target's weapon, not other NPCs.

EDIT: here's a global script to apply Awareness and Gecko Skinning perks to all critters on the map for the party control in sfall 3.8.x, probably not the best solution but at least it works:
Code:
// gl_globalperks.ssl
procedure start;
#include ".\HEADERS\DEFINE.H"
#include ".\HEADERS\define_extra.h"
#include ".\HEADERS\sfall.h"

variable
   critter_list,
   critter,
   hasAwareness := false,
   hasGeckoSkinning := false;

procedure start begin
   if game_loaded and (sfall_ver_major < 4) then begin
      set_global_script_repeat(60);
      if has_trait(TRAIT_PERK, dude_obj, PERK_bonus_awareness) then hasAwareness := true;
      if has_trait(TRAIT_PERK, dude_obj, PERK_gecko_skinning_perk) then hasGeckoSkinning := true;
      set_perk_ranks(PERK_gecko_skinning_perk, 1); // surprising the perk has no rank limit.
   end else begin
      if (get_ini_setting("ddraw.ini|Misc|ControlCombat") >= 1) then begin
         critter_list := list_begin(LIST_CRITTERS);
         while (critter_list != 0) do begin
            critter := list_next(critter_list);
            if critter then begin
               if hasAwareness then critter_add_trait(critter, TRAIT_PERK, PERK_bonus_awareness, 1);
               if hasGeckoSkinning then critter_add_trait(critter, TRAIT_PERK, PERK_gecko_skinning_perk, 1);
            end else begin
               list_end(critter_list);
               critter_list := 0;
            end
         end
      end
   end
end
It has a limit that the perk applying only works when loading a save that the player character already has the perks. If you gain the perks during the game, you need to save and re-load the game to make it work.
 
Last edited:
Than how about doing as Lexx sugested: make Awareness perk 4 all a custom switch in sfall, same way as Friendly Foe in Crafty's Sfall for Fo1.

As Lexx said Awareness shouldn't be a perk only a must have "Quality of Life" feature. Now what's the point of choosing a perk when almost always one takes Awareness perk, with the only exception of playing a blind char, in wich case you don't meet the criteria for the perk. But then agin you could turn it off in sfall as well for that playthrough.
 
You can't assume that everyone takes the Awareness perk at level 3/4. I don't. I typically wait until level 12> before using it...I generally micromanage my perks and wait until the later levels before using the perks like Lifegiver and Toughness multiple times. But I usually play a solo game with just a single NPC, as a pack mule. Each to their own...
 
At that level it's kinda useless to pick the perk, because you should be able to quickly kill anything anyway. No need to check for hitpoints or weapons anymore.
 
OK, actually Awareness perk can also be scripted. In my previous post I did something stupid for the game that prevented the perk being added to critters. I've updated my previous post. Guess I'll just leave the perk stuff as it is.
 
Last edited:
OK, actually Awareness perk can also be scripted. In my previous post I did something stupid for the game that prevented the perk being added to critters. I've updated my previous post. Guess I'll just leave the perk stuff as it is.
Code:
critter_list := list_begin(LIST_CRITTERS);
I do not quite understand, do you give perks for each the critters on the map?

Maybe you need to use function party_member_list_critters?

Code:
   if game_loaded and (sfall_ver_major < 4) then begin
     set_global_script_repeat(60);
     if has_trait(TRAIT_PERK, dude_obj, PERK_bonus_awareness) then hasAwareness := true;
     if has_trait(TRAIT_PERK, dude_obj, PERK_gecko_skinning_perk) then hasGeckoSkinning := true;
this code will check the perks only when starting or loading the game)
 
Last edited:
Back
Top