Insurgency.fgd

From Valve Developer Community
Jump to: navigation, search
Dead End - Icon.png
This article has no links to other VDC articles. Please help improve this article by adding links that are relevant to the context within the existing text.
January 2024

From: \common\insurgency2\bin\insurgency.fgd

@include "base.fgd"

//
// Insurgency game definition file (.fgd) 
//

@MaterialExclusion
[
	//exclude these from being loaded into hammer's preview
	"console"
	"correction"
	"debug"
	"hud"
	"models"
	"particle"
	"particles"
	"vgui"
	"voice"
	"cable"
]

@AutoVisGroup = "Tool Brushes"
[
	"Vis Clusters"
	[	
		"func_viscluster"
	]
	
	"Detail Blockers"
	[
		"func_detail_blocker"
	]
]

@AutoVisGroup = "Entities"
[
	"Lights"
	[
		"light"
		"light_spot"
		"light_directional"
		"light_environment"
		"point_spotlight"
	]

	"Sprites"
	[
		"env_lightglow"
		"env_sprite_oriented"
		"env_sprite"
	]
]

@AutoVisGroup = "Soundscapes"
[
	"Env_soundscape"
	[
		"env_soundscape"
		"env_soundscape_triggerable"
		"env_soundscape_proxy"
	]
	
	"Trigger_soundscape"
	[
		"trigger_soundscape"
	]
	
	"Ambient_generic"
	[
		"ambient_generic"
	]
]

@AutoVisGroup = "Overlays"
[
	"Info_overlay"
	[
		"info_overlay"
	]
	
	"Info_decal"
	[
		"infodecal"
	]
]

@AutoVisGroup = "Cubemaps"
[
	"Cubemap Probes"
	[
		"env_cubemap"
	]
]

@AutoVisGroup = "Map Instances"
[
	"Instances"
	[
		"func_instance"
	]
	
	"Instance Modifiers"
	[
		"func_instance_io_proxy"
		"func_instance_parms"
		"func_instance_origin"
	]
]

@AutoVisGroup = "Insurgency"
[
	"Viewpoints"
	[
		"ins_viewpoint"
	]

	"Spawn Points"
	[
		"ins_spawnpoint"
		"ins_spawnzone"
		"ins_blockzone"
	]
		
	"Objective Entities"
	[
		"trigger_capture_zone"
		"point_controlpoint"
		"point_flag"
	]

	"Objective Logic"
	[
		"ins_rulesproxy"
		"logic_push"
		"logic_skirmish"
		"logic_vip"
		"logic_firefight"
		"logic_battle"
		"logic_elimination"
		"logic_hunt"
		"logic_checkpoint"
		"logic_outpost"
		"logic_training"
	]
]

//====================================================================================================================
// BASE CLASSES
//====================================================================================================================
@BaseClass = TeamNum
[
	TeamNum(choices) : "Team Number (int)" : 2 =
	[
		0 : "None"
		2 : "Security"
		3 : "Insurgents"
	]
]

@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 : "Security"
		3 : "Insurgents"
	]
]

@BaseClass = LogicGameType
[
	output OnSelected(void) : "Fired this gamemode is selected."
	output OnSecurityWin(void) : "Fired when Security team win a round."
	output OnInsurgentWin(void) : "Fired when Insurgent team win a round."
	output OnGameDraw(void) : "Fired when round results in a draw."
	output OnGameResult(void) : "Fired when a team has won a round."
	output OnGameOver(void) : "Game is over, show scoreboard."
	output OnPreRoundReset(void) : "Just before round is reset."
	output OnRoundReset(void) : "Round has reset and players have respawned."
	output OnRoundStarted(void) : "Round has started and players can move."
	
	input  ExtendRound(float) : "Extend the round timer by the given number of seconds"
	input  SetRoundTimer(float) : "Set the round timer (given in seconds)"
	input  EndRound(integer) : "End the round with a given winner (0 = draw, 2 = security, 3 = insurgents)"
	input  AwardTeamSupply(integer) : "Award given team with a supply point (2 = security, 3 = insurgents)"
]

@BaseClass = BaseObject
[
	SolidToPlayers(choices) : "Solid To Player" : 0 : "Is object solid to players?" =
	[
		0 : "Use Default"
		1 : "Yes"
		2 : "No"
	]
	
	output OnDestroyed(void) : "Object has been destroyed."
	output OnDamaged(void) : "Object has taken damage."
	output OnBecomingDisabled(void) : "Object's function has been disabled."
	output OnBecomingReenabled(void) : "Object's function has been reinstated."
	output OnObjectHealthChanged(void) : "Object's health has changed."
	
	input Show(void) : "Show this object"
	input Hide(void) : "Hide this object"
]

