mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7d8de5e1a | ||
|
|
0a21e4abfa | ||
|
|
1340eeb0d3 | ||
|
|
a350fed4d1 | ||
|
|
402d4f40f2 | ||
|
|
0f49c7f68d | ||
|
|
deb0299776 | ||
|
|
4bb3fa0275 | ||
|
|
da31455cef | ||
|
|
4da10e2fdb | ||
|
|
5426d043c1 | ||
|
|
719cec74d1 | ||
|
|
627fe11c29 | ||
|
|
dcca405b89 | ||
|
|
cce9437d19 | ||
|
|
09b3bf3aed | ||
|
|
08a891a0fc | ||
|
|
e9df81ac78 | ||
|
|
3e982be4b6 | ||
|
|
8a888f387d | ||
|
|
712b4de5f7 | ||
|
|
a3b456cf0a | ||
|
|
9f689863d7 | ||
|
|
b5306406b3 | ||
|
|
ce3b9c172c | ||
|
|
b8a77d77fb | ||
|
|
a01da656c7 | ||
|
|
5eda8dd7a0 | ||
|
|
c05babeda7 | ||
|
|
cc2b95d64e | ||
|
|
fb62bd51b5 | ||
|
|
f4d7ccef40 | ||
|
|
85bb34377c | ||
|
|
af24c6eae4 | ||
|
|
930f463000 | ||
|
|
e1aefcc1ed | ||
|
|
25554ff0b2 | ||
|
|
dad0860d6e | ||
|
|
a7e492a80f | ||
|
|
d9b748c261 | ||
|
|
0aad511e3e | ||
|
|
d117296990 | ||
|
|
e672db53c7 | ||
|
|
25bbd91fc5 | ||
|
|
8db528330b | ||
|
|
f761f7834e | ||
|
|
f6c4e5133c | ||
|
|
2e30c86467 | ||
|
|
1679f7c59d | ||
|
|
9a4cbd4fa9 | ||
|
|
0c561ba677 | ||
|
|
20ccdacee8 | ||
|
|
d44663ce76 | ||
|
|
a196160258 | ||
|
|
55a97a5793 | ||
|
|
3eaa64ee16 | ||
|
|
aa9257ab1c | ||
|
|
81a8fd4863 | ||
|
|
ed260ad7e5 | ||
|
|
9dce3c8d62 | ||
|
|
f28a179c78 | ||
|
|
540abbe273 | ||
|
|
8dda3940d0 | ||
|
|
44b9b24490 | ||
|
|
dafbc357b2 | ||
|
|
02572a5193 | ||
|
|
cab19b5ca0 | ||
|
|
d6952a0c93 | ||
|
|
b996867d65 | ||
|
|
bd18c240f9 | ||
|
|
2ad28e3086 | ||
|
|
ef5ff4e90f | ||
|
|
0a672c1e10 | ||
|
|
01214633f4 | ||
|
|
334e98c4c1 | ||
|
|
78a29ad556 | ||
|
|
e5d14ff845 | ||
|
|
716bfd4156 | ||
|
|
9b67db7208 | ||
|
|
e92ded34e4 | ||
|
|
1689542165 | ||
|
|
2c86201db9 | ||
|
|
d7c9acf713 | ||
|
|
399da0d322 | ||
|
|
774adaa3b0 | ||
|
|
b4d174d91b | ||
|
|
3291f6fe17 | ||
|
|
84f442ca08 | ||
|
|
f5c35eb639 | ||
|
|
514894ed59 | ||
|
|
204810d067 | ||
|
|
ec4ba13a28 | ||
|
|
14a6ef7fc6 | ||
|
|
c3a74070ca | ||
|
|
302fd4bb51 | ||
|
|
c7520c71cf | ||
|
|
45632d6887 | ||
|
|
866c9165c0 | ||
|
|
813abbf452 | ||
|
|
c6864e01f6 | ||
|
|
0eab48932a | ||
|
|
6c3efc5b84 | ||
|
|
cb8d7dc94a | ||
|
|
5786cfb267 | ||
|
|
78dfb530a9 | ||
|
|
d588f2e691 | ||
|
|
daf7a82997 | ||
|
|
9ad2b19e1a | ||
|
|
4b66dd3682 | ||
|
|
4899aeece1 | ||
|
|
946266e367 | ||
|
|
438ea071fc | ||
|
|
89760235c7 | ||
|
|
321f1c6034 | ||
|
|
513338f160 | ||
|
|
08b92542f4 | ||
|
|
46013c94b0 | ||
|
|
7a4ab59089 | ||
|
|
e505e204cb | ||
|
|
7343754d53 | ||
|
|
ae1e17d359 | ||
|
|
32dbe5581d | ||
|
|
a93ad5a9ba | ||
|
|
874b047ce1 | ||
|
|
afa590c5a8 | ||
|
|
b89c52fcec | ||
|
|
ec2d323f75 | ||
|
|
586679b07f |
@@ -46,8 +46,6 @@ nb-configuration.xml
|
|||||||
*.user
|
*.user
|
||||||
*.userosscache
|
*.userosscache
|
||||||
*.sln.docstates
|
*.sln.docstates
|
||||||
*.VC.db
|
|
||||||
*.VC.opendb
|
|
||||||
|
|
||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
*.userprefs
|
*.userprefs
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
; have an additional NoHardcode option in this file which can
|
; have an additional NoHardcode option in this file which can
|
||||||
; be used to remove their hardcoded effects, and add new stat/skill effects
|
; be used to remove their hardcoded effects, and add new stat/skill effects
|
||||||
|
|
||||||
;Name=The name of the perk (max 63 characters)
|
;Name=The name of the perk
|
||||||
;Desc=The description of the perk (max 1023 characters)
|
;Desc=The description of the perk
|
||||||
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
||||||
;Ranks=The number of perk levels
|
;Ranks=The number of perk levels
|
||||||
;Level=The minimum required level
|
;Level=The minimum required level
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
;Controls the elevators
|
;Controls the elevators
|
||||||
;Image must match up with the image of an existing elevator (can be overrided in sfall 4.1.4/3.8.14 or newer)
|
;Image must match up with the image of an existing elevator
|
||||||
;Make sure you specify the correct number of exit targets
|
;Make sure you specify the correct number of exit targets
|
||||||
;The maximum number of elevators is currently capped at 50
|
;The maximum number of elevators is currently capped at 50
|
||||||
;Use the line number (0-indexed) of the corresponding FRM in intrface.lst to set the appearance of the elevator
|
|
||||||
|
|
||||||
;Override elevator 0
|
;Override elevator 0
|
||||||
[0]
|
[000]
|
||||||
;This elevator will use the settings of the original forth elevator
|
;This elevator uses the frm of the original forth elevator
|
||||||
Image=4
|
Image=4
|
||||||
|
|
||||||
;Set up the first exit point
|
;Set up the first exit point
|
||||||
@@ -25,22 +24,3 @@ Elevation3=0
|
|||||||
Tile3=12944
|
Tile3=12944
|
||||||
|
|
||||||
;No forth exit point
|
;No forth exit point
|
||||||
|
|
||||||
;Override FRM images of elevator 0. Set ButtonsFrm to -1 to use default buttons from MainFrm
|
|
||||||
MainFrm=143
|
|
||||||
ButtonsFrm=-1
|
|
||||||
|
|
||||||
|
|
||||||
;An example of a new elevator
|
|
||||||
[24]
|
|
||||||
;Set Image to 24 to create a new elevator type (0-23 are the original elevator types)
|
|
||||||
Image=24
|
|
||||||
|
|
||||||
;Set the number of buttons
|
|
||||||
ButtonCount=3
|
|
||||||
|
|
||||||
;Set the appearance of the elevator
|
|
||||||
MainFrm=148
|
|
||||||
ButtonsFrm=151
|
|
||||||
|
|
||||||
;Set up the exit points for all three buttons (see examples above)
|
|
||||||
|
|||||||
@@ -1,91 +0,0 @@
|
|||||||
;WeaponAnims codes
|
|
||||||
; 1 - Knife (D)
|
|
||||||
; 2 - Club (E)
|
|
||||||
; 3 - Sledgehammer (F)
|
|
||||||
; 4 - Spear (G)
|
|
||||||
; 5 - Pistol (H)
|
|
||||||
; 6 - SMG (I)
|
|
||||||
; 7 - Rifle (J)
|
|
||||||
; 8 - Big Gun (K)
|
|
||||||
; 9 - Minigun (L)
|
|
||||||
; 10 - Rocket Launcher (M)
|
|
||||||
; 11-15 - sfall additional weapon animation codes
|
|
||||||
|
|
||||||
; This section maps 7 armor types to corresponding armor item PIDs
|
|
||||||
[ArmorTypes]
|
|
||||||
Jacket = 74,265
|
|
||||||
Leather = 1,379
|
|
||||||
Metal = 2,240,380
|
|
||||||
Power = 3,232
|
|
||||||
AdvPower = 348,349
|
|
||||||
Combat = 17,239,381
|
|
||||||
Robe = 113,524
|
|
||||||
|
|
||||||
; Default armor FIDs (the same for all NPCs)
|
|
||||||
[Default]
|
|
||||||
Power=16777217
|
|
||||||
AdvPower=16777287
|
|
||||||
Robe=16777218
|
|
||||||
|
|
||||||
|
|
||||||
; Sulik
|
|
||||||
[1]
|
|
||||||
PID=16777313
|
|
||||||
WeaponAnims=1,3,4,6
|
|
||||||
Default=16777280
|
|
||||||
Leather=16777325
|
|
||||||
Power=16777324
|
|
||||||
Metal=16777323
|
|
||||||
Jacket=16777321
|
|
||||||
Combat=16777322
|
|
||||||
|
|
||||||
; Vic
|
|
||||||
[2]
|
|
||||||
PID=16777278
|
|
||||||
WeaponAnims=1,5,7
|
|
||||||
Default=16777307
|
|
||||||
Jacket=16777329
|
|
||||||
Combat=16777330
|
|
||||||
Metal=16777331
|
|
||||||
Power=16777332
|
|
||||||
Leather=16777333
|
|
||||||
|
|
||||||
; Cassidy
|
|
||||||
[3]
|
|
||||||
PID=16777305
|
|
||||||
WeaponAnims=4,5,7
|
|
||||||
Default=16777354
|
|
||||||
Leather=16777260
|
|
||||||
Power=16777328
|
|
||||||
Metal=16777327
|
|
||||||
Jacket=16777351
|
|
||||||
Combat=16777326
|
|
||||||
|
|
||||||
; Myron
|
|
||||||
[4]
|
|
||||||
PID=16777376
|
|
||||||
WeaponAnims=1,5
|
|
||||||
Default=16777304
|
|
||||||
Leather=
|
|
||||||
Power=16777349
|
|
||||||
Combat=16777350
|
|
||||||
|
|
||||||
; Cat Jules
|
|
||||||
[5]
|
|
||||||
PID=16777734
|
|
||||||
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
|
||||||
Default=16777353
|
|
||||||
Leather=16777347
|
|
||||||
Metal=16777348
|
|
||||||
Jacket=16777346
|
|
||||||
Combat=16777226
|
|
||||||
|
|
||||||
; Kitsune
|
|
||||||
[6]
|
|
||||||
PID=16777724
|
|
||||||
WeaponAnims=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
|
|
||||||
Default=16777222
|
|
||||||
Leather=16777221
|
|
||||||
Metal=16777223
|
|
||||||
Jacket=16777222
|
|
||||||
Combat=16777219
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
[Highlighting]
|
|
||||||
|
|
||||||
; DX scancode of a key to press to highlight items on the ground
|
|
||||||
; 42 - SHIFT key
|
|
||||||
Key=42
|
|
||||||
|
|
||||||
; Set to 1 to also highlight containers
|
|
||||||
Containers=1
|
|
||||||
|
|
||||||
; Set to 1 to also highlight lootable corpses
|
|
||||||
Corpses=1
|
|
||||||
|
|
||||||
; Set to 1 to only highlight objects in the player's line-of-sight
|
|
||||||
CheckLOS=0
|
|
||||||
|
|
||||||
; Set the color of outlines, available colors:
|
|
||||||
; 1 - glowing red
|
|
||||||
; 2 - red
|
|
||||||
; 4 - grey
|
|
||||||
; 8 - glowing green
|
|
||||||
; 16 - bright yellow
|
|
||||||
; 32 - dark yellow
|
|
||||||
; 64 - purple
|
|
||||||
OutlineColor=16
|
|
||||||
|
|
||||||
; Motion Scanner mode:
|
|
||||||
; 0 - ignored
|
|
||||||
; 1 - requires Motion Scanner present in player inventory to activate highlighting
|
|
||||||
; 2 - requires Motion Scanner and also requires 1 charge on every use (depleted scanner will not work anymore)
|
|
||||||
MotionScanner=0
|
|
||||||
|
|
||||||
|
|
||||||
[CombatControl]
|
|
||||||
;Allows you to directly control other critters in combat
|
|
||||||
;Set to 0 to disable
|
|
||||||
;Set to 1 to control all critters in combat
|
|
||||||
;Set to 2 to control all party members
|
|
||||||
;If you want to control only specific critters, uncomment the PIDList line and set a comma delimited list of PIDs
|
|
||||||
Mode=0
|
|
||||||
;PIDList=62,89,97,107,160,161
|
|
||||||
|
|
||||||
;Choose a notification box to display the name of the controlled critter above the interface bar
|
|
||||||
;Must be between 5 and (4 + the value of BoxBarCount in ddraw.ini)
|
|
||||||
;Set to 0 to disable
|
|
||||||
DisplayName=0
|
|
||||||
|
|
||||||
;Set the color of display name, available colors:
|
|
||||||
;0 - green
|
|
||||||
;1 - red
|
|
||||||
;2 - white
|
|
||||||
;3 - yellow
|
|
||||||
;4 - dark yellow
|
|
||||||
;5 - blue
|
|
||||||
;6 - purple
|
|
||||||
DisplayNameColor=0
|
|
||||||
+31
-52
@@ -1,5 +1,5 @@
|
|||||||
;sfall configuration settings
|
;sfall configuration settings
|
||||||
;v4.1.4
|
;v3.8.13
|
||||||
|
|
||||||
[Main]
|
[Main]
|
||||||
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
||||||
@@ -136,6 +136,23 @@ SpeedKey9=0x00
|
|||||||
;Set to -1 for either ctrl key, -2 for either alt key or -3 for either shift key
|
;Set to -1 for either ctrl key, -2 for either alt key or -3 for either shift key
|
||||||
WindowScrollKey=0
|
WindowScrollKey=0
|
||||||
|
|
||||||
|
;A key to press to toggle the highlighting of all items on the ground on the current map
|
||||||
|
;Set to 0 if you don't want a toggle key, or a DX scancode otherwise
|
||||||
|
ToggleItemHighlightsKey=42
|
||||||
|
|
||||||
|
;Set to 1 to also highlight containers
|
||||||
|
HighlightContainers=1
|
||||||
|
|
||||||
|
;Set the color of outlines, available colors:
|
||||||
|
;0x01 - glowing red
|
||||||
|
;0x02 - red
|
||||||
|
;0x04 - grey
|
||||||
|
;0x08 - glowing green
|
||||||
|
;0x10 - bright yellow
|
||||||
|
;0x20 - dark yellow
|
||||||
|
;0x40 - purple
|
||||||
|
OutlineColor=0x10
|
||||||
|
|
||||||
;A key to press to reload your currently equipped weapon
|
;A key to press to reload your currently equipped weapon
|
||||||
;Set to 0 if you don't want a reload key, or a DX scancode otherwise
|
;Set to 0 if you don't want a reload key, or a DX scancode otherwise
|
||||||
ReloadWeaponKey=0
|
ReloadWeaponKey=0
|
||||||
@@ -209,10 +226,6 @@ WorldMapSlots=0
|
|||||||
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat
|
||||||
DataLoadOrderPatch=0
|
DataLoadOrderPatch=0
|
||||||
|
|
||||||
;Set to 1 to enable loading alternative dialog msg files from text/language/dialog_female/ for female PC
|
|
||||||
;Set to 2 to also load subtitle files from text/language/cuts_female/ for female PC
|
|
||||||
FemaleDialogMsgs=0
|
|
||||||
|
|
||||||
;To change the default and starting player models, uncomment the next four lines.
|
;To change the default and starting player models, uncomment the next four lines.
|
||||||
;The default models can also be changed ingame via script
|
;The default models can also be changed ingame via script
|
||||||
;MaleStartModel=hmwarr
|
;MaleStartModel=hmwarr
|
||||||
@@ -409,6 +422,7 @@ UseScrollingQuestsList=1
|
|||||||
|
|
||||||
;Use this line to modify the list of cities and their associated global variables used for city reputations
|
;Use this line to modify the list of cities and their associated global variables used for city reputations
|
||||||
;Syntax is 'city id:global id', with each city/global pair separated by a comma.
|
;Syntax is 'city id:global id', with each city/global pair separated by a comma.
|
||||||
|
;CityRepsCount=19
|
||||||
;CityRepsList=0:47,2:48,1:49,4:50,5:51,3:52,8:53,6:54,7:55,13:56,10:57,11:59,14:61,17:63,19:64,18:65,25:66,9:294,20:308
|
;CityRepsList=0:47,2:48,1:49,4:50,5:51,3:52,8:53,6:54,7:55,13:56,10:57,11:59,14:61,17:63,19:64,18:65,25:66,9:294,20:308
|
||||||
|
|
||||||
;Set this to a valid path to save a copy of the console contents
|
;Set this to a valid path to save a copy of the console contents
|
||||||
@@ -417,14 +431,6 @@ UseScrollingQuestsList=1
|
|||||||
;Set to 1 to add additional pages of save slots
|
;Set to 1 to add additional pages of save slots
|
||||||
ExtraSaveSlots=0
|
ExtraSaveSlots=0
|
||||||
|
|
||||||
;To use more than one save slot for quick saving (F6 key) without picking a slot beforehand, set the next two lines
|
|
||||||
;AutoQuickSave sets how many save slots on a page you want to use for quick saving (valid range: 1..10)
|
|
||||||
;AutoQuickSavePage is the page number to use (valid range: 1..1000) if ExtraSaveSlots is enabled
|
|
||||||
;The quick saves will be rotated from the first slot on the page to the n-th slot
|
|
||||||
;Set to 0 to disable. AutoQuickSave will use the current selected page if AutoQuickSavePage is disabled
|
|
||||||
AutoQuickSave=0
|
|
||||||
AutoQuickSavePage=0
|
|
||||||
|
|
||||||
;Set to 1 to speed up the HP/AC counter animations
|
;Set to 1 to speed up the HP/AC counter animations
|
||||||
;Set to 2 to update the HP/AC counters instantly
|
;Set to 2 to update the HP/AC counters instantly
|
||||||
;Set to 3 to update the AC counter instantly when switching to other controlled critters in combat
|
;Set to 3 to update the AC counter instantly when switching to other controlled critters in combat
|
||||||
@@ -432,6 +438,7 @@ SpeedInterfaceCounterAnims=0
|
|||||||
|
|
||||||
;These lines allow you to control the karma FRMs displayed on the character screen
|
;These lines allow you to control the karma FRMs displayed on the character screen
|
||||||
;Number of KarmaPoints should be 1 less than number of KarmaFRMs
|
;Number of KarmaPoints should be 1 less than number of KarmaFRMs
|
||||||
|
;KarmaFRMsCount=3
|
||||||
;KarmaFRMs=47,48,49
|
;KarmaFRMs=47,48,49
|
||||||
;KarmaPoints=-100,100
|
;KarmaPoints=-100,100
|
||||||
|
|
||||||
@@ -442,11 +449,8 @@ ScienceOnCritters=0
|
|||||||
;Default is 166
|
;Default is 166
|
||||||
SpeedInventoryPCRotation=166
|
SpeedInventoryPCRotation=166
|
||||||
|
|
||||||
;Modify the number of the extra interface boxes available to modders. (Default is 5, and the maximum is 95)
|
;Uncomment to set the text colour of the extra 5 interface boxes
|
||||||
BoxBarCount=5
|
;The line must contain a 5 digits, each either a 0 for green or 1 for red
|
||||||
|
|
||||||
;Uncomment to set the text colour of the extra interface boxes
|
|
||||||
;The line must contain the same number of digits as the value of BoxBarCount, each either a 0 for green or 1 for red
|
|
||||||
;BoxBarColours=00000
|
;BoxBarColours=00000
|
||||||
|
|
||||||
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
|
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
|
||||||
@@ -499,6 +503,7 @@ CritterInvSizeLimit=100
|
|||||||
;Some bit flags to alter behaviour of the motion sensor
|
;Some bit flags to alter behaviour of the motion sensor
|
||||||
;1 - Allow sensor use on automap when motion sensor is in pack rather than hands
|
;1 - Allow sensor use on automap when motion sensor is in pack rather than hands
|
||||||
;2 - Motion sensor doesn't require charges
|
;2 - Motion sensor doesn't require charges
|
||||||
|
;4 - Motion sensor is required to use the item highlight feature
|
||||||
MotionScannerFlags=1
|
MotionScannerFlags=1
|
||||||
|
|
||||||
;Set to non-0 to adjust the maximum encounter table size
|
;Set to non-0 to adjust the maximum encounter table size
|
||||||
@@ -579,6 +584,14 @@ DialogPanelAnimDelay=33
|
|||||||
;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127)
|
;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127)
|
||||||
PipboyTimeAnimDelay=50
|
PipboyTimeAnimDelay=50
|
||||||
|
|
||||||
|
;Allows you to directly control other critters in combat
|
||||||
|
;Set to 0 to disable
|
||||||
|
;Set to 1 to control all critters in combat
|
||||||
|
;Set to 2 to control all party members
|
||||||
|
;If you want to control only specific critters, uncomment the ControlCombatPIDList line and set a comma delimited list of PIDs
|
||||||
|
ControlCombat=0
|
||||||
|
;ControlCombatPIDList=62,89,97,107,160,161
|
||||||
|
|
||||||
;Set to 1 to stack empty identical weapons, no matter what type of ammo was loaded before
|
;Set to 1 to stack empty identical weapons, no matter what type of ammo was loaded before
|
||||||
StackEmptyWeapons=0
|
StackEmptyWeapons=0
|
||||||
|
|
||||||
@@ -601,10 +614,6 @@ EnableMusicInDialogue=0
|
|||||||
;Set to 1 to prevent the player from running while sneaking without Silent Running perk
|
;Set to 1 to prevent the player from running while sneaking without Silent Running perk
|
||||||
DontTurnOffSneakIfYouRun=0
|
DontTurnOffSneakIfYouRun=0
|
||||||
|
|
||||||
;Changes the distance at which the player will switch to walking when trying to use objects (valid range: 0..3)
|
|
||||||
;Set to 0 to disable switching. (Default is 3)
|
|
||||||
UseWalkDistance=3
|
|
||||||
|
|
||||||
;Set to 1 to fix the bug that unable to sell used geiger counters or stealth boys
|
;Set to 1 to fix the bug that unable to sell used geiger counters or stealth boys
|
||||||
CanSellUsedGeiger=1
|
CanSellUsedGeiger=1
|
||||||
|
|
||||||
@@ -616,9 +625,6 @@ CarChargingFix=1
|
|||||||
InstantWeaponEquip=0
|
InstantWeaponEquip=0
|
||||||
|
|
||||||
;To add additional game msg files, uncomment the next line and set a comma delimited list of filenames without .msg extension
|
;To add additional game msg files, uncomment the next line and set a comma delimited list of filenames without .msg extension
|
||||||
;By default, the files will have consecutive numbers assigned beginning with 0
|
|
||||||
;You can use the syntax 'filename:number' to manually assign numbers to specific msg files, with each pair separated by a comma
|
|
||||||
;If a file after the specified pair does not have a number assigned, it will have the next consecutive number from the last pair
|
|
||||||
;You need to use the message_str_game script function to get messages from the files
|
;You need to use the message_str_game script function to get messages from the files
|
||||||
;ExtraGameMsgFileList=
|
;ExtraGameMsgFileList=
|
||||||
|
|
||||||
@@ -628,9 +634,6 @@ NumbersInDialogue=0
|
|||||||
;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map
|
;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map
|
||||||
WorldMapFontPatch=0
|
WorldMapFontPatch=0
|
||||||
|
|
||||||
;Set to 1 to keep the selected attack mode when moving the weapon between active item slots
|
|
||||||
KeepWeaponSelectMode=1
|
|
||||||
|
|
||||||
;Set to 1 to display full item description for weapon/ammo in barter screen
|
;Set to 1 to display full item description for weapon/ammo in barter screen
|
||||||
FullItemDescInBarter=0
|
FullItemDescInBarter=0
|
||||||
|
|
||||||
@@ -640,30 +643,12 @@ DisplaySwiftLearnerExp=1
|
|||||||
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
|
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
|
||||||
PartyMemberExtraInfo=0
|
PartyMemberExtraInfo=0
|
||||||
|
|
||||||
;Set to 1 to fix the bug of using First Aid/Doctor skills when using them on the player
|
|
||||||
;This will cause the party member to apply his/her skills when you use First Aid/Doctor skills on the player, but only if
|
|
||||||
;the player is standing next to the party member
|
|
||||||
;Note that because the related engine function is not fully implemented, enabling this option without a global script
|
|
||||||
;that overrides First Aid/Doctor functions has very limited usefulness
|
|
||||||
PartyMemberSkillFix=0
|
|
||||||
|
|
||||||
;Set to 1 to skip loading game settings from a saved game, except for the game/combat difficulty settings
|
|
||||||
;Set to 2 to also skip loading the game/combat difficulty settings
|
|
||||||
SkipLoadingGameSettings=0
|
|
||||||
|
|
||||||
;Set to 1 to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows
|
;Set to 1 to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows
|
||||||
InterfaceDontMoveOnTop=0
|
InterfaceDontMoveOnTop=0
|
||||||
|
|
||||||
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
|
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
|
||||||
CreditsAtBottom=0
|
CreditsAtBottom=0
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
||||||
[Scripts]
|
|
||||||
;Comma-separated list of masked paths to load global scripts from
|
|
||||||
;Only use single slash \ as directory separator
|
|
||||||
;Paths outside of scripts folder are supported
|
|
||||||
GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int
|
|
||||||
|
|
||||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
[Debugging]
|
[Debugging]
|
||||||
;Extra sfall configuration settings that can be used by modders
|
;Extra sfall configuration settings that can be used by modders
|
||||||
@@ -707,12 +692,6 @@ DontDeleteProtos=0
|
|||||||
;Set to 1 to give scripts direct access to Fallout's 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=0
|
AllowUnsafeScripting=0
|
||||||
|
|
||||||
;Set to 1 to force sfall to search for global scripts every time the game loads rather than only once on the first game start
|
|
||||||
AlwaysFindScripts=0
|
|
||||||
|
|
||||||
;Set to 1 to force sfall to inject all hooks code into the game, even if corresponding hook scripts don't exist
|
|
||||||
InjectAllGameHooks=0
|
|
||||||
|
|
||||||
;These options control what output is saved in the debug log (sfall-log.txt)
|
;These options control what output is saved in the debug log (sfall-log.txt)
|
||||||
|
|
||||||
;Prints messages duing sfall initialization
|
;Prints messages duing sfall initialization
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
Example implementation of the algorithm of how the game engine sets the explosive timer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "..\..\scripting_docs\headers\sfall.h"
|
|
||||||
#include "..\..\scripting_docs\headers\define_lite.h"
|
|
||||||
|
|
||||||
// from CONDTION.H
|
|
||||||
#define ROLL_CRITICAL_FAILURE (0)
|
|
||||||
#define ROLL_FAILURE (1)
|
|
||||||
#define ROLL_SUCCESS (2)
|
|
||||||
#define ROLL_CRITICAL_SUCCESS (3)
|
|
||||||
|
|
||||||
procedure start;
|
|
||||||
|
|
||||||
procedure start begin
|
|
||||||
if game_loaded then begin
|
|
||||||
register_hook(HOOK_EXPLOSIVETIMER);
|
|
||||||
end else begin
|
|
||||||
variable
|
|
||||||
time := get_sfall_arg,
|
|
||||||
result := ROLL_CRITICAL_FAILURE;
|
|
||||||
|
|
||||||
if has_trait(TRAIT_PERK, dude_obj, PERK_demolition_expert_perk) then
|
|
||||||
result := ROLL_SUCCESS;
|
|
||||||
else begin
|
|
||||||
result := roll_vs_skill(dude_obj, SKILL_TRAPS, 0);
|
|
||||||
end
|
|
||||||
|
|
||||||
if (result) then begin
|
|
||||||
if (result == ROLL_FAILURE) then
|
|
||||||
time /= 2;
|
|
||||||
else begin // success or critical success
|
|
||||||
result := ROLL_SUCCESS;
|
|
||||||
end
|
|
||||||
end else begin // critical failure
|
|
||||||
time := 0;
|
|
||||||
result := ROLL_FAILURE;
|
|
||||||
end
|
|
||||||
|
|
||||||
set_sfall_return(time);
|
|
||||||
set_sfall_return(result); // failure/success
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
Example implementation of the algorithm of how the game engine checks if one critter sees another critter.
|
|
||||||
|
|
||||||
NOTE: the AllowUnsafeScripting option must be enabled.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "..\headers\define.h"
|
|
||||||
#include "..\headers\command.h"
|
|
||||||
#include "..\headers\sfall\sfall.h"
|
|
||||||
#include "..\headers\sfall\define_extra.h"
|
|
||||||
|
|
||||||
#define can_see_(source, target) call_offset_r2(0x412BEC, source, target)
|
|
||||||
#define obj_dist_(target, source) call_offset_r2(0x48BBD4, target, source)
|
|
||||||
|
|
||||||
procedure start;
|
|
||||||
|
|
||||||
procedure start begin
|
|
||||||
if game_loaded then begin
|
|
||||||
register_hook(HOOK_WITHINPERCEPTION);
|
|
||||||
end else begin
|
|
||||||
variable
|
|
||||||
source := get_sfall_arg,
|
|
||||||
target := get_sfall_arg,
|
|
||||||
original := get_sfall_arg,
|
|
||||||
hookType := get_sfall_arg, /* new arg */
|
|
||||||
result := 0,
|
|
||||||
distance;
|
|
||||||
|
|
||||||
if target then begin
|
|
||||||
distance := get_critter_stat(source, STAT_pe);
|
|
||||||
|
|
||||||
if can_see_(source, target) then begin
|
|
||||||
distance *= 5;
|
|
||||||
if (get_flags(target) bwand FLAG_TRANSGLASS) then distance /= 2;
|
|
||||||
end else if combat_is_initialized then begin
|
|
||||||
distance *= 2;
|
|
||||||
end
|
|
||||||
|
|
||||||
if (target == dude_obj) then begin
|
|
||||||
if sneak_success then begin
|
|
||||||
distance /= 4;
|
|
||||||
if has_skill(target, SKILL_SNEAK) > 120 then distance -= 1;
|
|
||||||
end else if dude_is_sneaking then begin
|
|
||||||
distance := distance * 2 / 3;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if obj_dist_(target, source) <= distance then result := 1;
|
|
||||||
|
|
||||||
// example
|
|
||||||
if (result) then begin
|
|
||||||
display_msg("hs_withinperception: " + obj_name(source) + " sees " + obj_name(target) + " [original: " + original + " script: " + result + "]");
|
|
||||||
end else begin
|
|
||||||
display_msg("hs_withinperception: " + obj_name(source) + " does not see " + obj_name(target) + " [original: " + original + " script: " + result + "]");
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
//set_sfall_return(result);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
Binary file not shown.
@@ -1,134 +0,0 @@
|
|||||||
/**
|
|
||||||
|
|
||||||
Item Highlight mod.
|
|
||||||
|
|
||||||
Previously was part of sfall itself, now a separate mod.
|
|
||||||
Features:
|
|
||||||
- highlighting items, containers (optional) and lootable corpses (optional) on the ground
|
|
||||||
- configurable hotkey is used to trigger highlight
|
|
||||||
- only objects in direct line-of-sight of player are highlighted (optional)
|
|
||||||
- motion scanner is required to enable highlight (optional)
|
|
||||||
- motion scanner charges are decreased on each use (optional)
|
|
||||||
|
|
||||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
|
||||||
(short circuit evaluation)
|
|
||||||
|
|
||||||
version 1.0
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
//#include "..\..\..\!SRC\headers\define.h"
|
|
||||||
|
|
||||||
#define CRITTER_IS_DEAD (1)
|
|
||||||
#define PID_MOTION_SENSOR (59)
|
|
||||||
#define NO_HIGHLIGHT(obj) (get_flags(obj) bwand FLAG_NOHIGHLIGHT)
|
|
||||||
#define NO_STEAL(obj) (get_proto_data(obj_pid(obj), PROTO_CR_FLAGS) bwand CFLG_NOSTEAL)
|
|
||||||
|
|
||||||
variable configSection := "Highlighting";
|
|
||||||
variable highlightKey;
|
|
||||||
variable isHighlight;
|
|
||||||
variable alsoContainer;
|
|
||||||
variable alsoCorpse;
|
|
||||||
variable checkLOS;
|
|
||||||
variable outlineColor;
|
|
||||||
variable motionScanner;
|
|
||||||
variable highlightFailMsg1;
|
|
||||||
variable highlightFailMsg2;
|
|
||||||
|
|
||||||
procedure ToggleHighlightObject(variable obj, variable enable) begin
|
|
||||||
if obj and (not enable or not checkLOS or not obj_blocking_line(dude_obj, tile_num(obj), BLOCKING_TYPE_SHOOT)) then begin
|
|
||||||
if (alsoContainer and obj_item_subtype(obj) == item_type_container) or (not NO_HIGHLIGHT(obj)) then begin
|
|
||||||
if (enable) then set_outline(obj, outlineColor);
|
|
||||||
else set_outline(obj, 0);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure ToggleHighlight(variable enable) begin
|
|
||||||
variable obj;
|
|
||||||
foreach obj in list_as_array(LIST_GROUNDITEMS) begin
|
|
||||||
if obj != outlined_object then begin
|
|
||||||
call ToggleHighlightObject(obj, enable);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if (alsoCorpse) then begin
|
|
||||||
foreach obj in list_as_array(LIST_CRITTERS) begin
|
|
||||||
if critter_state(obj) == CRITTER_IS_DEAD and not NO_STEAL(obj) then begin
|
|
||||||
call ToggleHighlightObject(obj, enable);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
tile_refresh_display;
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure KeyPressHandler begin
|
|
||||||
variable pressed := get_sfall_arg,
|
|
||||||
scanCode := get_sfall_arg,
|
|
||||||
scanner, charges;
|
|
||||||
|
|
||||||
if scanCode == highlightKey and not(get_game_mode bwand INTFACELOOT) then begin
|
|
||||||
if pressed then begin
|
|
||||||
isHighlight := true;
|
|
||||||
if motionScanner then begin
|
|
||||||
scanner := obj_carrying_pid_obj(dude_obj, PID_MOTION_SENSOR);
|
|
||||||
if scanner then begin
|
|
||||||
if motionScanner >= 2 then begin
|
|
||||||
charges := get_weapon_ammo_count(scanner);
|
|
||||||
if charges > 0 then begin
|
|
||||||
set_weapon_ammo_count(scanner, charges - 1);
|
|
||||||
intface_redraw;
|
|
||||||
call ToggleHighlight(true);
|
|
||||||
end else begin
|
|
||||||
display_msg(highlightFailMsg2);
|
|
||||||
end
|
|
||||||
end else begin
|
|
||||||
call ToggleHighlight(true);
|
|
||||||
end
|
|
||||||
end else begin
|
|
||||||
display_msg(highlightFailMsg1);
|
|
||||||
end
|
|
||||||
end else begin
|
|
||||||
call ToggleHighlight(true);
|
|
||||||
end
|
|
||||||
end else begin
|
|
||||||
isHighlight := false;
|
|
||||||
call ToggleHighlight(false);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure CombatTurnHandler begin
|
|
||||||
if isHighlight then begin
|
|
||||||
isHighlight := false;
|
|
||||||
call ToggleHighlight(false);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure GameModeChangeHandler begin
|
|
||||||
if isHighlight and (get_game_mode bwand INTFACELOOT) then begin
|
|
||||||
isHighlight := false;
|
|
||||||
call ToggleHighlight(false);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure start begin
|
|
||||||
if game_loaded and (sfall_ver_major >= 4) then begin
|
|
||||||
call InitConfigs;
|
|
||||||
|
|
||||||
highlightKey := GetConfig(configSection, "Key", 0);
|
|
||||||
alsoContainer := GetConfig(configSection, "Containers", 0);
|
|
||||||
alsoCorpse := GetConfig(configSection, "Corpses", 0);
|
|
||||||
checkLOS := GetConfig(configSection, "CheckLOS", 0);
|
|
||||||
outlineColor := GetConfig(configSection, "OutlineColor", 16);
|
|
||||||
if (outlineColor < 1) then outlineColor := 64;
|
|
||||||
motionScanner := GetConfig(configSection, "MotionScanner", 0);
|
|
||||||
|
|
||||||
highlightFailMsg1 := Translate("HighlightFail1", "You aren't carrying a motion sensor.");
|
|
||||||
highlightFailMsg2 := Translate("HighlightFail2", "Your motion sensor is out of charge.");
|
|
||||||
|
|
||||||
register_hook_proc(HOOK_KEYPRESS, KeyPressHandler);
|
|
||||||
register_hook_proc(HOOK_COMBATTURN, CombatTurnHandler);
|
|
||||||
register_hook_proc(HOOK_GAMEMODECHANGE, GameModeChangeHandler);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
Binary file not shown.
@@ -1,183 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
NPC Armor Appearance mod
|
|
||||||
|
|
||||||
Used to replace the scripted part of B-Team mod.
|
|
||||||
Appropriate graphics are required for this mod to work.
|
|
||||||
Can be adopted to any mod by adjusting armor PIDs, allowed weapon anim codes, NPC PIDs and NPC FIDs in INI file.
|
|
||||||
|
|
||||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
|
||||||
(short circuit evaluation)
|
|
||||||
|
|
||||||
version 1.1
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
#define IS_ARMOR(item) (obj_type(item) == OBJ_TYPE_ITEM and obj_item_subtype(item) == item_type_armor)
|
|
||||||
#define IS_WEAPON(item) (obj_type(item) == OBJ_TYPE_ITEM and obj_item_subtype(item) == item_type_weapon)
|
|
||||||
|
|
||||||
variable
|
|
||||||
modIni := "npcarmor.ini",
|
|
||||||
defaultFids,
|
|
||||||
armorPidMap, // maps armor PID to it's "type" - leather armor, metal, power armor, etc.
|
|
||||||
npcMap,
|
|
||||||
altWeapon,
|
|
||||||
unWieldWeapon;
|
|
||||||
|
|
||||||
procedure check_armor_change(variable critter, variable item, variable isWorn) begin
|
|
||||||
variable npc, armorType, fid;
|
|
||||||
if (npcMap[obj_pid(critter)]) then begin
|
|
||||||
npc := npcMap[obj_pid(critter)];
|
|
||||||
if (not isWorn) then begin
|
|
||||||
// display_msg("No armor fid: " + npc["Default"]);
|
|
||||||
return npc["Default"];
|
|
||||||
end else if (item) then begin
|
|
||||||
armorType := armorPidMap[obj_pid(item)];
|
|
||||||
fid := npc[armorType] or defaultFids[armorType];
|
|
||||||
if (fid == 0 or fid == -1) then fid := npc["Default"];
|
|
||||||
// display_msg("Change fid: " + fid + ", npc: " + npc[armorType] + ", default:" + defaultFids[armorType]);
|
|
||||||
return fid;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return -1;
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure check_weapon_change(variable critter, variable item, variable isWield) begin
|
|
||||||
variable npc, newWeaponAnim, weaponAnimList, i;
|
|
||||||
if (npcMap[obj_pid(critter)]) then begin
|
|
||||||
npc := npcMap[obj_pid(critter)];
|
|
||||||
if isWield then begin
|
|
||||||
newWeaponAnim := get_proto_data(obj_pid(item), PROTO_WP_ANIM);
|
|
||||||
weaponAnimList := string_split(npc["WeaponAnims"], ",");
|
|
||||||
if newWeaponAnim then begin // anim code 0 - none/unarmed
|
|
||||||
foreach (i in weaponAnimList) begin
|
|
||||||
if (newWeaponAnim == atoi(i)) then return -1;
|
|
||||||
end
|
|
||||||
return 0;
|
|
||||||
end
|
|
||||||
end else begin
|
|
||||||
unWieldWeapon := obj_pid(item);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return -1;
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure search_alt_weapon(variable critter) begin
|
|
||||||
variable obj, res, i := 0;
|
|
||||||
obj := inven_ptr(critter, 0);
|
|
||||||
while (obj) do begin
|
|
||||||
if (obj_item_subtype(obj) == item_type_weapon) then begin
|
|
||||||
if (unWieldWeapon == 0 or unWieldWeapon != obj_pid(obj)) then begin
|
|
||||||
res := check_weapon_change(critter, obj, 1);
|
|
||||||
if (res == -1) then begin
|
|
||||||
altWeapon := obj;
|
|
||||||
wield_obj_critter(critter, obj);
|
|
||||||
altWeapon := 0;
|
|
||||||
break;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
i++;
|
|
||||||
obj := inven_ptr(critter, i);
|
|
||||||
end
|
|
||||||
unWieldWeapon := 0;
|
|
||||||
end
|
|
||||||
|
|
||||||
// for NPCs when they change armor/weapon themselves
|
|
||||||
procedure invenwield_handler begin
|
|
||||||
variable critter, item, fid, slot, isWorn, canWield;
|
|
||||||
critter := get_sfall_arg;
|
|
||||||
item := get_sfall_arg;
|
|
||||||
slot := get_sfall_arg;
|
|
||||||
isWorn := get_sfall_arg;
|
|
||||||
|
|
||||||
if (critter and item and slot == INVEN_TYPE_WORN) then begin
|
|
||||||
fid := check_armor_change(critter, item, isWorn);
|
|
||||||
if (fid != -1) then begin
|
|
||||||
art_change_fid_num(critter, fid);
|
|
||||||
end
|
|
||||||
return;
|
|
||||||
end
|
|
||||||
|
|
||||||
if (critter and item and slot == INVEN_TYPE_RIGHT_HAND) then begin
|
|
||||||
if (altWeapon == item) then return;
|
|
||||||
canWield := check_weapon_change(critter, item, isWorn);
|
|
||||||
set_sfall_return(canWield);
|
|
||||||
if (canWield != -1) then begin
|
|
||||||
call search_alt_weapon(critter);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
// when changing armor from inventory while controlling other NPCs
|
|
||||||
procedure adjustfid_handler begin
|
|
||||||
variable fid, armor;
|
|
||||||
if (dude_obj != real_dude_obj) then begin
|
|
||||||
armor := critter_inven_obj(dude_obj, INVEN_TYPE_WORN);
|
|
||||||
fid := check_armor_change(dude_obj, armor, armor != 0);
|
|
||||||
if (fid != -1) then begin
|
|
||||||
set_sfall_return(fid);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
// when changing weapon from inventory while controlling other NPCs
|
|
||||||
procedure inventorymove_handler begin
|
|
||||||
variable slot, item, canWield;
|
|
||||||
slot := get_sfall_arg;
|
|
||||||
item := get_sfall_arg;
|
|
||||||
if (dude_obj != real_dude_obj) then begin
|
|
||||||
if (IS_WEAPON(item) and (slot == INVEN_TYPE_RIGHT_HAND or slot == INVEN_TYPE_LEFT_HAND)) then begin
|
|
||||||
canWield := check_weapon_change(dude_obj, item, item != 0);
|
|
||||||
set_sfall_return(canWield);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
procedure start begin
|
|
||||||
variable sect, sects, armorTypes, armorType, npc, pid, pids, i;
|
|
||||||
if game_loaded and (sfall_ver_major >= 4) then begin
|
|
||||||
register_hook_proc(HOOK_INVENWIELD, invenwield_handler);
|
|
||||||
register_hook_proc(HOOK_ADJUSTFID, adjustfid_handler);
|
|
||||||
register_hook_proc(HOOK_INVENTORYMOVE, inventorymove_handler);
|
|
||||||
|
|
||||||
defaultFids := get_ini_section(modIni, "Default");
|
|
||||||
fix_array(defaultFids);
|
|
||||||
foreach (armorType: i in defaultFids) begin
|
|
||||||
defaultFids[armorType] := atoi(i);
|
|
||||||
end
|
|
||||||
|
|
||||||
armorPidMap := create_array_map;
|
|
||||||
armorTypes := get_ini_section(modIni, "ArmorTypes");
|
|
||||||
foreach (armorType: pids in armorTypes) begin
|
|
||||||
pids := string_split(pids, ",");
|
|
||||||
foreach (pid in pids) begin
|
|
||||||
armorPidMap[atoi(pid)] := armorType;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
npcMap := create_array_map;
|
|
||||||
|
|
||||||
i := 1;
|
|
||||||
sect := get_ini_section(modIni, ""+i);
|
|
||||||
while (sect.PID) do begin
|
|
||||||
npc := create_array_map;
|
|
||||||
npc["WeaponAnims"] := sect["WeaponAnims"];
|
|
||||||
npc["Default"] := atoi(sect["Default"]);
|
|
||||||
foreach (armorType: pids in armorTypes) begin
|
|
||||||
if (sect[armorType]) then begin
|
|
||||||
npc[armorType] := atoi(sect[armorType]);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
npcMap[atoi(sect.PID)] := npc;
|
|
||||||
|
|
||||||
i += 1;
|
|
||||||
sect := get_ini_section(modIni, ""+i);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
Binary file not shown.
@@ -1,94 +0,0 @@
|
|||||||
/*
|
|
||||||
|
|
||||||
NPC Combat Control
|
|
||||||
|
|
||||||
Allows to take control of your party member or other NPCs during combat
|
|
||||||
|
|
||||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
|
||||||
(short circuit evaluation)
|
|
||||||
|
|
||||||
version 1.0
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "..\headers\define.h"
|
|
||||||
#include "..\headers\command.h"
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
variable
|
|
||||||
configSection := "CombatControl",
|
|
||||||
controlMode,
|
|
||||||
pidList,
|
|
||||||
displayName,
|
|
||||||
displayNameColor,
|
|
||||||
maxBoxCount,
|
|
||||||
inControl := false,
|
|
||||||
hasGeckoSkinning := false;
|
|
||||||
|
|
||||||
|
|
||||||
procedure combatturn_handler begin
|
|
||||||
variable
|
|
||||||
status := get_sfall_arg,
|
|
||||||
critter := get_sfall_arg,
|
|
||||||
arg3 := get_sfall_arg,
|
|
||||||
pid;
|
|
||||||
|
|
||||||
// display_msg("Combat Turn: " + status + ", by " + obj_name(critter) + ", arg3: " + arg3);
|
|
||||||
pid := obj_pid(critter);
|
|
||||||
if (status == 1
|
|
||||||
and (len_array(pidList) == 0 or scan_array(pidList, pid bwand 0xFFFFFF) != -1)
|
|
||||||
and (controlMode == 1 or party_member_obj(pid))) then begin
|
|
||||||
if not(critter == real_dude_obj) then begin
|
|
||||||
set_dude_obj(critter);
|
|
||||||
if hasGeckoSkinning then critter_add_trait(critter, TRAIT_PERK, PERK_gecko_skinning_perk, 1);
|
|
||||||
inControl := true;
|
|
||||||
end
|
|
||||||
if inControl then begin
|
|
||||||
// center the screen on the controlled critter and remove roof tiles
|
|
||||||
move_to(dude_obj, dude_tile, dude_elevation);
|
|
||||||
if (displayName and critter != real_dude_obj) then begin
|
|
||||||
set_iface_tag_text(displayName, obj_name(critter), displayNameColor);
|
|
||||||
show_iface_tag(displayName);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end else if inControl then begin
|
|
||||||
set_dude_obj(real_dude_obj);
|
|
||||||
if displayName then hide_iface_tag(displayName);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure gamemodechange_handler begin
|
|
||||||
if has_trait(TRAIT_PERK, real_dude_obj, PERK_gecko_skinning_perk) then hasGeckoSkinning := true;
|
|
||||||
if not(get_game_mode BWAND COMBAT) then inControl := false;
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure inventorymove_handler begin
|
|
||||||
if (inControl and get_sfall_arg == 3) then begin // armor slot
|
|
||||||
if (obj_pid(dude_obj) == PID_MARCUS or proto_data(obj_pid(dude_obj), cr_body_type) != CR_BODY_BIPED) then begin
|
|
||||||
display_msg(message_str_game(GAME_MSG_PROTO, 675));
|
|
||||||
set_sfall_return(true);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure start begin
|
|
||||||
if (game_loaded and sfall_ver_major >= 4) then begin
|
|
||||||
set_perk_ranks(PERK_gecko_skinning_perk, 1);
|
|
||||||
set_perk_level(PERK_gecko_skinning_perk, 999); // prevent it from appearing in the perk selection window
|
|
||||||
controlMode := GetConfig("CombatControl", "Mode", 0);
|
|
||||||
if (controlMode > 2) then controlMode := 0;
|
|
||||||
if (controlMode > 0) then begin
|
|
||||||
pidList := GetConfigListInt("CombatControl", "PIDList");
|
|
||||||
fix_array(pidList);
|
|
||||||
maxBoxCount := get_ini_setting("ddraw.ini|Misc|BoxBarCount") + 4;
|
|
||||||
displayName := GetConfig("CombatControl", "DisplayName", 0);
|
|
||||||
displayNameColor := GetConfig("CombatControl", "DisplayNameColor", 0);
|
|
||||||
if (maxBoxCount < 9) then maxBoxCount := 9;
|
|
||||||
if (displayName < 5 or displayName > maxBoxCount) then displayName := 0;
|
|
||||||
|
|
||||||
register_hook_proc(HOOK_COMBATTURN, combatturn_handler);
|
|
||||||
register_hook_proc(HOOK_GAMEMODECHANGE, gamemodechange_handler);
|
|
||||||
register_hook_proc(HOOK_INVENTORYMOVE, inventorymove_handler);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
|
|
||||||
#include "..\scripting\headers\sfall.h"
|
|
||||||
#include "..\scripting\headers\define_lite.h"
|
|
||||||
#include "..\scripting\headers\define_extra.h"
|
|
||||||
|
|
||||||
#include "..\scripting\headers\lib.arrays.h"
|
|
||||||
#include "..\scripting\headers\lib.strings.h"
|
|
||||||
// #include "..\scripting\headers\lib.inven.h"
|
|
||||||
|
|
||||||
variable ini := "sfall-mods.ini";
|
|
||||||
variable translationIni;
|
|
||||||
|
|
||||||
// Gets the integer value from ddraw.ini
|
|
||||||
procedure GetConfig(variable section, variable key, variable def) begin
|
|
||||||
variable val := get_ini_setting(ini + "|" + section + "|" + key);
|
|
||||||
if val == -1 then val := def;
|
|
||||||
return val;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Gets the string value from ddraw.ini
|
|
||||||
procedure GetConfigStr(variable section, variable key, variable def) begin
|
|
||||||
variable val := get_ini_string(ini + "|" + section + "|" + key);
|
|
||||||
if val == -1 or val == "" then val := def;
|
|
||||||
return val;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Gets the value from ddraw.ini as a temp array of strings
|
|
||||||
procedure GetConfigList(variable section, variable key) begin
|
|
||||||
variable val := get_ini_string(ini + "|" + section + "|" + key);
|
|
||||||
if val == -1 or val == "" then return [];
|
|
||||||
|
|
||||||
return string_split(val, ",");
|
|
||||||
end
|
|
||||||
|
|
||||||
// Gets the value from ddraw.ini as a temp array of ints
|
|
||||||
procedure GetConfigListInt(variable section, variable key) begin
|
|
||||||
variable arr, i, item;
|
|
||||||
|
|
||||||
arr := GetConfigList(section, key);
|
|
||||||
for (i := 0; i < len_array(arr); i++) begin
|
|
||||||
arr[i] := atoi(arr[i]);
|
|
||||||
end
|
|
||||||
return arr;
|
|
||||||
end
|
|
||||||
|
|
||||||
// Translates given string using Translations.ini
|
|
||||||
procedure Translate(variable id, variable def) begin
|
|
||||||
variable str := get_ini_string(translationIni + "|Sfall|" + id);
|
|
||||||
if not str or (strlen(str) == 0) then begin
|
|
||||||
str := def;
|
|
||||||
end
|
|
||||||
return str;
|
|
||||||
end
|
|
||||||
|
|
||||||
procedure InitConfigs begin
|
|
||||||
translationIni := GetConfigStr("Main", "TranslationsINI", "./Translations.ini");
|
|
||||||
end
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
To install each mod, copy *.int file into your <Fallout Dir>\data\scripts\ folder.
|
|
||||||
For gl_npcarmor.int, you also need to copy npcarmor.ini to your Fallout directory.
|
|
||||||
@@ -151,16 +151,14 @@ Example:
|
|||||||
|
|
||||||
*mixed means any type
|
*mixed means any type
|
||||||
|
|
||||||
> int create_array(int size, int flags):
|
> int create_array(int size, int nothing):
|
||||||
- creates permanent array (but not "saved")
|
- creates permanent array (but not "saved")
|
||||||
- if size is >= 0, creates list with given size
|
- if size is >= 0, creates list with given size
|
||||||
- if size == -1, creates map (associative array)
|
- if size == -1, creates map (associative array)
|
||||||
- if size == -1 and flags == 2, creates a "lookup" map in which the values of existing keys are read-only and can't be updated.
|
- second argument is not used yet, just use 0
|
||||||
This type of array allows you to store a zero (0) key value
|
|
||||||
- NOTE: in earlier versions (up to 4.1.3/3.8.13) the second argument is not used, just use 0
|
|
||||||
- returns arrayID (valid until array is deleted)
|
- returns arrayID (valid until array is deleted)
|
||||||
|
|
||||||
> int temp_array(int size, int flags):
|
> int temp_array(int size, int nothing):
|
||||||
- works exactly like "create_array", only created array becomes "temporary"
|
- works exactly like "create_array", only created array becomes "temporary"
|
||||||
|
|
||||||
> void fix_array(int arrayID):
|
> void fix_array(int arrayID):
|
||||||
@@ -171,7 +169,6 @@ This type of array allows you to store a zero (0) key value
|
|||||||
- if used on list, "key" must be numeric and within valid index range (0..size-1)
|
- if used on list, "key" must be numeric and within valid index range (0..size-1)
|
||||||
- if used on map, key can be of any type
|
- if used on map, key can be of any type
|
||||||
- to "unset" a value from map, just set it to zero (0)
|
- to "unset" a value from map, just set it to zero (0)
|
||||||
- NOTE: to add a value of 0 for the key, use the float value of 0.0
|
|
||||||
- this works exactly like statement:
|
- this works exactly like statement:
|
||||||
arrayID[key] := value;
|
arrayID[key] := value;
|
||||||
|
|
||||||
@@ -185,7 +182,7 @@ This type of array allows you to store a zero (0) key value
|
|||||||
- changes array size
|
- changes array size
|
||||||
- applicable to maps too, but only to reduce elements
|
- applicable to maps too, but only to reduce elements
|
||||||
- there are number of special negative values of "size" which perform various operations on the array,
|
- there are number of special negative values of "size" which perform various operations on the array,
|
||||||
use macros sort_array, sort_array_reverse, reverse_array, shuffle_array from sfall.h header
|
use macros sort_array, sort_array_reverse, reverse_array, shuffle_array from sfall.h header
|
||||||
|
|
||||||
> void free_array(int arrayID):
|
> void free_array(int arrayID):
|
||||||
- deletes any array
|
- deletes any array
|
||||||
|
|||||||
@@ -267,80 +267,6 @@
|
|||||||
#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)
|
||||||
|
|
||||||
// AI data parameters
|
|
||||||
#define AI_CAP_AGGRESSION (0)
|
|
||||||
#define AI_CAP_AREA_ATTACK_MODE (1)
|
|
||||||
#define AI_CAP_ATTACK_WHO (2)
|
|
||||||
#define AI_CAP_BEST_WEAPON (3)
|
|
||||||
#define AI_CAP_CHEM_USE (4)
|
|
||||||
#define AI_CAP_DISPOSITION (5)
|
|
||||||
#define AI_CAP_DISTANCE (6)
|
|
||||||
#define AI_CAP_MAX_DISTANCE (7)
|
|
||||||
#define AI_CAP_MIN_HP (8)
|
|
||||||
#define AI_CAP_MIN_TO_HIT (9)
|
|
||||||
#define AI_CAP_HURT_TOO_MUCH (10) // DAM_BLIND/DAM_CRIP_* flags
|
|
||||||
#define AI_CAP_RUN_AWAY_MODE (11)
|
|
||||||
#define AI_CAP_SECONDARY_FREQ (12)
|
|
||||||
#define AI_CAP_CALLED_FREQ (13)
|
|
||||||
#define AI_CAP_CHEM_PRIMARY_DESIRE (14) // array pid list
|
|
||||||
|
|
||||||
// AI attack area mode values
|
|
||||||
#define ai_area_always (0)
|
|
||||||
#define ai_area_sometimes (1)
|
|
||||||
#define ai_area_be_sure (2)
|
|
||||||
#define ai_area_be_careful (3)
|
|
||||||
#define ai_area_be_absolutely_sure (4)
|
|
||||||
|
|
||||||
// AI attack who mode values
|
|
||||||
#define ai_attack_no_pref (-1)
|
|
||||||
#define ai_attack_whomever_attacking_me (0)
|
|
||||||
#define ai_attack_strongest (1)
|
|
||||||
#define ai_attack_weakest (2)
|
|
||||||
#define ai_attack_whomever (3)
|
|
||||||
#define ai_attack_closest (4)
|
|
||||||
|
|
||||||
// AI run away mode values
|
|
||||||
#define ai_run_away_none (0)
|
|
||||||
#define ai_run_away_coward (1)
|
|
||||||
#define ai_run_away_finger_hurts (3)
|
|
||||||
#define ai_run_away_bleeding (4)
|
|
||||||
#define ai_run_away_not_feeling_good (5)
|
|
||||||
#define ai_run_away_tourniquet (6)
|
|
||||||
#define ai_run_away_never (7)
|
|
||||||
|
|
||||||
// AI disposition values
|
|
||||||
#define ai_disposition_none (0)
|
|
||||||
#define ai_disposition_custom (1)
|
|
||||||
#define ai_disposition_coward (2)
|
|
||||||
#define ai_disposition_defensive (3)
|
|
||||||
#define ai_disposition_aggressive (4)
|
|
||||||
#define ai_disposition_berserk (5)
|
|
||||||
|
|
||||||
// AI distance values
|
|
||||||
#define ai_distance_stay_close (0)
|
|
||||||
#define ai_distance_charge (1)
|
|
||||||
#define ai_distance_snipe (2)
|
|
||||||
#define ai_distance_on_your_own (3)
|
|
||||||
#define ai_distance_stay (4)
|
|
||||||
|
|
||||||
// AI best weapon pref values
|
|
||||||
#define ai_weapon_no_pref (0)
|
|
||||||
#define ai_weapon_melee (1)
|
|
||||||
#define ai_weapon_melee_over_ranged (2)
|
|
||||||
#define ai_weapon_ranged_over_melee (3)
|
|
||||||
#define ai_weapon_ranged (4)
|
|
||||||
#define ai_weapon_unarmed (5)
|
|
||||||
#define ai_weapon_unarmed_over_thrown (6)
|
|
||||||
#define ai_weapon_random (7)
|
|
||||||
|
|
||||||
// AI chem use mode values
|
|
||||||
#define ai_chem_clean (0)
|
|
||||||
#define ai_chem_stims_when_hurt_little (1) // use only stimpak/super stimpak/healing powder
|
|
||||||
#define ai_chem_stims_when_hurt_lots (2) // use only stimpak/super stimpak/healing powder
|
|
||||||
#define ai_chem_sometimes (3)
|
|
||||||
#define ai_chem_anytime (4)
|
|
||||||
#define ai_chem_always (5)
|
|
||||||
|
|
||||||
// common object data offsets
|
// common object data offsets
|
||||||
#define OBJ_DATA_TILENUM (0x04)
|
#define OBJ_DATA_TILENUM (0x04)
|
||||||
#define OBJ_DATA_CUR_FRM (0x18) // current frame number
|
#define OBJ_DATA_CUR_FRM (0x18) // current frame number
|
||||||
@@ -358,49 +284,4 @@
|
|||||||
#define OBJ_DATA_DAMAGE_LAST_TURN (0x48)
|
#define OBJ_DATA_DAMAGE_LAST_TURN (0x48)
|
||||||
#define OBJ_DATA_WHO_HIT_ME (0x54)
|
#define OBJ_DATA_WHO_HIT_ME (0x54)
|
||||||
|
|
||||||
// compute attack result data offsets
|
|
||||||
#define C_ATTACK_SOURCE (0x00)
|
|
||||||
#define C_ATTACK_HIT_MODE (0x04)
|
|
||||||
#define C_ATTACK_WEAPON (0x08)
|
|
||||||
#define C_ATTACK_DAMAGE_SOURCE (0x10) // Amount
|
|
||||||
#define C_ATTACK_FLAGS_SOURCE (0x14) // see DAM_* values in define.h
|
|
||||||
#define C_ATTACK_ROUNDS (0x18)
|
|
||||||
#define C_ATTACK_TARGET (0x20)
|
|
||||||
#define C_ATTACK_BODY_PART (0x28)
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET (0x2C) // Amount
|
|
||||||
#define C_ATTACK_FLAGS_TARGET (0x30) // see DAM_*
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE (0x34)
|
|
||||||
#define C_ATTACK_MAIN_TARGET (0x38)
|
|
||||||
#define C_ATTACK_AROUND_NUMBER (0x3C) // The number of critters around the target
|
|
||||||
#define C_ATTACK_TARGET1 (0x40)
|
|
||||||
#define C_ATTACK_TARGET2 (0x44)
|
|
||||||
#define C_ATTACK_TARGET3 (0x48)
|
|
||||||
#define C_ATTACK_TARGET4 (0x4C)
|
|
||||||
#define C_ATTACK_TARGET5 (0x50)
|
|
||||||
#define C_ATTACK_TARGET6 (0x54)
|
|
||||||
#define C_ATTACK_BODY_PART1 (0x58)
|
|
||||||
#define C_ATTACK_BODY_PART2 (0x5C)
|
|
||||||
#define C_ATTACK_BODY_PART3 (0x60)
|
|
||||||
#define C_ATTACK_BODY_PART4 (0x64)
|
|
||||||
#define C_ATTACK_BODY_PART5 (0x68)
|
|
||||||
#define C_ATTACK_BODY_PART6 (0x6C)
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET1 (0x70) // Amount
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET2 (0x74)
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET3 (0x78)
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET4 (0x7C)
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET5 (0x80)
|
|
||||||
#define C_ATTACK_DAMAGE_TARGET6 (0x84)
|
|
||||||
#define C_ATTACK_FLAGS_TARGET1 (0x88) // see DAM_*
|
|
||||||
#define C_ATTACK_FLAGS_TARGET2 (0x8C)
|
|
||||||
#define C_ATTACK_FLAGS_TARGET3 (0x90)
|
|
||||||
#define C_ATTACK_FLAGS_TARGET4 (0x94)
|
|
||||||
#define C_ATTACK_FLAGS_TARGET5 (0x98)
|
|
||||||
#define C_ATTACK_FLAGS_TARGET6 (0x9C)
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE1 (0xA0)
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE2 (0xA4)
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE3 (0xA8)
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE4 (0xAC)
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE5 (0xB0)
|
|
||||||
#define C_ATTACK_KNOCKBACK_VALUE6 (0xB4)
|
|
||||||
|
|
||||||
#endif // DEFINE_EXTRA_H
|
#endif // DEFINE_EXTRA_H
|
||||||
|
|||||||
@@ -20,9 +20,6 @@
|
|||||||
/*
|
/*
|
||||||
Generic array functions
|
Generic array functions
|
||||||
*/
|
*/
|
||||||
// returns True if the specified key exists in the associative array
|
|
||||||
procedure map_contains_key(variable arrayMap, variable key);
|
|
||||||
|
|
||||||
// push new item at the end of array, returns array
|
// push new item at the end of array, returns array
|
||||||
procedure array_push(variable array, variable item);
|
procedure array_push(variable array, variable item);
|
||||||
|
|
||||||
@@ -154,14 +151,6 @@ procedure load_collection(variable name);
|
|||||||
|
|
||||||
#define ARRAY_SET_BLOCK_SIZE (10)
|
#define ARRAY_SET_BLOCK_SIZE (10)
|
||||||
|
|
||||||
procedure map_contains_key(variable arrayMap, variable key) begin
|
|
||||||
variable i;
|
|
||||||
for (i := 0; i < len_array(arrayMap); i++) begin
|
|
||||||
if (array_key(arrayMap, i) == key) then return true;
|
|
||||||
end
|
|
||||||
return false;
|
|
||||||
end
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns first index of zero value
|
* Returns first index of zero value
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -17,8 +17,6 @@
|
|||||||
#define INTFACEUSE (0x8000)
|
#define INTFACEUSE (0x8000)
|
||||||
#define INTFACELOOT (0x10000)
|
#define INTFACELOOT (0x10000)
|
||||||
#define BARTER (0x20000)
|
#define BARTER (0x20000)
|
||||||
#define HEROWIN (0x40000)
|
|
||||||
#define DIALOGVIEW (0x80000)
|
|
||||||
|
|
||||||
//Valid arguments to register_hook
|
//Valid arguments to register_hook
|
||||||
#define HOOK_TOHIT (0)
|
#define HOOK_TOHIT (0)
|
||||||
@@ -47,19 +45,6 @@
|
|||||||
#define HOOK_WITHINPERCEPTION (23)
|
#define HOOK_WITHINPERCEPTION (23)
|
||||||
#define HOOK_INVENTORYMOVE (24)
|
#define HOOK_INVENTORYMOVE (24)
|
||||||
#define HOOK_INVENWIELD (25)
|
#define HOOK_INVENWIELD (25)
|
||||||
#define HOOK_ADJUSTFID (26)
|
|
||||||
#define HOOK_COMBATTURN (27)
|
|
||||||
#define HOOK_CARTRAVEL (28)
|
|
||||||
#define HOOK_SETGLOBALVAR (29)
|
|
||||||
#define HOOK_RESTTIMER (30)
|
|
||||||
#define HOOK_GAMEMODECHANGE (31)
|
|
||||||
#define HOOK_USEANIMOBJ (32)
|
|
||||||
#define HOOK_EXPLOSIVETIMER (33)
|
|
||||||
#define HOOK_DESCRIPTIONOBJ (34)
|
|
||||||
#define HOOK_USESKILLON (35)
|
|
||||||
#define HOOK_ONEXPLOSION (36)
|
|
||||||
#define HOOK_SUBCOMBATDAMAGE (37)
|
|
||||||
#define HOOK_SETLIGHTING (38)
|
|
||||||
|
|
||||||
//Valid arguments to list_begin
|
//Valid arguments to list_begin
|
||||||
#define LIST_CRITTERS (0)
|
#define LIST_CRITTERS (0)
|
||||||
@@ -117,10 +102,6 @@
|
|||||||
#define create_array_map (create_array(-1, 0))
|
#define create_array_map (create_array(-1, 0))
|
||||||
// create temporary map
|
// create temporary map
|
||||||
#define temp_array_map (temp_array(-1, 0))
|
#define temp_array_map (temp_array(-1, 0))
|
||||||
// create persistent lookup map (see arrays.txt for details)
|
|
||||||
#define create_lookup_map (create_array(-1, 2))
|
|
||||||
// create temporary lookup map
|
|
||||||
#define temp_lookup_map (temp_array(-1, 2))
|
|
||||||
// true if array is map, false otherwise
|
// true if array is map, false otherwise
|
||||||
#define array_is_map(x) (array_key(x, -1) == 1)
|
#define array_is_map(x) (array_key(x, -1) == 1)
|
||||||
// returns temp list with names of all arrays saved with save_array() in alphabetical order
|
// returns temp list with names of all arrays saved with save_array() in alphabetical order
|
||||||
@@ -133,18 +114,14 @@
|
|||||||
#define array_exists(array) (len_array(array) != -1)
|
#define array_exists(array) (len_array(array) != -1)
|
||||||
// remove all elements from array
|
// remove all elements from array
|
||||||
#define clear_array(array) resize_array(array, 0)
|
#define clear_array(array) resize_array(array, 0)
|
||||||
// sort array or map by key in ascending order
|
// sort array in ascending order
|
||||||
#define sort_array(array) resize_array(array, -2)
|
#define sort_array(array) resize_array(array, -2)
|
||||||
// sort array or map by key in descending order
|
// sort array in descending order
|
||||||
#define sort_array_reverse(array) resize_array(array, -3)
|
#define sort_array_reverse(array) resize_array(array, -3)
|
||||||
// reverse elements in list/map
|
// reverse elements in list
|
||||||
#define reverse_array(array) resize_array(array, -4)
|
#define reverse_array(array) resize_array(array, -4)
|
||||||
// randomly shuffle elements in list/map
|
// randomly shuffle elements in list
|
||||||
#define shuffle_array(array) resize_array(array, -5)
|
#define shuffle_array(array) resize_array(array, -5)
|
||||||
// sort map in ascending order by value
|
|
||||||
#define sort_map_value(array) resize_array(array, -6)
|
|
||||||
// sort map in descending order by value
|
|
||||||
#define sort_map_value_desc(array) resize_array(array, -7)
|
|
||||||
// remove element from map or just replace value with 0 for list
|
// remove element from map or just replace value with 0 for list
|
||||||
#define unset_array(array, item) set_array(array, item, 0)
|
#define unset_array(array, item) set_array(array, item, 0)
|
||||||
// same as "key_pressed" but checks VK codes instead of DX codes
|
// same as "key_pressed" but checks VK codes instead of DX codes
|
||||||
@@ -156,10 +133,6 @@
|
|||||||
#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 set_explosion_radius(grenade, rocket) metarule2_explosions(5, grenade, rocket)
|
#define set_explosion_radius(grenade, rocket) metarule2_explosions(5, grenade, rocket)
|
||||||
#define get_explosion_damage(itemPid) metarule2_explosions(6, itemPid, 0)
|
|
||||||
#define set_dynamite_damage(minDmg, maxDmg) metarule2_explosions(7, minDmg, maxDmg)
|
|
||||||
#define set_plastic_damage(minDmg, maxDmg) metarule2_explosions(8, minDmg, maxDmg)
|
|
||||||
#define set_explosion_max_targets(x) metarule2_explosions(9, x, 0)
|
|
||||||
|
|
||||||
|
|
||||||
#define GAME_MSG_COMBAT (0)
|
#define GAME_MSG_COMBAT (0)
|
||||||
@@ -202,11 +175,6 @@
|
|||||||
#define CURSOR_COMMAND (1)
|
#define CURSOR_COMMAND (1)
|
||||||
#define CURSOR_TARGETING (2)
|
#define CURSOR_TARGETING (2)
|
||||||
|
|
||||||
//Valid flags for set_rest_mode
|
|
||||||
#define RESTMODE_DISABLED (1) // disable resting on all maps
|
|
||||||
#define RESTMODE_STRICT (2) // disable resting on maps with "can_rest_here=No" in Maps.txt, even if there are no other critters
|
|
||||||
#define RESTMODE_NO_HEALING (4) // disable healing during resting
|
|
||||||
|
|
||||||
#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))
|
||||||
@@ -239,51 +207,33 @@
|
|||||||
|
|
||||||
|
|
||||||
#define attack_is_aimed sfall_func0("attack_is_aimed")
|
#define attack_is_aimed sfall_func0("attack_is_aimed")
|
||||||
#define car_gas_amount sfall_func0("car_gas_amount")
|
|
||||||
#define create_win(winName, x, y, w, h) sfall_func5("create_win", winName, x, y, w, h)
|
#define create_win(winName, x, y, w, h) sfall_func5("create_win", winName, x, y, w, h)
|
||||||
#define create_win_flag(winName, x, y, w, h, flag) sfall_func6("create_win", winName, x, y, w, h, flag)
|
#define create_win_flag(winName, x, y, w, h, flag) sfall_func6("create_win", winName, x, y, w, h, flag)
|
||||||
#define critter_inven_obj2(obj, type) sfall_func2("critter_inven_obj2", obj, type)
|
#define critter_inven_obj2(obj, type) sfall_func2("critter_inven_obj2", obj, type)
|
||||||
#define dialog_message(text) sfall_func1("dialog_message", text)
|
|
||||||
#define dialog_obj sfall_func0("dialog_obj")
|
|
||||||
#define display_stats sfall_func0("display_stats")
|
#define display_stats sfall_func0("display_stats")
|
||||||
#define exec_map_update_scripts sfall_func0("exec_map_update_scripts")
|
#define exec_map_update_scripts sfall_func0("exec_map_update_scripts")
|
||||||
#define floor2(value) sfall_func1("floor2", value)
|
#define floor2(value) sfall_func1("floor2", value)
|
||||||
#define get_can_rest_on_map(map, elev) sfall_func2("get_can_rest_on_map", map, elev)
|
|
||||||
#define get_current_inven_size(obj) sfall_func1("get_current_inven_size", obj)
|
#define get_current_inven_size(obj) sfall_func1("get_current_inven_size", obj)
|
||||||
#define get_cursor_mode sfall_func0("get_cursor_mode")
|
#define get_cursor_mode sfall_func0("get_cursor_mode")
|
||||||
#define get_flags(obj) sfall_func1("get_flags", obj)
|
#define get_flags(obj) sfall_func1("get_flags", obj)
|
||||||
#define get_ini_section(file, sect) sfall_func2("get_ini_section", file, sect)
|
|
||||||
#define get_ini_sections(file) sfall_func1("get_ini_sections", file)
|
|
||||||
#define get_map_enter_position sfall_func0("get_map_enter_position")
|
#define get_map_enter_position sfall_func0("get_map_enter_position")
|
||||||
#define get_object_ai_data(obj, aiParam) sfall_func2("get_object_ai_data", obj, aiParam)
|
|
||||||
#define get_object_data(obj, offset) sfall_func2("get_object_data", obj, offset)
|
#define get_object_data(obj, offset) sfall_func2("get_object_data", obj, offset)
|
||||||
#define get_outline(obj) sfall_func1("get_outline", obj)
|
#define get_outline(obj) sfall_func1("get_outline", obj)
|
||||||
#define get_string_pointer(text) sfall_func1("get_string_pointer", text)
|
|
||||||
#define intface_hide sfall_func0("intface_hide")
|
#define intface_hide sfall_func0("intface_hide")
|
||||||
#define intface_is_hidden sfall_func0("intface_is_hidden")
|
#define intface_is_hidden sfall_func0("intface_is_hidden")
|
||||||
#define intface_redraw sfall_func0("intface_redraw")
|
#define intface_redraw sfall_func0("intface_redraw")
|
||||||
#define intface_show sfall_func0("intface_show")
|
#define intface_show sfall_func0("intface_show")
|
||||||
#define inventory_redraw(invSide) sfall_func1("inventory_redraw", invSide)
|
#define inventory_redraw(invSide) sfall_func1("inventory_redraw", invSide)
|
||||||
#define item_make_explosive(pid, aPid, min, max) sfall_func4("item_make_explosive", pid, aPid, min, max)
|
|
||||||
#define item_weight(obj) sfall_func1("item_weight", obj)
|
#define item_weight(obj) sfall_func1("item_weight", obj)
|
||||||
#define lock_is_jammed(obj) sfall_func1("lock_is_jammed", obj)
|
#define lock_is_jammed(obj) sfall_func1("lock_is_jammed", obj)
|
||||||
#define loot_obj sfall_func0("loot_obj")
|
|
||||||
#define obj_under_cursor(crSwitch, inclDude) sfall_func2("obj_under_cursor", crSwitch, inclDude)
|
#define obj_under_cursor(crSwitch, inclDude) sfall_func2("obj_under_cursor", crSwitch, inclDude)
|
||||||
#define outlined_object sfall_func0("outlined_object")
|
#define outlined_object sfall_func0("outlined_object")
|
||||||
#define real_dude_obj sfall_func0("real_dude_obj")
|
|
||||||
#define set_can_rest_on_map(map, elev, value) sfall_func3("set_can_rest_on_map", map, elev, value)
|
|
||||||
#define set_car_intface_art(artIndex) sfall_func1("set_car_intface_art", artIndex)
|
|
||||||
#define set_cursor_mode(mode) sfall_func1("set_cursor_mode", mode)
|
#define set_cursor_mode(mode) sfall_func1("set_cursor_mode", mode)
|
||||||
#define set_dude_obj(critter) sfall_func1("set_dude_obj", critter)
|
|
||||||
#define set_flags(obj, flags) sfall_func2("set_flags", obj, flags)
|
#define set_flags(obj, flags) sfall_func2("set_flags", obj, flags)
|
||||||
#define set_iface_tag_text(tag, text, color) sfall_func3("set_iface_tag_text", tag, text, color)
|
|
||||||
#define set_ini_setting(setting, value) sfall_func2("set_ini_setting", setting, value)
|
#define set_ini_setting(setting, value) sfall_func2("set_ini_setting", setting, value)
|
||||||
#define set_map_enter_position(tile, elev, rot) sfall_func3("set_map_enter_position", tile, elev, rot)
|
#define set_map_enter_position(tile, elev, rot) sfall_func3("set_map_enter_position", tile, elev, rot)
|
||||||
#define set_object_data(obj, offset, value) sfall_func3("set_object_data", obj, offset, value)
|
#define set_object_data(obj, offset, value) sfall_func3("set_object_data", obj, offset, value)
|
||||||
#define set_outline(obj, color) sfall_func2("set_outline", obj, color)
|
#define set_outline(obj, color) sfall_func2("set_outline", obj, color)
|
||||||
#define set_rest_heal_time(time) sfall_func1("set_rest_heal_time", time)
|
|
||||||
#define set_rest_mode(mode) sfall_func1("set_rest_mode", mode)
|
|
||||||
#define set_unjam_locks_time(time) sfall_func1("set_unjam_locks_time", time)
|
|
||||||
#define spatial_radius(obj) sfall_func1("spatial_radius", obj)
|
#define spatial_radius(obj) sfall_func1("spatial_radius", obj)
|
||||||
#define tile_refresh_display sfall_func0("tile_refresh_display")
|
#define tile_refresh_display sfall_func0("tile_refresh_display")
|
||||||
#define unjam_lock(obj) sfall_func1("unjam_lock", obj)
|
#define unjam_lock(obj) sfall_func1("unjam_lock", obj)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user