//
// Quake game definition file (.fgd)
// for Worldcraft 1.6 and above
//
// written by autolycus / autolycus@planetquake.com
// email me with improvements and suggestions
//

// Modified by CZG : grawert@online.no : http://www.planetquake.com/greyvoid/
// further modified by various authors

// Modified by sort 5/28/2018. Merged with Fortress_edit.fgd.
// Visit: http://discord.megateamfortress.com

//
// worldspawn
//

@SolidClass = worldspawn : "World entity"
[
	message(string) : "Text on entering the world"
	worldtype(choices) : "Ambience" : 0 =
	[
		0 : "Medieval"
		1 : "Metal (runic)"
		2 : "Base"
	]
	sounds(integer) : "CD track to play" : 0
	light(integer) : "Ambient light"
	_sunlight(integer) : "Sunlight"
	_sun_mangle(string) : "Sun mangle (Yaw pitch roll)"
]

//
// base marker definitions
//

@baseclass = Angle [ angle(integer) : "Direction" ]

@baseclass = Appearflags [
	spawnflags(Flags) =
	[
		256 : "Not on Easy" : 0
		512 : "Not on Normal" : 0
		1024 : "Not on Hard" : 0
		2048 : "Not in Deathmatch" : 0
	]
]

@baseclass = Targetname [ targetname(target_source) : "Name" ]
@baseclass = Target [ 
	target(target_destination) : "Target" 
	killtarget(target_destination) : "Killtarget"
]



//
// player starts, deathmatch, coop, teleport
//

@baseclass base(Appearflags) size(-16 -16 -24, 16 16 32) 
	color(0 255 0) model({ "path": ":progs/player.mdl" }) = PlayerClass []

@PointClass base(PlayerClass) = info_player_start : "Player 1 start" []
@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" []
@PointClass base(PlayerClass) = info_player_start2 : "Player episode return point" []
@PointClass base(PlayerClass) = info_player_deathmatch : "Deathmatch start" []
@PointClass size(-32 -32 0, 32 32 64) base(PlayerClass, Targetname) = info_teleport_destination : "Teleporter destination" []
@PointClass color(200 150 150) = info_null : "info_null (spotlight target)"
[
	targetname(target_source) : "Name" 
]

@PointClass base(Appearflags, Target, Targetname) color(200 150 150) = info_notnull : "Wildcard entity" // I love you
[
	use(string) : "self.use"
	think(string) : "self.think"
	nextthink(integer) : "nextthink"
	noise(string) : "noise"
	touch(string) : "self.touch"
]
@PointClass base(Appearflags) = info_intermission : "Intermission camera" 
[
	mangle(string) : "Camera angle (Pitch Yaw Roll)"
]

//
// items
//
@baseclass base(Appearflags, Target, Targetname) = Item
[
	message(string) : "Message"
	target(string) : "Target"
	killtarget(string) : "Killtarget"
	delay(integer) : "Delay"
]
@baseclass size(0 0 0, 32 32 56) color(80 0 200) base(Item) = Ammo
[
	spawnflags(flags) = 
	[
		1 : "Large box" : 0
	]
]

@PointClass 
    base(Ammo) 
    model(
        {{
            spawnflags & 1 ->   ":maps/b_batt1.bsp",
                                ":maps/b_batt0.bsp"
        }}
    ) =
    item_cells : "Thunderbolt ammo" []
    
@PointClass 
    base(Ammo) 
    model(
        {{
            spawnflags & 1 ->   ":maps/b_rock1.bsp",
                                ":maps/b_rock0.bsp"
        }}
    ) =
    item_rockets : "Rockets" []

@PointClass
    base(Ammo)
    model(
        {{
            spawnflags & 1 ->   ":maps/b_shell1.bsp",
                                ":maps/b_shell0.bsp"
        }}
    ) = item_shells : "Shells" []
    
@PointClass 
    base(Ammo) 
    model(
        {{
            spawnflags & 1 ->   ":maps/b_nail1.bsp",
                                ":maps/b_nail0.bsp"
        }}
    ) = item_spikes : "Nailgun/Perforator ammo" []

@PointClass
    size(0 0 0, 32 32 56)
    base(Appearflags) 
    model(
        {{
            spawnflags & 2 ->   ":maps/b_bh100.bsp",
            spawnflags & 1 ->   ":maps/b_bh10.bsp",
                                ":maps/b_bh25.bsp"
        }}
    ) =
    item_health : "Health pack" 
[
	spawnflags(flags) = 
	[
		1 : "Rotten" : 0
		2 : "Megahealth" : 0
	]
]

@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/suit.mdl" }) =
	item_artifact_envirosuit : "Environmental protection suit" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/quaddama.mdl" }) =
	item_artifact_super_damage : "Quad damage" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/invulner.mdl" }) =
	item_artifact_invulnerability : "Pentagram of Protection" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/invisibl.mdl" }) = 
	item_artifact_invisibility : "Ring of Shadows" []

@PointClass size(-16 -16 0, 16 16 56) base(Item, Appearflags) model({ "path": ":progs/armor.mdl", "skin": 2 }) =
	item_armorInv : "Red armor (200%)" []
@PointClass size(-16 -16 0, 16 16 56) base(Item, Appearflags) model({ "path": ":progs/armor.mdl", "skin": 1 }) =
	item_armor2 : "Yellow armor (150%)" []
@PointClass size(-16 -16 0, 16 16 56) base(Item, Appearflags) model({ "path": ":progs/armor.mdl" }) =
	item_armor1 : "Green armor (100%)" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/w_s_key.mdl" }) = 
	item_key1 : "Silver key" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/w_g_key.mdl" }) = 
	item_key2 : "Gold key" []
@PointClass size(-16 -16 -24, 16 16 32) base(Item, Appearflags) model({ "path": ":progs/end1.mdl" }) = 
	item_sigil : "Sigil"
[
	spawnflags(Flags) =
	[
		1 : "Episode 1" : 1
		2 : "Episode 2" : 0
		4 : "Episode 3" : 0
		8 : "Episode 4" : 0
	]
]

