Compare commits

...
200 Commits
Author SHA1 Message Date
NovaRain 76b0528e7f Merge branch 'develop' 2020-02-08 20:08:34 +08:00
NovaRain 87c4dd34f1 Updated stdafx.h and other code/doc files 2020-02-08 08:41:04 +08:00
NovaRain 7848e1612b Reverted part of changes in the previous commit 2020-02-07 19:16:37 +08:00
NovaRain 537bea45c0 Edited some wording in ddraw.ini and Enums.h 2020-02-07 10:03:16 +08:00
NovaRain a3f22b67d8 Fixed trying to loot corpses with the "NoSteal" flag (#280) 2020-02-06 10:45:40 +08:00
NovaRain c079d69291 Added the description for 'div' operator to notes.txt 2020-02-05 23:19:36 +08:00
NovaRain fc78983f77 Replaced all MAXINT with INT_MAX in QuestList.cpp (#279)
Added WINVER and _WIN32_WINNT defines to stdafx.h.
2020-02-05 16:15:40 +08:00
NovaRain 9122fcaf0c Fixed playing game movies with width less than 640px in DX9 mode
Fixed palette updating.
2020-02-05 09:46:24 +08:00
NovaRain aeb7ab4e32 Some code edits to ExtraSaveSlots.cpp 2020-02-04 10:58:14 +08:00
NovaRain 1f1c39a4bd Simplified the code in HeroAppearance.cpp 2020-02-03 11:21:43 +08:00
NovaRain 53b407b8a5 Added DivisionOperatorFix option for signed integer division (#278)
* it changes the behavior of vanilla division operator to use signed
integer division. Before it used signed division for floats but
unsigned for integers.

Added a new "div" operator for unsigned integer division.
Moved mathematical script functions from Utils.cpp to new Math.cpp.
Added include guard to sfall.h and main.h in modders pack.
2020-02-02 21:02:06 +08:00
NovaRain eb204f0a04 Fixed the barter button on the dialog window (from rotators repo)
* when first entering the dialog, it didn't animate on click.
2020-02-02 15:41:09 +08:00
NovaRain b5b2ef3b97 Reverted part of changes in previous commit 2020-02-02 13:49:32 +08:00
NovaRain c61fe596b1 Fixed palette in DX9 mode 2020-02-01 14:07:38 +08:00
NovaRain 1ac911a7c9 Fixed the timer event execution in global scripts 2020-01-31 01:14:00 +08:00
NovaRain 19f4901328 Small optimization for receiving/passing script arguments
* combined related engine interpreter functions into a single function
for aligning the compiled ASM code better.

Minor changes to some other code and documents.
2020-01-31 00:24:58 +08:00
NovaRain 90b547a472 Rewrote and rename "dialog_box" to "message_box"
Added support for '\n' control character to create_message_window.

Fix the playback of the speech sound file for the death screen.
2020-01-28 13:01:32 +08:00
NovaRain d812059030 Added "dialog_box" script function
Added a new attrType value to "get_window_attribute" function.
2020-01-27 20:41:21 +08:00
NovaRain fd11a5736e Fixed the timing of setting some game mode flags
* now WORLDMAP, PIPBOY, INVENTORY, INTFACEUSE, and INTFACELOOT are
toggled after creating/before deleting their corresponding interface
windows, same goes for triggering GameModeChange hook. (#276)

Fixed the array out of bounds bug in Skills.cpp.
2020-01-27 10:38:47 +08:00
NovaRain 863a232703 Added "set_town_title" script function
* for displaying custom title in floating text over a town.

Corrected some code.
2020-01-25 15:47:57 +08:00
NovaRain 869b3cf4bd Added some engine variables as fo::var constants
Removed redundant PlayAcm() from HeroAppearance.cpp.
2020-01-24 09:54:02 +08:00
NovaRain 27233d19a2 Removed TownMapHotkeysFix from ddraw.ini (always enabled)
Also move its code from Worldmap.cpp to BugFixes.cpp.
2020-01-23 23:13:50 +08:00
NovaRain b69640f09a Removed DisplaySecondWeaponRange from ddraw.ini (always enabled)
Minor edits to some code and documents.
2020-01-23 20:31:58 +08:00
NovaRain d387e009ee Added "get_window_attribute" script function (#276) 2020-01-22 21:13:22 +08:00
NovaRain 56f2ea46c2 Added a flashing icon to the Horrigan encounter
Minor edits to some code and documents.
2020-01-22 10:20:32 +08:00
NovaRain f57564c9ed Expanded the functionality of Fallout1Behavior
* calling endgame_movie now plays Movie11 or Movie12 depending on
the player's gender before the credits.

Added new flags to force_encounter_with_flags function.
2020-01-21 10:14:03 +08:00
NovaRain dc4c4c2524 Added a blinking icon to force_encounter/with_flags functions
* currently an icon is always shown for scripted force encounters.
2020-01-20 11:50:00 +08:00
NovaRain 957ed92498 Added a new hook: HOOK_ENCOUNTER
Added procedure and macros for unsigned integer comparison to lib.math.h.
2020-01-19 12:18:14 +08:00
NovaRain bf4c47d1c0 Added "set_terrain_name" script function
Fixed minor bugs in WorldMapTerrainInfo, TravelMarkerStyles features.

Minor edits to Console.cpp, Logging.cpp.
2020-01-18 17:28:05 +08:00
NovaRain 160a5b6053 Simplified the code of travel markers and string_to_case function
Added new addrs to CheckAddress.cpp.

Minor edits to some code and documents.
2020-01-17 21:53:41 +08:00
NovaRain 201fa1da0c Improved the avi playback function 2020-01-17 21:42:01 +08:00
NovaRain d1868d2eaf Combined tolower/toupper in previous commit to "string_to_case" 2020-01-16 20:33:36 +08:00
NovaRain dd7613c910 Added "tolower", "toupper" script functions
Renamed TravelMarkerDots to TravelMarkerStyles.
2020-01-16 09:34:53 +08:00
NovaRain 14e2ee2064 Fixed crashes in previous commit
* entering worldmap after teleport between maps.
* when clicking on worldmap when camera is away from player indicator.
2020-01-13 10:15:39 +08:00
NovaRain 39a89d50a1 Implemented TravelMarkerDots to replace TravelMarkerLength/Spaces
(from Rotators repo)
2020-01-12 20:22:38 +08:00
NovaRain 9dea6911a6 Moved the Combat Block patch from AI.cpp to new CombatBlocked.cpp
Added filter folders for the project files.

Updated credits.

Correction on ddraw.ini.
2020-01-10 10:42:06 +08:00
NovaRain fece180f0b Fixed duplicate critters being added to the target list for AI
Edited hookscripts.txt to mention the fix.

Tweaked the default settings for world map travel markers.

Some code correction.
2020-01-09 11:38:44 +08:00
NovaRain af049eaa38 Added WorldMapTerrainInfo option for toggling the display
Minor code refactoring in MiscPatches/PlayerModel modules.

Updated compiler document.
2020-01-08 16:50:49 +08:00
NovaRain e0305983de Added sslc documents to repo
Updated credits.

Minor edit to ddraw.ini.
2020-01-06 14:12:29 +08:00
NovaRain 323738f584 Rewrote DialogGenderWords option to allow more than one word (#274)
Re-fixed setting DIALOG game mode flag.
2020-01-06 00:20:22 +08:00
NovaRain 310a0df8f6 Fixed the timing of setting DIALOG game mode flag
(also fixed the issue of DialogGenderWords mentioned in previous commit)

Fixed AI disposition values in define_extra.h.
Minor code edits to world map travel markers.
2020-01-05 09:55:28 +08:00
NovaRain db4652c105 Added DialogGenderWords option to specify gender words for dialog msg
* they will be displayed depending on the player's gender.

* currently does not work for messages constructed with message_str.
2020-01-04 22:59:11 +08:00
NovaRain 5d9d11b4f5 Changed terrain type to not be displayed when in a location circle
Minor code correction.
2020-01-04 10:23:38 +08:00
NovaRain 756356dbf2 Added displaying terrain types on the world map
(from Rotators repo)
2020-01-03 10:12:03 +08:00
NovaRain fad2928fbf Added customization options to WorldTravelMarkers 2020-01-02 11:09:47 +08:00
NovaRain 85e70fe056 Implemented drawing red dots while traveling on the world map
(from rotators/Fo1in2#3 by ghost22238)
2020-01-02 00:38:01 +08:00
NovaRain 1af1eb2c70 Reverted the change on x offset in previous commit 2019-12-29 08:41:02 +08:00
NovaRain 3a4a9d7240 Increased the width of the total weight display in the inventory
(moved from the CritterInvSizeLimitMode option)

Updated version number and year.

Minor format edits to some code and README.md.
2019-12-29 01:55:59 +08:00
NovaRain cd674fede2 Removed redundant copies of version.h 2019-12-25 21:24:04 +08:00
NovaRain 5200be19c9 Merge branch 'develop' 2019-12-25 09:29:35 +08:00
NovaRain b984568b32 Added StrNormalizePath() to Utils.cpp. 2019-12-25 09:15:35 +08:00
NovaRain 71803ff06c Added a comment to Handlers\Utils.cpp 2019-12-24 20:50:52 +08:00
NovaRain 7cef7e8e54 Some edits to hookscripts.txt & function notes.txt 2019-12-24 00:55:31 +08:00
NovaRain 7990d230f2 Fixed the return value/object for HOOK_TARGETOBJECT 2019-12-23 23:41:11 +08:00
NovaRain cb9f759d71 Replaced _stricmp in previous commit with strcmp.
Minor edits to some code.
2019-12-16 15:31:50 +08:00
NovaRain 7ed8dd286c Fixed the path to load global shaders in the previous commit
* when DataLoadOrderPatch is disabled, the path was set to
"sfall.dat\shaders\".
2019-12-15 09:56:47 +08:00
NovaRain 9f3299b47a Restored loading global shaders at game start from pre-3.0
Added GlobalShaderFile option to ddraw.ini.
Added an example global shader file to modderspack.
2019-12-14 10:49:08 +08:00
NovaRain a68498453c Edited the description of hook/functions in the previous commit
Rewrote ASM code for tile_under_cursor script function.
2019-12-14 00:43:09 +08:00
NovaRain 0bf9a322c1 Corrected code and renamed hook/functions from the previous commit 2019-12-13 10:49:24 +08:00
NovaRain a325dd18ea WIP - Added a new hook: HOOK_TARGETOBJ
Added "get_tile" and "get_objects_at_radius" script functions.

* their names are not final and documents are missing.
2019-12-11 15:52:03 +08:00
NovaRain 439de4aecc Re-fixed the return value of get_script function 2019-12-09 10:18:29 +08:00
NovaRain 702e62e610 Rewrote remove_script/set_script functions in C++
Fixed the return value of get_script function.
2019-12-08 23:16:56 +08:00
NovaRain ddf0ec7085 Added missing code for commit b149aaa
Some edits to script related namesapce in Enums.h.
2019-12-08 07:30:14 +08:00
NovaRain b539cab67d Change container from Map to Array for sfall opcodes 2019-12-07 09:54:40 +08:00
NovaRain b149aaa00c Changed the behavior of IniConfigFolder option 2019-12-07 09:41:06 +08:00
NovaRain a5bcfa8a6b Re-fixed the previous commit 2019-12-05 09:38:37 +08:00
NovaRain 80cf1a9ca7 Fix for printing game messages to debug log 2019-12-04 13:04:57 +08:00
NovaRain 4cffc455e2 Code refactoring for opcodes/functions 2019-12-04 10:39:35 +08:00
NovaRain 1bb04a6d45 Improved handling of incorrect formatting for "string_format" script function
Rewrote ASM code of opcode handlers in Memory.cpp.
2019-12-03 10:48:30 +08:00
NovaRain 2a2849537c Added "string_format" script function
Some code refactoring.
2019-12-01 12:09:58 +08:00
NovaRain 84076a2586 Refactored the code for "substr" script function
* fixed the crashing bug and added a new behavior.

Changed the error message due to missing critter frame (again):
* replaced the interruption with printing the error message to in-game
message window.
2019-11-29 11:52:35 +08:00
NovaRain 11fee91f2f Changed the error msg due to missing critter frame
* now the game only "crashes" when both Enable and DebugMode are
enabled in [Debugging] in ddraw.ini.
2019-11-28 14:17:22 +08:00
NovaRain 6d12481754 Refactored script function handlers 2019-11-28 14:05:36 +08:00
NovaRain 04d4a8dc5b Minor code refactoring for opcodes/metarules
Added separate settable value of return error for invalid arguments of
script functions.
2019-11-27 12:31:45 +08:00
NovaRain d1851cbde1 Added set/unset Special game mode flag when a party member joins/leaves in dialog
Re-fixed commit 227a062 (correct variant)
2019-11-26 07:43:58 +08:00
NovaRain accf564e6e Re-fixed GAMEMODECHANGE hook being triggered unexpectedly in dialog
(undo fix in commit 5053ab5)

Restored calling original engine functions from HRP hacks.
2019-11-25 07:28:08 +08:00
NovaRain 977e6a5ad7 Added "get_text_width" and "string_compare" script functions
Fixed the return value of charcode script function for characters in
the extended ASCII character set.

Rewrote set_dm/df_model, set_movie_path functions in C++.
2019-11-23 20:18:06 +08:00
NovaRain 0c42f6447d Restored and fixed RemoveWindowRounding option
Reorganized ddraw.ini a bit.
2019-11-21 00:58:10 +08:00
NovaRain 5053ab564d Added a new argument to HOOK_GAMEMODECHANGE
* now the previous game mode can be checked with arg2 (#211)

Fixed GAMEMODECHANGE hook being triggered even when the game mode is not
changed.

Added 'SPECIAL' flag to the game mode functions (when switching from
DIALOG mode to BARTER).
2019-11-20 10:41:21 +08:00
NovaRain f0f134d077 Fixed a crash bug in CorpseLineOfFireFix (from commit 521b6c7) 2019-11-19 14:19:58 +08:00
NovaRain 199502782b Fixed a crash bug in CorpseLineOfFireFix (from commit 521b6c7, #270)
Updated version number for hotfix.
2019-11-19 14:02:17 +08:00
NovaRain e93d878d1d Added a new hook: HOOK_STDPROCEDURE_END
* as an extension to HOOK_STDPROCEDURE hook script.

Updated documents.
2019-11-17 08:32:03 +08:00
NovaRain 18c10d8911 Added four new script functions:
"get_sfall_arg_at", "show_window", "hide_window", "set_window_flag"

Improved the functionality of "inventory_redraw" function.
2019-11-16 22:36:53 +08:00
NovaRain 996dd293c0 Tweaked/fixed reg_anim_callback function 2019-11-15 09:57:31 +08:00
NovaRain 9904423641 Added "reg_anim_callback" script function(opcode) (#257)
Updated documents.
2019-11-14 12:49:06 +08:00
NovaRain 534bc3e5cd Implemented executing timed_event_p_proc in sfall global scripts
Added "add_g_timer_event" and "remove_timer_event" script functions
for timed_event_p_proc in global scripts.

Fixed the check on the 'hidden' flag for previous commit.
2019-11-11 10:00:22 +08:00
NovaRain 227a062fa6 Added a fix for scripted interface windows (#25)
* prevents player's movement when clicking on the window.

* the mouse cursor will not be toggled when the cursor hovers over
a hidden window.

Updated version number.
2019-11-10 18:11:33 +08:00
NovaRain 09d97464c8 Merge branch 'develop' 2019-11-07 09:50:16 +08:00
NovaRain b8de20d455 Fixed gl_partycontrol change in commit 9fab4b3 2019-11-07 09:45:57 +08:00
NovaRain 4ae09522f0 Merge branch 'develop' 2019-11-05 09:28:03 +08:00
NovaRain 76cc0471d6 Minor edits to Structs.h and HookScripts.cpp
Fixed Debug build configuration in project file.
2019-11-05 09:18:46 +08:00
NovaRain 2e39325521 Updated define_extra.h
Added define of OBJ_DATA_SCRIPT_INDEX to define_extra.h.
2019-11-04 21:23:11 +08:00
NovaRain f3abea3462 Updated script mods. 2019-11-03 10:05:55 +08:00
NovaRain d0c4bc3b78 Added "get_inven_ap_cost" script function
Added grey outline to controlled critters at the beginning of the turn.
2019-11-02 10:24:05 +08:00
NovaRain 2e655945c0 Added support for displaying item AP cost up to 19 (#228)
* Requires an extended MVENUM.frm in the art\intrface\ directory to
display properly (included in sfal.dat).
2019-10-31 12:46:42 +08:00
NovaRain 521b6c7e08 Fixed the previous commit (conflict with INVENWIELD hook)
Moved some option codes from MiscPatches.cpp to other modules.

Removed CorpseLineOfFireFix from ddraw.ini (always enabled).
2019-10-31 11:28:05 +08:00
NovaRain c348925c95 Fixed PM's weapon being misplaced after level up 2019-10-30 21:13:46 +08:00
NovaRain 0d023c32db Improved and moved the address conflict checking to CheckAddress.cpp/h
Added ddraw_CheckAddr.ini file to check conflicts properly.
Some code fixes/edits.
2019-10-29 10:41:03 +08:00
NovaRain 0570062123 Renamed AnimationsAtOnceLimit module to Animations 2019-10-28 09:44:32 +08:00
NovaRain a6c09d4d5c Added a debug message about missing art file for critters
Minor edit to sfall.h.
2019-10-25 10:21:01 +08:00
NovaRain 20119daf3d Minor code edit to previous commit 2019-10-23 09:36:13 +08:00
NovaRain 3553d45e5c Engine now uses 'English' as the fallback language for all msg files (#256) 2019-10-22 15:42:25 +08:00
NovaRain fc9c260a9f Cleanup in solution files 2019-10-22 09:44:17 +08:00
NovaRain 9f27c160ff Added "add_trait" script function 2019-10-20 19:29:19 +08:00
NovaRain 1f156d39ae Fixed amount argument for critter_add/rm_trait functions 2019-10-17 09:38:28 +08:00
NovaRain 3d9febecb9 Replaced GetPrivateProfileInt/String with wrapper functions
Fixed crash when a name in PremadePaths exceeds 11 characters.
2019-10-16 13:09:02 +08:00
NovaRain 9fab4b32ee Fixed inherited perks in gl_partycontrol 2019-10-15 22:17:08 +08:00
NovaRain d762f57cbc Added a new flag to MainMenuFontColour option
* set bit 1 of the first byte to only change the color of version text
(old behavior)
2019-10-15 11:40:59 +08:00
NovaRain e13a27469f Refactored CritterStats.cpp
Minor edits to to some code.
2019-10-15 10:55:07 +08:00
NovaRain ab2283f0e3 Rewrote set_xp_mod, get_sfall_args, set_sfall_arg functions in C++
Cleanup in ASM scripting handlers code.
2019-10-14 15:29:03 +08:00
NovaRain 882a601b0c Added optional options to the perks ini file
* to toggle modification sections for perks and traits.

Reorganized ini reading functions in main.cpp, and edited related code
in Perks/Stats modules.

Added error/warning icons to message boxes.
2019-10-14 10:19:11 +08:00
NovaRain 85dfb35f01 Updated NPC armor appearance mod script
Added command_lite.h header file (from EcCo mod).
Added alternative npcarmor.ini for vanilla Fallout 2.
2019-10-11 00:49:15 +08:00
NovaRain 614caded92 Fixed art_change_fid_num when the hero appearance mod is enabled
* before it set player's FID incorrectly if PC is in other appearance.

Prevented the player from equipping a weapon when player's current
appearance doesn't have the animation for it.

Fixed the player name while controlling other critters.

Edited texts for some error message boxes.
2019-10-10 11:48:33 +08:00
NovaRain 1b6d6179a1 Added "unwield_slot" script function
Re-fixed obj_art_fid for player's FID (commit 50f4885)
2019-10-08 10:53:47 +08:00
NovaRain 6ede19ceec Fixed inven_unwield script function
* now it updates the interface slot for the player properly.

Fixed some code in PartyControl module.
2019-10-07 13:30:49 +08:00
NovaRain 172495bdc5 Fixed arg1 of HOOK_INVENWIELD when calling move_obj_inven_to_obj
Moved critter stats code from Stats.cpp to a new CritterStats module.
Moved CRC files from Modules folder to the root folder of the project.
Moved get/set_proto_data functions from Misc to Objects handler.
2019-10-05 07:47:17 +08:00
NovaRain 2187854bf2 Improved the implementation of HOOK_INVENWIELD (#266)
* it now runs for the player and NPCs when removing equipped items.
* added an additional argument.

Fixed drop_obj script function not removing the equipped armor properly
for the player and party members.

Fixed incorrect PIDs for RP new party members in npcarmor.ini.
2019-10-04 20:23:49 +08:00
NovaRain 8d29e04712 Fixed move_obj_inven_to_obj script function
* it didn't remove the equipped armor properly for the player and party
members, resulting in broken armor stats.

Added a check for valid objects to get/set_object_data functions.

Some code edits to HeroAppearance.cpp.
2019-09-30 07:45:49 +08:00
NovaRain 8468fee7b4 Improved file searching for hero appearance mod (#251)
* now it will search files in .dat files and folders simultaneously.

* files in folders have higher priority than .dat files.
2019-09-28 10:45:36 +08:00
NovaRain 000b116895 Removed NPCStage6Fix from ddraw.ini (always enabled)
Moved the code of NPCStage6Fix to BugFixes module.
(to its original relative location, right above MultiHexPathingFix)

Reorganized some code in BugFixes.cpp.
2019-09-27 20:50:20 +08:00
NovaRain 98199b4e7e Refactored code in Arrays.cpp and fixed save_array() script function.
* related to "corrupted" savegames in #265.
2019-09-24 12:30:02 +08:00
NovaRain a17471b624 Some minor changes:
* Improved the display of the car fuel gauge on the world map interface.

* Expanded set_critter_stat function to allow changing STAT_unused and
STAT_dmg_* stats for the player, and STAT_unused for other critters.

* Changed AllowUnsafeScripting to not require sfall debugging mode.

* Changed NPCStage6Fix to be enabled by default.

* Added a new value to AIBestWeaponFix to change the priority multiplier
for having weapon perk to 3x.

* Added RP's extra weapon anim codes to vanilla PMs in npcarmor.ini.

Updated version number.
2019-09-24 12:20:16 +08:00
NovaRain 7f474bcb6d Merge branch 'develop' 2019-09-15 07:19:08 +08:00
NovaRain 91ac51d3ff Changed CorpseLineOfFireFix to be enabled by default 2019-09-15 07:16:38 +08:00
NovaRain ffe9d4c8cf Removed duplicate code from intface_redraw_ engine function
Minor edits to code/documents.
2019-09-14 08:50:54 +08:00
NovaRain affb7c4020 Updated UI hotkeys example mod. 2019-09-12 22:59:51 +08:00
NovaRain 2bdd469919 Added "register_hook_proc_spec" script function
Updated documents to address the new function.
2019-09-12 22:16:17 +08:00
NovaRain e23c224535 Excluded timed_event_p_proc from HOOK_STDPROCEDURE 2019-09-12 19:38:30 +08:00
NovaRain 693b78f9db Added a new hook: HOOK_STDPROCEDURE
Optimized execution for global/hook scripts.
2019-09-11 12:40:18 +08:00
NovaRain e55a4f95d2 Fixed AllowLargeTiles option (broken in 4.1.8)
(due to commit d2cf728)
2019-09-10 09:37:46 +08:00
NovaRain 66d4db10ad Fixed some non-critical memory address conflicts
Renamed F1EngineBehavior option to Fallout1Behavior.
2019-09-10 06:57:21 +08:00
NovaRain 4afde14f04 Added F1EngineBehavior option to change some of F2 engine funcs to F1
* disables playing the final movie/credits after the endgame slideshow.
* disables halving the weight for power armor items.

Moved FastShotFix and Ray's combat_p_proc fix from MiscPatches to other
modules.
2019-09-09 14:46:54 +08:00
NovaRain 4975177c34 Added printing a list of all mem addrs in the log for debug version
* for checking hidden memory conflicts.
2019-09-09 12:55:24 +08:00
NovaRain fee142342c Added a call to load f2_res.dll library from sfall code
Fixed some code that depends on HRP addresses.
2019-09-08 10:43:16 +08:00
NovaRain 28cd8f6f43 Changed CriticalOverrides.ini to be parsed only once at game start
* before the ini was always reparsed after each game load/reset. This
should improve the performance.
2019-09-07 20:59:38 +08:00
NovaRain 7e317134dc Removed the dependency of Body_Torso from Body_Uncalled hit modifier
Re-added BodyHit_Torso to ddraw.ini.
Reverted set_bodypart_hit_modifier function to pre-3.7.4 behavior.
2019-09-07 20:03:29 +08:00
NovaRain 19252ba507 Added options for tweaking some engine perks to the perks ini file
Added some engine function defines & util func for possible later use.
2019-09-06 13:11:27 +08:00
NovaRain 694b3995ef Added a compute damage example script.
Updated compiled scripts due to main.h changes.
2019-09-01 11:37:04 +08:00
NovaRain fb718e6fad Increased the width of the car fuel gauge to 2px 2019-09-01 09:00:27 +08:00
NovaRain 241f174bae Tweaked reordering the execution of functions before exiting the map
Added event clearing for active explosives before exiting the map.

Minor code edit to BARTERPRICE hook.
2019-08-31 19:38:59 +08:00
NovaRain 5e693aa955 Fixed some args in HOOK_BARTERPRICE hook when trading with PM
And added a new argument to indicate trading with a party member.
2019-08-27 22:24:30 +08:00
NovaRain b2fa359e3c Replaced 'Take All' hotkey mod with UI hotkeys mod
Minor edits to documents.
2019-08-26 21:47:52 +08:00
NovaRain ab5d7fdf97 Fixed player stuck at "climbing" frame after ladder climbing animation
Removed the previous fix about player's direction.

Some code format edits.
2019-08-25 10:09:17 +08:00
NovaRain 7f59d7a7fd Added MainMenuBigFontColour option to change button text color
Changed the fix for player's direction after climbing ladder (9fea480)
2019-08-23 10:32:07 +08:00
NovaRain 477ff9668c Added a new argument to HOOK_ADJUSTFID.
Fixed incorrect FRM being displayed for opened bag/backpack in the
inventory when Hero Appearance Mod is enabled (#262)

Fixed MainMenuFontColour not changing the font color for the copyright
text on the main menu (#261)

Code correction in main.cpp.
2019-08-22 13:12:32 +08:00
NovaRain 9fea48093e Fixed player's position if entrance tile is blocked when entering a map
Fixed player's direction after leaving a map via ladder/stairs.
Other minor fixes in sfall code.
2019-08-22 11:32:33 +08:00
NovaRain 09e282cd65 Corrected/edited some code. 2019-08-20 14:53:33 +08:00
NovaRain 5c4eb31bc3 Added IniConfigFolder option to override the path of all scripted ini
Fixed a crash bug in message_str_game function when passing a negative
fileId value.
2019-08-20 00:26:35 +08:00
NovaRain 9d0b061d1b Added OverrideCriticalFile option for specifying alternative crit file
Added code for preparing clearing map_update_event in queue.
2019-08-19 14:12:03 +08:00
NovaRain 2b93bf6045 Added new game mode COUNTERWIN.
Improved add_extra_msg_file function to use "English" as the fallback
language for loading msg files (#256)
2019-08-17 20:44:41 +08:00
NovaRain 2dfbe903e7 Added an additional 'Energy Weapon' flag to ext flags in weapon protos
* it forces the weapon to use EW skill regardless of its damage type.

Placed an object with PID 0x5000004 (corpse blood) to the lower z-layer
of the tile.
2019-08-16 15:02:14 +08:00
NovaRain cce9697dfd Set DAM_BACKWASH_ flag for attacker before calling combat damage (#246) 2019-08-14 11:48:45 +08:00
NovaRain 8855326e41 Fixed the lost car bug with using the Town/World button
(http://www.nma-fallout.com/threads/fallout-2-vehicle-bug.217993/)
2019-08-13 13:53:41 +08:00
NovaRain da864c9789 Rewrote the code of force_encounter functions
Added a new flag to force_encounter_with_flags.
2019-08-12 12:06:45 +08:00
NovaRain 50f4885407 Fixed obj_art_fid for dude_obj when the hero appearance mod is enabled 2019-08-11 23:46:26 +08:00
NovaRain f59d104975 Fixed create_message_window script function
* prevent it from creating multiple message windows.

Capped StartMonth/StartDay in case people didn't notice "0-indexed".
Minor fix for assigning an ID to objects when loading a map.
Small optimization for sfall gl/hs scripts.
2019-08-11 10:58:32 +08:00
NovaRain 744213dea1 Fixed unable to reach the specified max level in XPTable
Fixed the AP cost display issue in NPC combat control mod.
Added a tweak for weapon perk modifier to AIBestWeaponFix.
Minor edits to code/documents.
Updated version number.
2019-08-09 11:47:33 +08:00
NovaRain 7c23bb2dc2 Merge branch 'develop' 2019-07-18 09:33:44 +08:00
NovaRain 839e8d2636 Minor edits to ddraw.ini 2019-07-18 09:26:47 +08:00
NovaRain 01bbd111d3 Fixed elevation check in get/set_can_rest_on_map
Changed DebugMode to not require enabling sfall debugging mode.
Changed version to 4.1.9.1 as maintenance release.
2019-07-17 10:02:20 +08:00
NovaRain 16fbc0f93f Changed "add_extra_msg_file" script function (#249)
* added auto ID assignment for the message file.
2019-07-16 12:45:22 +08:00
NovaRain 2bfb886ece Fixed two issues in party control code
* perks picked in combat disappeared after switching control to other
critters.

* player's selected weapon mode was not saved.
2019-07-16 10:51:26 +08:00
NovaRain b33277c35a Fixed the error handling on loading sfallgv.sav
* to improve backward compatibility with older saved games.
2019-07-15 20:49:55 +08:00
NovaRain e127be29e8 Fixed key_pressed function not working in KEYPRESS hook (#248)
Minor text edits to CombatHs.cpp.
Updated version number.
2019-07-15 09:54:41 +08:00
NovaRain 361ebbe939 Added PerksList option to gl_partycontrol 2019-07-14 10:38:17 +08:00
NovaRain 2cdf0dcf48 Merge branch 'develop' 2019-07-12 07:37:09 +08:00
NovaRain b41a870f3b Fixed flickering when switching control in gl_partycontrol 2019-07-12 07:36:47 +08:00
NovaRain cccdd4cb16 Merge branch 'develop' 2019-07-11 09:25:06 +08:00
NovaRain 9a5ea216c4 Excluded barter mode for ItemCounterDefaultMax
Minor edits to document/code.
2019-07-10 10:47:25 +08:00
NovaRain 8d1b959f20 Added assignment of unique IDs to items/critters for event queue
* to prevent event queue being added to the incorrect object on the map.
2019-07-09 21:47:27 +08:00
NovaRain c3080a2db9 Changed the implementation of the bug fix in commit 02a3bbd
Added additional fix for "NPC turns into a container" bug.
2019-07-09 10:45:53 +08:00
NovaRain 32ecdcfdd9 Fixed bugs related to knockout/knockdown critters
Fixed knocked down critters not playing stand up animation after the
combat ends.

Fixed dead NPCs reloading their weapons after the combat ends.
2019-07-06 22:27:06 +08:00
NovaRain 914655085a Fixed the execution of functions before exiting map in commit 045926c 2019-07-06 01:53:46 +08:00
NovaRain cde3157153 Added KnockoutTime option to change the duration of the knockout effect.
Renamed WorldMapInterface option to ExpandWorldMap.

Fixed op_lookup_string_proc_ engine function not searching the last
procedure in a script.
2019-07-04 13:49:11 +08:00
NovaRain e2865b751b Added reassignment of IDs for critters upon first loading a map
* for fixing mapper not checking existing object IDs and generating
duplicated ones for new critters added on a map.
2019-07-03 15:08:26 +08:00
NovaRain 274e141277 Added a check for the DAM_KNOCKED_OUT flag
to wield_obj_critter/inven_unwield script functions.

Added climbing ladders to "interrupted player's movement in combat" fix.
2019-07-03 12:09:39 +08:00
NovaRain d8d3bade94 Fixed XP stealing bug in gl_partycontrol.
* if the combat ends automatically after a controlled critter's turn,
it would get the player's combat xp and "level up".
2019-07-01 13:06:32 +08:00
NovaRain ff2ebdc82a Added "combat ends normally" event to HOOK_COMBATTURN
Fixed a crash in COMBATTURN hook when loading in combat mode while
controlling critters.

Fixed critter control algorithm in PartyControl.cpp and set_dude_obj
not accepting a null argument.
2019-07-01 12:15:32 +08:00
NovaRain 2ffdc43869 Added a memory conflict warning to the log. 2019-07-01 06:34:00 +08:00
NovaRain 9f585ba7e6 Added SkipOpeningMovies=2 to also skip the splash screen 2019-06-29 20:01:41 +08:00
NovaRain 3f96e42730 Added ActionPointsBar option to [Interface] in INI
Added a new Interface module.
Moved WorldMapInterface to the new [Interface] section.
Moved some code from Worldmap.cpp to Interface.cpp.
Updated sfall.dat with new IFACE_E.frm and HR_IFACE_800E.frm files.
2019-06-28 21:40:57 +08:00
NovaRain d3f7e2a79a Moved unlisted FRM functions and structure from HeroAppearance.cpp to EngineUtils.cpp/Structs.h.
Tweaked the formate of some text in sfall log.
2019-06-28 07:33:47 +08:00
NovaRain f9ca201741 Fixed combat not ending automatically when there are no hostiles. 2019-06-26 06:10:47 +08:00
NovaRain 06a115070b Added AutoSearchPath option to [ExtraPatches].
* this provides a simpler way to load assorted .dat files without the
need of adding/editing PatchFileXX options in ddraw.ini.
2019-06-25 22:53:15 +08:00
NovaRain 56764c86c7 Changed DataLoadOrderPatch to be 1 by default. 2019-06-24 12:18:00 +08:00
NovaRain b8b16d5449 Fixed get/set_critter_*_stat not accepting a pointer to the player.
* for the compatibility with earlier versions.
2019-06-23 08:18:34 +08:00
NovaRain 1020851bcd Corrected the position of entrances on town maps for WorldMapInterface. 2019-06-19 10:56:14 +08:00
NovaRain e790178e66 Fixed fade in/out of the screen in DX9 mode. 2019-06-18 09:25:53 +08:00
NovaRain 28059ce890 Fixed Scout perk being taken into account for mark_area_known function.
* technically it should only effect the visibility of tiles when you're
exploring on the world map.

Fixed the incorrect coordinates for small/medium location circles when
highlighting their sub-tiles (one of bugs listed in #228)

Slightly adjusted the position/size for Local variables button in debug
editor.
2019-06-17 11:19:40 +08:00
NovaRain 04d06a8167 Added viewing and modifying local vars for critters to the debug editor. 2019-06-15 09:57:14 +08:00
NovaRain ddda559898 Added "add_extra_msg_file" and "metarule_exist" script functions. 2019-06-14 11:05:42 +08:00
NovaRain 88438edbc5 Code correction to previous two commits. 2019-06-12 09:10:29 +08:00
NovaRain 1e9dd57224 Party Control: added saving selected weapon mode.
* before weapon mode got reset when switching control between critters.
2019-06-11 10:10:00 +08:00
NovaRain 7826a937db Rewrote get_attack_type script function in C++. 2019-06-11 09:37:49 +08:00
NovaRain 480de50f88 Fixed the interrupted player's movement in combat.
* it happens when the player try to use objects with Bonus Move APs
available. The distance has to be greater than remaining normal APs.

Replaced calling db_dir_entry_ with db_access_ in some code.
2019-06-10 09:43:49 +08:00
NovaRain a64268a88a Fixed the position of the target maker for location circles.
Improved WorldMapInterface option, now the game won't crash when
WorldMap.frm is not found.
2019-06-09 11:33:04 +08:00
NovaRain fcd5e8475b Fixed the reserve movement fix in commit 02a3bbd.
* before the reserve movement didn't work correctly if the player has
free move AP (yellow, from Bonus Move) left.
2019-06-09 07:22:47 +08:00
NovaRain 808ba05a0b Added WorldMapInterface option to expand the world map interface.
Fixed the up/down button images in the world map interface.
Added loading sfall.dat resource file, which contains new WorldMap.frm
and AppHeroWin.frm.
2019-06-08 23:53:56 +08:00
NovaRain 02a3bbd536 Fixed anim_move_to_tile_ ignoring the distance argument.
* this also fixes the broken "reserve movement" feature.
2019-06-08 09:45:01 +08:00
NovaRain 137644aa72 Fixed a few bugs in WorldMapSlots option.
Updated version number.
2019-06-06 10:18:10 +08:00
178 changed files with 12757 additions and 5387 deletions
+3 -2
View File
@@ -158,12 +158,13 @@
//
this.bCrittersLvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bCrittersLvar.Enabled = false;
this.bCrittersLvar.Location = new System.Drawing.Point(119, 401);
this.bCrittersLvar.Location = new System.Drawing.Point(118, 401);
this.bCrittersLvar.Name = "bCrittersLvar";
this.bCrittersLvar.Size = new System.Drawing.Size(99, 23);
this.bCrittersLvar.Size = new System.Drawing.Size(100, 23);
this.bCrittersLvar.TabIndex = 7;
this.bCrittersLvar.Text = "Local variables";
this.bCrittersLvar.UseVisualStyleBackColor = true;
this.bCrittersLvar.Click += new System.EventHandler(this.bCrittersLvar_Click);
//
// DebugEditor
//
+42 -1
View File
@@ -38,7 +38,7 @@ namespace FalloutClient {
private static ByteConverter converter = new ByteConverter();
private enum Mode { Globals, MapVars, SGlobals, Arrays, Critters }
private enum Mode { Globals, MapVars, SGlobals, Arrays, Critters, LocalVars }
private readonly EditorConnection connection;
private Mode mode;
@@ -47,6 +47,7 @@ namespace FalloutClient {
private readonly Dictionary<uint, string> CritNames = new Dictionary<uint, string>();
private void Redraw() {
bCrittersLvar.Enabled = false;
bEdit.Enabled = false;
Column2.ReadOnly = false;
Column3.ReadOnly = false;
@@ -96,6 +97,7 @@ namespace FalloutClient {
Column2.HeaderText = "PID";
Column3.HeaderText = "Pointer";
bEdit.Enabled = true;
bCrittersLvar.Enabled = true;
for (int i = 0; i < connection.Critters.Length / 2; i++) {
uint modcrit = (connection.Critters[i, 0] & 0xfffff);
string name = CritNames.ContainsKey(modcrit) ? CritNames[modcrit] : "";
@@ -333,6 +335,45 @@ namespace FalloutClient {
}
}
private void bCrittersLvar_Click(object sender, EventArgs e) {
if (dataGridView1.SelectedRows.Count == 0) return;
int i = (int)dataGridView1.SelectedRows[0].Tag;
connection.WriteDataType(DataTypeSend.RetrieveCritter);
connection.WriteInt(i);
BinaryReader br = new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(33 * 4)));
br.BaseStream.Position = 30 * 4;
int sid = br.ReadInt32();
br.Close();
if (sid != -1) {
connection.WriteDataType(DataTypeSend.GetLocal);
connection.WriteInt(sid);
int totalVar = connection.ReadInt();
string[] values = new string[totalVar];
if (totalVar > 0) {
br = new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(totalVar * 4)));
for (int j = 0; j < totalVar; j++) {
values[j] = br.ReadInt32().ToString();
}
br.Close();
}
values = EditorWindow.ShowEditor(this, values);
if (values != null) {
int countVar = values.Length;
MemoryStream ms = new MemoryStream(countVar * 4);
BinaryWriter bw = new BinaryWriter(ms);
for (int j = 0; j < countVar; j++) bw.Write(int.Parse(values[j]));
connection.WriteDataType(DataTypeSend.SetLocal);
connection.WriteInt(sid);
connection.WriteInt(countVar);
connection.WriteBytes(ms.GetBuffer(), 0, countVar * 4);
bw.Close();
}
} else {
MessageBox.Show("This critter has no script attached.");
}
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
bEdit.PerformClick();
}
+16
View File
@@ -29,6 +29,7 @@
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.checkBox = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
@@ -100,11 +101,24 @@
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column3.Width = 150;
//
// checkBox
//
this.checkBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.checkBox.AutoSize = true;
this.checkBox.Location = new System.Drawing.Point(103, 341);
this.checkBox.Name = "checkBox";
this.checkBox.Size = new System.Drawing.Size(91, 17);
this.checkBox.TabIndex = 3;
this.checkBox.Text = "Values in Hex";
this.checkBox.UseVisualStyleBackColor = true;
this.checkBox.Click += new System.EventHandler(this.checkBox_Click);
//
// EditorWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(458, 371);
this.Controls.Add(this.checkBox);
this.Controls.Add(this.dataGridView1);
this.Controls.Add(this.bCancel);
this.Controls.Add(this.bSave);
@@ -115,6 +129,7 @@
this.Text = "Edit Values";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
@@ -126,5 +141,6 @@
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
private System.Windows.Forms.CheckBox checkBox;
}
}
+64 -6
View File
@@ -8,15 +8,34 @@ namespace FalloutClient {
public partial class EditorWindow : Form
{
private readonly DataType[] types;
private readonly string[] values;
private readonly DataType[] types = null;
private string[] values;
private bool save;
private static bool valueInHex = false;
private void ConvertValues(bool toHex) {
for (int i = 0; i < values.Length; i++) {
if (toHex) {
if (types == null || types[i] == DataType.Int) {
int val = int.Parse(values[i]);
values[i] = "0x" + val.ToString("x").ToUpper();
}
} else {
if (types == null || types[i] == DataType.Int) {
values[i] = Convert.ToInt32(values[i], 16).ToString();
}
}
}
}
private EditorWindow(string[] names, DataType[] types, string[] values, bool isMap) {
this.types = types;
this.values = values;
InitializeComponent();
checkBox.Checked = EditorWindow.valueInHex;
dataGridView1.SuspendLayout();
if (valueInHex) ConvertValues(true);
if (names == null)
for (int i = 0; i < types.Length; i++) {
string element = i.ToString();
@@ -31,15 +50,46 @@ namespace FalloutClient {
public static string[] ShowEditor(DebugEditor form, string[] names, DataType[] types, string[] values, bool isMap = false) {
EditorWindow editor = new EditorWindow(names, types, values, isMap);
editor.ShowDialog();
if (editor.save)
if (editor.save) {
if (valueInHex) editor.ConvertValues(false);
return editor.values;
else
return null;
}
return null;
}
private EditorWindow(string[] values) {
this.values = values;
InitializeComponent();
checkBox.Checked = EditorWindow.valueInHex;
dataGridView1.SuspendLayout();
if (valueInHex) ConvertValues(true);
for (int i = 0; i < values.Length; i++) {
dataGridView1.Rows.Add(i.ToString(), "Int", values[i]);
}
dataGridView1.ResumeLayout();
}
public static string[] ShowEditor(DebugEditor form, string[] lvalues) {
EditorWindow editor = new EditorWindow(lvalues);
editor.ShowDialog();
if (editor.save) {
if (valueInHex) editor.ConvertValues(false);
return editor.values;
}
return null;
}
private bool CheckInput(DataType type, string str) {
switch (type) {
case DataType.Int:
if (valueInHex) {
try {
Convert.ToInt32(str, 16);
return true;
} catch (Exception) {
return false;
}
}
int i;
return int.TryParse(str, out i);
case DataType.Float:
@@ -51,7 +101,7 @@ namespace FalloutClient {
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
string str = (string)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if (str != null && CheckInput(types[e.RowIndex], str))
if (str != null && CheckInput(((types != null) ? types[e.RowIndex] : DataType.Int), str))
values[e.RowIndex] = str;
else
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = values[e.RowIndex];
@@ -65,5 +115,13 @@ namespace FalloutClient {
save = true;
Close();
}
private void checkBox_Click(object sender, EventArgs e) {
valueInHex = checkBox.Checked;
ConvertValues(valueInHex);
for (int i = 0; i < values.Length; i++) {
dataGridView1.Rows[i].Cells[2].Value = values[i];
}
}
}
}
+2
View File
@@ -29,6 +29,8 @@ namespace FalloutClient {
SetSGlobal = 4,
GetArray = 9,
SetArray = 10,
GetLocal = 11,
SetLocal = 12,
Exit = 254
}
}
+2 -2
View File
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("4.1.7.0")]
[assembly: AssemblyFileVersion("4.1.7.0")]
[assembly: AssemblyVersion("4.1.9.0")]
[assembly: AssemblyFileVersion("4.1.9.0")]
+4 -4
View File
@@ -1,8 +1,8 @@
# sfall
A set of engine modifications for the classic game Fallout 2 in form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
A set of engine modifications for the classic game Fallout 2 in form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
Engine modifications include:
**Engine modifications include:**
- Better support for modern operating systems
- Externalizing many settings like starting map and game time, skills, perks, critical hit tables, books, etc.
- Bug fixes
@@ -10,7 +10,7 @@ Engine modifications include:
- Extended scripting capabilities for modders (many new opcodes to control sfall features as well as previously unavailable vanilla engine functions)
Original author: timeslip
Original author: timeslip
Original description: A set of engine modifications for the classic game Fallout 2 by Interplay. Includes fixes for bugs in the original engine, allows fallout to run correctly on modern operating systems, and adds additional features for modders.
Original description: A set of engine modifications for the classic game Fallout 2 by Interplay. Includes fixes for bugs in the original engine, allows fallout to run correctly on modern operating systems, and adds additional features for modders.
+30
View File
@@ -7,6 +7,30 @@
; have an additional NoHardcode option in this file which can
; be used to remove their hardcoded effects, and add new stat/skill effects
[PerksTweak]
;Change the penalty distance and distance bonus for 'Weapon Scope Range' weapon perk
;0 - no penalty, 8 - default penalty
WeaponScopeRangePenalty=8
;2 - no bonus, 5 - default bonus
WeaponScopeRangeBonus=5
;Changes the distance bonus for 'Weapon Long Range' weapon perk
;2 - no bonus, 4 - default bonus
WeaponLongRangeBonus=4
;Changes the hit chance bonus for 'Weapon Accurate' weapon perk
;0 - no bonus, 200 - maximum bonus, 20 - default bonus
WeaponAccurateBonus=20
;Changes the strength bonus for 'Weapon Handling' perk
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
WeaponHandlingBonus=3
;##############################################################################
[Perks]
;Set to 1 to enable the modifications for perks
Enable=0
;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
@@ -43,6 +67,7 @@
;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
@@ -98,6 +123,11 @@ Skill4Mod=0
Skill5=-1
Skill5Mod=0
;##############################################################################
[Traits]
;Set to 1 to enable the modifications for traits
Enable=0
;This is a modification to trait 0
[t0]
NoHardcode=0
@@ -0,0 +1,82 @@
;NPC armor appearance configuration for vanilla Fallout 2. Does not require any new graphics
;Party members will use player's armor appearance just like old B-Team mod
;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]
Jacket = 74,265
Leather = 1,379
Metal = 2,240,380
Power = 3,232
AdvPower = 348,349
Combat = 17,239,381
Robe = 113,524
; Default armor FIDs (the same for all NPCs)
[Default]
Jacket = 16777229
Leather = 16777228
Metal = 16777230
Combat = 16777226
Power = 16777217
AdvPower = 16777287
Robe = 16777218
; Sulik
[1]
PID=16777313
WeaponAnims=1,3,4,6
Default=16777280
; Vic
[2]
PID=16777278
WeaponAnims=1,5,7
Default=16777307
; Cassidy
[3]
PID=16777305
WeaponAnims=4,5,7
Default=16777260
Leather=16777260
; Myron
[4]
PID=16777376
WeaponAnims=1,5
Default=16777304
; Lenny
[5]
PID=16777323
WeaponAnims=1,5,6
Default=16777295
; Davin
[6]
PID=16777379
WeaponAnims=1,2,5
Default=16777264
; Miria
[7]
PID=16777380
WeaponAnims=1,6
Default=16777252
Jacket=16777222
Leather=16777221
Metal=16777223
Combat=16777219
+23 -25
View File
@@ -23,69 +23,67 @@ Robe = 113,524
; Default armor FIDs (the same for all NPCs)
[Default]
Power=16777217
AdvPower=16777287
Robe=16777218
Power = 16777217
AdvPower = 16777287
Robe = 16777218
; Sulik
[1]
PID=16777313
WeaponAnims=1,3,4,6
WeaponAnims=1,3,4,6,14
Default=16777280
Leather=16777325
Power=16777324
Metal=16777323
Jacket=16777321
Leather=16777325
Metal=16777323
Combat=16777322
Power=16777324
; Vic
[2]
PID=16777278
WeaponAnims=1,5,7
WeaponAnims=1,5,7,13,14
Default=16777307
Jacket=16777329
Combat=16777330
Metal=16777331
Power=16777332
Leather=16777333
Metal=16777331
Combat=16777330
Power=16777332
; Cassidy
[3]
PID=16777305
WeaponAnims=4,5,7
WeaponAnims=4,5,7,13
Default=16777354
Leather=16777260
Power=16777328
Metal=16777327
Jacket=16777351
Leather=16777260
Metal=16777327
Combat=16777326
Power=16777328
; Myron
[4]
PID=16777376
WeaponAnims=1,5
WeaponAnims=1,5,14
Default=16777304
Leather=
Power=16777349
Combat=16777350
Power=16777349
; Cat Jules
; Cat Jules (RP)
[5]
PID=16777734
PID=16777720
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Default=16777353
Jacket=16777346
Leather=16777347
Metal=16777348
Jacket=16777346
Combat=16777226
; Kitsune
; Kitsune (RP)
[6]
PID=16777724
PID=16777718
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Default=16777222
Jacket=16777222
Leather=16777221
Metal=16777223
Jacket=16777222
Combat=16777219
+3
View File
@@ -39,6 +39,9 @@ MotionScanner=0
Mode=0
;PIDList=62,89,97,107,160,161
;Set a comma delimited list of perk IDs for perks to be inherited from the player during the combat control
PerksList=0,73
;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
+139 -64
View File
@@ -1,21 +1,29 @@
;sfall configuration settings
;v4.1.8
;v4.2.3
[Main]
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
UseCommandLine=0
;Uncomment and point to a file to get alternate translations for some sfall messages
;TranslationsINI=.\Translations.ini
;TranslationsINI=sfall\Translations.ini
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[ExtraPatches]
;This section allows you to set multiple paths to folders containing mods or patches that will be loaded by the game
;The priority of read files will be higher than the files in patchXXX.dat. If DataLoadOrderPatch is enabled, the data load order will be:
;The priority of read files will be higher than the files in patchXXX.dat
;If DataLoadOrderPatch is enabled, the data load order will be:
;master_patches > critter_patches > PatchFile99 - PatchFile0 > patchXXX.dat > ...
;Paths to folders and Fallout .dat files are supported. The available range for PatchFile option names is from 0 to 99
;The greater numbers take precedence over lesser numbers
;PatchFile0=mods\RP_data
;Path to the folder in which the game will automatically search and load custom .dat files
;The data load order of the .dat files in the folder will be in reverse alphabetical order of the filenames
;The .dat files specified in the PatchFileXX options will have higher priority than others
;Uncomment the option to specify a different folder path. The default path is <GameRoot>\mods\
;AutoSearchPath=mods
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Sound]
;Sets the number of allowed simultaneous sound effects
@@ -23,7 +31,7 @@ UseCommandLine=0
NumSoundBuffers=0
;Set to 1 to allow attaching sound files to combat float messages
AllowSoundForFloats=1
AllowSoundForFloats=0
;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
@@ -72,6 +80,10 @@ Mode=0
GraphicsWidth=0
GraphicsHeight=0
;Uncomment the option to use a hardware shader (requires DX9 graphics mode 4 or 5)
;The shader file <name>.fx must be placed in <GameRoot>\<master_patches>\shaders\ and must contain one technique with one or more passes
;GlobalShaderFile=global.fx
;Set to 1 to do the palette conversion on the GPU
;Set to 2 to do the palette conversion on the CPU
;Set to 0 to pick automatically
@@ -86,13 +98,39 @@ GPUBlt=0
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
;Requires DX9 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
[Interface]
;Set to 1 to expand the number of action points displayed on the interface bar
;Requires new IFACE_E.frm and HR_IFACE_<res>E.frm files in art\intrface\ (included in sfall.dat) to display correctly
;The minimum supported version of High Resolution Patch is 4.1.8
ActionPointsBar=0
;Set to 1 to use the expanded world map interface
;Set to 2 to skip correcting the position of entrance markers on town maps
;You can use resized FRMs in 700x682 for town maps in the expanded world map interface
;Requires High Resolution Patch v4.1.8 and a new WORLDMAP.frm file in art\intrface\ (included in sfall.dat)
;The resolution of hi-res patch must be set to at least 890x720
ExpandWorldMap=0
;Set to 1 to draw a dotted line while traveling on the world map (similar to Fallout 1)
WorldMapTravelMarkers=0
;Uncomment these lines to change the appearance of the markers
;The color index in Fallout default palette (valid range: 1..255; default is 134)
;TravelMarkerColor=134
;The length and spacing of the dots in pixels for each type of terrain in worldmap.txt
;Syntax is 'length:spacing', with each pair separated by a comma (valid range: 1..10; default is 2)
;TravelMarkerStyles=2:2,2:2,2:2,2:2
;Set to 1 to display terrain types when hovering the cursor over the player's marker on the world map
WorldMapTerrainInfo=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Input]
;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens
@@ -169,6 +207,12 @@ DebugEditorKey=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Misc]
;Changes some of Fallout 2 engine functions to Fallout 1 behavior:
;- disables playing the final movie/credits after the endgame slideshow
;- disables halving the weight for power armor items
;- endgame_movie script function plays movie 10 or 11 based on the player's gender before the credits
Fallout1Behavior=0
;Time limit in years. Must be between -3 and 13
;Set to 0 if you want to die the instant you leave arroyo
;Set to -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it
@@ -216,12 +260,17 @@ UseFileSystemOverride=0
;Set to 1 to use the modified data load order for the engine to find game data
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
DataLoadOrderPatch=0
DataLoadOrderPatch=1
;Set to 1 to enable loading alternative dialog msg files from text\<language>\dialog_female\ for female PC
;Set to 1 to load alternative dialog msg files from text\<language>\dialog_female\ for female PC
;Set to 2 to also load subtitle files from text\<language>\cuts_female\ for female PC
FemaleDialogMsgs=0
;Set to 1 to allow using the special '^' character in dialog msg files to specify the alternative text
;that will be displayed in the dialogue based on the player's gender
;The text must be enclosed in angle brackets (example: <MaleText^FemaleText>)
DialogGenderWords=0
;To change the default and starting player models, uncomment the next four lines.
;The default models can also be changed ingame via script
;MaleStartModel=hmwarr
@@ -250,7 +299,7 @@ Movie16=artimer4.mve
Movie17=credits.mve
;To change the starting year, month or day, uncomment the next 3 lines
;Both StartMonth and StartDay are 0-indexed
;Both StartMonth and StartDay are 0-indexed (i.e. 0 is January or the first day of a month)
;StartYear=-1
;StartMonth=-1
;StartDay=-1
@@ -261,9 +310,6 @@ Movie17=credits.mve
;LocalMapXLimit=480
;LocalMapYLimit=400
;To add additional perks to the game, uncomment the next line and set it to point to a file containing perk information
;PerksFile=Perks.ini
;Set to 1 if you want the pipboy to be available at the start of the game
;Set to 2 to make the pipboy available by only skipping the vault suit movie check
PipBoyAvailableAtGameStart=0
@@ -286,9 +332,6 @@ DamageFormula=0
;Prevents you from using 0 to escape from dialogue at any time.
DialogueFix=1
;Prevents you from using number keys to enter unvisited areas on a town map
TownMapHotkeysFix=1
;Set to 1 to disable the horrigan encounter
DisableHorrigan=0
@@ -314,9 +357,6 @@ OverrideArtCacheSize=0
;Set to 2 to block all saving in combat
SaveInCombatFix=1
;Point at an ini file containing elevator data
;ElevatorsFile=Elevators.ini
;Uncomment and set a comma delimited list of numbers to use a custom xp table.
;Player's level is capped once the highest specified level is reached
;XPTable=50,100,200
@@ -327,14 +367,17 @@ SaveInCombatFix=1
AdditionalWeaponAnims=1
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
;Modifiers affect both NPCs and the player
;BodyHit_Head=-40
;BodyHit_Left_Arm=-30
;BodyHit_Right_Arm=-30
;BodyHit_Torso_Uncalled=0
;BodyHit_Torso=0
;BodyHit_Right_Leg=-20
;BodyHit_Left_Leg=-20
;BodyHit_Eyes=-60
;BodyHit_Groin=-30
;The modifier for unaimed shots
;BodyHit_Torso_Uncalled=0
;Set to 1 to use a CriticalOverrides.ini file to override the default critical table
;Set to 2 to use the default critical with bug fixes (doesn't require an ini)
@@ -352,9 +395,6 @@ AlwaysReloadMsgs=0
;Set to 1 to force the player to play the idle animation when reloading their weapon
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
@@ -362,15 +402,17 @@ 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 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority)
;Set to 1 (or some higher number if needed, the maximum is 127) to prevent 100% CPU use
ProcessorIdle=-1
;Set to 1 if using the hero appearance mod
;Set to 2 for backward compatibility with scripts that manually fix obj_art_fid/art_change_fid_num script functions for dude_obj
;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
;Set to 2 to also skip the splash screen
SkipOpeningMovies=0
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it.
@@ -378,14 +420,15 @@ SkipOpeningMovies=0
;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
;Set to 1 to fix NPCs not checking weapon perks properly when choosing the best weapon in combat
;Set to 2 to change the priority multiplier for having weapon perk to 3x (the original is 5x)
;Note that enabling this option can significantly affect the weapon of choice for some NPCs
AIBestWeaponFix=0
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as drug use preference when using drugs in their inventory
AIDrugUsePerfFix=0
;Allows the use of tiles over 80*36 in size. sfall will just split and resave them at startup
;Allows the use of tiles over 80x36 in size. sfall will just split and resave them at startup
;Set to 1 to check all tiles on started (slow)
;Set to 2 if you provide a XLtiles.lst file in art\tiles\ containing a list of the tile ids that need checking
AllowLargeTiles=0
@@ -403,6 +446,9 @@ Doctor=293
Science=293
Repair=293
;Set to 1 to remove window position rounding for script-created windows
RemoveWindowRounding=1
;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
@@ -414,6 +460,7 @@ UseScrollingQuestsList=1
;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
;Each name in PremadePaths is limited to 11 characters
;PremadePaths=combat,diplomat,stealth
;PremadeFIDs=201,203,202
@@ -422,7 +469,7 @@ UseScrollingQuestsList=1
;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
;ConsoleOutputPath="bingle.txt"
;ConsoleOutputPath=console.txt
;Set to 1 to add additional pages of save slots
ExtraSaveSlots=0
@@ -465,21 +512,17 @@ 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
;Set to 1 to remove the limits that stop the player rolling critical successes/misses in the first few days of game time
RemoveCriticalTimelimits=0
;Set to 1 to enable party members with level 6 protos to reach level 6
NPCStage6Fix=0
;Change the colour of the font used on the main menu for the Fallout/sfall version number
;It's the last byte ('3c' by default) that picks the colour used. The first byte supplies additional flags
;MainMenuFontColour=0x0600003c
;Change the colour of the font used on the main menu for the Fallout/sfall version number and copyright text
;It's the last byte ('3C' by default) that picks the colour used. The first byte supplies additional flags for this option
;MainMenuFontColour=0x00003C
;Change the colour of the font used on the main menu for the button text
;MainMenuBigFontColour=0x3C
;Two alternate fixes to the interaction between HtH attacks and the fast shot trait
;0 - Fallout 2 original behaviour
@@ -490,18 +533,6 @@ 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
;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 unused stat (STAT_unused = 10) or have the size limit of 100 if the stat is not set
@@ -553,6 +584,10 @@ StartGDialogFix=0
;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 fix the issue with the division operator treating negative integers as unsigned
;Note: To perform the unsigned integer division, use the new 'div' operator
DivisionOperatorFix=1
;Set to 1 to enable the balanced bullet distribution formula for burst attacks
ComputeSprayMod=0
@@ -582,17 +617,13 @@ ExplosionsEmitLight=0
;MovieTimer_artimer3=270
;MovieTimer_artimer4=360
;Set to 1 to enable the new arrays behavior
;Set to 1 to enable the new arrays behavior (default behavior)
;Set to 0 for backward compatibility with pre-3.4 scripts
arraysBehavior=1
;Set to 1 to add proper checks if there is enough ammo to use weapons that use multiple ammo per shot
CheckWeaponAmmoCost=0
;To add additional books to the game, uncomment the next line and point to a file containing book information
;See the Books.ini in the modders pack for an example file
;BooksFile=Books.ini
;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535)
CombatPanelAnimDelay=1000
;Controls the speed of dialog panel animations (lower - faster; valid range: 0..255)
@@ -610,7 +641,7 @@ 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
;Set to 1 to change the counter in the 'Move Items' window to start with maximum number, except in the barter screen
ItemCounterDefaultMax=0
;Set to 1 to leave the music playing in dialogue with talking heads
@@ -626,10 +657,14 @@ UseWalkDistance=3
;Set to 1 to fix the bug of being unable to sell used geiger counters or stealth boys
CanSellUsedGeiger=1
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenary/critters
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenery/critters
;Set to 0 if another mod you're using has custom vehicles
CarChargingFix=1
;Set to 1 to prevent the car from being lost when entering a location via the Town/World button and then leaving on foot
;Note that the global variable 633 (GVAR_CAR_PLACED_TILE) will be set to -1 when the player leaves a location
CarPlacedTileFix=1
;Set to 1 to skip weapon equip/unequip animations when performing various actions
InstantWeaponEquip=0
@@ -665,7 +700,7 @@ PartyMemberExtraInfo=0
;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 1 to skip loading all game settings except the game/combat difficulty from a saved game
;Set to 2 to also skip loading the game/combat difficulty settings
SkipLoadingGameSettings=0
@@ -680,9 +715,42 @@ SpecialDeathGVAR=491
;Note that enabling this option can break the map changes in Modoc and Vault 15
DisableSpecialMapIDs=0
;Changes the base value of the duration of the knockout effect (valid range: 35..100; default is 35)
;The formula for the duration in ticks is: 10 * (value - 3 * EN)
KnockoutTime=35
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
CreditsAtBottom=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
; Configuration ini files
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;To change the path and filename of the critical table file, uncomment the next line
;OverrideCriticalFile=sfall\CriticalOverrides.ini
;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=sfall\Stats.ini
;Allows you to edit the skill tables
;Point the next line to an ini file containing the replacement skill data
;SkillsFile=sfall\Skills.ini
;To add additional perks to the game, uncomment the next line and set it to point to a file containing perk information
;PerksFile=sfall\Perks.ini
;To add additional books to the game, uncomment the next line and point to a file containing book information
;See the Books.ini in the modders pack for an example file
;BooksFile=sfall\Books.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=sfall\Drugs.ini
;Point to an ini file containing elevator data
;ElevatorsFile=sfall\Elevators.ini
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Scripts]
;Comma-separated list of masked paths to load global scripts from
@@ -690,6 +758,12 @@ CreditsAtBottom=0
;Paths outside of scripts folder are supported
GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
;Uncomment the option to specify an additional folder path for ini files used by scripts
;The game will search for the ini files relative to this directory
;If the file is not found, the search will proceed relative to the root directory of the game
;The maximum length of the specified path is 61 characters
;IniConfigFolder=mods\iniConfigs
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Debugging]
;Extra sfall configuration settings that can be used by modders
@@ -699,7 +773,8 @@ GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
Enable=0
;Fallout 2 Debug Patch
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and a debug.log file
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and debug.log
;Does not require sfall debugging mode
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg:
;-------
;[debug]
@@ -709,11 +784,14 @@ Enable=0
;show_script_messages=1
;show_tile_num=1
;[sound]
;debug=1
;debug_sfxc=1
;debug=0
;debug_sfxc=0
;-------
DebugMode=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
;Change to 1 to skip the compatibility mode check
SkipCompatModeCheck=0
@@ -731,23 +809,20 @@ SkipSizeCheck=0
DontDeleteProtos=0
;Set to 1 to give scripts direct access to Fallout's address space, and to make arbitrary calls into Fallout's code
;Does not require sfall debugging mode
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
;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 critters to display combat float messages
;Requires AllowSoundForFloats to be enabled
Test_ForceFloats=0
;These options control what output is saved in the debug log (sfall-log.txt)
;Prints messages duing sfall initialization
Init=0
;Prints messages relating to hook scripts
@@ -0,0 +1,206 @@
/*
Example algorithm of how the game engine calculates combat damage
*/
#include "..\headers\define.h"
#include "..\headers\command.h"
#include "..\headers\sfall\sfall.h"
#include "..\headers\sfall\define_extra.h"
procedure start;
procedure compute_damage_F2;
procedure item_w_damage_hook;
procedure item_w_subtype(variable weapon, variable hit_mode);
procedure get_ammo_value(variable weapon, variable param);
variable item_w_damage;
procedure start begin
if game_loaded then begin
register_hook_proc(HOOK_COMBATDAMAGE, compute_damage_F2);
register_hook_proc(HOOK_ITEMDAMAGE, item_w_damage_hook);
end
end
procedure compute_damage_F2 begin
variable dmg_type, weapon_perk, dmg_thresh, dmg_resist, weapon_subtype, bonus_ranged, difficulty, i, dmg_mult, dmg_div, damage;
variable target, flags, knockback, amount;
variable
ctdTarget := get_sfall_arg,
ctdSource := get_sfall_arg,
amountTarget := get_sfall_arg,
amountSource := get_sfall_arg,
flagsTarget := get_sfall_arg,
flagsSource := get_sfall_arg,
weapon := get_sfall_arg,
bodypart := get_sfall_arg,
damageMultiplier := get_sfall_arg,
rounds := get_sfall_arg,
amountKnockback := get_sfall_arg,
hit_mode := get_sfall_arg;
if (flagsSource bwand DAM_HIT) then begin
target := ctdTarget;
flags := flagsTarget;
knockback := 1;
end else begin
target := ctdSource;
flags := flagsSource;
knockback := 0;
end
//amount := 0;
if target and (obj_type(target) == OBJ_TYPE_CRITTER) then begin
if weapon then begin
dmg_type := weapon_dmg_type(weapon);
weapon_perk := get_proto_data(obj_pid(weapon), PROTO_WP_PERK);
end else begin
dmg_type := DMG_normal_dam;
weapon_perk := -1;
end
dmg_thresh := get_critter_stat(target, STAT_dmg_thresh + dmg_type);
dmg_resist := get_critter_stat(target, STAT_dmg_resist + dmg_type);
if (flags bwand DAM_BYPASS) and (dmg_type != DMG_emp) then begin
dmg_thresh := dmg_thresh * 20 / 100;
dmg_resist := dmg_resist * 20 / 100;
end else begin
if (weapon_perk == PERK_weapon_penetrate)
or (hit_mode == ATKTYPE_PALMSTRIKE or hit_mode == ATKTYPE_PIERCINGSTRIKE
or hit_mode == ATKTYPE_HOOKKICK or hit_mode == ATKTYPE_PIERCINGKICK) then
dmg_thresh := dmg_thresh * 20 / 100;
if ctdSource == dude_obj and has_trait(TRAIT_TRAIT, ctdSource, TRAIT_finesse) then
dmg_resist += 30;
end
weapon_subtype := item_w_subtype(weapon, hit_mode); // item_w_subtype_
if (ctdSource != dude_obj) or (weapon_subtype != WEAPON_TYPE_GUNS) then
bonus_ranged := 0;
else
bonus_ranged := has_trait(TRAIT_PERK, ctdSource, PERK_bonus_ranged_damage) * 2;
difficulty := 100;
if (has_trait(TRAIT_OBJECT, ctdSource, OBJECT_TEAM_NUM) != has_trait(TRAIT_OBJECT, dude_obj, OBJECT_TEAM_NUM)) then begin
if (combat_difficulty == 0) then
difficulty := 75;
else if (combat_difficulty == 2) then
difficulty := 125;
end
// F2 default start
// Damage = (1 - (DR_armor + DR_ammo_adjust) * (((raw_damage * (dmg_mult * damageMultiplier)) / dmg_div) - dmg_thresh)
dmg_resist += get_ammo_value(weapon, PROTO_AM_DR_MOD); // item_w_dr_adjust_ (DR Adjust %)
if (dmg_resist < 100) then begin
if (dmg_resist < 0) then dmg_resist := 0;
dmg_mult := damageMultiplier * get_ammo_value(weapon, PROTO_AM_DMG_MULT); // item_w_dam_mult_ (Dmg mod A)
dmg_div := get_ammo_value(weapon, PROTO_AM_DMG_DIV); // item_w_dam_div_ (Dmg mod B)
for (i := 1; i <= rounds; i++) begin
damage := (item_w_damage + bonus_ranged) * dmg_mult; // item_w_damage_ (raw_damage)
if dmg_div then damage /= dmg_div;
damage := (((damage / 2) * difficulty) / 100) - dmg_thresh;
if (damage > 0) then begin
damage := damage - ((damage * dmg_resist) / 100); // reduce damage by the percentage of DR_armor + DR_Ammo
if (damage > 0) then amount += damage;
end
end
end
// F2 default end
if (ctdSource == dude_obj) then begin
if has_trait(TRAIT_PERK, ctdSource, PERK_living_anatomy_perk) and (critter_kill_type(ctdTarget) != KILL_TYPE_robot_kills)
and (critter_kill_type(ctdTarget) != KILL_TYPE_alien_kills) then
amount += 5;
if has_trait(TRAIT_PERK, ctdSource, PERK_pyromaniac_perk) and (dmg_type == DMG_fire) then
amount += 5;
end
if knockback and ((get_flags(target) bwand FLAG_MULTIHEX) == 0)
and (dmg_type == DMG_explosion or weapon == 0 or weapon_subtype == WEAPON_TYPE_MELEE)
and ((get_proto_data(obj_pid(target), PROTO_CR_FLAGS) bwand CFLG_NOKNOCKDOWN) == 0) then begin // critter_flag_check_
damage := 0;
if (target == dude_obj) and has_trait(TRAIT_PERK, target, PERK_stonewall_perk) then begin
damage := 1;
if (random(0, 100) < 50) then knockback := 0;
end
if knockback then begin
if (weapon_perk == PERK_weapon_knockback) then
amountKnockback := amount / 5;
else
amountKnockback := amount / 10;
if damage then amountKnockback /= 2;
end
end
end
if (flagsSource bwand DAM_HIT) then begin
display_msg("amountTarget = " + amountTarget+ ", amount = " + amount);
amountTarget := amount;
flagsTarget := flags;
end else begin
display_msg("amountSource = " + amountSource+ ", amount = " + amount);
amountSource := amount;
flagsSource := flags;
end
set_sfall_return(amountTarget);
set_sfall_return(amountSource);
set_sfall_return(flagsTarget);
set_sfall_return(flagsSource);
set_sfall_return(amountKnockback);
end
procedure item_w_damage_hook begin
variable
item_w_damage_min := get_sfall_arg,
item_w_damage_max := get_sfall_arg;
//weapon := get_sfall_arg,
//source := get_sfall_arg,
//hit_mode := get_sfall_arg,
//isMelee := get_sfall_arg;
item_w_damage := (item_w_damage_min + (item_w_damage_max - item_w_damage_min) / 2);
display_msg("item_w_damage_ = " + item_w_damage);
set_sfall_return(item_w_damage);
end
procedure item_w_subtype(variable weapon, variable hit_mode) begin
variable attack_mode, type := WEAPON_TYPE_UNARMED;
if weapon and (hit_mode <= ATKTYPE_RWEP2) then begin
attack_mode := (get_proto_data(obj_pid(weapon), PROTO_IT_FLAGS));
if (hit_mode == ATKTYPE_LWEP2) or (hit_mode == ATKTYPE_RWEP2) then
attack_mode := (attack_mode bwand 0xF0) / 16; // shift 4 bits to the right
else
attack_mode := (attack_mode bwand 0x0F);
if (attack_mode > ATKMODE_PRI_THROW) then
type := WEAPON_TYPE_GUNS;
else if (attack_mode == ATKMODE_PRI_THROW) then
type := WEAPON_TYPE_THROWN;
else if (attack_mode > ATKMODE_PRI_KICK) then
type := WEAPON_TYPE_MELEE;
end
return type;
end
procedure get_ammo_value(variable weapon, variable param) begin
variable pid := -1, value := 0; // default DR value
if weapon then begin
pid := get_weapon_ammo_pid(weapon);
if (pid > -1) then value := get_proto_data(pid, param);
end
if (pid == -1 and param != PROTO_AM_DR_MOD) then value := 1; // default value for Mult/Div
return value;
end
@@ -0,0 +1,116 @@
// Status: WIP
texture bloomMap;
sampler s0;
sampler BloomSampler : samplerstate
{
Texture = bloomMap;
MinFilter = Linear;
MagFilter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
// pseudo gauss blur
static const float2 offsets[12] = {
-0.326212, -0.405805,
-0.840144, -0.073580,
-0.695914, 0.457137,
-0.203345, 0.620716,
0.962340, -0.194983,
0.473434, -0.480026,
0.519456, 0.767022,
0.185461, -0.893124,
0.507431, 0.064425,
0.896420, 0.412458,
-0.321940, -0.932615,
-0.791559, -0.597705,
};
float w;
float h;
static const float2 resolution = float2(w, h);
// blur setting
static const float blurFalloff = 8;
static const float sharpness = 4;
float4 AdjustSaturation(float4 color, float saturation) {
float grey = dot(color, float3(0.3, 0.59, 0.11));
return lerp(grey, color, saturation);
}
float Brightness(float3 color)
{
return color.r * color.g - 0.75 * color.b;
}
float3 BlurFunction(float2 uv, float brightness, inout float totalWeight)
{
float3 pointColor =(tex2Dlod(s0, float4(uv, 0, 0)).rgb);
float diff = abs(brightness - Brightness(pointColor));
float weight = exp2(-0.25 * blurFalloff - diff * sharpness);
totalWeight += weight;
return pointColor * weight;
}
float4 BlurPS(float2 uv : TEXCOORD0, uniform float2 delta) : COLOR0
{
float3 sumColor = (tex2D(s0, uv).rgb);
float totalWeight = 1;
float brightness = Brightness(sumColor);
delta *= (1 / resolution);
float radius = 1;
float2 pointUV = uv + delta * radius;
sumColor += BlurFunction(pointUV, brightness, totalWeight);
pointUV = uv - delta * radius;
sumColor += BlurFunction(pointUV, brightness, totalWeight);
return float4((sumColor / totalWeight),1);
// return AdjustSaturation(Color, 0.5);
}
float4 BloomT(float2 texCoord : TEXCOORD0) : COLOR0 {
float4 c = tex2D(s0, texCoord);
float BloomThreshold = 0.2;
return saturate((c - BloomThreshold) / (1 - BloomThreshold));
}
float4 Bloom(float4 color : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0 {
float BaseIntensity = 1.0;
float BaseSaturation = 1;
float BloomIntensity = 1; // 0.4
float BloomSaturation = 0.5;
float BlurPower = 0.01;
float BloomThreshold = 0.5;
float4 original = tex2D(s0, texCoord);
// blur
float4 sum = tex2D(s0, texCoord);
for(int i = 0; i < 12; i++){
sum += tex2D(s0, texCoord + BlurPower * offsets[i]);
}
sum /= 13;
original = AdjustSaturation(original, BaseSaturation) * BaseIntensity;
sum = AdjustSaturation(sum, BloomSaturation) * BloomIntensity;
sum = saturate((sum - BloomThreshold) / (1 - BloomThreshold));
return sum + original;
// return sum;
}
technique Blur
{
// pass P2 { PixelShader = compile ps_2_0 BloomT(); }
// pass P3 { PixelShader = compile ps_2_0 Bloom(); }
Pass P0 { PixelShader = compile ps_3_0 BlurPS(float2(1, 0)); }
Pass P1 { PixelShader = compile ps_3_0 BlurPS(float2(0, 1)); }
}
+2 -2
View File
@@ -1,5 +1,5 @@
Master Theif cheat for fallout 2 by phobos2077
----------------------------------------
Master Thief cheat for fallout 2 by phobos2077
----------------------------------------------
- forces all steal attempts to succeed
@@ -1,20 +0,0 @@
procedure start;
// adjust include paths if needed
#include "..\..\scripting_docs\headers\sfall.h"
#include "..\..\scripting_docs\headers\dik.h"
procedure start begin
if game_loaded then begin
register_hook(HOOK_KEYPRESS);
end else begin
variable
event := get_sfall_arg,
keyDX := get_sfall_arg;
if (event == 1) and (keyDX == DIK_SEMICOLON) then begin
tap_key(DIK_CAPITAL);
tap_key(DIK_A);
tap_key(DIK_CAPITAL);
end
end
end
@@ -1,9 +0,0 @@
"Take All" Hotkey mod for Fallout 2 by NovaRain
----------------------------------------
- makes pressing the semicolon key send an uppercase A after a semicolon.
- Note: the uppercase A (shift + A if Caps Lock is off) is the built-in hotkey for the TAKE ALL button on the loot screen.
To use, copy *.int file to your scripts folder.
This mod is a simple example of how you can use HOOK_KEYPRESS hooks.
Binary file not shown.
@@ -0,0 +1,54 @@
/*
UI Hotkeys mod for Fallout 2 by NovaRain
----------------------------------------
- closes some game interfaces by pressing their hotkeys again:
* 'I' key for Inventory
* 'S' key for Skilldex
* 'Z' key for Pip-Boy
- extends the functionality of the 'Space' key (Caps Lock must be off):
* takes all items in the loot screen
* makes the offer in the barter screen
Requires sfall 3.5 or higher
*/
#include "..\headers\sfall\sfall.h"
#include "..\headers\sfall\dik.h"
procedure start;
procedure start begin
if game_loaded then begin
register_hook(HOOK_KEYPRESS);
end else begin
variable
event := get_sfall_arg,
keyDX := get_sfall_arg,
mode;
if (event) then begin
mode := get_game_mode;
if (mode bwand COUNTERWIN) then return; // new mode from sfall 4.2/3.8.20
if (keyDX == DIK_I and (mode bwand INVENTORY)) then begin
tap_key(DIK_ESCAPE);
end else if (keyDX == DIK_S and (mode bwand SKILLDEX)) then begin
tap_key(DIK_ESCAPE);
end else if (keyDX == DIK_Z and (mode bwand PIPBOY)) then begin
tap_key(DIK_ESCAPE);
end else if (keyDX == DIK_SPACE) then begin
if (mode bwand INTFACELOOT) then begin
tap_key(DIK_CAPITAL);
tap_key(DIK_A);
tap_key(DIK_CAPITAL);
end else if (mode bwand BARTER) then begin
play_sfx("IB2P1XX1");
tap_key(DIK_M);
end
end
end
end
end

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