//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose: Counter-Strike: Source game definition file (.fgd) 
//
//=============================================================================

@include "base.fgd"

//-------------------------------------------------------------------------
//
// Base Classes
//
//-------------------------------------------------------------------------


@BaseClass = Target 
[ 
	target(target_destination) : "Target" 
]

@BaseClass = TeamNum
[
	TeamNum(choices) : "Team Number (int)" : 0 =
	[
		2 : "Terrorist"
		3 : "Counter-Terrorist"
	]
	input SetTeam(integer) : "Changes the entity's team"
]

@BaseClass color(0 0 200) base(Targetname, Angles) = Weapon
[
	spawnflags(Flags) =
	[
		1 : "Start constrained" : 0
	]

	output OnPlayerUse(void) : "Fires when the player +uses this weapon"
	output OnPlayerPickup(void) : "Fires when the player picks up this weapon"
]

@FilterClass base(BaseFilter) size(-8 -8 -8, 8 8 8) = filter_activator_team :
	"A filter that filters by the team of the activator."
[
	filterteam(choices) : "Filter Team Number" : 2 : "The team number to filter by.  If the filter mode is Allow, only entities whose "+
		"team number matches the given team will pass the filter. If the filter mode is Disallow, "+
		"all entities EXCEPT those whose team number matches the given team will pass the filter." =
	[
		2 : "Terrorist"
		3 : "Counter-Terrorist"
	]
]

//-------------------------------------------------------------------------
//
// Point Classes
//
//-------------------------------------------------------------------------

@PointClass base(Angles) studio("models/player/ct_urban.mdl") = info_player_counterterrorist :
	"This entity marks the start point for counter-terrorists. One of these needs to be placed for each team member. " +
	"20 start points is typical. Should be placed at least 128 units away from each other and surrounding walls"
[
]

@PointClass base(Angles) studio("models/player/t_phoenix.mdl") = info_player_terrorist :
	"This entity marks the start point for terrorists. One of these needs to be placed for each team member. " +
	"20 start points is typical. Should be placed at least 128 units away from each other and surrounding walls."
[
]

@PointClass base(Angles) studio("models/editor/playerstart.mdl") = info_player_logo :
	"This is for logo maps for demos. All players will spawn here, and there will be no " +
	"class menu, team menu, or HUD."
[
]

@PointClass base(Angles) studio("models/Characters/hostage_04.mdl") = hostage_entity :
	"Hostage. A hostage NPC will spawn at this point.\n\n" +
	"There are usually four hostages placed in each hostage rescue map. The model for each Hostage is randomly chosen."
[

	HostageType(choices) : "Hostage Model (int)" : 0 : "Not used. Hostage models are chosen randomly by the game." =
	[
		0 : "A"
		1 : "B"
		1 : "C"
		1 : "D"
	]
]

@PointClass base(Angles) = info_view_parameters :
	"This entity selects whether or not this level uses the Half-Life 2 view parameters (eye height: 64, FOV: 75) " +
	"or the old Counter-Strike settings (eye height: 53.5, FOV: 90)."
[
	ViewMode(choices) : "View Mode" : 0 =
	[
		0 : "Old"
		1 : "New"
	]
]

@PointClass base(Targetname,Angles) = info_map_parameters :
	"Map parameters. Used to set which teams can buys, and the C4 bomb detonation radius."
[
	buying(choices) : "Teams that can buy" : 0 =
	[
		0 : "Everyone"
		1 : "Only Counter-Terrorists"
		2 : "Only Terrorists"
		3 : "Nobody"
	]

	bombradius(float) : "C4 Explosion Radius" : 500 : "Overrides the default radius of the explosion when the C4 bomb explodes. Max range is 2048"
	input FireWinCondition(integer) : "Fires win conditions for the win."
]

@PointClass base(Angles) = env_detail_controller : "An entity that lets you control the fade distances for detail props."
[
	fademindist(float) : "Start Fade Dist/Pixels" : 400 : "Distance at which the prop starts to fade."
	fademaxdist(float) : "End Fade Dist/Pixels" : 1200 : "Maximum distance at which the prop is visible."
]