//
// weapons
//

@baseclass size(-16 -16 0, 16 16 56) color(0 0 200) base(Item, Appearflags) = Weapon []

@PointClass base(Weapon) model({ "path": ":progs/g_shot.mdl" }) = weapon_supershotgun : "Double-barrelled shotgun" []
@PointClass base(Weapon) model({ "path": ":progs/g_nail.mdl" }) = weapon_nailgun : "Nailgun" []
@PointClass base(Weapon) model({ "path": ":progs/g_nail2.mdl" }) = weapon_supernailgun : "Super nailgun" []
@PointClass base(Weapon) model({ "path": ":progs/g_rock.mdl" }) = weapon_grenadelauncher : "Grenade launcher" []
@PointClass base(Weapon) model({ "path": ":progs/g_rock2.mdl" }) = weapon_rocketlauncher : "Rocket launcher" []
@PointClass base(Weapon) model({ "path": ":progs/g_light.mdl" }) = weapon_lightning : "Thunderbolt" []

//
// monsters
//

@baseclass base(Angle, Appearflags, Target, Targetname) color(220 0 0) = Monster 
[
	spawnflags(Flags) = 
	[
		1 : "Ambush" : 0
	]
]

@PointClass base(Monster) size(-16 -16 -24, 16 16 40) model({ "path": ":progs/soldier.mdl" }) = monster_army : "Grunt" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 40) model({ "path": ":progs/dog.mdl" }) = monster_dog : "Nasty Doggie" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) model({ "path": ":progs/ogre.mdl" }) = monster_ogre : "Ogre" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) model({ "path": ":progs/ogre.mdl" }) = monster_ogre_marksman : "Ogre marksman" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) model({ "path": ":progs/knight.mdl" }) = monster_knight : "Knight" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) model({ "path": ":progs/hknight.mdl" }) = monster_hell_knight : "Hell knight" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) model({ "path": ":progs/wizard.mdl" }) = monster_wizard : "Scrag" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) model({ "path": ":progs/demon.mdl" }) = monster_demon1 : "Fiend" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) model({ "path": ":progs/shambler.mdl" }) = monster_shambler : "Shambler" []
@PointClass base(Monster) size(-128 -128 -24, 128 128 256) model({ "path": ":progs/boss.mdl" }) = monster_boss : "Chthon" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 40) model({ "path": ":progs/enforcer.mdl" }) = monster_enforcer : "Enforcer" []
@PointClass base(Monster) size(-32 -32 -24, 32 32 64) model({ "path": ":progs/shalrath.mdl" }) = monster_shalrath : "Vore" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 24) model({ "path": ":progs/tarbaby.mdl" }) = monster_tarbaby : "Spawn" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 24) model({ "path": ":progs/fish.mdl" }) = monster_fish : "Rotfish" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 32) model({ "path": ":progs/oldone.mdl" }) = monster_oldone : "Shub-Niggurath" []
@PointClass base(Monster) size(-16 -16 -24, 16 16 32) model({ "path": ":progs/zombie.mdl" }) = monster_zombie : "Zombie" 
[
	spawnflags(Flags) = 
	[
		1 : "Crucified" : 0
		2 : "Ambush" : 0
	]
]

//
// lights
//

@baseclass color(255 255 40) = Light [
	light(integer) : "Brightness" : 300
	wait(integer) : "Fade distance multiplier" : 1
	delay(choices) : "Attenuation" =
	[
		0 : "Linear falloff (Default)"
		1 : "Inverse distance falloff"
		2 : "Inverse distance squared"
		3 : "No falloff"
		4 : "Local minlight"
		5 : "Inverse distance squared B"
	]
	mangle(string) : "Spotlight angle"
	style(Choices) : "Appearance" : 0 =
	[
		0 : "Normal"
		10: "Fluorescent flicker"
		2 : "Slow, strong pulse"
		11: "Slow pulse, noblack"
		5 : "Gentle pulse"
		1 : "Flicker A"
		6 : "Flicker B"
		3 : "Candle A"
		7 : "Candle B"
		8 : "Candle C"
		4 : "Fast strobe"
		9 : "Slow strobe"
	]
]

@PointClass size(-8 -8 -8, 8 8 8) base(Light, Target, Targetname) = 
	light : "Invisible light source"
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-8 -8 -8, 8 8 8) base(Light, Target, Targetname) = 
	light_fluoro : "Fluorescent light"
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-8 -8 -8, 8 8 8) base(Light, Target, Targetname) = 
	light_fluorospark : "Sparking fluorescent light"
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-8 -8 -8, 8 8 8) base(Appearflags, Light, Target, Targetname) = 
	light_globe : "Globe light"
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-8 -8 -12, 8 8 20) base(Appearflags, Light, Target, Targetname) model({ "path": ":progs/flame2.mdl" }) = 
	light_flame_large_yellow : "Large yellow flame"
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-4 -4 -12, 4 4 20) base(Appearflags, Light, Target, Targetname) model({ "path": ":progs/flame2.mdl" }) = 
	light_flame_small_yellow : "Small yellow flame" 
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-4 -4 -12, 4 4 20) base(Appearflags, Light, Target, Targetname) model({ "path": ":progs/flame2.mdl" }) = 
	light_flame_small_white : "Small white flame"
	[
		spawnflags(Flags) = [ 1 : "Start off" : 0 ]
	]
@PointClass size(-4 -4 -12, 4 4 20) base(Appearflags, Light, Target, Targetname) model({ "path": ":progs/flame.mdl" }) = 
	light_torch_small_walltorch : "Small walltorch" []

//
// misc
//

@SolidClass base(Appearflags) = func_illusionary : "Static nonsolid model"  []

@PointClass base(Appearflags) color(0 150 220) = air_bubbles : "Air bubbles" []
@PointClass base(Appearflags, Targetname) =
	event_lightning : "Chthon's lightning" []
