engine: reject mbf21 and shit24 wads. there is no way to know if it is safe to ignore...
[k8vavoom.git] / specs / k8vavoom_terrain_bootprints.txt
blob119648dd167682743ae75b13c2680dbdb7af6d19
1 k8vavoom terrain extensions and bootprint definition, v0.91
2 ===========================================================
5 terrain
6 =======
8 everything that is at https://zdoom.org/wiki/TERRAIN is supported (as of May, 2021).
10 in addition, you can modify an existing terrain by redefining it like:
12   terrain Name modify {
13     ...
14   }
16 the difference between this and standard terrain override is that without "modify"
17 keyword, existing terrain will be reset to default values. if you'll try to modify
18 the definition that wasn't yet defined, "modify" will be ignored.
20 there are extended options for terrain, which should be used in "k8vavoom" block.
22   terrain Name {
23     ...
24     k8vavoom {
25       ...
26     }
27   }
29 this is done so other engines could simply skip the extensions without knowing how to
30 parse k8vavoom options.
33 extended options are:
35 noprotection
36   removes "allowprotection" flag.
38 notliquid
39   removes "liquid" flag.
41 nodamageonland
42   removes "damageonland" flag.
44 playeronly
45   this terrain definition is applied only for players. for other entities, default
46   terrain will be used.
48 everybody
49   removes "playeronly" flag.
51 optout
52   if "gm_vanilla_liquids" cvar is false, default terrain will be returned instead of this one.
54 nooptout
55   removes "optout" flag.
57 bootprint <name>
58   bootprint definition for this terrain.
59   note that bootprint flat (specified in bootprint definition) has higher priority.
61 detectfloorflat <globmask>
62   flats matching this globmask will be marked as belonging to this terrain.
63   this option can be specified several times, and it is cumulative.
64   "globmask" is a wildcard expression, it supports "*" and ranges in "[]"
67 "land step sound" will be used when a player landed on the given terrain.
68 "small object" is the object with a mass less than 10, or with "small splash" flag set.
69 landing sound will be played regardless of splash object presence. i.e. you can use
70 landing sound to avoid spawning dummy splash objects. this sound will be played for both
71 liquids and normal terrains.
72 you can use zero volume to disable land sounds.
74 landvolume <float>
75   landing sound volume, [0..1]. default is 1.0.
77 smalllandvolume <float>
78   "small object" landing sound volume, [0..1]. default is 1.0.
80 alllandvolume <float>
81   landing sound volume for both object types, [0..1]. default is 1.0.
83 landsound <soundname>
84   landing sound name.
86 smalllandsound <soundname>
87   "small object" landing sound name.
89 alllandsound <soundname>
90   landing sound name for both object types.
93 footsteps are used to produce footstep sounds on a given terrain.
94 you can use zero time or volume to disable footstep sounds for a given mode.
96 walkingstepvolume <float>
97   footstep sound volume when walking, [0..1]. default is 1.0.
99 runningstepvolume <float>
100   footstep sound volume when running, [0..1]. default is 1.0.
102 crouchingstepvolume <float>
103   footstep sound volume when crouching, [0..1]. default is 1.0.
105 allstepvolume <float>
106   footstep sound volume for all modes, [0..1]. default is 1.0.
108 walkingsteptime <float>
109   footstep sound interval when walking, in seconds. default is 0.0 (no sound).
111 crouchingsteptime <float>
112   footstep sound interval when crouching, in seconds. default is 0.0 (no sound).
114 runningsteptime <float>
115   footstep sound interval when running, in seconds. default is 0.0 (no sound).
117 allsteptime <float>
118   footstep sound interval for all modes, in seconds. default is 0.0 (no sound).
120 leftstepsound <soundname>
121   sound for the left foot.
123 rightstepsound <soundname>
124   sound for the right foot.
126 allstepsound <soundname>
127   assign the given sound for both feets.
131 bootprint
132 =========
134 this is bootprint definition section. it will use base bootprint decal (as specified
135 in `PlayerPawn`) to leave bootprints. You can change decal shade, translucency and
136 animator.
138   bootprint VanillaWater {
139     time   default  // or: time minsecflt maxsecflt
140     shade "00 00 4f"
141     translucent 0.6
142     animator LiquidBootPrintFader
143     flat   "fwater[0-9]"
144   }
146 bootprint redefinition completely removes the old bootprint, including any flats for it.
147 i.e. redefined bootprint will not be assigned to any flats. you can use "modify" to
148 modify an existing bootprint. if you'll try to modify the definition that wasn't yet
149 defined, "modify" wiil be ignored.
151 note that bootprint decal should be drawn for the right foot. it will be mirrored for
152 the left foot. the engine will automatically apply some offset too, so decal sprite
153 "center point" should be roughly at the center of the decal.
156 booptprint options:
158 time <default | min max>
159   how long the player should leave bootprints, in seconds?
160   "default" is some default value (around 4.0 seconds).
161   you can specify minimum and maximum time instead, and the engine will choose something
162   in that range (inclusive) at random.
164 flat <globmask>
165   globlask for flats that leaves this bootprint. this option is cumulative.
167 shade <color>
168   set decal shade (as in decaldef):
169     shade "ff 00 ff"
171 stade flatpic [maxout <byte>]
172   decal shade will be taken as average color of the floor texture.
173   note that this cannot be used for blood decal bootprints yet.
174   "maxout" will scale the average color up to the given value.
175   scaling is done by selecting maximum color component, and scaling others.
176   i.e. like this:
177     maxv = max(r, g, b);
178     r = r*maxout/maxv;
179     g = g*maxout/maxv;
180     b = b*maxout/maxv;
181   there are some special scaling values:
182     0: don't scale
183     1: multiply all color components by 1.5
184     2: multiply all color components by 2.0
185     3: multiply all color components by 2.5
186     4: multiply all color components by 3.0
187     5: multiply all color components by 3.5
188     6: multiply all color components by 4.0
189   default is 2 (i.e. multiply by 2.0).
191 shade fromdecal
192   this is used for bootprints from floor decals.
193   currently no extended options are available.
194   this is default if no shade was specified.
196 translucent <float>
197   set decal translucency
199 solid
200   set translucency to 1.0
202 animator <name>
203   force decal animator. you can use "none" to remove default decal animators.
205 usesourcedecalalpha
206   this is useful for decals from bloodsplats: bootprint decal will take its
207   translucency from the corresponding bloodsplat decal.
211 default bootprint animators
212 ===========================
214 there are some predefined animators you can use for various bootprint types.
216 LiquidBootPrintFader
217   this is default fadeoff animator for bootprints from liquids.
221 bootprints from floor decals
222 ============================
224 flat decal definition can contain k8vavoom block to specify bootprints for such decals:
226   k8vavoom {
227     BootPrint K8Gore_BootPrint
228   }
232 assign flats to bootprints and to terrains
233 ==========================================
235 it is possible to use special blocks to assign flats to bootprints:
237   assign_bootprint BootprintName {
238     ...
239   }
241 and to terrains:
243   assign_bootprint TerrainName {
244     ...
245   }
247 currently, the only supported command in such blocks is:
249   flat "globmask"
253 new `PlayerPawn` properties
254 ===========================
256 you can use the following DECORATE properties to control player decal:
258 Player.BaseBootPrintDecal <name>
259   set base decal name for bootprints.
260   default is "BaseBootPrintDecal"
262 Player.BootPrintDelayTime0 <float>
263 Player.BootPrintDelayTime1 <float>
264   delay between bootprints, in seconds.
265   this specifies the interval, the actual time will be something in that
266   interval (choosen by random). always specify both values.
267   default is: 0.12 to 0.16
269 Player.BootPrintMinDist <float>
270   minimum distance between two bootprints, in game units.
271   default is 12
273 Player.BootPrintRadiusMult <float>
274   actor radius will be multiplied by this value to calculate bootprint
275   decal offset from the actor origin.
276   default is 0.4
278 Player.BootPrintRandomOfs0 <float>
279 Player.BootPrintRandomOfs1 <float>
280   a random value from this interval will be added to decal offset.
281   default: 0 to 2
284 new `PlayerPawn` flags
285 ======================
287 Player.BootPrintEnabled
288   are bootprints enabled for this pawn?
289   default: true
291 Player.BootPrintFlip
292   should the engine flip bootprint decal for the left foot?
293   default: true
295 Player.BootPrintFlipOffset
296   should the engine flip bootprint decal offset for the left foot?
297   default: true