Compare commits

..
304 Commits
Author SHA1 Message Date
NovaRain 9c084c10e0 Minor code format edits in LoadGameHook.cpp 2021-02-04 10:12:31 +08:00
NovaRain 52ce39c264 Added NPC armor mod to the example mods 2021-02-02 20:34:12 +08:00
NovaRain 4813b5656f Code edits to ScriptExtender.cpp
Updated FalloutStructs.h and ddraw.ini.
2021-02-02 11:39:33 +08:00
NovaRain 3932676824 Separated the loading and initialization of hook scripts
* now it works mostly in the same way as 4.x.
* now the hook injection code is run only once on sfall init.
2021-02-02 11:31:57 +08:00
NovaRain 7b5d50abf0 Separated the loading and initialization of global scripts
* now the loading occurs before the start of a new game.
* Note: hs_ scripts are still loaded & inited in one go after game load
2021-02-01 15:13:07 +08:00
NovaRain 4ffdac7f0d Refactored the code in LoadGameHook.cpp
* now the reset of modules should be in the same way as 4.x.
2021-01-31 20:49:32 +08:00
NovaRain 9149df171d Small optimization for game_loaded script function 2021-01-31 10:33:52 +08:00
NovaRain 4e200bc513 Minor edits to code and document 2021-01-31 10:26:57 +08:00
NovaRain 3ae0f0f87b Reorganized render related code in Graphics.cpp 2021-01-30 10:08:22 +08:00
NovaRain 609c4af6b1 Updated FalloutStructs.h and some other files 2021-01-30 09:28:32 +08:00
NovaRain 21b88c3cf0 Backported HOOK_ADJUSTFID from 4.2 2021-01-29 23:03:26 +08:00
NovaRain 87af67346e Fixed the "Leave" event of the window region
* the event procedure was not triggered when the cursor moves to
a non-scripted window.
2021-01-29 12:44:20 +08:00
NovaRain 7eab9ff3ce Added SmallFrameFix option
Code style edit: use !boolean instead of (boolean == false) for some
checks.
2021-01-29 12:05:19 +08:00
NovaRain 7a1ab34964 Moved the defines of engine function offsets to a new header 2021-01-28 21:33:04 +08:00
NovaRain a914029f46 Removed unnecessary hack in Perks.cpp 2021-01-28 12:54:03 +08:00
NovaRain 980176451e Code edits to Perks.cpp 2021-01-28 12:36:38 +08:00
NovaRain 9e861f735d Implemented sProto stuct and GetProto function
* replaced the obsolete "char* proto" usages and GetProtoPtr function.
2021-01-27 12:20:03 +08:00
NovaRain 83d50fc33e Code edits 2021-01-27 10:47:17 +08:00
NovaRain 839f531cbd Moved the defines of engine variable pointers to a new header 2021-01-26 22:01:34 +08:00
NovaRain ba11cee858 Renamed all engine function wrappers with "fo_" prefix 2021-01-26 14:03:37 +08:00
NovaRain 42215fc1bb Changed the script name search algorithm from linear to binary 2021-01-25 13:04:06 +08:00
NovaRain 2d7ff1e558 Changed "obj_under_cursor" for the movement cursor
* the function is not designed for use with it.