@PointClass base(Appearflags) model({ "path": ":progs/lavaball.mdl" }) = misc_fireball : "Small fireball"
	[ speed(integer) : "Speed" : 40 ]
@PointClass base(Appearflags) size(0 0 0, 32 32 64) model({ "path": ":maps/b_explob.bsp" }) = misc_explobox : "Large exploding container" []
@PointClass base(Appearflags) size(0 0 0, 32 32 32) model({ "path": ":maps/b_exbox2.bsp" }) = misc_explobox2 : "Small exploding container" []
@PointClass base(Appearflags) size(-8 -8 -8, 8 8 8) model({ "path": ":progs/teleport.mdl" }) = misc_teleporttrain : "Flying teleporter destination"
[
	target(string) : "First stop target"
	targetname(target_source) : "Name" 
]
@PointClass base(Appearflags, Targetname) color(220 150 150) = trap_spikeshooter : "Triggered shooter" 
[
	spawnflags(Flags) = 
	[
		1 : "Spike" : 0
		2 : "Laser" : 0
	]
]
@PointClass base(Appearflags) color(220 150 150) = trap_shooter : "Continuous shooter"
[
	nextthink(integer) : "Delay before first spike"
	wait(integer) : "Delay between spikes"
	spawnflags(Flags) = 
	[
		1 : "Spike" : 0
		2 : "Laser" : 0
	]
]

@SolidClass = func_group : "Group of brushes for in-editor use" []
@SolidClass = func_detail : "Group of brushes for certain compilers " []

// 
// ambient sounds
//

@PointClass base(Appearflags) color(150 0 150) = ambient_drip : "Dripping sound" []
@PointClass base(Appearflags) color(150 0 150) = ambient_drone : "Engine/machinery sound" []
@PointClass base(Appearflags) color(150 0 150) = ambient_comp_hum : "Computer background sounds" []
@PointClass base(Appearflags) color(150 0 150) = ambient_flouro_buzz : "Fluorescent buzzing sound" []
@PointClass base(Appearflags) color(150 0 150) = ambient_light_buzz : "Buzzing sound from light" []
@PointClass base(Appearflags) color(150 0 150) = ambient_suck_wind : "Wind sound" []
@PointClass base(Appearflags) color(150 0 150) = ambient_swamp1 : "Frogs croaking" []
@PointClass base(Appearflags) color(150 0 150) = ambient_swamp2 : "Frogs croaking B" []
@PointClass base(Appearflags) color(150 0 150) = ambient_thunder : "Thunder sound" []

// 
// moving things
//


@SolidClass base(Angle, Appearflags, Targetname, Target) = func_door : "Basic door" 
[
	speed(integer) : "Speed" : 100
	sounds(choices) : "Sound" : 0 = 
	[
        	0: "Silent"
		1: "Stone"
		2: "Machine"
		3: "Stone Chain"
		4: "Screechy Metal"
	]
	wait(string) : "Wait before close" : "3" 
	lip(integer) : "Lip" : 8
	dmg(integer) : "Damage inflicted when blocked" : 2
	message(string) : "Message if touched"
	health(integer) : "Health (shootable)" : 0
	spawnflags(flags) =
	[
		1 : "Starts Open" : 0
		4 : "Don't link" : 0
		8 : "Gold Key required" : 0
        	16: "Silver Key required" : 0
        	32: "Toggle" : 0
	]
]

@SolidClass base(Appearflags, Targetname, Target) = func_door_secret : "Secret door" 
[
	angle(integer) : "Direction of second move"
	t_width(integer) : "First move length"
	t_length(integer) : "Second move length"
	dmg(integer) : "Damage when blocked" : 2
	wait(string) : "Wait before close" : "2"
	sounds(choices) : "Sounds" : 3 =
	[
		1: "Medieval"
		2: "Metal"
		3: "Base"
	]
	message(string) : "Message"
	spawnflags(flags) = 
	[
		1 : "Open once" : 0
		2 : "Move left first" : 0
		4 : "Move down first" : 0
		8 : "Not shootable" : 0
        16 : "Always shootable" : 0
	]
]

@SolidClass base(Appearflags, Targetname) = func_wall : "Wall, starts animation when triggered (if supporting texture)" []


@SolidClass base(Angle, Appearflags, Targetname) = func_button : "Button" 
[
	speed(integer) : "Speed" : 40
	lip(integer) : "Lip" : 4
	target(target_source) : "Target"
	health(integer) : "Health (shootable)"
	sounds(choices) : "Sounds" = 
	[
		0 : "Steam metal"
		1 : "Wooden clunk"
		2 : "Metallic clink"
		3 : "In-out"
	]
	wait(string) : "Wait before reset" : "1"
	delay(string) : "Delay before trigger"
	message(string) : "Message" 
]

@SolidClass base(Appearflags, Targetname) = func_train : "Moving platform" 
[
	sounds(choices) : "Sound" : 1 =
	[
		0: "Silent"
		1: "Ratchet Metal"
	]
	speed(integer) : "Speed (units per second)" : 64
	target(target_source) : "Target to start at"
	dmg(integer) : "Damage on block" : 2
]

@PointClass base(Appearflags, Targetname) size(16 16 16) color(0 255 255) = 
	path_corner : "Waypoint for platforms and monsters"
[
	target(target_source) : "Next target"
	wait(integer) : "Wait" : 0
]

@SolidClass base(Appearflags, Targetname) = func_plat : "Elevator" 
[	
	spawnflags(Flags) =
	[
		1 : "Low trigger volume" : 0
	]
	speed(integer) : "Speed" : 150
	height(integer) : "Travel altitude (can be negative)" : 0
	sounds(choices) : "Sound" : 1 =
	[
		0: "None"
		1: "Base fast"
		2: "Chain Slow"
	]
]	

@SolidClass base(Appearflags) = func_episodegate : "Episode Gate"
[
	spawnflags(Flags) =
	[
		1 : "Episode 1" : 1
		2 : "Episode 2" : 0
		4 : "Episode 3" : 0
		8 : "Episode 4" : 0
	]
]

