Compare commits

...
203 Commits
Author SHA1 Message Date
NovaRain 281823e97d Release 4.3.2 2021-11-10 08:45:54 +08:00
NovaRain 32924db37c Reverted Worldmap.cpp changes in commit c19137b 2021-11-10 08:45:12 +08:00
NovaRain cd3c220ef8 Changed the option name of grave containers fix
Edited the code of tile_num function wrapper.
Reorganized the options in ddraw.ini.
Updated web document.
2021-11-09 10:01:17 +08:00
NovaRain 09813aeb86 Code edits to ScriptExtender.cpp/SpeedPatch.cpp
Minor edits to some files.
2021-11-08 13:45:35 +08:00
NovaRain d4f011913c Changed the fix in commit 583105a to an option (#412) 2021-11-06 22:44:14 +08:00
NovaRain 163b9ed5d3 Simplified the calculation loop in Glovz's formula
Changed the title bar text for DX9 windowed mode.
2021-11-02 09:39:47 +08:00
NovaRain d7647bca18 Optimized the calculation loop in YAAM code 2021-10-30 09:16:39 +08:00
NovaRain 53278a090b Some edits to YAAM code
Changed OverrideArtCacheSize to set the art cache size to 261.
Fixed typo in ddraw.ini.
2021-10-27 22:02:09 +08:00
NovaRain a533943200 Cosmetic edit: alignment of GPL text in some files 2021-10-27 22:01:15 +08:00
NovaRain f2bc04001e Changed the description of CheckWeaponAmmoCost in ddraw.ini
Replaced <br> html tag with backslash in markdown documents.
(CommonMark spec)
2021-10-25 10:18:16 +08:00
NovaRain f1c087b3a3 Improved the division function in previous commit
Rewrote the text hook for main_menu_create_ in C++ (from HRP branch)
Updated version number.
2021-10-25 09:52:18 +08:00
NovaRain 3dea47c467 Rewrote Glovz's damage formula code in C++ (#355) 2021-10-24 11:12:56 +08:00
NovaRain 8d58e6e3bb Misc code edits 2021-10-22 00:23:58 +08:00
NovaRain 43a8e84dee Updated define_extra.h 2021-10-16 07:24:58 +08:00
NovaRain c9ce0aa0ce Release 4.3.1 (with updated doc) 2021-10-15 10:52:35 +08:00
NovaRain 6c6f0be11b Updated web document 2021-10-15 10:51:44 +08:00
NovaRain 2d54e376c6 Release 4.3.1 2021-10-15 10:39:27 +08:00
NovaRain f48fce3274 Fixed a rounding error in Glovz's damage formula
Minor edit to gl_partycontrol script.
Updated Russian and Germen translations.
2021-10-15 10:06:02 +08:00
NovaRain b475bf91fb Updated Polish translation
Added char* variant functions to Logging.cpp.
2021-10-14 09:25:15 +08:00
NovaRain ecd574063a Minor code edits, now sfall will always create sfall-log.txt
* still won't write any unless debug options are enabled in ddraw.ini.
2021-10-13 13:47:22 +08:00
NovaRain 101238e125 Improved the party control and fixed mod related bugs
Updated gl_partycontrol script.
2021-10-13 13:01:24 +08:00
NovaRain 2e97fe38ff Fixed JetWithdrawal in Drugs.ini conflict with fix in commit dfd810c
Simplified the code in the previous commit.
2021-10-10 07:19:46 +08:00
NovaRain 583105a76a Fixed the execution of use_p_proc handler for grave type containers
* "grave type" is a container with only two frames (open/closed)
* in vanilla code, using a grave type container in the open state does
not execute use_p_proc in its script like other containers do.
2021-10-08 10:46:57 +08:00
NovaRain ac1bc19faa Reverted the previous commit and added "obj_is_openable" function
* the previous commit conflicts with BIS document.
2021-10-08 09:16:05 +08:00
NovaRain 692e28262d Fixed the return value of obj_is_open function
* for containers with only one frame (e.g. shelves)
2021-10-07 13:43:33 +08:00
NovaRain e62803837b Minor edit to sfall function notes 2021-10-06 21:15:45 +08:00
NovaRain c19137bd1a Fixed crash at the end of DS sound playback
* revert to the previous implementation.

Made sure sfall only loads a localized resource file with valid name.
Some code edits.
2021-10-05 13:36:58 +08:00
NovaRain 5df3d7230f Improved set_scr_name function
Some code correction.
2021-10-04 12:04:46 +08:00
NovaRain 113324097c Updated the site doc as well 2021-10-03 09:56:44 +08:00
NovaRain e725445ce9 Added the description of set_scr_name function 2021-10-03 09:43:54 +08:00
NovaRain 9a5b38dfc3 Added "set_scr_name" script function
* not documented yet.
2021-10-02 22:44:15 +08:00
NovaRain edbfc055d0 Improved the rendering performance of DX9 modes
Excluded the animated colors from TravelMarkerColor (same as in 3.8.x)
Code edits and preparation.
2021-10-01 12:25:18 +08:00
NovaRain dbe24d3ebd Updated translation ini files 2021-09-30 21:46:11 +08:00
NovaRainandGitHub 10a6176da2 Merge pull request #410 from phobos2077/dependabot/bundler/docs/nokogiri-1.12.5
Bump nokogiri from 1.11.6 to 1.12.5 in /docs
2021-09-28 17:23:24 +08:00
dependabot[bot]andGitHub 7524aeba9b Bump nokogiri from 1.11.6 to 1.12.5 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.6 to 1.12.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.11.6...v1.12.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-28 05:56:39 +00:00
NovaRain debbda0b3b Added the ability to set custom names for unarmed attacks
Updated Translations.ini template.
Commented out empty exit() in some modules.
2021-09-27 10:37:28 +08:00
NovaRain 2fe3ccd01d Minor code edits to the previous commit 2021-09-26 07:28:19 +08:00
NovaRain 770fd7e63c Correction to the previous commit 2021-09-25 20:13:54 +08:00
NovaRain 827b96a7e0 [WIP] Added the display of actual damage for unarmed attacks in inven 2021-09-25 08:46:15 +08:00
NovaRain d661067f2c Corrected stat requirements of Jab in Unarmed.cpp
Code edits to EngineUtils.
2021-09-23 10:36:17 +08:00
NovaRain e5687247f8 Fixed setting basic punch and kick in Unarmed.ini
Minor edits to code and misc files.
2021-09-22 11:18:13 +08:00
NovaRain 249815efd9 Added Unarmed.ini example file 2021-09-21 22:59:31 +08:00
NovaRain b46d1ab47b Added a tweak to update unarmed attacks after leveling up
Changed the artifact package name.
2021-09-21 09:19:37 +08:00
NovaRain 4a32aaf80e Added a tweak to keep the selected attack mode for unarmed attacks
* was reset when the inventory is closed or the combat ends.
2021-09-20 11:16:43 +08:00
NovaRain 858a6c5343 Added new Unarmed module and UnarmedFile option
* example INI file not yet.

Replaced item_w_mp_cost_ function with the sfall implementation.

Disabled some code in various modules due to new implementations.
2021-09-19 23:14:08 +08:00
NovaRain c219ce183f Changed the encoding of polish.ini 2021-09-17 21:56:12 +08:00
burner1024andGitHub 1f6dbccb3d Added Polish translation (#409)
* added partial Polish translation from https://trzynasty-schron.net/forum/index.php?topic=8221.0

* complete Polish translation (from JaidenIsPink)
2021-09-17 21:34:18 +08:00
NovaRain deae07ffec Some code edits and preparation 2021-09-17 10:48:42 +08:00
NovaRain bb88830a5b Added a fix to display the color index 255 of the palette correctly
* in DX9 mode when using the hi-res patch

Some minor code corrections.
2021-09-12 13:59:58 +08:00
NovaRain f6c1e0f908 Code corrections 2021-09-07 06:37:57 +08:00
NovaRain 6c3dd72ea7 Added missing sounds for the buttons on the world map interface (#373)
Changed the game speed tweak to be active only during the game.
2021-09-06 10:54:47 +08:00
NovaRain c5e226a279 Fixed key repeat delay/rate for game speed tweak (#406)
Removed AffectPlayback option.
2021-09-06 07:52:41 +08:00
NovaRain 0a8a28b80c Moved some functions from AI.cpp to AIHelpers.cpp 2021-09-06 07:44:38 +08:00
NovaRain c047402dc9 Code edits to gl_npcarmor script
Added some line breaks in hookscripts.md.
2021-09-03 10:36:33 +08:00
NovaRain 569bde5fab Code changes to the previous commit
Changed HOOK_CANUSEWEAPON to run for both the player and NPCs.
Updated gl_npcarmor script.
2021-09-02 11:23:24 +08:00
NovaRain 428cf42c7d Added an additional '"Can't Use" flag to misc flags in item objects
* it makes the weapon object unusable in combat.

Edits to header files.
2021-08-31 12:35:47 +08:00
NovaRain dfd810c9e4 Fixed the Jet addiction was not removed when using the antidote (#405)
(BGforgeNet/Fallout2_Restoration_Project#118)
2021-08-29 10:20:01 +08:00
NovaRain d9b7a714ec Moved some patches/functions between Interface.cpp and MiscPatches.cpp
* And Graphics.cpp and InputFuncs/Input.cpp

Tweaked the buffer flush (actually print to file) rate in Console.cpp.
2021-08-27 21:00:15 +08:00
NovaRain 888269af92 Renamed the var inline functions 2021-08-27 20:45:53 +08:00
NovaRain a275fff434 Replaced *(TYPE*)FO_VAR with new inline functions 2021-08-26 10:03:47 +08:00
NovaRain 3f0216d49b Fixed broken ConsoleOutputPath due to the line break support 2021-08-25 11:33:58 +08:00
NovaRain ce64f5d352 Moved render.cpp/h files to GUI folder/namespace 2021-08-25 10:14:53 +08:00
NovaRain 110facfada Added support for the newline character '\n' in pro_*.msg files (#401) 2021-08-25 09:52:05 +08:00
NovaRain bb55b97d12 Some code edits and preparation 2021-08-24 14:12:32 +08:00
NovaRain 40538e26d3 Changed SingleCore to set CPU affinity to the second core if available 2021-08-23 16:07:29 +08:00
NovaRain 3bc49e05d5 Replaced HRP addresses with the define values 2021-08-23 10:24:27 +08:00
NovaRain a6417069ad Internal fix for HOOK_REMOVEINVENOBJ 2021-08-21 11:35:41 +08:00
NovaRain c6f17c5b7d Fixed ai_check_drugs for AIDrugUsePerfFix=1 2021-08-21 07:50:04 +08:00
NovaRain cf028bcdfe Added "util" namespace to EngineUtils.cpp 2021-08-20 21:34:14 +08:00
NovaRain 478a522463 Code fixes to ai_check_drugs_hack in combatAI.cpp 2021-08-20 07:15:11 +08:00
NovaRain a186014895 Added new EngineTweaks module and TweaksFile option 2021-08-19 23:09:03 +08:00
NovaRain 3129e27737 Fixed a crash when opening a file whose name contains the '%' char
Corrected the code in the previous commit.
2021-08-19 13:33:52 +08:00
NovaRain 94dd41f7ac Relocated some functions in the previous commit
Added an additional 'Healing Item' flag to ext flags for item protos.

* indicates the item is a healing drug when AI needs to heal itself.
2021-08-18 12:03:58 +08:00
NovaRain e55db2b4da Added a fixed implementation of ai_check_drugs_ function
* which has all fixes/hook built-in.

Disabled old fixes for vanilla ai_check_drugs_ in AI.cpp/BugFixes.cpp.
2021-08-17 12:22:57 +08:00
NovaRain 3a0e64e3ce Added FadeBackgroundMusic option 2021-08-13 20:10:08 +08:00
NovaRain 638499b106 Code edits to ExtraSaveSlots.cpp
* the page numbering is now 0-indexed, to better align with the macros.

Re-numbered save slot control metarules.
2021-08-13 10:54:57 +08:00
NovaRain 5ef12b60c5 Changed the implementation of AutoQuickSave
* now it sets the number of pages used for quick saving.

Added related macros for controlling the save slot with scripts.
2021-08-12 15:07:24 +08:00
NovaRain 34ae106fa5 Improved the page control for ExtraSaveSlots
Minor edits to ddraw.ini.
2021-08-11 14:09:39 +08:00
NovaRain a34aa64ced Added AutoSearchSFX option for automatic search of SFX files
Excluded ANIM_walk from the debug log about missing critter art files.
2021-08-08 22:40:49 +08:00
NovaRain a26b7931a6 Minor edits to the previous commit 2021-08-06 00:54:20 +08:00
NovaRain 865adb7ee8 Fixed the main menu music stopped when entering load game screen
Added the ability to continuously play the music when moving to another
map that uses the same music.

Updated version number.
2021-08-05 14:18:02 +08:00
NovaRain d9bcad0a11 Removed the extra AP check when AI reloads a weapon
(reloading is possible if there are not enough action points.)
2021-08-01 07:12:47 +08:00
NovaRainandGitHub b744dfeb1b Merge pull request #399 from phobos2077/dependabot/bundler/docs/addressable-2.8.0
Bump addressable from 2.6.0 to 2.8.0 in /docs
2021-08-01 06:45:14 +08:00
dependabot[bot]andGitHub 42f909fcb4 Bump addressable from 2.6.0 to 2.8.0 in /docs
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.6.0 to 2.8.0.
- [Release notes](https://github.com/sporkmonger/addressable/releases)
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.6.0...addressable-2.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 18:08:13 +00:00
NovaRain 6a95cdf3ca Updated the documents in the previous commit 2021-07-07 09:26:41 +08:00
NovaRain da3cdd4698 Added markdown version of compiler documents 2021-07-05 10:01:48 +08:00
NovaRain 6402d616fa Merge branch 'master' into develop 2021-07-05 09:58:27 +08:00
NovaRain bd121c1dcd Attempted to fix the document website 2021-07-03 09:30:53 +08:00
NovaRain f9fa332b23 Added Brazilian Portuguese translation
(from Felipefpl)
2021-06-28 12:16:07 +08:00
NovaRain ec6d25da3d Release 4.3.0.2 2021-06-26 23:09:39 +08:00
NovaRain fc15a17d99 Updated french.ini (from HawK-EyE) 2021-06-26 23:08:32 +08:00
NovaRain 0a89ab4ceb Fixed the algorithm for sorting the quest list (#397) 2021-06-21 06:08:37 +08:00
NovaRain ecb113fd54 Fixed black screen after starting a new game w/o HRP (#395) 2021-06-20 08:37:42 +08:00
NovaRain e03d3f5963 Fixed item duplication bug in HOOK_INVENTORYMOVE (#396)
Code edits to Animations.cpp regarding locking anim slots.
Updated version number.
2021-06-20 02:05:29 +08:00
NovaRain dec97f22c7 Re-release 4.3.0.1 2021-06-10 08:44:55 +08:00
NovaRain 5682d9b12a Fixed code in Animations.cpp for commit 7c55d37 (#393, #394) 2021-06-10 08:40:05 +08:00
NovaRain 3177977927 Release 4.3.0.1 2021-06-10 00:39:24 +08:00
NovaRain 44c988f306 Minor code edits to BugFixes.cpp 2021-06-09 21:07:27 +08:00
NovaRain f8dee32c16 Code edits to tilemap.cpp and engine defines 2021-06-09 11:14:10 +08:00
NovaRain f96b1776b5 Fixed chem_primary_desire values not being saved correctly for PMs 2021-06-08 12:16:05 +08:00
NovaRain 38abea7fc1 Fixed infinite loop in combat with AIDrugUsePerfFix 2021-06-08 07:05:07 +08:00
NovaRain ff324c304f Fixed friendly fire check not running for unset area_attack_mode 2021-06-07 06:57:24 +08:00
NovaRain 7c55d37e57 Disabled the improved implementation of animation registration
(for release build)

Updated version number and Russian translation file.
2021-06-06 09:04:59 +08:00
NovaRainandGitHub 069020da85 Merge pull request #387 from wipe2238/github-action
Enabled autobuilds with GitHub Actions
2021-06-06 08:09:40 +08:00
Wipe cf67e182b3 Excluded DevXP build from artifact 2021-06-06 02:01:59 +02:00
NovaRainandGitHub fb74f37372 Merge pull request #384 from phobos2077/dependabot/bundler/docs/rubyzip-2.3.0
Bump rubyzip from 1.2.3 to 2.3.0 in /docs
2021-06-01 12:20:15 +08:00
NovaRainandGitHub 96de6c0bfd Merge pull request #383 from phobos2077/dependabot/bundler/docs/nokogiri-1.11.6
Bump nokogiri from 1.10.3 to 1.11.6 in /docs
2021-06-01 12:20:05 +08:00
dependabot[bot]andGitHub 415b3a8b17 Bump rubyzip from 1.2.3 to 2.3.0 in /docs
Bumps [rubyzip](https://github.com/rubyzip/rubyzip) from 1.2.3 to 2.3.0.
- [Release notes](https://github.com/rubyzip/rubyzip/releases)
- [Changelog](https://github.com/rubyzip/rubyzip/blob/master/Changelog.md)
- [Commits](https://github.com/rubyzip/rubyzip/compare/v1.2.3...v2.3.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 04:15:27 +00:00
dependabot[bot]andGitHub 7b02efad58 Bump nokogiri from 1.10.3 to 1.11.6 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.3 to 1.11.6.
- [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.10.3...v1.11.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-01 04:14:13 +00:00
NovaRain a19a9eae10 Release 4.3 2021-06-01 12:00:50 +08:00
NovaRain 443a423081 Some edits to documents
Removed txt version of arrays, hookscripts, and function notes.
2021-06-01 11:05:38 +08:00
NovaRain b665c904f1 Minor code edits 2021-06-01 09:51:59 +08:00
NovaRain a9a8088775 Added a debug message about missing combat object 2021-05-30 11:49:13 +08:00
NovaRain dbe2de310c Fixed incorrect object type search when loading a game saved in combat 2021-05-29 10:36:00 +08:00
NovaRain 1a40aceea3 Added markdown version of function notes and opcode list 2021-05-28 21:38:10 +08:00
NovaRain 09ab715687 Code edits to various modules 2021-05-28 11:35:26 +08:00
NovaRain 5e3f1eeaad Removed "proto_exists" function in previous commit
Added macro for checking pid.
2021-05-26 06:58:18 +08:00
NovaRain 1b37ed5d7c Added "proto_exists" script function
Updated gl_auto_closebox example script.
2021-05-25 12:55:11 +08:00
NovaRain 0b242a770d Changed the placement algorithm for multihex critters
(Rewrote the fix in the previous commit.)
2021-05-23 09:10:37 +08:00
NovaRain 4d1371b540 Fixed the placement of multihex critters in the player's party 2021-05-23 08:07:22 +08:00
NovaRain cb70bc78a3 Fixed infinite loop in ObjCanSeeObj_ShootThru_Fix (#365) 2021-05-22 08:04:11 +08:00
NovaRain e8abb99d0e Corrected code for initializing attached script (create_object_sid, #378) 2021-05-19 10:19:00 +08:00
NovaRain aee6ed1195 Rewrote the fix for clearing floating text messages (#377) 2021-05-19 06:22:37 +08:00
NovaRain 6b368e6a69 Updated files for online documents
Fixed typos in hookscripts.md & sslc_readme.txt.
2021-05-18 11:31:20 +08:00
NovaRain 9ce3a42102 Corrected code in Animations.cpp 2021-05-17 10:43:43 +08:00
NovaRain 73a9128369 Implemented an improved animation registration process 2021-05-16 13:05:38 +08:00
NovaRain dd4ad75e4e Fixed value bounds for the redefined key code value in HOOK_KEYPRESS
Minor code & document edits.
2021-05-15 21:54:59 +08:00
NovaRain 9497fae442 Code edits to Animations.cpp to prepare new implementation
Added fill area truncation to win_fill_color.
2021-05-13 12:03:23 +08:00
NovaRain 16f8f1b92b Fixed setting the last script window when the mouse leaves (#376) 2021-05-12 10:30:38 +08:00
NovaRain 6b7e83ab15 Rewrote the code in Animations.cpp
Fixed gl_auto_closebox not closing containers in some cases.
2021-05-11 10:43:06 +08:00
NovaRain fc53df5a16 Added a new hook: HOOK_CANUSEWEAPON
Updated NPC armor appearance mod script.
2021-05-09 20:17:40 +08:00
Wipe 35649839cf Added composite GitHub action and simple workflow using it 2021-05-09 06:48:20 +02:00
NovaRain 4f22b5a9fa Code correction to two previous commits 2021-05-09 08:42:28 +08:00
NovaRain f3f8321415 Enabled AI to use unarmed attack when switching weapons
Added build folders to gitignore.
2021-05-08 23:11:37 +08:00
NovaRain 183b74a8fa Moved item_count function fix to Game\items.cpp
Finished the code of item_weapon_mp_cost replacement.
2021-05-08 12:42:53 +08:00
NovaRain 6d88f21028 Added a tweak to play "magic hands" anim when using items on objs
* for issues with scripted animations not playing (#356)
2021-05-07 15:48:40 +08:00
NovaRain db0b8eddba Set idle(Sleep) function for losing window focus
Some code correction.
2021-05-06 10:36:06 +08:00
NovaRain 2985c2866b Added additional code to "duplicate obj_dude script data" fix 2021-05-04 12:39:07 +08:00
NovaRain eeab5065da Reverted the change of obj_under_cursor in 4.2.9 (commit 1684395)
The game window position is now also saved when dragging the window by
the title bar.
2021-05-02 12:06:53 +08:00
NovaRain 2e337d246b Adjusted how the fix for create_object_sid works
Added CreateObjectSidFix option.
2021-05-02 10:34:16 +08:00
NovaRain 7df0407798 Rewrote the score calculation in AIBestWeaponFix (#370)
Changed FastShotFix to be disabled by default.
2021-04-29 11:54:20 +08:00
NovaRain 52af67ad3d Added DisableSpecialAreas option
Added a new "fonts" folder for language specific fonts.
2021-04-25 11:49:02 +08:00
NovaRain b72b26d292 Added language path for loading fonts (#368)
Some code fixes to support the language path.
2021-04-24 10:25:51 +08:00
NovaRain 99c95b2154 Code correction regarding string length 2021-04-23 10:50:34 +08:00
NovaRain 0cd2aa4f83 Added language path for sfall translations.ini 2021-04-22 11:45:21 +08:00
NovaRain 460bc045b9 Added language path for premade files (#368)
Added AppIface.msg file support to Hero Appearance mod.
2021-04-21 11:28:48 +08:00
NovaRain 83eee2ba1e Code correction to the previous commit 2021-04-19 11:19:07 +08:00
NovaRain c855c6db19 Fixed and improved AllowLargeTiles option (#367)
Removed the unspent skill points limit.
2021-04-18 13:09:06 +08:00
NovaRain edd60379c5 Added a new value to AIDrugUsePerfFix 2021-04-14 16:18:33 +08:00
NovaRain 45faa184d8 Reorganized/renamed the functions in IniReader 2021-04-13 13:37:23 +08:00
NovaRain fbd997e8bc Fixed cur_town function on new game start (#366) 2021-04-13 12:08:45 +08:00
NovaRain df45450394 Fixed AI behavior to prevent the unnecessary use of healing drugs 2021-04-13 12:02:39 +08:00
NovaRain ea9037e38a Moved all ini functions inside "IniReader" class 2021-04-11 21:24:33 +08:00
NovaRain 2eefeb4f23 Improved the "order to attack" function for party members 2021-04-11 19:33:38 +08:00
NovaRain 278bfdc841 Added markdown version of hookscripts.txt
Some edits to documents.
2021-04-07 21:09:55 +08:00
NovaRain acf859bebf Cosmetic edits: alignment of multi-line ternary 2021-04-07 21:05:55 +08:00
NovaRain 0fbc29e8fd Added a new hook: HOOK_BESTWEAPON 2021-04-05 12:43:11 +08:00
NovaRain 990587b145 Code changes to the previous commit 2021-04-04 09:56:31 +08:00
NovaRain 4dc5012ea5 Added a few fixes for knockout/down issues 2021-04-03 12:35:42 +08:00
NovaRain 16faac8cad Cosmetic edits to the code:
* tabs for indentation, spaces for alignment.
* reduced the length of some separation comment lines.
* changed some variable names ('exist' is a verb).
2021-04-03 11:01:37 +08:00
NovaRain 69633e96d5 Added DL_FIX for logging
Edits to ddraw.ini and arrays.md.
2021-04-02 01:19:29 +08:00
NovaRain f90c613107 Improved some combat-related fixes
Changed the search of localized res file to two letter-code.
2021-04-01 13:40:00 +08:00
NovaRain 4244ebd8c5 Improved the implementation of tile_num_beyond function 2021-03-29 11:54:56 +08:00
NovaRain b37b5a2e76 Corrected the code in the previous commit 2021-03-28 08:43:26 +08:00
NovaRain 454e9bde73 Added a fixed implementation of the tile_num_beyond_ function
Removed the code of multihex critter self-hit fix from BugFixes.cpp.
(now fixed properly with the aforementioned implementation)
2021-03-28 00:54:04 +08:00
NovaRain 59a1332af5 Removed DataLoadOrderPatch from ddraw.ini (always enabled) 2021-03-26 12:16:20 +08:00
NovaRain a7b95e0948 Added a fix for multihex critter self-hit issue 2021-03-25 21:28:56 +08:00
NovaRain 78d8f46af6 Added "set_quest_failure_value" script function 2021-03-24 12:52:00 +08:00
NovaRain d56de64913 Added a search for localized sfall resource files 2021-03-23 11:03:20 +08:00
NovaRain 561632fdca Code correction to the previous commit 2021-03-23 09:44:17 +08:00
NovaRain 1cc978c0b1 Added a fix to the sorting of the quest list (#361)
Added a cosmetic to the dialog review interface.

Fixed a crash introduced in commit d95e439.
2021-03-22 14:24:45 +08:00
NovaRain 438bc6f78f Code edits to the weapon switching fix in AI.cpp
Added more struct defines and corrected related code.
2021-03-19 11:24:15 +08:00
NovaRain 9657731441 Fixed the error handling in create_object_sid
* also added a debug message about the missing pid.
2021-03-17 09:44:42 +08:00
NovaRain a343e5d6e1 Fixed a possible crash in commit d76f513
* when the proto does not exist, leading to null object pointer.
2021-03-16 09:20:53 +08:00
NovaRain bdebed85b7 Added a tweak to prevent NPC aggression (#357)
* when non-hostile NPCs accidentally hit the player or members of the
player's team.
2021-03-15 10:56:44 +08:00
NovaRain d76f513873 Fixed the script attached to an object not running upon object creation (#359)
Minor code style edits.
2021-03-14 11:01:03 +08:00
NovaRain e99fe09137 Moved INI reading functions from main.cpp to IniReader.cpp 2021-03-13 13:47:27 +08:00
NovaRain 21ff9238a0 Edited description of CheckWeaponAmmoCost and HOOK_AMMOCOST 2021-03-12 09:34:57 +08:00
NovaRain 4d04cae5a6 Fixed the check of the ammo cost for a shot in CheckWeaponAmmoCost (#360) 2021-03-11 14:39:21 +08:00
NovaRain d95e43956d Fixed set_critter_burst_disable script function
* now applies only to weapons with burst attack as the secondary mode.

Minor edits to code comments.
2021-03-10 11:52:09 +08:00
NovaRain 6b49c0dbaf Added markdown version of arrays.txt (test) 2021-03-05 23:44:38 +08:00
NovaRain f8447ba3b1 Added fixes for the AP cost for AI
* before the reload AP cost for AI was always 2, even if it's changed
by CALCAPCOST hook.
2021-03-05 15:07:34 +08:00
NovaRain af90444f9b Some code edits regarding BodyPart enums 2021-03-03 10:38:32 +08:00
NovaRain db94b8e6a7 Added a fix for AI weapon validation before attack
* the check was always based on the primary weapon hit mode instead of
the selected attack mode.
2021-03-02 12:10:14 +08:00
NovaRain 1f5871fdb7 Removed the fix added in commit 2efa4a9
reason: supposedly a minor issue affecting the initial movement of an
NPC, requires further verification before implementation due to
potential harm to the AI behavior.
2021-02-26 10:30:56 +08:00
burner1024andGitHub 5f0c5ae1fa Better docs (#241)
* website skeleton

* updated bunder to 2.0, added caching

* fix missing plugins?

* enable deploy for the branch, try to save cache

* need to use relative path?

* fix missing css

* use doc theme

* really enable doc theme?

* mayeb this time

* come on baby

* how about now

* please ?

* pretty please

* ehhh

* working theme

* added hooks

* formatting

* formatting 2

* added doc yaml from bgforge mls 1.0.7

* no need for nav order

* link reference

* hooks on top

* added global scripts

* pages are generated, exclude them

* generate site

* pip3 ?

* maybe now

* hooks page is generated automatically

* added table of contents to pages

* don't waste so much space

* switch highlight classes

* mark functions as code in description

* more formatting

* reformat doc with python

* loaded offsets

* opcode is loaded into yaml, txt no longer necessary

* mark unsafe functions

* restore hooks page

* clarification

* deduplicated hooks doc

* saner TOC

* typo

* move more docs

* hook scripts doc is now in md

* arrays doc is now in md

* added data types page

* added more info about old behaviour

* minor formatting issues

* moved more function docs to yaml

* all sfall functions docs are transpiled to yaml format

* formatting

* fix format

* add subcategory support

* simplified yaml format, added structure doc

* simplified structure and added clarification

* generated a separate page for hook types

* formatting

* disambiguation

* format clarification

* move get_map* to subcategory: doc is not relevant for other functions

* simple permalink

* fix links

* included more info on the main page

* more clarification

* rename offset > opcode

* try to get more sensible baseurl

* added best practices page

* what's up with the slashes

* allow parent pages with no content

* separate docs for direct memory access functions

* added latest functions

* fixed hook types link

* move get_explosion_damage to macros

* removed duplicated comment

* removed old comments

* added hook ids

* lowercase sfall

* more sfall lowercasing

* added proper permalinks

* changes from mr.stalin

* fix typos

* clarification

* fix direct memory access page

* fixed top navlink

* fixed urls

* checked sfallgv.sav, it's really not bloating much

* format clarification

* shorter name

* add mixed data type, sort

* add proc type, link hooks functions

* use same terminology

* added bool

* rearranged index

* added unsafe label

* move to root

* add stats

* more upper/lowercase

* should work now

* added build status

* added combat category, added description for modified_ini, moved global script functions into a subcat

* special note for set_self

* typo

* enable children

* cleanup

* move lists to arrays

* show header filename for macro instead

* rearrange more items to be more intuitive

* build on bionic

* separate object manipulation

* added object manipulation link to home

* typo

* formatting

* Added a note about charges

* punctuation

* formatting

* moved floor2 to math

* changed label color

* moved art and appearance to animations

* name too long

* search note

* moved exex_map_update to maps category

* moved more functions from other to skills

* too much blue

* formatting

* moved art_cache_clear to art section

* empathize that var name must be exactly 8 characters long

* update usages for inc_npc_level

* separate objects, scripts and variables

* updated url

* moved get_string_pointer to strings

* updated add_extra_msg_file doc

* typo

* latest doc updates from develop

* updated default layout from upstream

* applied local changes: subcategory list

* remove unnecessary backticks

* added new functions

* fix STD_PROCEDURE_END display

* formatting

* don't fail on missing hook id

* formatting

* updated doc from upstream

* added optimization and sslc pages

* order ssl and optimization pages below home

* really order optimization on top

* merge objects_in_radius variants

* updated from upstream

* tone down link color

* fixed formatting for updated theme

* updated travis for ruamel

* added favicon

* restored separator between functions

* updated functions.yml

* updated sfall functions

* rearranged some window and object function

* hook updates, pre-arg renaming

* hook args renumbering

* merged upstream

* added new hooks and functions from upstream

* remove the long-winded note about macro

* switch to gha for jekyll deployment

* sudo for deps

* try to fix ruamel missing

* switch build to master only, ref https://github.com/phobos2077/sfall/pull/241#discussion_r580365212

* update status badge for https://github.com/phobos2077/sfall/pull/241
2021-02-24 11:40:24 +03:00
NovaRain 5b3a83df91 Edits to hookscripts.txt
Added weapon argument to HOOK_CALCAPCOST.
2021-02-24 11:59:04 +08:00
NovaRain 797de4bc0e Fixed gl_auto_closebox for gravesites 2021-02-24 10:41:27 +08:00
NovaRain cf8981b267 Added more checks to weapon ammo script functions 2021-02-24 10:40:01 +08:00
NovaRain 146cf4e08b Moved some script function handlers to new files
Reorganized some script functions.
2021-02-24 10:37:54 +08:00
NovaRain 9d640de1ca Code correction related to GetProto usage 2021-02-20 10:16:23 +08:00
NovaRain 80a0c410e1 Removed "using namespace fo" from the global definition in .cpp files 2021-02-20 09:46:04 +08:00
NovaRain da9432a33a Added a tweak to restore combat flags for NPC after fleeing
Added item_weapon_range game function.
Improved the range check in previous commit.
2021-02-19 12:22:06 +08:00
NovaRain 5bd820f357 Code edits to a couple of fixes in AI.cpp
Renamed some hook functions.
2021-02-16 11:28:26 +08:00
NovaRain 95174b238e Fixed broken GetProto() function (again) 2021-02-10 23:51:42 +08:00
NovaRain 2efa4a91fb Fixed broken GetProto() function
Added a fix to prevent NPCs from wasting their AP to pick up
unreachable items.
2021-02-10 08:33:34 +08:00
NovaRain fb84e557fe Code edits in EngineUtils.cpp
Added comments to some defines in Enums.h.
2021-02-09 22:07:35 +08:00
NovaRain 3567ec791c Removed unnecessary code
Added some function/variable defines.
2021-02-09 10:39:41 +08:00
NovaRain 7e82313cf2 Added some tweaks for debug log
Code edits in SpeedPatch.cpp
2021-02-08 11:31:52 +08:00
NovaRain fe33dc2834 Rewrote ASM code of WorldMapFPSPatch in C++ 2021-02-07 21:11:12 +08:00
NovaRain 7c6f9df404 Moved the custom implementations of is_within_perception_ and correctFidForRemovedItem_ functions to separate files 2021-02-07 08:47:54 +08:00
NovaRain c86d816119 Preparing the code (part 1)
Moved item_w_mp_cost with hook to new items.cpp.
Updated struct/variable/function defines.
2021-02-06 11:00:31 +08:00
NovaRain 4b7d901275 Added OnCombatStart, OnCombatEnd delegates
Updated version number.
2021-02-06 10:51:23 +08:00
255 changed files with 17148 additions and 6082 deletions
+51
View File
@@ -0,0 +1,51 @@
name: Build
on:
push:
branches:
- 'develop'
- 'github-action'
paths:
- '.github/workflows/build.yml'
- 'action.yml'
- 'sfall/**'
jobs:
Build:
name: sfall
runs-on: windows-latest
steps:
- name: Clone sfall
uses: actions/checkout@v2
# Action is used twice for self-testing only
# DevXP build results are intentionally *not* included in artifact
- name: ReleaseXP build
id: build
uses: ./
with:
release-xp: true
- name: DevXP build
uses: ./
with:
dev-xp: true
- name: Prepare artifact
run: |
:
mkdir -p sfall-build
cp artifacts/ddraw.ini sfall-build
cp artifacts/sfall.dat sfall-build
cp "${{ steps.build.outputs.release-xp }}" sfall-build
shell: bash
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: sfall-build
path: sfall-build
retention-days: 14
+34
View File
@@ -0,0 +1,34 @@
name: github pages
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install dependencies
run: |
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
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/_site
user_name: 'github-actions[bot]'
user_email: 'github-actions[bot]@users.noreply.github.com'
+8
View File
@@ -55,8 +55,10 @@ nb-configuration.xml
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Dd]evXP
[Rr]elease/
[Rr]eleases/
[Rr]eleaseXP/
x64/
x86/
build/
@@ -222,3 +224,9 @@ FakesAssemblies/
# Visual Studio 6 workspace options file
*.opt
sfall/postbuild.cmd
# jekyll build files
docs/_site
docs/.sass-cache
docs/.jekyll-metadata
docs/pages/*.md
+1
View File
@@ -1,4 +1,5 @@
# sfall
[![github pages](https://github.com/phobos2077/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 form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
+138
View File
@@ -0,0 +1,138 @@
name: 'sfall'
description: 'Builds sfall binaries'
author: '@wipe2238'
###
#
# Example:
#
# - name: Build sfall
# id: sfall
# uses: phobos2077/sfall@develop
# with:
# release-xp: true
#
# - name: Copy sfall to mod directory
# run: copy "${{ steps.sfall.outputs.release-xp }}" "my/mod/directory/ddraw.dll"
#
###
# While both inputs are marked as required, users needs to set only one of them (at minimum) to 'true' for action to work
inputs:
release-xp:
description: 'Set to true to enable building with ReleaseXP configuration'
required: true
dev-xp:
description: 'Set to true to enable building with DevXP configuration'
required: true
# Outputs are always using Windows directory separator (`\`)
outputs:
release-xp:
description: 'Full path to ddraw.dll built with ReleaseXP configuration'
value: ${{ steps.build-release-xp.outputs.ddraw-dll }}
dev-xp:
description: 'Full path to ddraw.dll built with DevXP configuration'
value: ${{ steps.build-dev-xp.outputs.ddraw-dll }}
dev-xp-pdb:
description: 'Full path to ddraw.pdb built with DevXP configuration'
value: ${{ steps.build-dev-xp.outputs.ddraw-pdb }}
runs:
using: 'composite'
steps:
# Quick check for things which should never happen
- name: Sanity checks
run: |
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
echo "[ERROR] At least one of following inputs must be set to 'true' -- 'release-xp', 'dev-xp'"
exit 1
#
elif [[ ! -d "$(cygpath --unix "$GITHUB_ACTION_PATH/sfall/")" ]]; then
echo "[ERROR] Solution directory not found -- 'sfall\\'"
exit 1
elif [[ ! -f "$(cygpath --unix "$GITHUB_ACTION_PATH/sfall/ddraw.sln")" ]]; then
echo "[ERROR] Solution file not found -- 'sfall\\ddraw.sln'"
exit 1
fi
#
shell: bash
# 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
- name: Prepare DXSDK directory
id: dxsdk
run: |
DXSDK_DIR="$GITHUB_ACTION_PATH/sfall/DXSDK.lib"
if [[ ! -d "$DXSDK_DIR" ]]; then
echo "::group::Prepare DXSDK directory"
#
git clone --quiet https://github.com/NovaRain/DXSDK_Collection.git "$DXSDK_DIR"
cp "$DXSDK_DIR/DXSDK_Aug2007/Lib/x86/dinput.lib" "$DXSDK_DIR/DXSDK_Jun2010/Lib/x86/"
#
echo "::endgroup::"
fi
echo "::set-output name=dir::$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")"
shell: bash
# MSBuild is not in PATH on Windows machines
# Using `::set-output` to make sure workflow environment remains unchanged
- name: Prepare MSBuild
id: msbuild
run: |
echo "::group::Prepare MSBuild"
MSBUILD_EXE="$("/c/Program Files (x86)/Microsoft Visual Studio/Installer/vswhere.exe" -latest -requires Microsoft.Component.MSBuild -find MSBuild/**/Bin/MSBuild.exe)"
echo "::set-output name=exe::$MSBUILD_EXE"
echo "::endgroup::"
shell: bash
# Creating empty `PostBuild.cmd` to avoid false-positive build error
- name: Build ReleaseXP
id: build-release-xp
run: |
if [[ "${{ inputs.release-xp }}" == "true" ]]; then
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 "::set-output name=ddraw-dll::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/ReleaseXP/ddraw.dll")"
echo "::endgroup::"
fi
env:
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: |
:
if [[ "${{ inputs.dev-xp }}" == "true" ]]; then
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 "::set-output name=ddraw-dll::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.dll")"
echo "::set-output name=ddraw-pdb::$(cygpath --windows "$GITHUB_ACTION_PATH/sfall/DevXP/ddraw.pdb")"
echo "::endgroup::"
fi
env:
DXSDK_DIR: ${{ steps.dxsdk.outputs.dir }}
shell: bash
+1 -1
View File
@@ -11,7 +11,7 @@ TagSkillBonus=20
;Set to 3 to use both modes
TagSkillMode=0
;Set to 1 to base skill costs on spent points instead of current level
;Set to 1 to base skill costs on the number of additional points in a skill instead of the current level
BasedOnPoints=0
;Examples
+18 -1
View File
@@ -4,7 +4,7 @@ KarmaGain=You gained %d karma.
KarmaLoss=You lost %d karma.
HighlightFail1=You aren't carrying a motion sensor.
HighlightFail2=Your motion sensor is out of charge.
SuperStimExploitMsg=You cannot use a super stim on someone who is not injured!
SuperStimExploitMsg=You cannot use this item on someone who is not injured!
BlockedCombat=You cannot enter combat at this time.
SaveSfallDataFail=ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again.
PartyLvlMsg=Lvl:
@@ -20,3 +20,20 @@ PartyOrderAttackRobot=::Beep::
RaceText=Race
StyleText=Style
DoneBtn=Done
;Custom names for player's unarmed attacks (max 16 characters)
[Unarmed]
;Punch=Punch:
;Kick=Kick:
;StrongPunch=Strong Punch:
;HammerPunch=Hammer Punch:
;Haymaker=Haymaker:
;Jab=Jab:
;PalmStrike=Palm Strike:
;PiercingStrike=Piercing Strike:
;StrongKick=Strong Kick:
;SnapKick=Snap Kick:
;PowerKick=Power Kick:
;HipKick=Hip Kick:
;HookKick=Hook Kick:
;PiercingKick=Piercing Kick:
+13
View File
@@ -0,0 +1,13 @@
;Game engine tweaks
[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
;Note: Starting from sfall 4.3.1/3.8.31, you can set a new flag (FlagsExt: 0x04000000)
;in the proto for other items, so AI will use them for healing in combat as well
STIMPAK=40
SUPER_STIMPAK=144
HEALING_POWDER=237
+66
View File
@@ -0,0 +1,66 @@
; This file lets you configure the requirements and effects of unarmed attacks
; You can leave the value empty or omit the parameter to use the engine default value
; Strong Punch
[8]
ReqLevel=1 ; required player level
SkillLevel=55 ; required Unarmed skill level
; Required stats
Stat0=0 ; ST
Stat1=0 ; PE
Stat2=0 ; EN
Stat3=0 ; CH
Stat4=0 ; IN
Stat5=6 ; AG
Stat6=0 ; LK
MinDamage=1
MaxDamage=2
BonusDamage=3 ; bonus damage added to the minimum and maximum damage
BonusCrit=0 ; value of the critical hit chance
APCost=
Penetrate=0 ; set to 1 to make the attack reduce target's armor DT (the formula is determined by the engine or a hook script)
Secondary=0 ; set to 1 to assign the attack to the secondary mode (be careful when setting this parameter)
; Hammer Punch
[9]
; Haymaker
[10]
; Jab
[11]
; Palm Strike
[12]
; Piercing Strike
[13]
; Strong Kick
[14]
; Snap Kick
[15]
; Power Kick
[16]
; Hip Kick
[17]
; Hook Kick
[18]
; Piercing Kick
[19]
; Default attacks (any requirements are ignored)
; Punch
[4]
; Kick
[5]
+137 -96
View File
@@ -1,32 +1,32 @@
;sfall configuration settings
;v4.2.9
;v4.3.2
[Main]
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
UseCommandLine=0
;Uncomment and point to a file to get alternate translations for some sfall messages
;This file can be placed in text\<language>\ for sfall to get the translations depending on the game language
;TranslationsINI=sfall\Translations.ini
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[ExtraPatches]
;This section allows you to set multiple paths to folders containing mods or patches that will be loaded by the game
;The priority of read files will be higher than the files in patchXXX.dat
;If DataLoadOrderPatch is enabled, the data load order will be:
;master_patches > critter_patches > PatchFile99 - PatchFile0 > patchXXX.dat > ...
;Paths to folders and Fallout .dat files are supported. The available range for PatchFile option names is from 0 to 99
;The greater numbers take precedence over lesser numbers
;If DataLoadOrderPatch is enabled, the data load order is:
;master_patches > critter_patches > PatchFile99..PatchFile0 > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
;Paths to folders and Fallout .dat files are supported
;The PatchFile## options are available from 0 to 99. Larger numbers take precedence over smaller numbers (same as patchXXX.dat)
;PatchFile0=mods\RP_data
;Path to the folder in which the game will automatically search and load custom files (by *.dat mask, including folders)
;The data load order of the files in the folder will be in reverse alphabetical order of the filenames
;The files placed in this folder will have higher priority than the PatchFileXX options
;This option has no effect in v4.2.6 or later. The default path is <GameRoot>\mods\
;The files placed in this folder will have higher priority than the PatchFile## options
;This option has no effect in 4.2.6 or later. The path is fixed to <GameRoot>\mods\
;AutoSearchPath=mods
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Speed]
;Set to 0 to disable everything in this section
;Set to 1 to enable options related to the game speed adjustment (SpeedMulti#, SpeedKey#, SpeedModKey, and SpeedToggleKey)
Enable=1
;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed)
@@ -44,9 +44,6 @@ SpeedMulti9=900
;The initial speed at game startup
SpeedMultiInitial=100
;Set to 1 to also affect the playback speed of MVE video files without an audio track
AffectPlayback=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Graphics]
;Set to 0 for 8 bit fullscreen
@@ -64,8 +61,8 @@ GraphicsWidth=0
GraphicsHeight=0
;Window position data. Do not modify
;Set to 0 to reset if the window position is incorrect
WindowData=0
;Set to -1 or 0 to reset if the window position is incorrect
WindowData=-1
;Uncomment the option to use a hardware shader (requires DX9 graphics mode)
;The shader file <name>.fx must be placed in <GameRoot>\<master_patches>\shaders\ and must contain one technique with one or more passes
@@ -116,7 +113,7 @@ ExpandWorldMap=0
;Set to 1 to draw a dotted line while traveling on the world map (similar to Fallout 1)
WorldMapTravelMarkers=0
;Uncomment these lines to change the appearance of the markers
;The color index in Fallout default palette (valid range: 1..255; default is 134)
;The color index in Fallout default palette (valid range: 1..228; default is 134)
;TravelMarkerColor=134
;The length and spacing of the dots in pixels for each type of terrain in worldmap.txt
;Syntax is 'length:spacing', with each pair separated by a comma (valid range: 1..10; default is 2)
@@ -131,6 +128,9 @@ WorldMapTerrainInfo=0
;Set to 0 to leave the default unchanged (i.e. 4). The maximum is 32
NumSoundBuffers=0
;Set to 1 to enable fade effects for background music when stopping and starting the playback
FadeBackgroundMusic=1
;Set to 1 to allow attaching sound files to combat float messages
AllowSoundForFloats=0
@@ -143,13 +143,18 @@ AllowDShowSound=0
;Set to 2 to overwrite all occurrences of the music path
OverrideMusicDir=1
;Set to 1 to automatically search for new SFX sound files at game startup
;Note: With this option enabled, you will no longer need to use the utility regsnd.exe to register new SFX sounds
;This will slightly increase the startup time of the game on older computers
AutoSearchSFX=1
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Input]
;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens
UseScrollWheel=1
;The mouse Z position is divided by this modifier to calculate the number of inventory
;slots to scroll. My mouse moves 120 pixel in the z direction for one click of the mouse
;slots to scroll. My mouse moves 120 pixels in the z direction for one click of the mouse
;wheel, but this may vary depending on your mouse manufacturer and windows settings.
;Set to 0 to only ever scroll 1 click
ScrollMod=0
@@ -159,9 +164,9 @@ ScrollMod=0
MouseSensitivity=100
;DX scancode of a key to press when the middle mouse button is clicked
;The default of 0x30 toggles between your two weapons
;The default of 48 ('B' key) toggles between your active items
;Set to 0 to disable
MiddleMouse=0x30
MiddleMouse=48
;Set to 1 to reverse the left and right mouse buttons
ReverseMouseButtons=0
@@ -226,7 +231,7 @@ DebugEditorKey=0
Fallout1Behavior=0
;Time limit in years. Must be between -3 and 13
;Set to 0 if you want to die the instant you leave arroyo
;Set to 0 if you want to die the instant you leave Arroyo
;Set to -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it
;Set to -2 or -3 to remove the time limit, automatically reset the date, but override Fallout's GetDate function to return the correct year
TimeLimit=13
@@ -240,6 +245,7 @@ WorldMapTimeMod=100
WorldMapFPSPatch=1
;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement
;Default is 66 milliseconds
WorldMapDelay2=66
;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed
@@ -262,7 +268,7 @@ WorldMapSlots=0
;To use a config file other than fallout2.cfg, uncomment the next line and add the name of your new file
;ConfigFile=
;Set to 1 to enable functions relating to overriding the file system
;Set to 1 to enable script functions relating to overriding the file system
UseFileSystemOverride=0
;To use a patch file other than patch000.dat, uncomment the next line and add your new file name
@@ -272,7 +278,8 @@ UseFileSystemOverride=0
;Set to 1 to use the modified data load order for the engine to find game data
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
DataLoadOrderPatch=1
;This option is always enabled in 4.3/3.8.30 or later. The information is left for reference only
;DataLoadOrderPatch=1
;Set to 1 to load alternative dialog msg files from text\<language>\dialog_female\ for female PC
;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC
@@ -365,11 +372,11 @@ ViewYPos=-1
;Set to 1 to force Fallout not to use multiple processor cores even if they are available
SingleCore=1
;Set to 1 to override the art_chache_size setting in fallout2.cfg
;Set to 1 to override the art_cache_size setting in fallout2.cfg
OverrideArtCacheSize=0
;Prevents you from saving in combat except at the start of your turn to avoid a few bugs
;Note that even with this option enabled, it is still not advisable to save in combat at all (obsolete information)
;Note that even with this option enabled, it is still not advisable to save in combat
;Set to 2 to block all saving in combat
SaveInCombatFix=1
@@ -377,7 +384,7 @@ SaveInCombatFix=1
;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
;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'
AdditionalWeaponAnims=1
@@ -419,7 +426,7 @@ 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 127
;Set to 1 (or some higher number if needed) to prevent 100% CPU use. The maximum is 30
ProcessorIdle=-1
;Set to 1 if using the hero appearance mod
@@ -436,17 +443,9 @@ SkipOpeningMovies=0
;Set to 0 to disable
NPCsTryToSpendExtraAP=0
;Set to 1 to fix NPCs not checking weapon perks properly when choosing the best weapon in combat
;Set to 2 to change the priority multiplier for having weapon perk to 3x (the original is 5x)
;Note that enabling this option can significantly affect the weapon of choice for some NPCs
AIBestWeaponFix=0
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as drug use preference when using drugs in their inventory
AIDrugUsePerfFix=0
;Allows the use of tiles over 80x36 in size. sfall will just split and resave them at startup
;Set to 1 to check all tiles on started (slow)
;Set to 2 if you provide a XLtiles.lst file in art\tiles\ containing a list of the tile ids that need checking
;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
@@ -491,12 +490,13 @@ UseScrollingQuestsList=1
ExtraSaveSlots=0
;To use more than one save slot for quick saving (F6 key) without picking a slot beforehand, set the next two lines
;AutoQuickSave sets how many save slots on a page you want to use for quick saving (valid range: 1..10)
;AutoQuickSavePage is the page number to use (valid range: 1..1000) if ExtraSaveSlots is enabled
;The quick saves will be rotated from the first slot on the page to the n-th slot
;Set to 0 to disable. AutoQuickSave will use the current selected page if AutoQuickSavePage is disabled
;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)
;Set to 0 to disable
AutoQuickSave=0
AutoQuickSavePage=0
;AutoQuickSavePage is the page number to start at if ExtraSaveSlots is enabled (valid range: 0..999)
;Set to -1 to use the current selected page (not recommended)
AutoQuickSavePage=1
;Set to 1 to speed up the HP/AC counter animations
;Set to 2 to update the HP/AC counters instantly
@@ -541,11 +541,11 @@ RemoveCriticalTimelimits=0
;MainMenuBigFontColour=0x3C
;Alternative behaviors to the Fast Shot trait
;0 - Fallout 2 original behavior: -1 AP cost for ranged weapons; aimed attacks are disabled
;1 - Haenlomal's fix: aimed attacks are enabled for melee/unarmed weapons and HtH attacks
;0 - Fallout 2 original behavior: -1 AP cost for ranged weapons. Aimed attacks are disabled
;1 - Haenlomal's tweak: aimed attacks are enabled for melee/unarmed weapons and HtH attacks
;2 - Alternative behavior: apply -1 AP cost to melee/unarmed weapons and HtH attacks
;3 - Fallout 1 original behavior: -1 AP cost for all weapons; aimed attacks are disabled
FastShotFix=1
;3 - Fallout 1 original behavior: -1 AP cost for all weapons. Aimed attacks are disabled
FastShotFix=0
;Set to 1 to fix the carry weight penalty of the Small Frame trait not being applied to bonus Strength points
SmallFrameFix=0
@@ -559,7 +559,7 @@ BoostScriptDialogLimit=0
;Add 4 to the mode to limit the weight check to used items only
;You can use message number 542/543 in proto.msg and message number 35 in inventry.msg to set up custom messages for item size
CritterInvSizeLimitMode=0
CritterInvSizeLimit=100
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
@@ -588,27 +588,6 @@ SuperStimExploitFix=0
InventoryApCost=4
QuickPocketsApCostReduction=2
;Set to 1 to fix obj_can_see_obj script function to allow critters to see through objects with 'ShootThru' flag set and other critters in front of them
;Note that enabling this option can cause unexpected NPC behavior in some cases, e.g. initiating combat or dialogue when the player is behind certain obstacles
ObjCanSeeObj_ShootThru_Fix=0
;Set to 1 to fix the broken obj_can_hear_obj script function
ObjCanHearObjFix=0
;Set to 1 to enable the mood argument of start_gdialog script function to be available for talking heads
;If the argument value is -1, the mood will be determined by the local variable 0 of the script (vanilla behavior)
StartGDialogFix=0
;Set to 1 to fix attacker_results/target_results arguments and repurpose the unused called_shot/num_attacks arguments of attack_complex script function
;New behavior of the arguments:
;called_shot - additional damage when hitting the target
;num_attacks - the number of free action points on the first turn only
AttackComplexFix=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
DivisionOperatorFix=1
;Set to 1 to enable the balanced bullet distribution formula for burst attacks
ComputeSprayMod=0
@@ -640,9 +619,11 @@ ExplosionsEmitLight=0
;Set to 1 to enable the new arrays behavior (default behavior)
;Set to 0 for backward compatibility with pre-3.4 scripts
arraysBehavior=1
ArraysBehavior=1
;Set to 1 to add proper checks if there is enough ammo to use weapons that use multiple ammo per shot
;Set to 1 to add proper check for ammo before attacking and proper calculation of the number of burst rounds
;By default, weapons can make attacks when at least one ammo is left, regardless of ammo cost calculations
;Note that enabling this option will prevent super cattle prods and mega power fists from attacking with only one ammo left
CheckWeaponAmmoCost=0
;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535)
@@ -672,7 +653,7 @@ EnableMusicInDialogue=0
DontTurnOffSneakIfYouRun=0
;Changes the distance at which the player will switch to walking when trying to use objects (valid range: 0..3)
;Set to 0 to disable switching. (Default is 3)
;Default is 3. Set to 0 to disable switching
UseWalkDistance=3
;Changes the displayed message when you recover from the negative effects of radiation exposure
@@ -685,14 +666,6 @@ 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 fix the issue with being able to charge the car by using cells on other scenery/critters
;Set to 0 if another mod you're using has custom vehicles
CarChargingFix=1
;Set to 1 to prevent the car from being lost when entering a location via the Town/World button and then leaving on foot
;Note that the global variable 633 (GVAR_CAR_PLACED_TILE) will be set to -1 when the player leaves a location
CarPlacedTileFix=1
;Set to 1 to skip weapon equip/unequip animations when performing various actions
InstantWeaponEquip=0
@@ -722,25 +695,10 @@ DisplaySwiftLearnerExp=1
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
PartyMemberExtraInfo=0
;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 apply his/her skills when you use First Aid/Doctor skills on the player, but only if
;the player is standing next to the party member
;Note that because the related engine function is not fully implemented, enabling this option without a global script
;that overrides First Aid/Doctor functions has very limited usefulness
PartyMemberSkillFix=0
;Set to 1 to skip loading all game settings except the game/combat difficulty from saved games
;Set to 2 to also skip loading the game/combat difficulty settings
SkipLoadingGameSettings=0
;Overrides the global variable number used to show the special death message of the Modoc toilet explosion
;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
;Note that enabling this option can break the map changes in Modoc and Vault 15
DisableSpecialMapIDs=0
;Changes the base value of the duration of the knockout effect (valid range: 35..100; default is 35)
;The formula for the duration in ticks is: 10 * (value - 3 * EN)
KnockoutTime=35
@@ -748,6 +706,79 @@ KnockoutTime=35
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
CreditsAtBottom=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Critical modding options - the following options should be changed with caution
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenery/critters
;Set to 0 if another mod you're using has custom vehicles
CarChargingFix=1
;Set to 1 to prevent the car from being lost when entering a location via the Town/World button and then leaving on foot
;Note that the global variable 633 (GVAR_CAR_PLACED_TILE) will be set to -1 when the player leaves a location
CarPlacedTileFix=1
;Set to 1 to fix obj_can_see_obj script function to allow critters to see through objects with 'ShootThru' flag set and other critters in front of them
;Note that enabling this option can cause unexpected NPC behavior in some cases, e.g. initiating combat or dialogue when the player is behind certain obstacles
ObjCanSeeObj_ShootThru_Fix=0
;Set to 1 to fix the broken obj_can_hear_obj script function
ObjCanHearObjFix=0
;Set to 1 to enable the 'mood' argument of start_gdialog script function for talking heads
;If the argument value is -1, the mood will be determined by the local variable 0 of the script (vanilla behavior)
StartGDialogFix=0
;Set to 1 to fix attacker_results/target_results arguments and repurpose the unused called_shot/num_attacks arguments of attack_complex script function
;New behavior of the arguments:
;called_shot - additional damage when hitting the target
;num_attacks - the number of free action points on the first turn only
AttackComplexFix=0
;Set to 1 to make the create_object_sid script function run the 'start' procedure of attached script upon object creation
;By default, the 'start' procedure of attached script is executed after the current script procedure is finished
;Note that enabling this option may cause unexpected results with some existing game scripts
CreateObjectSidFix=0
;Set to 1 to fix the execution of the 'use_p_proc' procedure for grave type containers when they are in the open state
;By default, using open graves does not run the 'use_p_proc' procedure of attached script like other containers
;Note that enabling this option will cause problems for existing grave scripts
GraveContainersFix=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
DivisionOperatorFix=1
;Set to 1 to fix the priority score calculation for choosing the best weapon for NPCs
;Note that enabling this option can affect the weapon of choice for some NPCs
AIBestWeaponFix=1
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as a preference list when using drugs in their inventory
;Set to 2 to allow NPCs to use only the drugs listed in chem_primary_desire and healing drugs (stimpaks and healing powder)
;Note: chem_primary_desire w/o fixes prevents the specified item PID from being consumed if all three values in the list are the same PID
;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
;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 apply his/her skills when you use First Aid/Doctor skills on the player, but only if
;the player is standing next to the party member
;Note that because the related engine function is not fully implemented, enabling this option without a global script
;that overrides First Aid/Doctor functions has very limited usefulness
PartyMemberSkillFix=0
;Overrides the global variable number used to show the special death message of the Modoc toilet explosion
;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
;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:
;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
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Configuration ini files
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
@@ -763,7 +794,8 @@ CreditsAtBottom=0
;Point the next line to an ini file containing the replacement skill data
;SkillsFile=sfall\Skills.ini
;To add additional perks to the game, uncomment the next line and set it to point to a file containing perk information
;To add additional perks to the game, uncomment the next line and point to a file containing perk information
;See the Perks.ini in the modders pack for an example file
;PerksFile=sfall\Perks.ini
;To add additional books to the game, uncomment the next line and point to a file containing book information
@@ -777,6 +809,13 @@ CreditsAtBottom=0
;Point to an ini file containing elevator data
;ElevatorsFile=sfall\Elevators.ini
;Allows you to change the requirements and effects of unarmed attacks
;See the Unarmed.ini in the modders pack for an example file
;UnarmedFile=sfall\Unarmed.ini
;To change some engine parameters for the game mechanics, uncomment the next line
;TweaksFile=sfall\Tweaks.ini
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Scripts]
;Comma-separated list of masked paths to load global scripts from
@@ -851,10 +890,12 @@ Test_ForceFloats=0
;These options control what output is saved in the debug log (sfall-log.txt)
;Prints messages duing sfall initialization
Init=0
Init=1
;Prints messages relating to hook scripts
Hook=0
;Prints messages relating to scripting
Script=0
;Prints messages relating to the critical table
Criticals=0
Criticals=1
;Prints messages relating to engine fixes
Fixes=1
@@ -13,8 +13,10 @@ Requires sfall 4.2.2/3.8.29 or higher
#include "..\headers\sfall\define_extra.h"
procedure start;
procedure close;
variable lootObject;
variable closeObject;
procedure start begin
if (game_loaded) then begin
@@ -26,8 +28,14 @@ procedure start begin
lootObject := loot_obj;
if (obj_type(lootObject) != OBJ_TYPE_ITEM) then lootObject = 0;
end else if (lootObject andAlso get_sfall_arg_at(1) == INTFACELOOT) then begin
obj_close(lootObject);
lootObject = 0;
if (get_object_data(lootObject, OBJ_DATA_CUR_FRM) > 1) then begin
closeObject = lootObject;
call close in 0;
end
end
end
end
procedure close begin
obj_close(closeObject);
end
Binary file not shown.
Binary file not shown.
+16 -3
View File
@@ -9,7 +9,7 @@
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.1
version 1.4
*/
@@ -21,6 +21,7 @@
#define FID_OBJ_CRITTER (0x01000000)
procedure update_armor_apperance;
procedure canuseweapon_handler;
variable
modIni := "npcarmor.ini",
@@ -77,13 +78,13 @@ procedure check_weapon_change(variable critter, variable weapon, variable isWiel
end
/*
Finds the first weapon which can be used by the party member in the inventory
Finds the first weapon that can be used by the party member in the inventory
*/
procedure search_alt_weapon(variable critter) begin
variable obj, res, i := 0;
obj := inven_ptr(critter, 0);
while (obj) do begin
if (obj_item_subtype(obj) == item_type_weapon) then begin
if (obj_item_subtype(obj) == item_type_weapon and weapon_is_unusable(obj) == false) then begin
if (unWieldWeapon == 0 or unWieldWeapon != obj_pid(obj)) then begin
res := check_weapon_change(critter, obj, 1);
if (res == -1) then begin
@@ -203,6 +204,7 @@ procedure start begin
register_hook_proc(HOOK_INVENWIELD, invenwield_handler);
register_hook_proc(HOOK_ADJUSTFID, adjustfid_handler);
register_hook_proc(HOOK_INVENTORYMOVE, inventorymove_handler);
register_hook_proc_spec(HOOK_CANUSEWEAPON, canuseweapon_handler);
debug_msg("NPC armor appearance mod: Done.");
end
@@ -220,3 +222,14 @@ procedure update_armor_apperance begin
end
end
end
procedure canuseweapon_handler begin
variable critter, canWield;
critter := get_sfall_arg;
if (critter != dude_obj and get_sfall_arg_at(3)) then begin
canWield := check_weapon_change(critter, get_sfall_arg, true);
// override result
set_sfall_arg(3, canWield);
set_sfall_return(canWield);
end
end
Binary file not shown.
+58 -32
View File
@@ -7,7 +7,7 @@
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.1
version 1.2
*/
@@ -17,9 +17,11 @@
#define OBJ_DATA_LIGHT_DISTANCE (0x6C)
#define OBJ_DATA_LIGHT_INTENSITY (0x70)
#define PID_PLAYER (16777216)
procedure start;
procedure AllowControl(variable pid);
procedure SetLight(variable critter, variable int, variable dist);
procedure CombatTurn_Handler;
procedure GameModeChange_Handler;
procedure InventoryMove_Handler;
@@ -31,12 +33,17 @@ variable
pidList, perksList,
lightInt, lightDist, npcControl,
displayName, displayNameColor, isShowTag,
inControl := false;
inControl := false,
dudeLightInt, dudeLightDist;
procedure AllowControl(variable pid) begin
if (noCheckArray or scan_array(pidList, pid bwand 0xFFFFFF) != -1) and (party_member_obj(pid)) then return true;
return false;
return ((pidList == 0 or scan_array(pidList, pid bwand 0xFFFFFF) != -1) and (party_member_obj(pid)));
end
procedure SetLight(variable critter, variable lInt, variable lDist) begin
if (lInt) then lInt := round((lInt / 65536.0) * 100); // calc percent of intensity
obj_set_light_level(critter, lInt, lDist); // TODO: make sfall obj_set_light_level function
end
procedure CombatTurn_Handler begin
@@ -46,67 +53,82 @@ procedure CombatTurn_Handler begin
pid, perkID, level;
//display_msg("Combat Turn: " + status + ", by " + obj_name(critter) + "/" + critter + ", arg3: " + get_sfall_arg);
if npcControl then begin
if lightInt then lightInt := round((lightInt / 65536.0) * 100); // calc percent of intensity
obj_set_light_level(npcControl, lightInt, lightDist); // restore light for prev. controlled NPC
end
pid := obj_pid(critter);
if (status == 1 and (AllowControl(pid) or controlMode == 1)) then begin
if (pid == PID_PLAYER and inControl == false) then return;
if (pid != PID_PLAYER and controlMode != 1 and AllowControl(pid) == false) then return;
if (status == 1) then begin
set_dude_obj(critter);
//display_msg("Take control of: " + obj_name(critter));
if (critter != real_dude_obj) then begin
if not(npcControl) then obj_set_light_level(real_dude_obj, 0, 0); // dude off light
if (npcControl == 0) then begin
dudeLightDist := get_object_data(real_dude_obj, OBJ_DATA_LIGHT_DISTANCE);
dudeLightInt := get_object_data(real_dude_obj, OBJ_DATA_LIGHT_INTENSITY);
obj_set_light_level(real_dude_obj, 0, 0); // dude off light
end
npcControl := critter;
lightDist := get_object_data(critter, OBJ_DATA_LIGHT_DISTANCE);
lightInt := get_object_data(critter, OBJ_DATA_LIGHT_INTENSITY);
// set perks (only work with 4.1.8+)
foreach (perkID in perksList) begin
level := has_trait(TRAIT_PERK, real_dude_obj, perkID);
if (level) then critter_add_trait(critter, TRAIT_PERK, perkID, level);
end
intface_redraw;
lightDist := get_object_data(critter, OBJ_DATA_LIGHT_DISTANCE);
lightInt := get_object_data(critter, OBJ_DATA_LIGHT_INTENSITY);
obj_set_light_level(critter, 100, 4);
inControl := true;
end else if npcControl then begin
obj_set_light_level(dude_obj, 100, 4); // set dude default light
end else if (npcControl) then begin
call SetLight(dude_obj, dudeLightInt, dudeLightDist); // restore dude light
npcControl := 0; // dude control
end
if inControl then begin
if (inControl) then begin
// check preference setting _combat_highlight
if (read_byte(0x56D38C)) then set_outline(critter, OUTLINE_GREY);
if (read_byte(0x56D38C)) then set_outline(critter, OUTLINE_GREY); // TODO: replace read_byte with normal function
// center the screen on the controlled critter/dude and remove roof tiles
move_to(dude_obj, dude_tile, dude_elevation);
if (displayName and critter != real_dude_obj) then begin
set_iface_tag_text(displayName, obj_name(critter), displayNameColor);
show_iface_tag(displayName);
isShowTag := true;
end
end
end else if inControl then begin
end else begin
if (npcControl) then begin
call SetLight(critter, lightInt, lightDist); // restore light for controlled NPC
end
if (isShowTag) then begin
hide_iface_tag(displayName);
isShowTag := false;
end
// remove perks before switching control (only work with 4.1.8+)
if (dude_obj != real_dude_obj) then begin
foreach (perkID in perksList) begin
level := has_trait(TRAIT_PERK, real_dude_obj, perkID);
if (level) then critter_rm_trait(critter, TRAIT_PERK, perkID, level);
end
set_dude_obj(0); // w/o redraw interface bar
//display_msg("Return control to real dude!");
end
if isShowTag then begin
hide_iface_tag(displayName);
isShowTag := false;
end
if (status < 0 or AllowControl(pid) == false) then begin
if (dude_obj != real_dude_obj) then begin
set_dude_obj(real_dude_obj);
obj_set_light_level(dude_obj, 100, 4);
npcControl := 0;
end
if (status < 0) then begin
set_dude_obj(real_dude_obj);
call SetLight(dude_obj, dudeLightInt, dudeLightDist); //obj_set_light_level(dude_obj, 100, 4);
end
end
end
procedure GameModeChange_Handler begin
if (inControl and not(get_game_mode BWAND COMBAT)) then begin
if (inControl and (get_game_mode bwand COMBAT) == 0) then begin
inControl := false;
npcControl := 0;
move_to(dude_obj, dude_tile, dude_elevation);
@@ -137,7 +159,7 @@ end
procedure start begin
if (game_loaded and sfall_ver_major >= 4) then begin
variable configSection := "CombatControl";
//variable configSection := "CombatControl";
set_perk_ranks(PERK_gecko_skinning_perk, 1);
set_perk_level(PERK_gecko_skinning_perk, 999); // prevent it from appearing in the perk selection window
@@ -150,7 +172,7 @@ procedure start begin
if (controlMode > 0) then begin
displayName := GetConfig("CombatControl", "DisplayName", 0);
if displayName then begin
if (displayName) then begin
variable nameTag := add_iface_tag;
debug_msg("NPC control - added new box: " + nameTag);
if (nameTag <= 0) then begin // box added?
@@ -165,8 +187,10 @@ procedure start begin
end
pidList := GetConfigListInt("CombatControl", "PIDList");
fix_array(pidList);
noCheckArray := (len_array(pidList) == 0);
if (len_array(pidList) > 0) then
fix_array(pidList);
else
pidList := 0;
perksList := GetConfigListInt("CombatControl", "PerksList");
fix_array(perksList);
@@ -175,6 +199,8 @@ procedure start begin
register_hook_proc(HOOK_GAMEMODECHANGE, GameModeChange_Handler);
register_hook_proc(HOOK_INVENTORYMOVE, InventoryMove_Handler);
register_hook_proc(HOOK_INVENWIELD, InvenWield_Handler);
end else begin
exit;
end
end
end
+4 -4
View File
@@ -25,7 +25,7 @@ end
// Gets the string value from the specified ini
procedure GetIniConfigStr(variable section, variable key, variable def, variable inifile) begin
variable val := get_ini_string(inifile + "|" + section + "|" + key);
if val == -1 or val == "" then val := def;
if val == -1 orElse val == "" then val := def;
return val;
end
@@ -39,14 +39,14 @@ end
// Gets the string value from sfall-mods.ini
procedure GetConfigStr(variable section, variable key, variable def) begin
variable val := get_ini_string(ini + "|" + section + "|" + key);
if val == -1 or val == "" then val := def;
if val == -1 orElse val == "" then val := def;
return val;
end
// Gets the value from sfall-mods.ini as a temp array of strings
procedure GetConfigList(variable section, variable key) begin
variable val := get_ini_string(ini + "|" + section + "|" + key);
if val == -1 or val == "" then return [];
if val == -1 orElse val == "" then return [];
return string_split(val, ",");
end
@@ -65,7 +65,7 @@ end
// Translates given string using Translations.ini
procedure Translate(variable id, variable def) begin
variable str := get_ini_string(translationIni + "|Sfall|" + id);
if not str or (strlen(str) == 0) then begin
if (str == 0 orElse (strlen(str) == 0)) then begin
str := def;
end
return str;
+25
View File
@@ -0,0 +1,25 @@
This folder contains documentation about sfall scripting extensions.
headers\ - folder contains sfall headers that you should #include in your scripts
sfall.h - main sfall header, always include it
define_extra.h - some additional preprocessor constants for vanilla engine stuff (proto offsets, etc.)
define_lite.h - a lite version of official define.h
command_lite.h - a lite version of official command.h
dik.h - DX scancodes constants for use with key_pressed function and HOOK_KEYPRESS
lib.arrays.h - procedures that will help you use arrays in their full:
- use them as stacks, sets
- easily compare, copy, slice, cut, add arrays
- display array contents (for debugging)
- save/load two-dimensional arrays to savegame in one command (e.g. arrays of objects)
lib.inven.h - fallout items manipulation functions
lib.math.h - a few simple functions for calculations
lib.strings.h - search in strings, join, repeat, etc.
lib.misc.h - misc stuff
sfall function notes.md - incomplete reference for new opcodes
sfall opcode list.md - list of all sfall opcodes (w/o descriptions)
hookscripts.md - detailed manual for using hook scripts to modify engine behavior
arrays.md - manual for sfall arrays
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in **.\compiler\sslc_readme.txt**.
There are numerious new syntax features and extensions to SSL (Star-Trek Scripting language).
+7 -7
View File
@@ -4,12 +4,13 @@ This folder contains documentation about sfall scripting extensions.
sfall.h - main sfall header, always include it
define_extra.h - some additional preprocessor constants for vanilla engine stuff (proto offsets, etc.)
define_lite.h - a lite version of official define.h
command_lite.h - a lite version of official command.h
dik.h - DX scancodes constants for use with key_pressed function and HOOK_KEYPRESS
lib.arrays.h - procedures that will help you use arrays in their full:
- use them as stacks, sets
- easily compare, copy, slice, cut, add arrays
- display array contents (for debugging)
- save/load two-dimensional arrays to savegame in one command (e.g. arrays of objects)
- use them as stacks, sets
- easily compare, copy, slice, cut, add arrays
- display array contents (for debugging)
- save/load two-dimensional arrays to savegame in one command (e.g. arrays of objects)
lib.inven.h - fallout items manipulation functions
lib.math.h - a few simple functions for calculations
lib.strings.h - search in strings, join, repeat, etc.
@@ -20,6 +21,5 @@ This folder contains documentation about sfall scripting extensions.
hookscripts.txt - detailed manual for using hook scripts to modify engine behavior
arrays.txt - manual for sfall arrays
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in ScriptEditor\docs\sslc_readme.txt,
there are numerious new syntax features and extensions to SSL (Star-Trek Scripting language).
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in .\compiler\sslc_readme.txt.
There are numerious new syntax features and extensions to SSL (Star-Trek Scripting language).

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