Quake2-16px.png

Quake II.fgd

From Valve Developer Community
Jump to navigation Jump to search

Info icon
This page documents information about a third-party game running on a non-Valve engine. This information is documented here because it has technical and/or historical relevance to Valve's engines.
This FGD is provided in its unaltered form here, due to its historical relevance to Hammer Valve Hammer Editor.

Old FGD files for Quake II Quake II, as included in Hammer 3.x Worldcraft 1.6 and found on the Worldcraft website.

Quake II (Vanilla compilers)

Tip.pngTip:This FGD is built for an old version of Worldcraft, and does not take advantage of features found in newer editors. Both J.A.C.K. J.A.C.K. and TrenchBroom TrenchBroom include updated versions of this FGD which take advantage of modern editor features.
This is a text file used internally by a Valve Software technology, such as GoldSrc GoldSrc, Source Source, and/or Source 2 Source 2 engine.
To open this file, copy the following text into a text editor such as Notepad++ Notepad++, and save it with "save as type" being "all files" and .FGD appended to the file name. Then open the file in the appropriate tool.
quake2.fgd
Forge Game Data
// // Quake 2 game definition file (.fgd) // for Worldcraft 1.6 and above // last update: march 3 1998 // // written by autolycus / [email protected] // email me with improvements and suggestions // // special thanks to: Disruptor, Zoid, Zaphod, Imaginos, // and EutecTic for comments, suggestions, and help! // // // worldspawn // // 0302 - added "nextmap" key @SolidClass = worldspawn : "World entity" [ sky(string) : "Environment map name" skyaxis(string) : "Vector axis for rotating sky" skyrotate(string) : "Speed of rotation (degrees/second)" sounds(integer) : "CD Track Number" : 1 gravity(integer) : "Gravity" : 800 message(string) : "Level name" nextmap(string) : "Next map (DM only)" ] // // base marker definitions // @baseclass = Appearflags [ spawnflags(Flags) = [ 256 : "Not in Easy" : 0 512 : "Not in Normal" : 0 1024 : "Not in Hard" : 0 2048 : "Not in Deathmatch" : 0 ] ] @baseclass = Targetname [ targetname(target_source) : "Name" ] @baseclass = Target [ target(target_destination) : "Target" ] // // player start, deathmatch, coop, deathmatch intermission // @baseclass base(Appearflags, Targetname) size(-16 -16 -24, 16 16 32) color(0 255 0) = PlayerClass [] @PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] @PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] @PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] @PointClass base(PlayerClass) = info_player_intermission : "Deathmatch intermission point" [ angles(string) : "pitch yaw roll" ] // 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. @BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) = Ammo [ team(string) : "Team" ] @PointClass base(Ammo) = ammo_shells : "Shotgun ammo" [] @PointClass base(Ammo) = ammo_bullets : "Machine/Chain gun ammo" [] @PointClass base(Ammo) = ammo_cells : "Blaster/BFG ammo" [] @PointClass base(Ammo) = ammo_grenades : "Grenades" [] @PointClass base(Ammo) = ammo_rockets : "Rockets" [] @PointClass base(Ammo) = ammo_slugs : "Rail gun ammo" [] // 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 // // 0221 - is there any point in a "style" key? @SolidClass base(Appearflags, Targetname) = func_areaportal : "Area portal (Vis blocker)" [] // 0221 - added "pathtarget" // 0221 - changed "sounds" information @SolidClass base(Appearflags, Target, Targetname) color(0 128 204) = func_button : "Button" [ pathtarget(string) : "Elevator level target" speed(integer) : "Speed" : 40 wait(choices) : "Wait before reset" : 1 = [ -1 : "Never Return" ] lip(integer) : "Lip remaining after move" : 4 health(integer) : "Health (shootable)" sounds(choices) : "Sounds" : 0 = [ 0 : "Audible" 1 : "Silent" ] // sounds(choices) : "Sounds" : 2 = // [ // 1 : "Silent" // 2 : "Steam Metal" // 3 : "Wodden Clunk" // 4 : "Metallic Click" // 5 : "In-Out" // ] message(string) : "Activation message" _minlight(integer) : "Minimum light (optional)" ] // 0221 - added "count" key...oops :) @PointClass base(Appearflags, Targetname) 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" pathtarget(string) : "Target" style(choices) : "Style" : 0 = [ 0 : "xx" 1 : "xx:xx" 2 : "xx:xx:xx" ] ] // func_conveyor code is incomplete. use the surface attribute "flowing" // and the "current" content flag. (texture won't scroll) // // 0221 - added _minlight @SolidClass base(Appearflags, Targetname) color(0 128 204) = func_conveyor : "Conveyor belt" [ spawnflags(Flags) = [ 1 : "Start On" : 0 2 : "Toggle" : 0 ] speed(integer) : "Speed" : 100 _minlight(integer) : "Minimum light (optional)" ] // 0221 - updated "sounds" information // 0221 - added "killtarget" @SolidClass base(Appearflags, Targetname, Target) 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 ] killtarget(string) : "Kill Target" team(string) : "Team" message(string) : "Trigger message" health(integer) : "Health (shootable)" speed(integer) : "Speed" : 100 wait(choices) : "Wait before close" : 3 = [ -1 : "Stay open" ] lip(integer) : "Lip remaining after move" : 8 dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sounds" : 0 = [ 0 : "Audible" 1 : "Silent" ] // sounds(choices) : "Sounds" : 3 = // [ // 1 : "Silent" // 2 : "Light" // 3 : "Medium" // 4 : "Heavy" // ] _minlight(integer) : "Minimum light (optional)" ] // 0221 - added "killtarget" and "target" keys // 0221 - updated "sounds" info // 0221 - removed "lip" key @SolidClass base(Appearflags, Targetname, Target) 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 ] killtarget(string) : "Kill Target" team(string) : "Team" distance(integer) : "Degrees of rotation" : 90 message(string) : "Trigger message" health(integer) : "Health (shootable)" speed(integer) : "Speed" : 100 wait(choices) : "Wait before close" : 3 = [ -1 : "Stay open" ] dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sounds" : 0 = [ 0 : "Audible" 1 : "Silent" ] // sounds(choices) : "Sounds" : 3 = // [ // 1 : "Silent" // 2 : "Light" // 3 : "Medium" // 4 : "Heavy" // ] _minlight(integer) : "Minimum light (optional)" ] // 0221 - added "_minlight" key (even tho you dont want it to stand out) // 0221 - added "message" key // 0221 - removed "team" key @SolidClass base(Appearflags, Targetname) color(0 128 204) = func_door_secret : "Secret Door" [ spawnflags(Flags) = [ 1 : "Always shoot" : 0 2 : "1st Left" : 0 4 : "1st Down" : 0 ] dmg(integer) : "Damage when blocked" : 2 wait(choices) : "Wait before close" : 5 = [ -1 : "Stay open" ] message(string) : "Message" _minlight(integer) : "Minimum light (optional)" ] // not visible in DM mode // // 0221 - added "_minlight" key (even tho you dont want it to stand out) @SolidClass base(Appearflags, Targetname, Target) color(0 128 204) = func_explosive : "Exploding/Breakable brush" [ spawnflags(Flags) = [ 1 : "Trigger Spawn" : 0 2 : "Animated" : 0 4 : "Animated Fast" : 0 ] health(integer) : "Health" : 100 mass(integer) : "Mass (debris)" : 75 dmg(integer) : "Damage" : 0 _minlight(integer) : "Minimum light (optional)" ] @SolidClass base(Appearflags, Targetname) color(255 0 0) = func_killbox : "Instant death" [] // 0221 - added "_minlight" key @SolidClass base(Appearflags, Targetname) 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 ] _minlight(integer) : "Minimum light (optional)" ] // 0221 - removed "sounds" key @SolidClass base(Appearflags, Targetname) color(0 128 204) = func_plat : "Platform" [ spawnflags(Flags) = [ 1 : "Plat Low Trigger" : 0 ] speed(integer) : "Speed" : 100 accel(integer) : "Acceleration" : 500 lip(integer) : "Lip remaining after move" : 8 height(integer) : "Movement distance" _minlight(integer) : "Minimum light (optional)" ] // 0222 - added "team" key @SolidClass base(Appearflags, Targetname) 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 ] team(string) : "Team" speed(integer) : "Speed" : 100 dmg(integer) : "Damage when blocked" : 2 _minlight(integer) : "Minimum light (optional)" ] @PointClass base(Appearflags, Targetname, Target) color(76 25 153) size(-8 -8 -8, 8 8 8) = func_timer : "Timer" [ spawnflags(Flags) = [ 1 : "Start On" : 0 ] wait(integer) : "Base wait time" : 1 random(integer) : "Wait variance (+/-)" delay(integer) : "Delay before first firing" pausetime(integer) : "Additional delay" ] // 0219 - added "team" key @SolidClass base(Appearflags, Targetname) color(0 128 204) = func_train : "Moving platform" [ spawnflags(Flags) = [ 1 : "Start On" : 0 2 : "Toggle" : 0 4 : "Block Stops" : 0 ] target(string) : "First stop target" team(string) : "Team" speed(integer) : "Speed" : 100 dmg(integer) : "Damage when blocked" : 2 noise(string) : "Sound (path/file.wav)" _minlight(integer) : "Minimum light (optional)" ] // 0221 - added a "_minlight" key @SolidClass base(Appearflags, Targetname) 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 ] _minlight(integer) : "Minimum light (optional)" ] // must never be transparent? // // 0221 - added a "_minlight" key @SolidClass base(Appearflags, Targetname) color(0 128 204) = func_water : "Moveable water" [ spawnflags(Flags) = [ 1 : "Start Open" : 0 ] speed(integer) : "Speed" : 25 wait(choices) : "Wait before return" : -1 = [ -1 : "Toggle" ] lip(integer) : "Lip remaining after move" sounds(Choices) : "Sounds" : 1 = [ 0 : "No Sounds" 1 : "Water" 2 : "Lava" ] team(string) : "Team" _minlight(integer) : "Minimum light (optional)" ] @PointClass base(Appearflags, Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_null : "Spotlight target" [] @PointClass base(info_null) = info_notnull : "Lightning target" [] @BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) = Items [ team(string) : "Team" ] @PointClass base(Items) = item_adrenaline : "+1 to max health" [] @PointClass base(Items) = item_ancient_head : "+2 to max health" [] @PointClass base(Items) = item_armor_body : "Body armor" [] @PointClass base(Items) = item_armor_combat : "Combat armor" [] @PointClass base(Items) = item_armor_jacket : "Jacket armor" [] @PointClass base(Items) = item_armor_shard : "Armor shard" [] @PointClass base(Items) = item_bandolier : "Equipment belt" [] @PointClass base(Items) = item_breather : "Underwater breather" [] @PointClass base(Items) = item_enviro : "Enviro-Suit" [] @PointClass base(Items) = item_health : "+10 health" [] @PointClass base(Items) = item_health_small : "+2 health" [] @PointClass base(Items) = item_health_large : "+25 health" [] @PointClass base(Items) = item_health_mega : "+100 health" [] @PointClass base(Items) = item_invulnerability : "Invulnerability" [] @PointClass base(Items) = item_pack : "Heavy backpack" [] @PointClass base(Items) = item_power_screen : "Power screen" [] @PointClass base(Items) = item_power_shield : "Power shield" [] @PointClass base(Items) = item_quad : "Quad damage" [] @PointClass base(Items) = item_silencer : "Silencer" [] @BaseClass base(Appearflags, Target) color(0 128 204) size(-16 -16 -16, 16 16 16) = Keys [] @PointClass base(Keys) = key_airstrike_target : "Tank commander's head" [] @PointClass base(Keys) = key_blue_key : "Normal door key - blue" [] @PointClass base(Keys) = key_commander_head : "Tank commander's head" [] @PointClass base(Keys) = key_data_cd : "Key for computer centers" [] @PointClass base(Keys) = key_data_spinner : "Key for city computer" [] @PointClass base(Keys) = key_pass : "Security pass for secret level" [] // 0301 - added "targetname" key @PointClass base(Keys, Targetname) = key_power_cube : "Warehouse circuits" [ spawnflags(Flags) = [ 1 : "Trigger Spawn" : 0 2 : "No Touch" : 0 ] ] @PointClass base(Keys) = key_pyramid : "Key for entrance to jail3" [] @PointClass base(Keys) = key_red_key : "normal door key - red" [] @PointClass base(Appearflags, Target, Targetname) color(0 255 0) size(-8 -8 -8, 8 8 8) = light : "Light" [ spawnflags(Flags) = [ 1 : "Start Off" : 0 ] light(integer) : "Brightness" : 300 _color(color1) : "RGB Color" 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" ] _cone(integer) : "Size of light (spotlight)" : 10 ] // 0221 - blanked out the "start off" spawnflag // 0221 - added better descriptions :) @PointClass base(light) color(0 255 0) size(-2 -2 -12, 2 2 12) = light_mine1 : "Dusty fluorescent light fixture" [ spawnflags(Flags) = [ 1 : "" : 0 ] ] // 0221 - changed inheritance from "light" to "light_min1" @PointClass base(light_mine1) = light_mine2 : "Clean fluorescent light fixture" [] // actor code is still broken...leaving this in because i know *someone* will fix // this because its pretty damn cool. @PointClass base(PlayerClass, Target) = misc_actor : "Actor" [ health(integer) : "Health" : 100 ] @PointClass base(Appearflags, Targetname) = target_actor : "Actor path" [ spawnflags(Flags) = [ 1 : "Jump" : 0 2 : "Shoot" : 0 4 : "Attack" : 0 16 : "Hold" : 0 32 : "Brutal" : 0 ] target(string) : "Next path target" pathtarget(string) : "Action target" wait(integer) : "Pause time" message(string) : "Message" speed(integer) : "Forward (jump)" : 200 height(integer) : "Height (jump)" : 200 ] // 0224 - changed banner size from (-4 -4 -4, 4 4 4) to (-4 -4 0, 4 4 246) @PointClass base(Appearflags) color(255 128 0) size(-4 -4 0, 4 4 246) = misc_banner : "Flowing banner" [] @PointClass base(Appearflags) color(255 128 0) size(-8 -8 -8, 8 8 8) = misc_blackhole : "Blackhole" [] @PointClass base(Appearflags) color(255 128 0) size(-16 -16 0, 16 16 16) = misc_deadsoldier : "Dead guys! 6 of em!" [ spawnflags(Flags) = [ 1 : "On Back" : 0 2 : "On Stomach" : 0 4 : "Back, Decap" : 0 8 : "Fetal Position" : 0 16 : "Sitting, Decap" : 0 32 : "Impaled" : 0 ] ] // The following three entities are eye-candy - they don't do anything @PointClass base(Appearflags) color(255 128 0) size(-32 -32 -16, 32 32 32) = misc_eastertank : "Tank Pimp" [] @PointClass base(Appearflags) color(255 128 0) size(-32 -32 0, 32 32 32) = misc_easterchick : "Chick #1" [] @PointClass base(Appearflags) color(255 128 0) size(-32 -32 0, 32 32 32) = misc_easterchick2 : "Chick #2" [] // 0225 - removed "target" key - id concluded being able to target // something with a movable barrel was a bug and removed that function :( @PointClass base(Appearflags, Targetname) color(0 128 204) size(-16 -16 0, 16 16 40) = misc_explobox : "Large exploding box" [ mass(integer) : "Mass" : 100 health(integer) : "Health" : 80 dmg(integer) : "Damage" : 150 ] // set angle for gib direction, otherwise it just drops @PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_arm : "arm gib, use with target_spawner" [] @PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_head : "head gib, use with target_spawner" [] @PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_leg : "leg gib, use with target_spawner" [] // 0221 - added "item", "deathtarget", and "killtarget" keys @PointClass base(Appearflags, Targetname, Target) color(255 128 0) size(-16 -16 -24, 16 16 32) = misc_insane : "Insane Soldiers" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 2 : "Trigger Spawn" : 0 4 : "Crawl" : 0 8 : "Crucified" : 0 16 : "Stand Ground" : 0 32 : "Always Stand" : 0 ] deathtarget(string) : "Entity to trigger at death" killtarget(string) : "Entity to remove at death" item(string) : "Item to spawn at death" ] // 0303 - added "targetname" key @PointClass base(Appearflags, Targetname) color(255 128 0) size(-64 -64 0, 64 64 128) = misc_satellite_dish : "Satellite Dish" [] @PointClass base(Appearflags, Targetname) color(255 128 0) size(-16 -16 0, 16 16 32) = misc_strogg_ship : "Strogg ship for flybys" [ target(string) : "First path target" speed(integer) : "Speed" ] // place teleporter units 10 units into a brush to get rid of teleport pad @PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter : "Teleporter" [ target(string) : "Teleport Destination" ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter_dest : "Teleport Destination" [] @PointClass base(Appearflags) color(255 128 0) size(-176 -120 -24, 176 120 72) = misc_bigviper : "Large stationary Viper" [] @PointClass base(Appearflags, Targetname) color(255 128 0) size(-16 -16 0, 16 16 32) = misc_viper : "Viper for flybys" [ target(string) : "First path target" speed(integer) : "Speed" ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_viper_bomb : "Viper Bomb" [ dmg(integer) : "Damage" ] // // Monsters! // // 0221 - added "deathtarget", "killtarget", and "combattarget" keys @BaseClass base(Appearflags, Target, Targetname) color(255 128 0) size(-16 -16 -24, 16 16 32) = Monsters [ spawnflags(Flags) = [ 1 : "Ambush" : 0 2 : "Trigger Spawn" : 0 4 : "Sight" : 0 ] combattarget(string) : "Point combat target" deathtarget(string) : "Entity to trigger at death" killtarget(string) : "Entity to remove at death" item(string) : "Spawn Item" ] @PointClass base(Monsters) = monster_berserk : "Berserker" [] @PointClass base(Monsters) size(-56 -56 0, 56 56 80) = monster_boss2 : "Boss2" [] // Just fidgets in one spot and teleports away when triggered // // 0221 - removed Monsters class inheritance @PointClass base(Appearflags, Targetname) size(-32 -32 0, 32 32 90) = monster_boss3_stand : "Stationnary Makron" [] @PointClass base(Monsters) = monster_brain : "Brains" [] @PointClass base(Monsters) = monster_chick : "Iron Maiden" [] @PointClass base(Appearflags, Targetname) color(255 128 0) size(-32 -32 0, 32 32 48) = monster_commander_body : "Tank commander's decapitated body" [] @PointClass base(Monsters) = monster_flipper : "Barracuda shark" [] @PointClass base(Monsters) = monster_floater : "Technician" [] @PointClass base(Monsters) = monster_flyer : "Flyer" [] @PointClass base(Monsters) size(-32 -32 -24, 32 32 64) = monster_gladiator : "Gladiator" [] @PointClass base(Monsters) = monster_gunner : "Gunner" [] @PointClass base(Monsters) = monster_hover : "Icarus" [] @PointClass base(Monsters) = monster_infantry : "Infantry" [] @PointClass base(Monsters) size(-80 -80 0, 90 90 140) = monster_jorg : "Jorg" [] // 0221 - this entity can only spawn once the Jorg dies ... im sure someone will change that tho @PointClass base(Monsters) size(-30 -30 0, 30 30 90) = monster_makron : "Makron" [] @PointClass base(Monsters) = monster_medic : "Medic" [] @PointClass base(Monsters) size(-32 -32 -24, 32 32 32) = monster_mutant : "Mutant" [] @PointClass base(Monsters) = monster_parasite : "Parasite" [] @PointClass base(Monsters) = monster_soldier_light : "Light Soldier" [] @PointClass base(Monsters) = monster_soldier : "Soldier" [] @PointClass base(Monsters) = monster_soldier_ss : "SS Soldier" [] @PointClass base(Monsters) size(-32 -32 -16, 32 32 72) = monster_tank : "Tank" [] @PointClass base(Monsters) size(-64 -64 0, 64 64 72) = monster_supertank : "Super tank" [] @PointClass base(Monsters) size(-32 -32 -16, 32 32 72) = monster_tank_commander : "Tank commander" [] // using a "wait" value of -1 on a path corner causes a func_train to go silent between // itself and the next path corner when the train is restarted. The train's sound will // resume as soon as it reaches a path corner with a "wait" value other than -1 @PointClass base(Appearflags, Targetname) color(128 76 0) size(-8 -8 -8, 8 8 8) = path_corner : "Path marker" [ spawnflags(Flags) = [ 1 : "Teleport" : 0 ] target(string) : "Next path target" pathtarget(string) : "Event to trigger" wait(choices) : "Wait" : 0 = [ -1 : "Wait for retrigger" ] ] // "target" doesn't work (for now)...a separate trigger is needed @PointClass base(Appearflags, Targetname, Target) color(128 76 9) size(-8 -8 -8, 8 8 8) = point_combat : "1st point of combat" [ spawnflags(Flags) = [ 1 : "Hold" : 0 ] ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_blaster : "Blaster" [ spawnflags(Flags) = [ 1 : "No Trail" : 0 2 : "No Effects" : 0 ] dmg(integer) : "Damage" : 15 speed(integer) : "Speed" : 1000 ] // 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(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_changelevel : "Change level" [ map(string) : "Next map" ] // 0221 - added "_minlight" key @SolidClass base(Appearflags, Targetname) color(0 0 255) = target_character : "Use with target_string and func_clock" [ team(string) : "Team" count(integer) : "Position in the string" _minlight(string) : "Minimum light (optional)" ] @PointClass base(Appearflags, Targetname, Target) 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 ] killtarget(string) : "Kill Target" message(string) : "Message" delay(integer) : "Trigger delay" ] @PointClass base(Appearflags, Targetname, Target) 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 ] killtarget(string) : "Kill Target" delay(integer) : "Trigger delay (if activated)" : 1 ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_earthquake : "Level wide earthquake" [ speed(integer) : "Severity of quake" : 200 count(integer) : "Duration" : 5 ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_explosion : "Explosion" [ delay(integer) : "Delay before explosion" dmg(integer) : "Radius damage" : 0 ] @PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_goal : "Counts a goal completed" [] @PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_help : "Computer help message" [ spawnflags(Flags) = [ 1 : "Main Onjective" : 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(Appearflags, Targetname, Target) 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 ] dmg(integer) : "Damage" ] // 0221 - added "target" key @PointClass base(Appearflags, Targetname, Target) color(0 128 204) size(-8 -8 -8, 8 8 8) = target_lightramp : "Light ramp" [ spawnflags(Flags) = [ 1 : "Toggle" : 0 ] speed(integer) : "Speed" message(string) : "start/end light level" ] @PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_secret : "Counts a secret found" [ message(string) : "Message to print" : "You have found a secret." ] // set speed and angle, otherwise spawned object drops // // 0221 - changed "target" key description for clarity @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_spawner : "Monster/Item spawner" [ target(string) : "Monster/Item to spawn" speed(integer) : "Speed" ] // looped sounds are automatically volume 1, attenuation 3 :\ @PointClass base(Appearflags, Targetname) 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 ] noise(string) : "Sound (path/file.wav)" attenuation(Choices) : "Attenuation" : 1 = [ -1 : "None, send to whole level" 1 : "Normal fighting sounds" 2 : "Idle sound level" 3 : "Ambient sound level" ] volume(integer) : "Volume (0.0 - 1.0)" : 1 ] // "sounds" values other than 1 are silent. leaving in the other // options for availability to mods/fixes // // 0221 - clarified "count" description @PointClass base(Appearflags, Targetname) 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" ] count(integer) : "Number of pixels in splash (1 - 255)" dmg(integer) : "Radius damage" ] // 0221 - removed "message" key (?) @PointClass base(Appearflags, Targetname) color(0 0 255) size(-8 -8 -8, 8 8 8) = target_string : "String" [ team(string) : "Team" ] // eye candy... Particles #2 (style 22) is quite cool @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_temp_entity : "Temp entity" [ style(choices) : "Style" : 22 = [ 20 : "Green Fireball" 21 : "Particles #1" 22 : "Particles #2" ] ] // 0221 - added "delay" and "killtarget" keys @PointClass base(Appearflags, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_always : "Always triggers" [ killtarget(string) : "Kill Target" delay(integer) : "Time before triggering" ] @SolidClass base(Appearflags, Targetname, Target) color(128 128 128) = trigger_counter : "Counter" [ spawnflags(Flags) = [ 1 : "No Message" : 0 ] count(integer) : "Count before trigger" : 2 ] @PointClass base(Appearflags, Targetname, Target) color(76 25 153) = trigger_elevator : "Elevator trigger" [] @SolidClass base(Appearflags) color(128 128 128) = trigger_gravity : "Change gravity" [ gravity(integer) : "Gravity (standard = 1.0)" : 1 ] @SolidClass base(Appearflags, Targetname) 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 ] dmg(integer) : "Damage" : 5 ] @PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_key : "Triggers with key" [ killtarget(string) : "Kill target" item(string) : "Item classname" : "key_blue_key" ] @SolidClass base(Appearflags) color(128 128 128) = trigger_monsterjump : "Makes monsters jump" [ speed(integer) : "Speed thrown forward" : 200 height(integer) : "Height thrown upward" : 200 ] // 0221 - switched around _relay, _once, and _multiple @PointClass base(Appearflags, Targetname, Target) color(128 128 128) = trigger_relay : "Relay trigger" [ killtarget(string) : "Kill Target" delay(integer) : "Time before triggering" message(string) : "Trigger message" ] // 0303 - removed "sounds" key @SolidClass base(trigger_relay) = trigger_once : "Single fire trigger" [ spawnflags(Flags) = [ 4 : "Triggered" : 0 ] ] @SolidClass base(trigger_once) = trigger_multiple : "Multiple fire trigger" [ spawnflags(Flags) = [ 1 : "Monster" : 0 2 : "Not Player" : 0 ] wait(integer) : "Seconds between triggers" : 0 ] @SolidClass base(Appearflags) color(128 128 128) = trigger_push : "Push trigger" [ spawnflags(Flags) = [ 1 : "Push Once" : 0 ] speed(integer) : "Speed of push" : 1000 ] // 0221 - added "_minlight" key to _breach and _base @SolidClass base(Appearflags, Targetname, Target) color(128 255 128) = turret_breach : "Turret breach" [ speed(integer) : "Speed" : 50 dmg(integer) : "Damage" : 10 minpitch(integer) : "Miminum pitch angle" : -30 maxpitch(integer) : "Maximum pitch angle" : 30 minyaw(integer) : "Minimum yaw angle" : 0 maxyaw(integer) : "Maximum yaw angle" : 360 team(string) : "Team" _minlight(string) : "Minimum light (optional)" ] @SolidClass base(Appearflags) color(128 255 128) = turret_base : "Turret base" [ team(string) : "Team" _minlight(string) : "Minimum light (optional)" ] @PointClass base(Appearflags) color(128 255 128) size(-16 -16 -24, 16 16 32) = turret_driver : "Turret driver" [ target(string) : "Target (turret_breach)" ] @PointClass base(Appearflags) color(0 128 204) size(-8 -8 -8, 8 8 8) = viewthing : "Just for debugging level - dont use" [] @BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) = Weapons [ team(string) : "Team" ] // // Weapons! // @PointClass base(Weapons) = weapon_shotgun : "Shotgun" [] @PointClass base(Weapons) = weapon_supershotgun : "Super shotgun" [] @PointClass base(Weapons) = weapon_machinegun : "Machinegun" [] @PointClass base(Weapons) = weapon_chaingun : "Chain gun" [] @PointClass base(Weapons) = weapon_grenadelauncher : "Grenade launcher" [] @PointClass base(Weapons) = weapon_rocketlauncher : "Rocket launcher" [] @PointClass base(Weapons) = weapon_hyperblaster : "Hyperblaster" [] @PointClass base(Weapons) = weapon_railgun : "Rail gun" [] @PointClass base(Weapons) = weapon_bfg : "Big Freakin Gun!" []