@SolidClass base(Appearflags) = func_bossgate : "Boss gate" []

//
// triggers
//

@baseclass base(Appearflags, Target, Targetname) = Trigger
[
	sounds(choices) : "Sound style" : 0 =
	[
		0 : "None"
		1 : "Secret sound"
		2 : "Beep beep"
		3 : "Large switch"
	]
	delay(string) : "Delay before trigger" : "0"
	message(string) : "Message"
]

@SolidClass base(Trigger) = trigger_changelevel : "Trigger: Change level"
[
	map(string) : "Next map"
	target(target_destination) : "Target"
	spawnflags(flags) =
	[
		1: "No intermission" : 0
	]
]

@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once"
[
	health(integer) : "Health (shootable)"
	spawnflags(flags) = [ 1: "Not touchable" : 0 ]
]
@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" 
[
	wait(string) : "Wait before reset" : "0.2"
	health(integer) : "Health (shootable)"
	spawnflags(flags) = [ 1: "Not touchable" : 0 ]
]
@SolidClass base(Trigger) = trigger_onlyregistered : "Trigger: Registered only" 
[
	spawnflags(flags) = [ 1: "Not touchable" : 0 ]
]
@SolidClass base(Trigger) = trigger_secret : "Trigger: Secret" 
[
	sounds(choices) : "Sound" : 1 =
	[
		1 : "Secret sound"
		2 : "Beep beep"
	]
	spawnflags(flags) = [ 1: "Not touchable" : 0 ]
]

@SolidClass base(Appearflags, Target, Targetname) = trigger_teleport : "Trigger: Teleporter" 
[
	spawnflags(Flags) =
	[
		1 : "Player only" : 0
		2 : "Silent" : 0
	]
]

@SolidClass base(Appearflags) = trigger_setskill : "Trigger: Set skill" 
[
	message(choices) : "Skill to change to" : 1 =
	[
        0 : "Easy"
        1 : "Medium"
        2 : "Hard"
        3 : "Nightmare!"
	]
]
@PointClass base(Trigger) = trigger_relay : "Trigger: Relay"
[
]
@SolidClass base(Angle, Appearflags, Targetname) = trigger_monsterjump : "Trigger: Monster jump" 
[
	speed(integer) : "Jump Speed" : 200
	height(integer) : "Jump Height" : 200
]
@PointClass base(Appearflags, Target, Targetname) = trigger_counter : "Trigger: Counter" 
[
	spawnflags(flags) = [ 1: "No Message" : 0 ]
	count(integer) : "Count before trigger" : 2
	delay (integer) : "Delay"
	message(string) : "Message"
]
@SolidClass base(Angle, Appearflags, Targetname) = trigger_push : "Trigger: Push"
[
	spawnflags(flags) = [ 1: "Push once" : 0 ]
	speed(integer) : "Speed" : 1000
]
@SolidClass  base(Appearflags, Targetname) = trigger_hurt : "Trigger: Hurt" 
[
	dmg(integer) : "Damage per second" : 5
]
@PointClass size(16 16 16) = misc_noisemaker : "Debug entity: continuously plays enforcer sounds" []
@PointClass size(16 16 16) = viewthing : "Debug entity: fake player model" []



// FORTRESS


// TEAM FORTRESS BASE CLASSES

@BaseClass = TFDetectflags [ ]
@baseclass base (TFDetectflags) size(0 0 0, 24 24 24) color(255 128 0) = TfDClass
[
  netname(string) : "netname"
]
@baseclass size(0 0 0, 24 24 24) color(255 128 0) = TfClass
[
  netname(string) : "netname"
]

// MEGA-TF AMBIENT ADDONS

@PointClass = ambient_brook : "Stream or Brook (Mega)" []
@PointClass = ambient_ice_moving : "Ice Moving (Mega)" []
@PointClass = ambient_high_wind : "High wind sound (Mega)" []
@PointClass = ambient_meadow : "Birdsong of Meadow (Mega)" []
@PointClass = ambient_nightpond : "Crickets & Frogs (Mega)" []
@PointClass = ambient_alert : "Star Trek Alert (Mega)" []
@PointClass = ambient_onboard : "Onboard Engines (Mega)" []
@PointClass = ambient_rocket_engine : "Near Rocket Engines (Mega)" []
@PointClass = ambient_chant : "Mystical Chanting (Mega)" []
@PointClass = ambient_unholy : "Unholy Kingdoms Map Music (Mega)" []
@PointClass = ambient_ocean : "Soothing Ocean (Mega)" []
@PointClass = ambient_eerie : "Cavern with Wind (Mega)" []
@PointClass = ambient_lavapit : "Boiling Lava with Steam (Mega)" []
@PointClass = ambient_peakwind : "Whistling Wind (Mega)" []
@PointClass = ambient_flagflap : "Flag Whipping in Wind (Mega)" []

// INFO_TFDETECT

