mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b066e9d533 | ||
|
|
6e8f2c6c36 | ||
|
|
0044af0362 | ||
|
|
ce0e950884 | ||
|
|
a66ff8d252 | ||
|
|
9bd9837a7d | ||
|
|
a89e672355 | ||
|
|
b32c358a77 | ||
|
|
1b98bedd6f | ||
|
|
596b485d9c | ||
|
|
ae53c9586a | ||
|
|
7b53814c82 | ||
|
|
e9b40f5491 | ||
|
|
71a7545445 | ||
|
|
42ab38a333 | ||
|
|
c540ce8e72 | ||
|
|
3db8ed3381 | ||
|
|
de009eec4e | ||
|
|
9268776736 | ||
|
|
c09ed0565b | ||
|
|
e57f9b5503 | ||
|
|
39ed1d313f | ||
|
|
510bd6ddeb | ||
|
|
c0f11b7a46 | ||
|
|
1cb1284787 | ||
|
|
af2fdb5153 | ||
|
|
22fbac8b9f | ||
|
|
8bd0861b01 | ||
|
|
b8fe8cb4e3 | ||
|
|
4f786f3302 | ||
|
|
ff650d8007 | ||
|
|
9e4ac57775 | ||
|
|
bfbbc339d0 | ||
|
|
5ff5bc647e | ||
|
|
89ffc619d3 | ||
|
|
ea9a701f51 | ||
|
|
7e47607781 | ||
|
|
cfcc66ad1a | ||
|
|
ff5c9c9cfc | ||
|
|
dcbe6c9c7e | ||
|
|
96bfe13939 | ||
|
|
b5a9679c6c | ||
|
|
71e43cb890 | ||
|
|
4bc981dbc1 | ||
|
|
34a81e4f54 | ||
|
|
584e026624 | ||
|
|
1cca798b80 | ||
|
|
47d9bb1627 | ||
|
|
2b8b797920 | ||
|
|
b1ce08a78f | ||
|
|
143ec750cf | ||
|
|
e2b5a0652d | ||
|
|
c6635f65e5 | ||
|
|
daf9e57d36 | ||
|
|
59f1ed0233 | ||
|
|
7c8d2d6269 | ||
|
|
75019a5546 | ||
|
|
1b3530e702 | ||
|
|
deee6fc521 | ||
|
|
e703a82c8b | ||
|
|
5769843b89 | ||
|
|
7e2eaf0724 | ||
|
|
b6a4c8d476 | ||
|
|
1524c7daa0 | ||
|
|
228f8966f2 | ||
|
|
e923fa801b | ||
|
|
16dacee0e0 | ||
|
|
b4fe9b3e57 | ||
|
|
553c7cc195 | ||
|
|
61f3a2ac13 | ||
|
|
aca6c92d86 | ||
|
|
5d7015bbb5 | ||
|
|
f0ec82923d | ||
|
|
cd5c803386 | ||
|
|
c95d872f77 | ||
|
|
5c3c1ca4db | ||
|
|
cb1a3dd764 | ||
|
|
4c441d5852 | ||
|
|
53c294cf98 | ||
|
|
5394352bf0 | ||
|
|
f267224428 | ||
|
|
b189fe9252 | ||
|
|
b2c9b1cc23 | ||
|
|
0e8b6efe49 | ||
|
|
6d66bfffb0 | ||
|
|
6eeb674641 | ||
|
|
b94993d756 | ||
|
|
a2ea1910f5 | ||
|
|
ddb3cf9b6e | ||
|
|
321f8e1ab2 | ||
|
|
66559812bd | ||
|
|
f968dea5e7 | ||
|
|
664fb84dc5 | ||
|
|
74ef65335d | ||
|
|
9f6ca9d55d | ||
|
|
f42b232e19 | ||
|
|
0926ace899 | ||
|
|
b2023b7e51 | ||
|
|
1f962458cd | ||
|
|
0bb5941c98 | ||
|
|
3e4e9ff4e6 | ||
|
|
ece95a95e9 | ||
|
|
5f38744a2e | ||
|
|
c0aac45b0c | ||
|
|
d7a974c50b | ||
|
|
3f8d322697 | ||
|
|
50b51fc1a3 | ||
|
|
e1aebb21e4 | ||
|
|
a5075734cc | ||
|
|
4adb6dffe2 | ||
|
|
3b29088818 | ||
|
|
3a3760704c | ||
|
|
b619ea3fba | ||
|
|
ae7921fe26 | ||
|
|
14f6de0329 | ||
|
|
e33a025c62 | ||
|
|
20088ffcb1 | ||
|
|
cec091bda2 | ||
|
|
97c2b111ff | ||
|
|
1e4bbaedbd | ||
|
|
fce35c7e14 | ||
|
|
4d19fa2d60 | ||
|
|
0a6a604abc | ||
|
|
2cef5310e2 | ||
|
|
fe7aa9ae04 | ||
|
|
b36771da48 | ||
|
|
ad6491d61e | ||
|
|
4de5de6a0c | ||
|
|
347b4a3ecb | ||
|
|
0b161c7374 | ||
|
|
7bbc15ab0b | ||
|
|
ac02971d61 | ||
|
|
e4ea3645d6 | ||
|
|
f9dc7a3e25 | ||
|
|
3f7ce8c412 | ||
|
|
6d3afd4e7d | ||
|
|
2fcf81cb78 | ||
|
|
b8c52304eb | ||
|
|
23d1e3b9c8 | ||
|
|
7baa6de014 | ||
|
|
7bf562338c | ||
|
|
5f38a934ca | ||
|
|
3c40518e87 | ||
|
|
7939924257 | ||
|
|
dc665cb741 | ||
|
|
d7127a4deb | ||
|
|
46a80fdb6a | ||
|
|
492e31410c | ||
|
|
f5e7235a80 | ||
|
|
0fef6f1f8c | ||
|
|
4b9008d53c | ||
|
|
0d960ca326 | ||
|
|
c95d074f44 | ||
|
|
4b88bfad10 | ||
|
|
94388d3470 | ||
|
|
208cacc4dd | ||
|
|
f222348b25 | ||
|
|
49cf0e6726 | ||
|
|
d107edbb23 | ||
|
|
e9f8984819 | ||
|
|
ab0c373a9b | ||
|
|
1c34f85789 | ||
|
|
b317ed71ce | ||
|
|
9197966993 | ||
|
|
21fe99a297 | ||
|
|
ac1abf71f8 | ||
|
|
bfc9fd4d88 | ||
|
|
f755e0a1dc | ||
|
|
3d88304777 | ||
|
|
4e37fb0228 | ||
|
|
0de7614c53 | ||
|
|
d5268f3fbc | ||
|
|
19db722948 | ||
|
|
c2dde7485a | ||
|
|
c73f311b22 | ||
|
|
000816acb5 | ||
|
|
37e7af2a17 | ||
|
|
befea69909 | ||
|
|
a3cfc481a5 | ||
|
|
c9034f917b | ||
|
|
5b9e90100d | ||
|
|
427a978bb4 | ||
|
|
e6e941e14c | ||
|
|
493003af54 | ||
|
|
1683678657 | ||
|
|
a05207cc83 | ||
|
|
00b85bec49 | ||
|
|
571955fbcb | ||
|
|
f4e3049a0f | ||
|
|
184af43928 | ||
|
|
32e9642f90 | ||
|
|
59310dec6d | ||
|
|
55c5c815f8 | ||
|
|
a4d6687aab |
@@ -7,6 +7,6 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
target-branch: "develop"
|
||||
# target-branch: "develop"
|
||||
labels:
|
||||
- "dependencies"
|
||||
|
||||
@@ -3,6 +3,7 @@ name: Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
- 'develop'
|
||||
- 'github-action'
|
||||
paths:
|
||||
@@ -17,7 +18,7 @@ jobs:
|
||||
steps:
|
||||
|
||||
- name: Clone sfall
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Action is used twice for self-testing only
|
||||
# DevXP build results are intentionally *not* included in artifact
|
||||
@@ -44,7 +45,7 @@ jobs:
|
||||
shell: bash
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: sfall-build
|
||||
path: sfall-build
|
||||
|
||||
@@ -10,10 +10,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
!ducible.exe
|
||||
|
||||
# NetBeans
|
||||
nbproject/private/
|
||||
|
||||
+90
-21
@@ -1,5 +1,74 @@
|
||||
# Changelog
|
||||
|
||||
## 4.4.3
|
||||
* Fixed a bug introduced in 4.2.9 that caused critters with crippled arms to be unable to attack in certain cases
|
||||
* Fixed the critical hit messages of the right arm and left leg for super mutants
|
||||
* Fixed `add_extra_msg_file` script function to prevent it from loading the same msg file more than once
|
||||
* Removed **DisplaySwiftLearnerExp** from `ddraw.ini` because there is little reason to turn it off
|
||||
* Removed **SpeedInterfaceCounterAnims=3**. Now the AC counter is always instantly updated when switching to other controlled critters in combat
|
||||
* Added a fix for the game disappearing from the taskbar after using `Alt+Tab`
|
||||
* Added a fix for the clickability issue of the **'Use Inventory Item On'** action when the selected item overlaps an object
|
||||
* Added a fix for the xp exploit from canceling **Here and Now** perk when the player has **Swift Learner** perk
|
||||
* Added support for loading an external **DirectDraw** wrapper (`ddraw.dll`) from the `<GameRoot>\wrapper\` directory for rendering
|
||||
* Added a static books mod and a molotov fire damage mod to the example mods in the **modders pack**
|
||||
|
||||
## 4.4.2
|
||||
* Fixed a bug in **XPTable** that could cause a hang when leveling up in some cases
|
||||
* Fixed the critical hit messages of the right arm for some critter types
|
||||
* Changed `add_mult_objs_to_inven` script function to allow adding more than 99999 instances of an object in one go
|
||||
* Added a fix to use **'English'** as the fallback language directory for loading `credits.txt/quotes.txt`
|
||||
* Added a fix for gaining two levels at once when leveling up from level 97
|
||||
* Added a fix for the modulo operator treating negative integers as unsigned
|
||||
* Added a fix to prevent integer overflow for the number of items in a stack in the inventory
|
||||
* Added a fix to `COMBATDAMAGE` hook to prevent instadeath critical hits for no damage
|
||||
* New script function: `reg_anim_animate_and_move`
|
||||
|
||||
## 4.4.1
|
||||
* HRP: Fixed the clickability issue of the file list for save/load and **'print to file'** options in the character screen
|
||||
* Fixed a bug introduced in 4.4 that broke the interoperability of saved arrays with older versions
|
||||
* Fixed a crash when calling `start_gdialog` outside the `talk_p_proc` procedure for talking heads
|
||||
* Fixed `create_object_sid` script function to allow creating an object with no script correctly when passing 0 as the script index number
|
||||
* Changed the calculation of the **'best armor'** score to exclude the EMP stats (gameplay mod friendly)
|
||||
* Tweaked the position of the ammo bar on the interface bar
|
||||
* Removed **AdditionalWeaponAnims** from `ddraw.ini`. Now additional weapon animation codes are always available
|
||||
* Updated **NPC combat control mod** to make the player's **Jinxed** trait/perk affect all controlled critters
|
||||
|
||||
## 4.4.0.1
|
||||
* Fixed a crash on startup on Windows XP/2003
|
||||
|
||||
## 4.4
|
||||
* Implemented a `mods_order.txt` to improve and simplify mod ordering and add support for mod managers. This replaces previous **.dat** file autoloading. Please refer to `ddraw.ini` for details
|
||||
* Implemented a **custom config file parser**, which greatly improves the performance of sfall initialization and reading files from scripts
|
||||
* **Item highlighting and NPC combat control mods** are now packed into `sfall.dat` resource file, and `sfall-mods.ini` is moved to `<GameRoot>\mods\`
|
||||
* Fixed a bug when updating the maximum HP stat of critters on the map when loaded for the first time
|
||||
* Fixed `set_pc_base/extra_stat` and `set_critter_base/extra_stat` script functions not updating derived stats when setting SPECIAL stats
|
||||
* Fixed `wield_obj_critter` script function, which can now put non-weapon/armor items in the critter's hand
|
||||
* Fixed `get_tile_fid` script function to work on elevations 1 and 2 instead of always elevation 0
|
||||
* Fixed `create_spatial` script function not setting the script index number upon object creation
|
||||
* Fixed incorrect behavior of the subtraction operator involving floats and negative integers
|
||||
* Fixed the backward compatibility of `get_npc_level` script function
|
||||
* Fixed a crash bug in `display_msg` and `debug_msg` script functions when printing a string longer than 260 characters
|
||||
* Fixed a crash bug in `AMMOCOST` hook when returning ammo cost of 0 for burst attacks
|
||||
* Fixed various issues in script compiler and decompiler (`compile.exe` and `int2ssl.exe` in the **modders pack**)
|
||||
* Improved **item highlighting mod** to handle the line-of-sight check properly when the player is moving while holding down the key
|
||||
* Improved and tweaked the behavior of **ComputeSpray_\*** options
|
||||
* Expanded `atoi` script function to support parsing binary strings
|
||||
* Expanded `string_format` script function to support more arguments and conversion types
|
||||
* Changed **CheckWeaponAmmoCost** to be enabled by default and affect only hook type 1 of `HOOK_AMMOCOST` hook script
|
||||
* Changed how `HOOK_DESCRIPTIONOBJ` hook script handles its return value. Now you can return normal strings directly in the hook
|
||||
* Re-added the check for valid objects to `get/set_object_data` script functions (only disabled in combat for accessing the combat data)
|
||||
* Removed the debug message about a missing critter art file from displaying in the game (added in 4.2.2)
|
||||
* Added options to override the names of sound files used by the engine
|
||||
* Added an option to **item highlighting mod** to highlight critters with the same rules as in combat, and changed **CheckLOS** to be enabled by default
|
||||
* Added a debug option to duplicate logs to a dedicated console window alongside the game window
|
||||
* Added a lower limit of -99% and an upper limit of 999% to the hit chance value to prevent a display issue
|
||||
* Added more options for tweaking some engine perks to the **perks ini file**
|
||||
* Added a new argument and a new return value to `HOOK_STEAL` hook script
|
||||
* Added a burst control example script and a resting encounters mod to the example mods in the **modders pack**
|
||||
* Updated the compute damage example script in the **modders pack**. Now it should be easier to write one's own damage formula
|
||||
* Increased the setting range of the combat speed slider in the preferences screen
|
||||
* New script functions: `set_spray_settings`, `get/set_combat_free_move`, `get_ini_config`, `string_find`
|
||||
|
||||
## 4.3.8
|
||||
* Fixed a bug introduced in 4.2.8 that broke the arguments of `HOOK_RESTTIMER` hook script
|
||||
* Fixed a bug introduced in 4.3.1 that caused the game to display incorrect names for corpses in some cases
|
||||
@@ -44,7 +113,7 @@
|
||||
* HRP: Added support for **SPLASH_SCRN_TIME** option in `f2_res.ini`
|
||||
* Fixed the handling of obsolete script functions that are still recognized by script compiler and decompiler
|
||||
* Fixed **NPC combat control mod** not redrawing the interface bar properly when it's the player's turn again
|
||||
* Improved the fix for updating the HP stats of critters on the map when loaded for the first time
|
||||
* Improved the fix for updating the maximum HP stat of critters on the map when loaded for the first time
|
||||
* Removed **DivisionOperatorFix** from `ddraw.ini` because there is little reason to turn it off
|
||||
* Removed **ComputeSprayMod** from `ddraw.ini`. Now **ComputeSpray_\*** options no longer require a master switch
|
||||
* Added a fix for a crash when the player equips a weapon overloaded with ammo
|
||||
@@ -55,7 +124,7 @@
|
||||
* HRP: Fixed a few issues with the main menu
|
||||
* HRP: Added support for **LocalMapXLimit/LocalMapYLimit** options in `ddraw.ini`
|
||||
* Removed **FadeBackgroundMusic** option because the fix in 4.3.3 doesn't work reliably in all cases
|
||||
* Added a fix for being unable to plant items on non-biped critters with the `Barter` flag set (e.g. Skynet and Goris)
|
||||
* Added a fix for being unable to plant items on non-biped critters with the **'Barter'** flag set (e.g. Skynet and Goris)
|
||||
* Updated the ammo ini loader mod in the **modders pack**
|
||||
|
||||
## 4.3.3.1
|
||||
@@ -129,7 +198,7 @@
|
||||
* Added missing sounds for the buttons on the world map interface (similar to Fallout 1 behavior)
|
||||
* Added 5 `metarule3` macros for controlling the save slot with scripts to `sfall.h` in the **modders pack**
|
||||
* New script functions: `set_scr_name`, `obj_is_openable`
|
||||
* Updated **NPC armor appearance mod** to prevent NPCs from equipping **unusable** weapons
|
||||
* Updated **NPC armor appearance mod** in the **modders pack** to prevent NPCs from equipping **unusable** weapons
|
||||
* Included Brazilian Portuguese and Polish translation (from Felipefpl and Jaiden)
|
||||
|
||||
## 4.3.0.2
|
||||
@@ -212,7 +281,7 @@
|
||||
* Added an option about the behavior of maximum HP calculation to the **stats ini file**
|
||||
* Added 3 new attribute type values to `get_window_attribute` script functions
|
||||
* Added additional universal opcodes `sfall_func7` and `sfall_func8` (`compile.exe` and `int2ssl.exe` in the **modders pack** are also updated)
|
||||
* Added a new mode to **NPC combat control mod** to let you order party members to attack specified targets instead of controlling them directly
|
||||
* Added a new mode to **NPC combat control mod** that lets you use the command cursor to specify targets for party members to attack in combat
|
||||
* Added an auto-close containers mod to the example mods in the **modders pack**
|
||||
* Added `snd2acm_fix.exe` (snd2acm with a fix wrapper) to the **modders pack** for writing the correct sample rate and channel info from **WAV** files to **ACM** format
|
||||
* New script functions: `interface_overlay`
|
||||
@@ -225,9 +294,10 @@
|
||||
* Cleaned up `define_lite.h` and `command_lite.h` in the **modders pack**
|
||||
|
||||
## 4.2.8
|
||||
* Fixed a bug in **ObjCanSeeObj_ShootThru_Fix** that caused the source to be unable to see the target if it has the `ShootTrhu` flag set
|
||||
* Fixed a bug in **ObjCanSeeObj_ShootThru_Fix** that caused the source to be unable to see the target if it has the **'ShootTrhu'** flag set
|
||||
* Fixed the encounter messages still being limited to 50 entries per table when **EncounterTableSize** is set to greater than 50
|
||||
* Fixed temporary arrays in scripts being cleared when flushing the keyboard buffer
|
||||
* Fixed the broken `Print()` script function
|
||||
* Improved the field of view check in **ObjCanSeeObj_ShootThru_Fix**
|
||||
* Improved the functionality of **GlobalShaderFile** to be able to load multiple shader files
|
||||
* Improved the performance of **DX9** graphics modes
|
||||
@@ -239,7 +309,6 @@
|
||||
* Added a fix for the flags of critters in the line of fire not being taken into account when calculating the hit chance penalty of ranged attacks
|
||||
* Added a fix to the check for ranged weapons in the **Fast Shot** trait and **FastShotFix**
|
||||
* Added a fix for the background image of the character portrait on the player's inventory screen
|
||||
* Added a fix for the broken `Print()` script function
|
||||
* Added the original Fallout 1 behavior of the **Fast Shot** trait to **FastShotFix**
|
||||
* Added an option to enable linear texture filtering for **DX9** graphics modes
|
||||
* Added support for **ACM** audio file playback and volume control to `soundplay` script function
|
||||
@@ -289,7 +358,7 @@
|
||||
* Improved the pathfinding in the engine function when a multihex object is in the line of fire
|
||||
* Improved the functionality of `display_stats` script function to also update player's stats on the character screen
|
||||
* Improved the fix for incorrect positioning after exiting small/medium locations
|
||||
* Removed **AutoSearchPath** from `ddraw.ini`. Now the folder path for autoloading custom files is the fixed **\<GameRoot\>\mods\\**
|
||||
* Removed **AutoSearchPath** from `ddraw.ini`. Now the directory for autoloading custom files is the fixed `<GameRoot>\mods\`
|
||||
* Added a fix to prevent critters from overlapping other object tiles when moving to the retargeted tile
|
||||
* Added a fix to prevent showing an empty perk selection window (crash when clicking on the empty perk list)
|
||||
* Added a fix for NPC stuck in an animation loop in combat when trying to move close to a multihex critter
|
||||
@@ -355,7 +424,7 @@
|
||||
* Added a fix for the barter button on the dialog window not animating until after leaving the barter screen
|
||||
* Added a fix for the division operator treating negative integers as unsigned
|
||||
* Added a fix for trying to loot corpses with the **'NoSteal'** flag set
|
||||
* Added an option to allow using the special `'^'` character in dialog msg files to specify the alternative text that will be displayed in the dialogue based on the player's gender
|
||||
* Added an option to allow using the caret character `'^'` in dialog msg files to specify alternative text in dialogue based on the player's gender
|
||||
* Added options to draw a dotted line while traveling on the world map (similar to Fallout 1, from Ghosthack)
|
||||
* Added an option to display terrain types when hovering the cursor over the player's marker on the world map (from Ghosthack)
|
||||
* Added a flashing icon to the Horrigan encounter and scripted force encounters by default
|
||||
@@ -372,7 +441,7 @@
|
||||
* Fixed and improved the functionality of `substr` script function
|
||||
* Restored and fixed **RemoveWindowRounding** option that was removed in 4.1.2
|
||||
* Improved the functionality of `inventory_redraw` script function
|
||||
* Changed the way **IniConfigFolder** works. Now the game will search for the ini files relative to the specified directory
|
||||
* Changed the way **IniConfigFolder** works. Now the game will search for ini files relative to the specified directory
|
||||
* Changed the debug message about a missing critter art file to also be displayed in the game
|
||||
* Code refactoring for various script functions
|
||||
* Added a fix to prevent the player from moving when clicking on a script-created window and prevent the mouse cursor from being toggled when hovering over a **'hidden'** window
|
||||
@@ -394,7 +463,7 @@
|
||||
* Fixed `move_obj_inven_to_obj/drop_obj` script functions not removing the equipped armor properly for the player and party members
|
||||
* Fixed `inven_unwield` script function not updating the active item button on the interface bar for the player
|
||||
* Fixed `art_change_fid_num` script function not setting player's FID correctly when the **hero appearance mod** is enabled
|
||||
* Fixed `critter_add/rm_trait` script functions ignoring the value of the **'amount'** argument. Note: pass negative amount values to `critter_rm_trait` to remove all ranks of the perk (vanilla behavior)
|
||||
* Fixed `critter_add/rm_trait` script functions ignoring the **'amount'** argument. Note: pass negative amount values to `critter_rm_trait` to remove all ranks of the perk (vanilla behavior)
|
||||
* Fixed the xp bonus set by `set_swiftlearner_mod` script function not being reset on game load
|
||||
* Fixed the player name while controlling other critters
|
||||
* Fixed **NPC combat control mod** not removing the inherited perks from controlled critters properly
|
||||
@@ -488,7 +557,7 @@
|
||||
* Added a fix for knocked down critters not playing stand up animation when the combat ends
|
||||
* Added a fix for dead NPCs reloading their weapons when the combat ends
|
||||
* Added an option to use the expanded world map interface (requires hi-res patch v4.1.8)
|
||||
* Added an option to allow setting a folder path for the game to automatically search and load custom **.dat** files
|
||||
* Added an option to allow setting a directory for the game to automatically search and load custom **.dat** files
|
||||
* Added an option to expand the number of action points displayed on the interface bar
|
||||
* Added an option to change the base value of the duration of the knockout effect
|
||||
* Added a check for the `DAM_KNOCKED_OUT` flag to `wield_obj_critter/inven_unwield` script functions
|
||||
@@ -511,7 +580,7 @@
|
||||
* Changed `create_message_window` script function to be available when other game interfaces are opened
|
||||
* Removed **DialogOptions9Lines** from `ddraw.ini` because there is little reason to turn it off
|
||||
* Removed **LoadProtoMaxLimit** from `ddraw.ini`. Now the proto limit is automatically increased when needed
|
||||
* Added a fix for party member's stats being reset to the base level when their base protos with the read-only attribute set are placed in the **proto\critters\\** directory
|
||||
* Added a fix for party member's stats being reset to the base level when their base protos with the read-only attribute set are placed in the `proto\critters\` directory
|
||||
* Added a fix for NPC stuck in a loop of picking up items in combat and the incorrect message being displayed when the NPC cannot pick up an item due to not enough space in the inventory
|
||||
* Added a fix to allow fleeing NPC to use drugs
|
||||
* Added a fix for AI not checking minimum HP properly for using stimpaks
|
||||
@@ -531,7 +600,7 @@
|
||||
* Fixed fake perks not stacking properly
|
||||
* Fixed the position of the 32-bit talking heads when the game resolution is higher than 640x480
|
||||
* Fixed a bug in **item highlighting** that caused items to be kept highlighted when picking them up while holding the highlight key
|
||||
* Changed `hero_select_win` function to require an `AppHeroWin.frm` file (included in the **modders pack**) in the **art\intrface\\** directory
|
||||
* Changed `hero_select_win` function to require an `AppHeroWin.frm` file (included in the **modders pack**) in the `art\intrface\` directory
|
||||
* Added a fix for unexplored areas being revealed on the automap when entering a map
|
||||
* Added a fix for the overflow of the automap tables when the number of maps in `maps.txt` is more than 160
|
||||
* Added a fix for a duplicate `obj_dude` script being created when loading a saved game
|
||||
@@ -585,7 +654,7 @@ Various bug fixes and features based on the work by Mr.Stalin:
|
||||
* Fixed `critter_mod_skill` script function taking a negative amount value as a positive
|
||||
* Fixed a crash when calling `use_obj/use_obj_on_obj` without using `set_self` in global scripts
|
||||
* Fixed `pickup_obj`, `drop_obj`, and `use_obj` script functions not working properly in some cases
|
||||
* Fixed **TimeLimit=-3** not returning the correct year, and removed the setting value -2 (Now it works the same as -3)
|
||||
* Fixed **TimeLimit=-3** not returning the correct year, and removed the setting value of -2 (Now it works the same as -3)
|
||||
* Fixed the mouse cursor lag on the world map when **WorldMapFPSPatch** is enabled
|
||||
* Fixed issues with the game speed tweak. Now the game speed will be temporarily set to normal speed when in the inventory or dialogue, and it doesn't affect the endgame slideshow
|
||||
* Fixed and improved the functionality of **UseFileSystemOverride** and `fs_*` script functions
|
||||
@@ -655,7 +724,7 @@ Various bug fixes and features based on the work by Mr.Stalin:
|
||||
* Fixed **DX9** mode not showing movie subtitles properly when not using the hi-res patch
|
||||
* Fixed **DisplayBonusDamage** not being applied to Melee Damage stat on the character screen when **BonusHtHDamageFix** is enabled
|
||||
* Improved the functionality of **ExtraSaveSlots**: added sound effect when clicking on the navigation buttons
|
||||
* Improved the fix for `start_gdialog` script function to fix a crash if calling `start_gdialog` outside of the `talk_p_proc` procedure for talking heads
|
||||
* Improved the functionality of **StartGDialogFix** to fix a crash when calling `start_gdialog` outside the `talk_p_proc` procedure for talking heads
|
||||
* Added a fix for the exploit that allows you to gain excessive skill points from **Tag!** perk before leaving the character screen
|
||||
* Added an option to change the limit of how many protos per type can be loaded into memory at once, and improved the functionality of `set_proto_data` script function to be able to automatically increase the limit when needed
|
||||
* Added an option to skip the **'Move Items'** window when taking items from containers or corpses and not holding down **ItemFastMoveKey**
|
||||
@@ -694,10 +763,10 @@ Original engine bug fixes and various features based on the work by Mr.Stalin:
|
||||
* Expanded `is_iface_tag_active` script function to check tag value of 0/1/2 (sneak/poisoned/radiated)
|
||||
* Added a fix for missing AC/DR mod stats when examining ammo in the barter screen
|
||||
* Added a fix for the display issue in the pipboy when a quest list is too long with **UseScrollingQuestsList** diabled
|
||||
* Added a fix for the clickability issue of holodisk list in the pipboy
|
||||
* Added a fix for the clickability issue of the holodisk list in the pipboy
|
||||
* Added a fix for the broken `obj_can_hear_obj` script function
|
||||
* Added a fix for multihex critters moving too close and overlapping their targets in combat
|
||||
* Added a fix for AI not checking weapon perks properly when choosing the best weapon in combat
|
||||
* Added a fix for AI not checking weapon perks properly when choosing the best weapon
|
||||
* Added an option to keep the selected attack mode when moving the weapon between active item slots
|
||||
* Added an option to set the number of additional notification boxes to the interface
|
||||
* Added an option to load alternative dialog msg and subtitle files for female PC (translation friendly)
|
||||
@@ -750,7 +819,7 @@ Original engine bug fixes and various features based on the work by Mr.Stalin:
|
||||
## 4.0.3
|
||||
* Fixed the broken **ExtraGameMsgFileList** option
|
||||
* Fixed a bug in **NPC combat control mod** that increases the rank of **Gecko Skinning** perk when the combat ends
|
||||
* Fixed `add_mult_objs_to_inven` script function only adding 500 of an object when the value of the **'count'** argument is over 99999
|
||||
* Fixed `add_mult_objs_to_inven` script function adding only 500 instances of an object when the value of the **'count'** argument is over 99999
|
||||
* Improved the fix for player's base EMP DR to make sure the value is set correctly
|
||||
* **Item highlighting mod** now only highlights lootable corpses
|
||||
|
||||
@@ -767,8 +836,8 @@ Original engine bug fixes and various features based on the work by Mr.Stalin:
|
||||
* The build environment is now **Visual Studio 2015**, and Win XP SP2 and Win 2000 are no longer supported
|
||||
* Extensive code reorganizing/rewrite was made in the effort to tidy up sfall code base accumulated over the years and make it easier to read, understand, and extend. Main code was split into separate **'modules'**. Code for interacting with Fallout 2 engine was moved and expanded to allow for engine manipulations without using too much Assembly code
|
||||
* Fixed an issue with the game being rendered before the **hero appearance mod** is loaded
|
||||
* **Item highlighting mod** was moved from sfall into a separate script (`gl_highlighting.int`) and extended with new options
|
||||
* **NPC combat control mod** was moved from sfall into a separate script (`gl_partycontrol.int`)
|
||||
* **Item highlighting mod** is moved from sfall into a separate script (`gl_highlighting.int`) and extended with new options
|
||||
* **NPC combat control mod** is moved from sfall into a separate script (`gl_partycontrol.int`)
|
||||
* Related options of **item highlighting** and **NPC combat control** mods were moved from `ddraw.ini` into a separate `sfall-mods.ini`
|
||||
* A new version of **NPC armor appearance mod** was implemented as a separate script (`gl_npcarmor.int` in the **modders pack**). It can be configured and made compatible with any Fallout 2 mod
|
||||
* Improved compatibility between **hero appearance**, **NPC combat control**, and **NPC armor appearance** mods
|
||||
@@ -816,7 +885,7 @@ Original engine bug fixes and various features based on the work by Crafty:
|
||||
* Fixed broken `call_offset_*` script functions
|
||||
* Fixed **OverrideMusicDir** not using the correct path string
|
||||
* Fixed a bug in `metarule2_explosions` function that caused damage type change not to work
|
||||
* Fixed a crash if calling `reg_anim_obj_run_to_tile` after `reg_anim_combat_check`
|
||||
* Fixed a crash when calling `reg_anim_obj_run_to_tile` after `reg_anim_combat_check`
|
||||
* Changed `sfallgv.sav` to be loaded before other save game files to make saved arrays available in the start procedure
|
||||
* Changed **BodyHit_Torso** to **BodyHit_Torso_Uncalled** because it sets both *body_torso* and *body_uncalled* hit modifiers
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Original description: A set of engine modifications for the classic game Fallout
|
||||
|
||||
- Download `sfall_*.7z` from the [release archive](https://sourceforge.net/projects/sfall/files/).
|
||||
|
||||
- Extract `ddraw.dll`, `ddraw.ini`, `sfall-mods.ini`, `sfall.dat`, and `data` folder to Fallout's base directory (i.e. the one that contains `fallout2.exe`).
|
||||
- Extract `ddraw.dll`, `ddraw.ini`, `sfall.dat`, and the `mods` folder to Fallout's base directory (i.e. the one that contains `fallout2.exe`). Also, remove `gl_highlighting.int` and `gl_partycontrol.int` from Fallout's `data\scripts\` directory if you are updating from an older version.
|
||||
|
||||
- __Important Note:__\
|
||||
If you are using a mod that already included sfall (e.g. killap's [Unofficial Patch](https://github.com/BGforgeNet/Fallout2_Unofficial_Patch) or [Restoration Project](https://github.com/BGforgeNet/Fallout2_Restoration_Project)), then that mod has probably included a custom modified `ddraw.ini`. In that case, overwriting it with sfall's vanilla `ddraw.ini` will be likely break your game. Instead, only overwrite `ddraw.dll`, and keep the mod's existing copy of `ddraw.ini`. (Or, if you know what you're doing, you can merge them together by hand.)
|
||||
@@ -30,7 +30,7 @@ Original description: A set of engine modifications for the classic game Fallout
|
||||
|
||||
## Uninstallation
|
||||
|
||||
Delete `ddraw.dll`, `ddraw.ini`, `sfall-mods.ini`, and `sfall.dat` from your Fallout directory. Also, delete `gl_highlighting.int` and `gl_partycontrol.int` from Fallout's `data\scripts\` directory.
|
||||
Delete `ddraw.dll`, `ddraw.ini`, and `sfall.dat` from your Fallout directory, and delete `sfall-mods.ini` from the `mods` folder.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -42,6 +42,20 @@ In a default installation using an unmodified copy of `ddraw.ini`, the middle mo
|
||||
For [__Wine__](https://www.winehq.org/) users:\
|
||||
You need to set DLL overrides for `ddraw.dll` to __"native, builtin"__ in `winecfg` or use `WINEDLLOVERRIDES="ddraw=n,b"` to run Fallout from the command line. If you want to play alternative sound files, you'll also need to install GStreamer Good 32-bit plugins.
|
||||
|
||||
## Build Instructions
|
||||
|
||||
### Prerequisites:
|
||||
|
||||
* Visual Studio 2015 with **Windows XP support for C++** component. If you're using Visual Studio 2017/2019/2022, make sure to install **VS 2015 C++ build tools (v140)**.
|
||||
* [DirectX SDK (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=6812). You will also need `ddraw.lib` from DXSDK February 2010 and `dinput.lib` from DXSDK August 2007. Both files can be found in the [DirectX SDK Collection repo](https://github.com/NovaRain/DXSDK_Collection).
|
||||
* [DirectX Runtime (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=8109). You can also install it from DirectX SDK installer.
|
||||
|
||||
### Steps:
|
||||
|
||||
1. Set up a `postbuild.cmd` using the template from the repo.
|
||||
2. Open the solution file and build with the **ReleaseXP** configuration (this is the one used for sfall releases).
|
||||
3. If everything is set up correctly, you should have a new sfall `ddraw.dll` in your Fallout 2 directory.
|
||||
|
||||
## Additional info
|
||||
|
||||
* [Changelog](CHANGELOG.md)
|
||||
|
||||
+7
-7
@@ -82,7 +82,7 @@ runs:
|
||||
#
|
||||
echo "::endgroup::"
|
||||
fi
|
||||
echo "::set-output name=dir::$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")"
|
||||
echo "dir=$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")" >> $GITHUB_OUTPUT
|
||||
shell: bash
|
||||
|
||||
# MSBuild is not in PATH on Windows machines
|
||||
@@ -93,7 +93,7 @@ runs:
|
||||
echo "::group::Prepare MSBuild"
|
||||
|
||||
MSBUILD_EXE="$("/c/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe" -latest -requires Microsoft.Component.MSBuild -find MSBuild/**/Bin/MSBuild.exe)"
|
||||
echo "::set-output name=exe::$MSBUILD_EXE"
|
||||
echo "exe=$MSBUILD_EXE" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "::endgroup::"
|
||||
shell: bash
|
||||
@@ -106,10 +106,10 @@ runs:
|
||||
echo ::group::Build ReleaseXP
|
||||
|
||||
#
|
||||
echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd"
|
||||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd"
|
||||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/sfall/ddraw.sln" -p:Configuration=ReleaseXP -p:Platform=Win32 -p:PlatformToolset=v140_xp
|
||||
#
|
||||
echo "::set-output name=ddraw-dll::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/ReleaseXP/ddraw.dll")"
|
||||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/ReleaseXP/ddraw.dll")" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "::endgroup::"
|
||||
fi
|
||||
@@ -126,11 +126,11 @@ runs:
|
||||
echo "::group::Build DevXP"
|
||||
|
||||
#
|
||||
echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd"
|
||||
# echo "@echo off" > "$GITHUB_ACTION_PATH/sfall/PostBuild.cmd"
|
||||
"${{ steps.msbuild.outputs.exe }}" "$GITHUB_ACTION_PATH/sfall/ddraw.sln" -p:Configuration=DevXP -p:Platform=Win32 -p:PlatformToolset=v140_xp
|
||||
#
|
||||
echo "::set-output name=ddraw-dll::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.dll")"
|
||||
echo "::set-output name=ddraw-pdb::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.pdb")"
|
||||
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.dll")" >> $GITHUB_OUTPUT
|
||||
echo "ddraw-pdb=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.pdb")" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "::endgroup::"
|
||||
fi
|
||||
|
||||
@@ -7,10 +7,39 @@
|
||||
; be used to remove their hardcoded effects, and add new stat/skill effects
|
||||
|
||||
[PerksTweak]
|
||||
;Changes the Outdoorsman skill bonus for 'Survivalist' perk (ID 16)
|
||||
;125 - maximum bonus, 25 - default bonus
|
||||
SurvivalistBonus=25
|
||||
|
||||
;Changes the bonus for 'Master Trader' perk (ID 17)
|
||||
;25 - default bonus
|
||||
MasterTraderBonus=25
|
||||
|
||||
;Changes the Science and Repair skill bonus for 'Mr.Fixit' perk (ID 31)
|
||||
;125 - maximum bonus, 10 - default bonus
|
||||
MrFixitBonus=10
|
||||
|
||||
;Changes the skill bonuses for 'Medic' perk (ID 32)
|
||||
;125 - maximum bonus, 10 - default bonus
|
||||
MedicFirstAidBonus=10
|
||||
MedicDoctorBonus=10
|
||||
|
||||
;Changes the Lockpick and Steal skill bonus for 'Master Thief' perk (ID 33)
|
||||
;125 - maximum bonus, 15 - default bonus
|
||||
MasterThiefBonus=15
|
||||
|
||||
;Changes the Speech skill bonus for 'Speaker' perk (ID 34)
|
||||
;125 - maximum bonus, 20 - default bonus
|
||||
SpeakerBonus=20
|
||||
|
||||
;Changes the Sneak skill bonus (when in darkness) for 'Ghost' perk (ID 38)
|
||||
;125 - maximum bonus, 20 - default bonus
|
||||
GhostBonus=20
|
||||
|
||||
;Changes the Outdoorsman skill bonus for 'Ranger' perk (ID 47)
|
||||
;125 - maximum bonus, 15 - default bonus
|
||||
RangerOutdoorsmanBonus=15
|
||||
|
||||
;Changes the distance bonus for 'Weapon Long Range' weapon perk (ID 58)
|
||||
;2 - no bonus, 4 - default bonus
|
||||
WeaponLongRangeBonus=4
|
||||
@@ -34,9 +63,22 @@ VaultCityInoculationsRadBonus=10
|
||||
;999 - maximum bonus, 10 - default bonus
|
||||
DemolitionExpertBonus=10
|
||||
|
||||
;Changes the damage bonus for 'Living Anatomy' perk (ID 97)
|
||||
;125 - maximum bonus, 5 - default bonus
|
||||
;Changes the Gambling skill bonus for 'Gambler' perk (ID 83)
|
||||
;125 - maximum bonus, 20 - default bonus
|
||||
GamblerBonus=20
|
||||
|
||||
;Changes the Steal skill bonus for 'Harmless' perk (ID 91)
|
||||
;125 - maximum bonus, 20 - default bonus
|
||||
HarmlessBonus=20
|
||||
|
||||
;Changes the damage bonus and the Doctor skill bonus for 'Living Anatomy' perk (ID 97)
|
||||
;125 - maximum bonus, 5 - default bonus, 10 - default skill bonus
|
||||
LivingAnatomyBonus=5
|
||||
LivingAnatomyDoctorBonus=10
|
||||
|
||||
;Changes the Speech and Barter skill bonus for 'Negotiator' perk (ID 99)
|
||||
;125 - maximum bonus, 10 - default bonus
|
||||
NegotiatorBonus=10
|
||||
|
||||
;Changes the damage bonus for 'Pyromaniac' perk (ID 101)
|
||||
;125 - maximum bonus, 5 - default bonus
|
||||
@@ -50,10 +92,23 @@ SalesmanBonus=20
|
||||
;valid range: 0..100, 50 - default percent
|
||||
StonewallPercent=50
|
||||
|
||||
;Changes the Lockpick, Steal, and Traps skill bonus for 'Thief' perk (ID 105)
|
||||
;125 - maximum bonus, 10 - default bonus
|
||||
ThiefBonus=10
|
||||
|
||||
;Changes the strength bonus for 'Weapon Handling' perk (ID 106)
|
||||
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
|
||||
WeaponHandlingBonus=3
|
||||
|
||||
;Changes the skill bonuses for 'Vault City Training' perk (ID 107)
|
||||
;125 - maximum bonus, 5 - default bonus
|
||||
VaultCityTrainingFirstAidBonus=5
|
||||
VaultCityTrainingDoctorBonus=5
|
||||
|
||||
;Changes the Speech skill bonus for 'Expert Excrement Expeditor' perk (ID 116)
|
||||
;125 - maximum bonus, 5 - default bonus
|
||||
ExpertExcrementExpeditorBonus=5
|
||||
|
||||
;##############################################################################
|
||||
[Perks]
|
||||
;Set to 1 to enable the modifications for perks
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
;WeaponAnims codes
|
||||
; 1 - Knife (D)
|
||||
; 2 - Club (E)
|
||||
; 3 - Sledgehammer (F)
|
||||
; 3 - Sledgehammer (F)
|
||||
; 4 - Spear (G)
|
||||
; 5 - Pistol (H)
|
||||
; 6 - SMG (I)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
;WeaponAnims codes
|
||||
; 1 - Knife (D)
|
||||
; 2 - Club (E)
|
||||
; 3 - Sledgehammer (F)
|
||||
; 3 - Sledgehammer (F)
|
||||
; 4 - Spear (G)
|
||||
; 5 - Pistol (H)
|
||||
; 6 - SMG (I)
|
||||
@@ -76,7 +76,8 @@ Default=16777346
|
||||
Jacket=16777346
|
||||
Leather=16777347
|
||||
Metal=16777348
|
||||
Combat=16777226
|
||||
Combat=16777367
|
||||
Robe=16777368
|
||||
|
||||
; Kitsune (RP)
|
||||
[6]
|
||||
|
||||
@@ -9,10 +9,13 @@ Containers=0
|
||||
; Set to 1 to also highlight lootable corpses
|
||||
Corpses=0
|
||||
|
||||
; Set to 1 to only highlight objects in the player's line-of-sight
|
||||
CheckLOS=0
|
||||
; Set to 1 to also highlight critters, with the same rules as in combat
|
||||
Critters=0
|
||||
|
||||
; Set the color of outlines, available colors:
|
||||
; Set to 1 to only highlight objects in the player's line-of-sight
|
||||
CheckLOS=1
|
||||
|
||||
; Set the color of outlines for items, corpses, and containers; available colors:
|
||||
; 1 - glowing red
|
||||
; 2 - red
|
||||
; 4 - grey
|
||||
@@ -20,7 +23,7 @@ CheckLOS=0
|
||||
; 16 - bright yellow
|
||||
; 32 - dark yellow
|
||||
; 64 - purple
|
||||
; You can set a custom color from the game palette by multiplying the color index value by 256 (available since sfall 4.2.7)
|
||||
; You can set a custom color from the game palette by multiplying the color index value by 256 (in 4.2.7 or later)
|
||||
OutlineColor=16
|
||||
|
||||
; Motion Scanner mode:
|
||||
@@ -31,11 +34,11 @@ MotionScanner=0
|
||||
|
||||
|
||||
[CombatControl]
|
||||
;Allows you to directly control other critters in combat
|
||||
;Allows you to control other critters directly in combat
|
||||
;Set to 0 to disable
|
||||
;Set to 1 to control all critters in combat (allowed only in sfall debugging mode)
|
||||
;Set to 2 to control all party members
|
||||
;Set to 3 to let you order party members to attack specified targets after your first attack instead of controlling them directly
|
||||
;Set to 3 to let you use the command cursor to specify targets for party members to attack in combat
|
||||
Mode=0
|
||||
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs
|
||||
;PIDList=62,89,97,107,160,161
|
||||
|
||||
+73
-47
@@ -1,5 +1,5 @@
|
||||
;sfall configuration settings
|
||||
;v4.3.8
|
||||
;v4.4.3
|
||||
|
||||
[Main]
|
||||
;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash
|
||||
@@ -19,14 +19,19 @@ UseCommandLine=0
|
||||
;This section allows you to set multiple paths to folders containing mods or patches
|
||||
;Paths to folders and Fallout .dat files are supported
|
||||
;The PatchFileXX options are available from 0 to 99. Larger numbers take precedence over smaller numbers (same as patchXXX.dat)
|
||||
;Starting from 4.2.6, the game will automatically search and load custom .dat files (or folders named as .dat files) from <GameRoot>\mods\
|
||||
;The load order of files in the folder will be in reverse alphabetical order of the filenames
|
||||
;Autoloaded files will have a higher priority than the files specified in the PatchFileXX options
|
||||
;The complete data load order is:
|
||||
;master_patches > critter_patches > mods > PatchFile99..PatchFile0 > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||
;Starting from 4.4/3.8.40, the game will load custom .dat files and folders from <GameRoot>\mods\mods_order.txt
|
||||
;The files and folders in mods_order.txt will have a higher priority than the PatchFileXX options
|
||||
;The complete order of how the engine loads game data is:
|
||||
;master_patches > critter_patches > mods_order.txt > PatchFileXX > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||
;PatchFile0=mods\RP_data
|
||||
;PatchFile1=
|
||||
|
||||
;Some details about mods_order.txt:
|
||||
;If mods_order.txt does not exist, sfall will create one in <GameRoot>\mods\
|
||||
;To install a new mod, copy the file/folder to <GameRoot>\mods\ and add its name to mods_order.txt
|
||||
;Mods will be loaded line by line from top to bottom. You can change the load order in a text editor
|
||||
;To disable a mod temporarily, you can comment it out by adding a ';' or '#' to the beginning of the line
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Speed]
|
||||
;Set to 1 to enable options related to the game speed adjustment (SpeedMulti#, SpeedKey#, SpeedModKey, and SpeedToggleKey)
|
||||
@@ -52,10 +57,11 @@ SpeedMultiInitial=100
|
||||
;Set to 0 for 8 bit fullscreen
|
||||
;Set to 4 for DX9 fullscreen
|
||||
;Set to 5 for DX9 windowed
|
||||
;Set to 6 for DX9 fullscreen windowed (the resolution in f2_res.ini should be set to the same aspect ratio as your desktop resolution)
|
||||
;Set to 6 for DX9 fullscreen windowed (the resolution in f2_res.ini should be in the same aspect ratio as your desktop resolution)
|
||||
;A DX9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders)
|
||||
;Modes 1, 2 and 3 are no longer supported
|
||||
;If using the hi-res patch by Mash, this option will always be read from the main ddraw.ini file
|
||||
;Note: When using an external DirectDraw wrapper (ddraw.dll file in <GameRoot>\wrapper\), DX9 mode will not be available
|
||||
Mode=0
|
||||
|
||||
;If using a DX9 mode, this changes the resolution
|
||||
@@ -65,7 +71,7 @@ GraphicsWidth=0
|
||||
GraphicsHeight=0
|
||||
|
||||
;Window position data. Do not modify
|
||||
;Set to -1 or 0 to reset if the window position is incorrect
|
||||
;Set to -1 or 0 to reset the window position to the center or top-left corner
|
||||
WindowData=-1
|
||||
|
||||
;Uncomment the option to use a hardware shader (requires DX9 graphics mode)
|
||||
@@ -85,7 +91,7 @@ TextureFilter=1
|
||||
GPUBlt=0
|
||||
|
||||
;Set to 1 to allow using 32-bit textures for talking heads
|
||||
;The texture files should be placed in art\heads\<name of the talking head FRM file>\ (w/o extension)
|
||||
;The texture files should be placed in art\heads\<name of the talking head FRM file>\ (without extension)
|
||||
;The files in the folder should be numbered according to the number of frames in the talking head FRM file (0.png, 1.png, etc.)
|
||||
;See the text file in the modders pack for a detailed description
|
||||
;Requires DX9 graphics mode and v2.0 pixel shader support (see GPUBlt option)
|
||||
@@ -150,6 +156,15 @@ OverrideMusicDir=1
|
||||
;This will slightly increase the startup time of the game on older computers
|
||||
AutoSearchSFX=1
|
||||
|
||||
;Uncomment these lines to override the names of sound files used by the engine
|
||||
;Filenames are limited to 8 characters (without extension)
|
||||
;MainMenuMusic=07desert
|
||||
;WorldMapMusic=23world
|
||||
;WorldMapCarMusic=20car
|
||||
;EndGameMovieMusic0=akiss
|
||||
;EndGameMovieMusic1=10labone
|
||||
;MapLoadingSound=wind2
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Input]
|
||||
;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens
|
||||
@@ -161,7 +176,7 @@ UseScrollWheel=1
|
||||
;Set to 0 to only ever scroll 1 click
|
||||
ScrollMod=0
|
||||
|
||||
;Adjusts mouse sensitivity to some percentage of normal.
|
||||
;Adjusts mouse sensitivity to some percentage of normal
|
||||
;Negative values are valid if you want your mouse axis reversed for some reason
|
||||
MouseSensitivity=100
|
||||
|
||||
@@ -277,9 +292,9 @@ UseFileSystemOverride=0
|
||||
;If you want to load multiple patch files (up to 1000) at once, you can include a %d in the file name (sprintf syntax)
|
||||
;PatchFile=patch%03d.dat
|
||||
|
||||
;Set to 1 to use the modified data load order for the engine to find game data
|
||||
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
|
||||
;Modified: master_patches > critter_patches > extra_patches > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||
;Set to 1 to change the order of how the engine loads game data
|
||||
;Old: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
|
||||
;New: master_patches > critter_patches > [ExtraPatches] > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||
;This option is always enabled in 4.3/3.8.30 or later. The information is left for reference only
|
||||
DataLoadOrderPatch=1
|
||||
|
||||
@@ -287,21 +302,20 @@ DataLoadOrderPatch=1
|
||||
;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC
|
||||
FemaleDialogMsgs=0
|
||||
|
||||
;Set to 1 to allow using the special '^' character in dialog msg files to specify the alternative text
|
||||
;that will be displayed in the dialogue based on the player's gender
|
||||
;Set to 1 to allow using the caret character '^' in dialog msg files to specify alternative text in dialogue based on the player's gender
|
||||
;The text must be enclosed in angle brackets (example: <MaleText^FemaleText>)
|
||||
DialogGenderWords=0
|
||||
|
||||
;To change the default and starting player models, uncomment the next four lines.
|
||||
;The default models can also be changed ingame via script
|
||||
;To change the default and starting player models, uncomment the next four lines
|
||||
;The default models can also be changed in-game via script
|
||||
;MaleStartModel=hmwarr
|
||||
;MaleDefaultModel=hmjmps
|
||||
;FemaleStartModel=hfprim
|
||||
;FemaleDefaultModel=hfjmps
|
||||
|
||||
;To change the various ingame movies, modify the next 17 lines
|
||||
;To change the various in-game movies, modify the next 17 lines
|
||||
;You can also define additional movies by adding Movie18 - Movie32 lines
|
||||
;Most of these can also be changed ingame via script
|
||||
;Most of these can also be changed in-game via script
|
||||
Movie1=iplogo.mve
|
||||
Movie2=intro.mve
|
||||
Movie3=elder.mve
|
||||
@@ -327,7 +341,7 @@ Movie17=credits.mve
|
||||
;StartDay=-1
|
||||
|
||||
;To change the limit of the distance away from the player to which you're allowed to scroll the local maps, uncomment the next two lines
|
||||
;Defaults are 480 in the x direction and 400 in the y direction.
|
||||
;Defaults are 480 in the x direction and 400 in the y direction
|
||||
;Does not work with the hi-res patch by Mash!
|
||||
;LocalMapXLimit=480
|
||||
;LocalMapYLimit=400
|
||||
@@ -338,12 +352,12 @@ PipBoyAvailableAtGameStart=0
|
||||
|
||||
;Set to 1 to double the number of available kill types
|
||||
;If you use this, you need to provide the extra descriptions in proto.msg (entries from 1450 to 1487 are names and 1488 to 1525 are descriptions)
|
||||
;Changing this option mid game will not invalidate old save games, but the player's kill counters will be completely screwed.
|
||||
;Changing this option mid game will not invalidate old save games, but the player's kill counters will be completely screwed
|
||||
;Setting this to 1 may cause problems if the player kills more than 32767 of any one critter type
|
||||
;Additional kill types must have their new critical tables set! (See the OverrideCriticalTable option)
|
||||
ExtraKillTypes=0
|
||||
|
||||
;Choose the damage formula used to calculate combat damage.
|
||||
;Choose the damage formula used to calculate combat damage
|
||||
;Don't set this to anything other than 0 unless another mod you're using explicitly tells you to!
|
||||
;0 - Fallout default
|
||||
;1 - Glovz's Damage Fix
|
||||
@@ -351,7 +365,7 @@ ExtraKillTypes=0
|
||||
;5 - Haenlomal's Yet Another Ammo Mod
|
||||
DamageFormula=0
|
||||
|
||||
;Prevents you from using 0 to escape from dialogue at any time.
|
||||
;Prevents you from using 0 to escape from dialogue at any time
|
||||
DialogueFix=1
|
||||
|
||||
;Prevents you from using number keys to enter unvisited areas on a town map
|
||||
@@ -360,7 +374,7 @@ TownMapHotkeysFix=1
|
||||
;Set to 1 to disable the Horrigan encounter
|
||||
DisableHorrigan=0
|
||||
|
||||
;Set to 1 to disable the random element in NPC levelling.
|
||||
;Set to 1 to disable the random element in NPC levelling
|
||||
;This will cause all NPC party members to automatically level up as soon as the player reaches the requirements
|
||||
NPCAutoLevel=0
|
||||
|
||||
@@ -382,13 +396,14 @@ OverrideArtCacheSize=0
|
||||
;Set to 2 to block all saving in combat
|
||||
SaveInCombatFix=1
|
||||
|
||||
;Uncomment and set a comma delimited list of numbers to use a custom xp table.
|
||||
;Uncomment and set a comma delimited list of numbers to use a custom xp table
|
||||
;Player's level is capped once the highest specified level is reached
|
||||
;XPTable=50,100,200
|
||||
|
||||
;Set to 1 to enable additional weapon animation codes from 'o' to 't'
|
||||
;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10
|
||||
;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corresponds to 's' and 15 to 't'
|
||||
;This option is always enabled in 4.4.1/3.8.41 or later. The information is left for reference only
|
||||
AdditionalWeaponAnims=1
|
||||
|
||||
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
|
||||
@@ -440,8 +455,8 @@ EnableHeroAppearanceMod=0
|
||||
;Set to 2 to also skip the splash screen
|
||||
SkipOpeningMovies=0
|
||||
|
||||
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it.
|
||||
;Only NPCs with AP left equal to or greater than the value given here will be considered.
|
||||
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it
|
||||
;Only NPCs with AP left equal to or greater than the value given here will be considered
|
||||
;Set to 0 to disable
|
||||
NPCsTryToSpendExtraAP=0
|
||||
|
||||
@@ -480,7 +495,7 @@ UseScrollingQuestsList=1
|
||||
;PremadeFIDs=201,203,202
|
||||
|
||||
;Use this line to modify the list of cities and their associated global variables used for city reputations
|
||||
;Syntax is 'city id:global id', with each city/global pair separated by a comma.
|
||||
;Syntax is 'city id:global id', with each city/global pair separated by a comma
|
||||
;CityRepsList=0:47,2:48,1:49,4:50,5:51,3:52,8:53,6:54,7:55,13:56,10:57,11:59,14:61,17:63,19:64,18:65,25:66,9:294,20:308
|
||||
|
||||
;Set this to a valid path to save a copy of the console contents
|
||||
@@ -500,7 +515,6 @@ AutoQuickSavePage=1
|
||||
|
||||
;Set to 1 to speed up the HP/AC counter animations
|
||||
;Set to 2 to update the HP/AC counters instantly
|
||||
;Set to 3 to update the AC counter instantly when switching to other controlled critters in combat
|
||||
SpeedInterfaceCounterAnims=0
|
||||
|
||||
;These lines allow you to control the karma FRMs displayed on the character screen
|
||||
@@ -515,23 +529,23 @@ ScienceOnCritters=0
|
||||
;Default is 166 (lower - faster; valid range: 0..1000)
|
||||
SpeedInventoryPCRotation=166
|
||||
|
||||
;Modify the number of the extra interface boxes available to modders. (Default is 5, and the maximum is 95)
|
||||
;Modify the number of the extra interface boxes available to modders (Default is 5, and the maximum is 95)
|
||||
BoxBarCount=5
|
||||
|
||||
;Uncomment to set the text colour of the extra interface boxes
|
||||
;The line must contain the same number of digits as the value of BoxBarCount, each either a 0 for green or 1 for red
|
||||
;BoxBarColours=00000
|
||||
|
||||
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
|
||||
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly
|
||||
BonusHtHDamageFix=1
|
||||
|
||||
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
|
||||
DisplayBonusDamage=0
|
||||
|
||||
;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127)
|
||||
;Modify the maximum number of animations allowed to run on a map (Default is 32, and the maximum is 127)
|
||||
AnimationsAtOnceLimit=64
|
||||
|
||||
;Set to 1 to remove the limits that stop the player rolling critical successes/misses in the first few days of game time
|
||||
;Set to 1 to remove the limits that stop the game from rolling critical successes/failures in the first few days of game time
|
||||
RemoveCriticalTimelimits=0
|
||||
|
||||
;Change the colour of the font used on the main menu for the Fallout/sfall version string and copyright text
|
||||
@@ -584,7 +598,7 @@ DisablePipboyAlarm=0
|
||||
;MainMenuCreditsOffsetX=0
|
||||
;MainMenuCreditsOffsetY=0
|
||||
|
||||
;Prevents you from using super stims on a critter who is at full health.
|
||||
;Prevents you from using super stims on a critter who is at full health
|
||||
SuperStimExploitFix=0
|
||||
|
||||
;Change the AP cost for accessing inventory in combat, and the related effect of Quick Pockets perk
|
||||
@@ -617,10 +631,10 @@ ExplosionsEmitLight=0
|
||||
;MovieTimer_artimer3=270
|
||||
;MovieTimer_artimer4=360
|
||||
|
||||
;Set to 1 to add proper check for ammo before attacking and proper calculation of the number of burst rounds
|
||||
;By default, weapons can make attacks when at least one ammo is left, regardless of ammo cost calculations
|
||||
;Set to 1 to add proper checks for ammo before attacking
|
||||
;By default, a weapon can perform an attack with at least one ammo, regardless of ammo cost calculation
|
||||
;Note that enabling this option will prevent super cattle prods and mega power fists from attacking with only one ammo left
|
||||
CheckWeaponAmmoCost=0
|
||||
CheckWeaponAmmoCost=1
|
||||
|
||||
;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535)
|
||||
CombatPanelAnimDelay=1000
|
||||
@@ -682,9 +696,6 @@ DeathScreenFontPatch=0
|
||||
;Set to 1 to display full item description for weapon/ammo in the barter screen
|
||||
FullItemDescInBarter=0
|
||||
|
||||
;Set to 1 to display experience points with the bonus from Swift Learner perk when gained from non-scripted situations
|
||||
DisplaySwiftLearnerExp=1
|
||||
|
||||
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
|
||||
PartyMemberExtraInfo=0
|
||||
|
||||
@@ -741,7 +752,7 @@ AIBestWeaponFix=1
|
||||
|
||||
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as a preference list when using drugs in their inventory
|
||||
;Set to 2 to allow NPCs to use only the drugs listed in chem_primary_desire and healing drugs (stimpaks and healing powder)
|
||||
;Note: chem_primary_desire w/o fixes prevents the specified item PID from being consumed if all three values in the list are the same PID
|
||||
;Note: chem_primary_desire without fixes prevents the specified item from being consumed if all three values in the list are the same PID
|
||||
;chem_primary_desire also works as a priority list of drug items the NPC will try to pick up in combat when they are on the ground
|
||||
AIDrugUsePerfFix=0
|
||||
|
||||
@@ -809,10 +820,9 @@ DisableSpecialAreas=0
|
||||
;Paths outside of scripts folder are supported
|
||||
GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
|
||||
|
||||
;Uncomment the option to specify an additional folder path for ini files used by scripts
|
||||
;The game will search for the ini files relative to this directory
|
||||
;If the file is not found, the search will proceed relative to the root directory of the game
|
||||
;The maximum length of the specified path is 61 characters
|
||||
;Uncomment the option to specify an additional directory for ini files used by scripts
|
||||
;The game will search for ini files first relative to this directory and then relative to the root directory if not found
|
||||
;The path length is limited to 61 characters
|
||||
;IniConfigFolder=mods\iniConfigs
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
@@ -838,7 +848,7 @@ AllowUnsafeScripting=0
|
||||
SkipCompatModeCheck=0
|
||||
|
||||
;Fallout 2 Debug Patch
|
||||
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and debug.log
|
||||
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both
|
||||
;Does not require sfall debugging mode
|
||||
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg
|
||||
;-------
|
||||
@@ -876,7 +886,7 @@ AlwaysFindScripts=0
|
||||
Test_ForceFloats=0
|
||||
|
||||
;These options control what output is saved in the debug log (sfall-log.txt)
|
||||
;Prints messages duing sfall initialization
|
||||
;Prints messages during sfall initialization
|
||||
Init=1
|
||||
;Prints messages relating to hook scripts
|
||||
Hook=0
|
||||
@@ -886,3 +896,19 @@ Script=0
|
||||
Criticals=1
|
||||
;Prints messages relating to engine fixes
|
||||
Fixes=1
|
||||
|
||||
;Duplicates logs to a dedicated console window alongside the game window
|
||||
;This option uses bit flags to control the types of messages to be shown
|
||||
;All types other than sfall log (bit 1) require DebugMode to be enabled
|
||||
;1 (bit 0) - debug output from the engine
|
||||
;2 (bit 1) - sfall log
|
||||
;4 (bit 2) - messages from debug_msg script function
|
||||
;8 (bit 3) - messages from display_msg script function
|
||||
ConsoleWindow=0b0000
|
||||
|
||||
;Console window position and size data. Do not modify
|
||||
;Clear the data to reset the window position and size
|
||||
ConsoleWindowData=
|
||||
|
||||
;Set the code page for the console window (Default is your system code page)
|
||||
ConsoleCodePage=0
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
A basic example of how to use set_spray_settings function for script-based burst control
|
||||
*/
|
||||
|
||||
#include "..\headers\define.h"
|
||||
#include "..\headers\sfall\define_extra.h"
|
||||
#include "..\headers\sfall\sfall.h"
|
||||
|
||||
procedure start;
|
||||
procedure ammocost_handler;
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook_proc(HOOK_AMMOCOST, ammocost_handler);
|
||||
end
|
||||
end
|
||||
|
||||
procedure ammocost_handler begin
|
||||
variable
|
||||
weapon := get_sfall_arg,
|
||||
bullets := get_sfall_arg,
|
||||
cost := get_sfall_arg,
|
||||
event := get_sfall_arg;
|
||||
|
||||
if (event == 2 and weapon > 0) then begin // when calculating number of burst rounds
|
||||
if (obj_pid(weapon) == PID_ASSAULT_RIFLE) then begin
|
||||
set_spray_settings(1, 1, 1, 1); // burst attack will not hit other targets
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,28 +1,69 @@
|
||||
/*
|
||||
Example algorithm of how the game engine calculates combat damage
|
||||
This script reimplements the combat damage calculation of the original game.
|
||||
Use this to implement your own damage formula!
|
||||
*/
|
||||
|
||||
#include "..\headers\define.h"
|
||||
#include "..\headers\command.h"
|
||||
#include "..\headers\sfall\sfall.h"
|
||||
#include "..\headers\sfall\define_extra.h"
|
||||
#include "../sfall/define_lite.h"
|
||||
#include "../sfall/define_extra.h"
|
||||
#include "../sfall/sfall.h"
|
||||
|
||||
#define DAMAGE_FORMULA_VANILLA (0)
|
||||
#define DAMAGE_FORMULA_GLOVZ (1)
|
||||
#define DAMAGE_FORMULA_GLOVZ2 (2)
|
||||
#define DAMAGE_FORMULA_YAAM (5)
|
||||
|
||||
procedure start;
|
||||
procedure compute_damage_F2;
|
||||
procedure item_w_damage_hook;
|
||||
procedure combatdamage_handler;
|
||||
procedure itemdamage_handler;
|
||||
procedure calc_damage_YAAM(variable weapon, variable rounds, variable armorDT, variable armorDR, variable bonusRangedDamage, variable multiplyDamage, variable difficulty);
|
||||
procedure item_w_subtype(variable weapon, variable hit_mode);
|
||||
procedure get_ammo_value(variable weapon, variable param);
|
||||
|
||||
variable item_w_damage;
|
||||
variable
|
||||
damage_formula,
|
||||
item_damage_min,
|
||||
item_damage_max,
|
||||
item_damage_weapon,
|
||||
item_damage_attacker;
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook_proc(HOOK_COMBATDAMAGE, compute_damage_F2);
|
||||
register_hook_proc(HOOK_ITEMDAMAGE, item_w_damage_hook);
|
||||
damage_formula := get_ini_setting("ddraw.ini|Misc|DamageFormula");
|
||||
register_hook_proc(HOOK_COMBATDAMAGE, combatdamage_handler);
|
||||
register_hook_proc(HOOK_ITEMDAMAGE, itemdamage_handler);
|
||||
end
|
||||
end
|
||||
|
||||
procedure compute_damage_F2 begin
|
||||
/*
|
||||
HOOK_COMBATDAMAGE
|
||||
|
||||
Runs when:
|
||||
1) Game calculates how much damage each target will get. This includes primary target as well as all extras (explosions and bursts). This happens BEFORE the actual attack animation.
|
||||
2) AI decides whether it is safe to use area attack (burst, grenades), if he might hit friendlies.
|
||||
|
||||
Does not run for misses, or non-combat damage like dynamite explosions.
|
||||
|
||||
Critter arg0 - The target
|
||||
Critter arg1 - The attacker
|
||||
int arg2 - The amount of damage to the target
|
||||
int arg3 - The amount of damage to the attacker
|
||||
int arg4 - The special effect flags for the target (use bwand DAM_* to check specific flags)
|
||||
int arg5 - The special effect flags for the attacker (use bwand DAM_* to check specific flags)
|
||||
Item arg6 - The weapon used in the attack
|
||||
int arg7 - The bodypart that was struck
|
||||
int arg8 - Damage Multiplier (this is divided by 2, so a value of 3 does 1.5x damage, and 8 does 4x damage. Usually it's 2; for critical hits, the value is taken from the critical table; with Silent Death perk and the corresponding attack conditions, the value will be doubled)
|
||||
int arg9 - Number of bullets actually hit the target (1 for melee attacks)
|
||||
int arg10 - The amount of knockback to the target
|
||||
int arg11 - Attack Type (see ATKTYPE_* constants)
|
||||
mixed arg12 - computed attack data (see C_ATTACK_* for offsets and use get/set_object_data functions to get/set the data)
|
||||
|
||||
int ret0 - The damage to the target
|
||||
int ret1 - The damage to the attacker
|
||||
int ret2 - The special effect flags for the target
|
||||
int ret3 - The special effect flags for the attacker
|
||||
int ret4 - The amount of knockback to the target
|
||||
*/
|
||||
procedure combatdamage_handler begin
|
||||
variable dmg_type, weapon_perk, dmg_thresh, dmg_resist, weapon_subtype, bonus_ranged, difficulty, i, dmg_mult, dmg_div, damage;
|
||||
variable target, flags, knockback, amount;
|
||||
|
||||
@@ -40,6 +81,11 @@ procedure compute_damage_F2 begin
|
||||
amountKnockback := get_sfall_arg,
|
||||
hit_mode := get_sfall_arg;
|
||||
|
||||
if (ctdSource != item_damage_attacker or weapon != item_damage_weapon) then begin
|
||||
debug_msg("! ERROR ! compute_damage: Expected attacker or weapon differs!");
|
||||
return;
|
||||
end
|
||||
|
||||
if (flagsSource bwand DAM_HIT) then begin
|
||||
target := ctdTarget;
|
||||
flags := flagsTarget;
|
||||
@@ -50,7 +96,6 @@ procedure compute_damage_F2 begin
|
||||
knockback := 0;
|
||||
end
|
||||
|
||||
//amount := 0;
|
||||
if target and (obj_type(target) == OBJ_TYPE_CRITTER) then begin
|
||||
if weapon then begin
|
||||
dmg_type := weapon_dmg_type(weapon);
|
||||
@@ -77,7 +122,7 @@ procedure compute_damage_F2 begin
|
||||
end
|
||||
|
||||
weapon_subtype := item_w_subtype(weapon, hit_mode); // item_w_subtype_
|
||||
if (ctdSource != dude_obj) or (weapon_subtype != WEAPON_TYPE_GUNS) then
|
||||
if (ctdSource != dude_obj) or (weapon_subtype != WEAPON_TYPE_RANGED) then
|
||||
bonus_ranged := 0;
|
||||
else
|
||||
bonus_ranged := has_trait(TRAIT_PERK, ctdSource, PERK_bonus_ranged_damage) * 2;
|
||||
@@ -90,27 +135,31 @@ procedure compute_damage_F2 begin
|
||||
difficulty := 125;
|
||||
end
|
||||
|
||||
// F2 default start
|
||||
// Damage = (1 - (DR_armor + DR_ammo_adjust) * (((raw_damage * (dmg_mult * damageMultiplier)) / dmg_div) - dmg_thresh)
|
||||
dmg_resist += get_ammo_value(weapon, PROTO_AM_DR_MOD); // item_w_dr_adjust_ (DR Adjust %)
|
||||
if (dmg_resist < 100) then begin
|
||||
if (dmg_resist < 0) then dmg_resist := 0;
|
||||
if (damage_formula == DAMAGE_FORMULA_YAAM) then begin
|
||||
amount := calc_damage_YAAM(weapon, rounds, dmg_thresh, dmg_resist, bonus_ranged, damageMultiplier, difficulty);
|
||||
end else begin
|
||||
// F2 default start
|
||||
// Damage = (1 - (DR_armor + DR_ammo_adjust) * (((raw_damage * (dmg_mult * damageMultiplier)) / dmg_div) - dmg_thresh)
|
||||
dmg_resist += get_ammo_value(weapon, PROTO_AM_DR_MOD); // item_w_dr_adjust_ (DR Adjust %)
|
||||
if (dmg_resist < 100) then begin
|
||||
if (dmg_resist < 0) then dmg_resist := 0;
|
||||
|
||||
dmg_mult := damageMultiplier * get_ammo_value(weapon, PROTO_AM_DMG_MULT); // item_w_dam_mult_ (Dmg mod A)
|
||||
dmg_div := get_ammo_value(weapon, PROTO_AM_DMG_DIV); // item_w_dam_div_ (Dmg mod B)
|
||||
dmg_mult := damageMultiplier * get_ammo_value(weapon, PROTO_AM_DMG_MULT); // item_w_dam_mult_ (Dmg mod A)
|
||||
dmg_div := get_ammo_value(weapon, PROTO_AM_DMG_DIV); // item_w_dam_div_ (Dmg mod B)
|
||||
|
||||
for (i := 1; i <= rounds; i++) begin
|
||||
damage := (item_w_damage + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage)
|
||||
if dmg_div then damage /= dmg_div;
|
||||
for (i := 1; i <= rounds; i++) begin
|
||||
damage := (random(item_damage_min, item_damage_max) + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage)
|
||||
if dmg_div then damage /= dmg_div;
|
||||
|
||||
damage := (((damage / 2) * difficulty) / 100) - dmg_thresh;
|
||||
if (damage > 0) then begin
|
||||
damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo
|
||||
if (damage > 0) then amount += damage;
|
||||
damage := (((damage / 2) * difficulty) / 100) - dmg_thresh;
|
||||
if (damage > 0) then begin
|
||||
damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo
|
||||
if (damage > 0) then amount += damage;
|
||||
end
|
||||
end
|
||||
end
|
||||
// F2 default end
|
||||
end
|
||||
// F2 default end
|
||||
|
||||
if (ctdSource == dude_obj) then begin
|
||||
if has_trait(TRAIT_PERK, ctdSource, PERK_living_anatomy_perk) and (critter_kill_type(ctdTarget) != KILL_TYPE_robot_kills)
|
||||
@@ -140,11 +189,11 @@ procedure compute_damage_F2 begin
|
||||
end
|
||||
|
||||
if (flagsSource bwand DAM_HIT) then begin
|
||||
display_msg("amountTarget = " + amountTarget+ ", amount = " + amount);
|
||||
display_msg("COMBATDAMAGE amountTarget = " + amountTarget+ ", amount = " + amount);
|
||||
amountTarget := amount;
|
||||
flagsTarget := flags;
|
||||
end else begin
|
||||
display_msg("amountSource = " + amountSource+ ", amount = " + amount);
|
||||
display_msg("COMBATDAMAGE amountSource = " + amountSource+ ", amount = " + amount);
|
||||
amountSource := amount;
|
||||
flagsSource := flags;
|
||||
end
|
||||
@@ -154,40 +203,118 @@ procedure compute_damage_F2 begin
|
||||
set_sfall_return(flagsTarget);
|
||||
set_sfall_return(flagsSource);
|
||||
set_sfall_return(amountKnockback);
|
||||
|
||||
set_sfall_arg(2, amountTarget);
|
||||
set_sfall_arg(3, amountSource);
|
||||
set_sfall_arg(4, flagsTarget);
|
||||
set_sfall_arg(5, flagsSource);
|
||||
set_sfall_arg(10, amountKnockback);
|
||||
end
|
||||
|
||||
procedure item_w_damage_hook begin
|
||||
variable
|
||||
item_w_damage_min := get_sfall_arg,
|
||||
item_w_damage_max := get_sfall_arg;
|
||||
//weapon := get_sfall_arg,
|
||||
//source := get_sfall_arg,
|
||||
procedure calc_damage_YAAM(variable weapon, variable rounds, variable armorDT, variable armorDR, variable bonusRangedDamage, variable multiplyDamage, variable difficulty) begin
|
||||
variable accumulatedDamage, ammoDiv, ammoMult, ammoDT, calcDT, _calcDT, calcDR, i, rawDamage, resistedDamage;
|
||||
if (rounds <= 0) then begin
|
||||
return 0;
|
||||
end
|
||||
|
||||
ammoDiv := get_ammo_value(weapon, PROTO_AM_DMG_DIV);
|
||||
ammoMult := get_ammo_value(weapon, PROTO_AM_DMG_MULT);
|
||||
|
||||
// Damage Multipler = Critical Multipler * Ammo Dividend
|
||||
multiplyDamage *= ammoMult;
|
||||
|
||||
// Retrieve ammo DT (well, it's really Retrieve ammo DR, but since we're treating ammo DR as ammo DT...)
|
||||
ammoDT := get_ammo_value(weapon, PROTO_AM_DR_MOD);
|
||||
|
||||
calcDT := armorDT - ammoDT;
|
||||
_calcDT := calcDT;
|
||||
|
||||
if (calcDT >= 0) then begin
|
||||
_calcDT := 0;
|
||||
end else begin
|
||||
// note that this should be a negative value
|
||||
_calcDT *= 10;
|
||||
calcDT := 0;
|
||||
end
|
||||
|
||||
// DR = armor DR + DT (note that DT should be less than or equal to zero)
|
||||
calcDR = armorDR + _calcDT;
|
||||
if (calcDR < 0) then begin
|
||||
calcDR = 0;
|
||||
end else if (calcDR >= 100) then begin
|
||||
return 0;
|
||||
end
|
||||
|
||||
display_msg("YAAM: AmmoDT=" + ammoDT + ", DT=" + calcDT + "/" + armorDT + ", DR=" + calcDR + "/" + armorDR);
|
||||
// Start of damage calculation loop
|
||||
for (i := 0; i < rounds; i++) begin
|
||||
rawDamage = random(item_damage_min, item_damage_max);
|
||||
rawDamage += bonusRangedDamage;
|
||||
|
||||
rawDamage -= calcDT;
|
||||
if (rawDamage <= 0) then
|
||||
continue;
|
||||
|
||||
rawDamage *= multiplyDamage;
|
||||
if (ammoDiv != 0) then begin
|
||||
rawDamage /= ammoDiv;
|
||||
end
|
||||
rawDamage /= 2; // related to critical hit damage multiplier bonus
|
||||
rawDamage *= difficulty; // combat difficulty setting (75 if wimpy, 100 if normal or if attacker is player, 125 if rough)
|
||||
rawDamage /= 100;
|
||||
|
||||
resistedDamage = calcDR * rawDamage;
|
||||
resistedDamage /= 100;
|
||||
rawDamage -= resistedDamage;
|
||||
|
||||
if (rawDamage > 0) then begin
|
||||
display_msg("YAAM: Bullet " + i + " dmg=" + rawDamage);
|
||||
accumulatedDamage += rawDamage;
|
||||
end
|
||||
end
|
||||
return accumulatedDamage;
|
||||
end
|
||||
|
||||
/*
|
||||
HOOK_ITEMDAMAGE
|
||||
|
||||
Runs when retrieving the damage rating of the player's used weapon. (Which may be their fists.)
|
||||
|
||||
int arg0 - The default min damage
|
||||
int arg1 - The default max damage
|
||||
Item arg2 - The weapon used (0 if unarmed)
|
||||
Critter arg3 - The critter doing the attacking
|
||||
int arg4 - The type of attack
|
||||
int arg5 - non-zero if this is an attack using a melee weapon
|
||||
|
||||
int ret0 - Either the damage to be used, if ret1 isn't given, or the new minimum damage if it is
|
||||
int ret1 - The new maximum damage
|
||||
*/
|
||||
procedure itemdamage_handler begin
|
||||
item_damage_min := get_sfall_arg;
|
||||
item_damage_max := get_sfall_arg;
|
||||
item_damage_weapon := get_sfall_arg;
|
||||
item_damage_attacker := get_sfall_arg;
|
||||
//hit_mode := get_sfall_arg,
|
||||
//isMelee := get_sfall_arg;
|
||||
|
||||
item_w_damage := (item_w_damage_min + (item_w_damage_max - item_w_damage_min) / 2);
|
||||
display_msg("item_w_damage_ = " + item_w_damage);
|
||||
|
||||
set_sfall_return(item_w_damage);
|
||||
display_msg("itemdamage: " + item_damage_min + "-" + item_damage_max);
|
||||
end
|
||||
|
||||
procedure item_w_subtype(variable weapon, variable hit_mode) begin
|
||||
variable attack_mode, type := WEAPON_TYPE_UNARMED;
|
||||
|
||||
if weapon and (hit_mode <= ATKTYPE_RWEP2) then begin
|
||||
attack_mode := (get_proto_data(obj_pid(weapon), PROTO_IT_FLAGS));
|
||||
attack_mode := weapon_attack_mode(obj_pid(weapon), hit_mode);
|
||||
|
||||
if (hit_mode == ATKTYPE_LWEP2) or (hit_mode == ATKTYPE_RWEP2) then
|
||||
attack_mode := (attack_mode bwand 0xF0) / 16; // shift 4 bits to the right
|
||||
else
|
||||
attack_mode := (attack_mode bwand 0x0F);
|
||||
|
||||
if (attack_mode > ATKMODE_PRI_THROW) then
|
||||
type := WEAPON_TYPE_GUNS;
|
||||
else if (attack_mode == ATKMODE_PRI_THROW) then
|
||||
if (attack_mode >= ATTACK_MODE_SINGLE) then
|
||||
type := WEAPON_TYPE_RANGED;
|
||||
else if (attack_mode == ATTACK_MODE_THROW) then
|
||||
type := WEAPON_TYPE_THROWN;
|
||||
else if (attack_mode > ATKMODE_PRI_KICK) then
|
||||
else if (attack_mode >= ATTACK_MODE_SWING) then
|
||||
type := WEAPON_TYPE_MELEE;
|
||||
else if (attack_mode == ATTACK_MODE_NONE) then
|
||||
type := WEAPON_TYPE_NONE;
|
||||
end
|
||||
|
||||
return type;
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
|
||||
Molotov Fire Damage mod for Fallout 2 by NovaRain
|
||||
-------------------------------------------------
|
||||
|
||||
- molotov cocktail now inflicts fire damage to critters
|
||||
- molotov cocktail can still blow up some doors and scenery objects as before
|
||||
|
||||
Requires sfall 3.8.4 or higher
|
||||
|
||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
||||
(short circuit evaluation)
|
||||
|
||||
*/
|
||||
|
||||
|
||||
procedure start;
|
||||
procedure afterhitroll_handler;
|
||||
|
||||
#include "..\headers\define.h"
|
||||
#include "..\headers\sfall\sfall.h"
|
||||
#include "..\headers\sfall\define_extra.h"
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook_proc(HOOK_AFTERHITROLL, afterhitroll_handler);
|
||||
end
|
||||
end
|
||||
|
||||
procedure afterhitroll_handler begin
|
||||
variable
|
||||
hitType := get_sfall_arg,
|
||||
attacker := get_sfall_arg,
|
||||
target := get_sfall_arg,
|
||||
slot, item;
|
||||
|
||||
if (target and attacker) then begin
|
||||
if (attacker == dude_obj and active_hand == 0) then begin
|
||||
slot := INVEN_TYPE_LEFT_HAND;
|
||||
end else begin
|
||||
slot := INVEN_TYPE_RIGHT_HAND;
|
||||
end
|
||||
item := critter_inven_obj(attacker, slot);
|
||||
|
||||
if (item and obj_pid(item) == PID_MOLOTOV_COCKTAIL) then begin
|
||||
if (obj_type(target) == OBJ_TYPE_SCENERY and hitType > 1) then begin
|
||||
set_proto_data(PID_MOLOTOV_COCKTAIL, PROTO_WP_DMG_TYPE, DMG_explosion);
|
||||
end else begin
|
||||
set_proto_data(PID_MOLOTOV_COCKTAIL, PROTO_WP_DMG_TYPE, DMG_fire);
|
||||
set_attack_explosion_radius(2); // grenade radius
|
||||
set_attack_is_explosion_fire;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Molotov Fire Damage mod for Fallout 2 by NovaRain
|
||||
-------------------------------------------------
|
||||
|
||||
- molotov cocktail now inflicts fire damage to critters
|
||||
- molotov cocktail can still blow up some doors and scenery objects as before
|
||||
|
||||
|
||||
Requires sfall 3.8.4 or higher.
|
||||
|
||||
To use, copy gl_molotov.int to your scripts folder.
|
||||
|
||||
This mod is an example of how you can use metarule2_explosions macros.
|
||||
Binary file not shown.
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
|
||||
Resting Encounters mod for Fallout 2 by Lexx
|
||||
--------------------------------------------
|
||||
|
||||
- Check where we are on the world map and overwrite the default desert "resting" map
|
||||
- Compatible with vanilla Fallout 2 and UP/RP
|
||||
|
||||
Requires sfall 4.3.6/3.8.38 or higher
|
||||
|
||||
*/
|
||||
|
||||
#include "..\headers\define.h"
|
||||
#include "..\headers\sfall\sfall.h"
|
||||
#include "..\headers\sfall\lib.arrays.h"
|
||||
|
||||
procedure start;
|
||||
procedure encounter_handler;
|
||||
|
||||
#define is_terrain_desert (get_current_terrain_name == mstr_worldmap(1000))
|
||||
#define is_terrain_mountains (get_current_terrain_name == mstr_worldmap(1001))
|
||||
#define is_terrain_city (get_current_terrain_name == mstr_worldmap(1002))
|
||||
#define is_terrain_coast (get_current_terrain_name == mstr_worldmap(1003))
|
||||
|
||||
procedure start begin
|
||||
if (game_loaded) then begin
|
||||
register_hook_proc(HOOK_ENCOUNTER, encounter_handler);
|
||||
end
|
||||
end
|
||||
|
||||
procedure encounter_handler begin
|
||||
variable
|
||||
event := get_sfall_arg,
|
||||
mapID := get_sfall_arg,
|
||||
mapsList;
|
||||
|
||||
// If the player enters a map on the world map, we set it depending on the current terrain type
|
||||
// event 0 is random encounter, 1 is player initiated "encounter"
|
||||
if (event == 1 AndAlso mapID == MAP_RND_DESERT_1) then begin
|
||||
if (is_terrain_desert) then begin
|
||||
mapsList := [MAP_RND_DESERT_1];
|
||||
if (global_var(GVAR_CAR_PLACED_TILE) < 0) then set_car_current_town(AREA_RND_DESERT);
|
||||
end
|
||||
else if (is_terrain_mountains) then begin
|
||||
mapsList := [MAP_RND_MOUNTAIN1, MAP_RND_MOUNTAIN2];
|
||||
if (global_var(GVAR_CAR_PLACED_TILE) < 0) then set_car_current_town(AREA_RND_MOUNTAIN);
|
||||
end
|
||||
else if (is_terrain_city) then begin
|
||||
mapsList := [MAP_RND_CITY1, MAP_RND_CITY_2, MAP_RND_CITY_3, MAP_RND_CITY_4, MAP_RND_CITY_5, MAP_RND_CITY_6, MAP_RND_CITY_7, MAP_RND_CITY_8];
|
||||
if (global_var(GVAR_CAR_PLACED_TILE) < 0) then set_car_current_town(AREA_RND_CITY);
|
||||
end
|
||||
else if (is_terrain_coast) then begin
|
||||
mapsList := [MAP_RND_COAST1, MAP_RND_COAST2];
|
||||
if (global_var(GVAR_CAR_PLACED_TILE) < 0) then set_car_current_town(AREA_RND_COAST);
|
||||
end
|
||||
else begin
|
||||
mapsList := [MAP_RND_DESERT_1];
|
||||
if (global_var(GVAR_CAR_PLACED_TILE) < 0) then set_car_current_town(AREA_RND_DESERT);
|
||||
debug_msg("!!! COULDN'T DETECT TERRAIN TYPE !!!");
|
||||
end
|
||||
|
||||
mapID := array_random_value(mapsList);
|
||||
set_sfall_return(mapID);
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
Resting Encounters mod for Fallout 2 by Lexx
|
||||
--------------------------------------------
|
||||
|
||||
- Check where we are on the world map and overwrite the default desert "resting" map
|
||||
- Compatible with vanilla Fallout 2 and UP/RP
|
||||
|
||||
|
||||
Requires sfall 4.3.6/3.8.38 or higher.
|
||||
|
||||
To use, copy gl_rest_encounter.int to your scripts folder.
|
||||
|
||||
This mod is an example of how you can use HOOK_ENCOUNTER hooks.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user