@BaseClass = BaseGrenade
[
	input  Explode(float) : "Explode after x seconds"
	input  MakeDud(void) : "Disable a grenade and remove it"
	input  SetPlayerOwner(void) : "Sets activator to the player owner."
]

//====================================================================================================================
// CORE ENTITIES
//====================================================================================================================
@SolidClass base(Targetname, Parentname, Origin, RenderFields,DamageFilter) = func_button_timed: 
	"An entity that takes time to use."
[
	use_time(integer) : "Use Time" : 5 : ""
	use_string(string) : "Use String" : "Using...." : ""
	use_sub_string(string) : "Use Sub-String" : "" : ""
	glow(target_destination) : "Glow Entity" : : "The name of an entity that will get the +use glow for this button."
	
	auto_disable(choices) : "Auto-Disable On Time Up" : 1 : "When the use timer is up, disable the button. (Can be enabled with an input)" =
	[
		0 : "No"
		1 : "Yes"
	]
	
	spawnflags(flags) =
	[
		2048: "Starts locked" : 0
	]
	
	locked_sound(choices) : "Locked Sound" : 0 : "Sound played when the player tries to use the button, and fails because it's locked." = 
	[
		0: "None"
		2: "Access Denied"
		8: "Small zap"
		10: "Buzz"
		11: "Buzz Off"
		12: "Latch Locked"
	]

	// Inputs
	input Lock(void) : "Lock the button, preventing it from functioning and playing a locked sound."
	input Unlock(void) : "Unlock the button, allowing it to function."
	input Enable(void) : "Enable the button, so it glows and can be used."
	input Disable(void) : "Disable the button, so it can't be used and doesn't glow."

	// Outputs
	output OnPressed(void) : "Fired when the button is pressed."
	output OnUnPressed(void) : "Fired when the button is unpressed."
	output OnTimeUp(void) : "Fired when the button has been held more than the required amount of time."
	output OnUseLocked(void) : "Fired when the button is used while locked."
]

@PointClass base(Angles) iconsprite("editor/env_detail_controller.vmt") = 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."
]

@SolidClass base(Trigger,TeamNum) = ins_blockzone : "Block Zone"
[
   spawnflags(flags) =
   [
		2: "Ignore player +USE" : 1
   ]
   
   rendercolor(color255) : "FX Color (R G B)" : "255 255 255" : "The FX color is used by the selected Render Mode."
   renderamt(integer) : "Renderamt" : 255 : "Integer-Value from 0 to 255 allowed"
   rendermode(integer) : "Rendermode" : 0
   renderfx(integer) : "Render-Effect" : 0
]

@SolidClass base(Trigger,TeamNum) = ins_spawnzone : "Spawn Zone"
[
   spawnflags(flags) =
   [
	  1: "Disable inventory" : 0
      2: "Ignore player +USE" : 1
   ]
   
   rendercolor(color255) : "FX Color (R G B)" : "255 255 255" : "The FX color is used by the selected Render Mode."
   renderamt(integer) : "Renderamt" : 255 : "Integer-Value from 0 to 255 allowed"
   rendermode(integer) : "Rendermode" : 0
   renderfx(integer) : "Render-Effect" : 0
   blockzone(target_destination) : "Block Zone" : "" : "If set, enables/disables given block zone(s) along with this spawn zone"
   SquadID(integer) : "Associated Squad" : -1 : "If >=0, spawn points in this zone will be associated with the given squad"
]

@SolidClass base(Targetname, Parentname, TeamNum, EnableDisable) = func_teamblocker : 
	"Walls that players of a certain team are unable to pass through" 
[	
	spawnflags(flags) =
	[
		2: "Don't show hint when touched" : 0
	]
]