@PointClass base(TfClass) = info_tfdetect : "TF Detection Entity" 
[
	impulse(Flags) =
	[
		1   : "Class Skins" 		: 0
		2   : "Class Persistence" 	: 0
		4   : "Cheat Checking" 		: 0
		8   : "Fortress Map" 		: 0
		16  : "Respawn Delay" 		: 0
		32  : "Respawn Delay" 		: 0
		64  : "Auto Team" 		: 0
		128 : "Individual Frags" 	: 0
	]
	message(string) 		: "Localcmds to send to server on start"
	ammo_shells(integer) 		: "Max lives for player in Team 1."
	ammo_nails(integer) 		: "Max lives for player in Team 2."
	ammo_rockets(integer) 		: "Max lives for player in Team 3."
	ammo_cells(integer) 		: "Max lives for player in Team 4."
	ammo_medikit(integer) 		: "Max players allowed in Team 1."
	ammo_detpack(integer) 		: "Max players allowed in Team 2."
	maxammo_medikit(integer)	: "Max players allowed in Team 3."
	maxammo_detpack(integer)	: "Max players allowed in Team 4."
	maxammo_shells(integer) 	: "Bitfield. Restricted Classes Team 1"
        maxammo_nails(integer)  	: "Bitfield. Restricted Classes Team 2"
        maxammo_rockets(integer) 	: "Bitfield. Restricted Classes Team 3"
        maxammo_cells(integer) 		: "Bitfield. Restricted Classes Team 4"
	hook_out(choices) 		: "Grapple Hook Enabled?" : 0 =
	[
		0 : "Enabled"
		1 : "Disabled"
	]
	display_item_status1(string) 	: "On FlagInfo, display this GoalItem status"
	display_item_status2(string) 	: "On FlagInfo, display this GoalItem status"
	display_item_status3(string) 	: "On FlagInfo, display this GoalItem status"
	display_item_status4(string) 	: "On FlagInfo, display this GoalItem status"
	team_str_home(string) 		: "Disp to owner if is at its origin."
	team_str_moved(string) 		: "Disp to owner if is not at its origin."
	team_str_carried(string) 	: "Disp to owner if being carried."
	non_team_str_home(string) 	: "Disp to others if is at its origin."
	non_team_str_moved(string) 	: "Disp to others if is not at its origin."
	non_team_str_carried(string) 	: "Disp to others if is being carried."
	team_broadcast(string) 		: "String that replaces the Team Menu."
	non_team_broadcast(string) 	: "String that is the Map Help command."
	noise1(string) 			: "Class Menu for Team 1."
	noise2(string) 			: "Class Menu for Team 2."
	noise3(string) 			: "Class Menu for Team 3."
	noise4(string) 			: "Class Menu for Team 4."
]

// INFO_TFGOAL

@PointClass base(TfClass) = info_tfgoal : "TF Goal Entity" 
[
netname(string) : "The name of the Goal."
goal_no(integer) : "Unique ID number of this goal."
group_no(integer) : "ID Number of the goal group this goal belongs to."
owned_by(integer) : "The Team that own this entity."
goal_state(integer) : "Bitfield. The initial state."
mdl(string) : "The mdl used by this Goal if any."
skin(integer) : "The number of the skin on mdl."
goal_activation(integer) : "Bitfield. Activation criteria."
team_no(integer) : "AP must be of this team to activate."
items_allowed(integer) : "AP must have this goal item no"
has_item_from_group(integer) : "AP must have Item from group no"
playerclass(integer) : "Bitfield. Must be of this class(es)."
if_goal_is_active(integer) : "This Goal must be in ACTIVE state."
if_goal_is_inactive(integer) : "This Goal must be in INACTIVE state."
if_goal_is_removed(integer) : "This Goal must be in REMOVED state."
if_group_is_active(integer) : "All Goals in Group must be in ACTIVE."
if_group_is_inactive(integer) : "All Goals in Group must be in INACTIVE."
if_group_is_removed(integer) : "All Goals in Group must be in REMOVED."
if_item_has_moved(integer) : "This Item not moved or carried."
if_item_hasnt_moved(integer) : "This Item must be moved or carried."
else_goal(integer) : "If criteria fails, activate this goal no"
goal_min(string) : "Bounding box min for goal, def is -16 -16 -24"
goal_max(integer) : "Bounding box max for goal, def is 16 16 32"
// When this Goal is successfully activated up, the following variables may be executed
return_item_no(integer) : "Return this GoalItem if not carried"
broadcast(string) : "Message centerprinted to everyone else."
message(string) : "Message centerprinted to AP."
team_broadcast(string) : "Message centerprinted to teammates"
non_team_broadcast(string) : "Message centerprinted to other team"
owners_team_broadcast(string) : "Centerprinted to all owning teammates"
netname_broadcast(string) : "_____ activated this goal.\n" 
netname_team_broadcast(string) : "_____ activated your teams goal.\n"
netname_non_team_broadcast(string) : "____ took an enemy flag!\n"
netname_owners_team_broadcast(string) : "____ took your flag!\n"
deathtype(string) : "___ was killed by this goal!\n"
target(string) : "Activate goal with this targetname"
killtarget(string) : "Remove goal with this targetname"
ex_skill_min(integer) : "Skill Minimum"
ex_skill_max(integer) : "Skill Maximum"
goal_effects(integer) : "Bitfield. See TFEntRef"
maxammo_shells(integer) : "All members of this team are affected."
maxammo_nails(integer) : "All members not of this team are affected."
t_length(integer) : "Everyone within this radius is affected."
goal_results(integer) : "Bitfield. See TFEntRef"
count(integer) : "Specified score given to the AP's team."
increase_team1(integer) : "Specified score given to team 1"
increase_team2(integer) : "Specified score given to team 2"
increase_team3(integer) : "Specified score given to team 3"
increase_team4(integer) : "Specified score given to team 4"
noise(string) : "WAV file played when this Goal is activated."
lives(integer) : "Added to APA's lives."
health(integer) : "Added to APA's health."
armortype(integer) : "Bitfield. The APAs armortype is set to."
armorvalue(integer) : "APA's armorvalue is set to (0-250)"
armorclass(choices) 		: "APA's armorclass is set to" : 0 =
	[
		1 : "Shell Resistant"
		2 : "Nail Resistant"
		4 : "Explosion Resistant"
		8 : "Electricity Resistant"
		16 : "Fire Resistant"
	]
frags(integer) : "Added to APA's frags."
ammo_shells(integer) : "Added this number of shells."
ammo_nails(integer) : "Added this number of nails."
ammo_rockets(integer) : "Added this number of rockets."
ammo_cells(integer) : "Added this number of cells."
ammo_detpack(integer) : "Added this number of det packs."
ammo_medikit(integer) : "Added this number of medikits."
no_grenades_1(integer) : "Added to number type 1 TF grenades."
no_grenades_2(integer) : "Added to number type 2 TF grenades."
invincible_finished(integer) : "Number of seconds of invincibility."
invisible_finished(integer) : "Number of seconds of invisibility."
super_damage_finished(integer) : "Number of seconds of quad."
radsuit_finished(integer) : "Number of seconds of radsuit."
items(integer) : "Goal gives this GoalItem to APA."
axhitme(integer) : "Goal removes this GoalItem from APA with it."
delay_time(integer) : "Delay before activation."
wait(integer) : "Goal stays ACTIVE for this long."
activate_goal_no(integer) : "Activate this Goal."
inactivate_goal_no(integer) : "Inactivate this Goal."
remove_goal_no(integer) : "Remove this Goal."
restore_goal_no(integer) : "Restore this Goal."
activate_group_no(integer) : "Activate all Goals in this GoalGroup."
inactivate_group_no(integer) : "Inactivate all Goals in this GoalGroup."
remove_group_no(integer) : "Remove all Goals in this GoalGroup."
restore_group_no(integer) : "Restore all Goals in this GoalGroup."
remove_item_group(integer) : "Removes a GoalGroup from APA"
all_active(integer) : "If whole group ACTIVE, activate last_impulse"
last_impulse(integer) : "Activate goal based on all_active"
remove_spawnpoint(integer) : "Remove spawnpoint with this goal_no."
restore_spawnpoint(integer) : "Restore spawnpoint with this goal_no."
remove_spawngroup(integer) : "Remove all spawnpoints  in group_no."
restore_spawngroup(integer) : "Restore all spawnpoints in group_no."
display_item_status1(string) : "Display this when activated"
display_item_status2(string) : "Display this when activated"
display_item_status3(string) : "Display this when activated"
display_item_status4(string) : "Display this when activated"
team_str_home(string) : "Your flag is in it's base"
team_str_moved(string) : "Your flag is lying around"
team_str_carried(string) : "Your flag is being carried by"
non_team_str_home(string) : "The enemy flag is in it's base"
non_team_str_moved(string) : "The enemy flag is lying around"
non_team_str_carried(string) : "The enemy flag is being carried by"
]

