Fallout 2 mod FO2 Engine Tweaks (Sfall)

Nirran posted an example global script years ago.
Yes, global script displays an additional message on the screen.
display_msg("You gain " + floor(math) + " experience from Swift Learner Perk.")
What if the macro is already included Swift Learner, global script will introduce some confusion when receiving the quest experience :)
Code:
#define give_xp(x)     give_exp_points(x); \
                       if has_trait(TRAIT_PERK, dude_obj, PERK_swift_learner) then \
                       global_temp:=x+(x*(5*(has_trait(TRAIT_PERK, dude_obj, PERK_swift_learner)))/100);\
                       else global_temp:=x; \
                       display_msg(message_str(SCRIPT_GENERIC,100)+global_temp+message_str(SCRIPT_GENERIC,101))
 
Last edited:
Sure, but it would require recompiling nearly all scripts. The global script way is easier as an additional add-on for existing mods without recompiling stuff.
 
Sure, but it would require recompiling nearly all scripts. The global script way is easier as an additional add-on for existing mods without recompiling stuff.
I understand, but I look at it from the perspective of the creation new projects, and not mods to vanilla F2.
 
What is the specific purpose of TurnHighlightContainers? Is it just to highlight dead characters/enemies? And by the way...is there a way to permanently toggle on item highlights, rather than a momentary toggle key?
 
For what purposes is enabled Hero Appearance Mod adds a number(the total number of registered FID Criitters.lst) to the FID of the player (dude_obj) bug?
FID APA should be equal 16777287 and we have ...407
fid.PNG

Для каких целей включенный Hero Appearance Mod прибавляет число(общее количество зарегистрированных FID в Criitters.lst) к FID игрока (dude_obj) баг?
 
Last edited:
Для каких целей включенный Hero Appearance Mod прибавляет число(общее количество зарегистрированных FID в Criitters.lst) к FID игрока (dude_obj) баг?
Твое сообщение одинаково непонятно что на английском что на русском)) Не мог бы ты перефразировать вопрос? Какой FID игрока, как ты его получаешь, при каких условиях и что за число?
 
Какой FID игрока, как ты его получаешь, при каких условиях и что за число?
На картинке fid игрока при включенном моде HeroAppearanceMod=1
fid получаем стандартно с помощью obj_art_fid(dude_obj)
и к fid игрока прибавляется общее количество прописанных в art/СRITTERS.LST frm-криттеров
в данном случае у меня в .lst 120 fid-анимаций(или как их там правильно называть я не знаю), поэтому имеем 16777287+120=16777407 (16777287 - FID Криттера в APA)
я еще долго разбирался в чем косяк, потом выключил мод и все стало как должно быть.
с криттерами/нпс все нормально.
проверял на версии 3.8.1
 
Last edited:
+еще пару багов нашел.
ExplosionsEmitLight=1 ;Set to 1 to make explosions and projectiles emit light
При включенной опции не поджигает PID_FLARE(вспышка) при его броске.

И еще сопутствующий баг при броске с хуком hs_withinperception игра крашится (на версии Crafty не возникает). Разберусь что там точно отпишу.

Разобрался... похоже вы не исправляли фукнции call_offset_r#() - на них игра и крашится.
Использую такие движковые функции
call_offset_r0(0x42E3F4) // is_pc_sneak_working_
call_offset_r2(0x412BEC, source, target) // can_see_(source, target)
call_offset_r2(0x48BBD4, target, source) // obj_dist_(target, source)
 
Last edited:
Что значит не исправляли? Что не так с этими функциями?
Игра на них критует.
Crafty said:
Как выяснилось call_offset_[v|r]1-call_offset_[v|r]4 полностью сломаны (неправильно читают аргументы). И даже после быстрого исправления я начал получать краш (до него просто не работало).
После того как Crafty в своей версии их исправил ими стало можно пользоваться.
 
Use32BitHeadGraphics - when using the "New Heads" they are displayed correctly only with 640x480 on other resolutions the picture of the head is shifted in the upper left corner.
It is possible to bring to working condition?

to @Phobos
Use32BitHeadGraphics - при использовании "Новых Голов" они корректно отображаются только при 640x480 на других разрешениях картинка головы смещается в левый верхний угол.
Можно это довести до рабочего состояния?
 
