Compare commits

...
460 Commits
Author SHA1 Message Date
NovaRain ea921aabbd Merge branch 'develop' 2020-05-21 09:42:23 +08:00
NovaRain b263b69fa3 Renamed all script opcode handlers with op_ prefix
Renamed all metarule functions with mf_ prefix.
2020-05-20 11:30:25 +08:00
NovaRain 6bb56b0f95 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:48:46 +08:00
NovaRain 9a4f0c7505 Merge branch 'develop' 2020-05-11 09:35:28 +08:00
NovaRain c89a18522d Fixed ai_move_away_ engine function
Some minor fixes.
2020-05-10 09:56:11 +08:00
NovaRain c7ccb7f2c2 Edited the msg for SkipLoadingGameSettings a bit
Added a few more defines.
2020-05-08 10:44:37 +08:00
NovaRain b25ca683f3 Cosmetic changes to the code:
Use double underscore for stdcall and "asm" keyword.
2020-05-07 12:27:53 +08:00
NovaRain e28b3a5796 Minor code edits to Combat.cpp
Added some function defines.
2020-05-07 12:13:28 +08:00
NovaRain a9c74501df Added checking AP cost to ai_pick_hit_mode_ engine function 2020-05-07 09:47:57 +08:00
NovaRain b03b93d6fc 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:13:11 +08:00
NovaRain 1f696b9f12 Added internal implementation of engine functions with hooks:
* item_w_mp_cost_ with CALCAPCOST
* is_within_perception_ with WITHINPERCEPTION
2020-05-01 10:27:05 +08:00
NovaRain 3d2d1cdf2a Added combat rating check to "Snipe" distance preference fix 2020-05-01 08:00:49 +08:00
NovaRain 42347ac062 Added a fix to reduce friendly fire in burst attacks (experimental) 2020-04-30 16:01:57 +08:00
NovaRain 007b415740 Changed the priority of files in AutoSearchPath
* now they have higher priority than the PatchFileXX options.

Minor code edits/fixes.
2020-04-30 10:13:44 +08:00
NovaRain 35d2491bcb 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:55:56 +08:00
NovaRain ece76ee726 Changed the fix for AI target selection in commit f731de7
* NPCs will reload the weapon in the same turn (and attack if have
enough AP left) if weapon is empty while selecting targets.

Misc code edits.
2020-04-27 14:25:40 +08:00
NovaRain d6f4a23527 Fixed AllowDShowSound=2 not working
Limited NumSoundBuffers to the max of 32.
Fixed replacing Body_Torso with Body_Uncalled (from commit 7e31713)
Corrected the code in the previous commit.
2020-04-23 12:33:00 +08:00
NovaRain 045ad2f5d7 Added a tweak to the miss message in combat
* if the main target has Flat flag set, remove the message about hitting
another object.