// INFO_TFGOAL_TIMER

@PointClass base(TfClass) = info_tfgoal_timer : "TF Timer Goal" 
[
goal_effects(integer) : "Bitfield. See TFEntRef"
search_time(integer) : "Time between iterations."
netname(string) : "The name of the Goal."
goal_no(integer) : "Unique ID number of this goal."
group_no(integer) : "ID Number of the goal group this goal belongs to."
goal_state(integer) : "Bitfield. The initial state."
items_allowed(integer) : "AP must have this goal item no"
playerclass(integer) : "Bitfield. Must be of this class(es)."
if_goal_is_active(integer) : "This Goal must be in ACTIVE state."
if_goal_is_inactive(integer) : "This Goal must be in INACTIVE state."
if_goal_is_removed(integer) : "This Goal must be in REMOVED state."
if_group_is_active(integer) : "All Goals in Group must be in ACTIVE."
if_group_is_inactive(integer) : "All Goals in Group must be in INACTIVE."
if_group_is_removed(integer) : "All Goals in Group must be in REMOVED."
if_item_has_moved(integer) : "This Item not moved or carried."
if_item_hasnt_moved(integer) : "This Item must be moved or carried."
has_item_from_group(integer) : "AP must have Item from group no"
maxammo_shells(integer) : "All members of this team are checked for criteria."
maxammo_nails(integer) : "All member not on this team are checked for criteria."
t_length(integer) : "Everyone within this radius is affected."
// When this Goal is successfully activated up, the following variables may be executed
return_item_no(integer) : "Return this GoalItem if not carried"
deathtype(string) : "___ was killed by this goal!\n"
target(string) : "Activate goal with this targetname"
killtarget(string) : "Remove goal with this targetname"
ex_skill_min(integer) : "Skill Minimum"
ex_skill_max(integer) : "Skill Maximum"
goal_results(integer) : "Bitfield. See TFEntRef"
increase_team1(integer) : "Specified score given to team 1"
increase_team2(integer) : "Specified score given to team 2"
increase_team3(integer) : "Specified score given to team 3"
increase_team4(integer) : "Specified score given to team 4"
noise(string) : "WAV file played when this Goal is activated."
lives(integer) : "Added to APA's lives."
health(integer) : "Added to APA's health."
armortype(integer) : "Bitfield. The APAs armortype is set to."
armorvalue(integer) : "APA's armorvalue is set to (0-250)"
armorclass(choices) 		: "APA's armorclass is set to" : 0 =
	[
		1 : "Shell Resistant"
		2 : "Nail Resistant"
		4 : "Explosion Resistant"
		8 : "Electricity Resistant"
		16 : "Fire Resistant"
	]
frags(integer) : "Added to APA's frags."
ammo_shells(integer) : "Added this number of shells."
ammo_nails(integer) : "Added this number of nails."
ammo_rockets(integer) : "Added this number of rockets."
ammo_cells(integer) : "Added this number of cells."
ammo_detpack(integer) : "Added this number of det packs."
ammo_medikit(integer) : "Added this number of medikits."
no_grenades_1(integer) : "Added to number type 1 TF grenades."
no_grenades_2(integer) : "Added to number type 2 TF grenades."
invincible_finished(integer) : "Number of seconds of invincibility."
invisible_finished(integer) : "Number of seconds of invisibility."
super_damage_finished(integer) : "Number of seconds of quad."
radsuit_finished(integer) : "Number of seconds of radsuit."
items(integer) : "Goal gives this GoalItem to APA."
axhitme(integer) : "Goal removes this GoalItem from APA with it."
delay_time(integer) : "Delay before activation."
wait(integer) : "Goal stays ACTIVE for this long."
activate_group_no(integer) : "Activate all Goals in this GoalGroup."
inactivate_group_no(integer) : "Inactivate all Goals in this GoalGroup."
remove_group_no(integer) : "Remove all Goals in this GoalGroup."
restore_group_no(integer) : "Restore all Goals in this GoalGroup."
activate_goal_no(integer) : "Activate this Goal."
inactivate_goal_no(integer) : "Inactivate this Goal."
remove_goal_no(integer) : "Remove this Goal."
restore_goal_no(integer) : "Restore this Goal."
all_active(integer) : "If whole group ACTIVE, activate last_impulse"
last_impulse(integer) : "Activate goal based on all_active"
remove_spawnpoint(integer) : "Remove spawnpoint with this goal_no."
restore_spawnpoint(integer) : "Restore spawnpoint with this goal_no."
remove_spawngroup(integer) : "Remove all spawnpoints  in group_no."
restore_spawngroup(integer) : "Restore all spawnpoints in group_no."
display_item_status1(string) : "Display this when activated"
display_item_status2(string) : "Display this when activated"
display_item_status3(string) : "Display this when activated"
display_item_status4(string) : "Display this when activated"
team_str_home(string) : "Your flag is in it's base"
team_str_moved(string) : "Your flag is lying around"
team_str_carried(string) : "Your flag is being carried by"
non_team_str_home(string) : "The enemy flag is in it's base"
non_team_str_moved(string) : "The enemy flag is lying around"
non_team_str_carried(string) : "The enemy flag is being carried by"
]

