// Heretic 2 demo forge game definition file (.fgd)
// for Worldcraft 1.6 and above
// last update: 8 nov 98
// Ver 0.00000000008

// Written by Manly Jack / jarad@ihug.co.nz
// email me with improvements and suggestions.
// Based on the default quake2 fdg so most comments are from that. Things I have added are with a
// h2 comment.
// Damn this is a mess. I wrote most of this up within a week or 2 of the demo being released.
//
// special thanks to: Tiglari for the .ent files
//

// Revised by whirledtsar on July 27 2020, based on source code

//----------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------

//
// worldspawn
//

@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(integer) : "Speed of rotation (degrees/second)"
	sounds(integer) : "CD Track Number" : 1
	gravity(integer) : "Gravity" : 800
	offensive(choices) : "Starting offensive weapons (not for single-player)" =
	[
		1 : "Staff"
		2 : "Fireball"
		4 : "Hellstaff"
		8 : "Magic Missile"
		16 : "Storm Bow"
		32 : "Sphere Of Annihilation"
		64 : "Phoenix Bow"
		128 : "Mace Balls"
		256 : "Firewall"
	]
	defensive(choices) : "Starting defensive weapons (not for single-player)" =
	[
		1 : "Ring of Repulsion"
		2 : "Lightning Shield"
		4 : "Teleport"
		8 : "Morph Ovum"
		16 : "Meteor Barrier"
	]
	light(integer)	: "Light"

	cooptimeout(integer) : "Seconds to wait for all clients to have joined a map in coop"
	skinnum(integer) : "Plague level for Corvus (0-2)"
]

//
// base marker definitions - Appearflags=Spawnflags
//

@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"
]

// H2 - Check
@PointClass base(PlayerClass, Target, Targetname) = info_buoy : "Buoy for monster navigation

THE BUOY TEN COMMANDMENTS as Handed Down to M0535 on Mount Sine-AI:
  0) Thou shalt not give a buoy more than one targetname
  1) Thou shalt have a buoy target up to two OTHER buoies
  2) Thou shalt connect each buoy to up to three other buoies (only three lines can come off a buoy)
  3) Thou shalt knowest that direction of connection does not matter unless you are trying to make a one-way buoy (see ONEWAY)
  4) Thou shalt place thine buoy in an area that a monster can fit into
  5) Thou shalt place thine buoies such that each buoy can 'see' each buoy it's conencted to (have a clear line of sight)
  6) Thou shalt knowest that buoies do not need to be placed throughout wide open areas, monsters can get around fine there.
  7) Thou shalt not place buoies in the ground or walls or any other world object
  8) Thou shalt not give any two buoies the same targetname, and each buoy should have a targetname, even if it is not targeted (this is for debug purposes)
  9) Thou shalt not have any other AI system above the BUOYAH! Navigation System.

Keep in mind that when choosing a buoy, monsters need to be able to find a buoy withing 1024 map units of them.  So make sure buoies are placed so that wherever they can get, they are within 1024 of a buoy.
"
[
	spawnflags(flags) =
	[
		1 : "Jump"
		2 : "Activate" : 0 : "Will allow monster to activate doors, triggers, plats, etc. NOTE: the activated object's 'pathtargetname' must match the buoy's 'pathtarget' field."
		4 : ""
		8 : "One-way" : 0 : "This buoy will not allow buoys it's targeting to send monsters backwards along the path.  Basically, does not back-link, paths from it to buoys it's targeting become one-way."
	]
	delay(integer)	: "Time monster waits after using pathtarget"
	height(integer)	: "Height of jump" : 400
	jumptarget(target_destination)	: "JumpTarget" : "used with JUMP - this buoy will only make monsters jump at the buoy whose 'targetname' is the same as 'jumpbuoy'- without this, the buoy WILL NOT MAKE MONSTERS JUMP!"
	pathtarget(target_destination)	: "Target to use when monster reaches buoy. Requires 'Activate' spawnflag"
	speed(integer)	: "Speed of jump" : 400
	target(target_destination) : "Next buoy"
	target2(target_destination)	: "Next buoy (alternate)"
	wait(integer)	: "Time before monster can use pathtarget again"
]


// 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.


// Keep in mind when using func_areaportal that it must
// *completely* separate two areas.  otherwise, you will
// get an error message and the areaportal will not work
//

@SolidClass base(Appearflags, Targetname) = func_areaportal : "Area portal (Vis blocker)" []

@SolidClass base(Appearflags, Target, Targetname) color(0 128 204) = func_button : "Button"
[
	angle(integer) : "Angle"
	killtarget(string) : "Kill Target"
	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 : "Silent"
		1 : "Generic button"
		2 : "Clanky button"
		3 : "Steam button"
	]
	message(string) : "Activation message"
	_minlight(integer) : "Minimum light (0-1)"
]

// H2
@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_monsterspawner : "Monster Spawner"
[
	spawnflags(flags) =
	[
		1 : "On death"
		2 : "Spawn at random buoy"
		4 : "Not angry"
	]
	style(choices) : "Type of monster" : 3 =
	[
		0 : "Nothing"
		1 : "Rat"
		2 : "Plague Elf"
		3 : "Plague Spreader"
		4 : "Gorgon"
		5 : "Chkroktk"
		6 : "Tchekrik (male)"
		7 : "Tchekrik (female)"
		8 : "Tchekrik Mothers"
		9 : "High Priestess"
		10 : "Ogle"
		11 : "Seraph Overlord"
		12 : "Seraph Guard"
		13 : "Assassin"
		14 : "Morcalavin"
		15 : "Dranor"
		16 : "Sidhe Guard"
		17 : "Siernan"
		18 : "Ssithra Scout"
		19 : "Ssithra Victim"
		20 : "Ssithra Mutant"
		21 : "Harpy"
		22 : "Fish"
		23 : "Chicken"
		24 : "Plague Ssithra"
		25 : "Gkrokon"
		26 : "Giant Rat"
		27 : "Palace Plague Guard"
		28 : "Palace Plague Guard (invisible)"
	]
	count(integer) : "Count"
	distance(integer) : "Radius from spawner"
	jump_chance(integer) : "Jump chance of monster"
	melee_range(integer) : "Melee range of monster"
	missile_range(integer) : "Missile range of monster"
	mintel(integer) : "Mintel of monster"
	wait(integer) : "Time between spawns"
]

@BaseClass base(Appearflags, Targetname, Target) = Door
[
	sounds(choices) : "Sound type" : 0 =
	[
		0 : "Silent"
		1 : "Generic"
		2 : "Heavy stone"
		3 : "Palace swing arm"
		4 : "Palace stone bridge"
		5 : "Small wood door"
		6 : "Large wood door"
		7 : "Small stone/wood door"
		8 : "Large stone/wood door"
		9 : "Average metal swinging"
		10 : "Fast sliding"
		11 : "Hive, metal, multipaneled sliding"
		12 : "Huge stone swinging"
		13 : "Large elevator"
		14 : "Crane (warehouse)"
		15 : "Mine pump"
		16 : "Sliding metal (Cloud Labs)"
		17 : "Rotating table (Clodu Labs)"
		18 : "Piston"
		19 : "Short metal clang"
		20 : "Going underwater"
		21 : "Bam"
	]
	angle(integer) : "Direction"
	dmg(integer) : "Damage when blocked" : 2
	health(integer) : "Health (shootable)"
	wait(choices) : "Wait before close" : 5 =
	[
		-1 : "Stay open"
	]
]

@SolidClass base(Door) color(0 128 204) = func_door : "Door"
[
	spawnflags(Flags) =
	[
		1 : "Start Open" : 0
		4 : "Crusher" : 0 : "Crush blocking entities rather than returning"
		8 : "No Monsters" : 0
		16 : "Animated" : 0
		32 : "Toggle" : 0
		64 : "Animated Fast" : 0
	]
	angle(integer) : "Angle" : 0
	height(integer) : "Absolute move distance (optional)"
	killtarget(string) : "Kill Target"
	team(integer) : "Linked door group" : 0 : "Doors with matching team numbers will open together"
	message(string) : "Message for targetted door"
	speed(integer) : "Speed" : 100
	lip(integer) : "Lip remaining after move" : 8
	_minlight(integer) : "Minimum light (0-1)"
]

@SolidClass base(Door) 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
		256 : "Swing away" : 0
	]
	killtarget(string) : "Kill Target"
	team(string) : "Team"
	distance(integer) : "Degrees of rotation" : 90
	message(string) : "Message for targetted door"
	speed(integer) : "Speed" : 100
	wait(choices) : "Wait before close" : 3 =
	[
		-1 : "Stay open"
		-2 : "Never stop"
	]
	_minlight(integer) : "Minimum light (0-1)"
]


