mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
504f66f002 | ||
|
|
76f2301b6c | ||
|
|
4788ac757b | ||
|
|
a71b33aab1 | ||
|
|
222f3eaf68 | ||
|
|
823d2b92f7 | ||
|
|
f478e9a1f9 | ||
|
|
8718b86440 | ||
|
|
67adb9b592 | ||
|
|
ca5781a44a | ||
|
|
4edf36a1dc | ||
|
|
4a5f556cd3 | ||
|
|
2b7754746c | ||
|
|
8a4a83c8f8 | ||
|
|
c04df22c48 | ||
|
|
8e0ccc576c | ||
|
|
42566cc9da | ||
|
|
9e1c68e78d | ||
|
|
9765396b08 | ||
|
|
b008502e13 | ||
|
|
d71efe5b82 | ||
|
|
120888e5ed | ||
|
|
7b5075042d | ||
|
|
12ad41043d | ||
|
|
e509932add | ||
|
|
ba3ad33587 | ||
|
|
6e74c3166a | ||
|
|
e320acce0b | ||
|
|
4f48926105 | ||
|
|
5611931063 | ||
|
|
f00022fed6 | ||
|
|
78815425e2 | ||
|
|
9ddddcc120 | ||
|
|
11c15cec93 | ||
|
|
f36bd6fb61 | ||
|
|
26ab38c6c3 | ||
|
|
9b50e6be1e | ||
|
|
2427634ee8 | ||
|
|
36d1d0a5fc | ||
|
|
486f00cdf4 | ||
|
|
b6fd424665 | ||
|
|
3d679db758 | ||
|
|
92e1f919d9 | ||
|
|
d259e8c903 | ||
|
|
dea0e596c3 | ||
|
|
90b39f3dde | ||
|
|
c80224f661 | ||
|
|
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 | ||
|
|
31834fdfea | ||
|
|
7405e3cb52 | ||
|
|
771230f9b4 | ||
|
|
7b333ca458 | ||
|
|
e7d03fc60a | ||
|
|
61615930b6 | ||
|
|
62e5559aea | ||
|
|
50c91db5ea | ||
|
|
b1624e5acf | ||
|
|
024b1dbf6f | ||
|
|
659da227f4 | ||
|
|
b48549b524 | ||
|
|
bf61051887 | ||
|
|
158234438b | ||
|
|
eb4998ced6 | ||
|
|
9631e08db4 | ||
|
|
52072e29c0 | ||
|
|
28c18c1925 | ||
|
|
77349cbaec | ||
|
|
85845a2d80 | ||
|
|
d8e2e6f1ca | ||
|
|
dd00e130a9 | ||
|
|
6cb8700df5 | ||
|
|
ec0baf3065 | ||
|
|
5265100425 | ||
|
|
c095e54b62 | ||
|
|
229a5516e0 | ||
|
|
f056c53739 | ||
|
|
cb84700bfc | ||
|
|
0f722a50fd | ||
|
|
6b7a10130d | ||
|
|
061302585b | ||
|
|
c3acd1af3e | ||
|
|
411c0a6e98 | ||
|
|
4cc1235dbc | ||
|
|
70a742db81 | ||
|
|
00d4e188d6 | ||
|
|
a30464cfae | ||
|
|
38438d1e9c | ||
|
|
94e4a2043a | ||
|
|
42f70f920e | ||
|
|
f56af79c16 | ||
|
|
955733270c | ||
|
|
9804902af6 | ||
|
|
cfb546ce8a | ||
|
|
de2549eeaa | ||
|
|
cc00a2c162 | ||
|
|
16be32d284 | ||
|
|
16f19824d1 | ||
|
|
535b7edc55 | ||
|
|
573e5324f4 | ||
|
|
e17b722f16 | ||
|
|
7a6e15bae1 | ||
|
|
df34f6c994 | ||
|
|
26874a709e | ||
|
|
45724aa6b3 | ||
|
|
b477a43bd0 | ||
|
|
ca86b5f930 | ||
|
|
f05ec714e7 |
@@ -14,17 +14,18 @@ Part_0=1 ; Tell sfall that we want to modify the head entries
|
||||
|
||||
[c_00_0] ; The entries for the head table of the men critter type.
|
||||
e0_DamageMultiplier=100 ;First level critical
|
||||
e0_EffectFlags=0
|
||||
e0_EffectFlags=0 ; The value of the flags (see DAM_* in Define.h)
|
||||
; For multiple effects, use the sum of the flags (e.g. 2050 = knocked down + bypass armor)
|
||||
e0_StatCheck=0
|
||||
e0_StatMod=0
|
||||
e0_FailureEffect=0
|
||||
e0_Message=0 ; This is an index into the msg file, not a string
|
||||
e0_FailMessage=0
|
||||
e1_... ; Second level critical
|
||||
... ; And so on up to the hardest hitting level 5 critical
|
||||
e5_...
|
||||
;e1_... ; Second level critical
|
||||
;... ; And so on up to the hardest hitting level 5 critical
|
||||
;e5_...
|
||||
|
||||
;You can skip any entries from this section to leave them at their defaults
|
||||
;Any missing entries for critters 19-37 will be replaced by a 0, since they have no default
|
||||
;Note that the UOP fixes are included in the defaults, and do not need to be
|
||||
; added manually when using this override format, as opposed to the old one
|
||||
; added manually when using this override format, as opposed to the old one
|
||||
|
||||
@@ -7,6 +7,34 @@
|
||||
; have an additional NoHardcode option in this file which can
|
||||
; be used to remove their hardcoded effects, and add new stat/skill effects
|
||||
|
||||
;Name=The name of the perk (max 63 characters)
|
||||
;Desc=The description of the perk (max 1023 characters)
|
||||
;Image=The line number (0-indexed) of the corresponding FRM in skilldex.lst
|
||||
;Ranks=The number of perk levels
|
||||
;Level=The minimum required level
|
||||
;Type=If 0, the perk checks only Skill1 for skill requirements; if 1, it checks
|
||||
; Skill1 or Skill2; if 2, it checks both Skill1 and Skill2
|
||||
;Stat=The modified stat or -1 if you don't want to change any stats
|
||||
;StatMag=The increased/decreased value to the modified stat
|
||||
;Skill1=The first skill (or -1 for none) to check, but if you set a specific bit
|
||||
; (67108864 or 0x4000000), it checks GVAR. For example, if Skill1=67108864, then
|
||||
; the perk will check GVAR_PLAYER_REPUTATION (67108864 + 0) on Skill1Mag value
|
||||
;Skill1Mag=Positive value is used as the minimum requirements of the first
|
||||
; skill/GVAR, and a negative value is interpreted as the maximum requirement.
|
||||
; For example, with Skill1=0 and Skill1Mag=100, if player has small guns skill
|
||||
; >= 100 and meets all other requirements, the perk will be available in the
|
||||
; selection window; with Skill1=1 and Skill1Mag=-120, the perk will not be
|
||||
; available if player has big guns skill >= 120
|
||||
;Skill2=The second skill/GVAR (or -1 for none) to check
|
||||
;Skill2Mag=Same as Skill1Mag, but for Skill2
|
||||
;STR-LCK=Positive values are used as minimum requirements of SPECIAL stats, and
|
||||
; negative values are interpreted as maximum requirements. For some special
|
||||
; perks processed by the engine (e.g. PERK_armor_powered and PERK_armor_combat),
|
||||
; the values are not used as requirements but to add to corresponding SPECIAL
|
||||
; stats
|
||||
|
||||
;If the value is set to -99999, the variable will be ignored (similar to comment out that line)
|
||||
|
||||
;This is a modification to perk 119
|
||||
[119]
|
||||
Name=Example
|
||||
@@ -36,4 +64,4 @@ Name=Example
|
||||
Desc=This is an example trait
|
||||
Image=72
|
||||
StatMod=0|-1 ;Subtract 1 from strength
|
||||
SkillMod=0|20|1|-5 ;Add 20 to the players small guns skill and subtract 5 from big guns
|
||||
SkillMod=0|20|1|-5 ;Add 20 to the player's small guns skill and subtract 5 from big guns
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[sfall]
|
||||
SaveInCombat=Cannot save at this time
|
||||
SaveInCombat=Cannot save at this time.
|
||||
KarmaGain=You gained %d karma.
|
||||
KarmaLoss=You lost %d karma.
|
||||
HighlightFail1=You aren't carrying a motion sensor.
|
||||
@@ -7,8 +7,11 @@ HighlightFail2=Your motion sensor is out of charge.
|
||||
SuperStimExploitMsg=You cannot use a super stim on someone who is not injured!
|
||||
BlockedCombat=You cannot enter combat at this time.
|
||||
SaveSfallDataFail=ERROR saving extended savegame information! Check if other programs interfere with savegame files/folders and try again.
|
||||
PartyLvlMsg=Lvl:
|
||||
PartyACMsg=AC:
|
||||
PartyAddictMsg=Addict
|
||||
|
||||
[AppearanceMod]
|
||||
RaceText=Race
|
||||
StyleText=Style
|
||||
MainButtonText=Appearance
|
||||
MainButtonText=Appearance
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
; Allows to reassign books to different object PIDs, text messages.
|
||||
; Maximum 30 books are allowed (25 if overrideVanilla is 0)
|
||||
; Allows to reassign books to different object PIDs, text messages, and skills.
|
||||
; Maximum 50 books are allowed
|
||||
|
||||
[main]
|
||||
; total number of books in this file
|
||||
count=5
|
||||
count=1
|
||||
|
||||
; set to 1 to override all vanilla books, so you will have to define ALL books in this file;
|
||||
; otherwise only new books are defined here
|
||||
; set to 1 to override all vanilla books, so you will have to define ALL the necessary books in this file;
|
||||
; otherwise only new books are defined here. To just override the text/skill of a vanilla book,
|
||||
; specify its PID in the new book and set the parameters
|
||||
overrideVanilla=0
|
||||
|
||||
; count starts from 1
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
;Controls the elevators
|
||||
;Image must match up with the image of an existing elevator
|
||||
;Image must match up with the image of an existing elevator (can be overrided in sfall 4.1.4/3.8.14 or newer)
|
||||
;Make sure you specify the correct number of exit targets
|
||||
;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
|
||||
[000]
|
||||
;This elevator uses the frm of the original forth elevator
|
||||
[0]
|
||||
;This elevator will use the settings of the original forth elevator
|
||||
Image=4
|
||||
|
||||
;Set up the first exit point
|
||||
@@ -23,4 +24,23 @@ ID3=50
|
||||
Elevation3=0
|
||||
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)
|
||||
|
||||
+165
-76
@@ -1,5 +1,5 @@
|
||||
;sfall configuration settings
|
||||
;v3.8.1
|
||||
;v3.8.15
|
||||
|
||||
[Main]
|
||||
;Change to 1 if you want to use command line args to tell sfall to use another ini file.
|
||||
@@ -17,7 +17,8 @@ NumSoundBuffers=0
|
||||
;Set to 1 to allow attaching sound files to combat float messages
|
||||
AllowSoundForFloats=1
|
||||
|
||||
;Set to 1 to automatically search for alternative formats when Fallout tries to play an acm
|
||||
;Set to 1 to automatically search for alternative formats (mp3/wma/wav) when Fallout tries to play an acm
|
||||
;Set to 2 to play alternative music files even if original acm files are not present in the music folder
|
||||
;This does not effect the play_sfall_sound and stop_sfall_sound script functions
|
||||
AllowDShowSound=0
|
||||
|
||||
@@ -33,46 +34,57 @@ Enable=1
|
||||
;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed)
|
||||
SpeedMulti0=50
|
||||
SpeedMulti1=100
|
||||
SpeedMulti2=150
|
||||
SpeedMulti3=200
|
||||
SpeedMulti4=300
|
||||
SpeedMulti2=200
|
||||
SpeedMulti3=300
|
||||
SpeedMulti4=400
|
||||
SpeedMulti5=500
|
||||
SpeedMulti6=1000
|
||||
SpeedMulti7=100
|
||||
SpeedMulti8=100
|
||||
SpeedMulti9=100
|
||||
SpeedMulti6=600
|
||||
SpeedMulti7=700
|
||||
SpeedMulti8=800
|
||||
SpeedMulti9=900
|
||||
|
||||
;The initial speed at game startup
|
||||
SpeedMultiInitial=100
|
||||
|
||||
;Set to 1 to also affect the playback speed of mve video files without an audio track
|
||||
AffectPlayback=0
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Graphics]
|
||||
;Set to 0 for 8 bit fullscreen
|
||||
;Set to 4 for dx9 fullscreen
|
||||
;Set to 5 for dx9 windowed
|
||||
;A dx9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders)
|
||||
;Set to 4 for DX9 fullscreen
|
||||
;Set to 5 for DX9 windowed
|
||||
;A DX9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders)
|
||||
;Modes 1, 2 and 3 are no longer supported
|
||||
Mode=0
|
||||
|
||||
;If using a dx9 mode, this changes the resolution
|
||||
;If using a DX9 mode, this changes the resolution
|
||||
;The graphics are simply stretched to fit the new window; this does _not_ let you see more of the map
|
||||
;If set to 0, use Fallout's native resolution
|
||||
GraphicsWidth=0
|
||||
GraphicsHeight=0
|
||||
|
||||
;Set to 1 to do the palette conversion on the gpu
|
||||
;Set to 2 to do the palette conversion on the cpu
|
||||
;Set to 1 to do the palette conversion on the GPU
|
||||
;Set to 2 to do the palette conversion on the CPU
|
||||
;Set to 0 to pick automatically
|
||||
;GPU is faster, but requires v2.0 pixel shader support
|
||||
GPUBlt=0
|
||||
|
||||
;Set to 1 to allow using 32 bit graphics for talking heads
|
||||
;Requires graphics mode 4 or 5, and gpublt set to 1
|
||||
;Requires graphics mode 4 or 5, and GPUBlt set to 1
|
||||
Use32BitHeadGraphics=0
|
||||
|
||||
;Set to 1 to automatically search for alternative avi video files when Fallout tries to play the game movies
|
||||
;Requires graphics mode 4 or 5
|
||||
AllowDShowMovies=0
|
||||
|
||||
;Fade effect time percentage modifier
|
||||
;Default is 100. Decrease/increase this value to speed up/slow down fade effects
|
||||
FadeMultiplier=100
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Input]
|
||||
;Set to 1 to enable the mouse scroll wheel to scroll through your inventory
|
||||
;Set to 1 to enable the mouse scroll wheel to scroll through inventory, barter, and loot screens
|
||||
UseScrollWheel=1
|
||||
|
||||
;The mouse Z position is divided by this modifier to calculate the number of inventory
|
||||
@@ -98,7 +110,7 @@ ReverseMouseButtons=0
|
||||
BackgroundKeyboard=0
|
||||
BackgroundMouse=0
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
;The modifier key you have to hold down to change any speed settings
|
||||
;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise
|
||||
@@ -107,7 +119,7 @@ SpeedModKey=-1
|
||||
|
||||
;A key to press to toggle the speed tweak on or off
|
||||
;Specify 0 if you don't want a toggle key, or a DX scancode otherwise
|
||||
SpeedToggleKey=0x00
|
||||
SpeedToggleKey=0
|
||||
|
||||
;The keys corresponding to the 10 speed slots
|
||||
;Set to 0 to disable a slot, otherwise specify the DX scancode of the key you want to use
|
||||
@@ -128,26 +140,46 @@ SpeedKey9=0x00
|
||||
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
|
||||
;Set to 2 for purple outlines
|
||||
HighlightContainers=0
|
||||
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
|
||||
;Set to 0 if you don't want a reload key, or a DX scancode otherwise
|
||||
ReloadWeaponKey=0
|
||||
|
||||
;A key to hold down to let you move/drop a whole stack of items at once without the 'Move Items' window
|
||||
;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise
|
||||
ItemFastMoveKey=29
|
||||
|
||||
;Set to 1 to skip the 'Move Items' window when taking items from containers or corpses and not holding down ItemFastMoveKey
|
||||
;Requires ItemFastMoveKey to be enabled
|
||||
FastMoveFromContainer=0
|
||||
|
||||
;A key to press to open a debug game editor
|
||||
;Set to 0 to disable, or a DX scancode otherwise
|
||||
;Requires sfall debugging mode and FalloutClient.exe from the modders pack
|
||||
DebugEditorKey=0
|
||||
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
[Misc]
|
||||
|
||||
;Time limit in years. Must be between -3 and 13
|
||||
;Set to 0 if you want to die the instant you leave arroyo
|
||||
;Set to -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it
|
||||
;Set to -2 to remove the time limit without resetting the date. The game will lock up on 8th of March 2255
|
||||
;Set to -3 to remove the time limit, automatically reset the date, but override Fallout's GetDate function to return the correct year
|
||||
;Set to -2 or -3 to remove the time limit, automatically reset the date, but override Fallout's GetDate function to return the correct year
|
||||
TimeLimit=13
|
||||
|
||||
;World map travel time percentage modifier
|
||||
@@ -155,37 +187,20 @@ TimeLimit=13
|
||||
;100 is normal speed, 0 stops time from passing
|
||||
WorldMapTimeMod=100
|
||||
|
||||
;Set to 1 to enable functions relating to overriding the file system
|
||||
UseFileSystemOverride=0
|
||||
|
||||
;Set to 1 to use the Fallout 1 code to control world map speed
|
||||
WorldMapFPSPatch=1
|
||||
|
||||
;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement
|
||||
WorldMapDelay2=66
|
||||
|
||||
;XX OBSOLETE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
;XX
|
||||
;XX ;This will change the physical speed at which you move across the map
|
||||
;XX ;Set to 0 to leave at the default. (i.e. limited by vwait in windowed mode, or by processor speed in fullscreen)
|
||||
;XX ;If set to something other than 0, it enforces a maximum fps on the world map screen.
|
||||
;XX ;Changing this to something other than 0 is not recommended if you've already applied a world map speed patch to your Fallout exe.
|
||||
;XX WorldMapFPS=0
|
||||
;XX
|
||||
;XX ;Only set to 1 if your systems high performance timer is unreliable for some reason
|
||||
;XX ForceLowResolutionTimer=0
|
||||
;XX
|
||||
;XX ;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed
|
||||
;XX WorldMapEncounterFix=0
|
||||
;XX WorldMapEncounterRate=6
|
||||
;XX
|
||||
;XX ;Obsolete, but can still be used if you know what it does.
|
||||
;XX ;WorldMapDelay=0
|
||||
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed
|
||||
;Higher values of WorldMapEncounterRate cause a slower encounter rate
|
||||
WorldMapEncounterFix=0
|
||||
WorldMapEncounterRate=5
|
||||
|
||||
;The number of slots available in the locations list panel of the world map
|
||||
;Set to 0 to leave unchanged. 17 is default.
|
||||
;Setting this greater than 17 requires a replacement background frm, or you'll get glitched graphics
|
||||
;Setting this greater than 17 requires a replacement background FRM, or you'll get glitched graphics
|
||||
WorldMapSlots=0
|
||||
|
||||
;To start a new game somewhere other than artemple.map, uncomment the next line and set it to the map you want to load
|
||||
@@ -198,6 +213,9 @@ WorldMapSlots=0
|
||||
;To use a config file other than fallout2.cfg, uncomment the next line and add the name of your new file
|
||||
;ConfigFile=
|
||||
|
||||
;Set to 1 to enable functions relating to overriding the file system
|
||||
UseFileSystemOverride=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.
|
||||
@@ -205,7 +223,7 @@ WorldMapSlots=0
|
||||
;PatchFile=patch%03d.dat
|
||||
;MultiPatches=0
|
||||
|
||||
;Set to 1 to enable the modified data load order for the engine to find game data
|
||||
;Set to 1 to use 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
|
||||
@@ -238,6 +256,7 @@ Movie16=artimer4.mve
|
||||
Movie17=credits.mve
|
||||
|
||||
;To change the starting year, month or day, uncomment the next 3 lines
|
||||
;Both StartMonth and StartDay are 0-indexed
|
||||
;StartYear=-1
|
||||
;StartMonth=-1
|
||||
;StartDay=-1
|
||||
@@ -257,7 +276,7 @@ PipBoyAvailableAtGameStart=0
|
||||
|
||||
;Set to 1 to double the number of available kill types
|
||||
;If you use this, you need to provide the extra descriptions in proto.msg (entries from 1450 to 1487 are names and 1488 to 1525 are descriptions)
|
||||
;Changing this option mid game will not invalidate old save games, but the players kill counters will be completely screwed.
|
||||
;Changing this option mid game will not invalidate old save games, but the player's kill counters will be completely screwed.
|
||||
;Setting this to 1 may cause problems if the player kills more than 32767 of any one critter type
|
||||
;Additional kill types must have their new critical tables set! (See the OverrideCriticalTable option)
|
||||
ExtraKillTypes=0
|
||||
@@ -279,8 +298,8 @@ TownMapHotkeysFix=1
|
||||
;Set to 1 to disable the horrigan encounter
|
||||
DisableHorrigan=0
|
||||
|
||||
;Set to 1 to disable the random element in npc levelling.
|
||||
;This will cause all npc party members to automatically level up as soon as the player reaches the requirements
|
||||
;Set to 1 to disable the random element in NPC levelling.
|
||||
;This will cause all NPC party members to automatically level up as soon as the player reaches the requirements
|
||||
NPCAutoLevel=0
|
||||
|
||||
;Change the initial starting location and world map viewport
|
||||
@@ -305,10 +324,10 @@ SaveInCombatFix=1
|
||||
;ElevatorsFile=Elevators.ini
|
||||
|
||||
;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
|
||||
;Player's level is capped once the highest specified level is reached
|
||||
;XPTable=50,100,200
|
||||
|
||||
;Set to 1 to enable additional weapon animations codes from o-t
|
||||
;Set to 1 to enable additional weapon animation codes from o-t
|
||||
;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10
|
||||
;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corrisponds to 's' and 15 to 't'
|
||||
AdditionalWeaponAnims=1
|
||||
@@ -317,7 +336,7 @@ AdditionalWeaponAnims=1
|
||||
;BodyHit_Head=-40
|
||||
;BodyHit_Left_Arm=-30
|
||||
;BodyHit_Right_Arm=-30
|
||||
;BodyHit_Torso=0
|
||||
;BodyHit_Torso_Uncalled=0
|
||||
;BodyHit_Right_Leg=-20
|
||||
;BodyHit_Left_Leg=-20
|
||||
;BodyHit_Eyes=-60
|
||||
@@ -345,26 +364,41 @@ CorpseLineOfFireFix=0
|
||||
;Set a number of milliseconds to idle each input loop
|
||||
;Set to -1 to disable
|
||||
;Set to 0 to idle only if other processes are waiting for processor time
|
||||
;Set to 1 (or some higher number if needed, the maximum is 127) to prevent 100% cpu use
|
||||
;Set to 1 (or some higher number if needed, the maximum is 127) to prevent 100% CPU use
|
||||
ProcessorIdle=-1
|
||||
|
||||
;Set a number of how many protos per type can be loaded into memory at once (valid range: 512..4096)
|
||||
;Set to -1 to let set_proto_data script function automatically increase the limit when needed
|
||||
LoadProtoMaxLimit=-1
|
||||
|
||||
;Set to 1 if using the hero appearance mod
|
||||
;You can add AppChCrt.frm and AppChEdt.frm files to art/intrface/ to set a custom background for the character screen
|
||||
EnableHeroAppearanceMod=0
|
||||
|
||||
;Set to 1 to skip the 3 opening movies
|
||||
SkipOpeningMovies=0
|
||||
|
||||
;Causes npc's who complete their combat turn with ap left over will try and find other ways to spend it.
|
||||
;Only npcs with ap left equal to or greater than the value given here will be considered.
|
||||
;Causes NPCs who complete their combat turn with AP left over will try and find other ways to spend it.
|
||||
;Only NPCs with AP left equal to or greater than the value given here will be considered.
|
||||
;Set to 0 to disable
|
||||
NPCsTryToSpendExtraAP=0
|
||||
|
||||
;Set to 1 to fix NPCs not checking weapon perks properly when searching for the best weapon
|
||||
;Note that enabling this option can significantly affect the weapon choice of some NPCs in combat
|
||||
AIBestWeaponFix=0
|
||||
|
||||
;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as drug use preference when using drugs in their inventory
|
||||
AIDrugUsePerfFix=0
|
||||
|
||||
;Allows the use of tiles over 80*36 in size. sfall will just split and resave them at startup
|
||||
;Set to 1 to check all tiles on started (slow)
|
||||
;set to 2 if you provide a XLtiles.lst file in art/tiles/ containing a list of the tile ids that need checking
|
||||
;Set to 2 if you provide a XLtiles.lst file in art/tiles/ containing a list of the tile ids that need checking
|
||||
AllowLargeTiles=0
|
||||
|
||||
;Change the skilldex cursor frm numbers
|
||||
;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383
|
||||
MoreTiles=0
|
||||
|
||||
;Change the Skilldex cursor FRM numbers
|
||||
;Default is 293 for all skills
|
||||
Lockpick=293
|
||||
Steal=293
|
||||
@@ -374,19 +408,22 @@ Doctor=293
|
||||
Science=293
|
||||
Repair=293
|
||||
|
||||
;Remove window position rounding
|
||||
RemoveWindowRounding=0
|
||||
|
||||
;Set to 1 to add scroll buttons to the pip boy quest list, and remove the quests per area limit
|
||||
;Set to 1 to add scroll buttons to the pipboy quest list, and remove the quests per area limit
|
||||
;Set to 2 to use a different set of scroll buttons
|
||||
UseScrollingQuestsList=1
|
||||
|
||||
;To change the location of quest list scroll buttons, uncomment the next two lines
|
||||
;Defaults are 140 for the X-axis and 334 for the Y-axis
|
||||
;QuestsScrollButtonsX=140
|
||||
;QuestsScrollButtonsY=334
|
||||
|
||||
;Uncomment these lines to control the premade characters offered when starting a new game
|
||||
;Multiple options should be separated by commas, and there must be the same number of entries in both lines
|
||||
;PremadePaths=combat,diplomat,stealth
|
||||
;PremadeFIDs=201,203,202
|
||||
|
||||
;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
|
||||
|
||||
@@ -396,11 +433,13 @@ UseScrollingQuestsList=1
|
||||
;Set to 1 to add additional pages of save slots
|
||||
ExtraSaveSlots=0
|
||||
|
||||
;Set to 1 to speed up the hp/ac counter animations
|
||||
;Set to 2 to update the hp/ac counters instantly
|
||||
;Set to 1 to speed up the HP/AC counter animations
|
||||
;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
|
||||
SpeedInterfaceCounterAnims=0
|
||||
|
||||
;These lines allow you to control the karma frm's 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
|
||||
;KarmaFRMsCount=3
|
||||
;KarmaFRMs=47,48,49
|
||||
;KarmaPoints=-100,100
|
||||
@@ -408,12 +447,12 @@ SpeedInterfaceCounterAnims=0
|
||||
;Set to 1 to allow science and repair to be used on the player, or 2 for all critters. (Rather than only brahmin/robots)
|
||||
ScienceOnCritters=0
|
||||
|
||||
;Modify this value to change the players speed of rotation on the inventory and character screens
|
||||
;Modify this value to change the player's speed of rotation on the inventory and character screens
|
||||
;Default is 166
|
||||
SpeedInventoryPCRotation=166
|
||||
|
||||
;Uncomment to set the text colour of the extra 5 interface boxes
|
||||
;The line must contain a 5 digits, each either a 0 for green or 1 for red
|
||||
;The line must contain 5 digits, each either a 0 for green or 1 for red
|
||||
;BoxBarColours=00000
|
||||
|
||||
;Set to 1 to fix the bug that caused bonus HtH damage to not be applied correctly.
|
||||
@@ -422,6 +461,9 @@ BonusHtHDamageFix=1
|
||||
;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory
|
||||
DisplayBonusDamage=0
|
||||
|
||||
;Set to 1 to display the range of the second attack mode in the inventory when you switch weapon modes in active item slots
|
||||
DisplaySecondWeaponRange=1
|
||||
|
||||
;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127)
|
||||
AnimationsAtOnceLimit=120
|
||||
|
||||
@@ -432,7 +474,7 @@ RemoveCriticalTimelimits=0
|
||||
NPCStage6Fix=0
|
||||
|
||||
;Change the colour of the font used on the main menu for the Fallout/sfall version number
|
||||
;It's the last byte ('3c' by default,) that picks the colour used. The first byte supplies additional flags
|
||||
;It's the last byte ('3c' by default) that picks the colour used. The first byte supplies additional flags
|
||||
;MainMenuFontColour=0x0600003c
|
||||
|
||||
;Two alternate fixes to the interaction between HtH attacks and the fast shot trait
|
||||
@@ -453,11 +495,12 @@ BoostScriptDialogLimit=0
|
||||
;DerivedStats=Stats.ini
|
||||
|
||||
;These options modify the checks to see if a critter can carry an additional item, changing which items are counted towards the weight limit and adding an additional size check
|
||||
;Set the mode to 0 to disable the size check, 1 to apply to pc only, 2 to apply to the pc and party members, or 3 to apply to all critters
|
||||
;Only the PC uses CritterInvSizeLimit. Other critters will use the extra unused stat (STAT_unused = 10)
|
||||
;Set the mode to 0 to disable the size check, 1 to apply to the PC only, 2 to apply to the PC and party members, or 3 to apply to all critters
|
||||
;Only the PC uses CritterInvSizeLimit. Other critters will use the unused stat (STAT_unused = 10) or have the size limit of 100 if the stat is not set
|
||||
;Add 4 to the mode to limit the weight check to used items only
|
||||
;You can use line number 542/543 in proto.msg and line number 35 in inventry.msg to set up custom messages for item size
|
||||
CritterInvSizeLimitMode=0
|
||||
CritterInvSizeLimit=200
|
||||
CritterInvSizeLimit=100
|
||||
|
||||
;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
|
||||
@@ -485,9 +528,24 @@ SuperStimExploitFix=0
|
||||
InventoryApCost=4
|
||||
QuickPocketsApCostReduction=2
|
||||
|
||||
;Set to 1 to allow objects seeing through other objects with their ShootThru flag set
|
||||
;Set to 1 to allow objects seeing through other objects that have their ShootThru flag set
|
||||
;Note that enabling this option can cause unexpected NPC behavior in some situations
|
||||
ObjCanSeeObj_ShootThru_Fix=0
|
||||
|
||||
;Set to 1 to fix the broken obj_can_hear_obj script function
|
||||
ObjCanHearObjFix=0
|
||||
|
||||
;Set to 1 to enable the mood argument of start_gdialog script function to be available for talking heads
|
||||
;If the argument value is -1, the mood will be determined by the local variable 0 of the script (vanilla behavior)
|
||||
StartGDialogFix=0
|
||||
|
||||
;Set to 1 to fix and repurpose the unused called_shot/num_attacks arguments of attack_complex script function
|
||||
;This also changes the behavior of the result flags arguments
|
||||
;called_shot - additional damage, when the damage received by the target is above the specified minimum damage
|
||||
;num_attacks - the number of free action points on the first turn only
|
||||
;attacker_results - unused, must be 0 or not equal to the target_results argument when specifying result flags for the target
|
||||
AttackComplexFix=0
|
||||
|
||||
;Set to 1 to enable the balanced bullet distribution formula for burst attacks
|
||||
ComputeSprayMod=0
|
||||
|
||||
@@ -553,16 +611,27 @@ StackEmptyWeapons=0
|
||||
;If the amount of ammo boxes in the inventory is less than or equal to the reserve, only one box will be used
|
||||
ReloadReserve=-1
|
||||
|
||||
;Set to 1 to change the counter in the 'Move Items' window to start at the maximum number of items
|
||||
ItemCounterDefaultMax=0
|
||||
|
||||
;Allows 9 options (lines of text) to be displayed correctly in a dialog window
|
||||
DialogOptions9Lines=1
|
||||
|
||||
;Set to 1 to leave the music playing in dialogue with talking heads
|
||||
EnableMusicInDialogue=0
|
||||
|
||||
;Set to 1 to prevent the player from running while sneaking without Silent Running perk
|
||||
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
|
||||
CanSellUsedGeiger=1
|
||||
|
||||
;Set to 1 to fix the issue with being able to charge the car by using cells on other scenary/critters
|
||||
;Set to 0 if another mod you're using has custom vehicles
|
||||
CarChargingFix=1
|
||||
|
||||
;Set to 1 to skip weapon equip/unequip animations when performing various actions
|
||||
@@ -575,6 +644,21 @@ InstantWeaponEquip=0
|
||||
;Set to 1 to display numbered dialogue options
|
||||
NumbersInDialogue=0
|
||||
|
||||
;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map
|
||||
WorldMapFontPatch=0
|
||||
|
||||
;Set to 1 to display full item description for weapon/ammo in barter screen
|
||||
FullItemDescInBarter=0
|
||||
|
||||
;Set to 1 to display experience points with the bonus from Swift Learner perk when gained from non-scripted situations
|
||||
DisplaySwiftLearnerExp=1
|
||||
|
||||
;Set to 1 to display party member's current level/AC/addict flag on the combat control panel
|
||||
PartyMemberExtraInfo=0
|
||||
|
||||
;Set to 1 to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows
|
||||
InterfaceDontMoveOnTop=0
|
||||
|
||||
;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top
|
||||
CreditsAtBottom=0
|
||||
|
||||
@@ -587,8 +671,8 @@ CreditsAtBottom=0
|
||||
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
|
||||
;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and 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
|
||||
@@ -606,10 +690,12 @@ DebugMode=0
|
||||
SkipCompatModeCheck=0
|
||||
|
||||
;Set to 1 to skip the executable file size check
|
||||
;Does not require sfall debugging mode
|
||||
SkipSizeCheck=0
|
||||
|
||||
;If you're testing changes to the Fallout exe, you can override the crc that sfall looks for here
|
||||
;If you're testing changes to the Fallout exe, you can override the CRC that sfall looks for here
|
||||
;You can use several hex values, separated by commas
|
||||
;Does not require sfall debugging mode
|
||||
;ExtraCRC=0x00000000,0x00000000
|
||||
|
||||
;Set to 1 to stop Fallout from deleting non readonly protos at startup
|
||||
@@ -619,6 +705,9 @@ 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
|
||||
|
||||
;Set to 1 to hide error messages in debug output when a null value is passed to the function as an object
|
||||
HideObjIsNullMsg=0
|
||||
|
||||
;These options control what output is saved in the debug log (sfall-log.txt)
|
||||
|
||||
;Prints messages duing sfall initialization
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,102 @@
|
||||
/*
|
||||
|
||||
Auto Doors mod v1.1 for Fallout 2 by Mr.Stalin
|
||||
----------------------------------------------
|
||||
|
||||
- allows the player to automatically open/walk through unlocked doors when not in combat
|
||||
|
||||
Requires sfall 3.7b or higher
|
||||
|
||||
NOTE: this script requires compiler from sfall modderspack with -s option
|
||||
(short circuit evaluation)
|
||||
|
||||
*/
|
||||
|
||||
/* Include Files */
|
||||
#include "..\headers\define.h"
|
||||
//#include "..\headers\command.h"
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
#include "..\..\scripting_docs\headers\define_extra.h"
|
||||
|
||||
/* Standard Script Procedures */
|
||||
procedure start;
|
||||
procedure map_enter_p_proc;
|
||||
|
||||
procedure set_door_flag(variable state);
|
||||
procedure set_door_flag_array(variable state);
|
||||
procedure combatturn_handler;
|
||||
|
||||
/* Defines */
|
||||
#define PORTAL (0)
|
||||
#define DOOR_FLAGS (0x24)
|
||||
|
||||
variable only_once := 0;
|
||||
variable arrayPid;
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
if (sfall_ver_major >= 4) then
|
||||
register_hook_proc(HOOK_COMBATTURN, combatturn_handler);
|
||||
else
|
||||
set_global_script_repeat(40); // for sfall 3.x
|
||||
call map_enter_p_proc;
|
||||
end else begin
|
||||
if (only_once == 1 and combat_is_initialized) then begin
|
||||
only_once := 2;
|
||||
call set_door_flag(0); // reset flag when entering combat mode
|
||||
end else if (only_once == 2 and not(combat_is_initialized)) then begin
|
||||
only_once := 1;
|
||||
if (sfall_ver_major >= 4) then set_global_script_repeat(0);
|
||||
call set_door_flag(FLAG_WALKTHRU); // set flag after combat mode ends
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
procedure map_enter_p_proc begin
|
||||
if (arrayPid) then begin
|
||||
// when changing maps, delete the current array to create a new one
|
||||
free_array(arrayPid);
|
||||
arrayPid := 0;
|
||||
end
|
||||
only_once := 1;
|
||||
call set_door_flag(FLAG_WALKTHRU); // set flag when entering the map
|
||||
end
|
||||
|
||||
procedure set_door_flag(variable state) begin
|
||||
variable objectMap, obj, objPid, i;
|
||||
|
||||
if (arrayPid) then begin
|
||||
call set_door_flag_array(state);
|
||||
return;
|
||||
end
|
||||
|
||||
objectMap := list_as_array(LIST_SCENERY);
|
||||
arrayPid := create_array(0, 0);
|
||||
|
||||
foreach (obj in objectMap) begin
|
||||
objPid := obj_pid(obj);
|
||||
|
||||
if (proto_data(objPid, sc_type) != PORTAL) or is_in_array(objPid, arrayPid) then
|
||||
continue; // next object
|
||||
|
||||
resize_array(arrayPid, i + 1);
|
||||
arrayPid[i] := objPid;
|
||||
i++;
|
||||
set_proto_data(objPid, DOOR_FLAGS, state);
|
||||
end
|
||||
end
|
||||
|
||||
procedure set_door_flag_array(variable state) begin
|
||||
variable objPid;
|
||||
foreach (objPid in arrayPid) begin
|
||||
set_proto_data(objPid, DOOR_FLAGS, state);
|
||||
end
|
||||
end
|
||||
|
||||
procedure combatturn_handler begin
|
||||
if (only_once == 1) then begin
|
||||
only_once := 2;
|
||||
call set_door_flag_array(0);
|
||||
set_global_script_repeat(60);
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,9 @@
|
||||
Auto Doors mod v1.1 for Fallout 2 by Mr.Stalin
|
||||
----------------------------------------------
|
||||
|
||||
- allows the player to automatically open/walk through unlocked doors when not in combat
|
||||
|
||||
|
||||
Requires sfall 3.7b or higher.
|
||||
|
||||
To use, copy gl_autodoors.int to your scripts folder.
|
||||
Binary file not shown.
+13
-11
@@ -1,22 +1,24 @@
|
||||
procedure start;
|
||||
procedure start;
|
||||
// adjust include paths if needed
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
|
||||
#define RESULT_SUCCESS (1)
|
||||
#define RESULT_FAIL (0)
|
||||
|
||||
procedure start begin
|
||||
if not init_hook then begin
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook(HOOK_STEAL);
|
||||
end else begin
|
||||
variable
|
||||
thief := get_sfall_arg,
|
||||
target := get_sfall_arg,
|
||||
item := get_sfall_arg,
|
||||
action := get_sfall_arg,
|
||||
result := RESULT_SUCCESS;
|
||||
|
||||
if (thief == dude_obj) then begin
|
||||
display_msg(sprintf(mstr_skill(570 + result + action*2), obj_name(item)));
|
||||
set_sfall_return(result);
|
||||
end
|
||||
end
|
||||
|
||||
if (thief == dude_obj) then begin
|
||||
display_msg(sprintf(mstr_skill(570 + result + action*2), obj_name(item)));
|
||||
set_sfall_return(result);
|
||||
end
|
||||
end
|
||||
end
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
procedure start;
|
||||
// adjust include paths if needed
|
||||
#include "..\..\scripting_docs\headers\sfall.h"
|
||||
#include "..\..\scripting_docs\headers\dik.h"
|
||||
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
register_hook(HOOK_KEYPRESS);
|
||||
end else begin
|
||||
variable
|
||||
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
|
||||
Binary file not shown.
@@ -1,16 +0,0 @@
|
||||
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
|
||||
@@ -2,8 +2,8 @@
|
||||
----------------------------------------
|
||||
|
||||
- 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.
|
||||
- Note: 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.
|
||||
To use, copy *.int file to your scripts folder.
|
||||
|
||||
This mod is a simple example of how you can use HOOK_KEYPRESS hooks.
|
||||
|
||||
@@ -3,13 +3,23 @@ This folder contains documentation about sfall scripting extensions.
|
||||
headers\ - folder contains sfall headers that you should #include in your scripts
|
||||
sfall.h - main sfall header, always include it
|
||||
define_extra.h - some additional preprocessor constants for vanilla engine stuff (proto offsets, etc.)
|
||||
dik.h - DX scancodes constants for use with key_pressed function and HOOK_KEYPRESS
|
||||
|
||||
define_lite.h - a lite version of official define.h
|
||||
dik.h - DX scancodes constants for use with key_pressed function and HOOK_KEYPRESS
|
||||
lib.arrays.h - procedures that will help you use arrays in their full:
|
||||
- use them as stacks, sets
|
||||
- easily compare, copy, slice, cut, add arrays
|
||||
- display array contents (for debugging)
|
||||
- save/load two-dimensional arrays to savegame in one command (e.g. arrays of objects)
|
||||
lib.inven.h - fallout items manipulation functions
|
||||
lib.math.h - a few simple functions for calculations
|
||||
lib.strings.h - search in strings, join, repeat, etc.
|
||||
lib.misc.h - misc stuff
|
||||
|
||||
sfall function notes.txt - incomplete reference for new opcodes
|
||||
sfall opcode list.txt - list of all sfall opcodes (w/o descriptions)
|
||||
hookscripts.txt - detailed manual for using hook scripts to modify engine behavior
|
||||
arrays.txt - manual for sfall arrays
|
||||
|
||||
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in ScriptEditor\docs\sslc_readme.txt,
|
||||
|
||||
If you are/will be using sfall Script Editor, don't forget to check out new compiler documentation in ScriptEditor\docs\sslc_readme.txt,
|
||||
there are numerious new syntax features and extensions to SSL (Star-Trek Scripting language).
|
||||
|
||||
|
||||
|
||||
@@ -9,21 +9,21 @@ Array elements are accessed by index or key. For example:
|
||||
|
||||
// this code puts some string in array "list" at index 5:
|
||||
list[5] := "Value";
|
||||
|
||||
|
||||
|
||||
There are 2 different types of arrays currently available:
|
||||
1) Lists - a set of values with specific size (number of elements), where all elements have numeric indexes starting from zero (0) up to array length minus one.
|
||||
For example:
|
||||
|
||||
|
||||
// this creates list with 3 elements. Element "A" has index 0, element "B" has index 1, element "C" - 2
|
||||
list := ["A", "B", "C"];
|
||||
|
||||
|
||||
Limitations:
|
||||
- all indexes are numeric, starting from 0;
|
||||
- to assign value to a specific index, you must first resize array to contain this index
|
||||
(for example, if list is of size 3 (indexes from 0 to 2), you can't assign value to index 4 unless you change list size to 5 first).
|
||||
|
||||
|
||||
|
||||
2) Maps (or associative arrays) - a set of key=>value pairs, where all elements (values) are accessed by corresponding keys.
|
||||
Differences from list:
|
||||
- maps don't have specific size (to assign values, you don't need to resize array first);
|
||||
@@ -37,24 +37,24 @@ Both array types have their pros and cons and are suited for different tasks.
|
||||
Basically arrays are implemented using number of new operators (scripting functions). But for ease of use, there are some new syntax elements:
|
||||
|
||||
1) Accessing elements. Use square brackets:
|
||||
|
||||
|
||||
display_msg(arr[5]);
|
||||
mymap["price"] := 515.23;
|
||||
|
||||
|
||||
2) Alternative accessing for maps. Use dot:
|
||||
|
||||
display_msg(mymap.name);
|
||||
mymap.price := 232.23;
|
||||
|
||||
|
||||
3) Array expressions. Create and fill arrays with just one expression:
|
||||
|
||||
// create list with 5 values
|
||||
[5, 777, 0, 3.14, "Cool Value"]
|
||||
|
||||
|
||||
// create map:
|
||||
{5: "Five", "health": 50, "speed": 0.252}
|
||||
|
||||
NOTES:
|
||||
|
||||
NOTES:
|
||||
- make sure to call "fix_array" if you want new array to be available in the next frame or "save_array" if you want to use it for a longer period
|
||||
(see next section for details)
|
||||
|
||||
@@ -64,16 +64,16 @@ NOTES:
|
||||
foreach (item in myarray) begin
|
||||
// this block is executed for each array element, where "item" contains current value on each step
|
||||
end
|
||||
|
||||
|
||||
// alternative syntax:
|
||||
foreach (key: item in myarray) begin
|
||||
// "key" will contain current key (or numeric index, for lists)
|
||||
end
|
||||
|
||||
See "Script editor\docs\sslc readme.txt" file for full information on new SSL syntax features.
|
||||
|
||||
|
||||
>>> STORING ARRAYS <<<
|
||||
|
||||
|
||||
Apart from lists/maps arrays are divided by how they are stored.
|
||||
There a 3 types of arrays:
|
||||
|
||||
@@ -85,21 +85,21 @@ where you create temp_array, it will not be available next time your global scri
|
||||
This type of arrays are always available (by their ID) until you start a new game or load a saved game (at which point they are deleted).
|
||||
|
||||
3) Saved. If you want your array to really stay for a while, use function "save_array" to make any array "saved". However, they are, like permanent arrays,
|
||||
"deleted" from memory when loading game. In order to use them properly, you must load them from the savegame using "load_array" whenever you want to use them.
|
||||
"deleted" from memory when loading game. In order to use them properly, you must load them from the savegame using "load_array" whenever you want to use them.
|
||||
Example:
|
||||
|
||||
|
||||
variable savedArray;
|
||||
procedure start begin
|
||||
if game_loaded then begin
|
||||
savedArray := load_array("traps");
|
||||
end else begin
|
||||
foreach trap in traps begin
|
||||
....
|
||||
....
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
>>> PRACTICAL EXAMPLES <<<
|
||||
|
||||
@@ -114,8 +114,8 @@ Example:
|
||||
|
||||
// call it:
|
||||
call give_item(dude_obj, {PID_SHOTGUN: 1, PID_SHOTGUN_SHELLS: 4, PID_STIMPAK: 3});
|
||||
|
||||
|
||||
|
||||
|
||||
> Create arrays of objects (maps) for advanced scripting:
|
||||
|
||||
variable traps;
|
||||
@@ -130,14 +130,14 @@ Example:
|
||||
traps[k] := load_array("trap_"+k); // each object is stored separately
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
procedure add_trap(variable trapArray) begin
|
||||
variable index;
|
||||
index := len_array(traps);
|
||||
save_array("trap_"+k, trapArray);
|
||||
array_push(traps, trapArray);
|
||||
end
|
||||
|
||||
|
||||
// use them:
|
||||
foreach trap in traps begin
|
||||
if (self_elevation == trap["elev"] and tile_distance(self_tile, trap["tile"]) < trap["radius"]) then
|
||||
@@ -151,14 +151,16 @@ Example:
|
||||
|
||||
*mixed means any type
|
||||
|
||||
> int create_array(int size, int nothing):
|
||||
> int create_array(int size, int flags):
|
||||
- creates permanent array (but not "saved")
|
||||
- if size is >= 0, creates list with given size
|
||||
- if size == -1, creates map (associative array)
|
||||
- second argument is not used yet, just use 0
|
||||
- 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.
|
||||
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)
|
||||
|
||||
> int temp_array(int size, int nothing):
|
||||
> int temp_array(int size, int flags):
|
||||
- works exactly like "create_array", only created array becomes "temporary"
|
||||
|
||||
> void fix_array(int arrayID):
|
||||
@@ -169,6 +171,7 @@ Example:
|
||||
- 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
|
||||
- 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:
|
||||
arrayID[key] := value;
|
||||
|
||||
@@ -182,7 +185,7 @@ Example:
|
||||
- changes array size
|
||||
- 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,
|
||||
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):
|
||||
- deletes any array
|
||||
|
||||
@@ -10,6 +10,12 @@
|
||||
#define OBJ_TYPE_MISC (5)
|
||||
#define OBJ_TYPE_SPATIAL (6)
|
||||
|
||||
#define WEAPON_TYPE_NONE (0)
|
||||
#define WEAPON_TYPE_UNARMED (1)
|
||||
#define WEAPON_TYPE_MELEE (2)
|
||||
#define WEAPON_TYPE_THROWN (3)
|
||||
#define WEAPON_TYPE_GUNS (4)
|
||||
|
||||
/* Item Common Flags */
|
||||
#define HIDDEN_ITEM 134217728 // 0x08000000 - Hidden Item
|
||||
|
||||
@@ -21,14 +27,14 @@
|
||||
#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_PRI_PUNCH 1 // 0001
|
||||
#define ATKMODE_PRI_KICK 2 // 0010
|
||||
#define ATKMODE_PRI_SWING 3 // 0011
|
||||
#define ATKMODE_PRI_THRUST 4 // 0100
|
||||
#define ATKMODE_PRI_THROW 5 // 0101
|
||||
#define ATKMODE_PRI_SINGLE 6 // 0110
|
||||
#define ATKMODE_PRI_BURST 7 // 0111
|
||||
#define ATKMODE_PRI_FLAME 8 // 1000
|
||||
#define ATKMODE_SEC_NONE 0
|
||||
#define ATKMODE_SEC_PUNCH 16 // 0x00000010
|
||||
#define ATKMODE_SEC_KICK 32 // 0x00000020
|
||||
@@ -39,6 +45,32 @@
|
||||
#define ATKMODE_SEC_BURST 112 // 0x00000070
|
||||
#define ATKMODE_SEC_FLAME 128 // 0x00000080
|
||||
|
||||
/* Object flags for get/set_flags */
|
||||
#define FLAG_MOUSE_3D (0x1)
|
||||
#define FLAG_WALKTHRU (0x4)
|
||||
#define FLAG_FLAT (0x8)
|
||||
#define FLAG_NOBLOCK (0x10)
|
||||
#define FLAG_LIGHTING (0x20)
|
||||
#define FLAG_TEMP (0x400)
|
||||
#define FLAG_MULTIHEX (0x800)
|
||||
#define FLAG_NOHIGHLIGHT (0x1000)
|
||||
#define FLAG_USED (0x2000)
|
||||
#define FLAG_TRANSRED (0x4000)
|
||||
#define FLAG_TRANSNONE (0x8000)
|
||||
#define FLAG_TRANSWALL (0x10000)
|
||||
#define FLAG_TRANSGLASS (0x20000)
|
||||
#define FLAG_TRANSSTEAM (0x40000)
|
||||
#define FLAG_TRANSENERGY (0x80000)
|
||||
#define FLAG_LEFT_HAND (0x1000000)
|
||||
#define FLAG_RIGHT_HAND (0x2000000)
|
||||
#define FLAG_WORN (0x4000000)
|
||||
#define FLAG_HIDDENITEM (0x8000000)
|
||||
#define FLAG_WALLTRANSEND (0x10000000)
|
||||
#define FLAG_LIGHTTHRU (0x20000000)
|
||||
#define FLAG_SEEN (0x40000000)
|
||||
#define FLAG_SHOOTTHRU (0x80000000)
|
||||
|
||||
|
||||
/* Critter Flags */
|
||||
#define CFLG_BARTER 2 // 0x00000002 - Barter (can trade with)
|
||||
#define CFLG_NOSTEAL 32 // 0x00000020 - Steal (cannot steal from)
|
||||
@@ -75,19 +107,27 @@
|
||||
// offsets for get_proto_data
|
||||
#define PROTO_PID (1)
|
||||
#define PROTO_TEXTID (4)
|
||||
#define PROTO_FID (8)
|
||||
|
||||
// items
|
||||
#define PROTO_IT_LDIST (12)
|
||||
#define PROTO_IT_LINT (16)
|
||||
#define PROTO_IT_FLAG (20)
|
||||
#define PROTO_IT_FLAGS (24)
|
||||
#define PROTO_IT_SCRIPTID (28)
|
||||
#define PROTO_IT_TYPE (32)
|
||||
#define PROTO_IT_MATERIAL (108)
|
||||
#define PROTO_IT_SIZE (112)
|
||||
#define PROTO_IT_WEIGHT (116)
|
||||
#define PROTO_IT_COST (120)
|
||||
#define PROTO_IT_INV_FID (124)
|
||||
#define PROTO_IT_SOUND (128) // byte
|
||||
|
||||
// weapons
|
||||
#define PROTO_WP_ANIM (36)
|
||||
#define PROTO_WP_DMG_MIN (40)
|
||||
#define PROTO_WP_DMG_MAX (44)
|
||||
#define PROTO_WP_DMG_TYPE (48)
|
||||
#define PROTO_WP_RANGE_1 (52)
|
||||
#define PROTO_WP_RANGE_2 (56)
|
||||
#define PROTO_WP_PROJ_PID (60)
|
||||
@@ -159,11 +199,14 @@
|
||||
#define PROTO_DR_ADDICT_DELAY (100)
|
||||
|
||||
// critters
|
||||
#define PROTO_CR_ACTION_FLAGS (32)
|
||||
#define PROTO_CR_LDIST (20)
|
||||
#define PROTO_CR_LINT (24)
|
||||
#define PROTO_CR_FLAG (28)
|
||||
#define PROTO_CR_FLAGS (32) // Critter Flags
|
||||
#define PROTO_CR_SCRIPTID (36)
|
||||
#define PROTO_CR_HEAD_FID (40)
|
||||
#define PROTO_CR_AI_PACKET (44)
|
||||
#define PROTO_CR_TEAM_NUM (48)
|
||||
#define PROTO_CR_FLAGS (52)
|
||||
#define PROTO_CR_BODY_TYPE (388)
|
||||
#define PROTO_CR_KILL_EXP (392)
|
||||
#define PROTO_CR_KILL_TYPE (396)
|
||||
@@ -191,26 +234,26 @@
|
||||
#define CALIBER_7_62MM (18)
|
||||
|
||||
// hidden perks
|
||||
#define PERK_add_nuka (53)
|
||||
#define PERK_add_buffout (54)
|
||||
#define PERK_add_mentats (55)
|
||||
#define PERK_add_psycho (56)
|
||||
#define PERK_add_radaway (57)
|
||||
#define PERK_weapon_long_range (58)
|
||||
#define PERK_weapon_accurate (59)
|
||||
#define PERK_weapon_penetrate (60)
|
||||
#define PERK_weapon_knockback (61)
|
||||
#define PERK_armor_powered (62)
|
||||
#define PERK_armor_combat (63)
|
||||
#define PERK_weapon_scope_range (64)
|
||||
#define PERK_weapon_fast_reload (65)
|
||||
#define PERK_weapon_night_sight (66)
|
||||
#define PERK_weapon_flameboy (67)
|
||||
#define PERK_armor_advanced_1 (68)
|
||||
#define PERK_armor_advanced_2 (69)
|
||||
#define PERK_add_jet (70)
|
||||
#define PERK_add_tragic (71)
|
||||
#define PERK_armor_charisma (72)
|
||||
#define PERK_add_nuka (53)
|
||||
#define PERK_add_buffout (54)
|
||||
#define PERK_add_mentats (55)
|
||||
#define PERK_add_psycho (56)
|
||||
#define PERK_add_radaway (57)
|
||||
#define PERK_weapon_long_range (58)
|
||||
#define PERK_weapon_accurate (59)
|
||||
#define PERK_weapon_penetrate (60)
|
||||
#define PERK_weapon_knockback (61)
|
||||
#define PERK_armor_powered (62)
|
||||
#define PERK_armor_combat (63)
|
||||
#define PERK_weapon_scope_range (64)
|
||||
#define PERK_weapon_fast_reload (65)
|
||||
#define PERK_weapon_night_sight (66)
|
||||
#define PERK_weapon_flameboy (67)
|
||||
#define PERK_armor_advanced_1 (68)
|
||||
#define PERK_armor_advanced_2 (69)
|
||||
#define PERK_add_jet (70)
|
||||
#define PERK_add_tragic (71)
|
||||
#define PERK_armor_charisma (72)
|
||||
|
||||
#define WPN_ANIM_NONE (0x00) // (A)
|
||||
#define WPN_ANIM_KNIFE (0x01) // (D)
|
||||
@@ -224,5 +267,21 @@
|
||||
#define WPN_ANIM_MINIGUN (0x09) // (L)
|
||||
#define WPN_ANIM_ROCKET_LAUNCHER (0x0A) // (M)
|
||||
|
||||
// common object data offsets
|
||||
#define OBJ_DATA_TILENUM (0x04)
|
||||
#define OBJ_DATA_CUR_FRM (0x18) // current frame number
|
||||
#define OBJ_DATA_ROTATION (0x1C)
|
||||
#define OBJ_DATA_FID (0x20)
|
||||
#define OBJ_DATA_ELEVATION (0x28)
|
||||
#define OBJ_DATA_PID (0x64)
|
||||
#define OBJ_DATA_CID (0x68)
|
||||
#define OBJ_DATA_SID (0x78)
|
||||
// items
|
||||
#define OBJ_DATA_CUR_CHARGES (0x3C)
|
||||
// critters
|
||||
#define OBJ_DATA_COMBAT_STATE (0x3C) // flags: 1 - combat, 2 - target is out of range, 4 - flee
|
||||
#define OBJ_DATA_CUR_ACTION_POINT (0x40)
|
||||
#define OBJ_DATA_DAMAGE_LAST_TURN (0x48)
|
||||
#define OBJ_DATA_WHO_HIT_ME (0x54)
|
||||
|
||||
#endif // DEFINE_EXTRA_H
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user