Quake II (ArghRad)

Modified version of the above FGD by Argh for ArghRad.

Warning.pngWarning:This FGD contains certain features that aren't actually supported by ArghRad, such as lightstyles on texlights cast from bmodels.
This is a text file used internally by a Valve Software technology, such as GoldSrc GoldSrc, Source Source, and/or Source 2 Source 2 engine.
To open this file, copy the following text into a text editor such as Notepad++ Notepad++, and save it with "save as type" being "all files" and .FGD appended to the file name. Then open the file in the appropriate tool.
arghquake2.fgd
Forge Game Data
// // Quake 2 game definition file (.fgd) // for Worldcraft 1.6 and above // last update: may 10 1998 (added updated ArghRad functionality) // // written by autolycus / [email protected] // email me with improvements and suggestions // // special thanks to: Disruptor, Zoid, Zaphod, Imaginos, // and EutecTic for comments, suggestions, and help! // // // worldspawn // // 0302 - added "nextmap" key // 0317 - rearranged keys for more intuitive order // 0510 - added updated ArghRad functionality @SolidClass = worldspawn : "World entity" [ message(string)  : "Level name" nextmap(string)  : "Next map (DM only)" sky(string)  : "Environment map name" skyaxis(string)  : "Vector axis for rotating sky" skyrotate(string) : "Speed of rotation (degrees/second)" sounds(integer)  : "CD Track Number" : 1 gravity(integer)  : "Gravity" : 800 // arghrad enhancements //light(string)  : "light # or # # #" _ambient(string) : "_ambient # or # # #" _sun_ambient(string) : "_sun_ambient # or # # #" _sun_light(string)  : "_sun_light #" //_sun(string)  : "_sun (target an info_null)" _sun_target(string)  : "_sun_target (target an info_null)" _sun_angle(string)  : "_sun_angle # #" //_sun_mangle(string)  : "_sun_mangle # #" _sun_vector(string)  : "_sun_vector # # #" _sun_color(color1)  : "_sun_color # # #" _sun_diffuse(string) : "_sun_diffuse #" //_sun_difwait(string) : "_sun_difwait #" _sun_diffade(string) : "_sun_diffade #" _sun2_light(string)  : "_sun2_light #" //_sun2(string)  : "_sun2 (target an info_null)" _sun2_target(string)  : "_sun2_target (target an info_null)" _sun2_angle(string)  : "_sun2_angle # #" //_sun2_mangle(string)  : "_sun2_mangle # #" _sun2_vector(string)  : "_sun2_vector # # #" _sun2_color(color1)  : "_sun2_color # # #" _sun2_diffuse(string) : "_sun2_diffuse #" //_sun2_difwait(string) : "_sun2_difwait #" _sun2_diffade(string) : "_sun2_diffade #" _sun3_light(string)  : "_sun3_light #" //_sun3(string)  : "_sun3 (target an info_null)" _sun3_target(string)  : "_sun3_target (target an info_null)" _sun3_angle(string)  : "_sun3_angle # #" //_sun3_mangle(string)  : "_sun3_mangle # #" _sun3_vector(string)  : "_sun3_vector # # #" _sun3_color(color1)  : "_sun3_color # # #" _sun3_diffuse(string) : "_sun3_diffuse #" //_sun3_difwait(string) : "_sun3_difwait #" _sun3_diffade(string) : "_sun3_diffade #" _sun4_light(string)  : "_sun4_light #" //_sun4(string)  : "_sun4 (target an info_null)" _sun4_target(string)  : "_sun4_target (target an info_null)" _sun4_angle(string)  : "_sun4_angle # #" //_sun4_mangle(string)  : "_sun4_mangle # #" _sun4_vector(string)  : "_sun4_vector # # #" _sun4_color(color1)  : "_sun4_color # # #" _sun4_diffuse(string) : "_sun4_diffuse #" //_sun4_difwait(string) : "_sun4_difwait #" _sun4_diffade(string) : "_sun4_diffade #" ] // // base marker definitions // @baseclass = Appearflags [ spawnflags(Flags) = [ 256 : "Not in Easy" : 0 512 : "Not in Normal" : 0 1024 : "Not in Hard" : 0 2048 : "Not in Deathmatch" : 0 ] ] @baseclass = Targetname [ targetname(target_source) : "Name" ] @baseclass = Target [ target(target_destination) : "Target" ] @BaseClass = BMDLLights [ light(string)  : "light #" _lightmin(string) : "_lightmin #" 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" ] _color(color1)  : "_color # # #" _focus(string)  : "_focus #" _minlight(string)  : "_minlight # (0-2)" _minlighta(string) : "_minlighta #" _ambient(string)  : "_ambient # or # # #" ] // // player start, deathmatch, coop, deathmatch intermission // @baseclass base(Appearflags, Targetname) size(-16 -16 -24, 16 16 32) color(0 255 0) = PlayerClass [] @PointClass base(PlayerClass) = info_player_start : "Player 1 start" [] @PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" [] @PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" [] @PointClass base(PlayerClass) = info_player_intermission : "Deathmatch intermission point" [ angles(string) : "pitch yaw roll" ] // 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. @BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) = Ammo [ team(string) : "Team" ] @PointClass base(Ammo) = ammo_shells : "Shotgun ammo" [] @PointClass base(Ammo) = ammo_bullets : "Machine/Chain gun ammo" [] @PointClass base(Ammo) = ammo_cells : "Blaster/BFG ammo" [] @PointClass base(Ammo) = ammo_grenades : "Grenades" [] @PointClass base(Ammo) = ammo_rockets : "Rockets" [] @PointClass base(Ammo) = ammo_slugs : "Rail gun ammo" [] // 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 // // 0221 - is there any point in a "style" key? @SolidClass base(Appearflags, Targetname) = func_areaportal : "Area portal (Vis blocker)" [] // 0221 - added "pathtarget" // 0221 - changed "sounds" information // 0321 - added a "killtarget" key @SolidClass base(Appearflags, Target, Targetname, BMDLLights) color(0 128 204) = func_button : "Button" [ killtarget(string) : "Kill Target" pathtarget(string) : "Elevator level target" speed(integer) : "Speed" : 40 delay(integer) : "Delay before activation" : 0 wait(choices) : "Wait before reset" : 1 = [ -1 : "Never Return" ] lip(integer) : "Lip remaining after move" : 4 health(integer) : "Health (shootable)" sounds(choices) : "Sounds" : 0 = [ 0 : "Audible" 1 : "Silent" ] message(string) : "Activation message" _minlight(integer) : "Minimum light (optional)" ] // 0221 - added "count" key...oops :) @PointClass base(Appearflags, Targetname) 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" pathtarget(string) : "Target" style(choices) : "Style" : 0 = [ 0 : "xx" 1 : "xx:xx" 2 : "xx:xx:xx" ] ] // func_conveyor code is incomplete. use the surface attribute "flowing" // and the "current" content flag. (texture won't scroll) // // 0221 - added _minlight @SolidClass base(Appearflags, Targetname, BMDLLights) color(0 128 204) = func_conveyor : "Conveyor belt" [ spawnflags(Flags) = [ 1 : "Start On" : 0 2 : "Toggle" : 0 ] speed(integer) : "Speed" : 100 _minlight(integer) : "Minimum light (optional)" ] // 0221 - updated "sounds" information // 0221 - added "killtarget" @SolidClass base(Appearflags, Targetname, Target, BMDLLights) 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 ] killtarget(string) : "Kill Target" team(string) : "Team" message(string) : "Trigger message" health(integer) : "Health (shootable)" speed(integer) : "Speed" : 100 wait(choices) : "Wait before close" : 3 = [ -1 : "Stay open" ] lip(integer) : "Lip remaining after move" : 8 dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sounds" : 0 = [ 0 : "Audible" 1 : "Silent" ] _minlight(integer) : "Minimum light (optional)" ] // 0221 - added "killtarget" and "target" keys // 0221 - updated "sounds" info // 0221 - removed "lip" key @SolidClass base(Appearflags, Targetname, Target, BMDLLights) 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 ] killtarget(string) : "Kill Target" team(string) : "Team" distance(integer) : "Degrees of rotation" : 90 message(string) : "Trigger message" health(integer) : "Health (shootable)" speed(integer) : "Speed" : 100 wait(choices) : "Wait before close" : 3 = [ -1 : "Stay open" ] dmg(integer) : "Damage when blocked" : 2 sounds(choices) : "Sounds" : 0 = [ 0 : "Audible" 1 : "Silent" ] // sounds(choices) : "Sounds" : 3 = // [ // 1 : "Silent" // 2 : "Light" // 3 : "Medium" // 4 : "Heavy" // ] _minlight(integer) : "Minimum light (optional)" ] // 0221 - added "_minlight" key (even tho you dont want it to stand out) // 0221 - added "message" key // 0221 - removed "team" key @SolidClass base(Appearflags, Targetname, BMDLLights) color(0 128 204) = func_door_secret : "Secret Door" [ spawnflags(Flags) = [ 1 : "Always shoot" : 0 2 : "1st Left" : 0 4 : "1st Down" : 0 ] dmg(integer) : "Damage when blocked" : 2 wait(choices) : "Wait before close" : 5 = [ -1 : "Stay open" ] message(string) : "Message" _minlight(integer) : "Minimum light (optional)" ] // not visible in DM mode // // 0221 - added "_minlight" key (even tho you dont want it to stand out) @SolidClass base(Appearflags, Targetname, Target, BMDLLights) color(0 128 204) = func_explosive : "Exploding/Breakable brush" [ spawnflags(Flags) = [ 1 : "Trigger Spawn" : 0 2 : "Animated" : 0 4 : "Animated Fast" : 0 ] health(integer) : "Health" : 100 mass(integer) : "Mass (debris)" : 75 dmg(integer) : "Damage" : 0 _minlight(integer) : "Minimum light (optional)" ] @SolidClass base(Appearflags, Targetname) color(255 0 0) = func_killbox : "Instant death" [] // 0221 - added "_minlight" key @SolidClass base(Appearflags, Targetname, BMDLLights) 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 ] _minlight(integer) : "Minimum light (optional)" ] // 0221 - removed "sounds" key @SolidClass base(Appearflags, Targetname, BMDLLights) color(0 128 204) = func_plat : "Platform" [ spawnflags(Flags) = [ 1 : "Plat Low Trigger" : 0 ] speed(integer) : "Speed" : 100 accel(integer) : "Acceleration" : 500 lip(integer) : "Lip remaining after move" : 8 height(integer) : "Movement distance" _minlight(integer) : "Minimum light (optional)" ] // 0222 - added "team" key @SolidClass base(Appearflags, Targetname, BMDLLights) 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 ] team(string) : "Team" speed(integer) : "Speed" : 100 dmg(integer) : "Damage when blocked" : 2 _minlight(integer) : "Minimum light (optional)" ] @PointClass base(Appearflags, Targetname, Target) color(76 25 153) size(-8 -8 -8, 8 8 8) = func_timer : "Timer" [ spawnflags(Flags) = [ 1 : "Start On" : 0 ] wait(integer) : "Base wait time" : 1 random(integer) : "Wait variance (+/-)" delay(integer) : "Delay before first firing" pausetime(integer) : "Additional delay" ] // 0219 - added "team" key @SolidClass base(Appearflags, Targetname, BMDLLights) color(0 128 204) = func_train : "Moving platform" [ spawnflags(Flags) = [ 1 : "Start On" : 0 2 : "Toggle" : 0 4 : "Block Stops" : 0 ] target(string) : "First stop target" team(string) : "Team" speed(integer) : "Speed" : 100 dmg(integer) : "Damage when blocked" : 2 noise(string) : "Sound (path/file.wav)" _minlight(integer) : "Minimum light (optional)" ] // 0221 - added a "_minlight" key @SolidClass base(Appearflags, Targetname, BMDLLights) 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 ] _minlight(integer) : "Minimum light (optional)" ] // must never be transparent? // // 0221 - added a "_minlight" key @SolidClass base(Appearflags, Targetname, BMDLLights) color(0 128 204) = func_water : "Moveable water" [ spawnflags(Flags) = [ 1 : "Start Open" : 0 ] speed(integer) : "Speed" : 25 wait(choices) : "Wait before return" : -1 = [ -1 : "Toggle" ] lip(integer) : "Lip remaining after move" sounds(Choices) : "Sounds" : 1 = [ 0 : "No Sounds" 1 : "Water" 2 : "Lava" ] team(string) : "Team" _minlight(integer) : "Minimum light (optional)" ] @PointClass base(Appearflags, Targetname) color(0 128 0) size(-4 -4 -4, 4 4 4) = info_null : "Spotlight target" [] @PointClass base(info_null) = info_notnull : "Lightning target" [] @BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) = Items [ team(string) : "Team" ] @PointClass base(Items) = item_adrenaline : "+1 to max health" [] @PointClass base(Items) = item_ancient_head : "+2 to max health" [] @PointClass base(Items) = item_armor_body : "Body armor" [] @PointClass base(Items) = item_armor_combat : "Combat armor" [] @PointClass base(Items) = item_armor_jacket : "Jacket armor" [] @PointClass base(Items) = item_armor_shard : "Armor shard" [] @PointClass base(Items) = item_bandolier : "Equipment belt" [] @PointClass base(Items) = item_breather : "Underwater breather" [] @PointClass base(Items) = item_enviro : "Enviro-Suit" [] @PointClass base(Items) = item_health : "+10 health" [] @PointClass base(Items) = item_health_small : "+2 health" [] @PointClass base(Items) = item_health_large : "+25 health" [] @PointClass base(Items) = item_health_mega : "+100 health" [] @PointClass base(Items) = item_invulnerability : "Invulnerability" [] @PointClass base(Items) = item_pack : "Heavy backpack" [] @PointClass base(Items) = item_power_screen : "Power screen" [] @PointClass base(Items) = item_power_shield : "Power shield" [] @PointClass base(Items) = item_quad : "Quad damage" [] @PointClass base(Items) = item_silencer : "Silencer" [] @BaseClass base(Appearflags, Target) color(0 128 204) size(-16 -16 -16, 16 16 16) = Keys [] @PointClass base(Keys) = key_airstrike_target : "Tank commander's head" [] @PointClass base(Keys) = key_blue_key : "Normal door key - blue" [] @PointClass base(Keys) = key_commander_head : "Tank commander's head" [] @PointClass base(Keys) = key_data_cd : "Key for computer centers" [] @PointClass base(Keys) = key_data_spinner : "Key for city computer" [] @PointClass base(Keys) = key_pass : "Security pass for secret level" [] // 0301 - added "targetname" key @PointClass base(Keys, Targetname) = key_power_cube : "Warehouse circuits" [ spawnflags(Flags) = [ 1 : "Trigger Spawn" : 0 2 : "No Touch" : 0 ] ] @PointClass base(Keys) = key_pyramid : "Key for entrance to jail3" [] @PointClass base(Keys) = key_red_key : "normal door key - red" [] @BaseClass base(Appearflags, Target, Targetname) color(0 255 0) size(-8 -8 -8, 8 8 8) = LightX [ spawnflags(Flags) = [ 1 : "Start Off" : 0 ] light(integer) : "Brightness" : 300 _color(color1) : "RGB Color" 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" ] _cone(integer) : "Size of light (spotlight)" : 10 ] @PointClass base(LightX) = light : "Point Light" [ // arghrad enhancements //light(integer)  : "light # (can be negative)" //_color(color1)  : "_color # # # (can be negatives)" //_mangle(string)  : "_mangle #(0..360) #(-90..90)" _spotangle(string)  : "_spotangle #(0..360) #(-90..90)" _spotvector(string) : "_spotvector # # #" _spotpoint(string)  : "_spotpoint # # #" _focus(string)  : "_focus #" _falloff(choices) : "_falloff #" : 0 = [ 0 : "linear" 1 : "inverse" 2 : "inverse square" ] //_wait(string)  : "_wait #" _fade(string)  : "_fade #" //_angwait(string) : "_angwait #" _angfade(string) : "_angfade #" ] @PointClass base(LightX) color(0 255 0) size(-2 -2 -12, 2 2 12) = light_mine1 : "Dusty fluorescent light fixture" [ spawnflags(Flags) = [ 1 : "" : 0 ] ] @PointClass base(light_mine1) = light_mine2 : "Clean fluorescent light fixture" [] // actor code is still broken...leaving this in because i know *someone* will fix // this because its pretty damn cool. @PointClass base(PlayerClass, Target) = misc_actor : "Actor" [ health(integer) : "Health" : 100 ] @PointClass base(Appearflags, Targetname) = target_actor : "Actor path" [ spawnflags(Flags) = [ 1 : "Jump" : 0 2 : "Shoot" : 0 4 : "Attack" : 0 16 : "Hold" : 0 32 : "Brutal" : 0 ] target(string) : "Next path target" pathtarget(string) : "Action target" wait(integer) : "Pause time" message(string) : "Message" speed(integer) : "Forward (jump)" : 200 height(integer) : "Height (jump)" : 200 ] // 0224 - changed banner size from (-4 -4 -4, 4 4 4) to (-4 -4 0, 4 4 246) @PointClass base(Appearflags) color(255 128 0) size(-4 -4 0, 4 4 246) = misc_banner : "Flowing banner" [] @PointClass base(Appearflags) color(255 128 0) size(-8 -8 -8, 8 8 8) = misc_blackhole : "Blackhole" [] @PointClass base(Appearflags) color(255 128 0) size(-16 -16 0, 16 16 16) = misc_deadsoldier : "Dead guys! 6 of em!" [ spawnflags(Flags) = [ 1 : "On Back" : 0 2 : "On Stomach" : 0 4 : "Back, Decap" : 0 8 : "Fetal Position" : 0 16 : "Sitting, Decap" : 0 32 : "Impaled" : 0 ] ] // The following three entities are eye-candy - they don't do anything @PointClass base(Appearflags) color(255 128 0) size(-32 -32 -16, 32 32 32) = misc_eastertank : "Tank Pimp" [] @PointClass base(Appearflags) color(255 128 0) size(-32 -32 0, 32 32 32) = misc_easterchick : "Chick #1" [] @PointClass base(Appearflags) color(255 128 0) size(-32 -32 0, 32 32 32) = misc_easterchick2 : "Chick #2" [] // 0225 - removed "target" key - id concluded being able to target // something with a movable barrel was a bug and removed that function :( @PointClass base(Appearflags, Targetname) color(0 128 204) size(-16 -16 0, 16 16 40) = misc_explobox : "Large exploding box" [ mass(integer) : "Mass" : 100 health(integer) : "Health" : 80 dmg(integer) : "Damage" : 150 ] // set angle for gib direction, otherwise it just drops @PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_arm : "arm gib, use with target_spawner" [] @PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_head : "head gib, use with target_spawner" [] @PointClass base(Appearflags) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_gib_leg : "leg gib, use with target_spawner" [] // 0221 - added "item", "deathtarget", and "killtarget" keys @PointClass base(Appearflags, Targetname, Target) color(255 128 0) size(-16 -16 -24, 16 16 32) = misc_insane : "Insane Soldiers" [ spawnflags(Flags) = [ 1 : "Ambush" : 0 2 : "Trigger Spawn" : 0 4 : "Crawl" : 0 8 : "Crucified" : 0 16 : "Stand Ground" : 0 32 : "Always Stand" : 0 ] deathtarget(string) : "Entity to trigger at death" killtarget(string) : "Entity to remove at death" item(string) : "Item to spawn at death" ] // 0303 - added "targetname" key @PointClass base(Appearflags, Targetname) color(255 128 0) size(-64 -64 0, 64 64 128) = misc_satellite_dish : "Satellite Dish" [] @PointClass base(Appearflags, Targetname) color(255 128 0) size(-16 -16 0, 16 16 32) = misc_strogg_ship : "Strogg ship for flybys" [ target(string) : "First path target" speed(integer) : "Speed" ] // place teleporter units 10 units into a brush to get rid of teleport pad @PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter : "Teleporter" [ target(string) : "Teleport Destination" ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter_dest : "Teleport Destination" [] @PointClass base(Appearflags) color(255 128 0) size(-176 -120 -24, 176 120 72) = misc_bigviper : "Large stationary Viper" [] @PointClass base(Appearflags, Targetname) color(255 128 0) size(-16 -16 0, 16 16 32) = misc_viper : "Viper for flybys" [ target(string) : "First path target" speed(integer) : "Speed" ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = misc_viper_bomb : "Viper Bomb" [ dmg(integer) : "Damage" ] // // Monsters! // // 0221 - added "deathtarget", "killtarget", and "combattarget" keys @BaseClass base(Appearflags, Target, Targetname) color(255 128 0) size(-16 -16 -24, 16 16 32) = Monsters [ spawnflags(Flags) = [ 1 : "Ambush" : 0 2 : "Trigger Spawn" : 0 4 : "Sight" : 0 ] combattarget(string) : "Point combat target" deathtarget(string) : "Entity to trigger at death" killtarget(string) : "Entity to remove at death" item(string) : "Spawn Item" ] @PointClass base(Monsters) = monster_berserk : "Berserker" [] @PointClass base(Monsters) size(-56 -56 0, 56 56 80) = monster_boss2 : "Boss2" [] // Just fidgets in one spot and teleports away when triggered // // 0221 - removed Monsters class inheritance @PointClass base(Appearflags, Targetname) size(-32 -32 0, 32 32 90) = monster_boss3_stand : "Stationnary Makron" [] @PointClass base(Monsters) = monster_brain : "Brains" [] @PointClass base(Monsters) = monster_chick : "Iron Maiden" [] @PointClass base(Appearflags, Targetname) color(255 128 0) size(-32 -32 0, 32 32 48) = monster_commander_body : "Tank commander's decapitated body" [] @PointClass base(Monsters) = monster_flipper : "Barracuda shark" [] @PointClass base(Monsters) = monster_floater : "Technician" [] @PointClass base(Monsters) = monster_flyer : "Flyer" [] @PointClass base(Monsters) size(-32 -32 -24, 32 32 64) = monster_gladiator : "Gladiator" [] @PointClass base(Monsters) = monster_gunner : "Gunner" [] @PointClass base(Monsters) = monster_hover : "Icarus" [] @PointClass base(Monsters) = monster_infantry : "Infantry" [] @PointClass base(Monsters) size(-80 -80 0, 90 90 140) = monster_jorg : "Jorg" [] // 0221 - this entity can only spawn once the Jorg dies ... im sure someone will change that tho @PointClass base(Monsters) size(-30 -30 0, 30 30 90) = monster_makron : "Makron" [] @PointClass base(Monsters) = monster_medic : "Medic" [] @PointClass base(Monsters) size(-32 -32 -24, 32 32 32) = monster_mutant : "Mutant" [] @PointClass base(Monsters) = monster_parasite : "Parasite" [] @PointClass base(Monsters) = monster_soldier_light : "Light Soldier" [] @PointClass base(Monsters) = monster_soldier : "Soldier" [] @PointClass base(Monsters) = monster_soldier_ss : "SS Soldier" [] @PointClass base(Monsters) size(-32 -32 -16, 32 32 72) = monster_tank : "Tank" [] @PointClass base(Monsters) size(-64 -64 0, 64 64 72) = monster_supertank : "Super tank" [] @PointClass base(Monsters) size(-32 -32 -16, 32 32 72) = monster_tank_commander : "Tank commander" [] // using a "wait" value of -1 on a path corner causes a func_train to go silent between // itself and the next path corner when the train is restarted. The train's sound will // resume as soon as it reaches a path corner with a "wait" value other than -1 @PointClass base(Appearflags, Targetname) color(128 76 0) size(-8 -8 -8, 8 8 8) = path_corner : "Path marker" [ spawnflags(Flags) = [ 1 : "Teleport" : 0 ] target(string) : "Next path target" pathtarget(string) : "Event to trigger" wait(choices) : "Wait" : 0 = [ -1 : "Wait for retrigger" ] ] // "target" doesn't work (for now)...a separate trigger is needed @PointClass base(Appearflags, Targetname, Target) color(128 76 9) size(-8 -8 -8, 8 8 8) = point_combat : "1st point of combat" [ spawnflags(Flags) = [ 1 : "Hold" : 0 ] ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_blaster : "Blaster" [ spawnflags(Flags) = [ 1 : "No Trail" : 0 2 : "No Effects" : 0 ] dmg(integer) : "Damage" : 15 speed(integer) : "Speed" : 1000 ] // 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(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_changelevel : "Change level" [ map(string) : "Next map" ] // 0221 - added "_minlight" key @SolidClass base(Appearflags, Targetname) color(0 0 255) = target_character : "Use with target_string and func_clock" [ team(string) : "Team" count(integer) : "Position in the string" _minlight(string) : "Minimum light (optional)" ] @PointClass base(Appearflags, Targetname, Target) 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 ] killtarget(string) : "Kill Target" message(string) : "Message" delay(integer) : "Trigger delay" ] @PointClass base(Appearflags, Targetname, Target) 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 ] killtarget(string) : "Kill Target" delay(integer) : "Trigger delay (if activated)" : 1 ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_earthquake : "Level wide earthquake" [ speed(integer) : "Severity of quake" : 200 count(integer) : "Duration" : 5 ] @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_explosion : "Explosion" [ delay(integer) : "Delay before explosion" dmg(integer) : "Radius damage" : 0 ] @PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_goal : "Counts a goal completed" [] @PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_help : "Computer help message" [ spawnflags(Flags) = [ 1 : "Main Objective" : 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(Appearflags, Targetname, Target) 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 ] dmg(integer) : "Damage" ] // 0221 - added "target" key @PointClass base(Appearflags, Targetname, Target) color(0 128 204) size(-8 -8 -8, 8 8 8) = target_lightramp : "Light ramp" [ spawnflags(Flags) = [ 1 : "Toggle" : 0 ] speed(integer) : "Speed" message(string) : "start/end light level" ] @PointClass base(Appearflags, Targetname) color(255 0 255) size(-8 -8 -8, 8 8 8) = target_secret : "Counts a secret found" [ message(string) : "Message to print" : "You have found a secret." ] // set speed and angle, otherwise spawned object drops // // 0221 - changed "target" key description for clarity @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_spawner : "Monster/Item spawner" [ target(string) : "Monster/Item to spawn" speed(integer) : "Speed" ] // looped sounds are automatically volume 1, attenuation 3 :\ @PointClass base(Appearflags, Targetname) 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 ] noise(string) : "Sound (path/file.wav)" attenuation(Choices) : "Attenuation" : 1 = [ -1 : "None, send to whole level" 1 : "Normal fighting sounds" 2 : "Idle sound level" 3 : "Ambient sound level" ] volume(integer) : "Volume (0.0 - 1.0)" : 1 ] // "sounds" values other than 1 are silent. leaving in the other // options for availability to mods/fixes // // 0221 - clarified "count" description @PointClass base(Appearflags, Targetname) 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" ] count(integer) : "Number of pixels in splash (1 - 255)" dmg(integer) : "Radius damage" ] // 0221 - removed "message" key (?) @PointClass base(Appearflags, Targetname) color(0 0 255) size(-8 -8 -8, 8 8 8) = target_string : "String" [ team(string) : "Team" ] // eye candy... Particles #2 (style 22) is quite cool @PointClass base(Appearflags, Targetname) color(255 0 0) size(-8 -8 -8, 8 8 8) = target_temp_entity : "Temp entity" [ style(choices) : "Style" : 22 = [ 20 : "Green Fireball" 21 : "Particles #1" 22 : "Particles #2" ] ] // 0221 - added "delay" and "killtarget" keys @PointClass base(Appearflags, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_always : "Always triggers" [ killtarget(string) : "Kill Target" delay(integer) : "Time before triggering" ] // 0317 - changed from @SolidClass to @PointClass - id source code error // 0321 - added "killtarget" key @PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_counter : "Counter" [ spawnflags(Flags) = [ 1 : "No Message" : 0 ] killtarget(string) : "Kill Target" count(integer) : "Count before trigger" : 2 ] @PointClass base(Appearflags, Targetname, Target) color(76 25 153) = trigger_elevator : "Elevator trigger" [] @SolidClass base(Appearflags) color(128 128 128) = trigger_gravity : "Change gravity" [ gravity(integer) : "Gravity (standard = 1.0)" : 1 ] @SolidClass base(Appearflags, Targetname) 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 ] dmg(integer) : "Damage" : 5 ] @PointClass base(Appearflags, Targetname, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_key : "Triggers with key" [ killtarget(string) : "Kill target" item(string) : "Item classname" : "key_blue_key" ] @SolidClass base(Appearflags) color(128 128 128) = trigger_monsterjump : "Makes monsters jump" [ speed(integer) : "Speed thrown forward" : 200 height(integer) : "Height thrown upward" : 200 ] // 0221 - switched around _relay, _once, and _multiple @PointClass base(Appearflags, Targetname, Target) color(128 128 128) = trigger_relay : "Relay trigger" [ killtarget(string) : "Kill Target" delay(integer) : "Time before triggering" message(string) : "Trigger message" ] @SolidClass base(trigger_relay) = trigger_once : "Single fire trigger" [ spawnflags(Flags) = [ 4 : "Triggered" : 0 ] ] @SolidClass base(trigger_once) = trigger_multiple : "Multiple fire trigger" [ spawnflags(Flags) = [ 1 : "Monster" : 0 2 : "Not Player" : 0 ] wait(integer) : "Seconds between triggers" : 0 ] @SolidClass base(Appearflags) color(128 128 128) = trigger_push : "Push trigger" [ spawnflags(Flags) = [ 1 : "Push Once" : 0 ] speed(integer) : "Speed of push" : 1000 ] // 0221 - added "_minlight" key to _breach and _base @SolidClass base(Appearflags, Targetname, Target) color(128 255 128) = turret_breach : "Turret breach" [ speed(integer) : "Speed" : 50 dmg(integer) : "Damage" : 10 minpitch(integer) : "Miminum pitch angle" : -30 maxpitch(integer) : "Maximum pitch angle" : 30 minyaw(integer) : "Minimum yaw angle" : 0 maxyaw(integer) : "Maximum yaw angle" : 360 team(string) : "Team" _minlight(string) : "Minimum light (optional)" ] @SolidClass base(Appearflags) color(128 255 128) = turret_base : "Turret base" [ team(string) : "Team" _minlight(string) : "Minimum light (optional)" ] @PointClass base(Appearflags) color(128 255 128) size(-16 -16 -24, 16 16 32) = turret_driver : "Turret driver" [ target(string) : "Target (turret_breach)" ] @PointClass base(Appearflags) color(0 128 204) size(-8 -8 -8, 8 8 8) = viewthing : "Just for debugging level - dont use" [] @BaseClass base(Appearflags, Target) color(76 76 255) size(-16 -16 -16, 16 16 16) = Weapons [ team(string) : "Team" ] // // Weapons! // @PointClass base(Weapons) = weapon_shotgun : "Shotgun" [] @PointClass base(Weapons) = weapon_supershotgun : "Super shotgun" [] @PointClass base(Weapons) = weapon_machinegun : "Machinegun" [] @PointClass base(Weapons) = weapon_chaingun : "Chain gun" [] @PointClass base(Weapons) = weapon_grenadelauncher : "Grenade launcher" [] @PointClass base(Weapons) = weapon_rocketlauncher : "Rocket launcher" [] @PointClass base(Weapons) = weapon_hyperblaster : "Hyperblaster" [] @PointClass base(Weapons) = weapon_railgun : "Rail gun" [] @PointClass base(Weapons) = weapon_bfg : "Big Freakin Gun!" []