// // Quake game definition file (.fgd) // for Worldcraft 1.6 and above // // written by autolycus / autolycus@planetquake.com // email me with improvements and suggestions // //Modified by CZG : grawert@online.no : http://www.planetquake.com/greyvoid/ //Further modifed for Ericw's new compile tools by Daz : http://youtube.com/darrenweekes //Updated for TyrUtils v0.15.4 11/12/2015 //File version 7.0 //Tested with J.A.C.K Steam release //Updated for TyrUtils v0.15.9 13-03-17 //Dev Note - some brush model keys/values are duplicated in func_detail as that brush model only supports a subset of available keys/values. // // worldspawn // @SolidClass = worldspawn : "World entity" [ message(string) : "Level name" worldtype(choices) : "Ambience" : 0 = [ 0 : "Medieval" 1 : "Runic (metal)" 2 : "Present (base)" ] sounds(integer) : "CD track to play" : 1 light(integer) : "Ambient light" : 0 : "Set a global minimum light level of 'n' across the whole map. This is an easy way to eliminate completely dark areas of the level, however you may lose some contrast as a result, so use with care. Default 0" _sunlight(integer) : "Sunlight" : 0 : "Set the brightness of the sunlight coming from an unseen sun in the sky. Sky brushes (or more accurately bsp leafs with sky contents) will emit sunlight at an angle specified by the _sun_mangle key. Default 0" _sun_mangle(string) : "Sun mangle (Yaw pitch roll)" : "0 -90 0" : "Specifies the direction of sunlight using yaw(x), pitch(y) and roll(z) in degrees. Yaw specifies the angle around the Z-axis from 0 to 359 degrees and pitch specifies the angle from 90 (straight up) to -90 (straight down). Roll has no effect, so use any value (e.g. 0). Default is straight down (0 -90 0)" _sunlight_penumbra(integer) : "Sunlight penumbra in degrees" : 0 : "Specifies the penumbra width, in degrees, of sunlight. Useful values are 3-4 for a gentle soft edge, or 10-20+ for more diffuse sunlight. Default is 0" _sunlight_color(color255) : "Sunlight color R G B" : "255 255 255" : "Specify red(r), green(g) and blue(b) components for the colour of the sunlight. RGB component values are between 0 and 255 (between 0 and 1 is also accepted). Default is white light (255 255 255)" _sunlight2(integer) : "Sunlight 2 brightness" : 0 : "Set the brightness of a large dome of lights positioned around the map (16K unit radius). Useful for simulating higly diffused light (e.g. cloudy skies) in outdoor areas. Default 0" _sunlight2_color(color255) : "Sunlight 2 color R G B" : "255 255 255" : "Specifies the colour of _sunlight2, same format as _sunlight_color. Default is white light (255 255 255)" _sunlight3(integer) : "Sunlight 3 brightness" : 0 : "Same as _sunlight2 but creates lights on the bottom hemisphere. Default 0" _sunlight3_color(color255) : "Sunlight 3 color R G B" : "255 255 255" : "Specifies the colour of _sunlight3, same format as _sunlight_color. Default is white light (255 255 255)" _dist(integer) : "Global light scale" : 1 : "Scales the fade distance of all lights by a factor of n. If n is more than 1 lights fade more quickly with distance and if n is less than 1, lights fade more slowly with distance and light reaches further" _range(float) : "Global light range" : "0.5" : "Scales the brightness range of all lights without affecting their fade discance. Values of n more than 0.5 makes lights brighter and n less than 0.5 makes lights less bright. The same effect can be achieved on individual lights by adjusting both the 'light' and 'wait' attributes" _anglescale(float) : "Light angle scale" : "0.5" : "Sets a scaling factor for how much influence the angle of incidence of sunlight on a surface has on the brightness of the surface. n must be between 0.0 and 1.0. Smaller values mean less attenuation, with zero meaning that angle of incidence has no effect at all on the brightness. Default 0.5" _dirt(integer) : "Dirt mapping (AO)" : -1 : "1 enables dirtmapping (ambient occlusion) on all lights, borrowed from q3map2. This adds shadows to corners and crevices. You can override the global setting for specific lights with the _dirt light entity key or _sunlight_dirt, _sunlight2_dirt, and _minlight_dirt worldspawn keys. Default is no dirtmapping (-1)" _sunlight_dirt(integer) : "Sunlight dirt" : -1 : "1 enables dirtmapping (ambient occlusion) on sunlight, -1 to disable (making it illuminate the dirtmapping shadows). Default is to use the value of '_dirt'" _sunlight2_dirt(integer) : "Sublight 2 dirt" : -1 : "1 enables dirtmapping (ambient occlusion) on sunlight2, -1 to disable. Default is to use the value of '_dirt'" _minlight_dirt(integer) : "Minlight dirt" : -1 : "1 enables dirtmapping (ambient occlusion) on minlight, -1 to disable. Default is to use the value of '_dirt'" _dirtmode(integer) : "Dirt mode" : 0 : "Choose between ordered (0, default) and randomized (1) dirtmapping." _dirtdepth(integer) : "Dirt depth" : 128 : "Maximum depth of occlusion checking for dirtmapping, default 128." _dirtscale(integer) : "Dirt scale" : 1 : "Scale factor used in dirt calculations, default 1. Lower values (e.g. 0.5) make the dirt fainter, 2.0 would create much darker shadows" _dirtgain(integer) : "Dirt gain" : 1 : "Exponent used in dirt calculation, default 1. Lower values (e.g. 0.5) make the shadows darker and stretch further away from corners" _gamma(integer) : "Lightmap gamma" : 1 : "Adjust brightness of final lightmap. Default 1, >1 is brighter, <1 is darker" ] // // base marker definitions // @baseclass = Appearflags [ spawnflags(Flags) = [ 256 : "Not in Easy" : 0 512 : "Not in Normal" : 0 1024 : "Not in Hard" : 0 2048 : "Not in Deathmatch" : 0 ] ] @baseclass = Targetname [ targetname(target_source) : "Name" ] @baseclass = Target [ target(target_destination) : "Target" ] @baseclass = ModelLight [ _minlight(integer) : "Min light" : : "Set the minimum light level for any surface of the brush model. Default 0" _mincolor(color255) : "Min light color R G B" : "255 255 255" : "Specify red(r), green(g) and blue(b) components for the colour of the minlight. RGB component values are between 0 and 255 (between 0 and 1 is also accepted). Default is white light (255 255 255)" _shadow(integer) : "Shadows" : : "If n is 1, this model will cast shadows on other models and itself (i.e. '_shadow' implies '_shadowself'). Note that this doesn’t magically give Quake dynamic lighting powers, so the shadows will not move if the model moves. Func_detail ONLY - If set to -1, light will pass through this brush model. Default 0" _shadowself(integer) : "Self Shadow" : : "If n is 1, this model will cast shadows on itself if one part of the model blocks the light from another model surface. This can be a better compromise for moving models than full shadowing. Default 0" _dirt(integer) : "Dirt mapping (override)" : : "For brush models, -1 prevents dirtmapping on the brush model. Useful it the bmodel touches or sticks into the world, and you want to those ares from turning black. Default 0" _phong(choices) : "Enable Phong shading" : 0 = [ 0: "No" 1: "Yes" ] _phong_angle(integer) : "Phong shading angle" : : "Enables phong shading on faces of this model with a custom angle. Adjacent faces with normals this many degrees apart (or less) will be smoothed. Consider setting '_anglescale' to '1' on lights or worldspawn to make the effect of phong shading more visible. Use the '-phongdebug' command-line flag to save the interpolated normals to the lightmap for previewing (use 'r_lightmap 1' or 'gl_lightmaps 1' in your engine to preview.)" ] // // player starts, deathmatch, coop, teleport // @baseclass base(Appearflags) flags(Angle) size(-16 -16 -24, 16 16 32) offset(0 0 24) color(0 255 0) = PlayerClass [] @PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] @PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] @PointClass base(PlayerClass) = info_player_start2 : "Player episode return point" [] @PointClass base(PlayerClass) = info_player_deathmatch : "DM start" [] @PointClass size(-32 -32 0, 32 32 64) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" [] @PointClass = info_null : "info_null (spotlight target)" [ targetname(target_source) : "Name" ]@PointClass = info_notnull : "info_notnull (spotlight target)" [ targetname(target_source) : "Name" use(string) : "self.use" think(string) : "self.think" nextthink(integer) : "nextthink" ] @PointClass base(Appearflags) = info_intermission : "Intermission camera" [ mangle(string) : "Mangle (Pitch Yaw Roll)" ] // // items // @baseclass = Item [ message(string) : "Message" ] @baseclass size(0 0 0, 32 32 32) color(80 0 200) base(Item, Appearflags, Target) = Ammo [ spawnflags(flags) = [ 1 : "Large box" : 0 ] ] @PointClass base(Ammo) studio("maps/b_batt0.bsp") = item_cells : "Thunderbolt ammo" [] @PointClass base(Ammo) studio("maps/b_rock0.bsp") = item_rockets : "Rockets" [] @PointClass base(Ammo) studio("maps/b_shell0.bsp") = item_shells : "Shells" [] @PointClass base(Ammo) studio("maps/b_nail0.bsp") = item_spikes : "Nailgun ammo" [] @PointClass size(-16 -16 0, 16 16 16) base(Appearflags) studio("maps/b_bh25.bsp") = item_health : "Health pak" [ spawnflags(flags) = [ 1 : "Rotten" : 0 2 : "Megahealth" : 0 ] ] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/suit.mdl") = item_artifact_envirosuit : "Environmental protection suit" [] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/quaddama.mdl") = item_artifact_super_damage : "Quad damage" [] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/invulner.mdl") = item_artifact_invulnerability : "Pentagram of Protection" [] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/invisibl.mdl") = item_artifact_invisibility : "Ring of Shadows" [] @PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) studio("progs/armor.mdl") skin(2) = item_armorInv : "200% armor (Red)" [] @PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) studio("progs/armor.mdl") skin(1) = item_armor2 : "150% armor (Yellow)" [] @PointClass size(-16 -16 -24, 16 16 32) base(Appearflags) studio("progs/armor.mdl") skin(0) = item_armor1 : "100% armor (Green)" [] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/w_s_key.mdl") = item_key1 : "Silver key" [] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/w_g_key.mdl") = item_key2 : "Gold key" [] @PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Appearflags) studio("progs/end1.mdl") = item_sigil : "Sigil" [ spawnflags(Flags) = [ 1 : "Episode 1" : 1 2 : "Episode 2" : 0 4 : "Episode 3" : 0 8 : "Episode 4" : 0 ] ] // // weaponses // @baseclass size(-16 -16 0, 16 16 32) color(0 0 200) base(Appearflags) = Weapon [] @PointClass base(Weapon) studio("progs/g_shot.mdl") = weapon_supershotgun : "Super shotgun" [] @PointClass base(Weapon) studio("progs/g_nail.mdl") = weapon_nailgun : "Nailgun" [] @PointClass base(Weapon) studio("progs/g_nail2.mdl") = weapon_supernailgun : "Perforator" [] @PointClass base(Weapon) studio("progs/g_rock.mdl") = weapon_grenadelauncher : "Grenade launcher" [] @PointClass base(Weapon) studio("progs/g_rock2.mdl") = weapon_rocketlauncher : "Rocket launcher" [] @PointClass base(Weapon) studio("progs/g_light.mdl") = weapon_lightning : "Thunderbolt" [] // // badasses // @baseclass base(Appearflags, Targetname, Target) flags(Angle) color(220 0 0) offset(0 0 24) = Monster [ spawnflags(Flags) = [ 1 : "Ambush" : 0 ] ] @PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/soldier.mdl") = monster_army : "Grunt" [] @PointClass base(Monster) size(-32 -32 -24, 32 32 40) studio("progs/dog.mdl") = monster_dog : "Nasty Doggie" [] @PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/ogre.mdl") = monster_ogre : "Ogre" [] @PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/ogre.mdl") = monster_ogre_marksman : "Ogre marksman" [] @PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/knight.mdl") = monster_knight : "Knight" [] @PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/hknight.mdl") = monster_hell_knight : "Hell knight" [] @PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/wizard.mdl") = monster_wizard : "Scrag" [] @PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/demon.mdl") = monster_demon1 : "Fiend" [] @PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/shambler.mdl") = monster_shambler : "Shambler" [] @PointClass base(Monster) size(-128 -128 -24, 128 128 256) studio("progs/boss.mdl") = monster_boss : "Chthon" [] @PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/enforcer.mdl") = monster_enforcer : "Enforcer" [] @PointClass base(Monster) size(-32 -32 -24, 32 32 48) studio("progs/shalrath.mdl") = monster_shalrath : "Shalrath" [] @PointClass base(Monster) size(32 32 48) studio("progs/tarbaby.mdl") = monster_tarbaby : "Tarbaby" [] @PointClass base(Monster) size(32 32 48) studio("progs/fish.mdl") = monster_fish : "Rotfish" [] @PointClass base(Monster) size(-16 -16 -24, 16 16 32) studio("progs/oldone.mdl") = monster_oldone : "Shub-Niggurath" [] @PointClass base(Monster) size(-16 -16 -24, 16 16 32) studio("progs/zombie.mdl") = monster_zombie : "Zombie" [ spawnflags(Flags) = [ 1 : "Crucified" : 0 2 : "Ambush" : 0 ] sequence(choices) : "Pose (editor)" = [ 0 : "Normal" 192: "Crucified" ] ] // // lights // @baseclass = Light [ light(integer) : "Brightness" : 300 : "Set the light intensity. Negative values are also allowed and will cause the entity to subtract light cast by other entities. Default 300" _color(color255) : "Light color" : "255 255 255" : "Specify red(r), green(g) and blue(b) components for the colour of the light. RGB component values are between 0 and 255 (between 0 and 1 is also accepted). Default is white light ('255 255 255')" wait(integer) : "Fade distance multiplier" : 1 : "Scale the fade distance of the light by 'n'. Values of n more than 1 make the light fade more quickly with distance, and values less than 1 make the light fade more slowly (and thus reach further). Default 1" delay(choices) : "Attenuation" : 0 : "Select an attenuation formula for the light: 0 = Linear attenuation (default). 1 = 1/x attenuation. 2 = 1/(x^2) attenuation. 3 = No attenuation (same brightness at any distance). 4 = 'local minlight' - No attenuation and like minlight, it won't raise the lighting above it's light value. Unlike minlight, it will only affect surfaces within line of sight of the entity. 5 = 1/(x^2) attenuation, but slightly more attenuated and without the extra bright effect that 'delay 2' has near the source" = [ 0 : "Linear falloff (Default)" 1 : "Inverse distance falloff" 2 : "Inverse distance squared" 3 : "No falloff" 4 : "Local minlight" 5 : "Inverse distance 2" ] mangle(string) : "Spotlight direction" : : "Turns the light into a spotlight and specifies the direction of light using yaw(x), pitch(y) and roll(z) in degrees. Yaw specifies the angle around the Z-axis from 0 to 359 degrees and pitch specifies the angle from 90 (straight up) to -90 (straight down). Roll has no effect, so use any value (e.g. 0). Often easier than the 'target' method" angle(integer) : "Spotlight cone angle" : : "Specifies the angle in degrees for a spotlight cone. Default 40" style(choices) : "Appearance" = [ 0 : "Normal" 10: "Fluorescent flicker" 2 : "Slow, strong pulse" 11: "Slow pulse, noblack" 5 : "Gentle pulse" 1 : "Flicker A" 6 : "Flicker B" 3 : "Candle A" 7 : "Candle B" 8 : "Candle C" 4 : "Fast strobe" 9 : "Slow strobe" ] _softangle(integer) : "Spotlight soft angle" : 0 : "Specifies the angle in degrees for an inner spotlight cone (must be less than the 'angle' cone. Creates a softer transition between the full brightness of the inner cone to the edge of the outer cone. Default 0 (disabled)" _anglescale(integer) : "Light angle scale" : 0.5 : "Sets a scaling factor for how much influence the angle of incidence of light on a surface has on the brightness of the surface. n must be between 0.0 and 1.0. Smaller values mean less attenuation, with zero meaning that angle of incidence has no effect at all on the brightness. Default 0.5" _dirtscale(integer) : "Dirt scale (override)" : : "Override the global '_dirtscale' or '_dirtgain' settings to change how this light is affected by dirtmapping (ambient occlusion). See descriptions of these keys in the worldspawn section" _dirt(integer) : "Dirt map (override)" : : "Overrides the worldspawn setting of '_dirt' for this particular light. -1 to disable dirtmapping (ambient occlusion) for this light, making it illuminate the dirtmapping shadows. 1 to enable ambient occlusion for this light. Default is to defer to the worldspawn setting" _deviance(integer) : "Deviance" : : "Split up the light into a sphere of randomly positioned lights within radius 'n' (in world units). Useful to give shadows a wider penumbra. '_samples' specifies the number of lights in the sphere. The 'light' value is automatically scaled down for most lighting formulas (except linear and non-additive minlight) to attempt to keep the brightness equal. Default is 0, do not split up lights" _samples(integer) : "No. of Deviance lights" : : "Number of lights to use for '_deviance'. Default 16 (only used if '_deviance' is set)" _surface(string) : "Surface light texture name" : : "Makes surfaces with the given texture name emit light, by using this light as a template which is copied across those surfaces. Lights are spaced about 128 units (though possibly closer due to bsp splitting) apart and positioned 2 units above the surfaces" _surface_offset(integer) : "Surface light offset" : : "Controls the offset lights are placed above surfaces for '_surface'. Default 2" _project_texture(string) : "Name of texture being projected" : : "Specifies that a light should project this texture. The texture must be used in the map somewhere" _project_mangle(string) : "Angle of projected texture" : : "Specifies the yaw/pitch/roll angles for a texture projection (overriding mangle)" _project_fov(integer) : "fov of projected texture" : : "Specifies the fov angle for a texture projection. Default 90" _bouncestyled(integer) : "Bounce styled light?" : : "Set this to '1' to enable this styled light to bounce if you are using bounce lighting in your map" ] @PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Target, Light) iconsprite("sprites/light.spr") = light : "Invisible lightsource" [ spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] ] @PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Light) iconsprite("sprites/light.spr") = light_fluoro : "Fluorescent light" [ spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] ] @PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Light) iconsprite("sprites/light.spr") = light_fluorospark : "Sparking fluorescent light" [ spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] ] @PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, Light) sprite("progs/s_light.spr") = light_globe : "Globe light" [] @PointClass size(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light) studio("progs/flame2.mdl") sequence(1) = light_flame_large_yellow : "Large yellow flame" [] @PointClass size(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light) studio("progs/flame2.mdl") sequence(0) = light_flame_small_yellow : "Small yellow flame" [ spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] ] @PointClass size(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light) studio("progs/flame2.mdl") sequence(0) = light_flame_small_white : "Small white flame" [ spawnflags(Flags) = [ 1 : "Initially dark" : 0 ] ] @PointClass size(-10 -10 -20, 10 10 20) offset(0 0 20) base(Targetname, Light) studio("progs/flame.mdl") = light_torch_small_walltorch : "Small walltorch" [] // // misc // @PointClass base(Appearflags) = air_bubbles : "Air bubbles" [] @PointClass base(Appearflags, Targetname) = event_lightning : "Chthon's lightning" [] @PointClass base(Appearflags) = misc_fireball : "Small fireball" [ speed(integer) : "Speed" : 40 ] // // // // // NEW ERICW TOOLS POINT ENTITIES // // // // // @PointClass size(-8 -8 -8, 8 8 8) color(200 200 0) = misc_external_map : "External map prefab. each 'misc_external_map' imports brushes from an external .map file, applies rotations specified by the '_external_map_angles' key, then translates them to the 'origin' key of the 'misc_external_map' entity. Finally, the classname of the 'misc_external_map' is switched to the one provided by the mapper in the '_external_map_classname' key. (The 'origin' key is also cleared to '0 0 0' before saving the .bsp). The external .map file should consist of worldspawn brushes only, although you can use func_group for editing convenience. Brush entities are merged with the worldspawn brushes during import. All worldspawn keys, and any point entities are ignored. Currently, this means that the 'wad' key is not handled, so you need to add any texture wads required by the external .map file to your main map. Note that you can set other entity keys on the 'misc_external_map' to configure the final entity type. e.g. if you set '_external_map_classname' to 'func_door', you can also set a 'targetname' key on the 'misc_external_map', or any other keys for 'func_door'" [ _external_map(string) : "Path" : :"ABSOLUTE path to external .map file. For example 'c:\quake\myprefab.map'" _external_map_classname(string) : "Class name" : :"What entity you want the external map to turn in to. You can use internal qbsp entity types such as 'func_detail', or a regular bmodel classname like 'func_wall' or 'func_door'" _external_map_angles(string) : "Angle" : :"Rotation for the prefab, 'pitch yaw roll' format. Negative pitch is down" _external_map_angle(integer) : "Short angle" : :"Short version of '_external_map_angles' for when you want to specify just a yaw rotation" ] // // // // // END NEW ERICW TOOLS POINT ENTITIES // // // // // @PointClass studio("maps/b_explob.bsp") = misc_explobox : "Large nuclear container" [] @PointClass studio("maps/b_exbox2.bsp") = misc_explobox2 : "Small nuclear container" [] @PointClass base(Targetname) = trap_spikeshooter : "Triggered shooter" [ spawnflags(Flags) = [ 1 : "Superspike" : 0 2 : "Laser" : 0 ] ] @PointClass base(trap_spikeshooter) = trap_shooter : "Continuous shooter" [] // // ambient sounds // @PointClass = ambient_drip : "Dripping sound" [] @PointClass = ambient_drone : "Engine/machinery sound" [] @PointClass = ambient_comp_hum : "Computer background sounds" [] @PointClass = ambient_flouro_buzz : "Fluorescent buzzing sound" [] @PointClass = ambient_light_buzz : "Buzzing sound from light" [] @PointClass = ambient_suck_wind : "Wind sound" [] @PointClass = ambient_swamp1 : "Frogs croaking" [] @PointClass = ambient_swamp2 : "Frogs croaking B" [] @PointClass = ambient_thunder : "Thunder sound" [] // // moving things // @baseclass base(Appearflags, Targetname, Target, ModelLight) = Door [ speed(integer) : "Speed" : 100 sounds(choices) : "Sound" : 0 = [ 1: "Stone" 2: "Machine" 3: "Stone Chain" 4: "Screechy Metal" ] wait(choices) : "Delay before close" : 4 = [ -1 : "Stays open" ] lip(integer) : "Lip" : 8 dmg(integer) : "Damage inflicted when blocked" : 0 message(string) : "Message if triggered" health(integer) : "Health (shoot open)" : 0 ] @SolidClass base(Door) = func_door : "Basic door" [ spawnflags(flags) = [ 1 : "Starts Open" : 0 4 : "Don't link" : 0 8 : "Gold Key required" : 0 16: "Silver Key required" : 0 32: "Toggle" : 0 ] ] @SolidClass base(Appearflags, Targetname, ModelLight) = func_door_secret : "Triggered door" [ t_width(integer) : "First move lenght" t_length(integer) : "Second move lenght" dmg(integer) : "Damage when blocked" : 2 wait(choices) : "Time before close" : 2 = [ -1 : "Stay open" ] sounds(choices) : "Sounds" : 3 = [ 1: "Medieval" 2: "Metal" 3: "Base" ] spawnflags(flags) = [ 1 : "Open once only" : 0 2 : "Moves left first" : 0 4 : "Moves down first" : 0 8 : "Not shootable" : 0 16 : "Always shootable" : 0 ] ] @SolidClass base(Targetname, Appearflags, ModelLight) = func_wall : "Wall" [] // // // // // NEW ERICW TOOLS BRUSH ENTITIES // // // // // @SolidClass color(128 128 230)base(ModelLight) = func_detail : "Detail brush. Ignored by vis so can speed up compile times consideratbly. Also allows you to set new compiler lighting options on brushes. DOES NOT SEAL MAPS FROM VOID" [] @SolidClass color(128 128 230)base(ModelLight) = func_detail_illusionary : "func_detail variant with no collision (players / monsters / gunfire) and doesn't split world faces. Doesn't cast shadows unless enabled with _shadow 1. Useful for hanging vines. Still creates BSP leafs." [] @SolidClass color(128 128 230)base(ModelLight) = func_detail_wall : "func_detail variant that doesn't split world faces. Useful for when you want a decoration touching a floor or wall to not split the floor - wall faces (you'll get some overdraw instead.) If it completely covers up a world face, that face will get clipped away, so it's not suitable for fence textures; see func_detail_fence instead" [] @SolidClass color(128 128 230)base(ModelLight) = func_detail_fence : "Similar to func_detail_wall except it's suitable for fence textures, never clips away world faces. Useful for fences, grates, etc., that are solid and block gunfire" [] @SolidClass base(ModelLight) = func_group : "Brush group. Is treated by qbsp as world brushes but allows you to add light shading settings. _dirt and _shadow currently only accept -1 as a valid setting for func_group" [] // // // // // END OF NEW ERICW TOOLS BRUSH ENTITIES // // // // // @SolidClass = func_illusionary : "Solids that can be walked through" [] @SolidClass base(Targetname, ModelLight) = func_button : "Button" [ speed(integer) : "Speed" : 40 lip(integer) : "Lip" : 4 target(target_source) : "Targetted object" health(integer) : "Health (shootable if > 0)" sounds(choices) : "Sounds" = [ 0 : "Steam metal" 1 : "Wooden clunk" 2 : "Metallic clink" 3 : "In-out" ] wait(integer) : "Delay before reset" : 1 delay(string) : "Delay before trigger" message(string) : "Message" ] @SolidClass base(Targetname, ModelLight) = func_train : "Moving platform" [ sounds(choices) : "Sound" : 1 = [ 0: "None" 1: "Ratchet Metal" ] speed(integer) : "Speed (units per second)" : 64 target(target_source) : "First stop target" dmg(integer) : "Damage on crush" : 0 ] @PointClass base(Targetname) size(16 16 16) = path_corner : "Moving platform stop" [ target(target_source) : "Next stop target" wait(integer) : "Wait" : 0 ] @SolidClass base(Targetname, ModelLight) = func_plat : "Elevator" [ spawnflags(Flags) = [ 1 : "Low trigger" : 0 ] speed(integer) : "Speed" : 150 height(integer) : "Travel altitude (can be negative)" : 0 sounds(choices) : "Sound group" : 1 = [ 0: "None" 1: "Base fast" 2: "Chain Slow" ] ] @SolidClass base(ModelLight) = func_episodegate : "Episode Gate" [ spawnflags(Flags) = [ 1 : "Episode 1" : 1 2 : "Episode 2" : 0 4 : "Episode 3" : 0 8 : "Episode 4" : 0 ] ] @SolidClass base(ModelLight) = func_bossgate : "Boss gate" [] // // triggers // @baseclass base(Target, Targetname) = Trigger [ killtarget(target_source) : "Kill target" sounds(choices) : "Sound style" : 0 = [ 0 : "None" 1 : "Secret sound" 2 : "Beep beep" 3 : "Large switch" 4 : "Set message to text string" ] delay(integer) : "Delay before trigger" : 0 message(string) : "Message (set sound too!)" ] @SolidClass= trigger_changelevel : "Trigger: Change level" [ map(string) : "New map name" target(target_destination) : "Target" spawnflags(flags) = [ 1: "No Intermission" : 0 ] ] @SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" [ health(integer) : "Health" spawnflags(flags) = [ 1: "Entity only" : 0 ] ] @SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" [ wait(choices) : "Wait before reset" : 4 = [ -1 : "Never reset" ] health(integer) : "Health" spawnflags(flags) = [ 1: "Entity only" : 0 ] ] @SolidClass base(Trigger) = trigger_onlyregistered : "Trigger: Registered only" [ spawnflags(flags) = [ 1: "Entity only" : 0 ] ] @SolidClass base(Trigger) = trigger_secret : "Trigger: Secret" [ sounds(choices) : "Sound style" : 1 = [ 0 : "None" 1 : "Secret sound" 2 : "Beep beep" 3 : "Large switch" 4 : "Set message to text string" ] spawnflags(flags) = [ 1: "Entity only" : 0 ] ] @SolidClass base(Target, Targetname) = trigger_teleport : "Trigger teleport" [ spawnflags(Flags) = [ 1 : "Player only" : 0 2 : "Silent" : 0 ] ] // need updates: @SolidClass = trigger_setskill : "Trigger set skill" [ message(choices) : "Skill to change to" : 1 = [ 0 : "Easy" 1 : "Medium" 2 : "Hard" 3 : "Nightmare!" ] ] @PointClass base(Trigger) = trigger_relay : "Trigger relay" [ ] @SolidClass base(Targetname) = trigger_monsterjump : "Trigger monster jump" [ speed(integer) : "Jump Speed" : 200 height(integer) : "Jump Height" : 200 ] @PointClass base(Target, Targetname) = trigger_counter : "Trigger counter" [ spawnflags(flags) = [ 1: "No Message" : 0 ] count(integer) : "Count before activation" : 2 ] @SolidClass base(Targetname) = trigger_push : "Trigger player push" [ spawnflags(flags) = [ 1: "Once Only" : 0 ] speed(integer) : "Speed of push" : 1000 ] @SolidClass base(Targetname) = trigger_hurt : "Trigger player hurt" [ dmg(integer) : "Damage" : 5 wait(integer) : "Delay before reset" message(string) : "Message" ]