Compare commits

...
369 Commits
Author SHA1 Message Date
NovaRain d16f1bc60c Correction to the previous commit
* shouldn't modify the string in-place.
2025-04-13 16:39:09 +08:00
NovaRain 3b9348dd69 Removed visible newline chars when examining items in the barter screen
(ref. #401, #591)

Minor code edits to BugFixes.cpp.
Updated changelog.
2025-04-13 01:07:09 +08:00
NovaRain d95780aa7c Updated changelog 2025-04-09 09:23:23 +08:00
NovaRain a1a130a44d Minor code edits to Movies.cpp 2025-04-06 12:33:38 +08:00
NovaRain 8323cbd092 Code edit to the previous commit 2025-04-05 22:12:30 +08:00
NovaRain 503e25a92a Changed the implementation of ProcessorIdle
* now the same as CPU_USAGE_FIX in Mash's HRP, with a simpler toggle
setting.

* also avoids slowdowns if the player happens to enable both of them.
2025-04-05 17:37:57 +08:00
NovaRain 114e9d8ae6 Tightened the compatibility mode check (again)
(OS check is now limited to unsupported Windows versions.)
2025-04-04 15:22:36 +08:00
NovaRain 3476a27a54 Reverted commit 1a69eaf
(found another way to fix freezing issues in Win11 24H2.)
2025-04-03 01:20:32 +08:00
NovaRain d112a6ec09 Fixed out-of-bounds selection in the file list when loading a GCD file 2025-04-02 13:59:52 +08:00
NovaRain 1a69eaf39a Reverted part of the optimization for the save/load game screens
(commit 81912b47, as it could cause the cursor to become unresponsive.)

Updated version number.
2025-03-31 21:53:57 +08:00
NovaRainandGitHub 194a736a06 Merge pull request #588 from sfall-team/dependabot/bundler/docs/nokogiri-1.18.4
Bump nokogiri from 1.18.3 to 1.18.4 in /docs
2025-03-22 08:10:18 +08:00
dependabot[bot]andGitHub 7131879776 Bump nokogiri from 1.18.3 to 1.18.4 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.3 to 1.18.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.3...v1.18.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-22 00:00:43 +00:00
NovaRain 70340af564 Updated version number and changelog 2025-03-20 22:29:13 +08:00
NovaRain 09595c0e17 Correction to the previous commit
* should have checked for anim code directly instead of critter flag.
2025-03-18 11:02:45 +08:00
NovaRain 730cdd8ae8 Minor edits to code and function notes 2025-03-11 09:00:28 +08:00
NovaRain 3fde11c7d9 Added a tweak to replace death anims on critters with "_sf" variants on map load
(also fix critters stuck in the middle of death anims after returning
to the map, #584)
2025-03-10 10:02:18 +08:00
NovaRain 3a29db5f90 Fixed broken critter art debug message
(caused by commit a34aa64c)
2025-03-08 19:49:00 +08:00
NovaRain e18df80980 Allow death animations to finish when entering combat
(to prevent animation glitch, #584)
2025-03-05 10:28:09 +08:00
NovaRainandGitHub bdf6046df2 Merge pull request #585 from sfall-team/dependabot/bundler/docs/uri-0.13.2
Bump uri from 0.13.0 to 0.13.2 in /docs
2025-03-04 06:49:24 +08:00
dependabot[bot]andGitHub 3434626608 Bump uri from 0.13.0 to 0.13.2 in /docs
Bumps [uri](https://github.com/ruby/uri) from 0.13.0 to 0.13.2.
- [Release notes](https://github.com/ruby/uri/releases)
- [Commits](https://github.com/ruby/uri/compare/v0.13.0...v0.13.2)

---
updated-dependencies:
- dependency-name: uri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-03 22:22:47 +00:00
NovaRain 90872396ad Changed PipBoyAvailableAtGameStart and set_pipboy_available
* They no longer modify the vault suit movie state, which was an
undesired behavior.

Updated scripting documents.
2025-03-02 11:26:03 +08:00
NovaRain 8edd813ec1 Improved the fix for "out of bounds" bug when printing the automap list
* prevent the overflow of _sortlist (holds 24 elements at max).
* NOTE: the fix just cuts off location/elevation lists, and should be
removed once a proper pagination in pipboy is implemented.
2025-03-01 23:20:14 +08:00
NovaRain 3f3accbc24 Improved the fix for extra hidden buttons in the previous commit
(ref. alexbatalov/fallout2-ce#465, alexbatalov/fallout2-ce#466)
2025-02-25 11:19:46 +08:00
NovaRain 73872e41b6 Fixed extra hidden buttons appearing below the location list
* in the Status section in the pipboy (a partial fix).
(ref. alexbatalov/fallout2-ce#465)
2025-02-24 23:51:57 +08:00
NovaRain d8a1b94724 Fixed double click sound when selecting a location in pipboy status
(ref. alexbatalov/fallout2-ce#462)
2025-02-21 11:13:46 +08:00
NovaRainandGitHub 5c847b671a Merge pull request #583 from sfall-team/dependabot/bundler/docs/nokogiri-1.18.3
Bump nokogiri from 1.16.6 to 1.18.3 in /docs
2025-02-19 20:58:22 +08:00
dependabot[bot]andGitHub ad3bcfea5f Bump nokogiri from 1.16.6 to 1.18.3 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.6 to 1.18.3.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.18.3/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.6...v1.18.3)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-19 12:54:23 +00:00
NovaRain 9bf9de2a95 Fixed the incorrect message when attempting to repair dead robots
(ref. alexbatalov/fallout2-ce#459)
2025-02-19 12:15:13 +08:00
NovaRain 345815ec88 Fixed display issues when highlighting a multiline dialogue option
(ref. alexbatalov/fallout2-ce#418)
2025-02-12 13:22:48 +08:00
NovaRain 115e71543b Code edits to Perks.cpp 2025-02-09 12:31:21 +08:00
NovaRain 0b9140b3ef Restored the position of the ammo bar when ALTERNATE_AMMO_METRE=0 2025-02-03 12:07:43 +08:00
NovaRain 38d00f2e5f Fixed the main menu music not stopping when replaying the intro
(ref. alexbatalov/fallout2-ce#399)
2025-02-01 16:03:25 +08:00
NovaRain 7efcf1b21c Fixed item's unique ID being reset by a non-unique item (closes #582) 2025-01-31 22:40:49 +08:00
NovaRain 7887bf5e95 Simplified some jumps in ASM code
* Replaced single-use "mov reg, addr; jmp reg" with constant variables.
2025-01-30 19:44:55 +08:00
NovaRain 1cbca9c133 Added settings about Educated, Healer, and Lifegiver to perks.ini 2025-01-27 21:02:35 +08:00
NovaRain d07d27fcec Tightened the compatibility mode check 2025-01-26 11:31:01 +08:00
NovaRain 0604112a2e Edits to function documents 2025-01-22 21:37:06 +08:00
NovaRain b6b7ee04f2 Fixed issues related to negative weapon ammo
(ref. alexbatalov/fallout2-ce#443)

Fixed freeze when reloading an overloaded weapon via the interface bar.
2025-01-19 15:07:35 +08:00
NovaRain b7f7a0362f Added German and French resource files 2025-01-14 12:28:13 +08:00
NovaRain b957a05e68 Reduced the green tone of the message window
(less pixelated colors and for text clarity)

Updated resource files.
2025-01-11 14:21:25 +08:00
NovaRainandGitHub aa54e85537 Merge pull request #580 from defder-su/typo
Fixed typo
2025-01-10 09:06:23 +08:00
defder-suandGitHub 238b7368a2 Fixed typo
https://sfall-team.github.io/sfall/hook-types/#withinperception
2025-01-09 19:10:22 +00:00
NovaRain 1224eaa018 Fixed map lighting from Night Vision perk
* Before the perk effect only kicked in when map update proc ran after
game load. Now the delay is much shorter.
2025-01-09 10:46:43 +08:00
NovaRainandGitHub 686a332888 Merge pull request #579 from defder-su/typo
Fixed typo
2025-01-08 06:26:17 +08:00
defder-suandGitHub 0f33bbf94a Fixed typo
https://sfall-team.github.io/sfall/hook-types/#combatturn
2025-01-07 21:00:51 +00:00
NovaRain f68aaf98b6 Added setting about Comprehension perk to perks.ini 2025-01-07 11:55:22 +08:00
NovaRain ca90166801 Trying to fix gh-pages workflow 2025-01-05 21:39:29 +08:00
NovaRain f5c7d3ccc6 Added setting about Night Vision perk to perks.ini
Updated version number.
2025-01-05 21:03:12 +08:00
NovaRain 4255614112 Cosmetic edits: updated year 2025-01-05 17:29:12 +08:00
NovaRain 69ac2f5b33 Updated changelog 2024-12-04 09:05:18 +08:00
NovaRain 1fc38ca6d1 Added upper limit to WorldMapDelay2 2024-11-22 12:49:25 +08:00
NovaRain d193568678 Tweaked how XPTable data was loaded
* to align hook functions with the engine functions they replaced.
2024-11-19 21:54:26 +08:00
NovaRainandGitHub a585d936ce Merge pull request #569 from sfall-team/dependabot/bundler/docs/rexml-3.3.9
Bump rexml from 3.3.6 to 3.3.9 in /docs
2024-10-29 06:40:45 +08:00
dependabot[bot]andGitHub 999c2aab4d Bump rexml from 3.3.6 to 3.3.9 in /docs
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.6 to 3.3.9.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.6...v3.3.9)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 18:40:55 +00:00
NovaRain 00108e23c2 [HRP] Fixed IFACE_BAR_WIDTH for Chinese version
(wasn't disabled correctly in commit 0622a899)
2024-10-18 10:46:37 +08:00
NovaRain 2c1ae1bf27 Removed unnecessary selfrun file creation
* autoplay was disabled in 4.3 (commit 460bc045)

Updated version number.
2024-10-14 10:52:41 +08:00
NovaRain 6f8b06e738 Updated version number and changelog 2024-09-15 12:45:07 +08:00
NovaRain 63965923a9 Fixed the behavior of game_loaded script function
(always returned 1 when called from normal scripts, closes #567)

- Revert the changes to ScriptExtender.cpp in commit 191beb8, and use
unordered_set instead of vector for caching script program pointers.
2024-09-10 09:49:43 +08:00
NovaRain 58b645a108 Fixed issues with picking Tag! or Mutate! perk if there are unused perks
* their windows keep reappearing when picking other perks, can cause
various issues or even crashes.
2024-09-01 12:21:34 +08:00
NovaRainandGitHub edb7673045 Merge pull request #566 from sfall-team/dependabot/bundler/docs/rexml-3.3.6
Bump rexml from 3.3.3 to 3.3.6 in /docs
2024-08-23 06:41:38 +08:00
dependabot[bot]andGitHub 4618afa404 Bump rexml from 3.3.3 to 3.3.6 in /docs
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.3 to 3.3.6.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.3...v3.3.6)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-22 20:47:05 +00:00
NovaRain c62aa261af Fixed object_fix_weapon_ammo_ engine function
(was incorrectly checking Misc "object" type instead of item subtype.)
2024-08-14 14:41:34 +08:00
NovaRainandGitHub 02a25a0e52 Merge pull request #563 from sfall-team/dependabot/bundler/docs/rexml-3.3.3
Bump rexml from 3.3.2 to 3.3.3 in /docs
2024-08-02 11:26:57 +08:00
dependabot[bot]andGitHub bf930d438a Bump rexml from 3.3.2 to 3.3.3 in /docs
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.3.2...v3.3.3)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-02 02:04:44 +00:00
NovaRain cfdb441dc4 Fixed the return value of using_skill script function
* if the arguments are not the player and SKILL_SNEAK, it returned
garbage values due to the uninitialized variable.
2024-07-31 20:12:29 +08:00
NovaRain 130eb7db77 Merge branch 'feature/restore-sneak-between-maps'
Minor edit to documents.
2024-07-31 08:21:41 +08:00
NovaRain 2c5e044296 Prevent RegisterHook() from registering placeholder hooks
Minor edits to code and documents.
2024-07-19 19:46:12 +08:00
VladandGitHub 9fdbacf4ca Added new HOOK_BUILDSFXWEAPON (#560)
* Hook for gsnd_build_weapon_sfx_name
* Fixed long name ACM crash in AutoSearchSFX
* Updated documents
2024-07-19 19:36:04 +08:00
phobos2077 87202bb124 Scripting headers: add material-related constants, minor lib extensions 2024-07-18 00:29:37 +02:00
NovaRain ec8f64a6cd Added a tweak to restore the sneak state when switching between maps
(can be overridden with map_enter/exit_p_proc in global scripts)
2024-07-16 23:20:27 +08:00
NovaRain 3d1de2c74a Fixed gh-pages build error 2024-07-16 20:50:34 +08:00
NovaRain 190ebc417b Prevent unnecessary toggling of the tags in show/hide_iface_tag 2024-07-16 10:43:45 +08:00
NovaRain 9dce219eb1 Updated version number
Minor code cosmetic edits.
2024-07-08 10:52:31 +08:00
phobos2077 f53fc1f751 Fix dangling pointer when using USE_HIRES_IMAGES and returning to main menu 2024-07-06 20:56:00 +02:00
phobos2077 92aab86b20 Don't use cache for loading HeroApp skilldex art (closes #555)
- It uses the same path every time but swaps dat files...
2024-07-06 20:36:10 +02:00
phobos2077 2daf5b8190 mf_string_format: fix inconsistent behavior of escaped percent character 2024-07-06 15:24:54 +02:00
NovaRain dc3537747f Reverted GameReset in LoadGameHook.cpp to pre-4.1.4 behavior
(when the engine's game_reset is called, sfall will reset modules as
well for consistency, closes #553)
2024-06-29 17:35:43 +08:00
phobos2077 d9b59107af Add v4.4.4 ru changelog 2024-06-29 11:30:34 +02:00
NovaRain b852d6f168 Added checks for OutlineColorContainers/Corpses in gl_highlighting
(same as OutlineColor, in case player set them to negative values.)

Updated resource files.
2024-06-28 21:12:54 +08:00
phobos2077 abd62dd834 gl_highlighting: separate colors for containers and corpses
- Items and corpses blending together can be an issue
2024-06-27 23:25:25 +02:00
NovaRain a8163b6b0c Updated changelog and readme 2024-06-19 20:40:22 +08:00
NovaRain e2e33f07c0 Updated sslc doc for documentation site 2024-06-18 11:27:43 +08:00
NovaRain 2d20de66fc Corrected proto pid offset in define_extra.h 2024-06-17 15:21:36 +08:00
NovaRainandGitHub a2ae42fa8f Merge pull request #552 from wipe2238/github-action
Updated GitHub Actions setup
2024-06-17 08:22:24 +08:00
Wipe a6839cf8a4 Updated GitHub Actions setup
- enabled running build on pull requests
- simplified action inputs
- updated/removed outdated comments
2024-06-16 16:16:15 +02:00
NovaRain eb8febf347 Further simplification of the previous commit
Updated sslc_readme.md.
2024-06-15 19:06:38 +08:00
NovaRain a35bc8882a Minor edits to combat_begin_anim_stop_hook 2024-06-09 14:10:45 +08:00
NovaRain 24058c5fb5 Merge branch 'feature/dont-stop-anim-forever' 2024-06-09 14:07:21 +08:00
NovaRain 929be4f7b3 Changed the game mode check in gl_highlighting
* now opening other interfaces (inventory, options, etc.) will also
turn off highlight.
2024-06-09 12:05:07 +08:00
NovaRain f12f39bef0 Fixed crash on game save (due to commit 13e0348c) 2024-06-09 06:26:10 +08:00
phobos2077 e90edf8f42 anim_stop: if called from combat_begin, skip ending sequences where current animation is forever 2024-06-08 13:26:09 +02:00
NovaRain fd0bd975fd Fixed page build error 2024-06-07 08:23:45 +08:00
NovaRain faca95a77b Expanded show/hide_iface_tag functions to work with tag value 0 (sneak)
Updated documents.
2024-06-07 08:06:26 +08:00
NovaRain 13e0348cc3 Minor code edits: replace some push/pop in ASM with pushadc/popadc pair 2024-06-06 21:55:27 +08:00
NovaRain 497973d259 Code edits to ItemMoveSkipDragKey
(slightly reduced the number of variables.)
2024-06-06 21:38:53 +08:00
VladandGitHub 0323e0c407 Inventory Ctrl+Click instant move (#546)
* Instantly move items without dragging (closes #526)
* In the player's inventory, items from the main inven list will go to appropriate slots.
2024-06-06 19:59:13 +08:00
NovaRain b3ec9f1faa Cosmetic edits: unified the placement of __declspec keyword
* it's recommended to place __declspec before the return type.
(ref: https://stackoverflow.com/q/13613864 )
2024-06-04 20:46:04 +08:00
NovaRain 1a844e4e7d Fixed possible crash in BoxBarCount
Edits to ddraw.ini and comments in Message.cpp.
2024-06-03 09:28:36 +08:00
NovaRainandGitHub 657ae595b1 Merge pull request #543 from sfall-team/feature/fallback-language-by-line
Fallback to english by individual message in MSG files
2024-06-03 08:52:47 +08:00
phobos2077 281e79585c Rename PartyMemberNonRandomLevelUp
- Hopefully this name is easier to understand for users
2024-06-02 11:14:31 +02:00
phobos2077 85d2d2e24d message_exit__mem_free_hook: save eax register
- Otherwise ReleaseXP build messes it up in MessageExitHook
2024-06-02 10:25:18 +02:00
NovaRain 18487103d4 Edits to documents
Minor code edits to PartyMemberNoEarlyLevelUp.
2024-06-02 08:39:05 +08:00
phobos2077 f7bf341d78 Add PAUSEWIN (Ctrl+P) to LoadGameHook game modes 2024-06-01 22:14:11 +02:00
phobos2077 ca5012b227 add gett_interface_id, fix crash in interface_draw, add doc for get_window_under_mouse 2024-06-01 22:05:07 +02:00
phobos2077 c610499c29 Fix assert fail when calling sfall_func7+ 2024-06-01 20:28:27 +02:00
phobos2077 6b8613a91f Fix ExpandBarter and DIALOG_SCRN_BACKGROUND conflict (closes #544) 2024-06-01 20:27:57 +02:00
phobos2077 ecb6dd2b78 Fallback to english my individual message in MSG files (closes #542) 2024-05-31 19:34:32 +02:00
phobos2077 002dfa61cb Fix NPCAutoLevel and set_npc_level opcode
- Now properly doesn't shift first level up too early and doesn't set "early" flag
- Fixed using set_npc_level without disabling engine leveling logic
- Renamed to PartyMemberNoEarlyLevelUpPatch to match behavior
2024-05-31 17:28:16 +02:00
NovaRain a8ac1f8402 Updated documents for the encounter hook changes 2024-05-31 15:11:27 +08:00
phobos2077 f9faa73b9c Add args to ENCOUNTER hook to determine which encounter is being loaded, not just map ID 2024-05-31 00:53:17 +02:00
NovaRain 0ba74de616 Changed the world map healing rate patch to be enabled by default
* default 3 hrs according to Fallout v1.2 manual errata.

Changed AIDrugUsePerfFix to be enabled by default (UPU/RPU have it
enabled for years, and F2:CE also implemented a similar fix.)

Updated version number.
2024-05-28 21:29:11 +08:00
NovaRain 0631f97b1f Added 'DontMoveTop' flag to the interface bar
* originally only for built-in HRP, now it's a generic patch to prevent
the interface bar from obscuring the barter/trade interface.
2024-05-27 22:24:51 +08:00
NovaRain 5803dc6606 Edited the documents for set_world_map_heal_time
Minor code edits to Worldmap.cpp.
2024-05-27 21:48:51 +08:00
VladandGitHub d21225bd92 WorldMapHealingRatePatch & set_world_map_heal_time metarule (#539)
Fixes bug: healing time on worldmap is tied to real time clock, instead of game time.
2024-05-27 21:35:25 +08:00
phobos2077 6d5b08f761 Healing skill mod: fix inaccurate behavior and refactoring 2024-05-24 17:54:20 +02:00
NovaRain bc962aca9c Reverted speed patch/keys behavior to pre-4.1.5
* Enable in [Speed] is the master switch for all Speed* settings.
* SpeedMultiInitial requires Enable=1, not a standalone setting.
* SpeedModKey=0 allows players to use only numpad keys to change speed.
2024-05-24 21:36:50 +08:00
NovaRain 6d432163ca Added "item" type to the party member protos patch
(for the car trunk)
2024-05-24 08:50:32 +08:00
phobos2077 18e976ded9 Healing skills implementation in SSL, v2
- Got rid of duplicate code with one function instead of switch/case, while keeping logic (hopefully) unchanged
2024-05-24 02:36:00 +02:00
phobos2077 c986298fe0 Healing skills implementation in SSL
- (almost) exact copy of engine logic in script, for making healign mods
2024-05-24 00:59:14 +02:00
NovaRain 48916137ae Minor edits to ItemCounterAutoCaps 2024-05-23 17:01:21 +08:00
NovaRainandGitHub 08a5f86cd8 Merge pull request #537 from sfall-team/feature/barter-auto-calc-money
Added ItemCounterAutoCaps that would pre-fill money count box with "correct" amount when in barter.
2024-05-23 16:56:09 +08:00
phobos2077 522219d72b Code cleanup and better comments 2024-05-21 16:06:33 +02:00
phobos2077 22aed0e663 Auto balance barter tables when dragging caps around 2024-05-21 15:31:37 +02:00
phobos2077 6b818e797e Header lib: refactor inven_as_array and add proper jsdoc defs to all comments
- inven_as_array was allocating blocks of 100 items which was unnecessary
2024-05-20 12:41:02 +02:00
phobos2077 037269c940 Add useful comments to most header lib procs and macros 2024-05-19 00:15:57 +02:00
NovaRain a4298bb6ee Fixed the missing hotkeys for additional elevators derived from the original elevator types
(ref. BGforgeNet/Fallout2_Restoration_Project#290)
2024-05-18 15:13:44 +08:00
NovaRain 20c32714b2 Edits to Cautious Nature setting in perk.ini
* Rename the setting to CautiousNatureBonus.
* Lower the bonus cap to 20 (too high of values would result in empty
encounters or game crash for high PE players).
2024-05-17 21:03:11 +08:00
phobos2077 6dafb3e8c6 CautiousNatureDistanceBonus 2024-05-17 00:17:22 +02:00
NovaRainandGitHub 975f9a6514 Merge pull request #536 from sfall-team/dependabot/bundler/docs/rexml-3.2.8
Bump rexml from 3.2.5 to 3.2.8 in /docs
2024-05-17 06:01:17 +08:00
dependabot[bot]andGitHub d93834227b Bump rexml from 3.2.5 to 3.2.8 in /docs
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.5 to 3.2.8.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.5...v3.2.8)

---
updated-dependencies:
- dependency-name: rexml
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-16 19:48:29 +00:00
NovaRain bc05a00d1e Changed DebugWindowFont to a toggle option
(because other fonts are not practical for displaying debug ouput)
Minor edits/simplification to ASM code in DebugEditor.cpp.
2024-05-14 21:26:07 +08:00
NovaRainandGitHub 39dbe4fa48 Merge pull request #534 from sfall-team/feature/bigger-debug-window-v2
- Add options to adjust internal debug window size and text font.
- Also prevents mixed fonts from showing inside the window, just like in F2: CE.
2024-05-14 20:54:41 +08:00
NovaRainandGitHub b5636e9c6c Merge pull request #535 from sfall-team/dependabot/bundler/docs/nokogiri-1.16.5
Bump nokogiri from 1.16.2 to 1.16.5 in /docs
2024-05-14 08:22:03 +08:00
dependabot[bot]andGitHub ff4a1391d7 Bump nokogiri from 1.16.2 to 1.16.5 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.16.2 to 1.16.5.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.16.2...v1.16.5)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-05-13 23:38:31 +00:00
phobos2077 15432e15f4 Debug window patch: minor refactoring 2024-05-12 10:53:49 +02:00
phobos2077 09b9982a67 Settings to ddraw.ini 2024-05-12 10:00:36 +02:00
phobos2077 5bb108d0e2 Add options to adjust internal debug window size and text font 2024-05-12 10:00:36 +02:00
NovaRain d6dc179df7 Removed duplicate implementation in round() script function
* C++11 lroundf can do the same thing.
2024-05-12 13:53:45 +08:00
NovaRain 44aafc757a Updated INVBOX_E.frm for Russian and Chinese
Removed duplicate FRMs from repo.
Rename all interface FRMs to lowercase.
Updated resource files.
2024-05-12 13:35:03 +08:00
NovaRain b9fade9732 Removed the version check of external HRP for ActionPointsBar
(tested on v4.1.7 and v3.0.6)
2024-05-12 11:22:22 +08:00
NovaRainandGitHub 2d7c49a1fb Merge pull request #532 from sfall-team/feature/apbarpatch-small-frm
ActionPointsBar: language agnostic FRM
2024-05-12 10:51:22 +08:00
phobos2077 44e7a67cea Remove IFACE frms 2024-05-11 11:15:51 +02:00
phobos2077 9a7a795b82 ActionPointsBar: language agnostic FRM
- Use one small FRM with just AP bar background instead of having 2 big FRMs per language (for HRP and not)
- It works by simply writing into iface window buffer right after it was written with iface.frm contents
- Uses position relative to right edge of the iface panel
2024-05-11 11:11:58 +02:00
phobos2077 08efe382e4 Small INVBOX_E.frm tweak to remove visible seams 2024-05-11 11:11:25 +02:00
NovaRain cc2b79d107 Removed unnecessary error message when AutoSearchSFX is enabled
Removed leftover from devlog_f() in release builds.
2024-05-11 00:22:31 +08:00
NovaRain 0281797d26 Renamed the inventory/barter slot extension options
Edited their logging messages and description in ddraw.ini
Added Chinese FRMs
Corrected the size directives in ASM code in Inventory.cpp
2024-05-10 23:59:49 +08:00
NovaRain 73356d9dd5 Cosmetic edits: alignment and tab/space chars 2024-05-10 23:48:12 +08:00
NovaRainandGitHub b25a622281 Merge pull request #531 from sfall-team/feature/inventory-slot-extensions
Added inventory/barter slot extensions
2024-05-10 23:32:26 +08:00
phobos2077 fa8a42eff3 Expanded UI bug fixes (2)
- HRP compatibility: add support for the current HRP version by patching window Y value directly to it's code
- Barter Window: fixed mouse wheel scrolling not working over extended areas of 2 central tables
2024-05-09 16:04:18 +02:00
phobos2077 b5af3b04fc Expanded UI bug fixes
- HRP compatibility: disable ExpandedBarter patch with external HRP due to hack conflict leading to crash (fixes_dialog.cpp:904)
- Main inventory: fix dropping items from armor/hand slots into expanded area not registering
- Loot/barter: fix mouse wheel scroll feature not registering expanded area of target windows
2024-05-09 11:54:14 +02:00
phobos2077 cc12986d2f Code review fix + Russian expanded FRM's
- GetUnlistedFrmPath: remove unused path parameter
- Add RU FRM's (by NovaRain)
2024-05-09 09:33:06 +02:00
phobos2077 ab9844ccdd Fix usage of unloaded FRM's 2024-05-09 01:27:04 +02:00
phobos2077 c850c2ec4f Final preparations for extended UI patches
- Reduced inventory UI height by 8 pixels and moved all Done buttons down
- Renamed all extra FRM files
- Added checks that all required FRMs exist before applying patch
- Add final FRM files (EN versions)
- Minor refactoring
2024-05-08 20:48:11 +02:00
phobos2077 ed44706c9f ExtendedBarter: fix crashes when scrolling in/out 2024-05-08 20:44:33 +02:00
phobos2077 bf3f5d2930 Replace all usage of LoadUnlisted with fo::FrmFile
- Move cached FRM/PCX loading to new ExtraArt module
- Use the same FRM cache for all unlisted FRM needs
- Minor refactoring
2024-05-08 20:44:33 +02:00
phobos2077 344a64f9d2 Split one expanded UI patch into 2 and add minimum resolution check
- Rename and split patch into 2: inventory and barter
- Add instructions for inventory patch
- Minor patch code cleanup
2024-05-08 20:42:40 +02:00
phobos2077 31713022db Extend all 6-slot inventory windows to 8 slots 2024-05-08 20:41:01 +02:00
phobos2077 0150c8f42d Barter extra slots: polishing
- Make windows transparent to allow for non-square art
- Use correct art when scrolling window down
2024-05-08 20:41:01 +02:00
phobos2077 a43186df7a Barter extra slots: Make optional by using LoadUnlistedFrm to replace default FRM 2024-05-08 20:41:01 +02:00
phobos2077 625e424d4a Proof of concept: extend barter screen inventory windows to 4 slots each 2024-05-08 20:41:01 +02:00
NovaRain e435e1d614 Updated docs for art_frame_data script function
Minor code edits: type name, indentation/alignment, unified messages
2024-05-07 21:05:42 +08:00
phobos2077andNovaRain 8f10169661 Add docs and macro for new opcode 2024-05-07 20:35:57 +08:00
phobos2077andNovaRain 76f198e567 New metarule to read art size + DrawImage refactoring
- Fix inconsistent and duplicate FRM-related struct definitions
- Clean up code, especially around using PCX files
- When FID is used, read FRM directly from ArtCache instead of unnecessary loading from disk
- When path is used, cache loaded FRM/PCX files
- Add art_frame_data to read FRM/PCX size by FID/filename
2024-05-07 20:35:57 +08:00
NovaRain b2bac4ee2a Tweaked the check for stretch to fit of AVI movies 2024-05-06 23:37:45 +08:00
NovaRain 41394bfb9d Fix build workflow 2024-05-05 11:30:55 +08:00
NovaRain 44942e188f Changed ExpandWorldMap to be compatible with older HRP
(tested v4.1.7 and v3.0.6)

Minor code edits.
2024-05-05 11:02:10 +08:00
NovaRain f89684029c Added sfall.dat content (except global scripts) 2024-05-05 10:09:56 +08:00
NovaRain 6d276cceca Fixed PlayIdleAnimOnReload causing critters to lose highlights in combat
* happens when the Target Highlight pref is set to "targeting only".
(closes #528)
2024-05-02 09:38:32 +08:00
NovaRain d4ca2b9ff1 Added a check for NPC being dead to NPCsTryToSpendExtraAP (closes #524) 2024-05-02 08:46:30 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7b650bfc0f Bump peaceiris/actions-gh-pages from 3 to 4 (#525)
Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peaceiris/actions-gh-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:34:48 +08:00
NovaRain c7dfa793ac Fixed page build error 2024-04-24 15:16:16 +08:00
NovaRain 01ab4cfef7 Added signal_close_game script function
Updated documents and version number.
2024-04-24 08:54:35 +08:00
NovaRain a5e7a77588 Updated changelog 2024-04-19 08:41:54 +08:00
NovaRain a19f9d0b83 Reverted ScriptValue DataType from long to short
* for reasons unknown, it was the cause of random hang/crash when
running certain script sequences. (closes #517)

Updated version number.
2024-04-18 22:21:41 +08:00
NovaRain 7dc0681b4c Text edits to INI files 2024-04-18 20:47:45 +08:00
NovaRain b066e9d533 Updated changelog 2024-04-04 22:50:46 +08:00
NovaRain 6e8f2c6c36 Removed SpeedInterfaceCounterAnims=3 (now default behavior) 2024-04-01 17:20:04 +08:00
NovaRain 0044af0362 Fixed xp exploit from canceling Here and Now perk
(when the player has Swift Learner perk)

Removed DisplaySwiftLearnerExp from ddraw.ini (always enabled)
2024-03-29 16:55:00 +08:00
NovaRain ce0e950884 Minor code edits 2024-03-28 08:34:21 +08:00
NovaRain a66ff8d252 Edits to gl_partycontrol and main.h
* it seems no need to "fix" Gecko Skinning perk anymore.
* use array to hold perk levels instead of calling has_trait twice.
2024-03-27 11:18:53 +08:00
NovaRain 9bd9837a7d Added a new example mod gl_molotov 2024-03-26 12:14:24 +08:00
NovaRain a89e672355 Fixed add_extra_msg_file loading the same msg file more than once (#467)
Minor code edits.
Updated version number.
2024-03-22 12:07:26 +08:00
NovaRain b32c358a77 Added a new example mod gl_static_books 2024-03-14 10:20:03 +08:00
NovaRain 1b98bedd6f Edits to sslc documents
* edited the description of command line options.
* removed old references of dos4gw.exe (only for pre-2.10) and FSE.
2024-03-11 10:08:31 +08:00
NovaRain 596b485d9c Fixed the clickability issue of the "Use Inventory Item On" action
* the game would execute the default action for the overlapped object
instead of the player using the item.

(ref. BGforgeNet/Fallout2_Restoration_Project#271)
2024-03-05 10:40:10 +08:00
NovaRain ae53c9586a Updated npcarmor.ini based on new NPC armor mod
(ref. BGforgeNet/Fallout2_NPC_Armor@ca93bb6)
2024-03-05 10:31:16 +08:00
NovaRain 7b53814c82 Updated npcarmor.ini based on newer RPU (v27+)
(ref. BGforgeNet/Fallout2_NPC_Armor#5)
2024-03-04 11:52:52 +08:00
NovaRain e9b40f5491 Tweaked the log for loading global scripts
* it should be after the game scripts check.
2024-03-03 00:01:07 +08:00
NovaRain 71a7545445 Added additional check to AI weapon switching fix 2024-02-29 13:19:30 +08:00
NovaRain 42ab38a333 Minor edits to ddraw.ini 2024-02-26 09:27:21 +08:00
NovaRain c540ce8e72 Fixed unnecessary path searching for loading external wrapper
(ref. https://github.com/sfall-team/sfall/issues/504#issuecomment-1962314458)
2024-02-24 20:47:31 +08:00
NovaRain 3db8ed3381 Cosmetic edits: unified indentation of switch-case 2024-02-22 08:39:25 +08:00
NovaRain de009eec4e Added support for an external DirectDraw wrapper
(#504)
2024-02-22 08:36:27 +08:00
NovaRain 9268776736 Added a note about external wrapper to ddraw.ini 2024-02-22 08:35:58 +08:00
NovaRain c09ed0565b Further attempt to keep DD7+no windowed for external wrapper 2024-02-20 10:40:27 +08:00
NovaRain e57f9b5503 Disallowed DX9 mode when using external wrapper 2024-02-19 22:07:44 +08:00
NovaRain 39ed1d313f Code correction to the previous commit 2024-02-18 01:04:51 +08:00
NovaRain 510bd6ddeb Added a basic loading process for external ddraw wrapper
Changed sfall to DD7 if bult-in HRP is enabled but f2_res.ini is
missing.
2024-02-17 19:00:56 +08:00
NovaRain c0f11b7a46 Fixed critical hit message for super mutants
* judging from combat.msg, the fix has been applied to a wrong
bodypart since 2.8b.
2024-02-17 07:52:03 +08:00
NovaRain 1cb1284787 Fixed the game disappearing from the taskbar after using Alt+Tab
Code change to the input patch.
Updated version number.
2024-02-16 09:26:01 +08:00
NovaRain af2fdb5153 Updated changelog 2024-02-12 20:45:09 +08:00
NovaRain 22fbac8b9f Added a fix to prevent integer overflow for inven item stacks
* This is more of a preventive fix because now it's easier to cause
integer overflow with add_mult_objs_to_inven. Also in case people
use save editor and set silly values to their items.
2024-02-12 09:51:05 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8bd0861b01 Bump nokogiri from 1.14.3 to 1.16.2 in /docs (#503)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.14.3 to 1.16.2.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.14.3...v1.16.2)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-06 12:45:53 +08:00
NovaRain b8fe8cb4e3 Fixed the modulo operator for negative integers
* this changes the behavior of vanilla modulo operator to use signed
integer division to match how the fixed division operator works.
2024-01-25 10:19:23 +08:00
NovaRain 4f786f3302 Changed the fix for add_mult_objs_to_inven
(to allow adding more than 99999 instances of an object in one go)
2024-01-24 09:40:59 +08:00
NovaRain ff650d8007 Added missing level cap to XPTable (fixed a hang) 2024-01-15 14:29:47 +08:00
NovaRain 9e4ac57775 Fixed log entry for PatchFileXX options
(also allow using ".\\", as it cannot escape the game folder.)
2024-01-11 21:38:58 +08:00
NovaRain bfbbc339d0 Updated version number and year 2024-01-02 10:28:17 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
5ff5bc647e Bump actions/upload-artifact from 3 to 4 (#500)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-02 00:26:35 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
89ffc619d3 Bump actions/setup-python from 4 to 5 (#499)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-02 00:26:26 +08:00
NovaRain ea9a701f51 Fixed functions.yml 2023-12-27 13:25:19 +08:00
NovaRain 7e47607781 Added reg_anim_animate_and_move script function (closes #497) 2023-12-27 13:18:52 +08:00
NovaRain cfcc66ad1a Fixed right arm critical hit messages for some critter types
(BGforgeNet/Fallout2_Restoration_Project#256)
2023-12-19 21:01:36 +08:00
NovaRain ff5c9c9cfc Tweaked the condition check for instadeath fix 2023-12-15 20:44:29 +08:00
NovaRain dcbe6c9c7e Fixed 0 dmg instadeath crits with HOOK_COMBATDAMAGE 2023-12-15 09:17:19 +08:00
NovaRain 96bfe13939 Fixed skipping to lv99 when leveling up from lv97
(mentioned in Per's guide)

Minor code edits.
2023-12-04 21:52:03 +08:00
NovaRain b5a9679c6c Use proper size directives in ASM code 2023-12-02 18:22:16 +08:00
NovaRain 71e43cb890 Engine now uses 'English' as the fallback language for the credits
Updated version number.
2023-11-30 22:42:22 +08:00
NovaRain 4bc981dbc1 Updated changelog for better clarity 2023-11-20 21:28:06 +08:00
NovaRain 34a81e4f54 Updated changelog 2023-11-20 10:19:04 +08:00
NovaRain 584e026624 Fixed create_object_sid when passing 0 as the script index number
* would result in a crash. Now it allows creating an object with no
script (different from -1, which just doesn't touch default script).
2023-11-14 21:48:36 +08:00
NovaRain 1cca798b80 Tweaked the position of the ammo bar
Tweaked the alternative ammo bar to exactly match Mash's.
2023-10-30 21:31:21 +08:00
NovaRain 47d9bb1627 [HRP] Fixed the clickability issue of the file list in the char screen 2023-10-28 23:43:58 +08:00
NovaRain 2b8b797920 Fixed incorrect data for saved arrays
Updated version number.
2023-10-27 22:41:58 +08:00
NovaRain b1ce08a78f Fixed crash when calling start_gdialog outside talk_p_proc
(the fix was embedded in StartGDialogFix, now it works regardless of
the option.)
2023-10-19 15:13:37 +08:00
NovaRain 143ec750cf Updated documents (mainly array functions) 2023-10-16 11:32:52 +08:00
NovaRain e2b5a0652d Enabled build workflow for master branch 2023-10-07 21:15:16 +08:00
NovaRain c6635f65e5 Changed the "best armor" score calc to exclude EMP
(gameplay mod friendly)
2023-10-07 19:34:11 +08:00
NovaRain daf9e57d36 Updated NPC combat control mod for player's Jinxed trait/perk
* controlled critters will now be "Jinxed" as well (closes #492)
2023-10-05 09:24:34 +08:00
NovaRain 59f1ed0233 Removed AdditionalWeaponAnims from ddraw.ini (always enabled)
Updated version number.
2023-10-05 09:10:44 +08:00
NovaRain 7c8d2d6269 Merge branch 'develop' 2023-10-05 09:03:35 +08:00
NovaRain 75019a5546 Bump actions/checkout from 3 to 4
Set dependabot for the main branch
2023-10-02 08:49:15 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1b3530e702 Bump actions/checkout from 3 to 4 (#493)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-01 21:04:56 +08:00
NovaRain deee6fc521 Corrected the description of CALCAPCOST hook 2023-09-30 17:17:53 +08:00
brussell1andGitHub e703a82c8b Fixed German translation (#491) 2023-08-26 01:39:08 +08:00
NovaRain 5769843b89 Bump activesupport to 6.1.7.5 in /docs 2023-08-24 21:56:52 +08:00
NovaRain 7e2eaf0724 Fixed crash on startup on WinXP/2003
Moved the LoadLibrary call out of DllMain entry point.
Updated version number and changelog.
2023-08-24 21:27:54 +08:00
NovaRain b6a4c8d476 Tried fixing in-page subcategory links 2023-08-22 15:28:24 +08:00
NovaRain 1524c7daa0 Fixed functions.yml 2023-08-22 10:10:41 +08:00
NovaRain 228f8966f2 Release 4.4 2023-08-22 08:54:41 +08:00
NovaRain e923fa801b Updated changelog and other documents 2023-08-21 14:23:59 +08:00
NovaRain 16dacee0e0 Fixed UpdateHPStat() for not properly capping HP
* when a critter has modified base value of max HP in its proto.
2023-08-09 10:29:22 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b4fe9b3e57 Bump commonmarker from 0.23.9 to 0.23.10 in /docs (#490)
Bumps [commonmarker](https://github.com/gjtorikian/commonmarker) from 0.23.9 to 0.23.10.
- [Release notes](https://github.com/gjtorikian/commonmarker/releases)
- [Changelog](https://github.com/gjtorikian/commonmarker/blob/v0.23.10/CHANGELOG.md)
- [Commits](https://github.com/gjtorikian/commonmarker/compare/v0.23.9...v0.23.10)

---
updated-dependencies:
- dependency-name: commonmarker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-09 08:24:32 +08:00
phobos2077 553c7cc195 Renamed string_pos back to string_find to make meaning more obvious 2023-08-07 20:01:21 +02:00
NovaRain 61f3a2ac13 Fixed the backward compatibility of get_npc_level
(broken in commit 438bc6f)
2023-08-04 09:13:55 +08:00
NovaRain aca6c92d86 Reordered the engine perk entries in perks.ini
(sorted by their perk IDs)
2023-07-31 20:52:43 +08:00
phobos2077 5d7015bbb5 Headers update
- Synced a small number of defines from RPU headers
- Removed duplicate defines from define_lite
2023-07-30 22:24:44 +02:00
phobos2077 f0ec82923d EnginePerks: fixes
- Remove duplicate Salesman tweak
- Decoupled hacks for multi-perk-level support for Salesman and Demolition Expert from the bonus value change
- Renamed settings for consistency ("<PerkName>Bonus" when it has only one effect)
2023-07-30 22:00:04 +02:00
phobos2077 cd5c803386 EnginePerks: rewritten and expanded
- Got rid of unused and repeated code
- Added all perk skill bonuses
2023-07-30 19:58:34 +02:00
NovaRain c95d872f77 Added build instructions to readme 2023-07-26 15:08:41 +08:00
phobos2077 5c3c1ca4db Header fixes
- Fix conflict with RPU command_extra.h
- Fix undefined debug_array_str error
2023-07-24 00:56:01 +02:00
NovaRain cb1a3dd764 Reverted the ASM change for StealCheckHook in commit 53c294c 2023-07-23 07:42:16 +08:00
phobos2077 4c441d5852 Fix incorrect int->float conversion in op_sub (closes #488) 2023-07-22 21:22:27 +02:00
NovaRain 53c294cf98 Edited ASM code and documents for HOOK_STEAL 2023-07-22 20:46:26 +08:00
phobos2077 5394352bf0 HOOK_STEAL: add ret0 value 2 to fail "silently" 2023-07-22 13:43:23 +02:00
phobos2077 f267224428 HOOK_STEAL: return value improvements
- Allow to use vanilla handler but only override experience in case of success
- Treat both return values less than -1 the same as -1
2023-07-22 10:43:18 +02:00
phobos2077 b189fe9252 HOOK_STEAL: ret1 to override experience for successful stealing 2023-07-22 04:21:05 +02:00
phobos2077 b2c9b1cc23 HOOK_STEAL: add arg4 - quantity of items stolen 2023-07-22 03:29:31 +02:00
NovaRain 0e8b6efe49 Re-added the check for valid objs to get/set_object_data
* disabled in combat for the combat data.
2023-07-19 20:56:12 +08:00
NovaRain 6d66bfffb0 Edited function and sslc docs 2023-07-17 20:53:50 +08:00
NovaRain 6eeb674641 Minor code edits to BugFixes.cpp
Minor edits to some comments.
2023-07-14 09:46:02 +08:00
NovaRain b94993d756 Minor edits to error msg for some script functions
Edits to function notes.
2023-07-11 11:19:29 +08:00
phobos2077 a2ea1910f5 Minor header and readme edits 2023-07-10 23:56:58 +02:00
NovaRain ddb3cf9b6e Added upper/lower limits to the hit chance value
Edited hookscript docs.
2023-07-09 15:22:56 +08:00
NovaRain 321f8e1ab2 Changed string_pos to return -1 on arg error
Added a check to PartyControl::OrderAttackPatch().
Updated function documents.
2023-07-05 22:14:04 +08:00
phobos2077 66559812bd Updated headers
- Add a bunch of array-related procs to unlock basic functional programming
- Fix error with FUNC_SELECTOR_7
2023-07-05 02:31:47 +02:00
phobos2077 f968dea5e7 string_pos: use negative pos value how it works in substr 2023-07-05 01:47:47 +02:00
phobos2077 664fb84dc5 string_find renamed to string_pos + header update
- Renamed get_clamped to math_clamp for consistency (libs should use namespace prefixes)
- Nuked above/below macros and renamed unsigned_comp to insigned_int_compare, because it doesn't work with floats
- Replaced sprintf2 and string_pos with macros (due to new metarules)
- Add a few entries to functions.yml
2023-07-04 21:06:35 +02:00
phobos2077 74ef65335d Add string_find metarule
- lib.inven.h: Updated remove_items_pid to return actually removed quantity
2023-07-04 20:19:38 +02:00
NovaRain 9f6ca9d55d Updated some documents 2023-07-03 15:39:56 +08:00
NovaRain f42b232e19 Moved sfall-mod.ini into mods\ folder
Packed item highlighting and NPC combat control mods into sfall.dat.
2023-07-02 20:40:35 +08:00
NovaRain 0926ace899 Use explicit GetFileAttributesA function 2023-07-02 08:28:15 +08:00
NovaRain b2023b7e51 Removed capping of console window position and size
* for multi-monitor setup, leaving only minimum size of 640x480.
2023-06-29 21:32:32 +08:00
NovaRain 1f962458cd Added file check for books/drugs/enginetweaks ini files
Fixed possible array index out of bound error in BarBoxes.
Added trimming to custom unarmed attack names.
Edits to ddraw.ini and function docs.
2023-06-27 21:19:36 +08:00
phobos2077 0bb5941c98 IniReader: Remove bufSize argument when it's not used (closes #485)
- Fix return value of getString with buffer argument
- Increase max line length to 2048
2023-06-27 00:14:00 +02:00
phobos2077 3e4e9ff4e6 Console window improvements
- Retain maximized/minimized state
- Save normal position when closing in maximized/minized state
- Allow to move window in negative x direction
- Disable close button
- Save position if game was closed by pressing Alt+F4 in console window
2023-06-26 23:31:06 +02:00
NovaRain ece95a95e9 Updated docs for improved string_format
Edited error messages for a few functions.
ConsoleWindow: disallowed negative window position.
2023-06-25 16:16:23 +08:00
phobos2077 5f38744a2e De-shittify string_format (closes #482) 2023-06-25 00:24:24 +02:00
phobos2077 c0aac45b0c ConsoleWindow: attempt to fix position jumping 2023-06-24 13:12:38 +02:00
NovaRain d7a974c50b Fixed the display after switching back in NPC combat control mod
* player's active "sneak" notification box wasn't shown when switching
back after the combat.

Replaced numbers with defines in item highlighting mod.
2023-06-24 14:17:38 +08:00
phobos2077andNovaRain 3f8d322697 Fix container highlight condition 2023-06-24 07:59:16 +08:00
phobos2077andNovaRain 50b51fc1a3 Highlighting mod update
- Optional highlighting of critters, using the same colors and rules as in the combat mode
- Holding highlight key will update outlines based on current positions
- Enable LOS check by default for more interesting looting
2023-06-24 07:59:16 +08:00
phobos2077 e1aebb21e4 op_create_spatial: fix spatial object having no scriptIndex upon creation 2023-06-24 01:58:17 +02:00
phobos2077 a5075734cc ConsoleWindow: prevent user from messing up window position & size 2023-06-24 01:57:27 +02:00
phobos2077 4adb6dffe2 get_ini_config - reset array cache to prevent wrong arrays being returned! 2023-06-21 23:32:33 +02:00
NovaRain 3b29088818 Edited the log messages in LoadOrder.cpp
Cleaned up some module headers.

Updated version number in documents.

Updated changelog in sslc document, and removed the mention about
empty statements (it never worked).
2023-06-21 22:21:12 +08:00
phobos2077 3a3760704c Load order: more informative logging 2023-06-20 20:44:57 +02:00
NovaRain b619ea3fba Updated function docs for get_ini_config 2023-06-19 12:15:17 +08:00
NovaRain ae7921fe26 Some format/textual edits to code
* line indents.
* remove trailing spaces.
* use nullptr instead of NULL for pointers.

Edited the error messages of get_ini_config.
2023-06-19 12:14:31 +08:00
NovaRainandGitHub 14f6de0329 Merge pull request #481 from sfall-team/feature/fo-ini-reader
INI Config reader:
- Replaced GetPrivateProfile* functions for reading ini with vanilla-based INI reader.
- Changed IniReader classes to read INI files once using new Config class and cache results until GameReset (going to main menu).
- Added metarule to read entire INI file in one operation and return as two-dimensional map array.
- Increased limits for INI strings to 1021.
2023-06-19 11:22:27 +08:00
phobos2077 e33a025c62 get_ini_config: sanitize and validate INI path 2023-06-18 15:01:25 +02:00
phobos2077 20088ffcb1 Save window positions in OnBeforeGameClose
- This way we can guarantee sfall has not started to "destruct" yet, so we don't have to rely on the order of destructor calls
2023-06-18 00:41:45 +02:00
phobos2077 cec091bda2 IniReader: Remove ini file from cache when it's changed by SetString
- Had to reorganize some code to make this work. Changed how some singletons are created to guarantee destructor calls in correct order (IniReader is constructed first and destructed last, after every other module).
2023-06-17 23:33:37 +02:00
NovaRain 97c2b111ff Updated the description of ConsoleWindow
Simplified ASM code in Premade.cpp a bit.
2023-06-17 21:40:11 +08:00
VladandGitHub 1e4bbaedbd Merge branch 'develop' into feature/fo-ini-reader 2023-06-16 18:13:12 +02:00
NovaRainandGitHub fce35c7e14 Merge pull request #480 from sfall-team/feature/debug-log-overflow-fix
Fixed buffer overflow when DebugMode is enabled and printing messages longer than 259 via script.
2023-06-16 23:37:59 +08:00
phobos2077 4d19fa2d60 Use single function for all string-to-integer conversions for consistent behavior
- Reading INI from within sfall as well as get_ini_setting opcode
- calling atoi opcode
- Support auto-detecting 0x, 0 and 0b for hex, octal and binary representations respectively
2023-06-16 16:06:24 +02:00
phobos2077 0a6a604abc Add support for using 0b prefix in INI files to denote binary base (consistent with GetPrivateProfile*) 2023-06-16 15:10:25 +02:00
phobos2077 2cef5310e2 Rewrite console writing
- Separate debug_msg and display_msg as separate Source
- Merge writing to one function with proper filtering
2023-06-16 14:57:41 +02:00
phobos2077 fe7aa9ae04 Removed unused code 2023-06-16 02:16:25 +02:00
phobos2077 b36771da48 Increase maximum size of one INI line to 1023 and fix potential crash in IniReader::getString()
- Now can read strings up to 1021 from INI files using all available functions (get_ini_string, get_ini_section, get_ini_config)
2023-06-16 00:53:03 +02:00
phobos2077 ad6491d61e Increase array string limit to 1024 bytes
- Because it is now safe to log longer stuff
2023-06-16 00:16:36 +02:00
phobos2077 4de5de6a0c Restore code page option from NovaRain 2023-06-16 00:02:55 +02:00
phobos2077 347b4a3ecb Fix buffer overflow when DebugMode is enabled and printing messages longer than 259 via script
- Refactoring: moved ConsoleWindow into separate file
2023-06-15 23:57:41 +02:00
phobos2077 0b161c7374 Rename metarule for consistency with other ini-related functions, add to functions.yml 2023-06-15 21:48:06 +02:00
phobos2077 7bbc15ab0b Made Config queries case-insensitive for both section names and keys to match GetPrivateProfile* behavior 2023-06-15 21:01:24 +02:00
phobos2077 ac02971d61 get_ini_section(s): switched to using Config class
- Load configs via IniReader to take advantage of it's cache
2023-06-15 19:28:52 +02:00
phobos2077 e4ea3645d6 Add config_load metarule to efficiently load INI into array and also load INI from DAT
- Refactoring: moved all ini-related handlers into new cpp
- Moved modified_ini opcode to C++
2023-06-15 19:01:07 +02:00
NovaRain f9dc7a3e25 Added code page setting for the console window 2023-06-15 23:27:07 +08:00
phobos2077 3f7ce8c412 Custom Config parser based on Vanilla & Fallout CE 2023-06-15 15:30:46 +02:00
phobos2077 6d3afd4e7d Attempt to fix config reader memory allocation issues (unsuccessful) 2023-06-15 15:30:46 +02:00
phobos2077 2fcf81cb78 Read all ini's using built-in FO config parser 2023-06-15 15:30:46 +02:00
phobos2077 b8c52304eb Add precise time measurements for: Sfall Init, Game Init, New Game start and Save game load. 2023-06-15 15:30:24 +02:00
NovaRain 23d1e3b9c8 Updated the description in [ExtraPatches] for mods_order.txt
Tweaked the error log entry for mods_order.txt.
Removed unnecessary Inject_SwitchHandHook (unused since 4.2.1)
2023-06-15 13:38:04 +08:00
NovaRain 7baa6de014 Reduced buffer flush in Logging.cpp
Edited some description in ddraw.ini.
2023-06-15 13:24:02 +08:00
NovaRainandGitHub 7bf562338c Merge pull request #477 from sfall-team/feature/console-window-v2
Console Window output (closes #474)
2023-06-15 13:14:46 +08:00
phobos2077 5f38a934ca Console improvements
- Save & restore window position
- Fix display_msg not mirrored to console
- Fix log prefixes showing up mid line
2023-06-14 21:34:57 +02:00
phobos2077 3c40518e87 Make sfall logs a little prettier 2023-06-14 20:01:13 +02:00
NovaRain 7939924257 Removed debug message about missing critter art from displaying in-game
* to prevent unnecessary annoyance to generic players.

Added a safeguard to get_tile_fid.
2023-06-14 09:26:28 +08:00
phobos2077 dc665cb741 Debugging.ConsoleWindow option 2023-06-13 23:09:21 +02:00
phobos2077 d7127a4deb Fix crash in debug mode due to __stdcall not being explicitly specified for C++ function (closes #476) 2023-06-13 19:45:11 +02:00
NovaRain 46a80fdb6a Added get_tile_fid and macros to function notes
Some misc edits to documents.
2023-06-13 12:32:49 +08:00
NovaRain 492e31410c Fixed the mode 2 of get_tile_fid
Minor code/comment/format edits.
2023-06-13 10:15:02 +08:00
phobos2077 f5e7235a80 get_tile_fid: take FRM Limit patch into account by extending FRM mask from 12 to 14 bits 2023-06-13 01:10:23 +02:00
phobos2077 0fef6f1f8c mods_order: remove comments before other checks, to prevent valid paths being ignored 2023-06-12 19:55:33 +02:00
phobos2077 4b9008d53c get_tile_fid correct for backwards compatibility and flexibility
- Allow to pass elevation using the free bits of the tileNum value to access elevations 1 and 2 (instead of defaulting to dude_elevation, which is not how it worked before)
- Access roof FID and raw data using mode flags in the top 4 bits
2023-06-12 18:26:28 +02:00
phobos2077 0d960ca326 Fix get_tile_fid function to work on elevations 1 and 2
- Since it has no second argument, assume dude elevation
- Rewrite into new opcode system
2023-06-12 16:44:07 +02:00
VladandGitHub c95d074f44 Merge pull request #470 from sfall-team/feature/load_order
load_order.txt per #469
2023-06-12 14:47:27 +02:00
VladandGitHub 4b88bfad10 Merge pull request #473 from sfall-team/hook_return_string_v2
Allow passing string directly to set_sfall_return in HOOK_DESCRIPTIONOBJ (v2)
2023-06-12 14:46:59 +02:00
phobos2077 94388d3470 LoadOrder update
- Rename to "mods_order.txt"
- Create "mods" folder if it doesn't exist before creating an empty mods_order.txt
- Trim space and tab characters
- Allow comments after file names with ; or # (INI-style)
2023-06-12 11:59:10 +02:00
phobos2077 208cacc4dd load_order.txt per #469 2023-06-12 11:59:10 +02:00
phobos2077 f222348b25 Update docs, remove deprecated macro 2023-06-12 11:55:06 +02:00
phobos2077 49cf0e6726 Allow passing string directly to set_sfall_return in HOOK_DESCRIPTIONOBJ
- HookScripts: track return types in addition to values
- Set allowNonIntReturn in hook code to allow non-int return values to be accepted
- Moved get_sfall_arg and set_sfall_return opcodes to the new table
2023-06-12 11:52:12 +02:00
phobos2077 d107edbb23 invenWieldFunc fix for putting non-armor, non-weapon items into hand slot 2023-06-11 20:12:11 +02:00
phobos2077 e9f8984819 Script Headers: fix remove_items_pid function and fix naming
- It didn't take different stacks of items into account as well as cases where one item is in the backback and other in the slot and you need to remove both
2023-06-11 14:07:44 +02:00
NovaRain ab0c373a9b Minor edits to code and documents
Commented out unused combat related functions.
2023-06-09 11:20:47 +08:00
phobos2077 1c34f85789 Add get_combat_free_move for better mod compatibility 2023-06-08 21:36:09 +02:00
NovaRain b317ed71ce Added options to override the names of sound files for game modes
Remove the worldmap/credits music override from Fallout1Behavior.
(was added in commit 00b85be)

Minor edits to ddraw.ini.
2023-06-05 11:37:58 +08:00
NovaRain 9197966993 Some grammar correction in function document 2023-06-05 10:54:36 +08:00
phobos2077 21fe99a297 Docs: Clarification about get_ini_* function return values
- Also updated lib.strings.h
2023-06-04 20:32:43 +02:00
phobos2077 ac1abf71f8 Corrected hook documentation 2023-06-04 12:02:11 +02:00
phobos2077 bfc9fd4d88 Add set_combat_free_move metarule and 2 arguments to STDPROCEDURE to make it more useful 2023-06-04 11:59:13 +02:00
phobos2077 f755e0a1dc Header update 2023-06-04 11:59:13 +02:00
NovaRain 3d88304777 Added a new example mod gl_rest_encounter
Added a burst control example script.
2023-06-02 15:14:25 +08:00
NovaRain 4e37fb0228 Fixed crash when using NumbersInDialogue
(revert commit a4d6687)

Added more accurate description for div function in DamageMod.cpp.
2023-06-01 15:56:43 +08:00
NovaRain 0de7614c53 Minor edits to ddraw.ini and define_extra.h 2023-05-29 15:21:21 +08:00
phobos2077 d5268f3fbc Small update to headers 2023-05-25 02:37:51 +02:00
NovaRain 19db722948 Decoupled hook type 2 of HOOK_AMMOCOST from CheckWeaponAmmoCost
Edits to documents to reflect the hook change.
Changed CheckWeaponAmmoCost to be enabled by default.
Updated version number.
2023-05-20 10:56:39 +08:00
NovaRain c2dde7485a Added back postbuild.cmd for github action 2023-05-19 10:35:59 +08:00
NovaRain c73f311b22 Randomized one extra bullet for side groups in burst attacks
* idea from phobos2077.

Added minimum value check to multipliers.
2023-05-19 09:45:15 +08:00
NovaRain 000816acb5 Merge branch 'scriptable-burst' into develop 2023-05-19 08:27:46 +08:00
NovaRain 37e7af2a17 Added documentation for set_spray_settings 2023-05-18 22:52:00 +08:00
NovaRain befea69909 Fixed "divided by zero" error when returning 0 in AMMOCOST hook
* with CheckWeaponAmmoCost=1

Added a value check to the return value of AMMOCOST hook.
Updated hookscripts.md to reflect this change.
2023-05-18 10:01:49 +08:00
phobos2077 a3cfc481a5 Remove postbuild.cmd from git 2023-05-16 18:50:13 +02:00
NovaRain c9034f917b Added "set_spray_settings" function for scriptable burst (#36)
* Current implementation works similar to metarule2_explosions.
documentation will come later.
2023-05-17 00:14:44 +08:00
NovaRain 5b9e90100d Changed AttackSubType enum "GUNS" to "RANGED"
* to be in line with define_extra.h, the naming is from RE/CE.

Minor textual edits to code.
2023-05-15 12:06:53 +08:00
phobos2077 427a978bb4 Implemented YAAM damage formula in script 2023-05-14 23:31:40 +02:00
phobos2077 e6e941e14c Updated gl_compute_damage example script to work as 1:1 reflection of vanilla damage formula
- In hope that this will make it easier for someone to write his own damage formula
2023-05-14 22:50:33 +02:00
phobos2077 493003af54 Updated some defines
- ATKMODE defines removed to avoid confusion - these are really two 4-bit fields, not bit flags!
2023-05-14 01:44:15 +02:00
phobos2077 1683678657 Revert adding RMOBJ to avoid duplication from devine_extra.h 2023-05-08 10:38:35 +02:00
phobos2077 a05207cc83 Add some missing script defines 2023-05-08 02:53:31 +02:00
NovaRain 00b85bec49 Expanded the functionality of Fallout1Behavior
* change the world map music and the credits music to match FO1 files.

Increased the maximum value of the combat speed slider.
Some minor code edits.
2023-04-30 09:18:51 +08:00
NovaRain 571955fbcb Tweaked set_pc/critter_base/extra_stat script functions
* before they didn't update derived stats when setting SPECIAL, for
the player it requires accessing the char screen to update.

Replaced some proto_ptr() usages with GetProto().
2023-04-22 23:45:57 +08:00
NovaRain f4e3049a0f Code edits to PartyControl.cpp
* use roll_random function from the engine instead of making a new one.

Updated version number.
2023-04-19 10:41:20 +08:00
NovaRain 184af43928 Attempt for reproducible builds
* ducible.exe is built with v140_xp toolset and /arch:SSE.
2023-04-17 10:06:46 +08:00
NovaRain 32e9642f90 Replaced deprecated set-output command in action
Removed Debug Directory "coffgrp" from PE header of release builds.
2023-04-14 14:04:41 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
59310dec6d Bump nokogiri from 1.13.10 to 1.14.3 in /docs (#462)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.10 to 1.14.3.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.10...v1.14.3)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-12 14:29:01 +08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
55c5c815f8 Bump commonmarker from 0.23.7 to 0.23.9 in /docs (#461)
Bumps [commonmarker](https://github.com/gjtorikian/commonmarker) from 0.23.7 to 0.23.9.
- [Release notes](https://github.com/gjtorikian/commonmarker/releases)
- [Changelog](https://github.com/gjtorikian/commonmarker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/gjtorikian/commonmarker/compare/v0.23.7...v0.23.9)

---
updated-dependencies:
- dependency-name: commonmarker
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-12 14:28:50 +08:00
NovaRain a4d6687aab Minor code edits to MiscPatches.cpp 2023-04-12 10:02:26 +08:00
423 changed files with 9612 additions and 4721 deletions
+1 -1
View File
@@ -7,6 +7,6 @@ updates:
directory: "/" directory: "/"
schedule: schedule:
interval: "monthly" interval: "monthly"
target-branch: "develop" # target-branch: "develop"
labels: labels:
- "dependencies" - "dependencies"
+16 -5
View File
@@ -3,12 +3,21 @@ name: Build
on: on:
push: push:
branches: branches:
- 'master'
- 'develop' - 'develop'
- 'github-action' - 'github-action'
paths: paths:
- '.github/workflows/build.yml' - '.github/workflows/build.yml'
- 'action.yml' - 'action.yml'
- 'sfall/**' - 'sfall/**'
pull_request:
branches:
- 'master'
- 'develop'
paths:
- '.github/workflows/build.yml'
- 'action.yml'
- 'sfall/**'
jobs: jobs:
Build: Build:
@@ -17,7 +26,7 @@ jobs:
steps: steps:
- name: Clone sfall - name: Clone sfall
uses: actions/checkout@v3 uses: actions/checkout@v4
# Action is used twice for self-testing only # Action is used twice for self-testing only
# DevXP build results are intentionally *not* included in artifact # DevXP build results are intentionally *not* included in artifact
@@ -27,24 +36,26 @@ jobs:
uses: ./ uses: ./
with: with:
release-xp: true release-xp: true
dev-xp: false
- name: DevXP build - name: DevXP build
uses: ./ uses: ./
with: with:
dev-xp: true release-xp: false
dev-xp: true
- name: Prepare artifact - name: Prepare artifacts
run: | run: |
: :
mkdir -p sfall-build mkdir -p sfall-build
cp artifacts/ddraw.ini sfall-build cp artifacts/ddraw.ini sfall-build
cp artifacts/sfall.dat sfall-build cp artifacts/sfall_dat/sfall.dat sfall-build
cp "${{ steps.build.outputs.release-xp }}" sfall-build cp "${{ steps.build.outputs.release-xp }}" sfall-build
shell: bash shell: bash
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v4
with: with:
name: sfall-build name: sfall-build
path: sfall-build path: sfall-build
+4 -4
View File
@@ -7,13 +7,13 @@ on:
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-22.04
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup Python - name: Setup Python
uses: actions/setup-python@v4 uses: actions/setup-python@v5
with: with:
python-version: '3.x' python-version: '3.x'
@@ -26,7 +26,7 @@ jobs:
run: ./docs/generate.sh run: ./docs/generate.sh
- name: Deploy - name: Deploy
uses: peaceiris/actions-gh-pages@v3 uses: peaceiris/actions-gh-pages@v4
with: with:
github_token: ${{ secrets.GITHUB_TOKEN }} github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_site publish_dir: ./docs/_site
+1
View File
@@ -26,6 +26,7 @@
*.exe *.exe
*.out *.out
*.app *.app
!ducible.exe
# NetBeans # NetBeans
nbproject/private/ nbproject/private/
+181 -34
View File
@@ -1,5 +1,152 @@
# Changelog # Changelog
## 4.4.6.1
* The compatibility mode check now targets only unsupported Windows versions
* Changed the way **ProcessorIdle** works to prevent conflicts with **CPU_USAGE_FIX** option in `f2_res.ini`
* Added a fix to prevent out-of-bounds selection in the file list when loading a character file
* Added a fix to remove visible newline control characters `\n` when examining items in the barter screen
## 4.4.6
* Fixed a bug introduced in 4.3.1 that broke the debug message about a missing critter art file
* Fixed an issue where an item with a unique ID in the inventory had its ID reset by a non-unique item
* Restored the position of the ammo bar when **ALTERNATE_AMMO_METRE=0** in `f2_res.ini`
* Improved the fix for the display issue in the pipboy when the automap list is too long
* Improved the compatibility mode check for newer Windows
* Changed **PipBoyAvailableAtGameStart** option and `set_pipboy_available` script function to no longer modify the vault suit movie state
* Added a fix for the main menu music not stopping when replaying the intro
* Added a fix for display issues when highlighting a multiline dialogue option
* Added a fix for the incorrect message being displayed when attempting to repair a dead robot
* Added a fix for the double click sound when selecting a location in the Status section of the pipboy
* Added a fix for extra hidden buttons below the location list in the Status section of the pipboy
* Added a fix for map lighting from **Night Vision** perk not updating when loading a saved game
* Added a fix for an animation glitch when death animations and combat start simultaneously
* Added a fix to prevent the game from hanging when reloading a weapon overloaded with ammo via the interface bar
* Added a few fixes for issues related to weapons with negative ammo
* Added a tweak to replace death animations on critters with single-frame variants on map load
* Added more options for tweaking some engine perks to the **perks ini file**
* Reduced the green tone of the message window on the interface bar for text clarity
## 4.4.5.1
* HRP: Fixed the behavior of **IFACE_BAR_WIDTH** for a modified `fallout2.exe` with Chinese/Japanese support
* Fixed a bug in **XPTable** that caused leveling issues with **Here and Now** perk
* Disabled unnecessary selfrun file creation in the recording mode (autoplay has been disabled in 4.3)
## 4.4.5
* Fixed a bug introduced in 4.2.9 that caused `game_loaded` script function to always return 1 when called from normal scripts
* Fixed a bug introduced in 4.4.4 that caused the information card for the **hero appearance mod** not to refresh properly
* Fixed a crash bug in **AutoSearchSFX** when an **ACM** file has a name longer than 12 characters
* Fixed an issue where sfall did not reset data properly after attempting to load a corrupted saved game
* Fixed the inconsistent behavior of the escaped percent sign `%` in `sprintf` and `string_format` script functions
* Fixed `show/hide_iface_tag` script functions to prevent unnecessary toggling of tags
* Fixed `using_skill` script function returning garbage values when the arguments are not the player and Sneak skill
* Added a fix for the engine not checking **'misc'** type items when correcting data for items on maps
* Added a fix to prevent the windows of **Tag!** and **Mutate!** perks from reappearing when there are still unused perks
* Added a tweak to restore the player's sneak state when switching between maps
* Added options to **item highlighting mod** to separately set the color of outlines for highlighted containers and corpses
* New hook script: `hs_buildsfxweapon`
## 4.4.4
* Fixed a bug in **NPCsTryToSpendExtraAP** that caused NPCs to still be able to move in their combat turn after they killed themselves
* Fixed a bug in **PlayIdleAnimOnReload** that could cause critters to lose highlights after reloading weapons in combat
* Fixed a crash bug in `interface_art_draw` script function when drawing beyond window bounds
* Fixed the missing hotkeys for additional elevators derived from the original elevator types
* Fixed and improved the syntax parsing in script compiler (`compile.exe` in the **modders pack**)
* Improved the fix for using **'English'** as the fallback language directory for msg files to work on a per-line basis
* Improved the fix for saving/loading party member protos to include the car trunk
* Improved the performance of `draw_image`, `draw_image_scaled`, and `interface_art_draw` script functions
* Expanded `show/hide_iface_tag` script functions to work with the tag value 0 (sneak)
* Changed the expanded world map interface to be compatible with older versions of the hi-res patch
* Changed the expanded action points bar to require fewer resources and be compatible with older versions of the hi-res patch
* Changed **AIDrugUsePerfFix** to be enabled by default
* Tweaked the behavior of **NPCAutoLevel** option and renamed it to **PartyMemberNonRandomLevelUp** to better match its behavior
* Removed the unnecessary error message about sndlist.lst when **AutoSearchSFX** is enabled
* Added a fix for the time interval for healing during world map travel being tied to the system timer instead of game time
* Added a fix for the interface bar obscuring the barter/trade interface when using the hi-res patch
* Added a tweak to prevent the **'forever'** type of animation on objects from stopping when entering combat
* Added an option to use the expanded barter/trade interface (4 item slots per table instead of 3)
* Added an option to use the expanded inventory/loot screens (8 vertical slots instead of 6)
* Added an option to pre-fill the **'Move Items'** window with the correct balancing amount when moving money/caps in the barter screen
* Added an option to set up a key to let you move items between inventory lists by simply clicking on them
* Added debug options to adjust the size and text font for the internal debug window
* Added an option for tweaking **Cautious Nature** perk to the **perks ini file**
* Added a new attribute type value to `get_window_attribute script` function
* Added `PAUSEWIN` flag to the game mode functions (when pausing the game using `Ctrl+P`)
* Added 2 new arguments to `HOOK_ENCOUNTER` hook script
* Added a healing skills example script to the example mods in the **modders pack**
* New script function: `signal_close_game`, `art_frame_data`, `set_worldmap_heal_time`
## 4.4.3.1
* Fixed a possible hang or crash introduced in 4.4.1 when running certain script sequences
## 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 ## 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.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 * Fixed a bug introduced in 4.3.1 that caused the game to display incorrect names for corpses in some cases
@@ -39,12 +186,12 @@
* New script function: `get_terrain_name` * New script function: `get_terrain_name`
## 4.3.5 ## 4.3.5
* HRP: Fixed movie subtitles not showing up when setting **MOVIE_SIZE=1** with certain combinations of screen and movie aspect ratios * HRP: Fixed movie subtitles not showing up when **MOVIE_SIZE=1** with certain combinations of screen and movie aspect ratios
* HRP: Disabled **IFACE_BAR_WIDTH** and **SCALE_BUTTONS_AND_TEXT_MENU** for a modified `fallout2.exe` with Chinese/Japanese support to prevent garbled text * HRP: Disabled **IFACE_BAR_WIDTH** and **SCALE_BUTTONS_AND_TEXT_MENU** for a modified `fallout2.exe` with Chinese/Japanese support to prevent garbled text
* HRP: Added support for **SPLASH_SCRN_TIME** option in `f2_res.ini` * 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 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 * 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 **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 * 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 * Added a fix for a crash when the player equips a weapon overloaded with ammo
@@ -55,13 +202,13 @@
* HRP: Fixed a few issues with the main menu * HRP: Fixed a few issues with the main menu
* HRP: Added support for **LocalMapXLimit/LocalMapYLimit** options in `ddraw.ini` * 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 * 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** * Updated the ammo ini loader mod in the **modders pack**
## 4.3.3.1 ## 4.3.3.1
* HRP: Fixed a possible crash in combat when enabling **EXTRA_WIN_MSG_CHECKS** * HRP: Fixed a possible crash in combat when enabling **EXTRA_WIN_MSG_CHECKS**
* HRP: Fixed broke console messages when enabling **ConsoleOutputPath** * HRP: Fixed broke console messages when enabling **ConsoleOutputPath**
* HRP: Fixed the main menu still being stretched when setting **MAIN_MENU_SIZE=0** * HRP: Fixed the main menu still being stretched when **MAIN_MENU_SIZE=0**
* Fixed a bug introduced in 4.3.1 that caused the game to print an incorrect item name in some cases * Fixed a bug introduced in 4.3.1 that caused the game to print an incorrect item name in some cases
* Fixed screenshots for **DX9** graphics modes. Now the screenshots are saved in **PNG** format when in **DX9** mode * Fixed screenshots for **DX9** graphics modes. Now the screenshots are saved in **PNG** format when in **DX9** mode
* Improved the functionality of **AllowDShowMovies**. Now you can take screenshots and press any key to skip **AVI** movies * Improved the functionality of **AllowDShowMovies**. Now you can take screenshots and press any key to skip **AVI** movies
@@ -123,13 +270,13 @@
* Added a config file to change some engine parameters for the game mechanics * Added a config file to change some engine parameters for the game mechanics
* Added the ability to continuously play the music when moving to another map that uses the same music * Added the ability to continuously play the music when moving to another map that uses the same music
* Added the ability to set custom names for unarmed attacks in the inventory to **TranslationsINI** * Added the ability to set custom names for unarmed attacks in the inventory to **TranslationsINI**
* Added support for using the newline control character `'\n'` in the object description in `pro_*.msg` files * Added support for using the newline control character `\n` in the object description in `pro_*.msg` files
* Added support for the new **'Healing Item'** flag to item protos. Now AI will also use items with this flag for healing in combat * Added support for the new **'Healing Item'** flag to item protos. Now AI will also use items with this flag for healing in combat
* Added support for the new **'Cannot Use'** flag to the misc flags of item objects. This flag makes a weapon object unusable in combat * Added support for the new **'Cannot Use'** flag to the misc flags of item objects. This flag makes a weapon object unusable in combat
* Added missing sounds for the buttons on the world map interface (similar to Fallout 1 behavior) * 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** * 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` * 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) * Included Brazilian Portuguese and Polish translation (from Felipefpl and Jaiden)
## 4.3.0.2 ## 4.3.0.2
@@ -166,7 +313,7 @@
* Added a fix to prevent the player name from being displayed at the bottom of the dialog review window when the text is longer than one screen * Added a fix to prevent the player name from being displayed at the bottom of the dialog review window when the text is longer than one screen
* Added a fix for the in-game quest list not being in the same order as in `quests.txt` * Added a fix for the in-game quest list not being in the same order as in `quests.txt`
* Added a fix for multihex critters hitting themselves when they miss an attack with ranged weapons * Added a fix for multihex critters hitting themselves when they miss an attack with ranged weapons
* Added a fix to the placement of multihex critters in the player's party when entering a map or elevation * Added a fix for the placement of multihex critters in the player's party when entering a map or elevation
* Added a fix to the starting position of the player's marker on the world map when starting a new game * Added a fix to the starting position of the player's marker on the world map when starting a new game
* Added a fix for AI not checking the safety of weapons based on the selected attack mode * Added a fix for AI not checking the safety of weapons based on the selected attack mode
* Added a fix for the incorrect check and AP cost when AI reloads a weapon * Added a fix for the incorrect check and AP cost when AI reloads a weapon
@@ -210,9 +357,9 @@
* Added more options for tweaking some engine perks to the **perks ini file** * Added more options for tweaking some engine perks to the **perks ini file**
* Added options for tweaking tag skills to the **skills ini file** * Added options for tweaking tag skills to the **skills ini file**
* Added an option about the behavior of maximum HP calculation to the **stats ini file** * 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 3 new attribute type values to `get_window_attribute` script function
* Added additional universal opcodes `sfall_func7` and `sfall_func8` (`compile.exe` and `int2ssl.exe` in the **modders pack** are also updated) * 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 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 * 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` * New script functions: `interface_overlay`
@@ -225,9 +372,10 @@
* Cleaned up `define_lite.h` and `command_lite.h` in the **modders pack** * Cleaned up `define_lite.h` and `command_lite.h` in the **modders pack**
## 4.2.8 ## 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 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 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 field of view check in **ObjCanSeeObj_ShootThru_Fix**
* Improved the functionality of **GlobalShaderFile** to be able to load multiple shader files * Improved the functionality of **GlobalShaderFile** to be able to load multiple shader files
* Improved the performance of **DX9** graphics modes * Improved the performance of **DX9** graphics modes
@@ -239,7 +387,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 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 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 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 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 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 * Added support for **ACM** audio file playback and volume control to `soundplay` script function
@@ -259,7 +406,7 @@
* Fixed the default values for **Movie1 - Movie17** options * Fixed the default values for **Movie1 - Movie17** options
* Fixed the playback of additional movies defined in **Movie18 - Movie32** options * Fixed the playback of additional movies defined in **Movie18 - Movie32** options
* Fixed **OverrideMusicDir=2** not overriding the music path properly * Fixed **OverrideMusicDir=2** not overriding the music path properly
* Fixed incorrect Melee Damage stat value being displayed when setting **BonusHtHDamageFix=1** and **DisplayBonusDamage=0** * Fixed incorrect Melee Damage stat value being displayed when **BonusHtHDamageFix=1** and **DisplayBonusDamage=0**
* Fixed `attack_complex script` function not setting result flags correctly for the attacker and the target * Fixed `attack_complex script` function not setting result flags correctly for the attacker and the target
* Fixed and improved **SFX** and speech playback for alternative sound files * Fixed and improved **SFX** and speech playback for alternative sound files
* Fixed and improved the behavior of nested timer events in global scripts * Fixed and improved the behavior of nested timer events in global scripts
@@ -289,7 +436,7 @@
* Improved the pathfinding in the engine function when a multihex object is in the line of fire * 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 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 * 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 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 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 * Added a fix for NPC stuck in an animation loop in combat when trying to move close to a multihex critter
@@ -348,14 +495,14 @@
* Fixed the timing of setting `WORLDMAP`, `DIALOG`, `PIPBOY`, `INVENTORY`, `INTFACEUSE`, and `INTFACELOOT` game mode flags * Fixed the timing of setting `WORLDMAP`, `DIALOG`, `PIPBOY`, `INVENTORY`, `INTFACEUSE`, and `INTFACELOOT` game mode flags
* Fixed the execution of the timer event in global scripts * Fixed the execution of the timer event in global scripts
* Fixed the palette and the movie playback in **DX9** mode * Fixed the palette and the movie playback in **DX9** mode
* Improved the functionality of `create_message_window` script function to support the newline control character `'\n'` * Improved the functionality of `create_message_window` script function to support the newline control character `\n`
* Removed **TownMapHotkeysFix** and **DisplaySecondWeaponRange** from `ddraw.ini` because there is little reason to turn them off * Removed **TownMapHotkeysFix** and **DisplaySecondWeaponRange** from `ddraw.ini` because there is little reason to turn them off
* Added a fix for duplicate critters being added to the list of potential targets for AI * Added a fix for duplicate critters being added to the list of potential targets for AI
* Added a fix for the playback of the speech sound file for the death screen being ended abruptly in some cases * Added a fix for the playback of the speech sound file for the death screen being ended abruptly in some cases
* Added a fix for the barter button on the dialog window not animating until after leaving the barter screen * 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 the division operator treating negative integers as unsigned
* Added a fix for trying to loot corpses with the **'NoSteal'** flag set * 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 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 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 * Added a flashing icon to the Horrigan encounter and scripted force encounters by default
@@ -372,7 +519,7 @@
* Fixed and improved the functionality of `substr` script function * Fixed and improved the functionality of `substr` script function
* Restored and fixed **RemoveWindowRounding** option that was removed in 4.1.2 * Restored and fixed **RemoveWindowRounding** option that was removed in 4.1.2
* Improved the functionality of `inventory_redraw` script function * 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 * Changed the debug message about a missing critter art file to also be displayed in the game
* Code refactoring for various script functions * 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 * 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 +541,7 @@
* Fixed `move_obj_inven_to_obj/drop_obj` script functions not removing the equipped armor properly for the player and party members * 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 `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 `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 xp bonus set by `set_swiftlearner_mod` script function not being reset on game load
* Fixed the player name while controlling other critters * Fixed the player name while controlling other critters
* Fixed **NPC combat control mod** not removing the inherited perks from controlled critters properly * Fixed **NPC combat control mod** not removing the inherited perks from controlled critters properly
@@ -488,8 +635,8 @@
* Added a fix for knocked down critters not playing stand up animation when the combat ends * 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 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 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 expand the number of action points displayed on the interface bar (requires the hi-res patch v4.1.8)
* Added an option to change the base value of the duration of the knockout effect * 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 * Added a check for the `DAM_KNOCKED_OUT` flag to `wield_obj_critter/inven_unwield` script functions
* Added a new value to **SkipOpeningMovies** to also skip the splash screen * Added a new value to **SkipOpeningMovies** to also skip the splash screen
@@ -511,7 +658,7 @@
* Changed `create_message_window` script function to be available when other game interfaces are opened * 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 **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 * 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 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 to allow fleeing NPC to use drugs
* Added a fix for AI not checking minimum HP properly for using stimpaks * Added a fix for AI not checking minimum HP properly for using stimpaks
@@ -531,7 +678,7 @@
* Fixed fake perks not stacking properly * Fixed fake perks not stacking properly
* Fixed the position of the 32-bit talking heads when the game resolution is higher than 640x480 * 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 * 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 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 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 * Added a fix for a duplicate `obj_dude` script being created when loading a saved game
@@ -563,7 +710,7 @@
* Added a fix for the reserved item FRM being displayed in the top-left corner when in the loot/barter screens * Added a fix for the reserved item FRM being displayed in the top-left corner when in the loot/barter screens
* Added a fix for the active effects of drugs not being saved properly * Added a fix for the active effects of drugs not being saved properly
* Added a fix for NPC stuck in a loop of reloading melee/unarmed weapons when out of ammo * Added a fix for NPC stuck in a loop of reloading melee/unarmed weapons when out of ammo
* Added a fix for critters not being healed over time when entering the map if **'dead_bodies_age=No'** is set in `maps.txt` * Added a fix for critters not being healed over time when entering a map with **'dead_bodies_age=No'** set in `maps.txt`
* Added a fix for corpses being removed early after returning to the map * Added a fix for corpses being removed early after returning to the map
* Added a fix for the removal of party member's corpse. Now items in party member's inventory are not removed along with the corpse * Added a fix for the removal of party member's corpse. Now items in party member's inventory are not removed along with the corpse
* Added an option to change the timer for deleting corpses on a map after you leave * Added an option to change the timer for deleting corpses on a map after you leave
@@ -585,7 +732,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 `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 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 `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 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 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 * Fixed and improved the functionality of **UseFileSystemOverride** and `fs_*` script functions
@@ -655,7 +802,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 **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 * 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 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 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 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** * Added an option to skip the **'Move Items'** window when taking items from containers or corpses and not holding down **ItemFastMoveKey**
@@ -686,18 +833,18 @@ Various bug fixes and features based on the work by Mr.Stalin:
Original engine bug fixes and various features based on the work by Mr.Stalin: Original engine bug fixes and various features based on the work by Mr.Stalin:
* Implemented a **code injection system for game hooks**. In previous versions, the code of game hooks was always executed even if there is no corresponding hook script. Now the code of a game hook only gets injected into the game when the corresponding hook script exists * Implemented a **code injection system for game hooks**. In previous versions, the code of game hooks was always executed even if there is no corresponding hook script. Now the code of a game hook only gets injected into the game when the corresponding hook script exists
* Code refactoring for some hook scripts * Code refactoring for some hook scripts
* Fixed an issue with file IDs of additional game msg files being shifted when a file in **ExtraGameMsgFileList** is missing * Fixed an issue where the file IDs of additional game msg files were shifted when a file in **ExtraGameMsgFileList** was missing
* Fixed `obj_can_see_obj` script function not checking if source and target objects are on the same elevation before calling `HOOK_WITHINPERCEPTION` hook script * Fixed `obj_can_see_obj` script function not checking if source and target objects are on the same elevation before calling `HOOK_WITHINPERCEPTION` hook script
* Improved the functionality of **ExtraGameMsgFileList** to allow manually assigning numbers to specific msg files * Improved the functionality of **ExtraGameMsgFileList** to allow manually assigning numbers to specific msg files
* Improved the functionality of `HOOK_AMMOCOST` hook script when **CheckWeaponAmmoCost** is enabled * Improved the functionality of `HOOK_AMMOCOST` hook script when **CheckWeaponAmmoCost** is enabled
* Improved and expanded the functionality of **UseScrollingQuestsList** to display page numbers and add another set of scroll buttons * Improved and expanded the functionality of **UseScrollingQuestsList** to display page numbers and add another set of scroll buttons
* Expanded `is_iface_tag_active` script function to check tag value of 0/1/2 (sneak/poisoned/radiated) * Expanded `is_iface_tag_active` script function to check tag values 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 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 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 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 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 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 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) * Added an option to load alternative dialog msg and subtitle files for female PC (translation friendly)
@@ -750,7 +897,7 @@ Original engine bug fixes and various features based on the work by Mr.Stalin:
## 4.0.3 ## 4.0.3
* Fixed the broken **ExtraGameMsgFileList** option * 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 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 * 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 * **Item highlighting mod** now only highlights lootable corpses
@@ -766,9 +913,9 @@ Original engine bug fixes and various features based on the work by Mr.Stalin:
## 4.0 ## 4.0
* The build environment is now **Visual Studio 2015**, and Win XP SP2 and Win 2000 are no longer supported * 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 * 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 * Fixed an issue where the game was rendered before the **hero appearance mod** was loaded
* **Item highlighting mod** was moved from sfall into a separate script (`gl_highlighting.int`) and extended with new options * **Item highlighting mod** is 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`) * **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` * 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 * 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 * Improved compatibility between **hero appearance**, **NPC combat control**, and **NPC armor appearance** mods
@@ -816,7 +963,7 @@ Original engine bug fixes and various features based on the work by Crafty:
* Fixed broken `call_offset_*` script functions * Fixed broken `call_offset_*` script functions
* Fixed **OverrideMusicDir** not using the correct path string * 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 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 `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 * Changed **BodyHit_Torso** to **BodyHit_Torso_Uncalled** because it sets both *body_torso* and *body_uncalled* hit modifiers
@@ -933,4 +1080,4 @@ Original engine bug fixes and various features based on the work by Crafty:
* Added an option to allow 9 options (lines of text) to be displayed correctly in the dialog window * Added an option to allow 9 options (lines of text) to be displayed correctly in the dialog window
* Added an option to display additional points of damage from **Bonus HtH/Ranged Damage** perks in the inventory * Added an option to display additional points of damage from **Bonus HtH/Ranged Damage** perks in the inventory
__For changelogs prior to 3.7, please read the `sfall-readme.txt` in the [release files](https://github.com/sfall-team/sfall/releases).__ __For changelogs prior to version 3.7, please refer to the `sfall-readme.txt` in the [release files](https://github.com/sfall-team/sfall/releases).__
+7 -8
View File
@@ -1,7 +1,7 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007 Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.} <one line to give the program's name and a brief idea of what it does.>
Copyright (C) {year} {name of author} Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode: notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname} <program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details. under certain conditions; type `show c' for details.
@@ -664,12 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school, You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary. if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>. <https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>. <https://www.gnu.org/licenses/why-not-lgpl.html>.
+17 -3
View File
@@ -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/). - 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:__\ - __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.) 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,18 +30,32 @@ Original description: A set of engine modifications for the classic game Fallout
## Uninstallation ## 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 ## Usage
This mod is configured via the `ddraw.ini` and `sfall-mods.ini` files, which can be opened with any text editor. Details of every configerable option are included in those files. Where a comment refers to a DX scancode, the complete list of codes can be found at the link below:\ This mod is configured via the `ddraw.ini` and `sfall-mods.ini` files, which can be opened with any text editor. Details of every configerable option are included in those files. Where a comment refers to a DX scancode, the complete list of codes can be found at the link below:\
https://kippykip.com/b3ddocs/commands/scancodes.htm https://kippykip.com/b3ddocs/commands/scancodes.htm
In a default installation using an unmodified copy of `ddraw.ini`, the middle mouse button will be set to switch between weapons and the mouse wheel will be set to scroll through any menus that respond to the up/down arrow keys. Holding Ctrl and hitting numpad keys 0 to 6 (with Num Lock off) will adjust the game speed. Holding left Ctrl will let you move a whole stack of items at once. Pressing left Shift will highlight items on the ground. The script extender and any engine fixes are also enabled. Most of the options that change gameplay in some way not originally intended by the developers are disabled. In a default installation using an unmodified copy of `ddraw.ini`, the middle mouse button will be set to switch between weapons and the mouse wheel will be set to scroll through any menus that respond to the up/down arrow keys. Holding **Ctrl** and hitting numpad keys 0 to 6 (with Num Lock off) will adjust the game speed. Holding **left Ctrl** will let you move items between inventory lists by simply clicking on them. Pressing **left Shift** will highlight items on the ground, and holding the key will let you move an entire stack of items at once. The script extender and any engine fixes are also enabled. Most of the options that change gameplay in some way not originally intended by the developers are disabled.
For [__Wine__](https://www.winehq.org/) users:\ 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. 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 ## Additional info
* [Changelog](CHANGELOG.md) * [Changelog](CHANGELOG.md)
+13 -17
View File
@@ -8,9 +8,7 @@ author: '@wipe2238'
# #
# - name: Build sfall # - name: Build sfall
# id: sfall # id: sfall
# uses: phobos2077/sfall@develop # uses: sfall-team/sfall@master
# with:
# release-xp: true
# #
# - name: Copy sfall to mod directory # - name: Copy sfall to mod directory
# run: copy "${{ steps.sfall.outputs.release-xp }}" "my/mod/directory/ddraw.dll" # run: copy "${{ steps.sfall.outputs.release-xp }}" "my/mod/directory/ddraw.dll"
@@ -22,11 +20,13 @@ inputs:
release-xp: release-xp:
description: 'Set to true to enable building with ReleaseXP configuration' description: 'Set to true to enable building with ReleaseXP configuration'
required: true required: false
default: true
dev-xp: dev-xp:
description: 'Set to true to enable building with DevXP configuration' description: 'Set to true to enable building with DevXP configuration'
required: true required: false
default: false
# Outputs are always using Windows directory separator (`\`) # Outputs are always using Windows directory separator (`\`)
outputs: outputs:
@@ -49,7 +49,7 @@ runs:
# Quick check for things which should never happen # Quick check for things which should never happen
- name: Sanity checks - name: Sanity checks
run: | run: |
if [[ "${{ runner.os }}" != "Windows" ]]; then if [[ "$RUNNER_OS" != "Windows" ]]; then
echo "[ERROR] This action can only be used on Windows" echo "[ERROR] This action can only be used on Windows"
exit 1 exit 1
elif [[ "${{ inputs.release-xp }}" != "true" ]] && [[ "${{ inputs.dev-xp }}" != "true" ]]; then elif [[ "${{ inputs.release-xp }}" != "true" ]] && [[ "${{ inputs.dev-xp }}" != "true" ]]; then
@@ -68,7 +68,7 @@ runs:
# DXSDK directory must be prepared only once, in case action is used N times # DXSDK directory must be prepared only once, in case action is used N times
# Using `.lib` suffix to make sure directory is ignored by git in exotic scenarios # Using `.lib` suffix to make sure directory is ignored by git in exotic scenarios
# Using `::set-output` to make sure workflow environment remains unchanged # Using $GITHUB_OUTPUT to make sure workflow environment remains unchanged
- name: Prepare DXSDK directory - name: Prepare DXSDK directory
id: dxsdk id: dxsdk
run: | run: |
@@ -82,23 +82,22 @@ runs:
# #
echo "::endgroup::" echo "::endgroup::"
fi fi
echo "::set-output name=dir::$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")" echo "dir=$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")" >> $GITHUB_OUTPUT
shell: bash shell: bash
# MSBuild is not in PATH on Windows machines # MSBuild is not in PATH on Windows machines
# Using `::set-output` to make sure workflow environment remains unchanged # Using $GITHUB_OUTPUT to make sure workflow environment remains unchanged
- name: Prepare MSBuild - name: Prepare MSBuild
id: msbuild id: msbuild
run: | run: |
echo "::group::Prepare MSBuild" 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)" 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::" echo "::endgroup::"
shell: bash shell: bash
# Creating empty `PostBuild.cmd` to avoid false-positive build error
- name: Build ReleaseXP - name: Build ReleaseXP
id: build-release-xp id: build-release-xp
run: | run: |
@@ -106,10 +105,9 @@ runs:
echo ::group::Build ReleaseXP echo ::group::Build ReleaseXP
# #
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 "${{ 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::" echo "::endgroup::"
fi fi
@@ -117,7 +115,6 @@ runs:
DXSDK_DIR: ${{ steps.dxsdk.outputs.dir }} DXSDK_DIR: ${{ steps.dxsdk.outputs.dir }}
shell: bash shell: bash
# Creating empty `PostBuild.cmd` to avoid false-positive build error
- name: Build DevXP - name: Build DevXP
id: build-dev-xp id: build-dev-xp
run: | run: |
@@ -126,11 +123,10 @@ runs:
echo "::group::Build DevXP" echo "::group::Build DevXP"
# #
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 "${{ 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 "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.dll")" >> $GITHUB_OUTPUT
echo "::set-output name=ddraw-pdb::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.pdb")" echo "ddraw-pdb=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.pdb")" >> $GITHUB_OUTPUT
echo "::endgroup::" echo "::endgroup::"
fi fi
+89 -5
View File
@@ -2,15 +2,64 @@
;When adding extra perks to a mod, it's advisable to use the fake perk scripting functions rather than make ;When adding extra perks to a mod, it's advisable to use the fake perk scripting functions rather than make
; modifications in this file, as some perks have hardcoded effects which may catch you out ; modifications in this file, as some perks have hardcoded effects which may catch you out
;Set the bonus value to 0 in the 'PerksTweak' section for perks to get around this problem
;Since traits need to be picked before any scripts run, they have an additional NoHardcode option in this file which can ;Since traits need to be picked before any scripts run, they have an additional 'NoHardcode' option in this file
; be used to remove their hardcoded effects, and add new stat/skill effects ; which can be used to remove their hardcoded effects, and add new stat/skill effects
;##############################################################################
[PerksTweak] [PerksTweak]
;Changes the light level bonus for 'Night Vision' perk (ID 9)
;valid range: 0..100, 20 - default bonus
NightVisionBonus=20
;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) ;Changes the bonus for 'Master Trader' perk (ID 17)
;25 - default bonus ;25 - default bonus
MasterTraderBonus=25 MasterTraderBonus=25
;Changes the skill point bonus for 'Educated' perk (ID 18)
;125 - maximum bonus, 2 - default bonus
EducatedBonus=2
;Changes the hit point bonuses for 'Healer' perk (ID 19)
;999 - maximum bonus, 4 - default bonus
HealerMinBonus=4
;999 - maximum bonus, 10 - default bonus
HealerMaxBonus=10
;Changes the hit point bonus for 'Lifegiver' perk (ID 28)
;125 - maximum bonus, 4 - default bonus
LifegiverBonus=4
;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) ;Changes the distance bonus for 'Weapon Long Range' weapon perk (ID 58)
;2 - no bonus, 4 - default bonus ;2 - no bonus, 4 - default bonus
WeaponLongRangeBonus=4 WeaponLongRangeBonus=4
@@ -30,13 +79,36 @@ WeaponScopeRangeBonus=5
VaultCityInoculationsPoisonBonus=10 VaultCityInoculationsPoisonBonus=10
VaultCityInoculationsRadBonus=10 VaultCityInoculationsRadBonus=10
;Changes the distance bonus for 'Cautious Nature' perk (ID 80)
;Affects where critters spawn in 'surrounding' random encounters without a specified distance
;valid range: -12..20, 3 - default bonus
CautiousNatureBonus=3
;Changes the percentage bonus for 'Comprehension' perk (ID 81)
;50 - default bonus
ComprehensionBonus=50
;Changes the damage bonus per level for 'Demolition Expert' perk (ID 82) ;Changes the damage bonus per level for 'Demolition Expert' perk (ID 82)
;999 - maximum bonus, 10 - default bonus ;999 - maximum bonus, 10 - default bonus
DemolitionExpertBonus=10 DemolitionExpertBonus=10
;Changes the damage bonus for 'Living Anatomy' perk (ID 97) ;Changes the Gambling skill bonus for 'Gambler' perk (ID 83)
;125 - maximum bonus, 5 - default bonus ;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 damage bonus
LivingAnatomyBonus=5 LivingAnatomyBonus=5
;125 - maximum bonus, 10 - default skill bonus
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) ;Changes the damage bonus for 'Pyromaniac' perk (ID 101)
;125 - maximum bonus, 5 - default bonus ;125 - maximum bonus, 5 - default bonus
@@ -50,10 +122,23 @@ SalesmanBonus=20
;valid range: 0..100, 50 - default percent ;valid range: 0..100, 50 - default percent
StonewallPercent=50 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) ;Changes the strength bonus for 'Weapon Handling' perk (ID 106)
;0 - no bonus, 10 - maximum bonus, 3 - default bonus ;0 - no bonus, 10 - maximum bonus, 3 - default bonus
WeaponHandlingBonus=3 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] [Perks]
;Set to 1 to enable the modifications for perks ;Set to 1 to enable the modifications for perks
@@ -94,7 +179,6 @@ Enable=0
;Skill3-Skill5: The skill to be modified (or -1 for none) ;Skill3-Skill5: The skill to be modified (or -1 for none)
;Skill3Mod-Skill5Mod: The increased/decreased value to the modified skill ;Skill3Mod-Skill5Mod: The increased/decreased value to the modified skill
;##############################################################################
;This is a modification to vanilla perk 0 ;This is a modification to vanilla perk 0
[0] [0]
Name=Example Name=Example
+2 -1
View File
@@ -76,7 +76,8 @@ Default=16777346
Jacket=16777346 Jacket=16777346
Leather=16777347 Leather=16777347
Metal=16777348 Metal=16777348
Combat=16777226 Combat=16777367
Robe=16777368
; Kitsune (RP) ; Kitsune (RP)
[6] [6]
+19 -10
View File
@@ -9,10 +9,13 @@ Containers=0
; Set to 1 to also highlight lootable corpses ; Set to 1 to also highlight lootable corpses
Corpses=0 Corpses=0
; Set to 1 to only highlight objects in the player's line-of-sight ; Set to 1 to also highlight critters, with the same rules as in combat
CheckLOS=0 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; available colors:
; 1 - glowing red ; 1 - glowing red
; 2 - red ; 2 - red
; 4 - grey ; 4 - grey
@@ -20,27 +23,33 @@ CheckLOS=0
; 16 - bright yellow ; 16 - bright yellow
; 32 - dark yellow ; 32 - dark yellow
; 64 - purple ; 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 OutlineColor=16
; Set the color of outlines for containers
OutlineColorContainers=4
; Set the color of outlines for corpses
OutlineColorCorpses=4
; Motion Scanner mode: ; Motion Scanner mode:
; 0 - ignored ; 0 - ignored
; 1 - requires Motion Scanner present in player inventory to activate highlighting ; 1 - requires Motion Sensor to be present in the player's inventory to activate highlighting
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore) ; 2 - requires Motion Sensor and consumes 1 charge on every use (depleted sensor will not work anymore)
MotionScanner=0 MotionScanner=0
[CombatControl] [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 0 to disable
;Set to 1 to control all critters in combat (allowed only in sfall debugging mode) ;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 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 Mode=0
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs ;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 ;PIDList=62,89,97,107,160,161
;Set a comma delimited list of perk IDs for perks to be inherited from the player during the combat control ;Set a comma-delimited list of perk IDs for perks to be inherited from the player during the combat control
PerksList=0,73 PerksList=0,73
;Set to 1 to allow the player to gain a positive reputation when killing NPCs while controlling other critters ;Set to 1 to allow the player to gain a positive reputation when killing NPCs while controlling other critters
+120 -69
View File
@@ -1,5 +1,5 @@
;sfall configuration settings ;sfall configuration settings
;v4.3.8 ;v4.4.6.1
[Main] [Main]
;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash ;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash
@@ -19,17 +19,22 @@ UseCommandLine=0
;This section allows you to set multiple paths to folders containing mods or patches ;This section allows you to set multiple paths to folders containing mods or patches
;Paths to folders and Fallout .dat files are supported ;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) ;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\ ;Starting from 4.4/3.8.40, the game will load custom .dat files and folders from <GameRoot>\mods\mods_order.txt
;The load order of files in the folder will be in reverse alphabetical order of the filenames ;The files and folders in mods_order.txt will have a higher priority than the PatchFileXX options
;Autoloaded files will have a higher priority than the files specified in the PatchFileXX options ;The complete order of how the engine loads game data is:
;The complete data load order is: ;master_patches > critter_patches > mods_order.txt > PatchFileXX > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
;master_patches > critter_patches > mods > PatchFile99..PatchFile0 > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
;PatchFile0=mods\RP_data ;PatchFile0=mods\RP_data
;PatchFile1= ;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 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Speed] [Speed]
;Set to 1 to enable options related to the game speed adjustment (SpeedMulti#, SpeedKey#, SpeedModKey, and SpeedToggleKey) ;Set to 0 to disable everything in this section
Enable=1 Enable=1
;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed) ;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed)
@@ -52,10 +57,11 @@ SpeedMultiInitial=100
;Set to 0 for 8 bit fullscreen ;Set to 0 for 8 bit fullscreen
;Set to 4 for DX9 fullscreen ;Set to 4 for DX9 fullscreen
;Set to 5 for DX9 windowed ;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) ;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 ;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 ;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 Mode=0
;If using a DX9 mode, this changes the resolution ;If using a DX9 mode, this changes the resolution
@@ -65,7 +71,7 @@ GraphicsWidth=0
GraphicsHeight=0 GraphicsHeight=0
;Window position data. Do not modify ;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 WindowData=-1
;Uncomment the option to use a hardware shader (requires DX9 graphics mode) ;Uncomment the option to use a hardware shader (requires DX9 graphics mode)
@@ -85,7 +91,7 @@ TextureFilter=1
GPUBlt=0 GPUBlt=0
;Set to 1 to allow using 32-bit textures for talking heads ;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.) ;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 ;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) ;Requires DX9 graphics mode and v2.0 pixel shader support (see GPUBlt option)
@@ -104,15 +110,24 @@ FadeMultiplier=100
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Interface] [Interface]
;Set to 1 to expand the number of action points displayed on the interface bar ;Set to 1 to expand the number of action points displayed on the interface bar
;Requires new IFACE_E.frm and HR_IFACE_<res>E.frm files in art\intrface\ (included in sfall.dat) to display correctly ;Requires a new IFACE_APBAR_E.frm in art\intrface\ (included in sfall.dat) to display correctly
;The minimum supported version of High Resolution Patch is 4.1.8
ActionPointsBar=0 ActionPointsBar=0
;Set to 1 to use the expanded barter/trade interface with 4 item slots per table instead of 3
;Requires the hi-res patch/mode and new BARTER_E.frm and TRADE_E.frm files in art\intrface\ (included in sfall.dat)
;The screen resolution must be set to at least 640x528
;The only supported version of the hi-res patch is v4.1.8
ExpandBarter=0
;Set to 1 to use the expanded inventory/loot screens with 8 vertical slots instead of 6
;Requires new INVBOX_E.frm, LOOT_E.frm, and USE_E.frm files in art\intrface\ (included in sfall.dat)
ExpandInventory=0
;Set to 1 to use the expanded world map interface ;Set to 1 to use the expanded world map interface
;Set to 2 to skip correcting the position of entrance markers on town maps ;Set to 2 to skip correcting the position of entrance markers on town maps
;You can use resized FRMs in 700x682 for town maps in the expanded world map interface ;You can use resized FRMs in 700x682 for town maps in the expanded world map interface
;Requires High Resolution Patch v4.1.8 and a new WORLDMAP.frm file in art\intrface\ (included in sfall.dat) ;Requires the hi-res patch/mode and a new WORLDMAP.frm file in art\intrface\ (included in sfall.dat)
;The resolution of the hi-res patch must be set to at least 890x720 ;The screen resolution must be set to at least 890x720
ExpandWorldMap=0 ExpandWorldMap=0
;Set to 1 to draw a dotted line while traveling on the world map (similar to Fallout 1) ;Set to 1 to draw a dotted line while traveling on the world map (similar to Fallout 1)
@@ -150,6 +165,15 @@ OverrideMusicDir=1
;This will slightly increase the startup time of the game on older computers ;This will slightly increase the startup time of the game on older computers
AutoSearchSFX=1 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 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Input] [Input]
;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens ;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens
@@ -161,7 +185,7 @@ UseScrollWheel=1
;Set to 0 to only ever scroll 1 click ;Set to 0 to only ever scroll 1 click
ScrollMod=0 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 ;Negative values are valid if you want your mouse axis reversed for some reason
MouseSensitivity=100 MouseSensitivity=100
@@ -211,14 +235,20 @@ WindowScrollKey=0
;Set to 0 if you don't want a reload key, or a DX scancode otherwise ;Set to 0 if you don't want a reload key, or a DX scancode otherwise
ReloadWeaponKey=0 ReloadWeaponKey=0
;A key to hold down to let you move/drop a whole stack of items at once without the 'Move Items' window ;A key to hold down to let you move/drop an entire stack of items at once without the 'Move Items' window
;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise ;Set to 0 if you don't want a fast move key, or a DX scancode otherwise
ItemFastMoveKey=29 ItemFastMoveKey=42
;Set to 1 to skip the 'Move Items' window when taking items from containers or corpses and not holding down ItemFastMoveKey ;Set to 1 to skip the 'Move Items' window when taking items from containers or corpses and not holding down ItemFastMoveKey
;Requires ItemFastMoveKey to be enabled ;Requires ItemFastMoveKey to be enabled
FastMoveFromContainer=0 FastMoveFromContainer=0
;A key to hold down to let you move items between inventory lists by simply clicking on them
;In the inventory screen, items from the main inventory list will go to appropriate slots
;Set to 0 if you don't want a skip drag key, or a DX scancode otherwise
;Can be mapped to the same key as ItemFastMoveKey for a combined effect
ItemMoveSkipDragKey=29
;A key to press to open a debug game editor ;A key to press to open a debug game editor
;Set to 0 to disable, or a DX scancode otherwise ;Set to 0 to disable, or a DX scancode otherwise
;Requires sfall debugging mode and FalloutDebug.exe from the modders pack ;Requires sfall debugging mode and FalloutDebug.exe from the modders pack
@@ -247,7 +277,7 @@ WorldMapTimeMod=100
WorldMapFPSPatch=1 WorldMapFPSPatch=1
;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement ;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement
;Default is 66 milliseconds ;Default is 66 milliseconds, and the maximum is 150
WorldMapDelay2=66 WorldMapDelay2=66
;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed ;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed
@@ -277,9 +307,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) ;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 ;PatchFile=patch%03d.dat
;Set to 1 to use the modified data load order for the engine to find game data ;Set to 1 to change the order of how the engine loads game data
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat ;Old: 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 ;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 ;This option is always enabled in 4.3/3.8.30 or later. The information is left for reference only
DataLoadOrderPatch=1 DataLoadOrderPatch=1
@@ -287,21 +317,20 @@ DataLoadOrderPatch=1
;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC ;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC
FemaleDialogMsgs=0 FemaleDialogMsgs=0
;Set to 1 to allow using the special '^' character in dialog msg files to specify the alternative text ;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
;that will be displayed in the dialogue based on the player's gender
;The text must be enclosed in angle brackets (example: <MaleText^FemaleText>) ;The text must be enclosed in angle brackets (example: <MaleText^FemaleText>)
DialogGenderWords=0 DialogGenderWords=0
;To change the default and starting player models, uncomment the next four lines. ;To change the default and starting player models, uncomment the next four lines
;The default models can also be changed ingame via script ;The default models can also be changed in-game via script
;MaleStartModel=hmwarr ;MaleStartModel=hmwarr
;MaleDefaultModel=hmjmps ;MaleDefaultModel=hmjmps
;FemaleStartModel=hfprim ;FemaleStartModel=hfprim
;FemaleDefaultModel=hfjmps ;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 ;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 Movie1=iplogo.mve
Movie2=intro.mve Movie2=intro.mve
Movie3=elder.mve Movie3=elder.mve
@@ -327,23 +356,23 @@ Movie17=credits.mve
;StartDay=-1 ;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 ;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! ;Does not work with the hi-res patch by Mash!
;LocalMapXLimit=480 ;LocalMapXLimit=480
;LocalMapYLimit=400 ;LocalMapYLimit=400
;Set to 1 if you want the pipboy to be available at the start of the game ;Set to 1 to make the pipboy and the vault suit available when the game starts
;Set to 2 to make the pipboy available by only skipping the vault suit movie check ;Set to 2 to make only the pipboy available
PipBoyAvailableAtGameStart=0 PipBoyAvailableAtGameStart=0
;Set to 1 to double the number of available kill types ;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) ;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 ;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) ;Additional kill types must have their new critical tables set! (See the OverrideCriticalTable option)
ExtraKillTypes=0 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! ;Don't set this to anything other than 0 unless another mod you're using explicitly tells you to!
;0 - Fallout default ;0 - Fallout default
;1 - Glovz's Damage Fix ;1 - Glovz's Damage Fix
@@ -351,7 +380,7 @@ ExtraKillTypes=0
;5 - Haenlomal's Yet Another Ammo Mod ;5 - Haenlomal's Yet Another Ammo Mod
DamageFormula=0 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 DialogueFix=1
;Prevents you from using number keys to enter unvisited areas on a town map ;Prevents you from using number keys to enter unvisited areas on a town map
@@ -360,9 +389,9 @@ TownMapHotkeysFix=1
;Set to 1 to disable the Horrigan encounter ;Set to 1 to disable the Horrigan encounter
DisableHorrigan=0 DisableHorrigan=0
;Set to 1 to disable the random element in NPC levelling. ;Set to 1 to disable the random element in party member leveling
;This will cause all NPC party members to automatically level up as soon as the player reaches the requirements ;This will prevent party members from randomly leveling up early and instead level them up at defined intervals
NPCAutoLevel=0 PartyMemberNonRandomLevelUp=0
;Change the initial starting location and world map viewport ;Change the initial starting location and world map viewport
;Leave at -1 for default ;Leave at -1 for default
@@ -382,13 +411,14 @@ OverrideArtCacheSize=0
;Set to 2 to block all saving in combat ;Set to 2 to block all saving in combat
SaveInCombatFix=1 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 ;Player's level is capped once the highest specified level is reached
;XPTable=50,100,200 ;XPTable=50,100,200
;Set to 1 to enable additional weapon animation codes from 'o' to 't' ;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 ;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' ;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 AdditionalWeaponAnims=1
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts ;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
@@ -425,11 +455,8 @@ PlayIdleAnimOnReload=0
;Default is 6. Set to 0 for a 12-hour timer ;Default is 6. Set to 0 for a 12-hour timer
CorpseDeleteTime=6 CorpseDeleteTime=6
;Set a number of milliseconds to idle each input loop ;Set to 1 to allow the game to go idle during each input loop, preventing 100% CPU usage
;Set to -1 to disable ProcessorIdle=0
;Set to 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority)
;Set to 1 (or some higher number if needed) to prevent 100% CPU use. The maximum is 50
ProcessorIdle=-1
;Set to 1 if using the hero appearance mod ;Set to 1 if using the hero appearance mod
;Set to 2 for backward compatibility with scripts that manually fix obj_art_fid/art_change_fid_num script functions for dude_obj ;Set to 2 for backward compatibility with scripts that manually fix obj_art_fid/art_change_fid_num script functions for dude_obj
@@ -440,8 +467,8 @@ EnableHeroAppearanceMod=0
;Set to 2 to also skip the splash screen ;Set to 2 to also skip the splash screen
SkipOpeningMovies=0 SkipOpeningMovies=0
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it. ;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. ;Only NPCs with AP left equal to or greater than the value given here will be considered
;Set to 0 to disable ;Set to 0 to disable
NPCsTryToSpendExtraAP=0 NPCsTryToSpendExtraAP=0
@@ -480,7 +507,7 @@ UseScrollingQuestsList=1
;PremadeFIDs=201,203,202 ;PremadeFIDs=201,203,202
;Use this line to modify the list of cities and their associated global variables used for city reputations ;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 ;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 ;Set this to a valid path to save a copy of the console contents
@@ -500,7 +527,6 @@ AutoQuickSavePage=1
;Set to 1 to speed up the HP/AC counter animations ;Set to 1 to speed up the HP/AC counter animations
;Set to 2 to update the HP/AC counters instantly ;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 SpeedInterfaceCounterAnims=0
;These lines allow you to control the karma FRMs displayed on the character screen ;These lines allow you to control the karma FRMs displayed on the character screen
@@ -515,23 +541,23 @@ ScienceOnCritters=0
;Default is 166 (lower - faster; valid range: 0..1000) ;Default is 166 (lower - faster; valid range: 0..1000)
SpeedInventoryPCRotation=166 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 BoxBarCount=5
;Uncomment to set the text colour of the extra interface boxes ;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 ;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 ;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 BonusHtHDamageFix=1
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory ;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
DisplayBonusDamage=0 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 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 RemoveCriticalTimelimits=0
;Change the colour of the font used on the main menu for the Fallout/sfall version string and copyright text ;Change the colour of the font used on the main menu for the Fallout/sfall version string and copyright text
@@ -565,7 +591,7 @@ CritterInvSizeLimitMode=0
CritterInvSizeLimit=200 CritterInvSizeLimit=200
;Some bit flags to alter behaviour of the motion sensor ;Some bit flags to alter behaviour of the motion sensor
;1 - Allow sensor use on automap when motion sensor is in pack rather than hands ;1 - Allow sensor use on automap when the motion sensor is in the pack rather than hands
;2 - Motion sensor doesn't require charges ;2 - Motion sensor doesn't require charges
MotionScannerFlags=1 MotionScannerFlags=1
@@ -584,7 +610,7 @@ DisablePipboyAlarm=0
;MainMenuCreditsOffsetX=0 ;MainMenuCreditsOffsetX=0
;MainMenuCreditsOffsetY=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 SuperStimExploitFix=0
;Change the AP cost for accessing inventory in combat, and the related effect of Quick Pockets perk ;Change the AP cost for accessing inventory in combat, and the related effect of Quick Pockets perk
@@ -617,10 +643,10 @@ ExplosionsEmitLight=0
;MovieTimer_artimer3=270 ;MovieTimer_artimer3=270
;MovieTimer_artimer4=360 ;MovieTimer_artimer4=360
;Set to 1 to add proper check for ammo before attacking and proper calculation of the number of burst rounds ;Set to 1 to add proper checks for ammo before attacking
;By default, weapons can make attacks when at least one ammo is left, regardless of ammo cost calculations ;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 ;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) ;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535)
CombatPanelAnimDelay=1000 CombatPanelAnimDelay=1000
@@ -639,6 +665,10 @@ ReloadReserve=-1
;Set to 1 to change the counter in the 'Move Items' window to start with maximum number, except in the barter screen ;Set to 1 to change the counter in the 'Move Items' window to start with maximum number, except in the barter screen
ItemCounterDefaultMax=0 ItemCounterDefaultMax=0
;Set to 1 to enable money/caps auto-balancing in the barter screen
;When moving money/caps to or from the table, the 'Move Items' window will be pre-filled with the correct balancing amount
ItemCounterAutoCaps=0
;Set to 1 to leave the music playing in dialogue with talking heads ;Set to 1 to leave the music playing in dialogue with talking heads
EnableMusicInDialogue=0 EnableMusicInDialogue=0
@@ -662,7 +692,7 @@ CanSellUsedGeiger=1
;Set to 1 to skip weapon equip/unequip animations when performing various actions ;Set to 1 to skip weapon equip/unequip animations when performing various actions
InstantWeaponEquip=0 InstantWeaponEquip=0
;To add additional game msg files, uncomment the next line and set a comma delimited list of filenames without .msg extension ;To add additional game msg files, uncomment the next line and set a comma-delimited list of filenames without .msg extension
;By default, the files will have consecutive numbers assigned beginning with 0 ;By default, the files will have consecutive numbers assigned beginning with 0
;You can use the syntax 'filename:number' to manually assign numbers to specific msg files, with each pair separated by a comma ;You can use the syntax 'filename:number' to manually assign numbers to specific msg files, with each pair separated by a comma
;If a file after the specified pair does not have a number assigned, it will have the next consecutive number from the last pair ;If a file after the specified pair does not have a number assigned, it will have the next consecutive number from the last pair
@@ -675,16 +705,13 @@ NumbersInDialogue=0
;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map ;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map
WorldMapFontPatch=0 WorldMapFontPatch=0
;Set to 1 to use Fallout's normal text font for death screen subtitles ;Set to 1 to use Fallout's normal text font instead of DOS-like font for death screen subtitles
;Requires changing the color of subtitles in death.pal palette to white color (index 220) to display the text correctly ;Requires changing the color of subtitles in death.pal palette to white color (index 220) to display the text correctly
DeathScreenFontPatch=0 DeathScreenFontPatch=0
;Set to 1 to display full item description for weapon/ammo in the barter screen ;Set to 1 to display full item description for weapon/ammo in the barter screen
FullItemDescInBarter=0 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 ;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
PartyMemberExtraInfo=0 PartyMemberExtraInfo=0
@@ -741,9 +768,9 @@ 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 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) ;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 ;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 AIDrugUsePerfFix=1
;Set to 1 to fix the bug of using First Aid/Doctor skills when using them on the player ;Set to 1 to fix the bug of using First Aid/Doctor skills when using them on the player
;This will cause the party member to perform First Aid/Doctor skills when you use them on the player, but only if ;This will cause the party member to perform First Aid/Doctor skills when you use them on the player, but only if
@@ -809,10 +836,9 @@ DisableSpecialAreas=0
;Paths outside of scripts folder are supported ;Paths outside of scripts folder are supported
GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
;Uncomment the option to specify an additional folder path for ini files used by scripts ;Uncomment the option to specify an additional directory for ini files used by scripts
;The game will search for the ini files relative to this directory ;The game will search for ini files first relative to this directory and then relative to the root directory if not found
;If the file is not found, the search will proceed relative to the root directory of the game ;The path length is limited to 61 characters
;The maximum length of the specified path is 61 characters
;IniConfigFolder=mods\iniConfigs ;IniConfigFolder=mods\iniConfigs
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@@ -838,7 +864,7 @@ AllowUnsafeScripting=0
SkipCompatModeCheck=0 SkipCompatModeCheck=0
;Fallout 2 Debug Patch ;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 ;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 ;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg
;------- ;-------
@@ -854,6 +880,15 @@ SkipCompatModeCheck=0
;------- ;-------
DebugMode=0 DebugMode=0
;Changes the font used for debug output in the internal debug window (DebugMode 1 or 3)
;Set to 1 to use Fallout's normal text font instead of DOS-like font
DebugWindowFont=0
;Changes the width of the internal debug window (valid range: 300..1920; default is 300)
DebugWindowWidth=300
;Changes the height of the internal debug window (valid range: 192..1080; default is 192)
DebugWindowHeight=192
;Set to 1 to hide error messages in debug output when a null value is passed to the function as an object ;Set to 1 to hide error messages in debug output when a null value is passed to the function as an object
HideObjIsNullMsg=0 HideObjIsNullMsg=0
@@ -876,7 +911,7 @@ AlwaysFindScripts=0
Test_ForceFloats=0 Test_ForceFloats=0
;These options control what output is saved in the debug log (sfall-log.txt) ;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 Init=1
;Prints messages relating to hook scripts ;Prints messages relating to hook scripts
Hook=0 Hook=0
@@ -886,3 +921,19 @@ Script=0
Criticals=1 Criticals=1
;Prints messages relating to engine fixes ;Prints messages relating to engine fixes
Fixes=1 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 "../sfall/define_lite.h"
#include "..\headers\command.h" #include "../sfall/define_extra.h"
#include "..\headers\sfall\sfall.h" #include "../sfall/sfall.h"
#include "..\headers\sfall\define_extra.h"
#define DAMAGE_FORMULA_VANILLA (0)
#define DAMAGE_FORMULA_GLOVZ (1)
#define DAMAGE_FORMULA_GLOVZ2 (2)
#define DAMAGE_FORMULA_YAAM (5)
procedure start; procedure start;
procedure compute_damage_F2; procedure combatdamage_handler;
procedure item_w_damage_hook; 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 item_w_subtype(variable weapon, variable hit_mode);
procedure get_ammo_value(variable weapon, variable param); 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 procedure start begin
if game_loaded then begin if game_loaded then begin
register_hook_proc(HOOK_COMBATDAMAGE, compute_damage_F2); damage_formula := get_ini_setting("ddraw.ini|Misc|DamageFormula");
register_hook_proc(HOOK_ITEMDAMAGE, item_w_damage_hook); register_hook_proc(HOOK_COMBATDAMAGE, combatdamage_handler);
register_hook_proc(HOOK_ITEMDAMAGE, itemdamage_handler);
end end
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 dmg_type, weapon_perk, dmg_thresh, dmg_resist, weapon_subtype, bonus_ranged, difficulty, i, dmg_mult, dmg_div, damage;
variable target, flags, knockback, amount; variable target, flags, knockback, amount;
@@ -40,6 +81,11 @@ procedure compute_damage_F2 begin
amountKnockback := get_sfall_arg, amountKnockback := get_sfall_arg,
hit_mode := 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 if (flagsSource bwand DAM_HIT) then begin
target := ctdTarget; target := ctdTarget;
flags := flagsTarget; flags := flagsTarget;
@@ -50,7 +96,6 @@ procedure compute_damage_F2 begin
knockback := 0; knockback := 0;
end end
//amount := 0;
if target and (obj_type(target) == OBJ_TYPE_CRITTER) then begin if target and (obj_type(target) == OBJ_TYPE_CRITTER) then begin
if weapon then begin if weapon then begin
dmg_type := weapon_dmg_type(weapon); dmg_type := weapon_dmg_type(weapon);
@@ -77,7 +122,7 @@ procedure compute_damage_F2 begin
end end
weapon_subtype := item_w_subtype(weapon, hit_mode); // item_w_subtype_ 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; bonus_ranged := 0;
else else
bonus_ranged := has_trait(TRAIT_PERK, ctdSource, PERK_bonus_ranged_damage) * 2; bonus_ranged := has_trait(TRAIT_PERK, ctdSource, PERK_bonus_ranged_damage) * 2;
@@ -90,27 +135,31 @@ procedure compute_damage_F2 begin
difficulty := 125; difficulty := 125;
end end
// F2 default start if (damage_formula == DAMAGE_FORMULA_YAAM) then begin
// Damage = (1 - (DR_armor + DR_ammo_adjust) * (((raw_damage * (dmg_mult * damageMultiplier)) / dmg_div) - dmg_thresh) amount := calc_damage_YAAM(weapon, rounds, dmg_thresh, dmg_resist, bonus_ranged, damageMultiplier, difficulty);
dmg_resist += get_ammo_value(weapon, PROTO_AM_DR_MOD); // item_w_dr_adjust_ (DR Adjust %) end else begin
if (dmg_resist < 100) then begin // F2 default start
if (dmg_resist < 0) then dmg_resist := 0; // 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_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_div := get_ammo_value(weapon, PROTO_AM_DMG_DIV); // item_w_dam_div_ (Dmg mod B)
for (i := 1; i <= rounds; i++) begin for (i := 1; i <= rounds; i++) begin
damage := (item_w_damage + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage) damage := (random(item_damage_min, item_damage_max) + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage)
if dmg_div then damage /= dmg_div; if dmg_div then damage /= dmg_div;
damage := (((damage / 2) * difficulty) / 100) - dmg_thresh; damage := (((damage / 2) * difficulty) / 100) - dmg_thresh;
if (damage > 0) then begin if (damage > 0) then begin
damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo
if (damage > 0) then amount += damage; if (damage > 0) then amount += damage;
end
end end
end end
// F2 default end
end end
// F2 default end
if (ctdSource == dude_obj) then begin 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) 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 end
if (flagsSource bwand DAM_HIT) then begin if (flagsSource bwand DAM_HIT) then begin
display_msg("amountTarget = " + amountTarget+ ", amount = " + amount); display_msg("COMBATDAMAGE amountTarget = " + amountTarget+ ", amount = " + amount);
amountTarget := amount; amountTarget := amount;
flagsTarget := flags; flagsTarget := flags;
end else begin end else begin
display_msg("amountSource = " + amountSource+ ", amount = " + amount); display_msg("COMBATDAMAGE amountSource = " + amountSource+ ", amount = " + amount);
amountSource := amount; amountSource := amount;
flagsSource := flags; flagsSource := flags;
end end
@@ -154,40 +203,118 @@ procedure compute_damage_F2 begin
set_sfall_return(flagsTarget); set_sfall_return(flagsTarget);
set_sfall_return(flagsSource); set_sfall_return(flagsSource);
set_sfall_return(amountKnockback); 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 end
procedure item_w_damage_hook begin procedure calc_damage_YAAM(variable weapon, variable rounds, variable armorDT, variable armorDR, variable bonusRangedDamage, variable multiplyDamage, variable difficulty) begin
variable variable accumulatedDamage, ammoDiv, ammoMult, ammoDT, calcDT, _calcDT, calcDR, i, rawDamage, resistedDamage;
item_w_damage_min := get_sfall_arg, if (rounds <= 0) then begin
item_w_damage_max := get_sfall_arg; return 0;
//weapon := get_sfall_arg, end
//source := get_sfall_arg,
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, //hit_mode := get_sfall_arg,
//isMelee := 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("itemdamage: " + item_damage_min + "-" + item_damage_max);
display_msg("item_w_damage_ = " + item_w_damage);
set_sfall_return(item_w_damage);
end end
procedure item_w_subtype(variable weapon, variable hit_mode) begin procedure item_w_subtype(variable weapon, variable hit_mode) begin
variable attack_mode, type := WEAPON_TYPE_UNARMED; variable attack_mode, type := WEAPON_TYPE_UNARMED;
if weapon and (hit_mode <= ATKTYPE_RWEP2) then begin 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 if (attack_mode >= ATTACK_MODE_SINGLE) then
attack_mode := (attack_mode bwand 0xF0) / 16; // shift 4 bits to the right type := WEAPON_TYPE_RANGED;
else else if (attack_mode == ATTACK_MODE_THROW) then
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
type := WEAPON_TYPE_THROWN; type := WEAPON_TYPE_THROWN;
else if (attack_mode > ATKMODE_PRI_KICK) then else if (attack_mode >= ATTACK_MODE_SWING) then
type := WEAPON_TYPE_MELEE; type := WEAPON_TYPE_MELEE;
else if (attack_mode == ATTACK_MODE_NONE) then
type := WEAPON_TYPE_NONE;
end end
return type; return type;
@@ -0,0 +1,429 @@
/*
This script reimplements the healing skills of the original game.
This version uses a refactored code with no less code duplication, but potentially some minor differences from vanilla.
You can use this to make any tweaks you want to these skills.
*/
#include "../../scripting/headers/define_lite.h"
#include "../../scripting/headers/define_extra.h"
#include "../../scripting/headers/sfall.h"
#include "../../scripting/headers/lib.arrays.h"
#include "../../scripting/headers/lib.math.h"
#define PID_FIRST_AID_KIT (47)
#define PID_DOCTORS_BAG (91)
#define PID_FIELD_MEDIC_KIT (408)
#define PID_PARAMEDICS_BAG (409)
#define DAM_CRIP (DAM_CRIP_ARM_LEFT bwor DAM_CRIP_ARM_RIGHT bwor DAM_CRIP_LEG_LEFT bwor DAM_CRIP_LEG_RIGHT bwor DAM_BLIND)
#define COMBAT_STATE_FLEEING (4)
#define critter_max_hp(cr) get_critter_stat(cr, STAT_max_hit_points)
#define critter_cur_hp(cr) get_critter_stat(cr, STAT_current_hp)
#define critter_has_dmg_flag(cr, flag) ((get_object_data(cr, OBJ_DATA_DAMAGE_FLAGS) bwand flag) != 0)
#define clear_critter_flag(cr, offset, flag) set_object_data(cr, offset, get_object_data(cr, offset) bwand bwnot(flag))
#define clear_critter_dmg_flag(cr, flag) clear_critter_flag(cr, OBJ_DATA_DAMAGE_FLAGS, flag)
#define clear_critter_combat_flag(cr, flag) clear_critter_flag(cr, OBJ_DATA_COMBAT_STATE, flag)
#define SKILLS_MAX_USES_PER_DAY (3)
variable times_skill_used, healable_damage_flags;
procedure skill_use_slot_available(variable skill) begin
variable slot, time, hoursSinceLastUsage, timesUsed;
// Lazy init array
if (not times_skill_used) then
times_skill_used := create_array_map;
if (not times_skill_used[skill]) then
times_skill_used[skill] := create_array_list(SKILLS_MAX_USES_PER_DAY);
timesUsed := times_skill_used[skill];
for (slot := 0; slot < SKILLS_MAX_USES_PER_DAY; slot++) begin
if (timesUsed[slot] == 0) then
return slot;
end
time := game_time;
hoursSinceLastUsage = (time - timesUsed[0]) / ONE_GAME_HOUR;
if (hoursSinceLastUsage <= 24) then begin
return -1;
end
return SKILLS_MAX_USES_PER_DAY - 1;
end
procedure skill_use_slot_add(variable skill) begin
variable i, timesUsed,
slot := skill_use_slot_available(skill);
if (slot == -1) then
return -1;
timesUsed := times_skill_used[skill];
if (timesUsed[slot] != 0) then begin
// Shift all earlier use times to make use for the new time.
for (i := 0; i < slot; i++) begin
timesUsed[i] := timesUsed[i + 1];
end
end
timesUsed[slot] = game_time;
return 0;
end
procedure critter_is_dead(variable critter) begin
if (not critter) then
return false;
if (obj_type(critter) != OBJ_TYPE_CRITTER) then
return false;
if (critter_cur_hp(critter) <= 0) then
return true;
if (is_critter_dead(critter) != 0) then
return true;
return false;
end
procedure critter_body_type(variable critter) begin
if (not critter) then begin
debug_msg("\nError: critter_body_type: pobj was NULL!");
return CR_BODY_BIPED;
end
if (obj_type(critter) != OBJ_TYPE_CRITTER) then
return CR_BODY_BIPED;
return proto_data(obj_pid(critter), cr_body_type);
end
procedure critter_is_crippled(variable critter) begin
if (not critter) then
return false;
if (obj_type(critter) != OBJ_TYPE_CRITTER) then
return false;
return critter_has_dmg_flag(critter, DAM_CRIP);
end
procedure get_skill_xp(variable skill) begin
switch (skill) begin
case SKILL_FIRST_AID: return 25;
// case SKILL_REPAIR: return 0; // no exp for repair skill in vanilla!
case SKILL_DOCTOR: return 50;
default: return 0;
end
end
procedure show_skill_use_messages(variable skill, variable successCount := 1) begin
variable baseExp, xpToAdd, before, after;
if (successCount <= 0) then return;
baseExp = get_skill_xp(skill);
if (baseExp == 0) then return;
xpToAdd = successCount * baseExp;
before = get_pc_stat(PCSTAT_experience);
give_exp_points(xpToAdd);
after = get_pc_stat(PCSTAT_experience);
display_msg(sprintf(mstr_skill(505), after - before));
end
variable sfall_ini_RemoveCriticalTimelimits := -2;
/**
* Exactly like FO2 roll_check function, but without returning "how_much".
* @arg {int} rollMod
* @arg {int} critSuccessMod
*/
procedure roll_check(variable rollMod, variable critSuccessMod) begin
variable
delta := rollMod - random(1, 100),
roll, criticalsAllowed;
if (sfall_ini_RemoveCriticalTimelimits == -2) then
sfall_ini_RemoveCriticalTimelimits := get_ini_setting("ddraw.ini|Misc|RemoveCriticalTimelimits");
criticalsAllowed := (sfall_ini_RemoveCriticalTimelimits > 0) or (game_time >= ONE_GAME_DAY);
if (delta < 0) then begin
return ROLL_CRITICAL_FAILURE
if (criticalsAllowed and random(1, 100) <= -delta / 10)
else ROLL_FAILURE;
end
return ROLL_CRITICAL_SUCCESS
if (criticalsAllowed and random(1, 100) <= delta / 10 + critSuccessMod)
else ROLL_SUCCESS;
end
// 530: damaged eye
// 531: crippled left arm
// 532: crippled right arm
// 533: crippled right leg
// 534: crippled left leg
#define display_uncrippled_msg(dmgFlagIdx, prefixMsgId) display_msg(sprintf(mstr_skill(prefixMsgId), mstr_skill(530 + dmgFlagIdx)))
/**
* A refactored version of skill_use function from the engine, for use with healing skills only. Returns true if skill use was actually attempted.
* @arg {ObjectPtr} user
* @arg {ObjectPtr} target
* @arg {int} skill - First Aid, Doctor or Repair
* @arg {int} skillBonus
*/
procedure use_healing_skill(variable user, variable target, variable skill, variable skillBonus) begin
variable curHp, maxHp, healingAttempts, isRobot, isRepair, isFirstAid;
display_msg(string_format("use_healing_skill: user = %s, target = %s, bonus = %d, skill = %d", obj_name(user), obj_name(target), skillBonus, skill));
isRobot := (critter_body_type(target) == CR_BODY_ROBOTIC);
isRepair := (skill == SKILL_REPAIR);
if (isRepair and not isRobot) then begin
// You cannot repair that.
display_msg(mstr_skill(553));
return false;
end
if (skill_use_slot_available(skill) == -1) then begin
// 590: You've taxed your ability with that skill. Wait a while.
// 591: You're too tired.
// 592: The strain might kill you.
display_msg(mstr_skill(590 + random(0, 2)));
return false;
end
if (critter_is_dead(target)) then begin
// 512: You can't heal the dead.
// 513: Let the dead rest in peace.
// 514: It's dead, get over it.
display_msg(mstr_skill(512 + random(0, 2)));
return false;
end
isFirstAid := (skill == SKILL_FIRST_AID);
curHp := critter_cur_hp(target);
maxHp := critter_max_hp(target);
healingAttempts := 1;
if (curHp < maxHp or (not isFirstAid and critter_is_crippled(target))) then begin
variable skillUseSlotAdded, roll, i, prefixMsg,
critChance := get_critter_stat(user, STAT_crit_chance) + skillBonus;
fade_out;
// Heal crippled limbs.
if (not isFirstAid and (not isRepair or not isRobot) and critter_is_crippled(target)) then begin
// Lazy init healable flags
if (not healable_damage_flags) then
healable_damage_flags := array_fixed([
DAM_BLIND,
DAM_CRIP_ARM_LEFT,
DAM_CRIP_ARM_RIGHT,
DAM_CRIP_LEG_RIGHT,
DAM_CRIP_LEG_LEFT
]);
for (i := 0; i < len_array(healable_damage_flags); i++) begin
if (not critter_has_dmg_flag(target, healable_damage_flags[i])) then
continue;
healingAttempts += 1;
roll := roll_vs_skill(user, skill, critChance);
if (roll == ROLL_SUCCESS or roll == ROLL_CRITICAL_SUCCESS) then begin
clear_critter_dmg_flag(target, healable_damage_flags[i]);
clear_critter_combat_flag(target, COMBAT_STATE_FLEEING);
// 520: You heal your %s.
// 521: You heal the %s.
display_uncrippled_msg(i, 520 if (target == dude_obj) else 521);
call skill_use_slot_add(skill);
skillUseSlotAdded := true;
if (user == dude_obj) then
call show_skill_use_messages(skill);
end else begin
// 525: You fail to heal your %s.
// 526: You fail to heal the %s.
display_uncrippled_msg(i, 525 if (target == dude_obj) else 526);
end
end
end
// Restore hit points.
roll := (roll_vs_skill(user, skill, critChance) if isFirstAid else roll_check(has_skill(user, skill), critChance))
if (isRepair or not isRobot)
else ROLL_FAILURE;
if (roll == ROLL_SUCCESS or roll == ROLL_CRITICAL_SUCCESS) then begin
variable
minHpToHeal := (1 if isFirstAid else 4),
maxHpToHeal := (5 if isFirstAid else 10),
hpToHeal;
if (user == dude_obj and not isRepair) then begin
variable healerRank := has_trait(TRAIT_PERK, user, PERK_healer);
minHpToHeal += 4 * healerRank;
maxHpToHeal += 10 * healerRank;
end
hpToHeal = random(minHpToHeal, maxHpToHeal);
critter_heal(target, hpToHeal);
if (user == dude_obj) then begin
// You heal %d hit points.
display_msg(sprintf(mstr_skill(500), math_min(maxHp - curHp, hpToHeal)));
end
if (not skillUseSlotAdded) then
call skill_use_slot_add(skill);
clear_critter_combat_flag(target, COMBAT_STATE_FLEEING);
if (user == dude_obj) then
call show_skill_use_messages(skill);
end else begin
// You fail to do any healing.
display_msg(sprintf(mstr_skill(503), how_much(0)));
end
fade_in;
end else if (user == dude_obj) then begin
// 501: You look healty already
// 502: %s looks healthy already
display_msg(mstr_skill(501)
if (target == dude_obj)
else sprintf(mstr_skill(502), obj_name(target)));
end
if (user == dude_obj) then begin
game_time_advance((ONE_GAME_HOUR if (skill == SKILL_DOCTOR) else (30 * ONE_GAME_MINUTE)) * healingAttempts);
end
// TODO: not sure if this is needed
//exec_map_update_scripts
return true;
end
/**
* A partial copy of engine's protinst_use_item_on with code pertinent to healing skills. Returns value for set_sfall_return in useobjon_hook.
* @arg {ObjectPtr} user - item user
* @arg {ObjectPtr} target - target
* @arg {ObjectPtr} item - item
* @ret {bool}
*/
procedure protinst_use_item_on(variable user, variable target, variable item) begin
variable begin
messageId := -1;
skillBonus := 0;
skill := -1;
end
switch (obj_pid(item)) begin
case PID_DOCTORS_BAG: begin
// The supplies in the Doctor's Bag run out.
messageId = 900;
skillBonus = 20;
skill = SKILL_DOCTOR;
end
case PID_FIRST_AID_KIT: begin
// The supplies in the First Aid Kit run out.
messageId = 901;
skillBonus = 20;
skill = SKILL_FIRST_AID;
end
case PID_PARAMEDICS_BAG: begin
// The supplies in the Paramedic's Bag run out.
messageId = 910;
skillBonus = 40;
skill = SKILL_DOCTOR;
end
case PID_FIELD_MEDIC_KIT: begin
// The supplies in the Field Medic First Aid Kit run out.
messageId = 911;
skillBonus = 40;
skill = SKILL_FIRST_AID;
end
end
if (skill == -1) then
return -1;
if (combat_is_initialized) then begin
// You cannot do that in combat.
if (user == dude_obj) then
display_msg(mstr_proto(902));
return 0;
end
if (not use_healing_skill(user, target, skill, skillBonus)) then
return 0;
if (random(1, 10) != 1) then
return 0;
if (user == dude_obj) then
display_msg(mstr_proto(messageId));
return 1;
end
/*
Runs when:
a critter uses an object on another critter. (Or themselves)
a critter uses an object from inventory screen AND this object does not have "Use" action flag set and it's not active flare or explosive.
player or AI uses any drug
This is fired before the object is used, and the relevant use_obj_on script procedures are run. You can disable default item behavior.
NOTE: You can't remove and/or destroy this object during the hookscript (game will crash otherwise). To remove it, return 1.
Critter arg0 - The target
Critter arg1 - The user
int arg2 - The object used
int ret0 - overrides hard-coded handler and selects what should happen with the item (0 - place it back, 1 - remove it, -1 - use engine handler)
*/
procedure useobjon_hook begin
variable
target := get_sfall_arg,
user := get_sfall_arg,
item := get_sfall_arg,
useItemResult;
useItemResult := protinst_use_item_on(user, target, item);
if (useItemResult != -1) then
set_sfall_return(useItemResult);
end
/*
Runs when using any skill on any object.
This is fired before the default handlers are called, which you can override. In this case you should write your own skill use handler entirely, or otherwise nothing will happen (this includes fade in/fade out, time lapsing and messages - all of this can be scripted; to get vanilla text messages - use message_str_game along with sprintf). Suggested use - override First Aid/Doctor skills to buff/nerf them, override Steal skill to disallow observing NPCs inventories in some cases.
Does not run if the script of the object calls script_overrides for using the skill.
Critter arg0 - The user critter
Obj arg1 - The target object
int arg2 - skill being used
int arg3 - skill bonus from items such as first aid kits
int ret0 - overrides hard-coded handler (-1 - use engine handler, any other value - override; if it is 0, there will be a 10% chance of removing the used medical item)
*/
procedure useskill_hook begin
variable
user := get_sfall_arg,
target := get_sfall_arg,
skill := get_sfall_arg,
skillBonus := get_sfall_arg,
isSuccess;
if (skill == SKILL_FIRST_AID or skill == SKILL_DOCTOR or skill == SKILL_REPAIR) then begin
isSuccess := use_healing_skill(user, target, skill, skillBonus);
set_sfall_return(0 if isSuccess else 1);
end
end
procedure start begin
if (game_loaded) then begin
register_hook_proc(HOOK_USEOBJON, useobjon_hook);
register_hook_proc(HOOK_USESKILL, useskill_hook);
end
end
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.

Some files were not shown because too many files have changed in this diff Show More