//====================================================================================================================
// GAMERULES ENTITIES
//====================================================================================================================
@PointClass base(Targetname) = ins_rulesproxy : "Proxy entity for INS Gamerules"
[	
	output OnGamemodeStarted(string) : "Fired when a gamemode is selected."
	output OnGamemodeReset(string) : "Fired at each round reset, giving the gamemode."
	
	output OnSecurityWin(void) : "Fired when Security team win a round."
	output OnInsurgentWin(void) : "Fired when Insurgent team win a round."
	output OnGameDraw(void) : "Fired when round results in a draw."
	output OnGameResult(integer) : "Fired when a team has won a round."
	output OnGameOver(integer) : "Game is over, show scoreboard."
	output OnPreRoundReset(void) : "Just before round is reset."
	output OnRoundReset(string) : "Round has reset and players have respawned."
	output OnRoundStarted(void) : "Round has started and players can move."
	output OnWaveDeployedTeamOne(void) : "Reinforcement wave deployed for Team One"
	output OnWaveDeployedTeamTwo(void) : "Reinforcement wave deployed for Team Two"
	output OnRapidDeploymentTeamOne(void) : "When an objective capture has redeployed team one"
	output OnRapidDeploymentTeamTwo(void) : "When an objective capture has redeployed team two"
	
	input  ExtendRound(float) : "Extend the round timer by the given number of seconds"
	input  SetRoundTimer(float) : "Set the round timer (given in seconds)"
	input  EndRound(integer) : "End the round with a given winner (0 = draw, 2 = security, 3 = insurgents)"
	input  AwardTeamSupply(integer) : "Award given team with a supply point (2 = security, 3 = insurgents)"
]

@SolidClass base(Trigger) = trigger_capture_zone : "Allows players capture its associated point."
[
	controlpoint(target_destination) : "Associated Control Point" : : "The control point associated with this Capture Zone."
]

@PointClass base( Global, Targetname ) iconsprite("editor/team_cp.vmt") = point_controlpoint : "Main capture point for Occupy"
[
	default_owner(choices) : "Default Owner (int)" : 0 =
	[
		0 : "Unassigned"
		2 : "Security"
		3 : "Insurgents"
	]

	printname(string) : "Print Name" : "" : "Descriptive name for this control point"

	output OnCaptured(void) : ""
	output OnCapturedBySecurity(void) : ""
	output OnCapturedByInsurgent(void) : ""
	output OnReset(void) : ""
]

@PointClass base(Targetname, Parentname, Global, TeamNum, Studiomodel, Angles) studioprop() = point_flag : "flag entity."
[
	output OnPickedUp(void) : ""
	output OnDropped(void) : ""
	output OnReset(void) : ""
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_battle.vmt") = logic_skirmish : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_battle.vmt") = logic_battle : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_elimination.vmt") = logic_elimination : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_elimination.vmt") = logic_firefight : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_elimination.vmt") = logic_vip : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_training.vmt") = logic_push : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_training.vmt") = logic_hunt : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_training.vmt") = logic_checkpoint : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_training.vmt") = logic_outpost : ""
[
]

@PointClass base( Global, Targetname, LogicGameType ) iconsprite("editor/logic_training.vmt") = logic_training : ""
[
	input ProvideTokens(integer) : ""
	input PlayOnline(void) : "Returns the player to the main menu"
	input PracticeOffline(void) : "Loads pvp and sets a new mapcycle"
	
]