@SolidClass base(Door) color(0 128 204) = func_door_secret : "Secret Door"
[
	spawnflags(Flags) =
	[
		1 : "Always shoot" : 0
		2 : "1st Left" : 0
		4 : "1st Down" : 0
	]
	message(string) : "Message"
	_minlight(integer) : "Minimum light (0-1)"
]

// h2
@SolidClass base(Appearflags, Targetname, Target) color(0 128 204) = breakable_brush : "Exploding/Breakable brush"
[
	spawnflags(Flags) =
	[
		1 : "Kill all touching breakables" : 0
		2 : "Don't link to other breakables" : 0
		4 : "" : 0
		8 : "Translucent" : 0
		16 : "Invulnerable" : 0
		32 : "Invisible" : 0
		64 : "Pull/pushable" : 0
		128 : "Player can't damage" : 0
	]
    materialtype(choices) : "Material Type" : 1 =
	[
		1 : "Grey stone"
		2 : "Cloth"
		3 : "Metal"
		4 : "Flesh"
		5 : "Pottery"
		6 : "Glass"
		7 : "Leaf"
		8 : "Wood"
		9 : "Brown stone"
		10 : "None (still makes smoke)"
	]
    model(string): "Model"
	health(integer) : "Health" : 100
	mass(integer) : "Mass (debris)" : 75
	dmg(integer) : "Damage" : 0

	_minlight(integer) : "Minimum light (0-1)"
]

@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
	]
	dmg(integer) : "Damage" : 100
	_minlight(integer) : "Minimum light (0-1)"
]

@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_plat : "Platform"
[
	spawnflags(Flags) =
	[
		1 : "Plat Low Trigger" : 0
		4 : "Crush" : 0 : "Crush blocking entities rather than returning"
	]
	speed(integer) : "Speed" : 200
	accel(integer) : "Acceleration" : 500
	lip(integer) : "Lip remaining after move" : 8
	height(integer) : "Movement distance"
	sounds(choices) : "Sound type" : 0 =
	[
		0 : "Silent"
		1 : "Generic"
		2 : "Heavy stone"
		3 : "Palace swing arm"
		4 : "Palace stone bridge"
		5 : "Small wood door"
		6 : "Large wood door"
		7 : "Small stone/wood door"
		8 : "Large stone/wood door"
		9 : "Average metal swinging"
		10 : "Fast sliding"
		11 : "Hive, metal, multipaneled sliding"
		12 : "Huge stone swinging"
		13 : "Large elevator"
		14 : "Crane (warehouse)"
		15 : "Mine pump"
		16 : "Sliding metal (Cloud Labs)"
		17 : "Rotating table (Clodu Labs)"
		18 : "Piston"
		19 : "Short metal clang"
		20 : "Going underwater"
		21 : "Bam"
	]
	_minlight(integer) : "Minimum light (0-1)"
]


@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
	]
	sounds(choices) : "Sound type" : 0 =
	[
		0 : "Silent"
		1 : "Generic"
		2 : "Huge wheel (Mines)"
		3 : "Rock crusher (Mines)"
		4 : "Spanking paddles (Gauntlet)"
	]
	team(string) : "Team"
	speed(integer) : "Speed" : 100
	dmg(integer) : "Damage when blocked" : 2
	_minlight(integer) : "Minimum light (0-1)"
]

@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 when used the first time if spawned with 'start on'"
]


@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
		8 : "Use origin brush" : 0
		16 : "Not solid"
	]
	materialtype(choices) : "Material type" : 1 =
	[
		0 : "MAT_WOOD"
		1 : "MAT_GREYSTONE"
		2 : "MAT_CLOTH"
		3 : "MAT_METAL"
		9 : "MAT_BROWNSTONE"
		10 : "MAT_NONE"
	]
	wait(choices) : "Wait" : 0 =
	[
		-1 : "stop and don't move again until triggered"
		-3 : "stop and explode"
		-4 : "go through animations (only if a model)"
	]
	target(string) : "First stop target"
	team(string) : "Team"
	speed(integer) : "Speed" : 100
	dmg(integer) : "Damage when blocked" : 2
	count(integer) : "Number of animation frames (for models)"
	file(string) : "Model (path/file.fm)"
	noise(string) : "Sound (path/file.wav)"
	rotate(integer) : "Speed of rotation"
	_minlight(integer) : "Minimum light (0-1)"
]


@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 (0-1)"
]

@SolidClass base(Appearflags, Targetname) color(0 128 204) = func_water : "Moveable water"
[
	angle(choices) : "Direction" =
	[
		-1 : "Up"
		-2 : "Down"
	]
	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 (0-1)"
]

@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" []

//
//	Weapons/Items
//

@BaseClass base(Appearflags, Target, Targetname) color(76 76 255) size(-16 -16 -16, 16 16 16) = Items
[
	spawnflags(Flags) =
	[
		1 : "Coop only"
		2 : "Don't drop"
	]
	team(string) : "Team"
]

@PointClass base(Items) = item_weapon_firewall : "Firewall" []
@PointClass base(Items) = item_weapon_maceballs : "Maceballs" []
@PointClass base(Items) = item_weapon_phoenixbow : "Phoenix Bow" []
@PointClass base(Items) = item_weapon_sphereofannihilation : "Sphere of Annihilation" []
@PointClass base(Items) = item_weapon_redrain_bow : "Red Rain Bow" []
@PointClass base(Items) = item_weapon_magicmissile : "Magic Missile" []
@PointClass base(Items) = item_weapon_hellstaff : "Hell Staff" []

@PointClass base(Items) = item_ammo_hellstaff : "Hellstaff ammo" []
@PointClass base(Items) = item_ammo_phoenix : "Phoenix ammo" []
@PointClass base(Items) = item_ammo_redrain : "Red rain ammo" []

@PointClass base(Items) = item_health_full : "Full Health" []
@PointClass base(Items) = item_health_half : "Half Health" []

@PointClass base(Items) = item_mana_combo_half : "Half Combo Mana" []
@PointClass base(Items) = item_mana_combo_quarter : "Quater Combo Mana" []

@PointClass base(Items) = item_mana_defensive_full : "Full Defensive Mana" []
@PointClass base(Items) = item_mana_defensive_half : "Half Defensive Mana" []
@PointClass base(Items) = item_mana_offensive_full : "Full Offensive Mana" []
@PointClass base(Items) = item_mana_offensive_half : "Half Offensive Mana" []

@PointClass base(Items) = item_defense_meteorbarrier : "Meteor Barrier spell" []
@PointClass base(Items) = item_defense_shield : "Shield Spell" []
@PointClass base(Items) = item_defense_polymorph : "Polymorph Spell" []
@PointClass base(Items) = item_defense_teleport : "Teleport Spell" []
@PointClass base(Items) = item_defense_ringofrepulsion : "Ring of Repulsion" []
@PointClass base(Items) = item_defense_powerup : "Tome Powerup - non-functional in single-player" []
@PointClass base(Items) = item_defense_tornado : "Whirlwind spell (Enhancement patch)" []

@PointClass base(Items) = item_puzzle_canyonkey : "Canyon key" []
@PointClass base(Items) = item_puzzle_cog : "Cog" []
@PointClass base(Items) = item_puzzle_cloudkey : "Cloud Fortress key" []
@PointClass base(Items) = item_puzzle_crystal : "Andoria crystal" []
@PointClass base(Items) = item_puzzle_dungeonkey : "Dungeon key" []
@PointClass base(Items) = item_puzzle_highpriestesskey : "High Priestess key" []
@PointClass base(Items) = item_puzzle_highpriestesssymbol : "High Priestess symbol" []
@PointClass base(Items) = item_puzzle_hive2amulet : "Hive amulet" []
@PointClass base(Items) = item_puzzle_hive2gem : "Hive gem" []
@PointClass base(Items) = item_puzzle_hive2spear : "Hive spear" []
@PointClass base(Items) = item_puzzle_minecartwheel : "Minecart wheel" []
@PointClass base(Items) = item_puzzle_ore : "Unrefined ore" []
@PointClass base(Items) = item_puzzle_refinedore : "Refined ore" []
@PointClass base(Items) = item_puzzle_shield : "Ssithra shield" []
@PointClass base(Items) = item_puzzle_potion : "Healer potion" []
@PointClass base(Items) = item_puzzle_slumcontainer : "Andoria container" []
@PointClass base(Items) = item_puzzle_plazacontainer : "Andoria container" []
@PointClass base(Items) = item_puzzle_tavernkey : "Tavern key" []
@PointClass base(Items) = item_puzzle_tome : "Tome" []
@PointClass base(Items) = item_puzzle_townkey : "Town key" []

