Compare commits

..
365 Commits
Author SHA1 Message Date
NovaRain 6e74c3166a Refactored ASM code in Sound.cpp (from Mr.Stalin)
Minor fix for "path_find_to" script function.
Changed the two wrapper functions in ObjectsOps.hpp using dev branch as ref.
Changed some code in ObjectsOps.hpp for edited wrapper functions.
Moved obj_under_cursor to ObjectsOps.hpp.
Reformatted Karma/Worldmap related code in main.cpp as in dev branch.
2019-01-08 13:28:00 +08:00
NovaRain e320acce0b Expanded create/temp_array functions to allow creating a new "lookup" type of associative array (from Mr.Stalin) 2019-01-08 06:52:00 +08:00
NovaRain 4f48926105 Added support for sorting associative arrays by keys or values (from Mr.Stalin) 2019-01-07 15:13:22 +08:00
NovaRain 5611931063 Fixed a crash bug when using sorting functions on an associative array(map) (from Mr.Stalin) 2019-01-06 11:59:09 +08:00
NovaRain f00022fed6 Moved ModifiedIni to main.cpp. 2019-01-04 21:08:30 +08:00
NovaRain 78815425e2 Refactored ASM code in KillCounter.cpp.
Reformatted and tweaked code in Explosions.cpp.
2019-01-03 11:07:57 +08:00
NovaRain 9ddddcc120 Changed INVENTORYMOVE hook to be called before displaying the 'Move Items' window for drag and drop ammo on weapons. 2019-01-03 09:35:26 +08:00
NovaRain 11c15cec93 Refactored some ASM code in BurstMods.cpp, Inventory.cpp, Credits.cpp, AnimationsAtOnceLimit.cpp. 2019-01-01 10:27:40 +08:00
NovaRain f36bd6fb61 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:10:06 +08:00
NovaRain 26ab38c6c3 Changed critical table to be loaded before global scripts.
Removed redundant ClearGlobals() in LoadGameHook.cpp (already run in ResetState(1) above)
Updated version number and year.
2018-12-30 10:08:47 +08:00
NovaRain 9b50e6be1e Added UseWalkDistance option (from Mr.Stalin) (#46) 2018-12-28 20:06:55 +08:00
NovaRain 2427634ee8 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
2018-12-28 10:04:22 +08:00
NovaRain 36d1d0a5fc Refactored HeroAppearance.cpp (from Mr.Stalin) 2018-12-27 16:03:13 +08:00
NovaRain 486f00cdf4 Refactored assembler code in Skills.cpp. 2018-12-26 10:23:21 +08:00
NovaRain b6fd424665 Added missing return values for HOOK_INVENWIELD. 2018-12-25 10:02:39 +08:00
NovaRain 3d679db758 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 pushadc/popadc ASM macros.
2018-12-25 01:25:37 +08:00
NovaRain 92e1f919d9 Refactored SafeWrite.cpp. 2018-12-20 09:37:47 +08:00
NovaRain d259e8c903 Formatted code in HeroAppearance.cpp. 2018-12-18 07:54:19 +08:00
NovaRain dea0e596c3 Minor code edit on main.cpp. 2018-12-17 09:44:36 +08:00
NovaRain 90b39f3dde Replaced some values with constants in Perks.cpp. 2018-12-16 11:39:56 +08:00
NovaRain c80224f661 Simplified and reformatted code in Perks.cpp (from Mr.Stalin)
Replaced some 'strcpy_s' usages to 'strncpy_s' in Perks.cpp.
2018-12-15 18:55:40 +08:00
NovaRain d7d8de5e1a Added "get/set_object_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:17:26 +08:00
NovaRain 0a21e4abfa 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.
2018-12-04 09:45:55 +08:00
NovaRain 1340eeb0d3 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.
2018-12-03 20:43:03 +08:00
NovaRain a350fed4d1 Added a fix for unable to sell/give items 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:35:14 +08:00
NovaRain 402d4f40f2 Changed some MakeJump usages to MakeCall in Stats.cpp, Knockback.cpp, and main.cpp.
(see Mr.Stalin's comments in commit c990b6701d)
2018-11-29 09:56:41 +08:00
NovaRain 0f49c7f68d Refactored the code in Knockback.cpp.
Edited part of HookScripts.cpp (ref. commit 0a3745f8f5)
Minor edits to some code files.
2018-11-28 21:35:47 +08:00
NovaRain deb0299776 Added an option to fix AI not taking chem_primary_desire in AI.txt as drug use preference when using drugs in their inventory (from Mr.Stalin)
Minor edits to some code files.
2018-11-26 09:59:14 +08:00
NovaRain 4bb3fa0275 Merged two Glovz's fix functions and reorganized Glovz's/YAAM code layout a bit.
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:44:27 +08:00
NovaRain da31455cef Fixed missing AC/DR mod stats when examining ammo in barter screen.
Added an option to display full item description for weapon/ammo in barter screen.
Minor code correction in ScriptExtender.cpp.
Minor edits to document.
Updated version number.
2018-11-20 07:23:25 +08:00
NovaRain 4da10e2fdb Fixed the missing return value of -1 for HOOK_USEOBJON. 2018-11-16 06:34:47 +08:00
NovaRain 5426d043c1 Fixed unable to click the pop-up message box when death from radiation was triggered during resting. 2018-11-14 07:14:39 +08:00
NovaRain 719cec74d1 Added a fix to display a pop-up message box about death from radiation. 2018-11-13 21:37:48 +08:00
NovaRain 627fe11c29 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:14:07 +08:00
NovaRain dcca405b89 Added an additional mode to SpeedInterfaceCounterAnims (from Mr.Stalin)
Refactored the code of Stats.cpp.
Unified stat_level_ usages in Inventory.cpp, LoadGameHook.cpp and skills.cpp.
2018-11-10 10:08:08 +08:00
NovaRain cce9437d19 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 10:01:10 +08:00
NovaRain 09b3bf3aed Added DisplaySwiftLearnerExp option (from Crafty)
Minor edits to some documents/code.
2018-11-07 09:39:11 +08:00
NovaRain 08a891a0fc Added "obj_under_cursor" script function.
Backported some script functions from 4.0: lock_is_jammed, unjam_lock.
2018-11-04 09:14:02 +08:00
NovaRain e9df81ac78 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:49:14 +08:00
NovaRain 3e982be4b6 Removed RemoveWindowRounding option because it doesn't affect anything. 2018-11-01 09:54:37 +08:00
NovaRain 8a888f387d Adjusted the position of ExtraSaveSlots page buttons a bit. 2018-10-31 07:16:17 +08:00
NovaRain 712b4de5f7 Changed the debug editor to require sfall debugging mode.
Some minor code edits.
2018-10-29 11:14:30 +08:00
NovaRain a3b456cf0a Added a new return value to HOOK_KEYPRESS to override the pressed key (from Crafty)
Added check for map being loaded to KeyPress/MouseClick hooks.
2018-10-28 08:51:01 +08:00
NovaRain 9f689863d7 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 disabled.
2018-10-27 09:46:35 +08:00
NovaRain b5306406b3 Replaced some __cdecl calling conventions with __fastcall.
(from Mr.Stalin - Reason: The compiler can use the arguments for its own purposes, which can spoil the stored value on the stack.)
Added extra notes for some options to ddraw.ini.
2018-10-26 06:51:52 +08:00
NovaRain ce3b9c172c Minor edit to the fade patch. 2018-10-24 12:00:52 +08:00
NovaRain b8a77d77fb Added missing functions from the source library ddraw.dll to export from sfall (from Mr.Stalin)
Simplified the code in SuperSave.cpp.
Minor edits to ddraw.ini.
2018-10-23 11:50:55 +08:00
NovaRain a01da656c7 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 11:07:30 +08:00
NovaRain 5eda8dd7a0 Backported a new mode of metarule2_explosions from 4.0. 2018-10-17 22:30:07 +08:00
NovaRain c05babeda7 Added DisplayNPCExtraInfo option to ddraw.ini for previous commit. 2018-10-17 09:34:14 +08:00
NovaRain cc2b95d64e Added displaying party member's current level & AC & addict flag info to the combat control panel (from Mr.Stalin)
Added additional notes to HOOK_COMBATDAMAGE in hookscripts.txt (#204)
2018-10-16 10:14:32 +08:00
NovaRain fb62bd51b5 Simplified some byte writing in a few options. 2018-10-15 09:57:55 +08:00
NovaRain f4d7ccef40 Fixed typo in the previous commit. 2018-10-14 10:15:02 +08:00
NovaRain 85bb34377c Added missing argument validation to refactored fs_* opcodes.
Minor edits to Criticals.cpp.
2018-10-14 10:06:06 +08:00
NovaRain af24c6eae4 Fixed the exploit that allows you to gain excessive skill points from Tag! perk before leaving the character screen (from Mr.Stalin) 2018-10-12 19:27:04 +08:00
NovaRain 930f463000 Backported expanded is_iface_tag_active function from 4.0, and refactored show/hide_iface_tag functions as well.
Minor edits to a couple of documents.
2018-10-11 23:56:11 +08:00
NovaRain e1aefcc1ed 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.
Reimplemented INTFACEUSE/INTFACELOOT/BARTER game mode flags, and backported inventory_redraw script function from 4.0.
2018-10-11 11:19:22 +08:00
NovaRain 25554ff0b2 Added FastMoveFromContainer as the auxiliary option for ItemFastMoveKey (from Mr.Stalin)
Refactored the code of StackEmptyWeapons.
Added missing argument validation for backported script functions.
2018-10-10 18:27:54 +08:00
NovaRain dad0860d6e Changed implementation of StartGDialogFix, additionally fixed the game crash if calling start_gdialog function outside of talk_p_proc procedure for talking heads.
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.
Backported some non-hook related script functions from 4.0: item_weight, get/set_outline, get/set_flags, tile_refresh_display, outlined_object, get/set_cursor_mode, display_stats, get/set_map_enter_position, attack_is_aimed.
2018-10-10 17:24:05 +08:00
NovaRain a7e492a80f Backported get/set_proto_data changes and LoadProtoMaxLimit option from the develop branch.
Added more definitions to define_extra.h.
2018-10-08 21:45:16 +08:00
NovaRain d9b748c261 Backported UseScrollingQuestsList imporvements from 4.1.
Added sound effect to ExtraSaveSlots page buttons (from Mr.Stalin)
2018-10-06 23:18:07 +08:00
NovaRain 0aad511e3e Refactored ASM code in ScriptExtender.cpp according to the develop branch, and edited the code style.
Moved NegateFix to Bugs.cpp and simplified its code.
2018-10-05 10:13:01 +08:00
NovaRain d117296990 Backported "create_win" script function and InterfaceDontMoveOnTop option from the developt branch.
Updated version number.
2018-10-02 12:15:48 +08:00
NovaRain e672db53c7 Backported AllowDShowSound improvements from the develop branch:
* Added volume control support for alternative sound files.
* Added mode 2 to play alternative music files even if original acm files are not present in the music folder.
* Added AllowDShowMovies option to separate avi files playback from enabling DX9 mode.
* Fixed initialization bug when DX9 mode is disabled.
* Small refactoring on ASM code.

Added missing FadeMultiplier option to ddraw.ini.
2018-10-01 12:16:42 +08:00
NovaRain 25bbd91fc5 Fixed the mood argument of start_gdialog function being ignored for talking heads (from Crafty)
Fixed the broken obj_can_hear_obj script function (from Mr.Stalin)
Simplified the code of disabling losing unused perks.
2018-09-30 16:31:29 +08:00
NovaRain 8db528330b Fixed the max text width of player name in inventory.
Added an 8 lines limit to the underline position fix.
Some minor ASM code edits.
Minor edit to document.
2018-09-25 14:17:45 +08:00
NovaRain f761f7834e Refactored fs_* opcodes with ASM macros and opcode handlers. 2018-09-25 12:29:33 +08:00
NovaRain f6c4e5133c Fixed ai_retrieve_object_ engine function not returning the requested object when there are different objects with the same ID (from Mr.Stalin)
Added info about map_*_p_proc procedures to the global script section in notes.txt.
2018-09-23 08:15:52 +08:00
NovaRain 2e30c86467 Added "get_current_inven_size" script function. 2018-09-21 19:27:57 +08:00
NovaRain 1679f7c59d Backported CritterInvSizeLimitMode related fixes/improvements from the develop branch:
* Changed item_total_weight/item_c_curr_size engine functions to return the weight and size of equipped(hidden) items on NPCs when exchanging/bartering items.
* Fixed CritterInvSizeLimitMode not properly checking the weight of equipped items when mode is set to 4+.
* Added inventory size check to "Take All" button.
* Added additional note to CritterInvSizeLimitMode in ddraw.ini, and changed CritterInvSizeLimit to its default value.
2018-09-20 09:48:27 +08:00
NovaRain 9a4cbd4fa9 Excluded inventory size features for NPCs when CritterInvSizeLimitMode is set to PC only. 2018-09-16 10:25:45 +08:00
NovaRain 0c561ba677 Backported refactored CritterInvSizeLimitMode option from the develop branch (from Mr.Stalin)
Added party member's current/max inventory size info to the combat control panel.
Removed redundant functions from FalloutEngine.cpp.
2018-09-15 11:41:46 +08:00
NovaRain 20ccdacee8 Fixed the underline position in the inventory display window when the item name is longer than one line (from Mr.Stalin)
Simplified the code of SuperStimExploitFix and corrected the return value for the change.
2018-09-12 22:45:58 +08:00
NovaRain d44663ce76 Backported two bug fixes from the develop branch:
* Fixed broken get/reset_critical_table functions (from Mr.Stalin)
* Fixed the encounter description being displayed in two lines instead of one (from Crafty)
2018-09-11 16:15:25 +08:00
NovaRain a196160258 Changed the fix for multihex critter moving in combat to a more proper one (from Mr.Stalin)
Added AIBestWeaponFix option to ddraw.ini.
2018-09-02 18:07:05 +08:00
NovaRain 55a97a5793 Fixed multihex critters moving too close and overlapping their targets in combat (from Crafty)
Fixed critters not checking weapon perks properly when searching for the best weapon (from Mr.Stalin)
2018-08-21 07:18:35 +08:00
NovaRain 3eaa64ee16 Added extra comment for CarChargingFix to ddraw.ini. 2018-08-14 23:57:29 +08:00
NovaRain aa9257ab1c Fixed obj_can_see_obj not checking if source and target objects are on the same elevation before calling is_within_perception_ (from Mr.Stalin) 2018-08-10 22:37:55 +08:00
NovaRain 81a8fd4863 Added a fix for the display issue in the pipboy when a quest list is too long with UseScrollingQuestsList diabled (from Mr.Stalin)
Added a fix for the clickability issue of holodisk list in the pipboy (from Mr.Stalin)
2018-08-06 21:10:09 +08:00
NovaRain ed260ad7e5 Minor edit to the description of CityRepsList in ddraw.ini, to avoid misunderstanding.
Updated version number.
2018-07-28 22:33:28 +08:00
NovaRain 9dce3c8d62 Fixed an issue with file IDs of additional game msg files being shifted when a file in ExtraGameMsgFileList is missing. 2018-07-24 09:39:26 +08:00
NovaRain f28a179c78 Added more info to the comments of various keys in [Input] section in ddraw.ini. 2018-06-12 20:53:03 +08:00
NovaRain 540abbe273 Fixed a bug in DisplaySecondWeaponRange that didn't display correct weapon range when the secondary mode is aimed (e.g. spear and throwing knife)
Added more info about unwielding in HOKK_INVENWIELD to hookscripts.txt.
2018-06-11 13:47:20 +08:00
NovaRain 8dda3940d0 Added ItemFastMoveKey and ItemCounterDefaultMax options from 4.0 develop branch (commit aaa76cb3d1)
Set ReloadReserve to be disabled by default.
2018-06-06 06:54:55 +08:00
NovaRain 44b9b24490 Minor edits to documents. 2018-06-04 21:28:05 +08:00
NovaRain dafbc357b2 Added more detail to the comment of previous commit. 2018-06-02 18:13:33 +08:00
Mr.StalinandNovaRain 02572a5193 Fix bug "walking dead" for critters in combat mode after their death. (#160) 2018-06-02 18:10:49 +08:00
NovaRain cab19b5ca0 Fixed the backported code in commit d6952a0c93 not working when enabling AnimationsAtOnceLimit.
Reorganized the layout of AnimationsAtOnceLimit.cpp to be more in-line with 4.0 code.
2018-06-02 08:21:19 +08:00
NovaRain d6952a0c93 Backported the fix for the crash when the critter goes through a door with animation trigger from commit 56945c7437. 2018-06-01 23:42:52 +08:00
NovaRain b996867d65 Minor edit to the code in Explosions.cpp. 2018-05-30 21:21:23 +08:00
NovaRain bd18c240f9 Simplified the ASM code of get_mouse_buttons() a bit. 2018-05-30 09:37:58 +08:00
NovaRain 2ad28e3086 Added WorldMapFontPatch option to use Fallout's normal text font instead of DOS-like font on the world map. (#48) 2018-05-30 09:33:40 +08:00
NovaRain ef5ff4e90f Expanded get_mouse_buttons function to return a value for the middle mouse button (from Mr.Stalin) 2018-05-29 09:32:16 +08:00
NovaRain 0a672c1e10 Added MoreTiles option to increase the limit of FRM images for tiles from 4096 to 16383 (from Crafty)
Added sfall log messages to both options in Tiles.cpp and edited the code style.
2018-05-28 10:15:02 +08:00
NovaRain 01214633f4 Simplified the code in BarBoxes.cpp.
Updated version number.
Fixed a minor typo in function notes.txt.
2018-05-27 16:42:34 +08:00
NovaRain 334e98c4c1 Backported DisplaySecondWeaponRange option from 'develop' branch.
Improved DisablePipboyAlarm so that when the player press Z key they won't see a blank Pipboy screen.
Simplified the HookCall usages in TimeLimit option.
2018-05-27 16:09:21 +08:00
NovaRain 78a29ad556 Simplified the code from commit 716bfd4156. 2018-05-15 20:23:34 +08:00
NovaRain e5d14ff845 Minor edit to FixCharScrnBack() in HeroAppearance.cpp. 2018-05-14 21:16:44 +08:00
mr.StalinandNovaRain 716bfd4156 Hero Appearance mod: Loads the custom background frm for the character windows. (#150)
AppChCrt.frm (for the character creation) and AppChEdt.frm (for the character screen) should be placed in art/intrface, and the image size must be 640x480.
2018-05-14 09:56:56 +08:00
NovaRain 9b67db7208 Fixed broken get_attack_type function (from Mr.Stalin and Crafty)
Replaced some SafeWriteX usages with SafeMemSet for writing serial NOPs.
Minor edits to documents.
2018-05-08 15:39:39 +08:00
NovaRain e92ded34e4 Added "floor2" script function to work with ceil (#109)
Added the missing description of ceil to notes.txt.
Disabled ceil marco in lib.math.h.
Removed duplications in Utils.h.
2018-04-28 11:16:10 +08:00
NovaRain 1689542165 Fixed the last additional notification boxes to the interface being missing (#140) 2018-04-26 10:11:22 +08:00
NovaRain 2c86201db9 Updated README.txt for info about additional headers/libraries.
(cherry picked from commit e474ba1660)
2018-04-21 09:19:20 +08:00
NovaRain d7c9acf713 Added set_ini_setting to documents, and updated info for get_ini_setting.
Updated credits.
Replacing a couple of strcpy usages with strcpy_s.
2018-04-21 08:49:56 +08:00
mr.StalinandNovaRain 399da0d322 Scripting function "set_ini_setting" for FuncX [sfall v3.8] (#139)
* Added new script function "set_ini_setting" for FuncX (#85)

* Small fix for sf_set_ini_setting function.

* Refactoring code for set/get_ini* functions.
2018-04-21 08:42:12 +08:00
NovaRain 774adaa3b0 Revert "Fixed a bug when using HOOK_ITEMDAMAGE and calling item_w_damage_ engine function at the same time. It would result in player self-damaging when attacking targets."
This reverts commit b4d174d91b.
2018-04-13 20:43:33 +08:00
NovaRain b4d174d91b Fixed a bug when using HOOK_ITEMDAMAGE and calling item_w_damage_ engine function at the same time. It would result in player self-damaging when attacking targets.
Set DataLoadOrderPatch to be enabled by default, for preventing partial of a game crash issue due to unusual game folders setup. #136
2018-04-13 11:09:37 +08:00
NovaRain 3291f6fe17 Added a fix for being at incorrect hex after map change when the exit hex in source map is at the same position as some exit hex in destination map (from Crafty) #134 2018-04-02 23:22:46 +08:00
NovaRain 84f442ca08 Rewrote the fix for player's base EMP DR as an engine-level fix (from Crafty) 2018-04-01 12:48:13 +08:00
NovaRain f5c35eb639 Fixed typos in hookscripts.txt. 2018-03-23 23:10:17 +08:00
NovaRain 514894ed59 Fixed typos in sfall function notes.txt. 2018-03-23 22:06:02 +08:00
NovaRain 204810d067 Fixed the long existing slotdat.ini function in ExtraSaveSlots.
Reduced duplication in ExtraSaveSlots code.
Unified the indent style in ExtraSaveSlots.cpp.
Updated version number.
2018-03-16 12:49:39 +08:00
NovaRain ec4ba13a28 Fixed add_mult_objs_to_inven only adding 500 of an object when the value of "count" argument is over 99999. #129 2018-01-17 07:37:03 +08:00
NovaRain 14a6ef7fc6 Made sure the value of player's base EMP DR is set correctly. 2018-01-02 23:25:27 +08:00
NovaRain c3a74070ca Updated version number and the year.
Set the copyright string in the same way as 4.0 build.
2018-01-02 10:26:32 +08:00
NovaRain 302fd4bb51 Condensed the code in ApplyHeaveHoFix a bit. 2018-01-02 10:02:04 +08:00
NovaRain c7520c71cf Fixed player's base EMP DR isn't properly initialized when creating a new character and then starting the game. 2017-12-15 07:34:10 +08:00
NovaRain 45632d6887 Changed sneak_success to call is_pc_sneak_working_ engine function, which takes player's current sneaking status into account as well, instead of only returning the result of last sneak attempt. 2017-12-05 10:25:11 +08:00
NovaRain 866c9165c0 Replaced hex values with proper VAR_TYPE_* defines for code readability. 2017-12-03 23:29:28 +08:00
NovaRain 813abbf452 Added missing entry of block_combat script function in opcode list. 2017-12-03 02:40:36 +08:00
NovaRain c6864e01f6 Added the damage type offset of weapon proto to define_extra.h.
Fixed a typo in hookscripts.txt.
Added a new example mod gl_autodoors (by Mr.Stalin) to modderspack. #19
2017-11-28 00:30:29 +08:00
NovaRain 0eab48932a Tweaked the way DebugMode works, now only DebugMode=2 sends debug output to a debug.log file. Any other non-0 value sends debug output to the screen. #123 2017-11-07 10:44:57 +08:00
NovaRain 6c3efc5b84 Replaced some SafeWrite* usages in old code with corresponding HookCall/MakeCall/MakeJump for code readability.
Edited code style in Perks.cpp.
2017-11-06 15:21:08 +08:00
NovaRain cb8d7dc94a Enabled mouse scroll control in barter and loot screens when the cursor is hovering over other lists, also enabled scrolling through the display monitor (from Crafty) #120
Rearraged the code style in dinput.cpp.
Updated version number.
2017-10-25 11:40:46 +08:00
NovaRain 5786cfb267 Fix crash when calling partyMemberGetCurLevel_ on a critter that has no data in party.txt.
Updated version number.
2017-10-18 14:56:38 +08:00
NovaRain 78dfb530a9 Moved LoadHeroAppearance() from MainMenuHook to NewGame2. No reason to run it on the main menu where player appearance can't display. 2017-09-19 15:27:08 +08:00
NovaRain d588f2e691 Edited code style in HeroAppearance.cpp/h, also removed some redundant blank lines. 2017-09-19 10:43:31 +08:00
NovaRain daf7a82997 Added descriptions for the variables in Perks.ini.
(cherry picked from commit 848f29b468)
2017-09-12 15:39:39 +08:00
NovaRain 9ad2b19e1a Removed the redundant LoadHeroAppearance calling.
(now it's called during LoadGame_, which is earlier than LoadGame2_After)
2017-09-09 18:59:21 +08:00
NovaRain 4b66dd3682 Reverted LoadGame to previous revision, but also kept EndLoadHook and changed it to only call LoadHeroAppearance.
(attempted to fix issue #117 and #94)
2017-09-05 09:21:22 +08:00
NovaRain 4899aeece1 Changed new function names in the previous commit to PascalCase style. 2017-09-01 09:45:33 +08:00
NovaRainandGitHub 946266e367 Merge pull request #107 from FakelsHub/crafty_features/combat_proc
Added calls to unimplemented script procedures: combat_is_starting_p_proc/combat_is_over_p_proc (from Crafty)
2017-09-01 09:40:47 +08:00
NovaRain 438ea071fc Removed the backported new modes for get_game_mode in commit a93ad5a9ba. 2017-08-24 21:46:42 +08:00
NovaRain 89760235c7 Removed unimplemented HEROWIN game mode from header files.
Cleared some obsoleted/unused code from main.cpp & LoadGameHook.cpp.
2017-08-23 13:42:58 +08:00
NovaRain 321f1c6034 Fixed the double damage effect of Silent Death perk not being applied to critical hits (from Crafty) 2017-08-21 23:18:32 +08:00
NovaRain 513338f160 Fixed incorrect argument description for get/set_proto_data in sfall opcode list.txt.
Removed incorrect PROTO_CR_FLAGS value in define_extra.h (was actually critter's IN), and renamed PROTO_CR_ACTION_FLAGS to its correct name #112

(cherry picked from commit ad17773ace)
2017-08-21 11:33:37 +08:00
NovaRain 08b92542f4 Fixed the incorrect description in HOOK_COMBATDAMAGE.
(cherry picked from commit 85cdd8973e)
2017-08-19 08:49:56 +08:00
NovaRain 46013c94b0 Added SSL library files and define_lite.h (from 4.0 development branch) 2017-08-18 15:52:14 +08:00
NovaRain 7a4ab59089 Added missing description for set_car_current_town.
Removed trailing spaces in MetaruleOp.hpp.
2017-08-13 11:38:18 +08:00
NovaRain e505e204cb Two bug fixes from Crafty:
1. Fixed the displayed message when the attack randomly hits a target that is not a critter and has a script attached.
2. Fixed damage_p_proc being called for misses if the target is not a critter.
2017-08-07 13:24:11 +08:00
NovaRain 7343754d53 Fixed Bonus Move APs being replenished when you save and load the game in combat (from Crafty)
Replaced all usages of MakeCall with 3 arguments with either MakeJump or MakeCall (2 arguments) to improve code readability (ref. commit 96fa2668cc)
2017-07-26 23:13:40 +08:00
NovaRain ae1e17d359 Added a note for argnum in set_sfall_arg().
Fixed incorrect set_sfall_arg usage in the example.
Removed a redundant line in sfall opcode list.txt.
2017-07-25 23:14:50 +08:00
NovaRain 32dbe5581d Replaced hs_*.int scripts in example mods with normal global scripts with register_hook.
(cherry picked from commit e7e286013f)
2017-07-06 21:04:51 +08:00
NovaRain a93ad5a9ba Added new modes for get_game_mode to match Crafty's (backported from 4.0 development branch, commit c32dc7664e) 2017-06-22 09:41:05 +08:00
NovaRain 874b047ce1 Added Attack Type argument for HOOK_COMBATDAMAGE (from Crafty) #100 2017-06-14 12:45:13 +08:00
NovaRain afa590c5a8 Minor edits to ddraw.ini. 2017-06-02 11:49:02 +08:00
NovaRain b89c52fcec Added DontTurnOffSneakIfYouRun option to prevent the player from running while sneaking without Silent Running perk (from Crafty)
Added sfall log text for DisablePipboyAlarm.
2017-05-26 10:10:16 +08:00
NovaRain ec2d323f75 Changed LoadGame2_After to be called before LoadGame state is ended (backported from 4.0 development branch, commit c2e6d743a3)
Updated version number.
Minor edits to scripting documents.
2017-05-23 21:05:04 +08:00
Mr.Stalin 586679b07f Added scripting procedure handlers combat_is_starting_p_proc/combat_is_over_p_proc from Crafry. 2017-05-12 18:28:46 +03:00
NovaRain 31834fdfea Added OutlineColor option to set the color of outlines for items/containers. 2017-05-07 20:27:30 +08:00
NovaRain 7405e3cb52 Updated version number in ddraw.ini. 2017-05-07 01:22:00 +08:00
NovaRain 771230f9b4 Fixed a crash when calling destroy_object or destroy_mult_objs.
Updated some structs, using commit 75c7ab647f as the reference.
Updated version number.
2017-05-07 01:08:28 +08:00
VladislavKolosovsky 7b333ca458 Fixed hero appearance style and race not being loaded properly from savegames #94 2017-04-24 16:10:20 +07:00
NovaRain e7d03fc60a Fixed a bug that caused the game to crash upon entering combat mode if AnimationsAtOnceLimit is set to negative values by accident.
Used static const for the value of animation record size.
2017-03-23 13:03:20 +08:00
NovaRainandGitHub 61615930b6 Merge pull request #75 from FakelsHub/3.8-anim_fix
Fixed the game hanging in the combat mode when using reg_anim_animate() inside damage_p_proc (from Crafty, #75)
2017-03-23 07:43:57 +08:00
NovaRainandGitHub 62e5559aea Merge branch '3.8-maintenance' into 3.8-anim_fix 2017-03-23 07:30:36 +08:00
NovaRain 50c91db5ea Moved part of AnimationsAtOnceInit code from main.cpp to AnimationsAtOnceLimit.cpp.
Changed the if condition for ProcessorIdle to make sure out-of-bounds values not resulting in unexpected but valid values.
2017-03-21 21:05:44 +08:00
NovaRain b1624e5acf Fixed vanilla to-hit calculation being broken by the previous TOHIT hook commit. 2017-03-20 13:57:11 +08:00
NovaRain 024b1dbf6f Backported the fix for TOHIT hook from 4.0 development branch (commit 7bbe84feef)
Updated credits.
2017-03-19 08:29:27 +08:00
NovaRain 659da227f4 Fixed incorrect "\r\r\n" being printed in sfall-log.txt.
Simplified Jet Antidote fix.
Unified the wording of some log entries.
Changed sprintf to _snprintf_s for SimplePatch.
2017-03-18 22:42:19 +08:00
phobos2077andNovaRain b48549b524 Fixed 0 prices in all shops when not using barter mods
(cherry picked from commit 2d278bf4c7)
2017-03-18 10:34:01 +08:00
NovaRain bf61051887 Updated documentation on hook scripts.
Minor edits to missing d3dx9 dll message.
2017-03-16 22:03:33 +08:00
NovaRain 158234438b Fixed inconsistent behavior of motion sensor flag 2; now motion sensor truly does not require any charges to work. 2017-03-14 22:56:19 +08:00
NovaRain eb4998ced6 Fixed an error in the previous commit. 2017-03-14 22:02:52 +08:00
NovaRain 9631e08db4 ExplosionEmitLight: Skip setting light level if object was already lit #78 (from commit b0dc6ff182) 2017-03-14 14:07:26 +08:00
NovaRain 52072e29c0 Removed the obsolete WorldMapFPS, ForceLowResolutionTimer, and WorldMapDelay.
Fixed global scripts not running on the world map (mode 2) when disabling the world map speed patch.
2017-03-13 13:37:46 +08:00
NovaRain 28c18c1925 Updated hook script document for new arguments of hs_barterprice.
Changed BarterPriceHook() to be in line with the version in 4.0 branch.
Fixed incorrect GlobalVar struct size leading to load game crashes and corrupted saves (from 4.0 development branch)
2017-03-13 13:08:15 +08:00
NovaRain 77349cbaec Fixed Sequence stat value not being printed correctly when using "print to file" option.
Updated credits.
2017-03-13 10:33:31 +08:00
VladandGitHub 85845a2d80 Merge pull request #76 from FakelsHub/3.8-barterhook
New arguments to hook_barterprice.
2017-03-13 00:05:57 +07:00
NovaRain d8e2e6f1ca Added a missing function to prevent the player starting the game with zero or negative SPECIAL values (from Crafty)
Added a log entry for the bag/backpack fix.
2017-03-12 21:02:19 +08:00
NovaRainandGitHub dd00e130a9 Merge pull request #80 from FakelsHub/3.8-PCStat_fix
Fixed bugs for negative SPECIAL values in character creation (from Crafty)
2017-03-12 20:53:53 +08:00
Mr.Stalin 6cb8700df5 Correcting bug for negative values SPECIAL parameters. (from Crafty) 2017-03-12 00:38:23 +03:00
NovaRain ec0baf3065 Greatly increased compilation speed using precompiled header (from 4.0 development branch)
Changed SkipSizeCheck and ExtraCRC to not require enabling sfall debugging mode.
2017-03-11 20:14:25 +08:00
Mr.Stalin 5265100425 Combat animation fix: fixes a hang in the handler damage_p_proc after the animation completes in the combat mode. (from Crafty) 2017-03-09 21:59:16 +03:00
Mr.Stalin c095e54b62 Add new get arguments(arg7/arg8/arg9) to HOOK_BARTERPRICE (from Crafty) 2017-03-09 19:26:13 +03:00
NovaRain 229a5516e0 Unified the style of merged code. 2017-03-09 10:18:16 +08:00
NovaRainandGitHub f056c53739 Merge pull request #73 from FakelsHub/3.8-inventory-fix
Fix a crash when clicking on empty space in the inventory list opened by "Use Inventory Item On" (backpack) action icon (from Crafty)
2017-03-09 10:11:13 +08:00
NovaRain cb84700bfc Fixed metarule2_explosions not being reset properly. 2017-03-09 09:10:21 +08:00
Mr.Stalin 0f722a50fd Fix crash when clicking on empty space in the inventory with the cursor using an item from the backpack (from Crafty) 2017-03-08 19:27:29 +03:00
NovaRain 6b7a10130d Improved the functionality of ScrollMod: now the minimum is scrolling 1 inventory slot per click; before setting ScrollMod too high or negative values will result in scrolling not working. 2017-03-08 22:56:48 +08:00
NovaRain 061302585b Updated version number. 2017-03-06 00:43:39 +08:00
NovaRain c3acd1af3e Changed ExtraGameMsgFileList to read its setting from generic INI file, which can be set by UseCommandLine, instead of the fixed ddraw.ini.
Added a comment to karma frm options to explain things better.
2017-03-05 00:31:35 +08:00
NovaRain 411c0a6e98 Backported the fix for a crash when pressing reload weapon key while in the main menu from 4.0 development branch (commit 5b10d9e786) 2017-03-03 11:45:06 +08:00
NovaRain 4cc1235dbc Backported the fix for bug #70 from 4.0 development branch (commit 72bde84d92)
Fixed a minro typo in Inventory.cpp.
2017-02-28 21:22:00 +08:00
phobos2077andNovaRain 70a742db81 Added note about possible issue when using hs_invenwield incorrectly
(cherry picked from commit df5c81164f)
2017-02-24 15:48:06 +08:00
NovaRain 00d4e188d6 Fixed a crash if calling reg_anim_obj_run_to_tile after reg_anim_combat_check.
Implemented some changes of Explosions.cpp from commit ce21fdab79 to make the code a bit more understandable.
2017-02-24 15:47:37 +08:00
phobos2077 a30464cfae Fixed bug in metarule2_explosions, possible fix for #67 2017-02-24 01:32:32 +07:00
NovaRain 38438d1e9c More minor edits to ddraw.ini. 2017-02-21 23:15:26 +08:00
NovaRain 94e4a2043a Some minor edits to ddraw.ini. 2017-02-21 23:01:21 +08:00
NovaRain 42f70f920e Removed unused code in LoadGame().
Revert the change of OverrideArtCacheSize.
2017-02-21 14:37:18 +08:00
NovaRain f56af79c16 Set the valid range of NPCsTryToSpendExtraAP to be non-0 positive values, and removed a redundant/unused constant.
Changed the valid range of EncounterTableSize.
2017-02-21 00:15:24 +08:00
NovaRain 955733270c Added a fix for the engine not checking player's inventory properly when putting items into the bag/backpack in the hands (from Crafty)
Removed BagBackpackFix from ddraw.ini.
2017-02-20 12:23:51 +08:00
NovaRain 9804902af6 Fixed a crash when trying to open bag/backpack on the table in the bartering interface (from Crafty)
Added a tweak to move items to player's main inventory instead of the opened bag/backpack when confirming a trade.
2017-02-17 00:21:16 +08:00
NovaRain cfb546ce8a Added a fix to ignore player's equipped items when opening bag/backpack (from Crafty) 2017-02-15 22:39:31 +08:00
NovaRain de2549eeaa Added the ability to move items out of bag/backpack and back into the main inventory list by dragging them to character's image (similar to Fallout 1 behavior) (derived from Crafty's code)
Added a fix for losing items from inventory when you try to drag them to bag/backpack in the inventory list and are overloaded (from Crafty)
Removed gdBarterDispFix from ddraw.ini.
2017-02-15 12:56:37 +08:00
NovaRain cc00a2c162 Replaced PID number in ScannerAutomapHook() with its define name for better understandability. 2017-02-13 15:46:49 +08:00
NovaRain 16be32d284 Replaced some address hacks with simplified ones (e.g. using jumps instead of multiple NOPs)
Changed code style in main.cpp with Astyle.
2017-02-13 14:02:28 +08:00
NovaRain 16f19824d1 Replaced hex addresses with proper engine defines for ViewXPos and ViewYPos, and replaced two instances of SafeWrite32 with HookCall. 2017-02-12 22:28:37 +08:00
NovaRain 535b7edc55 Limited the range of values for StartYear/Month/Day to prevent errors when setting them to negative values, and added a clarification in ddraw.ini. 2017-02-12 00:11:21 +08:00
NovaRain 573e5324f4 Updated ddraw.ini for the change in previous commit.
Updated version number.
2017-02-07 15:59:59 +08:00
NovaRain e17b722f16 Changed BodyHit_Torso to BodyHit_Torso_Uncalled because it sets both body_torso and body_uncalled hit modifiers. 2017-02-04 21:20:33 +08:00
NovaRain 7a6e15bae1 Fixed OverrideMusicDir not using the correct path string.
Updated the year showed in the credits and file properties.
2017-01-31 13:03:09 +08:00
NovaRain df34f6c994 Fixed broken call_offset_* functions. 2017-01-24 22:24:53 +08:00
NovaRain 26874a709e Edited the format of LoadGameHook.cpp to be more in line with the one in 4.0 branch, and replaced a hex address with proper engine function. 2017-01-20 00:28:09 +08:00
NovaRain 45724aa6b3 Moved sfall additional save game file reading from LoadGame2_After to LoadGame2_Before to make saved arrays available in start functions of ssl scripts.
(cherry picked from commit 6bd7d4f05c)
2017-01-19 23:59:05 +08:00
NovaRain b477a43bd0 Added more details to the description of WorldMapEncounterFix/Rate, and changed the default value of WorldMapEncounterRate to its internal default. 2017-01-12 00:08:10 +08:00
NovaRain ca86b5f930 Fixed display issues when calling gdialog_mod_barter with critters with no "Barter" flag set (from Crafty) 2017-01-09 16:35:03 +08:00
NovaRain f05ec714e7 Made WorldMapEncounterFix/Rate independent from WorldMapFPSPatch. (#62, with the simplified code from Crafty) 2016-12-27 14:19:54 +08:00
NovaRain ad1f08378b Fixed issue #57.
Updated version number.
2016-11-14 09:40:01 +08:00
NovaRain 11dfb3e94a Added MainMenuOffsetX/Y and MainMenuCreditsOffsetX/Y settings back to ddraw.ini.
Corrected document file name in README.txt.
2016-11-08 10:25:41 +08:00
NovaRain 3668a1c94f Improved the functionality of ProcessorIdle (from Crafty) 2016-11-07 15:04:55 +08:00
NovaRain 5cb3ca2a59 Removed queue9x and vector9x.
Disabled ComputeSprayMod by default.
Updated version number.
2016-11-07 10:16:57 +08:00
phobos2077 4ef88959e3 Moved argument validation to opcodeMetaTable. Now old-style opcode and sfall_funcX scripting functions work almost identical and their handlers can be interchanged.
Fixed some bugs with sfall_funcX.
2016-11-06 17:37:25 +07:00
phobos2077 4cc9cb0b83 - Refactor opcode handling.
- Made new-style "sfall_funcX" functions compatible with old-style opcodes, this allows to use one handler function to act as both metarule and normal opcode.
- Added table of opcode meta-data.
2016-11-06 16:52:09 +07:00
phobos2077 363d7a1cc5 Rename types in function references for consistency and clarity. 2016-11-06 00:56:59 +07:00
phobos2077 d9d86e3fe4 Added macros for new scripting functions 2016-11-06 00:32:28 +07:00
phobos2077 ce1fd719cf Limit maximum string length for arrays to prevent certain strange crashes 2016-11-06 00:15:25 +07:00
phobos2077 1595d75f7c Added docs for new opcodes and scripting functions 2016-11-06 00:14:25 +07:00
phobos2077 6287eefd7c Merge branch 'feature/issue-55-metarule' into develop 2016-11-05 18:07:30 +07:00
phobos2077 3bc84a0040 Refactor: encapsulated opcode-related functions and variables into classes 2016-11-05 03:34:09 +07:00
phobos2077 18b34767b6 Added new scripting functions to show/hide/redraw main interface and to exec map_update_p_proc for all map objects #51 2016-11-05 01:17:42 +07:00
phobos2077 af4bad36d4 Added validation for null arguments #55;
Added scripting function "spatial_radius";
Added scripting function "critter_inven_obj2" #38.
2016-11-04 17:22:05 +07:00
phobos2077 1a40c40cd3 Added full definitions for metarules and automatic argument validation of with detailed error messages 2016-11-04 03:37:30 +07:00
phobos2077 9367139957 Remove condition for vsnprintf_s - always use long variant 2016-11-03 21:04:46 +07:00
phobos2077 87f45d26db Merge remote-tracking branch 'origin/feature/issue-55-metarule' into feature/issue-55-metarule 2016-11-03 20:57:09 +07:00
phobos2077 bd2f83d6a8 Refactor opcode handling;
Write metarule errors to debug.log (added reusable function);
Fixed some warnings
2016-11-03 20:55:59 +07:00
phobos2077 d29b51d5ea Implemented new way of handling sfall opcodes - now almost without any ASM code
Added bunch of engine function wrappers
2016-11-03 19:30:42 +07:00
NovaRain d276da3d68 Added VS2008 compatibility (vsnprintf_s uses 4 args by C11 standard, which is supported in VS2010 but not VS2008) 2016-11-03 14:56:32 +08:00
phobos2077 502897cb6f Fixed a nasty bug in dlog_f function that only shows when compiling w/o optimization 2016-11-03 04:43:10 +07:00
NovaRain e3739ba7aa Initialized scriptDialog pointer properly and deleted it on game exit. 2016-11-02 08:59:02 +08:00
phobos2077 02beff2b04 Implemented sfall_funcX opcodes 2016-11-02 04:10:50 +07:00
phobos2077 cf82440753 Testing implementation for universal opcode #55 2016-11-01 03:53:07 +07:00
NovaRain e78e76e35d Edited a couple of log entries.
Simplified the memory address edits of MultiPatches.
2016-10-31 15:56:19 +08:00
NovaRain 47783c802e Added a C++11 emulator for compiling with VS2008. 2016-10-26 11:38:57 +08:00
phobos2077 ce72ef51f8 Bug fix 2016-10-24 20:23:43 +07:00
phobos2077 dbc0ebd36f Do not allow to save game on Party-Controlled turn regardless of SaveInCombatFix value 2016-10-24 20:21:52 +07:00
phobos2077 db89f5760c Do not allow to use sneak when controlling party members 2016-10-24 20:16:02 +07:00
phobos2077 e864f1f961 Added DelayedExperience feature for party control 2016-10-24 19:32:05 +07:00
phobos2077 fafc4a317f Bug fixing 2016-10-24 18:38:09 +07:00
phobos2077 5d689c0641 Improve party control by temporarily changing more dude-related properties 2016-10-24 17:59:04 +07:00
phobos2077 4a65a6753f Remove some duplicated variables, use consistent naming 2016-10-24 12:49:12 +07:00
phobos2077 5dec063c1c Add more game global variable pointers to FalloutEngine 2016-10-24 12:36:02 +07:00
NovaRain dbdf414cd9 Tweaked the style of global/hook script log entries a bit. 2016-10-18 11:45:00 +08:00
NovaRain 3e2a22fad8 Fixed bugs in set*_stat_min functions that set max values instead of min.
Unified the style of global/hook script log entries.
Updated the code of "reading global/hook scripts from DAT files" with Crafty's newer code base.
2016-10-18 10:59:10 +08:00
NovaRain 13ee06dee2 Improved the 'print to file' fix and added the ability to use long filenames in dat files (from Crafty) 2016-10-17 11:58:22 +08:00
NovaRain 2d3031e583 sfall can now load global/hook scripts from dat files (from Crafty's mod) 2016-10-14 13:57:20 +08:00
NovaRain de5c12484d Added DataLoadOrderPatch option to use a modified data load order for the engine to find game data (from Crafty's mod)
Updated version number.
2016-10-11 11:58:17 +08:00
NovaRain c880ae93a9 Removed unused code in ScriptExtender.cpp and rename obj_outline_all_items_* functions slightly to prevent using the same names as game engine functions.
Minor edits on main.cpp and Bugs.cpp.
2016-10-07 10:31:46 +08:00
NovaRain 295a5d1437 Replaced NumberPatchLoop with a simple toggleable MultiPatches. Reason: While NumberPatchLoop allows even larger patch numbers, the built-in valid range of patch numbers of 000 ~ 999 is more than enough already. 2016-10-05 16:09:22 +08:00
NovaRain e726ee54ba Tweaked set_bodypart_hit_modifier function to follow the removal of BodyHit_Uncalled from ddraw.ini, e.g. setting modifier for torso (3) will also set for uncalled (8), and vice versa. 2016-10-04 10:23:17 +08:00
NovaRain 712eafc241 Now sfall loads global/hook scripts, shaders, 32-bit talking heads images, and avi movies according to the paths variables in the cfg file, instead of from the fixed "Data\".
Removed GainStatPerkFix from ddraw.ini.
Removed BodyHit_Uncalled from ddraw.ini. Now "uncalled" shares the same modifier with "torso", because separating them would result in some illogical setups.
2016-10-03 14:46:51 +08:00
NovaRain d1bf22ec8d Expanded DisableHorrigan to also skip the forced encounter check, to compatible with old saves that are not started with DisableHorrigan=1.
Changed the description of PipBoyAvailableAtGameStart=2 to be more precise.
Simplified the skipping code in PerkSetup(), because it's redundant to change two bytes that the same effect can be done with changing the conditional jump next to them.
2016-09-29 13:37:58 +08:00
NovaRain 21d496f392 Added a new setting to PipBoyAvailableAtGameStart to skip the vault suit movie check and make the PipBoy always available.
Improved the functionality of PipBoyAvailableAtGameStart (from Crafty's mod)
2016-09-26 16:05:18 +08:00
NovaRain 07948206fb Removed CarryWeightLimit option, because it can be scripted with set_stat_max function. 2016-09-21 09:33:11 +08:00
NovaRain 6a71bf086d Added a partial fix for incorrect positioning after exiting small locations (e.g. Ghost Farm) (from Crafty's mod) 2016-09-19 13:15:57 +08:00
NovaRain ec585529c8 Changed BodypartHitMod# to BodyHit_(part names) in ddraw.ini, to make them easier for users to understand. 2016-08-31 10:27:03 +08:00
NovaRain e6aad27e44 Moved ImportedProcedureFix to Bugs.cpp and added comments to it.
Added more descriptions to options in ddraw.ini, especially DebugMode,  to make things clearer and save the trouble to look up debug patch readme.
2016-08-30 13:11:06 +08:00
NovaRain f0528740a4 Removed the redundant loop in the unlimited ammo exploit fix. 2016-08-22 09:42:01 +08:00
NovaRain bfd8b38547 Merge branch 'develop', preparing for 3.7.3 release. 2016-08-15 14:54:40 +08:00
NovaRain e6086f984e Merge branch 'Vennor-feature/extra_msg'
Feature tested/verified.
2016-08-15 14:38:53 +08:00
NovaRain 2e766cd3c9 Merge branch 'feature/extra_msg' of https://github.com/Vennor/sfall into Vennor-feature/extra_msg
# Conflicts:
#	sfall/Message.cpp
#	sfall/Message.h
2016-08-15 14:38:18 +08:00
NovaRain 48f53388fd Fixed checking the horizontal position on the y-axis instead of x when setting coordinates on the world map.
Added more item flag defines in define_extra.h.
2016-08-15 10:32:53 +08:00
NovaRain 6199f95c38 Fixed incorrect death animations being used when killing critters with kill_critter_type function, e.g. ghouls die standing. (from Crafty) 2016-08-04 12:19:00 +08:00
NovaRain a6d84bd470 Fixed incorrect savegame path detection when reading/writing sfallgv.sav and sfallfs.sav under certain circumstances. (from Crafty) 2016-08-01 16:45:12 +08:00
NovaRain a11228a5ec Fixed get_screen_width/height functions not returning correct values when using older versions of hi-res patch.
Corrected the parameter for intface_update_ac_ in wield_obj_critter fix.
Update the unlimited ammo exploit fix from Crafty's mod.
Removed unnecessary engine-related defines and constants that were added since 3.7b.
2016-07-28 17:05:40 +08:00
NovaRain 7784e199af Integrated NumbersInDialogue option from Crafy's mod.
Moved NPCLevelFix to Bugs.cpp.
Used "push retn" instead of "mov jmp" for some jumps, to skip using registers (at least in logic).
Changed the displayed version number to the same as the internal version number.
2016-07-26 11:03:56 +08:00
NovaRain 53895a4af2 Added CreditsAtBottom option to display sfall built-in credits at the bottom of credits.txt contents.
Unified log message format in main.cpp and bugs.cpp.
2016-07-18 16:54:13 +08:00
phobos2077 354b938d60 Added optional function to show additional sfall credits at the bottom of CREDITS.TXT contents 2016-07-17 23:11:43 +07:00
NovaRain 643d8d3886 Added fix for destroy_p_proc not being called if the critter is killed by explosives when you leave the map.
Integrated Crafty's explosives crash fix.
Updated the link of NMA forum post in the comment.
2016-07-13 15:59:14 +08:00
NovaRain 924c35d011 Improved the unlimited ammo exploit fix to prevent crashes during map transition in RP new areas. (from Crafty)
Updated set_new_results_hack with Crafty's newer code base.
2016-07-12 09:47:26 +08:00
NovaRain 86163bf94c Changed the script procs defines in ScriptExtender.h to their real procedure names in SSL. 2016-07-06 17:15:05 +08:00
NovaRain 21b2d34432 Added some new engine-related defines and constants. 2016-06-03 09:38:31 +08:00
NovaRain 98508a9c76 Added a bug fix for incorrect initialization of action points at the beginning of each turn (from Crafty's mod)
Removed unused code in Bugs.cpp.
2016-05-27 10:37:12 +08:00
NovaRain f8b232cc09 Changed how SpeedInterfaceCounterAnims=2 works (from Crafty's mod). Now it updates the hp/ac counter instantly no matter what.
Fixed get_screen_width/height functions not returning correct values when using the windowed mode in the hi-res patch.
Added some new engine-related defines and constants.
2016-05-17 12:20:22 +08:00
NovaRain 394b4b9967 Edited the description of ExtraGameMsgFileList a bit. 2016-05-11 15:33:01 +08:00
NovaRain 1bea84eb3c Added ExtraGameMsgFileList setting to ddraw.ini, and updated message_str_game reference in sfall function notes.txt.
Added a couple of new engine-related defines.
Updated version number. (Need to consider changing to semantic versioning for 3.8.)
2016-05-10 17:18:31 +08:00
NovaRain 26159138e0 Removed the duplicated include from HeroAppearance.cpp. 2016-05-10 12:48:17 +08:00
NovaRain 1883009930 Cleaned up some artifacts in codes. 2016-05-10 12:42:34 +08:00
NovaRain f1289c1e7d Merge branch 'feature/extra_msg' of https://github.com/Vennor/sfall into Vennor-feature/extra_msg
# Conflicts:
#	sfall/Message.cpp
#	sfall/Message.h
2016-05-10 12:33:44 +08:00
Vennor c3e4894243 Moved opening brace to the same line as the function prototype. 2016-05-09 19:34:07 +02:00
Vennor 2330dd97bb Refactored op_message_str_game2 function to always return a valid string value. Now an "Error" string will be returned on error instead of an uninitialized char pointer or an integer value. 2016-05-09 19:10:25 +02:00
Vennor 90b718122d Added string header inclusion to Message.cpp. 2016-05-08 20:15:37 +02:00
Vennor 5ca7ed0dc5 - Renamed ClearExtraGameMsgFiles function to ClearReadExtraGameMsgFiles.
- Moved ClearReadExtraGameMsgFiles function to Message.cpp.
- Added map clearing to ClearReadExtraGameMsgFiles.
- Changed formatting.
2016-05-08 20:13:13 +02:00
Vennor 9bd03bfb76 Changed std::unordered_map to std::tr1::unordered_map for compatibility with older compilers. 2016-05-08 20:09:56 +02:00
Vennor 07b7e270b8 - Encapsulated and moved ReadExtraGameMsgFiles function call from NewGame2 to MainMenu. 2016-05-08 16:11:51 +02:00
Vennor f9dbbcdca2 - Tidied up extra game message getter a bit.
- Removed unnecessary function call.
2016-05-08 15:53:05 +02:00
NovaRain fcdb5633d4 Edited the description of InstantWeaponEquip a bit. 2016-04-21 09:21:12 +08:00
NovaRain 4e2bfd6b08 Some minor document edits: fixing typos, removing double/trailing spaces, unifying space/tab usages, and lining up some lines. 2016-04-20 10:20:05 +08:00
NovaRain 8c0fab1f6b Added an example mod of hs_keypress. 2016-04-19 17:18:26 +08:00
NovaRain 05f15f0262 Removed incorrect information from sfall function notes.
Edited the description in ddraw.ini with less self-advertising.
Added a few new engine-related defines and constants.
2016-04-18 10:28:12 +08:00
NovaRain 147cb50a66 Moved existing msg file reading functions and structs from HeroAppearance.cpp to a dedicated Message.h/.cpp file pair, for preparing to merge with Vennor's new feature.
Enabled ComputeSprayMod by default (reason: more reasonable bullet distribution than vanilla logic, even with default ratios.)
Fixed a minor typo in sfall function list document.
2016-04-07 12:04:24 +08:00
Vennor b8968c5334 - Added extra msg file reading based on names given in ddraw.ini.
- Added fetching strings from extra msg files.
2016-04-02 18:43:52 +02:00
Vennor 4f6b68ca93 - Moved existing msg file reading functions and structs from HeroAppearance.cpp to a dedicated Message.h/.cpp file pair.
- Added extern map to hold read extra msg files.
2016-04-02 18:41:59 +02:00
NovaRain 0ff6157b42 Added a few new engine-related defines and constants. 2016-03-31 09:43:15 +08:00
NovaRain 2bbb92420f Simplified the code of inventory drag and drop fix a bit (from Crafty's mod)
Added a few new engine-related defines and constants.
Updated credits.
2016-03-28 11:21:43 +08:00
phobos2077 4678f41b5a Merge remote-tracking branch 'origin/master' into develop 2016-03-26 23:59:41 +07:00
Vlad 7439ba2634 Merge pull request #40 from Oppen/master
Precompute CRC table.
2016-03-26 23:58:23 +07:00
Mario J. Rugiero 4c047bf8a3 Precompute CRC table. 2016-03-26 12:20:09 -03:00
NovaRain 694b699f15 Changed the order of script array element data removal from C++ containers. Without this std::unordered_map's keys were modified before erasure which lead to undefined behavior.
(cherry picked from commit bdffc061d3)

Added keyHash map clearing after each for loop pass. Without this arrays could load hashed indices of elements they don't actually contain, which in turn could lead to crashes if certain conditions are met.

(cherry picked from commit 25094253e5)

Updated credits.
2016-03-25 09:51:18 +08:00
Vlad 25b408816a Merge pull request #39 from Vennor/master
Script array fixes
2016-03-25 01:12:39 +07:00
phobos2077 b819423d2a added check for invalid array index in GetArray() 2016-03-25 01:10:56 +07:00
NovaRain 720f937b4f Integrated Crafty's updated fix to prevent the game with old (pre-3.0) versions of f2_res from crashing/hanging while trying to use drag&drop to reload weapons in the inventory list.
Added a few new engine-related defines and constants.
2016-03-21 11:58:56 +08:00
Vennor 25094253e5 Added keyHash map clearing after each for loop pass. Without this arrays could load hashed indices of elements they don't actually contain, which in turn could lead to crashes if certain conditions are met. 2016-03-12 17:08:15 +01:00
Vennor bdffc061d3 Changed the order of script array element data removal from C++ containers. Without this std::unordered_map's keys were modified before erasure which lead to undefined behavior. 2016-03-12 17:05:20 +01:00
NovaRain dfe4b6b2e0 Re-added CarChargingFix option back in ddraw.ini for other mods with custom vehicles. 2016-03-11 11:32:24 +08:00
phobos2077 972d978882 #37 fixed sfall_ver_* functions 2016-03-08 22:21:32 +07:00
NovaRain e99cca2b87 Added a few new engine-related defines and constants. 2016-03-07 11:41:04 +08:00
NovaRain 108719ac83 Added rounding calculation to ComputeSprayMod to give roundsCenter & roundsMainTarget some advantages.
Added CarryWeightLimit option for changing the carry weight limit. (max value: 2^31 − 1, probably an overkill.)
2016-03-07 11:29:26 +08:00
NovaRain 6feda61424 Added a check for old (pre-3.0) versions of f2_res to prevent the game from crashing/hanging while trying to use drag&drop to reload weapons in the inventory list. 2016-02-26 11:13:58 +08:00
NovaRain 19c94b8513 Simplified the code of Haenlomal's MultiHexFix a bit. 2016-02-24 09:47:26 +08:00
NovaRain af7b5cbb6b Condensed a few block of code in main.cpp with constant arrays, also made the DLL a bit smaller in size.
Added new engine-related defines and constants.
2016-02-19 11:08:00 +08:00
NovaRain 56009e1634 Moved the code of MultiHexFix to Bugs.cpp, and removed it from ddraw.ini.
Optimized AnimationsAtOnceLimit.cpp using Crafty's method, which made the DLL about 10KB less in size.
2016-02-18 15:25:56 +08:00
NovaRain 7bd3bd4128 Integrated InstantWeaponEquip option from Crafty's mod.
Added PipboyTimeAnimDelay option to allow player to control the speed of pipboy alarm clock animations in certain degree.
2016-02-16 16:44:24 +08:00
NovaRain 696be7fac5 Integrated the expanded SpeedInterfaceCounterAnims from Crafty's mod.
Added new engine-related defines and constants.
2016-02-15 13:13:31 +08:00
NovaRain 66dd966d8a Made a minor edit on ddraw.ini 2015-12-15 14:05:04 +08:00
NovaRain 8ce9ae89eb Removed TooManyItemsBugFix, InventoryDragIssuesFix, NPCDrugAddictionFix, ArmorCorruptsNPCStatsFix, NPCTurnsIntoContainerFix, CarChargingFix, NPCWeightFix from ddraw.ini
Updated version number.
2015-12-15 12:45:42 +08:00
NovaRain 361e961b38 Merge remote-tracking branch 'origin/master' into develop 2015-12-14 12:33:41 +08:00
Vlad f8c1bf1ebb Merge pull request #32 from burner1024/master
fix usage notes for set_critter_burst_disable
2015-12-14 10:47:01 +07:00
Ilya Ivanov 748cbb030a fix usage notes for set_critter_burst_disable 2015-12-14 10:21:46 +07:00
NovaRain 473fbf81b4 Integrated ReloadReserve setting from Crafty's mod for skipping the 'Move Items' window when using drap and drop to reload weapons in the inventory.
Partially refactored HeroAppearance.cpp to use proper engine function/variable names and unified the indent style across the code.
2015-11-17 12:56:03 +08:00
NovaRain 225f36808d Added an optional bug fix for not counting in the weight of equipped items on NPC when stealing or bartering.
Added an additional fix to InventoryDragIssuesFix for only using one box of ammo when the weapon is before the ammo.
Partially refactored Credits.cpp and QuestList.cpp to use proper engine function/variable names.
2015-11-16 15:07:24 +08:00
NovaRain 879315b4d0 Partially refactored most of the source code to use proper engine function/variable names. 2015-11-16 10:40:26 +08:00
NovaRain 971be61d95 Integrated two bug fixes and a minor feature based on Crafty's code:
1. Added CanSellUsedGeiger to fix the issue that unable to sell used geiger counters or stealth boys.
2. Added TownMapHotkeysFix to prevent players from using number keys to enter unknown areas on a town map. (original DisableHotkeysForUnknownAreasInCity is a bit too long IMO.)
3. Added EnableMusicInDialogue to leave the music playing in dialogue with talking heads.
Removed WieldObjCritterFix from ddraw.ini (was planning to do so in 3.7 but forgot)
Set DialogOptions9Lines enabled by default.
2015-11-03 16:14:27 +08:00
NovaRain 25e2939fd0 Removed obsolete Jim's damage formula. 2015-10-28 10:43:11 +08:00
NovaRain 019d2d7095 Set InventoryDragIssuesFix enabled by default. 2015-10-27 15:21:26 +08:00
NovaRain c34dc2700a Added an optional bug fix for the car charging issues, and made some changes in the wording.
Fixed the incorrect setting in CriticalOverrides.ini.
Updated version number for 3.7 release.
Unified tab/spaces usage, tweaked some typesettings, and trimmed trailing spaces in documents.
2015-10-27 12:26:01 +08:00
phobos2077 017b958b69 Updated hook script docs. 2015-10-25 21:43:13 +07:00
phobos2077 0e0ca799f1 Added HOOK_INVENWIELD hook, called when NPC's wielding or unwielding weapons or armor. 2015-10-25 21:40:03 +07:00
phobos2077 5158e5734a Used constants in hook init section. 2015-10-25 20:26:24 +07:00
phobos2077 e7f5b73e4c Used HOOK_* constants for hook script IDs. 2015-10-25 20:12:41 +07:00
phobos2077 c6a4150037 fix code style in Logging.cpp 2015-10-11 18:29:09 +07:00
phobos2077 59e725793e #2: Merged sfall debugging features into "normal" builds, thus removing TRACE preprocessor variable and "Trace" build configurations. Added [Debugging].Enable flag to ddraw.ini instead.
Made all Debugging settings to be consistently loaded from main ddraw.ini only (as it says in comments in ddraw.ini), ignoring command line INI override for that section.
2015-10-11 16:42:21 +07:00
NovaRain 65492941cc Added a break to prevent unexpected issue. 2015-10-06 13:12:47 +08:00
NovaRain 60ef5e91a1 minor changes for AmmoMod.cpp 2015-10-06 10:01:55 +08:00
NovaRain e907a8905b Integrated a minor feature and code changes from Crafty's mod:
1. Added DisplayBonusDamage setting to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory.
2. Tweaked BonusHtHDamageFix to make it and DisplayBonusDamage interact with each other better.
3. Partially refactored code with proper engine function/variable names.
2015-10-05 16:59:47 +08:00
NovaRain 44eae76402 Fixed two issues caused by enabling PerksFile setting:
1. Both Armor Class and Melee Damage got increased by Heavy Handed trait.
2. Melee Damage bonus from Heavy Handed was less than it should have.
2015-10-01 14:45:09 +08:00
NovaRain 5b2eea0bd7 Removed explicit zero-initialization of two variables for highlight function. 2015-08-17 11:19:46 +08:00
NovaRain 5e42537c42 Changed the naming of a couple of 'hook' functions to reflect their nature better.
Rewrote descriptions of some newly added settings to make them constant with existing text.
2015-08-14 12:26:08 +08:00
NovaRain 582fa35483 Removed highlight color setting for containers.
Its functionality now merged with HighlightContainers. Can only be set to yellow and purple. (Maybe just set it to only one color after phobos2077 checks the outline color scheme in game engine.)
2015-08-04 10:42:25 +08:00
NovaRain dc67cb3b7f Removed highlight color customization settings for items.
Reverted highlight color for mouseovering items on the ground back to yellow as in vanilla (was changed to purple by Crafty)
Prepare to remove highlight color customization for containers as well. Reason: very limited color selection, no point in adding separated settings for it.
2015-08-03 11:58:53 +08:00
NovaRain 6e1235147b Added a quick-and-dirty way to customize highlight colors.
Currently experimental only, need some serious reworking.
2015-07-29 16:07:26 +08:00
NovaRain 03ddd2e12e Removed unnecessary defines. 2015-07-27 11:21:22 +08:00
NovaRain 35380171cf Now Dodgy Door Fix is applied to both melee and ranged attacks. 2015-07-22 10:38:18 +08:00
NovaRain 77b299aeba Added final version of 'NPC turns into a container' bug fix
Also added related definitions in corresponding source files
2015-07-22 10:33:34 +08:00
phobos2077 0c08d872cf Added fix for NPC Turns into a container bug. 2015-07-20 01:14:23 +07:00
phobos2077 56aee27141 Added optional bug fixes: NPCDrugAddictionFix, ArmorCorruptsNPCStatsFix. (descriptions are in ddraw.ini)
Added minor fix for "Wt." text on party member barter screen.
2015-07-20 00:56:08 +07:00
phobos2077 c27a0b0b61 Added fixes for inventory drag&drop issues, related to reverse order of items in memory relative to visual order in which items appear on screen. Fixes enabled using [Misc].InventoryDragIssuesFix option. 2015-07-19 01:47:58 +07:00
phobos2077 f10e894201 - Enabled fix for minor exploit when you can gain stats from drugs more than two times using save/load.
- Added option [Misc].DialogOptions9Lines  that allows to use 9 lines of text correctly in dialog reply window.
2015-07-19 00:53:18 +07:00
phobos2077 ac5eebe0d0 added optional fix for "Too Many Items Bug" and renamed some hook functions 2015-07-18 19:38:56 +07:00
VladislavKolosovsky 6257566685 #1: enabled the following bug fixes from Crafty (without changes):
- Fix crash when using stimpak on a victim and then exiting the map
- Fix of invalid stats when party member gains a level while being on drugs
- Fix for "Unlimited Ammo bug"
- Fix for negative values in Skilldex window ("S")
2015-07-16 02:07:29 +07:00
VladislavKolosovsky 06f42daac4 Translating comments 2015-07-16 01:39:39 +07:00
VladislavKolosovsky 28e41be6ba #1: Refactoring: move some of the bug fixes to Bugs.cpp, use Crafty's approach at those fixes (no new fixes added yet)
Translated all comments from Russian
2015-07-16 01:39:25 +07:00
VladislavKolosovsky bdacbe2c3e indent fix 2015-07-16 00:37:26 +07:00
VladislavKolosovsky 40510597e4 #4:
- added HighlightContainers variable in Input section of ddraw.ini - if enabled, containers will be highlighted as well as items (in light gray color)
- partially refactor code to use proper engine function/variable names
2015-07-16 00:37:05 +07:00
VladislavKolosovsky 99f63985fc #1: added new engine-related defines and constants 2015-07-15 22:46:59 +07:00
VladislavKolosovsky 3caefe5fae #4: allow several values in ExtraCRC parameter (separated by space) 2015-07-15 21:40:03 +07:00
NovaRain f0ecb65962 Removed BlackSkilldexFix, JetAntidoteFix, SpecialUnarmedAttacksFix and DodgyDoorsFix from ddraw.ini 2015-07-13 10:25:06 +08:00
VladislavKolosovskyandNovaRain b9de2e07de Remove all absolute paths from VS project file. Use postbuild.cmd for post build events. 2015-07-13 10:25:05 +08:00
NovaRain 1b3017c470 Integrated fixes and minor features from Crafty's mod
1. bug fix for SpeedInterfaceCounterAnims
2. new Sharpshooter fix proposed by Slider2k
3. added StackEmptyWeapons
4. updated Credits
2015-07-13 10:22:48 +08:00
VladislavKolosovsky 2f2d2e112f Remove all absolute paths from VS project file. Use postbuild.cmd for post build events. 2015-07-08 00:51:46 +07:00
VladislavKolosovsky b82348ed33 Added full ddraw.ini + other config files and all relevant artifacts from latest modderspack. 2015-07-07 00:44:58 +07:00
VladislavKolosovsky cafa0158a7 Extend message_str_game function to support all pro_*.msg files as well. 2015-07-07 00:16:25 +07:00
VladislavKolosovsky 302789a948 update readme 2015-06-30 01:21:44 +07:00
VladislavKolosovsky b8813ee6c7 commit latest source from official SourceForge repo 2015-06-30 00:07:12 +07:00
Vlad 757f4a6db3 Initial commit 2015-06-29 23:50:46 +07:00
295 changed files with 45412 additions and 10474 deletions
+222
View File
@@ -0,0 +1,222 @@
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# NetBeans
nbproject/private/
build/
nbbuild/
dist/
nbdist/
nbactions.xml
nb-configuration.xml
.nb-gradle/
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015 cache/options directory
.vs/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# DNX
project.lock.json
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# TODO: Comment the next line if you want to checkin your web deploy settings
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/packages/*
# except build/, which is used as an MSBuild target.
!**/packages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
sfall/postbuild.cmd
View File
-1
View File
File diff suppressed because one or more lines are too long
+675
View File
File diff suppressed because it is too large Load Diff
+182
View File
@@ -0,0 +1,182 @@
namespace FalloutClient {
partial class DebugEditor {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if(disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.bGlobals = new System.Windows.Forms.Button();
this.bMapVars = new System.Windows.Forms.Button();
this.bCritters = new System.Windows.Forms.Button();
this.bSGlobals = 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();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column0,
this.Column1,
this.Column2,
this.Column3});
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(444, 215);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
//
// 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
//
this.Column0.HeaderText = "ID";
this.Column0.Name = "Column0";
this.Column0.ReadOnly = true;
//
// Column1
//
this.Column1.HeaderText = "Name";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
//
// Column2
//
this.Column2.HeaderText = "Value (Int)";
this.Column2.Name = "Column2";
//
// Column3
//
this.Column3.HeaderText = "Value (Float)";
this.Column3.Name = "Column3";
//
// bEdit
//
this.bEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.bEdit.Location = new System.Drawing.Point(225, 262);
this.bEdit.Name = "bEdit";
this.bEdit.Size = new System.Drawing.Size(100, 23);
this.bEdit.TabIndex = 6;
this.bEdit.Text = "Edit";
this.bEdit.UseVisualStyleBackColor = true;
this.bEdit.Click += new System.EventHandler(this.bEdit_Click);
//
// DebugEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(468, 297);
this.Controls.Add(this.bEdit);
this.Controls.Add(this.bArrays);
this.Controls.Add(this.bSGlobals);
this.Controls.Add(this.bCritters);
this.Controls.Add(this.bMapVars);
this.Controls.Add(this.bGlobals);
this.Controls.Add(this.dataGridView1);
this.Name = "DebugEditor";
this.Text = "DebugEditor";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DebugEditor_FormClosing);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Button bGlobals;
private System.Windows.Forms.Button bMapVars;
private System.Windows.Forms.Button bCritters;
private System.Windows.Forms.Button bSGlobals;
private System.Windows.Forms.Button bArrays;
private System.Windows.Forms.DataGridViewTextBoxColumn Column0;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
private System.Windows.Forms.Button bEdit;
}
}
+300
View File
@@ -0,0 +1,300 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using File=System.IO.File;
using StreamReader=System.IO.StreamReader;
using MemoryStream=System.IO.MemoryStream;
using BinaryReader=System.IO.BinaryReader;
using BinaryWriter=System.IO.BinaryWriter;
namespace FalloutClient {
public partial class DebugEditor : Form {
[System.Runtime.InteropServices.StructLayout(System.Runtime.InteropServices.LayoutKind.Explicit)]
private struct ByteConverter {
[System.Runtime.InteropServices.FieldOffset(0)]
private int i;
[System.Runtime.InteropServices.FieldOffset(0)]
private float f;
public int GetAsInt(float f) {
this.f=f;
return i;
}
public float GetAsFloat(int i) {
this.i=i;
return f;
}
public byte[] GetAsBytes(ulong ul) {
byte[] b=new byte[8];
for(int i=0;i<8;i++) b[i]=(byte)((ul&((ulong)0xff<<(i*8)))>>(i*8));
return b;
}
}
private static ByteConverter converter=new ByteConverter();
private enum Mode { Globals, MapVars, SGlobals, Arrays, Critters }
private readonly EditorConnection connection;
private Mode mode;
private readonly Dictionary<int, string> GlobNames=new Dictionary<int, string>();
private readonly Dictionary<uint, string> CritNames=new Dictionary<uint, string>();
private void Redraw() {
dataGridView1.SuspendLayout();
dataGridView1.Rows.Clear();
switch(mode) {
case Mode.Globals:
Column2.ReadOnly=false;
Column3.ReadOnly=false;
Column2.HeaderText="Value (Int)";
Column3.HeaderText="Value (Float)";
bEdit.Enabled=false;
for(int i=0;i<connection.Globals.Length;i++) {
string name=GlobNames.ContainsKey(i)?GlobNames[i]:"";
dataGridView1.Rows.Add(i, name, connection.Globals[i], converter.GetAsFloat(connection.Globals[i]));
}
break;
case Mode.MapVars:
Column2.ReadOnly=false;
Column3.ReadOnly=false;
Column2.HeaderText="Value (Int)";
Column3.HeaderText="Value (Float)";
bEdit.Enabled=false;
for(int i=0;i<connection.MapVars.Length;i++) {
dataGridView1.Rows.Add(i, "", connection.MapVars[i], converter.GetAsFloat(connection.MapVars[i]));
}
break;
case Mode.SGlobals:
Column2.ReadOnly=false;
Column3.ReadOnly=false;
Column2.HeaderText="Value (Int)";
Column3.HeaderText="Value (Float)";
bEdit.Enabled=false;
for(int i=0;i<connection.SGlobalKeys.Length;i++) {
string s=connection.SGlobalKeys[i]>0xffffffff?new string(System.Text.ASCIIEncoding.ASCII.GetChars(converter.GetAsBytes(connection.SGlobalKeys[i]))):("0x"+connection.SGlobalKeys[i].ToString("x"));
dataGridView1.Rows.Add(s, "", connection.sGlobals[i], converter.GetAsFloat(connection.sGlobals[i]));
}
break;
case Mode.Arrays:
Column2.ReadOnly=true;
Column3.ReadOnly=true;
Column2.HeaderText="Array length";
Column3.HeaderText="Element size";
bEdit.Enabled=true;
for(int i=0;i<connection.Arrays.Length;i++) {
dataGridView1.Rows.Add(connection.Arrays[i], "", connection.ArrayLengths[i], connection.ArrayDataSizes[i]);
}
break;
case Mode.Critters:
Column2.ReadOnly=true;
Column3.ReadOnly=true;
Column2.HeaderText="pid";
Column3.HeaderText="";
bEdit.Enabled=true;
for(int i=0;i<connection.Critters.Length;i++) {
uint modcrit=(connection.Critters[i]&0xfffff);
string name=CritNames.ContainsKey(modcrit)?CritNames[modcrit]:"";
dataGridView1.Rows.Add(i+1, name, connection.Critters[i].ToString("x"), "");
}
break;
}
dataGridView1.ResumeLayout();
}
internal DebugEditor(EditorConnection connection) {
InitializeComponent();
this.connection=connection;
mode=Mode.Globals;
if(File.Exists("globals.txt")) {
StreamReader sr=new StreamReader("globals.txt");
while(!sr.EndOfStream) {
string[] line=sr.ReadLine().Split(' ');
GlobNames[int.Parse(line[0])]=line[1];
}
sr.Close();
}
if(File.Exists("critters.txt")) {
StreamReader sr=new StreamReader("critters.txt");
while(!sr.EndOfStream) {
string line=sr.ReadLine();
CritNames[uint.Parse(line.Remove(line.IndexOf(' ')))]=line.Substring(line.IndexOf(' ')+1);
}
sr.Close();
}
Redraw();
}
private void DebugEditor_FormClosing(object sender, FormClosingEventArgs e) {
connection.WriteDataType(DataTypeSend.Exit);
connection.Close();
}
private void bGlobals_Click(object sender, EventArgs e) {
mode=Mode.Globals;
Redraw();
}
private void bMapVars_Click(object sender, EventArgs e) {
mode=Mode.MapVars;
Redraw();
}
private void bSGlobals_Click(object sender, EventArgs e) {
mode=Mode.SGlobals;
Redraw();
}
private void bArrays_Click(object sender, EventArgs e) {
mode=Mode.Arrays;
Redraw();
}
private void bCritters_Click(object sender, EventArgs e) {
mode=Mode.Critters;
Redraw();
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
int[] array=null;
DataTypeSend dts;
switch(mode) {
case Mode.Globals:
array=connection.Globals;
dts=DataTypeSend.SetGlobal;
break;
case Mode.MapVars:
array=connection.MapVars;
dts=DataTypeSend.SetMapVar;
break;
case Mode.SGlobals:
array=connection.sGlobals;
dts=DataTypeSend.SetSGlobal;
break;
default:
return;
}
if(e.ColumnIndex==2) {
int val;
if(!int.TryParse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), out val)) {
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=array[e.RowIndex];
} else {
array[e.RowIndex]=val;
connection.WriteDataType(dts);
connection.WriteInt(e.RowIndex);
connection.WriteInt(val);
}
} else {
float val;
if(!float.TryParse(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), out val)) {
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=array[e.RowIndex];
} else {
array[e.RowIndex]=converter.GetAsInt(val);
connection.WriteDataType(dts);
connection.WriteInt(e.RowIndex);
connection.WriteInt(converter.GetAsInt(val));
}
}
}
private void bEdit_Click(object sender, EventArgs e) {
if(dataGridView1.SelectedRows.Count!=1) return;
int i=dataGridView1.SelectedRows[0].Index;
switch(mode) {
case Mode.Arrays: {
DataType[] types=new DataType[connection.ArrayLengths[i]];
string[] strings=new string[connection.ArrayLengths[i]];
connection.WriteDataType(DataTypeSend.GetArray);
connection.WriteInt(i);
for(int j=0;j<strings.Length;j++) types[j]=(DataType)connection.ReadInt();
byte[] buf=connection.ReadBytes(connection.ArrayLengths[i]*connection.ArrayDataSizes[i]);
MemoryStream ms=new MemoryStream(buf);
BinaryReader br=new BinaryReader(ms);
for(int j=0;j<strings.Length;j++) {
ms.Position=j*connection.ArrayDataSizes[i];
switch(types[j]) {
case DataType.Int:
strings[j]=br.ReadInt32().ToString();
break;
case DataType.Float:
strings[j]=br.ReadSingle().ToString();
break;
case DataType.String:
byte[] bytes=br.ReadBytes(connection.ArrayDataSizes[i]);
strings[j]=System.Text.Encoding.ASCII.GetString(bytes, 0, Array.IndexOf<byte>(bytes, 0));
break;
}
}
br.Close();
strings=EditorWindow.ShowEditor(null, types, strings);
if(strings!=null) {
connection.WriteDataType(DataTypeSend.SetArray);
connection.WriteInt(i);
ms=new MemoryStream(connection.ArrayLengths[i]*connection.ArrayDataSizes[i]);
BinaryWriter bw=new BinaryWriter(ms);
for(int j=0;j<strings.Length;j++) {
ms.Position=j*connection.ArrayDataSizes[i];
switch(types[j]) {
case DataType.Int:
bw.Write(int.Parse(strings[j]));
break;
case DataType.Float:
bw.Write(float.Parse(strings[j]));
break;
case DataType.String:
byte[] bytes=System.Text.Encoding.ASCII.GetBytes(strings[j]);
if(bytes.Length<connection.ArrayDataSizes[i]) bw.Write(bytes);
else bw.Write(bytes, 0, connection.ArrayDataSizes[i]-1);
bw.Write(0);
break;
}
}
connection.WriteBytes(ms.GetBuffer(), 0, connection.ArrayLengths[i]*connection.ArrayDataSizes[i]);
bw.Close();
}
}
break;
case Mode.Critters: {
DataType[] types=new DataType[29];
string[] strings=new string[29];
string[] names=new string[29];
connection.WriteDataType(DataTypeSend.RetrieveCritter);
connection.WriteInt(i);
BinaryReader br=new BinaryReader(new System.IO.MemoryStream(connection.ReadBytes(29*4)));
for(int j=0;j<29;j++) {
types[j]=DataType.Int;
strings[j]=br.ReadInt32().ToString();
names[j]="0x"+(j*4).ToString("x");
}
br.Close();
names[1]="Tile";
names[10]="Elevation";
names[11]="Inventory count";
names[13]="Inventory pointer";
names[16]="Current AP";
names[17]="Crippled limbs";
names[22]="HP";
names[23]="Rads";
names[24]="Poison";
names[25]="Proto ID";
strings=EditorWindow.ShowEditor(names, types, strings);
if(strings!=null) {
MemoryStream ms=new MemoryStream(29*4);
BinaryWriter bw=new BinaryWriter(ms);
for(int j=0;j<29;j++) bw.Write(int.Parse(strings[j]));
connection.WriteDataType(DataTypeSend.SetCritter);
connection.WriteInt(i);
connection.WriteBytes(ms.GetBuffer(), 0, 29*4);
bw.Close();
}
}
break;
}
}
}
}
+132
View File
@@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Column0.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+103
View File
@@ -0,0 +1,103 @@
using System;
using System.Net.Sockets;
using System.IO;
namespace FalloutClient {
class EditorConnection {
private TcpClient client;
private NetworkStream stream;
private BinaryReader br;
private BinaryWriter bw;
public readonly int[] Globals;
public readonly int[] MapVars;
public readonly uint[] Critters;
public readonly ulong[] SGlobalKeys;
public readonly int[] sGlobals;
public readonly uint[] Arrays;
public readonly int[] ArrayLengths;
public readonly int[] ArrayDataSizes;
public EditorConnection() {
System.Threading.Thread.Sleep(1000);
client=new TcpClient("127.0.0.1", 4245);
stream=client.GetStream();
br=new BinaryReader(stream);
bw=new BinaryWriter(stream);
Globals=new int[br.ReadInt32()];
MapVars=new int[br.ReadInt32()];
SGlobalKeys=new ulong[br.ReadInt32()];
sGlobals=new int[SGlobalKeys.Length];
Arrays=new uint[br.ReadInt32()];
ArrayLengths=new int[Arrays.Length];
ArrayDataSizes=new int[Arrays.Length];
Critters=new uint[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<sGlobals.Length;i++) {
SGlobalKeys[i]=br.ReadUInt64();
sGlobals[i]=br.ReadInt32();
br.ReadInt32();
}
for(int i=0;i<Arrays.Length;i++) {
Arrays[i]=br.ReadUInt32();
ArrayLengths[i]=br.ReadInt32();
ArrayDataSizes[i]=br.ReadInt32();
}
for(int i=0;i<Critters.Length;i++) Critters[i]=br.ReadUInt32();
}
public void Close() {
stream.Close();
client.Close();
stream=null;
client=null;
}
public void WriteDataType(DataTypeSend type) {
stream.WriteByte((byte)type);
//bw.Write((byte)type);
}
public void WriteByte(byte b) { bw.Write(b); }
public void WriteInt16(short 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, int start, int len) {
bw.Write(buf, start, len);
}
public void Read(byte[] buffer) {
int upto=0;
while(upto<buffer.Length) {
upto+=stream.Read(buffer, upto, buffer.Length-upto);
}
}
public void Read(byte[] buffer, int offset, int length) {
int upto=0;
//System.Diagnostics.Debug.WriteLine("Read - offset: "+offset+" length: "+length);
while(upto<length) {
upto+=stream.Read(buffer, offset+upto, length-upto);
}
}
public int ReadByte() {
//System.Diagnostics.Debug.WriteLine("Read byte");
return stream.ReadByte();
}
public int ReadShort() {
//System.Diagnostics.Debug.WriteLine("Read short");
return br.ReadInt16();
}
public int ReadInt() {
//System.Diagnostics.Debug.WriteLine("Read int");
return br.ReadInt32();
}
public uint ReadUInt() {
//System.Diagnostics.Debug.WriteLine("Read uint");
return br.ReadUInt32();
}
public byte[] ReadBytes(int count) {
return br.ReadBytes(count);
}
}
}
+116
View File
@@ -0,0 +1,116 @@
namespace FalloutClient {
partial class EditorWindow {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if(disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
this.bSave = new System.Windows.Forms.Button();
this.bCancel = new System.Windows.Forms.Button();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.SuspendLayout();
//
// bSave
//
this.bSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.bSave.Location = new System.Drawing.Point(281, 265);
this.bSave.Name = "bSave";
this.bSave.Size = new System.Drawing.Size(75, 23);
this.bSave.TabIndex = 0;
this.bSave.Text = "Save";
this.bSave.UseVisualStyleBackColor = true;
this.bSave.Click += new System.EventHandler(this.bSave_Click);
//
// bCancel
//
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.Name = "bCancel";
this.bCancel.Size = new System.Drawing.Size(75, 23);
this.bCancel.TabIndex = 1;
this.bCancel.Text = "Cancel";
this.bCancel.UseVisualStyleBackColor = true;
this.bCancel.Click += new System.EventHandler(this.bCancel_Click);
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2,
this.Column3});
this.dataGridView1.Location = new System.Drawing.Point(12, 12);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.Size = new System.Drawing.Size(344, 247);
this.dataGridView1.TabIndex = 2;
this.dataGridView1.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellEndEdit);
//
// Column1
//
this.Column1.HeaderText = "Name";
this.Column1.Name = "Column1";
this.Column1.ReadOnly = true;
//
// Column2
//
this.Column2.HeaderText = "Type";
this.Column2.Name = "Column2";
this.Column2.ReadOnly = true;
//
// Column3
//
this.Column3.HeaderText = "Value";
this.Column3.Name = "Column3";
//
// EditorWindow
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(368, 300);
this.Controls.Add(this.dataGridView1);
this.Controls.Add(this.bCancel);
this.Controls.Add(this.bSave);
this.Name = "EditorWindow";
this.Text = "EditorWindow";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button bSave;
private System.Windows.Forms.Button bCancel;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
}
}
+56
View File
@@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
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) {
this.types=types;
this.values=values;
InitializeComponent();
dataGridView1.SuspendLayout();
if(names==null) for(int i=0;i<types.Length;i++) dataGridView1.Rows.Add(i.ToString(), types[i].ToString(), values[i]);
else for(int i=0;i<types.Length;i++) dataGridView1.Rows.Add(names[i], types[i].ToString(), values[i]);
dataGridView1.ResumeLayout();
}
public static string[] ShowEditor(string[] names, DataType[] types, string[] values) {
EditorWindow editor=new EditorWindow(names, types, values);
editor.ShowDialog();
if(editor.save) return editor.values;
else return null;
}
private bool CheckInput(DataType type, string str) {
switch(type) {
case DataType.Int:
int i;
return int.TryParse(str, out i);
case DataType.Float:
float f;
return float.TryParse(str, out f);
}
return true;
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
string str=(string)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
if(CheckInput(types[e.RowIndex], str)) values[e.RowIndex]=str;
else dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value=values[e.RowIndex];
}
private void bCancel_Click(object sender, EventArgs e) {
Close();
}
private void bSave_Click(object sender, EventArgs e) {
save=true;
Close();
}
}
}
+138
View File
@@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+76
View File
@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>FalloutClient</RootNamespace>
<AssemblyName>FalloutClient</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="DebugEditor.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DebugEditor.Designer.cs">
<DependentUpon>DebugEditor.cs</DependentUpon>
</Compile>
<Compile Include="EditorConnection.cs" />
<Compile Include="EditorWindow.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="EditorWindow.Designer.cs">
<DependentUpon>EditorWindow.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="DebugEditor.resx">
<DependentUpon>DebugEditor.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="EditorWindow.resx">
<DependentUpon>EditorWindow.cs</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- 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.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>copy "$(TargetPath)" "C:\Games\Fallout2\$(TargetName)$(TargetExt)"</PostBuildEvent>
</PropertyGroup>
</Project>
+19
View File
@@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MPClient", "MPClient.csproj", "{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80ED0DCE-100E-4EC9-A79D-2FBFA4CAD1E3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
+28
View File
@@ -0,0 +1,28 @@
using System;
using System.Windows.Forms;
using System.IO;
namespace FalloutClient {
static class Program {
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args) {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if(args.Length==1&&args[0]=="-debugedit") {
Application.Run(new DebugEditor(new EditorConnection()));
} else {
throw new Exception("Multiplayer is no longer supported");
}
}
}
enum DataTypeSend {
Mouse=0, LMouseDown=1, LMouseUp=2, RMouseDown=3, RMouseUp=4, TakeChar=5, ReleaseChar=6,
SetGlobal=0, SetMapVar=1, RetrieveCritter=2, SetCritter=3, SetSGlobal=4, GetArray=9, SetArray=10,
Exit=254
}
}
+33
View File
@@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("FalloutClient")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FalloutClient")]
[assembly: AssemblyCopyright("Copyright © 2009")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6b3c8cd6-54f0-4f35-a87e-50f760ad36fd")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+3
View File
@@ -0,0 +1,3 @@
Apparently this project was intended as some kind of Multiplayer module for Fallout 2.
Now it only works as a supplement for sfall debugging mode. It shows a lists of: game objects, sfall globals, arrays, etc (in a separate window). Primarily focused on debugging sfall-enabled scripts.
+16
View File
@@ -0,0 +1,16 @@
# 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.
Engine modifications include:
- Better support for modern operating systems
- Externalizing many settings like starting map and game time, skills, perks, critical hit tables, books, etc.
- Bug fixes
- Many additional features for users, such as item highlight button, party member control, etc.
- Extended scripting capabilities for modders (many new opcodes to control sfall features as well as previously unavailable vanilla engine functions)
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.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long

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