Code correction in Stats.cpp.
2021-01-25 11:34:41 +08:00
NovaRain 2aa77552f5 Added an option about max HP calculation to the stats ini file
Added an update to the HP stats when the map is loaded first time.
Code edits to Animations.cpp.
Minor code edits.
2021-01-24 22:54:20 +08:00
NovaRain 73b0091ec1 Renamed engine variable defines to be in line with 4.x 2021-01-22 22:32:04 +08:00
NovaRain e5b110d7ce Added some functions/variables for future use 2021-01-22 14:19:35 +08:00
NovaRain 8e66b82f76 Added a new example mod gl_auto_closebox
Updated gl_highlighting_lite example mod.
Updated engine structs.
2021-01-20 10:21:48 +08:00
NovaRain d2b3cac835 Fixed flag setting/unsetting for non-door objects
Added a fix to prevent setting the radiation level for controlled NPCs.
Removed the ability to change the poison level for NPCs (now 4.x
exclusive)
2021-01-15 08:42:11 +08:00
NovaRain 2b187cee1f Fixed the format of some debug messages (#195) 2021-01-14 11:37:49 +08:00
NovaRain 3b965fc76c Fixed a crash bug in ScriptExtender.cpp from commit e075c05
Minor code/document edits.
2021-01-13 11:19:25 +08:00
NovaRain 31af299b4a Added TagSkillMode option to the skills ini file
Added a fix to the radiation handling in the engine when an NPC is under
the player's control.

Code correction in Graphics.cpp.
2021-01-12 12:02:17 +08:00
NovaRain cf90437b71 Backported HOOK_GAMEMODECHANGE from 4.2
Backported SPECIAL game mode flag from 4.2
2021-01-10 21:45:50 +08:00
NovaRain e075c05a3f Fixed the display issue in DX9 mode
* black screen or rainbow colors when returning to the game after using
Alt+Tab in dialogue.

ASM code correction in ScriptExtender.cpp.
2021-01-08 13:28:57 +08:00
NovaRain ae76b93f07 Fixed the ID assignment for script objects and party member's items
when saving the map
2021-01-08 10:11:00 +08:00
NovaRain 9116596bf1 Added TagSkillBonus option to the skills ini file
Fixed a crash in the previous commit.
2021-01-06 11:31:07 +08:00
NovaRain 087b259b04 Added more options for tweaking some engine perks to the perks ini file
Added tweaks to include the perk level in the calculation of the bonus
value for "Salesman" and "Demolition Expert" perks.
2021-01-05 14:15:33 +08:00
NovaRain bc2ed03db1 Added sfx volume reduction for objects located on a different map elev
Added a fix for AI weapon switching when not having enough APs
2021-01-03 10:48:50 +08:00
NovaRain cdc06b4e6a Added a fix to the poison handling in the engine when an NPC is under
the player's control.

Minor code edits.
2020-12-30 22:34:32 +08:00
NovaRain 28bba7cfef Fix for previous commit 2020-12-27 09:32:54 +08:00
NovaRain c829a3e753 Added support for panning sfx sounds
Removed the tweak that adds the city name in the description for empty
save slots (commit 63b2025)
2020-12-26 21:58:52 +08:00
NovaRain 43a2fc93cc Modified some of the mechanics of "interface_overlay" function
Changed "intface_redraw" with one argument to redraw the specified
interface window.
2020-12-25 14:51:31 +08:00
NovaRain 26a2338038 Added "interface_overlay" script function
* for creating an additional overlay on the top of the interface window.
(document WIP)
2020-12-23 11:58:29 +08:00
NovaRain e0e300a91e Added sfall_func7 and sfall_func8 new opcodes
Added 3 new attrType values to "get_window_attribute" function.
Minor code edits.
2020-12-22 17:03:01 +08:00
NovaRain 9052396de5 Added stereo support for SFX and speech ACM files
(for files at 44.1 kHz sample rate)

SFX sounds that are dependent on the gsound_compute_relative_volume_
function are excluded from the search for alternative formats.
2020-12-21 16:05:16 +08:00
NovaRain 9e9c3ed5d1 Added support for ACM files at 44.1kHz sample rate 2020-12-17 14:04:14 +08:00
NovaRain 4271241628 Renamed MPClient folder to DebugEditor
Renamed FalloutClient.exe to FalloutDebug.exe
Fixed a crash bug in commit 82db339 when using the debug editor.
2020-12-14 15:42:45 +08:00
NovaRain 82a57179f7 Updated some code 2020-12-13 09:38:34 +08:00
NovaRain 586e622fcc Corrected code of some hook scripts 2020-12-13 08:46:33 +08:00
NovaRain 5ac7bfcbde Reverted support for the D3DFMT_A8 texture format 2020-12-10 07:20:49 +08:00
NovaRain e0d5f6a568 Removed unnecessary code in Graphics.cpp
Replaced the D3DFMT_A8 texture format with D3DFMT_L8.
Minor edits to documents.
2020-12-09 10:49:02 +08:00
NovaRain 4f7937314f Changed the numbering of args in hookscripts.txt (#345)
* because arg numbers are 0-indexed for related functions.
2020-11-16 09:17:19 +08:00
NovaRain 1508d88a5e Backported "get_ini_sections/section" functions from 4.0
Minor code edits.
2020-11-06 10:48:35 +08:00
NovaRain cdeb970d4f Backported metarule2_explosions modes from 4.1
Updated version number.
2020-11-05 12:13:25 +08:00
NovaRain 38a0ddb1eb Backported "add_extra_msg_file" function from 4.1
Re-ordered critical table fixes in Criticals.cpp.
2020-11-03 15:10:33 +08:00
NovaRain 4b2056857b Reformatted critical table fixes in Criticals.cpp 2020-11-01 09:28:31 +08:00
NovaRain 031faa4ae9 Fixed the "uncalled" critical tables for some critter types
ref: https://www.nma-fallout.com/threads/219827/
2020-10-30 22:00:43 +08:00
NovaRain e1cec4b01d Code refactoring for a few script functions
* draw_image, draw_image_scaled, interface_art_draw, get_sfall_global_int/float
2020-10-28 21:24:15 +08:00
NovaRain 66b3ee7b46 Cosmetic: renamed all module Init() and Exit() 2020-10-27 11:41:44 +08:00
NovaRain 061a3925e6 Minor edits to Message.cpp/h 2020-10-27 00:54:29 +08:00
NovaRain c6fa6bac30 Cleaned up define_lite.h and command_lite.h
Improved/corrected the fix for function args in commit e59af7e8.
Minor code edits.
2020-10-26 11:25:31 +08:00
NovaRain 0988004245 Fixed the error handling in win_fill_color
Some code fixes.
2020-10-25 08:07:49 +08:00
NovaRain e59af7e88a Fixed function args not being reset properly
Removed redundant safeguard/manual arg init in various script functions.
2020-10-25 01:05:34 +08:00
NovaRain 7cf1b60b38 Backported the extended functionality of ExtraGameMsgFileList from 4.x 2020-10-24 21:23:04 +08:00
NovaRain a8919367ea Added "win_fill_color" script function 2020-10-24 13:54:43 +08:00
NovaRain 0a44f7118a Added support for drawing PCX images to draw_image, draw_image_scaled, and interface_art_draw
Fixed bug in TalkingHeads.cpp.
2020-10-24 00:55:40 +08:00
NovaRain cda56aca7d Fixed the macro guard in command_lite.h and added two macros 2020-10-21 22:36:59 +08:00
NovaRain 761124aaf4 Code edits to PartyControl.cpp 2020-10-18 07:15:57 +08:00
NovaRain 8e6a961fba Renamed elements in PerkInfo/TraitInfo structs
Implemented StatFormula struct from 4.x for Stats.cpp.
Implemented DudeState struct from 4.x for PartyControl.cpp.
2020-10-15 13:12:15 +08:00
NovaRain cca0fe0cb6 Fixed and improved the code in Graphics.cpp 2020-10-15 09:30:39 +08:00
NovaRain 180761c489 Added the ability to change the poison level for critters 2020-10-12 20:47:05 +08:00
NovaRain 540b68070b Corrected code in Arrays.cpp 2020-10-12 11:03:55 +08:00
NovaRain 466b79f5e8 Code optimization for array expression (from 4.x) 2020-10-11 10:55:58 +08:00
NovaRain b1f847afbc Code edits to Graphics.cpp according to 4.x changes
Minor edits to MetaruleExtender.cpp and notes.txt.
2020-10-11 01:09:31 +08:00
NovaRain 31fbddb612 Code correction in FalloutEngine.cpp
Updated global shader example files.
2020-10-09 08:57:46 +08:00
NovaRain 0c547da134 Backported "car_gas_amount" and "set_car_intface_art" functions from 4.0
Added prefixes to some functions (fake classes)
2020-10-08 22:14:32 +08:00
NovaRain cc5561d3d6 Updated example mod scripts 2020-10-08 15:34:41 +08:00
NovaRain 66ff811bcd Added "combat_data" script function
Added a new argument to HOOK_COMBATDAMAGE.
Removed the check for valid objects from get/set_object_data functions.
Some code fixes/edits.
2020-10-08 13:50:37 +08:00
NovaRain 27963fd064 Fixed broken Print() script function
Fixed the background image of the character portrait on inv/char screens.
Renamed "print_text" to "interface_print".
2020-10-06 11:48:31 +08:00
NovaRain dc88193ff6 Added "print_text" script function 2020-10-05 21:05:06 +08:00
NovaRain 2c36ad9a2a Removed InterfaceDontMoveOnTop from ddraw.ini (always enabled)
Added a fix to prevent toggling the cursor for a Transparent window.
2020-10-05 10:26:39 +08:00
NovaRain 9d34a4c70a Added support for transparent interface windows (#25) 2020-10-03 21:01:54 +08:00
NovaRain 548039d5bc Fixed FrmFile struct in the previous commit
Finished the code refactoring in InterfaceOps.hpp.
2020-09-29 09:04:27 +08:00
NovaRain 49c4bb2479 Some code refactoring
Added a value of 2 to TextureFilter option.
2020-09-28 12:07:12 +08:00
NovaRain 75b275159f Added "interface_art_draw" script function
Added an argument to "intface_redraw" function to redraw all interfaces.
2020-09-26 22:17:59 +08:00
NovaRain 52f42af913 Changed the behavior of saving/restoring hook arguments
(no need to specify the number of args when executing a nested hook)
Reverted the change of argCount in some hooks.
Disabled an obsolete fix for MultiHexPathingFix.
Simplified the code of draw_image/draw_image_scaled script functions.
2020-09-25 00:12:22 +08:00
NovaRain b195a8ab02 Moved all engine function defines to new FalloutFuncs_def.h
(similar to the way how 4.x handles engine functions)

Added the ability to get Automap window pointer.

Reorganized some code to prepare for later commits.
2020-09-24 15:22:32 +08:00
NovaRain 796e834a9d Some edits to the previous commit
Minor edits to some code.
2020-09-23 23:07:45 +08:00
NovaRain df4e847c59 Changed argCount to be set right after HookBegin in some hooks
* to avoid possible unexpected issues.
2020-09-23 15:33:42 +08:00
NovaRain 0a48ed3048 Added a new argument to HOOK_TOHIT (#339)
Added hook type 3 to HOOK_WITHINPERCEPTION (when AI selects a target)

Extended the upper limit of set_pickpocket_max and set_hit_chance_max
script functions to 999.

Added a fix for combat_is_shot_blocked_ not taking the flags of critters
in the line of fire into account.

Minor edits to ASM code of some hooks.
2020-09-22 22:16:57 +08:00
NovaRain 7414c8a361 Refactored ASM code of some hooks using 4.x as ref
Code edits to DisplayKarmaChanges.
Implemented the buf_to_buf_ replacement function from 4.x.
2020-09-21 21:22:21 +08:00
NovaRain 90a9ee5f15 Added loading multiple shader files for GlobalShaderFile option
Added a sharpen filter file as a global shader example.
Set TextureFilter to be enabled by default.
2020-09-21 13:03:05 +08:00
NovaRain 314100f231 Added TextureFilter option (restored from sfall 2.x) 2020-09-20 10:07:16 +08:00
NovaRain 9c92e2f487 Reorganized the function defines in FalloutEngine.cpp/h
* in the same way as 4.x's Functions_def.h.

Replaced some ASM blocks with function defines.
2020-09-19 21:34:14 +08:00
NovaRain 2d3a4d6c34 Corrected talking heads code of Use32BitHeadGraphics
Minor code correction.
2020-09-19 00:39:55 +08:00
NovaRain a936f35c80 Refactored code in Elevators.cpp to be like 4.x 2020-09-16 14:25:21 +08:00
NovaRain 3479bc6893 Backported KeepWeaponSelectMode from 4.x
Minor edits to code and documents.
2020-09-16 11:09:55 +08:00
NovaRain ff1aac40f5 Fixed temporary arrays being cleared when flushing the keyboard buffer (#337)
Added a message about failed initialization of the game and exit if an error occurs.
2020-09-15 11:34:26 +08:00
NovaRain 6142d95a60 Graphics: improved the performance of DX9 mode 2020-09-15 10:33:33 +08:00
NovaRain c4fc3d2c8b Graphics & Movies refactoring (WIP/unfinished) 2020-09-13 22:33:30 +08:00
NovaRain 40cca2452d Reverted part of changes in commit 0d5c88f
* InterpretGetValue could cause unexpected behavior in global scripts.
2020-09-13 18:37:55 +08:00
NovaRain 33a5c7428a Updated Ammo INI Loader example script mod
* now the INI will be read only once on script initialization, not
always being re-read on each map load.
2020-09-10 14:55:11 +08:00
NovaRain 55e935e18c Added the original Fallout 1 behavior to FastShotFix 2020-09-06 08:45:17 +08:00
NovaRain 398ad650b9 Added a fix to the weapon check in the Fast Shot trait
* changed range check to type+range check, the same fix is also applied
to FastShotTraitFix.

Added more info to the description of FastShotFix option.
2020-09-05 10:47:53 +08:00
NovaRain 9c7f34ffb2 Fixed typo in sfall.h (#334) 2020-09-03 21:06:01 +08:00
NovaRain 6a2a7ee82f Fixed EncounterTableSize option (#333)
* the encounter messages were still limited to 50 entries per table when
the value for encounters is set to greater than 50.

Fixed building the path to multihex objects.
2020-09-03 14:24:00 +08:00
NovaRain 849ae49bfb Tweaked the field of view check in ObjCanSeeObj_ShootThru_Fix
And fixed a bug when the target critter has the ShootTrhu flag set
(cannot be seen by the source)

Minor edits to some comments in previous commit.
2020-09-02 14:21:57 +08:00
NovaRain ed9c6c7508 Added support for ACM audio file playback to soundplay script function
(with volume control)

Added a volume control to reduce the volume for play_sfall_sound.
Added descriptions and constant defines to documents.
Some code optimization.
Updated version number.
2020-09-01 16:12:00 +08:00
NovaRain 57f4deb5cf Minor edits to Interface.cpp and ddraw.ini 2020-08-22 10:51:07 +08:00
NovaRain c6da5169b8 Minor edits to HookScripts.cpp based on 4.x changes 2020-08-21 12:57:03 +08:00
NovaRain 72f3abe3c9 Moved DeathScreenFontPatch code to Interface.cpp
Added a note about DeathScreenFontPatch in ddraw.ini.

Some code edits in BugFixes.cpp and DamageMod.cpp.
2020-08-21 12:42:46 +08:00
NovaRain 5d12d815dd Added DeathScreenFontPatch option
* use the normal font instead of bitmap font for death screen subtitles.

Attempted to fix the melee damage display for some extreme cases when
BonusHtHDamageFix=1 and DisplayBonusDamage=0.
2020-08-20 13:48:41 +08:00
NovaRain 502a5764a5 Updated global.fx and withinperception example script
Fixed some code.
2020-08-19 15:21:53 +08:00
NovaRain 13976a5278 Added a fix to limit the maximum distance for knockback animation
* 20 hexes at max. This does not affect the knockback value in
Combat Damage hook, only the animation part.

Backported AlwaysFindScripts option from 4.x for global scripts.
2020-08-18 13:45:49 +08:00
NovaRain a35487d0aa Added a fix to prevent the player from leaving the map during death anim
* when the death animation causes the player to cross an exit grid.

Fixed the height of the black background for the subtitles on death
screens when using the hi-res patch.

Added MakeJumps template to SafeWrite.h and devlog_f to Logging.cpp.

Minor code edits.
2020-08-17 15:11:16 +08:00
NovaRain f1102afbc3 Fixed the use of #pragma pack() directives for structures 2020-08-16 11:15:37 +08:00
NovaRain 4071a65f73 Replaced all 'DWORD' script pointers with the proper 'TProgram*'
Added more engine function wrappers.
2020-08-15 10:02:36 +08:00
NovaRain 8d813a952e Fixed and improved the behavior of nested timer events in global scripts
Added a fix to prevent the execution of critter_p_proc and game events
when playing movies.

Added a debug message about a corrupted proto file.

Some minor code/document edits.
2020-08-14 21:31:06 +08:00
NovaRain c1b7e729a8 Reorganized KeyPress hook & related code
* now it should work in exactly the same way as 4.x.

Improved the key press behavior for Debug Editor.
Implemented ScriptListInfoItem struct from 4.x.
2020-08-14 00:39:09 +08:00
NovaRain 12070f5e3d Fixed the playback of additional movies defined in the MovieXX options (#330)
Added the keyboard buffer cleanup function to metarule3.
2020-08-13 15:22:20 +08:00
NovaRain 63b2025468 Added the city name in the description of a save slot by default
Corrected some code.
2020-08-13 14:44:09 +08:00
NovaRain 44ad268aed Added a fix to remove floating text after moving to another elevation
* also update black edges of the map (HRP bug, #282)
2020-08-09 12:29:15 +08:00
NovaRain 2305128adc Changed the behavior of ObjCanSeeObj_ShootThru_Fix
* now the critter can only see through objects in front of it.
2020-08-08 11:52:17 +08:00
NovaRain 112c931ea3 Added a patch to allow setting custom colors for object outlines
Added a tweak to ObjCanSeeObj_ShootThru_Fix to allow critters to see
through other critters.

Fixed the internal variable for Horrigan encounter always being reset if
DisableHorrigan=0 (commit 74d3cb9)

Corrected some code.
2020-08-05 16:18:19 +08:00
NovaRain 8e3ae04aec Changed the behavior for replacing art aliases for critters
Added ANIM_charred_body/ANIM_charred_body_sf animations to art aliases
(#323)

Minor code edit to OverrideMusicDir (nop the rest to avoid leaving
garbage bytes)

Renamed some functions in Worldmap.cpp.
2020-08-03 14:41:43 +08:00
NovaRain 89ec203483 Corrected combat_attack_gcsd code in the previous commit
Added DAM_PRESERVE_FLAGS to attack_complex for keeping result flags.
Fixed OverrideMusicDir=2 not working.
2020-08-02 19:48:04 +08:00
NovaRain 21cbcb4a03 Rewrote several fixes for attack_complex in C++ and merged them
Added a default fix for attack_complex to untie target_results from
attacker_results.
2020-08-01 10:27:18 +08:00
NovaRain 76c9d63d3e Added more fixes for the arguments of attack_complex function:
* fixed result flags for the attacker and the target when calling
attack_complex function (#323)

* tweaked how attacker_results/target_results work when
AttackComplexFix is enabled.

Minor code edits.
2020-07-31 20:42:46 +08:00
NovaRain 962e7f0056 Added support for delayed speech playback to AllowDShowSound
(for synchronizing with subtitles when playing endgame slideshow)
2020-07-30 10:42:08 +08:00
NovaRain 950b9949c0 Added a new value 2 to AllowDShowMovies
* for forcing avi videos to fit the screen width.

Disabled warning C4995 (e.g. wcscpy in Movies.cpp)
Minor code edits to AI.cpp & Sound.cpp.
2020-07-29 14:20:04 +08:00
NovaRain 648bffedc6 Added volume control support for avi movies
Fixed implementation bugs when playing avi movies.
Added a couple of engine variable pointers.
2020-07-28 17:08:44 +08:00
NovaRain 058cc0bb96 Further implementation of speech playback for alternative sound files 2020-07-26 08:53:31 +08:00
NovaRain 9e79b01a27 Added a function extension for vanilla metarule3 function
Added SET_HORRIGAN_ENCOUNTER function to metarule3.
Updated German translation.
2020-07-24 21:29:54 +08:00
NovaRain 37e3ccb410 WIP: Fixed sfx/speech playback for alternative sound files 2020-07-22 12:27:18 +08:00
NovaRain 82db339ff9 Implemented CodeType enums in some SafeWrite8
Replaced some SafeWriteX with SafeWriteBatch.
Misc code edits to DebugEditor.cpp and ScriptExtender.cpp.
Minor edits to documents.
2020-07-21 12:42:46 +08:00
NovaRain 74d3cb9707 Removed some redundant code 2020-07-19 08:56:42 +08:00
NovaRain e0f0ee0f7d Fixed the default values for the MovieXX options
Added some comments to elevators.ini & other codes.
Rearranged the functions in NewGame2().
Updated FalloutEngine.h for previous commit.
Updated version number.
2020-07-18 22:28:22 +08:00
NovaRain 107335749f Implemented union in TGameObj struct (from 4.x)
Moved some code from HeroAppearance to other parts.
Some code edits.
2020-07-18 10:50:49 +08:00
NovaRain c66add00e7 Added more 4.x constants to Define.h
Renamed some members in structs according to 4.x namings.
2020-07-16 11:10:48 +08:00
NovaRain d4d8b3a06c Uploaded language translation files to repo
Updated German (#326) and Russian translations.
2020-07-08 09:54:08 +08:00
NovaRain fcd3bd05f0 Fixed NPC stuck in an animation loop in combat (#321)
* this happens when trying to move close to a multihex critter.
2020-07-01 09:49:37 +08:00
NovaRain ae6a6e80d3 Fixed ASM error in the previous commit 2020-06-30 15:49:53 +08:00
NovaRain c0557ddbc1 Fixed broken PlayIdleAnimOnReload option (#320)
(in commit aafc030)

Improved the fix for incorrect positioning after exiting small/medium
locations.
2020-06-30 12:31:49 +08:00
NovaRain 46dd02b566 Fixed the code for "display_stats" script function
Minor edit to Perks.cpp.
2020-06-29 23:03:41 +08:00
NovaRain 4c3f255915 Added a fix to prevent showing an empty perk selection window 2020-06-29 12:56:27 +08:00
NovaRain de01fdf065 Added "get_stat_max/min" script functions (#307)
Added updating player's stats on the char screen to "display_stats"
script function (#314)
2020-06-29 11:57:36 +08:00
NovaRain 1e6d2229dd Corrected the code for multihex retargeting tile
Small optimization to sfall function code.
2020-06-28 23:13:05 +08:00
NovaRain 317c4d4c05 Re-fix for the previous commit 2020-06-28 09:53:33 +08:00
NovaRain 31b244e5f3 Corrected the fix from the previous commit 2020-06-27 10:16:14 +08:00
NovaRain 066280a7ca Fixed the hang/freeze in combat (from commit b345140)
Added a fix for retargeting tile for multihex critters.
2020-06-27 09:48:20 +08:00
NovaRain 535595a997 Refactored some code in HeroAppearance.cpp 2020-06-14 10:41:57 +08:00
NovaRain 41b15b8838 Fixed bugs in the hero appearance mod:
* gender was not reset properly when creating a new character (#309)
* the player was missing some fire/electrical death animations (#310)
2020-06-14 09:29:53 +08:00
NovaRain 2cd79c1033 Moved static addresses into respective funcs in Stats.cpp 2020-06-13 00:26:31 +08:00
NovaRain cc9807344a Fixed Auto Doors example script mod
Cosmetic changes to the text descriptions in Perks.ini.
2020-06-13 00:20:48 +08:00
NovaRain 6c31cc43a0 Increased the max width of the player name on the char screen (#305)
Updated version number.
2020-06-04 06:40:57 +08:00
NovaRain b345140fba Some bug fixes regarding multihex critters in shoot blocking 2020-05-24 11:33:06 +08:00
NovaRain 3acf051b49 Renamed all metarule functions with mf_ prefix 2020-05-21 09:42:02 +08:00
NovaRain 0137504f3f Renamed all script opcode handlers with op_ prefix 2020-05-19 10:05:27 +08:00
NovaRain ebcd505561 Minor code fixes in AI.cpp:
* Fixed NPCs being unable to select a burst attack mode if the line of
fire was blocked.

* Changed the return point of combat_ai_hook_FleeFix to run
ai_check_drugs_ first.

Changed the debug message about missing art file for critters to be
displayed in game only when in sfall debugging mode.
2020-05-19 09:50:23 +08:00
NovaRain 24cb02b7d8 Fixed ai_move_away_ engine function
Some minor fixes.
2020-05-10 10:03:04 +08:00
NovaRain 48ce358451 Backported SkipLoadingGameSettings option from 4.x 2020-05-08 10:38:32 +08:00
NovaRain c293a826bc Cosmetic changes to the code:
Use double underscore for stdcall and "asm" keyword.
2020-05-07 12:30:22 +08:00
NovaRain 0da7c7b266 Minor code edits to Combat.cpp 2020-05-07 11:20:32 +08:00
NovaRain d74df7fc78 Added checking AP cost to ai_pick_hit_mode_ engine function 2020-05-07 09:49:57 +08:00
NovaRain df816bcd47 Added a tweak for finding new targets for PMs
* before they would "forget" their current target when trying to find
new ones (only 3), now the current target is included as one of
potential targets.

Tweaked the code of MultiHexPathingFix.
2020-05-05 12:15:30 +08:00
NovaRain 068988caad Added internal implementation of engine functions with hooks:
* item_w_mp_cost_ with CALCAPCOST
* is_within_perception_ with WITHINPERCEPTION
2020-05-01 10:29:27 +08:00
NovaRain 24c9499021 Added combat rating check to "Snipe" distance preference fix
Added a fix to reduce friendly fire in burst attacks.
Updated the info of TGameObj struct.
2020-05-01 08:01:24 +08:00
NovaRain 7f3de8d19a Minor code edits/fixes 2020-04-30 10:28:31 +08:00
NovaRain 87f7fe4a54 Moved code from main.cpp to new PlayerModel/MiscPatches.cpp 2020-04-28 12:43:54 +08:00
NovaRain 01ba18100e Added a fix for AI behavior for "Snipe" distance preference
Added a check for for the weapon range and the distance to the target
when AI is choosing weapon attack modes.
2020-04-28 10:58:24 +08:00
NovaRain 8b26573073 Changed the fix for AI target selection in commit f0f00a7
* NPCs will reload the weapon in the same turn (and attack if have
enough AP left) if weapon is empty while selecting targets.

Moved some leftover code in main.cpp to KillCounter.cpp & Elevators.cpp.

Misc code edits.
2020-04-27 14:32:39 +08:00
NovaRain 1839790dfb Fixed AllowDShowSound=2 not working
Limited NumSoundBuffers to the max of 32.
Fixed replacing Body_Torso with Body_Uncalled (from commit 62f890d)
Corrected the code in the previous commit.
2020-04-23 12:42:20 +08:00
NovaRain cb1d5d359f Added a tweak to the miss message in combat
* if the main target has Flat flag set, remove the message about hitting
another object.

Reorganized the code of misc patches in main.cpp.
2020-04-22 11:40:11 +08:00
NovaRain b781e117a2 Improved the fix for placing PID_CORPSE_BLOOD obj on the lower layer
(didn't work correctly after re-entering the map.)

Fixed CorpseDeleteTime not setting the timer correctly.
2020-04-21 10:55:56 +08:00
NovaRain a7d9716b68 Moved some engine structs to FalloutStructs.h
Some code edits regarding variable/struct types.
2020-04-20 12:06:13 +08:00
NovaRain cdd2bfe338 Reverted incorrect code change of SpeedPatch.cpp in previous commit.
Some code edits to Explosions.cpp and Perks.cpp.
2020-04-19 10:21:20 +08:00
NovaRain 7decec4a2c Added use_item_on_dude macro to sfall.h
Various code edits:
* Implemented more HookCalls/MakeCalls/SafeWriteBatch in code.
* Moved return/jump address consts into their respective functions.
2020-04-18 21:25:54 +08:00
NovaRain e3af4f5754 Fixed ReloadWeaponKey for using any non-weapon item (#84) 2020-04-18 11:25:46 +08:00
NovaRain 1b61bca702 Fixed "loot_obj" script function 2020-04-18 09:03:16 +08:00
NovaRain f0f00a77ea Fixed AI target selection for no ammo or target out of range cases 2020-04-18 09:01:29 +08:00
NovaRain 58d41487fd Re-fixed automatically ending combat
Updated version number.
2020-04-18 08:59:28 +08:00
NovaRain 73ccba22bf Implemented HookCalls/MakeCalls templates
* same as SafeWriteBatch, only accept address arrays due to no support
for list initialization in VS2010.
2020-04-11 08:19:32 +08:00
NovaRain 1f8b3636f3 Implemented SafeWriteBatch template from 4.x
* only the version that accepts address array due to no support
for list initialization in VS2020.
2020-04-08 10:42:59 +08:00
NovaRain b7e80d445e Fixed NPCs not fully reloading a weapon sometimes
* NPCs use only one box per reload. If the weapon has more ammo
capacity than a box of ammo (e.g. miniguns and BB gun), it'll take
several tries for them to fully reload it.
2020-04-05 08:25:00 +08:00
NovaRain e404684f58 Reverted the change for ResetState() in 993555
* reason: the skills didn't get initialized properly if loading a save
from the main menu before starting any game. And some inits in 3.8
also require running ResetState() before any game, so reverting is
probably the easiest solution before I break more stuff.

Backported some code setup from 4.x for Combat.cpp & Skills.cpp.
2020-04-04 18:06:04 +08:00
NovaRain 4c78ba595c Moved static addresses into respective funcs in BugFixes & main.cpp 2020-04-03 23:19:10 +08:00
NovaRain 1f1d6eb6f0 Some code correction in BugFixes
Minor edits to documents.
2020-04-03 12:33:48 +08:00
NovaRain 9935553bce Reduced unnecessary game reset execution 2020-04-02 23:20:04 +08:00
NovaRain cd4d3b5b2f Some code/document edits 2020-04-02 12:00:52 +08:00
NovaRain a61ff5b626 Edited the description of RadEffectsRemovalMsg option 2020-04-01 22:10:55 +08:00
NovaRain bc2e8e4362 Backported the code of DeathAnim1/2 hook from 4.x
Updated hookscripts.txt to reflect the change.
2020-04-01 10:57:54 +08:00
NovaRain 136404a723 Fixed loading savegame for "NPC turns into a container" bug fix
Added RadEffectsRemovalMsg option for radiation fixes.

Some code correction in Graphics.cpp.
2020-03-31 21:54:49 +08:00
NovaRain 1a17ac5ac8 Added ActiveGeigerMsgs option and radiation fixes
Changed "Radiated" to be highlighted in red color when the player is
under the influence of negative effects of radiation.

Some edits to macros in HookScripts.cpp.
2020-03-30 21:15:19 +08:00
NovaRain 07543dd29d Fixed a crash when using older versions of HRP
Fixed potential crash/bug when alt-tab out of game and get back.
Edited OnDeath hook to minimize its hook points to the engine (from 4.x)
Minor edits to ddraw.ini.
2020-03-26 14:13:22 +08:00
NovaRain 4243bead5d Attempted to fix the crash with sfall array and missing script (#281)
Replaced all pushad/popad in script opcodes with pushaop/popaop macros.
2020-03-25 20:22:54 +08:00
NovaRain f80e933889 Rewrote some script functions in PerksOps.hpp
* funcs: get_perk_available, set_perk_name/desc, set_selectable_perk,
set_fake_perk/trait.

Minor code refactoring in ObjectsOps.hpp.
2020-03-25 12:26:26 +08:00
NovaRain 7cbde234c6 Rewrote various script functions in _WRAP_OPCODE
* funcs: reg_anim_*, sqrt, sin, cos, tan, arctan, get/set_weapon_ammo_*,
list_*, strlen, atoi, atof, typeof, string_split.
2020-03-24 12:12:34 +08:00
NovaRain f6ae7c5f2c Fixed stuttering when playing avi movies
Fixed a crash when playing mve movies without the hi-res patch.

Minor edits to ddraw.ini and function notes.txt.
2020-03-24 10:55:28 +08:00
NovaRain 58060a8c5f Simplified the pushad/popad in _WRAP_OPCODE macro
Refactored ASM code of art_exists and sneak_success functions.
Rewrote set_critter_current_ap and set_sfall_arg with _WRAP_OPCODE.
2020-03-23 13:52:28 +08:00
NovaRain 22140e2a0c Added performance patches, some code moved to main.cpp
Minor edits to ddraw.ini.

Tweaked the names in AsmMacros.h.
2020-03-22 09:27:24 +08:00
NovaRain 1c6f8cc255 Refactored sfall_ver_* and charcode functions 2020-03-20 12:32:05 +08:00
NovaRain e479609581 Added a new "fullscreen windowed" DX9 mode
Added saving the position of the game window to ddraw.ini
2020-03-20 12:30:41 +08:00
NovaRain ab11c0422a Refactored ASM code of script opcode handlers
Included call_offset_xx functions for AllowUnsafeScripting=2
2020-03-19 12:57:19 +08:00
NovaRain 09752c98a4 Attempted to fix the crash in commit 0ba3b62
* the crash happens when the game loses focus.
2020-03-17 14:48:50 +08:00
NovaRain aab04764ae Added a new value to AllowUnsafeScripting
* for disabling the memory address check in write_xxx unsafe functions.
2020-03-17 13:39:05 +08:00
NovaRain 0ba3b62eff Improved and fixed the playback of alternative sound files
Added a new mode to play_sfall_sound script function.
2020-03-17 13:08:47 +08:00
NovaRain 0c0d1dd73e Fixed the return value of play_sfall_sound function
* before it returned a raw pointer instead of the ID number of the
played sound.
2020-03-12 11:58:48 +08:00
NovaRain 0fd45aa37a Moved allowDShowSound code from Movies.cpp to Sound.cpp 2020-03-12 10:06:56 +08:00
NovaRain 00a6e4f0f9 Fixed set_palette function broken in the previous commit 2020-03-10 10:07:59 +08:00
NovaRain 36ef55ddd0 Refactored ASM code of script handlers in MiscOps.hpp
Minor code edits.
2020-03-07 16:02:23 +08:00
NovaRain db2435416d Minor code edits 2020-02-29 18:59:44 +08:00
NovaRain 0120e46782 Added a new value to the 'mark_state' arg of mark_area_known function
* 3 - uncovers locations without highlighting their sub-tiles.
(Fallout 1 behavior)
2020-02-29 08:40:45 +08:00
NovaRain eddefd6bd5 Fixed Fill_W not uncovering all tiles to the left (#287) 2020-02-28 07:43:14 +08:00
NovaRain f9cbab3d55 Fixed a crash or animation glitch of the critter in combat (beta fix)
* when an explosion from explosives and the AI attack animation are
performed simultaneously.
2020-02-25 11:38:43 +08:00
NovaRain e3168946ba Minor code fix for Graphics.cpp
Added notes/correction to hookscripts.txt.
2020-02-22 15:50:06 +08:00
NovaRain 8bb660ff11 Fixed the player's money not being displayed after barter (#286)
Restored TownMapHotkeysFix option.

Updated version number.
2020-02-22 15:37:36 +08:00
NovaRain 8a7d9cbd78 Re-ordered the code in ScriptExtender.cpp
* for removing some unnecessary static func declarations at the top.

Moved Set/GetAppearanceGlobals() to HeroAppearance.cpp like 4.x.
2020-02-10 22:22:02 +08:00
NovaRain 008fdb12b7 Minor code improvement in Graphics.cpp 2020-02-09 09:29:43 +08:00
NovaRain 3609f2e309 Renamed dinput.cpp/input.h to InputFuncs.cpp/h 2020-02-08 11:59:00 +08:00
NovaRain 517c2e6825 Updated stdafx.h and other code/doc files 2020-02-08 08:48:02 +08:00
NovaRain 4bc687922a Reverted part of changes in the previous commit 2020-02-07 19:17:24 +08:00
NovaRain 5230ca9cbf Edited some wording in ddraw.ini and Define.h 2020-02-07 10:05:59 +08:00
NovaRain 5a5c65291d Fixed trying to loot corpses with the "NoSteal" flag (#280) 2020-02-06 10:52:19 +08:00
NovaRain e153819bcd Added the description for 'div' operator to notes.txt 2020-02-05 23:21:15 +08:00
NovaRain 8ab5b9b7e7 Replaced all MAXINT with INT_MAX in QuestList.cpp (#279)
Added WINVER and _WIN32_WINNT defines to stdafx.h.
2020-02-05 16:18:51 +08:00
NovaRain abe3b01213 Fixed playing game movies with width less than 640px in DX9 mode
Fixed palette updating.
2020-02-05 09:47:25 +08:00
NovaRain 15019ffe81 Some code edits to ExtraSaveSlots.cpp 2020-02-04 16:28:21 +08:00
NovaRain eacd1e5682 Moved engine function defines from HeroAppearance to FalloutEngine 2020-02-04 10:55:09 +08:00
NovaRain 84204d97d8 Simplified the code in HeroAppearance.cpp 2020-02-03 11:23:20 +08:00
NovaRain 3b85596ca1 Renamed all Op.hpp to Ops.hpp 2020-02-02 21:54:10 +08:00
NovaRain 21bf1056ac 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 ScriptUtils.hpp to new MathOps.
Added include guard to sfall.h and main.h in modders pack.
2020-02-02 21:49:54 +08:00
NovaRain 1354467059 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:44:47 +08:00
NovaRain 8d720185a7 Reverted part of changes in previous commit 2020-02-02 13:50:01 +08:00
NovaRain 87864d9ef6 Fixed palette in DX9 mode 2020-02-01 14:08:46 +08:00
NovaRain 0d5c88fded Implemented the optimization for receiving/passing script args from 4.x
* combined related engine interpreter functions into a single function
for aligning the compiled ASM code better.

Minor edits to dinput.cpp.
2020-01-31 20:29:29 +08:00
NovaRain 555b3a9504 Fixed the timer event execution in global scripts 2020-01-31 01:41:25 +08:00
NovaRain f8cd74cc49 Minor changes to some other code and documents. 2020-01-31 01:23:32 +08:00
NovaRain 408661f42b 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:14:58 +08:00
NovaRain 893847cc6a Added "dialog_box" script function
Added a new attrType value to "get_window_attribute" function.

Tweaked the arg type check for "force_encounter_with_flags" function.
2020-01-27 20:52:01 +08:00
NovaRain 6b1fffded1 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.

Fixed the array out of bounds bug in Skills.cpp.
2020-01-27 10:42:51 +08:00
NovaRain 3b2e23fda6 Backported FO1 worldmap features from 4.x
* WorldMapTravelMarkers, WorldMapTerrainInfo options.
* set_terrain_name, set_town_title script functions.
2020-01-26 09:26:41 +08:00
NovaRain c9b1a1b583 Edited FalloutEngine using 4.x's EngineUtils & Variables_def as ref 2020-01-25 18:01:55 +08:00
NovaRain d13cd9267d Reordered ResetState() sequence in LoadGameHook.cpp
* in the same order as 4.x modules.

Merged and renamed some "reset" functions.
2020-01-24 22:38:55 +08:00
NovaRain 5a638f48ff Added some engine variables to pointer defines.
Removed redundant PlayAcm() from HeroAppearance.cpp.
2020-01-24 10:03:39 +08:00
NovaRain df1d147a4f Removed TownMapHotkeysFix from ddraw.ini (always enabled)
Also move its code from Worldmap.cpp to BugFixes.cpp.
2020-01-23 23:34:21 +08:00
NovaRain e733954e65 Removed DisplaySecondWeaponRange from ddraw.ini (always enabled)
Minor edits to some code and documents.
2020-01-23 20:35:18 +08:00
NovaRain 36b3b6a2c7 Added "get_window_attribute" script function (#276) 2020-01-22 21:23:12 +08:00
NovaRain ceba5d1da2 Added a flashing icon to the Horrigan encounter
Minor edits to some code and documents.
2020-01-22 10:27:11 +08:00
NovaRain d6486008f4 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 21:40:36 +08:00
NovaRain 9f140cf3ca Added a blinking icon to force_encounter/with_flags functions
* currently an icon is always shown for scripted force encounters.
2020-01-20 11:51:17 +08:00
NovaRain f2670deb6f Minor edits to Console.cpp and Logging.cpp
Added procedure and macros for unsigned integer comparison to lib.math.h.
2020-01-19 12:20:18 +08:00
NovaRain 6e6e01ea7f Simplified the code of string_to_case function
Minor edits to some code and documents.
2020-01-17 21:56:12 +08:00
NovaRain dccd735454 Improved the avi playback function 2020-01-17 21:48:54 +08:00
NovaRain 21004e3e63 Combined tolower/toupper in previous commit to "string_to_case" 2020-01-16 20:35:49 +08:00
NovaRain d12db2be28 Added "tolower", "toupper" script functions 2020-01-16 09:46:27 +08:00
NovaRain 3d335231a2 Replaced <hash_map><set> with <unordered_map><unordered_set> 2020-01-10 21:33:32 +08:00
NovaRain d4eb1ee539 Moved the Combat Block patch from AI.cpp to Combat.cpp
Removed palette animations enablement from Interface.cpp.
2020-01-10 11:12:34 +08:00
NovaRain 61c0964c98 Moved engine func defines from various files to FalloutEngine.cpp
(HeroAppearance.cpp, Message.cpp, Sound.cpp)
2020-01-09 22:36:58 +08:00
NovaRain 58532fd902 Fixed duplicate critters being added to the target list for AI
Edited hookscripts.txt to mention the fix.

Some code correction.
2020-01-09 11:41:50 +08:00
NovaRain aafc030f8e Code refactoring in main.cpp (from MiscPatches in 4.x)
Updated compiler document.
2020-01-08 16:59:07 +08:00
NovaRain c652982a06 Added sslc documents to repo 2020-01-06 14:14:22 +08:00
NovaRain 1e0b048e9e Re-fixed setting DIALOG game mode flag 2020-01-06 00:19:36 +08:00
NovaRain 28dc256f61 Fixed the timing of setting DIALOG game mode flag
Renamed win_* related functions in FalloutEngine.

Minor code edits to Inventory & Worldmap following develop branch.
2020-01-05 10:05:39 +08:00
NovaRain 18e1e06d28 Merged message struct defines in Inventory.cpp & Message.cpp
Changed GetMessageStr() and MsgSearch() to take proper MSGList struct.

Edited some code to reflect the changes above.
2020-01-04 01:21:48 +08:00
NovaRain 6871e6f673 Minor edits to Worldmap.cpp & Interface.cpp (from 4.x) 2020-01-02 00:43:13 +08:00
NovaRain 9ef670161d Reverted the change on x offset in previous commit 2019-12-29 08:42:08 +08:00
NovaRain c26cd45b5b Increased the width of the total weight display in the inventory
(moved from the CritterInvSizeLimitMode option)

Minor format edits to README.md.
2019-12-29 01:58:02 +08:00
NovaRain 0b5c61cb72 Backported AutoQuickSave and AutoQuickSavePage options from 4.x
Updated version number and year.
2019-12-28 09:27:45 +08:00
NovaRain 11261ca9be Merged db_* engine function defines in HeroAppearance and Tiles
Edited both source files according to new defines.
2019-12-28 09:14:12 +08:00
NovaRain 4d435ca143 Backported WRAP_WATCOM_CALL macros from 4.x for engine function defines 2019-12-28 09:03:27 +08:00
NovaRain 35d9b9439c Included Define.h in FalloutEngine.h
* it removes the need to include Define.h separately across the code.
(similar to Fallout2.h in 4.x code)

Added StrNormalizePath() to Utils.cpp.
2019-12-25 09:25:36 +08:00
NovaRain a1968f7f86 Minor edits to the built-in item highlighting function
Removed the redundant struct define in Tiles.cpp.

Added a comment to ScriptUtils.hpp.
2019-12-24 20:58:03 +08:00
NovaRain 85a5ee2a52 Some edits to hookscripts.txt & function notes.txt 2019-12-24 00:57:16 +08:00
NovaRain 310c392759 Added lootable corpses to the built-in item highlighting 2019-12-23 21:22:15 +08:00
NovaRain 3a24d0bdfd Replaced _stricmp in previous commit with strcmp.
Minor edits to Inventory.cpp.
2019-12-16 15:46:09 +08:00
NovaRain a9ad1a62eb Tweaked the path to load global shaders in the previous commit
* although 3.8 doesn't have the path issue as 4.x due to the lack of
loading custom .dat, it's better to unify the path in this case.

Refactored the code for DataLoadOrderPatch in the same way as 4.x.
2019-12-15 10:31:50 +08:00
NovaRain d73859fa5f Applied proper ptr_patches to some code 2019-12-14 11:41:43 +08:00
NovaRain 04043989c6 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.
Minor edits to HeroAppearance.cpp.
2019-12-14 11:05:12 +08:00
NovaRain 3b82232b46 Edited the description of the functions in the previous commit
Rewrote ASM code for tile_under_cursor script function.
2019-12-14 00:35:05 +08:00
NovaRain 5e704d206f Added "objects_in_radius" and "tile_by_position" script functions 2019-12-13 10:56:15 +08:00
NovaRain 5e65510797 Rewrote the code of some hook in 4.x style
* TOHIT, AFTERHITROLL, REMOVEINVENOBJ
2019-12-11 15:55:29 +08:00
NovaRain b4dac84ddd Rewrote some script functions in ObjectsOps in C++
* remove_script, set/get_script, set_critter_burst_disable.

Changed the return value of get_script to 0 for unscripted objects.
2019-12-09 11:07:40 +08:00
NovaRain cbc822c9e0 Minor edits to code 2019-12-07 09:56:43 +08:00
NovaRain 6cc68ed3de Re-fixed the previous commit
Replaced calling full substring with a simplified one for get_array.
2019-12-05 09:49:07 +08:00
NovaRain 6d4aea216b Fix for printing game messages to debug log 2019-12-04 13:07:04 +08:00
NovaRain 569790acb2 Code refactoring for ASM code in opcodes 2019-12-04 11:37:44 +08:00
NovaRain 7016690f99 Added "string_format" script function
Rewrote ASM code of opcode handlers in MemoryOp.hpp.
2019-12-03 10:52:56 +08:00
NovaRain eeb97a4299 Some code refactoring 2019-12-01 12:10:33 +08:00
NovaRain 66c237d297 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 12:13:36 +08:00
NovaRain 3629c90fa9 Simplified _RET_VAL_INT2 in AsmMacros.h (from dev)
Changed related ASM code in various script functions.

Minor refactoring on some script functions.
2019-11-29 12:10:08 +08:00
NovaRain 1f99855500 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:43:00 +08:00
NovaRain cdf0bdf23e Refactored script function handlers
Changed error return values of list_begin/next to the same as dev.
2019-11-28 14:42:07 +08:00
NovaRain 2c67058016 Code refactoring for opcodes/metarules
* added proper arg validation for some opcodes using WRAP_OPCODE macro.
* changed return values of some opcodes/metarules to be the same as dev.
2019-11-28 10:24:40 +08:00
NovaRain 29f0affd72 Re-fixed commit e62b5c0 (correct variant) 2019-11-26 07:49:31 +08:00
NovaRain e01569637d Backported additional check in DialogHook from 4.x
Renamed inLoop/saveInCombatFix variables in LoadGameHook.cpp.
2019-11-25 09:58:12 +08:00
NovaRain 78f0ac473d Restored calling original engine functions from HRP hacks. 2019-11-25 07:29:29 +08:00
NovaRain bbe9a2d26d Added "get_text_width" and "string_compare" script functions
Rewrote set_dm/df_model, set_movie_path functions with WRAP_OPCODE.
2019-11-23 20:32:57 +08:00
NovaRain 7bcb76e70c Restored and fixed RemoveWindowRounding option
Reorganized ddraw.ini a bit.
2019-11-21 00:58:41 +08:00
NovaRain 3348d8b716 Backported "draw_image" and "draw_image_scaled" functions from 4.1 2019-11-19 20:51:22 +08:00
NovaRain 4767ad2753 Fixed a crash bug in CorpseLineOfFireFix (from commit d9a440f)
Minor edits to HookScripts/FalloutEngine.
2019-11-19 14:27:19 +08:00
NovaRain 04ebbaa182 Added three new script window functions:
"show_window", "hide_window", "set_window_flag"

Updated documents.
2019-11-17 08:40:18 +08:00
NovaRain 3c5dc6853a Added "get_sfall_arg_at" script function
Improved the functionality of "inventory_redraw" function.
2019-11-16 22:54:09 +08:00
NovaRain a70a776e46 Tweaked/fixed reg_anim_callback function 2019-11-15 10:01:39 +08:00
NovaRain 83c3d6b1a8 Added "reg_anim_callback" script function(opcode)
Updated documents.
2019-11-14 13:02:10 +08:00
NovaRain 6a566087ca 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:01:38 +08:00
NovaRain e62b5c03db Added a fix for scripted interface windows
* 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:24:43 +08:00
194 changed files with 23900 additions and 16393 deletions
@@ -15,7 +15,8 @@ namespace FalloutClient {
if (args.Length == 1 && args[0] == "-debugedit") {
Application.Run(new DebugEditor(new EditorConnection()));
} else {
MessageBox.Show("The debug editor can only be run from the game.",
MessageBox.Show("The debug editor can only be run from the game.\n" +
"Use the key assigned to the DebugEditorKey option in ddraw.ini to run the debugger.",
"sfall Debug Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}
@@ -9,14 +9,13 @@
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FalloutClient</RootNamespace>
<AssemblyName>FalloutClient</AssemblyName>
<AssemblyName>FalloutDebug</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@@ -29,6 +28,7 @@
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>false</BootstrapperEnabled>
</PropertyGroup>
@@ -42,14 +42,14 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
<DebugSymbols>true</DebugSymbols>
<DebugSymbols>false</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
+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.
+63 -41
View File
@@ -1,29 +1,57 @@
;This file handles modifications to perks and traits
;When adding extra perks to a mod, it's advisable to use
; the fake perk scripting functions rather than make modifications
; in this file, as some perks have hardcoded effects which may
; catch you out
;Since traits need to be picked before any scripts run, they
; have an additional NoHardcode option in this file which can
;When adding extra perks to a mod, it's advisable to use the fake perk scripting functions rather than make modifications
; in this file, as some perks have hardcoded effects which may catch you out
;Since traits need to be picked before any scripts run, they have an additional NoHardcode option in this file which can
; be used to remove their hardcoded effects, and add new stat/skill effects
[PerksTweak]
;Change the penalty distance and distance bonus for 'Weapon Scope Range' weapon perk
;Changes the bonus for 'Master Trader' perk (ID 17)
;25 - default bonus
MasterTraderBonus=25
;Changes the distance bonus for 'Weapon Long Range' weapon perk (ID 58)
;2 - no bonus, 4 - default bonus
WeaponLongRangeBonus=4
;Changes the hit chance bonus for 'Weapon Accurate' weapon perk (ID 59)
;0 - no bonus, 125 - maximum bonus, 20 - default bonus
WeaponAccurateBonus=20
;Change the penalty distance and distance bonus for 'Weapon Scope Range' weapon perk (ID 64)
;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 resistance bonuses for 'Vault City Inoculations' perk (ID 78)
;valid range: -100..100, 10 - default bonus
VaultCityInoculationsPoisonBonus=10
VaultCityInoculationsRadBonus=10
;Changes the hit chance bonus for 'Weapon Accurate' weapon perk
;0 - no bonus, 200 - maximum bonus, 20 - default bonus
WeaponAccurateBonus=20
;Changes the damage bonus per level for 'Demolition Expert' perk (ID 82)
;999 - maximum bonus, 10 - default bonus
DemolitionExpertBonus=10
;Changes the strength bonus for 'Weapon Handling' perk
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
;Changes the damage bonus for 'Living Anatomy' perk (ID 97)
;125 - maximum bonus, 5 - default bonus
LivingAnatomyBonus=5
;Changes the damage bonus for 'Pyromaniac' perk (ID 101)
;125 - maximum bonus, 5 - default bonus
PyromaniacBonus=5
;Changes the skill bonus per level for 'Salesman' perk (ID 103)
;999 - maximum bonus, 20 - default bonus
SalesmanBonus=20
;Changes the percent chance for 'Stonewall' perk (ID 104)
;valid range: 0..100, 50 - default percent
StonewallPercent=50
;Changes the strength bonus for 'Weapon Handling' perk (ID 106)
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
WeaponHandlingBonus=3
;##############################################################################
@@ -31,31 +59,25 @@ WeaponHandlingBonus=3
;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
;Ranks=The number of perk levels
;Level=The minimum required level
;Type=If 0, the perk checks only Skill1 for skill requirements; if 1, it checks
; Skill1 or Skill2; if 2, it checks both Skill1 and Skill2
;Stat=The modified stat or -1 if you don't want to change any stats
;StatMag=The increased/decreased value to the modified stat
;Skill1=The first skill (or -1 for none) to check, but if you set a specific bit
; (67108864 or 0x4000000), it checks GVAR. For example, if Skill1=67108864, then
; the perk will check GVAR_PLAYER_REPUTATION (67108864 + 0) on Skill1Mag value
;Skill1Mag=Positive value is used as the minimum requirements of the first
; skill/GVAR, and a negative value is interpreted as the maximum requirement.
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill
; >= 100 and meets all other requirements, the perk will be available in the
; selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be
; available if player has big guns skill >= 120
;Skill2=The second skill/GVAR (or -1 for none) to check
;Skill2Mag=Same as Skill1Mag, but for Skill2
;STR-LCK=Positive values are used as minimum requirements of SPECIAL stats, and
; negative values are interpreted as maximum requirements. For some special
; perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat),
; the values are not used as requirements but to add to corresponding SPECIAL
; stats
;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
;Type: If 0, the perk checks only Skill1 for skill requirements; if 1, it checks Skill1 or Skill2; if 2, it checks both Skill1 and Skill2
;Stat: The modified stat or -1 if you don't want to change any stats
;StatMag: The increased/decreased value to the modified stat
;Skill1/Skill2: The first/second skill (or -1 for none) to check, but if you set a specific bit 0x4000000 (67108864), it checks GVAR.
; For example, if Skill1=0x4000004, then the perk will check GVAR_BAD_MONSTER (0x4000000 + 4) on Skill1Mag value
;Skill1Mag/Skill2Mag: Positive value is used as the minimum requirements of the first/second skill/GVAR, and a negative value is interpreted as the maximum requirement.
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill >= 100 and meets all other requirements, the perk will be available in the
; selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be available if player has big guns skill >= 120
;STR-LCK: Positive values are used as minimum requirements of SPECIAL stats, and negative values are interpreted as maximum requirements.
; For some special perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat), the values are not used as requirements
; but to add to corresponding SPECIAL stats
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
@@ -63,7 +85,7 @@ Enable=0
;This is a modification to perk 119
[119]
Name=Example
Desc=This is an example perk~Second line
Desc=This is an example perk description
Image=72
Ranks=1
Level=1
+17 -6
View File
@@ -1,11 +1,22 @@
;This file lets you set the formula for calculating skills
[skills]
BasedOnPoints=0 ;Set to 1 to base skill costs on spent points instead of current level
;Changes the initial bonus to skill level for tag skills
;valid range: 0..100, 20 - default bonus
TagSkillBonus=20
Skill0=s1|i2|l1.5 ;Skill 0 (small guns) is str*1 + int*2 + luck*1.5
SkillBase1=50 ;Big guns has a base of 50
SkillMulti2=10 ;Each point spent in energy weapons increases it by 10
SkillImage1=72
;Changes the behavior of tag skills
;Set to 1 to give the initial skill bonus to the fourth tag skill from "Tag!" perk (Fallout 1 behavior)
;Set to 2 to disable the double bonus of skill points for tag skills
;Set to 3 to use both modes
TagSkillMode=0
SkillCost0=0|0|0|0|0|300 ;Each level of small guns costs 6 skill points
;Set to 1 to base skill costs on spent points instead of current level
BasedOnPoints=0
;Examples
;Skill0=s1|i2|l1.5 ;Skill 0 (small guns) is str*1 + int*2 + luck*1.5
;SkillBase1=50 ;Big guns has a base of 50
;SkillMulti2=10 ;Each point spent in energy weapons increases it by 10
;SkillImage1=72
;SkillCost0=0|0|0|0|0|300 ;Each level of small guns costs 6 skill points
+4
View File
@@ -6,6 +6,10 @@
;multi[x] - where x is from 0 to 6, the multiplier of st/pe/en/etc.
;shift[x] - shifts the base stat before the multiplication
[Main]
;Set to 1 to take the bonus values of SPECIAL stats into account when calculating maximum hit points
;Set to 0 for the Fallout original behavior (bonus stats do not affect maximum hit points)
HPDependOnBonusStats=0
;max hp
[7]
+2 -2
View File
@@ -40,7 +40,7 @@ Image=24
ButtonCount=3
;Set the appearance of the elevator
MainFrm=148
ButtonsFrm=151
MainFrm=148 ; EL_VAULT.FRM
ButtonsFrm=151 ; EL_MIL3.FRM
;Set up the exit points for all three buttons (see examples above)
+180 -103
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
+35 -29
View File
@@ -12,52 +12,58 @@ Requires sfall 3.5 or higher
*/
#include "..\headers\define_extra.h"
#include "..\headers\sfall\sfall.h"
#include "..\headers\sfall\define_extra.h"
procedure set_ammo_mod;
procedure start;
procedure map_enter_p_proc;
variable ammoIni;
variable ammoData;
variable enabled;
procedure set_ammo_mod begin
variable pid, dmg_mod, i := 1;
while (i > 0) do begin
pid := get_ini_setting(ammoIni + "|" + i + "|pid");
if (pid < 1) then break;
set_proto_data(pid, PROTO_AM_AC_MOD, get_ini_setting(ammoIni + "|" + i + "|ac_adjust"));
set_proto_data(pid, PROTO_AM_DR_MOD, get_ini_setting(ammoIni + "|" + i + "|dr_adjust"));
// dam_mult and dam_div must be positive integers
dmg_mod := get_ini_setting(ammoIni + "|" + i + "|dam_mult");
if (dmg_mod < 1) then dmg_mod := 1;
set_proto_data(pid, PROTO_AM_DMG_MULT, dmg_mod);
dmg_mod := get_ini_setting(ammoIni + "|" + i + "|dam_div");
if (dmg_mod < 1) then dmg_mod := 1;
set_proto_data(pid, PROTO_AM_DMG_DIV, dmg_mod);
i++;
end
//debug_msg("AmmoMod: " + ammoIni + " - set " + (i - 1) + " ammo protos.");
end
procedure start begin
variable i := 1, ammo, ammoPid, dmgMod;
if game_loaded then begin
ammoIni := get_ini_setting("ddraw.ini|Misc|DamageFormula");
if (ammoIni == 1 or ammoIni == 2) then
enabled := get_ini_setting("ddraw.ini|Misc|DamageFormula");
if (enabled == 1 or enabled == 2) then
ammoIni := "AmmoGlovz.ini";
else if (ammoIni == 5) then
else if (enabled == 5) then
ammoIni := "AmmoYAAM.ini";
else
ammoIni := "AmmoMod.ini";
enabled := get_ini_setting(ammoIni + "|1|pid");
if (enabled > 0) then call set_ammo_mod;
if (enabled <= 0) then return;
ammoData := create_array_map;
ammoPid := enabled; // pid from the first section
while (ammoPid > 0) do begin
ammo := create_array_map; // create permanent arrays
ammo.ac_adjust := get_ini_setting(ammoIni + "|" + i + "|ac_adjust");
ammo.dr_adjust := get_ini_setting(ammoIni + "|" + i + "|dr_adjust");
// dam_mult and dam_div must be positive integers
dmgMod := get_ini_setting(ammoIni + "|" + i + "|dam_mult");
ammo.dam_mult := dmgMod if (dmgMod > 0) else 1;
dmgMod := get_ini_setting(ammoIni + "|" + i + "|dam_div");
ammo.dam_div := dmgMod if (dmgMod > 0) else 1;
ammoData[ammoPid] := ammo;
i++;
ammoPid := get_ini_setting(ammoIni + "|" + i + "|pid");
end
call map_enter_p_proc;
debug_msg("Ammo INI Loader mod: " + ammoIni + " - set " + (i - 1) + " ammo protos.");
end
end
procedure map_enter_p_proc begin
if (enabled > 0) then call set_ammo_mod;
variable pid, values;
if (enabled > 0) then begin
foreach (pid: values in ammoData) begin
set_proto_data(pid, PROTO_AM_AC_MOD, values.ac_adjust);
set_proto_data(pid, PROTO_AM_DR_MOD, values.dr_adjust);
set_proto_data(pid, PROTO_AM_DMG_MULT, values.dam_mult);
set_proto_data(pid, PROTO_AM_DMG_DIV, values.dam_div);
end
end
end

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