// ITEM_TFGOAL

@PointClass base(TfClass) = item_tfgoal : "TF Goal Item" 
[
netname(string) : "The name of the Goal."
goal_no(integer) : "Unique ID number of this goal."
group_no(integer) : "ID Number of the goal group this goal belongs to."
owned_by(integer) : "The Team that own this entity."
goal_state(integer) : "Bitfield. The initial state."
mdl(string) : "The mdl used by this Goal if any."
skin(integer) : "The number of the skin on mdl."
goal_activation(integer) : "Bitfield. Activation criteria."
team_no(integer) : "AP must be of this team to activate."
items_allowed(integer) : "AP must have this goal item no"
has_item_from_group(integer) : "AP must have Item from group no"
playerclass(integer) : "Bitfield. Must be of this class(es)."
if_goal_is_active(integer) : "This Goal must be in ACTIVE state."
if_goal_is_inactive(integer) : "This Goal must be in INACTIVE state."
if_goal_is_removed(integer) : "This Goal must be in REMOVED state."
if_group_is_active(integer) : "All Goals in Group must be in ACTIVE."
if_group_is_inactive(integer) : "All Goals in Group must be in INACTIVE."
if_group_is_removed(integer) : "All Goals in Group must be in REMOVED."
if_item_has_moved(integer) : "This Item not moved or carried."
if_item_hasnt_moved(integer) : "This Item must be moved or carried."
else_goal(integer) : "If criteria fails, activate this goal no"
goal_min(string) : "Bounding box min for goal, def is -16 -16 -24"
goal_max(integer) : "Bounding box max for goal, def is 16 16 32"
// When this Goal is successfully activated up, the following variables may be executed
return_item_no(integer) : "Return this GoalItem if not carried"
broadcast(string) : "Message centerprinted to everyone else."
message(string) : "Message centerprinted to AP."
team_broadcast(string) : "Message centerprinted to teammates"
non_team_broadcast(string) : "Message centerprinted to other team"
owners_team_broadcast(string) : "Centerprinted to all owning teammates"
netname_broadcast(string) : "_____ activated this goal.\n" 
netname_team_broadcast(string) : "_____ activated your teams goal.\n"
netname_non_team_broadcast(string) : "____ took an enemy flag!\n"
netname_owners_team_broadcast(string) : "____ took your flag!\n"
deathtype(string) : "___ was killed by this goal!\n"
target(string) : "Activate goal with this targetname"
killtarget(string) : "Remove goal with this targetname"
ex_skill_min(integer) : "Skill Minimum"
ex_skill_max(integer) : "Skill Maximum"
goal_effects(integer) : "Bitfield. See TFEntRef"
maxammo_shells(integer) : "All members of this team are affected."
maxammo_nails(integer) : "All members not of this team are affected."
t_length(integer) : "Everyone within this radius is affected."
goal_results(integer) : "Bitfield. See TFEntRef"
count(integer) : "Specified score given to the AP's team."
increase_team1(integer) : "Specified score given to team 1"
increase_team2(integer) : "Specified score given to team 2"
increase_team3(integer) : "Specified score given to team 3"
increase_team4(integer) : "Specified score given to team 4"
noise(string) : "WAV file played when this Goal is activated."
lives(integer) : "Added to APA's lives."
health(integer) : "Added to APA's health."
armortype(integer) : "Bitfield. The APAs armortype is set to."
armorvalue(integer) : "APA's armorvalue is set to (0-250)"
armorclass(choices) 		: "APA's armorclass is set to" : 0 =
	[
		1 : "Shell Resistant"
		2 : "Nail Resistant"
		4 : "Explosion Resistant"
		8 : "Electricity Resistant"
		16 : "Fire Resistant"
	]
frags(integer) : "Added to APA's frags."
ammo_shells(integer) : "Added this number of shells."
ammo_nails(integer) : "Added this number of nails."
ammo_rockets(integer) : "Added this number of rockets."
ammo_cells(integer) : "Added this number of cells."
ammo_detpack(integer) : "Added this number of det packs."
ammo_medikit(integer) : "Added this number of medikits."
no_grenades_1(integer) : "Added to number type 1 TF grenades."
no_grenades_2(integer) : "Added to number type 2 TF grenades."
invincible_finished(integer) : "Number of seconds of invincibility."
invisible_finished(integer) : "Number of seconds of invisibility."
super_damage_finished(integer) : "Number of seconds of quad."
radsuit_finished(integer) : "Number of seconds of radsuit."
items(integer) : "Goal gives this GoalItem to APA."
axhitme(integer) : "Goal removes this GoalItem from APA with it."
delay_time(integer) : "Delay before activation."
wait(integer) : "Goal stays ACTIVE for this long."
activate_goal_no(integer) : "Activate this Goal."
inactivate_goal_no(integer) : "Inactivate this Goal."
remove_goal_no(integer) : "Remove this Goal."
restore_goal_no(integer) : "Restore this Goal."
activate_group_no(integer) : "Activate all Goals in this GoalGroup."
inactivate_group_no(integer) : "Inactivate all Goals in this GoalGroup."
remove_group_no(integer) : "Remove all Goals in this GoalGroup."
restore_group_no(integer) : "Restore all Goals in this GoalGroup."
remove_item_group(integer) : "Removes a GoalGroup from APA"
all_active(integer) : "If whole group ACTIVE, activate last_impulse"
last_impulse(integer) : "Activate goal based on all_active"
remove_spawnpoint(integer) : "Remove spawnpoint with this goal_no."
restore_spawnpoint(integer) : "Restore spawnpoint with this goal_no."
remove_spawngroup(integer) : "Remove all spawnpoints  in group_no."
restore_spawngroup(integer) : "Restore all spawnpoints in group_no."
display_item_status1(string) : "Display this when activated"
display_item_status2(string) : "Display this when activated"
display_item_status3(string) : "Display this when activated"
display_item_status4(string) : "Display this when activated"
team_str_home(string) : "Your flag is in it's base"
team_str_moved(string) : "Your flag is lying around"
team_str_carried(string) : "Your flag is being carried by"
non_team_str_home(string) : "The enemy flag is in it's base"
non_team_str_moved(string) : "The enemy flag is lying around"
non_team_str_carried(string) : "The enemy flag is being carried by"
]

