mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
de5c12484d | ||
|
|
c880ae93a9 | ||
|
|
295a5d1437 | ||
|
|
e726ee54ba | ||
|
|
712eafc241 | ||
|
|
d1bf22ec8d | ||
|
|
21d496f392 | ||
|
|
07948206fb | ||
|
|
6a71bf086d | ||
|
|
ec585529c8 | ||
|
|
e6aad27e44 | ||
|
|
f0528740a4 | ||
|
|
bfd8b38547 | ||
|
|
e6086f984e | ||
|
|
2e766cd3c9 | ||
|
|
48f53388fd | ||
|
|
6199f95c38 | ||
|
|
a6d84bd470 | ||
|
|
a11228a5ec | ||
|
|
7784e199af | ||
|
|
53895a4af2 | ||
|
|
354b938d60 | ||
|
|
643d8d3886 | ||
|
|
924c35d011 | ||
|
|
86163bf94c | ||
|
|
21b2d34432 | ||
|
|
98508a9c76 | ||
|
|
f8b232cc09 | ||
|
|
394b4b9967 | ||
|
|
1bea84eb3c | ||
|
|
26159138e0 | ||
|
|
1883009930 | ||
|
|
f1289c1e7d | ||
|
|
c3e4894243 | ||
|
|
2330dd97bb | ||
|
|
90b718122d | ||
|
|
5ca7ed0dc5 | ||
|
|
9bd03bfb76 | ||
|
|
07b7e270b8 | ||
|
|
f9dbbcdca2 | ||
|
|
fcdb5633d4 | ||
|
|
4e2bfd6b08 | ||
|
|
8c0fab1f6b | ||
|
|
05f15f0262 | ||
|
|
147cb50a66 | ||
|
|
b8968c5334 | ||
|
|
4f6b68ca93 | ||
|
|
0ff6157b42 | ||
|
|
2bbb92420f | ||
|
|
4678f41b5a | ||
|
|
7439ba2634 | ||
|
|
4c047bf8a3 | ||
|
|
694b699f15 | ||
|
|
25b408816a | ||
|
|
b819423d2a | ||
|
|
720f937b4f | ||
|
|
25094253e5 | ||
|
|
bdffc061d3 | ||
|
|
dfe4b6b2e0 | ||
|
|
972d978882 | ||
|
|
e99cca2b87 | ||
|
|
108719ac83 | ||
|
|
6feda61424 | ||
|
|
19c94b8513 | ||
|
|
af7b5cbb6b | ||
|
|
56009e1634 | ||
|
|
7bd3bd4128 | ||
|
|
696be7fac5 |
+59
-27
@@ -1,5 +1,5 @@
|
||||
;sfall configuration settings
|
||||
;v3.7a
|
||||
;v3.7.4
|
||||
|
||||
[Main]
|
||||
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
||||
@@ -201,9 +201,14 @@ WorldMapSlots=0
|
||||
;To use a patch file other than patch000.dat, uncomment the next line and add your new file name
|
||||
;If you want to check for multiple patch files, you can include a %d in the file name (sprintf syntax)
|
||||
;By default, only the first patch file found will be used.
|
||||
;If you want to load multiple patch files at once, uncomment the NumberPatchLoop line and set it to the number of files to check for
|
||||
;If you want to load multiple patch files (up to 1000) at once, uncomment the MultiPatches line and set it to 1
|
||||
;PatchFile=patch%03d.dat
|
||||
;NumberPatchLoop=100
|
||||
;MultiPatches=0
|
||||
|
||||
;Set to 1 to enable the modified data load order for the engine to find game data
|
||||
;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat
|
||||
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||
DataLoadOrderPatch=0
|
||||
|
||||
;To change the default and starting player models, uncomment the next four lines.
|
||||
;The default models can also be changed ingame via script
|
||||
@@ -247,6 +252,7 @@ Movie17=credits.mve
|
||||
;PerksFile=Perks.ini
|
||||
|
||||
;Set to 1 if you want the pipboy to be available at the start of the game
|
||||
;Set to 2 to make the pipboy available by only skipping the vault suit movie check
|
||||
PipBoyAvailableAtGameStart=0
|
||||
|
||||
;Set to 1 to double the number of available kill types
|
||||
@@ -290,9 +296,6 @@ SingleCore=1
|
||||
;Set to 1 to override the art_chache_size setting in fallout2.cfg
|
||||
OverrideArtCacheSize=0
|
||||
|
||||
;Set to 1 to fix issues with the GainXXX perks not giving all the bonuses that they should
|
||||
GainStatPerkFix=1
|
||||
|
||||
;Prevents you from saving in combat except at the start of your turn to avoid a few bugs
|
||||
;Note that even with this option enabled, it is still not advisable to save in combat at all.
|
||||
;Set to 2 to block all saving in combat
|
||||
@@ -301,7 +304,7 @@ SaveInCombatFix=1
|
||||
;Point at an ini file containing elevator data
|
||||
;ElevatorsFile=Elevators.ini
|
||||
|
||||
;Uncomment and set to a comma delimited list of numbers to use a custom xp table.
|
||||
;Uncomment and set a comma delimited list of numbers to use a custom xp table.
|
||||
;Players level is capped once the highest specified level is reached
|
||||
;XPTable=50,100,200
|
||||
|
||||
@@ -311,15 +314,14 @@ SaveInCombatFix=1
|
||||
AdditionalWeaponAnims=1
|
||||
|
||||
;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts
|
||||
;BodypartHitMod0=-40
|
||||
;BodypartHitMod1=-30
|
||||
;BodypartHitMod2=-30
|
||||
;BodypartHitMod3=0
|
||||
;BodypartHitMod4=-20
|
||||
;BodypartHitMod5=-20
|
||||
;BodypartHitMod6=-60
|
||||
;BodypartHitMod7=-30
|
||||
;BodypartHitMod8=0
|
||||
;BodyHit_Head=-40
|
||||
;BodyHit_Left_Arm=-30
|
||||
;BodyHit_Right_Arm=-30
|
||||
;BodyHit_Torso=0
|
||||
;BodyHit_Right_Leg=-20
|
||||
;BodyHit_Left_Leg=-20
|
||||
;BodyHit_Eyes=-60
|
||||
;BodyHit_Groin=-30
|
||||
|
||||
;Set to 1 to use a CriticalOverrides.ini file to override the default critical table
|
||||
;Set to 2 to use the default critical with bug fixes (doesn't require an ini)
|
||||
@@ -395,6 +397,7 @@ UseScrollingQuestsList=1
|
||||
ExtraSaveSlots=0
|
||||
|
||||
;Set to 1 to speed up the hp/ac counter animations
|
||||
;Set to 2 to update the hp/ac counters instantly
|
||||
SpeedInterfaceCounterAnims=0
|
||||
|
||||
;These lines allow you to control the karma frm's displayed on the character screen
|
||||
@@ -419,7 +422,7 @@ BonusHtHDamageFix=1
|
||||
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
|
||||
DisplayBonusDamage=0
|
||||
|
||||
;Modify the maximum number of animations allowed to run on a map. (Default is 32)
|
||||
;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127)
|
||||
AnimationsAtOnceLimit=120
|
||||
|
||||
;Set to 1 to remove the limits that stop the player rolling critical successes/misses in the first few days of game time
|
||||
@@ -428,9 +431,6 @@ RemoveCriticalTimelimits=0
|
||||
;Set to 1 to enable party members with level 6 protos to reach level 6
|
||||
NPCStage6Fix=0
|
||||
|
||||
;Set to 1 to fix the problem with melee weapon equiped npcs being unable to attack multi-hex critters
|
||||
MultiHexPathingFix=1
|
||||
|
||||
;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
|
||||
;MainMenuFontColour=0x0600003c
|
||||
@@ -482,13 +482,15 @@ QuickPocketsApCostReduction=2
|
||||
;Set to 1 to allow objects seeing through other objects with their ShootThru flag set
|
||||
ObjCanSeeObj_ShootThru_Fix=0
|
||||
|
||||
;These options change the bullet distribution of burst attacks
|
||||
;All the bullets are divided into three groups: central, left and right. These three groups will then travel along three parallel tracks, trying to hit targets on the way
|
||||
;Set the mod to 1 to enable the next four lines
|
||||
;Set to 1 to enable the balanced bullet distribution formula for burst attacks
|
||||
ComputeSprayMod=1
|
||||
|
||||
;These options modify the bullet distribution of burst attacks if ComputeSprayMod is 1
|
||||
;All the bullets are divided into three groups: central, left and right
|
||||
;These three groups will then travel along three parallel tracks, trying to hit targets on the way
|
||||
;CenterMult/Div set the ratio of how many bullets go to the central group, and remaining bullets are divided equally to left and right sides
|
||||
;TargetMult/Div set the ratio of how many bullets in the central group will attack the primary target directly
|
||||
;Multipliers are capped at divisor values.
|
||||
ComputeSprayMod=0
|
||||
;Multipliers are capped at divisor values
|
||||
ComputeSpray_CenterMult=1
|
||||
ComputeSpray_CenterDiv=3
|
||||
ComputeSpray_TargetMult=1
|
||||
@@ -524,12 +526,14 @@ CheckWeaponAmmoCost=0
|
||||
CombatPanelAnimDelay=1000
|
||||
;Controls the speed of dialog panel animations (lower - faster; valid range: 0..255)
|
||||
DialogPanelAnimDelay=33
|
||||
;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127)
|
||||
PipboyTimeAnimDelay=50
|
||||
|
||||
;Allows you to directly control other critters in combat
|
||||
;Set to 0 to disable
|
||||
;Set to 1 to control all critters in combat
|
||||
;Set to 2 to control all party members
|
||||
;If you want to control only specific critters, uncomment the ControlCombatPIDList line and set it to a comma delimited list of PIDs
|
||||
;If you want to control only specific critters, uncomment the ControlCombatPIDList line and set a comma delimited list of PIDs
|
||||
ControlCombat=0
|
||||
;ControlCombatPIDList=62,89,97,107,160,161
|
||||
|
||||
@@ -552,6 +556,22 @@ EnableMusicInDialogue=0
|
||||
;Set to 1 to fix the bug that unable to sell used geiger counters or stealth boys
|
||||
CanSellUsedGeiger=1
|
||||
|
||||
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenary/critters
|
||||
CarChargingFix=1
|
||||
|
||||
;Set to 1 to skip weapon equip/unequip animations when performing various actions
|
||||
InstantWeaponEquip=0
|
||||
|
||||
;To add additional game msg files, uncomment the next line and set a comma delimited list of filenames without .msg extension
|
||||
;You need to use the message_str_game script function to get messages from the files
|
||||
;ExtraGameMsgFileList=
|
||||
|
||||
;Set to 1 to display numbered dialogue options
|
||||
NumbersInDialogue=0
|
||||
|
||||
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
|
||||
CreditsAtBottom=0
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Debugging]
|
||||
;Extra sfall configuration settings that can be used by modders
|
||||
@@ -560,8 +580,20 @@ CanSellUsedGeiger=1
|
||||
;Set to 1 to enable sfall debugging mode
|
||||
Enable=0
|
||||
|
||||
;Fallout 2 Debug Patch
|
||||
;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 fallout2.cfg
|
||||
;-------
|
||||
;[debug]
|
||||
;mode=environment
|
||||
;output_map_data_info=1
|
||||
;show_load_info=1
|
||||
;show_script_messages=1
|
||||
;show_tile_num=1
|
||||
;[sound]
|
||||
;debug=1
|
||||
;debug_sfxc=1
|
||||
;-------
|
||||
DebugMode=0
|
||||
|
||||
;Change to 1 to skip the compatibility mode check
|
||||
@@ -581,7 +613,7 @@ DontDeleteProtos=0
|
||||
;Set to 1 to give scripts direct access to Fallout's address space, and to make arbitrary calls into Fallout's code
|
||||
AllowUnsafeScripting=0
|
||||
|
||||
;These options control what output is saved in the debug log
|
||||
;These options control what output is saved in the debug log (sfall-log.txt)
|
||||
|
||||
;Prints messages duing sfall initialization
|
||||
Init=0
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
procedure start;
|
||||
#include ".\HEADERS\dik.h"
|
||||
|
||||
procedure start begin
|
||||
variable event, keyDX;
|
||||
if not init_hook then begin
|
||||
event := get_sfall_arg;
|
||||
keyDX := get_sfall_arg;
|
||||
|
||||
if ((event == 1) and (keyDX == DIK_SEMICOLON)) then begin
|
||||
tap_key(DIK_CAPITAL);
|
||||
tap_key(DIK_A);
|
||||
tap_key(DIK_CAPITAL);
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
"Take All" Hotkey mod for Fallout 2 by NovaRain
|
||||
----------------------------------------
|
||||
|
||||
- makes pressing the semicolon key send an uppercase A after a semicolon.
|
||||
- the uppercase A (shift + A if Caps Lock is off) is the built-in hotkey for the TAKE ALL button on the loot screen.
|
||||
|
||||
To use, copy hs_keypress.int file to your scripts folder.
|
||||
|
||||
This mod is a simple example of how you can use HOOK_KEYPRESS hooks.
|
||||
@@ -2,16 +2,6 @@
|
||||
#ifndef DEFINE_EXTRA_H
|
||||
#define DEFINE_EXTRA_H
|
||||
|
||||
#define ATTACK_MODE_NONE 0
|
||||
#define ATTACK_MODE_PUNCH 1
|
||||
#define ATTACK_MODE_KICK 2
|
||||
#define ATTACK_MODE_SWING 3
|
||||
#define ATTACK_MODE_THRUST 4
|
||||
#define ATTACK_MODE_THROW 5
|
||||
#define ATTACK_MODE_SINGLE 6
|
||||
#define ATTACK_MODE_BURST 7
|
||||
#define ATTACK_MODE_FLAME 8
|
||||
|
||||
#define OBJ_TYPE_ITEM (0)
|
||||
#define OBJ_TYPE_CRITTER (1)
|
||||
#define OBJ_TYPE_SCENERY (2)
|
||||
@@ -20,18 +10,47 @@
|
||||
#define OBJ_TYPE_MISC (5)
|
||||
#define OBJ_TYPE_SPATIAL (6)
|
||||
|
||||
/* Item Common Flags */
|
||||
#define HIDDEN_ITEM 134217728 // 0x08000000 - Hidden Item
|
||||
|
||||
#define ITEM_ACTION_USE 2048 // 0x00000800 - Use (can be used)
|
||||
#define ITEM_ACTION_USEON 4096 // 0x00001000 - Use On Smth (can be used on anything)
|
||||
#define ITEM_ACTION_PICKUP 32768 // 0x00008000 - PickUp
|
||||
|
||||
#define WEAPON_BIGGUN 256 // 0x00000100 - Big Gun
|
||||
#define WEAPON_2HAND 512 // 0x00000200 - 2Hnd (weapon is two-handed)
|
||||
|
||||
#define ATKMODE_PRI_NONE 0
|
||||
#define ATKMODE_PRI_PUNCH 1
|
||||
#define ATKMODE_PRI_KICK 2
|
||||
#define ATKMODE_PRI_SWING 3
|
||||
#define ATKMODE_PRI_THRUST 4
|
||||
#define ATKMODE_PRI_THROW 5
|
||||
#define ATKMODE_PRI_SINGLE 6
|
||||
#define ATKMODE_PRI_BURST 7
|
||||
#define ATKMODE_PRI_FLAME 8
|
||||
#define ATKMODE_SEC_NONE 0
|
||||
#define ATKMODE_SEC_PUNCH 16 // 0x00000010
|
||||
#define ATKMODE_SEC_KICK 32 // 0x00000020
|
||||
#define ATKMODE_SEC_SWING 48 // 0x00000030
|
||||
#define ATKMODE_SEC_THRUST 64 // 0x00000040
|
||||
#define ATKMODE_SEC_THROW 80 // 0x00000050
|
||||
#define ATKMODE_SEC_SINGLE 96 // 0x00000060
|
||||
#define ATKMODE_SEC_BURST 112 // 0x00000070
|
||||
#define ATKMODE_SEC_FLAME 128 // 0x00000080
|
||||
|
||||
/* Critter Flags */
|
||||
#define CFLG_BARTER 2 //0x00000002 - Barter (can trade with)
|
||||
#define CFLG_NOSTEAL 32 //0x00000020 - Steal (cannot steal from)
|
||||
#define CFLG_NODROP 64 //0x00000040 - Drop (doesn't drop items)
|
||||
#define CFLG_NOLIMBS 128 //0x00000080 - Limbs (cannot lose limbs)
|
||||
#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_INVULN 1024 //0x00000400 - Invulnerable (cannot be hurt)
|
||||
#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_RANGED 8192 //0x00002000 - Range (melee attack is possible at a distance)
|
||||
#define CFLG_NOKNOCKDOWN 16384 //0x00004000 - Knock (cannot be knocked down)
|
||||
#define CFLG_BARTER 2 // 0x00000002 - Barter (can trade with)
|
||||
#define CFLG_NOSTEAL 32 // 0x00000020 - Steal (cannot steal from)
|
||||
#define CFLG_NODROP 64 // 0x00000040 - Drop (doesn't drop items)
|
||||
#define CFLG_NOLIMBS 128 // 0x00000080 - Limbs (cannot lose limbs)
|
||||
#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_INVULN 1024 // 0x00000400 - Invulnerable (cannot be hurt)
|
||||
#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_RANGED 8192 // 0x00002000 - Range (melee attack is possible at a distance)
|
||||
#define CFLG_NOKNOCKDOWN 16384 // 0x00004000 - Knock (cannot be knocked down)
|
||||
|
||||
//remove inven obj defines
|
||||
#define RMOBJ_CONSUME_DRUG 4666772
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef H_DIK
|
||||
#define H_DIK
|
||||
|
||||
// Listed are keyboard scan code constants (in decimal), taken from dinput.h
|
||||
// Listed are keyboard scan code constants (in decimal), taken from dinput.h
|
||||
|
||||
#define DIK_ESCAPE 1
|
||||
#define DIK_1 2
|
||||
@@ -14,9 +14,9 @@
|
||||
#define DIK_8 9
|
||||
#define DIK_9 10
|
||||
#define DIK_0 11
|
||||
#define DIK_MINUS 12 /* - on main keyboard */
|
||||
#define DIK_MINUS 12 /* - on main keyboard */
|
||||
#define DIK_EQUALS 13
|
||||
#define DIK_BACK 14 /* backspace */
|
||||
#define DIK_BACK 14 /* backspace */
|
||||
#define DIK_TAB 15
|
||||
#define DIK_Q 16
|
||||
#define DIK_W 17
|
||||
@@ -116,20 +116,20 @@
|
||||
#define DIK_RWIN 0xDC /* Right Windows key */
|
||||
#define DIK_APPS 0xDD /* AppMenu key */
|
||||
|
||||
#define DIK_BACKSPACE DIK_BACK /* backspace */
|
||||
#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */
|
||||
#define DIK_LALT DIK_LMENU /* left Alt */
|
||||
#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */
|
||||
#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */
|
||||
#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */
|
||||
#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */
|
||||
#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */
|
||||
#define DIK_RALT DIK_RMENU /* right Alt */
|
||||
#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */
|
||||
#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */
|
||||
#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */
|
||||
#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */
|
||||
#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */
|
||||
#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */
|
||||
#define DIK_BACKSPACE DIK_BACK /* backspace */
|
||||
#define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */
|
||||
#define DIK_LALT DIK_LMENU /* left Alt */
|
||||
#define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */
|
||||
#define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */
|
||||
#define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */
|
||||
#define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */
|
||||
#define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */
|
||||
#define DIK_RALT DIK_RMENU /* right Alt */
|
||||
#define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */
|
||||
#define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */
|
||||
#define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */
|
||||
#define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */
|
||||
#define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */
|
||||
#define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -16,32 +16,32 @@
|
||||
#define SKILLDEX (0x4000)
|
||||
|
||||
//Valid arguments to register_hook
|
||||
#define HOOK_TOHIT (0)
|
||||
#define HOOK_AFTERHITROLL (1)
|
||||
#define HOOK_CALCAPCOST (2)
|
||||
#define HOOK_DEATHANIM1 (3)
|
||||
#define HOOK_DEATHANIM2 (4)
|
||||
#define HOOK_COMBATDAMAGE (5)
|
||||
#define HOOK_ONDEATH (6)
|
||||
#define HOOK_FINDTARGET (7)
|
||||
#define HOOK_USEOBJON (8)
|
||||
#define HOOK_REMOVEINVENOBJ (9)
|
||||
#define HOOK_BARTERPRICE (10)
|
||||
#define HOOK_MOVECOST (11)
|
||||
#define HOOK_HEXMOVEBLOCKING (12)
|
||||
#define HOOK_HEXAIBLOCKING (13)
|
||||
#define HOOK_TOHIT (0)
|
||||
#define HOOK_AFTERHITROLL (1)
|
||||
#define HOOK_CALCAPCOST (2)
|
||||
#define HOOK_DEATHANIM1 (3)
|
||||
#define HOOK_DEATHANIM2 (4)
|
||||
#define HOOK_COMBATDAMAGE (5)
|
||||
#define HOOK_ONDEATH (6)
|
||||
#define HOOK_FINDTARGET (7)
|
||||
#define HOOK_USEOBJON (8)
|
||||
#define HOOK_REMOVEINVENOBJ (9)
|
||||
#define HOOK_BARTERPRICE (10)
|
||||
#define HOOK_MOVECOST (11)
|
||||
#define HOOK_HEXMOVEBLOCKING (12)
|
||||
#define HOOK_HEXAIBLOCKING (13)
|
||||
#define HOOK_HEXSHOOTBLOCKING (14)
|
||||
#define HOOK_HEXSIGHTBLOCKING (15)
|
||||
#define HOOK_ITEMDAMAGE (16)
|
||||
#define HOOK_AMMOCOST (17)
|
||||
#define HOOK_USEOBJ (18)
|
||||
#define HOOK_KEYPRESS (19)
|
||||
#define HOOK_MOUSECLICK (20)
|
||||
#define HOOK_USESKILL (21)
|
||||
#define HOOK_STEAL (22)
|
||||
#define HOOK_ITEMDAMAGE (16)
|
||||
#define HOOK_AMMOCOST (17)
|
||||
#define HOOK_USEOBJ (18)
|
||||
#define HOOK_KEYPRESS (19)
|
||||
#define HOOK_MOUSECLICK (20)
|
||||
#define HOOK_USESKILL (21)
|
||||
#define HOOK_STEAL (22)
|
||||
#define HOOK_WITHINPERCEPTION (23)
|
||||
#define HOOK_INVENTORYMOVE (24)
|
||||
#define HOOK_INVENWIELD (25)
|
||||
#define HOOK_INVENWIELD (25)
|
||||
|
||||
//Valid arguments to list_begin
|
||||
#define LIST_CRITTERS (0)
|
||||
|
||||
@@ -390,7 +390,7 @@ What you can do:
|
||||
- add AP costs for all inventory movement including reloading
|
||||
- apply or remove some special scripted effects depending on PC's armor
|
||||
|
||||
int arg1 - Target slot (0 - main backback, 1 - left hand, 2 - right hand, 3 - armor slot, 4 - weapon, when reloading it by dropping ammo)
|
||||
int arg1 - Target slot (0 - main backpack, 1 - left hand, 2 - right hand, 3 - armor slot, 4 - weapon, when reloading it by dropping ammo)
|
||||
Item arg2 - Item being moved
|
||||
Item arg3 - Item being replaced or weapon being reloaded (can be 0)
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
0x81ba - void set_npc_stat_min(int stat, int value)
|
||||
|
||||
0x816b - int input_funcs_available()
|
||||
ox816c - int key_pressed(int dxScancode)
|
||||
0x816c - int key_pressed(int dxScancode)
|
||||
0x8162 - void tap_key(int dxScancode)
|
||||
0x821c - int get_mouse_x()
|
||||
0x821d - int get_mouse_y()
|
||||
@@ -349,4 +349,4 @@ ox816c - int key_pressed(int dxScancode)
|
||||
0x826f - int art_exists(int artFID)
|
||||
0x8270 - int obj_is_carrying_obj(ObjectPtr invenObj, ObjectPtr itemObj)
|
||||
|
||||
* These functions require AllowUnsafeScripting to be enabled in ddraw.ini
|
||||
* These functions require AllowUnsafeScripting to be enabled in ddraw.ini
|
||||
|
||||
@@ -48,7 +48,7 @@ set_fake_trait and set_fake_perk can be used to add additional traits and perks
|
||||
|
||||
has_fake_trait and has_fake_perk return the number of levels the player has of the perks/traits with the given name.
|
||||
|
||||
perk_add_mode, set_selectable_perk, set_perkbox_title, hide_real_perks, show_real_perks and clear_selectable_perks control the behaviour of the select a perk box. set_selectable_perk can be used to add additional items by setting the 'active' parameter to 1, and to remove them again by setting it to 0. set_perkbox_title can be used to change the title of the box, or by using "" it will be set back to the default. hide and show_real_perks can be used to prevent the dialog from displaying any of the original 119 perks. perk_add_mode modifies what happens when a fake perk is selected from the perks dialog. It is treated as a set of flags - if bit 1 is set then it is added to the players traits, if bit 2 is set it is added to the players perks, and if bit 3 is set it is removed from the list of selectable perks. The default is 0x2. clear_selectable_perks restores the dialog to it's default state.
|
||||
perk_add_mode, set_selectable_perk, set_perkbox_title, hide_real_perks, show_real_perks and clear_selectable_perks control the behaviour of the select a perk box. set_selectable_perk can be used to add additional items by setting the 'active' parameter to 1, and to remove them again by setting it to 0. set_perkbox_title can be used to change the title of the box, or by using "" it will be set back to the default. hide and show_real_perks can be used to prevent the dialog from displaying any of the original 119 perks. perk_add_mode modifies what happens when a fake perk is selected from the perks dialog. It is treated as a set of flags - if bit 1 is set then it is added to the players traits, if bit 2 is set it is added to the players perks, and if bit 3 is set it is removed from the list of selectable perks. The default is 0x2. clear_selectable_perks restores the dialog to it's default state.
|
||||
|
||||
show_iface_tag, hide_iface_tag and is_iface_tag_active relate to the boxes that appear above the interface such as SNEAK and LEVEL. You can use 3 for LEVEL and 4 for ADDICT, or the range from 5 to 9 for custom boxes. Remember to add your messages to intrface.msg and setup the font colours in ddraw.ini if you're going to use custom boxes.
|
||||
|
||||
@@ -62,7 +62,7 @@ nb_* functions are reserved for the brotherhood tactical training mod, and shoul
|
||||
|
||||
The fs_* functions are used to manipulate a virtual file system. Files saved here should have paths relative to the data folder, and use backslashes as the directory seperator. They will take precedence over files stored in the normal data folder. They will also be saved into save games, so be avoid creating large files. Using fs_copy followed by fs_read_xxx, you can read the contents of existing files.
|
||||
|
||||
get/set_proto_data are used to manipulate the in memory copies of the .pro files fallout makes when they are loaded. The offset refers to the offset in memory from the start of the proto to the element you are reading, and is equal to the file offset minus 12. Changes are not stored on disc, and are not permenent. If you modify the protos, and then fallout subsequently reloads the file your changes will be lost.
|
||||
get/set_proto_data are used to manipulate the in memory copies of the .pro files fallout makes when they are loaded. The offset refers to the offset in memory from the start of the proto to the element you are reading. Changes are not stored on disc, and are not permenent. If you modify the protos, and then fallout subsequently reloads the file your changes will be lost.
|
||||
|
||||
the list_xxx functions can be used to loop over all items on a map. list_begin takes an argument telling sfall what you want to list. (Defined in sfall.h) It returns a list pointer, which you iterate through with list_next. Finally, when you've finished with the list use list_end on it. Not calling list_end will result in a memory leak. Alternatively, use list_as_array to get the whole list at once as a temp array variable, which can be looped over using len_array and which you don't need to remember to free afterwards.
|
||||
|
||||
@@ -81,44 +81,44 @@ get/set_critter_skill_points will get/set the number of additional points a crit
|
||||
------ FUNCTION REFERENCE (incomplete) -------
|
||||
----------------------------------------------
|
||||
|
||||
> int game_loaded()
|
||||
> int game_loaded()
|
||||
- returns 1 the first time it is called after a new game or game load, and 0 any time after. It works on an individual basis for each script, so one script wont interfere with others. It's primary use is for global scripts, so that they know when to call set_global_script_repeat, but it can be called from normal scripts too.
|
||||
|
||||
> void inc_npc_level(string npc)
|
||||
- takes an npc name as an argument. The npc must be in your party. This function ignores player level requirements and the minimum 3 player level delay between npc level gains. It also ignores the random element, regardless of sfall's NPCAutoLevel setting.
|
||||
> void inc_npc_level(string npc)
|
||||
- takes an npc name as an argument. The npc must be in your party. This function ignores player level requirements and the minimum 3 player level delay between npc level gains. It also ignores the random element, regardless of sfall's NPCAutoLevel setting.
|
||||
|
||||
> int get_npc_level(string npc)
|
||||
- also takes the npc name as an argument, and returns the npc's current level. Again, the npc needs to be in your party.
|
||||
|
||||
> int get_ini_setting(string setting)
|
||||
- reads an integer value from an ini file in the fallout directory.
|
||||
- It only takes a single argument; seperate the file name, section and key with a '|' character; e.g. 'myvar:=get_ini_setting("myini.ini|mysec|var1")' If the file or key cannot be found, -1 is returned.
|
||||
- The file name is limited to 16 chars, including the extension.
|
||||
- The section name is limited to 8 characters.
|
||||
> int get_ini_setting(string setting)
|
||||
- reads an integer value from an ini file in the fallout directory.
|
||||
- It only takes a single argument; seperate the file name, section and key with a '|' character; e.g. 'myvar:=get_ini_setting("myini.ini|mysec|var1")' If the file or key cannot be found, -1 is returned.
|
||||
- The file name is limited to 16 chars, including the extension.
|
||||
- The section name is limited to 8 characters.
|
||||
- It can also be used to get sfalls settings, by using ddraw.ini as the file name.
|
||||
|
||||
> string get_ini_string(string setting)
|
||||
- reads a string value from an ini file in the fallout directory.
|
||||
- reads a string value from an ini file in the fallout directory.
|
||||
|
||||
> int get_game_mode()
|
||||
- is a more flexible version of in_world_map. It will return a set of flags indicating which mode the game is currently in.
|
||||
- is a more flexible version of in_world_map. It will return a set of flags indicating which mode the game is currently in.
|
||||
- These flags are the same as those used in the set_shader_mode function.
|
||||
|
||||
> int get_uptime()
|
||||
- is just a wrapper around the windows GetTickCount() function. It's useful for making time fade effects in shaders, since they already have access to the current tick count.
|
||||
|
||||
> boolean in_world_map()
|
||||
- returns 1 if the player is looking at the world map, or 0 at any other time.
|
||||
> boolean in_world_map()
|
||||
- returns 1 if the player is looking at the world map, or 0 at any other time.
|
||||
- Obviously this is only useful in global scripts, since normal scripts will never get the chance to run on the world map.
|
||||
|
||||
> void force_encounter(int map)
|
||||
- can be called either from a global script while traveling on the world map, or from a normal script while on a local map.
|
||||
> void force_encounter(int map)
|
||||
- can be called either from a global script while traveling on the world map, or from a normal script while on a local map.
|
||||
- In either case the encounter occurs shortly after the next time the player moves on the world map.
|
||||
- The player will not get an outdoorsman skill check.
|
||||
|
||||
> void force_encounter_with_flags(int map, int flags)
|
||||
- does the same thing as force_encounter, but allows the specification of some extra options.
|
||||
- Forcing a random encounter on a map that is not normally used for random encounters may cause the player to lose the car, if they have it.
|
||||
- does the same thing as force_encounter, but allows the specification of some extra options.
|
||||
- Forcing a random encounter on a map that is not normally used for random encounters may cause the player to lose the car, if they have it.
|
||||
- In this case use force_encounter_with_flags with the ENCOUNTER_FLAG_NO_CAR flag set.
|
||||
|
||||
> int get_light_level()
|
||||
@@ -130,7 +130,7 @@ get/set_critter_skill_points will get/set the number of additional points a crit
|
||||
- This function works in addition to the WorldMapTimeMod setting in ddraw.ini and the pathfinder perk, rather than overriding it, so calling set_map_time_multi(0.5) when the player has 2 levels of pathfinder would result in time passing at 25% the normal speed on the world map.
|
||||
|
||||
> void remove_script(objptr)
|
||||
- accepts a pointer to an object and will remove the script from that object.
|
||||
- accepts a pointer to an object and will remove the script from that object.
|
||||
|
||||
> void set_script(objptr, int scriptid)
|
||||
- accepts a pointer to an object and scriptID, and applies the given script to an object (scriptID accept the same values as create_object_sid from sfall 3.6)
|
||||
@@ -138,31 +138,31 @@ get/set_critter_skill_points will get/set the number of additional points a crit
|
||||
- if you add 0x80000000 to the sid when calling set_script, map_enter_p_proc will be SKIPPED. The start proc will always be run.
|
||||
|
||||
> int get_script(objptr)
|
||||
- accepts a pointer to an object and returns it's scriptID (line number in scripts.lst), or -1 if the object is unscripted.
|
||||
- accepts a pointer to an object and returns it's scriptID (line number in scripts.lst), or -1 if the object is unscripted.
|
||||
|
||||
> void set_self(int obj)
|
||||
- overrides the scripts self_obj for the next function call.
|
||||
- It is primarily used to allow the calling of functions which take an implicit self_obj parameter (e.g. drop_obj) from global scripts, but it can also be used from normal scripts;
|
||||
> void set_self(int obj)
|
||||
- overrides the scripts self_obj for the next function call.
|
||||
- It is primarily used to allow the calling of functions which take an implicit self_obj parameter (e.g. drop_obj) from global scripts, but it can also be used from normal scripts;
|
||||
- self_obj will revert back to its original value after the next function call.
|
||||
- calling self_obj(0) will also revert self_obj to original value
|
||||
- source_obj, target_obj, and similar functions will not work if preceeded by "set_self"
|
||||
|
||||
> void mod_skill_points_per_level(int x)
|
||||
- accepts a value of between -100 and 100, and modifies the number of skill points the player recieves when they level up.
|
||||
- This is a modification of what would otherwise happen, rather than a replacement.
|
||||
- accepts a value of between -100 and 100, and modifies the number of skill points the player recieves when they level up.
|
||||
- This is a modification of what would otherwise happen, rather than a replacement.
|
||||
- The value is not saved into the save game, so should be reset in the game_loaded section of a script.
|
||||
|
||||
> void seq_perk_freq(int x)
|
||||
- sets the number of levels between each perk.
|
||||
- Setting 0 will reset it back to the default.
|
||||
- This overrides the effects of the skilled trait.
|
||||
- It is not saved into the save game, so needs to be called once per reload.
|
||||
- sets the number of levels between each perk.
|
||||
- Setting 0 will reset it back to the default.
|
||||
- This overrides the effects of the skilled trait.
|
||||
- It is not saved into the save game, so needs to be called once per reload.
|
||||
- Be careful not to let the player obtain a perk when no perks are available to pick, or the game may crash.
|
||||
|
||||
> ObjectPtr get_last_target(objptr)
|
||||
- will return the last critter to be deliberately attacked
|
||||
> ObjectPtr get_last_attacker(objptr)
|
||||
- will return the last critter to deliberately launch an attack against the argument critter.
|
||||
> ObjectPtr get_last_target(objptr)
|
||||
- will return the last critter to be deliberately attacked
|
||||
> ObjectPtr get_last_attacker(objptr)
|
||||
- will return the last critter to deliberately launch an attack against the argument critter.
|
||||
- If a critter has not launched/recieved an attack, it will return 0. This is only stored for the duration of combat, and outside of combat both functions will always return 0.
|
||||
|
||||
> void set_base_pickpocket_mod(int max, int mod)
|
||||
@@ -173,43 +173,43 @@ get/set_critter_skill_points will get/set the number of additional points a crit
|
||||
> void set_critter_pickpocket_mod(CritterPtr, int max, int mod)
|
||||
- the same as above, but applies only to specific critter
|
||||
|
||||
> void reg_anim_combat_check
|
||||
> void reg_anim_combat_check
|
||||
- allows to enable all reg_anim_* functions in combat (including vanilla functions) if set to 0. It is automatically reset at the end of each frame, so you need to call it before "reg_anim_begin" - "reg_anim_end" block.
|
||||
|
||||
|
||||
Some additional reg_anim_* functions were introduced. They all work in the same convention as vanilla functions and use the same underlying code.
|
||||
|
||||
> void reg_anim_destroy(object)
|
||||
Some additional reg_anim_* functions were introduced. They all work in the same convention as vanilla functions and use the same underlying code.
|
||||
|
||||
> void reg_anim_destroy(object)
|
||||
- given object is destroyed at the end of current animation set
|
||||
|
||||
> void reg_anim_animate_and_hide(object, animID, delay)
|
||||
|
||||
> void reg_anim_animate_and_hide(object, animID, delay)
|
||||
- exactly like "reg_anim_animate" but the object will automatically disappear after the last animation frame (but not destroyed)
|
||||
|
||||
> void reg_anim_light(object, light, delay)
|
||||
> void reg_anim_light(object, light, delay)
|
||||
- change light of any object. light argument is a light radius (0-8), but you can use highest 2 bytes to pass light intensity as well (example: 0xFFFF0008 - intensity 65535 and radius 8). If highest 2 bytes are 0, intensity will not be changed. Intensity range is from 0 to 65535 (0xFFFF).
|
||||
|
||||
> void reg_anim_change_fid(object, fid, delay)
|
||||
> void reg_anim_change_fid(object, fid, delay)
|
||||
- should work like art_change_fid_num but in reg_anim sequence
|
||||
|
||||
> void reg_anim_take_out(object, holdFrameID, delay)
|
||||
> void reg_anim_take_out(object, holdFrameID, delay)
|
||||
- plays "take out weapon" animation for given holdFrameID. It is not required to have such weapon in critter's inventory.
|
||||
|
||||
> void reg_anim_turn_towards(object, tile/target, delay)
|
||||
|
||||
> void reg_anim_turn_towards(object, tile/target, delay)
|
||||
- makes object change it's direction to face given tile num or target object.
|
||||
|
||||
> int metarule2_explosions(int arg1, int arg2)
|
||||
was made as a dirty easy hack to allow dynamically change some explosion parameters (ranged attack). All changed parameters are reset to vanilla state automatically after each attack action. Following macros are available in sfall.h:
|
||||
|
||||
> void set_attack_explosion_pattern(x, y)
|
||||
> void set_attack_explosion_pattern(x, y)
|
||||
- currently y is not used and x means: 1 - reduced explosion pattern (3 effects are spawned instead of 7), 0 - full pattern
|
||||
|
||||
> void set_attack_explosion_art(x, y)
|
||||
> void set_attack_explosion_art(x, y)
|
||||
- y not used and x is a misc frame ID (last 3 bytes, without object type) to use for the next explosion.
|
||||
|
||||
> void set_attack_explosion_radius(x)
|
||||
|
||||
> void set_attack_explosion_radius(x)
|
||||
- changes radius at which explosion will hit secondary targets for the next attack (from the experiments it is limited to something around 8 by the engine)
|
||||
|
||||
> void set_attack_is_explosion_fire
|
||||
> void set_attack_is_explosion_fire
|
||||
- if you call this right before using a weapon with fire damage type, it will produce explosion effects (and radius damage) just like "explosion" type, but all targets will still recieve fire damage.
|
||||
|
||||
|
||||
@@ -219,20 +219,20 @@ Some utility/math functions are available:
|
||||
- takes a string and a seperator, searches the string for all instances of the seperator, and returns a temp array filled with the pieces of the string split at each instance. If you give an empty string as the seperator, the string is split into individual characters.
|
||||
- you can use this to search for a substring in a string like this: strlen(get_array(string_split(haystack, needle), 0))
|
||||
|
||||
> string substr(string, start, length)
|
||||
> string substr(string, start, length)
|
||||
- cuts a substring from a string starting at "start" up to "length" characters. If start is negative - it indicates starting position from the end of the string (for example substr("test", -2, 2) will return last 2 charactes: "st"). If length is negative - it means so many characters will be omitted from the end of string (example: substr("test", 0, -2) will return string without last 2 characters: "te")
|
||||
|
||||
> int strlen(char* string)
|
||||
> int strlen(char* string)
|
||||
- returns string length
|
||||
|
||||
> string sprintf(char* format, any value)
|
||||
- formats given value using standart syntax of C printf function (google "printf" for format details). However it is limited to formatting only 1 value.
|
||||
> string sprintf(char* format, any value)
|
||||
- formats given value using standart syntax of C printf function (google "printf" for format details). However it is limited to formatting only 1 value.
|
||||
- can be used to get character by ASCII code ("%c")
|
||||
|
||||
> int typeof(any value)
|
||||
> int typeof(any value)
|
||||
- returns type of the given value: VALTYPE_INT, VALTYPE_FLOAT or VALTYPE_STR.
|
||||
|
||||
> int charcode(char* string)
|
||||
> int charcode(char* string)
|
||||
- returns ASCII code for the first character in given string
|
||||
|
||||
> ^ operator (exponentiation)
|
||||
@@ -276,7 +276,8 @@ Some utility/math functions are available:
|
||||
|
||||
> string message_str_game(int fileId, int messageId)
|
||||
- works exactly the same as message_str, except you get messages from files in "text/english/game" folder
|
||||
- use GAME_MSG_* defines or mstr_* macros from sfall.h to use specific msg file
|
||||
- use GAME_MSG_* defines or mstr_* macros from sfall.h to use specific msg file
|
||||
- Additional game msg files added by ExtraGameMsgFileList setting will have consecutive fileIds assigned beginning from 0x2000. (e.g. if you set ExtraGameMsgFileList=foo,bar in ddraw.ini, foo.msg will be associated with 0x2000 and bar.msg with 0x2001.)
|
||||
|
||||
> int sneak_success
|
||||
- returns 1 if last sneak attempt (roll against skill) was successful, 0 otherwise
|
||||
|
||||
+2
-2
@@ -658,8 +658,8 @@ static void __declspec(naked) DisplayBonusHtHDmg2() {
|
||||
push eax
|
||||
call sprintf_
|
||||
add esp, 4*5
|
||||
mov eax, 0x472569
|
||||
jmp eax
|
||||
push 0x472569
|
||||
retn
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+201
-277
File diff suppressed because it is too large
Load Diff
+6
-4
@@ -250,6 +250,7 @@ void LoadArrays(HANDLE h) {
|
||||
if (nextarrayid == 0) nextarrayid++;
|
||||
arrays.insert(array_pair(nextarrayid, arrayVar));
|
||||
savedArrays[arrayVar.key] = nextarrayid++;
|
||||
arrayVar.keyHash.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -408,7 +409,8 @@ DWORD _stdcall GetArray(DWORD id, DWORD key, DWORD keyType, DWORD* resultType) {
|
||||
return 0;
|
||||
} else {
|
||||
el = key;
|
||||
if (arr.size() <= el) return 0;
|
||||
// check for invalid index
|
||||
if (el < 0 || el >= arr.size()) return 0;
|
||||
}
|
||||
switch(arr.val[el].type) {
|
||||
case DATATYPE_NONE: return 0;
|
||||
@@ -436,9 +438,6 @@ void _stdcall SetArray(DWORD id, DWORD key, DWORD keyType, DWORD val, DWORD valT
|
||||
if (valType == DATATYPE_INT && val == 0 && allowUnset) {
|
||||
// after assigning zero to a key, no need to store it, because "get_array" returns 0 for non-existent keys: try unset
|
||||
if (el >= 0) {
|
||||
// remove key=>value pair from vector
|
||||
arr.clearRange(el, el + 2);
|
||||
arr.val.erase(arr.val.begin() + el, arr.val.begin() + (el + 2));
|
||||
// remove from hashtable
|
||||
arr.keyHash.erase(elIter);
|
||||
// shift all keyHash references
|
||||
@@ -446,6 +445,9 @@ void _stdcall SetArray(DWORD id, DWORD key, DWORD keyType, DWORD val, DWORD valT
|
||||
if (elIter->second >= (DWORD)el)
|
||||
elIter->second -= 2;
|
||||
}
|
||||
// remove key=>value pair from vector
|
||||
arr.clearRange(el, el + 2);
|
||||
arr.val.erase(arr.val.begin() + el, arr.val.begin() + (el + 2));
|
||||
}
|
||||
} else {
|
||||
if (el == -1) {
|
||||
|
||||
+274
-120
File diff suppressed because it is too large
Load Diff
+9
-2
@@ -34,6 +34,10 @@ static void __declspec(naked) compute_spray_rounds_distribution() {
|
||||
imul ebx; // multiply eax by ebx and store result in edx:eax
|
||||
mov ebx, compute_spray_center_div; // divisor
|
||||
idiv ebx; // divide edx:eax by ebx and store result in eax (edx)
|
||||
test edx, edx; // if remainder (edx) is not 0
|
||||
jz divEnd1;
|
||||
inc eax; // round up
|
||||
divEnd1:
|
||||
mov [esp+16], eax; // roundsCenter
|
||||
test eax, eax; // if (roundsCenter == 0)
|
||||
jnz loc_42350F;
|
||||
@@ -52,7 +56,10 @@ loc_42350F:
|
||||
imul ebx;
|
||||
mov ebx, compute_spray_target_div;
|
||||
idiv ebx;
|
||||
|
||||
test edx, edx; // if remainder (edx) is not 0
|
||||
jz divEnd2;
|
||||
inc eax; // round up
|
||||
divEnd2:
|
||||
mov ebp, eax;
|
||||
mov ebx, [esp+16];
|
||||
// at this point, eax should contain the same value as ebp (roundsMainTarget); ebx should contain value of roundsCenter
|
||||
@@ -62,7 +69,7 @@ loc_42350F:
|
||||
|
||||
|
||||
void ComputeSprayModInit() {
|
||||
if (GetPrivateProfileIntA("Misc", "ComputeSprayMod", 0, ini)) {
|
||||
if (GetPrivateProfileIntA("Misc", "ComputeSprayMod", 1, ini)) {
|
||||
dlog("Applying ComputeSpray changes.", DL_INIT);
|
||||
compute_spray_center_mult = GetPrivateProfileIntA("Misc", "ComputeSpray_CenterMult", 1, ini);
|
||||
compute_spray_center_div = GetPrivateProfileIntA("Misc", "ComputeSpray_CenterDiv", 3, ini);
|
||||
|
||||
+36
-12
@@ -27,21 +27,45 @@ static const DWORD ExpectedCRC[]= {0xe1680293, 0xef34f989};
|
||||
|
||||
static void inline Fail(const char* a) { MessageBoxA(0, a, "Error", MB_TASKMODAL); ExitProcess(1); }
|
||||
|
||||
static DWORD crcInternal(BYTE* data, DWORD size) {
|
||||
DWORD table[256];
|
||||
const DWORD kPoly = 0x1EDC6F41;
|
||||
for (DWORD i = 0;i < 256;i++) {
|
||||
DWORD r = i;
|
||||
for (int j = 0;j < 8;j++) {
|
||||
if ((r & 1) != 0) r = (r >> 1) ^ kPoly;
|
||||
else r >>= 1;
|
||||
}
|
||||
table[i] = r;
|
||||
}
|
||||
static const DWORD CRC_table[256] = {
|
||||
0x00000000, 0x0A5F4D75, 0x14BE9AEA, 0x1EE1D79F, 0x14C5EB57, 0x1E9AA622, 0x007B71BD, 0x0A243CC8,
|
||||
0x1433082D, 0x1E6C4558, 0x008D92C7, 0x0AD2DFB2, 0x00F6E37A, 0x0AA9AE0F, 0x14487990, 0x1E1734E5,
|
||||
0x15DECED9, 0x1F8183AC, 0x01605433, 0x0B3F1946, 0x011B258E, 0x0B4468FB, 0x15A5BF64, 0x1FFAF211,
|
||||
0x01EDC6F4, 0x0BB28B81, 0x15535C1E, 0x1F0C116B, 0x15282DA3, 0x1F7760D6, 0x0196B749, 0x0BC9FA3C,
|
||||
0x16054331, 0x1C5A0E44, 0x02BBD9DB, 0x08E494AE, 0x02C0A866, 0x089FE513, 0x167E328C, 0x1C217FF9,
|
||||
0x02364B1C, 0x08690669, 0x1688D1F6, 0x1CD79C83, 0x16F3A04B, 0x1CACED3E, 0x024D3AA1, 0x081277D4,
|
||||
0x03DB8DE8, 0x0984C09D, 0x17651702, 0x1D3A5A77, 0x171E66BF, 0x1D412BCA, 0x03A0FC55, 0x09FFB120,
|
||||
0x17E885C5, 0x1DB7C8B0, 0x03561F2F, 0x0909525A, 0x032D6E92, 0x097223E7, 0x1793F478, 0x1DCCB90D,
|
||||
0x11B258E1, 0x1BED1594, 0x050CC20B, 0x0F538F7E, 0x0577B3B6, 0x0F28FEC3, 0x11C9295C, 0x1B966429,
|
||||
0x058150CC, 0x0FDE1DB9, 0x113FCA26, 0x1B608753, 0x1144BB9B, 0x1B1BF6EE, 0x05FA2171, 0x0FA56C04,
|
||||
0x046C9638, 0x0E33DB4D, 0x10D20CD2, 0x1A8D41A7, 0x10A97D6F, 0x1AF6301A, 0x0417E785, 0x0E48AAF0,
|
||||
0x105F9E15, 0x1A00D360, 0x04E104FF, 0x0EBE498A, 0x049A7542, 0x0EC53837, 0x1024EFA8, 0x1A7BA2DD,
|
||||
0x07B71BD0, 0x0DE856A5, 0x1309813A, 0x1956CC4F, 0x1372F087, 0x192DBDF2, 0x07CC6A6D, 0x0D932718,
|
||||
0x138413FD, 0x19DB5E88, 0x073A8917, 0x0D65C462, 0x0741F8AA, 0x0D1EB5DF, 0x13FF6240, 0x19A02F35,
|
||||
0x1269D509, 0x1836987C, 0x06D74FE3, 0x0C880296, 0x06AC3E5E, 0x0CF3732B, 0x1212A4B4, 0x184DE9C1,
|
||||
0x065ADD24, 0x0C059051, 0x12E447CE, 0x18BB0ABB, 0x129F3673, 0x18C07B06, 0x0621AC99, 0x0C7EE1EC,
|
||||
0x1EDC6F41, 0x14832234, 0x0A62F5AB, 0x003DB8DE, 0x0A198416, 0x0046C963, 0x1EA71EFC, 0x14F85389,
|
||||
0x0AEF676C, 0x00B02A19, 0x1E51FD86, 0x140EB0F3, 0x1E2A8C3B, 0x1475C14E, 0x0A9416D1, 0x00CB5BA4,
|
||||
0x0B02A198, 0x015DECED, 0x1FBC3B72, 0x15E37607, 0x1FC74ACF, 0x159807BA, 0x0B79D025, 0x01269D50,
|
||||
0x1F31A9B5, 0x156EE4C0, 0x0B8F335F, 0x01D07E2A, 0x0BF442E2, 0x01AB0F97, 0x1F4AD808, 0x1515957D,
|
||||
0x08D92C70, 0x02866105, 0x1C67B69A, 0x1638FBEF, 0x1C1CC727, 0x16438A52, 0x08A25DCD, 0x02FD10B8,
|
||||
0x1CEA245D, 0x16B56928, 0x0854BEB7, 0x020BF3C2, 0x082FCF0A, 0x0270827F, 0x1C9155E0, 0x16CE1895,
|
||||
0x1D07E2A9, 0x1758AFDC, 0x09B97843, 0x03E63536, 0x09C209FE, 0x039D448B, 0x1D7C9314, 0x1723DE61,
|
||||
0x0934EA84, 0x036BA7F1, 0x1D8A706E, 0x17D53D1B, 0x1DF101D3, 0x17AE4CA6, 0x094F9B39, 0x0310D64C,
|
||||
0x0F6E37A0, 0x05317AD5, 0x1BD0AD4A, 0x118FE03F, 0x1BABDCF7, 0x11F49182, 0x0F15461D, 0x054A0B68,
|
||||
0x1B5D3F8D, 0x110272F8, 0x0FE3A567, 0x05BCE812, 0x0F98D4DA, 0x05C799AF, 0x1B264E30, 0x11790345,
|
||||
0x1AB0F979, 0x10EFB40C, 0x0E0E6393, 0x04512EE6, 0x0E75122E, 0x042A5F5B, 0x1ACB88C4, 0x1094C5B1,
|
||||
0x0E83F154, 0x04DCBC21, 0x1A3D6BBE, 0x106226CB, 0x1A461A03, 0x10195776, 0x0EF880E9, 0x04A7CD9C,
|
||||
0x196B7491, 0x133439E4, 0x0DD5EE7B, 0x078AA30E, 0x0DAE9FC6, 0x07F1D2B3, 0x1910052C, 0x134F4859,
|
||||
0x0D587CBC, 0x070731C9, 0x19E6E656, 0x13B9AB23, 0x199D97EB, 0x13C2DA9E, 0x0D230D01, 0x077C4074,
|
||||
0x0CB5BA48, 0x06EAF73D, 0x180B20A2, 0x12546DD7, 0x1870511F, 0x122F1C6A, 0x0CCECBF5, 0x06918680,
|
||||
0x1886B265, 0x12D9FF10, 0x0C38288F, 0x066765FA, 0x0C435932, 0x061C1447, 0x18FDC3D8, 0x12A28EAD
|
||||
};
|
||||
|
||||
static DWORD crcInternal(BYTE* data, DWORD size) {
|
||||
DWORD crc=0xffffffff;
|
||||
for (DWORD i = 0;i < size;i++) {
|
||||
crc = table[(((BYTE)(crc)) ^ data[i])] ^ (crc >> 8);
|
||||
crc = CRC_table[(((BYTE)(crc)) ^ data[i])] ^ (crc >> 8);
|
||||
}
|
||||
return crc^0xffffffff;
|
||||
}
|
||||
|
||||
+55
-24
@@ -22,14 +22,14 @@
|
||||
#include "FalloutEngine.h"
|
||||
#include "version.h"
|
||||
|
||||
static DWORD InCredits=0;
|
||||
static DWORD CreditsLine=0;
|
||||
static DWORD InCredits = 0;
|
||||
static DWORD CreditsLine = 0;
|
||||
|
||||
static const char* ExtraLines[]={
|
||||
static const char* ExtraLines[] = {
|
||||
"#SFALL " VERSION_STRING,
|
||||
"",
|
||||
"sfall is free software, licensed under the GPL",
|
||||
"Copyright 2008-2015 The sfall team",
|
||||
"Copyright 2008-2016 The sfall team",
|
||||
"",
|
||||
"@Author",
|
||||
"Timeslip",
|
||||
@@ -52,6 +52,8 @@ static const char* ExtraLines[]={
|
||||
"Tehnokrat",
|
||||
"Crafty",
|
||||
"Slider2k",
|
||||
"Vennor",
|
||||
"Oppen",
|
||||
"",
|
||||
"@Additional thanks to",
|
||||
"Nirran",
|
||||
@@ -69,42 +71,43 @@ static const char* ExtraLines[]={
|
||||
"#FALLOUT 2",
|
||||
""
|
||||
};
|
||||
static DWORD ExtraLineCount=sizeof(ExtraLines)/4;
|
||||
static DWORD ExtraLineCount = sizeof(ExtraLines)/4;
|
||||
|
||||
static const char* creditsFile="credits.txt";
|
||||
static const char* creditsFile = "credits.txt";
|
||||
|
||||
static void _stdcall ShowCreditsHook() {
|
||||
InCredits=1;
|
||||
CreditsLine=0;
|
||||
InCredits = 1;
|
||||
CreditsLine = 0;
|
||||
__asm {
|
||||
mov eax, creditsFile;
|
||||
mov eax, creditsFile;
|
||||
call credits_;
|
||||
}
|
||||
InCredits=0;
|
||||
InCredits = 0;
|
||||
}
|
||||
|
||||
static DWORD _stdcall CreditsNextLine(char* buf, DWORD* font, DWORD* colour) {
|
||||
if(!InCredits||CreditsLine>=ExtraLineCount) return 0;
|
||||
const char* line=ExtraLines[CreditsLine++];
|
||||
if(strlen(line)) {
|
||||
if(line[0]=='#') {
|
||||
if (!InCredits || CreditsLine >= ExtraLineCount) return 0;
|
||||
const char* line = ExtraLines[CreditsLine++];
|
||||
if (strlen(line)) {
|
||||
if (line[0] == '#') {
|
||||
line++;
|
||||
*font=*(DWORD*)_name_font;
|
||||
*colour=*(BYTE*)0x6A7F01;
|
||||
} else if(line[0]=='@') {
|
||||
*font = *(DWORD*)_name_font;
|
||||
*colour = *(BYTE*)0x6A7F01;
|
||||
} else if (line[0] == '@') {
|
||||
line++;
|
||||
*font=*(DWORD*)_title_font;
|
||||
*colour=*(DWORD*)_title_color;
|
||||
*font = *(DWORD*)_title_font;
|
||||
*colour = *(DWORD*)_title_color;
|
||||
} else {
|
||||
*font=*(DWORD*)_name_font;
|
||||
*colour=*(DWORD*)_name_color;
|
||||
*font = *(DWORD*)_name_font;
|
||||
*colour = *(DWORD*)_name_color;
|
||||
}
|
||||
}
|
||||
strcpy_s(buf, 256, line);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void __declspec(naked) CreditsNextLineHook() {
|
||||
// Additional lines will be at the top of CREDITS.TXT contents
|
||||
static void __declspec(naked) CreditsNextLineHook_Top() {
|
||||
__asm {
|
||||
pushad;
|
||||
push ebx;
|
||||
@@ -113,7 +116,7 @@ static void __declspec(naked) CreditsNextLineHook() {
|
||||
call CreditsNextLine;
|
||||
test eax, eax;
|
||||
popad;
|
||||
jz fail;
|
||||
jz fail;
|
||||
xor eax, eax;
|
||||
inc eax;
|
||||
retn;
|
||||
@@ -122,8 +125,36 @@ fail:
|
||||
}
|
||||
}
|
||||
|
||||
// Additional lines will be at the bottom of CREDITS.TXT contents
|
||||
static void __declspec(naked) CreditsNextLineHook_Bottom() {
|
||||
__asm {
|
||||
pushad;
|
||||
call credits_get_next_line_; // call default function
|
||||
test eax, eax;
|
||||
popad;
|
||||
jnz morelines; // if not the end yet, skip custom code
|
||||
pushad;
|
||||
push ebx;
|
||||
push edx;
|
||||
push eax;
|
||||
call CreditsNextLine; // otherwise call out function
|
||||
test eax, eax; // if any extra lines left, return 1 (from function), 0 otherwise
|
||||
popad;
|
||||
jnz morelines;
|
||||
theend:
|
||||
mov eax, 0x0;
|
||||
retn;
|
||||
morelines:
|
||||
mov eax, 0x1;
|
||||
retn;
|
||||
}
|
||||
}
|
||||
|
||||
void CreditsInit() {
|
||||
HookCall(0x480C49, &ShowCreditsHook);
|
||||
HookCall(0x43F881, &ShowCreditsHook);
|
||||
HookCall(0x42CB49, &CreditsNextLineHook);
|
||||
if (GetPrivateProfileIntA("Misc", "CreditsAtBottom", 0, ini))
|
||||
HookCall(0x42CB49, &CreditsNextLineHook_Bottom);
|
||||
else
|
||||
HookCall(0x42CB49, &CreditsNextLineHook_Top);
|
||||
}
|
||||
|
||||
+15
-15
@@ -84,29 +84,29 @@ static void __declspec(naked) UnknownHook2() {
|
||||
|
||||
static void __declspec(naked) GetNumButtonsHook1() {
|
||||
__asm {
|
||||
lea esi, Menus;
|
||||
mov eax, [esi+edi*4];
|
||||
mov eax, [_btncnt+eax*4];
|
||||
mov esi, 0x43F064;
|
||||
jmp esi;
|
||||
lea esi, Menus;
|
||||
mov eax, [esi+edi*4];
|
||||
mov eax, [_btncnt+eax*4];
|
||||
push 0x43F064;
|
||||
retn;
|
||||
}
|
||||
}
|
||||
static void __declspec(naked) GetNumButtonsHook2() {
|
||||
__asm {
|
||||
lea edx, Menus;
|
||||
mov eax, [edx+edi*4];
|
||||
mov eax, [_btncnt+eax*4];
|
||||
mov edx, 0x43F18B;
|
||||
jmp edx;
|
||||
lea edx, Menus;
|
||||
mov eax, [edx+edi*4];
|
||||
mov eax, [_btncnt+eax*4];
|
||||
push 0x43F18B;
|
||||
retn;
|
||||
}
|
||||
}
|
||||
static void __declspec(naked) GetNumButtonsHook3() {
|
||||
__asm {
|
||||
lea eax, Menus;
|
||||
mov eax, [eax+edi*4];
|
||||
mov eax, [_btncnt+eax*4];
|
||||
mov ebx, 0x43F1EB;
|
||||
jmp ebx;
|
||||
lea eax, Menus;
|
||||
mov eax, [eax+edi*4];
|
||||
mov eax, [_btncnt+eax*4];
|
||||
push 0x43F1EB;
|
||||
retn;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+23
-1
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* sfall
|
||||
* Copyright (C) 2008-2015 The sfall team
|
||||
* Copyright (C) 2008-2016 The sfall team
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -82,18 +82,22 @@ const DWORD combat_input_ = 0x4227F4;
|
||||
const DWORD combat_should_end_ = 0x422C60;
|
||||
const DWORD combat_turn_ = 0x42299C;
|
||||
const DWORD compute_damage_ = 0x4247B8;
|
||||
const DWORD config_set_value_ = 0x42C160;
|
||||
const DWORD container_exit_ = 0x476394;
|
||||
const DWORD correctFidForRemovedItem_ = 0x45409C;
|
||||
const DWORD credits_ = 0x42C860;
|
||||
const DWORD credits_get_next_line_ = 0x42CE6C;
|
||||
const DWORD critter_body_type_ = 0x42DDC4;
|
||||
const DWORD critter_can_obj_dude_rest_ = 0x42E564;
|
||||
const DWORD critter_compute_ap_from_distance_ = 0x42E62C;
|
||||
const DWORD critter_get_hits_ = 0x42D18C;
|
||||
const DWORD critter_is_dead_ = 0x42DD18;
|
||||
const DWORD critter_kill_ = 0x42DA64;
|
||||
const DWORD critter_kill_count_type_ = 0x42D920;
|
||||
const DWORD critter_name_ = 0x42D0A8;
|
||||
const DWORD critter_pc_set_name_ = 0x42D138;
|
||||
const DWORD critterClearObjDrugs_ = 0x42DA54;
|
||||
const DWORD critterIsOverloaded_ = 0x42E66C;
|
||||
const DWORD db_dir_entry_ = 0x4C5D68;
|
||||
const DWORD db_fclose_ = 0x4C5EB4;
|
||||
const DWORD db_fgetc_ = 0x4C5F24;
|
||||
@@ -113,10 +117,15 @@ const DWORD db_fwriteInt_ = 0x4C6214;
|
||||
const DWORD db_read_to_buf_ = 0x4C5DD4;
|
||||
const DWORD dbase_close_ = 0x4E5270;
|
||||
const DWORD dbase_open_ = 0x4E4F58;
|
||||
const DWORD debug_register_env_ = 0x4C6D90;
|
||||
const DWORD determine_to_hit_func_ = 0x4243A8;
|
||||
const DWORD dialog_out_ = 0x41CF20;
|
||||
const DWORD display_inventory_ = 0x46FDF4;
|
||||
const DWORD display_print_ = 0x43186C;
|
||||
const DWORD display_scroll_down_ = 0x431B9C;
|
||||
const DWORD display_scroll_up_ = 0x431B70;
|
||||
const DWORD display_stats_ = 0x471D5C;
|
||||
const DWORD display_table_inventories_ = 0x475334;
|
||||
const DWORD display_target_inventory_ = 0x47036C;
|
||||
const DWORD do_options_ = 0x48FC48;
|
||||
const DWORD do_optionsFunc_ = 0x48FC50;
|
||||
@@ -142,6 +151,7 @@ const DWORD game_help_ = 0x443F74;
|
||||
const DWORD game_set_global_var_ = 0x443C98;
|
||||
const DWORD game_time_date_ = 0x4A3338;
|
||||
const DWORD gdialog_barter_cleanup_tables_ = 0x448660;
|
||||
const DWORD gdialogDisplayMsg_ = 0x445448;
|
||||
const DWORD gdProcess_ = 0x4465C0;
|
||||
const DWORD get_input_ = 0x4C8B78;
|
||||
const DWORD get_time_ = 0x4C9370;
|
||||
@@ -184,15 +194,18 @@ const DWORD inven_worn_ = 0x471C08;
|
||||
const DWORD is_within_perception_ = 0x42BA04;
|
||||
const DWORD isPartyMember_ = 0x494FC4;
|
||||
const DWORD item_add_force_ = 0x4772B8;
|
||||
const DWORD item_add_mult_ = 0x477158;
|
||||
const DWORD item_c_curr_size_ = 0x479A20;
|
||||
const DWORD item_c_max_size_ = 0x479A00;
|
||||
const DWORD item_caps_total_ = 0x47A6A8;
|
||||
const DWORD item_d_check_addict_ = 0x47A640;
|
||||
const DWORD item_d_take_drug_ = 0x479F60;
|
||||
const DWORD item_get_type_ = 0x477AFC;
|
||||
const DWORD item_m_cell_pid_ = 0x479454;
|
||||
const DWORD item_m_dec_charges_ = 0x4795A4;
|
||||
const DWORD item_m_turn_off_ = 0x479898;
|
||||
const DWORD item_move_all_ = 0x4776AC;
|
||||
const DWORD item_move_force_ = 0x4776A4;
|
||||
const DWORD item_mp_cost_ = 0x478040;
|
||||
const DWORD item_remove_mult_ = 0x477490;
|
||||
const DWORD item_size_ = 0x477B68;
|
||||
@@ -211,7 +224,9 @@ const DWORD item_w_dr_adjust_ = 0x4791E0;
|
||||
const DWORD item_w_max_ammo_ = 0x478674;
|
||||
const DWORD item_w_mp_cost_ = 0x478B24;
|
||||
const DWORD item_w_range_ = 0x478A1C;
|
||||
const DWORD item_w_rounds_ = 0x478D80;
|
||||
const DWORD item_w_try_reload_ = 0x478768;
|
||||
const DWORD item_w_unload_ = 0x478F80;
|
||||
const DWORD item_weight_ = 0x477B88;
|
||||
const DWORD light_get_tile_ = 0x47A980;
|
||||
const DWORD ListDrvdStats_ = 0x43527C;
|
||||
@@ -239,8 +254,10 @@ const DWORD message_init_ = 0x48494C;
|
||||
const DWORD message_load_ = 0x484AA4;
|
||||
const DWORD message_make_path_ = 0x484CB8;
|
||||
const DWORD message_search_ = 0x484C30;
|
||||
const DWORD mouse_click_in_ = 0x4CA934;
|
||||
const DWORD mouse_get_position_ = 0x4CA9DC;
|
||||
const DWORD mouse_hide_ = 0x4CA534;
|
||||
const DWORD mouse_in_ = 0x4CA8C8;
|
||||
const DWORD mouse_show_ = 0x4CA34C;
|
||||
const DWORD move_inventory_ = 0x474708;
|
||||
const DWORD NixHotLines_ = 0x4999C0;
|
||||
@@ -265,6 +282,7 @@ const DWORD obj_scroll_blocking_at_ = 0x48BB44;
|
||||
const DWORD obj_set_light_ = 0x48AC90; // <eax>(int aObj<eax>, signed int aDist<edx>, int a3<ecx>, int aIntensity<ebx>)
|
||||
const DWORD obj_shoot_blocking_at_ = 0x48B930; // (EAX *obj, EDX hexNum, EBX level)
|
||||
const DWORD obj_sight_blocking_at_ = 0x48BB88;
|
||||
const DWORD obj_top_environment_ = 0x48B304;
|
||||
const DWORD obj_use_book_ = 0x49B9F0;
|
||||
const DWORD obj_use_power_on_car_ = 0x49BDE8;
|
||||
const DWORD OptionWindow_ = 0x437C08;
|
||||
@@ -337,6 +355,7 @@ const DWORD scr_remove_ = 0x4A61D4;
|
||||
const DWORD scr_set_ext_param_ = 0x4A3B34;
|
||||
const DWORD scr_set_objs_ = 0x4A3B0C;
|
||||
const DWORD scr_write_ScriptNode_ = 0x4A5704;
|
||||
const DWORD set_game_time_ = 0x4A347C;
|
||||
const DWORD SexWindow_ = 0x437664;
|
||||
const DWORD skill_check_stealing_ = 0x4ABBE4;
|
||||
const DWORD skill_dec_point_ = 0x4AA8C4;
|
||||
@@ -355,6 +374,8 @@ const DWORD stat_level_ = 0x4AEF48; // &GetCurrentStat(void* critter, int statID
|
||||
const DWORD stat_pc_add_experience_ = 0x4AFAA8;
|
||||
const DWORD stat_pc_get_ = 0x4AF8FC;
|
||||
const DWORD stat_pc_set_ = 0x4AF910;
|
||||
const DWORD stat_set_bonus_ = 0x4AF63C;
|
||||
const DWORD stricmp_ = 0x4DECE6;
|
||||
const DWORD strncpy_ = 0x4F014F;
|
||||
const DWORD switch_hand_ = 0x4714E0;
|
||||
const DWORD talk_to_translucent_trans_buf_to_buf_ = 0x44AC68;
|
||||
@@ -399,6 +420,7 @@ const DWORD xfread_ = 0x4DF44C;
|
||||
const DWORD xfseek_ = 0x4DF5D8;
|
||||
const DWORD xftell_ = 0x4DF690;
|
||||
const DWORD xfwrite_ = 0x4DF4E8;
|
||||
const DWORD xremovepath_ = 0x4DFAB4;
|
||||
const DWORD xrewind_ = 0x4DF6E4;
|
||||
const DWORD xungetc_ = 0x4DF3F4;
|
||||
const DWORD xvfprintf_ = 0x4DF1AC;
|
||||
|
||||
+45
-1
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* sfall
|
||||
* Copyright (C) 2008-2015 The sfall team
|
||||
* Copyright (C) 2008-2016 The sfall team
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include "FalloutStructs.h"
|
||||
|
||||
#define _aiInfoList 0x510948
|
||||
#define _ambient_light 0x51923C
|
||||
#define _art 0x510738
|
||||
#define _art_name 0x56C9E4
|
||||
@@ -38,12 +39,14 @@
|
||||
#define _btncnt 0x43EA1C
|
||||
#define _CarCurrArea 0x672E68
|
||||
#define _cmap 0x51DF34
|
||||
#define _colorTable 0x6A38D0
|
||||
#define _combat_free_move 0x56D39C
|
||||
#define _combat_list 0x56D390
|
||||
#define _combat_state 0x510944
|
||||
#define _combat_turn_running 0x51093C
|
||||
#define _combatNumTurns 0x510940
|
||||
#define _crit_succ_eff 0x510978
|
||||
#define _critter_db_handle 0x58E94C
|
||||
#define _critterClearObj 0x518438
|
||||
#define _crnt_func 0x664508
|
||||
#define _curr_font_num 0x51E3B0
|
||||
@@ -62,11 +65,16 @@
|
||||
#define _folder_card_fid 0x5705B0
|
||||
#define _folder_card_title 0x5705B8
|
||||
#define _folder_card_title2 0x5705BC
|
||||
#define _frame_time 0x5709C4
|
||||
#define _free_perk 0x570A29
|
||||
#define _game_global_vars 0x5186C0
|
||||
#define _game_user_wants_to_quit 0x5186CC
|
||||
#define _gcsd 0x51094C
|
||||
#define _gdBarterMod 0x51873C
|
||||
#define _gdNumOptions 0x5186D8
|
||||
#define _gIsSteal 0x51D430
|
||||
#define _glblmode 0x5709D0
|
||||
#define _gmouse_current_cursor 0x518C0C
|
||||
#define _gmovie_played_list 0x596C78
|
||||
#define _GreenColor 0x6A3CB0
|
||||
#define _gsound_initialized 0x518E30
|
||||
@@ -79,6 +87,7 @@
|
||||
#define _i_rhand 0x59E968
|
||||
#define _i_wid 0x59E964
|
||||
#define _i_worn 0x59E954
|
||||
#define _In_WorldMap 0x672E1C
|
||||
#define _info_line 0x5707D0
|
||||
#define _interfaceWindow 0x519024
|
||||
#define _intfaceEnabled 0x518F10
|
||||
@@ -98,12 +107,16 @@
|
||||
#define _Lifegiver 0x570854
|
||||
#define _list_com 0x56D394
|
||||
#define _list_total 0x56D37C
|
||||
#define _loadingGame 0x5194C4
|
||||
#define _LSData 0x613D30
|
||||
#define _lsgwin 0x6142C4
|
||||
#define _main_ctd 0x56D2B0
|
||||
#define _main_window 0x5194F0
|
||||
#define _map_elevation 0x519578
|
||||
#define _map_global_vars 0x51956C
|
||||
#define _master_db_handle 0x58E948
|
||||
#define _max 0x56FB50
|
||||
#define _Meet_Frank_Horrigan 0x672E04
|
||||
#define _mouse_hotx 0x6AC7D0
|
||||
#define _mouse_hoty 0x6AC7CC
|
||||
#define _mouse_is_hidden 0x6AC790
|
||||
@@ -117,6 +130,7 @@
|
||||
#define _num_game_global_vars 0x5186C4
|
||||
#define _num_map_global_vars 0x519574
|
||||
#define _obj_dude 0x6610B8
|
||||
#define _objectTable 0x639DA0
|
||||
#define _objItemOutlineState 0x519798
|
||||
#define _optionRect 0x58ECC0
|
||||
#define _outlined_object 0x518D94
|
||||
@@ -139,14 +153,17 @@
|
||||
#define _pip_win 0x6644C4
|
||||
#define _pipboy_message_file 0x664348
|
||||
#define _pipmesg 0x664338
|
||||
#define _preload_list_index 0x519640
|
||||
#define _procTableStrs 0x51C758 // table of procId (from define.h) => procName map
|
||||
#define _proto_main_msg_file 0x6647FC
|
||||
#define _ptable 0x59E934
|
||||
#define _pud 0x59E960
|
||||
#define _queue 0x6648C0
|
||||
#define _quick_done 0x5193BC
|
||||
#define _read_callback 0x51DEEC
|
||||
#define _RedColor 0x6AB4D0
|
||||
#define _retvals 0x43EA7C
|
||||
#define _scr_size 0x6AC9F0
|
||||
#define _skill_data 0x51D118
|
||||
#define _slot_cursor 0x5193B8
|
||||
#define _sneak_working 0x56D77C // DWORD var
|
||||
@@ -154,6 +171,7 @@
|
||||
#define _squares 0x66BE08
|
||||
#define _stack 0x59E86C
|
||||
#define _stack_offset 0x59E844
|
||||
#define _stat_data 0x51D53C
|
||||
#define _stat_flag 0x66452A
|
||||
#define _Tag_ 0x5708B0
|
||||
#define _tag_skill 0x668070
|
||||
@@ -162,6 +180,8 @@
|
||||
#define _target_stack 0x59E81C
|
||||
#define _target_stack_offset 0x59E7EC
|
||||
#define _target_str 0x56D518
|
||||
#define _target_xpos 0x672E20
|
||||
#define _target_ypos 0x672E24
|
||||
#define _text_char_width 0x51E3C4
|
||||
#define _text_height 0x51E3BC
|
||||
#define _text_max 0x51E3D4
|
||||
@@ -174,11 +194,13 @@
|
||||
#define _trait_data 0x51DB84
|
||||
#define _view_page 0x664520
|
||||
#define _wd_obj 0x59E98C
|
||||
#define _wmAreaInfoList 0x51DDF8
|
||||
#define _wmLastRndTime 0x51DEA0
|
||||
#define _wmWorldOffsetX 0x51DE2C
|
||||
#define _wmWorldOffsetY 0x51DE30
|
||||
#define _world_xpos 0x672E0C
|
||||
#define _world_ypos 0x672E10
|
||||
#define _WorldMapCurrArea 0x672E08
|
||||
#define _YellowColor 0x6AB8BB
|
||||
|
||||
// variables
|
||||
@@ -223,18 +245,22 @@ extern const DWORD combat_input_;
|
||||
extern const DWORD combat_should_end_;
|
||||
extern const DWORD combat_turn_;
|
||||
extern const DWORD compute_damage_;
|
||||
extern const DWORD config_set_value_;
|
||||
extern const DWORD container_exit_;
|
||||
extern const DWORD correctFidForRemovedItem_; // (int critter@<eax>, int oldArmor@<edx>, int removeSlotsFlags@<ebx>)
|
||||
extern const DWORD credits_;
|
||||
extern const DWORD credits_get_next_line_;
|
||||
extern const DWORD critter_body_type_;
|
||||
extern const DWORD critter_can_obj_dude_rest_;
|
||||
extern const DWORD critter_compute_ap_from_distance_;
|
||||
extern const DWORD critter_get_hits_;
|
||||
extern const DWORD critter_is_dead_; // eax - critter
|
||||
extern const DWORD critter_kill_;
|
||||
extern const DWORD critter_kill_count_type_;
|
||||
extern const DWORD critter_name_;
|
||||
extern const DWORD critter_pc_set_name_;
|
||||
extern const DWORD critterClearObjDrugs_;
|
||||
extern const DWORD critterIsOverloaded_;
|
||||
extern const DWORD db_dir_entry_;
|
||||
extern const DWORD db_fclose_;
|
||||
extern const DWORD db_fgetc_;
|
||||
@@ -254,10 +280,15 @@ extern const DWORD db_fwriteInt_;
|
||||
extern const DWORD db_read_to_buf_;
|
||||
extern const DWORD dbase_close_;
|
||||
extern const DWORD dbase_open_;
|
||||
extern const DWORD debug_register_env_;
|
||||
extern const DWORD determine_to_hit_func_;
|
||||
extern const DWORD dialog_out_;
|
||||
extern const DWORD display_inventory_;
|
||||
extern const DWORD display_print_; // eax - char* to display
|
||||
extern const DWORD display_scroll_down_;
|
||||
extern const DWORD display_scroll_up_;
|
||||
extern const DWORD display_stats_;
|
||||
extern const DWORD display_table_inventories_;
|
||||
extern const DWORD display_target_inventory_;
|
||||
extern const DWORD do_options_;
|
||||
extern const DWORD do_optionsFunc_;
|
||||
@@ -283,6 +314,7 @@ extern const DWORD game_help_;
|
||||
extern const DWORD game_set_global_var_;
|
||||
extern const DWORD game_time_date_;
|
||||
extern const DWORD gdialog_barter_cleanup_tables_;
|
||||
extern const DWORD gdialogDisplayMsg_;
|
||||
extern const DWORD gdProcess_;
|
||||
extern const DWORD get_input_;
|
||||
extern const DWORD get_time_;
|
||||
@@ -325,15 +357,18 @@ extern const DWORD inven_worn_;
|
||||
extern const DWORD is_within_perception_;
|
||||
extern const DWORD isPartyMember_; // (<eax> - object) - bool result
|
||||
extern const DWORD item_add_force_;
|
||||
extern const DWORD item_add_mult_;
|
||||
extern const DWORD item_c_curr_size_;
|
||||
extern const DWORD item_c_max_size_;
|
||||
extern const DWORD item_caps_total_;
|
||||
extern const DWORD item_d_check_addict_;
|
||||
extern const DWORD item_d_take_drug_;
|
||||
extern const DWORD item_get_type_;
|
||||
extern const DWORD item_m_cell_pid_;
|
||||
extern const DWORD item_m_dec_charges_;
|
||||
extern const DWORD item_m_turn_off_;
|
||||
extern const DWORD item_move_all_;
|
||||
extern const DWORD item_move_force_;
|
||||
extern const DWORD item_mp_cost_;
|
||||
extern const DWORD item_remove_mult_;
|
||||
extern const DWORD item_size_;
|
||||
@@ -352,7 +387,9 @@ extern const DWORD item_w_dr_adjust_;
|
||||
extern const DWORD item_w_max_ammo_;
|
||||
extern const DWORD item_w_mp_cost_;
|
||||
extern const DWORD item_w_range_;
|
||||
extern const DWORD item_w_rounds_;
|
||||
extern const DWORD item_w_try_reload_;
|
||||
extern const DWORD item_w_unload_;
|
||||
extern const DWORD item_weight_;
|
||||
extern const DWORD light_get_tile_; // aElev<eax>, aTilenum<edx>
|
||||
extern const DWORD ListDrvdStats_;
|
||||
@@ -383,8 +420,10 @@ extern const DWORD message_init_;
|
||||
extern const DWORD message_load_;
|
||||
extern const DWORD message_make_path_;
|
||||
extern const DWORD message_search_;
|
||||
extern const DWORD mouse_click_in_;
|
||||
extern const DWORD mouse_get_position_;
|
||||
extern const DWORD mouse_hide_;
|
||||
extern const DWORD mouse_in_;
|
||||
extern const DWORD mouse_show_;
|
||||
extern const DWORD move_inventory_;
|
||||
extern const DWORD NixHotLines_;
|
||||
@@ -409,6 +448,7 @@ extern const DWORD obj_scroll_blocking_at_;
|
||||
extern const DWORD obj_set_light_; // <eax>(int aObj<eax>, signed int aDist<edx>, int a3<ecx>, int aIntensity<ebx>)
|
||||
extern const DWORD obj_shoot_blocking_at_;
|
||||
extern const DWORD obj_sight_blocking_at_;
|
||||
extern const DWORD obj_top_environment_;
|
||||
extern const DWORD obj_use_book_;
|
||||
extern const DWORD obj_use_power_on_car_;
|
||||
extern const DWORD OptionWindow_;
|
||||
@@ -481,6 +521,7 @@ extern const DWORD scr_remove_;
|
||||
extern const DWORD scr_set_ext_param_;
|
||||
extern const DWORD scr_set_objs_;
|
||||
extern const DWORD scr_write_ScriptNode_;
|
||||
extern const DWORD set_game_time_;
|
||||
extern const DWORD SexWindow_;
|
||||
extern const DWORD skill_check_stealing_;
|
||||
extern const DWORD skill_dec_point_;
|
||||
@@ -499,6 +540,8 @@ extern const DWORD stat_level_;
|
||||
extern const DWORD stat_pc_add_experience_;
|
||||
extern const DWORD stat_pc_get_;
|
||||
extern const DWORD stat_pc_set_;
|
||||
extern const DWORD stat_set_bonus_;
|
||||
extern const DWORD stricmp_;
|
||||
extern const DWORD strncpy_;
|
||||
extern const DWORD switch_hand_;
|
||||
extern const DWORD talk_to_translucent_trans_buf_to_buf_;
|
||||
@@ -543,6 +586,7 @@ extern const DWORD xfread_;
|
||||
extern const DWORD xfseek_;
|
||||
extern const DWORD xftell_;
|
||||
extern const DWORD xfwrite_;
|
||||
extern const DWORD xremovepath_;
|
||||
extern const DWORD xrewind_;
|
||||
extern const DWORD xungetc_;
|
||||
extern const DWORD xvfprintf_;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user