@PointClass base(Items) = item_spitter : "Triggered item spawner"
[
	spawnflags(flags) =
	[
		1 : "No flash"
	]
    angles(integer) : "Angles"
	count(integer) : "Count"
	radius(integer) : "Radius"
	target(string) : "Classname of items to create"
	spawnflags2(integer) : "Spawnflags for items created"
]

//
//	Lights
//

@PointClass base(Appearflags, Target, Targetname) color(0 255 0) size(-8 -8 -8, 8 8 8) = light : "Light"
[
	spawnflags(Flags) =
	[
		8 : "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(light) size(-7 -7 -7, 7 7 25) = light_buglight : "Bug light"
[
	spawnflags(flags) =
	[
		16 : "No halo"
	]
]
@PointClass base(light) size(-36 -36 -43, 34 34 43) = light_chandelier1 : "Chandelier (dirty gold) A tarnished gold chandelier hung from chains." []
@PointClass base(light) size(-18 -18 -40, 18 18 40) = light_chandelier2 : "Chandelier (dirty metal) A tarnished metal chandelier hung from chains." []
@PointClass base(light) size(-34 -34 -80, 34 34 0) = light_chandelier3 : "Chandelier (gold & large) A golden chandelier." []
@PointClass base(light) size(-14 -14 -17, 14 14 17) = light_floortorch : "Floor torch stand" []
@PointClass base(light) size(-1 -6 -8, 4 6 8) = light_gem2 : "Gem light"
[
	spawnflags(flags) =
	[
		16 : "No halo"
	]
	style(choices) =
	[
		0 : "Yellow"
		1 : "Green"
	]
]
@PointClass base(light) size(-28 -8 -22, 4 8 22) = light_lantern1 : "Lantern with wood arm"
[
	spawnflags(flags) =
	[
		16 : "No halo"
	]
]
@PointClass base(light_lantern1) size(-6 -6 -24, 6 6 40) = light_lantern2 : "Lantern on chain" []
@PointClass base(light_lantern1) size(-6 -6 -12, 6 6 11) = light_lantern3 : "Lantern (ceiling)" []
@PointClass base(light_lantern1) size(-18 -7 -7, 7 7 14) = light_lantern4 : "Lantern (wall)" []
@PointClass base(light_lantern1) size(-7 -7 -7, 7 7 14) = light_lantern5 : "Lantern (table)" []
@PointClass base(light) size(-4 -6 -5, 6 6 20) = light_torch1 : "Wall torch with blue gem"
[
	spawnflags(flags) =
	[
		16 : "No halo"
	]
]
@PointClass base(light) size(-16 -10 -12, 10 10 12) = light_walltorch : "Wall Torch"
[
	spawnflags(flags) =
	[
		2 : "Flame"
	]
]

// 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
]


@PointClass base(Appearflags, Targetname) size(-8 -8 -8, 8 8 8) = misc_fire_sparker : "Spark generator (triggered)"
[
	spawnflags(Flags) =
	[
		1 : "Fireball" : 0
	]
	delay(integer) : "Lifetime (0 for infinite)" : 0
]

// 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"
[
	spawnflags(Flags) =
	[
		1 : "No model" : 0
		2 : "Random in deathmatch" : 0
		4 : "Start off" : 0
		8 : "Multi dest" : 0
	]
	target(string) : "Teleport Destination"
]
@PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_teleporter_dest : "Teleport Destination" []
// H2 - Check
@PointClass base(Appearflags, Targetname) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_magic_portal : "Magic Portal"
[
	spawnflags(Flags) =
	[
		1 : "Start off" : 0
	]
	count(integer) : "Closes after this many seconds if greater than 0"
	style(Choices) : "Style" : 0 =
	[
		0 : "Blue"
		1 : "Red"
		2 : "Green"
	]
]

// H2
@PointClass base(Appearflags, Targetname, Target) color(255 0 0) size(-32 -32 -24, 32 32 -16) = misc_remote_camera : "Remote Camera"
[
	spawnflags(Flags) =
	[
		1 : "Only for activator" : 0
		2 : "Scripted camera (follow pathtarget?)" : 0
		4 : "Don't delete camera" : 0
	]
	pathtarget(string) : "Owner entity (optional)"
	delay(integer) : "Delay"
]

@SolidClass base(Appearflags) = misc_update_spawner : "Updates level spawn point to trigger's position. Relevant for teleport spell." []


//
// Monsters!
//


@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
		128 : "Fixed position" : 0
		8192 : "Wander" : 0 : "Monster will wander around aimlessly (but follows buoys). May not work with all monsters"
		16384 : "Melee lead" : 0 : "Monster will tryto cut you off when you're running and fighting him, works well if there are a few monsters in a group, half doing this, half not"
		32768 : "Stalk" : 0 : "Monster will only approach and attack from behind- if you're facing the monster it will just stand there.  Once the monster takes pain, however, it will stop this behaviour and attack normally"
		65536 : "Coward" : 0 :"Monster starts off in flee mode- runs away from you when woken up"
	]
	combattarget(target_destination) : "Point combat target"
	deathtarget(target_destination) : "Entity to trigger at death"
	killtarget(target_destination) : "Entity to remove at death"
	item(string) : "Spawn Item"
//h2
	mintel(integer) : "Intelligence" : 0 : "How many buoys away an enemy has to be for it to give up. Different monsters have different defaults."
	scale(integer) : "Scale"
	bypass_missile_chance(integer) : "Chance to not fire missile (0-100)" : 0 : "Chance that a monster will NOT fire it's ranged attack, even when it has a clear shot.  This, in effect, will make the monster come in more often than hang back and fire."
	jump_chance(integer) : "Jump chance (0-100)" : 0 : "Every time the monster has the opportunity to jump, what is the chance (out of 100) that he will."
	melee_range(integer) : "Melee range" : 0 : "How close the player has to be, maximum, for the monster to go into melee. If zero, the monster will never melee. If negative, the monster will try to keep this distance from the player. If the monster has a backup, he'll use it if too clode, otherwise, a negative value here means the monster will just stop running at the player at this distance."
	missile_range(integer) : "Maximum distance of enemy to fire missile"
	wakeup_distance(integer) : "Wakeup distance"
	homebuoy(target_destination) : "Buoy to seek without enemy"
	pain_target(target_destination) : "Target used when first hurt"
	wakeup_target(target_destination) : "Target used when first alerted"
]


