mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
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.
This commit is contained in:
@@ -8,9 +8,9 @@
|
|||||||
|
|
||||||
[c_00] ; The entries for the 'men' critter type
|
[c_00] ; The entries for the 'men' critter type
|
||||||
Enabled=1 ; Tell sfall that we want to modify this table
|
Enabled=1 ; Tell sfall that we want to modify this table
|
||||||
Part0=1 ; Tell sfall that we want to modify the head entries
|
Part_0=1 ; Tell sfall that we want to modify the head entries
|
||||||
; If we had set 'Enabled=2' then sfall will assume you want to modify all
|
; If we had set 'Enabled=2' then sfall will assume you want to modify all
|
||||||
; parts, and will not check the PartX entries
|
; parts, and will not check the Part_X entries
|
||||||
|
|
||||||
[c_00_0] ; The entries for the head table of the men critter type.
|
[c_00_0] ; The entries for the head table of the men critter type.
|
||||||
e0_DamageMultiplier=100 ;First level critical
|
e0_DamageMultiplier=100 ;First level critical
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
sfall's main configuration options appear in ddraw.ini, but there are several other configuration files that it can read in for modding purposes.
|
sfall's main configuration options appear in ddraw.ini, but there are several other configuration files that it can read in for modding purposes.
|
||||||
|
|
||||||
books.ini: Lets you override/add books to the game (associated PIDs, skills and messages)
|
Books.ini: Lets you override/add books to the game (associated object PIDs, skills and text messages)
|
||||||
perks.ini: Lets you override the name/description/frm image/other stats of perks and traits
|
Perks.ini: Lets you override the name/description/frm image/other stats of perks and traits
|
||||||
elevators.ini: Lets you override which elevators lead where
|
Elevators.ini: Lets you override which elevators lead where
|
||||||
CriticalOverrides.ini: Lets you make modifications to the critical hit tables
|
CriticalOverrides.ini: Lets you make modifications to the critical hit tables
|
||||||
Translations.ini: Contains some text strings which sfall displays, to allow their translation
|
Translations.ini: Contains some text strings which sfall displays, to allow their translation
|
||||||
Skills.ini: Lets you change the formula used for calculating skills
|
Skills.ini: Lets you change the formula used for calculating skills
|
||||||
stats.ini: Lets you change the formula used to calculate the derived stats
|
Stats.ini: Lets you change the formula used to calculate the derived stats
|
||||||
|
|||||||
+28
-25
@@ -17,7 +17,7 @@ NumSoundBuffers=0
|
|||||||
;Set to 1 to allow attaching sound files to combat float messages
|
;Set to 1 to allow attaching sound files to combat float messages
|
||||||
AllowSoundForFloats=1
|
AllowSoundForFloats=1
|
||||||
|
|
||||||
;Set to 1 to automatically search for alternative formats when fallout tries to play an acm
|
;Set to 1 to automatically search for alternative formats when Fallout tries to play an acm
|
||||||
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
|
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
|
||||||
AllowDShowSound=0
|
AllowDShowSound=0
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ Mode=0
|
|||||||
|
|
||||||
;If using a dx9 mode, this changes the resolution
|
;If using a dx9 mode, this changes the resolution
|
||||||
;The graphics are simply stretched to fit the new window; this does _not_ let you see more of the map
|
;The graphics are simply stretched to fit the new window; this does _not_ let you see more of the map
|
||||||
;If set to 0, use fallout's native resolution
|
;If set to 0, use Fallout's native resolution
|
||||||
GraphicsWidth=0
|
GraphicsWidth=0
|
||||||
GraphicsHeight=0
|
GraphicsHeight=0
|
||||||
|
|
||||||
@@ -82,7 +82,7 @@ UseScrollWheel=1
|
|||||||
ScrollMod=0
|
ScrollMod=0
|
||||||
|
|
||||||
;Adjusts mouse sensitivity to some percentage of normal.
|
;Adjusts mouse sensitivity to some percentage of normal.
|
||||||
;Negative values are valid, if you want your mouse axis reversed for some reason
|
;Negative values are valid if you want your mouse axis reversed for some reason
|
||||||
MouseSensitivity=100
|
MouseSensitivity=100
|
||||||
|
|
||||||
;DX scancode of a key to press when the middle mouse button is clicked
|
;DX scancode of a key to press when the middle mouse button is clicked
|
||||||
@@ -93,7 +93,7 @@ MiddleMouse=0x30
|
|||||||
;Set to 1 to reverse the left and right mouse buttons
|
;Set to 1 to reverse the left and right mouse buttons
|
||||||
ReverseMouseButtons=0
|
ReverseMouseButtons=0
|
||||||
|
|
||||||
;Set these to 1 if you want fallout to access the keyboard or mouse in background mode
|
;Set these to 1 if you want Fallout to access the keyboard or mouse in background mode
|
||||||
;Try these if you get the 'Failure initializing input devices' error
|
;Try these if you get the 'Failure initializing input devices' error
|
||||||
BackgroundKeyboard=0
|
BackgroundKeyboard=0
|
||||||
BackgroundMouse=0
|
BackgroundMouse=0
|
||||||
@@ -147,7 +147,7 @@ DebugEditorKey=0
|
|||||||
;Set to 0 if you want to die the instant you leave arroyo
|
;Set to 0 if you want to die the instant you leave arroyo
|
||||||
;Set to -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it
|
;Set to -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it
|
||||||
;Set to -2 to remove the time limit without resetting the date. The game will lock up on 8th of March 2255
|
;Set to -2 to remove the time limit without resetting the date. The game will lock up on 8th of March 2255
|
||||||
;Set to -3 to remove the time limit, automatically reset the date, but override fallouts GetDate function to return the correct year
|
;Set to -3 to remove the time limit, automatically reset the date, but override Fallout's GetDate function to return the correct year
|
||||||
TimeLimit=13
|
TimeLimit=13
|
||||||
|
|
||||||
;World map travel time percentage modifier
|
;World map travel time percentage modifier
|
||||||
@@ -158,7 +158,7 @@ WorldMapTimeMod=100
|
|||||||
;Set to 1 to enable functions relating to overriding the file system
|
;Set to 1 to enable functions relating to overriding the file system
|
||||||
UseFileSystemOverride=0
|
UseFileSystemOverride=0
|
||||||
|
|
||||||
;Set to 1 to use the fallout 1 code to control world map speed
|
;Set to 1 to use the Fallout 1 code to control world map speed
|
||||||
WorldMapFPSPatch=1
|
WorldMapFPSPatch=1
|
||||||
|
|
||||||
;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement
|
;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement
|
||||||
@@ -169,7 +169,7 @@ WorldMapDelay2=66
|
|||||||
;XX ;This will change the physical speed at which you move across the map
|
;XX ;This will change the physical speed at which you move across the map
|
||||||
;XX ;Set to 0 to leave at the default. (i.e. limited by vwait in windowed mode, or by processor speed in fullscreen)
|
;XX ;Set to 0 to leave at the default. (i.e. limited by vwait in windowed mode, or by processor speed in fullscreen)
|
||||||
;XX ;If set to something other than 0, it enforces a maximum fps on the world map screen.
|
;XX ;If set to something other than 0, it enforces a maximum fps on the world map screen.
|
||||||
;XX ;Changing this to something other than 0 is not recommended if you've already applied a world map speed patch to your fallout exe.
|
;XX ;Changing this to something other than 0 is not recommended if you've already applied a world map speed patch to your Fallout exe.
|
||||||
;XX WorldMapFPS=0
|
;XX WorldMapFPS=0
|
||||||
;XX
|
;XX
|
||||||
;XX ;Only set to 1 if your systems high performance timer is unreliable for some reason
|
;XX ;Only set to 1 if your systems high performance timer is unreliable for some reason
|
||||||
@@ -192,10 +192,10 @@ WorldMapSlots=0
|
|||||||
;StartingMap=
|
;StartingMap=
|
||||||
|
|
||||||
;To change the 'FALLOUT II v1.02d' version string on the main menu, uncomment the next line
|
;To change the 'FALLOUT II v1.02d' version string on the main menu, uncomment the next line
|
||||||
;You can use up to 2 %d's in this, if you want to include fallouts version number somewhere
|
;You can use up to 2 %d's in this if you want to include Fallout's version number somewhere
|
||||||
;VersionString=
|
;VersionString=
|
||||||
|
|
||||||
;To use a config file other than fallout.cfg, uncomment the next line and add the name of your new file
|
;To use a config file other than fallout2.cfg, uncomment the next line and add the name of your new file
|
||||||
;ConfigFile=
|
;ConfigFile=
|
||||||
|
|
||||||
;To use a patch file other than patch000.dat, uncomment the next line and add your new file name
|
;To use a patch file other than patch000.dat, uncomment the next line and add your new file name
|
||||||
@@ -261,7 +261,7 @@ ExtraKillTypes=0
|
|||||||
;0 - Fallout default
|
;0 - Fallout default
|
||||||
;1 - Glovz's Damage Fix
|
;1 - Glovz's Damage Fix
|
||||||
;2 - Glovz's Damage Fix with Damage Multiplier tweak
|
;2 - Glovz's Damage Fix with Damage Multiplier tweak
|
||||||
;4 - Jim's Formula
|
;4 - Jim's Formula for the Mechanics Overhaul Mod
|
||||||
;5 - Haenlomal's Yet Another Ammo Mod.
|
;5 - Haenlomal's Yet Another Ammo Mod.
|
||||||
DamageFormula=0
|
DamageFormula=0
|
||||||
|
|
||||||
@@ -282,7 +282,7 @@ StartYPos=-1
|
|||||||
ViewXPos=-1
|
ViewXPos=-1
|
||||||
ViewYPos=-1
|
ViewYPos=-1
|
||||||
|
|
||||||
;Set to 1 for force fallout not to use multiple processor cores even if they are available
|
;Set to 1 to force Fallout not to use multiple processor cores even if they are available
|
||||||
SingleCore=1
|
SingleCore=1
|
||||||
|
|
||||||
;Set to 1 to override the art_chache_size setting in fallout2.cfg
|
;Set to 1 to override the art_chache_size setting in fallout2.cfg
|
||||||
@@ -432,7 +432,7 @@ NPCStage6Fix=0
|
|||||||
;Set to 1 to fix the problem with melee weapon equiped npcs being unable to attack multi-hex critters
|
;Set to 1 to fix the problem with melee weapon equiped npcs being unable to attack multi-hex critters
|
||||||
MultiHexPathingFix=1
|
MultiHexPathingFix=1
|
||||||
|
|
||||||
;Change the colour of the font used on the main menu for the fallout/sfall version number
|
;Change the colour of the font used on the main menu for the Fallout/sfall version number
|
||||||
;It's the last byte ('3c' by default,) that picks the colour used. The first byte supplies additional flags
|
;It's the last byte ('3c' by default,) that picks the colour used. The first byte supplies additional flags
|
||||||
;MainMenuFontColour=0x0600003c
|
;MainMenuFontColour=0x0600003c
|
||||||
|
|
||||||
@@ -538,7 +538,7 @@ ControlCombat=0
|
|||||||
StackEmptyWeapons=0
|
StackEmptyWeapons=0
|
||||||
|
|
||||||
;Allows 9 options (lines of text) to be displayed correctly in a dialog window
|
;Allows 9 options (lines of text) to be displayed correctly in a dialog window
|
||||||
DialogOptions9Lines=1
|
DialogOptions9Lines=0
|
||||||
|
|
||||||
|
|
||||||
;Prevents 'Too Many Items' bug from corrupting game saves
|
;Prevents 'Too Many Items' bug from corrupting game saves
|
||||||
@@ -553,49 +553,52 @@ InventoryDragIssuesFix=1
|
|||||||
NPCDrugAddictionFix=1
|
NPCDrugAddictionFix=1
|
||||||
|
|
||||||
;Set to 1 to fix issues with NPC stats being dropped unreasonably if one has mutiple of the same armor in inventory and equips the armor,
|
;Set to 1 to fix issues with NPC stats being dropped unreasonably if one has mutiple of the same armor in inventory and equips the armor,
|
||||||
;And either you order NPC to take off armor via dialog option or one levels up
|
;And either you order NPC to remove the armor through dialog or one levels up
|
||||||
ArmorCorruptsNPCStatsFix=1
|
ArmorCorruptsNPCStatsFix=1
|
||||||
|
|
||||||
;Set to 1 to fix the bug that if you move to another map while NPCs are under 'lost next turn' critical miss effect, they become unresponsive and act like walking containers
|
;Set to 1 to fix the bug that NPCs become unresponsive and act like walking containers if you move to another map while they are under 'lost next turn' critical miss effect
|
||||||
NPCTurnsIntoContainerFix=1
|
NPCTurnsIntoContainerFix=1
|
||||||
|
|
||||||
|
;Set to 1 to fix issues with being able to charge the car with using cells on scenary/critters and cells getting consumed even when the car is already fully charged
|
||||||
|
CarChargingFix=1
|
||||||
|
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
[Debugging]
|
[Debugging]
|
||||||
;Extra sfall configuration settings that can be used by the modders version of sfall
|
;Extra sfall configuration settings that can be used by modders
|
||||||
;This section is not effected by the 'UseCommandLine' option. It will always be read from the main ini
|
;This section is not effected by the 'UseCommandLine' option. It will always be read from the main ini
|
||||||
|
|
||||||
;Set to 1 to enable debugging mode
|
;Set to 1 to enable sfall debugging mode
|
||||||
Enable=0
|
Enable=0
|
||||||
|
|
||||||
;Set to 1 to enable debugging output to screen or 2 to create a debug.log file
|
;Set to 1 to enable debugging output to screen or 2 to create a debug.log file
|
||||||
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout.cfg
|
;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg
|
||||||
DebugMode=0
|
DebugMode=0
|
||||||
|
|
||||||
;Change to 1 to skip the compatibility mode check
|
;Change to 1 to skip the compatibility mode check
|
||||||
SkipCompatModeCheck=1
|
SkipCompatModeCheck=0
|
||||||
|
|
||||||
;Set to 1 to skip the executable file size check
|
;Set to 1 to skip the executable file size check
|
||||||
SkipSizeCheck=0
|
SkipSizeCheck=0
|
||||||
|
|
||||||
;If you're testing changes to the fallout exe, you can override the crc that sfall looks for here
|
;If you're testing changes to the Fallout exe, you can override the crc that sfall looks for here
|
||||||
;You can use several hex values, separated by commas
|
;You can use several hex values, separated by commas
|
||||||
;ExtraCRC=0x00000000,0x00000000
|
;ExtraCRC=0x00000000,0x00000000
|
||||||
|
|
||||||
;Set to 1 to stop fallout from deleting non readonly protos at startup
|
;Set to 1 to stop Fallout from deleting non readonly protos at startup
|
||||||
;Has pretty nasty side effects when saving/reloading, so don't use for regular gameplay
|
;Has pretty nasty side effects when saving/reloading, so don't use for regular gameplay
|
||||||
DontDeleteProtos=0
|
DontDeleteProtos=0
|
||||||
|
|
||||||
;Set to 1 to give scripts direct access to fallouts address space, and to make arbitrary calls into fallout's code
|
;Set to 1 to give scripts direct access to Fallout's address space, and to make arbitrary calls into Fallout's code
|
||||||
AllowUnsafeScripting=1
|
AllowUnsafeScripting=0
|
||||||
|
|
||||||
;These options control what output is saved in the debug log
|
;These options control what output is saved in the debug log
|
||||||
|
|
||||||
;Prints messages duing sfall initialization
|
;Prints messages duing sfall initialization
|
||||||
Init=1
|
Init=0
|
||||||
;Prints messages relating to hook scripts
|
;Prints messages relating to hook scripts
|
||||||
Hook=0
|
Hook=0
|
||||||
;Prints messages relating to scripting
|
;Prints messages relating to scripting
|
||||||
Script=0
|
Script=0
|
||||||
;Prints messages relating to the critical table
|
;Prints messages relating to the critical table
|
||||||
Criticals=1
|
Criticals=0
|
||||||
|
|||||||
@@ -12,44 +12,44 @@
|
|||||||
#define ATTACK_MODE_BURST 7
|
#define ATTACK_MODE_BURST 7
|
||||||
#define ATTACK_MODE_FLAME 8
|
#define ATTACK_MODE_FLAME 8
|
||||||
|
|
||||||
#define OBJ_TYPE_ITEM (0)
|
#define OBJ_TYPE_ITEM (0)
|
||||||
#define OBJ_TYPE_CRITTER (1)
|
#define OBJ_TYPE_CRITTER (1)
|
||||||
#define OBJ_TYPE_SCENERY (2)
|
#define OBJ_TYPE_SCENERY (2)
|
||||||
#define OBJ_TYPE_WALL (3)
|
#define OBJ_TYPE_WALL (3)
|
||||||
#define OBJ_TYPE_TILE (4)
|
#define OBJ_TYPE_TILE (4)
|
||||||
#define OBJ_TYPE_MISC (5)
|
#define OBJ_TYPE_MISC (5)
|
||||||
#define OBJ_TYPE_SPATIAL (6)
|
#define OBJ_TYPE_SPATIAL (6)
|
||||||
|
|
||||||
/* Critter Flags */
|
/* Critter Flags */
|
||||||
#define CFLG_BARTER 2 //0x00000002 - Barter (can trade with)
|
#define CFLG_BARTER 2 //0x00000002 - Barter (can trade with)
|
||||||
#define CFLG_NOSTEAL 32 //0x00000020 - Steal (cannot steal from)
|
#define CFLG_NOSTEAL 32 //0x00000020 - Steal (cannot steal from)
|
||||||
#define CFLG_NODROP 64 //0x00000040 - Drop (doesn't drop items)
|
#define CFLG_NODROP 64 //0x00000040 - Drop (doesn't drop items)
|
||||||
#define CFLG_NOLIMBS 128 //0x00000080 - Limbs (can not lose limbs)
|
#define CFLG_NOLIMBS 128 //0x00000080 - Limbs (cannot lose limbs)
|
||||||
#define CFLG_NOAGES 256 //0x00000100 - Ages (dead body does not disappear)
|
#define CFLG_NOAGES 256 //0x00000100 - Ages (dead body does not disappear)
|
||||||
#define CFLG_NOHEAL 512 //0x00000200 - Heal (damage is not cured with time)
|
#define CFLG_NOHEAL 512 //0x00000200 - Heal (damage is not cured with time)
|
||||||
#define CFLG_INVULN 1024 //0x00000400 - Invulnerable (cannot be hurt)
|
#define CFLG_INVULN 1024 //0x00000400 - Invulnerable (cannot be hurt)
|
||||||
#define CFLG_FLATTN 2048 //0x00000800 - Flatten (leaves no dead body)
|
#define CFLG_FLATTN 2048 //0x00000800 - Flatten (leaves no dead body)
|
||||||
#define CFLG_SPECIAL 4096 //0x00001000 - Special (there is a special type of death)
|
#define CFLG_SPECIAL 4096 //0x00001000 - Special (there is a special type of death)
|
||||||
#define CFLG_RANGED 8192 //0x00002000 - Range (melee attack is possible at a distance)
|
#define CFLG_RANGED 8192 //0x00002000 - Range (melee attack is possible at a distance)
|
||||||
#define CFLG_NOKNOCKDOWN 16384 //0x00004000 - Knock (cannot be knocked down)
|
#define CFLG_NOKNOCKDOWN 16384 //0x00004000 - Knock (cannot be knocked down)
|
||||||
|
|
||||||
//remove inven obj defines
|
//remove inven obj defines
|
||||||
#define RMOBJ_CONSUME_DRUG 4666772
|
#define RMOBJ_CONSUME_DRUG 4666772
|
||||||
#define RMOBJ_CONTAINER 4683293 // same as RMOBJ_TRADE
|
#define RMOBJ_CONTAINER 4683293 // same as RMOBJ_TRADE
|
||||||
#define RMOBJ_USE_OBJ 4666865
|
#define RMOBJ_USE_OBJ 4666865
|
||||||
#define RMOBJ_EQUIP_ARMOR 4658121
|
#define RMOBJ_EQUIP_ARMOR 4658121
|
||||||
#define RMOBJ_EQUIP_WEAPON 4658675
|
#define RMOBJ_EQUIP_WEAPON 4658675
|
||||||
#define RMOBJ_UNLOAD_WEAPON 4667030
|
#define RMOBJ_UNLOAD_WEAPON 4667030
|
||||||
//#definE RMOBJ_LOAD_WEAPON 4831349 // same as RMOBJ_DROP
|
//#define RMOBJ_LOAD_WEAPON 4831349 // same as RMOBJ_DROP
|
||||||
#define RMOBJ_USE_DRUG_ON 4834866
|
#define RMOBJ_USE_DRUG_ON 4834866
|
||||||
#define RMOBJ_STEAL_VIEW 4668206
|
#define RMOBJ_STEAL_VIEW 4668206
|
||||||
//#define RMOBJ_DROP_DYNAMITE 4666865 // same as USE_OBJ
|
//#define RMOBJ_DROP_DYNAMITE 4666865 // same as USE_OBJ
|
||||||
#define RMOBJ_ITEM_DESTROYED 4543215
|
#define RMOBJ_ITEM_DESTROYED 4543215
|
||||||
#define RMOBJ_ITEM_REMOVED 4548572
|
#define RMOBJ_ITEM_REMOVED 4548572
|
||||||
#define RMOBJ_ARMOR_EQUIPED 4651961
|
#define RMOBJ_ARMOR_EQUIPED 4651961
|
||||||
#define RMOBJ_LEFT_HAND_EQUIPED 4651899
|
#define RMOBJ_LEFT_HAND_EQUIPED 4651899
|
||||||
#define RMOBJ_RIGHT_HAND_EQUIPED 4651934
|
#define RMOBJ_RIGHT_HAND_EQUIPED 4651934
|
||||||
#define RMOBJ_RM_MULT_OBJS 4563866
|
#define RMOBJ_RM_MULT_OBJS 4563866
|
||||||
#define RMOBJ_REPLACE_WEAPON 4658526
|
#define RMOBJ_REPLACE_WEAPON 4658526
|
||||||
#define RMOBJ_THROW 4266040
|
#define RMOBJ_THROW 4266040
|
||||||
|
|
||||||
@@ -139,7 +139,6 @@
|
|||||||
#define PROTO_DR_ADDICT_PERK (96)
|
#define PROTO_DR_ADDICT_PERK (96)
|
||||||
#define PROTO_DR_ADDICT_DELAY (100)
|
#define PROTO_DR_ADDICT_DELAY (100)
|
||||||
|
|
||||||
|
|
||||||
// critters
|
// critters
|
||||||
#define PROTO_CR_ACTION_FLAGS (32)
|
#define PROTO_CR_ACTION_FLAGS (32)
|
||||||
#define PROTO_CR_HEAD_FID (40)
|
#define PROTO_CR_HEAD_FID (40)
|
||||||
@@ -194,17 +193,17 @@
|
|||||||
#define PERK_add_tragic (71)
|
#define PERK_add_tragic (71)
|
||||||
#define PERK_armor_charisma (72)
|
#define PERK_armor_charisma (72)
|
||||||
|
|
||||||
#define WPN_ANIM_NONE (0x00) // (A)
|
#define WPN_ANIM_NONE (0x00) // (A)
|
||||||
#define WPN_ANIM_KNIFE (0x01) // (D)
|
#define WPN_ANIM_KNIFE (0x01) // (D)
|
||||||
#define WPN_ANIM_CLUB (0x02) // (E)
|
#define WPN_ANIM_CLUB (0x02) // (E)
|
||||||
#define WPN_ANIM_SLEDGEHAMMER (0x03) // (F)
|
#define WPN_ANIM_SLEDGEHAMMER (0x03) // (F)
|
||||||
#define WPN_ANIM_SPEAR (0x04) // (G)
|
#define WPN_ANIM_SPEAR (0x04) // (G)
|
||||||
#define WPN_ANIM_PISTOL (0x05) // (H)
|
#define WPN_ANIM_PISTOL (0x05) // (H)
|
||||||
#define WPN_ANIM_SMG (0x06) // (I)
|
#define WPN_ANIM_SMG (0x06) // (I)
|
||||||
#define WPN_ANIM_RIFLE (0x07) // (J)
|
#define WPN_ANIM_RIFLE (0x07) // (J)
|
||||||
#define WPN_ANIM_BIG_GUN (0x08) // (K)
|
#define WPN_ANIM_BIG_GUN (0x08) // (K)
|
||||||
#define WPN_ANIM_MINIGUN (0x09) // (L)
|
#define WPN_ANIM_MINIGUN (0x09) // (L)
|
||||||
#define WPN_ANIM_ROCKET_LAUNCHER (0x0A) // (M)
|
#define WPN_ANIM_ROCKET_LAUNCHER (0x0A) // (M)
|
||||||
|
|
||||||
|
|
||||||
#endif // DEFINE_EXTRA_H
|
#endif // DEFINE_EXTRA_H
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
#define HOOK_STEAL (22)
|
#define HOOK_STEAL (22)
|
||||||
#define HOOK_WITHINPERCEPTION (23)
|
#define HOOK_WITHINPERCEPTION (23)
|
||||||
#define HOOK_INVENTORYMOVE (24)
|
#define HOOK_INVENTORYMOVE (24)
|
||||||
#define HOOK_INVENWIELD (25)
|
#define HOOK_INVENWIELD (25)
|
||||||
|
|
||||||
//Valid arguments to list_begin
|
//Valid arguments to list_begin
|
||||||
#define LIST_CRITTERS (0)
|
#define LIST_CRITTERS (0)
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
#define VALTYPE_FLOAT (2)
|
#define VALTYPE_FLOAT (2)
|
||||||
#define VALTYPE_STR (3)
|
#define VALTYPE_STR (3)
|
||||||
|
|
||||||
// Arrays defines
|
//Arrays defines
|
||||||
|
|
||||||
// create persistent list
|
// create persistent list
|
||||||
#define create_array_list(size) (create_array(size, 0))
|
#define create_array_list(size) (create_array(size, 0))
|
||||||
@@ -125,40 +125,40 @@
|
|||||||
#define key_pressed_vk(key) (key_pressed(key bwor 0x80000000))
|
#define key_pressed_vk(key) (key_pressed(key bwor 0x80000000))
|
||||||
|
|
||||||
#define set_attack_explosion_pattern(x, y) metarule2_explosions(1, x, y)
|
#define set_attack_explosion_pattern(x, y) metarule2_explosions(1, x, y)
|
||||||
#define set_attack_explosion_art(x, y) metarule2_explosions(2, x, y)
|
#define set_attack_explosion_art(x, y) metarule2_explosions(2, x, y)
|
||||||
#define set_attack_explosion_radius(x) metarule2_explosions(3, x, 0)
|
#define set_attack_explosion_radius(x) metarule2_explosions(3, x, 0)
|
||||||
#define set_attack_is_explosion(x) metarule2_explosions(4, x, 0)
|
#define set_attack_is_explosion(x) metarule2_explosions(4, x, 0)
|
||||||
#define set_attack_is_explosion_fire set_attack_is_explosion(DMG_fire)
|
#define set_attack_is_explosion_fire set_attack_is_explosion(DMG_fire)
|
||||||
|
|
||||||
|
|
||||||
#define GAME_MSG_COMBAT (0)
|
#define GAME_MSG_COMBAT (0)
|
||||||
#define GAME_MSG_AI (1)
|
#define GAME_MSG_AI (1)
|
||||||
#define GAME_MSG_SCRNAME (2)
|
#define GAME_MSG_SCRNAME (2)
|
||||||
#define GAME_MSG_MISC (3)
|
#define GAME_MSG_MISC (3)
|
||||||
#define GAME_MSG_CUSTOM (4)
|
#define GAME_MSG_CUSTOM (4)
|
||||||
#define GAME_MSG_INVENTRY (5)
|
#define GAME_MSG_INVENTRY (5)
|
||||||
#define GAME_MSG_ITEM (6)
|
#define GAME_MSG_ITEM (6)
|
||||||
#define GAME_MSG_LSGAME (7)
|
#define GAME_MSG_LSGAME (7)
|
||||||
#define GAME_MSG_MAP (8)
|
#define GAME_MSG_MAP (8)
|
||||||
#define GAME_MSG_OPTIONS (9)
|
#define GAME_MSG_OPTIONS (9)
|
||||||
#define GAME_MSG_PERK (10)
|
#define GAME_MSG_PERK (10)
|
||||||
#define GAME_MSG_PIPBOY (11)
|
#define GAME_MSG_PIPBOY (11)
|
||||||
#define GAME_MSG_QUESTS (12)
|
#define GAME_MSG_QUESTS (12)
|
||||||
#define GAME_MSG_PROTO (13)
|
#define GAME_MSG_PROTO (13)
|
||||||
#define GAME_MSG_SCRIPT (14)
|
#define GAME_MSG_SCRIPT (14)
|
||||||
#define GAME_MSG_SKILL (15)
|
#define GAME_MSG_SKILL (15)
|
||||||
#define GAME_MSG_SKILLDEX (16)
|
#define GAME_MSG_SKILLDEX (16)
|
||||||
#define GAME_MSG_STAT (17)
|
#define GAME_MSG_STAT (17)
|
||||||
#define GAME_MSG_TRAIT (18)
|
#define GAME_MSG_TRAIT (18)
|
||||||
#define GAME_MSG_WORLDMAP (19)
|
#define GAME_MSG_WORLDMAP (19)
|
||||||
#define GAME_MSG_PRO_ITEM (0x1000)
|
#define GAME_MSG_PRO_ITEM (0x1000)
|
||||||
#define GAME_MSG_PRO_CRIT (0x1001)
|
#define GAME_MSG_PRO_CRIT (0x1001)
|
||||||
#define GAME_MSG_PRO_SCEN (0x1002)
|
#define GAME_MSG_PRO_SCEN (0x1002)
|
||||||
#define GAME_MSG_PRO_WALL (0x1003)
|
#define GAME_MSG_PRO_WALL (0x1003)
|
||||||
#define GAME_MSG_PRO_TILE (0x1004)
|
#define GAME_MSG_PRO_TILE (0x1004)
|
||||||
#define GAME_MSG_PRO_MISC (0x1005)
|
#define GAME_MSG_PRO_MISC (0x1005)
|
||||||
|
|
||||||
#define mstr_combat(x) (message_str_game(GAME_MSG_COMBAT, x))
|
#define mstr_combat(x) (message_str_game(GAME_MSG_COMBAT, x))
|
||||||
#define mstr_ai(x) (message_str_game(GAME_MSG_AI, x))
|
#define mstr_ai(x) (message_str_game(GAME_MSG_AI, x))
|
||||||
#define mstr_scrname(x) (message_str_game(GAME_MSG_SCRNAME, x))
|
#define mstr_scrname(x) (message_str_game(GAME_MSG_SCRNAME, x))
|
||||||
#define mstr_misc(x) (message_str_game(GAME_MSG_MISC, x))
|
#define mstr_misc(x) (message_str_game(GAME_MSG_MISC, x))
|
||||||
@@ -180,11 +180,10 @@
|
|||||||
#define mstr_worldmap(x) (message_str_game(GAME_MSG_WORLDMAP, x))
|
#define mstr_worldmap(x) (message_str_game(GAME_MSG_WORLDMAP, x))
|
||||||
|
|
||||||
|
|
||||||
#define BLOCKING_TYPE_BLOCK (0)
|
#define BLOCKING_TYPE_BLOCK (0)
|
||||||
#define BLOCKING_TYPE_SHOOT (1) // use this for more realistic line-of-sight checks
|
#define BLOCKING_TYPE_SHOOT (1) // use this for more realistic line-of-sight checks
|
||||||
#define BLOCKING_TYPE_AI (2)
|
#define BLOCKING_TYPE_AI (2)
|
||||||
#define BLOCKING_TYPE_SIGHT (3) // not really useful (works not as you would expect), game uses this only when checking if you can talk to a person
|
#define BLOCKING_TYPE_SIGHT (3) // not really useful (works not as you would expect), game uses this only when checking if you can talk to a person
|
||||||
|
|
||||||
#define party_member_list_critters party_member_list(0)
|
#define party_member_list_critters party_member_list(0)
|
||||||
#define party_member_list_all party_member_list(1)
|
#define party_member_list_all party_member_list(1)
|
||||||
|
|
||||||
|
|||||||
@@ -31,22 +31,22 @@ Used from a normal global script if you want to run it at the same point a full
|
|||||||
void register_hook_proc(int hooktype, proc procedure)
|
void register_hook_proc(int hooktype, proc procedure)
|
||||||
The same as register_hook, except that you specifically define which procedure in the current script should be called as a hook (instead of "start"). Pass procedure the same as how you use dialog option functions. This IS the recommended way to use hook scripts, as it gives both modularity (each mod logic in a separate global script, no conflicts if you don't use "hs_*.int" scripts) and flexibility (you can place all related hook scripts for specific mod in a single script!).
|
The same as register_hook, except that you specifically define which procedure in the current script should be called as a hook (instead of "start"). Pass procedure the same as how you use dialog option functions. This IS the recommended way to use hook scripts, as it gives both modularity (each mod logic in a separate global script, no conflicts if you don't use "hs_*.int" scripts) and flexibility (you can place all related hook scripts for specific mod in a single script!).
|
||||||
|
|
||||||
NOTE: you can hook several scripts to a single hook point, for example if it's different mods from different authors or just some different aspects of one larger mod. In this case scripts are executed in reverse order of how they were registered. When one of the scripts in a chain returns value with "set_sfall_return", the next script may override this value if calls "set_sfall_return" again. Sometimes you need to multiply certain value in a chain of hook scripts.
|
NOTE: you can hook several scripts to a single hook point, for example if it's different mods from different authors or just some different aspects of one larger mod. In this case scripts are executed in reverse order of how they were registered. When one of the scripts in a chain returns value with "set_sfall_return", the next script may override this value if calls "set_sfall_return" again. Sometimes you need to multiply certain value in a chain of hook scripts.
|
||||||
Example: let's say we have a Mod A which reduces all "to hit" chances by 50%. The code might look like this:
|
Example: let's say we have a Mod A which reduces all "to hit" chances by 50%. The code might look like this:
|
||||||
|
|
||||||
original_chance = get_sfall_arg;
|
original_chance = get_sfall_arg;
|
||||||
set_sfall_return(original_chance / 2);
|
set_sfall_return(original_chance / 2);
|
||||||
|
|
||||||
Mod B also want to affect hit chances globally, by increasing them by 50%. Now in order for both mods to work well together, we need to add this line to Mod A hook script:
|
Mod B also want to affect hit chances globally, by increasing them by 50%. Now in order for both mods to work well together, we need to add this line to Mod A hook script:
|
||||||
|
|
||||||
set_sfall_arg(original_chance / 2);
|
set_sfall_arg(original_chance / 2);
|
||||||
|
|
||||||
This basically changes hook argument for the next script. Mod B code:
|
This basically changes hook argument for the next script. Mod B code:
|
||||||
|
|
||||||
original_chance = get_sfall_arg;
|
original_chance = get_sfall_arg;
|
||||||
set_sfall_return(original_chance * 1.5);
|
set_sfall_return(original_chance * 1.5);
|
||||||
set_sfall_arg(original_chance * 1.5);
|
set_sfall_arg(original_chance * 1.5);
|
||||||
|
|
||||||
So if you combine both mods together, they will run in chain and the end result will be a 75% from original hit chance (hook register order doesn't matter in this case, if you use "set_sfall_arg" in both hooks).
|
So if you combine both mods together, they will run in chain and the end result will be a 75% from original hit chance (hook register order doesn't matter in this case, if you use "set_sfall_arg" in both hooks).
|
||||||
|
|
||||||
|
|
||||||
@@ -296,7 +296,7 @@ int ret2 - The new maximum damage
|
|||||||
hs_ammocost.int
|
hs_ammocost.int
|
||||||
|
|
||||||
Runs when calculating ammo cost for a weapon. Doesn't affect damage, only how much ammo is spent.
|
Runs when calculating ammo cost for a weapon. Doesn't affect damage, only how much ammo is spent.
|
||||||
By default, weapon will shoot when at least 1 round is left, regardless of ammo cost calculations.
|
By default, weapon will shoot when at least 1 round is left, regardless of ammo cost calculations.
|
||||||
To add proper check for ammo before shooting and proper calculation of number of burst rounds, set Misc.CheckWeaponAmmoCost=1 in ddraw.ini
|
To add proper check for ammo before shooting and proper calculation of number of burst rounds, set Misc.CheckWeaponAmmoCost=1 in ddraw.ini
|
||||||
|
|
||||||
Item arg1 - weapon
|
Item arg1 - weapon
|
||||||
@@ -335,7 +335,7 @@ hs_useskill.int
|
|||||||
Runs when using any skill on any object.
|
Runs when using any skill on any object.
|
||||||
|
|
||||||
This is fired before the default handlers are called, which you can override. In this case you should write your own skill use handler entirely, or otherwise nothing will happen (this includes fade in/fade out, time lapsing and messages - all of this can be scripted; to get vanilla text messages - use message_str_game() along with sprintf()).
|
This is fired before the default handlers are called, which you can override. In this case you should write your own skill use handler entirely, or otherwise nothing will happen (this includes fade in/fade out, time lapsing and messages - all of this can be scripted; to get vanilla text messages - use message_str_game() along with sprintf()).
|
||||||
Suggested use - override first aid/doctor skills to buff/nerf them, override steal skill to disallow observing NPCs inventories in some cases.
|
Suggested use - override first aid/doctor skills to buff/nerf them, override steal skill to disallow observing NPCs inventories in some cases.
|
||||||
Doesn't seem to run when lock picking.
|
Doesn't seem to run when lock picking.
|
||||||
|
|
||||||
Critter arg1 - The user critter
|
Critter arg1 - The user critter
|
||||||
@@ -349,9 +349,9 @@ int ret1 - overrides hard-coded handler (-1 - use engine handler, any other
|
|||||||
|
|
||||||
hs_steal.int
|
hs_steal.int
|
||||||
|
|
||||||
Runs when checking an attempt to steal or plant an item in other inventory using Steal skill.
|
Runs when checking an attempt to steal or plant an item in other inventory using Steal skill.
|
||||||
|
|
||||||
This is fired before the default handlers are called, which you can override. In this case you MUST provide message of the result to player ("You steal the %s", "You are caught planting the %s", etc.).
|
This is fired before the default handlers are called, which you can override. In this case you MUST provide message of the result to player ("You steal the %s", "You are caught planting the %s", etc.).
|
||||||
Example message (vanilla behavior): display_msg(sprintf(mstr_skill(570 + (isSuccess != false) + arg4*2), obj_name(arg3)));
|
Example message (vanilla behavior): display_msg(sprintf(mstr_skill(570 + (isSuccess != false) + arg4*2), obj_name(arg3)));
|
||||||
|
|
||||||
Critter arg1 - Thief
|
Critter arg1 - Thief
|
||||||
@@ -369,7 +369,7 @@ Runs when checking if one critter sees another critter. This is used in differen
|
|||||||
|
|
||||||
NOTE: obj_can_see_obj calls this first when deciding if critter can possibly see another critter with regard to perception, lighting, sneak factors. If check fails, the end result is false. If check succeeds (eg. critter is within perception range), another check is made if there is any blocking tile between two critters (which includes stuff like windows, large bushes, barrels, etc.) and if there is - check still fails. You can override "within perception" check by returning 0 or 1, OR, as a convenience, you can also override blocking check after the perception check by returning 2 instead. In this case you should add "line of sight" check inside your hook script, otherwise critters will detect you through walls.
|
NOTE: obj_can_see_obj calls this first when deciding if critter can possibly see another critter with regard to perception, lighting, sneak factors. If check fails, the end result is false. If check succeeds (eg. critter is within perception range), another check is made if there is any blocking tile between two critters (which includes stuff like windows, large bushes, barrels, etc.) and if there is - check still fails. You can override "within perception" check by returning 0 or 1, OR, as a convenience, you can also override blocking check after the perception check by returning 2 instead. In this case you should add "line of sight" check inside your hook script, otherwise critters will detect you through walls.
|
||||||
|
|
||||||
This is fired after the default calculation is made.
|
This is fired after the default calculation is made.
|
||||||
|
|
||||||
Critter arg1 - Watcher object
|
Critter arg1 - Watcher object
|
||||||
Obj arg2 - Target objet
|
Obj arg2 - Target objet
|
||||||
|
|||||||
+1
-1
@@ -408,7 +408,7 @@ end:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Jim's Formula
|
// Jim's Formula for the Mechanics Overhaul Mod
|
||||||
static __declspec(naked) void DamageFunction4() {
|
static __declspec(naked) void DamageFunction4() {
|
||||||
__asm {
|
__asm {
|
||||||
mov eax,dword ptr ds:[esi+0x8]; // Get pointer to critter's weapon
|
mov eax,dword ptr ds:[esi+0x8]; // Get pointer to critter's weapon
|
||||||
|
|||||||
+41
-40
@@ -4,7 +4,7 @@
|
|||||||
#include "Define.h"
|
#include "Define.h"
|
||||||
#include "FalloutEngine.h"
|
#include "FalloutEngine.h"
|
||||||
|
|
||||||
DWORD WeightOnBody = 0;
|
//DWORD WeightOnBody = 0;
|
||||||
|
|
||||||
static void __declspec(naked) SharpShooterFix() {
|
static void __declspec(naked) SharpShooterFix() {
|
||||||
__asm {
|
__asm {
|
||||||
@@ -70,23 +70,21 @@ skip:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
static void __declspec(naked) protinst_default_use_item_hack() {
|
||||||
|
|
||||||
static void __declspec(naked) protinst_default_use_item_hook() {
|
|
||||||
__asm {
|
__asm {
|
||||||
mov eax, dword ptr [edx+0x64] // eax = target pid
|
mov eax, dword ptr [edx+0x64] // eax = target pid
|
||||||
cmp eax, PID_DRIVABLE_CAR
|
cmp eax, PID_DRIVABLE_CAR
|
||||||
je itsCar
|
je isCar
|
||||||
cmp eax, PID_CAR_TRUNK
|
cmp eax, PID_CAR_TRUNK
|
||||||
jne noCar
|
jne notCar
|
||||||
itsCar:
|
isCar:
|
||||||
mov eax, ebx
|
mov eax, ebx
|
||||||
call obj_use_power_on_car_
|
call obj_use_power_on_car_
|
||||||
cmp eax, -1
|
cmp eax, -1
|
||||||
jne skip
|
jne skip
|
||||||
noCar:
|
notCar:
|
||||||
mov eax, 0x49C38B
|
mov eax, 0x49C38B
|
||||||
jmp eax // "This does nothing."
|
jmp eax // "That does nothing."
|
||||||
skip:
|
skip:
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz end
|
jnz end
|
||||||
@@ -97,19 +95,17 @@ end:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __declspec(naked) obj_use_power_on_car_hook() {
|
static void __declspec(naked) obj_use_power_on_car_hack() {
|
||||||
__asm {
|
__asm {
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
cmp ebx, 596 // "Battery is fully charged."?
|
cmp ebx, 596 // "The car is already full of power."?
|
||||||
je skip // Yes
|
je skip // Yes
|
||||||
inc eax // "You charge the car's battery."
|
inc eax // "You charge the car with more power."
|
||||||
skip:
|
skip:
|
||||||
retn
|
retn
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void __declspec(naked) item_d_check_addict_hack() {
|
static void __declspec(naked) item_d_check_addict_hack() {
|
||||||
__asm {
|
__asm {
|
||||||
mov edx, 2 // type = addiction
|
mov edx, 2 // type = addiction
|
||||||
@@ -237,7 +233,7 @@ nextArmor:
|
|||||||
call inven_worn_
|
call inven_worn_
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz noArmor
|
jz noArmor
|
||||||
and byte ptr [eax+0x27], 0xFB // Unset the flag of equipped armor
|
and byte ptr [eax+0x27], 0xFB // Unset the flag of equipped armor
|
||||||
jmp nextArmor
|
jmp nextArmor
|
||||||
noArmor:
|
noArmor:
|
||||||
mov eax, esi
|
mov eax, esi
|
||||||
@@ -685,61 +681,66 @@ static void __declspec(naked) partyMemberPrepLoadInstance_hack() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BugsInit()
|
void BugsInit()
|
||||||
{
|
{
|
||||||
dlog("Applying sharpshooter patch.", DL_INIT);
|
dlog("Applying sharpshooter patch.", DL_INIT);
|
||||||
// http://www.nma-fallout.com/showthread.php?178390-FO2-Engine-Tweaks&p=4050162&viewfull=1#post4050162
|
// http://www.nma-fallout.com/showthread.php?178390-FO2-Engine-Tweaks&p=4050162&viewfull=1#post4050162
|
||||||
// by Slider2k
|
// by Slider2k
|
||||||
HookCall(0x4244AB, &SharpShooterFix); // hooks stat_level_() call in detemine_to_hit_func_()
|
HookCall(0x4244AB, &SharpShooterFix); // hooks stat_level_() call in detemine_to_hit_func_()
|
||||||
// // removes this line by making unconditional jump:
|
// // removes this line by making unconditional jump:
|
||||||
// if ( who == obj_dude )
|
// if ( who == obj_dude )
|
||||||
// dist -= 2 * perk_level_(obj_dude, PERK_sharpshooter);
|
// dist -= 2 * perk_level_(obj_dude, PERK_sharpshooter);
|
||||||
SafeWrite8(0x424527, 0xEB); // in detemine_to_hit_func_()
|
SafeWrite8(0x424527, 0xEB); // in detemine_to_hit_func_()
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
|
|
||||||
// Fixes for clickability issue in PipBoy and exploit that allows to rest in places where you shouldn't be able to rest
|
// Fixes for clickability issue in Pip-Boy and exploit that allows to rest in places where you shouldn't be able to rest
|
||||||
dlog("Applying Fix PipBoy Rest exploit.", DL_INIT);
|
dlog("Applying fix for Pip-Boy rest exploit.", DL_INIT);
|
||||||
MakeCall(0x4971C7, &pipboy_hack, false);
|
MakeCall(0x4971C7, &pipboy_hack, false);
|
||||||
MakeCall(0x499530, &PipAlarm_hack, false);
|
MakeCall(0x499530, &PipAlarm_hack, false);
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
|
|
||||||
// Fix for "Too Many Items Bug"
|
// Fix for "Too Many Items" bug
|
||||||
if (GetPrivateProfileIntA("Misc", "TooManyItemsBugFix", 1, ini)) {
|
if (GetPrivateProfileIntA("Misc", "TooManyItemsBugFix", 1, ini)) {
|
||||||
dlog("Applying preventive patch for \"Too Many Items Bug\".", DL_INIT);
|
dlog("Applying preventive patch for \"Too Many Items\" bug.", DL_INIT);
|
||||||
HookCall(0x4A596A, &scr_write_ScriptNode_hook);
|
HookCall(0x4A596A, &scr_write_ScriptNode_hook);
|
||||||
HookCall(0x4A59C1, &scr_write_ScriptNode_hook);
|
HookCall(0x4A59C1, &scr_write_ScriptNode_hook);
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix "fueling" no_car and using fuel cells even when car is full
|
// Fixes for being able to charge the car with using cells on scenary/critters
|
||||||
/*MakeCall(0x49C36D, &protinst_default_use_item_hook, true);
|
// and cells getting consumed even when the car is already fully charged
|
||||||
MakeCall(0x49BE70, &obj_use_power_on_car_hook, false);*/
|
if (GetPrivateProfileIntA("Misc", "CarChargingFix", 1, ini)) {
|
||||||
|
dlog("Applying car charging issues fix.", DL_INIT);
|
||||||
|
MakeCall(0x49C36D, &protinst_default_use_item_hack, true);
|
||||||
|
MakeCall(0x49BE70, &obj_use_power_on_car_hack, false);
|
||||||
|
dlogr(" Done.", DL_INIT);
|
||||||
|
}
|
||||||
|
|
||||||
// makes jet addiction eternal.. why?
|
// makes jet addiction eternal.. why?
|
||||||
//MakeCall(0x47A3A4, &item_wd_process_hook, false);
|
//MakeCall(0x47A3A4, &item_wd_process_hook, false);
|
||||||
|
|
||||||
// Fix increasing stats more than two times via drug use after save-load
|
// Fix for gaining stats from more than two doses of a specific chem after save-load
|
||||||
dlog("Applying save-load unlimited drug use exploit.", DL_INIT);
|
dlog("Applying fix for save-load unlimited drug use exploit.", DL_INIT);
|
||||||
MakeCall(0x47A243, &item_d_load_hack, false);
|
MakeCall(0x47A243, &item_d_load_hack, false);
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
|
|
||||||
// Fix crash when using stimpak on a victim and then exiting the map
|
// Fix crash when leaving the map while waiting for someone to die of a super stimpak overdose
|
||||||
dlog("Applying Fix for \"using stimpak on a victim and exiting the map\" crash.", DL_INIT);
|
dlog("Applying fix for \"leaving the map while waiting for a super stimpak overdose death\" crash.", DL_INIT);
|
||||||
HookCall(0x4A27E7, &queue_clear_type_mem_free_hook); // hooks mem_free_()
|
HookCall(0x4A27E7, &queue_clear_type_mem_free_hook); // hooks mem_free_()
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
|
|
||||||
// Evil bug! If party member has the same armor type in inventory as currently equipped, then
|
// Evil bug! If party member has the same armor type in inventory as currently equipped, then
|
||||||
// on level up he loses Armor Class equal to the one received from this armor.
|
// on level up he loses Armor Class equal to the one received from this armor.
|
||||||
// The same happens if you just order NPC to remove armor through dialog.
|
// The same happens if you just order NPC to remove the armor through dialog.
|
||||||
if (GetPrivateProfileIntA("Misc", "ArmorCorruptsNPCStatsFix", 1, ini)) {
|
if (GetPrivateProfileIntA("Misc", "ArmorCorruptsNPCStatsFix", 1, ini)) {
|
||||||
dlog("Applying Fix for armor decreasing NPC stats when removed.", DL_INIT);
|
dlog("Applying fix for armor reducing NPC original stats when removed.", DL_INIT);
|
||||||
HookCall(0x495F3B, &partyMemberCopyLevelInfo_stat_level_hook);
|
HookCall(0x495F3B, &partyMemberCopyLevelInfo_stat_level_hook);
|
||||||
HookCall(0x45419B, &correctFidForRemovedItem_adjust_ac_hook);
|
HookCall(0x45419B, &correctFidForRemovedItem_adjust_ac_hook);
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix of invalid stats when party member gains a level while being on drugs
|
// Fix of invalid stats when party member gains a level while being on drugs
|
||||||
dlog("Applying Fix for addicted party member level up bug.", DL_INIT);
|
dlog("Applying fix for addicted party member level up bug.", DL_INIT);
|
||||||
HookCall(0x495D5C, &partyMemberCopyLevelInfo_hook);
|
HookCall(0x495D5C, &partyMemberCopyLevelInfo_hook);
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
|
|
||||||
@@ -750,13 +751,13 @@ void BugsInit()
|
|||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix for "Unlimited Ammo bug"
|
// Fix for "Unlimited Ammo" bug
|
||||||
dlog("Applying Fix for Unlimited Ammo bug.", DL_INIT);
|
dlog("Applying fix for Unlimited Ammo bug.", DL_INIT);
|
||||||
HookCall(0x472957, &invenWieldFunc_item_get_type_hook); // hooks item_get_type_()
|
HookCall(0x472957, &invenWieldFunc_item_get_type_hook); // hooks item_get_type_()
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
|
|
||||||
// Fix for negative values in Skilldex window ("S")
|
// Fix for negative values in Skilldex window ("S")
|
||||||
dlog("Applying Fix for negative values in Skilldex window.", DL_INIT);
|
dlog("Applying fix for negative values in Skilldex window.", DL_INIT);
|
||||||
SafeWrite8(0x4AC377, 0x7F); // jg
|
SafeWrite8(0x4AC377, 0x7F); // jg
|
||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
|
|
||||||
@@ -773,14 +774,14 @@ void BugsInit()
|
|||||||
|
|
||||||
if (GetPrivateProfileIntA("Misc", "InventoryDragIssuesFix", 0, ini)) {
|
if (GetPrivateProfileIntA("Misc", "InventoryDragIssuesFix", 0, ini)) {
|
||||||
dlog("Applying inventory reverse order issues fix.", DL_INIT);
|
dlog("Applying inventory reverse order issues fix.", DL_INIT);
|
||||||
// Fix for minor visual glitch when picking up solo item from the top of inventory
|
// Fix for minor visual glitch when picking up solo item from the top of inventory
|
||||||
// and there is multiple item stack at the bottom of inventory
|
// and there is multiple item stack at the bottom of inventory
|
||||||
MakeCall(0x470EC2, &inven_pickup_hack, true);
|
MakeCall(0x470EC2, &inven_pickup_hack, true);
|
||||||
// Fix for error in player's inventory, related to IFACE_BAR_MODE=1 in f2_res.ini, and
|
// Fix for error in player's inventory, related to IFACE_BAR_MODE=1 in f2_res.ini, and
|
||||||
// also for reverse order error
|
// also for reverse order error
|
||||||
MakeCall(0x47114A, &inven_pickup_hack2, true);
|
MakeCall(0x47114A, &inven_pickup_hack2, true);
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix for using only one pack of ammo, when the weapon is before the ammo
|
// Fix for using only one pack of ammo, when the weapon is before the ammo
|
||||||
//HookCall(0x476598, &drop_ammo_into_weapon_hook);
|
//HookCall(0x476598, &drop_ammo_into_weapon_hook);
|
||||||
@@ -789,7 +790,7 @@ void BugsInit()
|
|||||||
HookCall(0x497D0F, &PipStatus_AddHotLines_hook);
|
HookCall(0x497D0F, &PipStatus_AddHotLines_hook);
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
|
|
||||||
dlog("Applying withdrawal perk description crash fix. ", DL_INIT);
|
dlog("Applying withdrawal perk description crash fix.", DL_INIT);
|
||||||
HookCall(0x47A501, &perform_withdrawal_start_display_print_hook);
|
HookCall(0x47A501, &perform_withdrawal_start_display_print_hook);
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
|
|
||||||
@@ -806,7 +807,7 @@ void BugsInit()
|
|||||||
dlogr(" Done.", DL_INIT);
|
dlogr(" Done.", DL_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
dlog("Applying shiv patch. ", DL_INIT);
|
dlog("Applying shiv patch.", DL_INIT);
|
||||||
SafeWrite8(0x477B2B, 0xEB);
|
SafeWrite8(0x477B2B, 0xEB);
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
|
|
||||||
@@ -822,9 +823,9 @@ void BugsInit()
|
|||||||
MakeCall(0x411BCC, &action_ranged_hack, true);
|
MakeCall(0x411BCC, &action_ranged_hack, true);
|
||||||
dlogr(" Done", DL_INIT);
|
dlogr(" Done", DL_INIT);
|
||||||
|
|
||||||
// Corrects "NPC turns into a container"
|
// Fix for "NPC turns into a container"
|
||||||
if (GetPrivateProfileIntA("Misc", "NPCTurnsIntoContainerFix", 1, ini)) {
|
if (GetPrivateProfileIntA("Misc", "NPCTurnsIntoContainerFix", 1, ini)) {
|
||||||
dlog("Applying Fix for NPC turns into a container.", DL_INIT);
|
dlog("Applying fix for \"NPC turns into a container\" bug.", DL_INIT);
|
||||||
MakeCall(0x424F8E, &set_new_results_hack, false);
|
MakeCall(0x424F8E, &set_new_results_hack, false);
|
||||||
MakeCall(0x42E46E, &critter_wake_clear_hack, true);
|
MakeCall(0x42E46E, &critter_wake_clear_hack, true);
|
||||||
MakeCall(0x488EF3, &obj_load_func_hack, true);
|
MakeCall(0x488EF3, &obj_load_func_hack, true);
|
||||||
|
|||||||
+1
-1
@@ -45,7 +45,7 @@ enum HookType
|
|||||||
HOOK_STEAL = 22,
|
HOOK_STEAL = 22,
|
||||||
HOOK_WITHINPERCEPTION = 23,
|
HOOK_WITHINPERCEPTION = 23,
|
||||||
HOOK_INVENTORYMOVE = 24,
|
HOOK_INVENTORYMOVE = 24,
|
||||||
HOOK_INVENWIELD = 25,
|
HOOK_INVENWIELD = 25,
|
||||||
HOOK_COUNT
|
HOOK_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -21,13 +21,13 @@
|
|||||||
#define TARGETVERSION "Fallout 2 v1.02 US"
|
#define TARGETVERSION "Fallout 2 v1.02 US"
|
||||||
|
|
||||||
#define VERSION_MAJOR 3
|
#define VERSION_MAJOR 3
|
||||||
#define VERSION_MINOR 6
|
#define VERSION_MINOR 7
|
||||||
#define VERSION_BUILD 999
|
#define VERSION_BUILD 0
|
||||||
#define VERSION_REV 8
|
#define VERSION_REV 0
|
||||||
#ifdef WIN2K
|
#ifdef WIN2K
|
||||||
#define VERSION_STRING "3.7 alpha8 win2k"
|
#define VERSION_STRING "3.7 win2k"
|
||||||
#else
|
#else
|
||||||
#define VERSION_STRING "3.7 alpha8"
|
#define VERSION_STRING "3.7"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define CHECK_VAL (4)
|
#define CHECK_VAL (4)
|
||||||
|
|||||||
Reference in New Issue
Block a user