From 982aa6d2e0b90cacbd459de8a074512038a50e12 Mon Sep 17 00:00:00 2001 From: Dino <8dino2@gmail.com> Date: Sun, 13 Aug 2023 11:40:01 -0400 Subject: [PATCH] Added Action.fgd --- fgd/Action.fgd | 1074 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 fgd/Action.fgd diff --git a/fgd/Action.fgd b/fgd/Action.fgd new file mode 100644 index 0000000..6bfc62d --- /dev/null +++ b/fgd/Action.fgd @@ -0,0 +1,1074 @@ +// +// Action Quake 2 game definition file (.fgd) +// +// Originally written by by autolycus +// Special thanks to: Disruptor, Zoid, Zaphod, Imaginos, EutecTic, xaGe. +// +// Last updated by darksaint for re-release +// Action Quake 2 is a multiplayer arena mod, it needs no single player entities such as monsters or game difficulty + + +// Includes stuff from the tools for lighting etc +@include "ericw_tools.fgd" + +// +// worldspawn +// + +// 0302 - added "nextmap" key +@SolidClass base(EWT_base_Worldspawn) = worldspawn : "World entity" +[ + sky(string) : "Environment map name" + skyaxis(vector) : "Vector axis for rotating sky" + skyrotate(string) : "Speed of rotation (degrees/second)" + skyautorotate(integer) : "Disable to set sky rotation manually" : 1 + sounds(integer) : "CD Track Number" : 1 + gravity(integer) : "Gravity" : 800 + instantitems(integer) : "Instant Item Use" : 0 + message(string) : "Level name" + nextmap(string) : "Next map (DM only)" + start_items(string) : "Starting items: a semi-colon delimited list of items and amounts to be given to player if they have a clear inventory." + achievement(string) : "If an EOU is triggered from this map, this is the achievement to give out." + + fog_density(float) : "density value of fog, 0-1" + fog_color(color) : "color value of fog, 3d vector with values between 0-1 (r g b)" + fog_sky_factor(float) : "sky factor value of fog, 0-1" + heightfog_falloff(float) : "falloff value of heightfog, 0-1" + heightfog_density(float) : "density value of heightfog, 0-1" + heightfog_start_color(color) : "start color of heightfog, 3d vector with values between 0-1 (r g b)" + heightfog_end_color(color) : "end color of heightfog, 3d vector with values between 0-1 (r g b)" + heightfog_start_dist(float) : "start distance value of heightfog, in world units" + heightfog_end_dist(float) : "start distance value of heightfog, in world units" +] + +// +// base marker definitions +// + +// EditorFlags apply to everything - all entities should inherit it. +@baseclass = EditorFlags [ + spawnflags(Flags) = + [ + 256 : "Not in Easy" : 0 + 512 : "Not in Normal" : 0 + 1024 : "Not in Hard" : 0 + 2048 : "Not in Deathmatch" : 0 + // Paril: Rogue + 4096 : "Not in Coop" : 0 + 8192 : "Reserved Editor Flag" : 0 + // Paril: Kex + 16384 : "Coop Only" : 0 + 32768 : "Reserved Editor Flag" : 0 + ] +] + +// Entity can take angle or angles. +@baseclass = Angleable [ + angle(choices) : "Facing angle (yaw)" : 0 = + [ + -1 : "Up" + -2 : "Down" + ] + angles(vector) : "pitch yaw roll" : "0 0 0" : "Facing angles" +] + +// Entity can be targeted by stuff. +@baseclass = Targetable [ + targetname(target_source) : "Name for firing" +] + +// Entity will call G_UseTargets +@baseclass = UseTargets [ + target(target_destination) : "Target to fire" + delay(float) : "Target delay" + message(string): "Message on activation" + killtarget(target_destination) : "Targets to fully delete" +] + +// Entity supports pointing at something, but won't call G_UseTargets +@baseclass = Target [ + target(target_destination) : "Target to fire" +] + +// Entity supports "team" +@baseclass = Teamable [ + team(string) : "Team identifier" +] + +// Entity supports brush model animations +@baseclass = BmodelAnim [ + bmodel_anim_start(integer) : "Start frame of animation" + bmodel_anim_end(integer) : "End frame of animation" + bmodel_anim_style(choices) : "Animation style" : 0 = + [ + 0 : "Forwards" + 1 : "Backwards" + 2 : "Random" + ] + bmodel_anim_speed(integer) : "Animation speed, in milliseconds" + bmodel_anim_nowrap(integer) : "If set, frames are clamped rather than wrapping" + + bmodel_anim_alt_start(integer) : "Start frame of alternate animation" + bmodel_anim_alt_end(integer) : "End frame of alternate animation" + bmodel_anim_alt_style(choices) : "Alternate animation style" : 0 = + [ + 0 : "Forwards" + 1 : "Backwards" + 2 : "Random" + ] + bmodel_anim_alt_speed(integer) : "Alternate animation speed, in milliseconds" + bmodel_anim_alt_nowrap(integer) : "If set, alternate frames are clamped rather than wrapping" +] + +// Entity supports brush model sound modifications +@baseclass = BmodelSounds [ + noise_start(string) : "Noise to play on activation" + noise_middle(string) : "Noise to play while traveling" + noise_end(string) : "Noise to play on end" +] + +// Entity supports noise key +@baseclass = Noise [ + noise(string) : "Noise to play" +] + +// Entity supports alpha key +@baseclass = Alpha [ + alpha(float) : "Alpha" +] + +// Entity supports scale key +@baseclass = Scale [ + scale(float) : "Scale" +] + +// Includes stuff related to the kex dynamic lights +@include "kexlights.fgd" + +// +// player start, deathmatch, coop, deathmatch intermission +// + +@baseclass base(EditorFlags, Angleable) size(-16 -16 -24, 16 16 32) color(0 255 0) model({ "path": ":players/male/tris.md2", "frame":209, "skin":1}) = PlayerClass [] + +@PointClass base(PlayerClass) = info_player_start : "Player start" [] +@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] + targetname(string) : "Spawn point name, to be matched to previous levels' target_changelevel" +] + +@PointClass base(PlayerClass) = info_player_coop_lava : "Smart Water lava spawn point" [] + +@PointClass base(PlayerClass, Targetable) = info_player_intermission : "Deathmatch intermission point" [] + +@PointClass base(PlayerClass) = info_player_team1 : "CTF Red start" [] +@PointClass base(PlayerClass) = info_player_team2 : "CTF Blue start" [] + +// Notes on the 'team' key: First of all, it's really only useful in DM because it creates a +// random respawn pattern. Let's say that in one spot, you want to have the shotgun, Quad +// damage and mega health item to respawn in alternance. Place all of them in approximately +// the same location, team them and voila! The FIRST item that you place in the map will be +// the team MASTER - the others will be SLAVES. In DM play, the Master will be the first one +// to spawn. Once the Master is picked up, the respawn pattern becomes RANDOM: it could be +// the same or one of the other 2. If you try to use this in a Single Player map, it's +// pretty useless because only the team MASTER spawns and the others never appear obviously. +// Also, in CTF, only the master appears. No idea why. +@BaseClass base(EditorFlags, Angleable, UseTargets, Targetable) color(76 76 255) size(-15 -15 -15, 15 15 15) = Item [ + team(string) : "Team" + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Disable Pickup" : 0 + 4 : "Toss Item On Spawn" : 0 + ] +] + +@BaseClass base(Item) color(76 76 255) = Ammo [] +@BaseClass base(Item) color(255 76 76) = Weapons [] +@BaseClass base(Item) color(76 255 255) size(-16 -16 -16, 16 16 16) = Items [] +@BaseClass base(Item) color(0 128 204) size(-16 -16 -16, 16 16 16) = Keys [] + +// Ammunition +@PointClass base(Ammo) model({ "path": ":models/items/ammo/shells/medium/tris.md2" }) = ammo_shells : "Shotgun/HC ammo" [] +@PointClass base(Ammo) model({ "path": ":models/items/ammo/clip/tris.md2" }) = ammo_bullets : "MK23 Pistol ammo" [] +@PointClass base(Ammo) model({ "path": ":models/items/ammo/m4/tris.md2" }) = ammo_cells : "M4 ammo" [] +@PointClass base(Ammo) model({ "path": ":models/objects/grenade2/tris.md2" }) = ammo_grenades : "Grenades (ammo)" [] +@PointClass base(Ammo) model({ "path": ":models/items/ammo/mag/tris.md2" }) = ammo_rockets : "MP5 ammo" [] +@PointClass base(Ammo) model({ "path": ":models/items/ammo/sniper/tris.md2" }) = ammo_slugs : "Sniper ammo" [] + +// Weapons +@PointClass base(Weapons) model({ "path": ":models/weapons/g_shotg/tris.md2" }) = weapon_shotgun : "M3 Shotgun" [] +@PointClass base(Weapons) model({ "path": ":models/weapons/g_machn/tris.md2" }) = weapon_machinegun : "MP5 Submachinegun" [] +@PointClass base(Weapons) model({ "path": ":models/weapons/g_sniper/tris.md2" }) = weapon_chaingun : "SSG 3000 Sniper Rifle" [] +@PointClass base(Weapons) model({ "path": ":models/weapons/g_cannon/tris.md2" }) = weapon_rocketlauncher : "Handcannon" [] +@PointClass base(Weapons) model({ "path": ":models/weapons/g_dual/tris.md2" }) = weapon_railgun : "MK23 Pistol" [] +@PointClass base(Weapons) model({ "path": ":models/weapons/g_m4/tris.md2" }) = weapon_bfg : "M4 Assault Rifle" [] + +// Items +@PointClass base(Items) model({ "path": ":models/items/armor/jacket/tris.md2" }) = item_vest : "Kevlar Vest" [] +@PointClass base(Items) model({ "path": ":models/items/band/tris.md2" }) = item_band : "Bandolier" [] +@PointClass base(Items) model({ "path": ":models/items/breather/tris.md2" }) = item_helmet : "Kevlar Helmet" [] +@PointClass base(Items) model({ "path": ":models/items/laser/tris.md2" }) = item_lasersight : "Lasersight" [] +@PointClass base(Items) model({ "path": ":models/items/quiet/tris.md2" }) = item_quiet : "Silencer" [] +@PointClass base(Items) model({ "path": ":models/items/slippers/tris.md2" }) = item_slippers : "Stealth Slippers" [] + +// CTF +@PointClass base(Keys) model({ "path": ":players/male/flag1.md2" }) = item_flag_team1 : "CTF Flag (red)" [] +@PointClass base(Keys) model({ "path": ":players/male/flag2.md2" }) = item_flag_team2 : "CTF Flag (blue)" [] + + +// Keep in mind when using func_areaportal that it must +// *completely* separate two areas. otherwise, you will +// get an error message and the areaportal will not work +@SolidClass base(EditorFlags, Targetable) = func_areaportal : "Area portal (Vis blocker)" [] + +@SolidClass base(EditorFlags, Angleable, UseTargets, Targetable, EWT_base_BModel, BmodelAnim, BmodelSounds) color(0 128 204) = func_button : "Button" +[ + speed(float) : "Speed" : "40" + wait(choices) : "Wait before reset" : 1 = + [ + -1 : "Never Return" + ] + lip(float) : "Lip remaining after move" : "4" + health(float) : "Health (shootable)" + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Audible" + 1 : "Silent" + ] +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(0 0 255) size(-8 -8 -8, 8 8 8) = func_clock : "Clock" +[ + spawnflags(Flags) = + [ + 1 : "Timer Up" : 0 + 2 : "Timer Down" : 0 + 4 : "Start Off" : 0 + 8 : "Multi Use" : 0 + ] + count(integer) : "Clock Count" : 3600 + pathtarget(target_destination) : "Target to fire" + target(target_destination) : "Should be targeting a target_string" + style(choices) : "Style" : 0 = + [ + 0 : "xx" + 1 : "xx:xx" + 2 : "xx:xx:xx" + ] +] + +@PointClass base(EditorFlags, Targetable) color(0 0 255) size(-8 -8 -8, 8 8 8) = target_string : "func_clock holder for time string" +[ + team(string) : "target_characters to team with" +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel) color(0 0 255) = target_character : "single character for target_string" +[ + team(string) : "Team" + count(integer) : "Position in the string" +] + + +@SolidClass base(Angleable, EditorFlags, Targetable, UseTargets, Teamable, EWT_base_BModel, BmodelSounds) color(0 128 204) = func_door : "Door" +[ + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + 4 : "Crusher" : 0 + 8 : "No Monsters" : 0 + 16 : "Animated" : 0 + 32 : "Toggle" : 0 + 64 : "Animated Fast" : 0 + ] + health(float) : "Health (shootable)" + speed(float) : "Speed" : "100" + wait(choices) : "Wait before close" : 3 = + [ + -1 : "Stay open" + ] + lip(float) : "Lip remaining after move" : "8" + dmg(float) : "Damage when blocked" : "2" + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Audible" + 1 : "Silent" + ] +] + +@SolidClass base(Angleable, EditorFlags, Targetable, UseTargets, EWT_base_BModel, BmodelSounds) color(0 128 204) = func_door_rotating : "Rotating Door" +[ + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + 2 : "Reverse" : 0 + 4 : "Crusher" : 0 + 8 : "No Monsters" : 0 + 16 : "Animated" : 0 + 32 : "Toggle" : 0 + 64 : "X Axis" : 0 + 128 : "Y Axis" : 0 + 65536 : "Inactive (must be triggered)" : 0 + 131072 : "Safe Open (opens opposite dir. if activator facing 'angles')" : 0 + ] + team(string) : "Team" + distance(float) : "Degrees of rotation" : "90" + health(float) : "Health (shootable)" + speed(float) : "Speed" : "100" + wait(choices) : "Wait before close" : 3 = + [ + -1 : "Stay open" + ] + dmg(float) : "Damage when blocked" : "2" + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Audible" + 1 : "Silent" + ] +] + +@SolidClass base(Angleable, EditorFlags, Targetable, UseTargets, EWT_base_BModel, BmodelSounds) color(0 128 204) = func_door_secret : "Secret Door" +[ + spawnflags(Flags) = + [ + 1 : "Always shoot" : 0 + 2 : "1st Left" : 0 + 4 : "1st Down" : 0 + ] + dmg(float) : "Damage when blocked" : "2" + wait(choices) : "Wait before close" : 5 = + [ + -1 : "Stay open" + ] +] + +// not visible in DM mode +@SolidClass base(EditorFlags, Targetable, UseTargets, EWT_base_BModel) color(0 128 204) = func_explosive : "Exploding/Breakable brush" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Animated" : 0 + 4 : "Animated Fast" : 0 + ] + health(float) : "Health" : "100" + mass(float) : "Mass (debris)" : "75" + dmg(float) : "Damage" : "0" + sounds(choices) : "Sounds" : 0 = + [ + 0 : "Silent" + 1 : "Glass Break" + ] +] + +@SolidClass base(EditorFlags, Targetable) color(255 0 0) = func_killbox : "Instant death" +[ + spawnflags(Flags) = + [ + 2 : "Level Restart Required" : 0 + 4 : "Exact Trigger Collision" : 0 + ] +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel) color (0 128 204) = func_object : "Solid bmodel, will fall if its support is removed" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Animated" : 0 + 4 : "Animated Fast" : 0 + ] + dmg(float) : "Crush damage" : "100" +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel, BmodelSounds) color(0 128 204) = func_rotating : "Rotating brush" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Reverse" : 0 + 4 : "X Axis" : 0 + 8 : "Y Axis" : 0 + 16 : "Pain on Touch" : 0 + 32 : "Block Stops" : 0 + 64 : "Animated" : 0 + 128 : "Animated Fast" : 0 + 65536 : "Acceleration" : 0 + ] + team(string) : "Team" + speed(float) : "Speed" : "100" + dmg(float) : "Damage when blocked" : "2" + accel(float) : "Acceleration speed, when flag is enabled" : "1" + decel(float) : "Deceleration speed, when flag is enabled" : "1" +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(76 25 153) size(-8 -8 -8, 8 8 8) = func_timer : "Timer" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + ] + wait(float) : "Base wait time" : "1" + random(float) : "Wait variance (+/-) - should be <= wait" + delay(float) : "Delay before firing when used" + pausetime(float) : "Additional delay for START_ON timers" +] + +// 0219 - added "team" key +@SolidClass base(EditorFlags, Targetable, UseTargets, Teamable, EWT_base_BModel) color(0 128 204) = func_train : "Moving platform" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Toggle" : 0 + 4 : "Block Stops" : 0 + 8 : "Move Teamchain" : 0 + 16 : "Fix Offset (fixes legacy -1,-1,-1 offset)" : 0 + 32 : "Use Origin" : 0 + ] + pathtarget(target_destination) : "Target to fire when we reach a point" + target(target_destination) : "First corner to be placed at" + speed(float) : "Speed" : "100" + dmg(float) : "Damage when blocked" : "2" + noise(string) : "Travel noise (path/file.wav)" +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel) color(0 128 204) = func_wall : "Solid Wall" +[ + spawnflags(Flags) = + [ + 1 : "Trigger Spawn" : 0 + 2 : "Toggle" : 0 + 4 : "Start On" : 0 + 8 : "Animated" : 0 + 16 : "Animated Fast" : 0 + ] +] + +@SolidClass base(EditorFlags, Targetable, Teamable, EWT_base_BModel, BmodelSounds) color(0 128 204) = func_water : "Moveable water" +[ + spawnflags(Flags) = + [ + 1 : "Start Open" : 0 + 2 : "Smart Water (player position aware rising)" : 0 + ] + speed(float) : "Speed" : "25" + wait(choices) : "Wait before return" : -1 = + [ + -1 : "Toggle" + ] + lip(float) : "Lip remaining after move" + sounds(Choices) : "Sounds" : 1 = + [ + 0 : "No Sounds" + 1 : "Water" + 2 : "Water" + ] + accel(float) : "divisor of lowest player's distance, to determine rising speed" : "20" +] + +@PointClass base(Targetable) color(128 0 0) size(-2 -2 -2, 2 2 2) = info_null : "Compiler-only target (spotlights, etc)" [] +@PointClass base(EditorFlags, Targetable) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_notnull : "Game target" [] + +// expansion +@PointClass base(info_notnull) = info_teleport_destination : "Teleport Destination" [] + +@PointClass base(EditorFlags, Targetable, Target, EWT_base_PointLight) color(0 255 0) size(-8 -8 -8, 8 8 8) = light : "Light" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Allow In Deathmatch" : 0 + ] + style(Choices) : "Style" : 0 = + [ + 0 : "Normal" + 1 : "Flicker #1" + 6 : "Flicker #2" + 2 : "Slow Strong Pulse" + 3 : "Candle #1" + 7 : "Candle #2" + 8 : "Candle #3" + 4 : "Fast Strobe" + 5 : "Gentle Pulse #1" + 9 : "Slow Strobe" + 10 : "Fluorescent Flicker" + 11 : "Slow pulse, no black" + ] +] + +@PointClass base(EditorFlags, Targetable, Target) color(0 255 0) size(-2 -2 -12, 2 2 12) model({ "path": ":models/objects/minelite/light1/tris.md2", "skin": 0 }) = light_mine1 : "Clean fluorescent light fixture" [] +@PointClass base(EditorFlags, Targetable, Target) color(0 255 0) size(-2 -2 -12, 2 2 12) model({ "path": ":models/objects/minelite/light2/tris.md2", "skin": 0 }) = light_mine2 : "Dusty fluorescent light fixture" [] + +@PointClass base(EditorFlags) color(255 128 0) size(-4 -4 0, 4 4 246) model({ "path": ":models/objects/banner/tris.md2" }) = misc_banner : "Flowing banner" [] + +@PointClass base(EditorFlags, Target) color(255 0 0) size(-32 -32 -24, 32 32 -16) model({ "path": ":models/objects/dmspot/tris.md2", "skin": 1 }) = misc_teleporter : "Teleporter: To hide the teleport pads, place them units 10 units into a brush." +[ + spawnflags(Flags) = + [ + 1 : "No Sound" : 0 + 2 : "No Effect" : 0 + 4 : "N64 Effect" : 0 + ] +] + +@PointClass base(EditorFlags, Targetable) color(255 0 0) size(-32 -32 -24, 32 32 -16) model({ "path": ":models/objects/dmspot/tris.md2", "skin": 0 }) = misc_teleporter_dest : "Teleport Destination: To hide the teleport pads, place them units 10 units into a brush or use an info_notnull." [] + + +// set "map" value to "mapname$playername" where playername equals +// the targetname of a corresponding info_player_start in the +// next map. To play a cinematic before starting the level, the +// "map" value should be "cinemeatic.cin+mapname$playername". Note +// that a playername is not required if the corresponding info_player_start +// doesn't have a targetname. If you want this to be designated as the last +// level of a unit, place an asterix (*) before the map name. +@PointClass base(EditorFlags, Targetable, Target) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_changelevel : "Change level" +[ + spawnflags(Flags) = + [ + 8 : "Clear Inventory" : 0 + 16 : "No End of Unit" : 0 + 32 : "Fade out" : 0 + 64 : "Immediate Leave" : 0 + ] + map(string) : "Next map; append $targetname to spawn at matched targetname" + target(target_destination) : "Name of info_landmark in the next map to link this exit to" +] + +@PointClass base(EditorFlags, Targetable) color(128 128 128) size(-8 -8 -8, 8 8 8) = target_crosslevel_trigger : "Cross-level trigger" +[ + spawnflags(Flags) = + [ + 1 : "Trigger 1" : 0 + 2 : "Trigger 2" : 0 + 4 : "Trigger 3" : 0 + 8 : "Trigger 4" : 0 + 16 : "Trigger 5" : 0 + 32 : "Trigger 6" : 0 + 64 : "Trigger 7" : 0 + 128 : "Trigger 8" : 0 + + 65536 : "Trigger 9" : 0 + 131072 : "Trigger 10" : 0 + 262144 : "Trigger 11" : 0 + 524288 : "Trigger 12" : 0 + 1048576 : "Trigger 13" : 0 + 2097152 : "Trigger 14" : 0 + 4194304 : "Trigger 15" : 0 + 8388608 : "Trigger 16" : 0 + ] +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(128 128 128) size(-8 -8 -8, 8 8 8) = target_crosslevel_target : "Cross-level trigger" +[ + spawnflags(Flags) = + [ + 1 : "Trigger 1" : 0 + 2 : "Trigger 2" : 0 + 4 : "Trigger 3" : 0 + 8 : "Trigger 4" : 0 + 16 : "Trigger 5" : 0 + 32 : "Trigger 6" : 0 + 64 : "Trigger 7" : 0 + 128 : "Trigger 8" : 0 + + 65536 : "Trigger 9" : 0 + 131072 : "Trigger 10" : 0 + 262144 : "Trigger 11" : 0 + 524288 : "Trigger 12" : 0 + 1048576 : "Trigger 13" : 0 + 2097152 : "Trigger 14" : 0 + 4194304 : "Trigger 15" : 0 + 8388608 : "Trigger 16" : 0 + ] +] + +@PointClass base(target_crosslevel_trigger) color(128 128 128) size(-8 -8 -8, 8 8 8) = target_crossunit_trigger : "Cross-unit trigger" +[ +] + +@PointClass base(target_crosslevel_target) color(128 128 128) size(-8 -8 -8, 8 8 8) = target_crossunit_target : "Cross-unit target" +[ +] + +@PointClass base(EditorFlags, Targetable) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_earthquake : "Level wide earthquake" +[ + spawnflags(Flags) = + [ + 1 : "Silent" : 0 + 2 : "Toggle" : 0 + 8 : "One Shot" : 0 + ] + + speed(float) : "Severity of quake" : "200" + count(float) : "Duration" : "5" +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_explosion : "Explosion" +[ + delay(float) : "Delay before explosion" + dmg(float) : "Radius damage" : "0" +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_goal : "Counts a goal completed" +[ + spawnflags(Flags) = + [ + 1 : "Keep Music" : 0 + ] +] + +@PointClass base(EditorFlags, Targetable) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_help : "Computer help message" +[ + spawnflags(Flags) = + [ + 1 : "Main Onjective" : 0 + 2 : "Set POI on use" : 0 + ] + message(string) : "Computer message" +] + +// if no color spawnflags are set, the laser color defaults to dim gray (and hard to see) +// setting the damage to 0 makes it use the default damage of 1 +// setting the damage to a negative number will actually give health +@PointClass base(EditorFlags, Targetable, Target, Angleable) color(0 128 204) size(-8 -8 -8, 8 8 8) = target_laser : "Laser" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + 2 : "Red" : 0 + 4 : "Green" : 0 + 8 : "Blue" : 0 + 16 : "Yellow" : 0 + 32 : "Orange" : 0 + 64 : "Fat" : 0 + 128 : "Stop on windows" : 0 + 65536 : "Lightning" : 0 + ] + dmg(float) : "Damage" + rgba(integer) : "Laser colors; four palette indices separated by spaces" +] + +@PointClass base(EditorFlags, Targetable) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_speaker : "Sound player" +[ + spawnflags(Flags) = + [ + 1 : "Looped On" : 0 + 2 : "Looped Off" : 0 + 4 : "Reliable" : 0 + 8 : "No Stereo Panning" : 0 + ] + noise(string) : "Sound (path/file.wav)" + attenuation(Choices) : "Attenuation" : 0 = + [ + -1 : "None, send to whole level" + 0 : "Default (1 for non-looped, 3 for looped)" + 1 : "Normal fighting sounds" + 2 : "Idle sound level" + 3 : "Ambient sound level" + ] + volume(float) : "Volume (0.0 - 1.0)" : "1" +] + + +@PointClass base(EditorFlags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_amb4 : "Amb4 speaker" +[ +] + +@PointClass base(EditorFlags, Targetable) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_music : "Change music" +[ + sounds(integer) : "CD Track Number" : 1 +] + + +// "sounds" values other than 1 are silent. leaving in the other +// options for availability to mods/fixes +// +@PointClass base(EditorFlags, Targetable) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_splash : "Creates a splash when used" +[ + sounds(choices) : "Type of splash" : 2 = + [ + 1 : "Sparks" + 2 : "Blue water" + 3 : "Brown water" + 4 : "Slime" + 5 : "Lava" + 6 : "Blood" + 7 : "N64 Sparks" + ] + count(integer) : "Number of pixels in splash (1 - 255)" + dmg(float) : "Radius damage" +] + +// eye candy... Particles #2 (style 22) is quite cool +@PointClass base(EditorFlags, Targetable) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_temp_entity : "Temp entity" +[ + style(choices) : "Style" : 22 = + [ + 6 : "Grenade explosion #1" + 8 : "Grenade explosion #2" + 18 : "Grenade explosion #3 (underwater)" + 20 : "Green Fireball (BFG small)" + 21 : "Particles #1 (BFG big)" + 22 : "Particles #2 (boss teleport)" + 35 : "Plain explosion" + 45 : "chainfist smoke" + 47 : "Tracker Explosion (black particles)" + 48 : "Teleport effect #1" + 49 : "Teleport effect #2" + 51 : "Nuke Blast" + 52 : "Widow Splash" + 58 : "Berserk Slam" + ] +] + +@PointClass base(EditorFlags, UseTargets) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_always : "Always triggers" [] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(128 128 128) = trigger_counter : "Counter" +[ + spawnflags(Flags) = + [ + 1 : "No Message" : 0 + ] + count(integer) : "Count before trigger" : 2 +] + +@PointClass base(EditorFlags, Targetable, Target) color(76 25 153) = trigger_elevator : "Elevator trigger; note that whoever targets this must have a pathtarget set" [] + +@SolidClass base(EditorFlags, Targetable) color(128 128 128) = trigger_hurt : "Hurts on touch" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Toggle" : 0 + 4 : "Silent" : 0 + 8 : "No Protection" : 0 + 16 : "Slow hurt" : 0 + 32 : "No Players" : 0 + 64 : "No Monsters" : 0 + 128 : "Clipped (must touch brushes, not just aabb)" : 0 + ] + dmg(float) : "Damage" : "5" +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_key : "Triggers with key" +[ + item(string) : "Item classname" : "key_blue_key" +] + +@PointClass base(EditorFlags, Targetable, UseTargets) color(128 128 128) = trigger_relay : "Relay trigger" [] + +@SolidClass base(trigger_relay) = trigger_once : "Single fire trigger" +[ + spawnflags(Flags) = + [ + 4 : "Triggered" : 0 + 32 : "Clipped (must exactly touch brushes, not just aabb)" : 0 + ] +] + +@SolidClass base(trigger_once) = trigger_multiple : "Multiple fire trigger" +[ + spawnflags(Flags) = + [ + 1 : "Monster" : 0 + 2 : "Not Player" : 0 + 4 : "Triggered (triggering will enable; starts off)" : 0 + 8 : "Toggled (triggering will toggle between on/off; starts off)" : 0 + 16 : "Latched (will trigger when an entity first enters & last leaves)" : 0 + 32 : "Clipped (must exactly touch brushes, not just aabb)" : 0 + ] + wait(float) : "Seconds between triggers" : "0" +] + +@SolidClass base(EditorFlags) color(128 128 128) = trigger_push : "Push trigger" +[ + spawnflags(Flags) = + [ + 1 : "Push Once" : 0 + 2 : "Wait & Effect" : 0 + 4 : "Silent" : 0 + 8 : "Start Off" : 0 + 16 : "Clipped (must exactly touch brushes, not just aabb)" : 0 + ] + speed(float) : "Speed of push" : "1000" + wait(float) : "Time to wait between pushes" : "10" +] + +// Expansion +@SolidClass base(EditorFlags) color(128 128 128) = trigger_gravity : "Gravity trigger" +[ + spawnflags(Flags) = + [ + 1 : "Toggle" : 0 + 2 : "Start Off" : 0 + 4 : "Clipped (must exactly touch brushes, not just aabb)" : 0 + ] + gravity(float) : "Gravity (standard = 1.0)" : "1" +] + +@SolidClass base(EditorFlags, Targetable, Target, EWT_base_BModel, Teamable) color(128 255 128) = turret_breach : "Turret breach" +[ + speed(float) : "Speed" : "50" + dmg(float) : "Damage" : "10" + minpitch(float) : "Miminum pitch angle" : "-30" + maxpitch(float) : "Maximum pitch angle" : "30" + minyaw(float) : "Minimum yaw angle" : "0" + maxyaw(float) : "Maximum yaw angle" : "360" +] + +@SolidClass base(EditorFlags, EWT_base_BModel, Teamable) color(128 255 128) = turret_base : "Turret base" +[ +] + + +// Expansions +@PointClass base(EditorFlags) color(128 255 128) size(-4 -4 -4, 4 4 4) = turret_invisible_brain : "Turret invisible brain" +[ + delay(float) : "Delay between firing; leave unset for skill ramping" : "0" + target(target_destination) : "Target (turret_breach)" + killtarget(target_destination) : "Entity to be attacked" +] + +@SolidClass base(EWT_base_BModel) color(0 128 204) = func_group : "group" [] + +// Paril: CTF +@PointClass base(EditorFlags) color(255 128 0) size(-4 -4 0, 4 4 246) model({ "path": ":models/ctf/banner/tris.md2" }) = misc_ctf_banner : "Flowing CTF banner" +[ + spawnflags(Flags) = + [ + 1 : "Blue Team" : 0 + ] +] + +@PointClass base(EditorFlags) color(255 128 0) size(-4 -4 0, 4 4 246) model({ "path": ":models/ctf/banner/small.md2" }) = misc_ctf_small_banner : "Smaller flowing CTF banner" +[ + spawnflags(Flags) = + [ + 1 : "Blue Team" : 0 + ] +] + + +@PointClass base(EditorFlags, Targetable, Target) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_steam : "Steam Emitter" +[ + speed(float) : "velocity of particles" : "75" + count(integer) : "number of particles" : 32 + sounds(integer) : "color of particles (palette index)" : 8 + wait(float) : "seconds to run before stopping" +] + +@SolidClass base(EditorFlags) color(128 128 128) = trigger_disguise : "Disguise" +[ + spawnflags(Flags) = + [ + 2 : "Start On" : 0 + 4 : "Remove" : 0 + ] +] + +@SolidClass base(EditorFlags, Targetable, Target, Angleable) color(128 128 128) = trigger_teleport : "Teleport" +[ + spawnflags(Flags) = + [ + 8 : "Start On" : 0 + ] +] + +@SolidClass base(func_door_secret) color(0 128 204) = func_door_secret2 : "Secret Door (Rogue)" [] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel) color(0 128 204) = func_force_wall : "Force Wall" +[ + spawnflags(Flags) = + [ + 1 : "Start On" : 0 + ] + style(integer) : "Color (palette index)" : 208 +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel) color(0 128 204) = func_plat : "OG Platform" +[ + spawnflags(Flags) = + [ + 1 : "Plat Low Trigger" : 0 + 2 : "No Monsters" : 0 + ] + speed(float) : "Speed" : "200" + accel(float) : "Acceleration" : "50" + decel(float) : "Acceleration" : "50" + lip(float) : "Lip remaining after move" : "8" + height(float) : "Movement distance" + dmg(float) : "Damage" : "2" +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel) color(0 128 204) = func_plat2 : "Callable Platform" +[ + spawnflags(Flags) = + [ + 1 : "Plat Low Trigger" : 0 + 2 : "Toggle" : 0 + 4 : "Top" : 0 + 8 : "Start Enabled" : 0 + 32 : "Box Lift" : 0 + ] + speed(float) : "Speed" : "200" + accel(float) : "Acceleration" : "50" + decel(float) : "Acceleration" : "50" + lip(float) : "Lip remaining after move" : "0" + height(float) : "Movement distance" + dmg(float) : "Damage" : "2" +] + +@PointClass base(EditorFlags) = misc_flare : "(N64) Light Flare" +[ + spawnflags(Flags) = + [ + 1 : "Red rim" : 0 + 2 : "Green rim" : 0 + 4 : "Blue rim" : 0 + 8 : "Fixed rotation" : 0 + ] + image(string) : "image" : "" : "The path to a custom flare image to use instead of the default" + radius(float) : "1.0" : "Scale multiplier" + rgba(color255) : "Color" : "255 255 255 255" : "Flare color" + fade_start_dist(integer) : "Distance in units that fade begins, should be smaller than fade_end_dist" : 96 + fade_end_dist(integer) : "Distance in units that fade ends, should be greater than fade_start_dist" : 384 +] + +@PointClass base(EditorFlags, Targetable) = target_camera : "(N64) Camera" +[ + speed(float) : "Speed" : "75" +] + +@PointClass base(EditorFlags, Targetable) = info_landmark : "Landmark - connect one level to another with a seamless transition" +[ +] + + +@SolidClass base(EditorFlags) = trigger_flashlight : "Enable/Disable Flashlight" +[ + spawnflags(Flags) = + [ + 1 : "Clipped (must touch brushes, not just aabb)" : 0 + ] + style(choices) : "style" : 0 = + [ + 0 : "Default" + 1 : "Always turn on" + 2 : "Always turn off" + ] + angles(string) : "pitch yaw roll" : "Player traveling this direction will enable light, against it will disable." +] + +@PointClass base(EditorFlags) = misc_lavaball : "(N64) Lavaball" +[ +] + +@PointClass base(EditorFlags) = misc_hologram : "(N64) Ship Hologram" +[ +] + +@SolidClass base(EditorFlags) = trigger_fog : "Fog Transitions" +[ + spawnflags(Flags) = + [ + 1 : "Affect global fog" : 0 + 2 : "Affect height fog" : 0 + 4 : "Instaneous transition" : 0 + 8 : "Force use (regardless of direction)" : 0 + 16 : "Blend" : 0 + ] + angles(string) : "angles" : "0 0 0" : "Direction of player travel for start/end" + target(target_destination) : "info_notnull target for fog params" + delay(float) : "Delay": "0.5" : "Time in seconds after transition starts to fully end" + wait(float) : "Wait" : "0.0" : "Time in seconds before a re-trigger will occur; mainly for Blend" + fog_density(float) : "density value of fog, 0-1" + fog_color(color) : "color value of fog, 3d vector with values between 0-1 (r g b)" + fog_sky_factor(float) : "sky_factor value of fog, 0-1" + fog_density_off(float) : "transition density value of fog, 0-1" + fog_color_off(color) : "transition color value of fog, 3d vector with values between 0-1 (r g b)" + fog_sky_factor_off(float) : "transition sky_factor value of fog, 0-1" + + heightfog_falloff(float) : "falloff value of heightfog, 0-1" + heightfog_density(float) : "density value of heightfog, 0-1" + heightfog_start_color(color) : "start color of heightfog, 3d vector with values between 0-1 (r g b)" + heightfog_end_color(color) : "end color of heightfog, 3d vector with values between 0-1 (r g b)" + heightfog_start_dist(float) : "start distance value of heightfog, in world units" + heightfog_end_dist(float) : "start distance value of heightfog, in world units" + + heightfog_falloff_off(float) : "transition falloff value of heightfog, 0-1" + heightfog_density_off(float) : "transition density value of heightfog, 0-1" + heightfog_start_color_off(color) : "transition start color of heightfog, 3d vector with values between 0-1 (r g b)" + heightfog_end_color_off(color) : "transition end color of heightfog, 3d vector with values between 0-1 (r g b)" + heightfog_start_dist_off(float) : "transition start distance value of heightfog, in world units" + heightfog_end_dist_off(float) : "transition start distance value of heightfog, in world units" +] + +@SolidClass base(EditorFlags, Angleable, UseTargets, EWT_base_BModel) color(0 128 204) = func_eye : "Camera-like brush model" +[ + pathtarget(target_destination) : "point to an info_notnull (which gets freed after spawn) attached to the bmodel to automatically set the eye_position" + eye_position(string) : "x y z" : "Offset from the origin brush's center of the camera where the eye is located" + radius(float) : "512" : "detection radius for players" + speed(float) : "45" : "how fast, in degrees per second, we should move on each axis to reach the target" + vision_cone(float) : "0.5" : "how wide the cone of vision should be" + wait(float) : "the amount of time to wait after losing target before returning to neutral angles" +] + +@SolidClass base(EditorFlags, Targetable, EWT_base_BModel, BmodelAnim) color(0 128 204) = func_animation : "Similar to func_wall, but triggering it will toggle animation state rather than going on/off." +[ + spawnflags(Flags) = + [ + 1 : "Start in Alternate" : 0 + ] +] + +@PointClass base(EditorFlags, Targetable, Teamable) color(255 0 0) size(-4 -4 -4, 4 4 4) = target_poi : "Compass POI" +[ + spawnflags(Flags) = + [ + 1 : "Pick nearest to player (teamed)" : 0 + 2 : "Dummy" : 0 + 4 : "Dynamic (teamed)" : 0 + ] + + count(integer) : "stage value; if set, will only allow activation if last stage activated is <= this value" : 0 + style(integer) : "teamed POIs only; the lowest styled POI will take priority" : 0 + image(string) : "Image to display at the POI" : "friend" +] + +@PointClass base(Angleable, EditorFlags, Target, Targetable) color(255 255 0) size(-8 -8 -8, 8 8 8) = info_world_text : "Info_World_Text" +[ + spawnflags(Flags) = + [ + 1 : "Start Off" : 0 + 2 : "Trigger Once" : 0 + 4 : "Remove On Trigger" : 0 + ] + + angle(float) : "Direction. -3 = Track Player. -2 = Down, -1 = Up, 0 - 360 = Yaw" : "-3" + radius(float) : "Text Size" : "0.2" + sounds(integer) : "Color Of Text. 0 = White, 1 = Red, 2 = Blue, 3 = Green, 4 = Yellow, 5 = Black, 6 = Cyan, 7 = Orange" : 0 +] + +@PointClass base(EditorFlags, Target, Targetable) = info_nav_lock : "Flip locked flag on targeted doors" +[ +] + + +@PointClass base(EditorFlags, Targetable, UseTargets) color(128 128 128) = trigger_health_relay : "Health relay trigger" +[ + speed(float) : "Percent of health that must be reached to fire" +] + +@PointClass base(EditorFlags, Targetable) = target_autosave : "Autosave" +[ +] + + +@PointClass base(EditorFlags, Targetable) = target_sky : "Change sky parameters" +[ + sky(string) : "Environment map name" + skyaxis(vector) : "Vector axis for rotating sky" + skyrotate(string) : "Speed of rotation (degrees/second)" + skyautorotate(integer) : "Disable to set sky rotation manually" : 1 +] +