Advertisement
Guest User

DinkyDonk Spirit FGD

a guest
Nov 26th, 2014
893
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 198.42 KB | None | 0 0
  1. // Spirit of Half-Life v1.8 FGD
  2. // For WorldCraft 3.5+ and Half-Life 1.1.0.8+
  3. // Last update: 9th March 2008
  4. // Created by Laurie Cheers - http://www.bearkey.com/?laurie
  5. // Additions by Shambler Team - http://shamteam.cbi.ru/
  6. // Additions by Killar - http://www.bearkey.com/?killar
  7. // Additions by Confused - http://www.bearkey.com/?confused
  8. // Additions by Mike - http://www.bearkey.com/?mike2k
  9. // Additions by ytiAdmin - http://www.bearkey.com/?ytiadmin
  10. // Additions by DeathWish - http://www.bearkey.com/?deathwish
  11.  
  12. // In textpad use regular expression ^[\t ]*//.*\n to remove ALL comments
  13.  
  14. //INFO
  15. //
  16. // For any "target" type value, you can use a "+" or "-" prefix to
  17. // specify that the target should be turned on or off, respectively.
  18. // (e.g. suppose you have an entity which targets "mylight". If you tell it
  19. // to target "+mylight" instead, then it will only turn the light on, never
  20. // off.)
  21. // Similarly, for any Master, you can invert the master relationship (that
  22. // is, you can disable the entity whenever the master <u>is</u> on) by
  23. // adding a tilde (~) at the start of the master's name.
  24. //
  25. // When testing your level, it's sometimes helpful to be able to trigger
  26. // entities manually. To trigger an entity named "mydoor", you can simply
  27. // type "fire mydoor" at the console.
  28. // Similarly, if you just type "fire", you will trigger whatever entity the
  29. // player is aiming at.
  30. // NB: this command will only work if sv_cheats is set to 1.
  31. //
  32. //ENDS
  33.  
  34. //
  35. // Worldspawn
  36. //
  37.  
  38. //* Edit Worldspawn's properties from the map menu ["Map \ Map Properties..."]
  39. @SolidClass = worldspawn : "World entity"
  40. [
  41. message(string) : "Map Description / Title"
  42. skyname(string) : "environment map (cl_skyname)"
  43. sounds(integer) : "CD track to play" : 1
  44. light(integer) : "Default light level"
  45. WaveHeight(string) : "Default Wave Height" : "0.0"
  46. MaxRange(string) : "Max viewable distance" : "4096"
  47. chaptertitle(string) : "Chapter Title Message"
  48. startdark(choices) : "Level Fade In" : 0 =
  49. [
  50. 0 : "No"
  51. 1 : "Yes"
  52. ]
  53. gametitle(choices) : "Display 'Half-Life' title?" : 0 =
  54. [
  55. 0 : "No"
  56. 1 : "Yes"
  57. ]
  58. newunit(choices) : "Flush global entities?" : 0 =
  59. [
  60. 0 : "No, keep global ents"
  61. 1 : "Yes, flush global ents"
  62. ]
  63. mapteams(string) : "Map Team List"
  64. defaultteam(choices) : "Default Team" : 0 =
  65. [
  66. 0 : "Fewest Players"
  67. 1 : "First Team"
  68. ]
  69. //NEW 0.3
  70. //* Yes means the player will start this level wearing an HEV suit.
  71. startsuit(choices) : "HEV from start" =
  72. [
  73. 0 : "No"
  74. 1 : "Yes"
  75. ]
  76. //NEW 0.4
  77. //* Yes means that monsters will appear in multiplayer games. This has no effect in a single player level.
  78. allowmonsters(choices) : "Allow Monsters (MP only)" =
  79. [
  80. 0 : "No"
  81. 1 : "Yes"
  82. ]
  83. //NEW 1.4
  84. // Yes means the player may Gauss Jump in singleplayer. This has no effect in a multi player level.
  85. allow_sp_gjump(choices) : "Allow SP Gauss Jump" =
  86. [
  87. 0 : "No (Default)"
  88. 1 : "Yes"
  89. ]
  90.  
  91. //NEW 1.5
  92. // Yes means the player continues to take damage from rad/tox/poison even after leaving the area
  93. timed_damage(choices) : "Enable timed damage rad/tox/poison" : 1 =
  94. [
  95. 0 : "No"
  96. 1 : "Yes (Default)"
  97. ]
  98.  
  99. //NEW 1.5
  100. // The maximum number of cameras a player is allowed in his inventory at any one time.
  101. max_cameras(integer) : "Max cameras in players inventory" : 2
  102.  
  103. //NEW 1.5
  104. // The maximum medical kit charge a player can have at one time. Excess is not wasted on picking up a medkit
  105. max_medkit(integer) : "Max TOTAL medkit charge" : 200
  106. ]
  107.  
  108. //
  109. // BaseClasses
  110. //
  111.  
  112. @BaseClass = Sequence
  113. [
  114. sequence(integer) : "Animation Sequence (editor)"
  115. ]
  116.  
  117. //* "ZHLTReference.html" (included with the ZHLT Distribution) contains information on using these keys.
  118. @BaseClass = ZHLTLightKeys
  119. [
  120. zhlt_lightflags(choices) : "HLRAD Opacity (ZHLT 2.5.1+)" : 0 =
  121. [
  122. 0: "Normal (0)"
  123. 1: "Embedded Fix (1)"
  124. 2: "Opaque (Blocks light) (2)"
  125. 3: "Opaque + Embedded Fix (3)"
  126. 6: "ConcaveFix (6)"
  127. ]
  128. light_origin(string) : "Light Origin (ZHLT 2.5.1+)"
  129. ]
  130.  
  131. @BaseClass = ZhltLights
  132. [
  133. _fade(integer) : "Fade (ZHLT 2.5.1+)"
  134. _falloff(choices) : "Falloff (ZHLT 2.5.1+)" : 2 =
  135. [
  136. 1: "Inverse Square (1)"
  137. 2: "Inverse Linear (2)"
  138. ]
  139. ]
  140.  
  141. @BaseClass = TexLight
  142. [
  143. //NEW 1.0
  144. style(choices) : "Texlight style" : 0 =
  145. [
  146. 0 : "Normal (on)"
  147. 10: "Fluorescent flicker"
  148. 2 : "Slow, strong pulse"
  149. 11: "Slow pulse, noblack"
  150. 5 : "Gentle pulse"
  151. 1 : "Flicker A"
  152. 6 : "Flicker B"
  153. 3 : "Candle A"
  154. 7 : "Candle B"
  155. 8 : "Candle C"
  156. 4 : "Fast strobe"
  157. 9 : "Slow strobe"
  158. 12: "Underwater"
  159. ]
  160. ]
  161.  
  162. @BaseClass = SwitchTexLight
  163. [
  164. //NEW 1.0
  165. style(choices) : "Texlight style" : 0 =
  166. [
  167. 0 : "Normal (on)"
  168. -1: "Switchable (starts on)"
  169. -2: "Switchable (starts off)"
  170. 10: "Fluorescent flicker"
  171. 2 : "Slow, strong pulse"
  172. 11: "Slow pulse, noblack"
  173. 5 : "Gentle pulse"
  174. 1 : "Flicker A"
  175. 6 : "Flicker B"
  176. 3 : "Candle A"
  177. 7 : "Candle B"
  178. 8 : "Candle C"
  179. 4 : "Fast strobe"
  180. 9 : "Slow strobe"
  181. 12: "Underwater"
  182. ]
  183. ]
  184.  
  185. @BaseClass = Appearflags
  186. [
  187. //NEW 0.6
  188. skill(choices) : "Skill setting" : 0 =
  189. [
  190. 0 : "All skills"
  191. 1 : "Not in easy"
  192. 2 : "Not in medium"
  193. 4 : "Not in hard"
  194. 6 : "Only in easy"
  195. 5 : "Only in medium"
  196. 3 : "Only in hard"
  197. ]
  198. spawnflags(Flags) =
  199. [
  200. 2048 : "Not in Deathmatch" : 0
  201. ]
  202. ]
  203.  
  204. @BaseClass = Angles
  205. [
  206. angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
  207. ]
  208.  
  209. @BaseClass = Targetname
  210. [
  211. targetname(target_source) : "Name"
  212. ]
  213.  
  214. @BaseClass = Target
  215. [
  216. target(target_destination) : "Target"
  217. ]
  218.  
  219. @BaseClass = MoveWith
  220. [
  221. //NEW 0.3
  222. movewith(target_destination) : "Moves with"
  223. ]
  224.  
  225. @BaseClass = Master
  226. [
  227. master(string) : "Master"
  228. ]
  229.  
  230. @BaseClass size(-16 -16 0, 16 16 32) color(0 0 200) base(Targetname, Angles, Appearflags) = Weapon
  231. [
  232. master(string) : "Item Lock Master"
  233. ]
  234.  
  235. @BaseClass base(Weapon) color(80 0 200) = Ammo []
  236.  
  237. @BaseClass = Global
  238. [
  239. globalname(string) : "Global Entity Name"
  240. ]
  241.  
  242. @BaseClass = Delay
  243. [
  244. delay(string) : "Delay before trigger" : "0"
  245. ]
  246.  
  247. @BaseClass = Killtarget
  248. [
  249. killtarget(target_destination) : "KillTarget"
  250. ]
  251.  
  252. @BaseClass base(Target, Delay, Killtarget) = Targetx []
  253.  
  254. @BaseClass = RenderFxChoices
  255. [
  256. renderfx(choices) : "Render FX" : 0 =
  257. [
  258. 0: "Normal"
  259. //* Additive or Texture mode only.
  260. 1: "Slow Pulse"
  261. //* Additive or Texture mode only.
  262. 2: "Fast Pulse"
  263. //* Additive or Texture mode only.
  264. 3: "Slow Wide Pulse"
  265. 4: "Fast Wide Pulse"
  266. 9: "Slow Strobe"
  267. 10: "Fast Strobe"
  268. 11: "Faster Strobe"
  269. 12: "Slow Flicker"
  270. 13: "Fast Flicker"
  271. //These don't seem to do anything. Correct me if I'm wrong...
  272. // 5: "Slow Fade Away"
  273. // 6: "Fast Fade Away"
  274. // 7: "Slow Become Solid"
  275. // 8: "Fast Become Solid"
  276.  
  277. //* This setting only affects the Glow rendermode. With this setting, Glow mode behaves
  278. //* exactly like Additive mode - except that (as is usual for Glow mode) the sprite isn't
  279. //* obscured by intervening sprites or models. (Hmm. Call me slow, but..... how is this
  280. //* useful?)
  281. 14: "Constant Glow (Sprites)"
  282. 15: "Distort (Models)"
  283. 16: "Hologram (Distort + fade)"
  284. //* Strange effect. As seen, briefly, when a Gargantua dies.
  285. 18: "Bulge Sideways (Models)"
  286. //* Quite pretty. As seen in Valve's mod Deathmatch Classic.
  287. 19: "Glowing Aura (Models)"
  288. //NEW 1.0
  289. //* Draw a reflection under this model's feet.
  290. 21: "Reflection (Models)"
  291. //NEW 1.4
  292. 22: "Entity in PVS"
  293. ]
  294. ]
  295.  
  296. @BaseClass = RenderMode
  297. [
  298. rendermode(choices) : "Render Mode" : 0 =
  299. [
  300. 0: "Normal"
  301. //* For BSP objects, the object will be rendered as a pure area of whatever
  302. //* color is specified in FX Color.
  303. //* For models and sprites, this is the same as Normal mode.
  304. 1: "Pure Color"
  305. //* For BSP objects, the object will be rendered without shadows.
  306. //* For models and sprites, this is the same as Normal mode, except that the Pulse
  307. //* renderfx settings work.
  308. 2: "Texture"
  309. //* Like additive, but as the player gets further from the sprite, it gets
  310. //* progressively larger and more transparent. The sprite is also not obscured by
  311. //* intervening models, which can sometimes look bad.
  312. //* Alphatest sprites won't use their masks in this mode.
  313. 3: "Glow (sprites only)"
  314. //* For BSP objects, this only affects textures beginning with {. Blue pixels
  315. //* will be transparent; non-blue pixels will be solid.
  316. //* For models, this mode is the same as Normal mode.
  317. //* For sprites, this mode is for displaying sprites in Indexalpha mode - i.e.
  318. //* the palette positions are used as opacity settings; 0 for fully transparent,
  319. //* and 255 for fully opaque, regardless of what the palette colors actually are.
  320. //* The only palette colour that will be used is the last one, which sets the
  321. //* colour for the whole sprite. (Needless to say, this will look odd unless the
  322. //* sprite is designed to be displayed this way!)
  323. //* Oddly, Alphatest sprites won't use their masks in this mode.
  324. 4: "Solid"
  325. //* Only bright parts of the object are visible; darker parts are just more
  326. //* transparent, and black is not drawn. Useful for making lighting or hologram
  327. //* effects.
  328. 5: "Additive"
  329. ]
  330. ]
  331.  
  332. @BaseClass base(RenderFxChoices, RenderMode) = RenderFields
  333. [
  334. renderamt(integer) : "FX Amount (1 - 255)" : 0
  335. rendercolor(color255) : "FX Color (R G B)" : "0 0 0"
  336. ]
  337.  
  338. @BaseClass base(RenderFxChoices, RenderMode) = RenderFieldsMax
  339. [
  340. renderamt(integer) : "FX Amount (1 - 255)" : 255
  341. rendercolor(color255) : "FX Color (R G B)" : "255 255 255"
  342. ]
  343.  
  344. @BaseClass = LockSounds
  345. [
  346. //* The locked sound & sentence will be played if:
  347. //* 1) The player walks into a door which has a name. (and Force Touchable isn't selected.)
  348. //* 2) A door/button with a master gets activated, but the master is disabled.
  349. //*
  350. //* The number against each sound corresponds to the wav file played.
  351. //* e.g. Buzz (10) plays "buttons/button10.wav".
  352. locked_sound(choices) : "Locked Sound" : 0 =
  353. [
  354. 0 : "None"
  355. 2 : "Access Denied (2)"
  356. 8 : "Small zap (8)"
  357. 10: "Buzz (10)"
  358. 11: "Buzz Off (11)"
  359. 12: "Latch Locked (12)"
  360. ]
  361. //* The unlocked sound & sentence will be played whenever a door starts to open and whenever
  362. //* a button starts to push in. (They will never be played when a door starts to close, even if
  363. //* "Toggle" is selected.)
  364. //*
  365. //* The number against each sound (except lightswitch) corresponds to the wav file played.
  366. //* e.g. Buzz (10) plays "buttons/button10.wav".
  367. unlocked_sound(choices) : "Unlocked Sound" : 0 =
  368. [
  369. 0 : "None"
  370. 1 : "Big zap & Warmup (1)"
  371. 3 : "Access Granted (3)"
  372. 4 : "Quick Combolock (4)"
  373. 5 : "Power Deadbolt 1 (5)"
  374. 6 : "Power Deadbolt 2 (6)"
  375. 7 : "Plunger (7)"
  376. 8 : "Small zap (8)"
  377. 9 : "Keycard Sound (9)"
  378. 10: "Buzz (10)"
  379. 13: "Latch Unlocked (13)"
  380. 14: "Lightswitch"
  381. ]
  382. //* The letters correspond to the sentence group played (see sound/sentences.txt);
  383. //* e.g. Blast Door (NF) will cycle through NF0, NF1 and NF3.
  384. locked_sentence(choices) : "Locked Sentence" : 0 =
  385. [
  386. 0: "None"
  387. 1: "Gen. Access Denied (NA)"
  388. 2: "Security Lockout (ND)"
  389. 3: "Blast Door (NF)"
  390. 4: "Fire Door (NFIRE)"
  391. 5: "Chemical Door (NCHEM)"
  392. 6: "Radiation Door (NRAD)"
  393. 7: "Gen. Containment (NCON)"
  394. 8: "Maintenance Door (NH)"
  395. 9: "Broken Shut Door (NG)"
  396. ]
  397. //* The letters correspond to the sentence group played (see sound/sentences.txt);
  398. //* e.g. Blast Door (EF) will cycle through EF0, EF1 and EF3.
  399. unlocked_sentence(choices) : "Unlocked Sentence" : 0 =
  400. [
  401. 0: "None"
  402. 1: "Gen. Access Granted (EA)"
  403. 2: "Security Disengaged (ED)"
  404. 3: "Blast Door (EF)"
  405. 4: "Fire Door (EFIRE)"
  406. 5: "Chemical Door (ECHEM)"
  407. 6: "Radiation Door (ERAD)"
  408. 7: "Gen. Containment (ECON)"
  409. 8: "Maintenance area (EH)"
  410. ]
  411. ]
  412.  
  413. @BaseClass base(Appearflags, Angles) size(-16 -16 -36, 16 16 36) color(0 255 0) = PlayerClass []
  414.  
  415. @BaseClass base(Targetname, Angles, RenderFields, Appearflags) color(0 200 200) = Monster
  416. [
  417. //NEW 0.7.1
  418. health(integer) : "Initial health (0 = normal)"
  419. //NEW 0.7.1
  420. //* Be careful when changing this - a monster's actions are tied closely to its model.
  421. model(studio) : "Model (e.g. models/can.mdl)"
  422. //NEW 0.7.1
  423. skin(integer) : "Skin"
  424. //NEW 1.0
  425. scale(string) : "Scale (1.0 = normal size)"
  426. target(string) : "Patrol Path"
  427. //NEW 0.4
  428. //* If you just want a monster to be ignored, use the "Prisoner" flag instead.
  429. m_iClass(choices) : "Behave as" : 0 =
  430. [
  431. 0 : "Normal"
  432. //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids.
  433. 3 : "Scientist"
  434. //* Likes players and scientists; dislikes Machines, Human Military, and all aliens.
  435. 11: "Barney"
  436. //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military.
  437. 4 : "Human Military"
  438. //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them.
  439. //* Otherwise, they're pretty much like Human Military.
  440. 1 : "Machine (Human Military)"
  441. //* Hates players and Human Military. Dislikes Machines, scientists and barneys.
  442. 5 : "Alien Military"
  443. //* Dislikes Machines and all humans.
  444. 7 : "Other Alien"
  445. //* Dislikes all humans. Scared of Bullsquids.
  446. 8 : "Headcrab"
  447. //* Hates Headcrabs. Dislikes humans and other Bullsquids.
  448. 9 : "Bullsquid"
  449. //* Dislikes everyone, except other Faction A members.
  450. 14 : "Faction A"
  451. //* Dislikes everyone, except other Faction B members.
  452. 15 : "Faction B"
  453. //* Dislikes everyone, except other Faction C members.
  454. 16 : "Faction C"
  455. ]
  456. //NEW 0.5
  457. //* Replaces the old "Player Ally" flag.
  458. m_iPlayerReact(choices) : "Reaction to player" : 0 =
  459. [
  460. 0 : "Normal"
  461. 1 : "Ignore"
  462. //* Scientists usually use this behaviour.
  463. 2 : "Friendly until hurt"
  464. //* Barneys usually use this behaviour.
  465. 3 : "Friendly unless provoked"
  466. 4 : "Enemy"
  467. // Not yet implemented, but will allow any monster to act like a barney/scientist.
  468. //5 : "Follower"
  469. ]
  470. TriggerTarget(String) : "TriggerTarget"
  471. TriggerCondition(Choices) : "Trigger Condition" =
  472. [
  473. 0 : "No Trigger"
  474. 1 : "See Player, Mad at Player"
  475. 2 : "Take Damage"
  476. 3 : "50% Health Remaining"
  477. 4 : "Death"
  478. 7 : "Hear World"
  479. 8 : "Hear Player"
  480. 9 : "Hear Combat"
  481. 10: "See Player Unconditional"
  482. 11: "See Player, Not In Combat"
  483. ]
  484. spawnflags(Flags) =
  485. [
  486. //* Don't attack the player until s/he can see us.
  487. 1 : "WaitTillSeen" : 0
  488. //* Don't speak except when in combat. Don't make "idle" noises.
  489. 2 : "Gag" : 0
  490. //* If ticked, the monster can't enter a func_monsterclip area.
  491. 4 : "Monster Clip" : 0
  492. //* If ticked, the monster will ignore all other monsters and vice versa.
  493. 16: "Prisoner" : 0
  494. //NEW 0.4
  495. //* The dreaded yellow blobs appear for a good reason; they show a monster is stuck
  496. //* in a wall and unable to move. Only tick this if you're happy for it to be stuck.
  497. 128: "No yellow blobs" : 0
  498. 512: "Fade Corpse" : 0
  499. ]
  500. ]
  501.  
  502. @BaseClass = TalkMonster
  503. [
  504. //* The sentence (see sound/sentences.txt) to speak when the player tells us to follow.
  505. UseSentence(String) : "Use Sentence"
  506. //* The sentence to speak when the player tells us to stop following.
  507. UnUseSentence(String) : "Un-Use Sentence"
  508. //NEW 0.4
  509. //* The sentence to speak when refusing to follow the player.
  510. RefusalSentence(String) : "Refusal Sentence"
  511. //NEW 0.4
  512. //* While locked by the master, this monster will refuse to follow the player.
  513. master(String) : "Master (prevents following)"
  514. //NEW 0.4
  515. //* Mostly provided for mod-makers. In the standard sentences.txt, valid settings for
  516. //* this are BA (speak as a Barney) and SC (speak as a Scientist). To define a
  517. //* speech group "XX", you need to define sentences XX_ANSWER, XX_QUESTION, XX_IDLE,
  518. //* XX_STARE, XX_OK, XX_WAIT, XX_STOP, XX_NOSHOOT, XX_HELLO, XX_SMELL, XX_WOUND and
  519. //* XX_MORTAL. (as well as some others, if the monsters are going to be Pre-Disaster.)
  520. SpeakAs(string) : "Speech Group"
  521. spawnflags(Flags) =
  522. [
  523. //* Unless given a Master, a pre-disaster monster will refuse to follow the player.
  524. 256: "Pre-Disaster" : 0
  525. ]
  526. ]
  527.  
  528. @BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) = gibshooterbase
  529. [
  530. //* The number of pieces to create.
  531. m_iGibs(integer) : "Number of shots" : 1
  532. //* Delay (in seconds) between shots. If 0, all the shots are fired at once.
  533. delay(string) : "Delay between shots" : "0"
  534. m_iszPosition(string) : "At position (blank = here) [LP]"
  535. m_iszVelocity(string) : "At velocity (blank = angle) [LV]"
  536. //* How fast the gibs are fired
  537. m_flVelocity(string) : "Gib Speed Factor [LN]" : "200"
  538. //* Course variance
  539. m_flVariance(string) : "Course Variance" : "0.15"
  540. //* Time in seconds for gibs to live, +/- 5%
  541. m_flGibLife(string) : "Shot lifetime (secs)" : "4"
  542. m_iszTargetName(string) : "Shot's name"
  543. //NEW 0.7.1
  544. //* If you want to change the behaviour of the shot, this is the field to use -
  545. //* for example, you could target a motion_manager here, to change the shot's movement.
  546. m_iszSpawnTarget(string) : "Fire on spawn (locus = shot)"
  547. spawnflags(Flags) =
  548. [
  549. 1 : "Repeatable" : 0
  550. 4 : "Debug" : 0
  551. ]
  552. ]
  553.  
  554. @BaseClass = Light
  555. [
  556. //* Don't create a light whose name begins with "light" - a bug/feature in RAD means
  557. //* that such a light won't be able to switch on and off.
  558. targetname(target_source) : "Name"
  559. _light(color255) : "Brightness" : "255 255 128 200"
  560. //* This field will have no effect on a dynamic (i.e. named) light.
  561. style(Choices) : "Appearance (static)" : 0 =
  562. [
  563. 0 : "Normal (on)"
  564. 10: "Fluorescent flicker"
  565. 2 : "Slow, strong pulse"
  566. 11: "Slow pulse, noblack"
  567. 5 : "Gentle pulse"
  568. 1 : "Flicker A"
  569. 6 : "Flicker B"
  570. 3 : "Candle A"
  571. 7 : "Candle B"
  572. 8 : "Candle C"
  573. 4 : "Fast strobe"
  574. 9 : "Slow strobe"
  575. 12: "Underwater"
  576. ]
  577. //* This field will have no effect on a static (i.e. nameless) light.
  578. //* 'a' is dark, 'm' is normal brightness, 'z' is full brightness.
  579. //* There's no support for a light to have a custom appearances when it's in a
  580. //* state other than 'on'. See @trigger_lightstyle if you need this effect.
  581. pattern(string) : "Custom Appearance (on)"
  582. //NEW 0.3
  583. //* This field will have no effect on a static (i.e. nameless) light.
  584. m_iOnStyle(Choices) : "Appearance (on)" : 0 =
  585. [
  586. 0 : "Normal (on)"
  587. 13: "Off"
  588. 10: "Fluorescent flicker"
  589. 2 : "Slow, strong pulse"
  590. 11: "Slow pulse, noblack"
  591. 5 : "Gentle pulse"
  592. 1 : "Flicker A"
  593. 6 : "Flicker B"
  594. 3 : "Candle A"
  595. 7 : "Candle B"
  596. 8 : "Candle C"
  597. 4 : "Fast strobe"
  598. 9 : "Slow strobe"
  599. 12: "Underwater"
  600. ]
  601. //NEW 0.3
  602. //* This field will have no effect on a static (i.e. nameless) light.
  603. m_iOffStyle(Choices) : "Appearance (off)" : 0 =
  604. [
  605. 0: "Normal (off)"
  606. 20: "On"
  607. 10: "Fluorescent flicker"
  608. 2 : "Slow, strong pulse"
  609. 11: "Slow pulse, noblack"
  610. 5 : "Gentle pulse"
  611. 1 : "Flicker A"
  612. 6 : "Flicker B"
  613. 3 : "Candle A"
  614. 7 : "Candle B"
  615. 8 : "Candle C"
  616. 4 : "Fast strobe"
  617. 9 : "Slow strobe"
  618. 12: "Underwater"
  619. ]
  620. //NEW 0.3
  621. m_iTurnOnTime(integer) : "Time taken to turn on (secs)" : 0
  622. //NEW 0.3
  623. //* This field will have no effect on a static (i.e. nameless) light.
  624. m_iTurnOnStyle(Choices) : "Appearance (turn on)" : 0 =
  625. [
  626. 0: "Normal (off)"
  627. 20: "On"
  628. 10: "Fluorescent flicker"
  629. 2 : "Slow, strong pulse"
  630. 11: "Slow pulse, noblack"
  631. 5 : "Gentle pulse"
  632. 1 : "Flicker A"
  633. 6 : "Flicker B"
  634. 3 : "Candle A"
  635. 7 : "Candle B"
  636. 8 : "Candle C"
  637. 4 : "Fast strobe"
  638. 9 : "Slow strobe"
  639. 12: "Underwater"
  640. ]
  641. //NEW 0.3
  642. m_iTurnOffTime(integer) : "Time taken to turn off (secs)" : 0
  643. //NEW 0.3
  644. //* This field will have no effect on a static (i.e. nameless) light.
  645. m_iTurnOffStyle(Choices) : "Appearance (turn off)" : 0 =
  646. [
  647. 0 : "Normal (on)"
  648. 13: "Off"
  649. 10: "Fluorescent flicker"
  650. 2 : "Slow, strong pulse"
  651. 11: "Slow pulse, noblack"
  652. 5 : "Gentle pulse"
  653. 1 : "Flicker A"
  654. 6 : "Flicker B"
  655. 3 : "Candle A"
  656. 7 : "Candle B"
  657. 8 : "Candle C"
  658. 4 : "Fast strobe"
  659. 9 : "Slow strobe"
  660. 12: "Underwater"
  661. ]
  662. ]
  663.  
  664. @BaseClass base(Targetname, Global) = Breakable
  665. [
  666. target(target_destination) : "Target on break"
  667. //NEW 0.7.1
  668. //* Whenever the breakable takes damage, this entity will be triggered, and passed
  669. //* the position and direction of the bullet (or whatever).
  670. whenhit(string) : "Trigger when hit (locus = position)"
  671. health(integer) : "Strength" : 100
  672. material(choices) : "Material type" : 0 =
  673. [
  674. //* <b>Gibs:</b> models/glassgibs.mdl
  675. //* <b>Break noise:</b> debris/bustglassX.wav
  676. //* <b>Bounce noise:</b> debris/glassX.wav
  677. 0: "Glass"
  678. //* <b>Gibs:</b> models/woodgibs.mdl
  679. //* <b>Break noise:</b> debris/bustcrateX.wav
  680. //* <b>Bounce noise:</b> debris/woodX.wav
  681. 1: "Wood"
  682. //* <b>Gibs:</b> models/metalplategibs.mdl
  683. //* <b>Break noise:</b> debris/bustmetalX.wav
  684. //* <b>Bounce noise:</b> debris/metalX.wav
  685. 2: "Metal"
  686. //* <b>Gibs:</b> models/fleshgibs.mdl
  687. //* <b>Break noise:</b> debris/bustfleshX.wav
  688. //* <b>Bounce noise:</b> debris/fleshX.wav
  689. 3: "Flesh"
  690. //* <b>Gibs:</b> models/cindergibs.mdl
  691. //* <b>Break noise:</b> debris/bustconcreteX.wav
  692. //* <b>Bounce noise:</b> debris/concreteX.wav
  693. 4: "Cinder Block"
  694. //* <b>Gibs:</b> models/ceilinggibs.mdl
  695. //* <b>Break noise:</b> debris/bustceilingX.wav
  696. //* <b>Bounce noise:</b> none
  697. 5: "Ceiling Tile"
  698. //* <b>Gibs:</b> models/computergibs.mdl
  699. //* <b>Break noise:</b> debris/bustmetalX.wav
  700. //* <b>Bounce noise:</b> debris/woodX.wav
  701. //* <b>Note:</b> Generates sparks when damaged.
  702. 6: "Computer"
  703. //* <b>Gibs:</b> models/glassgibs.mdl
  704. //* <b>Break noise:</b> debris/bustglassX.wav
  705. //* <b>Bounce noise:</b> debris/glassX.wav
  706. //* <b>Note:</b> Makes ricochet noises when damaged.
  707. 7: "Unbreakable Glass"
  708. //* <b>Gibs:</b> models/rockgibs.mdl
  709. //* <b>Break noise:</b> debris/bustconcreteX.wav
  710. //* <b>Bounce noise:</b> debris/concreteX.wav
  711. 8: "Rocks"
  712. ]
  713. explosion(choices) : "Gibs Direction" : 0 =
  714. [
  715. 0: "Random"
  716. 1: "Relative to Attack"
  717. ]
  718. delay(string) : "Delay before fire" : "0"
  719. //* Can be used to override the default "gibs" value for the material you've specified.
  720. gibmodel(studio) : "Gib Model"
  721. spawnobject(choices) : "Spawn On Break" : 0 =
  722. [
  723. 0: "Nothing"
  724. 1: "Battery"
  725. 2: "Healthkit"
  726. 3: "9mm Handgun"
  727. 4: "9mm Clip"
  728. 5: "Machine Gun"
  729. 6: "Machine Gun Clip"
  730. 7: "Machine Gun Grenades"
  731. 8: "Shotgun"
  732. 9: "Shotgun Shells"
  733. 10: "Crossbow"
  734. 11: "Crossbow Bolts"
  735. 12: "357"
  736. 13: "357 clip"
  737. 14: "RPG"
  738. 15: "RPG Clip"
  739. 16: "Gauss clip"
  740. 17: "Hand grenade"
  741. 18: "Tripmine"
  742. 19: "Satchel Charge"
  743. 20: "Snark"
  744. 21: "Hornet Gun"
  745. ]
  746. explodemagnitude(integer) : "Explode Magnitude (0=none)" : 0
  747. //NEW 0.4
  748. respawn(choices) : "Respawn time (secs)" : 0 =
  749. [
  750. 0: "No respawn"
  751. -1: "Respawn when triggered"
  752. ]
  753. //NEW 0.4
  754. netname(string) : "Target on respawn"
  755. spawnflags(flags) =
  756. [
  757. 1 : "Only Trigger" : 0
  758. 2 : "Touch" : 0
  759. 4 : "Pressure" : 0
  760. 8 : "Fade Respawn" : 0
  761. 16 : "Invert Hit Vector" : 0
  762. 256: "Instant Crowbar" : 0
  763. ]
  764. ]
  765.  
  766. @BaseClass base(Appearflags) = Door
  767. [
  768. target(target_destination) : "Target (Always)"
  769. //NEW 0.4
  770. message(string) : "Target on Open"
  771. netname(string) : "Target on Close"
  772. killtarget(target_destination) : "KillTarget"
  773. //NEW 0.5
  774. //* Together with "On/Off Aware", this field replaces the old
  775. //* "synchronised" flag.
  776. //* When set, the door will fire its Target as soon as it
  777. //* <u>starts</u> to move, instead of firing when it reaches the end
  778. //* of its move.
  779. //* (NB: the "Target on Open" and "Target on Close" fields are not
  780. //* affected; they will still fire at the end of movement.)
  781. immediatemode(choices) : "Fire before moving" : 0 =
  782. [
  783. 0 : "No"
  784. 1 : "Yes"
  785. ]
  786. //NEW 0.5
  787. //* Together with "Fire before moving", this field replaces the old
  788. //* "synchronised" flag.
  789. //* When this is set, instead of always firing its target with
  790. //* USE_TOGGLE, the door will send USE_ON when opening and USE_OFF
  791. //* when closing. (NB: the "fire on open" and "fire on close" fields
  792. //* will still send USE_TOGGLE.)
  793. //* Additionally, instead of simply toggling whenever it's
  794. //* triggered, the door will open when sent USE_ON, and close when
  795. //* sent USE_OFF.
  796. onoffmode(choices) : "On/Off Aware" : 0 =
  797. [
  798. 0 : "No"
  799. 1 : "Yes"
  800. ]
  801. speed(integer) : "Speed" : 100
  802.  
  803. //* The number against each sound corresponds to the wav file played.
  804. //* e.g. Vacuum (4) plays "doors/doormove4.wav".
  805. movesnd(choices) : "Move Sound" : 0 =
  806. [
  807. 0: "No Sound"
  808. 1: "Servo (Sliding) (1)"
  809. 2: "Pneumatic (Sliding) (2)"
  810. 3: "Pneumatic (Rolling) (3)"
  811. 4: "Vacuum (4)"
  812. 5: "Power Hydraulic (5)"
  813. 6: "Large Rollers (6)"
  814. 7: "Track Door (7)"
  815. 8: "Snappy Metal Door (8)"
  816. 9: "Squeaky 1 (9)"
  817. 10: "Squeaky 2 (10)"
  818. ]
  819. //* The number against each sound corresponds to the wav file played.
  820. //* e.g. Chunk (4) plays "doors/doorstop4.wav".
  821. stopsnd(choices) : "Stop Sound" : 0 =
  822. [
  823. 0: "No Sound"
  824. 1: "Clang with brake (1)"
  825. 2: "Clang reverb (2)"
  826. 3: "Ratchet Stop (3)"
  827. 4: "Chunk (4)"
  828. 5: "Light airbrake (5)"
  829. 6: "Metal Slide Stop (6)"
  830. 7: "Metal Lock Stop (7)"
  831. 8: "Snappy Metal Stop (8)"
  832. ]
  833. //* Setting wait to -1 also prevents the door from reversing when it comes into
  834. //* contact with the player, as seen on the bunker door in Crossfire.
  835. //* This setting isn't recommended if the door is using MoveWith.
  836. wait(choices) : "Delay before close" : 3 =
  837. [
  838. -1 : "Stays Open (-1)"
  839. ]
  840. lip(integer) : "Lip"
  841. dmg(integer) : "Damage inflicted when blocked" : 0
  842. //* This delay only applies to the Target, not the Fire on Open/Close fields.
  843. delay(integer) : "Delay before fire"
  844. health(integer) : "Health (shoot open)" : 0
  845. spawnflags(flags) =
  846. [
  847. 1 : "Starts Open" : 0
  848. 4 : "Don't link" : 0
  849. 8: "Passable" : 0
  850. 32: "Toggle" : 0
  851. 256:"Use Only" : 0
  852. 512: "Monsters Can't" : 0
  853. //NEW 0.3
  854. //* Normally a named door, or a door with "use only" selected, won't open when touched.
  855. //* Tick here to override that.
  856. 1024: "Force Touchable" : 0
  857. ]
  858. _minlight(string) : "Minimum light level"
  859. ]
  860.  
  861. @BaseClass base(Targetname, Target, Angles, MoveWith, RenderFields, Global) = BaseTank
  862. [
  863. spawnflags(flags) =
  864. [
  865. //* For computer-controlled guns. The gun is 'On'- i.e. ready to fire at the player- at the start of the level.
  866. 1 : "Active" : 0
  867. //* For computer-controlled guns. If the gun can't see the player, it won't fire.
  868. //* (usually, for a while, the tank will keep firing at the last place it saw the player.)
  869. 2 : "Not Solid" : 0
  870. 16: "Line of Sight" : 0
  871. //* To make a tank which the player can use, you'll also need a @func_tankcontrols entity.
  872. 32: "Controllable" : 0
  873. //NEW 0.2
  874. //* Makes the gun project a laser spot, similar to the player's rocket launcher.
  875. //* This is helpful for players who are trying to aim with it.
  876. 64: "Laser Spot" : 0
  877. //NEW 0.2
  878. //* For player-controlled guns.
  879. //* Makes the gun point at whatever is at the centre of the player's view, instead of simply facing the same way as the player.
  880. 128: "Match Target" : 0
  881. ]
  882.  
  883. //* Mainly for use with 1009 team settings (game_team_master)
  884. master(string) : "(Team) Master"
  885. //NEW 0.6
  886. //* While this master is locked, the gun cannot fire, but the player can still control it.
  887. //* (Intended to enable reloading effects.)
  888. firemaster(string) : "Fire Master"
  889. //NEW 0.7.1
  890. //* Whenever the tank fires, this entity is triggered. (the locus for this is
  891. //* the coordinates and direction at the end of the gun.)
  892. m_iszLocusFire(string) : "Trigger on firing (locus = barrel)"
  893. yawrate(string) : "Yaw rate" : "30"
  894. yawrange(string) : "Yaw range" : "180"
  895. yawtolerance(string) : "Yaw tolerance" : "15"
  896. pitchrate(string) : "Pitch rate" : "0"
  897. pitchrange(string) : "Pitch range" : "0"
  898. pitchtolerance(string) : "Pitch tolerance" : "5"
  899. barrel(string) : "Barrel Length" : "0"
  900. barrely(string) : "Barrel Horizontal" : "0"
  901. barrelz(string) : "Barrel Vertical" : "0"
  902. spritesmoke(sprite) : "Smoke Sprite" : ""
  903. spriteflash(sprite) : "Flash Sprite" : ""
  904. spritescale(string) : "Sprite scale" : "1"
  905. //* Bug fixed: rotate sound now stops when a player releases control of the gun.
  906. rotatesound(sound) : "Rotate Sound" : ""
  907. firerate(string) : "Rate of Fire" : "1"
  908. bullet_damage(string) : "Damage Per Bullet" : "0"
  909. persistence(string) : "Firing persistence" : "1"
  910. firespread(choices) : "Bullet accuracy" : 0 =
  911. [
  912. 0: "Perfect Shot"
  913. 1: "Small cone"
  914. 2: "Medium cone"
  915. 3: "Large cone"
  916. 4: "Extra-large cone"
  917. ]
  918. minRange(string) : "Minmum target range" : "0"
  919. maxRange(string) : "Maximum target range" : "0"
  920. //NEW 0.4
  921. m_iClass(choices) : "Behaviour" : 0 =
  922. [
  923. 0: "Attack only players"
  924. 11: "Barney"
  925. 4: "Human Military"
  926. 5: "Alien Military"
  927. ]
  928. _minlight(string) : "Minimum light level"
  929. ]
  930.  
  931. @BaseClass = PlatSounds
  932. [
  933. movesnd(choices) : "Move Sound" : 0 =
  934. [
  935. 0: "No Sound"
  936. //* plats/bigmove1.wav
  937. 1: "big elev 1"
  938. //* plats/bigmove2.wav
  939. 2: "big elev 2"
  940. //* plats/elevmove1.wav
  941. 3: "tech elev 1"
  942. //* plats/elevmove2.wav
  943. 4: "tech elev 2"
  944. //* plats/elevmove3.wav
  945. 5: "tech elev 3"
  946. //* plats/freightmove1.wav
  947. 6: "freight elev 1"
  948. //* plats/freightmove2.wav
  949. 7: "freight elev 2"
  950. //* plats/heavymove1.wav
  951. 8: "heavy elev"
  952. //* plats/rackmove1.wav
  953. 9: "rack elev"
  954. //* plats/railmove1.wav
  955. 10: "rail elev"
  956. //* plats/squeekmove1.wav
  957. 11: "squeek elev"
  958. //* plats/talkmove1.wav
  959. 12: "odd elev 1"
  960. //* plats/talkmove2.wav
  961. 13: "odd elev 2"
  962. ]
  963. custommovesnd(sound) : "Custom Move Sound"
  964. stopsnd(choices) : "Stop Sound" : 0 =
  965. [
  966. 0: "No Sound"
  967. //* plats/bigstop1.wav
  968. 1: "big elev stop1"
  969. //* plats/bigstop2.wav
  970. 2: "big elev stop2"
  971. //* plats/freightstop1.wav
  972. 3: "freight elev stop"
  973. //* plats/heavystop2.wav
  974. 4: "heavy elev stop"
  975. //* plats/rackstop1.wav
  976. 5: "rack stop"
  977. //* plats/railstop1.wav
  978. 6: "rail stop"
  979. //* plats/squeekstop1.wav
  980. 7: "squeek stop"
  981. //* plats/talkstop1.wav
  982. 8: "quick stop"
  983. ]
  984. customstopsnd(sound) : "Custom Stop Sound"
  985. volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
  986. ]
  987.  
  988. @BaseClass base(Targetname, RenderFields, Global, PlatSounds) = Trackchange
  989. [
  990. height(integer) : "Travel altitude" : 0
  991. spawnflags(flags) =
  992. [
  993. 1: "Auto Activate train" : 0
  994. 2: "Relink track" : 0
  995. 8: "Start at Bottom" : 0
  996. 16: "Rotate Only" : 0
  997. 64: "X Axis" : 0
  998. 128: "Y Axis" : 0
  999. ]
  1000. rotation(integer) : "Spin amount" : 0
  1001. train(target_destination) : "Train to switch"
  1002. toptrack(target_destination) : "Top track"
  1003. bottomtrack(target_destination) : "Bottom track"
  1004. speed(integer) : "Move/Rotate speed" : 0
  1005. ]
  1006.  
  1007. @BaseClass base(Targetname, Master, Targetx) = Trigger []
  1008.  
  1009. @BaseClass = TriggerCond
  1010. [
  1011. //NEW 0.5
  1012. //* Only trigger when touched by an entity with this name.
  1013. //* If this is set, the flags "Monsters", "Pushables", etc will be ignored.
  1014. //* (Alternatively you can specify a classname, e.g. monster_barney.)
  1015. netname(string) : "Triggered only by entity"
  1016. spawnflags(flags) =
  1017. [
  1018. 1: "Monsters" : 0
  1019. 2: "No Clients" : 0
  1020. 4: "Pushables" : 0
  1021. //NEW 0.6
  1022. 8: "Everything else": 0
  1023. ]
  1024. ]
  1025.  
  1026.  
  1027. @BaseClass base(Targetname, Angles, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = Script
  1028. [
  1029. target(target_destination) : "Target (fire when done)"
  1030. delay(string) : "Delay before firing target" : "0"
  1031. killtarget(target_destination) : "KillTarget when done"
  1032. //NEW 0.4
  1033. //* When the animation starts, this target will be triggered. (The standard 'target' value is triggered only when the sequence ends.)
  1034. //* This is useful to let you have special effects etc triggered during the animation.
  1035. m_iszFireOnBegin(string): "Fire after moving"
  1036. //* Specify either a classname (e.g. monster_barney) or a targetname to look for.
  1037. m_iszEntity(string) : "Target Monster [LE]"
  1038. //* If "Target Monster" is a classname, the game picks a random monster of that type from within this
  1039. //* search radius.
  1040. m_flRadius(integer) : "Search Radius" : 512
  1041. //NEW 1.0
  1042. m_iPriority(choices) : "Priority" : 0 =
  1043. [
  1044. 0 : "Normal"
  1045. 4 : "Override other sequences"
  1046. ]
  1047. //NEW 1.0
  1048. m_iFinishSchedule(Choices) : "AI Schedule when done" : 0 =
  1049. [
  1050. 0 : "Default AI"
  1051. 1 : "Ambush"
  1052. ]
  1053. //NEW 0.7.1
  1054. m_iRepeats(integer) : "Repeat action X more times" : 0
  1055. //NEW 0.7.1
  1056. m_fRepeatFrame(string) : "Repeat from frame" : "0"
  1057. spawnflags(Flags) =
  1058. [
  1059. //* Default behaviour for a sequence is to delete itself after finishing.
  1060. 4 : "Repeatable" : 0
  1061. //* If the player shoots a monster or tells a scientist/barney to follow him, any
  1062. //* scripts the monster is playing will usually be interrupted.
  1063. 32: "No Interruptions" : 0
  1064. ]
  1065. ]
  1066.  
  1067. @BaseClass base(Script) size(-16 -16 0, 16 16 72) color(255 0 255) = ScriptSequence
  1068. [
  1069. //NEW 1.0
  1070. m_iszMoveTarget(string) : "Move target (blank = this) [LE]"
  1071. m_fMoveTo(choices) : "Move to Position" : 0 =
  1072. [
  1073. //* Don't move at all. (Turn Type will be ignored.)
  1074. 0 : "No (don't turn)"
  1075. //* Walk to the move target, then turn.
  1076. 1 : "Walk"
  1077. //* Run to the move target, then turn.
  1078. 2 : "Run"
  1079. //* Don't move - just turn to face to whatever the turn mode.
  1080. 5 : "No - Only turn"
  1081. //* Teleport to the move target. Also, the monster's angle will instantly change to
  1082. //* whatever is specified in the turn target's "turn type".
  1083. //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting.
  1084. 4 : "Instant move + turn"
  1085. //NEW 1.0
  1086. //* Don't move - just change angle to whatever the turn type specifies, instantly.
  1087. 6 : "No - Instant turn"
  1088. ]
  1089. //NEW 0.6
  1090. //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that
  1091. //* type.
  1092. m_iszAttack(string) : "Turn target (blank = this) [LE]"
  1093. //NEW 0.3
  1094. m_fTurnType(choices) : "Turn mode" : 0 =
  1095. [
  1096. //* Turn to the same angle the turn target is facing.
  1097. 0 : "Match Angle"
  1098. //* Turn to look at the turn target.
  1099. 1 : "Turn to face"
  1100. 2 : "Don't Turn"
  1101. ]
  1102. //* Animation to play after moving. Note that a @monster_generic won't add any sounds or
  1103. //* special effects to its animations. If you need those to appear, you'll have to use the
  1104. //* specific monster_&lt;whatever&gt; entities, instead.
  1105. m_iszPlay(string) : "Action Animation" : ""
  1106. //* If you specify an idle animation, then when the level begins the monster will be frozen and made
  1107. //* to play that animation (this is the main use for the idle animation in Valve's levels). After that
  1108. //* the monster will play the action animation when you trigger the sequence, and will then revert to its
  1109. //* normal AI.
  1110. //* If there are any other scripted_sequences with the same name as this one, then the monster will also play the "idle" animation
  1111. //* while it's waiting for the other sequences to be ready to start.
  1112. //* And finally, if the action animation is the same as the idle animation, then any time the monster would be playing the idle
  1113. //* animation, instead it will be frozen.
  1114. //* Obvious, eh? ;)
  1115. m_iszIdle(string) : "Idle Animation" : ""
  1116. spawnflags(Flags) =
  1117. [
  1118. //* If the animation includes the monster dying, don't fade the corpse afterwards.
  1119. 8 : "Leave Corpse" : 0
  1120. //* Even if the animation makes the monster look like it's walking around, DON'T shift
  1121. //* the monster to its apparent new location when the animation ends.
  1122. 128: "No Script Movement" : 0
  1123. //NEW 0.4
  1124. //* Some death sequences kill the monster automatically (e.g. "herodie" in loader.mdl)
  1125. //* but for most you'll have to tick this box. This is affected by Leave Corpse in the
  1126. //* obvious way.
  1127. 256: "Monster Dies" : 0
  1128. ]
  1129. ]
  1130.  
  1131. //
  1132. // Entities
  1133. //
  1134.  
  1135. //* Obsolete. Use scripted_sequence. (The only difference between them is that aiscripted_sequence
  1136. //* effectively has its "Override AI" flag ticked all the time.
  1137. @PointClass base(ScriptSequence) = aiscripted_sequence : "AI Scripted Sequence" []
  1138.  
  1139. @PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = ambient_generic : "Universal Ambient"
  1140. [
  1141. message(sound) : "WAV Name (e.g. vox/c.wav)"
  1142. health(integer) : "Volume (10 = loudest)" : 10
  1143. //NEW 0.5
  1144. //* The entity you name here will play the sound, instead of the ambient_generic doing so itself.
  1145. //* Be aware that if the entity is playing another sound on the same channel, they will interfere
  1146. //* with each other.
  1147. target(target_destination) : "Entity to play from"
  1148. //NEW 0.5
  1149. channel(choices) : "Channel to use for that entity" : 6 =
  1150. [
  1151. 1: "Weapon"
  1152. //* If a monster's model has a mouth, and you play a sound on its "voice" channel,
  1153. //* the mouth will automatically move.
  1154. 2: "Voice"
  1155. 3: "Item"
  1156. 4: "Body"
  1157. 5: "Stream"
  1158. 6: "Static"
  1159. ]
  1160. preset(choices) :"Dynamic Presets" : 0 =
  1161. [
  1162. 0: "None"
  1163. 1: "Huge Machine"
  1164. 2: "Big Machine"
  1165. 3: "Machine"
  1166. 4: "Slow Fade in"
  1167. 5: "Fade in"
  1168. 6: "Quick Fade in"
  1169. 7: "Slow Pulse"
  1170. 8: "Pulse"
  1171. 9: "Quick pulse"
  1172. 10: "Slow Oscillator"
  1173. 11: "Oscillator"
  1174. 12: "Quick Oscillator"
  1175. 13: "Grunge pitch"
  1176. 14: "Very low pitch"
  1177. 15: "Low pitch"
  1178. 16: "High pitch"
  1179. 17: "Very high pitch"
  1180. 18: "Screaming pitch"
  1181. 19: "Oscillate spinup/down"
  1182. 20: "Pulse spinup/down"
  1183. 21: "Random pitch"
  1184. 22: "Random pitch fast"
  1185. 23: "Incremental Spinup"
  1186. 24: "Alien"
  1187. 25: "Bizzare"
  1188. 26: "Planet X"
  1189. 27: "Haunted"
  1190. ]
  1191. volstart(integer) : "Start Volume" : 0
  1192. noise(string) : "Volume calculation [LN] (overrides)" : ""
  1193. fadein(integer) : "Fade in time (0-100)" : 0
  1194. fadeout(integer) : "Fade out time (0-100)" : 0
  1195. pitch(integer) : "Pitch (> 100 = higher)" : 100
  1196. pitchstart(integer) : "Start Pitch" : 100
  1197. spinup(integer) : "Spin up time (0-100)" : 0
  1198. spindown(integer) : "Spin down time (0-100)" : 0
  1199. lfotype(choices) : "LFO type (0 - 3)" : 0 =
  1200. [
  1201. 0: "Off"
  1202. 1: "Square"
  1203. 2: "Triangle"
  1204. 3: "Round"
  1205. ]
  1206. lforate(integer) : "LFO rate (0-1000)" : 0
  1207. lfomodpitch(integer) : "LFO mod pitch (0-100)" : 0
  1208. lfomodvol(integer) : "LFO mod vol (0-100)" : 0
  1209. cspinup(integer) : "Incremental spinup count" : 0
  1210. //NEW 1.8
  1211. //* This scales the radius up (if you put more than 1) or down (if you put less than 1).
  1212. //* It works in addition to the small/medium/large flags.
  1213. radiusscale(string) : "Radius scale factor"
  1214. spawnflags(flags) =
  1215. [
  1216. 1: "Play Everywhere" : 0
  1217. 2: "Small Radius" : 0
  1218. //* Medium is the default radius, so ticking this does nothing.
  1219. //* (These should really be chosen from a pull-down menu.)
  1220. 4: "Medium Radius" : 0
  1221. 8: "Large Radius" : 0
  1222. 16:"Start Silent" : 0
  1223. 32:"Is NOT Looped" : 0
  1224. ]
  1225. ]
  1226.  
  1227. //
  1228. // ammo
  1229. //
  1230.  
  1231.  
  1232. @PointClass base(Ammo, Targetx) studio("models/w_357ammobox.mdl") = ammo_357 : "357 Ammo" []
  1233. @PointClass base(Ammo, Targetx) studio("models/w_9mmarclip.mdl") = ammo_9mmAR : "9mm Assault Rifle Ammo" []
  1234. @PointClass base(Ammo, Targetx) studio("models/w_chainammo.mdl") = ammo_9mmbox : "box of 200 9mm shells" []
  1235. @PointClass base(Ammo, Targetx) studio("models/w_9mmclip.mdl") = ammo_9mmclip : "9mm Pistol Ammo" []
  1236. @PointClass base(Ammo, Targetx) studio("models/w_argrenade.mdl") = ammo_ARgrenades : "Assault Grenades" []
  1237. @PointClass base(Ammo, Targetx) studio("models/w_shotshell.mdl") = ammo_buckshot : "Shotgun Ammo" []
  1238. @PointClass base(Ammo, Targetx) studio("models/w_crossbow_clip.mdl") = ammo_crossbow : "Crossbow Ammo" []
  1239. @PointClass base(Ammo, Targetx) studio("models/w_gaussammo.mdl") = ammo_gaussclip : "Gauss Gun Ammo" []
  1240. @PointClass base(Ammo, Targetx) studio("models/w_rpgammo.mdl") = ammo_rpgclip : "RPG Ammo" []
  1241.  
  1242. //* This entity is probably obsolete, now that @func_button has a "Can't Use" flag.
  1243. @SolidClass base(Target, Master, RenderFields, ZHLTLightKeys, MoveWith) = button_target : "Target Button"
  1244. [
  1245. spawnflags(flags) =
  1246. [
  1247. 1: "Use Activates": 0
  1248. 2: "Start On" : 0
  1249. 4: "Non Solid" : 0
  1250. 8: "Can't shoot" : 0
  1251. ]
  1252. ]
  1253.  
  1254.  
  1255. //
  1256. // locus calculation entities
  1257. //
  1258.  
  1259. //NEW 1.8
  1260. @PointClass color(200 128 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_angles : "Calculate Angles"
  1261. [
  1262. netname(string) : "Base angle" : "*locus"
  1263. impulse(choices) : "Meaning of base angle" : 0 =
  1264. [
  1265. 0 : "Angles [PYR]"
  1266. 1 : "View Angle from player [LE]"
  1267. ]
  1268. message(string) : "Rotate by angle [PYR]"
  1269. noise(string) : "Set Pitch [LN] (blank = don't)"
  1270. noise1(string) : "Set Yaw [LN] (blank = don't)"
  1271. noise2(string) : "Set Roll [LN] (blank = don't)"
  1272. ]
  1273.  
  1274. //NEW 1.8
  1275. @PointClass color(200 64 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_numfromcvar : "Calculate a value from a console variable"
  1276. [
  1277. target(string) : "Cvar name"
  1278. spawnflags(flags) =
  1279. [
  1280. 1 : "Parse as [LN]" : 0
  1281. ]
  1282. ]
  1283.  
  1284. //NEW 1.8
  1285. //* If a locus calculation fails (for example, because its target is missing or whatever), it usually returns 0 (or 0 0 0 for vector calculations). If you want something else to happen when your calculation fails, use this to catch failed calculations and return the value you actually want, and/or trigger something.
  1286. @PointClass color(200 64 64) size(-12 -12 -12, 12 12 12) base(Targetname) = calc_fallback : "Handle calculation failures"
  1287. [
  1288. target(string) : "Calculation [LV/P/N]" : "*locus"
  1289. netname(string) : "Fallback calculation [LV/P/N]"
  1290. message(string) : "Fire if fallback used"
  1291. ]
  1292.  
  1293. //NEW 1.8
  1294. //* To use this, simply refer to it in any field that's designated [LN].
  1295. @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_subratio : "Calculate number based on entity properties"
  1296. @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfroment : "Calculate number based on entity properties"
  1297. [
  1298. target(string) : "Entity to use [LE]" : "*locus"
  1299. skin(choices) : "Number to get" : 0 =
  1300. [
  1301. 2: "Number of entities"
  1302. 0: "health/maxhealth(Monsters/Players/Breakables)"
  1303. 1 : "HasWeapons(Players)"
  1304. 0 : "current count(Watcher_Count)"
  1305. 1 : "current count/Comparison number (Watcher_Count)"
  1306. ]
  1307. ]
  1308.  
  1309. //NEW 0.7.1
  1310. //* To use this, simply refer to it in any field that's designated [LN].
  1311. //OLD @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_ratio : "Number adjustment"
  1312. @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfromnum : "Number adjustment"
  1313. [
  1314. target(string) : "Based on number [LN]" : "*locus"
  1315. impulse(choices) : "Calculation" : 0 =
  1316. [
  1317. 0 : "None"
  1318. 1 : "Reversed (1-X)"
  1319. 2 : "Negative (-X)"
  1320. 3 : "Reciprocal (1/X)"
  1321. 4 : "Square (X*X)"
  1322. 5 : "Inverse Square (1/X*X)"
  1323. 6 : "Square root"
  1324. 7 : "Cosine"
  1325. 8 : "Sine"
  1326. 9 : "Tangent"
  1327. 10 : "Inverse Cosine"
  1328. 11 : "Inverse Sine"
  1329. 12 : "Inverse Tangent"
  1330. ]
  1331. netname(string) : "Offset by [LN]" : "0"
  1332.  
  1333. message(string) : "Scale factor [LN]" : "1"
  1334.  
  1335. noise(string) : "Min (blank = none) [LN]"
  1336. noise1(string) : "Max (blank = none) [LN]"
  1337. frags(choices) : "If outside range" : 0 =
  1338. [
  1339. //* e.g. if the range were 0%-100%, and the value were 120%, the result would be 100%.
  1340. 0 : "Pick nearest value"
  1341. //* In the case above, the result would be 20%.
  1342. 1 : "Wrap around"
  1343. //* In the case above, the result would be 80%.
  1344. 2 : "Bounce back"
  1345. //* Treated as 0. Or you can catch this failure with calc_fallback.
  1346. 3 : "Fail
  1347. ]
  1348. ]
  1349.  
  1350. //NEW 1.8
  1351. //* To use this, simply refer to it in any field that's designated [LN].
  1352. @PointClass base(Targetname) color(170 221 85) size(-12 -12 -12, 12 12 12) iconsprite("sprites/calc.spr") = calc_numfromvec : "Calculate number based on vector"
  1353. [
  1354. target(string) : "Vector to use [LV]" : "*locus"
  1355. noise(string) : "Swizzle/replace elements": "X Y Z"
  1356. netname(string) : "Vector B [LV]" : "0 1 0"
  1357. noise1(string) : "Swizzle/replace elements B": "X Y Z"
  1358. impulse(choices) : "Number to get" : 0 =
  1359. [
  1360. 0: "X"
  1361. 1 : "Y"
  1362. 2 : "Z"
  1363. 3 : "Length"
  1364. 4 : "Pitch"
  1365. 5 : "Yaw"
  1366. 6 : "Min X (of A/B)"
  1367. 7 : "Max X (of A/B)"
  1368. 8 : "Min Y (of A/B)"
  1369. 9 : "Max Y (of A/B)"
  1370. 10 : "Min Z (of A/B)"
  1371. 11 : "Max Z (of A/B)"
  1372. 20 : "Angle from B"
  1373. //* i.e. the cosine of the angle between them.
  1374. 21 : "Component in B"
  1375. 22 : "Length/B's Length"
  1376. ]
  1377. ]
  1378.  
  1379. //NEW 0.7.1
  1380. //* To use this, simply refer to it in any field that's designated [LP].
  1381. //OLD @PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_position : "Calculate position"
  1382. @PointClass color(128 200 64) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_posfroment : "Calculate position"
  1383. [
  1384. netname(string) : "Entity to use [LE]" : "*locus"
  1385. impulse(choices) : "Position to calculate" : 1 =
  1386. [
  1387. 0 : "Origin"
  1388. 1 : "Eyes"
  1389. 2 : "Top"
  1390. 3 : "Centre"
  1391. 4 : "Bottom"
  1392. 5 : "Attachment point 0"
  1393. 6 : "Attachment point 1"
  1394. 7 : "Attachment point 2"
  1395. 8 : "Attachment point 3"
  1396. //* Return a random point from within the entity's bounding box.
  1397. 9 : "Random"
  1398. ]
  1399. message(string) : "Add offset [LV]" : "0 0 0"
  1400. spawnflags(flags) =
  1401. [
  1402. 1 : "Debug" : 0
  1403. ]
  1404. ]
  1405.  
  1406.  
  1407.  
  1408. //NEW 0.7.1
  1409. //* To use this, simply refer to it in any field that's designated [LV].
  1410. //OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_subvelocity : "Calculate velocity based on entity properties"
  1411. @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfroment : "Calculate velocity based on entity properties"
  1412. [
  1413. netname(string) : "Entity to use [LE]" : "*locus"
  1414. impulse(choices) : "Value to calculate from" : 0 =
  1415. [
  1416. 0 : "Movement Velocity"
  1417. 1 : "Angle"
  1418. 2 : "View Angle"
  1419. 5 : "Attachment point 0"
  1420. 6 : "Attachment point 1"
  1421. 7 : "Attachment point 2"
  1422. 8 : "Attachment point 3"
  1423. ]
  1424. noise(string) : "Scale factor [LN]" : "1.0"
  1425. message(string) : "Add offset [LV]" : "0 0 0"
  1426. noise2(string) : "Swizzle/replace elements": "X Y Z"
  1427. spawnflags(flags) =
  1428. [
  1429. 1 : "Normalize" : 0
  1430. // 2 : "Flip Vertical" : 0
  1431. // 4 : "Discard X" : 0
  1432. // 8 : "Discard Y" : 0
  1433. // 16 : "Discard Z" :0
  1434. ]
  1435. ]
  1436.  
  1437. //NEW 0.7.1
  1438. //* To use this, simply refer to it in any field that's designated [LV].
  1439. //* This calculates the velocity that would be needed to travel from one point to another.
  1440. //* By default, things will take 0.1 seconds to travel this distance. (Use the "length
  1441. //* factor" setting to change this.)
  1442. //* This can also be used to calculate (for example) where a beam's endpoint should
  1443. //* be, in order for it to point towards a given location.
  1444. //OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_path : "Calculate velocity for travelling"
  1445. @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfrompos : "Calculate velocity for travelling"
  1446. [
  1447. target(string) : "Start position [LP]" : "*locus"
  1448. netname(string) : "Destination"
  1449. armorvalue(choices) : "Destination is" : 0 =
  1450. [
  1451. //* The destination is the end position.
  1452. 0 : "Position [LP]"
  1453. //* To find the end position, add this offset to the start position.
  1454. 1 : "Offset [LV]"
  1455. ]
  1456. health(choices) : "Length Calculation" : 0 =
  1457. [
  1458. 4 : "Square (X = X*X)"
  1459. 0 : "None (X = X)"
  1460. //* With this choice, the actual distance between the points is ignored.
  1461. //* So instead of taking a fixed time to travel, the object will move at
  1462. //* a fixed speed, or the beam will extend a fixed distance.
  1463. 1 : "Normalise (X = 1)"
  1464. 2 : "Reciprocal (X = 1/X)"
  1465. 3 : "Inverse Square (X = 1/X*X)"
  1466. ]
  1467. //* E.g: 2.0 will specify "twice as fast/twice as far", and
  1468. //* 0.5 will specify "half as fast/half as far".
  1469. //* A negative number here will make the line go in the opposite direction.
  1470. noise(string) : "Length factor [LN]" : "1.0"
  1471. //* If this is set, a line will be drawn from the start position to the end
  1472. //* position. The first obstacle it hits will then be used as the new end
  1473. //* position.
  1474. frags(choices) : "Line is blocked by" : 0 =
  1475. [
  1476. 0 : "Nothing"
  1477. 1 : "Walls"
  1478. 2 : "Walls & Glass"
  1479. 3 : "Walls & Monsters"
  1480. 4 : "Walls, Monsters & Glass"
  1481. ]
  1482. noise2(string) : "Swizzle/replace elements": "X Y Z"
  1483. spawnflags(flags) =
  1484. [
  1485. 1 : "Debug mode" : 0
  1486. ]
  1487. ]
  1488.  
  1489. //NEW 0.7.1
  1490. //* To use this, simply refer to it in any field that's designated [LV].
  1491. //OLD @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_velocity_polar : "Calculate velocity"
  1492. @PointClass color(170 179 43) size(-12 -12 -12, 12 12 12) base(Targetname) iconsprite("sprites/calc.spr") = calc_vecfromvec : "Modify velocity"
  1493. [
  1494. netname(string) : "Based on velocity [LV]" : "0 1 0"
  1495. //* Rotate the velocity by this amount.
  1496. noise1(string) : "Rotated by angle [PYR]" : "0 0 0"
  1497. //* Scale the velocity by this factor.
  1498. //* E.g: 2.0 will specify "twice as fast/twice as far", and
  1499. //* 0.5 will specify "half as fast/half as far".
  1500. noise(string) : "Length factor [LN]" : "1.0"
  1501. //* After rotation and scaling, add this offset to the velocity.
  1502. message(string) : "Add offset [LV]" : "0 0 0"
  1503. noise2(string) : "Swizzle/replace elements": "X Y Z"
  1504. spawnflags(flags) =
  1505. [
  1506. //* The "length factor" field will set the exact length of the velocity,
  1507. //* instead of scaling it by a factor.
  1508. 1 : "Normalize" : 0
  1509. ]
  1510. ]
  1511.  
  1512. //
  1513. // cyclers
  1514. //
  1515.  
  1516. // This entity is probably obsolete, now that env_model exists.
  1517. @PointClass base(Targetname, RenderFields, MoveWith) size(-16 -16 0, 16 16 72) studio() = cycler : "Monster Cycler"
  1518. [
  1519. model(studio) : "Model"
  1520. ]
  1521.  
  1522. @PointClass base(Targetname, RenderFields, MoveWith) sprite() = cycler_sprite : "Sprite Cycler"
  1523. [
  1524. model(sprite) : "Sprite"
  1525. framerate(integer) : "Frames per second" : 10
  1526. ]
  1527.  
  1528. @PointClass base(Monster, MoveWith) size(-16 -16 -16, 16 16 16) = cycler_weapon : "Weapon Cycler" []
  1529.  
  1530. //
  1531. // Environmental effects
  1532. //
  1533.  
  1534. @BaseClass = BeamStartEnd
  1535. [
  1536. LightningStart(target_destination) : "Start Entity"
  1537. LightningEnd(target_destination) : "Ending Entity"
  1538. ]
  1539. @PointClass base(Targetname, BeamStartEnd, RenderFxChoices) iconsprite("sprites/envbeam.spr") size(-16 -16 -16, 16 16 16) = env_beam : "Energy Beam Effect"
  1540. [
  1541. renderamt(integer) : "Brightness (1 - 255)" : 100
  1542. rendercolor(color255) : "Beam Color (R G B)" : "0 0 0"
  1543. //* If you only give the beam one endpoint, then radius will specify how
  1544. //* far away the other endpoint should be (randomly) placed.
  1545. Radius(integer) : "Radius" : 256
  1546. life(string) : "Life (seconds 0 = infinite)" : "0"
  1547. BoltWidth(integer) : "Width of beam (pixels*0.1 0-255)" : 20
  1548. NoiseAmplitude(integer) : "Distortion (0-255)" : 0
  1549. texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr"
  1550. TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
  1551. framerate(integer) : "Frames per 10 seconds" : 0
  1552. framestart(integer) : "Starting Frame" : 0
  1553. StrikeTime(string) : "Strike again time (-1 = never)" : "0"
  1554. //NEW 0.6
  1555. //* If you use a negative number for the damage, it'll now heal the target.
  1556. damage(string) : "Damage / second" : "0"
  1557. //NEW 0.6
  1558. frags(choices) : "Damage type" : 0 =
  1559. [
  1560. 0 : "Energy Beam"
  1561. 1 : "Fracture"
  1562. 2 : "Bullet ('blood loss')"
  1563. 4 : "Lacerations"
  1564. 8 : "Burning"
  1565. 16 : "Freezing"
  1566. 128 : "Crowbar"
  1567. 256 : "Electric shock"
  1568. 512 : "Sonic ('internal bleeding')"
  1569. 16384 : "Drowning"
  1570. 65536 : "Biohazard"
  1571. 131072 : "Poison (duration)"
  1572. 262144 : "Radiation"
  1573. 1048576: "Hazardous chemical"
  1574. ]
  1575. //NEW 0.6
  1576. target(target_destination) : "Fire on trip"
  1577. //NEW 0.6
  1578. netname(target_destination) : "Tripped only by entity"
  1579. spawnflags(flags) =
  1580. [
  1581. //* This is the default unless you specify a name.
  1582. 1 : "Start On" : 0
  1583. 2 : "Toggle" : 0
  1584. 4 : "Random Strike" : 0
  1585. //* Makes the beam form a circle, with a diameter that stretches between the two endpoints.
  1586. //* For some unknown reason, both endpoints must have a model.
  1587. //* NB: because the beam will stretch between the origins of the two entities, you'll
  1588. //* need to give each endpoint an origin brush.
  1589. 8 : "Ring" : 0
  1590. 16: "StartSparks" : 0
  1591. 32: "EndSparks" : 0
  1592. 64: "Decal End" : 0
  1593. //* The beam fades in from nothing, like a tracer bullet.
  1594. 128: "Fade Start" : 0
  1595. 256: "Fade End" : 0
  1596. //NEW 0.4
  1597. //* For making a rope, etc.
  1598. //* NB: this flag will be ignored unless the beam's Life is 0.
  1599. //* This also won't work on a Ring beam.
  1600. 512: "Draw Solid" : 0
  1601. 1024: "Draw Sine" : 0
  1602. ]
  1603. ]
  1604.  
  1605. //NEW 0.7.1
  1606. //* If you specify an "entity to trail", a trail will be attached or removed from the entity you
  1607. //* specify. The trail will turn off automatically if the
  1608. //* entity remains stationary for a few seconds, or alternatively you can turn it on and off by
  1609. //* triggering the env_beamtrail.
  1610. //* If you don't specify an "entity to trail", the env_beamtrail itself will have a trail; in that case
  1611. //* you probably want to tell it what entity it should MoveWith.
  1612. //* Neither version will do anything if the trailed entity isn't moving when you activate the trail.
  1613. //* The trail effect doesn't correspond exactly to with the movement of the entity, so don't expect too
  1614. //* much from it. We're not mapping for UT2003 here.
  1615. @PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_beamtrail : "Beam trail effect"
  1616. [
  1617. target(string) : "Entity to trail (blank = this) [LE]"
  1618. netname(sprite) : "Sprite Name" : "sprites/smoke.spr"
  1619. renderamt(integer) : "Brightness (1 - 255)" : 255
  1620. rendercolor(color255) : "Color (R G B)" : "255 255 255"
  1621. armorvalue(integer) : "Width" : 5
  1622. health(string) : "Fade time (secs)" : "4.0"
  1623. spawnflags(flags) =
  1624. [
  1625. 1: "Start off" : 0
  1626. ]
  1627. ]
  1628.  
  1629. @PointClass base(Targetname, Angles, MoveWith) size(-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_beverage : "Beverage Dispenser"
  1630. [
  1631. target(string) : "Initial position (blank = here) [LP]"
  1632. health(integer) : "Capacity" : 10
  1633. skin(choices) : "Beverage Type" : 0 =
  1634. [
  1635. 0 : "Coca-Cola"
  1636. 1 : "Sprite"
  1637. 2 : "Diet Coke"
  1638. 3 : "Orange"
  1639. 4 : "Surge"
  1640. 5 : "Moxie"
  1641. 6 : "Random"
  1642. ]
  1643. ]
  1644.  
  1645. @PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 0) iconsprite("sprites/env.spr") = env_blood : "Blood Effects"
  1646. [
  1647. target(string) : "Initial position (blank = here) [LP]"
  1648. netname(string) : "Direction (blank = angles) [LV]"
  1649. color(choices) : "Blood Color" : 0 =
  1650. [
  1651. 0: "Red (Human)"
  1652. 1: "Yellow (Alien)"
  1653. ]
  1654. amount(string) : "Amount of blood (damage to simulate)" : "100"
  1655. spawnflags(flags) =
  1656. [
  1657. 1: "Random Direction" : 0
  1658. 2: "Blood Stream" : 0
  1659. 4: "On Player" : 0
  1660. 8: "Spray decals" : 0
  1661. ]
  1662. ]
  1663.  
  1664. //* Bubbles cannot drift sideways with this entity; use an @env_model and
  1665. //* "models/pipe_bubbles.mdl" instead.
  1666. @SolidClass base(Targetname, ZHLTLightKeys, MoveWith) iconsprite("sprites/env.spr") = env_bubbles : "Bubble Volume"
  1667. [
  1668. density(integer) : "Bubble density" : 2
  1669. frequency(integer) : "Bubble frequency" : 2
  1670. current(integer) : "Speed of Current" : 0
  1671. spawnflags(Flags) =
  1672. [
  1673. 1 : "Start Off" : 0
  1674. ]
  1675. ]
  1676.  
  1677. //NEW 0.4
  1678. //* Works like an @env_render: you trigger it to change the properties of the target.
  1679. @PointClass iconsprite("sprites/env.spr") = env_customize : "Change entity properties"
  1680. [
  1681. //* Leave this blank to have it take effect as soon as the level starts.
  1682. targetname(target_source) : "Name"
  1683. //* You can also specify a classname here, e.g. monster_barney.
  1684. target(string) : "Target to affect [LE]"
  1685. //* If the target is a classname, the game picks a random monster of that type from within this
  1686. //* search radius. This has no effect if the target is anything except a classname.
  1687. m_flRadius(integer) : "Search Radius" : 512
  1688. //* <b>Player:</b> 0 = gordon's head, 1 = helmeted.
  1689. //* <b>Gina, Gordon, Helmet and Scientist player models:</b> 0 = original design, 1 = updated (better looking) version.
  1690. //* <b>Barneys:</b> 0 = holstered gun, 1 = holding gun, 2 = missing gun.
  1691. //* <b>Scientists:</b> 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick)
  1692. //* <b>Human Grunts:</b> 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar)
  1693. //* Note that this entity can only change their appearance- for example, grunts who had shotguns will still fire shotgun rounds.
  1694. body(choices) : "Set body" : -1 =
  1695. [
  1696. -1 : "No change"
  1697. ]
  1698. //* <b>Scientists and Human Grunts:</b> 1 = black skin.
  1699. //* <b>Bullsquids, Houndeyes, Slaves:</b> 1 = eyes shut.
  1700. //* <b>Ichthyosaur:</b> 0-4 = different eye positions.
  1701. skin(choices) : "Set skin" : -1 =
  1702. [
  1703. -1 : "No change"
  1704. -2 : "Toggle 0/1"
  1705. 0 : "Skin 0 (normal)"
  1706. 1 : "Skin 1"
  1707. 2 : "Skin 2"
  1708. 3 : "Skin 3"
  1709. ]
  1710. //* If the target is a brush entity with a switchable texture (one with both a +0 version and
  1711. //* a +A version), then this switches between the two versions.
  1712. //* If the entity has switchable texlights on it, this will also turn those lights on and off.
  1713. frame(choices) : "Set brush texture" : -1 =
  1714. [
  1715. -1 : "No change"
  1716. -2 : "Toggle 0/1"
  1717. 0 : "Texture 0 (normal)"
  1718. 1 : "Texture 1 (alternate)"
  1719. //* With this set, triggering the env_customize On makes the target
  1720. //* use its normal texture, and Off makes it use the alternate one.
  1721. 4: "On/Off based on usetype"
  1722. //* The opposite of the previous setting; On sets the alternate texture,
  1723. //* Off sets the normal one.
  1724. 5: "Off/On based on usetype"
  1725. ]
  1726. //* Use this setting with caution - a lot of a monster's behaviour is
  1727. //* determined by its model. (You should be safe if the new model is just
  1728. //* a set of different textures.)
  1729. m_iszModel(string) : "Set model (e.g. models/can.mdl)"
  1730. m_bloodColor(choices) : "Blood Color" : 0 =
  1731. [
  1732. 0 : "No change"
  1733. -1 : "Don't Bleed"
  1734. 247 : "Red (Human)"
  1735. 195 : "Yellow (Alien)"
  1736. ]
  1737. //* Change the pitch of the monster's voice (100 = normal pitch, higher numbers = higher pitch)
  1738. m_voicePitch(choices) : "Voice Pitch (100 = normal)" : -1 =
  1739. [
  1740. -1 : "No change"
  1741. ]
  1742. //* >1 = fast
  1743. //* 1 = normal speed
  1744. //* 0..1 = slow
  1745. //* 0 = stop
  1746. //* -1 = no change
  1747. m_fFramerate(string) : "Frame rate (-1 = no change)" : "-1"
  1748. //* Sets:
  1749. //* <b>agrunt.mdl</b>: head position (45..-45)
  1750. //* <b>hgrunt.mdl</b>: head position (70..-70)
  1751. //* <b>barney.mdl, gman.mdl, islave.mdl, scientist.mdl</b>: head position (60..-60)
  1752. //* <b>apache.mdl</b>: gun yaw (90..-90)
  1753. //* <b>barnacle.mdl</b>: tongue length (0..-1024)
  1754. //* <b>garg.mdl</b>: body yaw (60..-60)
  1755. //* <b>osprey.mdl</b>: rotor angle (0..-90)
  1756. //* <b>icky.mdl</b>: tail position (45..-45)
  1757. //* <b>miniturret.mdl, sentry.mdl, turret.mdl</b>: gun yaw (0..360)
  1758. m_fController0(choices) : "Bone controller 0" : 0 =
  1759. [
  1760. 0 : "No change"
  1761. 1024 : "Set to 0"
  1762. ]
  1763. //* Sets:
  1764. //* <b>apache.mdl</b>: gun pitch (45..-10)
  1765. //* <b>(mini)turret.mdl</b>: gun pitch (15..-90)
  1766. //* <b>sentry.mdl</b>: gun pitch (60..-60)
  1767. //* <b>garg.mdl</b>: body pitch (35..-35)
  1768. m_fController1(choices) : "Bone controller 1" : 0 =
  1769. [
  1770. 0 : "No change"
  1771. 1024 : "Set to 0"
  1772. ]
  1773. //* In the standard models, this does nothing. Supplied for the benefit of
  1774. //* user-produced models.
  1775. m_fController2(choices) : "Bone controller 2" : 0 =
  1776. [
  1777. 0 : "No change"
  1778. 1024 : "Set to 0"
  1779. ]
  1780. //* In the standard models, this does nothing. Supplied for the benefit of
  1781. //* user-produced models.
  1782. m_fController3(choices) : "Bone controller 3" : 0 =
  1783. [
  1784. 0 : "No change"
  1785. 1024 : "Set to 0"
  1786. ]
  1787. m_iClass(choices) : "Set behaviour" : 0 =
  1788. [
  1789. 0 : "No change"
  1790. //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids.
  1791. 3 : "Scientist"
  1792. //* Likes players and scientists; dislikes Machines, Human Military, and all aliens.
  1793. 11: "Barney"
  1794. //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military.
  1795. 4 : "Human Military"
  1796. //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them.
  1797. //* Otherwise, they're pretty much like Human Military.
  1798. 1 : "Machine (Human Military)"
  1799. //* Hates players and Human Military. Dislikes Machines, scientists and barneys.
  1800. 5 : "Alien Military"
  1801. //* Dislikes Machines and all humans.
  1802. 7 : "Other Alien"
  1803. //* Dislikes all humans. Scared of Bullsquids.
  1804. 8 : "Headcrab"
  1805. //* Hates Headcrabs. Dislikes humans and other Bullsquids.
  1806. 9 : "Bullsquid"
  1807. //* Dislikes everyone, except other Faction A members.
  1808. 14 : "Faction A"
  1809. //* Dislikes everyone, except other Faction B members.
  1810. 15 : "Faction B"
  1811. //* Dislikes everyone, except other Faction C members.
  1812. 16 : "Faction C"
  1813. ]
  1814. //* Replaces the old "Player Ally" flag.
  1815. m_iPlayerReact(choices) : "Reaction to player" : -1 =
  1816. [
  1817. -1 : "No Change"
  1818. //* That is, normal for the monster's current behaviour.
  1819. 0 : "Normal"
  1820. 1 : "Ignore"
  1821. //* Scientists usually use this behaviour. The monster will
  1822. //* stop being friendly when hurt by the player, regardless of
  1823. //* how. (e.g. even if they stupidly ran into the middle of a firefight.)
  1824. 2 : "Friendly until hurt"
  1825. //* Barneys usually use this behaviour. The monster will
  1826. //* stop being friendly when shot deliberately by the player,
  1827. //* but not when (for instance) caught in grenade explosions, or in the
  1828. //* middle of combat.
  1829. 3 : "Friendly unless provoked"
  1830. 4 : "Enemy"
  1831. // Not yet implemented, but will allow any monster to act like a barney/scientist,
  1832. // following the player on request.
  1833. //5 : "Follower"
  1834. ]
  1835. //* If you want the entity to be partly transparent, use @env_render instead.
  1836. m_iVisible(choices) : "Visibility" : 0 =
  1837. [
  1838. 0: "No change"
  1839. 1: "Visible"
  1840. 2: "Invisible"
  1841. 3: "Toggle"
  1842. //* Trigger the env_customize On for visible, and Off for invisible.
  1843. 4: "On/Off based on usetype"
  1844. //* Trigger the env_customize Off for visible, and On for invisible.
  1845. 5: "Off/On based on usetype"
  1846. ]
  1847. //* Currently, this will cause problems if used to solidify a non-monster,
  1848. //* non-brush entity.
  1849. //* Note that a @func_ladder will still act as a ladder if you make it
  1850. //* non-solid.
  1851. m_iSolid(choices) : "Solidity" : 0 =
  1852. [
  1853. 0: "No change"
  1854. 1: "Solid"
  1855. 2: "Not Solid"
  1856. 3: "Toggle"
  1857. //* Trigger the env_customize On for solid, and Off for non-solid.
  1858. 4: "On/Off based on usetype"
  1859. //* Trigger the env_customize Off for solid, and On for non-solid.
  1860. 5: "Off/On based on usetype"
  1861. ]
  1862. m_iPrisoner(choices) : "Prisoner" : 0 =
  1863. [
  1864. 0: "No change"
  1865. 1: "Yes"
  1866. 2: "No"
  1867. 3: "Toggle"
  1868. //* Trigger the env_customize On for a prisoner, and Off for a non-prisoner.
  1869. 4: "On/Off based on usetype"
  1870. //* Trigger the env_customize Off for a prisoner, and On for a non-prisoner.
  1871. 5: "Off/On based on usetype"
  1872. ]
  1873. m_iMonsterClip(choices) : "MonsterClip flag" : 0 =
  1874. [
  1875. 0: "No change"
  1876. 1: "On"
  1877. 2: "Off"
  1878. 3: "Toggle"
  1879. //* Trigger the env_customize On to use Monsterclip, and Off to not use it.
  1880. 4: "On/Off based on usetype"
  1881. //* Trigger the env_customize Off to use Monsterclip, and On to not use it.
  1882. 5: "Off/On based on usetype"
  1883. ]
  1884. //* Applies to barneys, scientists, "Friendly until hurt" and "Friendly
  1885. //* until provoked" monsters, and overrides these monsters' usual liking
  1886. //* for the player- e.g. as if the player had shot them.
  1887. m_iProvoked(choices) : "Angry At Player" : 0 =
  1888. [
  1889. 0: "No change"
  1890. 1: "Yes"
  1891. 2: "No"
  1892. 3: "Toggle"
  1893. //* Trigger the env_customize On to be angry, and Off to calm down.
  1894. 4: "On/Off based on usetype"
  1895. //* Trigger the env_customize Off to be angry, and On to calm down.
  1896. 5: "Off/On based on usetype"
  1897. ]
  1898. spawnflags(flags) =
  1899. [
  1900. 1: "Affect corpses" : 0
  1901. 2: "Once Only" : 0
  1902. 4: "Debug" : 0
  1903. ]
  1904. ]
  1905.  
  1906. //NEW 0.7.1
  1907. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_decal : "Decal sprayer"
  1908. [
  1909. target(string) : "Position (blank = here) [LP]"
  1910. netname(string) : "Spray direction (blank = angle) [LV]"
  1911. message(string) : "Max distance (blank = none) [LN]"
  1912. impulse(choices) : "Decal group" : 0 =
  1913. [
  1914. 1 : "Gunshot"
  1915. 5 : "Big gunshot"
  1916. 2 : "Blood"
  1917. 3 : "Alien blood"
  1918. 4 : "Glass cracks"
  1919. 6 : "Scorch marks"
  1920. 7 : "Bullsquid splat"
  1921. 0 : "Custom (see below)"
  1922. ]
  1923. noise(sprite) : "Custom decal texture"
  1924. ]
  1925.  
  1926. //NEW 0.7.1
  1927. //* Creates a temporary ball of light when triggered.
  1928. //* Note that this primarily lights the world (i.e. brushes); studio models will
  1929. //* pick up the lighting if they're standing in it, but they'll just be a solid colour.
  1930. //* To just light studio models, see @env_elight.
  1931. @PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_dlight : "Dynamic light effect"
  1932. [
  1933. message(string) : "Position (blank = here) [LP]"
  1934. rendercolor(color255) : "Light Color (R G B)" : "255 255 255"
  1935. renderamt(integer) : "Radius" : 12
  1936. health(string) : "Duration (0 = until triggered)" : "0.0"
  1937. frags(integer) : "Decay (units/sec)" : 0
  1938. spawnflags(Flags) =
  1939. [
  1940. 1 : "Only once" : 0
  1941. 2 : "Start on" : 0
  1942. ]
  1943. ]
  1944.  
  1945. //NEW 0.7.1
  1946. //* Creates a temporary ball of light when triggered. Only lights studio models
  1947. //* (e.g. monsters), but does light them properly. Quite pretty.
  1948. //* See @env_dlight if you want to light the walls, etc.
  1949. @PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_elight : "Entity light effect"
  1950. [
  1951. netname(string) : "At position (blank = here) [LP]"
  1952. target(string) : "Entity to follow (blank = this) [LE]"
  1953. impulse(choices) : "Attachment point on that entity" : 0 =
  1954. [
  1955. 0 : "None"
  1956. 1 : "1"
  1957. 2 : "2"
  1958. 3 : "3"
  1959. 4 : "4"
  1960. ]
  1961. renderamt(integer) : "Radius" : 12
  1962. rendercolor(color255) : "Color (R G B)" : "255 255 255"
  1963. health(string) : "Duration (0 = until triggered)" : "0.0"
  1964. frags(integer) : "Decay (units/sec)" : 0
  1965. spawnflags(Flags) =
  1966. [
  1967. 1 : "Only once" : 0
  1968. 2 : "Start on" : 0
  1969. ]
  1970. ]
  1971.  
  1972. //NEW 0.4
  1973. //* Essentially, this produces a shifting group of parallel beams. I've called it
  1974. //* env_rain because that's the most-requested use for it.
  1975. //* For a sunbeam effect, try Drip Speed = 0, Drip Width = 30, Drip Brightness = 25,
  1976. //* Drip Color = 255 255 255, Time between updates = 0, Drip Sprite = sprites/laserbeam.spr.
  1977. //* For snow, try Drip Speed = 20, Drip Width = 20, Drip Color = 255 255 255,
  1978. //* Drip Sprite = sprites/rain.spr.
  1979. @SolidClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_rain : "Rain Effect"
  1980. [
  1981. //* Set this to (for example) "70 0 0" to make slanted rain.
  1982. angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
  1983. //* Negative numbers will make the rain fall upwards.
  1984. //* This is an average; each drip will move at between 75%-125% of this speed.
  1985. m_dripSpeed(integer) : "Drip Speed" : 40
  1986. m_dripSize(integer) : "Drip Width" : 5
  1987. m_brightness(integer) : "Drip Brightness (1 - 255)" : 128
  1988. rendercolor(color255) : "Drip Color (R G B)" : "64 128 255"
  1989. m_iNoise(integer) : "Beam noise (distortion)" : 0
  1990. m_burstSize(integer) : "Number of drips per update" : 2
  1991. //* If 0, no updates; all the beams will appear as soon as it's activated.
  1992. m_flUpdateTime(string) : "Time between updates" : "0.5"
  1993. m_flMaxUpdateTime(string) : "Max time between updates (random)"
  1994. target(string) : "Fire on updating"
  1995. m_fLifeTime(string) : "Beam Lifetime (0 = three updates)"
  1996. texture(sprite) : "Drip Sprite" : "sprites/rain.spr"
  1997. m_axis(choices) : "Beam Direction" : 0 =
  1998. [
  1999. 0 : "Z axis (vertical)"
  2000. 1 : "X axis"
  2001. 2 : "Y axis"
  2002. ]
  2003. m_iExtent(choices) : "Extent type" : 1 =
  2004. [
  2005. 0 : "Fill brush"
  2006. 1 : "Obstructable"
  2007. 3 : "Reverse obstructable"
  2008. 2 : "Arcing"
  2009. 4 : "Reverse arcing"
  2010. 5 : "Arcing Through"
  2011. ]
  2012. spawnflags(Flags) =
  2013. [
  2014. 1 : "Start Off" : 0
  2015. ]
  2016. ]
  2017.  
  2018. @SolidClass base(Targetname, MoveWith) = env_mirror : "Mirror"
  2019. [
  2020. radius(integer) : "Radius" : 330
  2021. frags(string) : "Frags ([SF]blank for auto)"
  2022. spawnflag(flags) =
  2023. [
  2024. 1 : "Draw Player" : 0
  2025. ]
  2026. ]
  2027.  
  2028. @PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_explosion : "Explosion"
  2029. [
  2030. target(string) : "Initial position (blank = here) [LP]"
  2031. iMagnitude(integer) : "Magnitude/Radius" : 100
  2032. spawnflags(flags) =
  2033. [
  2034. 1 : "No Damage" : 0
  2035. 2 : "Repeatable" : 0
  2036. 4 : "No Fireball" : 0
  2037. 8 : "No Smoke" : 0
  2038. 16: "No Decal" : 0
  2039. 32: "No Sparks" : 0
  2040. ]
  2041. ]
  2042.  
  2043. @PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fade : "Screen Fade"
  2044. [
  2045. spawnflags(flags) =
  2046. [
  2047. 1: "Fade From" : 0
  2048. 2: "Modulate" : 0
  2049. //* If activated by a player, that player's screen will fade,
  2050. //* but other players will be unaffected.
  2051. 4: "Activator Only" : 0
  2052. //NEW 0.7.1
  2053. //* Ignore the hold time; just fade out permanently.
  2054. //* (To fade back in, you'll need to use another env_fade.)
  2055. 8: "Permanent" : 0
  2056. 16: "Fire at Camera" : 0
  2057. ]
  2058. duration(string) : "Duration (seconds)" : "2"
  2059. holdtime(string) : "Hold Fade (seconds)" : "0"
  2060. renderamt(integer) : "Fade Alpha" : 255
  2061. rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
  2062. ]
  2063.  
  2064. //NEW 0.6
  2065. @PointClass base(Targetname) iconsprite("sprites/env.spr") = env_fog : "Fog effect, DMC stylee"
  2066. [
  2067. fadein(integer) : "Fade in time" : 0
  2068. holdtime(string) : "Hold time (0 = permanent)" : "0"
  2069. fadeout(integer) : "Fade out time" : 0
  2070. startdist(integer) : "Fog start position" : 0
  2071. enddist(integer) : "Fog end position" : 1000
  2072. rendercolor(color255) : "Fog Color (R G B)" : "255 255 255"
  2073. spawnflags(flags) =
  2074. [
  2075. 1 : "Start active" : 0
  2076. ]
  2077. ]
  2078.  
  2079. //NEW 0.6
  2080. //* To set the player's footstep sounds, trigger this entity 'on'. To revert to normal,
  2081. //* trigger it 'off' in the same way.
  2082. //* Alternatively, you can just toggle it, to alternately set and unset the sounds.
  2083. //* If one of the sound fields is left blank, it will have no effect... so if you
  2084. //* actually want it to become silent, choose common/null.wav.
  2085. //* This entity is probably most useful as the "fire on/off" target of a trigger_inout,
  2086. //* to specify the area over which the footsteps are to be changed.
  2087. @PointClass base(Targetname, Master) iconsprite("sprites/env.spr") = env_footsteps : "Change Movement Sounds"
  2088. [
  2089. frags(choices) : "Preset Footstep type" : 0 =
  2090. [
  2091. 0 : "Custom (see below)"
  2092. -1 : "Concrete"
  2093. 1 : "Metal"
  2094. 2 : "Dirt"
  2095. 3 : "Vent"
  2096. 4 : "Grate"
  2097. 5 : "Tile"
  2098. 6 : "Paddling"
  2099. 7 : "Wading"
  2100. 8 : "Ladder"
  2101. ]
  2102. //* Here, you can either specify a single sound file as normal, or else specify
  2103. //* a group of 4 sounds by inserting '?' instead of the number 1-4.
  2104. //* (for example, to play a random sound in the range player/pl_step1.wav to
  2105. //* player/pl_step4.wav, you would write 'player/pl_step?.wav'.)
  2106. //* (This works on the other sound fields, too.)
  2107. noise(sound) : "Custom Footstep sound"
  2108. noise1(sound) : "Ladder sound"
  2109. noise2(sound) : "Wading sound"
  2110. noise3(sound) : "Paddling sound"
  2111. spawnflags(flags) =
  2112. [
  2113. 1: "Set only" : 0
  2114. 2: "Once only" : 0
  2115. ]
  2116. ]
  2117.  
  2118. @PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_funnel : "Large Portal Funnel"
  2119. [
  2120. //NEW 0.7.1
  2121. message(string) : "Position (blank = here) [LP]"
  2122. //NEW 0.7.1
  2123. //* Default: sprites/flare6.spr
  2124. netname(sprite) : "Particle sprite"
  2125. spawnflags(flags) =
  2126. [
  2127. 1: "Reverse" : 0
  2128. //NEW 0.5
  2129. 2: "Repeatable" : 0
  2130. ]
  2131. ]
  2132.  
  2133. //* See also @env_state
  2134. @PointClass base(Targetname) color(255 255 128) iconsprite("sprites/env.spr") = env_global : "Global State"
  2135. [
  2136. globalstate(string) : "Global State to Set"
  2137. triggermode(choices) : "Trigger to send" : 3 =
  2138. [
  2139. 0 : "Off"
  2140. 1 : "On"
  2141. 2 : "Dead"
  2142. 3 : "Toggle"
  2143. ]
  2144. initialstate(choices) : "Initial State" : 0 =
  2145. [
  2146. 0 : "Off"
  2147. 1 : "On"
  2148. 2 : "Dead"
  2149. ]
  2150. spawnflags(flags) =
  2151. [
  2152. 1 : "Set Initial State" : 0
  2153. ]
  2154. ]
  2155.  
  2156. @PointClass sprite() base(Targetname, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) color(30 100 0) iconsprite("sprites/env.spr") = env_glow : "Light Glow/Haze"
  2157. [
  2158. model(sprite) : "Sprite Name" : "sprites/glow01.spr"
  2159. scale(integer) : "Scale" : 1
  2160. ]
  2161.  
  2162. @PointClass base(Targetname, RenderFxChoices, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_laser : "Laser Beam Effect"
  2163. [
  2164. //NEW 1.0
  2165. LaserStart(target_destination) : "Start At (blank = here) [LP]"
  2166. LaserTarget(target_destination) : "Fire Towards"
  2167. m_iTowardsMode(choices) : "Meaning of Fire Towards" : 0 =
  2168. [
  2169. 0 : "Position [LP]"
  2170. 1 : "Direction [LV]"
  2171. ]
  2172. renderamt(integer) : "Brightness (1 - 255)" : 255
  2173. rendercolor(color255) : "Beam Color (R G B)" : "255 255 255"
  2174. width(integer) : "Width of beam (pixels*0.1 0-255)" : 20
  2175. NoiseAmplitude(integer) : "Amount of noise (0-255)" : 0
  2176. texture(sprite) : "Sprite Name" : "sprites/laserbeam.spr"
  2177. //NEW 1.0
  2178. //* If you want, you can name an env_sprite here, and the laser will use that as its start sprite.
  2179. StartSprite(sprite) : "Start Sprite" : ""
  2180. //* If you want, you can name an env_sprite here, and the laser will use that as its end sprite.
  2181. EndSprite(sprite) : "End Sprite" : ""
  2182. TextureScroll(integer) : "Texture Scroll Rate (0-100)" : 35
  2183. framestart(integer) : "Starting Frame" : 0
  2184. //NEW 0.6
  2185. //* If you specify a negative number here, the target will be healed instead.
  2186. damage(string) : "Damage / second" : "100"
  2187. //NEW 0.6
  2188. frags(choices) : "Damage type" : 0 =
  2189. [
  2190. 0 : "Energy Beam"
  2191. 1 : "Fracture"
  2192. 2 : "Bullet ('blood loss')"
  2193. 4 : "Lacerations"
  2194. 8 : "Burning"
  2195. 16 : "Freezing"
  2196. 512 : "Sonic ('internal bleeding')"
  2197. 16384 : "Drowning"
  2198. 65536 : "Biohazard"
  2199. 131072 : "Poison (continuous)"
  2200. 262144 : "Radiation"
  2201. 1048576: "Hazardous chemical"
  2202. ]
  2203. //NEW 0.6
  2204. target(target_destination) : "Fire when tripped"
  2205. //NEW 0.6
  2206. netname(target_destination) : "Tripped only by entity"
  2207. //NEW 0.6
  2208. m_iProjection(choices) : "Projection mode" : 0 =
  2209. [
  2210. 0: "Normal"
  2211. //* With this enabled, the laser's Target position only specifies
  2212. //* the direction. The beam can actually extend beyond it.
  2213. 1: "Extend past endpoint"
  2214. ]
  2215. //NEW 0.6
  2216. m_iStoppedBy(choices) : "Stopped by" : 0 =
  2217. [
  2218. 0: "Glass & Monsters"
  2219. 1: "Monsters only"
  2220. //* Monster hulls are a little bigger than monster hitboxes,
  2221. //* so with this option the beam will be more likely to hit them.
  2222. 2: "Glass & Monster hulls"
  2223. 3: "Monster hulls only"
  2224. 4: "Glass only"
  2225. 5: "Neither"
  2226. ]
  2227. spawnflags(flags) =
  2228. [
  2229. 1 : "Start On" : 0
  2230. 16: "StartSparks" : 0
  2231. 32: "EndSparks" : 0
  2232. 64: "Decal End" : 0
  2233. //* The beam fades in from nothing, like a tracer bullet.
  2234. 128: "Fade Start" : 0
  2235. 256: "Fade End" : 0
  2236. //* For making a rope, etc.
  2237. 512: "Draw Solid" : 0
  2238. //NEW 0.6
  2239. 1024: "Interpolate" : 0
  2240. ]
  2241. ]
  2242.  
  2243. @PointClass base(Targetname, Target) iconsprite("sprites/env.spr") = env_message : "HUD Text Message"
  2244. [
  2245. message(string) : "Message Name"
  2246. spawnflags(flags) =
  2247. [
  2248. 1: "Play Once" : 0
  2249. 2: "All Clients" : 0
  2250. ]
  2251. messagesound(sound) : "Sound Effect"
  2252. messagevolume(string) : "Volume 0-10" : "10"
  2253. messageattenuation(choices) : "Sound Radius" : 0 =
  2254. [
  2255. 0 : "Small Radius"
  2256. 1 : "Medium Radius"
  2257. 2 : "Large Radius"
  2258. 3 : "Play Everywhere"
  2259. ]
  2260. ]
  2261.  
  2262. //NEW 0.5
  2263. @PointClass base(Targetname, Angles, MoveWith, RenderFields) studio() = env_model : "New alternative to cyclers"
  2264. [
  2265. model(studio) : "Model name"
  2266. skin(integer) : "Skin" : 0
  2267. body(integer) : "Body" : 0
  2268. //NEW 1.0
  2269. scale(string) : "Scale (1.0 = normal size)"
  2270.  
  2271. m_iszSequence_On(string) : "Sequence when on"
  2272. m_iAction_On(choices) : "Behaviour when on" : 0 =
  2273. [
  2274. 0: "Freeze when sequence ends"
  2275. 1: "Loop"
  2276. 2: "Change state when sequence ends"
  2277. ]
  2278.  
  2279. m_iszSequence_Off(string) : "Sequence when off"
  2280. m_iAction_Off(choices) : "Behaviour when off" : 0 =
  2281. [
  2282. 0: "Freeze when sequence ends"
  2283. 1: "Loop"
  2284. 2: "Change state when sequence ends"
  2285. ]
  2286.  
  2287. spawnflags(flags) =
  2288. [
  2289. 1: "Initially Off" : 0
  2290. 2: "Drop to Floor" : 0
  2291. 4: "Solid" : 0
  2292. ]
  2293. ]
  2294.  
  2295. //NEW 0.7.1
  2296. //* Creates various particle effects when triggered.
  2297. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_quakefx : "Quake 1 particle effects"
  2298. [
  2299. message(string) : "Position (blank = here) [LP]"
  2300. impulse(choices) : "Effect type" : 4 =
  2301. [
  2302. //* A burst of twinkly orangey particles, with explosion sound effect.
  2303. //* Quite pretty.
  2304. //* (As seen in Quake when the blob monsters are killed.)
  2305. 4 : "Tar Explosion"
  2306. //* A strange field of red particles.
  2307. 10 : "Lava Splash"
  2308. //* A smallish mass of white particles.
  2309. //* (As seen in Quake when a player spawns or teleports.)
  2310. 11 : "Teleport Splash"
  2311. //* A burst of yellowy-white particles, with explosion sound effect.
  2312. //* (As seen in Quake when a grenade or rocket goes off.)
  2313. 12 : "Explosion"
  2314. //* An expanding cube of particles. Quite pretty.
  2315. 122 : "Particle Burst"
  2316. ]
  2317. //* Used only by Particle Burst. This is an index into the
  2318. //* standard engine palette; e.g. 247 is human blood, 195 is alien blood.
  2319. frags(integer) : "Particle Burst: color number" : 70
  2320. armortype(integer) : "Particle Burst: radius" : 300
  2321. health(string) : "Particle Burst: duration" : "1.0"
  2322. spawnflags(flags) =
  2323. [
  2324. 1: "Repeatable" : 0
  2325. ]
  2326. ]
  2327.  
  2328. //NEW 1.2
  2329. @PointClass sprite() base(Targetname, Angles, MoveWith, RenderFields) size (-4 -4 -4, 4 4 4) iconsprite("sprites/env.spr") = env_particle : "Particle Effect"
  2330. [
  2331. message(string) : "Particle file" : "aurora/smoke.aur"
  2332. netname(string) : "Child Particles name"
  2333. spawnflags(flags) =
  2334. [
  2335. 1: "Start On" : 0
  2336. 2: "Spawn Use" : 0
  2337. ]
  2338. ]
  2339.  
  2340.  
  2341. @PointClass base(Targetname, RenderFields) size(-16 -16 -16, 16 16 16) color(100 100 0) = env_render : "Render Controls"
  2342. [
  2343. //NEW 0.7.1
  2344. //* The Renderamt number will be multiplied by this factor.
  2345. message(string) : "FX Amount factor [LN]"
  2346. //NEW 0.7.1
  2347. //* Set the scale of the affected model or sprite.
  2348. //* (If Fade Time is set, the scale will change slowly over time.)
  2349. m_fScale(string) : "Scale (0 = no change) [LN]"
  2350. target(target_destination) : "Target to affect [LE]"
  2351. //NEW 0.5
  2352. //* If you set this, the affected entity (or entities) will fade
  2353. //* progressively to the new settings you specify. Only Renderamt
  2354. //* and rendercolor will fade; the other values will change
  2355. //* instantly, as usual.
  2356. frags(string) : "Fade Time (secs)" : "0"
  2357. //NEW 0.5
  2358. //* The frequency at which the fade gets updated. If left blank (or
  2359. //* set to 0), it updates as fast as possible.
  2360. //* You probably won't need to set this unless you actually want
  2361. //* it to look coarse.
  2362. //* If a <b>lot</b> of entities are fading at the same time, and
  2363. //* you find the game is slowing down, you may want to try setting
  2364. //* this to 0.2 or so.
  2365. armorvalue(string) : "Fade Coarseness (secs)"
  2366. //NEW 0.5
  2367. netname(string) : "Trigger after fading"
  2368. spawnflags(flags) =
  2369. [
  2370. 1: "No Renderfx" : 0
  2371. 2: "No Renderamt" : 0
  2372. 4: "No Rendermode" : 0
  2373. 8: "No Rendercolor" : 0
  2374. //NEW 0.7.1
  2375. //* Useful if you want something to fade out and then be removed.
  2376. 32: "Remove target" : 0
  2377. //NEW 0.7.1
  2378. //* The env_render will killtarget itself after use.
  2379. 64: "Remove self" : 0
  2380. ]
  2381. ]
  2382.  
  2383. @PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shake : "Screen Shake"
  2384. [
  2385. spawnflags(flags) =
  2386. [
  2387. 1: "GlobalShake" : 0
  2388. ]
  2389. amplitude(string) : "Amplitude 0-16" : "4"
  2390. radius(string) : "Effect radius" : "500"
  2391. duration(string) : "Duration (seconds)" : "1"
  2392. frequency(string) : "0.1 = jerk, 255.0 = rumble" : "2.5"
  2393. ]
  2394.  
  2395. //NEW 0.5
  2396. //* Creates a shockwave effect (like @monster_houndeye) when triggered.
  2397. @PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_shockwave : "Shockwave Effect"
  2398. [
  2399. spawnflags(flags) =
  2400. [
  2401. //* Normally, the env_shockwave entity marks the bottom of the shockwave.
  2402. //* Tick here to mark its centre instead.
  2403. 1: "Centered" : 0
  2404. 2: "Repeatable" : 0
  2405. ]
  2406. m_iszPosition(string) : "Position (blank = here) [LP]"
  2407. netname(string) : "Spritename" : "sprites/shockwave.spr"
  2408. rendercolor(string): "Color": "188 220 255"
  2409. renderamt(integer) : "Opacity (0-255)": 255
  2410. m_iTime(integer) : "Duration" : 2
  2411. m_iRadius(integer) : "Final radius" : 1000
  2412. m_iHeight(integer) : "Wave height" : 32
  2413. m_iScrollRate(integer) : "Scroll rate" : 0
  2414. m_iNoise(integer) : "Distortion ('noise')" : 0
  2415. m_iFrameRate(integer) : "Frame Rate" : 0
  2416. m_iStartFrame(integer) : "Starting Frame" : 0
  2417. ]
  2418.  
  2419. @PointClass base(gibshooterbase, RenderFields) size(-16 -16 -16, 16 16 16) studio()= env_shooter : "Model Shooter"
  2420. [
  2421. shootmodel(studio) : "Model or Sprite name" : "sprites/ballsmoke.spr"
  2422. noise(string) : "Scale [LN]" : ""
  2423. skin(integer) : "Skin" : 0
  2424. body(integer) : "Body (models only)"
  2425. //NEW 0.7.1
  2426. frame(integer) : "Start frame" : 0
  2427. //NEW 0.7.1
  2428. framerate(string) : "Framerate" : "10.0"
  2429. //NEW 0.7.1
  2430. m_iPhysics(choices) : "Behaviour of children" : 0 =
  2431. [
  2432. 0: "Bouncy gib (normal)"
  2433. //* When it hits a wall, it sticks.
  2434. 1: "Sticky gib"
  2435. //* Not affected by walls or gravity
  2436. 2: "Noclip"
  2437. //* Stopped by walls, ignore gravity
  2438. 3: "Fly (ignore gravity)"
  2439. //* Bounce off walls, ignore gravity
  2440. 4: "Fly & bounce"
  2441. //* Blocked by walls, affected by gravity
  2442. 5: "Arc (obey gravity)"
  2443. //* Bounce off walls, affected by gravity
  2444. 6: "Arc & bounce"
  2445. ]
  2446. //NEW 0.7.1
  2447. //* Used by the "bouncy gib" and "sticky gib" behaviours.
  2448. m_iBloodColor(choices) : "Blood color" : 0 =
  2449. [
  2450. 0 : "Don't bleed"
  2451. 247 : "Red (human)"
  2452. 195 : "Yellow (alien)"
  2453. ]
  2454. shootsounds(choices) :"Material Sound" : -1 =
  2455. [
  2456. -1: "None"
  2457. //* debris/glass1-4.wav
  2458. 0: "Glass"
  2459. //* debris/wood1-4.wav
  2460. 1: "Wood"
  2461. //* debris/metal1-6.wav
  2462. 2: "Metal"
  2463. //* debris/flesh1-7.wav
  2464. 3: "Flesh"
  2465. //* debris/concrete1-3.wav
  2466. 4: "Concrete"
  2467. ]
  2468. //NEW 0.7.1
  2469. m_fFriction(string) : "Bounce height" : "0.55"
  2470. //NEW 0.7.1
  2471. //* If you need access to both the entities involved in a collision, try targetting
  2472. //* a locus_alias with this field. Then, target the effect you actually want with the
  2473. //* "locus = wall" field, and you'll be able to refer to the shot via the alias.
  2474. //* NB: This field does not work with the "gib" behaviours - use "noclip" or below.
  2475. m_iszTouch(string) : "Fire on collision (locus = shot)"
  2476. //NEW 0.7.1
  2477. //* This won't be fired when the shot hits a wall that's not tied to an entity.
  2478. //* (But a func_wall works fine.)
  2479. //* NB: This field does not work with the "gib" behaviours - use "noclip" or below.
  2480. m_iszTouchOther(string) : "Fire on collision (locus = wall)"
  2481. //NEW 0.7.1
  2482. m_vecSize(string) : "Shot size (X Y Z)" : "0 0 0"
  2483. ]
  2484.  
  2485. //NEW 1.1
  2486. @PointClass base(Targetname) iconsprite("sprites/env.spr") = env_sky : "Unreal-Tournament style sky view"
  2487. [
  2488. ]
  2489.  
  2490. @PointClass base(Master, MoveWith) iconsprite("sprites/speaker.spr") = env_sound : "DSP Sound"
  2491. [
  2492. //NEW 0.5
  2493. //* If set, the env_sound won't use its Radius- it will simply take effect when triggered.
  2494. targetname(target_source) : "Name"
  2495. target(target_destination) : "Fire when activated"
  2496. radius(integer) : "Radius" : 128
  2497. roomtype(choices) : "Room Type" : 0 =
  2498. [
  2499. 0 : "(Disable all filters)"
  2500. 1 : "Generic (no filters)"
  2501.  
  2502. 2 : "Metal Small"
  2503. 3 : "Metal Medium"
  2504. 4 : "Metal Large"
  2505.  
  2506. 5 : "Tunnel Small"
  2507. 6 : "Tunnel Medium"
  2508. 7 : "Tunnel Large"
  2509.  
  2510. 8 : "Chamber Small"
  2511. 9 : "Chamber Medium"
  2512. 10: "Chamber Large"
  2513.  
  2514. 11: "Bright Small"
  2515. 12: "Bright Medium"
  2516. 13: "Bright Large"
  2517.  
  2518. 14: "Water 1"
  2519. 15: "Water 2"
  2520. 16: "Water 3"
  2521.  
  2522. 17: "Concrete Small"
  2523. 18: "Concrete Medium"
  2524. 19: "Concrete Large"
  2525.  
  2526. 20: "Big 1"
  2527. 21: "Big 2"
  2528. 22: "Big 3"
  2529.  
  2530. 23: "Cavern Small"
  2531. 24: "Cavern Medium"
  2532. 25: "Cavern Large"
  2533.  
  2534. 26: "Weirdo 1"
  2535. 27: "Weirdo 2"
  2536. 28: "Weirdo 3"
  2537. ]
  2538. ]
  2539.  
  2540. @PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) iconsprite("sprites/env.spr") = env_spark : "Spark"
  2541. [
  2542. target(string) : "Initial position (blank = here) [LP]"
  2543. MaxDelay(string) : "Max Time between sparks" : "0"
  2544. spawnflags(flags) =
  2545. [
  2546. 16: "Cyclic" : 0
  2547. 32: "Toggle" : 0
  2548. 64: "Start ON" : 0
  2549. ]
  2550. ]
  2551.  
  2552. @PointClass sprite() base(Targetname, Angles, MoveWith, RenderFieldsMax) size(-4 -4 -4, 4 4 4) = env_sprite : "Sprite Effect"
  2553. [
  2554. framerate(string) : "Framerate" : "10.0"
  2555. model(sprite) : "Sprite Name" : "sprites/glow01.spr"
  2556. scale(string) : "Scale" : ""
  2557. message(string) : "Attached to entity..."
  2558. frags(choices) : "...at attachment point" : 0 =
  2559. [
  2560. 0 : "0"
  2561. 1 : "1"
  2562. 2 : "2"
  2563. 3 : "3"
  2564. ]
  2565. spawnflags(flags) =
  2566. [
  2567. 1: "Start on" : 0
  2568. 2: "Play Once" : 0
  2569. ]
  2570. ]
  2571.  
  2572. //NEW 0.3
  2573. //* Simply keeps track of a state. Useful as a master or a conditional "branch".
  2574. @PointClass base(Targetname, Master) color(128 128 255) iconsprite("sprites/env.spr") = env_state : "Local State"
  2575. [
  2576. target(target_destination) : "Target (on & off)"
  2577. noise1(target_destination) : "Fire when turned on"
  2578. noise2(target_destination) : "Fire when turned off"
  2579. //* If the env_state gets turned off before it finishes turning on,
  2580. //* the "fire on turning on" target will never get triggered. This is very
  2581. //* useful for setting up "if you stay in this area for 5 seconds" type triggers.
  2582. turnontime(string) : "Time taken to turn on" : "0"
  2583. turnofftime(string) : "Time taken to turn off" : "0"
  2584. spawnflags(flags) =
  2585. [
  2586. 1 : "Start On" : 0
  2587. //* If you're trying to work out what's actually happening in your level,
  2588. //* try ticking here and the env_state will tell you when it triggers, etc.
  2589. 2 : "Debug Mode" : 0
  2590. ]
  2591. ]
  2592.  
  2593. //NEW 0.4
  2594. @PointClass base(Targetname, MoveWith) iconsprite("sprites/env.spr") = env_warpball : "Teleport-in effect"
  2595. [
  2596. target(string) : "Initial position (blank = here) [LP]"
  2597. health(string) : "Max lightning-arc length" : "90"
  2598. frags(integer) : "Number of lightning bolts" : 12
  2599. ]
  2600.  
  2601. @SolidClass base(Breakable, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight) = func_breakable : "Breakable Object"
  2602. [
  2603. _minlight(string) : "Minimum light level"
  2604. ]
  2605.  
  2606. @SolidClass base(Targetname, Target, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, SwitchTexLight, Global, LockSounds) = func_button : "Button"
  2607. [
  2608. speed(integer) : "Speed" : 25
  2609. health(integer) : "Health (shootable if > 0)"
  2610. lip(integer) : "Lip" : 0
  2611. //* The number against each sound (except Lightswitch) corresponds to the wav file
  2612. //* played. e.g. Buzz (10) plays "buttons/button10.wav".
  2613. sounds(choices) : "Sounds" : 0 =
  2614. [
  2615. 0: "None"
  2616. 1: "Big zap & Warmup (1)"
  2617. 2: "Access Denied (2)"
  2618. 3: "Access Granted (3)"
  2619. 4: "Quick Combolock (4)"
  2620. 5: "Power Deadbolt 1 (5)"
  2621. 6: "Power Deadbolt 2 (6)"
  2622. 7: "Plunger (7)"
  2623. 8: "Small zap (8)"
  2624. 9: "Keycard Sound (9)"
  2625. 10: "Buzz (10)"
  2626. 11: "Buzz Off (11)"
  2627. //* buttons/lightswitch2.wav
  2628. 14: "Lightswitch"
  2629. ]
  2630. wait(choices) : "Delay before Reset" : 0 =
  2631. [
  2632. -1 : "Stays pressed (-1)"
  2633. ]
  2634. delay(string) : "Delay before trigger" : "0"
  2635. spawnflags(flags) =
  2636. [
  2637. 1: "Don't move" : 0
  2638. //NEW 0.7.1
  2639. //* Normally, the player can use buttons through walls etc. Tick here to
  2640. //* prevent that.
  2641. //* (With this set, it's also impossible to use the button unless it's in
  2642. //* the centre of the player's crosshairs. So at last, control panels can
  2643. //* have their buttons close together!)
  2644. //* Don't combine this with Not Solid - the button will become unusable.
  2645. 16: "Direct use only": 0
  2646. 32: "Toggle" : 0
  2647. 64: "Sparks" : 0
  2648. 128: "Not Solid" : 0
  2649. 256:"Touch Activates": 0
  2650. //NEW 0.4
  2651. //* Normally, a button can be activated with the Use key. Tick here to disable that behaviour.
  2652. //* If "Touch activates" is also selected, this flag will instead <u>enable</u> the use key.
  2653. 512:"Can't Use" : 0
  2654. ]
  2655. _minlight(string) : "Minimum light level"
  2656. ]
  2657.  
  2658. @SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_conveyor : "Conveyor Belt"
  2659. [
  2660. spawnflags(flags) =
  2661. [
  2662. 1 : "No Push" : 0
  2663. 2 : "Not Solid" : 0
  2664. ]
  2665. speed(string) : "Conveyor Speed" : "100"
  2666. _minlight(string) : "Minimum light level"
  2667. ]
  2668.  
  2669. @SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door : "Basic door"
  2670. [
  2671. //NEW 0.7.1
  2672. //* Normally, the player can open doors when he can't actually see them
  2673. //* (e.g. from the other side of a wall). Select "yes" here to prevent that.
  2674. //* Don't combine this with Passable - the door will become unusable.
  2675. directuse(choices) : "Direct use only" : 0 =
  2676. [
  2677. 0 : "No"
  2678. 1 : "Yes"
  2679. ]
  2680.  
  2681. acceleration(integer) : "Acceleration '0' for infinite" : 0
  2682. deceleration(integer) : "Deceleration '0' for infinite" : 0
  2683. ]
  2684.  
  2685. @SolidClass base(Targetname, Angles, MoveWith, Master, Door, LockSounds, RenderFields, ZHLTLightKeys, Global) = func_door_rotating : "Rotating door"
  2686. [
  2687. //NEW 0.7.1
  2688. //* Normally, the player can open doors when he can't actually see them
  2689. //* (e.g. from the other side of a wall). Select "yes" here to prevent that.
  2690. //* Don't combine this with Passable - the door will become unusable.
  2691. directuse(choices) : "Direct use only" : 0 =
  2692. [
  2693. 0 : "No"
  2694. 1 : "Yes"
  2695. ]
  2696. spawnflags(flags) =
  2697. [
  2698. 2 : "Reverse Dir" : 0
  2699. 16: "One-way" : 0
  2700. 64: "X Axis" : 0
  2701. 128: "Y Axis" : 0
  2702. ]
  2703. distance(integer) : "Distance (deg)" : 90
  2704. //NEW 0.5
  2705. //* See the notes about this field in @func_rotating.
  2706. axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0"
  2707. ]
  2708.  
  2709. @SolidClass base(Appearflags, MoveWith, RenderFields, ZHLTLightKeys) = func_friction : "Surface with a change in friction"
  2710. [
  2711. //* 0% = No friction, 100% = Normal Friction
  2712. modifier(integer) : "Percentage of standard (0 - 100)" : 15
  2713. ]
  2714.  
  2715. @SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_guntarget : "Moving platform"
  2716. [
  2717. speed(integer) : "Speed (units per second)" : 100
  2718. target(target_source) : "First stop target"
  2719. message(target_source) : "Fire when damaged"
  2720. health(integer) : "Damage to Take" : 0
  2721. _minlight(string) : "Minimum light level"
  2722. ]
  2723.  
  2724. @SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_healthcharger: "Wall health recharger"
  2725. [
  2726. _minlight(string) : "Minimum light level"
  2727. ]
  2728.  
  2729. @SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_illusionary : "Fake Wall/Light"
  2730. [
  2731. skin(choices) : "Contents" : -1 =
  2732. [
  2733. -1: "Empty"
  2734. -7: "Volumetric Light"
  2735. -17:"Zero-G"
  2736. -18:"Hover-Field"
  2737. -19:"Fog effect"
  2738. -20:"Special 1 (Particles)"
  2739. -21:"Special 2 (Particles)"
  2740. -22:"Special 3 (Particles)"
  2741.  
  2742.  
  2743. ]
  2744. _minlight(string) : "Minimum light level"
  2745. ]
  2746.  
  2747. //* Creates an invisible, climbable field.
  2748. //* To show the actual ladder image, either add a @func_illusionary covered with a {ladder texture, or tick the Visible flag.
  2749. @SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys) = func_ladder : "Ladder"
  2750. [
  2751. spawnflags(flags) =
  2752. [
  2753. //NEW 0.5
  2754. 1 : "Visible" : 0
  2755. ]
  2756. ]
  2757.  
  2758. //* Also prevents hlcsg.exe from making a path between two @info_node entities on opposite sides of the brush.
  2759. @SolidClass base(Targetname, MoveWith) = func_monsterclip : "Monster clip brush" []
  2760.  
  2761. @SolidClass base(Targetname, MoveWith) = func_mortar_field : "Mortar Field"
  2762. [
  2763. m_flSpread(integer) : "Spread Radius" : 64
  2764. m_iCount(integer) : "Repeat Count" : 1
  2765. m_fControl(choices) : "Targeting" : 0 =
  2766. [
  2767. 0 : "Random"
  2768. 1 : "Activator"
  2769. 2 : "Table"
  2770. ]
  2771. m_iszXController(target_destination) : "X Controller"
  2772. m_iszYController(target_destination) : "Y Controller"
  2773. ]
  2774.  
  2775. //* Only partially implemented, some keys don't work properly.
  2776. @SolidClass base(Targetname, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Appearflags) = func_pendulum : "Swings back and forth"
  2777. [
  2778. speed(integer) : "Speed" : 100
  2779. //NEW 0.5
  2780. //* See the notes about this field in @func_rotating.
  2781. axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0"
  2782. distance(integer) : "Distance (deg)" : 90
  2783. damp(integer) : "Damping (0-1000)" : 0
  2784. dmg(integer) : "Damage inflicted when blocked" : 0
  2785. spawnflags(flags) =
  2786. [
  2787. 1 : "Start ON" : 0
  2788. 8 : "Passable" : 0
  2789. 16: "Auto-return" : 0
  2790. 64: "X Axis" : 0
  2791. 128: "Y Axis" : 0
  2792. ]
  2793.  
  2794. _minlight(integer) : "_minlight"
  2795. ]
  2796.  
  2797. //* With any luck, I've fixed the bug which caused players to sometimes be frozen.
  2798. @SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_plat : "Elevator"
  2799. [
  2800. spawnflags(Flags) =
  2801. [
  2802. 1: "Toggle" : 0
  2803. ]
  2804. height(integer) : "Travel altitude (can be negative)" : 0
  2805. speed(integer) : "Speed" : 50
  2806. _minlight(string) : "Minimum light level"
  2807. ]
  2808.  
  2809. @SolidClass base(Targetname, Angles, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_platrot : "Moving Rotating platform"
  2810. [
  2811. spawnflags(flags) =
  2812. [
  2813. 1: "Toggle" : 0
  2814. 64: "X Axis" : 0
  2815. 128: "Y Axis" : 0
  2816. ]
  2817. speed(integer) : "Speed of rotation" : 50
  2818. //NEW 0.5
  2819. //* See the notes about this field in @func_rotating.
  2820. axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0"
  2821. height(integer) : "Travel altitude (can be negative)" : 0
  2822. rotation(integer) : "Spin amount" : 0
  2823. _minlight(string) : "Minimum light level"
  2824. ]
  2825.  
  2826. @SolidClass base(Breakable, RenderFields, ZHLTLightKeys) = func_pushable : "Pushable object"
  2827. [
  2828. spawnflags(flags) =
  2829. [
  2830. 128: "Breakable" : 0
  2831. //NEW 0.3
  2832. //* Tick here if the crate can only ever be pushed.
  2833. 512: "Can't Pull" : 0
  2834. //NEW 1.8
  2835. //* Don't let the pushable go faster than the person pushing it.
  2836. //* This also fixes a bug with HL pushables - if you hold "use"
  2837. //* while pushing them, they get pushed really hard.
  2838. 1024: "Smooth push" : 0
  2839. ]
  2840. friction(integer) : "Friction (0-400)" : 50
  2841. buoyancy(integer) : "Buoyancy" : 20
  2842. _minlight(string) : "Minimum light level"
  2843. ]
  2844.  
  2845. @SolidClass base(MoveWith, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_recharge: "Battery recharger"
  2846. [
  2847. _minlight(string) : "Minimum light level"
  2848. ]
  2849.  
  2850. //* Like @func_button, except it rotates.
  2851. @SolidClass base(Targetname, Target, Angles, MoveWith, RenderFields, ZHLTLightKeys, Global, Master, LockSounds) = func_rot_button : "RotatingButton"
  2852. [
  2853. //* if set, then when the button is pressed, the "target" field of the entity targetted by the button will be set to this value.
  2854. changetarget(target_destination) : "ChangeTarget Name"
  2855. speed(integer) : "Speed" : 50
  2856. //NEW 0.5
  2857. //* See the notes about this field in @func_rotating.
  2858. axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0"
  2859. health(integer) : "Health (shootable if > 0)"
  2860. //* The number against each sound corresponds to the wav file
  2861. //* played. e.g. Squeaky (1) plays "buttons/lever1.wav".
  2862. sounds(choices) : "Sounds" : -1 =
  2863. [
  2864. -1: "None"
  2865. 21: "Squeaky (1)"
  2866. 22: "Squeaky Pneumatic (2)"
  2867. 23: "Ratchet Groan (3)"
  2868. 24: "Clean Ratchet (4)"
  2869. 25: "Gas Clunk (5)"
  2870. ]
  2871. wait(choices) : "Delay before reset" : 3 =
  2872. [
  2873. -1: "Stays pressed"
  2874. ]
  2875. delay(string) : "Delay before trigger" : "0"
  2876. distance(integer) : "Distance (deg)" : 90
  2877. spawnflags(flags) =
  2878. [
  2879. 1 : "Not solid" : 0
  2880. 2 : "Reverse Dir" : 0
  2881. //NEW 0.7.1
  2882. //* See the notes about this on @func_button.
  2883. 16: "Direct use only" : 0
  2884. 32: "Toggle" : 0
  2885. 64: "X Axis" : 0
  2886. 128:"Y Axis" : 0
  2887. 256:"Touch Activates" : 0
  2888. 512:"Invert '+Use'able" : 0
  2889. ]
  2890. _minlight(integer) : "_minlight"
  2891. ]
  2892.  
  2893. @SolidClass base(Targetname, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_rotating : "Rotating Object"
  2894. [
  2895. //* This sets the initial orientation of the entity, but that could
  2896. //* be achieved by simply rotating the brushes, in Worldcraft.
  2897. //* More importantly, it will change the position of the axes
  2898. //* the entity pivots around.
  2899. angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
  2900. speed(integer) : "Rotation Speed" : 30
  2901. //NEW 0.5
  2902. //* This field overrides the "X Axis" and "Y Axis" flags. It's
  2903. //* mostly useful to make a complex orbit for an object. (If you
  2904. //* just want to have a tilted axis for an otherwise normal rotating
  2905. //* object, you'll want to change the "angle" field instead.)
  2906. //* For example, set this field to "0 12 1" and the Z axis will
  2907. //* rotate 12 times in the time it takes the X axis to complete one
  2908. //* turn. (the entity will also turn 12 times faster than the
  2909. //* Rotation Speed you specify.)
  2910. //* NB: The way the quake engine handles rotation is not exactly
  2911. //* intuitive. The Z axis (Yaw) is the primary axis, so rotation around
  2912. //* the Y and X axes will be affected by the current Z position.
  2913. //* Similarly, the Y axis (Pitch) is the secondary axis, so rotation
  2914. //* around the X axis (Roll) will be affected by the current Y
  2915. //* position.
  2916. //* To get a feel for how this works, try making a func_rotating
  2917. //* cube whose origin is at one corner, set its "axes" value to
  2918. //* "1 1 0", and watch how it moves. One edge will simply go around
  2919. //* in a horizontal circle, while the rest of the cube rotates
  2920. //* around that edge.
  2921. axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0"
  2922. volume(integer) : "Volume (10 = loudest)" : 10
  2923. fanfriction(integer) : "Friction (0 - 100%)" : 20
  2924. //* The number against each sound corresponds to the wav file
  2925. //* played. e.g. Slow Rush (2) plays "fans/fan2.wav".
  2926. sounds(choices) : "Fan Sounds" : 0 =
  2927. [
  2928. 0 : "No Sound"
  2929. 1 : "Fast Whine (1)"
  2930. 2 : "Slow Rush (2)"
  2931. 3 : "Medium Rickety (3)"
  2932. 4 : "Fast Beating (4)"
  2933. 5 : "Slow Smooth (5)"
  2934. ]
  2935. //* The sound to play while active. This will only be used if "Fan Sounds" is set to "No Sound".
  2936. message(sound) : "WAV Name" :""
  2937. spawnflags(flags) =
  2938. [
  2939. 1 : "Start ON" : 0
  2940. 2 : "Reverse Direction" : 0
  2941. 4 : "X Axis" : 0
  2942. 8 : "Y Axis" : 0
  2943. 16: "Acc/Dcc" : 0
  2944. 32: "Fan Pain" : 0
  2945. 64: "Not Solid" : 0
  2946. //* This, and the other "radius" settings, only affect the
  2947. //* way the Fan Sounds are played; if you set a small radius,
  2948. //* the sounds will only be audible near to the fan.
  2949. 128: "Small Radius" : 0
  2950. 256: "Medium Radius" : 0
  2951. 512: "Large Radius" : 0
  2952. ]
  2953. _minlight(integer) : "_minlight"
  2954. spawnorigin(string) : "X Y Z - Move here after lighting" : "0 0 0"
  2955. dmg(integer) : "Damage inflicted when blocked" : 0
  2956. ]
  2957.  
  2958. //NEW 1.1
  2959. @SolidClass base(Targetname) = func_shine : "Shiny Surface"
  2960. [
  2961. message(sprite) : "Shine sprite" : "sprites/bgspr.spr"
  2962. scale(integer) : "Shine scale" : 10
  2963. renderamt(integer) : "Shine brightness (0-255)" : 50
  2964. ]
  2965.  
  2966. @SolidClass base(BaseTank, ZHLTLightKeys) = func_tank : "Brush Gun Turret"
  2967. [
  2968. bullet(choices) : "Bullets" : 0 =
  2969. [
  2970. 0: "None"
  2971. 1: "9mm"
  2972. 2: "MP5"
  2973. 3: "12mm"
  2974. ]
  2975. ]
  2976.  
  2977. @SolidClass base(Targetname, MoveWith) = func_tankcontrols : "Tank controls"
  2978. [
  2979. target(target_destination) : "Tank entity name"
  2980. //NEW 0.5
  2981. //* This specifies how far the player has to move before the controls will dump him off.
  2982. //* If you set -1, the player never gets dumped off. (In which case, the
  2983. //* func_tankcontrols can only be deactivated by triggering it with another entity.)
  2984. frags(integer) : "Tolerance (-1 = total)" : 30
  2985. //NEW 0.5
  2986. //* More crosshair choices will be available in future.
  2987. crosshair(choices) : "Crosshair to use" : 0 =
  2988. [
  2989. 0: "None"
  2990. 4: "MP5"
  2991. ]
  2992. spawnflags(flags) =
  2993. [
  2994. //NEW 0.5
  2995. //* If you tick here, the controls can only be activated by triggering it with
  2996. //* another entity.
  2997. 1 : "Ignore +Use" : 0
  2998. //NEW 1.0
  2999. 2 : "Visible" : 0
  3000. ]
  3001. ]
  3002.  
  3003. @SolidClass base(BaseTank, ZHLTLightKeys) = func_tanklaser : "Brush Laser Turret"
  3004. [
  3005. laserentity(target_source) : "env_laser Entity"
  3006. ]
  3007.  
  3008. @SolidClass base(BaseTank, ZHLTLightKeys) = func_tankmortar : "Brush Mortar Turret"
  3009. [
  3010. iMagnitude(Integer) : "Explosion Magnitude" : 100
  3011. ]
  3012.  
  3013. @SolidClass base(BaseTank, ZHLTLightKeys) = func_tankrocket : "Brush Rocket Turret" []
  3014.  
  3015. @SolidClass base(Trackchange, ZHLTLightKeys) = func_trackautochange : "Automatic track changing platform"
  3016. [
  3017. _minlight(string) : "Minimum light level"
  3018. ]
  3019.  
  3020. @SolidClass base(Trackchange, ZHLTLightKeys) = func_trackchange : "Train track changing platform"
  3021. [
  3022. _minlight(string) : "Minimum light level"
  3023. ]
  3024.  
  3025. @SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global) = func_tracktrain : "Track Train"
  3026. [
  3027. spawnflags(flags) =
  3028. [
  3029. 1 : "No Pitch (X-rot)" : 0
  3030. 2 : "No User Control" : 0
  3031. 4 : "No Reverse" : 0
  3032. 8 : "Passable" : 0
  3033. 16: "No Yaw (Z-rot)" : 0
  3034. ]
  3035. target(target_destination) : "First stop target"
  3036. //* The number against each sound corresponds to the wav file
  3037. //* played. e.g. Rail 1 plays "plats/ttrain1.wav".
  3038. sounds(choices) : "Move Sound" : 0 =
  3039. [
  3040. 0: "None (or custom)"
  3041. 1: "Rail 1"
  3042. 2: "Rail 2"
  3043. 3: "Rail 3"
  3044. 4: "Rail 4"
  3045. 5: "Rail 6"
  3046. 6: "Rail 7"
  3047. ]
  3048. //NEW 0.6
  3049. custommovesound(sound) : "Custom Move Sound"
  3050. //NEW 0.6
  3051. //* Default is "plats/ttrain_start1.wav". For silence, use "common/null.wav".
  3052. customstartsound(sound) : "Start Sound"
  3053. //NEW 0.6
  3054. //* Default is "plats/ttrain_brake1.wav". For silence, use "common/null.wav".
  3055. custombrakesound(sound) : "Stop Sound"
  3056. //* This setting controls how smoothly the train turns corners - if the wheels are
  3057. //* close together, it will turn sharply, and if far apart, it will turn more gradually.
  3058. wheels(integer) : "Distance between the wheels" : 50
  3059. height(integer) : "Height above track" : 4
  3060. startspeed(integer) : "Initial speed" : 0
  3061. speed(integer) : "Speed (units per second)" : 64
  3062. dmg(integer) : "Damage on crush" : 0
  3063. volume(integer) : "Volume (10 = loudest)" : 10
  3064. bank(string) : "Bank angle on turns" : "0"
  3065. _minlight(string) : "Minimum light level"
  3066. avelocity(string) : "Initial avelocity (Y Z X)"
  3067. ]
  3068.  
  3069. @SolidClass base(Targetname, RenderFields, ZHLTLightKeys, Global, PlatSounds) = func_train : "Moving platform"
  3070. [
  3071. target(target_source) : "First stop target"
  3072. speed(integer) : "Speed (units per second)" : 100
  3073. avelocity(string) : "Initial avelocity (Y Z X)"
  3074. dmg(choices) : "Damage on crush" : 2 =
  3075. [
  3076. //NEW 0.3
  3077. -1: "No damage"
  3078. ]
  3079. skin(integer) : "Contents" : 0
  3080. volume(string) : "Sound Volume 0.0 - 1.0" : "0.85"
  3081. spawnflags(flags) =
  3082. [
  3083. //NEW 0.5
  3084. //* Usually, the center of the train (in fact, the center of its bounding box)
  3085. //* will be the point used when positioning the train at a path_corner. Tick
  3086. //* here to use its origin for this instead.
  3087. 2 : "Origin on paths" : 0
  3088. //NEW 0.4
  3089. //* This is the default if you don't specify a name.
  3090. 4 : "Initially On" : 0
  3091. 8 : "Not solid" : 0
  3092. ]
  3093. _minlight(string) : "Minimum light level"
  3094. ]
  3095.  
  3096. //* Note that unlike func_tankcontrols, this defines what area the player must be standing in in order to use the tank.
  3097. @SolidClass = func_traincontrols : "Train Controls"
  3098. [
  3099. target(target_destination) : "Train Name"
  3100. ]
  3101.  
  3102. //NEW 1.5, func_walls can now be rotated ingame when they spawn
  3103. //This allows you to get around Hammer stuffing up rotating complex brushes
  3104. @SolidClass base(Targetname, MoveWith, Appearflags, RenderFields, ZHLTLightKeys, SwitchTexLight, Global) = func_wall : "Wall"
  3105. [
  3106. _minlight(string) : "Minimum light level"
  3107. vuser1(string) : "Rotate by Pitch Yaw Roll (Y Z X)" : "0 0 0"
  3108. ]
  3109.  
  3110. @SolidClass base(func_wall) = func_wall_toggle : "Toggleable geometry"
  3111. [
  3112. spawnflags(flags) =
  3113. [
  3114. 1 : "Starts Invisible" : 0
  3115. ]
  3116. ]
  3117.  
  3118. @SolidClass base(Targetname, Angles, Master, Door, LockSounds, MoveWith, RenderFields, ZHLTLightKeys, Global) = func_water : "Liquid"
  3119. [
  3120. spawnflags(flags) =
  3121. [
  3122. 1 : "Starts Open" : 0
  3123. 256: "Use Only" : 0
  3124. ]
  3125. skin(choices) : "Contents" : -3 =
  3126. [
  3127. -3: "Water"
  3128. -4: "Slime"
  3129. -5: "Lava"
  3130. ]
  3131. WaveHeight(string) : "Wave Height" : "0"
  3132. ]
  3133.  
  3134. @PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_counter : "Fires when it hits limit"
  3135. [
  3136. spawnflags(flags) =
  3137. [
  3138. 1: "Remove On fire" : 0
  3139. 2: "Reset On fire" : 0
  3140. ]
  3141. frags(integer) : "Initial Value" : 0
  3142. health(integer) : "Limit Value" : 10
  3143. ]
  3144.  
  3145. @PointClass base(Targetname, Target, Master) iconsprite("sprites/game.spr") = game_counter_set : "Sets a game_counter"
  3146. [
  3147. spawnflags(flags) =
  3148. [
  3149. 1: "Remove On fire" : 0
  3150. ]
  3151. frags(integer) : "New Value" : 10
  3152. ]
  3153.  
  3154. @PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_end : "End this multiplayer game" []
  3155.  
  3156. @PointClass base(Targetname) iconsprite("sprites/game.spr") = game_player_equip : "Initial player equipment"
  3157. [
  3158. master(string) : "Team Master"
  3159. spawnflags(flags) =
  3160. [
  3161. 1: "Use Only" : 0
  3162. ]
  3163. ]
  3164.  
  3165. @PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_hurt : "Hurts player who fires"
  3166. [
  3167. dmg(string) : "Damage To Apply" : "999"
  3168. spawnflags(flags) =
  3169. [
  3170. 1: "Remove On fire" : 0
  3171. ]
  3172. ]
  3173.  
  3174. @PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_player_team : "Allows player to change teams"
  3175. [
  3176. spawnflags(flags) =
  3177. [
  3178. 1 : "Remove On fire" : 0
  3179. 2 : "Kill Player" : 0
  3180. 4 : "Gib Player" : 0
  3181. ]
  3182. target(string) : "game_team_master to use"
  3183. ]
  3184.  
  3185. @PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_score : "Award/Deduct Points"
  3186. [
  3187. spawnflags(flags) =
  3188. [
  3189. 1: "Allow Negative" : 0
  3190. 2: "Team Points" : 0
  3191. ]
  3192.  
  3193. points(integer) : "Points to add (+/-)" : 1
  3194. ]
  3195.  
  3196. @PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_master : "Team based master/relay"
  3197. [
  3198. spawnflags(flags) =
  3199. [
  3200. 1: "Remove On fire" : 0
  3201. ]
  3202. triggerstate(choices) : "Trigger to send" : 2 =
  3203. [
  3204. 0: "Off"
  3205. 1: "On"
  3206. 2: "Toggle"
  3207. ]
  3208. teamindex(integer) : "Team Index (-1 = no team)" : -1
  3209. ]
  3210.  
  3211. @PointClass base(Targetname, Targetx, Master) iconsprite("sprites/game.spr") = game_team_set : "Sets team of team_master"
  3212. [
  3213. spawnflags(flags) =
  3214. [
  3215. 1: "Remove On fire" : 0
  3216. ]
  3217. ]
  3218.  
  3219. @PointClass base(Targetname, Master) iconsprite("sprites/game.spr") = game_text : "HUD Text Message"
  3220. [
  3221. spawnflags(flags) =
  3222. [
  3223. 1: "All Players" : 0
  3224. 2: "Only once" : 0
  3225. ]
  3226.  
  3227. //NEW 0.6
  3228. target(string) : "Fire when done"
  3229. message(string) : "Message Text"
  3230. x(string) : "X (0 - 1.0 = left to right) (-1 centers)" : "-1"
  3231. y(string) : "Y (0 - 1.0 = top to bottom) (-1 centers)" : "-1"
  3232. effect(Choices) : "Text Effect" : 0 =
  3233. [
  3234. 0 : "Fade In/Out"
  3235. 1 : "Credits"
  3236. 2 : "Scan Out"
  3237. ]
  3238. color(color255) : "Color1" : "100 100 100"
  3239. color2(color255) : "Color2" : "240 110 0"
  3240. fadein(string) : "Fade in Time (or character scan time)" : "1.5"
  3241. fadeout(string) : "Fade Out Time" : "0.5"
  3242. holdtime(string) : "Hold Time" : "1.2"
  3243. fxtime(string) : "Scan time (scan effect only)" : "0.25"
  3244. channel(choices) : "Text Channel" : 1 =
  3245. [
  3246. 1 : "Channel 1"
  3247. 2 : "Channel 2"
  3248. 3 : "Channel 3"
  3249. 4 : "Channel 4"
  3250. ]
  3251. ]
  3252.  
  3253. @SolidClass base(Targetname) iconsprite("sprites/game.spr") = game_zone_player : "Player Zone brush"
  3254. [
  3255. intarget(target_destination) : "Target for IN players"
  3256. outtarget(target_destination) : "Target for OUT players"
  3257. incount(target_destination) : "Counter for IN players"
  3258. outcount(target_destination) : "Counter for OUT players"
  3259. ]
  3260.  
  3261. @PointClass base(gibshooterbase) = gibshooter : "Gib Shooter"
  3262. [
  3263. m_iBloodColor(choices) : "Blood color" : 0 =
  3264. [
  3265. -1 : "Don't Bleed"
  3266. 0 : "Red (human)"
  3267. 195 : "Yellow (alien)"
  3268. ]
  3269. ]
  3270.  
  3271.  
  3272. //
  3273. // hud entities
  3274. //
  3275.  
  3276. //NEW 1.0
  3277. //* At the moment, this can only display sprites that are defined in sprites/hud.txt, and
  3278. //* will always display them in the status icon area on the left of the screen.
  3279. //* Bear in mind, the hud isn't displayed unless you have an HEV suit.
  3280. @PointClass base(Targetname) = hud_sprite : "Hud Sprite Display"
  3281. [
  3282. message(sprite): "Sprite name" : "dmg_poison"
  3283. rendercolor(color255) : "Color" : "255 255 255"
  3284. spawnflags(flags) =
  3285. [
  3286. 1: "Start on" : 0
  3287. ]
  3288. ]
  3289.  
  3290. //
  3291. // info entities
  3292. //
  3293.  
  3294. //* If you give a decal a targetname, then it won't appear until fired.
  3295. @PointClass decal() base(Targetname, Appearflags) = infodecal : "Decal"
  3296. [
  3297. texture(decal)
  3298. ]
  3299.  
  3300. //NEW 0.3
  3301. //* An alias makes itself an "alternative name" for an entity. To refer to
  3302. //* an entity through the alternative name, use the alias name preceeded by a *.
  3303. //* For example, suppose you set up an info_alias entity called 'myalias'.
  3304. //* 'Myalias' targets a light called 'redlight'. suppose a you set up a
  3305. //* @trigger_once field targetting "*myalias", so that when you walk through the
  3306. //* trigger field, redlight gets turned on and off. So far, info_alias seems to
  3307. //* be like a @trigger_relay. However, you can also set up a switch which targets
  3308. //* "myalias", to turn it off...
  3309. @PointClass base(Targetname) iconsprite("sprites/info.spr") = info_alias : "Alias"
  3310. [
  3311. target(target_destination) : "Reference while On"
  3312. netname(string) : "Reference while Off"
  3313. mode(string) : "Use Mode, 0= On/Off 1= list mode" : "0"
  3314. spawnflags(Flags) =
  3315. [
  3316. 1 : "Start Off" : 0
  3317. 2 : "Debug Mode" : 0
  3318. ]
  3319. ]
  3320.  
  3321. @PointClass base(Targetname) size(-24 -24 0, 24 24 16) color(20 190 60) iconsprite("sprites/info.spr") = info_bigmomma : "Big Mamma Node"
  3322. [
  3323. spawnflags(Flags) =
  3324. [
  3325. 1 : "Run To Node" : 0
  3326. 2 : "Wait Indefinitely" : 0
  3327. ]
  3328. target(target_destination) : "Next node"
  3329. radius(string) : "Radius" : "0"
  3330. reachdelay(string) : "Wait after approach" : "0"
  3331. killtarget(target_destination) : "KillTarget"
  3332. reachtarget(target_destination) : "Fire on approach"
  3333. reachsequence(string) : "Sequence on approach" : ""
  3334. health(string) : "Health on approach" : ""
  3335. presequence(string) : "Sequence before approach" : ""
  3336. ]
  3337.  
  3338. //NEW 1.0
  3339. //* Which compile options to use.
  3340. @PointClass size(-8 -8 0, 8 8 32) iconsprite("sprites/info.spr") = info_compile_parameters : "Compile Options"
  3341. [
  3342. texdata(string) : "Texture Data Memory (in KB)" : "4096"
  3343. estimate(choices) : "Estimate Compile Times?" : 0 =
  3344. [
  3345. 0: "Yes"
  3346. 1: "No"
  3347. ]
  3348. bounce(integer) : "Number of radiosity bounces" : 1
  3349. ambient(string) : "Ambient world light (0.0 to 1.0, R G B)" : "0 0 0"
  3350. smooth(integer) : "Smoothing threshold (in degrees)" : 0
  3351. dscale(integer) : "Direct Lighting Scale" : 2
  3352. chop(integer) : "Chop Size" : 64
  3353. texchop(integer) : "Texture Light Chop Size" : 32
  3354. hullfile(string) : "Custom Hullfile"
  3355.  
  3356. priority(choices) : "Priority Level" : 0 =
  3357. [
  3358. 0 : "Normal"
  3359. 1 : "High"
  3360. -1 : "Low"
  3361. ]
  3362. wadautodetect(choices) : "Wad Auto Detect" : 0 =
  3363. [
  3364. 0 : "Off"
  3365. 1 : "On"
  3366. ]
  3367. wadconfig(string) : "Custom Wad Configuration" : ""
  3368. verbose(choices) : "Verbose compile messages" : 0 =
  3369. [
  3370. 0 : "Off"
  3371. 1 : "On"
  3372. ]
  3373. noclipeconomy(choices) : "Strip Uneeded Clipnodes?" : 1 =
  3374. [
  3375. 1 : "Yes"
  3376. 0 : "No"
  3377. ]
  3378.  
  3379. spawnflags(flags) =
  3380. [
  3381. 1 : "Run CSG" : 1
  3382. 2 : " No Clip" : 0
  3383. 4 : " Only Ents" : 0
  3384. 8 : " No Sky Clip" : 0
  3385. 32 : "Run BSP" : 1
  3386. 64 : " Leak Only" : 0
  3387. 128 : " No Clip" : 0
  3388. 256 : "Run VIS" : 1
  3389. 512 : " Fast " : 0
  3390. 2048 : "Run RAD" : 1
  3391. 4096 : " Sparse " : 0
  3392. 8192 : " Circus Mode" : 0
  3393. 16384 : " Extra Mode " : 0
  3394. ]
  3395. ]
  3396.  
  3397. //NEW 0.4
  3398. //* An info_group acts similarly to an @info_alias, except that it has several
  3399. //* "members" which are are accessed by writing 'mygroup.membername'.
  3400. //* These members are set up just like the targets of a @multi_manager- except
  3401. //* that they'll contain an entity reference instead of a delay time.
  3402. //* If you set up its "target" field to refer to an info_alias entity, then when
  3403. //* an info_group is triggered, it will change that info_alias entity to target the
  3404. //* group.
  3405. @PointClass base(Targetname) iconsprite("sprites/info.spr") = info_group : "Entity Group"
  3406. [
  3407. target(string) : "Alias to change when fired [LE]"
  3408. //* If you refer to a group member which hasn't been defined explicitly,
  3409. //* but you do define a default prefix here, then the member name will be
  3410. //* added to the prefix to generate an appropriate reference.
  3411. //* e.g: Suppose an info_group named "bob" defines a default prefix
  3412. //* "bobs_". Now; if you refer to, for example, "bob.house" or
  3413. //* "bob.gun", you'll actually affect entities named "bobs_house"
  3414. //* and "bobs_gun", respectively.
  3415. defaultmember(string) : "Default member prefix"
  3416. spawnflags(flags) =
  3417. [
  3418. 2 : "Debug Mode" : 0
  3419. ]
  3420. ]
  3421.  
  3422. @PointClass base(Target, Angles, MoveWith) size(-4 -4 -4, 4 4 4) color(0 255 0) iconsprite("sprites/info.spr") = info_intermission : "Intermission Spot" []
  3423.  
  3424. @PointClass base(Targetname, MoveWith) iconsprite("sprites/info.spr") = info_landmark : "Transition Landmark" []
  3425.  
  3426. //NEW 0.6
  3427. @PointClass base(Targetname) iconsprite("sprites/info.spr") = info_movewith : "Movewith relay"
  3428. [
  3429. target(string) : "MoveWith when active"
  3430. netname(string) : "MoveWith when inactive"
  3431. spawnflags(flags) =
  3432. [
  3433. 1 : "Start inactive" : 0
  3434. //* Usually, info_movewith will happily pass straight through a wall.
  3435. //* Tick here if you want it to stop when it hits walls.
  3436. //* Incidentally, ticking this will also allow it to set off trigger
  3437. //* fields, such as @trigger_multiple.
  3438. 2 : "Blockable" : 0
  3439. ]
  3440. ]
  3441.  
  3442. @PointClass size(-24 -24 -4, 24 24 4) color(255 255 0) iconsprite("sprites/infonode.spr") = info_node : "ai node" []
  3443.  
  3444. @PointClass size(-32 -32 0, 32 32 64) color(255 255 0) iconsprite("sprites/infonode.spr")= info_node_air : "ai air node" []
  3445.  
  3446. @PointClass base(Targetname) iconsprite("sprites/info.spr") = info_null : "info_null (spotlight target)" []
  3447.  
  3448. @PointClass base(PlayerClass) studio("models/player.mdl") = info_player_coop : "Player cooperative start" []
  3449. @PointClass base(PlayerClass, Master, MoveWith) studio("models/player.mdl") = info_player_deathmatch : "Player deathmatch start"
  3450. [
  3451. target(target_destination) : "Target"
  3452. ]
  3453. @PointClass base(PlayerClass, MoveWith, Sequence) = info_player_start : "Player 1 start"
  3454. [
  3455. spawnflags(Flags) =
  3456. [
  3457. 1 : "Start with HEV" : 0
  3458. ]
  3459. ]
  3460.  
  3461. @PointClass base(Targetname, MoveWith) size(-4 -4 -4, 4 4 4) color(200 100 50) iconsprite("sprites/info.spr") = info_target : "Beam Target"
  3462. [
  3463. spawnflags(Flags) =
  3464. [
  3465. //NEW 0.4
  3466. //* Essentially, this flag forces the game engine to treat an info_target as visible
  3467. //* (even though it isn't). This has two effects:
  3468. //* 1) Normally if an env_beam is attached to an info_target which can move (via MoveWith),
  3469. //* the env_beam won't follow the info_target properly. Ticking here fixes that problem.
  3470. //* 2) If an env_beam's "ring" mode is selected, you must make both ends of the beam
  3471. //* into 'visible' entities, otherwise the beam won't be displayed.
  3472. //* (Note that if you're making a mod and you tell an info_target to use null.spr, you will
  3473. //* of course have to distribute null.spr with the mod.)
  3474. 1 : "Use null.spr" : 0
  3475. ]
  3476. ]
  3477.  
  3478. @PointClass size(-8 -8 0, 8 8 16) base(Targetname, PlayerClass, MoveWith) iconsprite("sprites/info.spr") = info_teleport_destination : "Teleport destination" []
  3479.  
  3480. //NEW 1.0
  3481. @PointClass color(255 128 0) iconsprite("sprites/info.spr") = info_texlights : "Texture Light Config" []
  3482.  
  3483.  
  3484. //
  3485. // items
  3486. //
  3487.  
  3488. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_oxygen.mdl")= item_airtank : "Oxygen tank" []
  3489. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_antidote.mdl")= item_antidote : "Poison antidote" []
  3490.  
  3491. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_battery.mdl")= item_battery : "HEV battery"
  3492. [
  3493. //NEW 0.7.1
  3494. model(string) : "Model (models/w_battery.mdl)"
  3495. //NEW 0.7.1
  3496. skin(integer) : "Skin"
  3497. //NEW 0.7.1
  3498. body(integer) : "Body"
  3499. //NEW 0.7.1
  3500. noise(string) : "Sound (items/gunpickup2.wav)"
  3501. //NEW 0.7.1
  3502. armorvalue(integer) : "Charge by (0 = normal)"
  3503. ]
  3504. //NEW 1.4
  3505. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_flashlight.mdl")= item_flashlight : "FlashLight" []
  3506.  
  3507. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_medkit.mdl")= item_healthkit : "Small Health Kit" []
  3508. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_longjump.mdl")= item_longjump : "Longjump Module" []
  3509. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_security.mdl")= item_security : "Security card" []
  3510. @PointClass size(-16 -16 0, 16 16 36) base(Weapon, Targetx) studio("models/w_suit.mdl")= item_suit : "HEV Suit"
  3511. [
  3512. spawnflags(Flags) =
  3513. [
  3514. 1 : "Short Logon" : 0
  3515. ]
  3516. ]
  3517.  
  3518. //
  3519. // lights
  3520. //
  3521.  
  3522. @PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Light, ZhltLights) = light : "Invisible lightsource"
  3523. [
  3524. target(string) : "Target to shine at"
  3525. firetarget(string) : "Target to trigger"
  3526. spawnflags(Flags) =
  3527. [
  3528. 1 : "Initially dark" : 0
  3529. ]
  3530. ]
  3531.  
  3532. //NEW 0.5
  3533. //* See also @env_dlight.
  3534. @PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Targetname, MoveWith) = light_glow : "Dynamic Glow"
  3535. [
  3536. frags(choices) : "Glow Type" : 1 =
  3537. [
  3538. 2: "Brightest"
  3539. 1: "Flashlight"
  3540. 0: "None"
  3541. ]
  3542. spawnflags(Flags) =
  3543. [
  3544. 1 : "Initially dark" : 0
  3545. 2 : "Flare" : 0
  3546. ]
  3547. ]
  3548.  
  3549. @PointClass base(Angles, ZhltLights) color(255 255 128) iconsprite("sprites/lightbulb.spr") = light_environment : "Environment"
  3550. [
  3551. pitch(integer) : "Pitch" : 0
  3552. _light(color255) : "Brightness" : "255 255 128 200"
  3553. ]
  3554.  
  3555. @PointClass iconsprite("sprites/lightbulb.spr") color(255 255 128) base(Target, Light, ZhltLights) = light_spot : "Spotlight"
  3556. [
  3557. firetarget(string) : "Target to trigger"
  3558. _cone(integer) : "Inner (bright) angle" : 30
  3559. _cone2(integer) : "Outer (fading) angle" : 45
  3560. pitch(integer) : "Pitch" : -90
  3561. // _light(color255) : "Brightness" : "255 255 128 200"
  3562. _sky(choices) : "Is Sky" : 0 =
  3563. [
  3564. 0 : "No"
  3565. 1 : "Yes"
  3566. ]
  3567. spawnflags(Flags) =
  3568. [
  3569. 1 : "Initially dark" : 0
  3570. ]
  3571. ]
  3572.  
  3573. @SolidClass base(Targetname, Angles, MoveWith, Master, RenderFields, ZHLTLightKeys, Global) = momentary_door : "Momentary/Continuous door"
  3574. [
  3575. //NEW 0.4
  3576. //* Maximum speed the door is allowed to move at.
  3577. speed(choices) : "Speed" : 100 =
  3578. [
  3579. 0: "No limit"
  3580. ]
  3581. //* The number against each sound corresponds to the wav file played.
  3582. //* e.g. Vacuum (4) plays "doors/doormove4.wav".
  3583. movesnd(choices) : "Move Sound" : 0 =
  3584. [
  3585. 0: "No Sound"
  3586. 1: "Servo (Sliding) (1)"
  3587. 2: "Pneumatic (Sliding) (2)"
  3588. 3: "Pneumatic (Rolling) (3)"
  3589. 4: "Vacuum (4)"
  3590. 5: "Power Hydraulic (5)"
  3591. 6: "Large Rollers (6)"
  3592. 7: "Track Door (7)"
  3593. 8: "Snappy Metal Door (8)"
  3594. 9: "Squeaky 1 (9)"
  3595. 10: "Squeaky 2 (10)"
  3596. ]
  3597. stopsnd(choices) : "Stop sound" : 0 =
  3598. [
  3599. 0 : "No Sound"
  3600. 1 : "Clang with brake"
  3601. 2 : "Clang Reverb"
  3602. 3 : "Ratchet stop"
  3603. 4 : "Chunk"
  3604. 5 : "Light Airbrake"
  3605. 6 : "Metal Slide Stop"
  3606. 7 : "Metal Lock Stop"
  3607. 8 : "Snappy Metal Stop"
  3608. ]
  3609. lip(integer) : "Lip"
  3610. spawnflags(flags) =
  3611. [
  3612. 1 : "Starts Open" : 0
  3613. ]
  3614. _minlight(string) : "Minimum light level"
  3615. ]
  3616.  
  3617. //NEW 0.7.1
  3618. //* Stores a reference to an entity. Whenever the alias is triggered,
  3619. //* it changes to record what triggered it.
  3620. //* Thereafter, you can refer to that entity by *aliasname (where aliasname is the name
  3621. //* of the locus_alias).
  3622. //* Note that this records a specific entity - unlike @info_alias which
  3623. //* records the name of an entity. So info_alias always refers to all entities with a particular
  3624. //* name, whereas locus_alias always refers to one specific entity.
  3625. @PointClass base(Targetname) size(-8 -8 -8, 8 8 8) = locus_alias : "Locus System - Entity variable"
  3626. [
  3627. netname(string) : "Initial value"
  3628. ]
  3629.  
  3630. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_beam : "Locus System - Beam effect"
  3631. [
  3632. m_iszStart(string) : "Start at (blank = here)" : ""
  3633. m_iszEnd(string) : "End at (blank = here)" : "*locus"
  3634. impulse(choices) : "Start & End are" : 0 =
  3635. [
  3636. 0: "Entity & Entity [LE LE]"
  3637. 1: "Entity & Position [LE LP]"
  3638. 2: "Position & Position [LP LP]"
  3639. 3: "Position & Direction [LP LV]"
  3640. ]
  3641. m_iszSprite(sprite) : "Sprite Name" : "sprites/laserbeam.spr"
  3642. renderamt(integer) : "Brightness (1 - 255)" : 255
  3643. rendercolor(color255) : "Color (R G B)" : "255 255 255"
  3644. m_iWidth(integer) : "Width" : 10
  3645. m_iDistortion(integer) : "Distortion ('noise')" : 0
  3646. m_fFrame(integer) : "Start frame" : 0
  3647. m_iScrollRate(integer) : "Scroll rate" : 0
  3648. m_fDuration(string) : "Duration (0 = unlimited)" : 0
  3649. m_fDamage(string) : "Damage amount" : 0
  3650. m_iDamageType(choices) : "Damage type" : 0 =
  3651. [
  3652. 0 : "Energy Beam"
  3653. 1 : "Fracture"
  3654. 2 : "Blood Loss"
  3655. 4 : "Lacerations"
  3656. 8 : "Burning"
  3657. 16 : "Freezing"
  3658. 512 : "Internal bleeding"
  3659. 16384 : "Drowning"
  3660. 65536 : "Biohazard"
  3661. 131072 : "Poison (duration)"
  3662. 262144 : "Radiation"
  3663. 1048576: "Hazardous chemical"
  3664. ]
  3665. m_iszTargetName(target_source) : "Name of children"
  3666. target(target_destination) : "Fire on spawn (locus = child)"
  3667. spawnflags(flags) =
  3668. [
  3669. //* This will only work if "Start & End" is set to "Entity & Entity".
  3670. 8 : "Ring" : 0
  3671. 16: "StartSparks" : 0
  3672. 32: "EndSparks" : 0
  3673. 64: "Decal End" : 0
  3674. //* The beam fades in from nothing, like a tracer bullet.
  3675. 128: "Fade Start" : 0
  3676. 256: "Fade End" : 0
  3677. //* For making a rope, etc.
  3678. 512: "Draw Solid" : 0
  3679. 1024: "Draw Sine" : 0
  3680. ]
  3681. ]
  3682.  
  3683. //NEW 0.7.1
  3684. //* As the name suggests, this acts like a variable in a programming language. It
  3685. //* stores three values - a position, a velocity, and a number. (if you want a variable
  3686. //* that records entities, see @locus_alias). To set values, trigger the entity; and to
  3687. //* access them, just refer to it like the appropriate calc_x entity.
  3688. //* locus_variable can also be used another way; if you give a "Child's Name"
  3689. //* value, triggering it will create a reference point with that name. So for example,
  3690. //* suppose you want to create streams of water wherever an object gets shot. You
  3691. //* trigger a locus_variable to record where the shot hits, and then have its "fire
  3692. //* on spawn" value triggering the water stream. But if you don't have it make seperate
  3693. //* reference points, then all the water will come out of the last shot position.
  3694. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = locus_variable : "Locus System - Variable for storing data"
  3695. [
  3696. m_iszPosition(string) : "Position to record [LP]" : "*locus"
  3697. m_iszVelocity(string) : "Velocity to record [LV]" : "*locus"
  3698. m_iszRatio(string) : "Number to record [LN]" : "*locus"
  3699. m_iszTargetname(string) : "Child's name (blank = no child)"
  3700. m_iszFireOnSpawn(string) : "Fire on spawn (locus = child)"
  3701. m_fDuration(string) : "Removed after time (secs)"
  3702. ]
  3703.  
  3704. @SolidClass base(Targetname, Target, Angles, Master, MoveWith, RenderFields, ZHLTLightKeys) = momentary_rot_button : "Direct wheel control"
  3705. [
  3706. speed(integer) : "Speed" : 50
  3707. //NEW 0.5
  3708. //* See the notes about this field in @func_rotating.
  3709. axes(string) : "Axis Multipliers (Y Z X)" : "0 0 0"
  3710. sounds(choices) : "Sounds" : 0 =
  3711. [
  3712. 0: "None"
  3713. 1: "Big zap & Warmup"
  3714. 2: "Access Denied"
  3715. 3: "Access Granted"
  3716. 4: "Quick Combolock"
  3717. 5: "Power Deadbolt 1"
  3718. 6: "Power Deadbolt 2"
  3719. 7: "Plunger"
  3720. 8: "Small zap"
  3721. 9: "Keycard Sound"
  3722. 21: "Squeaky"
  3723. 22: "Squeaky Pneumatic"
  3724. 23: "Ratchet Groan"
  3725. 24: "Clean Ratchet"
  3726. 25: "Gas Clunk"
  3727. ]
  3728. distance(integer) : "Distance (deg)" : 90
  3729. returnspeed(integer) : "Auto-return speed" : 0
  3730. spawnflags(flags) =
  3731. [
  3732. 1: "Door Hack" : 0
  3733. 2: "Not useable" : 0
  3734. 16: "Auto Return" : 0
  3735. 64: "X Axis" : 0
  3736. 128: "Y Axis" : 0
  3737. ]
  3738. _minlight(integer) : "_minlight"
  3739. angles(string) : "Pitch Yaw Roll (Y Z X)" : "0 0 0"
  3740. ]
  3741.  
  3742. //
  3743. // Monsters
  3744. //
  3745.  
  3746. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/controller.mdl") = monster_alien_controller : "Controller" []
  3747. @PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/agrunt.mdl") = monster_alien_grunt : "Alien Grunt"
  3748. [
  3749. netname(string) : "Squad Name"
  3750. spawnflags(Flags) =
  3751. [
  3752. //* Only needed if you use the Squad Name value. If you define a Squad using the
  3753. //* Squad Name value, but none of them are flagged as a Squad Leader, then the
  3754. //* squad won't get linked together properly.
  3755. 32 : "Squad Leader" : 0
  3756. //NEW 1.0
  3757. 1024: "Drop gun" : 0
  3758. ]
  3759. ]
  3760. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/islave.mdl") = monster_alien_slave : "Vortigaunt"
  3761. [
  3762. netname(string) : "Squad Name"
  3763. spawnflags(Flags) =
  3764. [
  3765. //* Only needed if you use the Squad Name value. If you define a Squad using the
  3766. //* Squad Name value, but none of them are flagged as a Squad Leader, then the
  3767. //* squad won't get linked together properly.
  3768. 32 : "Squad Leader" : 0
  3769. //* This monster won't attack unless provoked.
  3770. 64 : "Start Peaceful" : 0
  3771. ]
  3772. ]
  3773. @PointClass base(Monster) size(-360 -360 -172, 360 360 8) studio("models/apache.mdl") = monster_apache : "Apache"
  3774. [
  3775. spawnflags(Flags) =
  3776. [
  3777. 8 : "No Wreckage" : 0
  3778. 64: "Start Inactive" : 0
  3779. ]
  3780. ]
  3781. @PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/baby_headcrab.mdl") = monster_babycrab : "Baby Headcrab" []
  3782. @PointClass base(Targetname, RenderFields) size(-16 -16 -36, 16 16 0) studio("models/barnacle.mdl") = monster_barnacle : "Barnacle Monster" []
  3783. @PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/barney.mdl") = monster_barney : "Barney"
  3784. [
  3785. frags(choices) : "Weapon" : 0 =
  3786. [
  3787. 0 : "Glock (normal)"
  3788. 1 : "Python 357"
  3789. ]
  3790. spawnflags(Flags) =
  3791. [
  3792. //NEW 0.3
  3793. //* Ensure the player can't take this monster's ammo or weapons.
  3794. 1024: "Don't Drop Gun" : 0
  3795. ]
  3796. sequence(Choices) : "Animation Sequence (editor)" : 0 =
  3797. [
  3798. 0 : "Idle1"
  3799. 1 : "Idle2"
  3800. 2 : "Idle3"
  3801. 3 : "Idle4"
  3802. 4 : "walk"
  3803. 5 : "run"
  3804. 6 : "shootgun"
  3805. 7 : "shootgun2"
  3806. 8 : "draw"
  3807. 9 : "disarm"
  3808. 10 : "reload"
  3809. 11 : "turnleft"
  3810. 12 : "turnright"
  3811. 13 : "laflinch"
  3812. 14 : "raflinch"
  3813. 15 : "llflinch"
  3814. 16 : "rlflinch"
  3815. 17 : "smlflinch"
  3816. 18 : "cower stand"
  3817. 19 : "locked door"
  3818. 20 : "fall loop"
  3819. 21 : "barn wave"
  3820. 22 : "beat grunt"
  3821. 23 : "beat grunt idle"
  3822. 24 : "flashlight"
  3823. 25 : "diesimple"
  3824. 26 : "dieviolent"
  3825. 27 : "diegutshot"
  3826. 28 : "die forward"
  3827. 29 : "die back"
  3828. 30 : "die crump"
  3829. 31 : "barnaclehit"
  3830. 32 : "barnaclepull"
  3831. 33 : "barnaclecrunch"
  3832. 34 : "barnaclechew"
  3833. 35 : "lie back"
  3834. 36 : "lie side"
  3835. 37 : "lie stomach"
  3836. 38 : "stuffed in vent"
  3837. 39 : "standing idle"
  3838. 40 : "cpr barney"
  3839. 41 : "cpr revive"
  3840. 42 : "barney drag vent"
  3841. 43 : "dying"
  3842. 44 : "dying idle"
  3843. 45 : "dying friend"
  3844. 46 : "dying friend idle"
  3845. 47 : "c1a3idle"
  3846. 48 : "c1a3ventb"
  3847. 49 : "c1a3 emergeidle"
  3848. 50 : "c1a3emerge"
  3849. 51 : "haul barney"
  3850. 52 : "push buttons"
  3851. 53 : "fence die"
  3852. 54 : "sit1"
  3853. 55 : "almostidle"
  3854. 56 : "almost"
  3855. 57 : "laseridle"
  3856. 58 : "laser top"
  3857. 59 : "laser bottom"
  3858. 60 : "fallidle"
  3859. 61 : "fall"
  3860. 62 : "c3a2 draw"
  3861. 63 : "corner2"
  3862. 64 : "unlatch"
  3863. 65 : "retina"
  3864. 66 : "relax stand"
  3865. 67 : "assasinated"
  3866. 68 : "plunger"
  3867. 69 : "pepsiswing"
  3868. 70 : "pepsi push"
  3869. 71 : "push button"
  3870. ]
  3871.  
  3872. ]
  3873. @PointClass base(Targetname, Angles, RenderFields, Appearflags) size(-16 -16 0, 16 16 72) = monster_barney_dead : "Dead Barney"
  3874. [
  3875. pose(choices) : "Pose" : 0 =
  3876. [
  3877. 0 : "On back"
  3878. 1 : "On side"
  3879. 2 : "On stomach"
  3880. ]
  3881. ]
  3882. @PointClass base(Monster) size(-95 -95 0, 95 95 190) studio("models/big_mom.mdl") = monster_bigmomma : "Big Mamma"
  3883. [
  3884. netname(string) : "First node"
  3885. ]
  3886. //* Not fully implemented: rudimentary AI. Will run away if attacked,
  3887. //* otherwise will stand still.
  3888. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/floater.mdl") = monster_bloater : "Bloater" []
  3889. @PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/bullsquid.mdl") = monster_bullchicken : "BullSquid" []
  3890. @PointClass base(Monster) size(-3 -3 0, 3 3 3) studio("models/roach.mdl") = monster_cockroach : "Cockroach" []
  3891. //@PointClass base(Monster) size(-16 -16 0, 16 16 16) = monster_flyer : "Single Flyer" []
  3892. @PointClass base(Monster) size(-16 -16 0, 16 16 16) studio("models/aflock.mdl") = monster_flyer_flock : "Flock of Flyers"
  3893. [
  3894. iFlockSize(integer) : "Flock Size" : 8
  3895. flFlockRadius(integer) : "Flock Radius" : 128
  3896. ]
  3897. @PointClass base(Monster) size(-16 -16 0, 16 16 72) = monster_furniture : "Monster Furniture" []
  3898. @PointClass base(Monster) size(-32 -32 0, 32 32 128) studio("models/garg.mdl") = monster_gargantua : "Gargantua" []
  3899. @PointClass base(Monster) size(-16 -16 -36, 16 16 36) studio() = monster_generic : "Generic Script Monster"
  3900. [
  3901. spawnflags(Flags) =
  3902. [
  3903. 4 : "Not solid" : 0
  3904. //NEW 0.4
  3905. //* Tick here if you're using a model from the models/player/ directories.
  3906. //* This option sets it up so that the model's bounding box is centered on its origin (the X in
  3907. //* the middle of the entity, in WorldCraft), instead of being the middle of its bottom face.
  3908. 8 : "Head Controller" : 0
  3909. 16 : "Player model" : 0
  3910. //NEW 0.4
  3911. 32: "Invulnerable" : 0
  3912. ]
  3913. model(studio) : "model"
  3914. //NEW 0.4
  3915. //* <b>Headcrab:</b> 24 24 24
  3916. //* <b>Houndeye:</b> 32 32 36
  3917. //* <b>Human:</b> 32 32 72
  3918. //* <b>Most Aliens:</b> 64 64 64
  3919. size(string) : "Size (X Y Z)"
  3920. //NEW 0.4
  3921. //* <b>Player:</b> 0 = gordon's head, 1 = hooded.
  3922. //* <b>Gina, Gordon, Helmet and Scientist player models:</b> 0 = original design, 1 = updated (better looking) version.
  3923. //* <b>Barneys:</b> 0 = holstered gun, 1 = holding gun, 2 = missing gun.
  3924. //* <b>Scientists:</b> 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick)
  3925. //* <b>Human Grunts:</b> 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar)
  3926. body(Integer) : "Body" : 0
  3927. //NEW 0.4
  3928. //* If not set, health is 8.
  3929. health(Integer) : "Initial Health" : 0
  3930. //NEW 0.4
  3931. //* Experiment with other values (1-255) for different blood colors.
  3932. m_bloodColor(choices) : "Blood Color" : 0 =
  3933. [
  3934. -1 : "Don't Bleed"
  3935. 0 : "Red (Human)"
  3936. 195 : "Yellow (Alien)"
  3937. ]
  3938. //NEW 0.5
  3939. //* If you don't specify a gib model, one will be chosen based on
  3940. //* the Blood Colour you set.
  3941. m_iszGibModel(string) : "Gib Model"
  3942. ]
  3943.  
  3944. //NEW 0.5
  3945. @PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_generic_dead : "Generic Dead Body"
  3946. [
  3947. spawnflags(Flags) =
  3948. [
  3949. 8 : "Player model" : 0
  3950. ]
  3951. //* The corpse's pose will be the last frame of this sequence.
  3952. //* This overrides the 'death type' value.
  3953. netname(string) : "Sequence name"
  3954. //* If you don't specify a 'Sequence name', the monster will select a random death
  3955. //* animation of the type you specify here. Not all models have all these death types.
  3956. frags(choices): "Death Type" : 36 =
  3957. [
  3958. 36 : "Just dead"
  3959. 37 : "Fell backwards"
  3960. 38 : "Fell forwards"
  3961. 39 : "Died violently"
  3962. 66 : "Head shot"
  3963. 67 : "Chest shot"
  3964. 68 : "Gut shot"
  3965. 69 : "Shot in the back"
  3966. ]
  3967. //* <b>Player:</b> 0 = gordon's head, 1 = hooded.
  3968. //* <b>Gina, Gordon, Helmet and Scientist player models:</b> 0 = original design, 1 = updated (better looking) version.
  3969. //* <b>Barneys:</b> 0 = holstered gun, 1 = holding gun, 2 = missing gun.
  3970. //* <b>Scientists:</b> 0-3 = no syringe, 4-7 = syringe in hand. 4 different heads in each set. (0 = Glasses, 1 = Einstein, 2 = Luther, 3 = Slick)
  3971. //* <b>Human Grunts:</b> 0-3 = Mp5, 4-7 = Shotgun, 8-11 = No gun. 4 different heads in each set. (0 = Gasmask, 1 = Beret, 2 = Skimask, 3 = Cigar)
  3972. body(Integer) : "Body" : 0
  3973. //* Experiment with other values (1-255) for different blood colors.
  3974. m_bloodColor(choices) : "Blood Color" : 0 =
  3975. [
  3976. -1 : "Don't Bleed"
  3977. 0 : "Red (Human)"
  3978. 195 : "Yellow (Alien)"
  3979. ]
  3980. //* If you don't specify a gib model, one will be chosen based on
  3981. //* the Blood Colour you set.
  3982. m_iszGibModel(string) : "Gib Model"
  3983. ]
  3984.  
  3985. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/gman.mdl") = monster_gman : "G-Man" []
  3986. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_grunt_repel : "Human Grunt (Repel)" []
  3987. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = monster_handgrenade : "Live Handgrenade" []
  3988. @PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/headcrab.mdl") = monster_headcrab : "Head Crab" []
  3989. @PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) = monster_hevsuit_dead : "Dead HEV Suit"
  3990. [
  3991. pose(choices) : "Pose" : 0 =
  3992. [
  3993. 0 : "On back"
  3994. 1 : "Seated"
  3995. 2 : "On stomach"
  3996. 3 : "On Table"
  3997. ]
  3998. ]
  3999. @PointClass base(Targetname, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_hgrunt_dead : "Dead Human Grunt"
  4000. [
  4001. pose(Choices) : "Pose" : 0 =
  4002. [
  4003. 0 : "On stomach"
  4004. 1 : "On side"
  4005. 2 : "Seated"
  4006. ]
  4007. //NEW 0.5
  4008. weapons(Choices) : "Weapon" : 0 =
  4009. [
  4010. 0 : "MP5"
  4011. 1 : "Shotgun"
  4012. 2 : "No gun"
  4013. ]
  4014. //NEW 0.5
  4015. //* The "no gun" settings are only included here for backwards compatibility.
  4016. body(Choices) : "Head" : 0 =
  4017. [
  4018. 0 : "Gasmask"
  4019. 6 : "Gasmask (black skin)"
  4020. 1 : "Beret"
  4021. 4 : "Skimask"
  4022. 7 : "Skimask (black skin)"
  4023. 5 : "Cigar (black skin)"
  4024. 2 : "(Gasmask, no gun)"
  4025. 3 : "(Beret, no gun)"
  4026. ]
  4027. ]
  4028. @PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/houndeye.mdl") = monster_houndeye : "Houndeye"
  4029. [
  4030. netname(string) : "Squad Name"
  4031. spawnflags(Flags) =
  4032. [
  4033. //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name
  4034. //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked
  4035. //* together properly.
  4036. 32 : "SquadLeader" : 0
  4037. ]
  4038. ]
  4039. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hassassin.mdl") = monster_human_assassin : "Human Assassin" []
  4040. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/hgrunt.mdl") = monster_human_grunt : "Human Grunt (camo)"
  4041. [
  4042. netname(string) : "Squad Name"
  4043. spawnflags(Flags) =
  4044. [
  4045. //* Only needed if you use the Squad Name value. If you define a Squad using the Squad Name
  4046. //* value, but none of them are flagged as a Squad Leader, then the squad won't get linked
  4047. //* together properly.
  4048. 32 : "SquadLeader" : 0
  4049. //NEW 0.3
  4050. //* Ensure the player can't take this monster's ammo or weapons.
  4051. 1024: "Don't Drop Gun" : 0
  4052. ]
  4053. weapons(Choices) : "Weapons" : 1 =
  4054. [
  4055. 1 : "9mmAR"
  4056. 3 : "9mmAR + HG"
  4057. 5 : "9mmAR + GL"
  4058. 8 : "Shotgun"
  4059. 10: "Shotgun + HG"
  4060. ]
  4061. sequence(Choices) : "Animation Sequence (editor)" : 11 =
  4062. [
  4063. 0 : "walk1"
  4064. 1 : "run"
  4065. 2 : "victorydance"
  4066. 3 : "cower"
  4067. 4 : "smflinch"
  4068. 5 : "leftlegsmflinch"
  4069. 6 : "rightlegsmflinch"
  4070. 7 : "rightarmflinch"
  4071. 8 : "leftarmflinch"
  4072. 9 : "launchgrenade"
  4073. 10 : "throwgrenade"
  4074. 11 : "idle1"
  4075. 12 : "idle2"
  4076. 13 : "combatidle"
  4077. 14 : "frontkick"
  4078. 15 : "crouching_idle"
  4079. 16 : "crouching_wait"
  4080. 17 : "crouching_mp5"
  4081. 18 : "standing_mp5"
  4082. 19 : "reload_mp5"
  4083. 20 : "crouching_shotgun"
  4084. 21 : "standing_shotgun"
  4085. 22 : "reload_shotgun"
  4086. 23 : "advance_signal"
  4087. 24 : "flank_signal"
  4088. 25 : "retreat_signal"
  4089. 26 : "drop_grenade"
  4090. 27 : "limpingwalk"
  4091. 28 : "limpingrun"
  4092. 29 : "180L"
  4093. 30 : "180R"
  4094. 31 : "strafeleft"
  4095. 32 : "straferight"
  4096. 33 : "dieback1"
  4097. 34 : "dieforward"
  4098. 35 : "diesimple"
  4099. 36 : "diebackwards"
  4100. 37 : "dieheadshot"
  4101. 38 : "diegutshot"
  4102. 39 : "barnacled1"
  4103. 40 : "barnacled2"
  4104. 41 : "barnacled3"
  4105. 42 : "barnacled4"
  4106. 43 : "dead_on_stomach"
  4107. 44 : "deadstomach"
  4108. 45 : "deadside"
  4109. 46 : "deadsitting"
  4110. 47 : "repel_jump"
  4111. 48 : "repel_repel"
  4112. 49 : "repel_shoot"
  4113. 50 : "repel_land"
  4114. 51 : "repel_die"
  4115. 52 : "dragholeidle"
  4116. 53 : "draghole"
  4117. 54 : "bustwall"
  4118. 55 : "hoprail"
  4119. 56 : "converse1"
  4120. 57 : "converse2"
  4121. 58 : "startleleft"
  4122. 59 : "startleright"
  4123. 60 : "divecover"
  4124. 61 : "defuse"
  4125. 62 : "corner1"
  4126. 63 : "corner2"
  4127. 64 : "stonetoss"
  4128. 65 : "cliffdie"
  4129. 66 : "diveaside_idle"
  4130. 67 : "diveaside"
  4131. 68 : "kneeldive_idle"
  4132. 69 : "kneeldive"
  4133. 70 : "WM_button"
  4134. 71 : "WM_moatjump"
  4135. 72 : "bustwindow"
  4136. 73 : "dragleft"
  4137. 74 : "dragright"
  4138. 75 : "trackwave"
  4139. 76 : "trackdive"
  4140. 77 : "flyback"
  4141. 78 : "impaled"
  4142. 79 : "jumptracks"
  4143. 80 : "pipetoss"
  4144. 81 : "plunger"
  4145. ]
  4146.  
  4147. ]
  4148. @PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/icky.mdl") = monster_ichthyosaur : "Ichthyosaur" []
  4149. @PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/leech.mdl") = monster_leech : "Leech" []
  4150. @PointClass base(Monster) size(-16 -16 -32, 16 16 32) studio("models/miniturret.mdl") = monster_miniturret : "Mini Auto Turret"
  4151. [
  4152. orientation(Choices) : "Orientation" : 0 =
  4153. [
  4154. 0 : "Floor Mount"
  4155. 1 : "Ceiling Mount"
  4156. ]
  4157. spawnflags(Flags) =
  4158. [
  4159. 32 : "Autostart" : 0
  4160. 64 : "Start Inactive" : 0
  4161. ]
  4162. ]
  4163. @PointClass base(Monster) size(-192 -192 0, 192 192 384) studio("models/nihilanth.mdl") = monster_nihilanth : "Nihilanth" []
  4164.  
  4165. //* The helicopter which flies around and drops grunts. Basically, whenever a grunt
  4166. //* dies, a replacement will be dropped so that the level contains the same number as
  4167. //* before.
  4168. //* With Spirit, it's no longer necessary to place grunts in your level:
  4169. //* in that situation the Osprey pretends, arbitrarily, that 4 have already died.
  4170. //* NB: An osprey must have a patrol path; if you don't give one, it will fail to
  4171. //* work. Spirit also fixes the Half-Life bug which meant a path_corner had to give
  4172. //* a Speed value... though the Speed values will still function if you choose to use them.
  4173. //* FYI: an Osprey will only drop grunts at path_corners whose Speed is set
  4174. //* to 0. After dropping grunts, it will head for the nearest path_corner whose Speed
  4175. //* is greater than 400, if one exists. Spirit also fixes the Half-Life bug which
  4176. //* crashed the game if no such corner was available.
  4177. @PointClass base(Monster) size(-480 -480 -112, 480 480 24) studio("models/osprey.mdl") = monster_osprey : "Osprey"
  4178. [
  4179. spawnflags(Flags) =
  4180. [
  4181. //* Until triggered, the osprey won't move or drop grunts.
  4182. 64 : "Start Inactive" : 0
  4183. ]
  4184. ]
  4185. //* Like @monster_bloater: no AI, no death animation.
  4186. @PointClass base(Monster) size(-6 -6 0, 6 6 6) studio("models/bigrat.mdl") = monster_rat : "Rat" []
  4187. @PointClass base(Weapon,Targetx,RenderFields) studio("models/w_satchel.mdl") = monster_satchelcharge : "Live Satchel Charge" []
  4188. @PointClass base(Monster, TalkMonster) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist : "Scared Scientist"
  4189. [
  4190. body(Choices) : "Body" : -1 =
  4191. [
  4192. -1: "Random"
  4193. 0 : "Glasses"
  4194. 1 : "Einstein"
  4195. 2 : "Luther (black skin)"
  4196. 3 : "Slick"
  4197. ]
  4198. sequence(Choices) : "Animation Sequence (editor)" : 13 =
  4199. [
  4200. 0 : "walk"
  4201. 1 : "walk_scared"
  4202. 2 : "run"
  4203. 3 : "run1"
  4204. 4 : "run2"
  4205. 5 : "180_Left"
  4206. 6 : "180_Right"
  4207. 7 : "flinch"
  4208. 8 : "flinch1"
  4209. 9 : "laflinch"
  4210. 10 : "raflinch"
  4211. 11 : "llflinch"
  4212. 12 : "rlflinch"
  4213. 13 : "idle1"
  4214. 14 : "idle3"
  4215. 15 : "idle4"
  4216. 16 : "idle5"
  4217. 17 : "idle6"
  4218. 18 : "idle7"
  4219. 19 : "crouchstand"
  4220. 20 : "crouch_idle"
  4221. 21 : "crouch_idle2"
  4222. 22 : "crouch_idle3"
  4223. 23 : "crouch_idle3"
  4224. 24 : "panic"
  4225. 25 : "fear1"
  4226. 26 : "fear2"
  4227. 27 : "eye_wipe"
  4228. 28 : "pull_needle"
  4229. 29 : "return_needle"
  4230. 30 : "give_shot"
  4231. 31 : "diesimple"
  4232. 32 : "dieforward"
  4233. 33 : "dieforward1"
  4234. 34 : "diebackward"
  4235. 35 : "headshot"
  4236. 36 : "gutshot"
  4237. 37 : "lying_on_back"
  4238. 38 : "lying_on_stomach"
  4239. 39 : "dead_sitting"
  4240. 40 : "dead_table1"
  4241. 41 : "dead_table2"
  4242. 42 : "dead_table3"
  4243. 43 : "barnacled1"
  4244. 44 : "barnacled2"
  4245. 45 : "barnacled3"
  4246. 46 : "barnacled4"
  4247. 47 : "console"
  4248. 48 : "checktie"
  4249. 49 : "dryhands"
  4250. 50 : "tieshoe"
  4251. 51 : "whiteboard"
  4252. 52 : "studycart"
  4253. 53 : "lean"
  4254. 54 : "pondering"
  4255. 55 : "pondering2"
  4256. 56 : "pondering3"
  4257. 57 : "buysoda"
  4258. 58 : "pause"
  4259. 59 : "yes"
  4260. 60 : "no"
  4261. 61 : "push_button"
  4262. 62 : "converse1"
  4263. 63 : "converse2"
  4264. 64 : "retina"
  4265. 65 : "talkleft"
  4266. 66 : "talkright"
  4267. 67 : "deskidle"
  4268. 68 : "coffee"
  4269. 69 : "franticbutton"
  4270. 70 : "startle"
  4271. 71 : "sitlookleft"
  4272. 72 : "sitlookright"
  4273. 73 : "sitscared"
  4274. 74 : "sitting2"
  4275. 75 : "sitting3"
  4276. 76 : "cprscientist"
  4277. 77 : "cprscientistrevive"
  4278. 78 : "cowering_in_corner"
  4279. 79 : "sstruggleidle"
  4280. 80 : "sstruggle"
  4281. 81 : "headcrabbed"
  4282. 82 : "c1a0_catwalkidle"
  4283. 83 : "c1a0_catwalk"
  4284. 84 : "ceiling_dangle"
  4285. 85 : "ventpull1"
  4286. 86 : "ventpull2"
  4287. 87 : "ventpullidle1"
  4288. 88 : "ventpullidle2"
  4289. 89 : "sitidle"
  4290. 90 : "sitstand"
  4291. 91 : "keypad"
  4292. 92 : "panic1"
  4293. 93 : "lookwindow"
  4294. 94 : "wave"
  4295. 95 : "pulldoor"
  4296. 96 : "beatdoor"
  4297. 97 : "fallingloop"
  4298. 98 : "crawlwindow"
  4299. 99 : "divewindow"
  4300. 100 : "locked_door"
  4301. 101 : "push_button2"
  4302. 102 : "unlock_door"
  4303. 103 : "quicklook"
  4304. 104 : "handrailidle"
  4305. 105 : "handrail"
  4306. 106 : "hanging_idle"
  4307. 107 : "fall"
  4308. 108 : "scientist_get_pulled"
  4309. 109 : "hanging_idle2"
  4310. 110 : "fall_elevator"
  4311. 111 : "scientist_idlewall"
  4312. 112 : "ickyjump_sci"
  4313. 113 : "haulscientist"
  4314. 114 : "c1a4_wounded_idle"
  4315. 115 : "c1a4_dying_speech"
  4316. 116 : "tentacle_grab"
  4317. 117 : "helicack"
  4318. 118 : "windive"
  4319. 119 : "scicrashidle"
  4320. 120 : "scicrash"
  4321. 121 : "onguard"
  4322. 122 : "seeya"
  4323. 123 : "rocketcrawl"
  4324. 124 : "portal"
  4325. 125 : "gluonshow"
  4326. 126 : "crouch"
  4327. 127 : "kneel"
  4328. ]
  4329. ]
  4330. @PointClass base(Targetname, Angles, Appearflags,RenderFields) size(-16 -16 0, 16 16 72) studio("models/scientist.mdl") = monster_scientist_dead : "Dead Scientist"
  4331. [
  4332. body(Choices) : "Body" : -1 =
  4333. [
  4334. -1: "Random"
  4335. 0 : "Glasses"
  4336. 1 : "Einstein"
  4337. 2 : "Luther (black skin)"
  4338. 3 : "Slick"
  4339. ]
  4340. pose(Choices) : "Pose" : 0 =
  4341. [
  4342. 0 : "On back"
  4343. 1 : "On Stomach"
  4344. 2 : "Sitting"
  4345. 3 : "Hanging"
  4346. 4 : "Table1"
  4347. 5 : "Table2"
  4348. 6 : "Table3"
  4349. ]
  4350. sequence(Choices) : "Animation Sequence (editor)" : 37 =
  4351. [
  4352. 37 : "lying_on_back"
  4353. 38 : "lying_on_stomach"
  4354. 39 : "dead_sitting"
  4355. 40 : "dead_table1"
  4356. 41 : "dead_table2"
  4357. 42 : "dead_table3"
  4358. ]
  4359.  
  4360. ]
  4361. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/sentry.mdl") = monster_sentry : "Sentry Turret Gun"
  4362. [
  4363. spawnflags(Flags) =
  4364. [
  4365. 32 : "Autostart" : 0
  4366. 64 : "Start Inactive" : 0
  4367. ]
  4368. ]
  4369. @PointClass base(Monster) size(-14 -14 22, 14 14 72) studio("models/scientist.mdl") = monster_sitting_scientist : "Sitting Scientist"
  4370. [
  4371. body(Choices) : "Body" : -1 =
  4372. [
  4373. -1: "Random"
  4374. 0 : "Glasses"
  4375. 1 : "Einstein"
  4376. 2 : "Luther (black skin)"
  4377. 3 : "Slick"
  4378. ]
  4379. spawnflags(Flags) =
  4380. [
  4381. //NEW 0.4
  4382. //* Sitting scientists are pre-disaster by default.
  4383. 1024: "Post-Disaster" : 0
  4384. ]
  4385. sequence(Choices) : "Animation Sequence (editor)" : 74 =
  4386. [
  4387. 71 : "sitlookleft"
  4388. 72 : "sitlookright"
  4389. 73 : "sitscared"
  4390. 74 : "sitting2"
  4391. 75 : "sitting3"
  4392. ]
  4393.  
  4394. ]
  4395. @PointClass base(Monster) size(-16 -16 0, 16 16 36) studio("models/w_squeak.mdl") = monster_snark : "Armed Snark" []
  4396.  
  4397. //NEW 0.7
  4398. //* While a monster_target is active, monsters will attack it as though it were another monster.
  4399. //* An easy way to make monsters shoot out lights, attack func_tanks, etc.
  4400. @PointClass color(0 200 200) base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monster_target : "Target for monsters to attack"
  4401. [
  4402. frags(choices) : "When active, count as:" : 11 =
  4403. [
  4404. 0 : "Ignored"
  4405. //* Disliked by human military and most aliens.
  4406. 3 : "Scientist"
  4407. //* Hated by human military, disliked by most aliens.
  4408. 11: "Barney"
  4409. //* Hated by alien military, disliked by barneys and most aliens.
  4410. 4 : "Human Military"
  4411. //* Hated by human military, disliked by barneys.
  4412. 5 : "Alien Military"
  4413. //* Disliked by human miliary and barneys.
  4414. 7 : "Other Alien"
  4415. //* Disliked by all humans. Hated by Bullsquids.
  4416. 8 : "Headcrab"
  4417. //* Disliked by all humans and by other Bullsquids. Feared by Headcrabs.
  4418. 9 : "Bullsquid"
  4419. //* Disliked by everyone, except other Faction A members.
  4420. 14 : "Faction A"
  4421. //* Disliked by everyone, except other Faction B members.
  4422. 15 : "Faction B"
  4423. //* Disliked by everyone, except other Faction C members.
  4424. 16 : "Faction C"
  4425. ]
  4426. spawnflags(Flags) =
  4427. [
  4428. 1: "Start inactive" : 0
  4429. ]
  4430. ]
  4431. @PointClass base(Monster) size(-32 -32 0, 32 32 64) studio("models/tentacle2.mdl") = monster_tentacle : "Tentacle Arm"
  4432. [
  4433. sweeparc(integer) : "Sweep Arc" : 130
  4434. sound(choices) : "Tap Sound" : -1 =
  4435. [
  4436. -1: "None"
  4437. 0 : "Silo"
  4438. 1 : "Dirt"
  4439. 2 : "Water"
  4440. ]
  4441. ]
  4442. @PointClass base(Monster) = monster_tripmine : "Active Tripmine"
  4443. [
  4444. spawnflags(Flags) =
  4445. [
  4446. 1 : "Instant On" : 0
  4447. ]
  4448. ]
  4449. @PointClass base(Monster) size(-32 -32 -32, 32 32 32) studio("models/turret.mdl") = monster_turret : "Auto Turret"
  4450. [
  4451. orientation(Choices) : "Orientation" : 0 =
  4452. [
  4453. 0 : "Floor Mount"
  4454. 1 : "Ceiling Mount"
  4455. ]
  4456. spawnflags(Flags) =
  4457. [
  4458. 32 : "Autostart" : 0
  4459. 64 : "Start Inactive" : 0
  4460. ]
  4461. ]
  4462. @PointClass base(Monster) size(-16 -16 0, 16 16 72) studio("models/zombie.mdl") = monster_zombie : "Scientist Zombie" [
  4463.  
  4464. sequence(Choices) : "Animation Sequence (editor)" : 10 =
  4465. [
  4466. 0 : "idle1"
  4467. 1 : "turn left"
  4468. 2 : "turn right"
  4469. 3 : "flinch small"
  4470. 4 : "flinch"
  4471. 5 : "big flinch"
  4472. 6 : "getup"
  4473. 7 : "falling"
  4474. 8 : "attack1"
  4475. 9 : "attack2"
  4476. 10 : "walk"
  4477. 11 : "laflinch"
  4478. 12 : "raflinch"
  4479. 13 : "llflinch"
  4480. 14 : "rlflinch"
  4481. 15 : "dieheadshot"
  4482. 16 : "dieheadshot2"
  4483. 17 : "diesimple"
  4484. 18 : "dieback"
  4485. 19 : "dieforward"
  4486. 20 : "pause"
  4487. 21 : "bust through wall"
  4488. 22 : "kick punnch wall"
  4489. 23 : "bust window"
  4490. 24 : "soda"
  4491. 25 : "slide idle"
  4492. 26 : "slide wall"
  4493. 27 : "ventclimbidle"
  4494. 28 : "vent climb"
  4495. 29 : "deadidle"
  4496. 30 : "dead wall"
  4497. 31 : "freaksitdie"
  4498. 32 : "freaksit"
  4499. 33 : "eatbodytable"
  4500. 34 : "eatbody"
  4501. 35 : "eatbodystand"
  4502. 36 : "ripdoor"
  4503. 37 : "pull Scientist"
  4504. 38 : "eating"
  4505. 39 : "eat to stand"
  4506. 40 : "vent z idle"
  4507. 41 : "vent c1a3"
  4508. 42 : "haul zombie"
  4509. 43 : "c2a3 snack getup"
  4510. ]
  4511. ]
  4512. @PointClass base(Targetname, MoveWith) size(-16 -16 -16, 16 16 16) = monstermaker : "Monster Maker"
  4513. [
  4514. noise(String) : "Position to place monster at [LP]"
  4515. noise1(String) : "Offset from position of monster [LV]"
  4516. noise2(String) : "Angles of monster [LV]"
  4517. noise3(String) : "Velocity of monster [LV]"
  4518. TriggerTarget(String) : "TriggerTarget"
  4519. TriggerCondition(Choices) : "Trigger Condition" =
  4520. [
  4521. 0 : "No Trigger"
  4522. 1 : "See Player, Mad at Player"
  4523. 2 : "Take Damage"
  4524. 3 : "50% Health Remaining"
  4525. 4 : "Death"
  4526. 7 : "Hear World"
  4527. 8 : "Hear Player"
  4528. 9 : "Hear Combat"
  4529. 10: "See Player Unconditional"
  4530. 11: "See Player, Not In Combat"
  4531. ]
  4532. target(string) : "Target On Release"
  4533. monstertype(string) : "Monster Type"
  4534. netname(target_source) : "Name of Spawned Monsters"
  4535. spawnflags(Flags) =
  4536. [
  4537. //* If you don't give the monstermaker a Name, this is the default.
  4538. 1 : "Start ON" : 0
  4539. //* In Cyclic mode, the maker will spawn a monster each time it's triggered.
  4540. //* (Otherwise, triggering the maker will turn it on, and it will then make monsters as
  4541. //* often as its 'delay' permits.)
  4542. 4 : "Cyclic" : 0
  4543. 8 : "MonsterClip" : 0
  4544. //NEW 0.5
  4545. //* By default, unless "number of monsters" is 1, the corpses of the monsters will fade out.
  4546. //* Tick here to override this. In order to prevent infinite numbers of corpses from appearing,
  4547. //* this flag is ignored if Number of Monsters is set to unlimited,
  4548. 16 : "Leave corpses" : 0
  4549. //NEW AJH
  4550. //* Tick to force monsters to spawn regardless of other monsters being present.
  4551. 32 : "Force Spawn" : 0
  4552. //NEW 0.6
  4553. //* If this is ticked, the created monsters won't drop their weapons when they die.
  4554. 1024: "Don't Drop Gun" : 0
  4555. ]
  4556. //* The total number of monsters the monstermaker can create (-1 = unlimited)
  4557. monstercount(choices) : "Number of Monsters" : -1 =
  4558. [
  4559. -1 : "Unlimited"
  4560. ]
  4561. //* If -1, a new monster will only be made when the last monster dies.
  4562. //* Otherwise, this is is the time to wait (seconds) between producing new monsters.
  4563. delay(string) : "Time between spawns" : "5"
  4564. //NEW 0.4
  4565. //* Mainly for use with @env_warpball. This makes a delay between the monstermaker triggering
  4566. //* its "target on release" entity and the monster appearing. For best results, set the
  4567. //* "target on release" value to the env_warpball, and set the "delay before release" to about 0.5.
  4568. spawndelay(string) : "Delay before release" : "0"
  4569. //* The maximum number of live children allowed at one time; if this is set, new children will
  4570. //* not be made until one dies. (-1 = no limit)
  4571. m_imaxlivechildren(integer) : "Max live children" : 5
  4572. //* If you just want a monster to be ignored, use the "Prisoner" flag instead.
  4573. m_iClass(choices) : "Monsters behave as" : 0 =
  4574. [
  4575. 0 : "Normal"
  4576. //* Likes players and barneys; hates Human Military and most aliens; scared of Alien Military and Bullsquids.
  4577. 3 : "Scientist"
  4578. //* Likes players and scientists; dislikes Machines, Human Military, and all aliens.
  4579. 11: "Barney"
  4580. //* Dislikes scientists and most aliens. Hates players, barneys and Alien Military.
  4581. 4 : "Human Military"
  4582. //* Machines go clang when hit, and never gib. Bioweapons (Snarks and Hornets) ignore them.
  4583. //* Otherwise, they're pretty much like Human Military.
  4584. 1 : "Machine (Human Military)"
  4585. //* Hates players and Human Military. Dislikes Machines, scientists and barneys.
  4586. 5 : "Alien Military"
  4587. //* Dislikes Machines and all humans.
  4588. 7 : "Other Alien"
  4589. //* Dislikes all humans. Scared of Bullsquids.
  4590. 8 : "Headcrab"
  4591. //* Hates Headcrabs. Dislikes humans and other Bullsquids.
  4592. 9 : "Bullsquid"
  4593. //* Dislikes everyone, except other Faction A members.
  4594. 14 : "Faction A"
  4595. //* Dislikes everyone, except other Faction B members.
  4596. 15 : "Faction B"
  4597. //* Dislikes everyone, except other Faction C members.
  4598. 16 : "Faction C"
  4599. ]
  4600. //NEW 0.5
  4601. //* Replaces the old "Player Ally" flag.
  4602. m_iPlayerReact(choices) : "Monsters reaction to player" : 0 =
  4603. [
  4604. 0 : "Normal"
  4605. 1 : "Ignore"
  4606. //* Scientists usually use this behaviour.
  4607. 2 : "Friendly until hurt"
  4608. //* Barneys usually use this behaviour.
  4609. 3 : "Friendly unless provoked"
  4610. 4 : "Enemy"
  4611. // Not yet implemented, but will allow any monster to act like a barney/scientist.
  4612. //5 : "Follower"
  4613. ]
  4614. ]
  4615.  
  4616. //NEW 0.7.1
  4617. //* For controlling the movement of other entities. There are two main ways to use this entity:
  4618. //* a) Don't give it a targetname, just tell it what entity to affect. In this case, the
  4619. //* motion of the affected entity will be managed however you want. This is mostly useful to
  4620. //* make things MoveWith a @func_pushable or a monster. (Just name the func_pushable in the
  4621. //* manager's "Position" field.)
  4622. //* b) Give it a targetname, but leave the "target to affect" set to *locus. Then, type the
  4623. //* motion_manager's name into the "trigger on spawn" field of, for example, an env_shooter.
  4624. //* In this case, every shot the shooter makes will be managed throughout its lifetime.
  4625. //* If you just want to change an entity's position or velocity instantly, once, then see
  4626. //* @trigger_motion.
  4627. @PointClass base(Targetname) = motion_manager : "Control the movement and direction of an entity"
  4628. [
  4629. target(target_destination) : "Target to affect [LE]" : "*locus"
  4630. m_iszPosition(string) : "Position (blank = no change)"
  4631. m_iPosMode(choices) : "Meaning of Position" : 0 =
  4632. [
  4633. 0 : "Set position [LP]"
  4634. 1 : "Offset position [LV]"
  4635. 2 : "Set velocity [LV]"
  4636. 3 : "Accelerate by [LV]"
  4637. 4 : "Follow position [LP]"
  4638. ]
  4639. m_iPosAxis(choices) :"Axes to Modify" : 0 =
  4640. [
  4641. 0 : "All Axes (Default)"
  4642. 1 : "X axis only"
  4643. 2 : "Y axis only"
  4644. 4 : "Z axis only"
  4645. 6 : "Not X (YZ only)"
  4646. 5 : "Not Y (XZ only)"
  4647. 3 : "Not Z (XY only)"
  4648. ]
  4649. m_iszFacing(string) : "Facing (blank = no change)"
  4650. m_iFaceMode(choices) : "Meaning of Facing" : 0 =
  4651. [
  4652. 0 : "Face direction [LV]"
  4653. 1 : "Rotate by [LV]"
  4654. 2 : "Rotate by [PYR]"
  4655. 3 : "Set avelocity [PYR]"
  4656. ]m_iFaceAxis(choices) :"Axes to Modify" : 0 =
  4657. [
  4658. 0 : "All Axes (Default)"
  4659. 1 : "Pitch only"
  4660. 2 : "Yaw only"
  4661. 4 : "Roll only"
  4662. 6 : "Not Pitch"
  4663. 5 : "Not Yaw"
  4664. 3 : "Not Roll"
  4665. ]
  4666.  
  4667. spawnflags(flags) =
  4668. [
  4669. 1: "Debug" : 0
  4670. 2: "swap pitch/yaw" : 0
  4671. 4: "swapyaw/roll" : 0
  4672. 8: "swap roll/pitch" : 0
  4673. 16: "stepped" : 0
  4674. ]
  4675. ]
  4676.  
  4677. @PointClass base(Targetname, Target) color(128 255 128) = multisource : "Multisource"
  4678. [
  4679. //NEW 0.3
  4680. netname(string) : "Target on turning off"
  4681. globalstate(string) : "Global State Master"
  4682. ]
  4683.  
  4684. //NEW 0.4
  4685. //* A multi_alias is an @info_alias with more than one target. It's mainly useful to group entities
  4686. //* together, while still allowing them to have individual names.
  4687. //* For example, suppose you have a set of lights in your level. Each one has its own lightswitch,
  4688. //* which allows it to be switched on and off on its own. But later in the level, you want the power
  4689. //* (i.e. all the lights) to go off. One way to do that would be to make a multi_alias which
  4690. //* targets all the lights, and simply trigger what that alias refers to.
  4691. @PointClass base(Targetname) = multi_alias : "Multi-target alias"
  4692. [
  4693. //NEW 0.5
  4694. m_iMode(choices) : "Mode" : 0 =
  4695. [
  4696. 0: "Normal"
  4697. //* Each time the alias is used, one of the targets will be chosen
  4698. //* at random. Targets with higher values are proportionally more
  4699. //* likely to be chosen.
  4700. 1: "Choose one (weighted)"
  4701. //* Each time the alias is used, zero or more of the targets will
  4702. //* be valid. The 'value' for each target gives the percentage
  4703. //* chance that it will be valid each time.
  4704. 2: "% chance for each"
  4705. ]
  4706. ]
  4707.  
  4708. //* Triggers a sequence of up to 16 entities, at various time offsets.
  4709. //* To specify the list of entities for it to trigger, turn off Worldcraft's "smart edit" mode
  4710. //* and add fields manually. The name of the field is the targetname of the entity to trigger,
  4711. //* and the contents of the field are the time (in seconds) to wait before triggering it.
  4712. //* If a master is given, then while the master is locked, the manager will ignore
  4713. //* all signals. This won't prevent it from continuing a sequence that started while the master
  4714. //* was unlocked, but it will prevent new sequences from starting.
  4715. //* If you refer to a multi_manager via [LN], it returns the number of seconds since the sequence started.
  4716. @PointClass base(Targetname, Master) color(255 128 0) iconsprite("sprites/multimanager.spr") = multi_manager : "MultiTarget Manager"
  4717. [
  4718. //NEW 0.3
  4719. //* How long to wait before starting the sequence. This delay is <u>in addition to</u> the offsets given for each individual target.
  4720. wait(string) : "Time offset"
  4721. //NEW 0.3
  4722. //* If set, then each time it's triggered the manager will wait for a random length of time. The "Time Offset"
  4723. //* value is used as a minimum offset.
  4724. maxwait(string) : "Max Time offset (Random)"
  4725. //NEW 0.3
  4726. //* Message to send to the targets.
  4727. triggerstate(choices) : "Trigger to send" =
  4728. [
  4729. 0: "Toggle"
  4730. 1: "On"
  4731. 2: "Off"
  4732. 3: "Kill"
  4733. //* If you select this, the manager will send on whatever triggers (e.g. USE_ON) that it received
  4734. //* itself. So this is a way to "fork" the signal sent by another entity.
  4735. 4: "Same as input"
  4736. ]
  4737. //NEW 0.3
  4738. mode(choices) : "Mode" =
  4739. [
  4740. //* The 'value' for each target is the time offset at which to fire it.
  4741. 0: "Normal (time offset)"
  4742. //* Choose one of the targets at random, and fire it. The 'value' gives the relative chance
  4743. //* that each target will be chosen.
  4744. 1: "Choose one (weighted)"
  4745. //* Go through the list of targets, and for each one either fire it, or don't fire it.
  4746. //* The 'value' gives the percentage chance that a value will get fired.
  4747. 2: "% chance for each"
  4748. //* In this mode, the number for each target specifies its position in the sequence
  4749. //* (relative to the other numbers), but all the targets will actually be fired at the same time.
  4750. //* So setting the targets to A 1, B 2 and C 3 would be equivalent to
  4751. //* setting A 0, B 0, and C 0 in normal mode - except that you can guarantee A will be
  4752. //* fired just before B, which will be just before C.
  4753. 3: "No delay (ordered)"
  4754. ]
  4755. //NEW 0.7.1
  4756. //* Gives threads a name of their own. This lets you kill/trigger the threads
  4757. //* without affecting the manager, and vice versa. (If this is left blank, the
  4758. //* threads have the same name as the manager.)
  4759. //* This is mostly useful on a multithreaded looped manager, where you can stop all the loops
  4760. //* simultaneously by triggering the threads off.
  4761. m_iszThreadName(target_source) : "Name of threads"
  4762. //NEW 0.7.1
  4763. //* Whenever a thread is created, the entity named here will be triggered,
  4764. //* with the new thread as the locus.
  4765. m_iszLocusThread(string) : "Trigger on spawn (locus = thread)"
  4766. spawnflags(Flags) =
  4767. [
  4768. //* By default, a manager will ignore all inputs while it's performing a sequence.
  4769. //* Tick this to allow more than one sequence to run at a time.
  4770. 1 : "Multi-threaded" : 0
  4771. //NEW 0.6
  4772. //* NB: This flag has been moved. Apologies.
  4773. //* When the sequence ends, it will start again from the beginning. To stop the
  4774. //* loop, toggle the manager a second time.
  4775. 4 : "Loop" : 0
  4776. //NEW 0.6
  4777. //* The manager will USE_KILL itself when the sequence is complete.
  4778. //* If Loop is also ticked, the manager will only USE_KILL itself when told to stop the loop.
  4779. 8 : "Once only" : 0
  4780. //NEW 0.7.1
  4781. //* The manager will activate itself when the level starts, so that you don't
  4782. //* have to use a trigger_auto. (particularly useful for looping multi_managers.)
  4783. 16 : "Start on" : 0
  4784. //NEW 0.7.1
  4785. //* The manager will report to the console when it fires, etc.
  4786. 32 : "Debug mode" : 0
  4787. ]
  4788. ]
  4789.  
  4790. //NEW 0.3
  4791. //* A multi_watcher is like a normal @watcher, except that it watches up to 16 entities at once.
  4792. //* The entity is probably most useful when used as a master for another entity- a versatile replacement
  4793. //* for the @multisource, in a way. Note that if you need to handle a complex logical operation, you can make a
  4794. //* multi_watcher which watches other multi_watchers.
  4795. //* The list of watched entities is specified in the same way as the targets of a @multi_manager, except that the
  4796. //* 'value' should be set to 0. (Future versions of Spirit may make use of the value, but for now it's ignored.)
  4797. //* This is a very powerful entity, but is probably only useful for experienced mappers.
  4798. @PointClass base(Targetname) = multi_watcher : "State Watcher"
  4799. [
  4800. m_fLogic(choices) : "Logical test" : 0 =
  4801. [
  4802. 0: "All (AND)"
  4803. 2: "Not all (NAND)"
  4804. 1: "At least one (OR)"
  4805. 3: "None (NOR)"
  4806. 4: "Exactly one (XOR)"
  4807. 5: "Any number but one (XNOR)"
  4808. ]
  4809. //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes.
  4810. target(target_destination) : "Entity to notify"
  4811. //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'.
  4812. spawnflags(flags) =
  4813. [
  4814. //* If this is enabled, the watcher will always notify its target with USE_TOGGLE, instead of sending ON or OFF.
  4815. 1: "Send 'Toggle'" : 0
  4816. 8: "NOT 'On'" : 0
  4817. 16: "'Off'" : 0
  4818. 32: "'Turn On'" : 0
  4819. 64: "'Turn Off'" : 0
  4820. 128:"'In Use'" : 0
  4821. ]
  4822. ]
  4823.  
  4824. @PointClass base(Targetname, Angles, MoveWith) size(16 16 16) color(247 181 82) iconsprite("sprites/pathcorner.spr") = path_corner : "Path Corner"
  4825. [
  4826. spawnflags(Flags) =
  4827. [
  4828. 1: "Wait for retrigger" : 0
  4829. 2: "Teleport" : 0
  4830. 4: "Fire once" : 0
  4831. ]
  4832. target(target_destination) : "Next stop target"
  4833. message(target_destination) : "Fire on Pass"
  4834. wait(integer) : "Wait here (secs)" : 0
  4835. speed(integer) : "Speed (0 = no change)" : 0
  4836. //NEW 0.5
  4837. armortype(choices) : "Meaning of 'Speed'" : 0 =
  4838. [
  4839. 0 : "Set new speed"
  4840. //* It's very easy to get the train going 'infinitely' fast with this setting.
  4841. //* Excessively high speeds tend to cause problems, so use with caution.
  4842. 1 : "Increase speed by"
  4843. //* This permanently changes the train's speed, the same way as the other
  4844. //* settings. In other words: when it reaches the next corner, the train's
  4845. //* speed won't change back.
  4846. 2 : "Time to next corner"
  4847. ]
  4848. //NEW 0.5
  4849. //* When the train passes this corner, its rate of turning will be set to this value -
  4850. //* just like the "speed" for a corner sets the train's linear speed.
  4851. //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the
  4852. //* field blank, on the other hand, will leave the train turning at the same rate.
  4853. turnspeed(string) : "Turn speed (Y Z X)"
  4854. //NEW 0.5
  4855. //* If set to "Yes", then as trains approach this corner, they will turn to face its
  4856. //* 'angle' value.
  4857. //* By default, the train will keep turning after passing the corner. To
  4858. //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0".
  4859. armorvalue(choices) : "Match Angle" : 0 =
  4860. [
  4861. 0 : "No"
  4862. 1 : "Yes"
  4863. ]
  4864. ]
  4865.  
  4866. @PointClass base(Targetname, Angles, MoveWith) size(16 16 16) = path_track : "Train Track Path"
  4867. [
  4868. spawnflags(Flags) =
  4869. [
  4870. 1: "Disabled" : 0
  4871. 2: "Fire once" : 0
  4872. 4: "Branch Reverse" : 0
  4873. 8: "Disable train" : 0
  4874. ]
  4875. target(target_destination) : "Next stop target"
  4876. altpath(target_destination) : "Branch Path"
  4877. message(target_destination) : "Fire on Pass"
  4878. netname(target_destination) : "Fire on dead end"
  4879. speed(integer) : "Speed (0 = no change)" : 0
  4880. //NEW 0.5
  4881. armortype(choices) : "Meaning of 'Speed'" : 0 =
  4882. [
  4883. //* In normal Half-Life, this was the only setting available.
  4884. //* NB: This will have no effect unless the train has the "No Control" flag set.
  4885. 0 : "Set current speed"
  4886. //* This sets the train's 'master speed', which means that the train's speed in
  4887. //* all gears (half speed, quarter speed, etc) will also change in proportion to
  4888. //* the number you set.
  4889. 3 : "Set master speed"
  4890. //* It's very easy to get the train going 'infinitely' fast with this setting.
  4891. //* Excessively high speeds tend to cause problems, so use with caution.
  4892. //* (This changes the 'master speed').
  4893. 1 : "Increase speed by"
  4894. //* This permanently changes the train's speed, the same way as the other
  4895. //* settings. In other words: when it reaches the next corner, the train's
  4896. //* speed won't change back.
  4897. //* (This changes the 'master speed').
  4898. 2 : "Time to next corner"
  4899.  
  4900. // 3: "Change gear"?
  4901. ]
  4902. //NEW 0.5
  4903. //* When the train passes this corner, its rate of turning will be set to this value -
  4904. //* just like the "speed" for a corner sets the train's linear speed.
  4905. //* NB: setting this field to "0 0 0" will make the train stop turning. Leaving the
  4906. //* field blank, on the other hand, will leave the train turning at the same rate.
  4907. turnspeed(string) : "Turn speed (Y Z X)"
  4908. //NEW 0.5
  4909. frags(choices) : "Meaning of 'Turn Speed'" : 0 =
  4910. [
  4911. 0 : "Set current turn speed"
  4912. //* The value specified will be scaled to fit the speed (e.g. half
  4913. //* speed, quarter speed) the train is currently moving at.
  4914. 1 : "Set master turn speed"
  4915. //* When you set Turn Speed to make a tracktrain turn around, its normal turning
  4916. //* (face along the track, turn at corners) gets suppressed. Select this when you
  4917. //* want to reenable it. (The 'Turn Speed' value isn't used when this option is
  4918. //* selected.)
  4919. 2 : "Back to normal"
  4920. ]
  4921. //NEW 0.5
  4922. //* If set to "Yes", then as trains approach this corner, they will turn to face its
  4923. //* 'angle' value.
  4924. //* By default, the train will keep turning after passing the corner. To
  4925. //* make it stay facing your chosen direction, set "Turn Speed" to "0 0 0".
  4926. armorvalue(choices) : "Match Angle" : 0 =
  4927. [
  4928. 0 : "No"
  4929. 1 : "Yes"
  4930. ]
  4931. ]
  4932.  
  4933.  
  4934. //
  4935. // player effects
  4936. //
  4937.  
  4938. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_freeze : "Stop player from moving"
  4939. [
  4940. delay(string) : "Duration (0 = until retriggered)" : "5"
  4941. netname(string): "Clamp view dir [LV]" : "0 1 0"
  4942. noise(string): "Yaw range [LN]" : "360"
  4943. noise1(string): "Look up range [LN]" : "90"
  4944. noise2(string): "Look down range [LN] (= up if blank)"
  4945. noise3(string): "Turn speed [LN] (blank = instant)"
  4946. spawnflags(Flags) =
  4947. [
  4948. //* If you set this, then the entity expects to freeze the locus you tell it.
  4949. //* If there's no locus, or it isn't a player, nothing will happen.
  4950. //* (If you don't tick this, then player_freeze will just affect player 1.)
  4951. 1: "Affect locus" : 0
  4952. //* Don't stop the player moving, only clamp his view.
  4953. 2: "View Only " : 0
  4954. ]
  4955. ]
  4956.  
  4957. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_loadsaved : "Load Auto-Saved game"
  4958. [
  4959. duration(string) : "Fade Duration (seconds)" : "2"
  4960. holdtime(string) : "Hold Fade (seconds)" : "0"
  4961. renderamt(integer) : "Fade Alpha" : 255
  4962. rendercolor(color255) : "Fade Color (R G B)" : "0 0 0"
  4963. messagetime(string) : "Show Message delay" : "0"
  4964. message(string) : "Message To Display" : ""
  4965. loadtime(string) : "Reload delay" : "0"
  4966. ]
  4967.  
  4968. // this may be the most irritating, repetitive, time-consuming entity I've ever implemented...
  4969. // HL's ammo system is _not_ set up to make this easy.
  4970. @PointClass base(Targetname) size(-16 -16 -16, 16 16 16) = player_weaponstrip : "Strip player's weapons"
  4971. [
  4972. //NEW 0.6
  4973. //* In each of these fields, either choose a preset value from the menu, or else specify
  4974. //* a number of bullets to remove (e.g. 8).
  4975. bullets(choices) : "Take 9mm bullets" : 0 =
  4976. [
  4977. 0: "All"
  4978. -2: "All except clips"
  4979. -1: "Empty clips only"
  4980. -3: "None"
  4981. ]
  4982. magnum(choices) : "Take 357 bullets" : 0 =
  4983. [
  4984. 0: "All"
  4985. -2: "All except clip"
  4986. -1: "Empty clip only"
  4987. -3: "None"
  4988. ]
  4989. shotgun(choices) : "Take shotgun ammo" : 0 =
  4990. [
  4991. 0: "All"
  4992. -2: "All except clip"
  4993. -1: "Empty clip only"
  4994. -3: "None"
  4995. ]
  4996. crossbow(choices) : "Take crossbow bolts" : 0 =
  4997. [
  4998. 0: "All"
  4999. -2: "All except clip"
  5000. -1: "Empty clip only"
  5001. -3: "None"
  5002. ]
  5003. argrenades(choices) : "Take AR grenades" : 0 =
  5004. [
  5005. 0: "All"
  5006. -1: "None"
  5007. ]
  5008. rockets(choices) : "Take rockets" : 0 =
  5009. [
  5010. 0: "All"
  5011. -2: "All except clip"
  5012. -1: "Empty clip only"
  5013. -3: "None"
  5014. ]
  5015. uranium(choices) : "Take uranium ammo" : 0 =
  5016. [
  5017. 0: "All"
  5018. -2: "All except clips"
  5019. -1: "Empty clips only"
  5020. -3: "None"
  5021. ]
  5022. satchels(choices) : "Take satchel charges" : 0 =
  5023. [
  5024. 0: "All"
  5025. -1: "None"
  5026. ]
  5027. snarks(choices) : "Take snarks" : 0 =
  5028. [
  5029. 0: "All"
  5030. -1: "None"
  5031. ]
  5032. tripmines(choices) : "Take tripmines" : 0 =
  5033. [
  5034. 0: "All"
  5035. -1: "None"
  5036. ]
  5037. handgrenades(choices) : "Take handgrenades" : 0 =
  5038. [
  5039. 0: "All"
  5040. -1: "None"
  5041. ]
  5042. hornetgun(choices) : "Take Hornet Gun" : 0 =
  5043. [
  5044. 0: "Gun & ammo"
  5045. -3: "Ammo"
  5046. -1: "None"
  5047. ]
  5048. spawnflags(Flags) =
  5049. [
  5050. 1: "Remove suit" : 0
  5051. 2: "Leave crowbar" : 0
  5052. 4: "Leave glock" : 0
  5053. 8: "Leave 357" : 0
  5054. 16: "Leave mp5" : 0
  5055. // chaingun was never used
  5056. 64: "Leave crossbow" : 0
  5057. 128: "Leave shotgun" : 0
  5058. 256: "Leave rpg" : 0
  5059. 512: "Leave gauss" : 0
  5060. 1024: "Leave egon" : 0
  5061. ]
  5062. ]
  5063.  
  5064. //NEW 0.3
  5065. //* Note that a @monster_generic won't usually do these actions correctly.
  5066. //* If you're using this to make a @monster_barney shoot, it'll look odd (as if he's shooting bullets from his
  5067. //* knuckles) unless you first use a scripted_sequence (playing the "draw" animation) or env_customize
  5068. //* (setting body = 1) to put his pistol into his hand; as seen in the SpiritDemo level.
  5069. @PointClass base(Script) = scripted_action : "Scripted Action"
  5070. [
  5071. //NEW 1.0
  5072. m_iszMoveTarget(string) : "Move target (blank = this) [LE]"
  5073. m_fMoveTo(choices) : "Move to Position" : 5 =
  5074. [
  5075. //* Don't move at all. (Turn Type will be ignored.)
  5076. 0 : "No (don't turn)"
  5077. //* Walk to the move target, then turn.
  5078. 1 : "Walk"
  5079. //* Run to the move target, then turn.
  5080. 2 : "Run"
  5081. //* Don't move - just turn to face to whatever the turn mode.
  5082. 5 : "No - Only turn"
  5083. //* Teleport to the move target. Also, the monster's angle will instantly change to
  5084. //* whatever is specified in the turn target's "turn type".
  5085. //* Spirit fixes a bug which used to freeze a monster when playing scripts with this setting.
  5086. 4 : "Instant move + turn"
  5087. //NEW 1.0
  5088. //* Don't move - just change angle to whatever the turn type specifies, instantly.
  5089. 6 : "No - Instant turn"
  5090. ]
  5091. //NEW 0.6
  5092. //* If you specify a classname (e.g. monster_barney) here, the script will choose a random entity of that
  5093. //* type.
  5094. m_iszAttack(string) : "Entity to attack (blank = this) [LE]"
  5095. //NEW 0.3
  5096. m_fTurnType(choices) : "Turn mode" : 1 =
  5097. [
  5098. //* Turn to the same angle as the attack entity is facing.
  5099. 0 : "Match Angle"
  5100. //* Turn to look (and aim) at the entity to attack.
  5101. 1 : "Turn to face"
  5102. 2 : "Don't Turn"
  5103. ]
  5104. m_fAction(choices) : "Action to perform" : 0 =
  5105. [
  5106. //* Headcrabs: leap. Houndeye: sonic attack. Barney: fire pistol... and so on. Most monsters have a ranged attack of some kind.
  5107. 0 : "Ranged Attack"
  5108. //* Grunts and assassins: throw or launch a grenade at the "attack" entity.
  5109. //* Alien Controller: big homing fireball.
  5110. 1 : "Ranged Attack 2"
  5111. //* Scientist: Heal. Everyone else: Kick, punch, bite, slash with claws, etc.
  5112. 2 : "Melee Attack"
  5113. //* Assassins: kick. Bullsquids:bite. Headcrab: rear up on hind legs.
  5114. //* Big Momma: lay a baby headcrab. Gargantua: Flame Thrower.
  5115. 3 : "Melee Attack 2"
  5116. //* Grunts: place a grenade on the ground.
  5117. 4 : "Special Attack"
  5118. //* Don't know of any monsters which use this, but feel free to try...
  5119. 5 : "Special Attack 2"
  5120. //* Grunts and barneys: Reload. The same thing can be done with a @scripted_sequence, but it's available here for convenience.
  5121. 6 : "Reload"
  5122. //* Assassins: jump to the "attack" entity. Houndeyes, Bullsquids and Big Momma: just jump.
  5123. 7 : "Jump"
  5124. //* Just turn and/or move.
  5125. 8 : "No action"
  5126. ]
  5127. spawnflags(Flags) =
  5128. [
  5129. //* If this isn't ticked, the script will be ignored while the monster is in combat.
  5130. 64: "Override AI" : 0
  5131. ]
  5132. ]
  5133.  
  5134. //* If no targetname is given, a scripted_sentence will play sentences as often as its "refire" rate permits.
  5135. @PointClass base(Targetname, Targetx, MoveWith) size(-16 -16 0, 16 16 72) color(255 0 255) = scripted_sentence : "Scripted Sentence"
  5136. [
  5137. spawnflags(Flags) =
  5138. [
  5139. 1 : "Fire Once" : 0
  5140. 2 : "Followers Only" : 0
  5141. 4 : "Interrupt Speech" : 0
  5142. 8 : "Concurrent" : 0
  5143. ]
  5144. sentence(string) : "Sentence Name" : ""
  5145. //NEW 0.4
  5146. entity(string) : "Target Monster (blank for HEV) [LE]"
  5147. duration(string) : "Sentence Time" : "3"
  5148. //* If "Target Monster" is a classname, the game picks a random monster of that type from within this
  5149. //* search radius.
  5150. radius(integer) : "Search Radius" : 512
  5151. refire(string) : "Delay Before Refire" : "3"
  5152. listener(string) : "Listener Name/Class" : "player"
  5153. volume(string) : "Volume 0-10" : "10"
  5154. attenuation(Choices) : "Sound Radius" : 0 =
  5155. [
  5156. 0 : "Small Radius"
  5157. 1 : "Medium Radius"
  5158. 2 : "Large Radius"
  5159. 3 : "Play Everywhere"
  5160. ]
  5161. ]
  5162.  
  5163. //* If a scripted_sequence has no targetname, it will start playing as soon as the level begins.
  5164. //* If two or more scripted_sequences have the same targetname, they will be synchronised so that
  5165. //* no matter how long it takes the monsters to walk to the sequence entities, their action animations
  5166. //* will start at the same time. Also, if one of the monsters cancels its sequence (e.g. if it gets
  5167. //* hurt), the other one will too.
  5168. @PointClass base(ScriptSequence) size(-16 -16 0, 16 16 72) iconsprite("sprites/scriptedsequence.spr") = scripted_sequence : "Scripted Sequence"
  5169. [
  5170. spawnflags(Flags) =
  5171. [
  5172. //* Unless you tick this, the monster won't play the script when it's in combat.
  5173. 64: "Override AI" : 0
  5174. ]
  5175. ]
  5176.  
  5177. //NEW 0.6
  5178. @PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_tanksequence : "Scripted Tank Sequence"
  5179. [
  5180. m_iszEntity(string) : "Tank to affect"
  5181. m_iTurn(choices) : "Turn to" : 2 =
  5182. [
  5183. 0: "Don't turn"
  5184. 1: "Match angle"
  5185. 2: "Face sequence"
  5186. 3: "Face enemy"
  5187. ]
  5188. //* Specify either a classname (e.g. monster_barney) or a targetname to look for.
  5189. //* If you leave this blank, the tank will just pick its nearest enemy.
  5190. m_iszEnemy(string) : "Enemy to face"
  5191. m_iShoot(choices) : "Fire gun" : 1 =
  5192. [
  5193. 0: "Don't fire"
  5194. 1: "Once (at end)"
  5195. 2: "Constantly"
  5196. 3: "While facing target"
  5197. ]
  5198. m_iUntil(choices) : "Halt condition" : 1 =
  5199. [
  5200. 0: "None"
  5201. 1: "Tank faces target"
  5202. 2: "Enemy dies"
  5203. ]
  5204. target(string) : "Trigger on halt"
  5205. m_fDuration(string) : "Time limit (0 = no limit)" : "0"
  5206. netname(string) : "Trigger on timeout"
  5207. m_iActive(choices) : "Tank state afterwards" : 0 =
  5208. [
  5209. 0: "No change"
  5210. 1: "Active"
  5211. 2: "Inactive"
  5212. 3: "Toggle"
  5213. ]
  5214. m_iControllable(choices) : "Control afterwards" : 0 =
  5215. [
  5216. 0: "No change"
  5217. 1: "Controllable"
  5218. 2: "Not Controllable"
  5219. 3: "Toggle"
  5220. ]
  5221. m_iLaserSpot(choices) : "Laser Spot afterwards" : 0 =
  5222. [
  5223. 0: "No change"
  5224. 1: "Turn on"
  5225. 2: "Turn off"
  5226. 3: "Toggle"
  5227. ]
  5228. spawnflags(flags) =
  5229. [
  5230. //* Usually, if a player is using the tank when the sequence is activated,
  5231. //* the sequence won't work. Tick here to override that, by dumping the
  5232. //* player when the sequence starts.
  5233. 1: "Dump player" : 0
  5234. 2: "Repeatable" : 0
  5235. ]
  5236. ]
  5237.  
  5238. //NEW 0.6
  5239. //* This entity is by no means complete, but is still somewhat usable.
  5240. @PointClass base(Targetname, Angles, MoveWith) size(-16 -16 -16, 16 16 16) color(255 0 255) = scripted_trainsequence : "Scripted Train Sequence"
  5241. [
  5242. m_iszEntity(string) : "Func_train to affect [LE]"
  5243. m_iszDestination(string) : "Destination to head for [LE]"
  5244. m_iDirection(choices) : "Train direction" : 4 =
  5245. [
  5246. 4: "Towards destination"
  5247. 1: "Forwards"
  5248. 2: "Backwards"
  5249. 0: "No change"
  5250. ]
  5251. target(string) : "Fire on arrival"
  5252. m_fDuration(string) : "Time limit (0 = no limit)" : "0"
  5253. netname(string) : "Fire on timeout"
  5254. //* This entity will be triggered regardless of how the sequence ends:
  5255. //* by reaching the destination, by timing out, or by the sequence being
  5256. //* triggered 'off' (which causes it to abort).
  5257. m_iszTerminate(string) : "Fire at end, regardless"
  5258. m_iPostDirection(choices) : "Direction afterwards" : 3 =
  5259. [
  5260. 1: "Forwards"
  5261. 3: "Stop"
  5262. ]
  5263. spawnflags(flags) =
  5264. [
  5265. 2: "Once only" : 0
  5266. //* The train will just move straight to the destination
  5267. //* you specify, without trying to follow an existing path.
  5268. 4: "Skip path" : 0
  5269. ]
  5270. ]
  5271.  
  5272. @PointClass iconsprite("sprites/speaker.spr") base(Targetname, MoveWith) = speaker : "Announcement Speaker"
  5273. [
  5274. preset(choices) :"Announcement Presets" : 0 =
  5275. [
  5276. 0: "None"
  5277. 1: "C1A0 Announcer"
  5278. 2: "C1A1 Announcer"
  5279. 3: "C1A2 Announcer"
  5280. 4: "C1A3 Announcer"
  5281. 5: "C1A4 Announcer"
  5282. 6: "C2A1 Announcer"
  5283. 7: "C2A2 Announcer"
  5284. // 8: "C2A3 Announcer"
  5285. 9: "C2A4 Announcer"
  5286. // 10: "C2A5 Announcer"
  5287. 11: "C3A1 Announcer"
  5288. 12: "C3A2 Announcer"
  5289. ]
  5290. message(string) : "Sentence Group Name"
  5291. health(integer) : "Volume (10 = loudest)" : 5
  5292. spawnflags(flags) =
  5293. [
  5294. 1: "Start Silent" : 0
  5295. ]
  5296. ]
  5297.  
  5298. @PointClass base(Targetname) = target_cdaudio : "CD Audio Target"
  5299. [
  5300. health(choices) : "Track #" : -1 =
  5301. [
  5302. -1 : "Stop"
  5303. 1 : "Track 1"
  5304. 2 : "Track 2"
  5305. 3 : "Track 3"
  5306. 4 : "Track 4"
  5307. 5 : "Track 5"
  5308. 6 : "Track 6"
  5309. 7 : "Track 7"
  5310. 8 : "Track 8"
  5311. 9 : "Track 9"
  5312. 10 : "Track 10"
  5313. 11 : "Track 11"
  5314. 12 : "Track 12"
  5315. 13 : "Track 13"
  5316. 14 : "Track 14"
  5317. 15 : "Track 15"
  5318. 16 : "Track 16"
  5319. 17 : "Track 17"
  5320. 18 : "Track 18"
  5321. 19 : "Track 19"
  5322. 20 : "Track 20"
  5323. 21 : "Track 21"
  5324. 22 : "Track 22"
  5325. 23 : "Track 23"
  5326. 24 : "Track 24"
  5327. 25 : "Track 25"
  5328. 26 : "Track 26"
  5329. 27 : "Track 27"
  5330. 28 : "Track 28"
  5331. 29 : "Track 29"
  5332. 30 : "Track 30"
  5333. ]
  5334. radius(string) : "Player Radius"
  5335. ]
  5336.  
  5337. //
  5338. // Triggers
  5339. //
  5340.  
  5341. //* Be careful when using this entity; it will trigger not only when the level starts,
  5342. //* but also when a saved game is loaded.
  5343. @PointClass base(Target, Killtarget) iconsprite("sprites/trigger.spr") = trigger_auto : "AutoTrigger"
  5344. [
  5345. delay(string) : "Delay before trigger" : "0.1"
  5346. spawnflags(Flags) =
  5347. [
  5348. 1 : "Remove On fire" : 0
  5349. //NEW 0.5
  5350. //* Tick here to have the trigger_auto's "activator" be the player.
  5351. //* (Not for use in multiplayer levels.)
  5352. 2 : "From Player" : 0
  5353. ]
  5354. globalstate(string) : "Global State to Read"
  5355. //NEW 0.3
  5356. triggerstate(choices) : "Trigger to send" : 2 =
  5357. [
  5358. 0 : "Off"
  5359. 1 : "On"
  5360. 2 : "Toggle"
  5361. 3 : "Kill"
  5362. ]
  5363. ]
  5364.  
  5365. @SolidClass base(Targetname, Master, MoveWith) = trigger_autosave : "AutoSave Trigger" []
  5366.  
  5367. //NEW 0.6
  5368. //* An entity that things bounce off. Set its Angle to specify the angle to reflect them in;
  5369. //* objects already moving in this direction will be unaffected. (E.g. to make a trampoline,
  5370. //* you would specify "up". Objects which are already moving upwards will be unaffected.)
  5371. //* Try Factor = 2 and Minimum Speed = 150 to make a corridor which players can't run through,
  5372. //* only walk slowly. (Something like the force-fields in Dune.)
  5373. @SolidClass base(Trigger, TriggerCond, Angles, MoveWith) = trigger_bounce : "Bouncey area"
  5374. [
  5375. //* Acts like friction - each bounce will be scaled up or down by this amount.
  5376. //* (for instance, if the factor is 0.5, and you hit the trigger_bounce at 100
  5377. //* units/sec, you'll bounce off at 50 units/sec.)
  5378. frags(string) : "Factor (0=stop, 1=perfect bounce)" : "0.9"
  5379. //* If an object hits the trigger_bounce entity slower than this, then it'll
  5380. //* go straight through.
  5381. armorvalue(string) : "Minimum Speed" : "100"
  5382. spawnflags(flags) =
  5383. [
  5384. //* Tells the entity to reduce bounce speeds by the 'minimum speed' value.
  5385. //* (for instance, if you hit the trigger_bounce at 100 units/sec, the Factor is
  5386. //* 0.5 and the min.speed is 20, then you'll bounce off at 40 units/sec.
  5387. 16: "Truncate Speed" : 0
  5388. ]
  5389. ]
  5390.  
  5391. @PointClass base(Targetname, Targetx) iconsprite("sprites/trigger.spr") = trigger_camera : "Trigger Camera"
  5392. [
  5393. wait(integer) : "Hold time" : 10
  5394. moveto(string) : "Path Corner"
  5395. spawnflags(flags) =
  5396. [
  5397. 1: "Start At Player" : 0
  5398. 2: "Follow Player" : 0
  5399. 4: "Freeze Player" : 0
  5400. ]
  5401. speed(string) : "Initial Speed" : "0"
  5402. acceleration(string) : "Acceleration units/sec^2" : "500"
  5403. deceleration(string) : "Stop Deceleration units/sec^2" : "500"
  5404. m_iszViewEntity(string) : "Entity to view from (blank = this)"
  5405. ]
  5406.  
  5407. //NEW 1.4
  5408. //1.5 the default folder of /sounds/fmod/ was removed from the code
  5409. @PointClass base(Targetname) = ambient_fmodstream: "FMOD Audio player (MP3/OGG/WMA)"
  5410. [
  5411. message(string) : "File Name (relative to \spirit\)"
  5412. spawnflags(flags) =
  5413. [
  5414. 1: "Remove on fire" : 0
  5415. ]
  5416. ]
  5417.  
  5418. @SolidClass base(Targetname) = trigger_cdaudio : "Trigger CD Audio"
  5419. [
  5420. health(choices) : "Track #" : -1 =
  5421. [
  5422. -1 : "Stop"
  5423. 1 : "Track 1"
  5424. 2 : "Track 2"
  5425. 3 : "Track 3"
  5426. 4 : "Track 4"
  5427. 5 : "Track 5"
  5428. 6 : "Track 6"
  5429. 7 : "Track 7"
  5430. 8 : "Track 8"
  5431. 9 : "Track 9"
  5432. 10 : "Track 10"
  5433. 11 : "Track 11"
  5434. 12 : "Track 12"
  5435. 13 : "Track 13"
  5436. 14 : "Track 14"
  5437. 15 : "Track 15"
  5438. 16 : "Track 16"
  5439. 17 : "Track 17"
  5440. 18 : "Track 18"
  5441. 19 : "Track 19"
  5442. 20 : "Track 20"
  5443. 21 : "Track 21"
  5444. 22 : "Track 22"
  5445. 23 : "Track 23"
  5446. 24 : "Track 24"
  5447. 25 : "Track 25"
  5448. 26 : "Track 26"
  5449. 27 : "Track 27"
  5450. 28 : "Track 28"
  5451. 29 : "Track 29"
  5452. 30 : "Track 30"
  5453. ]
  5454. ]
  5455.  
  5456. //NEW 0.3
  5457. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changealias : "Trigger Change Alias"
  5458. [
  5459. target(string) : "Alias to affect"
  5460. netname(string) : "String to Set"
  5461. spawnflags(flags) =
  5462. [
  5463. //* If this is ticked, alias references in the "String to Set" will be resolved before any changes are
  5464. //* applied. So, for example, suppose you set this entity up to affect an alias "alias1", and to set alias1
  5465. //* to target "*myalias".
  5466. //* If "Resolve references" is left unticked, then "alias1" will change to refer to "*myalias"; that is,
  5467. //* in future any changes to "myalias" will also change what "alias1" refers to.
  5468. //* By contrast, if "Resolve references" is ticked, then "alias1" will change to refer to whatever "myalias"
  5469. //* is referring to <u>at the time the trigger_changealias takes effect</u>. Future changes to "myalias" will
  5470. //* therefore not affect "alias1".
  5471. 1 : "Resolve references" : 0
  5472. 2 : "Debug Mode" : 0
  5473. ]
  5474. ]
  5475.  
  5476. //NEW 0.5
  5477. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changecvar : "Change Console Variable"
  5478. [
  5479. netname(string) : "CVar to change"
  5480. message(string) : "Value to set"
  5481. armorvalue(string) : "Duration (-1 = until triggered)"
  5482. ]
  5483.  
  5484. @SolidClass = trigger_changelevel : "Trigger: Change level"
  5485. [
  5486. targetname(string) : "Name"
  5487. map(string) : "New map name"
  5488. landmark(string) : "Landmark name"
  5489. changetarget(target_destination) : "Change Target"
  5490. changedelay(string) : "Delay before change target" : "0"
  5491. spawnflags(flags) =
  5492. [
  5493. 1: "No Intermission" : 0
  5494. 2: "USE Only" : 0
  5495. ]
  5496. ]
  5497.  
  5498. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changetarget : "Trigger Change Target"
  5499. [
  5500. target(string) : "Entity to affect [LE]"
  5501. m_iszNewTarget(string) : "New Target [LE]"
  5502. ]
  5503.  
  5504. //NEW 1.0
  5505. //* A really bad idea, IMHO, but created by popular demand.
  5506. //* Use at your own risk, and/or the risk of everyone else in the room.
  5507. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_changevalue : "Change any entity's values"
  5508. [
  5509. target(string) : "Entity to affect [LE]"
  5510. netname(string) : "Keyname to change"
  5511. m_iszNewValue(string) : "New value to set"
  5512. ]
  5513.  
  5514. //NEW 0.5
  5515. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_command : "Console Command"
  5516. [
  5517. //* The mapping tools can't handle double-quote marks. If you need a double-quote in your
  5518. //* command string, put `` (that's two backticks - top left of your keyboard) instead.
  5519. netname(string) : "Command String (use `` for a quote)"
  5520. ]
  5521.  
  5522. //* While locked by its master, the trigger_counter _will_ keep counting when fired,
  5523. //* but it won't fire anything itself.
  5524. @SolidClass base(Trigger, MoveWith) = trigger_counter : "Trigger counter"
  5525. [
  5526. spawnflags(flags) =
  5527. [
  5528. 1 : "No Message" : 0
  5529. ]
  5530. count(integer) : "Count before activation" : 2
  5531. ]
  5532.  
  5533. @SolidClass base(Targetname, MoveWith) = trigger_endsection : "EndSection Trigger"
  5534. [
  5535. section(string) : "Section"
  5536. spawnflags(flags) =
  5537. [
  5538. 1: "USE Only" : 0
  5539. ]
  5540. ]
  5541.  
  5542. @SolidClass base(Targetname) = trigger_gravity : "Trigger Gravity"
  5543. [
  5544. gravity(integer) : "Gravity (0-1)" : 1
  5545. ]
  5546.  
  5547. //NEW 0.5
  5548. @SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hevcharge : "Trigger charge hev"
  5549. [
  5550. spawnflags(flags) =
  5551. [
  5552. 1: "Target Once" : 0
  5553. 2: "Start Off" : 0
  5554. //* Usually, the HEV suit will comment on the new power level.
  5555. 4: "Don't Speak" : 0
  5556. ]
  5557. frags(integer) : "Charge Amount" : 10
  5558. delay(string) : "Delay before trigger" : "0"
  5559. ]
  5560.  
  5561. @SolidClass base(Targetname, Target, Master, MoveWith) = trigger_hurt : "Trigger player hurt"
  5562. [
  5563. spawnflags(flags) =
  5564. [
  5565. 1: "Fire once" : 0
  5566. 2: "Start Off" : 0
  5567. 8: "No clients" : 0
  5568. 16:"Only when fired" : 0
  5569. 32:"Only on touch" : 0
  5570. ]
  5571. dmg(integer) : "Damage" : 10
  5572. delay(string) : "Delay before trigger" : "0"
  5573. damagetype(choices) : "Damage Type" : 0 =
  5574. [
  5575. 0 : "GENERIC"
  5576. 1 : "CRUSH"
  5577. 2 : "BULLET"
  5578. 4 : "SLASH"
  5579. 8 : "BURN"
  5580. 16 : "FREEZE"
  5581. 32 : "FALL"
  5582. 64 : "BLAST"
  5583. 128 : "CLUB"
  5584. 256 : "SHOCK"
  5585. 512 : "SONIC"
  5586. 1024 : "ENERGYBEAM"
  5587. 16384: "DROWN"
  5588. 32768 : "PARALYSE"
  5589. 65536 : "NERVEGAS"
  5590. 131072 : "POISON"
  5591. 262144 : "RADIATION"
  5592. 524288 : "DROWNRECOVER"
  5593. 1048576 : "CHEMICAL"
  5594. 2097152 : "SLOWBURN"
  5595. 4194304 : "SLOWFREEZE"
  5596. ]
  5597. //NEW 0.7.1
  5598. cangib(choices) : "To gib or not to gib" : 0 =
  5599. [
  5600. 0 : "Normal"
  5601. 1 : "Always gib"
  5602. 2 : "Never gib"
  5603. ]
  5604. ]
  5605.  
  5606. //NEW 0.5
  5607. //* If you refer to this like an alias (*targetname), you refer to all the relevant entities inside
  5608. //* the trigger area.
  5609. //* So, for example, you could use env_render to set the render style of them all.
  5610. @SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_inout : "Trigger: Activate on entering or leaving"
  5611. [
  5612. target(string) : "Fire on entering (locus=enterer)"
  5613. m_iszAltTarget(string) : "Fire on leaving (locus=leaver)"
  5614. m_iszBothTarget(string) : "Fire on/off (entering/leaving)"
  5615. ]
  5616.  
  5617. @SolidClass base(Master, MoveWith) = trigger_monsterjump : "Trigger monster jump"
  5618. [
  5619. speed(integer) : "Jump Speed" : 40
  5620. height(integer) : "Jump Height" : 128
  5621. ]
  5622.  
  5623. //NEW 0.7.1
  5624. //* This replaces the trigger_setposition and trigger_setvelocity entities, which have
  5625. //* been removed. Apologies for any inconvenience.
  5626. //* If you want to control motion for a period of time, see @motion_manager.
  5627. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_motion : "Set the position and movement of an entity"
  5628. [
  5629. target(target_destination) : "Target to affect [LE]"
  5630. m_iszPosition(string) : "Position (blank = no change)"
  5631. m_iPosMode(choices) : "Meaning of Position" : 0 =
  5632. [
  5633. 0 : "Set new position [LP]"
  5634. 1 : "Add offset [LV]"
  5635. ]
  5636. m_iszAngles(string) : "Angles (blank = no change)"
  5637. m_iAngMode(choices) : "Meaning of Angles" : 0 =
  5638. [
  5639. 0 : "Set new angle [LV]"
  5640. 1 : "Rotate by [LV]"
  5641. 2 : "Rotate by [PYR]"
  5642. ]
  5643. m_iszVelocity(string) : "Velocity (blank = no change)"
  5644. m_iVelMode(choices) : "Meaning of Velocity" : 0 =
  5645. [
  5646. 0 : "Set new velocity [LV]"
  5647. 1 : "Add to velocity [LV]"
  5648. 2 : "Rotate velocity by [LV]"
  5649. 3 : "Rotate velocity [PYR]"
  5650. ]
  5651. m_iszAVelocity(string) : "AVelocity (blank = no change)"
  5652. m_iAVelMode(choices) : "Meaning of AVelocity" : 0 =
  5653. [
  5654. 0 : "Set new avelocity [PYR]"
  5655. 1 : "Add to avelocity [PYR]"
  5656. ]
  5657. spawnflags(flags) =
  5658. [
  5659. 1: "Debug" : 0
  5660. ]
  5661. ]
  5662.  
  5663. @SolidClass base(Targetname, Master, Delay, Killtarget, TriggerCond, MoveWith) = trigger_once : "Trigger: Activate once"
  5664. [
  5665. target(target_destination) : "Target when touched (locus=toucher)"
  5666. message(string) : "Text when triggered"
  5667. noise(string) : "Sound when triggered"
  5668. ]
  5669.  
  5670. @SolidClass base(trigger_once) = trigger_multiple : "Trigger: Activate multiple"
  5671. [
  5672. wait(integer) : "Delay before reset" : 10
  5673. ]
  5674.  
  5675. //NEW 0.6
  5676. //* In fact, this should probably be called watcher_onsight.
  5677. @PointClass base(Targetname, Master, MoveWith) iconsprite("sprites/trigger.spr") = trigger_onsight : "Trigger when A sees B"
  5678. [
  5679. //* Put the targetname of the entity(ies) whose eyes the trigger_onsight should look through.
  5680. //* (if you want to trigger when the trigger_onsight itself sees something, i.e.
  5681. //* simulating a security camera, put the name of the trigger_onsight.)
  5682. netname(string) : "Looking entity (blank=player)"
  5683. //* Leave this blank to have it trigger when something sees the trigger_onsight.
  5684. //* You can also put a classname here, to trigger when the Looking Entity sees
  5685. //* any entity of that class.
  5686. message(string) : "Entity/classname to look at"
  5687. target(string) : "Fire when seen"
  5688. noise(string) : "Fire when no longer seen"
  5689. noise1(string) : "Fire on/off (seen/not seen)"
  5690. frags(string) : "View range (0=unlimited)" : "512"
  5691. //* Currently, only the horizontal view will be checked.
  5692. max_health(choices) : "Field of view (degrees)" : 90 =
  5693. [
  5694. -1 : "(-1): Use monster's view"
  5695. ]
  5696. spawnflags(flags) =
  5697. [
  5698. //* Don't check line of sight: i.e. it doesn't matter if there's something
  5699. //* in the way.
  5700. 1: "No LOS check" : 0
  5701. 2: "Seethru glass" : 0
  5702. 4: "Check State of 'looker'" : 0
  5703. ]
  5704. ]
  5705.  
  5706. @SolidClass base(Trigger, MoveWith) = trigger_push : "Trigger player push"
  5707. [
  5708. spawnflags(flags) =
  5709. [
  5710. 1: "Once Only" : 0
  5711. 2: "Start Off" : 0
  5712. ]
  5713. speed(integer) : "Speed of push" : 40
  5714. ]
  5715.  
  5716. //NEW 0.3
  5717. //* Only affects dynamic (i.e. named) lights.
  5718. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_lightstyle : "Trigger Change Lightstyle"
  5719. [
  5720. target(target_destination) : "Target to affect [LE]"
  5721. style(choices) : "New Appearance" : 0 =
  5722. [
  5723. 0 : "On"
  5724. 13: "Off"
  5725. 10: "Fluorescent flicker"
  5726. 2 : "Slow, strong pulse"
  5727. 11: "Slow pulse, noblack"
  5728. 5 : "Gentle pulse"
  5729. 1 : "Flicker A"
  5730. 6 : "Flicker B"
  5731. 3 : "Candle A"
  5732. 7 : "Candle B"
  5733. 8 : "Candle C"
  5734. 4 : "Fast strobe"
  5735. 9 : "Slow strobe"
  5736. 12: "Underwater"
  5737. 14: "Slow Fade In"
  5738. 15: "Medium Fade In"
  5739. 16: "Fast Fade In"
  5740. ]
  5741. pattern(string) : "Custom Appearance"
  5742. m_iFade(string) : "Fade time" : 0
  5743. m_iWait(string) : "Hold time (-1 = permanent)" : -1
  5744. ]
  5745.  
  5746. @PointClass base(Targetname, Targetx, Master) iconsprite("sprites/trigger.spr") = trigger_relay : "Trigger Relay"
  5747. [
  5748. //NEW 0.5
  5749. //* This field allows you to use the trigger_relay as a kind of conditional jump: it
  5750. //* looks at its master, and does different actions based on the master's state.
  5751. m_iszAltTarget(string) : "Target if locked by master"
  5752. spawnflags(flags) =
  5753. [
  5754. 1: "Remove On fire" : 0
  5755. //NEW 0.4
  5756. //* If you're trying to work out what's going wrong with your level,
  5757. //* try ticking here and the relay will tell you when it triggers, etc.
  5758. //* Here's a useful trick: make a trigger_relay with this field ticked,
  5759. //* and give it the same name as an entity that you're interested in.
  5760. //* The relay will then notify you whenever that entity gets triggered.
  5761. //2: "Debug Mode" : 0
  5762. 2 : "Fire at Camera" : 0
  5763. ]
  5764. //NEW 0.4
  5765. triggerstate(choices) : "Trigger to send" : 2 =
  5766. [
  5767. 0: "Off"
  5768. 1: "On"
  5769. 2: "Toggle"
  5770. 4: "Kill"
  5771. 5: "Same as input"
  5772. //* I.e. when triggered ON, send OFF. And vice versa.
  5773. 6: "Opposite of input"
  5774. //* Setting this will cause the target momentary door to move to a particular position.
  5775. 7: "Number (momentary doors)"
  5776. ]
  5777. //* Use this in combination with usetype Number, to trigger momentary doors.
  5778. //* For example, sending 1.0 tells them to go fully
  5779. //* open, 0.0 fully closed, and 0.5 half-way.
  5780. message(string) : "Set number (blank = no change) [LN]"
  5781. ]
  5782.  
  5783. //* don't use. This is just a test entity.
  5784. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_rottest : "Trigger RotTest"
  5785. [
  5786. target(target_destination) : "Marker ent"
  5787. netname(target_destination) : "Reference ent"
  5788. message(target_destination) : "Hinge ent"
  5789. health(integer) : "Distance" : 5
  5790. armortype(integer) : "Angle Step" : 30
  5791. ]
  5792.  
  5793. //NEW 0.6
  5794. @SolidClass base(Targetname, Master) = trigger_sound : "Brush-based DSP Sound"
  5795. [
  5796. target(target_destination) : "Fire when activated"
  5797. delay(string) : "Delay before trigger" : "0"
  5798. killtarget(target_destination) : "KillTarget"
  5799. roomtype(choices) : "Room Type" : 0 =
  5800. [
  5801. 0 : "(Disable all filters)"
  5802. 1 : "Generic (no filters)"
  5803.  
  5804. 2 : "Metal Small"
  5805. 3 : "Metal Medium"
  5806. 4 : "Metal Large"
  5807.  
  5808. 5 : "Tunnel Small"
  5809. 6 : "Tunnel Medium"
  5810. 7 : "Tunnel Large"
  5811.  
  5812. 8 : "Chamber Small"
  5813. 9 : "Chamber Medium"
  5814. 10: "Chamber Large"
  5815.  
  5816. 11: "Bright Small"
  5817. 12: "Bright Medium"
  5818. 13: "Bright Large"
  5819.  
  5820. 14: "Water 1"
  5821. 15: "Water 2"
  5822. 16: "Water 3"
  5823.  
  5824. 17: "Concrete Small"
  5825. 18: "Concrete Medium"
  5826. 19: "Concrete Large"
  5827.  
  5828. 20: "Big 1"
  5829. 21: "Big 2"
  5830. 22: "Big 3"
  5831.  
  5832. 23: "Cavern Small"
  5833. 24: "Cavern Medium"
  5834. 25: "Cavern Large"
  5835.  
  5836. 26: "Weirdo 1"
  5837. 27: "Weirdo 2"
  5838. 28: "Weirdo 3"
  5839. ]
  5840. ]
  5841.  
  5842. //NEW 0.2
  5843. //* Suggest to the specified monster that it should follow the given path. This is a low priority
  5844. //* activity, superceded when it spots a player (for instance).
  5845. //* (The same thing happens if you give the monster a "target".)
  5846. @PointClass base(Targetname) iconsprite("sprites/trigger.spr") = trigger_startpatrol : "Trigger Start Patrol"
  5847. [
  5848. target(string) : "Target monster"
  5849. m_iszPath(string) : "Patrol path start"
  5850. ]
  5851.  
  5852. @SolidClass base(Targetname, Master, TriggerCond, MoveWith) = trigger_teleport : "Trigger teleport"
  5853. [
  5854. target(target_destination) : "Destination entity"
  5855. //NEW 0.6
  5856. message(target_destination) : "Landmark entity"
  5857. //NEW 0.6
  5858. noise(target_destination) : "Fire on teleporting"
  5859. ]
  5860.  
  5861. @SolidClass base(Targetname) = trigger_transition : "Trigger: Select Transition Area" []
  5862.  
  5863. //NEW 0.3
  5864. //* A watcher watches an entity, waiting for it to be in a given state. The default behaviour is for
  5865. //* the watcher to be 'On' if the watched entity is 'On', and to be 'Off' at all other times.
  5866. //* The main use for a watcher is to fire another entity (the "entity to notify"), each time the
  5867. //* watcher's state changes.
  5868. @PointClass base(Targetname) = watcher : "State Watcher"
  5869. [
  5870. m_iszWatch(string) : "Entity to watch [LE]"
  5871. //* The watcher will revert to this state if the watched entity is killtargetted, or if it's a func_breakable which breaks.
  5872. m_fLogic(choices) : "State if entity isn't found" : 0 =
  5873. [
  5874. 0: "On"
  5875. 1: "Off"
  5876. ]
  5877. //* This entity will be sent USE_ON or USE_OFF, as appropriate, whenever the watcher's state changes.
  5878. target(target_destination) : "Target to notify"
  5879. //* The bottom 5 flags are used to specify what states are being watched for. Default is to just watch for 'On'.
  5880. spawnflags(flags) =
  5881. [
  5882. //* If this is enabled, the watcher will notify its target with USE_TOGGLE, instead of sending ON or OFF.
  5883. 1: "Send 'Toggle'" : 0
  5884. //* If this is enabled, the target won't be triggered when the watcher turns on.
  5885. 2: "Don't Send On" : 0
  5886. //* If this is enabled, the target won't be triggered when the watcher turns off.
  5887. 4: "Don't Send Off" : 0
  5888. 8: "NOT 'On'" : 0
  5889. 16: "'Off'" : 0
  5890. 32: "'Turn On'" : 0
  5891. 64: "'Turn Off'" : 0
  5892. 128:"'In Use'" : 0
  5893. ]
  5894. ]
  5895.  
  5896. // NEW 1.0
  5897. // * Compare two entity references, and see if they're the same.
  5898. // * For example, you could type "*myalias" as your first reference,
  5899. // * and "bob" as the second. As long as the alias "myalias" refers to
  5900. // * the entity "bob", the watcher will be active. The rest of the time
  5901. // * it will be inactive.
  5902. // * (If "bob" doesn't exist, it will also be inactive.)
  5903. //@PointClass base(Targetname) = watcher_alias : "Watcher"
  5904. //[
  5905. // m_iszEntityA(string) : "Entity A [LE]"
  5906. // m_iszEntityB(string) : "Entity B [LE]"
  5907. // m_iMode(choices) : "Type of comparison" : 0 =
  5908. // [
  5909. // 0 : "On when A = B"
  5910. // //* != means "not equal"
  5911. // 1 : "On when A != B"
  5912. // ]
  5913. // target(string): "Fire on changing state"
  5914. // netname(string): "Fire on turning on"
  5915. // message(string): "Fire on turning off"
  5916. // spawnflags(flags) =
  5917. // [
  5918. // //* If this is set, one set of targets (on or off) will be fired,
  5919. // //* as appropriate, when the level starts.
  5920. // 1: "Fire at startup" : 0
  5921. // ]
  5922. //]
  5923.  
  5924. @PointClass base(Targetname) = watcher_count : "Watcher, entity count"
  5925. [
  5926. noise(string) : "Count entities named..."
  5927. impulse(integer) : "Comparison number"
  5928. m_iMode(choices) : "Type of comparison" : 0 =
  5929. [
  5930. 0 : "'On' when count = number"
  5931. //* != means "not equal"
  5932. 3 : "'On' when count != number"
  5933. 1 : "'On' when count > number"
  5934. 5 : "'On' when count >= number"
  5935. 2 : "'On' when count < number"
  5936. 4 : "'On' when count <= number"
  5937. ]
  5938. target(string): "Fire on changing state"
  5939. netname(string): "Fire on turning on"
  5940. message(string): "Fire on turning off"
  5941. noise1(string): "Fire when count increases"
  5942. noise2(string): "Fire when count decreases"
  5943. spawnflags(flags) =
  5944. [
  5945. //* If this is set, one set of targets (on or off) will be fired,
  5946. //* as appropriate, when the level starts.
  5947. 1: "Fire at startup" : 0
  5948. ]
  5949. ]
  5950.  
  5951. // NEW 1.8
  5952. //* Compare two numbers.
  5953. //* If you refer to a watcher_number via [LN], it returns the last-seen value of A.
  5954. @PointClass base(Targetname) = watcher_number : "Watcher, compare numbers"
  5955. [
  5956. netname(string) : "Number A [LN]"
  5957. //* If left blank, this will compare the current A with the value previously seen for A.
  5958. //* This is useful for checking whether the number has changed,
  5959. //* especially in combination with "tolerance" and/or the "manual update" flag.
  5960. noise(string) : "Number B [LN] (blank = old A)"
  5961. noise1(string) : "Tolerance for equals [LN]" : "0.0"
  5962. impulse(choices) : "Type of comparison" : 0 =
  5963. [
  5964. 0 : "'On' when A = B"
  5965. //* != means "not equal"
  5966. 1 : "'On' when A != B"
  5967. 2 : "'On' when A > B"
  5968. 3 : "'On' when A >= B"
  5969. 4 : "'On' when A < B"
  5970. 5 : "'On' when A <= B"
  5971. ]
  5972. noise2(string): "Fire on turning on"
  5973. noise3(string): "Fire on turning off"
  5974. spawnflags(flags) =
  5975. [
  5976. //* Don't watch continuously - only update (and fire targets if appropriate) when triggered.
  5977. 1: "Manual update" : 0
  5978. //* If this is set, one set of targets (on or off) will be fired,
  5979. //* as appropriate, when the level starts.
  5980. 2: "Fire at startup" : 0
  5981. 4: "Debug mode" : 0
  5982. ]
  5983. ]
  5984.  
  5985. //
  5986. // Weapons
  5987. //
  5988. //NEW 1.4
  5989. @PointClass base(Weapon) = weapon_debug : "Debugger" []
  5990. @PointClass size(-16 -16 0, 16 16 64) color(0 128 0) = weapon_eagle : "Desert Eagle" []
  5991.  
  5992. @PointClass size(-16 -16 0, 16 16 64) color(0 128 0) studio("models/w_weaponbox.mdl")= weaponbox : "Weapon/Ammo Container" []
  5993. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_357.mdl")= weapon_357 : "357 Handgun" []
  5994. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl")= weapon_9mmAR : "9mm Assault Rifle" []
  5995. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl")= weapon_9mmhandgun : "9mm Handgun" []
  5996. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crossbow.mdl")= weapon_crossbow : "Crossbow"
  5997. [
  5998. sequence(choices) : "Placement" : 0 =
  5999. [
  6000. 0 : "Normal (flat)"
  6001. 1 : "Realistic (tilted)"
  6002. ]
  6003. ]
  6004. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_crowbar.mdl") = weapon_crowbar : "Crowbar" []
  6005. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_egon.mdl") = weapon_egon : "Egon Gun" []
  6006. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_gauss.mdl") = weapon_gauss : "Gauss Gun" []
  6007. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmhandgun.mdl") = weapon_glock : "9mm Handgun" []
  6008. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_grenade.mdl") = weapon_handgrenade : "Handgrenade Ammo" []
  6009. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_hgun.mdl") = weapon_hornetgun : "Hornet Gun" []
  6010. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_9mmar.mdl") = weapon_mp5 : "9mm Assault Rifle" []
  6011. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_rpg.mdl") = weapon_rpg : "RPG" []
  6012. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_satchel.mdl") = weapon_satchel : "Satchel Charge Ammo" []
  6013. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_shotgun.mdl") = weapon_shotgun : "Shotgun" []
  6014. @PointClass base(Weapon, Targetx, RenderFields) studio("models/w_sqknest.mdl") = weapon_snark : "Squeak Grenade" []
  6015. @PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = weapon_tripmine : "Tripmine Ammo" []
  6016.  
  6017. @PointClass base(Weapon, Targetx, RenderFields) = world_items : "World Items"
  6018. [
  6019. type(choices) :"types" : 42 =
  6020. [
  6021. 42: "Antidote"
  6022. 43: "Security Card"
  6023. 44: "Battery"
  6024. 45: "Suit"
  6025. ]
  6026. ]
  6027.  
  6028. //NEW 1.5
  6029. //A portable flare the player can use once (at any time)
  6030. @PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_flare : "Inventory Flare"
  6031. [
  6032. ltime(integer): "Override flares lifetime"
  6033. noise(string): "Override default pickup sound"
  6034. rendercolor(color255): "Override flares colour (R G B)"
  6035. ]
  6036.  
  6037. //NEW 1.5
  6038. //A portable camera that can be set up at any location the player can get to.
  6039. // Currently on explosive damage can effect cameras
  6040. @PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_camera : "Inventory Camera"
  6041. [
  6042. targetname(string): "UNIQUE!! name for this camera"
  6043. // EVERY camera in your map (unit) must have a unique name. Call them something like 'mapname_camera_1'
  6044. noise(string): "Override default pickup sound"
  6045. health(integer): "Health of the camera" : 20
  6046. ]
  6047.  
  6048. //NEW 1.5
  6049. //Limit the total 'health' a player can have in his medkit with cvar 'max_medkit'. Defaults to 200.
  6050. @PointClass base(Weapon, Targetx, RenderFields) size(-16 -16 -5, 16 16 27) = item_medicalkit : "Inventory Medkit"
  6051. [
  6052. health(integer): "Healing charge" : 50
  6053. ]
  6054.  
  6055.  
  6056. //
  6057. // Xen
  6058. //
  6059.  
  6060. @PointClass base(Targetname, Angles, RenderFields) size(-8 -8 0, 8 8 32 ) = xen_hair : "Xen Hair"
  6061. [
  6062. spawnflags(Flags) =
  6063. [
  6064. 1 : "Sync Movement" : 0
  6065. ]
  6066. ]
  6067. @PointClass base(Target, Targetname, Angles, RenderFields) size(-48 -48 0, 48 48 32 ) studio("models/light.mdl")= xen_plantlight : "Xen Plant Light" []
  6068. @PointClass base(Targetname, Angles, RenderFields) size(-90 -90 0, 90 90 220 ) studio("models/fungus(large).mdl")= xen_spore_large : "Xen Spore (large)" []
  6069. @PointClass base(Targetname, Angles, RenderFields) size(-40 -40 0, 40 40 120 ) studio("models/fungus.mdl")= xen_spore_medium : "Xen Spore (medium)" []
  6070. @PointClass base(Targetname, Angles, RenderFields) size(-16 -16 0, 16 16 64 ) studio("models/fungus(small).mdl")= xen_spore_small : "Xen Spore (small)" []
  6071. @PointClass base(Targetname, Angles, RenderFields) size(-24 -24 0, 24 24 188 ) studio("models/tree.mdl")= xen_tree : "Xen Tree" []
  6072.  
  6073. //NEW 1.5
  6074. //G-Conts Rain System (rain_settings & rain_modify)
  6075. @PointClass iconsprite("sprites/env.spr") = rain_settings : "Constant map settings"
  6076. [
  6077. m_flDistance(integer) : "Rain distance" : 1000
  6078. m_iMode(choices) : "Weather type" : 0 =
  6079. [
  6080. 0: "Rain"
  6081. 1: "Snow"
  6082. ]
  6083. ]
  6084. @PointClass iconsprite("sprites/env.spr") = rain_modify : "Modify rain settings"
  6085. [
  6086. m_flTime(integer) : "Fading time" : 0
  6087. m_iDripsPerSecond(integer) : "Drips per second" : 800
  6088. m_flWindX(integer) : "Wind X" : 0
  6089. m_flWindY(integer) : "Wind Y" : 0
  6090. m_flRandX(integer) : "Rand X" : 0
  6091. m_flRandY(integer) : "Rand Y" : 0
  6092. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement