Compare commits

..
234 Commits
Author SHA1 Message Date
NovaRain ee67b9b59d Merge branch 'develop'. sfall is now updated to 4.0. 2017-10-14 23:03:07 +08:00
NovaRain 74d496845b Added compiled gl_partycontrol script from the previous commit. 2017-10-02 10:04:56 +08:00
NovaRain 1bde433a16 Added Gecko Skinning perk to controlled critters if player has the perk, to make geckos killed by controlled critters also have gecko skins in their inventory. 2017-10-02 09:54:47 +08:00
NovaRain f0f4948856 Added LoadHeroAppearance() back to NewGame_After in LoadGameHook.cpp. 2017-09-19 23:04:35 +08:00
NovaRain b4168fe934 Reverted LoadGame_hook to previous revision and changed EndLoadHook to only call LoadHeroAppearance (attempted to fix issue #117 and #94)
Removed redundant LoadHeroAppearance calling.
2017-09-19 11:58:41 +08:00
NovaRain 848f29b468 Added descriptions for the variables in Perks.ini. 2017-09-12 15:38:07 +08:00
NovaRain bf1da72def Implemented script procedures: combat_is_starting_p_proc/combat_is_over_p_proc (from Crafty) #107 2017-09-01 09:58:25 +08:00
NovaRain 75909e688e Fixed the double damage effect of Silent Death perk not being applied to critical hits (from Crafty) 2017-08-21 22:56:06 +08:00
NovaRain 394000fa2a Merge branch 'feature/cursor_mode' into develop 2017-08-21 21:39:47 +08:00
NovaRain ad17773ace Fixed incorrect argument description for get/set_proto_data in sfall opcode list.txt.
Removed incorrect PROTO_CR_FLAGS value in define_extra.h (was actually critter's IN), and renamed PROTO_CR_ACTION_FLAGS to its correct name #112
2017-08-21 11:33:04 +08:00
NovaRain 85cdd8973e Fixed the incorrect description in HOOK_COMBATDAMAGE. 2017-08-19 08:49:16 +08:00
NovaRain 85bcf82c1e Unified the indent style (3 spaces) in SSL library and removed trailing spaces. 2017-08-18 09:53:17 +08:00
NovaRain 6c65d8fe79 Added descriptions for get/set_cursor_mode.
Added defines for cursor modes.
2017-08-17 23:54:29 +08:00
NovaRain 34eaddebb8 Added script functions get/set_cursor_mode #108
Removed "beta" from version string.
2017-08-14 11:49:41 +08:00
NovaRain 7989da8bfa Added missing define and description for item_weight. 2017-08-13 11:45:12 +08:00
NovaRain 012418cd59 Two bug fixes from Crafty:
1. Fixed the displayed message when the attack randomly hits a target that is not a critter and has a script attached.
2. Fixed damage_p_proc being called for misses if the target is not a critter.
2017-08-07 13:21:13 +08:00
NovaRain 0a4e0cb755 Fixed Bonus Move APs being replenished when you save and load the game in combat (from Crafty) 2017-07-26 21:49:30 +08:00
NovaRain fc930ff7fb Added a note for argnum in set_sfall_arg().
Fixed incorrect set_sfall_arg usage in the example.
Removed a redundant line in sfall opcode list.txt.
2017-07-25 23:10:14 +08:00
NovaRain 6a0a93836e Added the description for real_dude_obj. 2017-07-11 12:08:46 +08:00
NovaRain e7e286013f Replaced hs_*.int scripts in example mods with normal global scripts with register_hook. 2017-07-06 21:01:35 +08:00
NovaRain f0e93450f6 Minor format edits to sfall.h and LoadGameHook.cpp. 2017-06-22 09:44:14 +08:00
NovaRain 46ea2fb265 Added Attack Type argument for HOOK_COMBATDAMAGE (from Crafty) #100 2017-06-14 12:39:33 +08:00
NovaRain 35d8052098 Minor edits to ddraw.ini. 2017-06-02 11:49:54 +08:00
NovaRain abb71a1a1f Fixed incorrect info in sfall function notes.txt. 2017-05-31 09:25:44 +08:00
NovaRain 35d397c891 Added DontTurnOffSneakIfYouRun option to prevent the player from running while sneaking without Silent Running perk (from Crafty)
Added sfall log text for DisablePipboyAlarm.
2017-05-26 10:36:14 +08:00
NovaRain 92b010f362 Added check for sfall version for gl_partycontrol and gl_npcarmor.
Changed version string because sfall 4.0 will be released in 'beta' stage first.
Minor edits to some documents.
2017-05-23 22:28:42 +08:00
phobos2077 c2e6d743a3 Changed LoadGame_after to be called before LoadGame state is ended #94 2017-05-20 18:10:59 +07:00
NovaRain 579cbd7543 Re-removed CityRepsCount and KarmaFRMsCount from ddraw.ini (they got added back by accident.) 2017-05-08 21:22:05 +08:00
NovaRain 34db527f45 Merge branch '3.8-maintenance' 2017-05-08 09:53:44 +08:00
NovaRain 475503d632 Added a check for OutlineColor in gl_highlighting, in case player set it to negative values.
Split the push/pop instructions in ItemCountFix() into individual lines.
2017-05-07 21:20:17 +08:00
phobos2077 0486192c3c Updated rebracer.xml 2017-05-03 22:47:40 +07:00
phobos2077 83f2d48668 Fix hero appearance bug (#92) and broken sfall global variables
- Changed LoadGame_before function to be called AFTER GameReset when loading the game
- Don't set appearance globals in RefreshPCArt function
- Moved functions for saving/loading appearance globals into HeroAppearance.cpp
2017-04-24 16:37:53 +07:00
phobos2077 fd4fe5fd0e HeroAppearance: Fixed AppStyle and AppRace frms not being loaded and drawn #94 2017-04-24 13:41:05 +07:00
NovaRain 2255d9e947 Fixed skills being capped at 95% when starting a new game.
Changed PipBoyAvailableAtGameStart=1 to be executed before the game starts, so player will be in vault suit at the beginning, instead of first in tribal appearance then switching to vault suit after changing maps.
Added a separator line for the new [Scripts] section in ddraw.ini.
2017-04-19 10:37:04 +08:00
phobos2077 85020d66f2 Added new functions into docs #90 2017-04-15 22:17:42 +07:00
phobos2077 629641eb96 Added new HOOK_CARTRAVEL #90 2017-04-15 21:59:18 +07:00
phobos2077 0af8010861 Added scripting function "set_car_intface_art" #90 2017-04-15 02:04:21 +07:00
phobos2077 addccd2bc6 Added rebracer.xml 2017-04-12 00:35:25 +07:00
phobos2077 8a0ac2082e Fixed some override structs not being initialized on starting the game, leading to min/max skills/stats/hit chances being wrong #92 2017-04-12 00:35:10 +07:00
NovaRain a5599e1942 Simplified ToggleHighlightObject in gl_highlighting. 2017-04-10 00:57:17 +08:00
NovaRain 43e2ddeeef Enabled highlighting corpses and containers by default in sfall-mods.ini. 2017-04-09 22:51:56 +08:00
NovaRainandGitHub 0c5e6af119 Merge pull request #93 from phobos2077/highlighting_options
Added options for toggling corpse highlighting and LOS check in item highlighting mod.
2017-04-09 22:45:40 +08:00
NovaRain dc785d010e Added options for toggling corpse highlighting and LOS check.
Changed default settings in sfall-mod.ini to be in line with the default  ddraw.ini in previous versions of sfall.
2017-04-09 20:58:36 +08:00
phobos2077 d484be45c8 Added function car_gas_amount #90
- Sorted some defines
- Minor code formatting fixes
2017-04-08 13:48:14 +07:00
VladandGitHub ae3634779c Merge pull request #91 from FakelsHub/develop-highlighting
Change behavior in Highlighting mod
2017-04-08 13:08:46 +07:00
Mr.Stalin 18644f37fd Deleted duplicate code in the script. Added check for sfall version. 2017-04-07 23:58:26 +03:00
Mr.Stalin bb52a6d9cb Change in Highlighting mod, items with set flag 'NO_HIGHLIGHT' will no longer be highlighted. 2017-04-07 21:54:57 +03:00
phobos2077 e34a00148f Fixed path do Delegate.h in Inventory.h 2017-04-05 00:40:24 +07:00
phobos2077 478684f8ef Enabled Elevators module and fixed incorrect loading from Elevators.ini 2017-04-05 00:16:30 +07:00
phobos2077 e2a383511d Refactor opcodes in Objects.cpp
- Added missing argument type checks
- Replace asm blocks with wrapper function calls
- Use GameObject instead of DWORD
2017-04-03 23:27:33 +07:00
phobos2077 116c522bdc Moved hard-coded "ControlCombat" mod from sfall into a global script #87
- Exactly the same functionality and settings
- Mod settings are now in sfall-mods.ini
2017-04-01 21:11:19 +07:00
phobos2077 9531fcbebd Added new hook script HOOK_COMBATTURN - runs before and after every turn in combat 2017-04-01 20:31:19 +07:00
phobos2077 76a946c72e Moved all combat-related hook scripts into separate unit 2017-04-01 16:09:34 +07:00
phobos2077 20bc5b9fd6 Make modules interfaces public 2017-04-01 16:01:53 +07:00
phobos2077 dcc471fc47 Reorganize HookScripts.cpp
- Moved most hook script implementations into several separate files
- Group HS implementations together by their category
2017-04-01 15:57:25 +07:00
phobos2077 d881dc9e89 Make Metarule.cpp more accessible
- Improve comments
- Rename metaruleTable and move it on top of the file
- Use C++ style iteration
2017-04-01 03:28:50 +07:00
phobos2077 fef690c2c2 Merge branch 'feature/armor-appearance' into develop 2017-04-01 02:21:58 +07:00
phobos2077 5bbdcbd2db Added final version of NPC armor appearance script, compatible with both HeroAppearance mod and set_dude_obj (NPC control) function #82 2017-04-01 02:21:12 +07:00
phobos2077 24e9dde577 Add missing code for real_dude_obj 2017-04-01 02:15:09 +07:00
phobos2077 029419db3d Added real_dude_obj scripting function, useful for checking if currently controlling NPC or "real" character 2017-04-01 02:14:27 +07:00
phobos2077 6e0fe881df Added new hook script for controlling FID of character figure on inventory screen 2017-04-01 02:12:20 +07:00
phobos2077 203dcdf6be Refactor adjust_fid function, make it compatible with NPC control, Hero Appearance and NPC Armor appearance mods 2017-04-01 00:20:00 +07:00
phobos2077 34500d9dd5 Replace adjust_fid engine function with C++ implementation 2017-03-31 20:55:45 +07:00
phobos2077 cbe987df25 First prototype of armor appearance mod (hook-based)
- Add test version of gl_npcarmor script with config file for FO2 RP
- Add some useful scripting headers
- Add new scripting functions to sfall.h
2017-03-30 01:20:44 +07:00
NovaRain 7dcef6f4b2 Replaced some address hacks with simplified ones (e.g. using jumps in stead of multiple NOPs), to be in line with the changes in 3.8 branch (commit 16be32d284) 2017-03-28 10:11:38 +08:00
phobos2077 5dadba6e56 Better solution for NPC inventory FID: skip reading from proto, use existing art instead (partially fixes incompatibility with armor appearance mod);
Fixed conflict with HeroAppearance mod (assumed adjust_fid was always called for "real" Dude)
2017-03-28 02:49:55 +07:00
phobos2077 b592d6bdbe PartyControl: added fix for displaying proper NPC art in inventory screens (not taking armor into account - like vanilla game); removed redundant SetInventoryCheck function; minor refactoring (not compatible with current scripted implementation of NPC armor appearance mod) 2017-03-28 01:26:40 +07:00
phobos2077 0fe6c2a426 Fixed crash after barter 2017-03-27 23:42:34 +07:00
phobos2077 32564d64d1 Added scripting functions for reading INI sections 2017-03-27 04:07:16 +07:00
phobos2077 897f1ab323 Fixed bug and added description for new scripting function #17 2017-03-27 00:58:06 +07:00
phobos2077 4e3168e2e3 Added function set_dude_obj to take control of any critter at any time [EXPERIMENTAL] #17 2017-03-27 00:18:27 +07:00
phobos2077 8a65172927 Minor refactoring of PartyControl 2017-03-27 00:17:37 +07:00
phobos2077 778230dde1 Added item_weight script function;
Return -1 on metarule argument validation error (to match normal opcodes) #63
2017-03-26 23:16:35 +07:00
phobos2077 6a78206c2e Added SafeWriteBatch function for writing the same value to a list of addresses;
Rewrite AnimationsAtOnceLimit: get rid of redundant loops and unsafe heap allocations
2017-03-26 22:06:27 +07:00
phobos2077 c519fb6fb6 Replaced all usages of MakeCall with 3 arguments with either MakeJump or MakeCall (2 arguments) - code readability. 2017-03-26 20:10:44 +07:00
phobos2077 96fa2668cc Reduce duplication in HookScripts's hooking code using HookCalls; Added function MakeJump to improve code readability 2017-03-26 20:00:49 +07:00
phobos2077 c32dc7664e Added new modes for get_game_mod to match Crafty's; implemented HookCalls function to reduce code duplication #66 2017-03-26 19:41:04 +07:00
NovaRain 2c14d5dd57 Merge branch '3.8-maintenance' 2017-03-25 21:34:34 +08:00
NovaRain 945f4696d7 Fixed anim_set_end_hack() only gets called when applying AnimationsAtOnceLimit patch. It should be always called regardless of AnimationsAtOnceLimit setting. 2017-03-23 20:46:14 +08:00
phobos2077 f2243f2874 Added definitions for AnimationSet structures (based on Crafty's work); refactor Proto struct definitions, added a couple of static asserts for safety 2017-03-23 01:57:06 +07:00
phobos2077 52e24a4dd4 Added a hack from Crafty that allows to use reg_anim_animate() inside combat_p_proc without game hanging in eternal loop #75 2017-03-23 01:13:49 +07:00
NovaRain 1644ca437c Fixed vanilla to-hit calculation being broken by the previous TOHIT hook commit. 2017-03-20 13:56:03 +08:00
NovaRain 4482630f9a Updated credits.
Unified the wording of some log entries.
2017-03-19 08:32:47 +08:00
phobos2077 7bbe84feef Fixed TOHIT hook issues: added 3 missing hook arguments, fixed incorrect attack type argument being passed to vanilla function, thus potentially breaking vanilla to hit calculations, even when not using any scripts at all 2017-03-18 21:45:28 +07:00
phobos2077 c83fe0690b Merge branch 'develop' of https://github.com/phobos2077/sfall into develop 2017-03-18 20:26:11 +07:00
phobos2077 76e32e1bef InputFuncs: added OnMouseClick delegate, moved debug editor related code into new module;
HookScripts: added check for map being loaded in MouseClick hook, minor renaming.
2017-03-18 20:23:34 +07:00
NovaRain 92c599e1a2 Fixed incorrect "\r\r\n" being printed in sfall-log.txt.
Simplified Jet Antidote fix.
Changed sprintf with _snprintf_s for SimplePatch to prevent warning  C4995 when compiling with v140_xp toolset.
2017-03-18 21:12:28 +08:00
phobos2077 1f74aa5c22 Refactor LoadGameHook: replaced MainMenuLoop hook with separate game_reset and main_init_system hooks #83 2017-03-18 18:24:08 +07:00
phobos2077 2525e8a005 Prevent crashes due to global scripts being executed during game closing 2017-03-18 03:21:50 +07:00
phobos2077 7c661ce408 Merge branch 'develop' of https://github.com/phobos2077/sfall into develop 2017-03-18 02:59:04 +07:00
phobos2077 2d278bf4c7 Fixed 0 prices in all shops when not using barter mods 2017-03-18 02:58:41 +07:00
NovaRain fc99baa0c6 Changed SkipSizeCheck and ExtraCRC to not require enabling sfall debugging mode. 2017-03-16 22:52:58 +08:00
NovaRain 0b739b7d77 Fixed inconsistent behavior of motion sensor flag 2; now motion sensor truly does not require any charges to work. 2017-03-16 07:38:43 +08:00
phobos2077 2fbf4a0518 Add notes for new scripting functions 2017-03-16 02:01:29 +07:00
phobos2077 9514602f91 Removed CommonTypes.h, it's redundant because with precompiled header, Windows.h defines are available everywhere 2017-03-16 01:33:11 +07:00
phobos2077 adf8dd13dd Moved highlighting-related settings into new "sfall-mods.ini", dedicated for scripted sfall mods;
Reverted description for MotionScannerFlags 1 and 2, it was actually correct before.
2017-03-16 01:21:20 +07:00
NovaRain 943561ea65 Fixed header path in MainLoopHook.h and Worldmap.h.
Replaced Win2K project config with ReleaseXP (using v140_xp toolset) because using VS2008 to target Win2000 is no longer possible with current sfall 4.0 codebase.
2017-03-15 22:14:17 +08:00
phobos2077 c5698d74ce Update documentation on hook scripts 2017-03-14 02:24:30 +07:00
phobos2077 afadbb71c4 Refactor highlighting mod script, added check for outlined_object (via new scripting function), updated ddraw.ini to reflect the actual meaning of highighting-related settings (they way it worked for a long time); #53
HighlightMod is permanently removed from sfall code, it is now only a script.
2017-03-14 00:20:34 +07:00
phobos2077 a74bab42e8 Full implementation of highlight mod with motion scanner interaction; #53
Fixed incorrect string lookup failsafe in Inventory.cpp
2017-03-13 23:54:54 +07:00
phobos2077 c411ced286 Merge branch 'develop' of https://github.com/phobos2077/sfall into develop 2017-03-13 22:15:16 +07:00
phobos2077 b0dc6ff182 ExplosionEmitLight: Skip setting light level if object was already lit #78 2017-03-13 22:13:21 +07:00
NovaRain cbcc0e4a86 Fixed Sequence stat value not being printed correctly when using "print to file" option. 2017-03-13 11:29:56 +08:00
NovaRain 133d092d02 Fixed bugs for negative SPECIAL values in character creation (from Crafty)
Updated credits.
2017-03-13 10:47:53 +08:00
phobos2077 fa583d41d7 Added scripting functions: get/set_flags. This allows, for example, to turn character into a ghost dynamically from script. 2017-03-13 04:12:52 +07:00
phobos2077 c63ddf3e9c Fixed incorrect GlobalVar struct size leading to load game crashes and corrupted saves 2017-03-13 03:54:23 +07:00
phobos2077 6152615ce5 Implemented highlighting mod as a stand-alone global script with LOS and NoHighlight flag checks #53 2017-03-13 03:36:02 +07:00
phobos2077 a379e1f998 Added ability to load global scripts from different paths with new GlobalScriptPaths option 2017-03-13 02:26:02 +07:00
phobos2077 b3d5d38cc4 Remove dependency on Explosions from ScriptExtender by introducing onAfterCombatAttack delegate 2017-03-13 00:52:40 +07:00
phobos2077 ede1bacf2b Added new arguments to barter price hook from Crafty (slightly modified) #76 2017-03-13 00:17:50 +07:00
phobos2077 4823b71d96 Encapsulated delegate variables into functions 2017-03-12 23:27:00 +07:00
phobos2077 aa77d82a23 Removed all WorldmapSpeed patches except the default one, fixed global worldmap scripts not working when speed patch is disabled 2017-03-12 23:14:35 +07:00
phobos2077 0a3745f8f5 Moved main loop hooks from ScriptExtender to separate module (with new hooks);
Moved HighlightingMod into separate module;
Removed direct reference to ScriptExtender from InputFuncs using delegate
2017-03-12 21:48:10 +07:00
phobos2077 685914dafa Improved outline function by redrawing only necessary portion of screen #54;
Renamed some sfall structs;
Minor refactoring.
2017-03-11 23:21:44 +07:00
phobos2077 2d4ce73664 Initial implementation of set_outline function (need to find better solution) #54 2017-03-11 21:48:59 +07:00
phobos2077 7b5e730f72 Moved some more wrappers out from HeroAppearance 2017-03-11 19:18:10 +07:00
phobos2077 10bc859892 Use precompiled header for all configurations; removed useless check for VS version 2017-03-11 18:39:54 +07:00
phobos2077 2e064580ed Refactor HeroAppearance and related code - moved wrapper functions into Functions_def.h, replaced usages, corrected some structs 2017-03-11 18:35:57 +07:00
phobos2077 8357465e9c Removed file-specific compile settings for Worldmap.cpp and TalkingHeads.cpp 2017-03-11 15:45:24 +07:00
phobos2077 81d3479bff Greatly increase compilation speed using precompiled header 2017-03-11 15:43:28 +07:00
phobos2077 89f92f9676 Replaced NULL with nullptr 2017-03-11 15:11:38 +07:00
phobos2077 5888b76afb Merge branch 'feature/namespace-changes' into develop 2017-03-11 15:07:52 +07:00
phobos2077 e1db0550b1 Removed ExtraSaveSlots dependency on HeroAppearance - moved some functions to EngineUtils, others replaced with wrappers 2017-03-11 14:51:56 +07:00
phobos2077 d0f05e4efe Rewrite Proto structures - mapped most of proto offsets into one big struct 2017-03-11 14:07:08 +07:00
phobos2077 b18b5a340c Renamed most used engine structs;
Rename struct fields and map previously unknown fields;
Replace sElevator with proper two-dimensional array of simple structs;
Fix build errors.
2017-03-11 02:15:27 +07:00
NovaRain 6e5b811b87 Fix a crash when clicking on empty space in the inventory list opened by "Use Inventory Item On" (backpack) action icon (from Crafty)
Improved the functionality of ScrollMod: now the minimum is scrolling 1 inventory slot per click; before setting ScrollMod too high or negative values will result in scrolling not working.
Changed BodyHit_Torso to BodyHit_Torso_Uncalled because it sets both body_torso and body_uncalled hit modifiers.
2017-03-09 13:56:37 +08:00
NovaRain e71d1962b5 Fixed metarule2_explosions not being reset properly. 2017-03-09 09:07:58 +08:00
phobos2077 a4de59dac4 Put all engine function offsets into fo::funcoffs:: namespace; refactor the definition of functions to reduce lines of code; renamed some headers #56 2017-03-09 02:48:48 +07:00
phobos2077 67c3ba7caf Renamed VARPTR_ to FO_VAR_ prefix #56 2017-03-09 01:12:20 +07:00
phobos2077 4b261febfd Put all FO variables and function wrappers to fo:: namespace; fix all build errors; other minor refactoring #56 2017-03-09 00:27:54 +07:00
phobos2077 6b6da17610 Updated TGameObj struct with separate sub-structs for items and critters; Put game enums and structs into fo namespace (broken build) #56 2017-03-06 02:20:22 +07:00
phobos2077 8ed93e8cf7 Replaced DATATYPE_* constants with enum class 2017-03-06 00:50:15 +07:00
phobos2077 31520d6f65 Fixed crash when using Graphic patch due to conflict between Movie patch and SkipOpeningMovies patch 2017-03-06 00:28:59 +07:00
phobos2077 033221398e Fixed Sfall not working :)
Separated sfall initialization from WinAPI-specific code in main.cpp and InputFuncs.cpp
2017-03-05 22:41:19 +07:00
phobos2077 3a4b7fe3f5 Moved all files to sfall namespace 2017-03-05 21:49:21 +07:00
phobos2077 a016e4a236 Replaced all direct references to ini and translationIni with GetConfig*() 2017-03-05 18:25:33 +07:00
phobos2077 6f0901f980 Replaced more INI reading with new functions;
Removed CityRepsCount setting (redundant)
2017-03-05 01:52:33 +07:00
phobos2077 fbb643bfa8 Fix and refactor loading of ExtraGameMsgFileList 2017-03-04 20:23:03 +07:00
phobos2077 32c1de3a34 Added functions for reading from sfall INI files more easily;
Refactor Karma module init: use new INI functions, get rid of hacky string split code, removed KarmaFRMsCount (it's redundant)
2017-03-04 19:55:37 +07:00
phobos2077 b5a85fd57c Merge branch 'feature/module-system' into develop 2017-03-04 17:57:33 +07:00
phobos2077 c0906521aa Reduce external dependencies in LoadGameHook using the delegates for various events;
Renamed some variables and functions;
Moved Input patch into separate module;
Moved Graphics patch initialization into Graphics module;
Moved PipboyAvailableAtStart and DisableHorrigan patches into MiscPatches;
#69 #9
2017-03-04 17:51:24 +07:00
phobos2077 5b10d9e786 Fixed crash on pressing Reload hotkey while on the main menu; move some dependencies from LoadGameHook 2017-03-03 01:07:57 +07:00
phobos2077 75c7ab647f Renamed some macros to avoid names reserved by C++ standart;
Replaced fixed-bit types with simple types in Enums and Struct definitions (because sfall is 32-bit exclusive by design).
2017-03-01 03:02:18 +07:00
phobos2077 38e0f21e93 Reorganize hooks in LoadGameHook: don't hook main menu loop, instead added "before new game" hook. 2017-03-01 02:50:27 +07:00
phobos2077 02658a3801 Moved fix patch to more appropriate place #70 2017-02-28 00:39:05 +07:00
phobos2077 72bde84d92 Fixed bug #70 by replacing item_count engine function 2017-02-28 00:32:47 +07:00
phobos2077 f3f9186ce7 Removed Cpp11_emu file. Goodbye, Windows 9x :'(
Added delegates to LoadGameHook.
2017-02-27 02:04:18 +07:00
phobos2077 be0cc2f3d5 Switch to Visual Studio 2015 compiler. Test some features with Delegate class 2017-02-27 01:48:54 +07:00
phobos2077 826c3eb021 Added Module classes for every sfall module; #9
Moved all patches out from main.cpp;
Fixed all build errors.
2017-02-27 01:27:04 +07:00
NovaRain bf70cadc02 Merge branch '3.8-maintenance' 2017-02-27 00:02:50 +08:00
phobos2077 8284eb50f0 Moved more stuff out from main.cpp;
Added module manager class with example usage; #9
Attempted to implement Delegate class.
2017-02-26 22:53:32 +07:00
phobos2077 160c11043f Moved SpeedPatch to separate unit; moved Karma FRMs patch to Karma.cpp #7 2017-02-26 02:59:08 +07:00
phobos2077 6e5a0fd085 Moved DisplayKarmaChange patch into separate unit #7 2017-02-26 02:48:16 +07:00
phobos2077 57ef099e97 Moved LoadOrder patch into separate unit #7 2017-02-26 02:43:19 +07:00
phobos2077 944b95d796 Move all Worldmap-related patches into separate unit #7 2017-02-26 02:35:53 +07:00
phobos2077 dfa9534bd1 Move more patches away from main.cpp to Misc module 2017-02-26 02:17:39 +07:00
phobos2077 c186ed5ee0 Added Module base-class and example subclass for HeroAppearance 2017-02-26 02:17:03 +07:00
phobos2077 4dc2aaa046 Merge branch 'feature/opcode-handling' into develop 2017-02-24 17:25:33 +07:00
phobos2077 b3e1837cfc Moved several more functionsto opcodeInfoArray.
Removed AsmMacros.h to reduce the number of ways to write new scripting function. #58
2017-02-24 17:24:15 +07:00
phobos2077 94c00f12f7 Moved all array-related opcodes to new table #58 2017-02-24 17:01:02 +07:00
phobos2077 df5c81164f Added note about possible issue when using hs_invenwield incorrectly 2017-02-24 13:57:00 +07:00
phobos2077 17df8deb86 Moved all "Utils" opcodes to new table (gotten rid of op_* functions) #58 2017-02-24 13:56:02 +07:00
phobos2077 54f9fc4bcd Introduced much simpler way to add engine functions wrappers (one line in 1 file); changed anim functions to use new wrappers 2017-02-24 03:12:36 +07:00
phobos2077 6d88cd03f7 Fixed crash if calling regn_anim_obj_run_to_tile after reg_anim_combat_check 2017-02-24 03:11:06 +07:00
phobos2077 ce21fdab79 Rewrite all anim-related opcode handlers, fixed bug in metarule2_explosions function (damage type change) #58, #67 2017-02-24 01:29:46 +07:00
phobos2077 bac748a525 Use Enum of pseudo-types for argument validation instead of struct #58 2017-02-24 00:30:26 +07:00
phobos2077 d9b8d18a67 Replaced bitmask-based argument validation system with more simple solution;
Refactor OpcodeContext::handleOpcode method;
Moved register_hook_* functions to new opcodeInfo table #58
2017-02-23 23:45:15 +07:00
phobos2077 15b51eaa6d Converted all object-related opcodes to new format #58 2017-02-23 20:02:19 +07:00
phobos2077 ae1aa27d13 Implemented more convenient way to define sfall opcodes, rewritten key_pressed handler, moved some opcodes to new opcodeInfoArray #58 2017-02-23 19:07:22 +07:00
phobos2077 f150163bc5 Fixed game_loaded scripting function 2017-02-23 19:05:17 +07:00
phobos2077 142264d6b6 Added opcode number getter to OpcodeContext. This way it's possible to use single naked function for many opcodes.
Fixed MetaruleTable not being filled.
2017-02-22 02:27:55 +07:00
phobos2077 a69b1b92b2 Fix build after merging changes from 3.8 branch. 2017-02-22 02:08:59 +07:00
phobos2077 214e405c32 Set the valid range of NPCsTryToSpendExtraAP to be non-0 positive values, and removed a redundant/unused constant.
Changed the valid range of EncounterTableSize.
2017-02-21 01:46:02 +07:00
NovaRainandphobos2077 99d6ff332f Added a fix for the engine not checking player's inventory properly when putting items into the bag/backpack in the hands (from Crafty)
Removed BagBackpackFix from ddraw.ini.
2017-02-21 01:43:43 +07:00
NovaRainandphobos2077 2d726de3f0 Fixed a crash when trying to open bag/backpack on the table in the bartering interface (from Crafty)
Added a tweak to move items to player's main inventory instead of the opened bag/backpack when confirming a trade.
2017-02-21 01:43:29 +07:00
NovaRainandphobos2077 212118ba8c Added a fix to ignore player's equipped items when opening bag/backpack (from Crafty) 2017-02-21 01:43:17 +07:00
NovaRainandphobos2077 2383d8d507 Added the ability to move items out of bag/backpack and back into the main inventory list by dragging them to character's image (similar to Fallout 1 behavior) (derived from Crafty's code)
Added a fix for losing items from inventory when you try to drag them to bag/backpack in the inventory list and are overloaded (from Crafty)
Removed gdBarterDispFix from ddraw.ini.
2017-02-21 01:43:06 +07:00
phobos2077 94f138f64b Replaced PID number in ScannerAutomapHook() with its define name for better understandability. 2017-02-21 01:39:22 +07:00
phobos2077 a5ffbe3a5f Replaced hex addresses with proper engine defines for ViewXPos and ViewYPos, and replaced two instances of SafeWrite32 with HookCall. 2017-02-21 01:33:03 +07:00
NovaRainandphobos2077 7a5a54ab5e Limited the range of values for StartYear/Month/Day to prevent errors when setting them to negative values, and added a clarification in ddraw.ini. 2017-02-21 01:28:40 +07:00
phobos2077 b5f3addae5 Fixed OverrideMusicDir not using the correct path string.
Updated the year showed in the credits and file properties.
2017-02-21 01:21:09 +07:00
phobos2077 2db071d0ca Fixed broken call_offset_* functions. 2017-02-21 01:17:31 +07:00
NovaRainandphobos2077 5b59c9e54d Added more details to the description of WorldMapEncounterFix/Rate, and changed the default value of WorldMapEncounterRate to its internal default. 2017-02-21 01:15:22 +07:00
NovaRainandphobos2077 60fb21cd1b Fixed display issues when calling gdialog_mod_barter with critters with no "Barter" flag set (from Crafty) 2017-02-21 01:13:20 +07:00
NovaRainandphobos2077 0f1072c302 Made WorldMapEncounterFix/Rate independent from WorldMapFPSPatch. (#62, with the simplified code from Crafty) 2017-02-21 01:05:45 +07:00
VladandGitHub 8069d925fe Merge pull request #61 from Vennor/early_sfall_save_game_loading
Early sfall save game loading
2017-02-21 00:56:16 +07:00
phobos2077 69905b633b Replace deprecated hash_map with std::unordered_map 2017-02-21 00:51:28 +07:00
phobos2077 1aba89e810 Attempt to fix build error in VS2015. 2017-02-21 00:44:07 +07:00
phobos2077 2548e6ea8f Merge branch 'feature/opcode-handling' into develop 2017-02-21 00:31:52 +07:00
phobos2077 0026590058 Refactor OpcodeContext class to make more sense. 2017-02-21 00:26:42 +07:00
Vennor 6bd7d4f05c Moved sfall additional save game file reading from LoadGame2_After to LoadGame2_Before to make saved arrays available in start functions of ssl scripts. 2016-12-15 20:18:43 +01:00
phobos2077 c26c2ad8f6 Moved core opcode handlers and opcode list into separate translation units. 2016-11-14 22:43:04 +07:00
phobos2077 ae4193d6f9 Renamed OpcodeHandler to OpcodeContext to avoid confusion with actual handler functions (sf_*). 2016-11-14 21:57:44 +07:00
phobos2077 3fed492a5b Get rid of opHandler global variable by passing instance to every scripting function handler. 2016-11-14 21:50:27 +07:00
NovaRain 3e3f6f92ed Merge branch '3.8-maintenance' 2016-11-14 10:20:26 +08:00
phobos2077 b026f8eadd Split opcode handler categories into separate translation units. 2016-11-14 02:07:08 +07:00
phobos2077 adcf3be520 Renamed all opcode handlers for consistent naming. 2016-11-13 20:53:40 +07:00
phobos2077 728e18b344 Fixes #57 2016-11-12 03:35:40 +07:00
phobos2077 65bb7d4de7 Simplify some calls in asm and replaced few addresses with constants. 2016-11-12 03:08:00 +07:00
phobos2077 1472902de4 Removed unnecessary includes. 2016-11-11 02:58:13 +07:00
phobos2077 dd1474c8d3 Moved some code from DllMain2 into separate functions in new cpp file. 2016-11-11 02:54:03 +07:00
phobos2077 830309b544 Merge with master branch, resolved conflicts. 2016-11-11 01:46:16 +07:00
phobos2077 84a60128a2 More code style fixes and some wrappers. 2016-11-11 01:27:38 +07:00
phobos2077 ec34df50ac Missing changes from previous commit. 2016-11-11 00:43:29 +07:00
phobos2077 9edf6e6cc3 Fixed several bugs due to incorrect pointer arithmetic.
Added/updated some structs.
2016-11-11 00:42:39 +07:00
phobos2077 99ddda2848 - Change the way engine variables are used in C++ code. No need to use asterix anymore, as they are declared as references.
- Implemented solution to interact with static engine arrays (like critical tables).
2016-11-10 23:11:18 +07:00
phobos2077 f351faa422 EXPERIMENTAL: declared references to engine variables in addition to pointers. This will allow to work with variables directly without additional operator! See PartyControl.cpp for example (naming is temporary). 2016-11-10 15:13:14 +07:00
phobos2077 a4dee3dbca Use recursion for _WRAP_WATCOM_CALL macros. 2016-11-10 14:28:42 +07:00
NovaRain 9be861a84b Merge branch '3.8-maintenance' 2016-11-10 09:14:49 +08:00
phobos2077 726aff686b Fixed code style for last modules. Moved some more structs/wrappers to FalloutEngine. Removed duplicate wrappers in Tiles.cpp. 2016-11-10 02:54:59 +07:00
phobos2077 34b0b7269f Fix some code styles and move Perk and Trait structs into Structs.h 2016-11-10 02:08:18 +07:00
phobos2077 2ac60d66f5 Adopted most functions from Imports h/cpp to Wrappers. 2016-11-10 01:50:13 +07:00
phobos2077 77cc151455 Simplify definition of engine variables using X-Macros pattern. Now only need to add in 2 places instead of 3. 2016-11-10 01:26:34 +07:00
phobos2077 d63392aea2 Refactor Message-related code: removed duplicate functions and structs, moved engine-related stuff to one place, other stuff. 2016-11-09 23:57:58 +07:00
phobos2077 07b5f78318 Fixing code style. 2016-11-09 20:39:14 +07:00
phobos2077 37e159dd21 Fixing code style. 2016-11-09 19:45:38 +07:00
phobos2077 cd1c756e24 Added some VS2015 temp files to gitignore 2016-11-09 14:09:36 +07:00
phobos2077 66ea6a7609 Simplify function wrapper definitions using macros.
Moved all non-wrapper functions to Utils.
Added basic structs for some prototypes.
2016-11-07 22:13:28 +07:00
phobos2077 0efdf7096b Fixed build errors. 2016-11-07 20:49:39 +07:00
phobos2077 80dad0d5d0 Refactor ScriptExtender: replaced some engine function calls with wrappers, fix code style. 2016-11-07 18:55:13 +07:00
phobos2077 10ec39ab60 Refactoring ScriptExtender module. 2016-11-07 03:44:25 +07:00
phobos2077 bd7518ca33 Fixed mistake of using constant pointer variables in ASM blocks (resulted in incorrect references in most cases).
Now each variable has preprocessor constant with prefix VARPTR_ .
2016-11-07 01:34:35 +07:00
phobos2077 8b264db28a Moved all engine variable pointers to separate namespace.
Replaced all usages of variable defines with variable pointers.
2016-11-07 00:09:12 +07:00
phobos2077 c44ca6adc1 Add some FO enums and tidy up existing ones.
Removed accidentally added sublime workspace from repo.
2016-11-06 21:54:28 +07:00
phobos2077 96db48626a Renamed all engine function wrappers to their original names and moved to separate namespace for code clarity. 2016-11-06 21:20:23 +07:00
phobos2077 7705e43ce4 Moved all function offsets to separate namespace. 2016-11-06 20:33:54 +07:00
phobos2077 8da65a92e9 Merge branch '3.8-maintenance' into develop 2016-11-06 19:43:25 +07:00
phobos2077 6eb9a37a07 Simplify function definitions 2016-11-06 15:39:45 +07:00
phobos2077 6290effd93 Merge branch '3.8-maintenance' into develop 2016-11-06 00:16:28 +07:00
phobos2077 f3209d282d Removed fallout2.cpp 2016-11-05 23:35:52 +07:00
phobos2077 a05d440ad6 Get rid of warnings in Movie.cpp 2016-11-05 23:35:13 +07:00
phobos2077 87e28277ad Moved engine Functions, Variables and Wrappers into separate files;
Added most function offsets from Fallout2.exe
2016-11-05 22:19:21 +07:00
phobos2077 935f7ead89 Removed queue9x and vector9x 2016-11-05 20:20:12 +07:00
phobos2077 84042f1736 New folder and project structure #7;
Removed vector9x and queue9x;
Reorganized some includes.
2016-11-05 20:19:34 +07:00
233 changed files with 28481 additions and 21138 deletions
+2
View File
@@ -46,6 +46,8 @@ nb-configuration.xml
*.user
*.userosscache
*.sln.docstates
*.VC.db
*.VC.opendb
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
+1 -1
View File
@@ -11,4 +11,4 @@ SaveSfallDataFail=ERROR saving extended savegame information! Check if other pro
[AppearanceMod]
RaceText=Race
StyleText=Style
MainButtonText=Appearance
MainButtonText=Appearance
+73
View File
@@ -0,0 +1,73 @@
; 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]
Power=16777217
AdvPower=16777287
Robe=16777218
; Sulik
[1]
PID=16777313
Default=16777280
Leather=16777325
Power=16777324
Metal=16777323
Jacket=16777321
Combat=16777322
; Vic
[2]
PID=16777278
Default=16777307
Jacket=16777329
Combat=16777330
Metal=16777331
Power=16777332
Leather=16777333
; Cassidy
[3]
PID=16777305
Default=16777354
Leather=16777260
Power=16777328
Metal=16777327
Jacket=16777351
Combat=16777326
; Myron
[4]
PID=16777376
Default=16777304
Leather=
Power=16777349
Combat=16777350
; Cat Jules
[5]
PID=16777734
Default=16777353
Leather=16777347
Metal=16777348
Jacket=16777346
Combat=16777226
; Kitsune
[6]
PID=16777724
Default=16777222
Leather=16777221
Metal=16777223
Jacket=16777222
Combat=16777219
+40
View File
@@ -0,0 +1,40 @@
[Highlighting]
; DX scandode of a key to press to highlight items on the ground
; 42 - SHIFT key
Key=42
; Set to 1 to also highlight containers
Containers=1
; Set to 1 to also highlight corpses
Corpses=1
; Set to 1 to only highlight objects in the player's line-of-sight
CheckLOS=0
; Set the color of outlines, available colors:
; 1 - glowing red
; 2 - red
; 4 - grey
; 8 - glowing green
; 16 - bright yellow
; 32 - dark yellow
; 64 - purple
OutlineColor=16
; Motion Scanner mode:
; 0 - ignored
; 1 - requires Motion Scanner present in player inventory to activate highlighting
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore)
MotionScanner=0
[CombatControl]
;Allows you to directly control other critters in combat
;Set to 0 to disable
;Set to 1 to control all critters in combat
;Set to 2 to control all party members
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs
Mode=0
;PIDList=62,89,97,107,160,161
+8 -28
View File
@@ -1,5 +1,5 @@
;sfall configuration settings
;v3.8.5
;v4.0
[Main]
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
@@ -127,22 +127,6 @@ SpeedKey9=0x00
;Set to -1 for either ctrl key, -2 for either alt key or -3 for either shift key
WindowScrollKey=0
;A key to press to toggle the highlighting of all items on the ground on the current map
ToggleItemHighlightsKey=42
;Set to 1 to also highlight containers
HighlightContainers=0
;Set the color of outlines, available colors:
;0x01 - glowing red
;0x02 - red
;0x04 - grey
;0x08 - glowing green
;0x10 - bright yellow
;0x20 - dark yellow
;0x40 - purple
OutlineColor=0x10
;A key to press to reload your currently equipped weapon
ReloadWeaponKey=0
@@ -383,7 +367,6 @@ UseScrollingQuestsList=1
;Use this line to modify the list of cities and their associated global variables used for city reputations
;Syntax is 'city id : global id', with each city/global pair separated by a comma.
;CityRepsCount=19
;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
@@ -398,7 +381,6 @@ SpeedInterfaceCounterAnims=0
;These lines allow you to control the karma frm's displayed on the character screen
;Number of KarmaPoints should be 1 less than number of KarmaFRMs
;KarmaFRMsCount=3
;KarmaFRMs=47,48,49
;KarmaPoints=-100,100
@@ -459,7 +441,6 @@ CritterInvSizeLimit=200
;Some bit flags to alter behaviour of the motion sensor
;1 - Allow sensor use on automap when motion sensor is in pack rather than hands
;2 - Motion sensor doesn't require charges
;4 - Motion sensor is required to use the item highlight feature
MotionScannerFlags=1
;Set to non-0 to adjust the maximum encounter table size
@@ -532,14 +513,6 @@ DialogPanelAnimDelay=33
;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127)
PipboyTimeAnimDelay=50
;Allows you to directly control other critters in combat
;Set to 0 to disable
;Set to 1 to control all critters in combat
;Set to 2 to control all party members
;If you want to control only specific critters, uncomment the ControlCombatPIDList line and set a comma delimited list of PIDs
ControlCombat=0
;ControlCombatPIDList=62,89,97,107,160,161
;Set to 1 to stack empty identical weapons, no matter what type of ammo was loaded before
StackEmptyWeapons=0
@@ -578,6 +551,13 @@ NumbersInDialogue=0
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
CreditsAtBottom=0
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Scripts]
;Comma-separated list of masked paths to load global scripts from
;Only use single slash \ as directory separator
;Paths outside of scripts folder are supported
GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[Debugging]
;Extra sfall configuration settings that can be used by modders
Binary file not shown.
+114
View File
@@ -0,0 +1,114 @@
/**
Item Highlight mod.
Previously was part of sfall itself, now a separate mod.
Features:
- highlighting items, containers (optional) and dead bodies (optional) on the ground
- configurable hotkey is used to trigger highlight
- only objects in direct line-of-sight of player are highlighted (optional)
- motion scanner is required to enable highlight (optional)
- motion scanner charges are decreased on each use (optional)
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.0
**/
#include "main.h"
//#include "..\..\..\!SRC\headers\define.h"
#define CRITTER_IS_DEAD (1)
#define PID_MOTION_SENSOR (59)
#define NO_HIGHLIGHT(obj) (get_flags(obj) bwand FLAG_NOHIGHLIGHT)
variable configSection := "Highlighting";
variable highlightKey;
variable alsoContainer;
variable alsoCorpse;
variable checkLOS;
variable outlineColor;
variable motionScanner;
variable highlightFailMsg1;
variable highlightFailMsg2;
procedure ToggleHighlightObject(variable obj, variable enable) begin
if obj and (not enable or not checkLOS or not obj_blocking_line(dude_obj, tile_num(obj), BLOCKING_TYPE_SHOOT)) then begin
if (alsoContainer and obj_item_subtype(obj) == item_type_container) or (not NO_HIGHLIGHT(obj)) then begin
if (enable) then set_outline(obj, outlineColor);
else set_outline(obj, 0);
end
end
end
procedure ToggleHighlight(variable enable) begin
variable obj;
foreach obj in list_as_array(LIST_GROUNDITEMS) begin
if obj != outlined_object then begin
call ToggleHighlightObject(obj, enable);
end
end
if (alsoCorpse) then begin
foreach obj in list_as_array(LIST_CRITTERS) begin
if critter_state(obj) == CRITTER_IS_DEAD then begin
call ToggleHighlightObject(obj, enable);
end
end
end
tile_refresh_display;
end
procedure KeyPressHandler begin
variable pressed := get_sfall_arg,
scanCode := get_sfall_arg,
scanner, charges;
if scanCode == highlightKey then begin
if pressed then begin
if motionScanner then begin
scanner := obj_carrying_pid_obj(dude_obj, PID_MOTION_SENSOR);
if scanner then begin
if motionScanner >= 2 then begin
charges := get_weapon_ammo_count(scanner);
if charges > 0 then begin
set_weapon_ammo_count(scanner, charges - 1);
intface_redraw;
call ToggleHighlight(true);
end else begin
display_msg(highlightFailMsg2);
end
end else begin
call ToggleHighlight(true);
end
end else begin
display_msg(highlightFailMsg1);
end
end else begin
call ToggleHighlight(true);
end
end else begin
call ToggleHighlight(false);
end
end
end
procedure start begin
if game_loaded and (sfall_ver_major >= 4) then begin
call InitConfigs;
highlightKey := GetConfig(configSection, "Key", 0);
alsoContainer := GetConfig(configSection, "Containers", 0);
alsoCorpse := GetConfig(configSection, "Corpses", 0);
checkLOS := GetConfig(configSection, "CheckLOS", 0);
outlineColor := GetConfig(configSection, "OutlineColor", 16);
if (outlineColor < 1) then outlineColor := 64;
motionScanner := GetConfig(configSection, "MotionScanner", 0);
highlightFailMsg1 := Translate("HighlightFail1", "You aren't carrying a motion sensor.");
highlightFailMsg2 := Translate("HighlightFail2", "Your motion sensor is out of charge.");
register_hook_proc(HOOK_KEYPRESS, KeyPressHandler);
end
end
Binary file not shown.
+114
View File
@@ -0,0 +1,114 @@
/*
NPC Armor Appearance mod
Used to replace the scripted part of B-Team mod.
Appropriate graphics are required for this mod to work.
Can be adopted to any mod by adjusting armor PIDs, NPC PIDs and NPC FIDs in INI file.
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.0
*/
#include "main.h"
#define IS_ARMOR(item) (obj_type(item) == OBJ_TYPE_ITEM and obj_item_subtype(item) == item_type_armor)
variable
modIni := "npcarmor.ini",
defaultFids,
armorPidMap, // maps armor PID to it's "type" - leather armor, metal, power armor, etc.
npcMap;
procedure check_armor_change(variable critter, variable item, variable isWorn) begin
variable npc, armorType, fid;
if (npcMap[obj_pid(critter)]) then begin
npc := npcMap[obj_pid(critter)];
if (not isWorn) then begin
// display_msg("No armor fid: " + npc["Default"]);
return npc["Default"];
end else if (item) then begin
armorType := armorPidMap[obj_pid(item)];
fid := npc[armorType] or defaultFids[armorType];
if (fid == 0 or fid == -1) then fid := npc["Default"];
// display_msg("Change fid: " + fid + ", npc: " + npc[armorType] + ", default:" + defaultFids[armorType]);
return fid;
end
end
return -1;
end
// for NPCs when they change armor themselves
procedure invenwield_handler begin
variable critter, item, fid, slot, isWorn;
critter := get_sfall_arg;
item := get_sfall_arg;
slot := get_sfall_arg;
isWorn := get_sfall_arg;
if (critter and item and slot == INVEN_TYPE_WORN) then begin
fid := check_armor_change(critter, item, isWorn);
if (fid != -1) then begin
art_change_fid_num(critter, fid);
end
end
end
// when changing armor from inventory while controlling other NPCs
procedure adjustfid_handler begin
variable fid, armor;
if (dude_obj != real_dude_obj) then begin
armor := critter_inven_obj(dude_obj, INVEN_TYPE_WORN);
fid := check_armor_change(dude_obj, armor, armor != 0);
if (fid != -1) then begin
set_sfall_return(fid);
end
end
end
procedure start begin
variable sect, sects, armorTypes, armorType, npc, pid, pids, i;
if game_loaded and (sfall_ver_major >= 4) then begin
register_hook_proc(HOOK_INVENWIELD, invenwield_handler);
register_hook_proc(HOOK_ADJUSTFID, adjustfid_handler);
defaultFids := get_ini_section(modIni, "Default");
fix_array(defaultFids);
foreach (armorType: i in defaultFids) begin
defaultFids[armorType] := atoi(i);
end
armorPidMap := create_array_map;
armorTypes := get_ini_section(modIni, "ArmorTypes");
foreach (armorType: pids in armorTypes) begin
pids := string_split(pids, ",");
foreach (pid in pids) begin
armorPidMap[atoi(pid)] := armorType;
end
end
npcMap := create_array_map;
i := 1;
sect := get_ini_section(modIni, ""+i);
while (sect.PID) do begin
npc := create_array_map;
npc["Default"] := atoi(sect["Default"]);
foreach (armorType: pids in armorTypes) begin
if (sect[armorType]) then begin
npc[armorType] := atoi(sect[armorType]);
end
end
npcMap[atoi(sect.PID)] := npc;
i += 1;
sect := get_ini_section(modIni, ""+i);
end
end
end
Binary file not shown.
+55
View File
@@ -0,0 +1,55 @@
/*
NPC Combat Control
Allows to take control of your party member or other NPCs during combat
NOTE: this script requires compiler from sfall modderspack with -s option
(short circuit evaluation)
version 1.0
*/
#include "..\headers\define.h"
#include "main.h"
variable
configSection := "CombatControl",
controlMode,
pidList,
hasGeckoSkinning := false;
procedure combatturn_handler begin
variable
status := get_sfall_arg,
critter := get_sfall_arg,
arg3 := get_sfall_arg,
pid;
// display_msg("Combat Turn: " + status + ", by " + obj_name(critter) + ", arg3: " + arg3);
pid := obj_pid(critter);
if (status == 1
and (len_array(pidList) == 0 or scan_array(pidList, pid bwand 0xFFFFFF) != -1)
and (controlMode == 1 or party_member_obj(pid))) then begin
set_dude_obj(critter);
if hasGeckoSkinning then critter_add_trait(critter, TRAIT_PERK, PERK_gecko_skinning_perk, 1);
end else begin
set_dude_obj(real_dude_obj);
end
end
procedure start begin
if game_loaded and (sfall_ver_major >= 4) then begin
controlMode := GetConfig("CombatControl", "Mode", 0);
if (controlMode > 2) then controlMode := 0;
if (controlMode > 0) then begin
pidList := GetConfigListInt("CombatControl", "PIDList");
fix_array(pidList);
if has_trait(TRAIT_PERK, dude_obj, PERK_gecko_skinning_perk) then hasGeckoSkinning := true;
register_hook_proc(HOOK_COMBATTURN, combatturn_handler);
end
end
end
+57
View File
@@ -0,0 +1,57 @@
#include "..\scripting\headers\sfall.h"
#include "..\scripting\headers\define_lite.h"
#include "..\scripting\headers\define_extra.h"
#include "..\scripting\headers\lib.arrays.h"
#include "..\scripting\headers\lib.strings.h"
// #include "..\scripting\headers\lib.inven.h"
variable ini := "sfall-mods.ini";
variable translationIni;
// Gets the integer value from ddraw.ini
procedure GetConfig(variable section, variable key, variable def) begin
variable val := get_ini_setting(ini + "|" + section + "|" + key);
if val == -1 then val := def;
return val;
end
// Gets the string value from ddraw.ini
procedure GetConfigStr(variable section, variable key, variable def) begin
variable val := get_ini_string(ini + "|" + section + "|" + key);
if val == -1 or val == "" then val := def;
return val;
end
// Gets the value from ddraw.ini as a temp array of strings
procedure GetConfigList(variable section, variable key) begin
variable val := get_ini_string(ini + "|" + section + "|" + key);
if val == -1 or val == "" then return [];
return string_split(val, ",");
end
// Gets the value from ddraw.ini as a temp array of ints
procedure GetConfigListInt(variable section, variable key) begin
variable arr, i, item;
arr := GetConfigList(section, key);
for (i := 0; i < len_array(arr); i++) begin
arr[i] := atoi(arr[i]);
end
return arr;
end
// Translates given string using Translations.ini
procedure Translate(variable id, variable def) begin
variable str := get_ini_string(translationIni + "|Sfall|" + id);
if not str or (strlen(str) == 0) then begin
str := def;
end
return str;
end
procedure InitConfigs begin
translationIni := GetConfigStr("Main", "TranslationsINI", "./Translations.ini");
end
+2
View File
@@ -0,0 +1,2 @@
To install each mod, copy *.int file into your <Fallout Dir>\data\scripts\ folder.
For gl_npcarmor.int, you also need to copy npcarmor.ini to your Fallout directory.
@@ -39,6 +39,32 @@
#define ATKMODE_SEC_BURST 112 // 0x00000070
#define ATKMODE_SEC_FLAME 128 // 0x00000080
/* Object flags for get/set_flags */
#define FLAG_MOUSE_3D (0x1)
#define FLAG_WALKTHRU (0x4)
#define FLAG_FLAT (0x8)
#define FLAG_NOBLOCK (0x10)
#define FLAG_LIGHTING (0x20)
#define FLAG_TEMP (0x400)
#define FLAG_MULTIHEX (0x800)
#define FLAG_NOHIGHLIGHT (0x1000)
#define FLAG_USED (0x2000)
#define FLAG_TRANSRED (0x4000)
#define FLAG_TRANSNONE (0x8000)
#define FLAG_TRANSWALL (0x10000)
#define FLAG_TRANSGLASS (0x20000)
#define FLAG_TRANSSTEAM (0x40000)
#define FLAG_TRANSENERGY (0x80000)
#define FLAG_LEFT_HAND (0x1000000)
#define FLAG_RIGHT_HAND (0x2000000)
#define FLAG_WORN (0x4000000)
#define FLAG_HIDDENITEM (0x8000000)
#define FLAG_WALLTRANSEND (0x10000000)
#define FLAG_LIGHTTHRU (0x20000000)
#define FLAG_SEEN (0x40000000)
#define FLAG_SHOOTTHRU (0x80000000)
/* Critter Flags */
#define CFLG_BARTER 2 // 0x00000002 - Barter (can trade with)
#define CFLG_NOSTEAL 32 // 0x00000020 - Steal (cannot steal from)
+50 -15
View File
@@ -1,19 +1,23 @@
//Recognised modes for set_shader_mode and get_game_mode
#define WORLDMAP (0x1)
#define LOCALMAP (0x2) //No point hooking this: would always be 1 at any point at which scripts are running
#define DIALOG (0x4)
#define ESCMENU (0x8)
#define SAVEGAME (0x10)
#define LOADGAME (0x20)
#define COMBAT (0x40)
#define OPTIONS (0x80)
#define HELP (0x100)
#define CHARSCREEN (0x200)
#define PIPBOY (0x400)
#define PCOMBAT (0x800)
#define INVENTORY (0x1000)
#define AUTOMAP (0x2000)
#define SKILLDEX (0x4000)
#define WORLDMAP (0x1)
#define LOCALMAP (0x2) //No point hooking this: would always be 1 at any point at which scripts are running
#define DIALOG (0x4)
#define ESCMENU (0x8)
#define SAVEGAME (0x10)
#define LOADGAME (0x20)
#define COMBAT (0x40)
#define OPTIONS (0x80)
#define HELP (0x100)
#define CHARSCREEN (0x200)
#define PIPBOY (0x400)
#define PCOMBAT (0x800)
#define INVENTORY (0x1000)
#define AUTOMAP (0x2000)
#define SKILLDEX (0x4000)
#define INTFACEUSE (0x8000)
#define INTFACELOOT (0x10000)
#define BARTER (0x20000)
#define HEROWIN (0x40000)
//Valid arguments to register_hook
#define HOOK_TOHIT (0)
@@ -42,6 +46,9 @@
#define HOOK_WITHINPERCEPTION (23)
#define HOOK_INVENTORYMOVE (24)
#define HOOK_INVENWIELD (25)
#define HOOK_ADJUSTFID (26)
#define HOOK_COMBATTURN (27)
#define HOOK_CARTRAVEL (28)
//Valid arguments to list_begin
#define LIST_CRITTERS (0)
@@ -158,6 +165,19 @@
#define GAME_MSG_PRO_TILE (0x1004)
#define GAME_MSG_PRO_MISC (0x1005)
#define OUTLINE_NONE (0)
#define OUTLINE_RED_GLOW (0x01)
#define OUTLINE_RED (0x02)
#define OUTLINE_GREY (0x04)
#define OUTLINE_GREEN_GLOW (0x08)
#define OUTLINE_YELLOW (0x10)
#define OUTLINE_DARK_YELLOW (0x20)
#define OUTLINE_PURPLE (0x40)
#define CURSOR_MOVEMENT (0)
#define CURSOR_COMMAND (1)
#define CURSOR_TARGETING (2)
#define mstr_combat(x) (message_str_game(GAME_MSG_COMBAT, x))
#define mstr_ai(x) (message_str_game(GAME_MSG_AI, x))
#define mstr_scrname(x) (message_str_game(GAME_MSG_SCRNAME, x))
@@ -189,10 +209,25 @@
#define party_member_list_all party_member_list(1)
#define car_gas_amount sfall_func0("car_gas_amount")
#define critter_inven_obj2(obj, type) sfall_func2("critter_inven_obj2", obj, type)
#define exec_map_update_scripts sfall_func0("exec_map_update_scripts")
#define get_cursor_mode sfall_func0("get_cursor_mode")
#define get_flags(obj) sfall_func1("get_flags", obj)
#define get_ini_section(file, sect) sfall_func2("get_ini_section", file, sect)
#define get_ini_sections(file) sfall_func1("get_ini_sections", file)
#define get_outline(obj) sfall_func1("get_outline", obj)
#define intface_hide sfall_func0("intface_hide")
#define intface_is_hidden sfall_func0("intface_is_hidden")
#define intface_redraw sfall_func0("intface_redraw")
#define intface_show sfall_func0("intface_show")
#define item_weight(obj) sfall_func1("item_weight", obj)
#define outlined_object sfall_func0("outlined_object")
#define real_dude_obj sfall_func0("real_dude_obj")
#define set_car_intface_art(artIndex) sfall_func1("set_car_intface_art", artIndex)
#define set_cursor_mode(mode) sfall_func1("set_cursor_mode", mode)
#define set_dude_obj(critter) sfall_func1("set_dude_obj", critter)
#define set_flags(obj, flags) sfall_func2("set_flags", obj, flags)
#define set_outline(obj, color) sfall_func2("set_outline", obj, color)
#define spatial_radius(obj) sfall_func1("spatial_radius", obj)
#define tile_refresh_display sfall_func0("tile_refresh_display")
+37
View File
@@ -437,3 +437,40 @@ int arg3 - slot (INVEN_TYPE_*)
int arg4 - 1 when wielding, 0 when unwielding
int ret1 - overrides hard-coded handler (-1 - use engine handler, any other value - override) - NOT RECOMMENDED
-------------------------------------------
HOOK_ADJUSTFID (hs_adjustfid.int)
Runs after calculating character figure FID on the inventory screen, whenever the game decides that character appearance might change.
Also happens on other screens, like barter.
NOTE: FID has following format: 0x0ABBCDDD, where A is object type, BB - animation code (always 0 in this case), C - weapon code, DDD - FRM index in LST file.
int arg1 - the vanilla fid calculated by the engine according to critter base FID and armor/weapon being used
int ret1 - overrides the calculated FID with provided value
-------------------------------------------
HOOK_COMBATTURN (hs_combatturn.int)
Runs before and after each turn in combat (for both PC and NPC).
int arg1 - event type: 1 - start of turn, 0 - normal end of turn, -1 - combat ended abruptly (by script or by pressing Enter during PC turn)
int arg2 - critter doing the turn
int arg3 - unknown boolean argument
int ret1 - pass 1 at the start of turn to skip the turn, pass -1 at the end of turn to force end of combat
-------------------------------------------
HOOK_CARTRAVEL (hs_cartravel.int)
Runs continously during worldmap travel on car.
int arg1 - vanilla car speed (between 3 and 8 "steps")
int arg2 - vanilla fuel consumption (100 and below)
int ret1 - car speed override (pass -1 if you just want to override fuel consumption)
int ret2 - fuel consumption override
@@ -372,6 +372,59 @@ Some utility/math functions are available:
> void sfall_func0("exec_map_update_scripts")
- executes map_update_p_proc for all objects on map and global/hook scripts as well
> int sfall_func1("item_weight", object)
- gets the current weight of an object
> int sfall_func1("get_outline", object)
- gets the current outline color for an object
> void sfall_func2("set_outline", object, int color)
- sets the outline color of an object
- 0 means or any value above 0x00FFFFFF disables the outline
- call "tile_refresh_display" after changing outline of objects to properly redraw the scene
> int sfall_func1("get_flags", object)
- gets the current value of object flags (see define_extra.h for available flags)
> void sfall_func2("set_flags", object, int flags)
- sets the current flags of an object
- all flags are rewritten with given integer, so first get current flags with "get_flags" and use bwor/bwand to set/remove specific flag
> void sfall_func0("tile_refresh_display")
- redraws the game scene (tiles, walls, objects, etc.)
> object sfall_func0("outlined_object")
- returns an object that is currently highlighted by hovering the mouse above it
> object sfall_func1("set_dude_obj", critter)
- take control of a given critter
- passing 0 will reset control back to "real" dude
> void sfall_func0("real_dude_obj")
- returns the initial dude_obj after set_dude_obj was used
> array sfall_func1("get_ini_sections", string fileName)
- returns an array of names of all sections in a given INI file
> array sfall_func2("get_ini_section", string fileName, string section)
- returns an associative array of keys and values for a given INI file and section
> int sfall_func0("car_gas_amount")
- returns current amount of fuel in player's car (between 0 and 80000)
- to change fuel amount, use vanilla function: metarule(METARULE_GIVE_CAR_GAS, amount) - amount can be positive or negative
> void sfall_func1("set_car_intface_art", int artIndex)
- changes the interface art (index in LST file) for the car image on worldmap screen
- should be called before going to worldmap
- vanilla art index is 0x1B1
> int sfall_func0("get_cursor_mode")
- returns the current cursor mode (0 - movement cursor, 1 - command cursor, 2 - targeting cursor)
- mode 4 to 10 are Skilldex skills (yellow targeting cursor)
> void sfall_func1("set_cursor_mode", int mode)
- sets the current cursor mode
------------------------
------ MORE INFO -------
------------------------
-784
View File
File diff suppressed because it is too large Load Diff
-4
View File
@@ -1,4 +0,0 @@
void BarBoxesInit();
int _stdcall GetBox(int i);
void _stdcall AddBox(int i);
void _stdcall RemoveBox(int i);
-5
View File
@@ -1,5 +0,0 @@
#pragma once
extern DWORD WeightOnBody;
void BugsInit();

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