Last edited:
Code:
//Bodypart hit chances
    *((DWORD*)0x510954) = GetPrivateProfileIntA("Misc", "BodyHit_Head",      0xFFFFFFD8, ini);
    *((DWORD*)0x510958) = GetPrivateProfileIntA("Misc", "BodyHit_Left_Arm",  0xFFFFFFE2, ini);
    *((DWORD*)0x51095C) = GetPrivateProfileIntA("Misc", "BodyHit_Right_Arm", 0xFFFFFFE2, ini);
    *((DWORD*)0x510960) = GetPrivateProfileIntA("Misc", "BodyHit_Torso",     0x00000000, ini);
    *((DWORD*)0x510964) = GetPrivateProfileIntA("Misc", "BodyHit_Right_Leg", 0xFFFFFFEC, ini);
    *((DWORD*)0x510968) = GetPrivateProfileIntA("Misc", "BodyHit_Left_Leg",  0xFFFFFFEC, ini);
    *((DWORD*)0x51096C) = GetPrivateProfileIntA("Misc", "BodyHit_Eyes",      0xFFFFFFC4, ini);
    *((DWORD*)0x510970) = GetPrivateProfileIntA("Misc", "BodyHit_Groin",     0xFFFFFFE2, ini);
    *((DWORD*)0x510974) = GetPrivateProfileIntA("Misc", "BodyHit_Torso",     0x00000000, ini);
The last line remove or restore BodyHit_Uncalled.
Otherwise it is not working correctly, and BodyHit_Torso gives a penalty/bonus to all attacks.
 
Code:
//Bodypart hit chances
    *((DWORD*)0x510974) = GetPrivateProfileIntA("Misc", "BodyHit_Torso",     0x00000000, ini);
The last line remove or restore BodyHit_Uncalled.
Otherwise it is not working correctly, and BodyHit_Torso gives a penalty/bonus to all attacks.
If you mean like setting BodyHit_Torso=-5 and all normal uncalled attacks are also received -5% penalty, it's because BodyHit_Torso is supposed to have equal ToHit chance to uncalled attacks. Making aiming torso has different ToHit chance from uncalled attacks is somewhat weird IMO.

EDIT: hmm, guess I didn't think of some cases like someone wants to make torso shots have higher ToHit chance than uncalled shots to represent the fact player is "aiming".
 
Last edited:
guess I didn't think of some cases like someone wants to make torso shots have higher ToHit chance than uncalled shots to represent the fact player is "aiming".
You are absolutely right.
If a player aiming shoots in the Torso on spending 1 AP more, why not give him a bonus to accuracy. :)
 
Crafty posted some explanation on Fallout.ru.
Looks like separating BodyHit_Torso and BodyHit_Uncalled would result in an inconsistency on critical chance calculation for uncalled shots.
 
Crafty posted some explanation on Fallout.ru.
Looks like separating BodyHit_Torso and BodyHit_Uncalled would result in an inconsistency on critical chance calculation for uncalled shots.
Ok. Then it would be right to rename Torso in Uncallled.
I used a script method.
Code:
if AimedShot and combat_is_initialized and not(set_AimedShot_Torso) then begin
    set_bodypart_hit_modifier(3, bonus);
    set_bodypart_hit_modifier(8, bonus);
    set_AimedShot_Torso:=true;
end else if combat_is_initialized and set_AimedShot_Torso and not(AimedShot) then begin
    set_bodypart_hit_modifier(3, 0);
    set_bodypart_hit_modifier(8, 0);
    set_AimedShot_Torso:=false;
end
 
Last edited:
Or maybe rename to something like BodyHit_Torso_Uncalled? Sure the name is even longer than the original BodypartHitModX, but at least it will be more clearly IMO.
Leaving BodyHit_Uncalled instead of BodyHit_Torso will probably make other people wonder where is the setting for modifying torso ToHit.

And set_bodypart_hit_modifier has been tweaked in the way that if you use set_bodypart_hit_modifier(3, X), sfall will also do set_bodypart_hit_modifier(8, X), or vice versa.
 
Last edited:
Back
Top