Compare commits

...
309 Commits
Author SHA1 Message Date
NovaRain 63606b96d7 Updated version number and changelog
Minor code edits to BugFixes.cpp.
2026-06-03 19:17:48 +08:00
NovaRain d6946c8b65 Re-added NumberPatchLoop option to ddraw.ini 2026-06-01 13:29:39 +08:00
NovaRain 96eab6efff Tweaked obj distance check in action_* engine functions
* use path length instead of tile distance to determine whether to walk
or run to interact with objects.

(ref. fallout2-ce/fallout2-ce#248)
2026-05-31 21:13:26 +08:00
NovaRain e277bbbe9a Reordered functions in MiscPatches.cpp & Worldmap.cpp
* grouping patch functions and their ASM hacks together for easier
checking.
2026-05-29 22:38:06 +08:00
NovaRain 1f18d06f9b Reduced the number of trailing NOPs for MakeCall/Jump
* when the trailing length is longer than 4 bytes, it will use a mix of
5-byte long NOPs and single-byte NOPs.
2026-05-29 09:18:23 +08:00
NovaRain 9f0a3e43de Fixed typo in sound debug output 2026-05-28 13:15:23 +08:00
NovaRain 1e1eeda287 Corrected the object ID range for party members 2026-05-27 09:52:31 +08:00
NovaRain 17383dbd64 Fixed set_unique_id script function
* it unassigned unique ID even when the object doesn't have one.
* it didn't sync the attached script's owner id after unassignment.

Added a safeguard to prevent item_identical function returning false
when comparing a unique_id item to itself.

(ref. fallout2-ce/fallout2-ce#466)
2026-05-25 14:42:38 +08:00
NovaRain d74ec5f4fa Removed ExtraSaveSlots from ddraw.ini (always enabled)
Changed the maximum number of save slots to 1000 (10k was overkill).
2026-05-23 00:12:57 +08:00
NovaRainandGitHub 45b1cce949 Merge pull request #626 from sfall-team/dependabot/bundler/docs/faraday-2.14.2
Bump faraday from 2.14.1 to 2.14.2 in /docs
2026-05-19 00:12:03 +08:00
dependabot[bot]andGitHub 5ffa2e1f79 Bump faraday from 2.14.1 to 2.14.2 in /docs
Bumps [faraday](https://github.com/lostisland/faraday) from 2.14.1 to 2.14.2.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.14.1...v2.14.2)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 15:11:58 +00:00
NovaRain d9ee190435 Added a new value to InstantWeaponEquip
Tweaked the animation sequence when interacting with scenery or using
an item on an object.
2026-05-18 14:02:10 +08:00
NovaRain b4495f01e9 Changed the character portrait on the char screen
* now it's always in ANIM_stand instead of current action frame.
2026-05-17 16:57:30 +08:00
NovaRain d8ae063298 Fixed the morning start time while traveling on the world map
* it starts at 6:01 instead of 6:00, inconsistent with afternoon (12:00)
and night (18:00).

Fixed potential index out of bounds error in wmMapIdxToName_.

(ref. fallout2-ce/fallout2-ce#453)
2026-05-13 10:05:46 +08:00
NovaRain 9b92adfa51 Disallowed negative cost for set/get_inven_ap_cost 2026-05-11 13:34:18 +08:00
NovaRainandGitHub 67c6ee6245 Merge pull request #625 from sfall-team/dependabot/bundler/docs/nokogiri-1.19.3
Bump nokogiri from 1.19.1 to 1.19.3 in /docs
2026-05-09 00:14:55 +08:00
dependabot[bot]andGitHub 55e61c54d2 Bump nokogiri from 1.19.1 to 1.19.3 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.19.1 to 1.19.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.19.1...v1.19.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-08 16:11:57 +00:00
NovaRain 06c5779475 Code edits to ApplyInvenApCostPatch 2026-05-08 14:40:42 +08:00
NovaRain 53a2a11521 Tweaked the position of item counter/timer window
* now they are centered in the game view (CE style) except when in
dialog screen with DIALOG_SCRN_BACKGROUND=0.
2026-05-06 21:18:53 +08:00
NovaRain c3dae6db57 Increased decompression buffer size to 4KB
(ref. fallout2-ce/fallout2-ce#439)
2026-05-05 21:11:12 +08:00
NovaRain 86e1425044 Added a tweak to center inventory windows when not using HRP
Shorten inventory window enum names.
2026-05-04 11:02:44 +08:00
NovaRain b54b86b33c Cosmetic edits: remove unnecessary size directives
* verified the compiled binary is still the same.
2026-05-03 09:31:51 +08:00
NovaRain f4eaaccc57 Added a file size check for scripts
* this is for filtering out some clearly defective (or not even valid)
scripts.
2026-04-24 21:37:46 +08:00
NovaRain fb47779d4c Fixed set/remove_script script functions
* they didn't set the script index number on non-critter objects.

Changed objects_in_radius to accept a radius of 0.

Edits to scripting documents.
2026-04-23 22:24:37 +08:00
NovaRain 91cc37dc17 Fixed HOOK_REMOVEINVENOBJ not being triggered
* when using drug/misc item from active item slots (closes #623)
2026-04-21 21:25:53 +08:00
NovaRain 9c6d7bfdd2 Moved HP/flag setting earlier in critter_kill_ engine function
(mainly for HOOK_ONDEATH, ref. fallout2-ce/fallout2-ce#384)
2026-04-20 09:52:01 +08:00
NovaRain 3b836fdf73 Replaced serial single-byte NOPs with long NOPs
(the sequence is 5-byte long NOPs with trailing single-byte NOPs)
2026-04-19 20:38:10 +08:00
NovaRain e3a133e3aa Fixed ONDEATH hook being incorrectly triggered by non-critter objects
(when calling kill_critter on a non-critter obj)
2026-04-17 23:05:56 +08:00
NovaRain 81e612f383 Added object type validation to item_weight metarule
Fixed set_critter_current_ap and set_combat_free_move to update
player's AP lights only in combat

Edits to scripting documents.

(ref. fallout2-ce/fallout2-ce#380)
2026-04-17 11:54:35 +08:00
NovaRain 490934bb3c Fixed AP cost display on game load when using CALCAPCOST hook
(ref. fallout2-ce/fallout2-ce#376)
2026-04-16 10:29:46 +08:00
NovaRain 68d721773e Simplified the code in commit db4f0cb8 2026-04-14 21:59:10 +08:00
NovaRain 31df2d5c98 Added #pragma sce to all scripts that require -s option 2026-04-14 11:27:22 +08:00
NovaRain db4f0cb8d5 Fixed garbled colors when SkipOpeningMovies=1
(ref. fallout2-ce/fallout2-ce#372)
2026-04-14 11:03:39 +08:00
NovaRain 67c74888b4 Fixed a visual glitch on the char screen when selecting gain xxx perks
(ref. fallout2-ce/fallout2-ce#367)
2026-04-11 21:33:33 +08:00
NovaRain 1ee135611d Increased the maximum party member level from 6 to 10 (closes #621)
Updated scripting documents.

* the game reserves 10 level-up messages for each party member. More
level-ups require either more hacks or renumbering all level-up messages
in misc.msg. Otherwise, one will start using others' lines (e.g. Sulik
says Lenny's lines after lv10).
2026-04-11 00:01:25 +08:00
NovaRain bfbdea7e83 Removed GlobalScriptPaths option
* storing global scripts across multiple paths is almost never needed,
and no publicly available mod really uses the option. If one doesn't
want to put their global scripts in the main folder, they can always
package the scripts in a mod dat file/folder instead.
2026-04-10 08:54:46 +08:00
NovaRainandGitHub 802a49b627 Merge pull request #620 from sfall-team/dependabot/bundler/docs/addressable-2.9.0
Bump addressable from 2.8.9 to 2.9.0 in /docs
2026-04-08 18:17:27 +08:00
dependabot[bot]andGitHub d619c01d81 Bump addressable from 2.8.9 to 2.9.0 in /docs
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.8.9 to 2.9.0.
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.8.9...addressable-2.9.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-version: 2.9.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-08 09:45:13 +00:00
NovaRain a273969756 Fixed crash when calling proto_data with invalid data member
(ref. BGforgeNet/Fallout2_Restoration_Project#381)
2026-04-05 08:29:20 +08:00
NovaRain a14f3d14a3 Updated resource files for the previous commit 2026-04-02 13:39:59 +08:00
NovaRain cc61526f69 Removed AllowLargeTiles option
* Originally, its goal was to bypass the tile FRM limit and save
people's time from splitting tiles. But no one has really used this
option since sfall 2.0 (no bug reports about being broken for many
years). And boosting the limit to 16383 should practically solve the
first goal.

* In the end the option doesn't really do what its name suggests and is
completely unused. Its tile auto-splitting function is also not very
practical.
2026-04-02 11:47:12 +08:00
NovaRain 5c4b1ffea1 Updated nokogiri version in Gemfile.lock 2026-04-01 22:31:35 +08:00
NovaRain 4e9eb06988 Try updating some components in Gemfile 2026-04-01 22:27:49 +08:00
NovaRain 7cd30956a7 Edited the description of inc_npc_level in scripting docs
Cosmetic edits: removed trailing spaces in some source files.
2026-04-01 22:24:53 +08:00
NovaRain c28d8c0d2b Deprecated two-argument form of add_extra_msg_file
Edits to scripting documents.
2026-03-26 12:09:32 +08:00
NovaRain 7b3f69f496 Fixed glitched map when the encounter table has no available entries
(ref. fallout2-ce/fallout2-ce#313)

Updated sslc document.
2026-03-20 11:18:45 +08:00
NovaRainandGitHub 6d6d6a40f9 Merge pull request #619 from sfall-team/dependabot/bundler/docs/json-2.19.2
Bump json from 2.18.1 to 2.19.2 in /docs
2026-03-19 20:53:07 +08:00
dependabot[bot]andGitHub 5e8c376ecf Bump json from 2.18.1 to 2.19.2 in /docs
Bumps [json](https://github.com/ruby/json) from 2.18.1 to 2.19.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](https://github.com/ruby/json/compare/v2.18.1...v2.19.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.19.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 12:51:56 +00:00
Vlad KandGitHub 90e18faefc Merge pull request #617 from sfall-team/feature/nested-array-expressions
Support for nested array expressions (#616)
2026-03-15 13:47:33 +01:00
phobos2077 9cdbc01728 Add script procs for creating permanent arrays from nested expressions, add arrays testcase script, fix load_array not accepting float as array key 2026-03-15 13:41:38 +01:00
phobos2077 168687c9ee Support for nested expressions (#616)
- Doesn't require any new opcode
- temp_array is repurposed as sub-expression terminator
- Accompanied by sslc update
- Backwards compatible with old scripts using single-layer expressions
2026-03-15 12:47:12 +01:00
NovaRain 41fd1e3495 Fixed +/- not updating brightness slider when used on the Pref screen
(ref. fallout2-ce/fallout2-ce#298)
2026-03-15 07:55:23 +08:00
NovaRain a8490f1913 Changed the timing of setting OPTIONS game mode flag
* now it is toggled when creating/deleting the Preferences window.
2026-03-14 20:20:33 +08:00
NovaRain f5bc53d780 Fixed the root cause of crash in PrepareGlobalScriptsListByMask
* Calling convention violation - v141_xp uses ebx to store reference,
but db_get_file_list does not preserve it.
* v140_xp uses esi instead, which is preserved by the engine function.
* Reverted some code changes in ScriptExtender.cpp.
2026-03-12 21:32:04 +08:00
NovaRainandGitHub 2db7492648 Merge pull request #618 from sfall-team/dependabot/github_actions/actions/upload-artifact-7
Bump actions/upload-artifact from 6 to 7
2026-03-01 09:37:10 +08:00
dependabot[bot]andGitHub bf4b50d549 Bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 01:14:17 +00:00
phobos2077 fe24221456 Cleanup debugging leftovers 2026-02-28 15:58:57 +01:00
phobos2077 b58c26a401 Fixed crash in PrepareGlobalScriptsListByMask in ReleaseXP build when using v141_xp toolset
- Passing a raw pointer to fileMask's char array to db_get_file_list seemed to be the main cause
- I've also replaced the use of _strlwr with ToLowerCase on the string copy, to avoiding editing strings returned from engine function in-place
- Clarified the constness of file list variable used by db_*_file_list for the same reason
2026-02-28 15:54:28 +01:00
NovaRain 38e1eaef64 Updated version number and changelog 2026-02-25 22:04:49 +08:00
NovaRain f408534ce4 Cosmetic edits: renamed some return addr variables in hacks 2026-02-25 21:16:06 +08:00
NovaRain e9c73e6dd3 Updated web document for set_pipboy_available script function 2026-02-24 08:34:20 +08:00
NovaRain bac9e630f9 Added a safeguard to the death animation fix on combat start 2026-02-23 15:23:23 +08:00
NovaRainandGitHub d5c79deb12 Merge pull request #614 from sfall-team/dependabot/bundler/docs/nokogiri-1.19.1
Bump nokogiri from 1.18.9 to 1.19.1 in /docs
2026-02-20 08:51:14 +08:00
dependabot[bot]andGitHub adfc8d851b Bump nokogiri from 1.18.9 to 1.19.1 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.9 to 1.19.1.
- [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.9...v1.19.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-20 00:14:16 +00:00
NovaRain 1e950f5172 Updated version number and changelog 2026-02-11 22:07:01 +08:00
NovaRain b7c34813bf Removed unnecessary/unused return value in critter_mod_skill function 2026-02-11 22:05:58 +08:00
NovaRainandGitHub 49a536894a Merge pull request #611 from sfall-team/dependabot/bundler/docs/faraday-2.14.1
Bump faraday from 2.10.0 to 2.14.1 in /docs
2026-02-10 06:22:44 +08:00
dependabot[bot]andGitHub b7aefb3040 Bump faraday from 2.10.0 to 2.14.1 in /docs
Bumps [faraday](https://github.com/lostisland/faraday) from 2.10.0 to 2.14.1.
- [Release notes](https://github.com/lostisland/faraday/releases)
- [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lostisland/faraday/compare/v2.10.0...v2.14.1)

---
updated-dependencies:
- dependency-name: faraday
  dependency-version: 2.14.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-09 22:08:17 +00:00
NovaRain 29b6d4ba10 Removed misleading parens from functions without args in documents 2026-01-27 16:37:08 +08:00
NovaRainandGitHub 36df793c46 Merge pull request #609 from BGforgeNet/dev/fix-detail-parens
Docs: remove misleading parens from functions without args, they should not be present
2026-01-27 15:16:51 +08:00
Magus cb24364319 Docs: remove misleading parens from functions without args, they should not be present. 2026-01-27 14:06:20 +07:00
NovaRain 84d8d80d30 Code edits to SingleCore to make it run safer
Changed SingleCore to be disabled by default.
(its usage is questionable on newer systems.)
2026-01-16 10:10:07 +08:00
NovaRain b3c5fad981 Code edits to ProcessorIdle
* use proper QS_ALLINPUT as it includes QS_RAWINPUT for WinXP+.
* set the option enabled by default.
2026-01-15 09:20:17 +08:00
NovaRain 7e74abf78f Added settings about the mirrored shades to tweaks.ini
Updated the description of Fallout1Behavior.
2026-01-13 14:23:02 +08:00
NovaRain ed1f926d36 Expanded the functionality of Fallout1Behavior
* FO1 initial in-game time is 7:21 rather than 8:24.
2026-01-10 20:34:54 +08:00
NovaRain 5ac1b23bc6 Updated expanded UI FRMs and resource files 2026-01-09 20:09:55 +08:00
NovaRain 19d0f5c16a Fixed edge-scrolling speed in the world map
* commit a3383fd only fixed when in normal game maps.
2026-01-04 12:36:23 +08:00
NovaRain c44fe84cc4 Re-ordered Unarmed module init
* to prevent a specific display issue in the inventory (#603)
2026-01-03 20:40:50 +08:00
NovaRain a3383fdf7f Fixed edge-scrolling speed when using the speed tweak
(closes #523)
2026-01-01 20:22:13 +08:00
NovaRain 2ed856deaf Cosmetic edits: updated year 2026-01-01 20:16:39 +08:00
NovaRainandGitHub 983b7721a8 Merge pull request #605 from sfall-team/dependabot/github_actions/actions/upload-artifact-6
Bump actions/upload-artifact from 5 to 6
2026-01-01 09:58:54 +08:00
dependabot[bot]andGitHub 54dea0b963 Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 01:01:28 +00:00
NovaRainandGitHub df0b3d26b1 Merge pull request #604 from sfall-team/dependabot/bundler/docs/uri-0.13.3
Bump uri from 0.13.2 to 0.13.3 in /docs
2025-12-31 05:58:33 +08:00
dependabot[bot]andGitHub 0755dbe05d Bump uri from 0.13.2 to 0.13.3 in /docs
Bumps [uri](https://github.com/ruby/uri) from 0.13.2 to 0.13.3.
- [Release notes](https://github.com/ruby/uri/releases)
- [Commits](https://github.com/ruby/uri/compare/v0.13.2...v0.13.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-30 21:12:02 +00:00
NovaRain 3a3dd2f5f5 Added a safeguard to the single-frame death anims tweak
Updated version number.
2025-12-05 16:47:07 +08:00
NovaRainandGitHub 7fb3ffb69f Merge pull request #601 from sfall-team/dependabot/github_actions/actions/checkout-6
Bump actions/checkout from 5 to 6
2025-12-01 09:58:53 +08:00
dependabot[bot]andGitHub 046947d21c Bump actions/checkout from 5 to 6
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
- [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/v5...v6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-01 01:17:03 +00:00
NovaRain c794acdc24 Tweaked interface bar FRM
* to better sync with HRP's 800px one.

Updated resource files.
2025-11-12 22:48:42 +08:00
NovaRainandGitHub a09ce9553a Merge pull request #600 from sfall-team/dependabot/github_actions/actions/upload-artifact-5
Bump actions/upload-artifact from 4 to 5
2025-11-01 09:44:19 +08:00
dependabot[bot]andGitHub 8e869c7dba Bump actions/upload-artifact from 4 to 5
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 01:01:15 +00:00
NovaRain eddea58cf0 Updated expanded barter/trade UI for Chinese
Updated Chinese resource file.
2025-10-28 08:34:07 +08:00
NovaRain 961b52d8e3 Fixed glitched pixels in expanded barter/trade UI for Russian
Updated Russian resource file.
2025-10-27 14:57:08 +08:00
NovaRain ff7bddf32f Edited the description of some legacy options to make them explicitly clear 2025-10-23 08:55:45 +08:00
NovaRain 0ad8b5484e Updated version number and changelog
Edits to sfall opcode list.
2025-10-09 19:24:45 +08:00
NovaRain e6f4ae3c6c [HRP] Fixed splash screen display when packed in an uncompressed .dat 2025-10-05 11:09:47 +08:00
NovaRainandGitHub 8691540d5f Merge pull request #599 from sfall-team/dependabot/github_actions/actions/setup-python-6
Bump actions/setup-python from 5 to 6
2025-10-01 09:37:46 +08:00
dependabot[bot]andGitHub 2f3ca9ffb8 Bump actions/setup-python from 5 to 6
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5...v6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-01 01:01:32 +00:00
NovaRain 10671ddf46 [HRP] Fixed a crash and a visual glitch in the interface bar
* when the game width is greater than side panel graphics + iface bar.
(closes #598)
2025-09-28 10:08:11 +08:00
NovaRainandGitHub 4313df2e30 Merge pull request #597 from sfall-team/dependabot/bundler/docs/rexml-3.4.2
Bump rexml from 3.3.9 to 3.4.2 in /docs
2025-09-18 06:12:40 +08:00
dependabot[bot]andGitHub e065066ad0 Bump rexml from 3.3.9 to 3.4.2 in /docs
Bumps [rexml](https://github.com/ruby/rexml) from 3.3.9 to 3.4.2.
- [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.9...v3.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-17 18:42:52 +00:00
NovaRain e7f6f6fd73 Try to fix gh-pages workflow
Increased the retention period for GHA artifacts
2025-09-17 21:03:20 +08:00
NovaRain 08b3942670 Updated Russian translation file 2025-09-17 20:51:06 +08:00
NovaRain 90dfe16b22 Added support for switching the keyboard layout
(from Crafty, closes #590)

Minor edits to some documents and LoadOrder.cpp.
2025-09-17 20:47:04 +08:00
NovaRain a0967aa12a Fixed the upper limit when applying mouse sensitivity 2025-09-11 22:11:37 +08:00
NovaRainandGitHub 7f7a159fc1 Merge pull request #594 from sfall-team/dependabot/github_actions/actions/checkout-5
Bump actions/checkout from 4 to 5
2025-09-01 10:02:35 +08:00
dependabot[bot]andGitHub 20ee349869 Bump actions/checkout from 4 to 5
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [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/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-01 01:49:02 +00:00
NovaRain 3a7b77404c Added an option to disable Arroyo-related events
Minor fix to DisableSpecialMapIDs (as ID 0 is still a valid map).
Edited some descriptions in ddraw.ini.
2025-08-29 13:23:24 +08:00
NovaRain 4516bf7935 Added splash screen fallback to Mash's HRP (4.1.8 only)
Condensed some code in HRP\init.cpp.
2025-08-28 09:07:16 +08:00
NovaRain 82567d1b9c Code fixes/edits to the previous commit
* nonEngLang didn't get set when using Mash's HRP.
2025-08-27 10:29:45 +08:00
NovaRain abdfd94806 Added default path fallback for splash screens
* before the game loaded splash screens only from art\<language>\splash\
if the game language is not English, ignoring the default art\splash\.

Added a global boolean to replace individual game language checks.
2025-08-25 12:10:44 +08:00
NovaRain a7850bd54a Fixed file seeking in uncompressed .dat files
(ref. fallout2-ce/fallout2-ce#244)
2025-08-24 09:44:52 +08:00
NovaRain 9996b60aae Fixed crash in an encounter between two groups
* when they are set to fight each other but one group fails to spawn.
(ref. BGforgeNet/Fallout2_Restoration_Project#350)

Updated version number.
2025-08-17 15:10:17 +08:00
NovaRain 1fb58e3aa4 Updated version number and changelog 2025-07-26 19:03:22 +08:00
NovaRain 54bd7149fa Bump nokogiri from 1.18.8 to 1.18.9 in /docs 2025-07-22 13:08:40 +08:00
NovaRain 2c0a1e1e99 Updated sslc readme
Recompiled gl_npcarmor due to sslc fixes.
2025-07-14 10:21:50 +08:00
NovaRain d839bd697d Updated GitHub Actions setup
- Switch to Windows 2022 runner
- Install v140 toolset via Chocolatey (for some reasons trying to add
related components to VS2022 would hang the workflow.)
2025-07-07 11:12:31 +08:00
NovaRain 13c3ac8db5 Removed unnecessary code in SingleCore option
* GetCurrentProcess returns a pseudo handle, with which calling the
CloseHandle function has no effect.
2025-07-05 19:31:16 +08:00
NovaRain 03af7b193d Updated readme about using VS build tools 2025-06-25 10:29:17 +08:00
NovaRain 0e2317fd4c Fixed slightly misaligned buttons in the barter screen
(ref. fallout2-ce/fallout2-ce#204)
2025-06-11 21:42:56 +08:00
NovaRain 71ecec3d40 Updated use.frm/use_e.frm
(use invbox.frm as the base instead of loot.frm)
2025-06-02 10:01:04 +08:00
NovaRain 930d1e8a03 Improved the error handling for missing main .dat files
(ref. fallout2-ce/fallout2-ce#172)
2025-05-31 08:52:33 +08:00
NovaRain 3a9dcc1945 Fixed slightly misaligned buttons in the character screen
(ref. fallout2-ce/fallout2-ce#154)
2025-05-26 21:44:28 +08:00
NovaRain 089a1831f1 Fixed slightly misaligned buttons in the pipboy
(ref. fallout2-ce/fallout2-ce#147)
2025-05-24 08:05:00 +08:00
NovaRain 2f7d8a6db9 Removed glass glare from use.frm/use_e.frm
* Now they look the same as all other interfaces that have the inventory
list and character portrait (ref. fallout2-ce/fallout2-ce#148)

Updated resource files.
2025-05-24 00:25:02 +08:00
NovaRain b65024f039 Added lowercase 'a' as a hotkey for the 'Take All' button
(previously only uppercase 'A')
2025-05-22 08:43:22 +08:00
NovaRain da47ee5134 Improved the clearing of floating text messages after map change
(ref. fallout2-ce/fallout2-ce#115)
2025-05-13 22:00:54 +08:00
NovaRain 17afecf5ca Added a safeguard to stat_level engine function
(ref. fallout2-ce/fallout2-ce#76)

Unified the naming style of return addr variables for some ASM code.
2025-05-11 12:07:10 +08:00
NovaRain 74dca891a1 Minor code edits to Stats.cpp 2025-05-11 09:32:16 +08:00
NovaRain aa3ac70949 Fixed potential undefined behavior in FullItemDescInBarter
* due to obj_examine_func_hack_objdesc, item description is coped to
messageBuffer already (max 354 chars), so in most cases desc is the same
as messageBuffer, which should be UB to strncpy_s. MSVC's implementation
seems treating self-copy as no-op, but we shouldn't rely on this
behavior.
2025-05-04 08:53:48 +08:00
NovaRain 8622917e12 Fixed duplicate sound in the "Move Items" and "Set Timer" windows
* happens when clicking the "Done" button.

Fixed crash when a critter with a powered melee/unarmed weapon runs out
of ammo and there is ammo nearby.

Minor code optimization to Interface.cpp, use spare ecx register instead
of the stack for eax value.
2025-05-03 21:38:33 +08:00
NovaRain b2ccf26bd5 Improved the previous commit
* now the buttons have proper press/release sfx.
2025-05-02 21:23:55 +08:00
NovaRain 3b33131280 Added missing click sound to the buttons in the combat control panel
Updated version number.
2025-04-29 10:19:27 +08:00
NovaRainandGitHub b1ab93c8c0 Merge pull request #592 from sfall-team/dependabot/bundler/docs/nokogiri-1.18.8
Bump nokogiri from 1.18.4 to 1.18.8 in /docs
2025-04-22 12:51:52 +08:00
dependabot[bot]andGitHub 656a8e2e39 Bump nokogiri from 1.18.4 to 1.18.8 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.4 to 1.18.8.
- [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.4...v1.18.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 04:50:37 +00:00
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
402 changed files with 8187 additions and 4532 deletions
+17 -7
View File
@@ -10,15 +10,23 @@ on:
- '.github/workflows/build.yml'
- 'action.yml'
- 'sfall/**'
pull_request:
branches:
- 'master'
- 'develop'
paths:
- '.github/workflows/build.yml'
- 'action.yml'
- 'sfall/**'
jobs:
Build:
name: sfall
runs-on: windows-2019
runs-on: windows-2022
steps:
- name: Clone sfall
uses: actions/checkout@v4
uses: actions/checkout@v6
# Action is used twice for self-testing only
# DevXP build results are intentionally *not* included in artifact
@@ -28,25 +36,27 @@ jobs:
uses: ./
with:
release-xp: true
dev-xp: false
- name: DevXP build
uses: ./
with:
dev-xp: true
release-xp: false
dev-xp: true
- name: Prepare artifact
- name: Prepare artifacts
run: |
:
mkdir -p 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
shell: bash
- name: Upload artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: sfall-build
path: sfall-build
retention-days: 14
retention-days: 30
+5 -5
View File
@@ -7,26 +7,26 @@ on:
jobs:
deploy:
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Install dependencies
run: |
sudo apt -y -qq install bundler python3-pip
sudo apt update && sudo apt -y -qq install bundler python3-pip
pip3 install ruamel.yaml --user
- name: Build
run: ./docs/generate.sh
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_site
+170 -25
View File
@@ -1,5 +1,150 @@
# Changelog
## 4.5
* Fixed garbled colors during the fade to the main menu on startup when **SkipOpeningMovies** is enabled
* Fixed the AP cost display not updating on game load when using `HOOK_CALCAPCOST` hook script
* Fixed `load_array` script function not accepting floats as array keys
* Fixed a crash when calling `proto_data` with an invalid data member value
* Fixed `set_critter_current_ap` and `set_combat_free_move` script functions to update the player's AP lights only in combat
* Fixed `set/remove_script` script functions not setting the script index number on an object properly
* Fixed `set_unique_id` script function to prevent it from reassigning an object ID when unnecessary
* Fixed `ONDEATH` hook to prevent it from being triggered by non-critter objects
* Fixed `REMOVEINVENOBJ` hook not being triggered when using an item from active item slots while in the inventory screen
* Changed `add_extra_msg_file` script function to mark the two-argument form as deprecated
* Changed `objects_in_radius` script function to accept a radius of 0
* Changed the character portrait on the character screen (from the **hero appearance mod**) to always show the standing pose
* Re-added **NumberPatchLoop** option from older versions to `ddraw.ini`
* Removed **AllowLargeTiles** option because its functionality is impractical and has never been used
* Removed **GlobalScriptPaths** option because storing global scripts across multiple paths is almost never needed
* Removed **ExtraSaveSlots** option from `ddraw.ini`. Now additional pages of save slots are always available, up to a maximum of **1000** slots
* Added a fix for the `+/-` keys not updating the brightness slider when used on the preferences screen
* Added a fix for getting stuck on an empty map when the encounter table has no available entries
* Added a fix for a visual glitch on the character screen when selecting perks that modify SPECIAL stats
* Added a fix for the morning start time used to determine random encounter frequency
* Added a tweak to center inventory windows horizontally when not using the hi-res patch
* Added a tweak to the animation sequence when interacting with scenery or using an item on an object
* Added a tweak to use path length instead of tile distance to determine whether to walk or run to interact with objects
* Added a new value to **InstantWeaponEquip** to skip weapon equip/unequip animations only when interacting with objects
* Added object type validation to `item_weight` script function to prevent potential issues
* Added a file size check for scripts to filter out clearly defective ones
* Added support for nested array expressions (`compile.exe` in the **modders pack** is also updated)
* Increased the maximum party member level from 6 to 10
## 4.4.9.1
* Fixed a crash bug introduced in 4.4.6 when a critter is hit and combat starts at the same time
## 4.4.9
* Fixed the edge-scrolling speed when using the game speed tweak
* Fixed incorrect unarmed damage being displayed in the inventory under specific conditions
* Fixed a crash bug in the tweak that replaces death animations on critters with single-frame variants on map load
* Improved the functionality of **Fallout1Behavior** to set the correct initial in-game time
* Changed **ProcessorIdle** to be enabled by default
* Changed **SingleCore** to be disabled by default as its usage is questionable on newer systems
* Added a fix for script execution issues when calling `critter_mod_skill` in a loop
* Added options to the **tweaks ini file** to override the PID of the mirrored shades and the stat they affect when equipped
## 4.4.8
* HRP: Fixed a crash and a visual glitch in the interface bar at ultrawide resolutions
* HRP: Fixed splash screen display when the file is packed in an uncompressed **.dat** file
* Fixed incorrect mnemonic names in script dumps generated by the script decompiler (`int2ssl.exe` in the **modders pack**)
* Added a fix for a crash when an encounter between two groups fighting each other fails to spawn one group
* Added a fix to use the `art\splash\` directory as the fallback for loading splash screens for non-English languages
* Added a fix for the game not applying the mouse sensitivity setting correctly in certain cases
* Added a fix for file seeking in uncompressed **.dat** files
* Added an option to disable the engine's processing of Arroyo-related events
* Added support for switching to alternate keyboard character codes (from Crafty)
## 4.4.7
* Fixed potential undefined behavior in **FullItemDescInBarter**
* Fixed the behavior of `break` statement in script compiler and decompiler (`compile.exe` and `int2ssl.exe` in the **modders pack**)
* Improved the fix for removing floating text messages on the map when moving to another map or elevation
* Improved the error handling for missing main **.dat** files
* Removed glass glare from the **'Use Inventory Item On'** window to match other game interfaces
* Added a fix for a crash when a critter with a powered melee/unarmed weapon runs out of ammo and there is ammo nearby
* Added a fix to prevent a potential crash when using skills on non-critter objects
* Added a fix for the duplicate click sound for the 'Done' button in the **'Move Items'** and **'Set Timer'** windows
* Added a few fixes for slightly misaligned buttons in the pipboy, character screen, and barter screen
* Added missing sounds to the 'Done' and 'Cancel' buttons in the 'Custom' disposition of the combat control panel
* Added lowercase `a` as a hotkey for the 'Take All' button (previously only uppercase `A`)
## 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 duplicate 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 at the same time
* 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
@@ -108,7 +253,7 @@
* New script function: `get_terrain_name`
## 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: 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
@@ -118,7 +263,7 @@
* 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 being able to use the **'Push'** action on members of the player's team in combat when they are knocked down
* Added missing sounds for the markers on the world map interface (similar to Fallout 1, from Ghosthack)
* Added missing sounds to the markers on the world map interface (similar to Fallout 1, from Ghosthack)
## 4.3.4
* HRP: Fixed a few issues with the main menu
@@ -130,7 +275,7 @@
## 4.3.3.1
* HRP: Fixed a possible crash in combat when enabling **EXTRA_WIN_MSG_CHECKS**
* 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 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
@@ -166,7 +311,7 @@
## 4.3.1
* Fixed the Jet addiction not being removed when using the antidote in some cases
* Fixed the key repeat delay and rate when enabling the game speed tweak
* Fixed the key repeat delay and rate when using the game speed tweak
* Fixed a possible crash at the end of the playback of alternative sound files
* Fixed a rounding error in Glovz's damage formula
* Fixed and improved **NPC combat control mod** and the behavior of **SpeedInterfaceCounterAnims=3**
@@ -192,10 +337,10 @@
* 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 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 **'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 to the buttons on the world map interface (similar to Fallout 1 behavior)
* Added 5 `metarule3` macros for controlling the save slot with scripts to `sfall.h` in the **modders pack**
* New script functions: `set_scr_name`, `obj_is_openable`
* Updated **NPC armor appearance mod** in the **modders pack** to prevent NPCs from equipping **unusable** weapons
@@ -208,14 +353,14 @@
* Updated French translation (from HawK-EyE)
## 4.3.0.1
* Fixed a crash bug introduced in 4.3 with the fix for animation registration
* Fixed a crash bug introduced in 4.3 by the fix for animation registration
* Fixed a bug in **AIDrugUsePerfFix** that could cause a hang in combat
* Fixed the extra check for friendly fire not working if the `area_attack_mode` parameter in the AI packet is not set or set to `no_pref`
* Added a fix for `chem_primary_desire` values in party member AI packets not being saved and reset correctly
## 4.3
* Fixed the original engine issues with being unable to register animations in certain situations in the game
* Fixed a crash bug introduced in 4.2.9 with the fix for the **'Leave'** event procedure in `AddRegionProc` function
* Fixed a crash bug introduced in 4.2.9 by the fix for the **'Leave'** event procedure in `AddRegionProc` function
* Fixed a bug in **ObjCanSeeObj_ShootThru_Fix** that could cause a hang in some cases
* Fixed the check of the ammo cost for a shot in **CheckWeaponAmmoCost**
* Fixed `set_critter_burst_disable` script function, which now applies only to weapons with the burst attack as the secondary mode
@@ -235,7 +380,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 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 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 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
@@ -245,7 +390,7 @@
* Added a tweak to prevent NPC aggression when non-hostile NPCs accidentally hit the player or members of the player's team
* Added a tweak to play the **'magic hands'** animation when using an item on an object. This also prevents a few issues with scripted animations not playing
* Added a tweak to remove the unspent skill points limit
* Added an option to disable the special handling of city areas 45 and 46 in the engine when visiting Area 45
* Added an option to disable the engine's special handling of city areas 45 and 46 when visiting Area 45
* Added a new value to **AIDrugUsePerfFix** to allow NPCs to use only the drugs listed in `chem_primary_desire` and healing drugs
* Added support for loading premade character **GCD/BIO** files from the `premade\<language>\` directory for non-English languages
* Added support for loading fonts from the `fonts\<language>\` directory for non-English languages
@@ -279,7 +424,7 @@
* 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 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 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**
@@ -328,7 +473,7 @@
* Fixed the default values for **Movie1 - Movie17** options
* Fixed the playback of additional movies defined in **Movie18 - Movie32** options
* 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 and improved **SFX** and speech playback for alternative sound files
* Fixed and improved the behavior of nested timer events in global scripts
@@ -417,14 +562,14 @@
* 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 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
* 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 barter button on the dialog window not animating until after leaving the barter screen
* Added a fix for the division operator treating negative integers as unsigned
* Added a fix for trying to loot corpses with the **'NoSteal'** flag set
* Added an option to allow using the caret character `'^'` in dialog msg files to specify alternative text in dialogue based on the player's gender
* Added an option to allow using the caret character `^` in dialog msg files to specify alternative text in dialogue based on the player's gender
* Added options to draw a dotted line while traveling on the world map (similar to Fallout 1, from Ghosthack)
* Added an option to display terrain types when hovering the cursor over the player's marker on the world map (from Ghosthack)
* Added a flashing icon to the Horrigan encounter and scripted force encounters by default
@@ -455,7 +600,7 @@
* New hook script: `hs_targetobject`
## 4.2.1.1
* Fixed a crash bug introduced in 4.2.1 with the fix for corpses blocking line of fire
* Fixed a crash bug introduced in 4.2.1 by the fix for corpses blocking line of fire
## 4.2.1
* Fixed a bug in `save_array` script function that could corrupt `sfallgv.sav` when saving a new array under the same key
@@ -558,7 +703,7 @@
* Added a fix for dead NPCs reloading their weapons when the combat ends
* Added an option to use the expanded world map interface (requires hi-res patch v4.1.8)
* Added an option to allow setting a 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 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
@@ -607,7 +752,7 @@
* Added a fix to prevent the reserved object IDs of the player and party members from being generated for other objects
* Added a fix for the display issue in the pipboy when the automap list is too long
* Added a fix for the `start` procedure not being called correctly if the required standard script procedure is missing (from Crafty)
* Added an option to disable the special handling of map IDs 19 and 37 in the engine when entering the maps
* Added an option to disable the engine's special handling of map IDs 19 and 37 when entering those maps
* Added support for the new **'automap=yes/no'** parameter to `maps.txt`. This parameter overrides the hardcoded values for displaying the map in the pipboy automaps for the first 160 maps
* Added a new **'picking up item'** event to `HOOK_INVENTORYMOVE` hook script
* Added files for using 32-bit images for talking heads to the **modders pack**
@@ -632,7 +777,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 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 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 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
@@ -755,12 +900,12 @@ 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:
* 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
* 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
* 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 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 the display issue in the pipboy when a quest list is too long with **UseScrollingQuestsList** diabled
* Added a fix for the clickability issue of the holodisk list in the pipboy
@@ -835,7 +980,7 @@ Original engine bug fixes and various features based on the work by Mr.Stalin:
## 4.0
* The build environment is now **Visual Studio 2015**, and Win XP SP2 and Win 2000 are no longer supported
* Extensive code reorganizing/rewrite was made in the effort to tidy up sfall code base accumulated over the years and make it easier to read, understand, and extend. Main code was split into separate **'modules'**. Code for interacting with Fallout 2 engine was moved and expanded to allow for engine manipulations without using too much Assembly code
* Fixed an issue with the game being rendered before the **hero appearance mod** is loaded
* Fixed an issue where the game was rendered before the **hero appearance mod** was loaded
* **Item highlighting mod** is moved from sfall into a separate script (`gl_highlighting.int`) and extended with new options
* **NPC combat control mod** is moved from sfall into a separate script (`gl_partycontrol.int`)
* Related options of **item highlighting** and **NPC combat control** mods were moved from `ddraw.ini` into a separate `sfall-mods.ini`
@@ -877,7 +1022,7 @@ Original engine bug fixes and various features based on the work by Crafty:
Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for a crash when clicking on empty space in the inventory list opened by **'Use Inventory Item On'** (backpack) action icon
* Added a fix for negative SPECIAL values in character creation
* Added a fix for negative SPECIAL values in the character creation
* Added a fix for the game hanging in an endless loop in combat mode when calling `anim` script functions inside `damage_p_proc`
* Added 3 new arguments to `HOOK_BARTERPRICE` hook script
@@ -955,7 +1100,7 @@ Original engine bug fixes and various features based on the work by Crafty:
Original engine bug fixes and various features based on the work by Crafty:
* Fixed a crash bug introduced with the inventory drag and drop fix
* Added a new value to **SpeedInterfaceCounterAnims** to update the HP/AC counters instantly when the number is not negative
* Added an option to skip weapon equip/unequip animations when performing various actions
* Added an option to skip weapon equip/unequip animations during various actions
* Added an option to control the speed of pipboy alarm clock animations
* Added an option to change the carry weight limit
@@ -988,7 +1133,7 @@ Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for the original engine issue that caused party members to have incorrect stats when they level up while on drugs
* Added a fix for the unlimited ammo exploit
* Added a fix for negative values in Skilldex window
* Added a fix for the clickability issue in the pipboy and an exploit that allows resting in places where you shouldn't be able to
* Added a fix for the clickability issue in the pipboy and an exploit that allows resting in restricted areas
* Added a fix to prevent **'Too Many Items'** bug from corrupting save files
* Added a fix for the exploit that you can gain stats from more than two doses of a specific chem after save/load
* Added a fix for the original engine issues with reverse order of items in memory relative to visual order in the inventory list
@@ -1002,4 +1147,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 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
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
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
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.}
Copyright (C) {year} {name of author}
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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
@@ -645,14 +645,14 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
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.
If the program does terminal interaction, make it output a short
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 is free software, and you are welcome to redistribute it
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,
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
<http://www.gnu.org/licenses/>.
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
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
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 -4
View File
@@ -1,8 +1,8 @@
# sfall
[![License](https://img.shields.io/badge/License-GPL--3.0-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Dev Build](https://github.com/phobos2077/sfall/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/phobos2077/sfall/actions/workflows/build.yml)
[![GitHub Pages](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml/badge.svg)](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml)
[![Dev Build](https://github.com/sfall-team/sfall/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/phobos2077/sfall/actions/workflows/build.yml)
[![GitHub Pages](https://github.com/sfall-team/sfall/actions/workflows/gh-pages.yml/badge.svg)](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml)
A set of engine modifications for the classic game Fallout 2 in the form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
@@ -37,7 +37,7 @@ Delete `ddraw.dll`, `ddraw.ini`, and `sfall.dat` from your Fallout directory, an
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
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:\
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.
@@ -46,7 +46,7 @@ You need to set DLL overrides for `ddraw.dll` to __"native, builtin"__ in `winec
### 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)**.
* Visual Studio 2015 with **"Windows XP support for C++"** component. If you're using Visual Studio 2017/2019/2022, make sure to install **"VC++ 2015.3 v14.00 (v140) toolset for desktop"** component as well.
* [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.
@@ -56,6 +56,19 @@ You need to set DLL overrides for `ddraw.dll` to __"native, builtin"__ in `winec
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.
### Minimalist Setup:
If you don't need a full-fledged IDE, you can use Visual Studio Build Tools instead. Taking [Visual Studio 2017 Build Tools](https://aka.ms/vs/15/release/vs_buildtools.exe) for example:
1. Install using the command line:
```
vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.140 --add Microsoft.VisualStudio.Component.WinXP --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --passive
```
2. Set up a `postbuild.cmd` using the template from the repo.
3. Use MSBuild in **x86 Native Tools Command Prompt** to build sfall:
```
MSBuild.exe ddraw.sln /t:Clean;Build /p:Configuration=ReleaseXP /p:Platform=Win32
```
## Additional info
* [Changelog](CHANGELOG.md)
+19 -12
View File
@@ -8,9 +8,7 @@ author: '@wipe2238'
#
# - name: Build sfall
# id: sfall
# uses: phobos2077/sfall@develop
# with:
# release-xp: true
# uses: sfall-team/sfall@master
#
# - name: Copy sfall to mod directory
# run: copy "${{ steps.sfall.outputs.release-xp }}" "my/mod/directory/ddraw.dll"
@@ -22,11 +20,13 @@ inputs:
release-xp:
description: 'Set to true to enable building with ReleaseXP configuration'
required: true
required: false
default: true
dev-xp:
description: 'Set to true to enable building with DevXP configuration'
required: true
required: false
default: false
# Outputs are always using Windows directory separator (`\`)
outputs:
@@ -49,7 +49,7 @@ runs:
# Quick check for things which should never happen
- name: Sanity checks
run: |
if [[ "${{ runner.os }}" != "Windows" ]]; then
if [[ "$RUNNER_OS" != "Windows" ]]; then
echo "[ERROR] This action can only be used on Windows"
exit 1
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
# 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
id: dxsdk
run: |
@@ -85,8 +85,19 @@ runs:
echo "dir=$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")" >> $GITHUB_OUTPUT
shell: bash
# Install VS 2015 C++ build tools and WinXP Support components via Chocolatey
- name: Prepare VS 2015 C++ build tools
id: vs2015_tools
run: |
echo "::group::Prepare VS 2015 C++ build tools"
choco install visualstudio2017buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.140 --add Microsoft.VisualStudio.Component.WinXP --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --passive"
echo "::endgroup::"
shell: bash
# 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
id: msbuild
run: |
@@ -98,7 +109,6 @@ runs:
echo "::endgroup::"
shell: bash
# Creating empty `PostBuild.cmd` to avoid false-positive build error
- name: Build ReleaseXP
id: build-release-xp
run: |
@@ -106,7 +116,6 @@ runs:
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
#
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/ReleaseXP/ddraw.dll")" >> $GITHUB_OUTPUT
@@ -117,7 +126,6 @@ runs:
DXSDK_DIR: ${{ steps.dxsdk.outputs.dir }}
shell: bash
# Creating empty `PostBuild.cmd` to avoid false-positive build error
- name: Build DevXP
id: build-dev-xp
run: |
@@ -126,7 +134,6 @@ runs:
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
#
echo "ddraw-dll=$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.dll")" >> $GITHUB_OUTPUT
+33 -4
View File
@@ -2,11 +2,17 @@
;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
;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
; be used to remove their hardcoded effects, and add new stat/skill effects
;Since traits need to be picked before any scripts run, they have an additional 'NoHardcode' option in this file
; which can be used to remove their hardcoded effects, and add new stat/skill effects
;##############################################################################
[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
@@ -15,6 +21,20 @@ SurvivalistBonus=25
;25 - default bonus
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
@@ -59,6 +79,15 @@ WeaponScopeRangeBonus=5
VaultCityInoculationsPoisonBonus=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)
;999 - maximum bonus, 10 - default bonus
DemolitionExpertBonus=10
@@ -72,8 +101,9 @@ GamblerBonus=20
HarmlessBonus=20
;Changes the damage bonus and the Doctor skill bonus for 'Living Anatomy' perk (ID 97)
;125 - maximum bonus, 5 - default bonus, 10 - default skill bonus
;125 - maximum bonus, 5 - default damage bonus
LivingAnatomyBonus=5
;125 - maximum bonus, 10 - default skill bonus
LivingAnatomyDoctorBonus=10
;Changes the Speech and Barter skill bonus for 'Negotiator' perk (ID 99)
@@ -149,7 +179,6 @@ Enable=0
;Skill3-Skill5: The skill to be modified (or -1 for none)
;Skill3Mod-Skill5Mod: The increased/decreased value to the modified skill
;##############################################################################
;This is a modification to vanilla perk 0
[0]
Name=Example
+9
View File
@@ -1,4 +1,13 @@
[sfall]
;Table for overriding ASCII codes for keyboard character input when entering the player's name and saved game descriptions
;Only character codes in the ASCII range 33-126 can be overridden
;Character codes that do not need to be overridden can be omitted by using commas as delimiters
;You must also set a key for switching layouts using the XltKey option in ddraw.ini
;Default character code table for the English layout (letter codes only)
;XltTable=,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,,,,,,,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,,,,
;##############################################################################
SaveInCombat=Cannot save at this time.
KarmaGain=You gained %d karma.
KarmaLoss=You lost %d karma.
+7 -1
View File
@@ -2,7 +2,6 @@
[Main]
[Items]
;Override the PIDs of the standard healing drugs that AI will use in combat
;Set to -1 if you don't want AI to identify this item as a healing drug
@@ -11,3 +10,10 @@
STIMPAK=40
SUPER_STIMPAK=144
HEALING_POWDER=273
;Overrides the PID of the item that grants a +1 stat bonus when placed in an active item slot
;Default is 433. Set to -1 to prevent any item from granting the bonus
MIRROR_SHADES_PID=433
;The SPECIAL stat number (0..6) to which the bonus is applied
;Default is 3 (Charisma). Set to -1 to disable the item's effect
MIRROR_SHADES_STAT=3
+5 -2
View File
@@ -1,9 +1,12 @@
sfall's main configuration options appear in ddraw.ini, but there are several other configuration files that it can read in for modding purposes.
Books.ini: Lets you override/add books to the game (associated object PIDs, skills and text messages)
Books.ini: Lets you override/add books to the game (associated object PIDs, skills, and text messages)
Drugs.ini: Lets you override/add drugs to the game (associated object PIDs, addiction duration, and text messages)
Perks.ini: Lets you override the name/description/frm image/other stats of perks and traits
Elevators.ini: Lets you override which elevators lead where
Elevators.ini: Lets you override which elevators lead to where
CriticalOverrides.ini: Lets you make modifications to the critical hit tables
Translations.ini: Contains some text strings which sfall displays, to allow their translation
Skills.ini: Lets you change the formula used for calculating skills
Stats.ini: Lets you change the formula used to calculate the derived stats
Tweaks.ini: Lets you override a few object PIDs used in the engine
Unarmed.ini: Lets you configure the requirements and effects of unarmed attacks
+11 -5
View File
@@ -15,7 +15,7 @@ Critters=0
; Set to 1 to only highlight objects in the player's line-of-sight
CheckLOS=1
; Set the color of outlines for items, corpses, and containers; available colors:
; Set the color of outlines for items; available colors:
; 1 - glowing red
; 2 - red
; 4 - grey
@@ -26,10 +26,16 @@ CheckLOS=1
; 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
; Set the color of outlines for containers
OutlineColorContainers=4
; Set the color of outlines for corpses
OutlineColorCorpses=4
; Motion Scanner mode:
; 0 - ignored
; 1 - requires Motion Scanner present in player inventory to activate highlighting
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore)
; 1 - requires Motion Sensor to be present in the player's inventory to activate highlighting
; 2 - requires Motion Sensor and consumes 1 charge on every use (depleted sensor will not work anymore)
MotionScanner=0
@@ -40,10 +46,10 @@ MotionScanner=0
;Set to 2 to control all party members
;Set to 3 to let you use the command cursor to specify targets for party members to attack in combat
Mode=0
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs
;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
;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
;Set to 1 to allow the player to gain a positive reputation when killing NPCs while controlling other critters
+89 -55
View File
@@ -1,5 +1,5 @@
;sfall configuration settings
;v4.4.3
;v4.5
[Main]
;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash
@@ -7,7 +7,7 @@
HiResMode=1
;Set to 1 if you want to use command line arguments to tell sfall to use another ini file
;This option is always enabled in 4.3.3/3.8.33 or later. The information is left for reference only
;This option is always enabled in 4.3.3/3.8.33 or later and cannot be disabled (kept for reference only)
UseCommandLine=0
;Uncomment and point to a file to get alternate translations for some sfall messages
@@ -34,7 +34,7 @@ UseCommandLine=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[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
;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed)
@@ -110,15 +110,24 @@ FadeMultiplier=100
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Interface]
;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
;The minimum supported version of High Resolution Patch is 4.1.8
;Requires a new IFACE_APBAR_E.frm in art\intrface\ (included in sfall.dat) to display correctly
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 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
;Requires High Resolution Patch v4.1.8 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
;Requires the hi-res patch/mode and a new WORLDMAP.frm file in art\intrface\ (included in sfall.dat)
;The screen resolution must be set to at least 890x720
ExpandWorldMap=0
;Set to 1 to draw a dotted line while traveling on the world map (similar to Fallout 1)
@@ -147,7 +156,7 @@ AllowSoundForFloats=0
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
AllowDShowSound=0
;Set to 1 to override the default music path with data\sound\music\ if music_path is not present in the cfg
;Set to 1 to override the default music path with data\sound\music\ if music_path is not present in fallout2.cfg
;Set to 2 to overwrite all occurrences of the music path
OverrideMusicDir=1
@@ -219,32 +228,43 @@ SpeedKey9=0x00
;A key to hold down to move the window around when using DX9 graphics mode 5
;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise
;Set to -1 for either ctrl key, -2 for either alt key or -3 for either shift key
;Set to -1 for either Ctrl key, -2 for either Alt key, or -3 for either Shift key
WindowScrollKey=0
;A key to press to reload your currently equipped weapon or use the active item
;Set to 0 if you don't want a reload key, or a DX scancode otherwise
ReloadWeaponKey=0
;A key to hold down to let you move/drop a whole 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
ItemFastMoveKey=29
;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 a fast move key, or a DX scancode otherwise
ItemFastMoveKey=42
;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
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
;Set to 0 to disable, or a DX scancode otherwise
;Requires sfall debugging mode and FalloutDebug.exe from the modders pack
DebugEditorKey=0
;A key to press to switch the keyboard layout (uses character codes from the XltTable option in Translations.ini)
;Set to 1 for Num Lock, 2 for Caps Lock, 3 for Scroll Lock, or 0 to disable
XltKey=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Misc]
;Changes some of Fallout 2 engine functions to Fallout 1 behavior:
;- disables playing the final movie/credits after the endgame slideshow
;- disables halving the weight for power armor items
;- endgame_movie script function plays movie 10 or 11 based on the player's gender before the credits
;- the final movie/credits are not played after the endgame slideshow
;- the weight of power armor items is not halved
;- the endgame_movie script function plays movie 10 or 11 based on the player's gender before the credits
;- the initial in-game time is set to 7:21
Fallout1Behavior=0
;Time limit in years. Must be between -3 and 13
@@ -262,7 +282,7 @@ WorldMapTimeMod=100
WorldMapFPSPatch=1
;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
;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed
@@ -289,13 +309,15 @@ WorldMapSlots=0
UseFileSystemOverride=0
;To use a patch file other than patch000.dat, uncomment the next line and add your new file name
;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 at once, you can include a %d in the file name (sprintf syntax)
;PatchFile=patch%03d.dat
;Uncomment the next line to change the number of patch files to load (valid range: 1..1000; default is 100)
;NumberPatchLoop=100
;Set to 1 to change the order of how the engine loads game data
;Old: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
;New: master_patches > critter_patches > [ExtraPatches] > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
;This option is always enabled in 4.3/3.8.30 or later. The information is left for reference only
;This option is always enabled in 4.3/3.8.30 or later and cannot be disabled (kept for reference only)
DataLoadOrderPatch=1
;Set to 1 to load alternative dialog msg files from text\<language>\dialog_female\ for female PC
@@ -346,8 +368,8 @@ Movie17=credits.mve
;LocalMapXLimit=480
;LocalMapYLimit=400
;Set to 1 if you want the pipboy to be available at the start of the game
;Set to 2 to make the pipboy available by only skipping the vault suit movie check
;Set to 1 to make the pipboy and the vault suit available when the game starts
;Set to 2 to make only the pipboy available
PipBoyAvailableAtGameStart=0
;Set to 1 to double the number of available kill types
@@ -374,9 +396,9 @@ TownMapHotkeysFix=1
;Set to 1 to disable the Horrigan encounter
DisableHorrigan=0
;Set to 1 to disable the random element in NPC levelling
;This will cause all NPC party members to automatically level up as soon as the player reaches the requirements
NPCAutoLevel=0
;Set to 1 to disable the random element in party member leveling
;This will prevent party members from randomly leveling up early and instead level them up at defined intervals
PartyMemberNonRandomLevelUp=0
;Change the initial starting location and world map viewport
;Leave at -1 for default
@@ -386,7 +408,7 @@ ViewXPos=-1
ViewYPos=-1
;Set to 1 to force Fallout not to use multiple processor cores even if they are available
SingleCore=1
SingleCore=0
;Set to 1 to override the art_cache_size setting in fallout2.cfg
OverrideArtCacheSize=0
@@ -396,14 +418,14 @@ OverrideArtCacheSize=0
;Set to 2 to block all saving in combat
SaveInCombatFix=1
;Uncomment and set a comma delimited list of numbers to use a custom xp table
;Uncomment and set a comma-delimited list of numbers to use a custom xp table
;Player's level is capped once the highest specified level is reached
;XPTable=50,100,200
;Set to 1 to enable additional weapon animation codes from 'o' to 't'
;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10
;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corresponds to 's' and 15 to 't'
;This option is always enabled in 4.4.1/3.8.41 or later. The information is left for reference only
;This option is always enabled in 4.4.1/3.8.41 or later and cannot be disabled (kept for reference only)
AdditionalWeaponAnims=1
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
@@ -440,11 +462,8 @@ PlayIdleAnimOnReload=0
;Default is 6. Set to 0 for a 12-hour timer
CorpseDeleteTime=6
;Set a number of milliseconds to idle each input loop
;Set to -1 to disable
;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 to allow the game to go idle during each input loop, preventing 100% CPU usage
ProcessorIdle=1
;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
@@ -460,13 +479,8 @@ SkipOpeningMovies=0
;Set to 0 to disable
NPCsTryToSpendExtraAP=0
;Allows the use of tiles over 80x36 in size. sfall will just split and resave them to art\tiles\zzz####.frm at startup
;Set to 1 to check all tiles on started (slow, but can also be useful for checking the correct size of your new tiles)
;Set to 2 if you provide a XLtiles.lst file in art\tiles\ containing a list of the tile indexes that need checking
AllowLargeTiles=0
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
;This option is always enabled in 4.3.7/3.8.37 or later. The information is left for reference only
;This option is always enabled in 4.3.7/3.8.37 or later and cannot be disabled (kept for reference only)
MoreTiles=1
;Change the Skilldex cursor FRM numbers
@@ -502,14 +516,15 @@ UseScrollingQuestsList=1
;ConsoleOutputPath=console.txt
;Set to 1 to add additional pages of save slots
ExtraSaveSlots=0
;This option is always enabled in 4.5/3.8.50 or later and cannot be disabled (kept for reference only)
ExtraSaveSlots=1
;To use more than one save slot for quick saving (F6 key) without picking a slot beforehand, set the next two lines
;To use more than one save slot for quick saving (F6 key) without picking a slot beforehand, set the next two options
;Quick save will cyclically overwrite saves from the first slot on the specified page to the last slot on the n-th page
;AutoQuickSave sets how many pages you want to use for quick saving (valid range: 1..10)
;AutoQuickSave sets the number of pages used for quick saving (valid range: 1..10)
;Set to 0 to disable
AutoQuickSave=0
;AutoQuickSavePage is the page number to start at if ExtraSaveSlots is enabled (valid range: 0..999)
;AutoQuickSavePage sets the starting page number for quick saving (valid range: 0..99)
;Set to -1 to use the current selected page (not recommended)
AutoQuickSavePage=1
@@ -579,7 +594,7 @@ CritterInvSizeLimitMode=0
CritterInvSizeLimit=200
;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
MotionScannerFlags=1
@@ -653,6 +668,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
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
EnableMusicInDialogue=0
@@ -673,10 +692,11 @@ ActiveGeigerMsgs=1
;Set to 1 to fix the bug of being unable to sell used geiger counters or stealth boys
CanSellUsedGeiger=1
;Set to 1 to skip weapon equip/unequip animations when performing various actions
;Set to 1 to skip weapon equip/unequip animations during various actions
;Set to 2 to skip these animations only when interacting with objects
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
;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
@@ -689,7 +709,7 @@ NumbersInDialogue=0
;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map
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
DeathScreenFontPatch=0
@@ -754,7 +774,7 @@ AIBestWeaponFix=1
;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 without fixes prevents the specified item from being consumed if all three values in the list are the same PID
;chem_primary_desire also works as a priority list of drug items the NPC will try to pick up in combat when they are on the ground
AIDrugUsePerfFix=0
AIDrugUsePerfFix=1
;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
@@ -767,15 +787,25 @@ PartyMemberSkillFix=0
;Set to -1 to disable the special death message when the global variable is set
SpecialDeathGVAR=491
;Set to 1 to disable the special handling of map IDs 19 and 37 in the engine when entering the maps
;Set to 1 to disable the engine's special handling of map IDs 19 and 37 when entering those maps
;Note that enabling this option will break the map changes in Modoc and Vault 15 in Fallout 2
DisableSpecialMapIDs=0
;Set to 1 to disable the special handling of city areas 45 and 46 in the engine when visiting Area 45:
;Set to 1 to disable the engine's special handling of city areas 45 and 46 when visiting Area 45:
;Area 45 automatically disappears from the world map, and Area 46 appears on the world map
;Note that enabling this option will break the location change of the 'Fake Vault 13' in Fallout 2
DisableSpecialAreas=0
;Set to 1 to disable the engine's processing of events related to Arroyo (areas 0 and 22)
;This also disables the playback of Hakunin dream sequences and the processing of global variables:
;GVAR_ENEMY_ARROYO (7), GVAR_TOWN_REP_ARROYO (47), GVAR_FALLOUT_2 (494)
DisableArroyoEvents=0
;Set to 1 to fix the issue with the division operator treating negative integers as unsigned
;Note: To perform the unsigned integer division, use the new 'div' operator
;This option is always enabled in 4.3.5/3.8.35 or later and cannot be disabled (kept for reference only)
DivisionOperatorFix=1
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Configuration ini files
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@@ -815,11 +845,6 @@ DisableSpecialAreas=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Scripts]
;Comma-separated list of masked paths to load global scripts from
;Only use single backslash \ as the directory separator
;Paths outside of scripts folder are supported
GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
;Uncomment the option to specify an additional directory for ini files used by scripts
;The game will search for ini files first relative to this directory and then relative to the root directory if not found
;The path length is limited to 61 characters
@@ -859,11 +884,20 @@ SkipCompatModeCheck=0
;show_script_messages=1
;show_tile_num=1
;[sound]
;debug=0
;debug_sfxc=0
;debug=1
;debug_sfxc=1
;-------
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
HideObjIsNullMsg=0
@@ -7,10 +7,13 @@ Auto Doors mod v1.2 for Fallout 2 by Mr.Stalin
Requires sfall 3.7b or higher
NOTE: this script requires compiler from sfall modderspack with -s option (short circuit evaluation)
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
*/
#pragma sce
/* Include Files */
#include "..\headers\define.h"
//#include "..\headers\command.h"
@@ -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
@@ -13,14 +13,15 @@ NOTE: this script requires compiler from sfall modderspack with -s option
*/
procedure start;
procedure afterhitroll_handler;
#pragma sce
#include "..\headers\define.h"
#include "..\headers\sfall\sfall.h"
#include "..\headers\sfall\define_extra.h"
procedure start;
procedure afterhitroll_handler;
procedure start begin
if game_loaded then begin
register_hook_proc(HOOK_AFTERHITROLL, afterhitroll_handler);
+4 -1
View File
@@ -1,3 +1,6 @@
These are some example mods I've put together. Each uses sfall features in a simple way, generally involving a single global script. The uncompiled versions of each script is included.
Further good examples of sfall scripts are available from Nirran's site: http://www.nirran.com/
Further good examples of sfall scripts are available from:
* FO2tweaks: https://github.com/BGforgeNet/FO2tweaks
* EcCo Gameplay Overhaul: https://github.com/phobos2077/fo2_ecco
* Nirran's site: http://www.nirran.com/
Binary file not shown.
+20 -4
View File
@@ -15,10 +15,12 @@
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.2
version 1.3
**/
#pragma sce
#include "main.h"
//#include "..\..\..\!SRC\headers\define.h"
@@ -36,6 +38,8 @@ variable alsoCorpse;
variable alsoCritter;
variable checkLOS;
variable outlineColor;
variable outlineColorContainers;
variable outlineColorCorpses;
variable motionScanner;
variable highlightFailMsg1;
variable highlightFailMsg2;
@@ -65,6 +69,12 @@ procedure GetOutlineColor(variable obj, variable isCritter) begin
if checkLOS and not DudeCanSee(obj) then
return 0;
if obj_type(obj) == OBJ_TYPE_CRITTER then
return outlineColorCorpses;
if obj_item_subtype(obj) == item_type_container then
return outlineColorContainers;
return outlineColor;
end
@@ -104,7 +114,7 @@ procedure KeyPressHandler begin
scanCode := get_sfall_arg,
scanner, charges;
if scanCode == highlightKey and not(get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
if scanCode == highlightKey and not(get_game_mode bwand bwnot(COMBAT bwor PCOMBAT)) then begin
if pressed then begin
set_global_script_repeat(REPEAT_FRAMES);
if motionScanner then begin
@@ -134,14 +144,16 @@ procedure KeyPressHandler begin
end
end
// visual glitch fix, turn off highlight when entering combat
procedure CombatTurnHandler begin
if isHighlight then begin
call ToggleHighlight(false);
end
end
// visual glitch fix, turn off highlight when opening other interfaces
procedure GameModeChangeHandler begin
if isHighlight and (get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
if isHighlight and (get_game_mode bwand bwnot(COMBAT bwor PCOMBAT)) then begin
call ToggleHighlight(false);
end
end
@@ -164,6 +176,10 @@ procedure start begin
checkLOS := GetConfig(configSection, "CheckLOS", 0);
outlineColor := GetConfig(configSection, "OutlineColor", 16);
if (outlineColor < 1) then outlineColor := 64;
outlineColorContainers := GetConfig(configSection, "OutlineColorContainers", 16);
if (outlineColorContainers < 1) then outlineColorContainers := 64;
outlineColorCorpses := GetConfig(configSection, "OutlineColorCorpses", 16);
if (outlineColorCorpses < 1) then outlineColorCorpses := 64;
motionScanner := GetConfig(configSection, "MotionScanner", 0);
highlightFailMsg1 := Translate("HighlightFail1", "You aren't carrying a motion sensor.");
@@ -175,7 +191,7 @@ procedure start begin
register_hook_proc(HOOK_INVENTORYMOVE, InventoryMoveHandler);
set_global_script_type(1);
end else begin
if isHighlight and not(get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
if isHighlight and not(get_game_mode bwand bwnot(COMBAT bwor PCOMBAT)) then begin
call ToggleHighlight(true);
end
end
Binary file not shown.

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