Minor code edits to DebugEditor.cpp & MiscPatches.cpp.
2020-04-22 11:32:03 +08:00
NovaRain 13703f1a3b 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:54:35 +08:00
NovaRain 58bb77d79f Fixed GvarID option behavior in Drugs.ini
Reverted incorrect code change of SpeedPatch.cpp in previous commit.
Some code edits to Explosions.cpp and Perks.cpp.
2020-04-19 09:58:47 +08:00
NovaRain 229371e4ab 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.
* Changed for-loop with iterators to use pre-increment.
2020-04-18 21:19:22 +08:00
NovaRain 1884e279c7 Fixed ReloadWeaponKey for using any non-weapon item (#84) 2020-04-18 10:44:17 +08:00
NovaRain e81d79e43e Fixed "loot_obj" script function 2020-04-18 08:57:02 +08:00
NovaRain f731de7a25 Fixed AI target selection for no ammo or target out of range cases 2020-04-18 08:33:08 +08:00
NovaRain 0d6bc33279 Re-fixed automatically ending combat
Updated version number.
2020-04-18 07:28:00 +08:00
NovaRain 3377516f67 Merge branch 'develop' 2020-04-05 22:14:57 +08:00
NovaRain 359c79a854 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:19:31 +08:00
NovaRain 41652ec459 Moved static addresses into respective funcs in BugFixes & MiscPatches 2020-04-03 23:14:23 +08:00
NovaRain ca4e506f1d Some code correction in BugFixes
Minor edits to documents.
2020-04-03 12:16:09 +08:00
NovaRain 6e05ca65fd Some code/document edits 2020-04-02 11:32:22 +08:00
NovaRain 873d9f81c2 Edited the description of RadEffectsRemovalMsg option 2020-04-01 22:09:46 +08:00
NovaRain 0978769dfc Fixed loading savegame for "NPC turns into a container" bug fix
Added RadEffectsRemovalMsg option for radiation fixes.

Some code/document correction.
2020-03-31 21:51:41 +08:00
NovaRain 29608bb51c 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.
2020-03-30 21:06:11 +08:00
NovaRain ba911375a9 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 code to minimize its hook points to the engine.
Minor edits to ddraw.ini.
2020-03-26 14:06:46 +08:00
NovaRain ce5c65d37f 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:53:00 +08:00
NovaRain ffd397d9aa Added performance patches, some code moved to MiscPathes module
Minor edits to ddraw.ini.
2020-03-22 09:00:25 +08:00
NovaRain 349cffac0c Added a new "fullscreen windowed" DX9 mode
Added saving the position of the game window to ddraw.ini
2020-03-20 12:24:48 +08:00
NovaRain dfdcd86134 Refactored ASM code of script opcode handlers
Included call_offset_xx functions for AllowUnsafeScripting=2 (#288)
2020-03-19 12:55:01 +08:00
NovaRain accdeae6ad Added a new value to AllowUnsafeScripting
* for disabling the memory address check in unsafe functions (#288)
2020-03-17 13:26:02 +08:00
NovaRain 288a8fedfd Improved and fixed the playback of alternative sound files
Added a new mode to play_sfall_sound script function.

Minor code corrections.
2020-03-17 13:06:34 +08:00
NovaRain eb777e6d19 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:53:45 +08:00
NovaRain dd2469b78f Moved allowDShowSound code from Movies to Sound module 2020-03-12 10:03:43 +08:00
NovaRain 8d375dd81a Refactored ASM code of script handlers in Misc.cpp
Minor code edits.
2020-03-07 14:21:12 +08:00
NovaRain 7f087d1c30 Minor code edits to AI module 2020-02-29 18:58:38 +08:00
NovaRain e7e5da866a 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:36:30 +08:00
NovaRain ac0b0ef7ef Fixed Fill_W not uncovering all tiles to the left (#287) 2020-02-28 07:41:49 +08:00
NovaRain c2626de4fa 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:03 +08:00
NovaRain e4d395224a Minor code fix for Graphics.cpp
Added notes/correction to hookscripts.txt.
2020-02-22 15:49:13 +08:00
NovaRain 4487bbfeba Fixed the player's money not being displayed after barter (#286)
Restored TownMapHotkeysFix option.

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

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

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

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

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

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

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

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

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

Updated credits.

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

Tweaked the default settings for world map travel markers.

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

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

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

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

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

Updated version number and year.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Fixed the player name while controlling other critters.

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

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

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

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

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

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

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

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

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

* Changed AllowUnsafeScripting to not require sfall debugging mode.

* Changed NPCStage6Fix to be enabled by default.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Replaced calling db_dir_entry_ with db_access_ in some code.
2019-06-10 09:43:49 +08:00
NovaRain a64268a88a Fixed the position of the target maker for location circles.
Improved WorldMapInterface option, now the game won't crash when
WorldMap.frm is not found.
2019-06-09 11:33:04 +08:00
NovaRain fcd5e8475b Fixed the reserve movement fix in commit 02a3bbd.
* before the reserve movement didn't work correctly if the player has
free move AP (yellow, from Bonus Move) left.
2019-06-09 07:22:47 +08:00
NovaRain 808ba05a0b Added WorldMapInterface option to expand the world map interface.
Fixed the up/down button images in the world map interface.
Added loading sfall.dat resource file, which contains new WorldMap.frm
and AppHeroWin.frm.
2019-06-08 23:53:56 +08:00
NovaRain 02a3bbd536 Fixed anim_move_to_tile_ ignoring the distance argument.
* this also fixes the broken "reserve movement" feature.
2019-06-08 09:45:01 +08:00
NovaRain 137644aa72 Fixed a few bugs in WorldMapSlots option.
Updated version number.
2019-06-06 10:18:10 +08:00
NovaRain 250e7bef8a Merge branch 'develop' 2019-06-03 09:15:05 +08:00
NovaRain 229911336b Fixed a bug in knockback modifier functions that could crash the game (#237)
Updated version number.
Improved compatibility with older processors (pre-SSE2)
2019-06-03 09:14:45 +08:00
NovaRain e105b8c328 Merge branch 'develop' 2019-05-31 09:34:22 +08:00
NovaRain e5e2ef5ab0 Minor edit to gl_ammomod example script. 2019-05-31 09:10:36 +08:00
NovaRain 8778d1c695 Improved the fix for the removal of PM corpses.
* to prevent save file corruption (one of bugs listed in #228). Now
party member's corpse is removed in the same way as all other critter
corpses.

Simplified the ASM code of combat_ai_hack (take 2).
2019-05-30 10:30:25 +08:00
NovaRain 4ee20e06b4 Fixed the code for removal of party member's corpse when loading the map. 2019-05-29 09:35:38 +08:00
NovaRain aa5bd95dfe Fixed AI not checking min HP properly for using stims.
Edited the code of InventoryApCost in Inventory.cpp.
Minor edits to some other code.
2019-05-28 13:51:40 +08:00
NovaRain aa221adea3 Fix for fake perks related functions.
* now fake perks are no longer added to all controlled critters.

Added alternative functions that allow to add fake perks to party
member NPC.

Rewrote set_fake_perk/trait, set_selectable_perk, has_fake_perk/trait
functions in C++.
2019-05-27 12:01:09 +08:00
NovaRain 22cdc32d26 Simplified the ASM code of combat_ai_hack. 2019-05-24 20:00:07 +08:00
NovaRain fca3307bd9 Rewrote the fix to allow fleeing NPC to use drugs.
Code edits to Perks.cpp.
2019-05-24 10:35:50 +08:00
NovaRain 04d7f4aefa Removed LoadProtoMaxLimit option from ddraw.ini.
* now the proto limit is always handled by set_proto_data function when
needed, since the related issue was originally from using it to process
lots of protos at once.
2019-05-23 17:04:51 +08:00
NovaRain f5317ad5ee Rewrote NPC fleeing fix.
Removed DialogOptions9Lines option from ddraw.ini.
2019-05-22 10:41:37 +08:00
NovaRain 119b0afacd Fixed getting perks and traits of real_dude_obj while controlling other NPCs.
* When switching control to party members, their own table of perks is
copied into player's current perk table.

Fixed the position of the items in active item slots after ending the
NPC control (NPC's wielded weapon should always be in the right slot).
2019-05-22 10:32:43 +08:00
NovaRain 10a6b76d5b Increased the max text width of the info card in the char screen.
* the increased the width is according to the max width of one char in
font (uppercase A seems to be the widest with 8 px).
2019-05-20 11:25:42 +08:00
NovaRain 3a86f1d134 Added two fixes for NPC fleeing in combat.
* added fix to allow fleeing NPC to use drugs.
* fixed NPC stuck in fleeing mode when the hit chance of a target was
too low.
2019-05-19 15:38:54 +08:00
NovaRain 30ac2a9690 Slightly simplified the code of NPCStage6Fix.
Moved NPCsTryToSpendExtraAP to AI.cpp.
2019-05-19 08:15:45 +08:00
NovaRain 16a0ef3bdf Improved the fix in previous commit.
* now ignoring the inv capacity only happens in combat for preventing
AI inf loop. The vanilla behavior still applies outside of combat.
* added a correct message for NPC not being able to pick up an item.
2019-05-18 10:55:38 +08:00
NovaRain 58d5271d49 Fixed two item pickup issues for NPC.
* message for the player is displayed when the NPC cannot pick up item.
* if in combat, NPC will also be stuck in a loop of picking up item.

Fixed HideObjIsNullMsg option.
2019-05-17 09:55:09 +08:00
NovaRain 6a226aef34 Added a tweak to op_use_obj_on_obj_hack in BugFixes (from Mr.Stalin)
Minor edits to code/documents.
2019-05-14 07:16:23 +08:00
NovaRain 6ac9949feb Added "dropping item on the character portrait" event to HOOK_INVENTORYMOVE.
Rewrote get_ini_setting/string script functions in C++.
Rewrote Ray's combat_p_proc fix.
Minor code edits.
2019-05-13 11:29:24 +08:00
NovaRain d2cf728131 Refactored code in Tiles.cpp and EngineUtils.cpp.
Moved RegAnimCombatCheck code from ScriptExtender.cpp to Anims.cpp.
2019-05-11 09:56:58 +08:00
NovaRain a63ea24572 Added aspect ratio scaling to draw_image_scaled.
Rewrote create_message_window script function in C++.
2019-05-11 08:49:30 +08:00
NovaRain 4b221b5367 Improved the error handling for previous commit.
Reverted the change in Tiles.cpp from commit 4bc1a422c3.
2019-05-10 10:38:51 +08:00
NovaRain 02c2df50ac Added "draw_image" and "draw_image_scaled" script functions. 2019-05-09 22:22:02 +08:00
NovaRain 4bc1a422c3 Changed the names of FRM structures.
Added some functions for later use.
Fixed get FID type.
2019-05-09 10:11:26 +08:00
NovaRain 88cf6dcd32 Moved Test_ForceFloats to [Debugging] section.
* Since it's never mentioned anywhere, should be OK moving it before
the formal release.
2019-05-07 23:04:00 +08:00
NovaRain 943cd5d2dc Code edits on ScriptShaders & OpcodeContext.cpp.
Minor edits on some other code.
Added the missing Test_ForceFloats option to ddraw.ini.
2019-05-07 13:49:26 +08:00
NovaRain bc47c87583 Moved script shader functions code from Graphics.cpp to a separate module. 2019-05-05 10:53:50 +08:00
NovaRain 0f98591b77 Code refactoring in Arrays.cpp.
Added a new example mod gl_ammomod to modderspack.
2019-05-05 08:47:08 +08:00
NovaRain 42cf5ded97 Unset the read-only attribute for party member's .sav proto files 2019-05-02 14:23:02 +08:00
NovaRain edac0ba393 Fixed the issue with read-only party member base protos.
* the protos being placed in the proto\critters\ directory will cause
party member's stats reset after loading a saved game.
2019-05-01 20:56:35 +08:00
NovaRain 045926c860 Reordered the execution of functions before exiting the map
* partyMemberSaveProtos and queue_leaving_map are now called after
executing map_exit_p_proc procedure.

Replaced some obsolete implementation in ScriptExtender/Worldmap.
2019-05-01 09:45:51 +08:00
NovaRain c65e1ec6d3 Fixed the argument value of dialogue_reaction script function 2019-04-30 11:17:37 +08:00
NovaRain 6a38fd0794 Replaced opcode/metarule names in error messages
* before they are explicitly specified in text. Now the names are taken
from the opcode/metarule tables.
2019-04-30 10:09:34 +08:00
NovaRain f788246283 Reordered sfall modules to fix the issue #235
Unified the directory separator in documents.
Updated version number.
2019-04-30 06:45:22 +08:00
NovaRain 428ac62883 Merge branch 'develop' 2019-04-24 20:27:26 +08:00
NovaRain 1b1b85c3b4 Rewrote Force Encounter script function code.
Added two functions to Utils.cpp.
Minor edits to BugFixes.cpp and ddraw.ini.
2019-04-24 10:05:47 +08:00
NovaRain 28493432db Replaced ASM code in various opcodes with macros (from Mr.Stalin)
* The two macros are from sfall 3.x.
2019-04-23 11:38:21 +08:00
NovaRain 1d6150e341 Fixed the previous TalkingHeads.cpp commit.
* Now textures for all animation sets will be displayed correctly.

Some code edits to AI.cpp, MainMenu.cpp, Movies.cpp.
2019-04-22 10:37:34 +08:00
NovaRain 3798e5239d Fixed and improved Use32BitHeadGraphics option:
* Fixed the position of the talking head texture when the game res is
larger than 640x480.

* Added the support to use textures without the need of patching
talking head FRM files.

Fixed a bug in item highlighting that item keeps its outline if player
picked it up while holding the highlight key.
2019-04-20 22:49:02 +08:00
NovaRain 533020cd8b Renamed AmmoMod module to DamageMod. 2019-04-19 09:10:31 +08:00
NovaRain 69e3faeb7d Reverted some changes in previous commit.
* Now weapons with knockback modifiers applied still stack with others
in the inventory.

Rewrote the code of set/remove_*_knockback functions in C++.
2019-04-17 10:28:14 +08:00
NovaRain 4cdc028cb7 Further implementation of unique ID.
* weapons with knockback modifiers applied will have a special ID
(negative value) that work as a temporary UID for the current game
session.

Added checks on object types to functions in Combat module.
Added the second argument to set_unique_id script function.
2019-04-16 20:33:00 +08:00
NovaRain e92b8021c0 Fixed the start procedure not being called correctly
* If the required standard script procedure is missing, the procedure
above the start proc is called instead of the start (from Crafty)

Added a id reversion mechanism to remove_weapon_knockback.
2019-04-15 12:57:44 +08:00
NovaRain 601d25be97 Fixed adding fake perks to the player (#232) 2019-04-14 07:36:57 +08:00
NovaRain 7a2b7dee6a Added "picking up item" event to HOOK_INVENTORYMOVE.
Added "set_unique_id" script function.
2019-04-12 12:15:55 +08:00
NovaRain dcf0561653 Added new HOOK_SNEAK (from Mr.Stalin) 2019-04-10 17:13:00 +08:00
NovaRain 5c3f10db91 Edited/reorganized some code.
Updated proto offsets in define_extra.h.
2019-04-10 09:46:31 +08:00
NovaRain 3e49922898 Extended the number of simultaneously displayed notification boxes
(now it depends on on the resolution of the game.)
2019-04-09 11:03:17 +08:00
NovaRain 564202f225 Re-fixed CheckWeaponAmmoCost option. 2019-04-08 00:32:04 +08:00
NovaRain 143f6895a4 Fixed a bug in CheckWeaponAmmoCost (from Mr.Stalin)
It caused NPCs to not switch to other weapons when there is not enough
ammo to shoot.
Moved CheckWeaponAmmoCost code from Inventory.cpp to Combat.cpp.
Now the debug editor starts at the center of the screen.
Updated the previous fix in NPC combat control mod.
2019-04-07 10:59:02 +08:00
NovaRain d946850af4 Fixed the weapon duplication bug in NPC combat control mod. 2019-04-06 09:33:27 +08:00
NovaRain ae7245579e Fixed setting array values in the debug editor.
Some code corrections.
2019-04-06 08:24:49 +08:00
NovaRain 563fdddc7e Added setting array values for the debug editor. 2019-04-05 12:03:25 +08:00
NovaRain 06bbe3ceb5 Updates to sfall debug editor (part 1) 2019-04-05 09:17:43 +08:00
NovaRain 56083c3bc6 Updated sfall debug editor (from Mr.Stalin)
Formatted the code of sfall debug editor.
2019-04-04 10:22:02 +08:00
NovaRain dee0065863 Removed PipBoyAutomaps from ddraw.ini.
* By default nothing will change with the option enabled, because all
data is copied from the vanilla map list, and modders still need to add
the new 'automap' parameter to override the engine values to add/remove
areas in the automap list. Basically the option itself is redundant.
2019-04-03 22:01:53 +08:00
NovaRain 3614ee355f Added an option to add support for the new 'automap=yes/no' parameter to maps.txt (from Mr.Stalin)
Fixed "out of bounds" bug when printing the automap list.
2019-04-02 10:31:08 +08:00
NovaRain 7c05a0fea9 Fixed a duplicate obj_dude script being created when loading a saved game.
Added a fix to prevent the reserved object IDs of the player and party members from being generated for other objects.
Removed a redundant line in MiscPatches.cpp.
2019-03-31 22:50:48 +08:00
NovaRain dd87a83025 Added DisableSpecialMapIDs option (from Mr.Stalin)
Fixed the overflow of the automap tables when the number of maps in maps.txt is more than 160.
2019-03-30 11:07:16 +08:00
NovaRain da3fd5c671 Replaced the fix in the previous commit with a fix for unexplored areas being revealed on the automap when entering a map. 2019-03-28 12:01:41 +08:00
NovaRain acc51cae03 Fixed player's position when entering a map.
This also fixed the issue with getting player's position in the map_enter_p_proc procedure.
2019-03-27 20:07:40 +08:00
NovaRain 8332a2bba7 Fixed incorrect use of emplace_back() method for the vector.
Replaced some push_back() with emplace_back() method.
Changed BlockCall to use the long NOP.
2019-03-26 22:33:05 +08:00
NovaRain 2cfa20ed47 Implemented the critter individualization (from Mr.Stalin):
* each critter has its own independent base/bonus stats, separated from other critters sharing the same PID.
* get/set_critter_base/extra_stat script functions now only set stats for a specific critter.

Rewrote get/set_pc_base/extra_stat and get/set_critter_base/extra_stat script functions in C++.
Fixed the argument numbering in error messages when validating arguments.
Minor edits on some code.
Update solution files and version number.
2019-03-26 12:29:28 +08:00
NovaRain 9911eb5f01 Changed hero_select_win function to require an AppHeroWin.frm file in the art\intrface\ folder (from Mr.Stalin) 2019-03-25 20:55:39 +08:00
NovaRain 77f2542919 Merge branch 'develop' 2019-03-18 20:19:53 +08:00
NovaRain 18649329ec Added SpecialDeathGVAR option to override the global variable number for special death.
Minor fix for Stats.ini.
2019-03-17 10:35:12 +08:00
NovaRain aa91e9fad4 Fixed range for object ID.
Added checks for FID in NPC armor appearance mod.
Minor edits to documents.
2019-03-16 08:47:37 +08:00
NovaRain 1fd93ba13f Added CorpseDeleteTime option (from Mr.Stalin)
Fixed some code in Perks.cpp.
2019-03-15 19:17:37 +08:00
NovaRain 04eba05e53 Fixed the removal of party member's corpse (from Mr.Stalin)
Now items in party member's inventory are not removed along with the corpse.
2019-03-14 13:42:48 +08:00
NovaRain 3cef4784d3 Fixed critters not being healed over time when entering the map if 'dead_bodies_age=No' is set in maps.txt.
Added additional checks for the amounts to properly compare the effects of drugs.
2019-03-13 11:54:16 +08:00
NovaRain 656b4c5291 Tweaked the code of the fix in previous commit. 2019-03-13 00:08:10 +08:00
NovaRain 82a11d30b2 Fixed NPC stuck in a loop of reloading melee/unarmed weapons when out of ammo (from Mr.Stalin) 2019-03-12 11:45:18 +08:00
NovaRain 0f036b26ae Added support for extra perks to has_fake_perk/get_perk_available script functions.
Fixed broken get_perk_available script function.
Some code corrections for Perks.cpp.
2019-03-11 10:07:44 +08:00
NovaRain 967e642908 Added the ability to add extra non-scripted perks to the PerksFile (from Mr.Stalin)
Fixed some functionality for fake perks.
2019-03-10 11:55:41 +08:00
NovaRain 9eefb6e042 Fixed some issues in the previous commit.
* the game failed to start if there are more drug items than the specified "Count" number in Drugs.ini.
* setting vanilla drugs in Drugs.ini broke their NumEffects limit, even if it's not set (-1).
2019-03-09 07:45:56 +08:00
NovaRain f289723431 Added "set_drugs_data" script function (from Mr.Stalin)
Fixed vanilla drugs in Drugs.ini not getting loaded.
2019-03-08 21:37:36 +08:00
NovaRain 2d38b4bac1 Moved the list of active drug pids to sfallgv.sav.
Fixed item_d_load_subfix in the previous commit.
2019-03-06 09:30:24 +08:00
NovaRain 3934a804f4 Added new Drugs module and DrugsFile option (from Mr.Stalin)
Fixed a bug in the party control module with the 'addict' notification box not getting hidden after the addiction ends.
Removed DrugsSaveFix option, now the list of active drug pids will be saved to sfalldb.sav.
2019-03-05 12:36:38 +08:00
NovaRain ab03186a1d Fixed the screen not returning to the player when moving a controlled critter to another elevation of the map.
Added DrugSaveFix option to fix saving the active effects of drugs.
Refactored some code in BugFixes.cpp.
2019-03-04 15:27:00 +08:00
NovaRain 15d762deb0 Fixed the lighting of controlled critters in NPC combat control mod. 2019-03-03 11:48:42 +08:00
NovaRain d8bb5848f7 Fixed the return FID in NPC armor appearance mod. 2019-03-02 09:55:40 +08:00
NovaRain f84578e84b Added displaying the NPC's addictions in the character screen when controlled by the player (from Mr.Stalin)
Added "npc_engine_level_up" script function.
Moved the code of set_map_time_multi to Worldmap handler, and NPCAutoLevel to PartyControl module.
Removed validate_test example function from release builds.
2019-02-27 12:06:06 +08:00
NovaRain aa36d54b27 Fixed a crash bug when trying to use explosives if using a books ini file.
Fixed some bugs in BugFixes.cpp.
2019-02-25 23:48:54 +08:00
NovaRain 627c0df484 Added a new argument to REMOVEINVENOBJ hook (from Mr.Stalin)
Fixed inconsistent return value of get_npc_level.
2019-02-25 12:26:42 +08:00
NovaRain ae3d4fcb69 Expanded get/inc_npc_level functions to accept party member PIDs (from Mr.Stalin)
Some code correction in Skills.cpp.
2019-02-24 19:26:42 +08:00
NovaRain fb31357e3d Fixed incorrect skill point cost for negative skill levels when using a skills ini file (from Mr.Stalin) 2019-02-23 22:17:53 +08:00
NovaRain 1687e50729 Fixed the negative skill points of a skill not being taken into account when calculating the skill level (from Mr.Stalin, #202)
Fixed the return value of has_skill function for incorrect skill numbers.
2019-02-21 10:53:55 +08:00
NovaRain 36e3a2bd5f Updated NPC combat control mod to be able to automatically set the number for the notification box.
Updated item highlighting mod to also be disabled while in the barter screen.
2019-02-20 21:26:23 +08:00
NovaRain 99664dfa8a Fixed the reserved item FRM being displayed in the top-left corner when in the loot/barter screens. 2019-02-20 10:02:54 +08:00
NovaRain 0980967cee Changed the implementation of BarBoxes.cpp (from Mr.Stalin)
Added "add_iface_tag" script function.
2019-02-19 21:33:42 +08:00
NovaRain 8613a4fb8b Added ExtraPatches section to ddraw.ini for setting multiple custom paths for game files (from Mr.Stalin, #206)
Refactored some code of DataLoadOrderPatch to work with new ExtraPatches.
Removed MultiPatches from ddraw.ini, now it's always enabled.
Minor edits to MiscPatches.cpp and Arrays.cpp.
Updated version number.
2019-02-19 11:55:38 +08:00
NovaRain 6fdf3ac0b0 Merge branch 'develop' 2019-02-12 09:22:18 +08:00
NovaRain fe5a148d7f Moved DontDeleteProtos option from MiscPatches.cpp to DebugEditor.cpp.
Updated Auto Doors script mod from Mr.Stalin and ddraw.ini.
2019-02-11 13:58:21 +08:00
NovaRain d64b33a946 Minor edits to SpeedPatch and documents. 2019-02-10 09:53:03 +08:00
NovaRain 1294d27a96 Formatted code in Arrays.cpp and added checks for the integrity of sfallgv.sav when loading a saved game.
Fixed unregistering hook procedure.
2019-02-09 09:36:57 +08:00
NovaRain 41171bbb87 Fixed crash when saving the game with speed tweak enabled. 2019-02-09 08:08:34 +08:00
NovaRain 170322648e Reverted the change of DataType values in ScriptValue.h.
(reason: inefficiency)
2019-02-09 02:12:57 +08:00
NovaRain af531a3e1d Refactored and fixed SpeedPatch module (from Mr.Stalin) 2019-02-08 10:31:03 +08:00
NovaRain d13f33e2ff Refactored OpcodeContext/ScriptValue and some script function handlers (from Mr.Stalin) 2019-02-06 11:28:50 +08:00
NovaRain 0ed346380f Refactored error handling of saving/loading sfall data files. 2019-02-05 10:43:17 +08:00
NovaRain 664643d83c Rewrote ASM code of WorldMapFpsPatch functions.
(with fix for infinite loop of elapsed time)
2019-02-04 10:19:46 +08:00
NovaRain 89dbbb9238 Refactored code in Worldmap module (from Mr.Stalin)
Fixed TimeLimit option and removed the pointless value of -2 (now it's the same as -3).
Fixed the slow mouse cursor on the world map when WorldMapFPSPatch is enabled.
2019-02-03 00:57:00 +08:00
NovaRain 5daebd18d8 Added note on effect flags to CriticalOverrides.ini.
Minor edits to Criticals/Elevators.cpp.
2019-01-31 09:18:24 +08:00
NovaRain 4e38eab905 Removed some unnecessary memset code.
Minor code corrections.
2019-01-30 00:09:11 +08:00
NovaRain 7f8d805a9f Refactored code in the Books module.
Increased the maximum number of books in BooksFile to 50.
2019-01-29 06:32:12 +08:00
NovaRain 0e91aed2e2 Added HideObjIsNullMsg option to [Debugging].
Moved DebugEditor option from MiscPatches.cpp to DebugEditor.cpp.
2019-01-27 10:39:59 +08:00
NovaRain 3eba5c3054 Added two bug fixes for loading a game saved in combat mode (from Mr.Stalin) 2019-01-27 09:20:44 +08:00
NovaRain 80afdae7ba Fixed pickup_obj/drop_obj/use_obj script functions (from Mr.Stalin)
Fixed a crash when calling use_obj/use_obj_on_obj functions without using set_self in global scripts.
2019-01-25 00:30:34 +08:00
NovaRain 9db3c79c40 Added AttackComplexFix option (from Mr.Stalin) 2019-01-23 09:32:28 +08:00
NovaRain 274223a4ce Fixed bugs in attack_complex and critter_mod_skill script functions.
Minor edits to ScriptExtender.cpp.
2019-01-22 16:53:08 +08:00
NovaRain 7dbbb8230e Added error message when the name for sfall global variable is not equal to 8 characters.
Updated version number.
2019-01-21 11:24:54 +08:00
NovaRain a95f26a02d Fixed set_self function for use_obj_on_obj, attack, attack_complex vanilla functions (from Mr.Stalin) (#214) 2019-01-21 09:56:06 +08:00
NovaRain 46850a353b Corrected code in FileSystem.cpp (from Mr.Stalin)
Added fix for db_freadInt_ engine function from BugFixes.cpp when enabling UseFileSystemOverride.
2019-01-20 22:13:30 +08:00
NovaRain e379e71410 Added "art_cache_clear" script function. 2019-01-20 08:54:33 +08:00
NovaRain 774e31b9f6 Fixed and refactored code in FileSystem.cpp (from Mr.Stalin) 2019-01-20 00:18:32 +08:00
NovaRain 82f068c3e7 Refactored ASM code in FileSystem.cpp (from Mr.Stalin) 2019-01-17 10:06:04 +08:00
NovaRain 68e8ce8d41 Added support for integer values to abs() math function.
Minor code refactoring in Skills.cpp.
2019-01-16 11:07:56 +08:00
NovaRain a0437304a9 Merge branch 'develop' 2019-01-14 09:37:58 +08:00
NovaRain 34caa1cbbd Fixed a bug that broke the calculation of the skill point cost for increasing skill levels (#226)
Removed /Gw option from the release configuration.
Updated version number for hot fix.
2019-01-14 09:32:59 +08:00
NovaRain 924288a22c Merge branch 'develop' 2019-01-09 11:26:04 +08:00
NovaRain 11ae4f5078 Refactored ASM code in Sound.cpp (from Mr.Stalin)
Minor fix for "path_find_to" script function.
Implemented WRAP_WATCOM_FCALL# wrappers from Mr.Stalin.
Changed some code in Objects script handler for new wrapper functions.
Moved obj_under_cursor to Objects script handler.
Reformatted code in Karma.cpp/Worldmap.cpp.
Minor edits to documents.
2019-01-08 14:11:52 +08:00
NovaRain c1107e16a8 Expanded create/temp_array functions to allow creating a new "lookup" type of associative array (from Mr.Stalin) 2019-01-08 00:05:48 +08:00
NovaRain 49ef1aec9f Fixed a crash bug when using sorting functions on an associative array(map) (from Mr.Stalin)
Added support for sorting associative arrays by keys or values.
2019-01-06 11:37:02 +08:00
NovaRain 14d6d36172 Moved ModifiedIni to main.cpp. 2019-01-04 21:06:39 +08:00
NovaRain d2c8667c22 Refactored ASM code in KillCounter.cpp.
Fixed the broken ExtraKillTypes option.
Reformatted and tweaked code in Explosions.cpp.
2019-01-03 11:05:15 +08:00
NovaRain edbf777b63 Changed hs_inventorymove hook script to be triggered before displaying the 'Move Items' window for drag and drop ammo on weapons. 2019-01-03 00:28:59 +08:00
NovaRain 26c032379e Fixed stack in InventoryHs.cpp (from commit 7b92d0f939)
Refactored some ASM code in BurstMods.cpp, Inventory.cpp, Credits.cpp, AnimationsAtOnceLimit.cpp.
2019-01-01 10:24:51 +08:00
NovaRain 5a455ab942 Fixed input argument names in structure constructor for Combat/Perks/Skills modules. 2019-01-01 02:03:17 +08:00
NovaRain d89603e56d Improved the functionality of ElevatorsFile to allow to change the FRM images of the elevator panel and create new elevator types (from Mr.Stalin) 2018-12-31 10:05:59 +08:00
NovaRain 7b92d0f939 Corrected/improved code of some hooks.
Changed critical table to be loaded before global scripts.
Updated version number and year.
2018-12-30 09:59:39 +08:00
NovaRain b89663174f Added new HOOK_SETLIGHTING (from Mr.Stalin) (#215) 2018-12-30 08:01:13 +08:00
NovaRain 267d8694c9 Added UseWalkDistance option (from Mr.Stalin) (#46) 2018-12-28 20:04:19 +08:00
NovaRain 641ae67a7a Added a fix to the following script functions to ensure they set the correct object: (from Mr.Stalin)
set_critter_burst_disable, set_critter_pickpocket_mod, set_critter_skill_mod, set_critter_hit_chance_mod, set_*_knockback
Added WeaponAnims info to npcarmor.ini.
2018-12-28 09:37:30 +08:00
NovaRain 5d483214e6 Refactored HeroAppearance.cpp (from Mr.Stalin) 2018-12-26 21:11:25 +08:00
NovaRain 62e6c41620 Refactored assembler code in Skills.cpp.
Moved PickpocketMod function from Combat.cpp to Skills.cpp module.
Refactored structs in Skills.cpp and Combat.cpp.
2018-12-26 10:20:22 +08:00
NovaRain 6cce07991e Added missing return values for HOOK_INVENWIELD.
Updated NPC armor appearance mod.
2018-12-25 09:28:30 +08:00
NovaRain 9813d4ae74 Added a fix to prevent sfall from loading global scripts with an extension that exceeds three characters (from Mr.Stalin)
Replaced some pushad/popad opcodes with the newly added pushadc/popadc ASM macros.
Renamed Knockback module to Combat.
2018-12-24 12:21:45 +08:00
NovaRain 10c557ad59 Refactored SafeWrite.cpp. 2018-12-19 07:19:34 +08:00
NovaRain a2a24918a6 Formatted code in HeroAppearance.cpp. 2018-12-18 07:50:22 +08:00
NovaRain ca5c383767 Minor code edits on main.cpp and Perks.cpp. 2018-12-17 09:25:09 +08:00
NovaRain ce338fa5d0 Added a procedure to search for alternative weapons to NPC armor appearance mod (#222) 2018-12-16 19:37:06 +08:00
NovaRain 48ac68b66f Refactored some modules in Perk.cpp. 2018-12-16 11:33:16 +08:00
NovaRain ecae724411 Added AlwaysFindScripts option to [Debugging].
Added log message for InjectAllGameHooks.
2018-12-16 09:04:30 +08:00
NovaRain f33f356b7a Fixed NPC armor appearance mod preventing other critters from using weapons due to incorrect return value in check_weapon_change() (#222) 2018-12-16 08:57:38 +08:00
NovaRain 651f23aa5b Simplified and formatted code in Perks.cpp (from Mr.Stalin)
Replaced some 'strcpy_s' usages to 'strncpy_s' in Perks.cpp.
2018-12-15 18:13:38 +08:00
NovaRain 68022f415a Merge branch 'develop' 2018-12-05 22:01:20 +08:00
NovaRain b0fe927bfb Added missing function handlers to Metarule.cpp.
Minor edits to hookscripts.txt.
2018-12-05 21:47:01 +08:00
NovaRain cedfce37be Changed AutoQuickSave to use the current selected page if AutoQuickSavePage is disabled. 2018-12-05 13:35:37 +08:00
NovaRain 4249006ba9 Added "get/set_object_data" and "get_object_ai_data" script functions (from Mr.Stalin)
Changed read_byte, read_short, read_int, and read_string functions to not require AllowUnsafeScripting.
2018-12-05 10:14:10 +08:00
NovaRain 65755911f4 Fixed a bug in the hero appearance mod that caused the player to disappear after saving the game when player's base FID is greater than 255.
Replaced old SafeWrite usages with corresponding Hook/MakeCall functions in HeroAppearance.cpp.
Prevented HOOK_SUBCOMBATDAMAGE from being injected w/o the script when setting InjectAllGameHooks=1.
2018-12-04 09:36:20 +08:00
NovaRain 5473b0e4d9 Corrected some hooks code for the previous fix commit (from Mr.Stalin) 2018-12-03 10:12:40 +08:00
NovaRain c1b6e35a3f Fixed the return values of a hook getting corrupted if another hook was called during the execution of the current hook (from Mr.Stalin)
Added a fix to prevent hook scripts from being executed when the depth limit is exceeded, or the hook is called recursively.
2018-12-01 22:09:18 +08:00
NovaRain db2c366376 Added a fix for unable to sell/give items to the other in barter screen when the player/party member is overloaded (from Mr.Stalin)
Added a variant of MakeCall/Jump with 3 arguments to replace some SafeWrite 0x90 code for trailing NOPs.
2018-11-30 11:25:11 +08:00
NovaRain 17be216a11 Fixed the previous commit, forgot to remove the obsoleted line in win_debug_hook(). 2018-11-29 10:04:52 +08:00
NovaRain 770aca0cd2 Changed some MakeJump usages to MakeCall in Stats.cpp, Knockback.cpp, and MiscPatches.cpp.
(see Mr.Stalin's comments in commit c990b6701d)
2018-11-29 09:50:40 +08:00
NovaRain c990b6701d Refactored the code in Knockback.cpp. 2018-11-28 14:41:28 +08:00
NovaRain 3da7c2d0a6 Changed the implementation in commit c220e133a2 (with bug fix for HOOK_SETGLOBALVAR, #220) 2018-11-28 09:59:14 +08:00
NovaRain 0a8c5d704c Added missing CombatHs.cpp/.h for the previous commit. 2018-11-27 17:20:18 +08:00
NovaRain 922cdefce6 Added new HOOK_SUBCOMBATDAMAGE and refactored damage formulas code in AmmoMod.cpp (from Mr.Stalin) 2018-11-27 12:27:48 +08:00
NovaRain 180e743d31 Added an option to fix AI not checking chem_primary_desire setting in AI.txt for drug use preference (from Mr.Stalin, #219) 2018-11-25 23:58:13 +08:00
NovaRain 950f6b8a1c Changed sfall to only search for global scripts in folders at the game start instead of every time the game loads. 2018-11-22 20:38:54 +08:00
NovaRain b3a4f2c19e Reorganized and fixed the order of loading global scripts from multiple paths (from Mr.Stalin) 2018-11-21 10:52:12 +08:00
NovaRain 8dbe5921ba Merged two Glovz's fix functions and reorganized Glovz's/YAAM code layout a bit.
(in preparing for larger code refactoring in AmmoMod.cpp)
Fixed a bug in Stats.cpp that caused critical hits to ignore critical table roll value and only have the lowest level effect.
Minor edits to MainMenu.cpp.
2018-11-20 23:39:33 +08:00
NovaRain c220e133a2 Don't execute hook code for HOOK_ADJUSTFID/KEYPRESS/MOUSECLICK/GAMEMODECHANGE/SETGLOBALVAR when their scripts are not loaded (from Mr.Stalin) 2018-11-20 11:03:09 +08:00
NovaRain d8bdf785d5 Minor code correction in MainLoopHook.cpp.
Minor edits to document.
Updated version number.
2018-11-20 07:20:44 +08:00
NovaRain d569666447 Fixed the missing return value of -1 for HOOK_USEOBJON. 2018-11-16 06:33:30 +08:00
NovaRain 31b36f0c69 Fixed unable to click the pop-up message box when death from radiation was triggered during resting. 2018-11-14 07:11:00 +08:00
NovaRain ab7be3501a Simplified ASM code for process_rads_hook() in BugFixes.cpp.
Added missing initialization to ScriptExtender.h (Closes #217)
2018-11-13 21:19:28 +08:00
NovaRain 043c90f71e Added a pop-up message box for death from radiation sickness message. 2018-11-13 12:52:07 +08:00
NovaRain 5146b46da3 Fixed determine_to_hit_func_ engine function taking distance into account when called from determine_to_hit_no_range_ (from Mr.Stalin) 2018-11-12 13:12:22 +08:00
NovaRain 95f2bbfc1f Removed redundant stat_level() in Skills.cpp. 2018-11-10 10:18:59 +08:00
NovaRain 8d8522d227 Refactored the code of Stats.cpp. 2018-11-09 23:49:23 +08:00
NovaRain 5a03db932e Added an additional mode to SpeedInterfaceCounterAnims (from Mr.Stalin) 2018-11-09 12:29:07 +08:00
NovaRain 6e9a87b897 Removed the pop-up message box about not finding the original ddraw.dll, now the error is reported in the log file.
Added a note about setting a custom background for the character screen to the hero appearance mod.
2018-11-09 09:56:13 +08:00
NovaRain de055cd8ec Changed the implementation of HOOK_FINDTARGET so you don't have to specify all 4 targets to override normal sorting (from Mr.Stalin)
Added "loot_obj" script function.
2018-11-06 11:11:44 +08:00
NovaRain 4ae4d6dff0 Fixed broken return values in HOOK_FINDTARGET.
Changed the two arguments for obj_under_cursor to bool.
2018-11-04 09:06:31 +08:00
NovaRain 60054c9977 Added "obj_under_cursor" script function (#207) 2018-11-03 22:11:02 +08:00
NovaRain 3c9d5f7cb4 Changed PartyMemberExtraInfo to not show "Addict" text (in dark green) on the combat control panel if the party member is not addicted to drugs. 2018-11-02 22:48:17 +08:00
NovaRain f44db1730c Merge branch 'develop' 2018-11-01 19:28:08 +08:00
NovaRain fbdb9777c7 Updated NPC combat control mod to prevent Marcus and non-biped critters from equipping armor when controlled by the player. 2018-11-01 17:25:29 +08:00
NovaRain 0f1e648e1a Fixed isCheck argument (arg1) for HOOK_ONEXPLOSION hook (from Mr.Stalin)
Removed RemoveWindowRounding option because it doesn't affect anything.
2018-11-01 09:51:27 +08:00
NovaRain 7bd93af696 Adjusted the position of ExtraSaveSlots page buttons a bit. 2018-10-31 07:15:11 +08:00
NovaRain 6319017186 Added new HOOK_ONEXPLOSION and a new mode "set_explosion_max_targets" to metarule2_explosions (from Mr.Stalin) (#35) 2018-10-30 11:19:19 +08:00
NovaRain 29ad288f52 Fixed SwitchHandHook not being injected for controlled critters if there's no script using HOOK_INVENTORYMOVE. 2018-10-29 11:35:31 +08:00
NovaRain a10196e2ca Corrected the key overriding mechanism and removed unused vKey argument from KeyPressedDelegate (from Mr.Stalin)
Changed the debug editor to require sfall debugging mode.
Some minor code edits.
2018-10-29 11:04:51 +08:00
NovaRain 88779c10e0 Added a new return value to HOOK_KEYPRESS to override the pressed key (from Crafty) 2018-10-27 22:30:01 +08:00
NovaRain 919384bac7 Added a new setting to DebugMode to send debug output to both the screen and the debug log (from Crafty)
Simplified the code for ObjCanSeeObj_ShootThru_Fix a bit (from Mr.Stalin)
Changed sfall to not to create sfallfs.sav when UseFileSystemOverride is not enabled.
Updated item highlighting mod to be disabled while in the loot screen.
2018-10-27 09:43:12 +08:00
NovaRain a60f58c0eb Reverted some changes in the previous commit. 2018-10-26 06:46:24 +08:00
NovaRain 558e654dbf Replaced some __cdecl calling conventions to __fastcall.
(from Mr.Stalin - Reason: The compiler can use the arguments for its own purposes, which can spoil the stored value on the stack.)
Simplified the code for ObjCanSeeObj_ShootThru_Fix and added extra note to ddraw.ini (#208)
2018-10-25 11:16:39 +08:00
NovaRain 5ab389a51a Added new HOOK_USESKILLON and PartyMemberSkillFix option (#191) 2018-10-24 12:19:30 +08:00
NovaRain 3203152ca4 Added missing functions from the source library ddraw.dll to export from sfall (from Mr.Stalin)
Simplified the code in ExtraSaveSlots.cpp.
2018-10-23 11:45:38 +08:00
NovaRain 134dc03dc9 Added an option to skip loading game settings from a saved game (from Mr.Stalin)
Minor edits to ddraw.ini.
2018-10-20 09:53:16 +08:00
NovaRain 1ac8825b1b Fixed showing game movies and subtitles for DX9 mode when not using the hi-res patch, and added logging messages for DX9 mode (from Mr.Stalin)
Changed DisplayNPCExtraInfo to PartyMemberExtraInfo.
2018-10-19 10:27:00 +08:00
NovaRain 851e9b6d59 Added DisplayNPCExtraInfo option to ddraw.ini for commit bceb505024.
Changed some constant/variable names in Explosions.cpp.
2018-10-17 09:31:29 +08:00
NovaRain cbb6afac7c Updated NPC combat control mod to work with BoxBarCount.
Added additional notes to HOOK_COMBATDAMAGE in hookscripts.txt.
2018-10-16 22:18:35 +08:00
NovaRain bceb505024 Added displaying party member's current level & AC & addict flag info to the combat control panel (from Mr.Stalin)
Changed highlighting containers/corpses to be default on in sfall-mods.ini.
2018-10-16 10:05:25 +08:00
NovaRain 005684fa3b Added 3 new modes to metarule2_explosions and "item_make_explosive" script function (#169)
Simplified byte writing in some options (from Crafty)
Minor edits to Criticals.cpp.
Updated version number.
2018-10-14 21:05:15 +08:00
NovaRain 009a6cc21d Fixed the exploit that allows you to gain excessive skill points from Tag! perk before leaving the character screen (from Mr.Stalin)
Minor edits to documents.
2018-10-12 10:56:18 +08:00
NovaRain ee64d981fa Refactored BonusHtHDamageFix/DisplayBonusDamage code in AmmoMod.cpp (from Mr.Stalin)
Fixed DisplayBonusDamage not being applied on Melee Damage stat in the character screen when BonusHtHDamageFix is enabled.
2018-10-11 10:46:04 +08:00
NovaRain bb13dbd727 Added FastMoveFromContainer as the auxiliary option for ItemFastMoveKey (from Mr.Stalin)
Refactored the code of StackEmptyWeapons.
2018-10-10 17:52:05 +08:00
NovaRain e813188e67 Fixed "Heave Ho!" perk increasing strength stat above 10 when determining the max range of thrown weapons.
Moved SpecialUnarmedAttacksFix to BugFixes.cpp and simplified the code.
Added comments to old ApplyHeaveHoFix in Perks.cpp.
2018-10-10 12:19:06 +08:00
NovaRain 64a59211ba Changed implementation of StartGDialogFix, additionally fixed the game crash if calling start_gdialog function outside of talk_p_proc procedure for talking heads. 2018-10-10 09:14:41 +08:00
NovaRain 88f3622a5d Added "dialog_obj" script function. 2018-10-08 09:42:38 +08:00
NovaRain e6d958a83b Rewrote get/set_proto_data functions in C++ and added an auto-extend mechanism for proto loading limit (from Mr.Stalin)
Replaced ProtoProcessingLimit with LoadProtoMaxLimit option.
Added more definitions to define_extra.h and reformatted sfall.h a bit.
2018-10-07 10:30:59 +08:00
NovaRain 6796dc1012 Added sound effect to ExtraSaveSlots page buttons (from Mr.Stalin) 2018-10-06 22:58:36 +08:00
NovaRain 90149b4fb6 Fixed crash bug in the previous commit. 2018-10-04 23:30:39 +08:00
NovaRain 41a398cbf2 Refactored ASM code in ScriptExtender.cpp (from Mr.Stalin)
Simplified the code of NegateFix.
2018-10-04 22:58:10 +08:00
NovaRain 88cd177ebb Re-organized ScriptExtender.cpp:
* Moved SetAutoUnjamLockTime function to new Objects.cpp module.
* Move restore stats/perks to their respective modules.
* Move NegateFix to BugFixes.cpp.
2018-10-04 16:50:30 +08:00
NovaRain 569721381c Added ProtoProcessingLimit option to address some glitches with scripts that will process a large number of protos (#198) 2018-10-04 09:44:48 +08:00
230 changed files with 28485 additions and 16401 deletions
+95 -69
View File
@@ -24,16 +24,17 @@
/// </summary> /// </summary>
private void InitializeComponent() { private void InitializeComponent() {
this.dataGridView1 = new System.Windows.Forms.DataGridView(); this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.Column0 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.bGlobals = new System.Windows.Forms.Button(); this.bGlobals = new System.Windows.Forms.Button();
this.bMapVars = new System.Windows.Forms.Button(); this.bMapVars = new System.Windows.Forms.Button();
this.bCritters = new System.Windows.Forms.Button(); this.bCritters = new System.Windows.Forms.Button();
this.bSGlobals = new System.Windows.Forms.Button(); this.bSGlobals = new System.Windows.Forms.Button();
this.bArrays = new System.Windows.Forms.Button(); this.bArrays = new System.Windows.Forms.Button();
this.Column0 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.bEdit = new System.Windows.Forms.Button(); this.bEdit = new System.Windows.Forms.Button();
this.bCrittersLvar = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
@@ -41,84 +42,38 @@
// //
this.dataGridView1.AllowUserToAddRows = false; this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false; this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.dataGridView1.AllowUserToResizeRows = false;
| System.Windows.Forms.AnchorStyles.Left) this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Left)
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.ColumnHeadersHeight = 22;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column0, this.Column0,
this.Column1, this.Column1,
this.Column2, this.Column2,
this.Column3}); this.Column3});
this.dataGridView1.Location = new System.Drawing.Point(12, 12); this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(444, 215); this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.Size = new System.Drawing.Size(561, 354);
this.dataGridView1.TabIndex = 0; this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit); this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
// this.dataGridView1.RowsAdded += new System.Windows.Forms.DataGridViewRowsAddedEventHandler(this.dataGridView1_RowsAdded);
// bGlobals
//
this.bGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bGlobals.Location = new System.Drawing.Point(12, 233);
this.bGlobals.Name = "bGlobals";
this.bGlobals.Size = new System.Drawing.Size(100, 23);
this.bGlobals.TabIndex = 1;
this.bGlobals.Text = "Globals";
this.bGlobals.UseVisualStyleBackColor = true;
this.bGlobals.Click += new System.EventHandler(this.bGlobals_Click);
//
// bMapVars
//
this.bMapVars.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bMapVars.Location = new System.Drawing.Point(118, 233);
this.bMapVars.Name = "bMapVars";
this.bMapVars.Size = new System.Drawing.Size(100, 23);
this.bMapVars.TabIndex = 2;
this.bMapVars.Text = "Map variables";
this.bMapVars.UseVisualStyleBackColor = true;
this.bMapVars.Click += new System.EventHandler(this.bMapVars_Click);
//
// bCritters
//
this.bCritters.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bCritters.Location = new System.Drawing.Point(118, 262);
this.bCritters.Name = "bCritters";
this.bCritters.Size = new System.Drawing.Size(100, 23);
this.bCritters.TabIndex = 3;
this.bCritters.Text = "Critters";
this.bCritters.UseVisualStyleBackColor = true;
this.bCritters.Click += new System.EventHandler(this.bCritters_Click);
//
// bSGlobals
//
this.bSGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bSGlobals.Location = new System.Drawing.Point(225, 233);
this.bSGlobals.Name = "bSGlobals";
this.bSGlobals.Size = new System.Drawing.Size(100, 23);
this.bSGlobals.TabIndex = 4;
this.bSGlobals.Text = "sfall globals";
this.bSGlobals.UseVisualStyleBackColor = true;
this.bSGlobals.Click += new System.EventHandler(this.bSGlobals_Click);
//
// bArrays
//
this.bArrays.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bArrays.Location = new System.Drawing.Point(12, 262);
this.bArrays.Name = "bArrays";
this.bArrays.Size = new System.Drawing.Size(100, 23);
this.bArrays.TabIndex = 5;
this.bArrays.Text = "sfall arrays";
this.bArrays.UseVisualStyleBackColor = true;
this.bArrays.Click += new System.EventHandler(this.bArrays_Click);
// //
// Column0 // Column0
// //
this.Column0.HeaderText = "ID"; this.Column0.HeaderText = "ID";
this.Column0.Name = "Column0"; this.Column0.Name = "Column0";
this.Column0.ReadOnly = true; this.Column0.ReadOnly = true;
this.Column0.Width = 50;
// //
// Column1 // Column1
// //
this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Column1.HeaderText = "Name"; this.Column1.HeaderText = "Name";
this.Column1.Name = "Column1"; this.Column1.Name = "Column1";
this.Column1.ReadOnly = true; this.Column1.ReadOnly = true;
@@ -133,10 +88,65 @@
this.Column3.HeaderText = "Value (Float)"; this.Column3.HeaderText = "Value (Float)";
this.Column3.Name = "Column3"; this.Column3.Name = "Column3";
// //
// bGlobals
//
this.bGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bGlobals.Location = new System.Drawing.Point(12, 372);
this.bGlobals.Name = "bGlobals";
this.bGlobals.Size = new System.Drawing.Size(100, 23);
this.bGlobals.TabIndex = 1;
this.bGlobals.Text = "Globals";
this.bGlobals.UseVisualStyleBackColor = true;
this.bGlobals.Click += new System.EventHandler(this.bGlobals_Click);
//
// bMapVars
//
this.bMapVars.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bMapVars.Location = new System.Drawing.Point(118, 372);
this.bMapVars.Name = "bMapVars";
this.bMapVars.Size = new System.Drawing.Size(100, 23);
this.bMapVars.TabIndex = 2;
this.bMapVars.Text = "Map variables";
this.bMapVars.UseVisualStyleBackColor = true;
this.bMapVars.Click += new System.EventHandler(this.bMapVars_Click);
//
// bCritters
//
this.bCritters.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bCritters.Location = new System.Drawing.Point(12, 401);
this.bCritters.Name = "bCritters";
this.bCritters.Size = new System.Drawing.Size(100, 23);
this.bCritters.TabIndex = 3;
this.bCritters.Text = "Critters";
this.bCritters.UseVisualStyleBackColor = true;
this.bCritters.Click += new System.EventHandler(this.bCritters_Click);
//
// bSGlobals
//
this.bSGlobals.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.bSGlobals.Location = new System.Drawing.Point(367, 372);
this.bSGlobals.Name = "bSGlobals";
this.bSGlobals.Size = new System.Drawing.Size(100, 23);
this.bSGlobals.TabIndex = 4;
this.bSGlobals.Text = "sfall globals";
this.bSGlobals.UseVisualStyleBackColor = true;
this.bSGlobals.Click += new System.EventHandler(this.bSGlobals_Click);
//
// bArrays
//
this.bArrays.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.bArrays.Location = new System.Drawing.Point(473, 372);
this.bArrays.Name = "bArrays";
this.bArrays.Size = new System.Drawing.Size(100, 23);
this.bArrays.TabIndex = 5;
this.bArrays.Text = "sfall arrays";
this.bArrays.UseVisualStyleBackColor = true;
this.bArrays.Click += new System.EventHandler(this.bArrays_Click);
//
// bEdit // bEdit
// //
this.bEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.bEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.bEdit.Location = new System.Drawing.Point(225, 262); this.bEdit.Location = new System.Drawing.Point(473, 401);
this.bEdit.Name = "bEdit"; this.bEdit.Name = "bEdit";
this.bEdit.Size = new System.Drawing.Size(100, 23); this.bEdit.Size = new System.Drawing.Size(100, 23);
this.bEdit.TabIndex = 6; this.bEdit.TabIndex = 6;
@@ -144,11 +154,24 @@
this.bEdit.UseVisualStyleBackColor = true; this.bEdit.UseVisualStyleBackColor = true;
this.bEdit.Click += new System.EventHandler(this.bEdit_Click); this.bEdit.Click += new System.EventHandler(this.bEdit_Click);
// //
// bCrittersLvar
//
this.bCrittersLvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bCrittersLvar.Enabled = false;
this.bCrittersLvar.Location = new System.Drawing.Point(118, 401);
this.bCrittersLvar.Name = "bCrittersLvar";
this.bCrittersLvar.Size = new System.Drawing.Size(100, 23);
this.bCrittersLvar.TabIndex = 7;
this.bCrittersLvar.Text = "Local variables";
this.bCrittersLvar.UseVisualStyleBackColor = true;
this.bCrittersLvar.Click += new System.EventHandler(this.bCrittersLvar_Click);
//
// DebugEditor // DebugEditor
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(468, 297); this.ClientSize = new System.Drawing.Size(585, 436);
this.Controls.Add(this.bCrittersLvar);
this.Controls.Add(this.bEdit); this.Controls.Add(this.bEdit);
this.Controls.Add(this.bArrays); this.Controls.Add(this.bArrays);
this.Controls.Add(this.bSGlobals); this.Controls.Add(this.bSGlobals);
@@ -156,8 +179,10 @@
this.Controls.Add(this.bMapVars); this.Controls.Add(this.bMapVars);
this.Controls.Add(this.bGlobals); this.Controls.Add(this.bGlobals);
this.Controls.Add(this.dataGridView1); this.Controls.Add(this.dataGridView1);
this.MinimumSize = new System.Drawing.Size(450, 300);
this.Name = "DebugEditor"; this.Name = "DebugEditor";
this.Text = "DebugEditor"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "sfall Debug Editor";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DebugEditor_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DebugEditor_FormClosing);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
@@ -172,11 +197,12 @@
private System.Windows.Forms.Button bCritters; private System.Windows.Forms.Button bCritters;
private System.Windows.Forms.Button bSGlobals; private System.Windows.Forms.Button bSGlobals;
private System.Windows.Forms.Button bArrays; private System.Windows.Forms.Button bArrays;
private System.Windows.Forms.Button bEdit;
private System.Windows.Forms.DataGridViewTextBoxColumn Column0; private System.Windows.Forms.DataGridViewTextBoxColumn Column0;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1; private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2; private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3; private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
private System.Windows.Forms.Button bEdit; private System.Windows.Forms.Button bCrittersLvar;
} }
} }
+225 -140
View File
File diff suppressed because it is too large Load Diff
+43 -33
View File
@@ -3,7 +3,9 @@ using System.Net.Sockets;
using System.IO; using System.IO;
namespace FalloutClient { namespace FalloutClient {
class EditorConnection {
class EditorConnection
{
private TcpClient client; private TcpClient client;
private NetworkStream stream; private NetworkStream stream;
private BinaryReader br; private BinaryReader br;
@@ -11,73 +13,81 @@ namespace FalloutClient {
public readonly int[] Globals; public readonly int[] Globals;
public readonly int[] MapVars; public readonly int[] MapVars;
public readonly uint[] Critters; public readonly uint[,] Critters;
public readonly ulong[] SGlobalKeys; public readonly ulong[] SGlobalKeys;
public readonly int[] sGlobals; public readonly int[] sGlobals;
public readonly uint[] Arrays; public readonly uint[] Arrays;
public readonly int[] ArrayLengths; public readonly int[] ArrayLengths;
public readonly int[] ArrayDataSizes; public readonly int[] ArrayFlag;
public readonly bool[] ArrayIsMap;
public EditorConnection() { public EditorConnection() {
System.Threading.Thread.Sleep(1000); System.Threading.Thread.Sleep(1000);
client=new TcpClient("127.0.0.1", 4245); client = new TcpClient("127.0.0.1", 4245);
stream=client.GetStream(); stream = client.GetStream();
br=new BinaryReader(stream); br = new BinaryReader(stream);
bw=new BinaryWriter(stream); bw = new BinaryWriter(stream);
Globals=new int[br.ReadInt32()]; Globals = new int[br.ReadInt32()];
MapVars=new int[br.ReadInt32()]; MapVars = new int[br.ReadInt32()];
SGlobalKeys=new ulong[br.ReadInt32()]; SGlobalKeys = new ulong[br.ReadInt32()];
sGlobals=new int[SGlobalKeys.Length]; sGlobals = new int[SGlobalKeys.Length];
Arrays=new uint[br.ReadInt32()]; Arrays = new uint[br.ReadInt32()];
ArrayLengths=new int[Arrays.Length]; ArrayLengths = new int[Arrays.Length];
ArrayDataSizes=new int[Arrays.Length]; ArrayFlag = new int[Arrays.Length];
Critters=new uint[br.ReadInt32()]; ArrayIsMap = new bool[Arrays.Length];
Critters = new uint[br.ReadInt32(), 2];
for(int i=0;i<Globals.Length;i++) Globals[i]=br.ReadInt32(); for (int i = 0; i < Globals.Length; i++) Globals[i] = br.ReadInt32();
for(int i=0;i<MapVars.Length;i++) MapVars[i]=br.ReadInt32(); for (int i = 0; i < MapVars.Length; i++) MapVars[i] = br.ReadInt32();
for(int i=0;i<sGlobals.Length;i++) { for (int i = 0; i < sGlobals.Length; i++) {
SGlobalKeys[i]=br.ReadUInt64(); SGlobalKeys[i] = br.ReadUInt64();
sGlobals[i]=br.ReadInt32(); sGlobals[i] = br.ReadInt32();
br.ReadInt32(); br.ReadInt32();
} }
for(int i=0;i<Arrays.Length;i++) { for (int i = 0; i < Arrays.Length; i++) {
Arrays[i]=br.ReadUInt32(); Arrays[i] = br.ReadUInt32();
ArrayLengths[i]=br.ReadInt32(); ArrayIsMap[i] = (br.ReadInt32() != 0);
ArrayDataSizes[i]=br.ReadInt32(); ArrayLengths[i] = br.ReadInt32();
ArrayFlag[i] = br.ReadInt32();
}
for (int i = 0; i < Critters.Length / 2; i++) {
Critters[i, 0] = br.ReadUInt32();
Critters[i, 1] = br.ReadUInt32();
} }
for(int i=0;i<Critters.Length;i++) Critters[i]=br.ReadUInt32();
} }
public void Close() { public void Close() {
stream.Close(); stream.Close();
client.Close(); client.Close();
stream=null; stream = null;
client=null; client = null;
} }
public void WriteDataType(DataTypeSend type) { public void WriteDataType(DataTypeSend type) {
stream.WriteByte((byte)type); stream.WriteByte((byte)type);
//bw.Write((byte)type); //bw.Write((byte)type);
} }
public void WriteByte(byte b) { bw.Write(b); } public void WriteByte(byte b) { bw.Write(b); }
public void WriteInt16(short value) { bw.Write(value); } public void WriteInt16(short value) { bw.Write(value); }
public void WriteInt(int value) { bw.Write(value); } public void WriteInt(int value) { bw.Write(value); }
public void WriteBytes(byte[] buf) { bw.Write(buf); } public void WriteBytes(byte[] buf) { bw.Write(buf); }
public void WriteBytes(byte[] buf, int start, int len) { public void WriteBytes(byte[] buf, int start, int len) {
bw.Write(buf, start, len); bw.Write(buf, start, len);
} }
public void Read(byte[] buffer) { public void Read(byte[] buffer) {
int upto=0; int upto = 0;
while(upto<buffer.Length) { while (upto < buffer.Length) {
upto+=stream.Read(buffer, upto, buffer.Length-upto); upto += stream.Read(buffer, upto, buffer.Length - upto);
} }
} }
public void Read(byte[] buffer, int offset, int length) { public void Read(byte[] buffer, int offset, int length) {
int upto=0; int upto = 0;
//System.Diagnostics.Debug.WriteLine("Read - offset: "+offset+" length: "+length); //System.Diagnostics.Debug.WriteLine("Read - offset: "+offset+" length: "+length);
while(upto<length) { while (upto < length) {
upto+=stream.Read(buffer, offset+upto, length-upto); upto += stream.Read(buffer, offset + upto, length - upto);
} }
} }
public int ReadByte() { public int ReadByte() {
+41 -11
View File
@@ -29,13 +29,14 @@
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.checkBox = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout(); this.SuspendLayout();
// //
// bSave // bSave
// //
this.bSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.bSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bSave.Location = new System.Drawing.Point(281, 265); this.bSave.Location = new System.Drawing.Point(12, 336);
this.bSave.Name = "bSave"; this.bSave.Name = "bSave";
this.bSave.Size = new System.Drawing.Size(75, 23); this.bSave.Size = new System.Drawing.Size(75, 23);
this.bSave.TabIndex = 0; this.bSave.TabIndex = 0;
@@ -46,7 +47,7 @@
// bCancel // bCancel
// //
this.bCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.bCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.bCancel.Location = new System.Drawing.Point(200, 265); this.bCancel.Location = new System.Drawing.Point(371, 336);
this.bCancel.Name = "bCancel"; this.bCancel.Name = "bCancel";
this.bCancel.Size = new System.Drawing.Size(75, 23); this.bCancel.Size = new System.Drawing.Size(75, 23);
this.bCancel.TabIndex = 1; this.bCancel.TabIndex = 1;
@@ -58,49 +59,77 @@
// //
this.dataGridView1.AllowUserToAddRows = false; this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false; this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.dataGridView1.AllowUserToResizeRows = false;
| System.Windows.Forms.AnchorStyles.Left) this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Left)
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.ColumnHeadersHeight = 22;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1, this.Column1,
this.Column2, this.Column2,
this.Column3}); this.Column3});
this.dataGridView1.Location = new System.Drawing.Point(12, 12); this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1"; this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(344, 247); this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect;
this.dataGridView1.Size = new System.Drawing.Size(434, 318);
this.dataGridView1.TabIndex = 2; this.dataGridView1.TabIndex = 2;
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit); this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
// //
// Column1 // Column1
// //
this.Column1.HeaderText = "Name"; this.Column1.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Column1.HeaderText = "Element";
this.Column1.Name = "Column1"; this.Column1.Name = "Column1";
this.Column1.ReadOnly = true; this.Column1.ReadOnly = true;
this.Column1.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
// //
// Column2 // Column2
// //
this.Column2.HeaderText = "Type"; this.Column2.HeaderText = "Type";
this.Column2.Name = "Column2"; this.Column2.Name = "Column2";
this.Column2.ReadOnly = true; this.Column2.ReadOnly = true;
this.Column2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column2.Width = 75;
// //
// Column3 // Column3
// //
this.Column3.HeaderText = "Value"; this.Column3.HeaderText = "Value";
this.Column3.Name = "Column3"; this.Column3.Name = "Column3";
this.Column3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.Column3.Width = 150;
//
// checkBox
//
this.checkBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.checkBox.AutoSize = true;
this.checkBox.Location = new System.Drawing.Point(103, 341);
this.checkBox.Name = "checkBox";
this.checkBox.Size = new System.Drawing.Size(91, 17);
this.checkBox.TabIndex = 3;
this.checkBox.Text = "Values in Hex";
this.checkBox.UseVisualStyleBackColor = true;
this.checkBox.Click += new System.EventHandler(this.checkBox_Click);
// //
// EditorWindow // EditorWindow
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(368, 300); this.ClientSize = new System.Drawing.Size(458, 371);
this.Controls.Add(this.checkBox);
this.Controls.Add(this.dataGridView1); this.Controls.Add(this.dataGridView1);
this.Controls.Add(this.bCancel); this.Controls.Add(this.bCancel);
this.Controls.Add(this.bSave); this.Controls.Add(this.bSave);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.MinimumSize = new System.Drawing.Size(300, 200);
this.Name = "EditorWindow"; this.Name = "EditorWindow";
this.Text = "EditorWindow"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Edit Values";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout();
} }
@@ -112,5 +141,6 @@
private System.Windows.Forms.DataGridViewTextBoxColumn Column1; private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2; private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3; private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
private System.Windows.Forms.CheckBox checkBox;
} }
} }
+90 -19
View File
@@ -3,32 +3,93 @@ using System.Collections.Generic;
using System.Windows.Forms; using System.Windows.Forms;
namespace FalloutClient { namespace FalloutClient {
public enum DataType : int { None=0, Int=1, Float=2, String=3 }
public partial class EditorWindow : Form {
private readonly DataType[] types;
private readonly string[] values;
private bool save;
private EditorWindow(string[] names, DataType[] types, string[] values) { public enum DataType : int { None = 0, Int = 1, Float = 2, String = 3 }
this.types=types;
this.values=values; public partial class EditorWindow : Form
{
private readonly DataType[] types = null;
private string[] values;
private bool save;
private static bool valueInHex = false;
private void ConvertValues(bool toHex) {
for (int i = 0; i < values.Length; i++) {
if (toHex) {
if (types == null || types[i] == DataType.Int) {
int val = int.Parse(values[i]);
values[i] = "0x" + val.ToString("x").ToUpper();
}
} else {
if (types == null || types[i] == DataType.Int) {
values[i] = Convert.ToInt32(values[i], 16).ToString();
}
}
}
}
private EditorWindow(string[] names, DataType[] types, string[] values, bool isMap) {
this.types = types;
this.values = values;
InitializeComponent(); InitializeComponent();
checkBox.Checked = EditorWindow.valueInHex;
dataGridView1.SuspendLayout(); dataGridView1.SuspendLayout();
if(names==null) for(int i=0;i<types.Length;i++) dataGridView1.Rows.Add(i.ToString(), types[i].ToString(), values[i]); if (valueInHex) ConvertValues(true);
else for(int i=0;i<types.Length;i++) dataGridView1.Rows.Add(names[i], types[i].ToString(), values[i]); if (names == null)
for (int i = 0; i < types.Length; i++) {
string element = i.ToString();
if (isMap && (i % 2) == 0) element += " - Key";
dataGridView1.Rows.Add(element, types[i].ToString(), values[i]);
}
else
for (int i = 0; i < types.Length; i++) dataGridView1.Rows.Add("[0x" + (i * 4).ToString("x").ToUpper() + "]" + names[i], types[i].ToString(), values[i]);
dataGridView1.ResumeLayout(); dataGridView1.ResumeLayout();
} }
public static string[] ShowEditor(string[] names, DataType[] types, string[] values) { public static string[] ShowEditor(DebugEditor form, string[] names, DataType[] types, string[] values, bool isMap = false) {
EditorWindow editor=new EditorWindow(names, types, values); EditorWindow editor = new EditorWindow(names, types, values, isMap);
editor.ShowDialog(); editor.ShowDialog();
if(editor.save) return editor.values; if (editor.save) {
else return null; if (valueInHex) editor.ConvertValues(false);
return editor.values;
}
return null;
}
private EditorWindow(string[] values) {
this.values = values;
InitializeComponent();
checkBox.Checked = EditorWindow.valueInHex;
dataGridView1.SuspendLayout();
if (valueInHex) ConvertValues(true);
for (int i = 0; i < values.Length; i++) {
dataGridView1.Rows.Add(i.ToString(), "Int", values[i]);
}
dataGridView1.ResumeLayout();
}
public static string[] ShowEditor(DebugEditor form, string[] lvalues) {
EditorWindow editor = new EditorWindow(lvalues);
editor.ShowDialog();
if (editor.save) {
if (valueInHex) editor.ConvertValues(false);
return editor.values;
}
return null;
} }
private bool CheckInput(DataType type, string str) { private bool CheckInput(DataType type, string str) {
switch(type) { switch (type) {
case DataType.Int: case DataType.Int:
if (valueInHex) {
try {
Convert.ToInt32(str, 16);
return true;
} catch (Exception) {
return false;
}
}
int i; int i;
return int.TryParse(str, out i); return int.TryParse(str, out i);
case DataType.Float: case DataType.Float:
@@ -39,9 +100,11 @@ namespace FalloutClient {
} }
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) { private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
string str=(string)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; string str = (string)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if(CheckInput(types[e.RowIndex], str)) values[e.RowIndex]=str; if (str != null && CheckInput(((types != null) ? types[e.RowIndex] : DataType.Int), str))
else dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=values[e.RowIndex]; values[e.RowIndex] = str;
else
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = values[e.RowIndex];
} }
private void bCancel_Click(object sender, EventArgs e) { private void bCancel_Click(object sender, EventArgs e) {
@@ -49,8 +112,16 @@ namespace FalloutClient {
} }
private void bSave_Click(object sender, EventArgs e) { private void bSave_Click(object sender, EventArgs e) {
save=true; save = true;
Close(); Close();
} }
private void checkBox_Click(object sender, EventArgs e) {
valueInHex = checkBox.Checked;
ConvertValues(valueInHex);
for (int i = 0; i < values.Length; i++) {
dataGridView1.Rows[i].Cells[2].Value = values[i];
}
}
} }
} }
+14 -6
View File
@@ -12,17 +12,25 @@ namespace FalloutClient {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
if(args.Length==1&&args[0]=="-debugedit") { if (args.Length == 1 && args[0] == "-debugedit") {
Application.Run(new DebugEditor(new EditorConnection())); Application.Run(new DebugEditor(new EditorConnection()));
} else { } else {
throw new Exception("Multiplayer is no longer supported"); MessageBox.Show("The debug editor can only be run from the game.",
"sfall Debug Editor", MessageBoxButtons.OK, MessageBoxIcon.Stop);
} }
} }
} }
enum DataTypeSend { enum DataTypeSend {
Mouse=0, LMouseDown=1, LMouseUp=2, RMouseDown=3, RMouseUp=4, TakeChar=5, ReleaseChar=6, SetGlobal = 0,
SetGlobal=0, SetMapVar=1, RetrieveCritter=2, SetCritter=3, SetSGlobal=4, GetArray=9, SetArray=10, SetMapVar = 1,
Exit=254 RetrieveCritter = 2,
} SetCritter = 3,
SetSGlobal = 4,
GetArray = 9,
SetArray = 10,
GetLocal = 11,
SetLocal = 12,
Exit = 254
}
} }
+5 -5
View File
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("FalloutClient")] [assembly: AssemblyTitle("sfall Debug Editor")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FalloutClient")] [assembly: AssemblyProduct("sfall")]
[assembly: AssemblyCopyright("Copyright © 2009")] [assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("4.1.9.0")]
[assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyFileVersion("4.1.9.0")]
@@ -16,6 +16,21 @@
<UpgradeBackupLocation> <UpgradeBackupLocation>
</UpgradeBackupLocation> </UpgradeBackupLocation>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>false</BootstrapperEnabled>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -33,6 +48,8 @@
<DefineConstants>TRACE</DefineConstants> <DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
@@ -62,6 +79,18 @@
<DependentUpon>EditorWindow.cs</DependentUpon> <DependentUpon>EditorWindow.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
@@ -71,6 +100,7 @@
</Target> </Target>
--> -->
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>copy "$(TargetPath)" "C:\Games\Fallout2\$(TargetName)$(TargetExt)"</PostBuildEvent> <PostBuildEvent>
</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010 # Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPClient", "MPClient.csproj", "{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SfallDebugEditor", "SfallDebugEditor.csproj", "{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
+4 -4
View File
@@ -1,8 +1,8 @@
# sfall # 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 - Better support for modern operating systems
- Externalizing many settings like starting map and game time, skills, perks, critical hit tables, books, etc. - Externalizing many settings like starting map and game time, skills, perks, critical hit tables, books, etc.
- Bug fixes - 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) - 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.
+6 -5
View File
@@ -14,17 +14,18 @@ Part_0=1 ; Tell sfall that we want to modify the head entries
[c_00_0] ; The entries for the head table of the men critter type. [c_00_0] ; The entries for the head table of the men critter type.
e0_DamageMultiplier=100 ;First level critical e0_DamageMultiplier=100 ;First level critical
e0_EffectFlags=0 e0_EffectFlags=0 ; The value of the flags (see DAM_* in Define.h)
; For multiple effects, use the sum of the flags (e.g. 2050 = knocked down + bypass armor)
e0_StatCheck=0 e0_StatCheck=0
e0_StatMod=0 e0_StatMod=0
e0_FailureEffect=0 e0_FailureEffect=0
e0_Message=0 ; This is an index into the msg file, not a string e0_Message=0 ; This is an index into the msg file, not a string
e0_FailMessage=0 e0_FailMessage=0
e1_... ; Second level critical ;e1_... ; Second level critical
... ; And so on up to the hardest hitting level 5 critical ;... ; And so on up to the hardest hitting level 5 critical
e5_... ;e5_...
;You can skip any entries from this section to leave them at their defaults ;You can skip any entries from this section to leave them at their defaults
;Any missing entries for critters 19-37 will be replaced by a 0, since they have no default ;Any missing entries for critters 19-37 will be replaced by a 0, since they have no default
;Note that the UOP fixes are included in the defaults, and do not need to be ;Note that the UOP fixes are included in the defaults, and do not need to be
; added manually when using this override format, as opposed to the old one ; added manually when using this override format, as opposed to the old one
+37
View File
@@ -0,0 +1,37 @@
; Allows you to configure advanced settings for drugs.
; Maximum 50 drugs are allowed
; Note: for vanilla drugs, you can only override the values of NumEffect and AddictTime parameters
[main]
; set to 1 to change Jet addiction to be removed after the time expires
JetWithdrawal=0
; total number of drugs in this file
Count=0
; count starts from 1
[1]
; drug item PID
PID=0
; set a limit on the count of first and second delayed effects when using the drug, i.e. if the queue has delayed effects from the drug,
; and their count is greater or equal to NumEffects, it is not possible to obtain new effects from using the drug
; e.g. this count is 4 for Buffout/Mentats/Psycho/Jet
; set -1 to leave this parameter unchanged
NumEffects=-1
; the duration of the addiction effect in game minutes (i.e. 1440 = 24 game hours)
; set to 0 to use the default time of 7 days (as all drugs except Jet)
AddictTime=0
; the number of the global variable from vault13.gam responsible for displaying addiction in the character screen
; if you set GvarID with numbers: 21-26, 295, 296, or variable numbers that have already been declared in previous sections,
; the TextID and FrmID options in this section will be ignored
; set to 0 if the addiction is not required
GvarID=0
; the index number from editor.msg to display the title of the addiction (the description uses the index number of TextID + 100)
TextID=-1
; the line number (0-indexed) of the corresponding FRM in skilldex.lst
FrmID=-1
+76 -5
View File
@@ -7,8 +7,32 @@
; have an additional NoHardcode option in this file which can ; have an additional NoHardcode option in this file which can
; be used to remove their hardcoded effects, and add new stat/skill effects ; be used to remove their hardcoded effects, and add new stat/skill effects
;Name=The name of the perk [PerksTweak]
;Desc=The description of the perk ;Change the penalty distance and distance bonus for 'Weapon Scope Range' weapon perk
;0 - no penalty, 8 - default penalty
WeaponScopeRangePenalty=8
;2 - no bonus, 5 - default bonus
WeaponScopeRangeBonus=5
;Changes the distance bonus for 'Weapon Long Range' weapon perk
;2 - no bonus, 4 - default bonus
WeaponLongRangeBonus=4
;Changes the hit chance bonus for 'Weapon Accurate' weapon perk
;0 - no bonus, 200 - maximum bonus, 20 - default bonus
WeaponAccurateBonus=20
;Changes the strength bonus for 'Weapon Handling' perk
;0 - no bonus, 10 - maximum bonus, 3 - default bonus
WeaponHandlingBonus=3
;##############################################################################
[Perks]
;Set to 1 to enable the modifications for perks
Enable=0
;Name=The name of the perk (max 63 characters)
;Desc=The description of the perk (max 255 characters)
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst ;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
;Ranks=The number of perk levels ;Ranks=The number of perk levels
;Level=The minimum required level ;Level=The minimum required level
@@ -35,10 +59,19 @@
;If the value is set to -99999, the variable will be ignored (similar to comment out that line) ;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
;This is a modification to perk 119 ;You can add simple extra perks with ID numbers from 119 to 255
[119] ; that do not require using scripting functions to change player stats, and can also be used for Armor perks
;These parameters are only for extra perks
;Stat1-Stat2 = same as Stat
;Stat1Mag-Stat2Mag = same as StatMag
;Skill3-Skill5 = The skill to be modified (or -1 for none)
;Skill3Mod-Skill5Mod = The increased/decreased value to the modified skill
;##############################################################################
;This is a modification to vanilla perk 0
[0]
Name=Example Name=Example
Desc=This is an example perk~Second line Desc=This is an example perk description
Image=72 Image=72
Ranks=1 Ranks=1
Level=1 Level=1
@@ -57,6 +90,44 @@ INT=0
AGL=0 AGL=0
LCK=0 LCK=0
;Example for creating extra perks
[119]
Name=Extra Perk
Desc=This perk can change player stats and skills
Image=72
Ranks=1
Level=2
Type=0
Stat=-1
StatMag=0
Skill1=-1
Skill1Mag=0
Skill2=-1
Skill2Mag=0
STR=0
PER=0
END=0
CHR=0
INT=0
AGL=0
LCK=0
; for extra perks only
Stat1=-1
Stat1Mag=0
Stat2=-1
Stat2Mag=0
Skill3=-1
Skill3Mod=0
Skill4=-1
Skill4Mod=0
Skill5=-1
Skill5Mod=0
;##############################################################################
[Traits]
;Set to 1 to enable the modifications for traits
Enable=0
;This is a modification to trait 0 ;This is a modification to trait 0
[t0] [t0]
NoHardcode=0 NoHardcode=0
+5 -1
View File
@@ -7,8 +7,12 @@ HighlightFail2=Your motion sensor is out of charge.
SuperStimExploitMsg=You cannot use a super stim on someone who is not injured! SuperStimExploitMsg=You cannot use a super stim on someone who is not injured!
BlockedCombat=You cannot enter combat at this time. BlockedCombat=You cannot enter combat at this time.
SaveSfallDataFail=ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again. SaveSfallDataFail=ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again.
PartyLvlMsg=Lvl:
PartyACMsg=AC:
PartyAddictMsg=Addict
NPCPickupFail=%s cannot pick up the item.
[AppearanceMod] [AppearanceMod]
RaceText=Race RaceText=Race
StyleText=Style StyleText=Style
MainButtonText=Appearance DoneBtn=Done
+6 -5
View File
@@ -1,12 +1,13 @@
; Allows to reassign books to different object PIDs, text messages. ; Allows to reassign books to different object PIDs, text messages, and skills.
; Maximum 30 books are allowed (25 if overrideVanilla is 0) ; Maximum 50 books are allowed
[main] [main]
; total number of books in this file ; total number of books in this file
count=5 count=1
; set to 1 to override all vanilla books, so you will have to define ALL books in this file; ; set to 1 to override all vanilla books, so you will have to define ALL the necessary books in this file;
; otherwise only new books are defined here ; otherwise only new books are defined here. To just override the text/skill of a vanilla book,
; specify its PID in the new book and set the parameters
overrideVanilla=0 overrideVanilla=0
; count starts from 1 ; count starts from 1
+24 -4
View File
@@ -1,11 +1,12 @@
;Controls the elevators ;Controls the elevators
;Image must match up with the image of an existing elevator ;Image must match up with the image of an existing elevator (can be overrided in sfall 4.1.4/3.8.14 or newer)
;Make sure you specify the correct number of exit targets ;Make sure you specify the correct number of exit targets
;The maximum number of elevators is currently capped at 50 ;The maximum number of elevators is currently capped at 50
;Use the line number (0-indexed) of the corresponding FRM in intrface.lst to set the appearance of the elevator
;Override elevator 0 ;Override elevator 0
[000] [0]
;This elevator uses the frm of the original forth elevator ;This elevator will use the settings of the original forth elevator
Image=4 Image=4
;Set up the first exit point ;Set up the first exit point
@@ -23,4 +24,23 @@ ID3=50
Elevation3=0 Elevation3=0
Tile3=12944 Tile3=12944
;No forth exit point ;No forth exit point
;Override FRM images of elevator 0. Set ButtonsFrm to -1 to use default buttons from MainFrm
MainFrm=143
ButtonsFrm=-1
;An example of a new elevator
[24]
;Set Image to 24 to create a new elevator type (0-23 are the original elevator types)
Image=24
;Set the number of buttons
ButtonCount=3
;Set the appearance of the elevator
MainFrm=148
ButtonsFrm=151
;Set up the exit points for all three buttons (see examples above)
@@ -0,0 +1,82 @@
;NPC armor appearance configuration for vanilla Fallout 2. Does not require any new graphics
;Party members will use player's armor appearance just like old B-Team mod
;WeaponAnims codes
; 1 - Knife (D)
; 2 - Club (E)
; 3 - Sledgehammer (F)
; 4 - Spear (G)
; 5 - Pistol (H)
; 6 - SMG (I)
; 7 - Rifle (J)
; 8 - Big Gun (K)
; 9 - Minigun (L)
; 10 - Rocket Launcher (M)
; 11-15 - sfall additional weapon animation codes
; This section maps 7 armor types to corresponding armor item PIDs
[ArmorTypes]
Jacket = 74,265
Leather = 1,379
Metal = 2,240,380
Power = 3,232
AdvPower = 348,349
Combat = 17,239,381
Robe = 113,524
; Default armor FIDs (the same for all NPCs)
[Default]
Jacket = 16777229
Leather = 16777228
Metal = 16777230
Combat = 16777226
Power = 16777217
AdvPower = 16777287
Robe = 16777218
; Sulik
[1]
PID=16777313
WeaponAnims=1,3,4,6
Default=16777280
; Vic
[2]
PID=16777278
WeaponAnims=1,5,7
Default=16777307
; Cassidy
[3]
PID=16777305
WeaponAnims=4,5,7
Default=16777260
Leather=16777260
; Myron
[4]
PID=16777376
WeaponAnims=1,5
Default=16777304
; Lenny
[5]
PID=16777323
WeaponAnims=1,5,6
Default=16777295
; Davin
[6]
PID=16777379
WeaponAnims=1,2,5
Default=16777264
; Miria
[7]
PID=16777380
WeaponAnims=1,6
Default=16777252
Jacket=16777222
Leather=16777221
Metal=16777223
Combat=16777219
+35 -25
View File
@@ -1,3 +1,15 @@
;WeaponAnims codes
; 1 - Knife (D)
; 2 - Club (E)
; 3 - Sledgehammer (F)
; 4 - Spear (G)
; 5 - Pistol (H)
; 6 - SMG (I)
; 7 - Rifle (J)
; 8 - Big Gun (K)
; 9 - Minigun (L)
; 10 - Rocket Launcher (M)
; 11-15 - sfall additional weapon animation codes
; This section maps 7 armor types to corresponding armor item PIDs ; This section maps 7 armor types to corresponding armor item PIDs
[ArmorTypes] [ArmorTypes]
@@ -11,69 +23,67 @@ Robe = 113,524
; Default armor FIDs (the same for all NPCs) ; Default armor FIDs (the same for all NPCs)
[Default] [Default]
Power=16777217 Power = 16777217
AdvPower=16777287 AdvPower = 16777287
Robe=16777218 Robe = 16777218
; Sulik ; Sulik
[1] [1]
PID=16777313 PID=16777313
WeaponAnims=1,3,4,6 WeaponAnims=1,3,4,6,14
Default=16777280 Default=16777280
Leather=16777325
Power=16777324
Metal=16777323
Jacket=16777321 Jacket=16777321
Leather=16777325
Metal=16777323
Combat=16777322 Combat=16777322
Power=16777324
; Vic ; Vic
[2] [2]
PID=16777278 PID=16777278
WeaponAnims=1,5,7 WeaponAnims=1,5,7,13,14
Default=16777307 Default=16777307
Jacket=16777329 Jacket=16777329
Combat=16777330
Metal=16777331
Power=16777332
Leather=16777333 Leather=16777333
Metal=16777331
Combat=16777330
Power=16777332
; Cassidy ; Cassidy
[3] [3]
PID=16777305 PID=16777305
WeaponAnims=4,5,7 WeaponAnims=4,5,7,13
Default=16777354 Default=16777354
Leather=16777260
Power=16777328
Metal=16777327
Jacket=16777351 Jacket=16777351
Leather=16777260
Metal=16777327
Combat=16777326 Combat=16777326
Power=16777328
; Myron ; Myron
[4] [4]
PID=16777376 PID=16777376
WeaponAnims=1,5 WeaponAnims=1,5,14
Default=16777304 Default=16777304
Leather=
Power=16777349
Combat=16777350 Combat=16777350
Power=16777349
; Cat Jules ; Cat Jules (RP)
[5] [5]
PID=16777734 PID=16777720
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Default=16777353 Default=16777353
Jacket=16777346
Leather=16777347 Leather=16777347
Metal=16777348 Metal=16777348
Jacket=16777346
Combat=16777226 Combat=16777226
; Kitsune ; Kitsune (RP)
[6] [6]
PID=16777724 PID=16777718
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
Default=16777222 Default=16777222
Jacket=16777222
Leather=16777221 Leather=16777221
Metal=16777223 Metal=16777223
Jacket=16777222
Combat=16777219 Combat=16777219
+7 -2
View File
@@ -5,10 +5,10 @@
Key=42 Key=42
; Set to 1 to also highlight containers ; Set to 1 to also highlight containers
Containers=0 Containers=1
; Set to 1 to also highlight lootable corpses ; Set to 1 to also highlight lootable corpses
Corpses=0 Corpses=1
; Set to 1 to only highlight objects in the player's line-of-sight ; Set to 1 to only highlight objects in the player's line-of-sight
CheckLOS=0 CheckLOS=0
@@ -39,8 +39,12 @@ MotionScanner=0
Mode=0 Mode=0
;PIDList=62,89,97,107,160,161 ;PIDList=62,89,97,107,160,161
;Set a comma delimited list of perk IDs for perks to be inherited from the player during the combat control
PerksList=0,73
;Choose a notification box to display the name of the controlled critter above the interface bar ;Choose a notification box to display the name of the controlled critter above the interface bar
;Must be between 5 and (4 + the value of BoxBarCount in ddraw.ini) ;Must be between 5 and (4 + the value of BoxBarCount in ddraw.ini)
;For sfall 4.1.6+ the number for the notification box is set automatically, so just use any value
;Set to 0 to disable ;Set to 0 to disable
DisplayName=0 DisplayName=0
@@ -52,4 +56,5 @@ DisplayName=0
;4 - dark yellow ;4 - dark yellow
;5 - blue ;5 - blue
;6 - purple ;6 - purple
;7 - dull pink
DisplayNameColor=0 DisplayNameColor=0
+280 -122
View File
File diff suppressed because it is too large Load Diff

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