@PointClass base(Monsters) size(-16 -16 -32, 16 16 48) = monster_assassin : "Assassin"
[
	spawnflags(flags) =
	[
		8 : "Forward jump ambush" : 0 : "Jump out front or back when triggered (depending on whether player is in front or behind him"
		16 : "Don't cloak"
		32 : "Don't teleport"
		64 : "Cinematic"
		131072 : "Trigger spawn, teleports when activated"
		262144 : "Start as shadow" : 0 : "Start as a shadow and decloak when wakes up"
		524288 : "Side jump ambush" : 0 : "Jump out to left or right (depending on which side of the assassin the player is)"
		1048576 : "Teleport dodge" : 0 : "Can use teleporting to dodge attacks"
	]
	health(integer) : "Health" : 250
]
@PointClass base(Monsters) = monster_bee : "Bee (unfinished)" []
@PointClass base(Monsters) = monster_chicken : "Chicken" []
@PointClass base(Monsters) size(-24 -24 -64, 24 24 16) = monster_elflord : "Celestial Watcher"
[
	health(integer) : "Health" : 2250
]
@PointClass base(Monsters) size(-25 -25 -14, 25 25 14) = monster_fish : "Fish"
[
	health(integer) : "Health" : 50
]
@PointClass base(Monsters) size(-20 -20 -0, 20 20 32) = monster_gkrokon : "Gkrokon"
[
	spawnflags(flags) =
	[
		131072 : "Resting"
	]
	health(integer) : "Health" : 70
]
@PointClass base(Monsters) size(-16 -16 0, 16 16 32) = monster_gorgon : "Gorgon"
[
	spawnflags(flags) =
	[
		4 : "Eating"
		8 : "Fast"
	]
	health(integer) : "Health" : 100
]
//@PointClass base(monster_gorgon) size(-16 -16 -0, 16 16 32) = monster_gorgon_leader : "Gorgon Leader" []
@PointClass base(Monsters) size(-16 -16 -12, 16 16 12) = monster_harpy : "Harpy"
[
	spawnflags(flags) =
	[
		4 : "Perched" : 0 : "Will watch player until get too close or get behind the harpy"
		8 : "Circling"
	]
	health(integer) : "Health" : 60
]
@PointClass base(Monsters) size(-24 -24 0, 24 24 72) = monster_high_priestess : "High Priestess"
[
	health(integer) : "Health" : 2500
]
@PointClass base(Monsters) = monster_imp : "Imp (unfinished)" []
@PointClass base(Monsters) size(-24 -24 -50, 24 24 40) = monster_morcalavin : "Morcalavin" []
@SolidClass base(Appearflags) = obj_morcalavin_barrier : "Morcalavin's barrier. Invisible & non-blocking until used." []
@PointClass base(Monsters) size(-36 -36 0, 36 36 96) = monster_mssithra : "Mssithra"
[
	health(integer) : "Health" : 2250
]
@PointClass base(Monsters) = monster_nothing : "Nothing" []
@PointClass base(Monsters) size(-16 -16 -24, 16 16 16) = monster_ogle : "Ogle"
[
	spawnflags(choices) =
	[
		0 : "Random type"
		1 : "PUSHING"
		2 : "PICK_UP"
		4 : "PICK_DOWN"
		8 : "CHISEL_UP"
		16 : "CHISEL_DOWN"
		32 : "HAMMER_UP"
		64 : "HAMMER_DOWN"
		128 : "SONG_LEADER"
		8448 : "Cinematic"
	]
]
@PointClass base(Monsters) size(-17 -25 -1, 22 12 63) = monster_palace_plague_guard : "Plague Guard" []
@PointClass base(monster_palace_plague_guard) = monster_palace_plague_guard_invisible : "Invisible Plague Guard" []
@PointClass base(Monsters) size(-17 -25 -1, 22 12 63) = monster_plagueElf : "Elf"
[
	spawnflags(flags) =
	[
		8 : "Cinematic"
		16 : "Missile"
	]
	health(integer) : "Health" : 50
]
@PointClass base(Monsters) size(-16 -16 -0, 16 16 32) = monster_rat : "Rat"
[
	spawnflags(flags) =
	[
		4 : "Eating"
	]
	health(integer) : "Health" : 10
]
@PointClass base(monster_rat) = monster_rat_giant : "Giant Rat"
[
	health(integer) : "Health" : 40
]
@PointClass base(Monsters) size(-16 -16 -0, 16 16 32) = monster_spreader : "Spreader"
[
	health(integer) : "Health" : 250
]
@PointClass base(Monsters) size(-24 -24 -34, 24 24 34) = monster_seraph_guard : "Seraph Guard"
[
	spawnflags(flags) =
	[
		4 : "Golem"
	]
	health(integer) : "Health" : 300
]
@PointClass base(Monsters) size(-24 -24 -34, 24 24 34) = monster_seraph_overlord : "Seraph Overlord"
[
	health(integer) : "Health" : 250
]
@PointClass base(Monsters) size(-16 -16 -32, 16 16 26) = monster_ssithra : "Plague Ssithra"
[
	spawnflags(flags) =
	[
		8 : "Jump out of water when woken up or used"
		16 : "Spin around when woken up or used"
		32 : "Tougher"
		64 : "Clothed, shoot explosive tip proj's"
	]
	health(integer) : "Health" : 125
]
@PointClass base(Monsters) size(-16 -16 -32, 16 16 32) = monster_tcheckrik_female : "Female Tcheckrik"
[
	spawnflags(flags) =
	[
		8 : "Cinematic"
		16 : ""
		32 : "Alternate projectile attack"
	]
	health(integer) : "Health" : 200
]
@PointClass base(Monsters) size(-16 -16 -32, 16 16 32) = monster_tcheckrik_male : "Male Tcheckrik"
[
	spawnflags(flags) =
	[
		8 : "Cinematic"
		16 : "Beast fodder"
		32 : "Yellowjacket type"
	]
	health(integer) : "Health" : 200
]
@PointClass base(Monsters) size(-40 -40 -75, 40 40 75) = monster_tcheckrik_mothers : "Tcheckrik Mother" []
@PointClass base(Monsters) size(-100 -100 -36, 100 100 150) = monster_trial_beast : "Trial Beast"
[
	health(integer) : "Health" : 7000
]


// 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
	]
	angles(string) : "Rotation angles (XYZ)"
	noise(string) : "Sound when train touches (path/file.wav)"
	target(target_destination) : "Next path target"
	pathtarget(target_destination) : "Event to trigger"
	wait(choices) : "Wait" : 0 =
	[
		-1 : "Wait for retrigger"
		-3 : "Explode train"
	]
]

// "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 (monster stays in place)" : 0
	]
	pathtarget(target_destination) : "Event to trigger when monster touches"
]

// 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, Target) color(0 255 0) size(-8 -8 -8, 8 8 8) = target_changelevel : "Change level"
[
	map(string) : "'Next map'$'Player start targetname' - use * before map name to end unit"
]

@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(0 255 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(0 255 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, 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 (a-z)"
]

@PointClass base(Appearflags, Targetname) color(0 0 255) size(-8 -8 -8, 8 8 8) = target_splash : "Splash effect (triggered)"
[
	sounds(choices) : "Splash type" =
	[
		1 : "Sparks"
		2 : "Blue water"
		3 : "Brown water"
		4 : "Slime"
		5 : "Lava"
		6 : "Blood"
	]
	count(integer) : "Number of pixels"
	dmg(integer) : "Radius damage (useful for lava/sparks)"
]

// eye candy... Particles #2 (style 22) is quite cool
@PointClass base(Appearflags, Targetname) color(0 255 0) size(-8 -8 -8, 8 8 8) = target_temp_entity : "Triggered temp entity"
[
	style(choices) : "Style" : 22 =
	[
		20 : "Green Fireball"
		21 : "Particles #1"
		22 : "Particles #2"
	]
]

//
//	Triggers
//

@BaseClass base(Appearflags, Targetname, Target) color(128 128 128) = Trigger
[
	killtarget(string) : "Kill Target"
	delay(integer) : "Time before triggering"
	message(string) : "Message (levelmsg.txt index)"
	text_msg(string) : "Message (raw string)"
]

@SolidClass base(Appearflags, Targetname, Target) = choose_CDTrack : "Sets CD track"
[
	spawnflags(Flags) =
	[
		1 : "Don't loop"
	]
	style(integer) : "Track number"
]

@PointClass base(Appearflags, Target) color(128 128 128) size(-8 -8 -8, 8 8 8) = trigger_always : "Trigger automatically fired by world"
[
	killtarget(string) : "Kill Target"
	delay(integer) : "Time before triggering"
]

@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
]

@SolidClass base(Appearflags, Targetname) = trigger_farclip : "Changes the console variable r_farclipdist.
If the current value is default, it sets it to the trigger’s key value.
If set to the trigger’s key value, it sets it back to default.
Do not have teleport points, or start spots of any kind inside or inbetween this trigger."
[
	scale(integer) : "Distance" : 4096
]

@PointClass base(Appearflags, Targetname, Target) color(76 25 153) = trigger_elevator : "Elevator trigger" []

@SolidClass base(Appearflags, Targetname) = trigger_fogdensity : "Sets r_fog_density and fog color"
[
	target(string) : "Fog density (.01 - .0001)"
	color(string) : "RGB values"
]

@SolidClass base(Appearflags) color(128 128 128) = trigger_gravity : "Change gravity"
[
	gravity(integer) : "Gravity (standard = 1.0)" : 1
]

@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" : "item_tavern_key"
]

// H2

