Skip to content

Instantly share code, notes, and snippets.

@ItEndsWithTens
Last active April 25, 2023 14:16
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ItEndsWithTens/200c881f2522af324767be1433c4391e to your computer and use it in GitHub Desktop.
Save ItEndsWithTens/200c881f2522af324767be1433c4391e to your computer and use it in GitHub Desktop.
A J.A.C.K.-compatible FGD for Quoth 2.2, with support for EricW's branch of tyrutils
//
// Quoth 2.2 game definition file (.fgd)
// for J.A.C.K. 1.1 and above
//
// Quoth:
// https://tomeofpreach.wordpress.com/quoth/
//
// EricW's branch of tyrutils:
// http://ericwa.github.io/tyrutils-ericw/
// This file was built from:
// quoth2.fgd, by Preach : andrew.denner@btinternet.com
// quake4ericwTools.fgd, by Daz : http://youtube.com/darrenweekes
//
// Files combined by Rob Martens : robert.martens@gmail.com : http://www.gyroshot.com
//
// Tested with J.A.C.K. version 1.1.1064
// August 17th, 2016
//
// Original headers follow:
//
// From quoth2.fgd, for Quoth 2.2:
//
// Quoth game definition file (.fgd)
// for Worldcraft 1.6 and above
//
//
// Quoth additions by Preach(andrew.denner@btinternet.com)
// From the base quake.fgd from CZG
//
//
// From quake4ericwTools.fgd, for EricW's updated tyrutils:
//
// 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 6.1
// Tested with Jackhammer 1.1.700 beta
//
//
// worldspawn
//
@SolidClass = worldspawn : "World entity"
[
message(string) : "Text on entering the world"
worldtype(choices) : "Ambience" : 0 =
[
0 : "Medieval"
1 : "Runic (metal)"
2 : "Present (base)"
3 : "Elder"
]
sounds(integer) : "CD track to play" : 1
gravity(integer) : "Set gravity for this level (default 800)"
keep_keys(choices) : "Player retains keys between levels" : 0 =
[
0 : "Keys are lost, as usual"
1 : "Send keys to next map, don't get keys from previous map"
2 : "Get keys from previous map, don't send over to next map "
3 : "Send and get keys"
]
lose_items(choices) : "Player's inventory" : 0 =
[
0 : "Player keeps weapons, ammo and health"
1 : "Player is reset to shotgun, 25 shells, 100 health"
]
aflag(integer) : "Enable optimisations(see tutorial for details)"
sky(string) : "Set a skybox"
corpse_time(choices) : "Corpse removal delay" : 0 =
[
-1 : "Corpses stay"
]
noise1(string) : "Triggered ambient 1"
noise2(string) : "Triggered ambient 2"
noise3(string) : "Triggered ambient 3"
noise4(string) : "Triggered ambient 4"
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) : "Sun 1 brightness" : 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 1 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) : "Sun 1 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) : "Sun 1 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) : "Sun 1 top fill 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) : "Sun 1 top fill 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) : "Sun 1 bottom fill brightness" : 0 : "Same as _sunlight2 but creates lights on the bottom hemisphere. Default 0"
_sunlight3_color(color255) : "Sun 1 bottom fill 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) : "Sun 1 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) : "Sun 1 top fill 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"
_bounce(integer) : "Bounce" : : "Enables 1 bounce."
_bouncescale(string) : "Bounce scale" : "1" : "Scales brightness of bounce lighting, default 1."
_bouncecolorscale(string) : "Bounce color scale" : "0" : "Weight for bounce lighting to use texture colors from the map: 0=ignore map textures (default), 1=multiply bounce light color by texture color."
_sun2(integer) : "Sun 2 brightness" : 0 : "Set the brightness of the sunlight coming from a second unseen sun in the sky. Sky brushes (or more accurately bsp leafs with sky contents) will emit sunlight at an angle specified by the _sun2_mangle key. Default 0"
_sun2_mangle(string) : "Sun 2 mangle (Yaw pitch roll)" : "0 90 0" : "Specifies the direction of the second sun's 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). Default is straight down (0 -90 0)"
_sun2_color(color255) : "Sun 2 color R G B" : "255 255 255" : "Specify red(r), green(g) and blue(b) components for the colour of the second sun's light. RGB component values are between 0 and 255 (between 0 and 1 is also accepted). Default is white light (255 255 255)"
]
//
// 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
]
quothflags(choices) : "Coopflags" : 0 =
[
0 : "(no coop flags)"
4096 : "Not in coop"
8192 : "Only in coop"
]
]
@BaseClass = Targetname [ targetname(target_source) : "Name" ]
@BaseClass = Target [
target(target_destination) : "Target"
killtarget(target_destination) : "Killtarget"
message(string) : "Message on trigger"
delay(string) : "Delay before trigger"
]
@BaseClass base(Targetname, Target) = AllTargets [
targetname2(target_destination) : "2nd Name"
targetname3(target_destination) : "3rd Name"
targetname4(target_destination) : "4th Name"
target2(target_destination) : "2nd Target"
target3(target_destination) : "3rd Target"
target4(target_destination) : "4th Target"
killtarget2(target_destination) : "Extra Killtarget"
]
@BaseClass = ModelLight
[
_minlight(integer) : "Min light" : 0 : "Set the minimum light level for any surface of the brush model. Default 0"
_minlight_exclude(string) : "Min light exclude" : "" : "Faces with the given texture are excluded from receiving minlight on this brush model."
_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" : 0 : "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. Default 0"
_shadowself(integer) : "Self Shadow" : 0 : "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)" : 0 : "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(integer) : "Phong shading" : 0 : "1 enables phong shading on this model with a default _phong_angle of 89 (softens columns etc)."
_phong_angle(integer) : "Phong angle" : 89 : "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) studio("progs/player.mdl") = 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"
]
//info_notnull is not defined, to allow both Brush and Point entities to be created without issue
@PointClass base(Appearflags, Target, Targetname) = info_logic_insolid : "Test point is in solid" []
@PointClass base(Appearflags, Target, Targetname) = info_logic_inopen : "Test point is in open" []
@PointClass base(Appearflags, AllTargets) = info_logic_random : "Trigger targets at random" [
chance(string) : "Activation probability"
spawnflags(Flags) =
[
1 : "Branch" : 0
]
]
@PointClass base(Appearflags, Target) = info_gug_seismometer: "Detect earthquakes from gugs"
[
health(string): "Threshold of damage to trigger"
]
@PointClass base(Appearflags) = info_intermission : "Intermission camera"
[
mangle(string) : "Mangle (Pitch Yaw Roll)"
message(string) : "Finale Text"
]
@BaseClass = Deathtype [
deathtype(string) : "Obituary message"
]
//
// items
//
@BaseClass base(Target, Targetname) = Item
[
ritem(choices) : "Respawning" : 0 =
[
0 : "Respawning off"
1 : "Respawning on"
]
respawndelay(integer) : "Respawn delay"
respawncount(integer) : "Respawn count"
]
@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(Item, Appearflags) studio("progs/suit.mdl") =
item_artifact_envirosuit : "Environmental protection suit" []
@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Item, Appearflags) studio("progs/quaddama.mdl") =
item_artifact_super_damage : "Quad damage" []
@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Item, Appearflags) studio("progs/invulner.mdl") =
item_artifact_invulnerability : "Pentagram of Protection" []
@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Item, Appearflags) studio("progs/invisibl.mdl") =
item_artifact_invisibility : "Ring of Shadows" []
@PointClass base(Item, Appearflags) studio("progs/cross.mdl") =
item_artifact_cross : "Cross of Deflection" []
@PointClass base(Item, Appearflags) studio("progs/trinity.mdl") =
item_artifact_trinity : "Trinity" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) studio("progs/armor.mdl") skin(2) =
item_armorInv : "200% armor (Red)" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) studio("progs/armor.mdl") skin(1) =
item_armor2 : "150% armor (Yellow)" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, 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(Item, Appearflags) studio("progs/w_s_key.mdl") =
item_key1 : "Silver key" []
@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Item, Appearflags) studio("progs/w_g_key.mdl") =
item_key2 : "Gold key" []
@PointClass size(-16 -16 -24, 16 16 32) offset(0 0 24) base(Item, 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
]
]
@PointClass base(Item, Appearflags) studio("progs/flashlight.mdl") =
item_flashlight : "Flashlight" []
//
// weaponses
//
@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Item, 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" []
@PointClass base(Weapon) studio("progs/g_ham.mdl") = weapon_hammer : "Warhammer" []
@PointClass base(Weapon) studio("progs/g_lance.mdl") = weapon_plasmagun : "Plasma Gun" []
@PointClass base(Weapon) studio("progs/g_bomb.mdl") = weapon_bomb : "The Bomb" []
//
// badasses
//
@BaseClass base(Appearflags, Targetname, Target) flags(Angle) color(220 0 0) offset(0 0 24) = Monster
[
spawnflags(Flags) =
[
1 : "Ambush" : 0
32 : "Teleport Silently" : 0
64 : "Teleport Spawn" : 0
128 : "Alert When Teleported" : 0
]
spawndelay(choices) : "Spawn Delay" : 0 =
[
-1 : "Short random delay"
]
corpse_time(choices) : "Corpse removal delay" : 0 =
[
-1 : "Corpses stay"
]
]
@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"
]
]
//quoth monsters
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/bob.mdl") = monster_bob : "Bob" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/soldier.mdl") skin(1) = monster_army_rocket : "Rocketeer" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/enforcer.mdl") skin(1) = monster_defender: "Defender" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/enforcer.mdl") skin(2) = monster_pyro: "Pyro" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/enforcer.mdl") skin(3) = monster_eliminator: "Eliminator" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/scor.mdl") = monster_scourge: "Centroid" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/sentinel.mdl") = monster_sentinel: "Sentinel"
[
spawnflags(Flags) =
[
4 : "Nail sentinel" : 0
]
]
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/edie.mdl") = monster_edie: "Edie" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/ogre.mdl") skin(1) = monster_ogre_flak: "Flak Ogre" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 32) studio("progs/voreling.mdl") = monster_voreling: "Voreling"
[
dangle(choices) : "Dangling" : 0 =
[
0 : "On floor"
1 : "On ceiling"
]
]
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/polyp.mdl") = monster_polyp: "Polyp"
[
startonground(choices) : "Starting pose" : 0 =
[
0 : "Flying"
1 : "On ground"
]
]
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/hknight.mdl") = monster_death_knight : "Death knight" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/dguard.mdl") = monster_death_guard : "Death guard" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) studio("progs/hknight.mdl") skin(1) = monster_death_lord : "Death lord" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/gaunt.mdl") = monster_gaunt : "Gaunt"
[
perch(choices) : "Starting pose" : 0 =
[
0 : "Flying"
1 : "On ground"
]
]
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/drole.mdl") = monster_drole: "Drole" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) studio("progs/gug.mdl") = monster_gug: "Gug" []
@PointClass base(Monster) size(-64 -64 -448, 64 64 256) studio("progs/vermis.mdl") = monster_vermis: "Vermis"
[
coiled(choices) : "Starting pose" : 0 =
[
0 : "Full height"
1 : "Coiled up"
]
skin(choices) : "Skin effect" : 0 =
[
0 : "Regular"
1 : "Fades to black at tail"
2 : "Slime glow at tail"
3 : "Lava glow at tail"
]
]
//
// lights
//
@BaseClass color(255 255 40) = Static [
spawnflags(Flags) =
[
1 : "Force Static" : 0
2 : "Force Dynamic" : 0
]
]
@BaseClass color(255 255 40) = Grill [
spawnflags(Flags) =
[
1 : "Force Static" : 0
2 : "Solid Blocking" : 0
]
]
@BaseClass color(255 255 40) = Light [
target(target_destination) : "Target" : : "The targetname of an entity to aim at, turning this light into a spotlight. Overrides 'mangle' if both are set."
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" : 40 : "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" : 2 : "Controls the offset lights are placed above surfaces for '_surface'. Default 2"
_project_texture(string) : "Project texture" : : "Specifies that a light should project this texture. The texture must be used in the map somewhere."
_project_mangle(string) : "Project direction" : : "Specifies the yaw/pitch/roll angles for a texture projection (overriding mangle)."
_project_fov(string) : "Project FOV" : : "Specifies the fov angle for a texture projection."
]
@PointClass size(-8 -8 -8, 8 8 8) flags(Light) base(Targetname, 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(-10 -10 -12, 12 12 18) offset(0 0 12) base(Targetname, Light, Static) 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, Static) 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, Static) 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, Static) studio("progs/flame.mdl") =
light_torch_small_walltorch : "Small walltorch" []
// quoth lights
@PointClass size(-8 -8 -8, 8 8 8) base(Light, Targetname, Static) =
light_postlight : "Post light"
[
spawnflags(Flags) = [ 1 : "Initially dark" : 0 ]
color(choices) : "Colour of light object" : 0 =
[
0 : "Yellow-white"
1 : "Blue-white"
2 : "Red"
]
]
@PointClass size(-8 -8 -8, 8 8 8) base(Light, Targetname, Static) =
light_tubelight : "Tube light"
[
spawnflags(Flags) = [ 1 : "Initially dark" : 0 ]
color(choices) : "Colour of light object" : 0 =
[
0 : "Yellow-white"
1 : "Blue-white"
2 : "Red"
]
]
@PointClass size(-8 -8 -8, 8 8 8) base(Light, Targetname, Static) sprite("progs/s_light.spr") =
light_globe : "Globe light"
[
color(choices) : "Colour of globe" : 0 =
[
0 : "Gold"
1 : "Red"
2 : "Green"
3 : "Blue"
4 : "White"
5 : "Evile"
6 : "Evile zombie"
]
]
@PointClass size(-8 -8 -8, 8 8 8) base(Light, Targetname) =
light_marsh : "Marsh lights"
[
color(choices) : "Colour of globe" : 0 =
[
0 : "white ( default )"
1 : "bluish white"
2 : "blue"
3 : "green"
4 : "orange"
5 : "red"
6 : "purple"
]
]
@PointClass size(-8 -8 -48, 8 8 80) base(Light, Targetname, Static) =
light_torch_long_walltorch : "Long wall torch" []
@PointClass size(-8 -8 -16, 8 8 8) base(Light, Targetname, Static) =
light_flame_brazier_short : "Short brazier"
[
skin(choices) : "Texture" : 0 =
[
0 : "knave ( default ) "
1 : "rust "
2 : "redbrick "
3 : "copper "
4 : "altar "
5 : "wizmet"
]
]
@PointClass size(-8 -8 -64, 8 8 8) base(Light, Targetname, Static) =
light_flame_brazier_tall : "Tall brazier"
[
skin(choices) : "Texture" : 0 =
[
0 : "knave ( default ) "
1 : "rust "
2 : "redbrick "
3 : "copper "
4 : "altar "
5 : "wizmet"
]
]
@PointClass size(-8 -8 -8, 8 8 8) base(Static, Appearflags) = mapobject_custom: "Custom mapobject"
[
model(string) : "Model"
frame(integer) : "Frame"
skin(string) : "Skin"
mangle(string) : "Angles(overrides angle above)"
]
@PointClass size(-8 -8 -8, 8 8 8) base(Static, Targetname, Appearflags) studio("progs/waterfall.mdl") = mapobject_waterfall: "Waterfall mapobject"
[
skin(choices) : "Skin": 0 =
[
0 : "Clean water"
1 : "Dirty water"
2 : "Slime"
3 : "Blood"
4 : "Lava"
]
frame(integer) : "Initial frame"
mangle(string) : "Angles(overrides angle above)"
sounds(choices) : "Sound effects": 0 =
[
0 : "Sounds Off"
1 : "Sounds On"
]
noise(string) : "Custom active sound"
noise1(string) : "Custom stop sound"
speed(integer) : "Attenuation of sound" : 0
volume(integer) : "Volume (0 - 1)"
spawnflags(flags) =
[
1 : "Initially dry" : 0
]
]
@PointClass size(-8 -8 -8, 8 8 8) base(Grill, Appearflags) = mapobject_grill: "Custom grill mapobject"
[
model(string) : "Model"
frame(string) : "Frame"
mangle(string) : "Angles(overrides angle above)"
]
@PointClass size(-8 -8 -8, 8 8 8) base(Grill, Appearflags) sprite("progs/grill128.spr") = mapobject_grill128: "128 unit grill mapobject"
[
frame(choices) : "Frame": 0 =
[
0 : "Red idbase grill"
1 : "Dark idbase grill"
2 : "Rusty idbase grill"
3 : "Pale idbase grill"
4 : "Large vent grid"
5 : "Large vent - horizontal bars"
6 : "Slimy brown floor grills"
7 : "Wizmet medium grid panels"
8 : "Wizmet fine grid panels"
9 : "Fury square floor panels"
10 : "Fury small floor panels"
11 : "Copper floor panels"
12 : "Copper floor grill"
13 : "Copper grill with warning trim"
14 : "Rusted diagonal wire mesh"
15 : "Beaten diagonal wire mesh"
16 : "Bright square wire mesh"
17 : "Stained square wire mesh"
18 : "Warning pattern wire mesh"
19 : "Rusted square wire mesh"
20 : "Knave steel strut pattern"
22 : "Knave gold strut pattern"
24 : "Knave rust strut pattern"
26 : "Knave red strut pattern"
28 : "Knave blue strut pattern"
]
mangle(string) : "Angles(overrides angle above)"
]
@PointClass size(-8 -8 -8, 8 8 8) base(Grill, Appearflags) sprite("progs/grill64.spr") = mapobject_grill64: "64 unit grill mapobject"
[
frame(choices) : "Frame": 0 =
[
0 : "Red idbase grill"
1 : "Dark idbase grill"
2 : "Rusty idbase grill"
3 : "Pale idbase grill"
4 : "Small vent grid"
5 : "Small vent - horizontal bars"
6 : "Slimy brown floor grills"
7 : "Wizmet medium grid panels"
8 : "Wizmet fine grid panels"
9 : "Fury square floor panels"
10 : "Fury small floor panels"
11 : "Copper floor panels"
12 : "Copper floor grill"
13 : "Copper grill with warning trim"
14 : "Rusted diagonal wire mesh"
15 : "Beaten diagonal wire mesh"
16 : "Bright square wire mesh"
17 : "Stained square wire mesh"
18 : "Warning pattern wire mesh"
19 : "Rusted square wire mesh"
20 : "Knave steel strut pattern"
21 : "Knave steel pentagram"
22 : "Knave gold strut pattern"
23 : "Knave gold pentagram"
24 : "Knave rust strut pattern"
25 : "Knave rust pentagram"
26 : "Knave red strut pattern"
27 : "Knave red pentagram"
28 : "Knave blue strut pattern"
29 : "Knave blue pentagram"
]
mangle(string) : "Angles(overrides angle above)"
]
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 40) studio("progs/corpse_imp.mdl") = corpse_crucified1 : "Corpse(crucified)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 40) studio("progs/corpse_imp.mdl") = corpse_crucified2 : "Corpse(crucified,headless)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_lynch.mdl") = corpse_lynched1 : "Corpse(lynched,clothed)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_lynch.mdl") = corpse_lynched2 : "Corpse(lynched)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_lynch.mdl") = corpse_lynched3 : "Corpse(lynched,eaten)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_flay.mdl") = corpse_flayed1 : "Corpse(flayed,clothed)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_flay.mdl") = corpse_flayed2 : "Corpse(flayed)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_flay.mdl") = corpse_flayed3 : "Corpse(flayed,eaten)" []
@PointClass base(Static, Appearflags) size(-16 -16 -96, 16 16 0) studio("progs/corpse_flay.mdl") = corpse_flayed4 : "Corpse(flayed,broken leg)" []
@PointClass base(Static, Appearflags) size(-32 -32 -40, 32 32 0) studio("progs/corpse_imp.mdl") = corpse_impaled_back1 : "Corpse(impaled in back,clothed)" []
@PointClass base(Static, Appearflags) size(-32 -32 -40, 32 32 0) studio("progs/corpse_imp.mdl") = corpse_impaled_back2 : "Corpse(impaled in back)" []
@PointClass base(Static, Appearflags) size(-32 -32 -40, 32 32 0) studio("progs/corpse_imp.mdl") = corpse_impaled_back3 : "Corpse(impaled in back,eaten)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") = corpse_impaled_front1 : "Corpse(impaled in front,clothed)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") = corpse_impaled_front2 : "Corpse(impaled in front)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") = corpse_impaled_front3 : "Corpse(impaled in front,eaten)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_horizontal1 : "Corpse(impaled horizontal,clothed)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_horizontal2 : "Corpse(impaled horizontal)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_horizontal3 : "Corpse(impaled horizontal,nibbled)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_horizontal4 : "Corpse(impaled horizontal,eaten)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_vertical1 : "Corpse(impaled vertical,clothed)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_vertical2 : "Corpse(impaled vertical)" []
@PointClass base(Static, Appearflags) size(-16 -16 -24, 16 16 16) studio("progs/corpse_imp.mdl") =
corpse_impaled_vertical3 : "Corpse(impaled vertical,eaten)" []
//
// 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 ]
@PointClass size(0 0 0, 32 32 64) studio("maps/b_explob.bsp") = misc_explobox : "Large nuclear container" []
@PointClass size(0 0 0, 32 32 32) studio("maps/b_exbox2.bsp") = misc_explobox2 : "Small nuclear container" []
@PointClass size(0 0 0, 32 32 64) studio("progs/b_bio_l.bsp") = misc_biobox_l : "Large bio-waste container" []
@PointClass size(0 0 0, 32 32 32) studio("progs/b_bio_s.bsp") = misc_biobox_s : "Small bio-waste container" []
@PointClass size(0 0 0, 32 32 64) studio("progs/b_plas_l.bsp") = misc_plasmabox_l : "Large plasma container" []
@PointClass size(0 0 0, 32 32 32) studio("progs/b_plas_s.bsp") = misc_plasmabox_s : "Small plasma 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" []
@PointClass = ambient_generalpurpose : "Custom ambient sound"
[
noise(string) : "Sound file to play"
speed(integer) : "Attenuation of sound" : 0
volume(integer) : "Volume (0 - 1)"
]
@PointClass base( Targetname, Appearflags) = play_sound_triggered : "Custom sound trigger"
[
noise(string) : "Sound file to play"
speed(integer) : "Attenuation of sound" : 0
volume(integer) : "Volume (0 - 1)"
impulse(integer) : "Channel"
wait(integer) : "Wait before retrigger" : 0
]
@PointClass base( Targetname, Appearflags) = play_sound : "Repeated custom sound"
[
noise(string) : "Sound file to play"
speed(integer) : "Attenuation of sound" : 0
volume(integer) : "Volume (0 - 1)"
impulse(integer) : "Channel"
wait(integer) : "Random time between sounds" : 0
delay(integer) : "Minimum time between sounds" : 2
]
// As of version 1.1.1064, J.A.C.K.'s approach to combining base classes when
// using multiple inheritance is to override elements instead of merge them. One
// result of this is that you can't combine spawnflags, since earlier base
// classes' spawnflags block replaces later ones' entirely. For example,
// info_command formerly derived from Appearflags, Targetname, and Command. In
// the Object Properties' Flags tab, however, you'd only see Appearflags. Since
// there were only a few things using the Command base class, it's been removed.
@PointClass base(Appearflags, Targetname) = info_command : "Target-fired command to clients"
[
message(string) : "Console command"
spawnflags(Flags) =
[
2 : "Command only to activator" : 0
4 : "Set as 'onload command' on use" : 0
]
]
@SolidClass base(Appearflags) = trigger_command : "Trigger: Command to clients"
[
message(string) : "Console command"
spawnflags(Flags) =
[
2 : "Command only to activator" : 0
4 : "Set as 'onload command' on use" : 0
]
]
@PointClass base(Appearflags) = info_command_spawn : "Command to clients on spawn"
[
message(string) : "Console command"
]
@SolidClass base(Appearflags) = trigger_command_contact : "Trigger: Command on entry"
[
message(string) : "Console command"
spawnflags(Flags) =
[
4 : "Set as 'onload command' on use" : 0
]
]
@PointClass base (Appearflags, Targetname) = info_command_server : "Target-fired command to server"
[
message(string) : "Console command"
]
@PointClass base (Appearflags, Targetname) = info_bomb : "Triggered explosion"[]
@PointClass base (Appearflags, Targetname) = info_effect_pulse : "Pulses of lights"
[
mangle(string) : "Angles (override)"
speed(integer) : "Speed"
wait(choices) : "Wait between pulses" =
[
-1 : "Does not refire"
]
]
@BaseClass = Spawner
[
spawnclassname(string) : "Desired classname"
spawnfunction(string) : "Desired classname(must match above)"
count(integer): "Number of spawns"
awake(choices) : "Monster state on spawn" : 0 =
[
0 : "Idle"
1 : "Awake"
]
]
@PointClass base (Appearflags, Targetname, Spawner) = info_multispawn : "Spawn multiple monsters"
[
wait(integer) : "Wait between spawns"
]
@PointClass base( Appearflags, Targetname, Spawner) = info_groupspawn : "Spawn monster group"
[
lip(integer) : "Gap between monsters"
t_width(integer) : "Width of row"
]
@PointClass base (Appearflags, Targetname) = info_screenshake : "Earthquake event"
[
ltime(integer) : "Duration of quake"
lip(integer) : "Frequency of shaking"
height(integer) : "Strength of quake" : 500
multiplier(integer) : "Strength multiplier" : 1
noise(string) : "Looping sound"
noise1(string) : "Ending sound"
]
@PointClass base (Appearflags, Target) = info_endgate : "Info endgate"
[
mapindex(integer) : "Map index"
spawnflags(Flags) =
[
1 : "Inverse logic" : 0
]
]
@PointClass base (info_endgate) = info_mapgate : "Info mapgate" []
@PointClass base (Appearflags, Targetname, Deathtype) = info_trap : "Custom shooter"
[
preset(choices) : "Preset" : 0 =
[
0 : "No preset"
1 : "Player Rockets"
2 : "Player Grenades"
3 : "Player Plasma"
4 : "Player Nails"
5 : "Player Super Nails"
]
target(string) : "Target to fire towards"
modelpath(string) : "Projectile model"
wait(integer) : "Wait between shots"
delay(integer) : "Delay for first shot" : 0
speed(integer) : "Projectile speed" : 600
mindamage(integer) : "Minimum projectile damage" : 20
maxdamage(integer) : "Maximum projectile damage"
dmg(integer) : "Radius of blast" : 0
duration(integer) : "Projectile fuse" : 5
style(choices) : "Projectile flight" : 0 =
[
0 : "Flying"
1 : "Ballistic (Explode on Impact)"
2 : "Bounce (grenade)"
]
noise(string) : "Firing sound"
noise1(string) : "Impact sound"
noise2(string) : "Bounce sound(grenade only)"
tracking(choices) : "Projectile tracking" : 0 =
[
0 : "None"
1 : "Vore style"
2 : "Death Lord/Rocketeer style"
]
multiplier(integer) : "Func_breakable damage multiplier"
flashlight(choices) : "Projectile glow" : 0 =
[
0 : "Glow off"
1 : "Glow on"
]
]
@PointClass base (Appearflags, Targetname, Deathtype) = trap_lightning_triggered : "Triggered Lightning Trap"
[
target(string) : "Target to fire towards"
duration(string) : "Beam duration" : "0.1" //daft thing doesn't have a sensible number class, so fractions are strings...
dmg(integer) : "Damage" : 30
noise(string) : "Firing sound"
style(choices) : "Beam type" : 0 =
[
0 : "Thinner beam"
1 : "Wider beam"
]
spawnflags(flags) =
[
1 : "Boom" : 0
]
]
@BaseClass = Breakable [
preset(choices): "Preset" : 0 =
[
0 : "Rock"
1 : "Wood"
2 : "Flesh"
3 : "Machine"
4 : "Glass"
5 : "Brick(8 unit)"
6 : "Brick(16 unit)"
7 : "Brick(32 unit)"
8 : "Metal"
9 : "Circuitboard"
]
ritem(choices): "Skin(rock.wood.glass.brick.metal)" =
[
0: "Ochre.Medi.Gray.Wiz.Cr8top"
1: "Moss.Driftwood.Dark.Cityochre.Cr8side"
2: "Cobalt.Rotten.Bone.Ctyred.panel"
3: "Black.Cord.Sepia.Ctycrack.Tech09"
4: "Earth.Pine.Brown.Ctygreen.Idbase"
5: "Grave.Red_wiz.Ale.IKBlue.Compbrown"
6: "Red.Dark_wiz.Bottle.P_blue.Compgrey"
7: "Grey.Crate.Green.Red.Sfloor"
8: "Rock3_7.=.Sun.Off-grey.Tech red"
9: "Rock3_8.=.Gold.Mayan.Speedbase"
10:"Mayan.=.Orange.Grey.Mmetal1_8"
11:"Knave.=.Blood.Eggshell.Wizmet"
12:"Azfloor.=.Crimson.=.Wizmet blue"
13:"'crete.=.Blue.=.Wizmet green"
14:"Ice. = .Sapphire. = .Dark copper"
15:"White. = . = . = .Light copper"
16:"=.=.=.=.Metal5_8"
17:"=.=.=.=.Metal4_5"
18:"=.=.=.=.Metal4_4"
19:"=.=.=.=.Metal2_4"
20:"=.=.=.=.Mmetal1_1"
21:"=.=.=.=.Cop1_3"
22:"=.=.=.=.Cop1_6"
23:"=.=.=.=.Metal1_2"
24:"=.=.=.=.Knave bronze"
25:"=.=.=.=.Knave rust"
26:"=.=.=.=.Weathered tin"
27:"=.=.=.=.Circuits(olive)"
28:"=.=.=.=.Circuits(sea-green)"
]
count(integer) : "Number of fragments"
health(integer) : "Health"
noise(choices) : "Breaking sound" =
[
"" : "Preset default"
"impact/wood_bk.wav" : "Wood crack"
"player/gib.wav" : "Player gib"
"impact/mach_bk.wav" : "Machine explosion"
"progs/glass.mdl" : "Glass shatter"
"impact/rockbrk.wav" : "Rock crumble"
"impact/metal_bk.wav" : "Metal shearing"
]
noise1(choices) : "Bounce sound 1" =
[
"" : "Preset default"
"impact/wood_i1.wav" : "Wood1"
"zombie/z_miss.wav" : "Flesh1"
"impact/glass_i1.wav" : "Glass1"
"impact/rock1.wav" : "Rock1"
"impact/metal_i1.wav" : "Metal1"
]
noise2(choices) : "Bounce sound 2" =
[
"" : "Preset default"
"impact/wood_i2.wav" : "Wood2"
"impact/gib_i2.wav": "Flesh2"
"impact/glass_i2.wav" : "Glass2"
"impact/rock2.wav" : "Rock2"
"impact/metal_i2.wav" : "Metal2"
]
noise3(choices) : "Bounce sound 3" =
[
"" : "Preset default"
"impact/wood_i3.wav" : "Wood3"
"impact/gib_i3.wav": "Flesh3"
"impact/glass_i3.wav" : "Glass3"
"impact/rock3.wav" : "Rock3"
"impact/metal_i3.wav" : "Metal3"
]
noise4(choices) : "Bounce sound 4" =
[
"" : "Preset default"
"impact/wood_i4.wav" : "Wood4"
"impact/gib_i4.wav": "Flesh4"
"impact/glass_i4.wav" : "Glass4"
"impact/rock4.wav" : "Rock4"
"impact/metal_i4.wav" : "Metal4"
]
modelpath(string) : "Custom rubble model"
rsize(integer) : "Minimum rubble frame"
t_width(integer) : "Maximum rubble frame"
]
@BaseClass = Shadow
[
_shadow(choices) : "Shadows settings" : 1 =
[
0: "Casts no shadows"
1: "Casts shadows"
]
]
@BaseClass = Selfshadow
[
_selfshadow(choices) : "Self-shadows settings" : 1 =
[
0: "Casts no shadows"
1: "Casts shadows on itself"
]
]
@SolidClass base(Appearflags, Targetname, Breakable, Selfshadow) = func_breakable : "Breakable object"
[
spawnflags(Flags) =
[
1 : "Explosion on death" : 0
]
]
@PointClass base(Appearflags, Targetname, Breakable) = info_rubble : "Spawn rubble"
[
]
//
// moving things
//
@SolidClass base(Appearflags, Targetname, Target, Deathtype, Selfshadow) = func_door : "Basic door"
[
speed(integer) : "Speed" : 100
sounds(choices) : "Sound" : 0 =
[
0: "No sounds"
1: "Stone"
2: "Machine"
3: "Stone Chain"
4: "Screechy Metal"
5: "Custom sounds"
]
noise2(string) : "Move sound"
noise1(string) : "Stop sound"
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
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, Target, Selfshadow, ModelLight) = func_door_secret : "Triggered door"
[
t_width(integer) : "First move length"
t_length(integer) : "Second move length"
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, Shadow, ModelLight) = func_wall : "Wall" []
@SolidClass base(ModelLight) = func_detail : "Detail brush" []
@SolidClass base(Appearflags, ModelLight) = func_illusionary : "Solids that can be walked through" []
@SolidClass base(Appearflags, Targetname, Target, AllTargets, Selfshadow, 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, Selfshadow) = func_door_button : "Door-mounted Button"
[
bind(target_source) : "Name of door to bind to"
]
@PointClass base(Targetname) studio("progs/teleport.mdl") = func_teleporttrain : "Moving teleport destination"
[
speed(integer) : "Speed (units per second)" : 64
target(target_source) : "First stop target"
]
@SolidClass base(Appearflags, Targetname, Deathtype, Selfshadow, 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
count(integer) : "Number of clones" : 0
spawnflags(Flags) =
[
1 : "Smooth" : 0
2 : "Blockable" : 0
]
]
@PointClass base(Targetname) size(16 16 16) =
path_corner : "Moving platform stop"
[
target(target_source) : "Next stop target"
wait(integer) : "Wait" : 0
event(target_source) : "Event to fire on arrival"
duration(integer) : "Movetime for next motion(if set)"
speed(integer) : "Speed for next motion(if set)"
]
@PointClass base(Targetname) size(16 16 16) =
path_corner_precise : "Advanced monster waypoint"
[
target(target_source) : "Next waypoint"
wait(integer) : "Wait" : 0
]
@PointClass base(Targetname) size(16 16 16) =
path_corner_contact : "Monster waypoint"
[
target(target_source) : "Next waypoint"
]
@SolidClass base(Targetname, Deathtype) = func_togglewall : "Toggleable wall"
[
spawnflags(Flags) =
[
1 : "Starts off" : 0
2 : "Particles" : 0
4 : "Monsters ignore" : 0
]
dmg(integer) : "Contact damage"
wait(string) : "Wait between damage" : "0.5"
noise(string) : "Toggle off sound"
noise1(string) : "Toggle on sound"
noise2(string) : "Damage sound"
speed(integer) : "Particle speed" : 75
style(integer) : "Particle count" : 10
color(integer) : "Particle colour"
worldtype(choices) : "particle direction" : 0 =
[
0 : "Up"
1 : "Down"
2 : "East"
3 : "West"
4 : "North"
5 : "South"
]
]
@SolidClass base(Targetname) = func_particlefield : "particle burst effect"
[
event(string) : "Group name"
cnt(integer) : "Index within group"
wait(string) : "Delay between flashes" : "0.2"
count(integer) : "Particle count" : 2
color(integer) : "Particle colour" : 192
]
@SolidClass base(Targetname, Selfshadow, 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(Shadow, 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(Shadow, ModelLight) = func_bossgate : "Boss gate" []
//
// triggers
//
@BaseClass base(AllTargets) = 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!)"
spawnflags(flags) = [ 2: "Broadcast message" : 0 ]
noise(string) : "Custom noise(set sounds 4)"
]
@SolidClass base(Target) = trigger_changelevel : "Trigger: Change level"
[
map(string) : "New map name"
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
]
onlymonster(choices) : "Limited to monsters?" : 0 =
[
0 : "No"
1 : "Yes"
]
notelefrag(choices) : "Wait instead of telefrag?" : 0 =
[
0 : "No"
1 : "Yes"
]
state(choices) : "Disable momentum" : 0 =
[
0 : "No"
1 : "Yes"
]
]
// 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
]
@SolidClass base(trigger_monsterjump) = trigger_drolejump : "Trigger drolejump"[]
@PointClass base(AllTargets) = trigger_counter : "Trigger counter"
[
spawnflags(flags) =
[
1: "No Message" : 0
2: "Broadcast 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
noise(string) : "Sound while pushing"
]
@SolidClass base(Targetname, Deathtype) = trigger_hurt : "Trigger player hurt"
[
dmg(integer) : "Damage" : 5
wait(string) : "Frequency of damage" : "0.2"
message(string) : "Message"
cnt(integer) : "Count before deactivated"
]
@SolidClass base(Target) = trigger_damagethreshold : "Trigger damagethreshold"
[
health(integer) : "Health"
spawnflags(flags) =
[
1: "Multi Use" : 0
2: "Invisible" : 0
]
]
@SolidClass = trigger_setgravity : "Trigger setgravity"
[
gravity(integer) : "Gravity"
]
@SolidClass base(Deathtype) = trigger_void : "Trigger void"[]
@SolidClass = trigger_ladder : "Trigger ladder"
[
noise(string) : "Climbing noise"
noise1(string) : "Attach noise"
]
// Rotating entities
@PointClass base(Targetname) = info_rotate : "Info rotate"
[]
@SolidClass = rotate_object : "Visible rotating object"
[
target(target_destination) : "Target (an info_rotate)"
targetname(target_source) : "Name (for controller)"
]
@PointClass base(Targetname) = func_rotate_entity : "Simple rotating entity controller"
[
target(target_destination) : "Target (a rotate_object)"
rotate(string) : "Rotate speed (x y z)"
speed(string) : "Acceleration time"
spawnflags(flags) =
[
1: "Toggle" : 0
2: "Starts On" : 0
]
]
@PointClass base(Targetname) = func_rotate_door : "Rotating door controller"
[
target(target_destination) : "Target (the rotate_object/movewalls)"
rotate(string) : "Rotate axes (x y z)"
angles(string) : "Rotate distance"
speed(string) : "Acceleration time"
sounds(choices) : "Sounds" : 3 =
[
1: "Medieval"
2: "Metal"
3: "Base"
]
spawnflags(flags) =
[
1: "Stay open" : 0
]
]
@SolidClass = func_movewall : "Func movewall"
[
targetname(target_source) : "Name (to match rotate_object)"
spawnflags(flags) =
[
1: "Visible" : 0
2: "Damage on touch" : 0
4: "Non-solid" : 0
]
]
@PointClass base(Targetname) = path_rotate : "Rotate train path"
[
spawnflags(flags) =
[
1: "Rotation" : 0
2: "Angles" : 0
4: "Stop" : 0
8: "Stop rotate" : 0
16: "Damage" : 0
32: "Speed sets movetime" : 0
64: "Set damage" : 0
]
target(target_destination) : "Next path_rotate"
noise(string) : "Stop sound"
noise1(string) : "Start sound"
event(target_source) : "Event to trigger"
dmg(integer) : "Set train damage(set spawnflag too)"
rotate(string) : "Set rotate for next motion"
speed(choices) : "Speed(or movetime) for next motion" : 0 =
[
-1 : "jumps to next waypoints"
]
message(string) : "Message"
angles(string) : "Desired angle at this point"
wait(integer) : "Wait" : 0
]
@PointClass base(Targetname) = func_rotate_train : "Rotating train controller"
[
target(target_destination) : "Target (the rotate_object/movewalls)"
path(target_destination) : "First path entity"
speed(string) : "Initial speed"
dmg(string) : "Initial damage"
sounds(choices) : "Sound" : 1 =
[
0: "None"
1: "Ratchet Metal"
]
spawnflags(flags) =
[
1: "Stay open" : 0
]
]
//point versions
@PointClass base(func_door) = func_door_point : "Basic door" []
@PointClass base(func_door_secret) = func_door_secret_point : "Triggered door" []
@PointClass base(func_breakable) = func_breakable_point : "Breakable object"[]
@PointClass base(func_wall) = func_wall_point : "Wall"[]
@PointClass base(func_button) = func_button_point : "Button" []
@PointClass base(func_train) = func_train_point : "Moving platform" []
@PointClass base(func_plat) = func_plat_point : "Elevator" []
@PointClass base(func_episodegate) = func_episodegate_point : "Episode Gate" []
@PointClass base(func_bossgate) = func_bossgate_point : "Boss gate"[]
@PointClass base(trigger_changelevel) = trigger_changelevel_point : "Trigger: Change level"[]
@PointClass base(trigger_once) = trigger_once_point : "Trigger: Activate once"[]
@PointClass base(trigger_multiple) = trigger_multiple_point : "Trigger: Activate multiple"[]
@PointClass base(trigger_onlyregistered) = trigger_onlyregistered_point : "Trigger: Registered only"[]
@PointClass base(trigger_secret) = trigger_secret_point : "Trigger: Secret" []
@PointClass base(trigger_teleport) = trigger_teleport_point : "Trigger teleport" []
@PointClass base(trigger_setskill) = trigger_setskill_point : "Trigger set skill" []
@PointClass base(trigger_relay) = trigger_relay_point : "Trigger relay"[]
@PointClass base(trigger_monsterjump) = trigger_monsterjump_point : "Trigger monster jump" []
@PointClass base(trigger_counter) = trigger_counter_point : "Trigger counter" []
@PointClass base(trigger_push) = trigger_push_point : "Trigger player push"[]
@PointClass base(trigger_hurt) = trigger_hurt_point : "Trigger player hurt" []
@PointClass base(trigger_damagethreshold) = trigger_damagethreshold_point : "Trigger damagethreshold"[]
@PointClass base(trigger_drolejump) = trigger_drolejump_point : "Trigger drolejump"[]
@PointClass base(trigger_setgravity) = trigger_setgravity_point : "Trigger setgravity" []
@PointClass base(trigger_void) = trigger_void_point : "Trigger void"[]
@PointClass base(trigger_ladder) = trigger_ladder_point : "Trigger ladder"[]
@PointClass base(func_door_button) = func_door_button_point : "Door-mounted Button"[]
@PointClass base(func_togglewall) = func_togglewall_point : "Toggleable wall" []
@PointClass base(rotate_object) = rotate_object_point : "Visible rotating object" []
@PointClass base(func_movewall) = func_movewall_point : "Func movewall" []
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment