Hl op4.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
//
// Half-Life OPPOSING FORCE game definition file (.fgd)
// based on version 1.52 with changes and additions for
// Opposing Force addon pack; for use with
// Worldcraft 2.0 and above, and Half-Life 1.0.0.9 and above
// last update: 12/01/1999
//

// FINAL VERSION 1.0a

// external
// Chris "autolycus" Bokitch changes
//
// 1201 - version 1.0a -- 
// 1201 - changed item_generic default model to models/egg.mdl
// 1201 - changed OpFor item baseclasses from TargetX to 
//        Targetx
// 1201 - removed Target and Targetname baseclasses from 
//        OpFor items (as they were already present)
// 1201 - thanks to Mr. White for pointing out the problem
//
// 1124 - changed engineer's default weapon to the pistol
// 1121 - clarified "suspicious" property values

// David "Alpha_Male" Mertz changes
//
// 1119 - removed info_pitworm (never fully implemented)
// 1112 - added 'scale' back into env_spritetrain (unsupported)
// 1112 - fixed some minor spelling mistakes
// 1112 - removed 'gravity(string)' from env_shooter (never implemented)
// 1112 - double checked and included halflife.fgd version 1.6 changes
// 1112 - included halflife.fgd version 1.6 changes to Op For entities
// 1112 - removed RenderFxChoices from ammo entities
// 1112 - removed RenderFxChoices from weapon entities
// 1112 - added RenderFields to ammo entities
// 1112 - added RenderFields to weapon entities
// 1111 - general clean up for public release
// 1111 - replaced 'hgrunt' with 'grunt' for "mapteams(string)" in worldspawn
// 1111 - removed trigger_displacersave (obsolete)
// 1111 - removed trigger_kill_nogib (never implemented)
// 1111 - added description comments for ammo_spore
// 1111 - added description comments for displacer target entities
// 1111 - reorganization and partial alphabetizing
// 1111 - added separation headers for Op For classes (.fgd organization)

// John's changes:
// ---------------
// 1025 - added render properties to weapons
// 1024 - added trigger_xen_return
// 1021 - removed default speed value from path_track and path_corner
// 1020 - added dead vortigaunt
// 1018 - added monster_op4loader
// 1015 - added head controller support for monster_generic
// 1011 - removed support for rotation from spritetrain, changed rope defaults
// 1008 - added 'disable' to rope and wire
// 1007 - added trigger_kill_nogib
// 1007 - added zoffset to blowercannon
// 0929 - updated male assassin
// 0925 - added displacer targets
// 0920 - fixed male assassin, added body to item_suit
// 0917 - added dead human grunt ally (patrick)
// 0917 - added monster_blkop_osprey, monster_blkop_apache
// 0916 - updated monster_cycler, env_shooter
// 0914 - added gonome
// 0824 - added trigger_playerfreeze and gene worm
// 0820 - added displacer targets
// 0820 - added torch_ally
// 0820 - cleanup for mapper delivery
// 0813 - added mortar and controller
// 0804 - fixed ammo_762
// 0802 - added all the new OpFor ents

// Rob's changes:
// --------------
// 0603 - added 'globalname' to func_plat
// 0413 - rolled in changes from version 1.52
// 0410 - added 'targetname' keyvalue to func_ladder so they can be killed
// 0406 - changed description for 'listener' keyvalue in scripted_sentence
// 0407 - added 'speed' to func_plat

// External Changes:
// -----------------
// 1122 - added func_tankcontrols
// 1128 - added RenderFields to monsters
// 1129 - added _minlight to most func_s
// 1207 - added cute little monster_babycrab entity
// 1208 - added ammo_9mmbox, 200 9mm shells
// 1208 - added monster_rat, has limited animations, no ai
// 1208 - added monster_snark (thanks HB :)
// 0201 - changed worldspawn variable types
// 0218 - removed unneeded properties from trigger_monsterjump
// 0218 - increased func_rot_button speed from 5 to 50
// 0218 - increased momentary_rot_button speed from 5 to 50
// 0218 - removed master from trigger_cdaudio
// 0222 - added targetname to func_plat
// 0222 - cleaned up func_platrot a bit
// 0224 - removed info_player_start2
// 0302 - changed cycler_weapon size info
// 0302 - removed MoveTarget (target) from Monster definition
// 0302 - redid cycler properties
// 0302 - redid cycler_sprite properties and size
// 0305 - removed obsolete flags from scripted_sequence (oops)
// 0308 - removed obsolete flags from BaseTank entity baseclass
//        affecting func_tank, -laser, -mortar, and -rockets.
// 0312 - added speed to func_platrot
// 0312 - added sequence to weapon_crossbow
// 0312 - added rendering properties to button_target
// 0315 - added first set of game_ ents: _counter, _counter_set, 
//        _end, _player_hurt, _score, _team_master, _team_master_set,
//        _text, and _zone_player (1.0.0.9 only)
// 0319 - rearranged env_beam
// 0319 - added Targetname reference to Weapon BaseClass
// 0324 - added game_player_equip
// 0401 - added game_player_team
// 0401 - made changes to various game_ ents
// 0410 - added master to BaseTank baseclass
// 0411 - removed Appearflags from monsters (duh)
// 0411 - typo fixed env_sound - "meejum"
// 0411 - changed defauly env_sprite to sprites/glow01.spr
//        (sprites/glow.spr was not valid)
// 0411 - gave env_glow a default sprite of sprites/glow01.spr
// 0412 - added speed to func_plat
// 0412 - added mapteams and defaultteam to worldspawn
// 0428 - removed master from trigger_relay 
//      - set all choice default values to their first ordinal value
// 0429 - changed instances of wait(string) to wait(integer) 
// 0506 - added Target to light_spot 
//      - changed light_spot _cone and _cone2 descriptions and defaults 
//      - added a Multithreaded flag to the multi_manager 
// 0510 - commented out master in game_zone_player 
//      - commented out dmdelay in func_recharge and func_healthcharger
// 0518 - added Weapon and Targetx bases to items
// 0524 - added Targetname to func_illusionary 
// 0910 - various minor fixes and improvements
//      - changed entity coloring on some things
//      - added rendering properties to various things

//
// worldspawn
//

@SolidClass = worldspawn : "World entity"
[
  message(string) : "Map Description / Title"
  skyname(string) : "environment map (cl_skyname)"
  sounds(integer) : "CD track to play" : 1
  light(integer) : "Default light level"
  WaveHeight(string) : "Default Wave Height"
  MaxRange(string) : "Max viewable distance" : "4096"
  chaptertitle(string) : "Chapter Title Message"
  startdark(choices) : "Level Fade In" : 0 =
  [ 
    0 : "No"
    1 : "Yes"
  ]
  gametitle(choices) : "Display game title" : 0 = 
  [ 
    0 : "No"
    1 : "Yes"
  ]
  newunit(choices) : "New Level Unit" : 0 = 
  [
    0 : "No, keep current"
    1 : "Yes, clear previous levels"
  ]
  mapteams(string) : "Map Team List" : "grunt;scientist"
  defaultteam(choices) : "Default Team" : 0 = 
  [
    0 : "Fewest Players"
    1 : "First Team"
  ]
]

//
// BaseClasses
//

@BaseClass = Appearflags
[
  spawnflags(Flags) =
  [
    2048 : "Not in Deathmatch" : 0
  ]
]

@BaseClass size(0 0 0, 32 32 32) color(80 0 200) base(Appearflags) = Ammo []

@BaseClass = Targetname 
[ 
  targetname(target_source) : "Name"
]
@BaseClass = Target 
[ 
  target(target_destination) : "Target" 
]
@BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Appearflags) = Weapon []
@BaseClass = Global 
[ 
  globalname(string) : "Global Entity Name" 
]

@BaseClass base(Target) = Targetx 
[
  killtarget(target_destination) : "KillTarget"
  delay(string) : "Delay before trigger" : "0"
]

@BaseClass = RenderFxChoices
[
  renderfx(choices) :"Render FX" : 0 =
  [
    0: "Normal"
    1: "Slow Pulse"
    2: "Fast Pulse"
    3: "Slow Wide Pulse"
    4: "Fast Wide Pulse"
    9: "Slow Strobe"
    10: "Fast Strobe"
    11: "Faster Strobe"
    12: "Slow Flicker"
    13: "Fast Flicker"
    5: "Slow Fade Away"
    6: "Fast Fade Away"
    7: "Slow Become Solid"
    8: "Fast Become Solid"
    14: "Constant Glow"
    15: "Distort"
    16: "Hologram (Distort + fade)"
  ]
]