@SolidClass base(Appearflags, Targetname, Target) = trigger_Damage : "Damage"
[
	spawnflags(flags) =
	[
		1 : "Start off"
		2 : "Toggle"
		4 : "Silent"
		8 : "No protection"
		16 : "Slow (once per second)"
	]
	dmg(integer) : "Damage" : 5
]
@SolidClass base(Trigger) = trigger_Deactivate : "Deactivates target" []
@SolidClass base(Trigger) = trigger_Activate : "Activates target" []
@SolidClass base(Trigger) = trigger_endgame : "Ends game" []
@SolidClass base(Appearflags, Targetname) = trigger_goto_buoy : "Send monster to buoy"
[
	spawnflags(flags) =
	[
		1 : "Touchable"
		2 : "Ignore enemy" : 0 : "Monster will ignore his enemy until he gets to his target buoy (or until attacked or woken up some other way)"
		4 : "Teleport to buoy (safe)" : 0 : "Make monster teleport to target buoy only if there is nothing there and the player cannot see the monster and/or desination buoy"
		8 : "Teleport to buoy (unsafe)" : 0 : "Same as TeleportSafe, but ignores whether or not the player can see the monster and/or desination buoy"
		16 : "Make monster fixed"
		32 : "Make monster forget enemy"
		64 : "Make monster forget and wander"
	]
	pathtarget(string) : "Buoy for monster to go to"
	target(target_destination) : "Monster to send to buoy if triggered"
	delay(integer) : "Delay before sending monster to buoy"
	wait(integer) : "Time between uses"
]
@SolidClass base(Trigger) = trigger_lightning : "Triggers lightning bolt"
[
	delay(integer) : "Duration of lightning (0-25.5)"
	materialtype(choices) =
	[
		0 : "Blue"
		1 : "Red"
	]
	style(integer) : "Bolt width"
	wait(integer) : "Wait" : 10
	target(target_source) : "Ending point"
]
@SolidClass base(Appearflags) = trigger_mappercentage : "Map percentage"
[
	count(integer) : "Count"
]
@SolidClass base(Trigger) = trigger_mission_give : "Gives mission objectives"
[
	message(string) : "Message (index in strings.txt)"
]
@SolidClass base(Trigger) = trigger_mission_take : "Removes mission objectives"
[
	spawnflags(flags) =
	[
		16 : "Take objective 1"
		32 : "Take objective 2"
	]
]
@SolidClass base(Appearflags, Targetname, Target) = trigger_playerpushbutton : "Player push button" []
@SolidClass base(Appearflags, Targetname, Target) = trigger_playerpushlever : "Player Push lever" []
@SolidClass base(Appearflags, Targetname, Target) = trigger_playerusepuzzle : "Player can use puzzle items within this entity"
[
	spawnflags(flags) =
	[
		16 : "Don't show inventory bar, don't take puzzle piece"
		32 : "Multiple use"
	]
	target(target_destination) : "trigger_puzzle to use"
]
@PointClass base(Appearflags, Targetname, Target) = trigger_puzzle : "Relay that requires puzzle piece"
[
	spawnflags(flags) =
	[
		1 : "No text"
		2 : "Don't take item"
	]
	item(string) : "Item"
]
@PointClass base(Trigger) = trigger_quake : "Earthquake"
[
	count(integer) : "Maximum pixels to shake screen" : 20
	style(choices) : "Shake direction" : 7 =
	[
		1 : "Lateral"
		2 : "Vertical"
		4 : "Depth"
		7 : "All directions"
	]
	time(integer) : "Duration in seconds (0-12.8)"
	wait(integer) : "Wait" : 10
]
@SolidClass base(Appearflags, Targetname, Target) = trigger_quit_to_menu : "Quit to menu" []
@SolidClass base(Appearflags) color(128 128 128) = trigger_MonsterJump : "Makes monsters jump"
[
	speed(integer) : "Speed thrown forward" : 200
	height(integer) : "Height thrown upward" : 200
]
@PointClass base(Trigger) color(128 128 128) = trigger_relay : "Relay trigger" []
@SolidClass base(Trigger) = trigger_once : "Single fire trigger"
[
	spawnflags(Flags) =
	[
		1 : "Monster" : 0
		2 : "Not Player" : 0
		4 : "Triggered" : 0
		8 : "Anything can activate"
	]
	sounds(choices) : "Sounds" : 0 =
	[
		1 : "Secret (not functional)"
		2 : "Silence"
		3 : "Chat sound"
	]
]
@SolidClass base(Trigger) = trigger_multiple : "Multiple fire trigger"
[
	spawnflags(Flags) =
	[
		1 : "Monster" : 0
		2 : "Not Player" : 0
		4 : "Triggered" : 0
		8 : "Anything can activate"
	]
	sounds(choices) : "Sounds" : 0 =
	[
		1 : "Secret (not functional)"
		2 : "Silence"
		3 : "Chat sound"
	]
	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" : 500
	zangle(integer) : "Upwards direction (0 is straight up, 180 is straight down)"
]

//
//	Characters
//

@BaseClass base(Appearflags, Targetname) color(76 76 255) size(-16 -16 -24, 16 16 32) = character
[
	spawnflags(flags) =
	[
		1 : "Invisible"
	]
]

@PointClass base(character) size(-17 -25 -32, 22 12 32) = character_corvus1 : "cinematic corvus for the torture victim" []
@PointClass base(character_corvus1) = character_corvus2 : "cinematic Corvus for the celestial watcher scene" []
@PointClass base(character_corvus1) = character_corvus3 : "cinematic Corvus for the high priestess scene" []
@PointClass base(character) size(16 -16 -34, 16 16 25) = character_corvus4 : "cinematic Corvus for the Scout scene" []
@PointClass base(character_corvus4) = character_corvus5 : "cinematic Corvus for the Dranor scene" []
@PointClass base(character_corvus4) = character_corvus6 : "cinematic Corvus for the Dranor scene" []
@PointClass base(character_corvus1) = character_corvus7 : "cinematic corvus for the Morcalavin scene" []
@PointClass base(character_corvus1) = character_corvus8 : "cinematic corvus for the Siernan scenes" []
@PointClass base(character_corvus1) = character_corvus9 : "cinematic corvus for the T'chekrik scenes" []
@PointClass base(character) size(-17 -25 -32, 22 12 32) = character_dranor : "Dranor" []
@PointClass base(character) size(-24 -24 -78, 24 24 16) = character_elflord : "Celestial Watcher" []
@PointClass base(character) size(-24 -24 -36, 24 24 36) = character_highpriestess : "High Priestess" []
@PointClass base(character_highpriestess)  = character_highpriestess2 : "High Priestess" []
@PointClass base(character) size(-24 -24 -50, 24 24 50) = character_morcalavin : "Morcalavin" []
@PointClass base(character) size(-10 -10 -20, 10 10 20) = character_siernan1 : "Siernan standing"
[
	spawnflags(flags) =
	[
		4 : "Leaning"
	]
]
@PointClass base(character) size(-17 -25 0, 22 12 16) = character_siernan2 : "Siernan laying down" []
@PointClass base(character) size(-26 -16 -13, 26 16 13) = character_ssithra_scout : "Ssithra scout" []
@PointClass base(character) size(-40 -16 -2, 40 16 2) = character_ssithra_victim : "Ssithra torture victim" []
@PointClass base(character) size(-4 -8 -12, 4 8 12) = character_tome : "Tome of Power" []

//Env - fix
@BaseClass base(Appearflags, Target, Targetname) color(76 76 255) size(-8 -8 -8, 8 8 8) = Env
[
]

@PointClass base(Env) = env_bubbler : "Bubbler"
[
	count(integer) : "Bubbles per minute" : 120
]
@SolidClass base(Env) = env_dust : "Dust (triggered)"
[
	count(integer) : "Number of rocks (max 16)"
]
@PointClass base(Env) = env_fire : "Flame effect. Does not emit light"
[
	spawnflags(flags) =
	[
		8 : "Start off"
		16 : "Moveable"
		32 : "Light attached"
	]
	scale(integer) : "Scale (0-8)"
]
@PointClass base(Env) = env_mist : "Mist"
[
	scale(integer) : "Scale"
]
@PointClass base(Env) = env_smoke : "Smoke"
[
	angle(integer) : "Puff move direction" : 0
	scale(integer) : "Puff size (1-8)" : 1
	speed(integer) : "Puff speed (10-2500)" : 100
	distance(integer) : "Distance before puff disappears (1-255)" : 100
	wait(integer) : "Time between puffs (1-255)" : 5
]
@PointClass base(Env) = env_sun1 : "Places two suns in the world and attaches a lens flare to them. One sun is blue, the other is yellow" []
@PointClass base(Env) = env_water_drip : "Water drip"
[
	spawnflags(flags) =
	[
		1 : "Yellow"
	]
	count(integer) : "Drips per minute" : 20
]
@PointClass base(Env) = env_water_fountain : "Fountain"
[
	spawnflags(flags) =
	[
		1 : "Start off"
	]
	angles(string) : "XYZ velocity of particles"
	delay(integer) : "Distance from emitter to ground (max 256)"
]
@PointClass base(Env) = env_waterfall_base : "waterfall base"
[
	angles(string) : "X radius, yaw, Y radius"
]

// H2: Shrines
@BaseClass base(Appearflags, Target, Targetname) color(76 76 255) size(-8 -8 -8, 8 8 8) = Shrine
[
	spawnflags(Flags) =
	[
		1 : "Permanent"
	]
]

@SolidClass base(Shrine) = shrine_random : "Random Shrine" []
@SolidClass base(Shrine) = shrine_armor : "Armor Shrine" []
@SolidClass base(Shrine) = shrine_heal : "Health Shrine" []
@SolidClass base(Shrine) = shrine_light : "Light Shrine" []
@SolidClass base(Shrine) = shrine_mana : "Mana Shrine" []
@SolidClass base(Shrine) = shrine_reflect : "Reflect Shrine" []
@SolidClass base(Shrine) = shrine_staff : "Staff Shrine" []
@SolidClass base(Shrine) = shrine_powerup : "Powerup Shrine" []
@SolidClass base(Shrine) = shrine_ghost : "Ghost Shrine" []
@SolidClass base(Shrine) = shrine_armor_gold : "Gold Armor Shrine" []
@SolidClass base(Shrine) = shrine_lung : "Lung Shrine" []
@SolidClass base(Shrine) = shrine_speed : "Speed Shrine" []

