Compare commits

...
304 Commits
Author SHA1 Message Date
NovaRain 77f2542919 Merge branch 'develop' 2019-03-18 20:19:53 +08:00
NovaRain 18649329ec Added SpecialDeathGVAR option to override the global variable number for special death.
Minor fix for Stats.ini.
2019-03-17 10:35:12 +08:00
NovaRain aa91e9fad4 Fixed range for object ID.
Added checks for FID in NPC armor appearance mod.
Minor edits to documents.
2019-03-16 08:47:37 +08:00
NovaRain 1fd93ba13f Added CorpseDeleteTime option (from Mr.Stalin)
Fixed some code in Perks.cpp.
2019-03-15 19:17:37 +08:00
NovaRain 04eba05e53 Fixed the removal of party member's corpse (from Mr.Stalin)
Now items in party member's inventory are not removed along with the corpse.
2019-03-14 13:42:48 +08:00
NovaRain 3cef4784d3 Fixed critters not being healed over time when entering the map if 'dead_bodies_age=No' is set in maps.txt.
Added additional checks for the amounts to properly compare the effects of drugs.
2019-03-13 11:54:16 +08:00
NovaRain 656b4c5291 Tweaked the code of the fix in previous commit. 2019-03-13 00:08:10 +08:00
NovaRain 82a11d30b2 Fixed NPC stuck in a loop of reloading melee/unarmed weapons when out of ammo (from Mr.Stalin) 2019-03-12 11:45:18 +08:00
NovaRain 0f036b26ae Added support for extra perks to has_fake_perk/get_perk_available script functions.
Fixed broken get_perk_available script function.
Some code corrections for Perks.cpp.
2019-03-11 10:07:44 +08:00
NovaRain 967e642908 Added the ability to add extra non-scripted perks to the PerksFile (from Mr.Stalin)
Fixed some functionality for fake perks.
2019-03-10 11:55:41 +08:00
NovaRain 9eefb6e042 Fixed some issues in the previous commit.
* the game failed to start if there are more drug items than the specified "Count" number in Drugs.ini.
* setting vanilla drugs in Drugs.ini broke their NumEffects limit, even if it's not set (-1).
2019-03-09 07:45:56 +08:00
NovaRain f289723431 Added "set_drugs_data" script function (from Mr.Stalin)
Fixed vanilla drugs in Drugs.ini not getting loaded.
2019-03-08 21:37:36 +08:00
NovaRain 2d38b4bac1 Moved the list of active drug pids to sfallgv.sav.
Fixed item_d_load_subfix in the previous commit.
2019-03-06 09:30:24 +08:00
NovaRain 3934a804f4 Added new Drugs module and DrugsFile option (from Mr.Stalin)
Fixed a bug in the party control module with the 'addict' notification box not getting hidden after the addiction ends.
Removed DrugsSaveFix option, now the list of active drug pids will be saved to sfalldb.sav.
2019-03-05 12:36:38 +08:00
NovaRain ab03186a1d Fixed the screen not returning to the player when moving a controlled critter to another elevation of the map.
Added DrugSaveFix option to fix saving the active effects of drugs.
Refactored some code in BugFixes.cpp.
2019-03-04 15:27:00 +08:00
NovaRain 15d762deb0 Fixed the lighting of controlled critters in NPC combat control mod. 2019-03-03 11:48:42 +08:00
NovaRain d8bb5848f7 Fixed the return FID in NPC armor appearance mod. 2019-03-02 09:55:40 +08:00
NovaRain f84578e84b Added displaying the NPC's addictions in the character screen when controlled by the player (from Mr.Stalin)
Added "npc_engine_level_up" script function.
Moved the code of set_map_time_multi to Worldmap handler, and NPCAutoLevel to PartyControl module.
Removed validate_test example function from release builds.
2019-02-27 12:06:06 +08:00
NovaRain aa36d54b27 Fixed a crash bug when trying to use explosives if using a books ini file.
Fixed some bugs in BugFixes.cpp.
2019-02-25 23:48:54 +08:00
NovaRain 627c0df484 Added a new argument to REMOVEINVENOBJ hook (from Mr.Stalin)
Fixed inconsistent return value of get_npc_level.
2019-02-25 12:26:42 +08:00
NovaRain ae3d4fcb69 Expanded get/inc_npc_level functions to accept party member PIDs (from Mr.Stalin)
Some code correction in Skills.cpp.
2019-02-24 19:26:42 +08:00
NovaRain fb31357e3d Fixed incorrect skill point cost for negative skill levels when using a skills ini file (from Mr.Stalin) 2019-02-23 22:17:53 +08:00
NovaRain 1687e50729 Fixed the negative skill points of a skill not being taken into account when calculating the skill level (from Mr.Stalin, #202)
Fixed the return value of has_skill function for incorrect skill numbers.
2019-02-21 10:53:55 +08:00
NovaRain 36e3a2bd5f Updated NPC combat control mod to be able to automatically set the number for the notification box.
Updated item highlighting mod to also be disabled while in the barter screen.
2019-02-20 21:26:23 +08:00
NovaRain 99664dfa8a Fixed the reserved item FRM being displayed in the top-left corner when in the loot/barter screens. 2019-02-20 10:02:54 +08:00
NovaRain 0980967cee Changed the implementation of BarBoxes.cpp (from Mr.Stalin)
Added "add_iface_tag" script function.
2019-02-19 21:33:42 +08:00
NovaRain 8613a4fb8b Added ExtraPatches section to ddraw.ini for setting multiple custom paths for game files (from Mr.Stalin, #206)
Refactored some code of DataLoadOrderPatch to work with new ExtraPatches.
Removed MultiPatches from ddraw.ini, now it's always enabled.
Minor edits to MiscPatches.cpp and Arrays.cpp.
Updated version number.
2019-02-19 11:55:38 +08:00
NovaRain 6fdf3ac0b0 Merge branch 'develop' 2019-02-12 09:22:18 +08:00
NovaRain fe5a148d7f Moved DontDeleteProtos option from MiscPatches.cpp to DebugEditor.cpp.
Updated Auto Doors script mod from Mr.Stalin and ddraw.ini.
2019-02-11 13:58:21 +08:00
NovaRain d64b33a946 Minor edits to SpeedPatch and documents. 2019-02-10 09:53:03 +08:00
NovaRain 1294d27a96 Formatted code in Arrays.cpp and added checks for the integrity of sfallgv.sav when loading a saved game.
Fixed unregistering hook procedure.
2019-02-09 09:36:57 +08:00
NovaRain 41171bbb87 Fixed crash when saving the game with speed tweak enabled. 2019-02-09 08:08:34 +08:00
NovaRain 170322648e Reverted the change of DataType values in ScriptValue.h.
(reason: inefficiency)
2019-02-09 02:12:57 +08:00
NovaRain af531a3e1d Refactored and fixed SpeedPatch module (from Mr.Stalin) 2019-02-08 10:31:03 +08:00
NovaRain d13f33e2ff Refactored OpcodeContext/ScriptValue and some script function handlers (from Mr.Stalin) 2019-02-06 11:28:50 +08:00
NovaRain 0ed346380f Refactored error handling of saving/loading sfall data files. 2019-02-05 10:43:17 +08:00
NovaRain 664643d83c Rewrote ASM code of WorldMapFpsPatch functions.
(with fix for infinite loop of elapsed time)
2019-02-04 10:19:46 +08:00
NovaRain 89dbbb9238 Refactored code in Worldmap module (from Mr.Stalin)
Fixed TimeLimit option and removed the pointless value of -2 (now it's the same as -3).
Fixed the slow mouse cursor on the world map when WorldMapFPSPatch is enabled.
2019-02-03 00:57:00 +08:00
NovaRain 5daebd18d8 Added note on effect flags to CriticalOverrides.ini.
Minor edits to Criticals/Elevators.cpp.
2019-01-31 09:18:24 +08:00
NovaRain 4e38eab905 Removed some unnecessary memset code.
Minor code corrections.
2019-01-30 00:09:11 +08:00
NovaRain 7f8d805a9f Refactored code in the Books module.
Increased the maximum number of books in BooksFile to 50.
2019-01-29 06:32:12 +08:00
NovaRain 0e91aed2e2 Added HideObjIsNullMsg option to [Debugging].
Moved DebugEditor option from MiscPatches.cpp to DebugEditor.cpp.
2019-01-27 10:39:59 +08:00
NovaRain 3eba5c3054 Added two bug fixes for loading a game saved in combat mode (from Mr.Stalin) 2019-01-27 09:20:44 +08:00
NovaRain 80afdae7ba Fixed pickup_obj/drop_obj/use_obj script functions (from Mr.Stalin)
Fixed a crash when calling use_obj/use_obj_on_obj functions without using set_self in global scripts.
2019-01-25 00:30:34 +08:00
NovaRain 9db3c79c40 Added AttackComplexFix option (from Mr.Stalin) 2019-01-23 09:32:28 +08:00
NovaRain 274223a4ce Fixed bugs in attack_complex and critter_mod_skill script functions.
Minor edits to ScriptExtender.cpp.
2019-01-22 16:53:08 +08:00
NovaRain 7dbbb8230e Added error message when the name for sfall global variable is not equal to 8 characters.
Updated version number.
2019-01-21 11:24:54 +08:00
NovaRain a95f26a02d Fixed set_self function for use_obj_on_obj, attack, attack_complex vanilla functions (from Mr.Stalin) (#214) 2019-01-21 09:56:06 +08:00
NovaRain 46850a353b Corrected code in FileSystem.cpp (from Mr.Stalin)
Added fix for db_freadInt_ engine function from BugFixes.cpp when enabling UseFileSystemOverride.
2019-01-20 22:13:30 +08:00
NovaRain e379e71410 Added "art_cache_clear" script function. 2019-01-20 08:54:33 +08:00
NovaRain 774e31b9f6 Fixed and refactored code in FileSystem.cpp (from Mr.Stalin) 2019-01-20 00:18:32 +08:00
NovaRain 82f068c3e7 Refactored ASM code in FileSystem.cpp (from Mr.Stalin) 2019-01-17 10:06:04 +08:00
NovaRain 68e8ce8d41 Added support for integer values to abs() math function.
Minor code refactoring in Skills.cpp.
2019-01-16 11:07:56 +08:00
NovaRain a0437304a9 Merge branch 'develop' 2019-01-14 09:37:58 +08:00
NovaRain 34caa1cbbd Fixed a bug that broke the calculation of the skill point cost for increasing skill levels (#226)
Removed /Gw option from the release configuration.
Updated version number for hot fix.
2019-01-14 09:32:59 +08:00
NovaRain 924288a22c Merge branch 'develop' 2019-01-09 11:26:04 +08:00
NovaRain 11ae4f5078 Refactored ASM code in Sound.cpp (from Mr.Stalin)
Minor fix for "path_find_to" script function.
Implemented WRAP_WATCOM_FCALL# wrappers from Mr.Stalin.
Changed some code in Objects script handler for new wrapper functions.
Moved obj_under_cursor to Objects script handler.
Reformatted code in Karma.cpp/Worldmap.cpp.
Minor edits to documents.
2019-01-08 14:11:52 +08:00
NovaRain c1107e16a8 Expanded create/temp_array functions to allow creating a new "lookup" type of associative array (from Mr.Stalin) 2019-01-08 00:05:48 +08:00
NovaRain 49ef1aec9f Fixed a crash bug when using sorting functions on an associative array(map) (from Mr.Stalin)
Added support for sorting associative arrays by keys or values.
2019-01-06 11:37:02 +08:00
NovaRain 14d6d36172 Moved ModifiedIni to main.cpp. 2019-01-04 21:06:39 +08:00
NovaRain d2c8667c22 Refactored ASM code in KillCounter.cpp.
Fixed the broken ExtraKillTypes option.
Reformatted and tweaked code in Explosions.cpp.
2019-01-03 11:05:15 +08:00
NovaRain edbf777b63 Changed hs_inventorymove hook script to be triggered before displaying the 'Move Items' window for drag and drop ammo on weapons. 2019-01-03 00:28:59 +08:00
NovaRain 26c032379e Fixed stack in InventoryHs.cpp (from commit 7b92d0f939)
Refactored some ASM code in BurstMods.cpp, Inventory.cpp, Credits.cpp, AnimationsAtOnceLimit.cpp.
2019-01-01 10:24:51 +08:00
NovaRain 5a455ab942 Fixed input argument names in structure constructor for Combat/Perks/Skills modules. 2019-01-01 02:03:17 +08:00
NovaRain d89603e56d Improved the functionality of ElevatorsFile to allow to change the FRM images of the elevator panel and create new elevator types (from Mr.Stalin) 2018-12-31 10:05:59 +08:00
NovaRain 7b92d0f939 Corrected/improved code of some hooks.
Changed critical table to be loaded before global scripts.
Updated version number and year.
2018-12-30 09:59:39 +08:00
NovaRain b89663174f Added new HOOK_SETLIGHTING (from Mr.Stalin) (#215) 2018-12-30 08:01:13 +08:00
NovaRain 267d8694c9 Added UseWalkDistance option (from Mr.Stalin) (#46) 2018-12-28 20:04:19 +08:00
NovaRain 641ae67a7a Added a fix to the following script functions to ensure they set the correct object: (from Mr.Stalin)
set_critter_burst_disable, set_critter_pickpocket_mod, set_critter_skill_mod, set_critter_hit_chance_mod, set_*_knockback
Added WeaponAnims info to npcarmor.ini.
2018-12-28 09:37:30 +08:00
NovaRain 5d483214e6 Refactored HeroAppearance.cpp (from Mr.Stalin) 2018-12-26 21:11:25 +08:00
NovaRain 62e6c41620 Refactored assembler code in Skills.cpp.
Moved PickpocketMod function from Combat.cpp to Skills.cpp module.
Refactored structs in Skills.cpp and Combat.cpp.
2018-12-26 10:20:22 +08:00
NovaRain 6cce07991e Added missing return values for HOOK_INVENWIELD.
Updated NPC armor appearance mod.
2018-12-25 09:28:30 +08:00
NovaRain 9813d4ae74 Added a fix to prevent sfall from loading global scripts with an extension that exceeds three characters (from Mr.Stalin)
Replaced some pushad/popad opcodes with the newly added pushadc/popadc ASM macros.
Renamed Knockback module to Combat.
2018-12-24 12:21:45 +08:00
NovaRain 10c557ad59 Refactored SafeWrite.cpp. 2018-12-19 07:19:34 +08:00
NovaRain a2a24918a6 Formatted code in HeroAppearance.cpp. 2018-12-18 07:50:22 +08:00
NovaRain ca5c383767 Minor code edits on main.cpp and Perks.cpp. 2018-12-17 09:25:09 +08:00
NovaRain ce338fa5d0 Added a procedure to search for alternative weapons to NPC armor appearance mod (#222) 2018-12-16 19:37:06 +08:00
NovaRain 48ac68b66f Refactored some modules in Perk.cpp. 2018-12-16 11:33:16 +08:00
NovaRain ecae724411 Added AlwaysFindScripts option to [Debugging].
Added log message for InjectAllGameHooks.
2018-12-16 09:04:30 +08:00
NovaRain f33f356b7a Fixed NPC armor appearance mod preventing other critters from using weapons due to incorrect return value in check_weapon_change() (#222) 2018-12-16 08:57:38 +08:00
NovaRain 651f23aa5b Simplified and formatted code in Perks.cpp (from Mr.Stalin)
Replaced some 'strcpy_s' usages to 'strncpy_s' in Perks.cpp.
2018-12-15 18:13:38 +08:00
NovaRain 68022f415a Merge branch 'develop' 2018-12-05 22:01:20 +08:00
NovaRain b0fe927bfb Added missing function handlers to Metarule.cpp.
Minor edits to hookscripts.txt.
2018-12-05 21:47:01 +08:00
NovaRain cedfce37be Changed AutoQuickSave to use the current selected page if AutoQuickSavePage is disabled. 2018-12-05 13:35:37 +08:00
NovaRain 4249006ba9 Added "get/set_object_data" and "get_object_ai_data" script functions (from Mr.Stalin)
Changed read_byte, read_short, read_int, and read_string functions to not require AllowUnsafeScripting.
2018-12-05 10:14:10 +08:00
NovaRain 65755911f4 Fixed a bug in the hero appearance mod that caused the player to disappear after saving the game when player's base FID is greater than 255.
Replaced old SafeWrite usages with corresponding Hook/MakeCall functions in HeroAppearance.cpp.
Prevented HOOK_SUBCOMBATDAMAGE from being injected w/o the script when setting InjectAllGameHooks=1.
2018-12-04 09:36:20 +08:00
NovaRain 5473b0e4d9 Corrected some hooks code for the previous fix commit (from Mr.Stalin) 2018-12-03 10:12:40 +08:00
NovaRain c1b6e35a3f Fixed the return values of a hook getting corrupted if another hook was called during the execution of the current hook (from Mr.Stalin)
Added a fix to prevent hook scripts from being executed when the depth limit is exceeded, or the hook is called recursively.
2018-12-01 22:09:18 +08:00
NovaRain db2c366376 Added a fix for unable to sell/give items to the other in barter screen when the player/party member is overloaded (from Mr.Stalin)
Added a variant of MakeCall/Jump with 3 arguments to replace some SafeWrite 0x90 code for trailing NOPs.
2018-11-30 11:25:11 +08:00
NovaRain 17be216a11 Fixed the previous commit, forgot to remove the obsoleted line in win_debug_hook(). 2018-11-29 10:04:52 +08:00
NovaRain 770aca0cd2 Changed some MakeJump usages to MakeCall in Stats.cpp, Knockback.cpp, and MiscPatches.cpp.
(see Mr.Stalin's comments in commit c990b6701d)
2018-11-29 09:50:40 +08:00
NovaRain c990b6701d Refactored the code in Knockback.cpp. 2018-11-28 14:41:28 +08:00
NovaRain 3da7c2d0a6 Changed the implementation in commit c220e133a2 (with bug fix for HOOK_SETGLOBALVAR, #220) 2018-11-28 09:59:14 +08:00
NovaRain 0a8c5d704c Added missing CombatHs.cpp/.h for the previous commit. 2018-11-27 17:20:18 +08:00
NovaRain 922cdefce6 Added new HOOK_SUBCOMBATDAMAGE and refactored damage formulas code in AmmoMod.cpp (from Mr.Stalin) 2018-11-27 12:27:48 +08:00
NovaRain 180e743d31 Added an option to fix AI not checking chem_primary_desire setting in AI.txt for drug use preference (from Mr.Stalin, #219) 2018-11-25 23:58:13 +08:00
NovaRain 950f6b8a1c Changed sfall to only search for global scripts in folders at the game start instead of every time the game loads. 2018-11-22 20:38:54 +08:00
NovaRain b3a4f2c19e Reorganized and fixed the order of loading global scripts from multiple paths (from Mr.Stalin) 2018-11-21 10:52:12 +08:00
NovaRain 8dbe5921ba Merged two Glovz's fix functions and reorganized Glovz's/YAAM code layout a bit.
(in preparing for larger code refactoring in AmmoMod.cpp)
Fixed a bug in Stats.cpp that caused critical hits to ignore critical table roll value and only have the lowest level effect.
Minor edits to MainMenu.cpp.
2018-11-20 23:39:33 +08:00
NovaRain c220e133a2 Don't execute hook code for HOOK_ADJUSTFID/KEYPRESS/MOUSECLICK/GAMEMODECHANGE/SETGLOBALVAR when their scripts are not loaded (from Mr.Stalin) 2018-11-20 11:03:09 +08:00
NovaRain d8bdf785d5 Minor code correction in MainLoopHook.cpp.
Minor edits to document.
Updated version number.
2018-11-20 07:20:44 +08:00
NovaRain d569666447 Fixed the missing return value of -1 for HOOK_USEOBJON. 2018-11-16 06:33:30 +08:00
NovaRain 31b36f0c69 Fixed unable to click the pop-up message box when death from radiation was triggered during resting. 2018-11-14 07:11:00 +08:00
NovaRain ab7be3501a Simplified ASM code for process_rads_hook() in BugFixes.cpp.
Added missing initialization to ScriptExtender.h (Closes #217)
2018-11-13 21:19:28 +08:00
NovaRain 043c90f71e Added a pop-up message box for death from radiation sickness message. 2018-11-13 12:52:07 +08:00
NovaRain 5146b46da3 Fixed determine_to_hit_func_ engine function taking distance into account when called from determine_to_hit_no_range_ (from Mr.Stalin) 2018-11-12 13:12:22 +08:00
NovaRain 95f2bbfc1f Removed redundant stat_level() in Skills.cpp. 2018-11-10 10:18:59 +08:00
NovaRain 8d8522d227 Refactored the code of Stats.cpp. 2018-11-09 23:49:23 +08:00
NovaRain 5a03db932e Added an additional mode to SpeedInterfaceCounterAnims (from Mr.Stalin) 2018-11-09 12:29:07 +08:00
NovaRain 6e9a87b897 Removed the pop-up message box about not finding the original ddraw.dll, now the error is reported in the log file.
Added a note about setting a custom background for the character screen to the hero appearance mod.
2018-11-09 09:56:13 +08:00
NovaRain de055cd8ec Changed the implementation of HOOK_FINDTARGET so you don't have to specify all 4 targets to override normal sorting (from Mr.Stalin)
Added "loot_obj" script function.
2018-11-06 11:11:44 +08:00
NovaRain 4ae4d6dff0 Fixed broken return values in HOOK_FINDTARGET.
Changed the two arguments for obj_under_cursor to bool.
2018-11-04 09:06:31 +08:00
NovaRain 60054c9977 Added "obj_under_cursor" script function (#207) 2018-11-03 22:11:02 +08:00
NovaRain 3c9d5f7cb4 Changed PartyMemberExtraInfo to not show "Addict" text (in dark green) on the combat control panel if the party member is not addicted to drugs. 2018-11-02 22:48:17 +08:00
NovaRain f44db1730c Merge branch 'develop' 2018-11-01 19:28:08 +08:00
NovaRain fbdb9777c7 Updated NPC combat control mod to prevent Marcus and non-biped critters from equipping armor when controlled by the player. 2018-11-01 17:25:29 +08:00
NovaRain 0f1e648e1a Fixed isCheck argument (arg1) for HOOK_ONEXPLOSION hook (from Mr.Stalin)
Removed RemoveWindowRounding option because it doesn't affect anything.
2018-11-01 09:51:27 +08:00
NovaRain 7bd93af696 Adjusted the position of ExtraSaveSlots page buttons a bit. 2018-10-31 07:15:11 +08:00
NovaRain 6319017186 Added new HOOK_ONEXPLOSION and a new mode "set_explosion_max_targets" to metarule2_explosions (from Mr.Stalin) (#35) 2018-10-30 11:19:19 +08:00
NovaRain 29ad288f52 Fixed SwitchHandHook not being injected for controlled critters if there's no script using HOOK_INVENTORYMOVE. 2018-10-29 11:35:31 +08:00
NovaRain a10196e2ca Corrected the key overriding mechanism and removed unused vKey argument from KeyPressedDelegate (from Mr.Stalin)
Changed the debug editor to require sfall debugging mode.
Some minor code edits.
2018-10-29 11:04:51 +08:00
NovaRain 88779c10e0 Added a new return value to HOOK_KEYPRESS to override the pressed key (from Crafty) 2018-10-27 22:30:01 +08:00
NovaRain 919384bac7 Added a new setting to DebugMode to send debug output to both the screen and the debug log (from Crafty)
Simplified the code for ObjCanSeeObj_ShootThru_Fix a bit (from Mr.Stalin)
Changed sfall to not to create sfallfs.sav when UseFileSystemOverride is not enabled.
Updated item highlighting mod to be disabled while in the loot screen.
2018-10-27 09:43:12 +08:00
NovaRain a60f58c0eb Reverted some changes in the previous commit. 2018-10-26 06:46:24 +08:00
NovaRain 558e654dbf Replaced some __cdecl calling conventions to __fastcall.
(from Mr.Stalin - Reason: The compiler can use the arguments for its own purposes, which can spoil the stored value on the stack.)
Simplified the code for ObjCanSeeObj_ShootThru_Fix and added extra note to ddraw.ini (#208)
2018-10-25 11:16:39 +08:00
NovaRain 5ab389a51a Added new HOOK_USESKILLON and PartyMemberSkillFix option (#191) 2018-10-24 12:19:30 +08:00
NovaRain 3203152ca4 Added missing functions from the source library ddraw.dll to export from sfall (from Mr.Stalin)
Simplified the code in ExtraSaveSlots.cpp.
2018-10-23 11:45:38 +08:00
NovaRain 134dc03dc9 Added an option to skip loading game settings from a saved game (from Mr.Stalin)
Minor edits to ddraw.ini.
2018-10-20 09:53:16 +08:00
NovaRain 1ac8825b1b Fixed showing game movies and subtitles for DX9 mode when not using the hi-res patch, and added logging messages for DX9 mode (from Mr.Stalin)
Changed DisplayNPCExtraInfo to PartyMemberExtraInfo.
2018-10-19 10:27:00 +08:00
NovaRain 851e9b6d59 Added DisplayNPCExtraInfo option to ddraw.ini for commit bceb505024.
Changed some constant/variable names in Explosions.cpp.
2018-10-17 09:31:29 +08:00
NovaRain cbb6afac7c Updated NPC combat control mod to work with BoxBarCount.
Added additional notes to HOOK_COMBATDAMAGE in hookscripts.txt.
2018-10-16 22:18:35 +08:00
NovaRain bceb505024 Added displaying party member's current level & AC & addict flag info to the combat control panel (from Mr.Stalin)
Changed highlighting containers/corpses to be default on in sfall-mods.ini.
2018-10-16 10:05:25 +08:00
NovaRain 005684fa3b Added 3 new modes to metarule2_explosions and "item_make_explosive" script function (#169)
Simplified byte writing in some options (from Crafty)
Minor edits to Criticals.cpp.
Updated version number.
2018-10-14 21:05:15 +08:00
NovaRain 009a6cc21d Fixed the exploit that allows you to gain excessive skill points from Tag! perk before leaving the character screen (from Mr.Stalin)
Minor edits to documents.
2018-10-12 10:56:18 +08:00
NovaRain ee64d981fa Refactored BonusHtHDamageFix/DisplayBonusDamage code in AmmoMod.cpp (from Mr.Stalin)
Fixed DisplayBonusDamage not being applied on Melee Damage stat in the character screen when BonusHtHDamageFix is enabled.
2018-10-11 10:46:04 +08:00
NovaRain bb13dbd727 Added FastMoveFromContainer as the auxiliary option for ItemFastMoveKey (from Mr.Stalin)
Refactored the code of StackEmptyWeapons.
2018-10-10 17:52:05 +08:00
NovaRain e813188e67 Fixed "Heave Ho!" perk increasing strength stat above 10 when determining the max range of thrown weapons.
Moved SpecialUnarmedAttacksFix to BugFixes.cpp and simplified the code.
Added comments to old ApplyHeaveHoFix in Perks.cpp.
2018-10-10 12:19:06 +08:00
NovaRain 64a59211ba Changed implementation of StartGDialogFix, additionally fixed the game crash if calling start_gdialog function outside of talk_p_proc procedure for talking heads. 2018-10-10 09:14:41 +08:00
NovaRain 88f3622a5d Added "dialog_obj" script function. 2018-10-08 09:42:38 +08:00
NovaRain e6d958a83b Rewrote get/set_proto_data functions in C++ and added an auto-extend mechanism for proto loading limit (from Mr.Stalin)
Replaced ProtoProcessingLimit with LoadProtoMaxLimit option.
Added more definitions to define_extra.h and reformatted sfall.h a bit.
2018-10-07 10:30:59 +08:00
NovaRain 6796dc1012 Added sound effect to ExtraSaveSlots page buttons (from Mr.Stalin) 2018-10-06 22:58:36 +08:00
NovaRain 90149b4fb6 Fixed crash bug in the previous commit. 2018-10-04 23:30:39 +08:00
NovaRain 41a398cbf2 Refactored ASM code in ScriptExtender.cpp (from Mr.Stalin)
Simplified the code of NegateFix.
2018-10-04 22:58:10 +08:00
NovaRain 88cd177ebb Re-organized ScriptExtender.cpp:
* Moved SetAutoUnjamLockTime function to new Objects.cpp module.
* Move restore stats/perks to their respective modules.
* Move NegateFix to BugFixes.cpp.
2018-10-04 16:50:30 +08:00
NovaRain 569721381c Added ProtoProcessingLimit option to address some glitches with scripts that will process a large number of protos (#198) 2018-10-04 09:44:48 +08:00
NovaRain 8af87a5252 Merge branch 'develop' 2018-10-01 21:14:00 +08:00
NovaRain 96cb6c51ea Updated version number. 2018-10-01 21:10:21 +08:00
NovaRain 5874450f60 AllowDShowSound improvements from Mr.Stalin:
* Added volume control support for alternative sound files.
* Added mode 2 to play alternative music files even if original acm files are not present in the music folder.
* Added AllowDShowMovies option to separate avi files playback from enabling DX9 mode.
* Fixed initialization bug when DX9 mode is disabled.
* Small refactoring on ASM code.

Added missing FadeMultiplier option to ddraw.ini.
2018-09-30 21:34:35 +08:00
NovaRain f088c9bb70 Fixed the mood argument of start_gdialog function being ignored for talking heads. (from Crafty)
Simplified the code of disabling losing unused perks.
2018-09-30 16:24:15 +08:00
NovaRain 7f8481d03a Added "get/set_rest_on_map" script functions (from Mr.Stalin) 2018-09-28 13:59:09 +08:00
NovaRain f162a5ab0c Moved item_count function fix from Inventory.cpp to BugFixes.cpp.
Minor edit to document.
2018-09-25 14:12:06 +08:00
NovaRain ce69e8123e Fixed the max text width of player name in inventory.
Added an 8 lines limit to the underline position fix.
Removed obsoleted WorldMapEncPatch* functions from Worldmap.cpp (forgot to remove during commit 0f1072c302)
Some minor ASM code edits.
2018-09-25 12:19:30 +08:00
NovaRain b5e85f2f89 Changed the implementation of fs_* opcodes from ASM blocks to handler functions. 2018-09-24 12:20:42 +08:00
NovaRain f7fe463f42 Added "create_win" script function and InterfaceDontMoveOnTop option (from Mr.Stalin) 2018-09-23 16:13:20 +08:00
NovaRain 27f2d57ebd Fixed ai_retrieve_object_ engine function not returning the requested object when there are different objects with the same ID (from Mr.Stalin)
Added info about map_*_p_proc procedures to the global script section in notes.txt (#197)
2018-09-23 08:13:35 +08:00
NovaRain bbe789d013 Added "get_current_inven_size" script function. 2018-09-21 19:23:35 +08:00
NovaRain 76ea3ed383 Added inventory size check to "Take All" button (from Mr.Stalin)
Added additional note to CritterInvSizeLimitMode in ddraw.ini, and changed CritterInvSizeLimit to its default value.
2018-09-20 09:41:49 +08:00
NovaRain c6f3dbfcf6 Changed item_total_weight/item_c_curr_size engine functions to return the weight and size of equipped(hidden) items on NPCs when exchanging/bartering items (from Mr.Stalin)
Fixed CritterInvSizeLimitMode not properly checking the weight of equipped items when mode is set to 4+.
2018-09-19 22:49:05 +08:00
NovaRain 49ce654d72 Excluded inventory size features for NPCs when CritterInvSizeLimitMode is set to PC only. 2018-09-16 10:24:49 +08:00
NovaRain b2a1160492 Removed UTF-8 BOM in Inventory.cpp. 2018-09-15 10:13:25 +08:00
NovaRain 5da2ec76de Refactored CritterInvSizeLimitMode option and fixed some bugs (from Mr.Stalin)
Added party member's current/max inventory size info to the combat control panel.
2018-09-15 09:49:07 +08:00
NovaRain 123f69268d Fixed the underline position in the inventory display window when the item name is longer than one line (from Mr.Stalin)
Simplified the code of SuperStimExploitFix and corrected the return value for the change.
2018-09-12 22:39:18 +08:00
NovaRain 6d0c84e783 Fixed broken get/reset_critical_table functions (from Mr.Stalin) 2018-09-11 09:55:38 +08:00
NovaRain c652fae849 Fixed the encounter description being displayed in two lines instead of one (from Crafty) 2018-09-09 23:09:26 +08:00
NovaRain 3399e07958 Removed the duplicated sf_inventory_redraw code in Interface.cpp. 2018-09-06 23:01:15 +08:00
NovaRain 044af677d9 Merge branch 'develop' 2018-09-06 21:18:59 +08:00
NovaRain 752ad8ae01 Added notes to AutoQuickSavePage description. 2018-09-06 13:01:57 +08:00
NovaRain 9d9d8ada49 Added options to use more than one save slot for quick saving (from Mr.Stalin) (#186) 2018-09-06 07:01:14 +08:00
NovaRain 6bd7d3ebca Added the description of the new FemaleDialogMsgs setting value to ddraw.ini. 2018-09-03 09:58:27 +08:00
NovaRainandGitHub 9bc71a5d2a Merge pull request #193 from FakelsHub/dev/CutsFemale
Added FemaleDialogMsgs=2 for loading subtitle files from text/language/cuts_female/ for female PC.
2018-09-03 09:51:46 +08:00
Mr.Stalin 6d66232162 Added functional to the option FemaleDialogMsgs for possibility using the 'cuts_female' directory for female phrases. 2018-09-02 22:51:39 +03:00
NovaRain fe5f4bb2aa Changed the fix for multihex critter moving in combat to a more proper one (from Mr.Stalin)
Added AIBestWeaponFix option to ddraw.ini.
2018-09-02 18:08:37 +08:00
NovaRain 8a7d22dd03 Added additional checks to the fix of multihex critters moving in combat (from Mr.Stalin)
Added AIBestWeaponFix option to ddraw.ini.
2018-09-02 10:55:14 +08:00
NovaRain fac0b73d9e Changed the fix for multihex critter moving in combat to a more proper one. 2018-08-29 09:37:55 +08:00
NovaRain 2974210ad3 Minor edit to the description of QuestsScrollButtonsX/Y. 2018-08-26 14:53:47 +08:00
NovaRain bb0f2bb8db Changed the two example hook scripts to global scripts. 2018-08-24 08:10:38 +08:00
NovaRain 715b55dda8 Fixed multihex critters moving too close and overlapping their targets in combat (from Crafty)
Fixed critters not checking weapon perks properly when searching for the best weapon (from Mr.Stalin)
Changed BugFixes module to be initialized at the beginning.
2018-08-21 07:19:51 +08:00
NovaRain 999d818c86 Fixed multihex critters moving too close and overlapping their targets in combat (from Crafty)
Fixed critters not checking weapon perks properly when searching for the best weapon (from Mr.Stalin)
Changed BugFixes module to be initialized at the beginning.
2018-08-21 06:14:16 +08:00
NovaRain 1d7fd442b0 Minor edits to sfall-mods.ini. 2018-08-19 00:41:50 +08:00
NovaRain 3062533492 Added ObjCanHearObjFix to ddraw.ini.
Added extra comment for CarChargingFix to ddraw.ini.
Edited the description of DisplayName in sfall-mods.ini because of the new BoxBarCount option.
Minor edits to hookscripts.txt.
2018-08-19 00:33:10 +08:00
Mr.StalinandNovaRain 032e1d13f3 Fixed the functions of the engine op_obj_can_see_obj_/op_obj_can_hear_obj_ (#189)
Added one additional argument for the hook HOOK_WITHINPERCEPTION.
2018-08-18 23:56:03 +08:00
NovaRain 9f0797f8ad Added extra comment for CarChargingFix to ddraw.ini. 2018-08-14 23:58:09 +08:00
NovaRain a7c66685b9 Added QuestsScrollButtonsX/Y, DisplaySwiftLearnerExp, and additional note for the new mode of UseScrollingQuestsList to ddraw.ini.
Changed a log message in BugFixes.cpp to be a bit more specific.
Edited some comments in QuestList.cpp.
2018-08-12 19:07:52 +08:00
Mr.StalinandNovaRain 118b186d4d Quest list: Added options to specify the location of the buttons and a choice of the buttons type. (#187)
Fixed the clickability issue of holodisk list in the pipboy.

Fixed the display issue in the pipboy when a quest list is too long with UseScrollingQuestsList diabled.

Added an option to display experience points with the bonus from Swift Learner perk when gained from non-scripted situations (from Crafty)
2018-08-12 18:57:21 +08:00
Mr.StalinandNovaRain a8718dab2f Fixed the divided by 0 bug in CheckWeaponAmmoCost option. (#190) 2018-08-12 09:14:28 +08:00
NovaRain ccd897281f Fixed obj_can_see_obj not checking if source and target objects are on the same elevation before calling is_within_perception_ (from Mr.Stalin) 2018-08-10 22:54:07 +08:00
NovaRain d200262a2b Added a fix for the display issue in the pipboy when a quest list is too long with UseScrollingQuestsList diabled (from Mr.Stalin)
Added a fix for the clickability issue of holodisk list in the pipboy (from Mr.Stalin)
2018-08-06 22:04:21 +08:00
Mr.StalinandNovaRain 0ebe3ef1a4 Added new game mode DIALOGVIEW. (#182) 2018-07-29 17:48:33 +08:00
NovaRain d0c97f7118 Fixed an issue with file IDs of additional game msg files being shifted when a file in ExtraGameMsgFileList is missing.
Minor edit to the description of CityRepsList in ddraw.ini, to avoid misunderstanding.
Updated version number.
2018-07-28 22:46:59 +08:00
NovaRain 0bda53e109 Rename the option from previous commit to FullItemDescInBarter and added it to ddraw.ini.
Edited info about HOOK_DESCRIPTIONOBJ and the new return value of HOOK_BARTERPRICE to documents.
Minor edits to ddraw.ini to avoid misunderstanding.
2018-07-28 22:27:32 +08:00
Mr.StalinandNovaRain 93cd7a08ad Added new HOOK_DESCRIPTIONOBJ and dialog_message/get_string_pointer functions (#181)
Added the second return value to HOOK_BARTERPRICE to modify the cost of the player's goods.
Fixed missing AC/DR mod stats when examining ammo in barter screen.
Added an option to display full item description for weapon/ammo in barter screen.
2018-07-28 22:14:38 +08:00
NovaRain 44d668f50b Renamed DialogFemaleMsgFile to FemaleDialogMsgs, and added its description to ddraw.ini.
Added additional notes for the new functionality of ExtraGameMsgFileList to documents.
2018-07-24 12:07:02 +08:00
NovaRainandGitHub f368973299 Merge pull request #185 from FakelsHub/devFeature/MessageDialog
Added option for loading alternative dialogue message files.
2018-07-24 11:50:41 +08:00
Mr.Stalin 96802c9642 Added option for loading alternative dialogue message files. (#183)
Fix error of the ExtraGameMsgFileList option, when the absence of a file, the number order was shifted.
To the ExtraGameMsgFileList option, added ability to directly specify the number for the message file.
2018-07-22 20:47:32 +03:00
NovaRain 39221065af Added BoxBarCount to ddraw.ini.
Edited documents for the change of is_iface_tag_active and added BoxBarCount.
Edited the phrasing of debugging message in SafeWrite.cpp.
2018-07-21 08:54:25 +08:00
Mr.StalinandNovaRain 95f95e7b38 BarBoxes: Set used count (#180)
* Added BarBoxesCount option to set the number of additional notification boxes to the interface.
* Expanded is_iface_tag_active function to check tag value of 0/1/2 (sneak/poisoned/radiated)
2018-07-21 08:47:05 +08:00
NovaRain 41c8722179 Merged a couple of fixes and minor improvements for 4.0.x from the develop branch:
* Fixed the game thinking you dropped an active explosive when the dropping is prevented with hs_inventorymove.
* Added "inventory_redraw" script function (from Mr.Stalin)
* NPC combat control mod now centers the screen on the controlled critter and has new options to display critter's name.
* Removed obsoleted WIN2K preprocessor defines.
Updated version number.
2018-07-16 09:14:01 +08:00
NovaRainandGitHub 3b780110ea Merge pull request #177 from FakelsHub/dev/RefHooks
Refactoring hooks.
2018-07-15 21:07:51 +08:00
Mr.Stalin 448dbdb31e Fixed injecting bug for HOOK_DEATHANIM2. 2018-07-14 20:39:15 +03:00
NovaRain 033376000c Fixed the screen flickering during switching critters in NPC combat control.
Now the mod does not center the screen on PC and display name box for the first turn of a player-initiated combat or when there's no other controllable critter in combat.
2018-07-13 11:25:42 +08:00
NovaRain bc2dabc461 Removed redundant function from NPC combat control and tidied up a bit. 2018-07-11 10:03:03 +08:00
NovaRain 08b5e3a769 Improved the functionality of NPC combat control mod (#179)
* centers the screen on controlled critter.

* removes roof tiles to show controlled critter properly.

* additional options to display the name of controller critter.
2018-07-10 12:05:15 +08:00
NovaRain 09c9c5cce0 Added the description of HOOK_EXPLOSIVETIMER to hookscripts.txt.
Edited the example script.
Updated version number.
2018-07-10 06:09:23 +08:00
Mr.StalinandNovaRain b4b1698345 Added new HOOK_EXPLOSIVETIMER (#175) 2018-07-10 06:00:04 +08:00
NovaRain 2a20209bb8 Added "inventory_redraw" script function (from Mr.Stalin) 2018-07-08 00:30:26 +08:00
NovaRain 84c7ac0536 Added InjectAllGameHooks to [Debugging] section in ddraw.ini. 2018-07-05 21:52:53 +08:00
Mr.Stalin 46f8820ecf Refactoring some hooks. 2018-07-04 21:55:52 +03:00
NovaRain 5d4b8fdd7b Added info for new HOOK_AMMOCOST arguments to hookscripts.txt. 2018-07-03 09:38:07 +08:00
Mr.StalinandNovaRain 44603174dd Refactoring combat hooks (#174)
* Fixed and improved the functionality of HOOK_AMMOCOST when CheckWeaponAmmoCost is enabled.

* Fixed the instant death critical fix not working if there's no script using HOOK_COMBATDAMAGE, due to the new hooks injection implementation.
2018-07-03 09:34:47 +08:00
Mr.Stalin d37fbd8390 Implementation detect conflict address for debug mode (#10). 2018-07-02 20:19:21 +03:00
NovaRain 2f22a1e982 Edited the description of HOOK_USEANIMOBJ in hookscripts.txt.
Removed obsoleted WIN2K preprocessor define.
Updated version number.
2018-06-25 22:12:42 +08:00
NovaRainandGitHub 3f03cf3c18 Merge pull request #171 from FakelsHub/devHook/UseObjectMap
* Added new HOOK_USEANIMOBJ.

* Moved some hooks code from MiscHs.cpp to ObjectHs.cpp.
2018-06-25 22:04:18 +08:00
NovaRain 1b3b5dc523 Fixed premature assignment of arguments before the beginning of the hooks in InventoryHs.cpp. (#173)
(cherry picked from commit fff48407c3)
Updated version number.
2018-06-24 12:36:01 +08:00
Mr.StalinandNovaRain fff48407c3 Fix of premature assignment of arguments before the beginning of the hook. (#173) 2018-06-24 09:56:29 +08:00
Mr.Stalin 841e741e91 Fixed calls BeginHook() procedures. 2018-06-24 00:24:27 +03:00
Mr.Stalin d4a501d813 Hook is renamed to HOOK_USEANIMOBJ. 2018-06-20 21:21:46 +03:00
Mr.StalinandNovaRain 5e056f1743 Fixed the drop event for Hook_InventoryMove when dropping an active explosive item on the ground. (#170)
When an armed explosive is dropped from the inventory, the dropped_explosive engine variable is set. If the drop is canceled by scripting, the variable will still be set to 1 without the fix.
2018-06-20 22:26:05 +08:00
Mr.Stalin 35a94b5418 Refactoring: Moving some hooks code from MiscHs.cpp to ObjectHs.cpp 2018-06-19 21:48:18 +03:00
Mr.Stalin 7eaef76f6f Added new script hook HOOK_USEOBJECTMAP. 2018-06-19 21:40:27 +03:00
Mr.StalinandNovaRain 30002664ef Implemented an injection system for hook scripts. (#168)
* Before the code of hooks was always executed even if there's no corresponding hook script, just passing through and doing nothing. Now the code of a hook only gets injected into the game when the corresponding hook script exists.
2018-06-19 14:31:35 +08:00
NovaRain c2f7e38a43 Added KeepWeaponSelectMode option to ddraw.ini. 2018-06-19 06:03:36 +08:00
Mr.StalinandNovaRain 8a5674f2d9 Added the option to keep the selected attack mode for the weapon when the weapon moves to another slot of the hand. (#166) 2018-06-19 06:01:43 +08:00
NovaRain 8c2483a289 Merge branch 'develop' 2018-06-12 21:01:12 +08:00
NovaRain e14ac89463 Added more info to the comments of various keys in [Input] section of ddraw.ini. 2018-06-12 20:52:03 +08:00
Mr.StalinandNovaRain d5a38eb3aa Fix for inventory moving hook - an item drop into container when it is in the slot of the hands. (#167) 2018-06-12 12:13:42 +08:00
NovaRain 177137f2ee Edited the description in hookscripts.txt for changes to HOOK_INVENTORYMOVE and HOKK_INVENWIELD.
Fixed a bug in DisplaySecondWeaponRange that didn't display correct weapon range when the secondary mode is aimed (e.g. spear and throwing knife)
Removed trilling spaces in previous commit.
2018-06-11 13:40:09 +08:00
Mr.StalinandNovaRain 76f88eae18 Added new events to HOOK_INVENTORYMOVE. Added possible to get a pointer to an weapon item in HOOK_INVENWIELD before unweld it. (#163)
Refactoring the hooks code of the inventory.
2018-06-11 13:14:52 +08:00
NovaRain 28962f428f Added ItemFastMoveKey and ItemCounterDefaultMax options to ddraw.ini.
Set ReloadReserve to be disabled by default.
2018-06-06 06:33:46 +08:00
Mr.StalinandNovaRain aaa76cb3d1 Quickly moving items in inventory. (#162)
* Added an option for quickly moving items (w/o dialog box) in inventory.

* An separate option is added to set the counter of maximum number of items when moving items.
2018-06-06 06:23:07 +08:00
NovaRain ea1c00ec91 Added the ability to define allowed weapon animations for NPCs to NPC armor appearance mod (#159) 2018-06-05 22:08:39 +08:00
NovaRain 410c7ab417 Minor edits to documents. 2018-06-04 21:21:32 +08:00
VladandNovaRain ab3ddc68b6 Retarget project to use VS2017 build tools, fix deprecation warnings (#161) 2018-06-03 16:35:08 +08:00
NovaRain 1652072391 Fixed a bug that critters killed in combat by scripting still being able to move in their combat turn if the distance parameter in their AI packages is set to stay_close/charge, or NPCsTryToSpendExtraAP is enabled (from Mr.Stalin) 2018-06-02 18:15:53 +08:00
NovaRain 051b1c98aa Edited the added comments in AnimationsAtOnceLimit.cpp.
Renamed obj_move_hack to object_move_hack because it hooks on object_move_ engine function.
2018-06-01 23:36:56 +08:00
Mr.StalinandNovaRain 56945c7437 Fixed crash game when playing animation when the critter/pc goes through the door. Refactoring code. (#158) 2018-06-01 23:30:37 +08:00
NovaRain 2f6f0d8b28 Added the description of new metarule2_explosions mode to function notes.txt.
Fixed a typo in metarule2_explosions error message.
2018-05-30 21:07:51 +08:00
Mr.StalinandNovaRain 0e715236bf Added an additional mode to the function 'metarule2_explosions', sets a constant radius of the explosion grenades and rockets. (#146) 2018-05-30 21:02:35 +08:00
NovaRain b24a860d40 Renamed WorldMapFont to WorldMapFontPatch and changed its description in ddraw.ini. 2018-05-30 09:27:58 +08:00
NovaRain 120a8cd964 Added WorldMapFont option to use Fallout font on the world map instead of system font. (#48) 2018-05-29 16:22:58 +08:00
Mr.StalinandNovaRain 62d4577152 Adding to the function get_mouse_buttons the return of pressing the middle mouse button (#114). (#157)
Change the type of argument checking for the len_array function to remove an unwanted error message (# 128).
2018-05-29 09:29:11 +08:00
NovaRain 2d8ea2b44c Added description of HOOK_GAMEMODECHANGE to hookscripts.txt.
Fixed the line break for debug.log message of GameReset.
Minor edits to Tiles.cpp code format.
2018-05-28 23:37:45 +08:00
Mr.StalinandNovaRain 4ef20c3526 Added new hook for function get_game_mode, when the game mode changes. (#86) (#153) 2018-05-28 23:32:14 +08:00
NovaRain 5e0e8dd2f1 Added MoreTiles option to ddraw.ini.
Changed MoreTiles to work independently of HRP 4.1.8 and removed the redundant define.
Added sfall log messages to both options in Tiles.cpp.
Implemented HookCalls in TimeLimitPatch().
Fixed a minor typo in function notes.txt.
2018-05-28 09:27:53 +08:00
Mr.StalinandNovaRain 04bd88cdc2 Added MoreTiles option to increase the limit of FRM images for tiles from 4096 to 16383 (from Crafty) (#156) 2018-05-28 09:18:55 +08:00
NovaRain 839e86ed26 Added the description and setting for the previous commit to ddraw.ini.
Improved DisablePipboyAlarm so that when the player press Z key they won't see a blank Pipboy screen.
2018-05-27 15:08:46 +08:00
Mr.StalinandNovaRain eeef8759d3 Display statistics of the weapon's range for the second attack mode in player inventory. (#154) 2018-05-27 14:48:09 +08:00
NovaRain c4903abd4c Added the description of set_iface_tag_text to notes.txt.
Fixed compilation error in BarBoxes.cpp.
Updated version number.
2018-05-21 10:51:12 +08:00
Mr.StalinandNovaRain e0c0b9ba19 Added function 'set_iface_tag_text' - sets custom text and color to bar boxes. (#152) 2018-05-21 10:41:59 +08:00
NovaRain b9c7f5ea82 Fixed commit 470a0b3386. 2018-05-15 20:20:07 +08:00
NovaRain 56fdec8b37 Reverted the previous changes of ASM code due to the bug that AppChCrt.frm overwrites AppChEdt.frm. 2018-05-14 21:14:50 +08:00
NovaRain 470a0b3386 Simplified the code from previous commit. 2018-05-14 20:52:26 +08:00
NovaRain 279c524da9 Added support for adding custom background image to the character creation/screen of the hero appearance mod (From Mr.Stalin)
AppChCrt.frm (for the character creation) and AppChEdt.frm (for the character screen) should be in art/intrface, and the image size must be 640x480.
2018-05-14 10:05:49 +08:00
NovaRain 57c4c0bd5d Merge branch 'develop' 2018-05-11 20:01:53 +08:00
NovaRain 3ff0e77c26 Added the description of attack_is_aimed to notes.txt.
Removed unnecessary function declaration in Misc.h.
2018-05-09 10:07:11 +08:00
mr.StalinandNovaRain 15909dbb5b Fixed function "get_attack_type" and new function "attack_is_aimed". (#145)
* Fixed broken function 'get_attack_type'. Adding a new function 'attack_is_aimed'.
2018-05-09 10:03:07 +08:00
NovaRain ee9010217e Added description of HOOK_RESTTIMER, set_rest_heal_time, and set_rest_mode to documents.
Renamed the bit flags for set_rest_mode.
Fixed compilation error in Worldmap.cpp.
2018-05-08 12:30:53 +08:00
mr.StalinandNovaRain 9fa59a0d75 Rest hook and functions (#144)
* Added new HOOK_RESTTIMER (#89)

* Added "set_rest_mode" and "set_rest_heal_time" script functions.
2018-05-08 12:18:44 +08:00
NovaRain 371a299640 Added new HOOK_SETGLOBALVAR (#34) (from Mr.Stalin) 2018-05-02 11:14:02 +08:00
NovaRain 31f42128e1 Added "floor2" script function to work with ceil (#109)
Added the missing description of ceil to notes.txt.
Disabled ceil marco in lib.math.h.
Removed duplications in Utils.h.
2018-04-28 11:07:37 +08:00
NovaRain 57225bbd38 Fixed max tile number for set_map_enter_position and compilation error in Worldmap.cpp.
Added the description of get/set_map_enter_position to function notes.
2018-04-27 19:40:23 +08:00
mr.StalinandNovaRain 310d029801 New *_map_enter_position functions. (#141)
Added "get/set_map_enter_position" script functions (#101)
2018-04-27 19:35:29 +08:00
NovaRain b52f4544c0 Fixed the last additional notification boxes to the interface being missing (#140) 2018-04-26 10:01:15 +08:00
NovaRain 0950efec8c Changed the upper limit of set_unjam_locks_time to 127.
Added set_unjam_locks_time to documents.
2018-04-25 20:00:49 +08:00
NovaRain d86794be3a Added "set_unjam_locks_time" script function (from Mr.Stalin) 2018-04-24 09:20:16 +08:00
NovaRain d6aff61607 Added "lock_is_jammed" and "unjam_lock" script functions. 2018-04-24 08:13:26 +08:00
NovaRain 0eeab768bd Fixed a bug in item highlighting that caused items to be kept highlighted when entering combat while holding the highlight key. 2018-04-22 11:06:36 +08:00
NovaRain e474ba1660 Updated README.txt for info about additional headers/libraries. 2018-04-21 09:18:51 +08:00
NovaRain 3abebb8486 Added a new script function: set_ini_setting (from Mr.Stalin) (#85)
Added set_ini_setting to documents, and updated info for get_ini_setting.
Updated credits.
Replacing a couple of strcpy usages with strcpy_s.
2018-04-21 09:01:27 +08:00
NovaRain 29910e98bf Revert "Fixed a bug when using HOOK_ITEMDAMAGE and calling item_w_damage_ engine function at the same time. It would result in player self-damaging when attacking targets."
This reverts commit 4194feafdf.
2018-04-13 20:42:09 +08:00
NovaRain 4194feafdf Fixed a bug when using HOOK_ITEMDAMAGE and calling item_w_damage_ engine function at the same time. It would result in player self-damaging when attacking targets.
Set DataLoadOrderPatch to be enabled by default, for preventing partial of a game crash issue due to unusual game folder setup. #136
2018-04-13 11:06:21 +08:00
NovaRain 1c6729a25f Added a fix for being at incorrect hex after map change when the exit hex in source map is at the same position as some exit hex in destination map (from Crafty) #134 2018-04-02 23:19:07 +08:00
NovaRain 39388fd927 Rewrote the fix for player's base EMP DR as an engine-level fix (from Crafty) 2018-04-01 12:45:30 +08:00
NovaRain 72093079c5 Fixed a bug in NPC combat control that caused Gecko Skinning to appear in the perk selection window. 2018-03-28 21:29:22 +08:00
NovaRain 5141ca4ebb Fixed typos in hookscripts.txt. 2018-03-23 23:08:42 +08:00
NovaRain 78e9f08682 Fixed typos in sfall function notes.txt. 2018-03-23 22:01:22 +08:00
NovaRain ce779b4764 Fixed the long existing slotdat.ini function in ExtraSaveSlots.
Reduced duplication in ExtraSaveSlots code using MakeCalls.
Unified the indent style in ExtraSaveSlots.cpp.
2018-03-16 12:25:12 +08:00
NovaRain 1a108cade5 Implemented MakeCalls function to reduce code duplication.
Updated version number.
2018-03-16 11:32:23 +08:00
NovaRain cc875291d1 Merge branch 'develop' 2018-02-13 09:50:43 +08:00
NovaRain 9e28f8bdfd Lined up some code in MiscPatches.cpp. 2018-02-12 21:07:02 +08:00
NovaRain b2894268f6 Reverted item highlighting mod to the previous status (commit 90485a205a). #132 2018-01-28 18:15:35 +08:00
NovaRain b3e2b8b5b8 Rearranged and simplified gl_highlighting.ssl from the previous commit a bit. 2018-01-17 21:22:37 +08:00
burner1024andNovaRain 3227966767 More highlighting (#130)
* allow to highlight alive critters

* allow to ignore NO_HIGHLIGHT flag

* don't highlight while in loot screen, so that it's not constantly toggled by shift-A ("Take All" hotkey)
2018-01-17 13:55:22 +08:00
NovaRain 9475b8c482 Fixed add_mult_objs_to_inven only adding 500 of an object when the value of "count" argument is over 99999. #129 2018-01-17 07:36:05 +08:00
NovaRain 8b356b1213 Fixed broken ExtraGameMsgFileList option. #127 2018-01-11 07:42:50 +08:00
NovaRain 90485a205a Changed item highlighting mod to only highlight lootable corpses. #126 2018-01-07 21:37:26 +08:00
NovaRain d5be2fdc9b Made sure the value of player's base EMP DR is set correctly. 2018-01-02 23:22:45 +08:00
NovaRain a705341e02 Updated version number and the year. 2018-01-02 10:16:32 +08:00
NovaRain ca3f59ad1e Fixed a bug in NPC combat control that kept increasing the perk rank of Gecko Skinning after the combat ended.
Condensed the code in ApplyHeaveHoFix a bit.
2018-01-02 09:58:30 +08:00
NovaRain 4d0c056e72 Merge branch 'develop' 2017-12-24 21:35:52 +08:00
NovaRain d388a5c3bb Fixed player's base EMP DR isn't properly initialized when creating a new character and then starting the game. 2017-12-15 07:32:18 +08:00
NovaRain 9b808cd008 Changed sneak_success to call is_pc_sneak_working_ engine function, which takes player's current sneaking status into account as well, instead of only returning the result of last sneak attempt. 2017-12-05 10:22:35 +08:00
NovaRain fd91be7ea2 Replaced data type hex values with proper VAR_TYPE_* defines for code readability. 2017-12-03 23:54:39 +08:00
NovaRain 4fdd1d3cd8 Added missing entry of block_combat script function in opcode list. 2017-12-03 02:36:00 +08:00
NovaRain 9cb2d3df3e Added the damage type offset of weapon proto to define_extra.h. 2017-11-27 14:14:31 +08:00
NovaRain 08242d77d5 Fixed a typo in hookscripts.txt. 2017-11-27 12:24:22 +08:00
NovaRain 68d0a3e894 Changed the if condition for ProcessorIdle to make sure out-of-bounds values not resulting in unexpected but valid values (ref. commit 50c91db5ea) 2017-11-26 02:08:09 +08:00
NovaRain 16ff0e9ca6 Added a new example mod gl_autodoors (by Mr.Stalin) to modderspack. #19 2017-11-08 21:23:15 +08:00
NovaRain 218ba3004c Tweaked the way DebugMode works, now only DebugMode=2 sends debug output to a debug.log file. Any other non-0 value sends debug output to the screen. #123 2017-11-07 10:46:24 +08:00
NovaRain 8473ce5210 Replaced some SafeWrite* usages in old code with corresponding HookCall/MakeCall/MakeJump for code readability. 2017-11-06 15:13:05 +08:00
NovaRain 38a3dba476 Added description and define of display_stats to notes.txt and sfall.h. 2017-11-06 14:03:22 +08:00
NovaRain 9c1d439153 Added "display_stats" script function #113 2017-11-06 10:16:02 +08:00
NovaRain bc38a02508 Enabled mouse scroll control in barter and loot screens when the cursor is hovering over other lists, also enabled scrolling through the display monitor (from Crafty) #120
Rearraged the code style in dinput.cpp.
Updated version number.
2017-10-25 11:50:37 +08:00
NovaRain 8ae705d591 Merge branch 'develop' 2017-10-18 19:42:16 +08:00
NovaRain 94fdfb49ef Fix crash when calling partyMemberGetCurLevel_ on a critter that has no data in party.txt.
Updated version number.
2017-10-18 14:54:53 +08:00
167 changed files with 15935 additions and 9914 deletions
+6 -5
View File
@@ -14,17 +14,18 @@ Part_0=1 ; Tell sfall that we want to modify the head entries
[c_00_0] ; The entries for the head table of the men critter type.
e0_DamageMultiplier=100 ;First level critical
e0_EffectFlags=0
e0_EffectFlags=0 ; The value of the flags (see DAM_* in Define.h)
; For multiple effects, use the sum of the flags (e.g. 2050 = knocked down + bypass armor)
e0_StatCheck=0
e0_StatMod=0
e0_FailureEffect=0
e0_Message=0 ; This is an index into the msg file, not a string
e0_FailMessage=0
e1_... ; Second level critical
... ; And so on up to the hardest hitting level 5 critical
e5_...
;e1_... ; Second level critical
;... ; And so on up to the hardest hitting level 5 critical
;e5_...
;You can skip any entries from this section to leave them at their defaults
;Any missing entries for critters 19-37 will be replaced by a 0, since they have no default
;Note that the UOP fixes are included in the defaults, and do not need to be
; added manually when using this override format, as opposed to the old one
; added manually when using this override format, as opposed to the old one
+30
View File
@@ -0,0 +1,30 @@
; Allows you to configure advanced settings for drugs.
; Maximum 50 drugs are allowed
; Note: for vanilla drugs, you can only override the values of NumEffect and AddictTime parameters
[main]
; set to 1 to change Jet addiction to be removed after the time expires
JetWithdrawal=0
; total number of drugs in this file
Count=0
; count starts from 1
[1]
; drug item PID
PID=0
; set a limit on the count of first and second delayed effects when using the drug, i.e. if the queue has delayed effects from the drug,
; and their count is greater or equal to NumEffects, it is not possible to obtain new effects from using the drug
; this count is 4 for Buffout/Mentats/Psycho/Jet
; set -1 to leave this parameter unchanged
NumEffects=-1
; the duration of the addiction effect in game minutes (i.e. 1440 = 24 game hours)
; set to 0 to use the default time (7 days for all drugs except Jet)
AddictTime=0
; the number of the global variable from vault13.gam responsible for displaying addiction in the character screen
; set to 0 if the addiction is not required
GvarID=0
; the index number from editor.msg to display the title of the addiction (the description uses the index number of TextID + 100)
TextID=-1
; the line number (0-indexed) of the corresponding FRM in skilldex.lst
FrmID=-1
+46 -5
View File
@@ -7,8 +7,8 @@
; have an additional NoHardcode option in this file which can
; be used to remove their hardcoded effects, and add new stat/skill effects
;Name=The name of the perk
;Desc=The description of the perk
;Name=The name of the perk (max 63 characters)
;Desc=The description of the perk (max 255 characters)
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
;Ranks=The number of perk levels
;Level=The minimum required level
@@ -35,10 +35,18 @@
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
;This is a modification to perk 119
[119]
;You can add simple extra perks with ID numbers from 119 to 255
; that do not require using scripting functions to change player stats, and can also be used for Armor perks
;These parameters are only for extra perks
;Stat1-Stat2 = same as Stat
;Stat1Mag-Stat2Mag = same as StatMag
;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
Desc=This is an example perk~Second line
Desc=This is an example perk description
Image=72
Ranks=1
Level=1
@@ -57,6 +65,39 @@ INT=0
AGL=0
LCK=0
;Example for creating extra perks
[119]
Name=Extra Perk
Desc=This perk can change player stats and skills
Image=72
Ranks=1
Level=2
Type=0
Stat=-1
StatMag=0
Skill1=-1
Skill1Mag=0
Skill2=-1
Skill2Mag=0
STR=0
PER=0
END=0
CHR=0
INT=0
AGL=0
LCK=0
; for extra perks only
Stat1=-1
Stat1Mag=0
Stat2=-1
Stat2Mag=0
Skill3=-1
Skill3Mod=0
Skill4=-1
Skill4Mod=0
Skill5=-1
Skill5Mod=0
;This is a modification to trait 0
[t0]
NoHardcode=0
+4 -1
View File
@@ -1,5 +1,5 @@
[sfall]
SaveInCombat=Cannot save at this time
SaveInCombat=Cannot save at this time.
KarmaGain=You gained %d karma.
KarmaLoss=You lost %d karma.
HighlightFail1=You aren't carrying a motion sensor.
@@ -7,6 +7,9 @@ HighlightFail2=Your motion sensor is out of charge.
SuperStimExploitMsg=You cannot use a super stim 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:
PartyACMsg=AC:
PartyAddictMsg=Addict
[AppearanceMod]
RaceText=Race
+6 -5
View File
@@ -1,12 +1,13 @@
; Allows to reassign books to different object PIDs, text messages.
; Maximum 30 books are allowed (25 if overrideVanilla is 0)
; Allows to reassign books to different object PIDs, text messages, and skills.
; Maximum 50 books are allowed
[main]
; total number of books in this file
count=5
count=1
; set to 1 to override all vanilla books, so you will have to define ALL books in this file;
; otherwise only new books are defined here
; set to 1 to override all vanilla books, so you will have to define ALL the necessary books in this file;
; otherwise only new books are defined here. To just override the text/skill of a vanilla book,
; specify its PID in the new book and set the parameters
overrideVanilla=0
; count starts from 1
+24 -4
View File
@@ -1,11 +1,12 @@
;Controls the elevators
;Image must match up with the image of an existing elevator
;Image must match up with the image of an existing elevator (can be overrided in sfall 4.1.4/3.8.14 or newer)
;Make sure you specify the correct number of exit targets
;The maximum number of elevators is currently capped at 50
;Use the line number (0-indexed) of the corresponding FRM in intrface.lst to set the appearance of the elevator
;Override elevator 0
[000]
;This elevator uses the frm of the original forth elevator
[0]
;This elevator will use the settings of the original forth elevator
Image=4
;Set up the first exit point
@@ -23,4 +24,23 @@ ID3=50
Elevation3=0
Tile3=12944
;No forth exit point
;No forth exit point
;Override FRM images of elevator 0. Set ButtonsFrm to -1 to use default buttons from MainFrm
MainFrm=143
ButtonsFrm=-1
;An example of a new elevator
[24]
;Set Image to 24 to create a new elevator type (0-23 are the original elevator types)
Image=24
;Set the number of buttons
ButtonCount=3
;Set the appearance of the elevator
MainFrm=148
ButtonsFrm=151
;Set up the exit points for all three buttons (see examples above)
+18
View File
@@ -1,3 +1,15 @@
;WeaponAnims codes
; 1 - Knife (D)
; 2 - Club (E)
; 3 - Sledgehammer (F)
; 4 - Spear (G)
; 5 - Pistol (H)
; 6 - SMG (I)
; 7 - Rifle (J)
; 8 - Big Gun (K)
; 9 - Minigun (L)
; 10 - Rocket Launcher (M)
; 11-15 - sfall additional weapon animation codes
; This section maps 7 armor types to corresponding armor item PIDs
[ArmorTypes]
@@ -19,6 +31,7 @@ Robe=16777218
; Sulik
[1]
PID=16777313
WeaponAnims=1,3,4,6
Default=16777280
Leather=16777325
Power=16777324
@@ -29,6 +42,7 @@ Combat=16777322
; Vic
[2]
PID=16777278
WeaponAnims=1,5,7
Default=16777307
Jacket=16777329
Combat=16777330
@@ -39,6 +53,7 @@ Leather=16777333
; Cassidy
[3]
PID=16777305
WeaponAnims=4,5,7
Default=16777354
Leather=16777260
Power=16777328
@@ -49,6 +64,7 @@ Combat=16777326
; Myron
[4]
PID=16777376
WeaponAnims=1,5
Default=16777304
Leather=
Power=16777349
@@ -57,6 +73,7 @@ Combat=16777350
; Cat Jules
[5]
PID=16777734
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Default=16777353
Leather=16777347
Metal=16777348
@@ -66,6 +83,7 @@ Combat=16777226
; Kitsune
[6]
PID=16777724
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Default=16777222
Leather=16777221
Metal=16777223
+19 -2
View File
@@ -1,13 +1,13 @@
[Highlighting]
; DX scandode of a key to press to highlight items on the ground
; DX scancode of a key to press to highlight items on the ground
; 42 - SHIFT key
Key=42
; Set to 1 to also highlight containers
Containers=1
; Set to 1 to also highlight corpses
; Set to 1 to also highlight lootable corpses
Corpses=1
; Set to 1 to only highlight objects in the player's line-of-sight
@@ -38,3 +38,20 @@ MotionScanner=0
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs
Mode=0
;PIDList=62,89,97,107,160,161
;Choose a notification box to display the name of the controlled critter above the interface bar
;Must be between 5 and (4 + the value of BoxBarCount in ddraw.ini)
;For sfall 4.1.6+ the number for the notification box is set automatically, so just use any value
;Set to 0 to disable
DisplayName=0
;Set the color of display name, available colors:
;0 - green
;1 - red
;2 - white
;3 - yellow
;4 - dark yellow
;5 - blue
;6 - purple
;7 - dull pink
DisplayNameColor=0
+188 -47
View File
@@ -1,5 +1,5 @@
;sfall configuration settings
;v4.0
;v4.1.6
[Main]
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
@@ -8,6 +8,14 @@ UseCommandLine=0
;Uncomment and point to a file to get alternate translations for some sfall messages
;TranslationsINI=./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
;PatchFile0=mods\RP_data
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Sound]
;Sets the number of allowed simultaneous sound effects
@@ -17,7 +25,8 @@ NumSoundBuffers=0
;Set to 1 to allow attaching sound files to combat float messages
AllowSoundForFloats=1
;Set to 1 to automatically search for alternative formats when Fallout tries to play an acm
;Set to 1 to automatically search for alternative formats (mp3/wma/wav) when Fallout tries to play an acm
;Set to 2 to play alternative music files even if original acm files are not present in the music folder
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
AllowDShowSound=0
@@ -33,18 +42,21 @@ Enable=1
;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed)
SpeedMulti0=50
SpeedMulti1=100
SpeedMulti2=150
SpeedMulti3=200
SpeedMulti4=300
SpeedMulti2=200
SpeedMulti3=300
SpeedMulti4=400
SpeedMulti5=500
SpeedMulti6=1000
SpeedMulti7=100
SpeedMulti8=100
SpeedMulti9=100
SpeedMulti6=600
SpeedMulti7=700
SpeedMulti8=800
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
@@ -70,9 +82,17 @@ GPUBlt=0
;Requires graphics mode 4 or 5, and GPUBlt set to 1
Use32BitHeadGraphics=0
;Set to 1 to automatically search for alternative avi video files when Fallout tries to play the game movies
;Requires graphics mode 4 or 5
AllowDShowMovies=0
;Fade effect time percentage modifier
;Default is 100. Decrease/increase this value to speed up/slow down fade effects
FadeMultiplier=100
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Input]
;Set to 1 to enable the mouse scroll wheel to scroll through your inventory
;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
@@ -107,7 +127,7 @@ SpeedModKey=-1
;A key to press to toggle the speed tweak on or off
;Specify 0 if you don't want a toggle key, or a DX scancode otherwise
SpeedToggleKey=0x00
SpeedToggleKey=0
;The keys corresponding to the 10 speed slots
;Set to 0 to disable a slot, otherwise specify the DX scancode of the key you want to use
@@ -128,19 +148,28 @@ SpeedKey9=0x00
WindowScrollKey=0
;A key to press to reload your currently equipped weapon
;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
;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 press to open a debug game editor
;Set to 0 to disable, or a DX scancode otherwise
;Requires sfall debugging mode and FalloutClient.exe from the modders pack
DebugEditorKey=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Misc]
;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 -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it
;Set to -2 to remove the time limit without resetting the date. The game will lock up on 8th of March 2255
;Set to -3 to remove the time limit, automatically reset the date, but override Fallout's GetDate function to return the correct year
;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
;World map travel time percentage modifier
@@ -148,9 +177,6 @@ TimeLimit=13
;100 is normal speed, 0 stops time from passing
WorldMapTimeMod=100
;Set to 1 to enable functions relating to overriding the file system
UseFileSystemOverride=0
;Set to 1 to use the Fallout 1 code to control world map speed
WorldMapFPSPatch=1
@@ -164,7 +190,7 @@ WorldMapEncounterRate=5
;The number of slots available in the locations list panel of the world map
;Set to 0 to leave unchanged. 17 is default.
;Setting this greater than 17 requires a replacement background frm, or you'll get glitched graphics
;Setting this greater than 17 requires a replacement background FRM, or you'll get glitched graphics
WorldMapSlots=0
;To start a new game somewhere other than artemple.map, uncomment the next line and set it to the map you want to load
@@ -177,18 +203,22 @@ WorldMapSlots=0
;To use a config file other than fallout2.cfg, uncomment the next line and add the name of your new file
;ConfigFile=
;To use a patch file other than patch000.dat, uncomment the next line and add your new file name
;If you want to check for multiple patch files, you can include a %d in the file name (sprintf syntax)
;By default, only the first patch file found will be used.
;If you want to load multiple patch files (up to 1000) at once, uncomment the MultiPatches line and set it to 1
;PatchFile=patch%03d.dat
;MultiPatches=0
;Set to 1 to enable functions relating to overriding the file system
UseFileSystemOverride=0
;Set to 1 to enable the modified data load order for the engine to find game data
;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)
;PatchFile=patch%03d.dat
;Set to 1 to use the modified data load order for the engine to find game data
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
DataLoadOrderPatch=0
;Set to 1 to enable loading 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
FemaleDialogMsgs=0
;To change the default and starting player models, uncomment the next four lines.
;The default models can also be changed ingame via script
;MaleStartModel=hmwarr
@@ -288,7 +318,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 animations codes from o-t
;Set to 1 to enable additional weapon animation codes from o-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 corrisponds to 's' and 15 to 't'
AdditionalWeaponAnims=1
@@ -322,29 +352,49 @@ PlayIdleAnimOnReload=0
;Set to 1 to prevent corpses from blocking line of fire
CorpseLineOfFireFix=0
;Changes the timer (in days) for deleting corpses on a map after you leave (valid range: 0..13)
;The corpses of critters with 'Ages' flag or on maps with 'dead_bodies_age=No' set in maps.txt will not disappear
;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
;Set to 1 (or some higher number if needed, the maximum is 127) to prevent 100% CPU use
ProcessorIdle=-1
;Set a number of how many protos per type can be loaded into memory at once (valid range: 512..4096)
;Set to -1 to let set_proto_data script function automatically increase the limit when needed
LoadProtoMaxLimit=-1
;Set to 1 if using the hero appearance mod
;You can add AppChCrt.frm and AppChEdt.frm files to art/intrface/ to set a custom background for the character screen
EnableHeroAppearanceMod=0
;Set to 1 to skip the 3 opening movies
SkipOpeningMovies=0
;Causes NPCs who complete their combat turn with ap left over will try and find other ways to spend it.
;Only NPCs with ap left equal to or greater than the value given here will be considered.
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it.
;Only NPCs with AP left equal to or greater than the value given here will be considered.
;Set to 0 to disable
NPCsTryToSpendExtraAP=0
;Set to 1 to fix NPCs not checking weapon perks properly when searching for the best weapon
;Note that enabling this option can significantly affect the weapon choice of some NPCs in combat
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 80*36 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
AllowLargeTiles=0
;Change the Skilldex cursor frm numbers
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
MoreTiles=0
;Change the Skilldex cursor FRM numbers
;Default is 293 for all skills
Lockpick=293
Steal=293
@@ -354,19 +404,22 @@ Doctor=293
Science=293
Repair=293
;Remove window position rounding
RemoveWindowRounding=0
;Set to 1 to add scroll buttons to the pip boy quest list, and remove the quests per area limit
;Set to 1 to add scroll buttons to the pipboy quest list, and remove the quests per area limit
;Set to 2 to use a different set of scroll buttons
UseScrollingQuestsList=1
;To change the location of quest list scroll buttons, uncomment the next two lines
;Defaults are 140 for the X-axis and 334 for the Y-axis
;QuestsScrollButtonsX=140
;QuestsScrollButtonsY=334
;Uncomment these lines to control the premade characters offered when starting a new game
;Multiple options should be separated by commas, and there must be the same number of entries in both lines
;PremadePaths=combat,diplomat,stealth
;PremadeFIDs=201,203,202
;Use this line to modify the list of cities and their associated global variables used for city reputations
;Syntax is 'city id : global id', with each city/global pair separated by a comma.
;Syntax is 'city id:global id', with each city/global pair separated by a comma.
;CityRepsList=0:47,2:48,1:49,4:50,5:51,3:52,8:53,6:54,7:55,13:56,10:57,11:59,14:61,17:63,19:64,18:65,25:66,9:294,20:308
;Set this to a valid path to save a copy of the console contents
@@ -375,11 +428,20 @@ UseScrollingQuestsList=1
;Set to 1 to add additional pages of save slots
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
AutoQuickSave=0
AutoQuickSavePage=0
;Set to 1 to speed up the HP/AC counter animations
;Set to 2 to update the HP/AC counters instantly
;Set to 3 to update the AC counter instantly when switching to other controlled critters in combat
SpeedInterfaceCounterAnims=0
;These lines allow you to control the karma frm's displayed on the character screen
;These lines allow you to control the karma FRMs displayed on the character screen
;Number of KarmaPoints should be 1 less than number of KarmaFRMs
;KarmaFRMs=47,48,49
;KarmaPoints=-100,100
@@ -391,8 +453,11 @@ ScienceOnCritters=0
;Default is 166
SpeedInventoryPCRotation=166
;Uncomment to set the text colour of the extra 5 interface boxes
;The line must contain a 5 digits, each either a 0 for green or 1 for red
;Modify the number of the extra interface boxes available to modders. (Default is 5, and the maximum is 95)
BoxBarCount=5
;Uncomment to set the text colour of the extra interface boxes
;The line must contain the same number of digits as the value of BoxBarCount, each either a 0 for green or 1 for red
;BoxBarColours=00000
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
@@ -401,6 +466,9 @@ BonusHtHDamageFix=1
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
DisplayBonusDamage=0
;Set to 1 to display the range of the second attack mode in the inventory when you switch weapon modes in active item slots
DisplaySecondWeaponRange=1
;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127)
AnimationsAtOnceLimit=120
@@ -420,23 +488,28 @@ NPCStage6Fix=0
;2 - Restoring the -1 AP bonus for HtH attacks (i.e. Fallout 1 behaviour)
FastShotFix=1
;Set to 1 to boost the maximum number of script names from 1450 to 10000
BoostScriptDialogLimit=0
;Allows you to edit the skill tables
;Point the next line at an ini file containing the replacement skill data
;SkillsFile=Skills.ini
;Set to 1 to boost the maximum number of script names from 1450 to 10000
BoostScriptDialogLimit=0
;To change the relationship between SPECIAL stats and derived stats, uncomment the next line
;See the Stats.ini in the modders pack for an example file
;DerivedStats=Stats.ini
;Allows you to change some parameters for drugs and their addictions
;See the Drugs.ini in the modders pack for an example file
;DrugsFile=Drugs.ini
;These options modify the checks to see if a critter can carry an additional item, changing which items are counted towards the weight limit and adding an additional size check
;Set the mode to 0 to disable the size check, 1 to apply to the PC only, 2 to apply to the PC and party members, or 3 to apply to all critters
;Only the PC uses CritterInvSizeLimit. Other critters will use the extra unused stat (STAT_unused = 10)
;Only the PC uses CritterInvSizeLimit. Other critters will use the unused stat (STAT_unused = 10) or have the size limit of 100 if the stat is not set
;Add 4 to the mode to limit the weight check to used items only
;You can use line number 542/543 in proto.msg and line number 35 in inventry.msg to set up custom messages for item size
CritterInvSizeLimitMode=0
CritterInvSizeLimit=200
CritterInvSizeLimit=100
;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
@@ -463,9 +536,24 @@ SuperStimExploitFix=0
InventoryApCost=4
QuickPocketsApCostReduction=2
;Set to 1 to allow objects seeing through other objects with their ShootThru flag set
;Set to 1 to allow objects seeing through other objects that have their ShootThru flag set
;Note that enabling this option can cause unexpected NPC behavior in some situations
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 and repurpose the unused called_shot/num_attacks arguments of attack_complex script function
;This also changes the behavior of the result flags arguments
;called_shot - additional damage, when the damage received by the target is above the specified minimum damage
;num_attacks - the number of free action points on the first turn only
;attacker_results - unused, must be 0 or not equal to the target_results argument when specifying result flags for the target
AttackComplexFix=0
;Set to 1 to enable the balanced bullet distribution formula for burst attacks
ComputeSprayMod=0
@@ -523,6 +611,9 @@ StackEmptyWeapons=0
;If the amount of ammo boxes in the inventory is less than or equal to the reserve, only one box will be used
ReloadReserve=-1
;Set to 1 to change the counter in the 'Move Items' window to start at the maximum number of items
ItemCounterDefaultMax=0
;Allows 9 options (lines of text) to be displayed correctly in a dialog window
DialogOptions9Lines=1
@@ -532,22 +623,63 @@ EnableMusicInDialogue=0
;Set to 1 to prevent the player from running while sneaking without Silent Running perk
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)
UseWalkDistance=3
;Set to 1 to fix the bug that 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 scenary/critters
;Set to 0 if another mod you're using has custom vehicles
CarChargingFix=1
;Set to 1 to skip weapon equip/unequip animations when performing various actions
InstantWeaponEquip=0
;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
;You need to use the message_str_game script function to get messages from the files
;ExtraGameMsgFileList=
;Set to 1 to display numbered dialogue options
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 keep the selected attack mode when moving the weapon between active item slots
KeepWeaponSelectMode=1
;Set to 1 to display full item description for weapon/ammo in the barter screen
FullItemDescInBarter=0
;Set to 1 to display experience points with the bonus from Swift Learner perk when gained from non-scripted situations
DisplaySwiftLearnerExp=1
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
PartyMemberExtraInfo=0
;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 game settings from a saved game, except for the game/combat difficulty settings
;Set to 2 to also skip loading the game/combat difficulty settings
SkipLoadingGameSettings=0
;Set to 1 to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows
InterfaceDontMoveOnTop=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 display sfall built-in credits at the bottom of credits.txt contents instead of at the top
CreditsAtBottom=0
@@ -567,8 +699,8 @@ GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
Enable=0
;Fallout 2 Debug Patch
;Set to 1 to enable debugging output to screen or 2 to create a debug.log file
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and a debug.log file
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg:
;-------
;[debug]
;mode=environment
@@ -586,12 +718,12 @@ DebugMode=0
SkipCompatModeCheck=0
;Set to 1 to skip the executable file size check
;Does not require enabling sfall debugging mode
;Does not require sfall debugging mode
SkipSizeCheck=0
;If you're testing changes to the Fallout exe, you can override the CRC that sfall looks for here
;You can use several hex values, separated by commas
;Does not require enabling sfall debugging mode
;Does not require sfall debugging mode
;ExtraCRC=0x00000000,0x00000000
;Set to 1 to stop Fallout from deleting non readonly protos at startup
@@ -601,6 +733,15 @@ DontDeleteProtos=0
;Set to 1 to give scripts direct access to Fallout's address space, and to make arbitrary calls into Fallout's code
AllowUnsafeScripting=0
;Set to 1 to force sfall to search for global scripts every time the game loads rather than only once on the first game start
AlwaysFindScripts=0
;Set to 1 to force sfall to inject all hooks code into the game, even if corresponding hook scripts don't exist
InjectAllGameHooks=0
;Set to 1 to hide error messages in debug output when a null value is passed to the function as an object
HideObjIsNullMsg=0
;These options control what output is saved in the debug log (sfall-log.txt)
;Prints messages duing sfall initialization
Binary file not shown.
@@ -0,0 +1,102 @@
/*
Auto Doors mod v1.1 for Fallout 2 by Mr.Stalin
----------------------------------------------
- allows the player to automatically open/walk through unlocked doors when not in combat
Requires sfall 3.7b or higher
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
*/
/* Include Files */
#include "..\headers\define.h"
//#include "..\headers\command.h"
#include "..\..\scripting_docs\headers\sfall.h"
#include "..\..\scripting_docs\headers\define_extra.h"
/* Standard Script Procedures */
procedure start;
procedure map_enter_p_proc;
procedure set_door_flag(variable state);
procedure set_door_flag_array(variable state);
procedure combatturn_handler;
/* Defines */
#define PORTAL (0)
#define DOOR_FLAGS (0x24)
variable only_once := 0;
variable arrayPid;
procedure start begin
if game_loaded then begin
if (sfall_ver_major >= 4) then
register_hook_proc(HOOK_COMBATTURN, combatturn_handler);
else
set_global_script_repeat(40); // for sfall 3.x
call map_enter_p_proc;
end else begin
if (only_once == 1 and combat_is_initialized) then begin
only_once := 2;
call set_door_flag(0); // reset flag when entering combat mode
end else if (only_once == 2 and not(combat_is_initialized)) then begin
only_once := 1;
if (sfall_ver_major >= 4) then set_global_script_repeat(0);
call set_door_flag(FLAG_WALKTHRU); // set flag after combat mode ends
end
end
end
procedure map_enter_p_proc begin
if (arrayPid) then begin
// when changing maps, delete the current array to create a new one
free_array(arrayPid);
arrayPid := 0;
end
only_once := 1;
call set_door_flag(FLAG_WALKTHRU); // set flag when entering the map
end
procedure set_door_flag(variable state) begin
variable objectMap, obj, objPid, i;
if (arrayPid) then begin
call set_door_flag_array(state);
return;
end
objectMap := list_as_array(LIST_SCENERY);
arrayPid := create_array(0, 0);
foreach (obj in objectMap) begin
objPid := obj_pid(obj);
if (proto_data(objPid, sc_type) != PORTAL) or is_in_array(objPid, arrayPid) then
continue; // next object
resize_array(arrayPid, i + 1);
arrayPid[i] := objPid;
i++;
set_proto_data(objPid, DOOR_FLAGS, state);
end
end
procedure set_door_flag_array(variable state) begin
variable objPid;
foreach (objPid in arrayPid) begin
set_proto_data(objPid, DOOR_FLAGS, state);
end
end
procedure combatturn_handler begin
if (only_once == 1) then begin
only_once := 2;
call set_door_flag_array(0);
set_global_script_repeat(60);
end
end
@@ -0,0 +1,9 @@
Auto Doors mod v1.1 for Fallout 2 by Mr.Stalin
----------------------------------------------
- allows the player to automatically open/walk through unlocked doors when not in combat
Requires sfall 3.7b or higher.
To use, copy gl_autodoors.int to your scripts folder.
@@ -0,0 +1,44 @@
/*
Example implementation of the algorithm of how the game engine sets the explosive timer.
*/
#include "..\..\scripting_docs\headers\sfall.h"
#include "..\..\scripting_docs\headers\define_lite.h"
// from CONDTION.H
#define ROLL_CRITICAL_FAILURE (0)
#define ROLL_FAILURE (1)
#define ROLL_SUCCESS (2)
#define ROLL_CRITICAL_SUCCESS (3)
procedure start;
procedure start begin
if game_loaded then begin
register_hook(HOOK_EXPLOSIVETIMER);
end else begin
variable
time := get_sfall_arg,
result := ROLL_CRITICAL_FAILURE;
if has_trait(TRAIT_PERK, dude_obj, PERK_demolition_expert_perk) then
result := ROLL_SUCCESS;
else begin
result := roll_vs_skill(dude_obj, SKILL_TRAPS, 0);
end
if (result) then begin
if (result == ROLL_FAILURE) then
time /= 2;
else begin // success or critical success
result := ROLL_SUCCESS;
end
end else begin // critical failure
time := 0;
result := ROLL_FAILURE;
end
set_sfall_return(time);
set_sfall_return(result); // failure/success
end
end
@@ -0,0 +1,60 @@
/*
Example implementation of the algorithm of how the game engine checks if one critter sees another critter.
NOTE: the AllowUnsafeScripting option must be enabled.
*/
#include "..\headers\define.h"
#include "..\headers\command.h"
#include "..\headers\sfall\sfall.h"
#include "..\headers\sfall\define_extra.h"
#define can_see_(source, target) call_offset_r2(0x412BEC, source, target)
#define obj_dist_(target, source) call_offset_r2(0x48BBD4, target, source)
procedure start;
procedure start begin
if game_loaded then begin
register_hook(HOOK_WITHINPERCEPTION);
end else begin
variable
source := get_sfall_arg,
target := get_sfall_arg,
original := get_sfall_arg,
hookType := get_sfall_arg, /* new arg */
result := 0,
distance;
if target then begin
distance := get_critter_stat(source, STAT_pe);
if can_see_(source, target) then begin
distance *= 5;
if (get_flags(target) bwand FLAG_TRANSGLASS) then distance /= 2;
end else if combat_is_initialized then begin
distance *= 2;
end
if (target == dude_obj) then begin
if sneak_success then begin
distance /= 4;
if has_skill(target, SKILL_SNEAK) > 120 then distance -= 1;
end else if dude_is_sneaking then begin
distance := distance * 2 / 3;
end
end
if obj_dist_(target, source) <= distance then result := 1;
// example
if (result) then begin
display_msg("hs_withinperception: " + obj_name(source) + " sees " + obj_name(target) + " [original: " + original + " script: " + result + "]");
end else begin
display_msg("hs_withinperception: " + obj_name(source) + " does not see " + obj_name(target) + " [original: " + original + " script: " + result + "]");
end
end
//set_sfall_return(result);
end
end
Binary file not shown.
+24 -4
View File
@@ -4,7 +4,7 @@
Previously was part of sfall itself, now a separate mod.
Features:
- highlighting items, containers (optional) and dead bodies (optional) on the ground
- highlighting items, containers (optional) and lootable corpses (optional) on the ground
- configurable hotkey is used to trigger highlight
- only objects in direct line-of-sight of player are highlighted (optional)
- motion scanner is required to enable highlight (optional)
@@ -13,7 +13,7 @@
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.0
version 1.1
**/
@@ -23,9 +23,11 @@
#define CRITTER_IS_DEAD (1)
#define PID_MOTION_SENSOR (59)
#define NO_HIGHLIGHT(obj) (get_flags(obj) bwand FLAG_NOHIGHLIGHT)
#define NO_STEAL(obj) (get_proto_data(obj_pid(obj), PROTO_CR_FLAGS) bwand CFLG_NOSTEAL)
variable configSection := "Highlighting";
variable highlightKey;
variable isHighlight;
variable alsoContainer;
variable alsoCorpse;
variable checkLOS;
@@ -52,7 +54,7 @@ procedure ToggleHighlight(variable enable) begin
end
if (alsoCorpse) then begin
foreach obj in list_as_array(LIST_CRITTERS) begin
if critter_state(obj) == CRITTER_IS_DEAD then begin
if critter_state(obj) == CRITTER_IS_DEAD and not NO_STEAL(obj) then begin
call ToggleHighlightObject(obj, enable);
end
end
@@ -65,8 +67,9 @@ procedure KeyPressHandler begin
scanCode := get_sfall_arg,
scanner, charges;
if scanCode == highlightKey then begin
if scanCode == highlightKey and not(get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
if pressed then begin
isHighlight := true;
if motionScanner then begin
scanner := obj_carrying_pid_obj(dude_obj, PID_MOTION_SENSOR);
if scanner then begin
@@ -89,11 +92,26 @@ procedure KeyPressHandler begin
call ToggleHighlight(true);
end
end else begin
isHighlight := false;
call ToggleHighlight(false);
end
end
end
procedure CombatTurnHandler begin
if isHighlight then begin
isHighlight := false;
call ToggleHighlight(false);
end
end
procedure GameModeChangeHandler begin
if isHighlight and (get_game_mode bwand (INTFACELOOT bwor BARTER)) then begin
isHighlight := false;
call ToggleHighlight(false);
end
end
procedure start begin
if game_loaded and (sfall_ver_major >= 4) then begin
call InitConfigs;
@@ -110,5 +128,7 @@ procedure start begin
highlightFailMsg2 := Translate("HighlightFail2", "Your motion sensor is out of charge.");
register_hook_proc(HOOK_KEYPRESS, KeyPressHandler);
register_hook_proc(HOOK_COMBATTURN, CombatTurnHandler);
register_hook_proc(HOOK_GAMEMODECHANGE, GameModeChangeHandler);
end
end
Binary file not shown.
+86 -7
View File
@@ -4,24 +4,27 @@
Used to replace the scripted part of B-Team mod.
Appropriate graphics are required for this mod to work.
Can be adopted to any mod by adjusting armor PIDs, NPC PIDs and NPC FIDs in INI file.
Can be adopted to any mod by adjusting armor PIDs, allowed weapon anim codes, NPC PIDs and NPC FIDs in INI file.
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.0
version 1.1
*/
#include "main.h"
#define IS_ARMOR(item) (obj_type(item) == OBJ_TYPE_ITEM and obj_item_subtype(item) == item_type_armor)
#define IS_WEAPON(item) (obj_type(item) == OBJ_TYPE_ITEM and obj_item_subtype(item) == item_type_weapon)
variable
modIni := "npcarmor.ini",
defaultFids,
armorPidMap, // maps armor PID to it's "type" - leather armor, metal, power armor, etc.
npcMap;
npcMap,
altWeapon,
unWieldWeapon;
procedure check_armor_change(variable critter, variable item, variable isWorn) begin
variable npc, armorType, fid;
@@ -41,9 +44,50 @@ procedure check_armor_change(variable critter, variable item, variable isWorn) b
return -1;
end
// for NPCs when they change armor themselves
procedure check_weapon_change(variable critter, variable item, variable isWield) begin
variable npc, newWeaponAnim, weaponAnimList, i;
if (npcMap[obj_pid(critter)]) then begin
npc := npcMap[obj_pid(critter)];
if isWield then begin
newWeaponAnim := get_proto_data(obj_pid(item), PROTO_WP_ANIM);
weaponAnimList := string_split(npc["WeaponAnims"], ",");
if newWeaponAnim then begin // anim code 0 - none/unarmed
foreach (i in weaponAnimList) begin
if (newWeaponAnim == atoi(i)) then return -1;
end
return 0;
end
end else begin
unWieldWeapon := obj_pid(item);
end
end
return -1;
end
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 (unWieldWeapon == 0 or unWieldWeapon != obj_pid(obj)) then begin
res := check_weapon_change(critter, obj, 1);
if (res == -1) then begin
altWeapon := obj;
wield_obj_critter(critter, obj);
altWeapon := 0;
break;
end
end
end
i++;
obj := inven_ptr(critter, i);
end
unWieldWeapon := 0;
end
// for NPCs when they change armor/weapon themselves
procedure invenwield_handler begin
variable critter, item, fid, slot, isWorn;
variable critter, item, fid, slot, isWorn, canWield;
critter := get_sfall_arg;
item := get_sfall_arg;
slot := get_sfall_arg;
@@ -52,7 +96,21 @@ procedure invenwield_handler begin
if (critter and item and slot == INVEN_TYPE_WORN) then begin
fid := check_armor_change(critter, item, isWorn);
if (fid != -1) then begin
art_change_fid_num(critter, fid);
if art_exists(fid) then begin
art_change_fid_num(critter, fid);
end else begin
debug_msg("Error: NPC Armor mod: missing FID.");
end
end
return;
end
if (critter and item and slot == INVEN_TYPE_RIGHT_HAND) then begin
if (altWeapon == item) then return;
canWield := check_weapon_change(critter, item, isWorn);
set_sfall_return(canWield);
if (canWield != -1) then begin
call search_alt_weapon(critter);
end
end
end
@@ -64,7 +122,26 @@ procedure adjustfid_handler begin
armor := critter_inven_obj(dude_obj, INVEN_TYPE_WORN);
fid := check_armor_change(dude_obj, armor, armor != 0);
if (fid != -1) then begin
set_sfall_return(fid);
variable weapAnim := get_sfall_arg bwand 0xF000;
variable newFid := fid bwand 0xFFFF0FFF bwor weapAnim;
if art_exists(newFid) then begin
set_sfall_return(newFid);
end else begin
debug_msg("Error: NPC Armor mod: missing FID.");
end
end
end
end
// when changing weapon from inventory while controlling other NPCs
procedure inventorymove_handler begin
variable slot, item, canWield;
slot := get_sfall_arg;
item := get_sfall_arg;
if (dude_obj != real_dude_obj) then begin
if (IS_WEAPON(item) and (slot == INVEN_TYPE_RIGHT_HAND or slot == INVEN_TYPE_LEFT_HAND)) then begin
canWield := check_weapon_change(dude_obj, item, item != 0);
set_sfall_return(canWield);
end
end
end
@@ -75,6 +152,7 @@ procedure start begin
if game_loaded and (sfall_ver_major >= 4) then begin
register_hook_proc(HOOK_INVENWIELD, invenwield_handler);
register_hook_proc(HOOK_ADJUSTFID, adjustfid_handler);
register_hook_proc(HOOK_INVENTORYMOVE, inventorymove_handler);
defaultFids := get_ini_section(modIni, "Default");
fix_array(defaultFids);
@@ -97,6 +175,7 @@ procedure start begin
sect := get_ini_section(modIni, ""+i);
while (sect.PID) do begin
npc := create_array_map;
npc["WeaponAnims"] := sect["WeaponAnims"];
npc["Default"] := atoi(sect["Default"]);
foreach (armorType: pids in armorTypes) begin
if (sect[armorType]) then begin
Binary file not shown.
+97 -12
View File
@@ -7,49 +7,134 @@
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.0
version 1.1
*/
#include "..\headers\define.h"
#include "..\headers\command.h"
#include "main.h"
#define OBJ_DATA_LIGHT_DISTANCE (0x6C)
#define OBJ_DATA_LIGHT_INTENSITY (0x70)
variable
configSection := "CombatControl",
controlMode,
noCheckArray,
pidList,
lightInt, lightDist, npcControl,
displayName, displayNameColor,
inControl := false,
hasGeckoSkinning := false;
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;
end
procedure combatturn_handler begin
variable
status := get_sfall_arg,
critter := get_sfall_arg,
arg3 := get_sfall_arg,
//arg3 := get_sfall_arg,
pid;
// display_msg("Combat Turn: " + status + ", by " + obj_name(critter) + ", arg3: " + arg3);
//display_msg("Combat Turn: " + status + ", by " + obj_name(critter) + ", arg3: " + arg3);
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/off light for NPC
end
pid := obj_pid(critter);
if (status == 1
and (len_array(pidList) == 0 or scan_array(pidList, pid bwand 0xFFFFFF) != -1)
and (controlMode == 1 or party_member_obj(pid))) then begin
if (status == 1 and (AllowControl(pid) or controlMode == 1)) then begin
set_dude_obj(critter);
if hasGeckoSkinning then critter_add_trait(critter, TRAIT_PERK, PERK_gecko_skinning_perk, 1);
end else begin
set_dude_obj(real_dude_obj);
if (critter != real_dude_obj) then begin
if not(npcControl) then obj_set_light_level(real_dude_obj, 0, 0); // dude off light
npcControl := critter;
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);
if hasGeckoSkinning then critter_add_trait(critter, TRAIT_PERK, PERK_gecko_skinning_perk, 1);
inControl := true;
end else if npcControl then begin
obj_set_light_level(dude_obj, 100, 4); // set default light
npcControl := 0;
end
if inControl then begin
// center the screen on the controlled critter 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);
end
end
end else if inControl then begin
if displayName then hide_iface_tag(displayName);
if (status == -1 or AllowControl(pid) == false) then begin
set_dude_obj(real_dude_obj);
obj_set_light_level(dude_obj, 100, 4);
npcControl := 0;
end
end
end
procedure gamemodechange_handler begin
if not(hasGeckoSkinning) then hasGeckoSkinning := has_trait(TRAIT_PERK, real_dude_obj, PERK_gecko_skinning_perk);
if (inControl and not(get_game_mode BWAND COMBAT)) then begin
inControl := false;
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
move_to(dude_obj, dude_tile, dude_elevation);
end
end
procedure inventorymove_handler begin
if (inControl and get_sfall_arg == 3) then begin // armor slot
if (obj_pid(dude_obj) == PID_MARCUS or proto_data(obj_pid(dude_obj), cr_body_type) != CR_BODY_BIPED) then begin
display_msg(message_str_game(GAME_MSG_PROTO, 675));
set_sfall_return(true);
end
end
end
procedure start begin
if game_loaded and (sfall_ver_major >= 4) then begin
if (game_loaded and sfall_ver_major >= 4) then begin
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
controlMode := GetConfig("CombatControl", "Mode", 0);
if (controlMode > 2) then controlMode := 0;
if (controlMode > 0) then begin
displayName := GetConfig("CombatControl", "DisplayName", 0);
if displayName then begin
variable nameTag := add_iface_tag;
debug_msg("NPC control - added new box: " + nameTag);
if (nameTag <= 0) then begin // box added?
variable maxBoxCount := get_ini_setting("ddraw.ini|Misc|BoxBarCount");
if (maxBoxCount < 0) then maxBoxCount := 9;
else maxBoxCount += 4;
if (displayName < 5 or displayName > maxBoxCount) then displayName := 0;
end else begin
displayName := nameTag;
end
displayNameColor := GetConfig("CombatControl", "DisplayNameColor", 0);
end
pidList := GetConfigListInt("CombatControl", "PIDList");
fix_array(pidList);
if has_trait(TRAIT_PERK, dude_obj, PERK_gecko_skinning_perk) then hasGeckoSkinning := true;
noCheckArray := (len_array(pidList) == 0);
register_hook_proc(HOOK_COMBATTURN, combatturn_handler);
register_hook_proc(HOOK_GAMEMODECHANGE, gamemodechange_handler);
register_hook_proc(HOOK_INVENTORYMOVE, inventorymove_handler);
end
end
end

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