//-------------------------------------------------------------------------
//
// Weapons
//
//-------------------------------------------------------------------------

@PointClass base(Weapon) studio("models/weapons/w_knife_t.mdl") = weapon_knife : "Knife" []

@PointClass base(Weapon) studio("models/weapons/w_eq_fraggrenade.mdl") = weapon_flashbang : "Flashbang" []
@PointClass base(Weapon) studio("models/weapons/w_eq_fraggrenade.mdl") = weapon_hegrenade : "HE Grenade" []
@PointClass base(Weapon) studio("models/weapons/w_eq_smokegrenade.mdl") = weapon_smokegrenade : "Smoke Grenade" []

@PointClass base(Weapon) studio("models/weapons/w_defuser.mdl") = item_defuser : "Defuse Kit" []
@PointClass base(Weapon) studio("models/weapons/w_c4.mdl") = weapon_c4 : "C4 Bomb" []

@PointClass base(Weapon) studio("models/weapons/w_pist_glock18.mdl") = weapon_glock : "9X19mm Sidearm" []
@PointClass base(Weapon) studio("models/weapons/w_pist_usp.mdl") = weapon_usp : "K&M .45 Tactical" []
@PointClass base(Weapon) studio("models/weapons/w_pist_p228.mdl") = weapon_p228 : "228 Compact" []
@PointClass base(Weapon) studio("models/weapons/w_pist_deagle.mdl") = weapon_deagle : "Night Hawk .50C" []
@PointClass base(Weapon) studio("models/weapons/w_pist_fiveseven.mdl") = weapon_fiveseven : "ES Five-Seven" []
@PointClass base(Weapon) studio("models/weapons/w_pist_elite.mdl") = weapon_elite : ".40 Dual Elites" []

@PointClass base(Weapon) studio("models/weapons/w_shot_m3super90.mdl") = weapon_m3 : "Leone 12 Gauge Super" []
@PointClass base(Weapon) studio("models/weapons/w_shot_xm1014.mdl") = weapon_xm1014 : "Leone YG1265 Auto Shotgun" []

@PointClass base(Weapon) studio("models/weapons/w_smg_tmp.mdl") = weapon_tmp : "Schmidt Machine Pistol" []
@PointClass base(Weapon) studio("models/weapons/w_smg_mp5.mdl") = weapon_mp5navy : "K&M Sub-Machine Gun" []
@PointClass base(Weapon) studio("models/weapons/w_smg_ump45.mdl") = weapon_ump45 : "K&M UMP45" []
@PointClass base(Weapon) studio("models/weapons/w_smg_p90.mdl") = weapon_p90 : "ES C90" []
@PointClass base(Weapon) studio("models/weapons/w_smg_mac10.mdl") = weapon_mac10 : "Ingram MAC-10" []

@PointClass base(Weapon) studio("models/weapons/w_rif_galil.mdl") = weapon_galil : "IDF Defender" []
@PointClass base(Weapon) studio("models/weapons/w_rif_ak47.mdl") = weapon_ak47 : "CV-47" []
@PointClass base(Weapon) studio("models/weapons/w_rif_sg552.mdl") = weapon_sg552 : "Krieg 552 Commando" []
@PointClass base(Weapon) studio("models/weapons/w_rif_famas.mdl") = weapon_famas : "Clarion 5.56" []
@PointClass base(Weapon) studio("models/weapons/w_rif_m4a1.mdl") = weapon_m4a1 : "Maverick M4A1 Carbine" []
@PointClass base(Weapon) studio("models/weapons/w_rif_aug.mdl") = weapon_aug : "Bullpup" []