@BaseClass base(Appearflags, Target, Targetname) color(76 76 255) size(-8 -8 -8, 8 8 8) = object
[
	spawnflags(Flags) =
	[
		1 : "Invulnerable"
		8 : "Not pushable"
	]
	scale(integer) : "Scale"
]

@PointClass base(object) size(-26 -38 -38, 26 38 38) = obj_shrine : "Shrine model. Target with a matching shrine_(style) trigger brush."
[
	style(choices) : "Type of shrine" : 1 =
	[
		0 : "heal"
		1 : "mana"
		2 : "lungs"
		3 : "light"
		4 : "powerup"
		5 : "armor"
		6 : "gold armor"
		7 : "random"
		8 : "reflection"
		9 : "staff"
		10 : "ghost"
		11 : "speed"
	]
]

@PointClass base(object) size(0 -19 -24, 4 19 24) = obj_andwallhanging : "Circular Andorian wall hanging" []
@PointClass base(object) size(-8 -44 -296, 8 44 0) = obj_banner : "Banner"
[
	skinnum(choices) =
	[
		0 : "Blue"
		1 : "Red"
	]
]
@PointClass base(object) size(-8 -28 -30, 8 28 30) = obj_banneronpole : "Banner on Pole"
[
	spawnflags(Flags) =
	[
		1 : "Invulnerable"
		2 : "Animate (flutter)"
	]
]
@PointClass base(object) size(-12 -12 -19, 12 12 19) = obj_barrel : "Barrel"
[
	spawnflags(Flags) =
	[
		1 : "Invulnerable"
		2 : ""
		4 : "Exploding"
		8 : "Not pushable"
	]
	killtarget(string) : "Killtarget"
]
@PointClass base(object) size(-11 -12 -18, 11 12 18) = obj_barrel_metal : "Metal barrel" []
@PointClass base(object) size(-11 -12 -18, 11 12 18) = obj_barrel_explosive : "Explosive barrel. Use barrel with spawnflags 4 instead" []
@PointClass base(object) size(-13 -13 -21, 13 13 21) = obj_basket : "Basket" []
@PointClass base(object) size(-10 -21 -10, 10 21 10) = obj_bench : "Bench" []
@PointClass base(object) size(-35 -35 -50,35 35 50) = obj_bigcrystal : "Rotating crystal"
[
	speed(integer) : "Speed of rotation"
]
@PointClass base(object) size(-20 -33 -52, 20 33 52) = obj_biotank : "Bio Tank"
[
	scale(integer) : "Scale"
	style(choices) =
	[
		0 : "Empty"
		1 : "ET's head"
		2 : "Hairless critter"
		3 : "Three fish"
		4 : "Wasp"
	]
]
@PointClass base(object) = obj_bloodsplat : "Blood splat" []
@PointClass base(object) size(-8 -16 -2, 8 16 2)= obj_bookopen : "Open Book" []
@PointClass base(object) size(-8 -8 -2, 8 8 2) = obj_bookclosed : "Closed book standing up" []
@PointClass base(object) size(-3 -3 -7, 3 3 7) = obj_bottle1 : "Bottle" []
@PointClass base(object) size(-2 -2 -25, 2 2 25) = obj_broom : "Broom" []
@PointClass base(object) size(-8 -8 -9, 8 8 10) = obj_bucket : "Bucket" []
@PointClass base(object) size(-34 -34 -19, 34 34 19) = obj_bush1 : "Bush" []
@PointClass base(object) size(-56 -56 -40, 56 56 40) = obj_bush2 : "Bush 2" []
@PointClass base(object) size(-18 -18 -44, 18 18 44) = obj_cactus : "Cactus" []
@PointClass base(object) size(-14 -14 -32, 18 18 32) = obj_cactus3 : "Cactus 3" []
@PointClass base(object) size(-11 -11 -11, 11 11 11) = obj_cactus4 : "Cactus 4 (triggerable)" []
@PointClass base(object) size(-22 -22 -10, 22 22 10) = obj_cauldron : "Cauldron"
[
	spawnflags(Flags) =
	[
		1 : "Invulnerable"
		2 : "Animate"
		3 : ""
		4 : "Not pushable"
	]
]
@PointClass base(object) size(-12 -8 -26, 12 8 26) = obj_chair1 : "Chair (wood)" []
@PointClass base(object) size(-18 -29 -30, 18 29 30) = obj_chair2 : "Chair (wood, slanted)" []
@PointClass base(object) size(-14 -21 -28, 14 21 28) = obj_chair3 : "Chair (stone)" []
@PointClass base(object) size(-10 -18 -19, 10 18 19) = obj_chest1 : "Chest (opens when triggered)" []
@PointClass base(object) size(-14 -17 -9, 14 17 9) = obj_chest2 : "Chest (mines)" []
@PointClass base(object) size(-10 -17 -6, 10 17 6) = obj_chest3 : "Chest (mines, closed)" []
@PointClass base(object) size(-15 -40 -8, 15 40 8) = obj_choppeddude : "Lying chopped corpse" []
@PointClass base(object) size(-6 -6 -2, 6 6 2) = obj_claybowl : "Clay bowl" []
@PointClass base(object) size(-15 -15 -24, 15 15 24) = obj_clayjar : "Clay jar" []
@PointClass base(object) = obj_cocoon : "Hanging cocoon" []
@PointClass base(object) = obj_cocoonopen : "Hanging cocoon" []
@PointClass base(object) size(-8 -4 0, 8 4 20) = obj_cog1 : "Cog (triggerable)" []
@PointClass base(object) size(-30 -12 0, 30 12 5) = obj_corpse1 : "Plague Elf corpse"
[
	style(choices) : "Position" =
	[
		0 : "Arms above head"
		1 : "On side"
		2 : "Arm over face"
		3 : "Arms to side"
		4 : "Skewered"
	]
]
@PointClass base(obj_corpse1) = obj_corpse2 : "Plague Elf corpse (alternate skin)" []
@PointClass base(obj_corpse1) = obj_corpse_ssithra : "Plague Ssithra corpse"
[
	style(choices) : "Skin" =
	[
		0 : ""
		1 : ""
		2 : ""
	]
]
@PointClass base(object) size(-30 -12 0, 30 12 5) = obj_dying_elf : "Dying elf"
[
	style(choices) : "Skin" =
	[
		0 : ""
		1 : ""
	]
]
@PointClass base(object) size(-4 -10 -1, 4 10 1) = obj_eggpan : "Flat pan" []
@PointClass base(object) size(-13 -13 -18, 13 13 18) = obj_eyeball_jar : "Jar of joy" []
@PointClass base(object) size(0 -76 -86, 136 76 86) = obj_fishhead1 : "Fish head fountain"
[
	spawnflags(flags) =
	[
		1 : "No drip"
	]
]
@PointClass base(object) size(0 -110 -118, 136 110 118) = obj_fishhead2 : "Fish head fountain 2"
[
	spawnflags(flags) =
	[
		1 : "No drip"
	]
]
@PointClass base(object) size(-14 -28 -13, 14 28 13) = obj_fishtrap : "Fish trap" []
@PointClass base(object) size(-18 -18 -12, 18 18 12) = obj_firepot : "Firepot" []
@PointClass base(object) size(-8 -8 0, 8 8 60) = obj_flagonpole : "Flag on pole" []
@PointClass base(object) size(-8 -8 -35, 8 8 35) = obj_floor_candelabrum : "Floor candelbrum. Does not emit light" []
@PointClass base(object) size(-52 -34 -48, 52 34 48) = obj_fountain_fish : "Two-headed fish fountain. Water FX not included" []
@PointClass base(object) size(-1 -3 -10, 1 3 10) = obj_frypan : "Hanging pan" []
@PointClass base(object) size(-18 -38 -9, 18 38 1) = obj_gorgonbones : "Gorgon bones" []
@PointClass base(object) size(-8 -9 -13, 8 9 13) = obj_gascan : "Gas can" []
@PointClass base(object) size(-8 -8 -10, 8 8 10) = obj_grass : "Grass clump" []
@PointClass base(object) size(-8 -16 -34, 8 16 34) = obj_hanging_ogle : "Hanging Ogle" []
@PointClass base(object) size(-3 -20 -55, 3 20 55) = obj_hangingdude : "Hanging dude" []
@PointClass base(object) size(-4 -4 -13, 4 4 13) = obj_hivepriestessssymbol : "Hive Priestess symbol (triggered)" []
@PointClass base(object) = obj_jawbone : "Fish jawbone" []
@PointClass base(object) size( -6 -6 -6, 6 6 6) = obj_jug1 : "Jug" []
@PointClass base(object) size(-8 -8 0, 8 8 10) = obj_kettle : "Kettle" []
@PointClass base(object) size(-8 -8 -11, 8 8 11) = obj_lab_parts_container : "Body parts container" []
@PointClass base(object) size(-8 -8 -5, 8 8 5) = obj_lab_tray : "Tray with heart and tools" []
@PointClass base(object) size(-8 -8 -2, 8 8 2) = obj_larva : "Squirming larva" []
@PointClass base(object) size(-6 -14 -6, 6 14 6) = obj_larvaegg : "Hive egg" []
@PointClass base(object) size( -6 -7 -5, 6 7 5) = obj_larvabrokenegg : "Hive egg" []
@PointClass base(object) size(-6 -14 -17, 6 14 17) = obj_lever1 : "Floor lever" []
@PointClass base(object) size(-14 -14 -9, 14 14 9) = obj_lever2 : "Wooden wheel lever" []
@PointClass base(object) size(-4 -6 -16, 4 6 16) = obj_lever3 : "Wall lever" []
@PointClass base(object) size( -10 -26 -4, 10 26 4) = obj_metalchunk1 : "Metal chunk" []
@PointClass base(obj_metalchunk1) = obj_metalchunk2 : "Metal chunk" []
@PointClass base(obj_metalchunk1) = obj_metalchunk3 : "Metal chunk" []
@PointClass base(object) size(-18 -29 -20, 18 29 20) = obj_minecart : "Full minecart" []
@PointClass base(obj_minecart) = obj_minecart2 : "Empty minecart" []
@PointClass base(obj_minecart) = obj_minecart3 : "Busted minecart" []
@PointClass base(object) size(-4 -10 -40, 4 10 40) = obj_moss1 : "Moss 1" []
@PointClass base(obj_moss1) = obj_moss2 : "Moss 2" []
@PointClass base(obj_moss1) = obj_moss3 : "Moss 3" []
@PointClass base(obj_moss1) = obj_moss4 : "Moss 4" []
@PointClass base(obj_moss1) = obj_moss5 : "Moss 5" []
@PointClass base(object) size(-25 -25 -4, 25 25 4) = obj_nest : "Nest" []
@PointClass base(object) size(-12 -13 -2, 12 13 2) = obj_pick : "Pick" []
@PointClass base(object) size(-11 -24 -7, 11 24 7) = obj_pipe1 : "Pipe (90* turn)" []
@PointClass base(object) size(-6 -25 -4, 6 25 4) = obj_pipe2 : "Pipe (straight)" []
@PointClass base(object) size(-14 -14 -12, 14 14 12) = obj_pipewheel : "Pipe shutoff valve" []
@PointClass base(object) size(-8 -8 -24, 8 8 24) = obj_plant1 : "Plant" []
@PointClass base(object) size(-20 -20 -10, 20 20 20) = obj_plant2 : "Plant" []
@PointClass base(object) size(-8 -8 -12, 8 8 12) = obj_plant3 : "Plant" []
@PointClass base(object) size(-3 -8 -8, 3 8 8) = obj_pot1 : "Hanging cooking pot" []
@PointClass base(object) size(-7 -7 -3, 7 7 3) = obj_pot2 : "Flat cooking pot" []
@PointClass base(object) size(-20 -20 -30, 20 20 30) = obj_pottedplant : "Potted plant" []
@PointClass base(object) size(-13 -16 -41, 13 16 41) = obj_pushcart : "Push cart" []
@PointClass base(object) size(-30 -28 -31, 30 28 31) = obj_queenchair : "Hive queen chair" []
@PointClass base(object) size(-40 -56 -49, 40 56 49) = obj_queenthrone : "Hive queen throne" []
@PointClass base(object) size(-2 -24 -20, 2 24 20) = obj_ring_plaque2 : "Rings mounted on wall plate" []
@PointClass base(object) size(-12 -13 -4, 12 13 4) = obj_rocks1 : "Rock cluster" []
@PointClass base(object) size(-9 -30 -4, 9 30 4) = obj_rocks2 : "Big rock" []
@SolidClass base(object) = obj_rope : "Climbable rope. Requires origin brush (brush with ORIGIN content flag)"
[
	spawnflags(Flags) =
	[
		0 : "Rope"
		1 : "Vine"
		2 : "Chain"
		4 : "Tendril"
		8 : "Hanging chicken"
	]
]
@PointClass base(object) size(-20 -20 -14, 20 20 14) = obj_ropechain : "Rope chain"
[
	skinnum(choices) =
	[
		0 : "Rope"
		1 : "Chain"
	]
]
@PointClass base(object) size(-8 -8 -20, 8 8 20) = obj_shovel : "Shovel" []
@PointClass base(object) size(-29 -4 -16, 29 4 16) = obj_sign1 : "Sign 1"
[
	style(choices) : "Style" =
	[
		0 : "Dragon"
		1 : "Steins"
		2 : "Fish"
	]
]
@PointClass base(object) size(-8 -18 -29, 8 18 29) = obj_sign4 : "Sign 4"
[
	style(choices) : "Style" =
	[
		0 : "Andorian"
		1 : "Tchekrik"
	]
]
@PointClass base(object) size( -10 -10 -47, 10 10 47) = obj_skullpole : "Skull pole" []
@PointClass base(object) size(-32 -32 -200, 32 32 0) = obj_stalagmite1 : "Stalagmite"
[
	spawnflags(Flags) =
	[
		1 : "Dark skin"
	]
]
@PointClass base(obj_stalagmite1) size(-32 -32 -128, 32 32 0) = obj_stalagmite2 : "Stalagmite" []
@PointClass base(obj_stalagmite1) = obj_stalagmite3 : "Stalagmite" []
@PointClass base(object) size(-24 -24 -99, 24 24 99) = obj_stalactite1 : "Stalagtite"
[
	spawnflags(Flags) =
	[
		1 : "Drip water"
		2 : "Dark skin"
	]
	count(integer) : "Drips per minute" : 20
]
@PointClass base(obj_stalactite1) size(-60 -60 -64, 60 60 64) = obj_stalactite2 : "Stalagtite" []
@PointClass base(obj_stalactite1) size(-23 -23 -98, 23 23 98) = obj_stalactite3 : "Stalagtite" []
@PointClass base(object) size(-26 -16 -27, 26 16 27) = obj_statue_boulderfish : "Fish statue" []
@PointClass base(object) size(-16 -16 0, 16 16 32) = obj_statue_corvus : "Corvus statue" []
@PointClass base(object) size(-68 -22 -30, 68 22 30) = obj_statue_dolphin1 : "Dolphin statue on all fours" []
@PointClass base(object) size(-17 -20 -70, 17 20 70) = obj_statue_dolphin2 : "Dolphin statue on wall turned right" []
@PointClass base(obj_statue_dolphin2) = obj_statue_dolphin3 : "Dolphin statue on wall turned left" []
@PointClass base(object) size(-63 -22 -37, 63 22 37) = obj_statue_dolphin4 : "Dolphin statue on two legs" []
@PointClass base(object) size(-76 -28 -46, 76 28 46) = obj_statue_dragonhead : "Dragon head statue" []
@PointClass base(object) size(-53 -33 -72, 53 33 72) = obj_statue_dragon : "Dragon statue"
[
	style(choices) =
	[
		0 : "Looking left"
		1 : "Looking right"
	]
]
@PointClass base(object) size(-63 -22 -37, 63 22 37) = obj_statue_duckbill1 : "" []
@PointClass base(object) size(-67 -24 -50, 67 24 50) = obj_statue_duckbill2 : "" []
@PointClass base(object) size(-100 -64 0, 64 64 128) = obj_statue_guardian : "Guardian statue" []
@PointClass base(object) size(-10 -20 -24, 10 20 24) = obj_statue_saraphbust : "Seraph bust" []
@PointClass base(object) size(-13 -16 -41, 13 16 41) = obj_statue_sariph : "Seraph statue" []
@PointClass base(object) size(-22 -20 -57, 22 20 57) = obj_statue_sithraguard : "A statue of a sithra guard with spear extended.  When used he gains a shield and pulls his arm back. Used with: item_puzzle_shield" []
@PointClass base(object) size(-8 -12 -15, 8 12 15) = obj_statue_tchecktrik_bust : "A bust of a tchecktrik.  When used a necklace appears around it's neck."
[
	style(choices) =
	[
		0 : "no necklace until used then necklace appears"
		1 : "necklace until used then necklace disappears"
	]
]
@PointClass base(object) size(-41 -11 -14, 41 11 14) = obj_statue_techeckriktomb : "Tchekrik laying down (triggerable)" []
@PointClass base(object) size(-26 -40 -50, 26 40 50) = obj_statue_techeckrikleft : "Tcheckrik statue left (triggerable)" []
@PointClass base(object) size(-26 -40 -50, 26 40 50) = obj_statue_techeckrikright : "Tcheckrik statue right (triggerable)" []
@PointClass base(object) size(-2 -18 -3, 2 18 3) = obj_scroll : "Scroll" []
@PointClass base(object) size(-80 -80 0, 80 80 100) = obj_seasonglobe : "Globe (triggerable)" []
@PointClass base(object) size(-2 -2 -3, 2 2 3) = obj_stein : "Stein" []
@PointClass base(object) size(-14 -14 -35, 14 14 40) = obj_spellbook : "Spell book that closes when triggered" []
@PointClass base(object) size(0 -100 -48, 2 100 48) = obj_swampflat_top : "A flat poly to be used on the outer edge of swamp levels. Vegetation growing up." []
@PointClass base(object) size(0 -100 -48, 2 100 48) = obj_swampflat_bottom : "A flat poly to be used on the outer edge of swamp levels. Vegetation growing down." []
@PointClass base(object) size(-28 -54 -18, 28 54 18) = obj_table1 : "Table (wood)" []
@PointClass base(object) size(-28 -54 -18, 28 54 18) = obj_table2 : "Table (stone)" []
@PointClass base(object) size(-20 -22 -44, 20 22 44) = obj_throne : "Throne" []
@PointClass base(object) size(-2 -5 -2, 2 5 2) = obj_tapper : "Keg tapper" []
@PointClass base(object) size(-21 -43 -94, 21 43 94) = obj_torture_bed : "Bed of spikes" []
@PointClass base(object) size(-18 -18 -49, 18 18 49) = obj_torture_ironmaiden : "Iron maiden (closes when used)" []
@PointClass base(object) size(-22 -46 -19, 22 46 19) = obj_torture_rack : "Torture rack" []
@PointClass base(object) size(-46 -14 -14, 46 14 14) = obj_torture_table : "Torture table"
[
	style(choices) =
	[
		0 : "Down"
		1 : "Upright"
	]
]
@PointClass base(object) size(-2 -4 -6, 2 4 6) = obj_torture_wallring : "Hanging ring" []
@PointClass base(object) size(-100 -100 -120, 100 100 120) = obj_tree : "Tree" []
@PointClass base(object) size(-50 -50 -286, 50 50 286) = obj_tree2 : "Tree (swamp)" []
@PointClass base(object) size(-50 -50 -286, 50 50 286) = obj_tree3 : "Tree with roots" []
@PointClass base(object) size(-46 -46 -340, 46 46 340) = obj_treetall : "Tree (tall)" []
@PointClass base(object) size(-176 -176 -125, 176 176 125) = obj_treetop : "Tree canopy" []
@PointClass base(object) size(-24 -62 -35, 24 62 35) = obj_treefallen : "Fallen tree" []
@PointClass base(object) size(-18 -18 -16, 18 18 16) = obj_treestump : "Short tree stump" []
@PointClass base(object) size(-8 -8 -27, 8 8 30) = obj_urn : "Urn (Andorian)" []
@PointClass base(object) size(-20 -20 -24, 20 20 24) = obj_venusflytrap : "Venus flytrap" []
@PointClass base(object) size(-3 -20 -55, 3 20 55) = obj_wallringplaque : "Wall ring plaque" []
@PointClass base(object) size(-2 -18 -20, 2 18 20) = obj_web : "Cobweb" []
@PointClass base(object) size(-37 -20 -21, 37 20 21) = obj_wheelbarrow : "Wheebarrow" []
@PointClass base(object) size(-38 -26 -20, 38 26 20) = obj_wheelbarrowdamaged : "Wheebarrow on side" []
@PointClass base(object) size(-12 -20 -7, 12 20 7) = obj_woodpile : "Wood Pile" []

