Advertisement
Guest User

Untitled

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