@BaseClass base(RenderFxChoices) = RenderFields 
[
  rendermode(choices) : "Render Mode" : 0 =
  [
    0: "Normal"
    1: "Color"
    2: "Texture"
    3: "Glow"
    4: "Solid"
    5: "Additive"
  ]
  renderamt(integer) : "FX Amount (1 - 255)"
  rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

@BaseClass base(Appearflags) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass []

@BaseClass base(Target, Targetname, RenderFields) color(0 200 200) = Monster 
[
  TriggerTarget(String) : "TriggerTarget"
      TriggerCondition(Choices) : "Trigger Condition" : 0 =
  [
    0 : "No Trigger"
    1 : "See Player, Mad at Player"
    2 : "Take Damage"
    3 : "50% Health Remaining"
    4 : "Death"
    5 : "(N/A) Squad Member Dead"
    6 : "(N/A)Squad Leader Dead"
    7 : "Hear World"
    8 : "Hear Player"
    9 : "Hear Combat"
    10: "See Player Unconditional"
    11: "See Player, Not In Combat"
  ]
  spawnflags(Flags) = 
  [
    1 : "WaitTillSeen"  : 0
    2 : "Gag"   : 0
    4 : "MonsterClip" : 0
    16: "Prisoner"    : 0
    128: "WaitForScript"  : 0
    256: "Pre-Disaster"   : 0
    512: "Fade Corpse"  : 0
  ]
]

@BaseClass = TalkMonster
[
  UseSentence(String) : "Use Sentence"
  UnUseSentence(String) : "Un-Use Sentence"
]

@BaseClass size(-16 -16 -16, 16 16 16) = gibshooterbase
[
  targetname (target_source) : "Name"

  // how many pieces to create
  m_iGibs(integer) : "Number of Gibs" : 3
  
  // delay (in seconds) between shots. If 0, all gibs shoot at once.
  delay(string) : "Delay between shots" : "0"

  // how fast the gibs are fired
  m_flVelocity(integer) : "Gib Velocity" : 200

  // Course variance
  m_flVariance(string) : "Course Variance" : "0.15"

  // Time in seconds for gibs to live +/- 5%
  m_flGibLife(string) : "Gib Life" : "4"

  spawnflags(Flags) = 
  [
    1 : "Repeatable"  : 0
  ]
]

@BaseClass = Light 
[
  _light(color255) : "Brightness" : "255 255 128 200"
      style(Choices) : "Appearance" : 0 =
  [
    0 : "Normal"
    10: "Fluorescent flicker"
    2 : "Slow, strong pulse"
    11: "Slow pulse, noblack"
    5 : "Gentle pulse"
    1 : "Flicker A"
    6 : "Flicker B"
    3 : "Candle A"
    7 : "Candle B"
    8 : "Candle C"
    4 : "Fast strobe"
    9 : "Slow strobe"
  ]
  pattern(string) : "Custom Appearance"
]

@BaseClass base(Targetname,Global) = Breakable
[
  target(target_destination) : "Target on break"
  health(integer) : "Strength" : 1
  material(choices) :"Material type" : 0 =
  [
    0: "Glass"
    1: "Wood"
    2: "Metal"
    3: "Flesh"
    4: "Cinder Block"  
    5: "Ceiling Tile"
    6: "Computer"
    7: "Unbreakable Glass"
    8: "Rocks"
  ]
  explosion(choices) : "Gibs Direction" : 0 =
  [
    0: "Random"
    1: "Relative to Attack"
  ]
  delay(string) : "Delay before fire" : "0"
  gibmodel(string) : "Gib Model" : ""
  spawnobject(choices) : "Spawn On Break" : 0 =
  [
    0: "Nothing"
    1: "Battery"
    2: "Healthkit"
    3: "9mm Handgun"
    4: "9mm Clip"
    5: "Machine Gun"
    6: "Machine Gun Clip"
    7: "Machine Gun Grenades"
    8: "Shotgun"
    9: "Shotgun Shells"
    10: "Crossbow"
    11: "Crossbow Bolts"
    12: "357"
    13: "357 clip"
    14: "RPG"
    15: "RPG Clip"
    16: "Gauss clip"
    17: "Hand grenade"
    18: "Tripmine"
    19: "Satchel Charge"
    20: "Snark"
    21: "Hornet Gun"
  ]
  explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0
]

@BaseClass base(Appearflags, Targetname, RenderFields, Global) = Door
[
  killtarget(target_destination) : "KillTarget"
  speed(integer) : "Speed" : 100
  master(string) : "Master" 
  movesnd(choices) : "Move Sound" : 0 = 
  [
    0: "No Sound"
    1: "Servo (Sliding)"
    2: "Pneumatic (Sliding)"
    3: "Pneumatic (Rolling)"
    4: "Vacuum"
    5: "Power Hydraulic"
    6: "Large Rollers"
    7: "Track Door"
    8: "Snappy Metal Door"
    9: "Squeaky 1"
    10: "Squeaky 2"
  ]
  stopsnd(choices) : "Stop Sound" : 0 = 
  [
    0: "No Sound"
    1: "Clang with brake"
    2: "Clang reverb"
    3: "Ratchet Stop"
    4: "Chunk"
    5: "Light airbrake"
    6: "Metal Slide Stop"
    7: "Metal Lock Stop"
    8: "Snappy Metal Stop"
  ]
  wait(choices) : "Delay before close" : 4 = 
  [
    -1 : "Stays open"
  ]
  lip(integer) : "Lip"
  dmg(integer) : "Damage inflicted when blocked" : 0
  message(string) : "Message if triggered"
  target(target_destination) : "Target"
  delay(integer) : "Delay before fire" 
  netname(string) : "Fire on Close"
  health(integer) : "Health (shoot open)" : 0
  spawnflags(flags) =
  [
    1 : "Starts Open" : 0
    4 : "Don't link" : 0
    8: "Passable" : 0
        32: "Toggle" : 0
    256:"Use Only" : 0
    512: "Monsters Can't" : 0
  ]
  // NOTE: must be duplicated in BUTTON
  locked_sound(choices) : "Locked Sound" : 0 = 
  [
    0: "None"
    2: "Access Denied"
    8: "Small zap"
    10: "Buzz"
    11: "Buzz Off"
    12: "Latch Locked"
  ]
  unlocked_sound(choices) : "Unlocked Sound" : 0 = 
  [
    0: "None"
    1: "Big zap & Warmup"
    3: "Access Granted"
    4: "Quick Combolock"
    5: "Power Deadbolt 1"
    6: "Power Deadbolt 2"
    7: "Plunger"
    8: "Small zap"
    9: "Keycard Sound"
    10: "Buzz"
    13: "Latch Unlocked"
  ]
  locked_sentence(choices) : "Locked Sentence" : 0 = 
  [
    0: "None"
    1: "Gen. Access Denied"
    2: "Security Lockout"
    3: "Blast Door"
    4: "Fire Door"
    5: "Chemical Door"
    6: "Radiation Door"
    7: "Gen. Containment"
    8: "Maintenance Door"
    9: "Broken Shut Door"
  ]
  unlocked_sentence(choices) : "Unlocked Sentence" : 0 = 
  [
    0: "None"
    1: "Gen. Access Granted"
    2: "Security Disengaged"
    3: "Blast Door"
    4: "Fire Door"
    5: "Chemical Door"
    6: "Radiation Door"
    7: "Gen. Containment"
    8: "Maintenance area"
  ] 
  _minlight(string) : "Minimum light level"
]

@BaseClass base(Targetname, Target, RenderFields, Global) = BaseTank
[
  spawnflags(flags) =
  [
    1 : "Active" : 0
    16: "Only Direct" : 0
    32: "Controllable" : 0
  ]

  // Mainly for use with 1009 team settings (game_team_master)
  master(string) : "(Team) Master"

  yawrate(string) : "Yaw rate" : "30"
  yawrange(string) : "Yaw range" : "180"
  yawtolerance(string) : "Yaw tolerance" : "15"
  pitchrate(string) : "Pitch rate" : "0"
  pitchrange(string) : "Pitch range" : "0"
  pitchtolerance(string) : "Pitch tolerance" : "5"
  barrel(string) : "Barrel Length" : "0"
  barrely(string) : "Barrel Horizontal" : "0"
  barrelz(string) : "Barrel Vertical" : "0"
  spritesmoke(string) : "Smoke Sprite" : ""
  spriteflash(string) : "Flash Sprite" : ""
  spritescale(string) : "Sprite scale" : "1"
  rotatesound(string) : "Rotate Sound" : ""
  firerate(string) : "Rate of Fire" : "1"
  bullet_damage(string) : "Damage Per Bullet" : "0"
  persistence(string) : "Firing persistence" : "1"
  firespread(choices) : "Bullet accuracy" : 0 =
  [
    0: "Perfect Shot"
    1: "Small cone"
    2: "Medium cone"
    3: "Large cone"
    4: "Extra-large cone"
  ]
  minRange(string) : "Minmum target range" : "0"
  maxRange(string) : "Maximum target range" : "0"
  _minlight(string) : "Minimum light level"
]

@BaseClass = PlatSounds 
[
  movesnd(choices) : "Move Sound" : 0 = 
  [
    0: "No Sound"
    1: "big elev 1"
    2: "big elev 2"
    3: "tech elev 1"
    4: "tech elev 2"
    5: "tech elev 3"
    6: "freight elev 1"
    7: "freight elev 2"
    8: "heavy elev"
    9: "rack elev"
    10: "rail elev"
    11: "squeek elev"
    12: "odd elev 1"
    13: "odd elev 2"
  ]
  stopsnd(choices) : "Stop Sound" : 0 = 
  [
    0: "No Sound"
    1: "big elev stop1"
    2: "big elev stop2"
    3: "freight elev stop"
    4: "heavy elev stop"
    5: "rack stop"
    6: "rail stop"
    7: "squeek stop"
    8: "quick stop"
  ]
  volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
]

@BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange
[
  height(integer) : "Travel altitude" : 0
  spawnflags(flags) =
  [
    1: "Auto Activate train" : 0
    2: "Relink track" : 0
    8: "Start at Bottom" : 0
    16: "Rotate Only" : 0
    64: "X Axis" : 0
    128: "Y Axis" : 0
  ]
  rotation(integer) : "Spin amount" : 0
  train(target_destination) : "Train to switch"
  toptrack(target_destination) : "Top track"
  bottomtrack(target_destination) : "Bottom track"
  speed(integer) : "Move/Rotate speed" : 0
]

@BaseClass base(Target, Targetname) = Trigger
[
  killtarget(target_destination) : "Kill target"
  netname(target_destination) : "Target Path"
  style(integer) : "Style" : 32
  master(string) : "Master" 
  sounds(choices) : "Sound style" : 0 =
  [
    0 : "No Sound"
  ]
  delay(string) : "Delay before trigger" : "0"
  message(string) : "Message (set sound too!)"
  spawnflags(flags) = 
  [
    1: "Monsters" : 0
    2: "No Clients" : 0
    4: "Pushables": 0
  ]
]

//
// Entities
//

@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = aiscripted_sequence : "AI Scripted Sequence"
[
  m_iszEntity(string) : "Target Monster"
  m_iszPlay(string) : "Action Animation" : ""
  m_flRadius(integer) : "Search Radius" : 512
  m_flRepeat(integer) : "Repeat Rate ms" : 0
  m_fMoveTo(Choices) : "Move to Position" : 0 =
  [
    0 : "No"
    1 : "Walk"
    2 : "Run"
    4 : "Instantaneous"
    5 : "No - Turn to Face"
  ]
  m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 =
  [
    0 : "Default AI"
    1 : "Ambush"
  ]
  spawnflags(Flags) = 
  [
    4 : "Repeatable"    : 0
    8 : "Leave Corpse"  : 0
  ]
]

@PointClass base(Targetname) = ambient_generic : "Universal Ambient"
[
  message(string) : "Path/filename.wav of WAV"
  health(integer) : "Volume (10 = loudest)" : 10
  preset(choices) :"Dynamic Presets" : 0 =
  [
    0: "None"
    1: "Huge Machine"
    2: "Big Machine"
    3: "Machine"
    4: "Slow Fade in"  
    5: "Fade in"
    6: "Quick Fade in"
    7: "Slow Pulse"
    8: "Pulse"
    9: "Quick pulse"
    10: "Slow Oscillator"
    11: "Oscillator"
    12: "Quick Oscillator"
    13: "Grunge pitch"
    14: "Very low pitch"
    15: "Low pitch"
    16: "High pitch"
    17: "Very high pitch"
    18: "Screaming pitch"
    19: "Oscillate spinup/down"
    20: "Pulse spinup/down"
    21: "Random pitch"
    22: "Random pitch fast"
    23: "Incremental Spinup"
    24: "Alien"
    25: "Bizzare"
    26: "Planet X"
    27: "Haunted"
  ]
  volstart(integer) : "Start Volume" : 0
  fadein(integer) : "Fade in time (0-100)" : 0
  fadeout(integer) : "Fade out time (0-100)" : 0
  pitch(integer) : "Pitch (> 100 = higher)" : 100
  pitchstart(integer) : "Start Pitch" : 100
  spinup(integer) : "Spin up time (0-100)" : 0
  spindown(integer) : "Spin down time (0-100)" : 0
  lfotype(integer) : "LFO type 0)off 1)sqr 2)tri 3)rnd" : 0
  lforate(integer) : "LFO rate (0-1000)" : 0
  lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0
  lfomodvol(integer) : "LFO mod vol (0-100)" : 0
  cspinup(integer) : "Incremental spinup count" : 0
  spawnflags(flags) =
  [
    1: "Play Everywhere" : 0
    2: "Small Radius" : 0
    4: "Medium Radius" : 1
    8: "Large Radius" : 0
    16:"Start Silent":0
    32:"Is NOT Looped":0
  ]
]

//
// ammo
//

@PointClass base(Weapon, Targetx, RenderFields) = ammo_9mmclip : "9mm Pistol Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_9mmAR : "9mm Assault Rifle Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_9mmbox : "box of 200 9mm shells" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_ARgrenades : "Assault Grenades" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_buckshot : "Shotgun Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_357 : "357 Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_rpgclip : "RPG Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_gaussclip : "Gauss Gun Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_crossbow : "Crossbow Ammo" []

@SolidClass base(Target) = button_target : "Target Button"
[
  spawnflags(flags) =
  [
    1: "Use Activates" : 1
    2: "Start On" : 0
  ]
  master(string) : "Master" 
  renderfx(choices) :"Render FX" : 0 =
  [
    0: "Normal"
    1: "Slow Pulse"
    2: "Fast Pulse"
    3: "Slow Wide Pulse"
    4: "Fast Wide Pulse"
    9: "Slow Strobe"
    10: "Fast Strobe"
    11: "Faster Strobe"
    12: "Slow Flicker"
    13: "Fast Flicker"
    5: "Slow Fade Away"
    6: "Fast Fade Away"
    7: "Slow Become Solid"
    8: "Fast Become Solid"
    14: "Constant Glow"
    15: "Distort"
    16: "Hologram (Distort + fade)"
  ]
  rendermode(choices) : "Render Mode" : 0 =
  [
    0: "Normal"
    1: "Color"
    2: "Texture"
    3: "Glow"
    4: "Solid"
    5: "Additive"
  ]
  renderamt(integer) : "FX Amount (1 - 255)"
  rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

//
// cyclers
//

@PointClass base(Targetname) size(-16 -16 0, 16 16 72) = cycler : "Monster Cycler" 
[
  model(string) : "Model"
  renderfx(choices) :"Render FX" : 0 =
  [
    0: "Normal"
    1: "Slow Pulse"
    2: "Fast Pulse"
    3: "Slow Wide Pulse"
    4: "Fast Wide Pulse"
    9: "Slow Strobe"
    10: "Fast Strobe"
    11: "Faster Strobe"
    12: "Slow Flicker"
    13: "Fast Flicker"
    5: "Slow Fade Away"
    6: "Fast Fade Away"
    7: "Slow Become Solid"
    8: "Fast Become Solid"
    14: "Constant Glow"
    15: "Distort"
    16: "Hologram (Distort + fade)"
  ]
  rendermode(choices) : "Render Mode" : 0 =
  [
    0: "Normal"
    1: "Color"
    2: "Texture"
    3: "Glow"
    4: "Solid"
    5: "Additive"
  ]
  renderamt(integer) : "FX Amount (1 - 255)"
  rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
  bodygroup(integer) : "Body Group" : 0
]

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = cycler_sprite : "Sprite Cycler" 
[
  model(string) : "Sprite"
  framerate(integer) : "Frames per second" : 10
  renderfx(choices) :"Render FX" : 0 =
  [
    0: "Normal"
    1: "Slow Pulse"
    2: "Fast Pulse"
    3: "Slow Wide Pulse"
    4: "Fast Wide Pulse"
    9: "Slow Strobe"
    10: "Fast Strobe"
    11: "Faster Strobe"
    12: "Slow Flicker"
    13: "Fast Flicker"
    5: "Slow Fade Away"
    6: "Fast Fade Away"
    7: "Slow Become Solid"
    8: "Fast Become Solid"
    14: "Constant Glow"
    15: "Distort"
    16: "Hologram (Distort + fade)"
  ]
  rendermode(choices) : "Render Mode" : 0 =
  [
    0: "Normal"
    1: "Color"
    2: "Texture"
    3: "Glow"
    4: "Solid"
    5: "Additive"
  ]
  renderamt(integer) : "FX Amount (1 - 255)"
  rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
]

@PointClass base(Monster) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" 
[
  model(string) : "model"
]

//
// Environmental effects
//

@BaseClass = BeamStartEnd 
[
  LightningStart(target_destination) : "Start Entity" 
  LightningEnd(target_destination) : "Ending Entity" 
]

@PointClass base(Targetname, BeamStartEnd, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect"
[
  renderamt(integer) : "Brightness (1 - 255)" : 100
  rendercolor(color255) : "Beam Color (R G B)" : "0 0 0"
  Radius(integer) : "Radius" : 256
  life(string) : "Life (seconds 0 = infinite)" : "1"
  BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20
  NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0
  texture(string) : "Sprite Name" : "sprites/laserbeam.spr"
  TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
  framerate(integer) : "Frames per 10 seconds" : 0
  framestart(integer) : "Starting Frame" : 0
  StrikeTime(string) : "Strike again time (secs)" : "1"
  damage(string) : "Damage / second" : "0"
  spawnflags(flags) = 
  [
    1 : "Start On" : 0
    2 : "Toggle" : 0
    4 : "Random Strike" : 0
    8 : "Ring" : 0
    16: "StartSparks" : 0
    32: "EndSparks" : 0
    64: "Decal End" : 0
    128: "Shade Start" : 0
    256: "Shade End" : 0
  ]
]

@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) = env_beverage : "Beverage Dispenser"
[
  health(integer) : "Capacity" : 10
  skin(choices) : "Beverage Type" : 0 = 
  [
    0 : "Coca-Cola"
    1 : "Sprite"
    2 : "Diet Coke"
    3 : "Orange"
    4 : "Surge"
    5 : "Moxie"
    6 : "Random"
  ]
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(255 0 0) = env_blood : "Blood Effects" 
[
  color(choices) : "Blood Color" : 0=
  [
    0 : "Red (Human)"
    1 : "Yellow (Alien)"
  ]
  amount(string) : "Amount of blood (damage to simulate)" : "100"
  spawnflags(flags) =
  [
    1: "Random Direction" : 0
    2: "Blood Stream" : 0
    4: "On Player" : 0
    8: "Spray decals" : 0
  ]
]

@SolidClass base(Targetname) = env_bubbles : "Bubble Volume" 
[
  density(integer) : "Bubble density" : 2
  frequency(integer) : "Bubble frequency" : 2
  current(integer) : "Speed of Current" : 0
  spawnflags(Flags) = 
  [
    1 : "Start Off"   : 0
  ]
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_explosion : "Explosion" 
[
  iMagnitude(Integer) : "Magnitude" : 100
  spawnflags(flags) =
  [
    1: "No Damage" : 0
    2: "Repeatable" : 0
    4: "No Fireball" : 0
    8: "No Smoke" : 0
    16: "No Decal" : 0
    32: "No Sparks" : 0
  ]
]

@PointClass base(Targetname) color(255 255 128) = env_global : "Global State"
[
	globalstate(string) : "Global State to Set"
	triggermode(choices) : "Trigger Mode" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Dead"
		3 : "Toggle"
	]
	initialstate(choices) : "Initial State" : 0 =
	[
		0 : "Off"
		1 : "On"
		2 : "Dead"
	]
	spawnflags(flags) =
	[
		1 : "Set Initial State" : 0
	]
]

@PointClass base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) color(30 100 0) = env_glow : "Light Glow/Haze" 
[
  model(string) : "model" : "sprites/glow01.spr"
]

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_fade : "Screen Fade" 
[
  spawnflags(flags) =
  [
    1: "Fade From" : 0
    2: "Modulate" : 0
  ]
  duration(string) : "Duration (seconds)" : "2"
  holdtime(string) : "Hold Fade (seconds)" : "0"
  renderamt(integer) : "Fade Alpha" : 255
  rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_funnel : "Large Portal Funnel" 
[
  spawnflags(flags) =
  [
    1: "Reverse" : 0
  ]
]

@PointClass base(Targetname, RenderFxChoices) size(-16 -16 -16, 16 16 16) = env_laser : "Laser Beam Effect"
[
  LaserTarget(target_destination) : "Target of Laser" 
  renderamt(integer) : "Brightness (1 - 255)" : 100
  rendercolor(color255) : "Beam Color (R G B)" : "0 0 0"
  width(integer) : "Width of beam (pixels*0.1 0-255)" : 20
  NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0
  texture(string) : "Sprite Name" : "sprites/laserbeam.spr"
  EndSprite(string) : "End Sprite" : ""
  TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
  framestart(integer) : "Starting Frame" : 0
  damage(string) : "Damage / second" : "100"
  spawnflags(flags) = 
  [
    1 : "Start On" : 0
    16: "StartSparks" : 0
    32: "EndSparks" : 0
    64: "Decal End" : 0
  ]
]

// use game_text instead
@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = env_message : "HUD Text Message" 
[
  message(string) : "Message Name"
  spawnflags(flags) =
  [
    1: "Play Once" : 0
    2: "All Clients" : 0
  ]
  messagesound(string) : "Sound effect"
  messagevolume(string) : "Volume 0-10" : "10"
  messageattenuation(Choices) : "Sound Radius" : 0 =
  [
    0 : "Small Radius"
    1 : "Medium Radius"
    2 : "Large  Radius"
    3 : "Play Everywhere"
  ]
]

@PointClass base(Targetname, Target, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls"
[
  spawnflags(flags) =
  [
    1: "No Renderfx" : 0
    2: "No Renderamt" : 0
    4: "No Rendermode" : 0
    8: "No Rendercolor" : 0
  ]
]

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = env_shake : "Screen Shake" 
[
  spawnflags(flags) =
  [
    1: "GlobalShake" : 0
  ]
  amplitude(string) : "Amplitude 0-16" : "4"
  radius(string) : "Effect radius" : "500"
  duration(string) : "Duration (seconds)" : "1"
  frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5"
]

@PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) = env_shooter : "Model Shooter"
[
  shootmodel(string) : "Model" : ""
  shootsounds(choices) :"Material Sound" : -1 =
  [
    -1: "None"
    0: "Glass"
    1: "Wood"
    2: "Metal"
    3: "Flesh"
    4: "Concrete"  
  ]
  scale(string) : "Gib Scale" : ""
  skin(integer) : "Gib Skin" : 0
]

@PointClass size(-8 -8 -8, 8 8 8) = env_sound : "DSP Sound" 
[
  radius(integer) : "Radius" : 128
  roomtype(Choices) : "Room Type" : 0 =
  [
    0 : "Normal (off)"
    1 : "Generic"
    
    2 : "Metal Small"
    3 : "Metal Medium"
    4 : "Metal Large"
  
    5 : "Tunnel Small"
    6 : "Tunnel Medium"
    7 : "Tunnel Large"
  
    8 : "Chamber Small"
    9 : "Chamber Medium"
    10: "Chamber Large"

    11: "Bright Small"
    12: "Bright Medium"
    13: "Bright Large"

    14: "Water 1"
    15: "Water 2"
    16: "Water 3"

    17: "Concrete Small"
    18: "Concrete Medium"
    19: "Concrete Large"

    20: "Big 1"
    21: "Big 2"
    22: "Big 3"

    23: "Cavern Small"
    24: "Cavern Medium"
    25: "Cavern Large"

    26: "Weirdo 1"
    27: "Weirdo 2"
    28: "Weirdo 3"
  ]
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_spark : "Spark" 
[
  MaxDelay(string) : "Max Delay" : "0"
  spawnflags(flags) =
  [
    32: "Toggle" : 0
    64: "Start ON" : 0
  ]
]

@PointClass base(Targetname, RenderFields) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect" 
[
  framerate(string) : "Framerate" : "10.0"
  model(string) : "Sprite Name" : "sprites/glow01.spr"
  scale(string) : "Scale" : ""
  spawnflags(flags) =
  [
    1: "Start on" : 0
    2: "Play Once" : 0
  ]
]

@SolidClass base(Breakable, RenderFields) = func_breakable : "Breakable Object" 
[
  spawnflags(flags) =
  [
    1 : "Only Trigger" : 0
    2 : "Touch"    : 0
    4 : "Pressure"     : 0
    256: "Instant Crowbar" : 1
  ]
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, RenderFields) = func_button : "Button" 
[
  speed(integer) : "Speed" : 5
  target(target_destination) : "Targetted object"
  netname(target_destination) : "Target Path"
  // Path Target overrides Targetted Object
  health(integer) : "Health (shootable if > 0)"
  lip(integer) : "Lip"
  master(string) : "Master" 
  sounds(choices) : "Sounds" : 0 = 
  [
    0: "None"
    1: "Big zap & Warmup"
    2: "Access Denied"
    3: "Access Granted"
    4: "Quick Combolock"
    5: "Power Deadbolt 1"
    6: "Power Deadbolt 2"
    7: "Plunger"
    8: "Small zap"
    9: "Keycard Sound"
    10: "Buzz"
    11: "Buzz Off"
    14: "Lightswitch"
  ]
  wait(choices) : "Delay before reset" : 3 =
  [
    -1: "Stays pressed"
  ]
  delay(string) : "Delay before trigger" : "0"
  spawnflags(flags) =
  [
    1: "Don't move" : 0
    32: "Toggle" : 0
    64: "Sparks" : 0
    256:"Touch Activates": 0
  ]
  locked_sound(choices) : "Locked Sound" : 0 = 
  [
    0: "None"
    2: "Access Denied"
    8: "Small zap"
    10: "Buzz"
    11: "Buzz Off"
    12: "Latch Locked"
  ]
  unlocked_sound(choices) : "Unlocked Sound" : 0 = 
  [
    0: "None"
    1: "Big zap & Warmup"
    3: "Access Granted"
    4: "Quick Combolock"
    5: "Power Deadbolt 1"
    6: "Power Deadbolt 2"
    7: "Plunger"
    8: "Small zap"
    9: "Keycard Sound"
    10: "Buzz"
    13: "Latch Unlocked"
    14: "Lightswitch"
  ]
  locked_sentence(choices) : "Locked Sentence" : 0 = 
  [
    0: "None"
    1: "Gen. Access Denied"
    2: "Security Lockout"
    3: "Blast Door"
    4: "Fire Door"
    5: "Chemical Door"
    6: "Radiation Door"
    7: "Gen. Containment"
    8: "Maintenance Door"
    9: "Broken Shut Door"
  ]
  unlocked_sentence(choices) : "Unlocked Sentence" : 0 = 
  [
    0: "None"
    1: "Gen. Access Granted"
    2: "Security Disengaged"
    3: "Blast Door"
    4: "Fire Door"
    5: "Chemical Door"
    6: "Radiation Door"
    7: "Gen. Containment"
    8: "Maintenance area"
  ]
  _minlight(string) : "Minimum light level"
]

@SolidClass base(RenderFields, Targetname) = func_conveyor : "Conveyor Belt" 
[
  spawnflags(flags) =
  [
    1 : "No Push" : 0
    2 : "Not Solid" : 0
  ]
  speed(string) : "Conveyor Speed" : "100"
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Door) = func_door : "Basic door" []

@SolidClass base(Door) = func_door_rotating : "Rotating door" 
[
  spawnflags(flags) =
  [
    2 : "Reverse Dir" : 0
    16: "One-way" : 0
    64: "X Axis" : 0
    128: "Y Axis" : 0
  ]
  distance(integer) : "Distance (deg)" : 90
  angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
]

@SolidClass base(Appearflags, RenderFields) = func_friction : "Surface with a change in friction" 
[
  modifier(integer) : "Percentage of standard (0 - 100)" : 15
]

@SolidClass base(Targetname, RenderFields, Global) = func_guntarget : "Moving platform" 
[
  speed(integer) : "Speed (units per second)" : 100
  target(target_source) : "First stop target"
  message(target_source) : "Fire on damage"
  health(integer) : "Damage to Take" : 0
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Global, RenderFields) = func_healthcharger: "Wall health recharger" 
[
	// dmdelay(integer) : "Deathmatch recharge delay" : 0
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, RenderFields) = func_illusionary : "Fake Wall/Light" 
[

	skin(choices) : "Contents" : -1 =
	[
		-1: "Empty"
		-7: "Volumetric Light"
	]
	_minlight(string) : "Minimum light level"
]

// THIS CREATES AN INVISIBLE CLIMBABLE FIELD
// You must create the physical ladder yourself
@SolidClass = func_ladder : "Ladder"
[
        targetname(string) : "Name"
]

// blocks monster path ai
@SolidClass base(Targetname) = func_monsterclip : "Monster clip brush" []

@SolidClass base(Targetname) = func_mortar_field : "Mortar Field" 
[
  m_flSpread(integer) : "Spread Radius" : 64
  m_iCount(integer) : "Repeat Count" : 1
  m_fControl(Choices) : "Targeting" : 0 =
  [
    0 : "Random"
    1 : "Activator"
    2 : "Table"
  ]
  m_iszXController(target_destination) : "X Controller"
  m_iszYController(target_destination) : "Y Controller"
]

// not fully implemented
@SolidClass base(Appearflags, Targetname, RenderFields) = func_pendulum : "Swings back and forth" 
[
  speed(integer) : "Speed" : 100
  distance(integer) : "Distance (deg)" : 90
  damp(integer) : "Damping (0-1000)" : 0
  dmg(integer) : "Damage inflicted when blocked" : 0
  spawnflags(flags) =
  [
    1: "Start ON" : 0
    8: "Passable" : 0
    16: "Auto-return" : 0
    64: "X Axis" : 0
    128: "Y Axis" : 0
  ]

  _minlight(integer) : "_minlight"
  angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
]

@SolidClass base(Targetname, RenderFields, PlatSounds) = func_plat : "Elevator" 
[
  spawnflags(Flags) =
  [
    1: "Toggle" : 0
  ]
      speed(integer) : "Speed" : 100
  height(integer) : "Travel altitude (can be negative)" : 0
  speed(integer) : "Speed" : 50
  globalname(string) : "Global Entity Name" 
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, RenderFields, PlatSounds) = func_platrot : "Moving Rotating platform" 
[
  spawnflags(Flags) =
  [
    1: "Toggle" : 1
    64: "X Axis" : 0
    128: "Y Axis" : 0
  ]
  speed(integer) : "Speed of rotation" : 50
  height(integer) : "Travel altitude (can be negative)" : 0
  rotation(integer) : "Spin amount" : 0
  angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Breakable, RenderFields) = func_pushable : "Pushable object"
[
  size(choices) : "Hull Size" : 0 =
  [
    0: "Point size"
    1: "Player size"
    2: "Big Size"
    3: "Player duck"
  ]
  spawnflags(flags) =
  [
    128: "Breakable" : 0
  ]
  friction(integer) : "Friction (0-400)" : 50
  buoyancy(integer) : "Buoyancy" : 20
  _minlight(string) : "Minimum light level"
]

@SolidClass base(RenderFields) = func_recharge: "Battery recharger" 
[
	// dmdelay(integer) : "Deathmatch recharge delay" : 0
	_minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, Global, RenderFields) = func_rot_button : "RotatingButton" 
[
  target(target_destination) : "Targetted object"
  // changetarget will change the button's target's TARGET field to the button's changetarget.
  changetarget(target_destination) : "ChangeTarget Name"
  master(string) : "Master" 
  speed(integer) : "Speed" : 50
  health(integer) : "Health (shootable if > 0)"
  sounds(choices) : "Sounds" : 21 = 
  [
    21: "Squeaky"
    22: "Squeaky Pneumatic"
    23: "Ratchet Groan"
    24: "Clean Ratchet"
    25: "Gas Clunk"
  ]
  wait(choices) : "Delay before reset" : 3 =
  [
    -1: "Stays pressed"
  ]
  delay(string) : "Delay before trigger" : "0"
  distance(integer) : "Distance (deg)" : 90
  spawnflags(flags) =
  [
    1 : "Not solid" : 0
    2 : "Reverse Dir" : 0
    32: "Toggle" : 0
    64: "X Axis" : 0
    128: "Y Axis" : 0
    256:"Touch Activates": 0
  ]
  _minlight(integer) : "_minlight"
  angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
]

@SolidClass base(Targetname, RenderFields) = func_rotating : "Rotating Object"
[
  speed(integer)  : "Rotation Speed" : 0
  volume(integer) : "Volume (10 = loudest)" : 10
  fanfriction(integer) : "Friction (0 - 100%)" : 20
  sounds(choices) : "Fan Sounds" : 0 =
  [
    0 : "No Sound" 
    1 : "Fast Whine"
    2 : "Slow Rush"
    3 : "Medium Rickety"
    4 : "Fast Beating"
    5 : "Slow Smooth"
  ]
  message(string) : "Path/filename.wav of WAV"
  spawnflags(flags) =
  [
    1 : "Start ON"    : 0
    2 : "Reverse Direction" : 0
    4 : "X Axis"    : 0
    8 : "Y Axis"    : 0
    16: "Acc/Dcc"   : 0
    32: "Fan Pain"    : 0
    64: "Not Solid"   : 0
    128: "Small Radius" : 0
    256: "Medium Radius" : 0
    512: "Large Radius" : 1 
  ]
  _minlight(integer) : "_minlight"
  angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
  spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0"
  dmg(integer) : "Damage inflicted when blocked" : 0
]

// don't forget func_tankcontrols
@SolidClass base(BaseTank) = func_tank : "Brush Gun Turret" 
[
  bullet(choices) : "Bullets" : 0 = 
  [
    0: "None"
    1: "9mm"
    2: "MP5"
    3: "12mm"
  ]
]

@SolidClass = func_tankcontrols : "Tank controls"
[
  target(target_destination) : "Tank entity name"
]

// don't forget func_tankcontrols
@SolidClass base(BaseTank) = func_tanklaser : "Brush Laser Turret" 
[
  laserentity(target_source) : "env_laser Entity"
]

// don't forget func_tankcontrols
@SolidClass base(BaseTank) = func_tankrocket : "Brush Rocket Turret" []

// don't forget func_tankcontrols
@SolidClass base(BaseTank) = func_tankmortar : "Brush Mortar Turret" 
[
  iMagnitude(Integer) : "Explosion Magnitude" : 100
]

@SolidClass base(Trackchange) = func_trackautochange : "Automatic track changing platform"
[
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Trackchange) = func_trackchange : "Train track changing platform"
[
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, RenderFields, Global) = func_tracktrain : "Track Train" 
[
  spawnflags(flags) =
  [
    1 : "No Pitch (X-rot)" : 0
    2 : "No User Control" : 0
    8 : "Passable" : 0
  ]
  target(target_destination) : "First stop target"
  sounds(choices) : "Sound" : 0 =
  [
    0: "None"
    1: "Rail 1"
    2: "Rail 2"
    3: "Rail 3"
    4: "Rail 4"
    5: "Rail 6"
    6: "Rail 7"
  ]
  wheels(integer) : "Distance between the wheels" : 50
  height(integer) : "Height above track" : 4
  startspeed(integer) : "Initial speed" : 0
  speed(integer) : "Speed (units per second)" : 64
  dmg(integer) : "Damage on crush" : 0  
  volume(integer) : "Volume (10 = loudest)" : 10
  bank(string) : "Bank angle on turns" : "0"
  _minlight(string) : "Minimum light level"
]

@SolidClass = func_traincontrols : "Train Controls"
[
  target(target_destination) : "Train Name"
]

@SolidClass base(Targetname, RenderFields, Global) = func_train : "Moving platform" 
[
  target(target_source) : "First stop target"
  movesnd(choices) : "Move Sound" : 0 = 
  [
    0: "No Sound"
    1: "big elev 1"
    2: "big elev 2"
    3: "tech elev 1"
    4: "tech elev 2"
    5: "tech elev 3"
    6: "freight elev 1"
    7: "freight elev 2"
    8: "heavy elev"
    9: "rack elev"
    10: "rail elev"
    11: "squeek elev"
    12: "odd elev 1"
    13: "odd elev 2"
  ]
  stopsnd(choices) : "Stop Sound" : 0 = 
  [
    0: "No Sound"
    1: "big elev stop1"
    2: "big elev stop2"
    3: "freight elev stop"
    4: "heavy elev stop"
    5: "rack stop"
    6: "rail stop"
    7: "squeek stop"
    8: "quick stop"
  ]
  speed(integer) : "Speed (units per second)" : 64
  dmg(integer) : "Damage on crush" : 0
  skin(integer) : "Contents" : 0
  volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
  spawnflags(flags) =
  [
    8 : "Not solid" : 0
  ]
  _minlight(string) : "Minimum light level"
]

@SolidClass base(Targetname, Appearflags, RenderFields, Global) = func_wall : "Wall" 
[
  _minlight(string) : "Minimum light level"
]

@SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry" 
[
  spawnflags(flags) =
  [
    1 : "Starts Invisible" : 0
  ]
]

@SolidClass base(Door) = func_water : "Liquid" 
[
  spawnflags(flags) =
  [
    1 : "Starts Open" : 0
    256:"Use Only" : 0
  ]
  skin(choices) : "Contents" : -3 =
  [
    -3: "Water"
    -4: "Slime"
    -5: "Lava"
  ]
  WaveHeight(string) : "Wave Height" : "3.2"
]

//
// game entities (requires Half-Life 1.0.0.9)
//

@PointClass base(Targetname, Targetx) = game_counter : "Fires when it hits limit"
[
  spawnflags(flags) =
  [
    1: "Remove On fire" : 0
    2: "Reset On fire" : 1
  ]
  master(string) : "Master"
  frags(integer) : "Initial Value" : 0
  health(integer) : "Limit Value" : 10
]

@PointClass base(Targetname, Target) = game_counter_set : "Sets a game_counter"
[
  spawnflags(flags) =
  [
    1: "Remove On fire" : 0
  ]
  master(string) : "Master"
  frags(integer) : "New Value" : 10
]

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_end : "End this multiplayer game" 
[
  master(string) : "Master" 
]

@PointClass base(Targetname) = game_player_equip : "Initial player equipment"
[
  spawnflags(flags) =
  [
    1: "Use Only" : 0
  ]
  master(string) : "Team Master"
]

@PointClass base(Targetname) = game_player_hurt : "Hurts player who fires"
[
  dmg(string) : "Damage To Apply" : "999"
  spawnflags(flags) =
  [
    1: "Remove On fire" : 0
  ]
  master(string) : "Master" 
]

@PointClass base(Targetname) = game_player_team : "Allows player to change teams"
[
  spawnflags(flags) =
  [
    1 : "Remove On fire" : 0
    2 : "Kill Player" : 0
    4 : "Gib Player" : 0
  ]
  target(string) : "game_team_master to use" 
  master(string) : "Master"
]

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = game_score : "Award/Deduct Points" 
[
  spawnflags(flags) =
  [
    1: "Allow Negative" : 0
    2: "Team Points" : 0
  ]

  points(integer) : "Points to add (+/-)" : 1
  master(string) : "Master" 
]

@PointClass base(Targetname, Targetx) = game_team_master : "Team based master/relay"
[
  spawnflags(flags) =
  [
    1: "Remove On fire" : 0
  ]
  triggerstate(choices) : "Trigger State" : 0 = 
  [
    0: "Off"
    1: "On"
    2: "Toggle"
  ]
  teamindex(integer) : "Team Index (-1 = no team)" : -1
  master(string) : "Master" 
]

@PointClass base(Targetname, Targetx) = game_team_set : "Sets team of team_master"
[
  spawnflags(flags) =
  [
    1: "Remove On fire" : 0
  ]
  master(string) : "Master" 
]

@PointClass base(Targetname, Target) size(-8 -8 -8, 8 8 8) = game_text : "HUD Text Message" 
[
  spawnflags(flags) =
  [
    1: "All Players" : 0
  ]

  message(string) : "Message Text"
  x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1"
  y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1"
  effect(Choices) : "Text Effect" : 0 =
  [
    0 : "Fade In/Out"
    1 : "Credits"
    2 : "Scan Out"
  ]
  color(color255) : "Color1" : "100 100 100"
  color2(color255) : "Color2" : "240 110 0"
  fadein(string) : "Fade in Time (or character scan time)" : "1.5"
  fadeout(string) : "Fade Out Time" : "0.5"
  holdtime(string) : "Hold Time" : "1.2"
  fxtime(string) : "Scan time (scan effect only)" : "0.25"
  channel(choices) : "Text Channel" : 1 =
  [
    1 : "Channel 1"
    2 : "Channel 2"
    3 : "Channel 3" 
    4 : "Channel 4"
  ]
  master(string) : "Master" 
]

@SolidClass base(Targetname) = game_zone_player : "Player Zone brush"
[
	intarget(target_destination) : "Target for IN players"
	outtarget(target_destination) : "Target for OUT players"
	incount(target_destination) : "Counter for IN players"
	outcount(target_destination) : "Counter for OUT players"
	// master(string) : "Master" 
]

@PointClass base(gibshooterbase) = gibshooter : "Gib Shooter" []

//
// info entities
//

@PointClass base(Targetname, Appearflags) size(-8 -8 -8, 8 8 8) = infodecal : "Decal"
[
  texture(decal)
]

@PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) = info_bigmomma : "Big Mamma Node" 
[
  spawnflags(Flags) =
  [
    1 : "Run To Node" : 0
    2 : "Wait Indefinitely" : 0
  ]
  target(target_destination) : "Next node"
  radius(string) : "Radius" : "0"
  reachdelay(string) : "Wait after approach" : "0"
  killtarget(target_destination) : "KillTarget"
  reachtarget(target_destination) : "Fire on approach"
  reachsequence(string) : "Sequence on approach" : ""
  health(string) : "Health on approach" : ""
  presequence(string) : "Sequence before approach" : ""
]

@PointClass base(Target) size(-4 -4 -4, 4 4 4) color(0 255 0) = info_intermission : "Intermission Spot" []

@PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = info_landmark : "Transition Landmark" []

@PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) = info_node : "ai node"
[
  hinttype(choices) : "Hint" : 0 = 
  [
      0 : "None"

      1: "World: Door"
      2: "World: Window"
      3: "World: Button"
      4: "World: Machinery"
      5: "World: Ledge"
      6: "World: Light Source"
      7: "World: Heat Source"
      8: "World: Blinking Light"
      9: "World: Bright Colors"
     10: "World: Human Blood Decal"
     11: "World: Alien Blood Decal"

    300: "Stuka: Ceiling Perch"
    301: "Stuka: Landing spot"
  ]
  activity(choices) : "Activity" : 45 =
  [
     0: "None"
    35: "Eat"
    45: "Inspect Ground"
    46: "Inspect Wall"
  ]
]

@PointClass size(-32 -32 0, 32 32 64) color(255 255 0) = info_node_air : "ai air node" []

@PointClass base(Targetname) = info_null : "info_null (spotlight target)" []

@PointClass base(PlayerClass) = info_player_coop : "Player cooperative start" []
@PointClass base(PlayerClass) = info_player_deathmatch : "Player deathmatch start" 
[
  target(target_destination) : "Target"
  master(string) : "Master"
]
@PointClass base(PlayerClass) = info_player_start : "Player 1 start" []

@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_target : "Beam Target" []
@PointClass size(-8 -8 0, 8 8 16) base(PlayerClass, Targetname) = info_teleport_destination : "Teleport destination" []

//
// items
//

@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_airtank : "Oxygen tank" []
@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_antidote : "Poison antidote" []
@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_battery : "HEV battery" []
@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_healthkit : "Small Health Kit" []
@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_longjump : "Longjump Module" []
@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_security : "Security card" []
@PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) = item_suit : "HEV Suit" 
[
  body(Choices) : "Body" : 0 =
  [
      0 : "Standing"
      1 : "Laying Flat"
  ]
  spawnflags(Flags) =
  [
    1 : "Short Logon" : 0
  ]
]

//
// lights
//

@PointClass size(-8 -8 -8, 8 8 8) base(Target, Targetname, Light) = light : "Invisible lightsource"
[
  spawnflags(Flags) = [ 1 : "Initially dark" : 0 ]
]

@PointClass base(Targetname, Target) = light_spot : "Spotlight" 
[
	_cone(integer) : "Inner (bright) angle" : 30
	_cone2(integer) : "Outer (fading) angle" : 45
	pitch(integer) : "Pitch" : -90
	_light(color255) : "Brightness" : "255 255 128 200"
	_sky(Choices) : "Is Sky" : 0 = 
	[ 
		0 : "No"
		1 : "Yes"
	]
	spawnflags(Flags) = [ 1 : "Initially dark" : 0 ]
      style(Choices) : "Appearance" : 0 =
	[
		0 : "Normal"
		10: "Fluorescent flicker"
		2 : "Slow, strong pulse"
		11: "Slow pulse, noblack"
		5 : "Gentle pulse"
		1 : "Flicker A"
		6 : "Flicker B"
		3 : "Candle A"
		7 : "Candle B"
		8 : "Candle C"
		4 : "Fast strobe"
		9 : "Slow strobe"
	]
	pattern(string) : "Custom Appearance"
]

@PointClass = light_environment : "Environment" 
[
  pitch(integer) : "Pitch" : 0
  _light(color255) : "Brightness" : "255 255 128 200"
]

@SolidClass base(Door) = momentary_door : "Momentary/Continuous door" 
[
  spawnflags(flags) =
  [
    1 : "Starts Open" : 0
  ]
]

@SolidClass base(RenderFields, Targetname) = momentary_rot_button : "Direct wheel control" 
[
  target(target_destination) : "Targetted object"
  speed(integer) : "Speed" : 50
  master(string) : "Master" 
  sounds(choices) : "Sounds" : 0 = 
  [
    0: "None"
    1: "Big zap & Warmup"
    2: "Access Denied"
    3: "Access Granted"
    4: "Quick Combolock"
    5: "Power Deadbolt 1"
    6: "Power Deadbolt 2"
    7: "Plunger"
    8: "Small zap"
    9: "Keycard Sound"
    21: "Squeaky"
    22: "Squeaky Pneumatic"
    23: "Ratchet Groan"
    24: "Clean Ratchet"
    25: "Gas Clunk"
  ]
  distance(integer) : "Distance (deg)" : 90
  returnspeed(integer) : "Auto-return speed" : 0
  spawnflags(flags) =
  [
    1: "Door Hack" : 0
    2: "Not useable" : 0
    16: "Auto Return" : 0
    64: "X Axis" : 0
    128: "Y Axis" : 0
  ]
  _minlight(integer) : "_minlight"
  angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
]

//
// monsters
//

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_controller : "Controller"  []
@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_alien_grunt : "Alien Grunt" 
[
  netname(string) : "Squad Name"
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave : "Vortigaunt" 
[
  netname(string) : "Squad Name"
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
    64 : "IgnorePlayer" : 0
  ]
]
@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_apache : "Apache" 
[
  spawnflags(Flags) = 
  [
    8 : "NoWreckage"  : 0
    64 : "Start Inactive" : 0
  ]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_babycrab : "Baby Headcrab" []
@PointClass base(RenderFields) size(-16 -16 -36, 16 16 0) = monster_barnacle : "Barnacle Monster" []
@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_barney : "Barney"
[
	suspicious(choices) : "Suspicious" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]
@PointClass base(RenderFields,Appearflags) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney" 
[
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On back"
    1 : "On side"
    2 : "On stomach"
  ]
]
@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_bigmomma : "Big Mamma" 
[
  netname(string) : "First node" : ""
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_bloater : "Bloater" []
@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_bullchicken : "BullChicken" []
@PointClass base(Monster) size(-3 -3 0, 3 3 3) = monster_cockroach : "Cockroach" []
@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer_flock : "Flock of Flyers" 
[
  iFlockSize(Integer) : "Flock Size" : 8
  flFlockRadius(Integer) : "Flock Radius" : 128
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" 
[
  model(string) : "model"

]
@PointClass base(Monster) size(-32 -32 0, 32 32 128) = monster_gargantua : "Gargantua" []
@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_generic : "Generic Script Monster" 
[
  spawnflags(Flags) = 
  [
    4 : "Not solid" : 0
    8 : "Head Controller" : 0
  ]
  model(string) : "model"
  body(Integer) : "Body" : 0
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gman : "G-Man" []
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_repel : "Human Grunt (Repel)" []
@PointClass base(Weapon, Targetx, RenderFields) = monster_handgrenade : "Live Handgrenade" []
@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_headcrab : "Head Crab" []
@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit" 
[
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On back"
    1 : "Seated"
    2 : "On stomach"
    3 : "On Table"
  ]
]
@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hgrunt_dead : "Dead Human Grunt" 
[
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On stomach"
    1 : "On side"
    2 : "Seated"
  ]
  body(Choices) : "Body" : 0 =
  [
    0 : "Grunt with Gun"
    1 : "Commander with Gun"
    2 : "Grunt no Gun"
    3 : "Commander no Gun"
  ]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_houndeye : "Houndeye" 
[
  netname(string) : "Squad Name"
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_assassin : "Human Assassin" []
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt : "Human Grunt (camo)" 
[
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
  netname(string) : "Squad Name"
  weapons(Choices) : "Weapons" : 3 =
  [
    1 : "9mmAR"
    3 : "9mmAR + HG"
    5 : "9mmAR + GL"
    8 : "Shotgun"
    10 : "Shotgun + HG"
  ]
]
@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_ichthyosaur : "Ichthyosaur" []
@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_leech : "Leech" []
@PointClass base(Monster) size(-16 -16 -32, 16 16 32) = monster_miniturret : "Mini Auto Turret"
[
  orientation(Choices) : "Orientation" : 0 =
  [
    0 : "Floor Mount"
    1 : "Ceiling Mount"
  ]
  spawnflags(Flags) = 
  [
    32 : "Autostart" : 0
    64 : "Start Inactive" : 0
  ]
]
@PointClass base(Monster) size(-192 -192 0, 192 192 384) = monster_nihilanth : "Nihilanth"  []
@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_osprey : "Osprey"
[
  spawnflags(Flags) = 
  [
    64 : "Start Inactive" : 0
  ]
]
@PointClass base(Monster) size(-6 -6 0, 6 6 6) = monster_rat : "Rat (no ai?)" []
@PointClass base(Weapon, Targetname, Targetx,RenderFields) = monster_satchelcharge : "Live Satchel Charge" []
@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_scientist : "Scared Scientist" 
[
      body(Choices) : "Body" : -1 =
  [
    -1 : "Random"
    0 : "Glasses"
    1 : "Einstein"
    2 : "Luther"
    3 : "Slick"
  ]
	suspicious(choices) : "Suspicious" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]
@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_scientist_dead : "Dead Scientist" 
[
      body(Choices) : "Body" : -1 =
  [
    -1 : "Random"
    0 : "Glasses"
    1 : "Einstein"
    2 : "Luther"
    3 : "Slick"
  ]
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On back"
    1 : "On Stomach"
    2 : "Sitting"
    3 : "Hanging"
    4 : "Table1"
    5 : "Table2"
    6 : "Table3"
  ]
]
@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_scientist : "Sitting Scientist" 
[
      body(Choices) : "Body" : -1 =
  [
    -1 : "Random"
    0 : "Glasses"
    1 : "Einstein"
    2 : "Luther"
    3 : "Slick"
  ]
	suspicious(choices) : "Suspicious" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_sentry : "Sentry Turret Gun"
[
  spawnflags(Flags) = 
  [
    32 : "Autostart" : 0
    64 : "Start Inactive" : 0
  ]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_snark : "Armed Snark" []
@PointClass base(Monster) size(-32 -32 0, 32 32 64) = monster_tentacle : "Tentacle Arm" 
[
  spawnflags(Flags) = 
  [
    64 : "Tentacle3" : 0
  ]
  sweeparc(integer) : "Sweep Arc" : 130
  sound(Choices) : "Tap Sound" : -1 =
  [
    -1 : "None"
    0 : "Silo"
    1 : "Dirt"
    2 : "Water"
  ]
]
@PointClass base(Monster) size(-8 -8 -8, 8 8 8) = monster_tripmine : "Active Tripmine" 
[
  spawnflags(Flags) =
  [
    1 : "Instant On" : 1
  ]
]
@PointClass base(Monster) size(-32 -32 -32, 32 32 32) = monster_turret : "Auto Turret"
[
  orientation(Choices) : "Orientation" : 0 =
  [
    0 : "Floor Mount"
    1 : "Ceiling Mount"
  ]
  spawnflags(Flags) = 
  [
    32 : "Autostart" : 0
    64 : "Start Inactive" : 0
  ]
]
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie : "Scientist Zombie" []
@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker"
[
  target(string) : "Target On Release" 
  monstertype(string) : "Monster Type"
  netname(string) : "Childrens' Name"
  spawnflags(Flags) = 
  [
    1 : "Start ON"  : 0
    2 : "PVS On/Off" : 0
    4 : "Cyclic" : 0
    8 : "MonsterClip" : 0
  ]

  // how many monsters the monstermaker can create (-1 = unlimited)
  monstercount(integer) : "Number of Monsters" : -1
  
  // if delay is -1, new monster will be made when last monster dies.
  // else, delay is how often (seconds) a new monster will be dookied out.
  delay(string) : "Frequency" : "5"

  // maximum number of live children allowed at one time. (New ones will not be made until one dies)
  // -1 no limit
  m_imaxlivechildren(integer) : "Max live children" : 5
]

@PointClass base(Targetname) color(255 128 0) = multi_manager : "MultiTarget Manager" 
[
	spawnflags(Flags) = 
	[
		1 : "multithreaded" : 0
	]
]

@PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource"
[
	globalstate(string) : "Global State Master"
]

@PointClass base(Targetname) size(16 16 16) color(247 181 82) = path_corner : "Moving platform stop"
[
	spawnflags(Flags) =
	[
		1: "Wait for retrigger" : 0
		2: "Teleport" : 0
		4: "Fire once" : 0
	]
	target(target_destination) : "Next stop target"
	message(target_destination) : "Fire On Pass"
	wait(integer) : "Wait here (secs)" : 0
	speed(integer) : "New Train Speed" : 0
	yaw_speed(integer) : "New Train rot. Speed" : 0
	angles(string) : "X Y Z angles" 
]

@PointClass base(Targetname) size(16 16 16) = path_track : "Train Track Path"
[
	spawnflags(Flags) =
	[
		1: "Disabled" : 0
		2: "Fire once" : 0
		4: "Branch Reverse" : 0
		8: "Disable train" : 0
	]
	target(target_destination) : "Next stop target"
	message(target_destination) : "Fire On Pass"
	altpath(target_destination) : "Branch Path"
	netname(target_destination) : "Fire on dead end"
	speed(integer) : "New Train Speed" : 0
]

//
// player effects
//

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game" 
[
  duration(string) : "Fade Duration (seconds)" : "2"
  holdtime(string) : "Hold Fade (seconds)" : "0"
  renderamt(integer) : "Fade Alpha" : 255
  rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
  messagetime(string) : "Show Message delay" : "0"
  message(string) : "Message To Display" : ""
  loadtime(string) : "Reload delay" : "0"
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strips player's weapons" []

@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence"
[
  spawnflags(Flags) = 
  [
    1 : "Fire Once"   : 1
    2 : "Followers Only"  : 0
    4 : "Interrupt Speech"  : 1
    8 : "Concurrent"  : 0
  ]
  sentence(string) : "Sentence Name" : ""
  entity(string) : "Speaker Entity"
  duration(string) : "Sentence Time" : "3"
  radius(integer) : "Search Radius" : 512
  refire(string) : "Delay Before Refire" : "3"
  listener(string) : "Listener"
  volume(string) : "Volume 0-10" : "10"
  attenuation(Choices) : "Sound Radius" : 0 =
  [
    0 : "Small Radius"
    1 : "Medium Radius"
    2 : "Large  Radius"
    3 : "Play Everywhere"
  ]
]

@PointClass base(Targetname, Targetx) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sequence : "Scripted Sequence"
[
  m_iszEntity(string) : "Target Monster"
  m_iszPlay(string) : "Action Animation" : ""
  m_iszIdle(string) : "Idle Animation" : ""
  m_flRadius(integer) : "Search Radius" : 512
  m_flRepeat(integer) : "Repeat Rate ms" : 0
  m_fMoveTo(choices) : "Move to Position" : 0 =
  [
    0 : "No"
    1 : "Walk"
    2 : "Run"
    4 : "Instantaneous"
    5 : "No - Turn to Face"
  ]
  spawnflags(Flags) = 
  [
    4 : "Repeatable"  : 0
    8 : "Leave Corpse"  : 0
    32: "No Interruptions"  : 0
    64: "Override AI" : 0
    128: "No Script Movement" : 0
    256: "No Reset Entity" : 0
  ]
]

@PointClass = speaker : "Announcement Speaker"
[
  preset(choices) :"Announcement Presets" : 0 =
  [
    0: "None"
    1: "C1A0 Announcer"
    2: "C1A1 Announcer"
    3: "C1A2 Announcer"
    4: "C1A3 Announcer"
    5: "C1A4 Announcer"  
    6: "C2A1 Announcer"
    7: "C2A2 Announcer"
    // 8: "C2A3 Announcer"
    9: "C2A4 Announcer"
    // 10: "C2A5 Announcer"
    11: "C3A1 Announcer"
    12: "C3A2 Announcer"
  ]
  message(string) : "Sentence Group Name"
  targetname(target_source) : "Target Name"
  health(integer) : "Volume (10 = loudest)" : 5
  spawnflags(flags) =
  [
    1: "Start Silent" : 0
  ]
]

@PointClass base(Targetname) = target_cdaudio : "CD Audio Target"
[
  health(choices) : "Track #" : -1 =
  [
    -1 : "Stop"
    1 : "Track 1"
    2 : "Track 2"
    3 : "Track 3"
    4 : "Track 4"
    5 : "Track 5"
    6 : "Track 6"
    7 : "Track 7"
    8 : "Track 8"
    9 : "Track 9"
    10 : "Track 10"
    11 : "Track 11"
    12 : "Track 12"
    13 : "Track 13"
    14 : "Track 14"
    15 : "Track 15"
    16 : "Track 16"
    17 : "Track 17"
    18 : "Track 18"
    19 : "Track 19"
    20 : "Track 20"
    21 : "Track 21"
    22 : "Track 22"
    23 : "Track 23"
    24 : "Track 24"
    25 : "Track 25"
    26 : "Track 26"
    27 : "Track 27"
    28 : "Track 28"
    29 : "Track 29"
    30 : "Track 30"
  ]
  radius(string) : "Player Radius"
]

//
// Triggers
//

@PointClass base(Targetx) = trigger_auto : "AutoTrigger"
[
  spawnflags(Flags) =
  [
    1 : "Remove On fire" : 1
  ]
  globalstate(string) : "Global State to Read"
  triggerstate(choices) : "Trigger State" : 0 = 
  [
    0 : "Off"
    1 : "On"
    2 : "Toggle"
  ]
]

@SolidClass base(Targetname) = trigger_autosave : "AutoSave Trigger"
[
  master(string) : "Master" 
]

@PointClass base(Targetx, Targetname) = trigger_camera : "Trigger Camera" 
[
  wait(integer) : "Hold time" : 10
  moveto(string) : "Path Corner"
  spawnflags(flags) =
  [
    1: "Start At Player" : 1
    2: "Follow Player" : 1
    4: "Freeze Player" : 0
  ]
  speed(string) : "Initial Speed" : "0"
  acceleration(string) : "Acceleration units/sec^2" : "500"
  deceleration(string) : "Stop Deceleration units/sec^2" : "500"
]

@SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio"
[
  health(choices) : "Track #" : -1 =
  [
    -1 : "Stop"
    1 : "Track 1"
    2 : "Track 2"
    3 : "Track 3"
    4 : "Track 4"
    5 : "Track 5"
    6 : "Track 6"
    7 : "Track 7"
    8 : "Track 8"
    9 : "Track 9"
    10 : "Track 10"
    11 : "Track 11"
    12 : "Track 12"
    13 : "Track 13"
    14 : "Track 14"
    15 : "Track 15"
    16 : "Track 16"
    17 : "Track 17"
    18 : "Track 18"
    19 : "Track 19"
    20 : "Track 20"
    21 : "Track 21"
    22 : "Track 22"
    23 : "Track 23"
    24 : "Track 24"
    25 : "Track 25"
    26 : "Track 26"
    27 : "Track 27"
    28 : "Track 28"
    29 : "Track 29"
    30 : "Track 30"
  ]
]

@SolidClass = trigger_changelevel : "Trigger: Change level"
[
  targetname(string) : "Name"
  map(string) : "New map name"
  landmark(string) : "Landmark name"
  changetarget(target_destination) : "Change Target"
  changedelay(string) : "Delay before change target" : "0"
  spawnflags(flags) =
  [
    1: "No Intermission" : 0
    2: "USE Only" : 0
  ]
]

@PointClass base(Targetx, Targetname) = trigger_changetarget : "Trigger Change Target"
[
  m_iszNewTarget(string) : "New Target"
]

@SolidClass base(Trigger, Targetname) = trigger_counter : "Trigger counter" 
[
  spawnflags(flags) = 
  [ 
    1 : "No Message" : 0 
  ]
  master(string) : "Master" 
  count(integer) : "Count before activation" : 2
]

@SolidClass base(Targetname) = trigger_endsection : "EndSection Trigger"
[
  section(string) : "Section"
  spawnflags(flags) =
  [
    1: "USE Only" : 0
  ]
]

@SolidClass base(Trigger) = trigger_gravity : "Trigger Gravity"
[
  gravity(integer) : "Gravity (0-1)" : 1
]

@SolidClass base(Targetname,Target) = trigger_hurt : "Trigger player hurt" 
[
  spawnflags(flags) = 
  [ 
    1: "Target Once" : 0 
    2: "Start Off" : 0
    8: "No clients" : 0
    16:"FireClientOnly" : 0
    32:"TouchClientOnly" : 0
  ]
  master(string) : "Master" 
  dmg(integer) : "Damage" : 10
  delay(string) : "Delay before trigger" : "0"
  damagetype(choices) : "Damage Type" : 0 =
  [
    0 : "GENERIC"
    1 : "CRUSH"
    2 : "BULLET"
    4 : "SLASH"
    8 : "BURN"
    16 : "FREEZE"
    32 : "FALL"
    64 : "BLAST"
    128 : "CLUB"
    256 : "SHOCK"
    512 : "SONIC"
    1024 : "ENERGYBEAM"
    16384: "DROWN"
    32768 : "PARALYSE"
    65536 : "NERVEGAS"
    131072 : "POISON"
    262144 : "RADIATION"
    524288 : "DROWNRECOVER"
    1048576 : "CHEMICAL"
    2097152 : "SLOWBURN"
    4194304 : "SLOWFREEZE"
  ]
]

@SolidClass = trigger_monsterjump : "Trigger monster jump" 
[
  master(string) : "Master" 
  speed(integer) : "Jump Speed" : 40
  height(integer) : "Jump Height" : 128
]

@SolidClass base(Trigger) = trigger_multiple : "Trigger: Activate multiple" 
[
  wait(integer): "Delay before reset" : 10
]

@SolidClass base(Trigger) = trigger_once : "Trigger: Activate once" []

@SolidClass base(Trigger) = trigger_push : "Trigger player push"
[
  spawnflags(flags) = 
  [ 
    1: "Once Only" : 0 
    2: "Start Off" : 0
  ]
  speed(integer) : "Speed of push" : 40
]

@PointClass base(Targetx, Targetname) = trigger_relay : "Trigger Relay"
[
  spawnflags(flags) =
  [
    1: "Remove On fire" : 0
  ]
  triggerstate(choices) : "Trigger State" : 0 = 
  [
    0: "Off"
    1: "On"
    2: "Toggle"
  ]
]

@SolidClass base(Trigger) = trigger_teleport : "Trigger teleport" []

@SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" []

//
// weapons
//

@PointClass base(Weapon, Targetx, RenderFields) = weapon_crowbar : "Crowbar" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_9mmhandgun : "9mm Handgun" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_357 : "357 Handgun" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_9mmAR : "9mm Assault Rifle" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_shotgun : "Shotgun" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_rpg : "RPG" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_gauss : "Gauss Gun" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_crossbow : "Crossbow" 
[
  sequence(choices) : "Placement" : 0 =
  [
    0 : "Normal (flat)"
    1 : "Realistic (tilted)"
  ]
]
@PointClass base(Weapon, Targetx, RenderFields) = weapon_egon : "Egon Gun" []
@PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_satchel : "Satchel Charge Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_handgrenade : "Handgrenade Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_snark : "Squeak Grenade" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_hornetgun : "Hornet Gun" []
@PointClass size(-16 -16 0, 16 16 64) color(0 128 0) =  weaponbox : "Weapon/Ammo Container" []

@PointClass base(Weapon, Targetx) = world_items : "World Items" 
[
  type(choices) :"types" : 1 =
  [
    44: "Battery"
    42: "Antidote"
    43: "Security Card"
    45: "Suit"
  ]
]

//
// Xen
//

@PointClass base(Target, Targetname, RenderFields) size(-48 -48 0, 48 48 32 ) = xen_plantlight : "Xen Plant Light" []
@PointClass base(Targetname, RenderFields) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair" 
[
  spawnflags(Flags) = 
  [
    1 : "Sync Movement"   : 0
  ]
]

@PointClass base(Targetname, RenderFields) size(-24 -24 0, 24 24 188 ) = xen_tree : "Xen Tree" []
@PointClass base(Targetname, RenderFields) size(-16 -16 0, 16 16 64 ) = xen_spore_small : "Xen Spore (small)" []
@PointClass base(Targetname, RenderFields) size(-40 -40 0, 40 40 120 ) = xen_spore_medium : "Xen Spore (medium)" []
@PointClass base(Targetname, RenderFields) size(-90 -90 0, 90 90 220 ) = xen_spore_large : "Xen Spore (large)" []

//////////////////////////////////////////////////////////////////////////////
// Opposing Force Entities							          //
//////////////////////////////////////////////////////////////////////////////

//
//AMMO
//
@PointClass base(Weapon, Targetx, RenderFields) = ammo_556 : "M249 Ammo" []
@PointClass base(Weapon, Targetx, RenderFields) = ammo_762 : "Sniper Ammo" []

//Spore ammo orientation refers to the direction that the base of the plant faces
@PointClass base(Weapon, Targetx, RenderFields) color(200 200 50) = ammo_spore : "Spore" []

//
// ENV ENTITIES
//
@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_blowercannon : "Blower Cannon"
[
  delay(string) : "Delay" : "0"
  zoffset(integer) : "Z Offset" : 0
  target(string) : "Target" : ""
  weaptype(choices) :"Weapon Type" : 1 =
  [
    1: "Spore (Rocket)"
    2: "Spore (Grenade)"
    3: "Shock Beam"
    4: "Displacer Ball"
  ]
  firetype(choices) :"Fire Type" : 1 =
  [
    1: "Toggle On/Off"
    2: "Fire When Triggered"
  ]
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_electrified_wire : "Electrified Wire"
[
  segments(integer) : "Segments" : 16
  sparkfrequency(integer) : "Spark Frequency" : 3
  bodysparkfrequency(integer) : "Body Spark Frequency" : 3
  lightningfrequency(integer) : "Lightning Frequency" : 3
  xforce(integer) : "X Force" : 80000
  yforce(integer) : "Y Force" : 80000
  zforce(integer) : "Z Force" : 80000
  disable(choices) :"Disable Use" : 0 =
  [
    0: "Not Disabled"
    1: "Disabled"
  ]
  endingmodel(string) : "Ending Model" : "models/wire_copper16.mdl"
  bodymodel(string) : "Body Model" : "models/wire_black16.mdl"
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = env_rope : "Rope"
[
  segments(integer) : "Segments" : 16
  disable(choices) :"Disable Use" : 0 =
  [
    0: "Not Disabled"
    1: "Disabled"
  ]
  endingmodel(string) : "Ending Model" : "models/rope16.mdl"
  bodymodel(string) : "Body Model" : "models/rope16.mdl"
]

@PointClass base(Targetname) size(-16 -16 -16, 16 16 16) color(0 128 255)= env_spritetrain : "Sprite Train"
[
  target(target_source) : "First stop target"
  model(string) : "Sprite Name" : "sprites/glow01.spr"
  speed(integer) : "Speed (units per second)" : 64
  scale(string) : "Sprite Scale"      
]

//
// FUNC ENTITIES
//

@SolidClass base(Target) = func_op4mortarcontroller : "Op4 Mortar Controller" 
[
    mortar_axis(Choices) : "Axis" : 0 =
    [
        0 : "Vertical"
        1 : "Horizontal"
    ]
]

@BaseClass base(Targetname, Target, RenderFields, Global) = BaseTankOF
[
  spawnflags(flags) =
  [
    1 : "Active" : 0
    16: "Only Direct" : 0
    32: "Controllable" : 0
  ]

  // Mainly for use with 1009 team settings (game_team_master)
  master(string) : "(Team) Master"

  yawrate(string) : "Yaw rate" : "30"
  yawrange(string) : "Yaw range" : "180"
  yawtolerance(string) : "Yaw tolerance" : "15"
  pitchrate(string) : "Pitch rate" : "0"
  pitchrange(string) : "Pitch range" : "0"
  pitchtolerance(string) : "Pitch tolerance" : "5"
  barrel(string) : "Barrel Length" : "0"
  barrely(string) : "Barrel Horizontal" : "0"
  barrelz(string) : "Barrel Vertical" : "0"
  spritesmoke(string) : "Smoke Sprite" : ""
  spriteflash(string) : "Flash Sprite" : ""
  spritescale(string) : "Sprite scale" : "1"
  rotatesound(string) : "Rotate Sound" : ""
  firerate(string) : "Rate of Fire" : "1"
  bullet_damage(string) : "Damage Per Bullet" : "0"
  persistence(string) : "Firing persistence" : "1"
  firespread(choices) : "Bullet accuracy" : 0 =
  [
    0: "Perfect Shot"
    1: "Small cone"
    2: "Medium cone"
    3: "Large cone"
    4: "Extra-large cone"
  ]
  minRange(string) : "Minmum target range" : "0"
  maxRange(string) : "Maximum target range" : "0"
  _minlight(string) : "Minimum light level"
  enemytype(Choices) : "Enemy Type" : 1 =
  [
    0: "Player"
    1: "Ally"
    2: "Random"
  ]
]

// Don't forget func_tankcontrols_of
@SolidClass base(BaseTankOF) = func_tank_of : "Brush Gun Turret" 
[
  bullet(choices) : "Bullets" : 0 = 
  [
    0: "None"
    1: "9mm"
    2: "MP5"
    3: "12mm"
  ]
]

@SolidClass = func_tankcontrols_of : "Tank controls"
[
  target(target_destination) : "Tank entity name"
]

// Don't forget func_tankcontrols_of
@SolidClass base(BaseTankOF) = func_tanklaser_of : "Brush Laser Turret" 
[
  laserentity(target_source) : "env_laser Entity"
]

// Don't forget func_tankcontrols
@SolidClass base(BaseTankOF) = func_tankrocket_of : "Brush Rocket Turret" []

// Don't forget func_tankcontrols
@SolidClass base(BaseTankOF) = func_tankmortar_of : "Brush Mortar Turret" 
[
  iMagnitude(Integer) : "Explosion Magnitude" : 100
]

//
// INFO ENTITIES
//

// Displacer target placement represents the point where the player's feet shall be
@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_displacer_xen_target : "Displacer XEN Target" []
@PointClass base(Targetname) size(-4 -4 -4, 4 4 4) color(200 100 50) = info_displacer_earth_target : "Displacer EARTH Target" []

@PointClass base(Targetname, Target) = info_pitworm_steam_lock : "Pitworm Steam Lock" []

//
// ITEM ENTITIES
//

@PointClass base(Weapon, Targetx) = item_generic : "Generic scenery item"
[
	model(string) : "Model" : "models/egg.mdl"
	sequencename(string) : "Sequence Name" : "idle"
	skin(integer) : "Skin" : 0
	body(integer) : "Body" : 0
]

@PointClass base(Weapon, Targetx) size(-16 -16 0, 16 16 36) = item_nuclearbomb : "Nuclear Bomb"
[
      initialstate(integer) : "Initial State" : 0
	wait(integer) : "Wait" : 1
]

//
// MONSTERS
//
@PointClass base(Monster) size(-40 -40 0, 40 40 64) = monster_alien_babyvoltigore : "Baby Voltigore" 
[
  netname(string) : "Squad Name"
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
]

@PointClass base(Monster) size(-80 -80 0, 80 80 90) = monster_alien_voltigore : "Voltigore" 
[
  netname(string) : "Squad Name"
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_alien_slave_dead : "Dead Vortigaunt" 
[
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On Stomach"
  ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_assassin_repel : "Male Assassin (Repel)" []

@PointClass base(Monster) size(-360 -360 -172, 360 360 8) = monster_blkop_apache : "Black Ops Apache" 
[
  spawnflags(Flags) = 
  [
    8 : "NoWreckage"  : 0
    64 : "Start Inactive" : 0
  ]
]

@PointClass base(Monster) size(-480 -480 -112, 480 480 24) = monster_blkop_osprey : "Black Ops Osprey"
[
  spawnflags(Flags) = 
  [
    64 : "Start Inactive" : 0
  ]
]

@PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) = monster_cleansuit_scientist : "Cleansuit Scientist" 
[
    body(Choices) : "Body" : -1 =
    [
        -1 : "Random"
        0 : "Glasses"
        1 : "Einstein"
        2 : "Luther"
        3 : "Slick"
    ]
]

@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_cleansuit_scientist_dead : "Dead Cleansuit Scientist" 
[
  body(Choices) : "Body" : -1 =
  [
    -1 : "Random"
    0 : "Glasses"
    1 : "Einstein"
    2 : "Luther"
    3 : "Slick"
  ]
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On back"
    1 : "On Stomach"
    2 : "Sitting"
    3 : "Hanging"
    4 : "Table1"
    5 : "Table2"
    6 : "Table3"
    7 : "Hi Mike!"
    8 : "Dead Against Wall"
  ]
]

@PointClass base(Monster) size(-14 -14 22, 14 14 72) = monster_sitting_cleansuit_scientist : "Sitting Cleansuit Scientist" 
[
      body(Choices) : "Body" : -1 =
  [
    -1 : "Random"
    0 : "Glasses"
    1 : "Einstein"
    2 : "Luther"
    3 : "Slick"
  ]
]

@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_drillsergeant : "Drill Sergeant" []

@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_geneworm : "Gene Worm" []
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_gonome : "Gonome" []
@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_gonome_dead : "Dead Gonome" 
[
      pose(Choices) : "Pose" : 0 =
  [
    0 : "On Stomach"
    1 : "On Back"
    2 : "On Side"
  ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_houndeye_dead : "Dead Houndeye" 
[
  pose(Choices) : "Pose" : 0 =
  [
    0 : "Just plain dead"
  ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_grunt_ally_repel : "Human Grunt Ally (Repel)"
[
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
  netname(string) : "Squad Name"
  weapons(Choices) : "Weapons" : 3 =
  [
    1 : "9mmAR"
    3 : "9mmAR + HG"
    5 : "9mmAR + GL"
    8 : "Shotgun"
    10 : "Shotgun + HG"
    16 : "Saw"
  ]
  head(Choices) : "Heads" : -1 =
  [
    -1 : "Default"
    0 : "Gas Mask"
    1 : "Beret"
    2 : "Ops Mask"
    3 : "Bandana White"
    4 : "Bandana Black"
  ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_grunt_ally : "Human Grunt Ally (camo)" 
[
    netname(string) : "Squad Name"
    
    spawnflags(Flags) =
    [
        32 : "SquadLeader" : 0
    ]

    weapons(Choices) : "Weapons" : 3 =
    [
        0 : "None"
        1 : "9mmAR"
        3 : "9mmAR + HG"
        5 : "9mmAR + GL"
        8 : "Shotgun"
        10 : "Shotgun + HG"
        16 : "Saw"
    ]

    head(Choices) : "Heads" : -1 =
    [
        -1 : "Default"
         0 : "Gas Mask"
         1 : "Beret"
         2 : "Ops Mask"
         3 : "Bandana White"
         4 : "Bandana Black"
         5 : "MP"
         6 : "Major"
         7 : "Beret (Black)"
    ]
]

@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_human_grunt_ally_dead : "Dead Human Grunt Ally" 
[
      pose(Choices) : "Pose" : 0 =
	[
		0 : "On stomach"
		1 : "On side"
		2 : "Seated"
		3 : "Dead On Back"
		4 : "Dead On Stomach"
		5 : "Head Crabbed"
	]

	weapons(Choices) : "Weapons" : 1 =
	[
		0 : "None"
		1 : "9mmAR"
		8 : "Shotgun"
		16 : "Saw"
	]

	head(Choices) : "Heads" : 0 =
	[
		0 : "Gas Mask"
		1 : "Beret"
		2 : "Ops Mask"
		3 : "Bandana White"
		4 : "Bandana Black"
		5 : "MP"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_medic_ally : "Medic" 
[
    netname(string) : "Squad Name"
    
    spawnflags(Flags) =
    [
        32 : "SquadLeader" : 0
    ]

    head(Choices) : "Heads" : -1 =
    [
       -1 : "Random"
        0 : "White"
        1 : "Black"
    ]

    weapons(Choices) : "Weapons" : 2 =
    [
	  0 : "None"
        1 : "Desert Eagle"
        2 : "9mm Handgun"
        4 : "Hypodermic Needle"
    ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_human_torch_ally : "Torch" 
[
  netname(string) : "Squad Name"
  spawnflags(Flags) =
  [
    32 : "SquadLeader" : 0
  ]
  weapons(Choices) : "Weapons" : 1 =
  [
    1 : "Desert Eagle"
    2 : "Blow Torch"
  ]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_male_assassin : "Male Assassin"
[
    netname(string) : "Squad Name"
    
    spawnflags(Flags) =
    [
        32 : "SquadLeader" : 0
    ]

    head(Choices) : "Heads" : 0 =
    [
       -1 : "Random"
        0 : "Ski Mask White"
        1 : "Ski Mask Black"
        2 : "Night Goggles"
    ]

    weapons(Choices) : "Weapons" : 3 =
    [
        0 : "None"
        1 : "9mmAR"
        3 : "9mmAR + HG"
        5 : "9mmAR + GL"
        8 : "Sniper Rifle"
    ]
    standgroundrange(string) : "Stand Ground Range" : "0.0"
]

@PointClass base(Monster, RenderFields) size(-16 -16 -36, 16 16 36) = monster_op4loader : "Loader machine" 
[
  spawnflags(Flags) = 
  [
    4 : "Not solid" : 0
  ]
]

@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_otis : "Otis"
[
	bodystate(Choices) : "bodystate" : -1 =
	[
		-1 : "Random"
		0 : "Gun Holstered"
		1 : "Gun Drawn"
		3 : "Donut"
	]
	head(Choices) : "head" : -1 =
	[
		-1 : "Random"
		0 : "Bald Head"
		1 : "Head with hair"
	]
	suspicious(choices) : "Suspicious" : 0 =
	[
		0 : "No"
		1 : "Yes"
	]
]

@PointClass base(Appearflags) size(-16 -16 0, 16 16 72) = monster_otis_dead : "Dead Otis" 
[
    pose(Choices) : "Pose" : 0 =
    [
        0 : "On back"
        1 : "On side"
        2 : "On stomach"
	  3 : "Stuffed in Vent"
	  4 : "Dead Sitting"
    ]
]

@PointClass base(Monster) size(-24 -24 0, 24 24 32) = monster_pitdrone : "PitDrone"
[
initammo(string) : "Initial Ammo" : "6"
]

@PointClass base(Monster) size(-16 -16 0, 16 16 32) = monster_pitworm : "Pit Worm" []
@PointClass base(Monster) size(-95 -95 0, 95 95 190) = monster_pitworm_up : "Pit Worm Upright" []

@PointClass base(Monster) size(-16 -16 0, 16 16 36) = monster_shockroach : "Shock Roach" []

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie_barney : "Barney Zombie" []
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie_soldier : "Soldier Zombie" []
@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_zombie_soldier_dead : "Dead Soldier Zombie"
[
    pose(Choices) : "Pose" : 0 =
    [
        0 : "On back"
        1 : "On stomach"
    ]
]

@PointClass base(Monster,TalkMonster) size(-16 -16 0, 16 16 72) = monster_recruit : "Recruit" []

@PointClass base(Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_skeleton_dead : "Dead Skeleton" 
[
      pose(Choices) : "Pose" : 0 =
	[
		0 : "On back"
		1 : "Seated"
		2 : "Against Wall"
		3 : "On Stomach"
	]
]

@PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_shocktrooper : "Shock Trooper" 
[
    netname(string) : "Squad Name"
    spawnflags(Flags) =
    [
        32 : "SquadLeader" : 0
    ]
    weapons(Choices) : "Weapons" : 3 =
    [
        1 : "9mmAR"
        3 : "9mmAR + HG"
        5 : "9mmAR + GL"
        8 : "Shotgun"
        10 : "Shotgun + HG"
    ]
]

@PointClass base(Targetname) = op4mortar : "Op4 Mortar" 
[
    spawnflags(Flags) =
    [
        1  : "Active" : 0
        16 : "Line of Sight" : 1
        32 : "Can Control" : 1
    ]
    mortar_velocity(integer) : "Velocity" : 800
    h_min(integer) : "Horiz MIN" : -90
    h_max(integer) : "Horiz MAX" : 90
    mindist(integer) : "Min Target Dist" : 256
    maxdist(integer) : "Max Target Dist" : 2048
    enemytype(Choices) : "Enemy Type" : 0 =
    [
        0 : "Player"
        1 : "Ally"
        2 : "Random"
    ]
    firedelay(integer) : "Fire Rate" : 5
]

@PointClass base(gibshooterbase) = pitworm_gibshooter : "Pitworm Gib Shooter" []

//
// TRIGGERS
//
@SolidClass base(Targetname,Target) = trigger_geneworm_hit : "Trigger GeneWorm Hit" 
[
  spawnflags(flags) = 
  [ 
    1: "Target Once" : 0 
    2: "Start Off" : 0
    8: "No clients" : 0
    16:"FireClientOnly" : 0
    32:"TouchClientOnly" : 0
  ]
  master(string) : "Master" 
  delay(string) : "Delay before trigger" : "0"
]

@PointClass base(Targetx, Targetname) = trigger_playerfreeze : "Trigger Player Freeze" []
@SolidClass base(Trigger) = trigger_xen_return : "Return To Earth (self-tele)" []

//
//WEAPONS
//
@PointClass base(Weapon, Targetx, RenderFields) = weapon_displacer : "Displacer" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_eagle : "Desert Eagle" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_grapple : "Barnacle Grapple" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_knife : "Knife" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_m249 : "M249 SAW" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_pipewrench : "Pipe Wrench" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_shockrifle : "Shock Roach" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_sniperrifle : "Sniper Rifle" []
@PointClass base(Weapon, Targetx, RenderFields) = weapon_sporelauncher : "Spore Launcher" []