@PointClass base(Weapon) studio("models/weapons/w_snip_scout.mdl") = weapon_scout : "Schmidt Scout" []
@PointClass base(Weapon) studio("models/weapons/w_snip_g3sg1.mdl") = weapon_g3sg1 : "D3/AU-1 Semi-Auto Sniper Rifle" []
@PointClass base(Weapon) studio("models/weapons/w_snip_sg550.mdl") = weapon_sg550 : "Krieg 550 Commando" []
@PointClass base(Weapon) studio("models/weapons/w_snip_awp.mdl") = weapon_awp : "Magnum Sniper Rifle" []

@PointClass base(Weapon) studio("models/weapons/w_mach_m249para.mdl") = weapon_m249 : "ES M249 Para" []

//-------------------------------------------------------------------------
//
// Solid Classes
//
//-------------------------------------------------------------------------

@SolidClass = func_ladder : 
	"Ladder. Players will be able to freely along this brush, as if it was a ladder. If you are using a model prop " +
	"for the visual representation of the ladder in the map, apply the toolsinvisibleladder material to the " +
	"func_ladder brush."
[
]

@SolidClass base(func_physbox) = func_physbox_multiplayer : 
	"This class is the same as func_physbox, except the runtime collisions use a more bouncy method that avoids " +
	"the prediction errors normal physics objects get."
[
]

@SolidClass base(Targetname, TeamNum) = func_buyzone:  
	"Buy Zone. Players can buy equipment while standing in this zone, if the zone matches their current team.\n\n" +
	"A single Buy Zone entity must be either terrorist or counter-terrorist, it cannot be both. Should have " +
	"the toolstrigger material applied to all sides"
[
]

@SolidClass base(Targetname, Parentname ) = func_bomb_target:  
	"Bomb Target. The terrorists can place C4 explosives while standing in this zone.\n\n" +
	"When the bomb is planted and explodes inside this area, the BombExplode outputs are fired. The game handles " +
	"all of the bomb planting and scoring logic – the BombExplode outputs are provided to add visual and damage effects."
[
	output BombExplode(void): "Fires when C4 explodes"
	output BombPlanted(void): "Fires when a C4 is planted"
	output BombDefused(void): "Fires when a C4 is defused"

	heistbomb(choices) : "Heist Mode bomb target" : 0 : "This is a Bomb Target designed for the Heist game mode." =
	[
		0 : "No"
		1 : "Yes"
	]

	bomb_mount_target(string) : "Bomb Mount Target" 
]

@SolidClass base(Targetname) = func_hostage_rescue:  
	"Hostage Rescue Zone. When a hostage is led into this zone, it is marked as rescued."
[
]

//-------------------------------------------------------------------------
//
// Sound Test Map Entities
//
//-------------------------------------------------------------------------

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_surroundtest
	: "Surround Sound Test"
[
	input FireCorrectOutput(void)	: "Fire output based on snd_surround_speaker cvar value"
	output On2Speakers(void)	: "Fired if player is using 2 speakers."
	output On4Speakers(void)	: "Fired if player is using 4 speakers."
	output On51Speakers(void)	: "Fired if player is using 5.1 speakers."
]


@BaseClass base(Targetname, Angles) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = Territory 
[ 
	respawn_area(string) : "Respawn area name" 
	buyzone(string)	:	"Buy Zone name"
]

@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_hospital : "Hospital Territory Control Point"
[


]


@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_terrorist : "Terrorists' Base Territory Point (Non-Capturable)"
[


]


@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_counterterrorist : "Counter-Terrorists' Base Territory Point (Non-Capturable)"
[


]

@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_barracks : "Barracks Territory Control Point"
[


]

@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_bank : "Bank Territory Control Point"
[


]

@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_encryption : "Encryption Center Territory Control Point"
[


]

@PointClass base(Territory) studio( "models/props/cs_assault/consolepanelloadingbay.mdl" ) = info_territory_control_surveillance : "Surveillance Center Territory Control Point"
[


]


@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = point_territory_control_rules
	: "The Territory Control rules entity (VERY IMPORTANT!)"
[
	respawntime(float) : "Wave Respawn Time" : 30 : "Respawn time in seconds."
]

@SolidClass base(Targetname) = func_territory_respawn_area:  
	"Players will respawn inside this area."
[
]