@PointClass base(Targetname) = script_runner : "Script Runner"
[
	script(string) : "Script filename (including subfolder, not including extension)"
]

@BaseClass base(Appearflags) color(76 76 255) size(-8 -8 -8, 8 8 8) = Sound
[
	spawnflags(Flags) =
	[
		1 : "Not local" : 0
		2 : "Start off" : 0
	]
	style(integer) : "Style"
	attenuation(choices) : "Attenuation" : 0 =
	[
		0 : "No attenuation"
		1 : "Normal"
		2 : "High"
		3 : "Max"
	]
	volume(float) : "Volume" : "0.5"
	wait(integer) : "Wait" : 10
]

@PointClass base(Sound) = sound_ambient_andoria : "Andoria"
[
	style(choices) : "Sound type" : 0 =
	[
		0 : "Nothing"
		1 : "Small fountain"
		2 : "Large fountain"
		3 : "Water running out of sewer"
		4 : "Rushing waterway outside"
		5 : "Wind chime"
	]
]
@PointClass base(Sound) = sound_ambient_cloudfortress : "Cloud Fortress"
[
	style(choices) : "Sound type" : 0 =
	[
		0 : "Nothing"
		1 : "Cauldron bubbling (looping)"
		2 : "Wind, low, eerie (looping)"
		3 : "Wind, low, noisy (looping)"
		4 : "Wind, high, soft (looping)"
		5 : "Wind, low, soft (looping)"
		6 : "Wind, low, strong (looping)"
		7 : "Wind, high, strong (looping)"
		8 : "Wind, whistling, strong (looping)"
	]
]
@PointClass base(Sound) = sound_ambient_hive : "Hive"
[
	style(choices) : "Sound type" : 0 =
	[
		0 : "Nothing"
		1 : "Gong"
		2 : "Wind, low, eerie (looping)"
		3 : "Wind, low, noisy (looping)"
		4 : "Wind, high, soft (looping)"
		5 : "Wind, low, soft (looping)"
		6 : "Wind, low, strong (looping)"
		7 : "Wind, high, strong (looping)"
		8 : "Wind, whistling, strong (looping)"
	]
]
@PointClass base(Sound) = sound_ambient_mine : "Mine"
[
	style(choices) : "Sound type" : 0 =
	[
		0 : "Nothing"
		1 : "Mud pool bubbling (looping)"
		2 : "Rocks falling (3 sounds)"
		3 : "Wind, low, eerie (looping)"
		4 : "Wind, low, soft (looping)"
		5 : "Conveyor belt (looping)"
		6 : "Bucket conveyor belt (looping)"
		7 : "Heavy creaks"
	]
]
@PointClass base(Sound) = sound_ambient_silverspring : "Silverspring"
[
	style(choices) : "Sound type" : 0 =
	[
		0 : "Nothing"
		1 : "Fire (looping)"
		2 : "Water lapping (looping)"
		3 : "Seagulls"
		4 : "Ocean"
		5 : "Birds"
		6 : "Crickets"
		7 : "Frogs"
		8 : "Distant women/children crying"
		9 : "Mosquitoes"
		10 : "Bubbles"
		11 : "Bell"
		12 : "Footsteps"
		13 : "Moans/screams/coughing"
		14 : "Sewer drips"
		15 : "Water drips"
		16 : "Solid drips"
		17 : "Cauldron bubbling"
		18 : "Creaking for the spit that's holding the elf over a fire"
	]
]
@PointClass base(Sound) = sound_ambient_swampcanyon : "Swamp Canyon"
[
	style(choices) : "Sound type" : 0 =
	[
		0 : "Nothing"
		1 : "Bird 1"
		2 : "Bird 2"
		3 : "Huge waterfall"
		4 : "Mud pool bubbling (looping)"
		5 : "Wind, low, eerie (looping)"
		6 : "Wind, low, noisy (looping)"
		7 : "Wind, high, soft (looping)"
		8 : "Wind, low, soft (looping)"
		9 : "Wind, low, strong (looping)"
		10 : "Wind, high, strong (looping)"
		11 : "Wind, whistling, strong (looping)"
	]
]

@SolidClass base(Appearflags, Targetname) = flamethrower : "Flamethrower. Triggers flame from origin brush when player touches trigger brush, or when triggered if targetted. Sets player on fire if they touch trigger brush, regardless of if the visual flame FX touches them."
[
	spawnflags(Flags) =
	[
		1 : "Steam"
		2 : "Monsters can activate"
	]
	angles(string) : "Angles (pitch yaw 0)"
	dmg(integer) : "Damage per 1/10th second" : 2
	speed(integer) : "Length" : 400
	wait(choices) : "Wait" : 2 =
	[
		-1: "Toggle"
	]
]
