////////////////////////////////////////////////////////////////////////////////// // NoXiousNet Zombie Survival FGD // // If there are any bugs with this file, or any additions that need to be made // // make a post at: http://www.noxiousnet.com/forums/index.php?topic=14910 // ////////////////////////////////////////////////////////////////////////////////// @include "base.fgd" @include "halflife2.fgd" @include "hl2mp.fgd" ////////////////////////////////////////////////////////////////////////////////// // Gamemode - Brush Entities ///////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////// @SolidClass base(Targetname) = func_noair : "ZS: Anyone inside this brush requires air" [ // Keys enabled(choices) : "Enabled" : 0 : "Enable the brush entity." = [ 1 : "Yes" 0 : "No" ] // Inputs input enable(void) : "Enable the entity." input disable(void) : "Disable the entity." input seton(integer) : "Enable or Disable the entity." ] @SolidClass base(Targetname) = trigger_zombieclass : "ZS: You can directly control the changing of classes with this." [ // Keys enabled(choices) : "Enabled" : 0 : "Enable the brush entity." = [ 1 : "Yes" 0 : "No" ] touchclass(choices) : "On Touch Class" : "zombie" : "Any living zombie touching the brush will be set to this class name." = [ "will o' wisp" : "Will O' Wisp" "zombie" : "Zombie" "classic Zombie" : "Classic Zombie" "fresh dead" : "Fresh Dead" "zombie legs" : "Zombie Legs" "zombie torso" : "Zombie Torso" "flesh creeper" : "Flesh Creeper" "headcrab" : "Headcrab" "fast headcrab" : "Fast Headcrab" "poison headcrab" : "Poison Headcrab" "ghoul" : "Ghoul" "wraith" : "Wraith" "bloated zombie" : "Bloated Zombie" "fast zombie" : "Fast Zombie" "fast zombie legs" : "Fast Zombie Legs" "poison zombie" : "Poison Zombie" "chem zombie" : "Chem Zombie" "nightmare" : "Nightmare" "puke pus" : "Puke Pus" "the tickle monster" : "The Tickle Monster" "shade" : "Shade" "bonemesh" : "Bonemesh" "the butcher" : "The Butcher" "super zombie" : "Super Zombie" "gore child" : "Gore Child" "giga gore child" : "Giga Gore Child" ] endtouchclass(choices) : "On Leaving Class" : "zombie" : "Same as Touching Class but for when leaving the brush." = [ "will o' wisp" : "Will O' Wisp" "zombie" : "Zombie" "classic Zombie" : "Classic Zombie" "fresh dead" : "Fresh Dead" "zombie legs" : "Zombie Legs" "zombie torso" : "Zombie Torso" "flesh creeper" : "Flesh Creeper" "headcrab" : "Headcrab" "fast headcrab" : "Fast Headcrab" "poison headcrab" : "Poison Headcrab" "ghoul" : "Ghoul" "wraith" : "Wraith" "bloated zombie" : "Bloated Zombie" "fast zombie" : "Fast Zombie" "fast zombie legs" : "Fast Zombie Legs" "poison zombie" : "Poison Zombie" "chem zombie" : "Chem Zombie" "nightmare" : "Nightmare" "puke pus" : "Puke Pus" "the tickle monster" : "The Tickle Monster" "shade" : "Shade" "bonemesh" : "Bonemesh" "the butcher" : "The Butcher" "super zombie" : "Super Zombie" "gore child" : "Gore Child" "giga gore child" : "Giga Gore Child" ] touchdeathclass(choices) : "On Touch Respawn Class" : "zombie" : "Any living zombie touching the brush will be set to this class name on death." = [ "will o' wisp" : "Will O' Wisp" "zombie" : "Zombie" "classic Zombie" : "Classic Zombie" "fresh dead" : "Fresh Dead" "zombie legs" : "Zombie Legs" "zombie torso" : "Zombie Torso" "flesh creeper" : "Flesh Creeper" "headcrab" : "Headcrab" "fast headcrab" : "Fast Headcrab" "poison headcrab" : "Poison Headcrab" "ghoul" : "Ghoul" "wraith" : "Wraith" "bloated zombie" : "Bloated Zombie" "fast zombie" : "Fast Zombie" "fast zombie legs" : "Fast Zombie Legs" "poison zombie" : "Poison Zombie" "chem zombie" : "Chem Zombie" "nightmare" : "Nightmare" "puke pus" : "Puke Pus" "the tickle monster" : "The Tickle Monster" "shade" : "Shade" "bonemesh" : "Bonemesh" "the butcher" : "The Butcher" "super zombie" : "Super Zombie" "gore child" : "Gore Child" "giga gore child" : "Giga Gore Child" ] endtouchdeathclass(choices) : "On Leaving Respawn Class" : "zombie" : "Same as Touching Respawn Class but for when leaving the brush." = [ "will o' wisp" : "Will O' Wisp" "zombie" : "Zombie" "classic Zombie" : "Classic Zombie" "fresh dead" : "Fresh Dead" "zombie legs" : "Zombie Legs" "zombie torso" : "Zombie Torso" "flesh creeper" : "Flesh Creeper" "headcrab" : "Headcrab" "fast headcrab" : "Fast Headcrab" "poison headcrab" : "Poison Headcrab" "ghoul" : "Ghoul" "wraith" : "Wraith" "bloated zombie" : "Bloated Zombie" "fast zombie" : "Fast Zombie" "fast zombie legs" : "Fast Zombie Legs" "poison zombie" : "Poison Zombie" "chem zombie" : "Chem Zombie" "nightmare" : "Nightmare" "puke pus" : "Puke Pus" "the tickle monster" : "The Tickle Monster" "shade" : "Shade" "bonemesh" : "Bonemesh" "the butcher" : "The Butcher" "super zombie" : "Super Zombie" "gore child" : "Gore Child" "giga gore child" : "Giga Gore Child" ] onlywhenclass(choices) : "Player Must Be This Class" : "disabled" : "Set this to a specific class to change only these zombie types, separate multiple classes with commas." = [ "disabled" : "Disabled" "will o' wisp" : "Will O' Wisp" "zombie" : "Zombie" "classic Zombie" : "Classic Zombie" "fresh dead" : "Fresh Dead" "zombie legs" : "Zombie Legs" "zombie torso" : "Zombie Torso" "flesh creeper" : "Flesh Creeper" "headcrab" : "Headcrab" "fast headcrab" : "Fast Headcrab" "poison headcrab" : "Poison Headcrab" "ghoul" : "Ghoul" "wraith" : "Wraith" "bloated zombie" : "Bloated Zombie" "fast zombie" : "Fast Zombie" "fast zombie legs" : "Fast Zombie Legs" "poison zombie" : "Poison Zombie" "chem zombie" : "Chem Zombie" "nightmare" : "Nightmare" "puke pus" : "Puke Pus" "the tickle monster" : "The Tickle Monster" "shade" : "Shade" "bonemesh" : "Bonemesh" "the butcher" : "The Butcher" "super zombie" : "Super Zombie" "gore child" : "Gore Child" "giga gore child" : "Giga Gore Child" ] onetime(choices) : "One Time?" : 0 : "If yes then anyone who gets swapped will be respawned as the last class they were before the change." = [ 1 : "Yes" 0 : "No" ] instantchange(choices) : "Change Instantly?" : 1 : "If yes then anyone who gets swapped will instantly be changed right on the spot." = [ 1 : "Yes" 0 : "No" ] // Inputs input enable(void) : "Enable the entity." input disable(void) : "Disable the entity." input seton(integer) : "Set Enabled keyvalue." input settouchclass(string) : "Set On Touch Class keyvalue." input setendtouchclass(string) : "Set On Leaving Class keyvalue." input settouchdeathclass(string) : "Set On Touch Respawn Class keyvalue." input setendtouchdeathclass(string) : "Set On Leaving Respawn Class keyvalue." input setonetime(integer) : "Set One Time keyvalue. " input setinstantchange(integer) : "Set Change Instantly keyvalue. " input setonlywhenclass(string) : "Set Only When Class keyvalue." ] @SolidClass base(Targetname) = trigger_bossclass : "ZS: A zombie that touches this brush" [ // Keys enabled(choices) : "Enabled" : 0 : "Enable the brush entity." = [ 1 : "Yes" 0 : "No" ] silent(choices) : "Silent" : 0 : "If yes then then the server does not announce that a player has become the new boss." = [ 1 : "Yes" 0 : "No" ] instantchange(choices) : "Change Instantly?" : 1 : "If yes then anyone who gets swapped will instantly be changed right on the spot." = [ 1 : "Yes" 0 : "No" ] // Inputs input enable(void) : "Enable the entity." input disable(void) : "Disable the entity." input seton(integer) : "Set Enabled keyvalue. " input setsilent(integer) : "Set Silent keyvalue. " input setinstantchange(integer) : "Set Change Instantly keyvalue. " input spawnboss(void) : "Spawns the boss using the zombie with the highest score" // Outputs output OnBossTouched(void) : "Set when a boss starts touching the brush. Is not fired when a zombie becomes a boss in this volume." ] /////////////////////////////////////////////////////////////////////////////////// // Gamemode - Point Entities ////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////// @BaseClass base(Targetname) = ZSSpawn [ // Keys disabled(choices) : "Disabled" : 0 : "If disabled, players cannot spawn here." = [ 1 : "Yes" 0 : "No" ] // Inputs input enable(void) : "Enable the spawn point." input disable(void) : "Disable the spawn point." input toggle(void) : "Toggle the spawn point." ] @PointClass base(PlayerClass, Angles, ZSSpawn) studio("models/editor/playerstart.mdl") = info_player_human : "ZS: Humans can spawn here." [ ] @PointClass base(PlayerClass, Angles, ZSSpawn) studio("models/editor/playerstart.mdl") = info_player_zombie : "ZS: Zombies can spawn here." [ ] @PointClass base(PlayerClass, Angles, ZSSpawn) studio("models/editor/playerstart.mdl") = info_player_undead : "ZS: Zombies can spawn here. Alias of info_player_zombie." [ ] @PointClass base(PlayerClass, Angles, ZSSpawn) studio("models/editor/playerstart.mdl") = info_player_zombie_boss : "ZS: Boss Zombies will spawn here." [ ] @PointClass base(PlayerClass, Angles, ZSSpawn) studio("models/editor/playerstart.mdl") = info_player_redeemed : "ZS: Redeemed players can spawn here. Use of this is optional." [ ] @PointClass base(Targetname) = logic_beats : "ZS: Allows you to turn beats (the ambient music) on or off." [ // Keys enabled(choices) : "Enabled" : 1 : "Allows ZS beats" = [ 1 : "Yes" 0 : "No" ] // Inputs input enable(void) : "Enables beats." input disable(void) : "Disables beats." ] @PointClass base(Targetname) = logic_dynamicspawning : "ZS: Allows you to control dynamic spawning." [ // Keys enabled(choices) : "Enabled" : 1 : "Should dynamic spawning be on?" = [ 1 : "Yes" 0 : "No" ] // Inputs input enable(void) : "Enable dynamic spawning." input disable(void) : "Disable dynamic spawning." ] @PointClass base(Origin) iconsprite("particles/smokey") sphere( radius ) = zombiegasses : "ZS: Manually place a point for the zombies' noxious gases." [ // Keys radius(integer) : "Radius" : 250 : "Radius that this can damage humans/heal zombies." ] @PointClass base(Targetname) = logic_pickupdrop : "ZS: Controls events when players pickup or drop things." [ // Keys EntityToWatch(target_destination) : "Entity to Watch" : " " : "Name of the entity to watch (for outputs)." // Inputs input ForceDrop(string) : "Forces the dropping of something that's picked up by a human." input DisablePickup(string) : "Disables human pickups for the specified entity. Does not force dropping if currently carried, use the above input." input EnablePickup(string) : "Enables human pickups for the specified entity." // Outputs output OnPickedUp(void) : "Activator is the player, caller is the entity that was picked up." output OnDropped(void) : "Activator is the player, caller is the entity that was picked up." ] @PointClass base(Targetname) = logic_points : "ZS: Allows you to control and call outputs based on points." [ // Inputs input addtoactivator(integer) : "Adds to the activator." input addtocaller(integer) : "Adds to the caller." input takefromactivator(integer) : "Takes from the activator." input takefromcaller(integer) : "Takes from the caller." input setactivatoramount(integer) : "Sets the amount that activator has to ." input setcalleramount(integer) : "Sets the amount that caller has to ." input callifactivatorhave(integer) : "If the activator has this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input callifactivatornothave(integer) : "If the activator does bot have this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input callifcallerhave(integer) : "If the caller has this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input callifcallernothave(integer) : "If the call does not have this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." // Outputs output OnConditionPassed(void) : "Thrown by ourselves when a condition is passed. The activator is always the player in question. The arguments are the amount that was checked against." output OnConditionFailed(void) : "Thrown by ourselves when a condition is failed. The activator is always the player in question. The arguments are the amount that was checked against." ] @PointClass base(Targetname) = logic_brains : "ZS: Allows you to control and call outputs based on brains." [ // Inputs input addtoactivator(integer) : "Adds to the activator." input addtocaller(integer) : "Adds to the caller." input takefromactivator(integer) : "Takes from the activator." input takefromcaller(integer) : "Takes from the caller." input setactivatoramount(integer) : "Sets the amount that activator has to ." input setcalleramount(integer) : "Sets the amount that caller has to ." input callifactivatorhave(integer) : "If the activator has this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input callifactivatornothave(integer) : "If the activator does bot have this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input callifcallerhave(integer) : "If the caller has this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input callifcallernothave(integer) : "If the call does not have this amount then OnConditionPassed is thrown, otherwise OnConditionFailed." input redeemactivator(void) : "Instantly redeems the activator." input redeemcaller(void) : "Instantly redeems the caller." input setredeembrains(integer) : "Sets the amount of brains required for a zombie to automatically redeem. Setting it to 0 means no automatic redemptions." // Outputs output OnConditionPassed(void) : "Thrown by ourselves when a condition is passed. The activator is always the player in question. The arguments are the amount that was checked against." output OnConditionFailed(void) : "Thrown by ourselves when a condition is failed. The activator is always the player in question. The arguments are the amount that was checked against." ] @PointClass base(Targetname) = logic_startingloadout : "ZS: Allows you to control what people start with." [ // Keys startingloadout(string) : "Starting Loadout" : "worth" : "Sets the starting load out for all new humans. This is a comma-separated list of entity classes which is then separated by colons. For example: weapon_zs_peashooter:1,weapon_zs_axe:1,item_ammo_pistol:2 would give everyone a peashooter, an axe, and spawn two boxes of pistol ammo on them. It also accepts none for absolutely no starting items and worth for using the worth menu (default)." // Inputs input setstartingloadout(string) : "Sets the keyvalue" ] @PointClass base(Targetname) = logic_worth : "ZS: Allows you to control Worth." [ // Keys startingworth(integer) : "Starting Worth" : 100 : "The amount of Worth to start with. Use 0 to disable Worth." // Inputs input setstartingworth(integer) : "Sets the amount of worth to start with." ] @PointClass base(Targetname) = logic_barricade : "ZS: Allows or disallows specific entities from being nailed." [ // Inputs input disablethese(string) : "Takes the arguments in the form of a comma-separated array and disables any entities with that name. For example, disablethese objective1,somethingimportant,somethingelse. This would disable nailing of those entities." input enablethese(string) : "Takes the arguments in the form of a comma-separated array and enables any entities with that name. For example, enablethese objective1,somethingimportant,somethingelse. This would enable nailing of those entities." ] @PointClass base(Targetname) = logic_difficulty : "ZS: Adjusts the difficulty of the game." [ // Inputs input setzombiespeedmultiplier(float) : "Multiplyer for Zombie speed." input setzombiedamagemultiplier(float) : "Multiplyer for Zombie damage." ] @PointClass base(Targetname) = logic_pickups : "ZS: Allows you to control how much stuff people can pickup in the map. Only things placed by the mapper work with this system. Stuff from dead humans doesn't count." [ // Keys maxweaponpickups(integer) : "Max Weapon Pickups" : 5 : "How many weapons a player can pickup from the map." maxammopickups(integer) : "Max Ammo Pickups" : 5 : "How many ammo boxes a player can pickup from the map." maxflashlightpickups(integer) : "Max Flashlight Pickups" : 5 : "How many flashlight batteries a player can pickup from the map." weaponrequiredforammo(choices) : "Correct Weapon Required" : 0 : "If 1 then players must have a weapon that takes the ammo before being able to pick up an ammo box." = [ 1 : "Yes" 0 : "No" ] // Inputs input setmaxweaponpickups(integer) : "Set the number of weapons a player can pickup from the map." input setmaxammopickups(integer) : "Set the number of ammo boxes a player can pickup from the map." input setmaxflashlightpickups(integer) : "Set the number of flashlight batteries a player can pickup from the map." input setweaponrequiredforammo(integer) : "If 1 then players must have a weapon that takes the ammo before being able to pick up an ammo box." ] @PointClass base(Targetname) = logic_classunlock : "ZS: Allows you to control class unlocks." [ // Keys class(string) : "Class" : "zombie" : "Sets the name of the class to watch for any outputs." bossesenabled(choices) : "Enable Bosses" : 1 : "When enabled, bosses spawn at wave end as normal." = [ 1 : "Yes" 0 : "No" ] // Inputs input unlockclass(string) : "Forces a class to be unlocked." input lockclass(string) : "Forces a class to be locked." input setbossesenabled(integer) : "Enables or disables boss zombies." // Outputs output OnClassUnlocked(void) : "Called when the class we're watching's class is unlocked by the game. This output isn't called if the class is unlocked by any logic_classunlock entities, only by the game." ] @PointClass studio("models/crossbow_bolt.mdl") base(Targetname,Angles) = prop_nail : "ZS: Allows you to manually place nails." [ // Keys healthoverride(integer) : "Health Override" : -1 : "Sets the nail's maximum health to a specific number. Set to -1 or 0 to disable override" healthmultiplier(float) : "Health Multiply" : 1 : "Multiply the nail's default maximum health by this number." unremovable(choices) : "Unremovable" : 0 : "Set to yes to make this nail unremovable by players." = [ 1 : "Yes" 0 : "No" ] // Inputs input sethealth(integer) : "Sets the nail's remaining health." input attachto(target_destination) : "Parent to this entity." input nailto(target_destination) : "Nail to this entity. Use attachto first and then this to weld the two. Use 'worldspawn' here to weld to the world." input setname(string) : "Display this text as the owner name." input setunremovable(integer) : "Set if this nail is unremovable." input toggleunremovable(integer) : "Toggle unremovable state." ] @PointClass studio("models/Items/BoxMRounds.mdl") base(Targetname, Parentname, Angles) = prop_ammo : "ZS: Game Specific Ammo." [ // Keys ammotype(choices) : "Ammo Type" : "pistol" : "Ammo type this entity becomes" = [ "pistol" : "Pistol" "smg1" : "Sub-Machine Gun" "ar2" : "Assault Rifle" "pulse" : "Pulse" "buckshot" : "Shotgun" "357" : "Rifle" "XBowBolt" : "Crossbow Bolts" "grenade" : "Grenades" "SniperRound" : "Barricade Boards" "sniperpenetratedround" : "Det-Packs" "Battery" : "Medical Ammo" "striderminigun" : "Message Beacons" "GaussEnergy" : "Nails" "stone" : "Stones" "thumper" : "Turrets" ] amount(integer) : "Amount" : 0 : "Amount of ammo that collecting this item gives" ] @PointClass studio("models/weapons/w_irifle.mdl") base(Targetname, Parentname, Angles) = prop_weapon : "ZS: Game Specific Weapon." [ // Keys weapontype(string) : "weapon_type" : "weapon_zs_m4" : "Weapon type this entity becomes" ] @PointClass base(Targetname, Parentname) sphere( range ) = point_worldhint : "ZS: Allows you to create 3D hints and information tags." [ // Keys hint(string) : "Hint" : " " : "The hint to display." viewer(choices) : "Seen By" : 0 : "The team that can view us." = [ "-1" : "Disabled" "0" : "Everyone" "3" : "Zombies" "4" : "Humans" ] range(integer) : "Range" : 0 : "The range from the player's camera we must be in to see this hint. It can also be 0 for infinite." // Inputs input sethint(string) : "Sets the hint to display." input setviewer(integer) : "Sets the team that can view us. Use 0 for everyone, -1 for no one (inactive), 3 for zombie, and 4 for human." input setrange(float) : "Sets the range from the player's camera we must be in to see this hint. It can also be 0 for infinite which is the default." ] @PointClass base(Targetname, Parentname) = prop_playergib : "ZS: Allows you to manually place gibs." [ // Keys gibtype(choices) : "Gib Type" : 1 : "Overrides the gib's type." = [ 1 : "Skull" // "models/gibs/HGIBS.mdl" 2 : "Spine" // "models/gibs/HGIBS_spine.mdl" 3 : "Rib" // "models/gibs/HGIBS_rib.mdl" 4 : "Scapula" // "models/gibs/HGIBS_scapula.mdl" 7 : "Small Chunk" // "models/gibs/antlion_gib_medium_2.mdl" 5 : "Medium Chunk" // "models/gibs/Antlion_gib_Large_1.mdl" 6 : "Large Chunk" // "models/gibs/Strider_Gib4.mdl" ] lifetime(integer) : "Lifetime" : 0 : "Overrides how long for this gib should live. 0 for never automatically remove." ] @PointClass base(Targetname) = logic_winlose : "ZS: When activated, this will end the round immediately, with the specified outcome." [ // Keys endslowmo(choices) : "Enable Slow Motion Effect?" : 1 : "Enables or disables the slow motion effect at the end of the round." = [ 0 : "No" 1 : "Yes" ] endcamera(choices) : "Enable Custom Camera?" : 0 : "Enables or disables an end round camera." = [ 0 : "No" 1 : "Yes" ] endcamerapos(vector) : "Custom Camera Vector" : "" : "Sets the position of the end round camera." winmusic(sound) : "Win Music" : "default" : "The music that plays when the human team have won the round. 'default' for normal function" losemusic(sound) : "Lose Music" : "default" : "The music that plays when the human team have lost the round. 'default' for normal function" // Inputs input win(void) : "Humans win the game, map over." input lose(void) : "Humans lose the game, map over." input setendslomo(integer) : "Enables or disables the slow motion effect at the end of the round." input setendcamera(integer) : "Enables or disables an end round camera." input setendcamerapos(vector) : "Sets the vector for where the end round camera should go to." input setwinmusic(string) : "The music that plays when the human team have won the round. 'default' for normal function." input setlosemusic(string) : "The music that plays when the human team have lost the round. 'default' for normal function." // Outputs output onwin(void) : "Called when humans win even if not by this entity." output onlose(void) : "Called when humans lose even if not by this entity." ] @PointClass base(Targetname) = logic_infliction : "ZS: Watches for the specified infliction level." [ // Keys infliction(float) : "Infliction" : "0.5" : "Defines infliction to watch for (float between 0.0 - 1.0)." // Outputs output OnInflictionReached(void) : "Called when the specified infliction level has been reached." output OnLastHuman(void) : "Called when there is one person alive. !caller and !activator are both the last human's entity." ] @PointClass base(Targetname) = logic_waves : "ZS: Watches for the start of the specified wave." [ // Keys wave(integer) : "Wave" : 1 : "Any On* outputs will watch for this wave. Use -1 for all waves." // Inputs input AdvanceWave(void) : "Advances to the next wave and sets the wave to active." input EndWave(void) : "Sets the time that the wave ends to this very moment." input StartWave(void) : "Sets the time that the wave begins to this very moment." input SetWave(integer) : "Sets the wave to the number specified. This does not change the wave state between active and inactive." input SetWaves(integer) : "Sets the total amount of waves to the number specified. Don't worry about class unlocks, the gamemode does not use the max waves value directly." input SetWaveStart(integer) : "Sets the time that the wave will start to TimeNow +