//====================================================================================================================
// OBJECTS
//====================================================================================================================
@PointClass base( Global, Targetname, TeamNum, BaseObject ) studio( "models/static_props/wcache_ins_01.mdl" ) = obj_weapon_cache : "Weapon cache that can be placed in the world to give dynamic buy zones."
[
	InitialHealth(integer) : "Initial Health" : 220
	
	TakeDamageBullets(choices) : "Take Bullet Damage" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@PointClass base( Global, Targetname, TeamNum, BaseObject ) studio( "models/static_props/ins_radio.mdl" ) = obj_destructible : "Destructible objects that can either be neutral or an objective"
[
	InitialHealth(integer) : "Initial Health" : 220
	
	TakeDamageBullets(choices) : "Take Bullet Damage" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	
	TakeDamageMelee(choices) : "Take Melee Damage" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
	
	CustomTrigger(target_destination) : "Associated Trigger"
	ControlPoint(target_destination) : "Associated Control Point"
	
	CustomModelPathHealthy(studio) : "Model (healthy)" : "models/static_props/ins_radio.mdl"
	CustomModelPathDestroyed(studio) : "Model (destroyed)" : "models/static_props/ins_radio_burned.mdl"
]

@PointClass base( Global, Targetname, TeamNum, BaseObject ) studio( "models/vehicles/minibus.mdl" ) = obj_destructible_vehicle : "Destructible vehicles that can either be neutral or an objective"
[
	VehicleType(choices) : "Vehicle Type" : 0 =
	[
		0 : "Minibus"
		1 : "Lada"
		2 : "Mercedes"
		3 : "Humvee"
		4 : "Passat"
		5 : "Amtrac"
	]
	
	InitialHealth(integer) : "Initial Health" : 220
	
	TakeDamageBullets(choices) : "Take Bullet Damage" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

//====================================================================================================================
// OTHER
//====================================================================================================================
@SolidClass base(Trigger) = trigger_auto_crouch : "Allows players touching the trigger to auto-crouch."
[
]

@SolidClass base(Trigger) = trigger_grenade_extinguisher : "Puts out AOE grenades (like Molotovs) that touch it"
[
	ExtinguishDelayMin(float) : "Extinguish Delay (min)" : 1
	ExtinguishDelayMax(float) : "Extinguish Delay (max)" : 2
]

@PointClass base(Angles, Studiomodel, Shadow) Studioprop() = prop_foliage : "Foliage which is non-solid but blocks AI LoS"
[
	fademindist(float) : "Start Fade Dist/Pixels" : -1 : "Distance at which the prop starts to fade (<0 = use fademaxdist). If 'Screen Space Fade' is selected, this represents the number of pixels wide covered by the prop when it starts to fade."
	fademaxdist(float) : "End Fade Dist/Pixels" : 0 : "Maximum distance at which the prop is visible (0 = don't fade out). If 'Screen Space Fade' is selected, this represents the *minimum* number of pixels wide covered by the prop when it fades."
	fadescale(float) : "Fade Scale" : 1 : "If you specify a fade in the worldspawn, or if the engine is running under dx7 [hl2/ep1/portal] or dx8 [ep2/tf], then the engine will forcibly fade out props even if fademindist/fademaxdist isn't specified." +
	" This scale factor gives you some control over the fade. Using 0 here turns off the forcible fades." +
	" Numbers smaller than 1 cause the prop to fade out at further distances," +
	"and greater than 1 cause it to fade out at closer distances."
]

@PointClass base(Targetname, Parentname) iconsprite("editor/env_explosion.vmt") = env_explosion_ins : 
	"An entity that creates an explosion at its origin." 
[
	
	szExplosiveName(choices) : "Explosion Type" : "grenade_c4" = 
	[
		"grenade_c4" : "C4"
		"grenade_ied" : "IED"
		"rocket_at4": "AT4"
		"rocket_rpg7": "RPG7"
		"grenade_m203_he" : "M203 HE"
		"grenade_gp25_he" : "GP25 HE"
		"grenade_m203_smoke" : "M203 Smoke"
		"grenade_gp25_smoke" : "GP25 Smoke"
		"grenade_flare" : "Flare"
		"grenade_molotov" : "Molotov"
		"grenade_anm14" : "ANM14"
		"grenade_f1" : "F1"
		"grenade_m67" : "M67"
		"grenade_m84" : "M84"
		"grenade_m18" : "M18"
		"vehicle" : "Vehicle Explosion"
	]
	
	UseFuseTime(boolean) : "Use Fuse Time" : 0
	UseLaunchSound(boolean) : "Use Launch Sound" : 0

	// Inputs
	input Explode(void) : "Trigger the explosion."
]

@PointClass base(Targetname, Origin, Angles, Studiomodel) Studioprop() = prop_explosive : 
	"An explosive entity that creates an explosion when destroyed and switches the prop's skin to a damaged state." 
[
	model(studio) report : "Explosive Model" : "models/static_props/wcache_box_02.mdl"
	ExplosiveSound(sound) : "Explosive Sound" : "World.Generic.AmmoBoxCookOff"
	ExplosiveParticle(particlesystem) : "Explosive Particle" : "ins_ammo_explosion"
	
	CanBeDamaged(boolean) : "Can Be Damaged" : 1
	InitialHealth(integer) : "Initial Health" : 5
	DamagedSkin(integer) : "Damaged Skin" : 2
	
	ShouldDoAreaDamage(boolean) : "Should Do Area Damage" : 1
	AreaDamageRange(integer) : "Area Damage Range" : 64
	AreaDamageTime(float) : "Area Damage Time" : "5.0"
	AreaDamageFrequency(float) : "Area Damage Frequency" : "1.0"
	AreaDamageAmount(float) : "Area Damage Amount" : "5.0"
	AreaDamagePhysicsForce(float) : "Area Damage Physics Force" : "20.0" : "Force of random forces applied to this object"

	// Inputs
	input Explode(void) : "Trigger the explosion."
]

@PointClass base(Targetname, Parentname) studio( "models/static_props/FireSprinklerHead_break.mdl" )  = prop_sprinkler : 
	"It's a sprinkler, honest." 
[
	// Inputs
	input Start(void) : ""
	input Stop(void) : ""
	
	// Outputs
	output OnStart(string) : ""
	output OnStop(string) : ""
	output OnBreak(string) : ""
]

@PointClass base(prop_physics) studio( "models/static_props/prop_halloween_pumpkin_glowing.mdl" )  = prop_pumpkin : 
	"For those days when you really need a pumpkin." 
[
	randomizeAppearance(choices) : "Randomize Appearance" : 1 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@PointClass base(Targetname) = logic_training_timer : "For internal use."
[
	// Inputs
	input Start(void) : ""
	input Finish(void) : ""
]

//====================================================================================================================
// MISC TRIGGERS
//====================================================================================================================
@SolidClass base(Trigger, TeamNum) = func_buyzone : "Allows players within this trigger to buy weapons and upgrades."
[
]

@SolidClass base(Trigger, TeamNum) = func_weapon_lower : "Lowers the weapon of a player who enters the area."
[
]

//====================================================================================================================
// LADDER + ELEVATOR
//====================================================================================================================
@SolidClass = func_ladder : 
	"Ladder. Players will be able to freely along one side of 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 climbable side of the func_ladder brush."
[
]

@SolidClass base(Targetname, Parentname, Origin, RenderFields) = func_elevator :
	"A brush entity that moves vertically."
[
	top(vecline) : "Top floor position"
	bottom(vecline) : "Bottom floor position"

	speed(integer) : "Speed" : 100 : "The speed that the elevator moves, in inches per second."
	acceleration(integer) : "Acceleration" : 100 : "The acceleration at which the elevator approaches its target speed, in inches per second per second."
	blockdamage(float) : "Block Damage" : 0 : "The amount of damage to do to any entity that blocks the elevator, per frame."
	startsound(sound) : "Sound played when the elevator starts moving."
	stopsound(sound) : "Sound played when the elevator stops moving."
	disablesound(sound) : "Sound played when the elevator is disabled."

	// Inputs
	input MoveToFloor(string) : "Start the elevator moving to the specified floor."
	input Disable(void) : "Stops the elevator and prevents it from moving again."
	input SetMaxSpeed(float) : "Set the max speed of the elevator."

	// Outputs
	output OnReachedTop(string) : "Fired when the brush reaches the top."
	output OnReachedBottom(string) : "Fired when the brush reaches the bottom."
]

@PointClass base(Targetname, Parentname, Angles) iconsprite("editor/info_target.vmt") = info_elevator_floor : 
	"Elevator floor height target."
[
	// Outputs
	output OnReachedFloor(void) : "Fired when an elevator reaches this floor."
]

//====================================================================================================================
// SPAWN
//====================================================================================================================

@PointClass base(PlayerClass, Targetname, EnableDisableDisabled, Angles, TeamNum, Studiomodel) Studioprop() = ins_spawnpoint : "Spawnpoint"
[
	spawnflags(flags) =
	[
		1 : "Controlled by a Spawn Zone" : 0
	]

	StartDisabled(boolean) : "Start Disabled" : 0 : "Start disabled. Ignored if controlled by spawn zone"
	controlpoint(target_destination) : "Associated Control Point" : : "The team_control_point associated with this spawn. Ownership of control points will control this spawn point's enabled state."
	SquadID(integer) : "Associated Squad" : -1 : "If >=0, this spawn point will be associated with the given squad ID"
]

@PointClass base(Angles, Targetname) iconsprite("editor/ins_viewpoint.vmt") color(255 0 0) = ins_viewpoint : "Viewpoint"
[
]

//====================================================================================================================
// DEFAULT THEATER ENTITIES
//====================================================================================================================
@PointClass base(Angles, Targetname, TeamNum, Studiomodel, BaseGrenade) studio( "models/weapons/w_c4.mdl" ) = grenade_c4 : "Security C4"
[
]

@PointClass base(Angles, Targetname, TeamNum, Studiomodel, BaseGrenade) studio( "models/weapons/w_ied.mdl" ) = grenade_ied : "Insurgent C4 (IED)"
[
]