// INFO_PLAYER_TEAMSPAWN

@PointClass size(-16 -16 -24, 16 15 24) color(128 0 128) base(Appearflags) = info_player_teamspawn : "TF Player Start"
[
netname(string) : "netname"
goal_no(integer) : "Goal Number"
group_no(integer) : "Group Number"
team_no(integer) : "Team to Spawn Here"
items(integer) : "Goal given to first to spawn here."
axhitme(integer) : "Removes this GoalItem from APA."
message(string) : "Disp to the first to spawn here."
goal_activation(integer) : "Bitfields. See TFEntRef."
goal_effects(choices) 		: "Remove spawnpoint after first use." : 0 =
	[
		0 : "Enabled"
		1 : "Disabled"
	]
activate_goal_no(integer) : "Activate this Goal."
items_allowed(integer) : "AP needs this GoalItem."
has_item_from_group(integer) : "AP must have Item from group_no"
playerclass(integer) : "Bitfield. Must be of this class(es)"
if_goal_is_active(integer) : "This Goal must be in ACTIVE state."
if_goal_is_inactive(integer) : "This Goal must be in INACTIVE state."
if_goal_is_removed(integer) : "This Goal must be in REMOVED state."
if_group_is_active(integer) : "All Goals in Group must be in ACTIVE."
if_group_is_inactive(integer) : "All Goals in Group must be in INACTIVE."
if_group_is_removed(integer) : "All Goals in Group must be in REMOVED."
if_item_has_moved(integer) : "This Item not moved or carried."
if_item_hasnt_moved(integer) : "This Item must be moved or carried."
target(string) : "Activate any target with this name"
killtarget(string) : "Remove any target with this name"
goal_state(integer) : "Bitfield. The initial state."
ex_skill_min(integer) : "Skill Minimum"
ex_skill_max(integer) : "Skill Maximum"
count(integer) : "Specified score given to the AP's team."
increase_team1(integer) : "Specified score given to team 1"
increase_team2(integer) : "Specified score given to team 2"
increase_team3(integer) : "Specified score given to team 3"
increase_team4(integer) : "Specified score given to team 4"
noise(string) : "WAV file played when this Goal is activated."
lives(integer) : "Added to APA's lives."
health(integer) : "Added to APA's health."
armortype(integer) : "Bitfield. The APAs armortype is set to."
armorvalue(integer) : "APA's armorvalue is set to (0-250)"
armorclass(choices) 		: "APA's armorclass is set to" : 0 =
	[
		1 : "Shell Resistant"
		2 : "Nail Resistant"
		4 : "Explosion Resistant"
		8 : "Electricity Resistant"
		16 : "Fire Resistant"
	]
frags(integer) : "Added to APA's frags."
ammo_shells(integer) : "Added this number of shells."
ammo_nails(integer) : "Added this number of nails."
ammo_rockets(integer) : "Added this number of rockets."
ammo_cells(integer) : "Added this number of cells."
ammo_detpack(integer) : "Added this number of det packs."
ammo_medikit(integer) : "Added this number of medikits."
no_grenades_1(integer) : "Added to number type 1 TF grenades."
no_grenades_2(integer) : "Added to number type 2 TF grenades."
invincible_finished(integer) : "Number of seconds of invincibility."
invisible_finished(integer) : "Number of seconds of invisibility."
super_damage_finished(integer) : "Number of seconds of quad."
radsuit_finished(integer) : "Number of seconds of radsuit."
activate_goal_no(integer) : "Activate this Goal."
inactivate_goal_no(integer) : "Inactivate this Goal."
remove_goal_no(integer) : "Remove this Goal."
restore_goal_no(integer) : "Restore this Goal."
activate_group_no(integer) : "Activate all Goals in this GoalGroup."
inactivate_group_no(integer) : "Inactivate all Goals in this GoalGroup."
remove_group_no(integer) : "Remove all Goals in this GoalGroup."
restore_group_no(integer) : "Restore all Goals in this GoalGroup."
remove_item_group(integer) : "Removes a Items APA has from GoalGroup"
all_active(integer) : "If all Group ACTIVE, activate last_impulse goal."
last_impulse(integer) : "If all Group are ACTIVE, activate this Goal."
remove_spawnpoint(integer) : "Remove the spawnpoint with this goal_no."
restore_spawnpoint(integer) : "Restore the spawnpoint with this goal_no."
remove_spawngroup(integer) : "Remove all spawnpoints with this group_no."
restore_spawngroup(integer) : "Restore all spawnpoints with this group_no."
]

