EPAIRS.H 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402
  1. /*
  2. ===========================================================================
  3. Copyright (C) 1999-2005 Id Software, Inc.
  4. This file is part of Quake III Arena source code.
  5. Quake III Arena source code is free software; you can redistribute it
  6. and/or modify it under the terms of the GNU General Public License as
  7. published by the Free Software Foundation; either version 2 of the License,
  8. or (at your option) any later version.
  9. Quake III Arena source code is distributed in the hope that it will be
  10. useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with Foobar; if not, write to the Free Software
  15. Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  16. ===========================================================================
  17. */
  18. #ifndef EPAIRS_H_
  19. #define EPAIRS_H_
  20. typedef struct
  21. {
  22. char *key;
  23. char *value;
  24. } userEpair_t;
  25. userEpair_t eclassStr[] =
  26. {
  27. //////////////////////////////
  28. // Worldspawn
  29. //////////////////////////////
  30. {"classname", "worldspawn"},
  31. {"color", "0 0 0"},
  32. {"rem", "Only used for the world entity."},
  33. {"rem", "cdtrack - number of CD track to play when level starts"},
  34. {"rem", "fog_value - level of fog for this map"},
  35. //////////////////////////////
  36. // Light
  37. //////////////////////////////
  38. {"classname", "light"},
  39. {"size", "-8 -8 -8 8 8 8"},
  40. {"color", "0 1 0"},
  41. {"flag", "START_OFF"},
  42. {"rem", "style - number of style to use, 0-63"},
  43. {"rem", "nelnosmama - string to define lightstyle"},
  44. //////////////////////////////
  45. // light_walltorch
  46. //////////////////////////////
  47. {"classname", "light_walltorch"},
  48. {"size", "-8 -8 -8 8 8 8"},
  49. {"color", "0 1 0"},
  50. {"flag", "START_ON"},
  51. {"rem", "style - number of style to use, 0-63"},
  52. {"rem", "nelnosmama - string to define lightstyle"},
  53. //////////////////////////////
  54. // light_spot
  55. //////////////////////////////
  56. {"classname", "light_spot"},
  57. {"size", "-8 -8 -8 8 8 8"},
  58. {"color", "0 1 0"},
  59. {"flag", "START_ON"},
  60. {"rem", "Used to make a spotlight. If it is targeted at another entity,"},
  61. {"rem", "the spotlight will point directly at it, otherwise it will point"},
  62. {"rem", "in the direction of its 'angle' field"},
  63. {"rem", ""},
  64. {"rem", "style - number of style to use, 0-63"},
  65. {"rem", "nelnosmama - string to define lightstyle"},
  66. //////////////////////////////
  67. // light_strobe
  68. //////////////////////////////
  69. {"classname", "light_strobe"},
  70. {"size", "-8 -8 -8 8 8 8"},
  71. {"color", "0 1 0"},
  72. {"flag", "START_ON"},
  73. {"rem", "style - number of style to use, 0-63"},
  74. {"rem", "nelnosmama - string to define lightstyle"},
  75. //////////////////////////////
  76. // effect_fog
  77. //////////////////////////////
  78. {"classname", "effect_fog"},
  79. {"color", "0 1 0"},
  80. {"rem", "Duh, fog."},
  81. {"rem", ""},
  82. //////////////////////////////
  83. // effect_snow
  84. //////////////////////////////
  85. {"classname", "effect_snow"},
  86. {"color", "1 1 1"},
  87. {"height", "10"},
  88. {"rem", "Snow!"},
  89. {"rem", "Do you realize the entire street value of this mountain?"},
  90. //////////////////////////////
  91. // effect_rain
  92. //////////////////////////////
  93. {"classname", "effect_rain"},
  94. {"height", "10"},
  95. {"color", "0 0.5 0.8"},
  96. {"rem", "Rain!"},
  97. {"rem", "Yellow rain?"},
  98. //////////////////////////////
  99. // func_door
  100. //////////////////////////////
  101. {"classname", "func_door"},
  102. {"color", "0 0.5 0.8"},
  103. {"health", "0"},
  104. {"speed", "100"},
  105. {"wait", "3"},
  106. {"lip", "8"},
  107. {"dmg", "2"},
  108. {"angle", "0 0 0"},
  109. {"message", "you suck"},
  110. {"targetname", ""},
  111. {"flag", "START_OPEN"},
  112. {"flag", "REVERSE"},
  113. {"flag", "DOOR_DONT_LINK"},
  114. {"flag", "TOGGLE"},
  115. {"flag", "AUTO_OPEN"},
  116. {"flag", "USE_TO_CLOSE"},
  117. {"rem", "Doors that touch are linked together to operate as one."},
  118. {"rem", " "},
  119. {"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
  120. {"rem", "angle - determines the opening direction"},
  121. {"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
  122. {"rem", "health - if set, door must be shot open"},
  123. {"rem", "speed - movement speed (100 default)"},
  124. {"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
  125. {"rem", "lip - amount of door visible remaining at end of move (8 default)"},
  126. {"rem", "dmg - damage to inflict when blocked (2 default)"},
  127. {"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
  128. {"rem", "sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
  129. {"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
  130. {"rem", "sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
  131. {"rem", " "},
  132. {"rem", "Spawnflags:"},
  133. {"rem", "TOGGLE causes the door to wait in both the start and end states for a"},
  134. {"rem", "trigger event."},
  135. {"rem", " "},
  136. {"rem", "START_OPEN causes the door to move to its destination when spawned, and"},
  137. {"rem", "operate in reverse. It is used to temporarily or permanently close off an"},
  138. {"rem", "area when triggered (not usefull for touch or takedamage doors)."},
  139. {"rem", "AUTO_OPEN will spawn a trigger field around the door that can open it without"},
  140. {"rem", "its being used."},
  141. {"rem", "DOOR_DONT_LINK will stop a door from being automatically linked to other doors"},
  142. {"rem", "that it touches."},
  143. //////////////////////////////
  144. // func_plat
  145. //////////////////////////////
  146. {"classname", "func_plat"},
  147. {"color", "0 0.5 0.8"},
  148. {"flag", "PLAT_START_UP"},
  149. {"flag", ""},
  150. {"flag", ""},
  151. {"flag", "PLAT_TOGGLE"},
  152. {"rem", "Plats should be drawn in the up position to spawn correctly"},
  153. {"rem", " "},
  154. {"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
  155. {"rem", "angle - determines the opening direction"},
  156. {"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
  157. {"rem", "health - if set, door must be shot open"},
  158. {"rem", "speed - movement speed (100 default)"},
  159. {"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
  160. {"rem", "height - number of units to move the platform up from spawn position. If height is"},
  161. {"rem", "not specified, then the movement distance is determined based on the vertical size of the platform."},
  162. {"rem", "dmg - damage to inflict when blocked (2 default)"},
  163. {"rem", "sound_up - name of the sound to play when going up, ie. doors/creek.wav"},
  164. {"rem", "sound_top - name of the sound to play when plat hits top, ie. doors/slam.wav"},
  165. {"rem", "sound_down - name of the sound to play when going down, ie. doors/creek.wav"},
  166. {"rem", "sound_bottom - name of the sound to play when plat hits bottom, ie. doors/slam.wav"},
  167. {"rem", " "},
  168. {"rem", "Spawnflags:"},
  169. {"rem", "PLAT_START_UP starts the platform in the up (drawn) position"},
  170. {"rem", "(height added to drawn position)"},
  171. {"rem", "TOGGLE causes the platform to wait in both the start and end states for a"},
  172. {"rem", "trigger event."},
  173. //////////////////////////////
  174. // func_door_rotate
  175. //////////////////////////////
  176. {"classname", "func_door_rotate"},
  177. {"distance", "90.0"},
  178. {"color", "0 0.5 0.8"},
  179. {"message", "they suck"},
  180. {"flag", "START_OPEN"},
  181. {"flag", "REVERSE"},
  182. {"flag", "DOOR_DONT_LINK"},
  183. {"flag", "TOGGLE"},
  184. {"flag", "X_AXIS"},
  185. {"flag", "Y_AXIS"},
  186. {"flag", "AUTO_OPEN"},
  187. {"flag", "USE_TO_CLOSE"},
  188. // {"flag", "X_AXIS"},
  189. // {"flag", "Y_AXIS"},
  190. {"rem", "if two doors touch, they are assumed to be connected and operate as a unit."},
  191. {"rem", " "},
  192. {"rem", "TOGGLE causes the door to wait in both the start and end states for a"},
  193. {"rem", "trigger event."},
  194. {"rem", " "},
  195. {"rem", "START_OPEN causes the door to move to its destination when spawned, and"},
  196. {"rem", "operate in reverse. It is used to temporarily or permanently close off an"},
  197. {"rem", "area when triggered (not usefull for touch or takedamage doors)."},
  198. {"rem", " "},
  199. {"rem", "Key doors are allways wait -1."},
  200. {"rem", " "},
  201. {"rem", "You need to have an origin brush as part of this entity. The center of"},
  202. {"rem", "that brush will be"},
  203. {"rem", "the point around which it is rotated. It will rotate around the Z axis by"},
  204. {"rem", "default. You can"},
  205. {"rem", "check either the X_AXIS or Y_AXIS box to change that."},
  206. {"rem", " "},
  207. {"rem", "'distance' is how many degrees the door will be rotated."},
  208. {"rem", "'speed' determines how fast the door moves; default value is 100."},
  209. {"rem", " "},
  210. {"rem", "REVERSE will cause the door to rotate in the opposite direction."},
  211. {"rem", " "},
  212. {"rem", "'message' is printed when the door is touched if it is a trigger door and"},
  213. {"rem", " it hasn't been fired yet."},
  214. {"rem", "'targetname' if set, no touch field will be spawned and a remote button or"},
  215. {"rem", " trigger field activates the door."},
  216. {"rem", "'health' if set, door must be shot open"},
  217. {"rem", "'wait' wait before returning (3 default, -1 = never return)"},
  218. {"rem", "'dmg' damage to inflict when blocked (2 default)"},
  219. {"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
  220. {"rem", "sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
  221. {"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
  222. {"rem", "sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
  223. {"rem", "AUTO_OPEN will spawn a trigger field around the door that can open it without"},
  224. {"rem", "its being used."},
  225. {"rem", "DOOR_DONT_LINK will stop a door from being automatically linked to other doors"},
  226. {"rem", "that it touches."},
  227. //////////////////////////////
  228. // func_rotate
  229. //////////////////////////////
  230. {"classname", "func_rotate"},
  231. {"color", "0.0 0.5 0.8"},
  232. {"flag", "START_ON"},
  233. {"flag", "REVERSE"},
  234. {"flag", "X_AXIS"},
  235. {"flag", "Y_AXIS"},
  236. {"rem", "You need to have an origin brush as part of this entity."},
  237. {"rem", "The center of that brush will be"},
  238. {"rem", "the point around which it is rotated. It will rotate around the Z axis by"},
  239. {"rem", "default. You can"},
  240. {"rem", "check either the X_AXIS or Y_AXIS box to change that."},
  241. {"rem", " "},
  242. {"rem", "'speed' determines how fast it moves; default value is 100."},
  243. {"rem", "'dmg' damage to inflict when blocked (2 default)"},
  244. {"rem", " "},
  245. {"rem", "REVERSE will cause the it to rotate in the opposite direction."},
  246. //////////////////////////////
  247. // trigger_multiple
  248. //////////////////////////////
  249. {"classname", "trigger_multiple"},
  250. {"color", "0.5 0.5 0.5"},
  251. {"health", "0"},
  252. {"delay", "0"},
  253. {"wait", "0.2"},
  254. {"sound", ""},
  255. {"targetname", ""},
  256. {"target", ""},
  257. {"killtarget", ""},
  258. {"message", ""},
  259. {"flag", "NOTOUCH"},
  260. {"rem", "a repeatable trigger, targetted at the entity with the name"},
  261. {"rem", "targetname."},
  262. {"rem", ""},
  263. {"rem", "health - if set the trigger must be killed to activate"},
  264. {"rem", "delay - time to wait after activation before firing target"},
  265. {"rem", "wait - time to wait between retriggering (default = 0.2 seconds)"},
  266. {"rem", ""},
  267. {"rem", "Spawnflags:"},
  268. {"rem", "NOTOUCH - if set the trigger is only fired by other entities and"},
  269. {"rem", "not by touching."},
  270. //////////////////////////////
  271. // trigger_console
  272. //////////////////////////////
  273. {"classname", "trigger_console"},
  274. {"color", "0.5 0.5 0.5"},
  275. {"wait", "0.2"},
  276. {"command", ""},
  277. {"rem", ""},
  278. {"rem", "command - the command to send to the console when triggered"},
  279. //////////////////////////////
  280. // trigger_once
  281. //////////////////////////////
  282. {"classname", "trigger_once"},
  283. {"color", "0.5 0.5 0.5"},
  284. {"angle", "0 0 0"},
  285. {"health", "0"},
  286. {"delay", "0"},
  287. {"sound", ""},
  288. {"targetname", ""},
  289. {"killtarget", ""},
  290. {"message", ""},
  291. {"flag", "NOTOUCH"},
  292. {"rem", "triggers once, then removes itself"},
  293. {"rem", " "},
  294. {"rem", "health - if set the trigger must be killed to activate"},
  295. {"rem", "delay - time to wait after activation before firing target"},
  296. {"rem", "wait - time to wait between retriggering (default = 0.2 seconds)"},
  297. {"rem", "sound - name of sound to play upon firing"},
  298. {"rem", " "},
  299. {"rem", "Spawnflags:"},
  300. {"rem", "NOTOUCH - if set the trigger is only fired by other entities and"},
  301. {"rem", "not by touching."},
  302. //////////////////////////////
  303. // trigger_relay
  304. //////////////////////////////
  305. {"classname", "trigger_relay"},
  306. {"color", "0.5 0.5 0.5"},
  307. {"delay", "0"},
  308. {"sound", ""},
  309. {"targetname", ""},
  310. {"killtarget", ""},
  311. {"message", ""},
  312. {"rem", "sound - name of sound to play upon firing"},
  313. //////////////////////////////
  314. // trigger_teleport
  315. //////////////////////////////
  316. {"classname", "trigger_teleport"},
  317. {"color", "0.5 0.5 0.5"},
  318. {"sound", ""},
  319. {"targetname", ""},
  320. {"killtarget", ""},
  321. {"message", ""},
  322. {"flag", "PLAYER_ONLY"},
  323. {"flag", "NO_FLASH"},
  324. {"flag", "NO_ANGLE_ADJUST"},
  325. {"rem", "sound - name of sound to play upon firing, if not specified, then no"},
  326. {"rem", "sound will be played"},
  327. {"rem", "fog_value - sets fog_value to this when a teleporter is used"},
  328. {"rem", ""},
  329. {"rem", "Spawnflags:"},
  330. {"rem", "PLAYER_ONLY - will only teleport players (NOT bots)"},
  331. {"rem", "NO_FLASH - no spawn fog will be generated when an object teleports"},
  332. {"rem", "NO_ANGLE_ADJUST - the object's angle will not be adjusted when it is"},
  333. {"rem", "teleported."},
  334. //////////////////////////////
  335. // info_teleport_destination
  336. //////////////////////////////
  337. {"classname", "info_teleport_destination"},
  338. {"color", "0.5 0.5 0.5"},
  339. {"size", "-8.0 -8.0 -8.0 8.0 8.0 8.0"},
  340. //////////////////////////////
  341. // trigger_warp
  342. //////////////////////////////
  343. {"classname", "trigger_warp"},
  344. {"color", "0.5 0.5 0.5"},
  345. {"sound", ""},
  346. {"targetname", ""},
  347. {"killtarget", ""},
  348. {"message", ""},
  349. {"flag", "PLAYER_ONLY"},
  350. {"flag", "NO_FLASH"},
  351. {"flag", "NO_ANGLE_ADJUST"},
  352. {"rem", "sound - name of sound to play upon firing, if not specified, then no"},
  353. {"rem", "sound will be played"},
  354. {"rem", "fog_value - sets fog_value to this when a warp is used"},
  355. {"rem", "speed - speed from this path point to the next"},
  356. {"rem", ""},
  357. {"rem", "Spawnflags:"},
  358. {"rem", "PLAYER_ONLY - will only teleport players (NOT bots)"},
  359. {"rem", "NO_FLASH - no spawn fog will be generated when an object teleports"},
  360. {"rem", "NO_ANGLE_ADJUST - the object's angle will not be adjusted when it is"},
  361. {"rem", "teleported."},
  362. //////////////////////////////
  363. // tele_cylinder
  364. //////////////////////////////
  365. {"classname", "warp_cylinder"},
  366. {"color", "0.5 0.5 0.5"},
  367. {"color", "1 0 1"},
  368. {"size", "-16 -16 -24 16 16 32"},
  369. {"rem", "Location player starts in deathmatch"},
  370. //////////////////////////////
  371. // info_warp_destination
  372. //////////////////////////////
  373. {"classname", "info_warp_destination"},
  374. {"color", "0.5 0.5 0.5"},
  375. {"size", "-8.0 -8.0 -8.0 8.0 8.0 8.0"},
  376. {"rem", "target - next target to warp to"},
  377. {"rem", "speed - speed from this path point to the next"},
  378. //////////////////////////////
  379. // trigger_onlyregistered
  380. //////////////////////////////
  381. {"classname", "trigger_onlyregistered"},
  382. {"color", "0.5 0.5 0.5"},
  383. {"sound", ""},
  384. {"wait", "2.0"},
  385. {"message", ""},
  386. {"rem", "sound - name of sound to play upon firing"},
  387. {"rem", "wait - the number of seconds between triggerings and"},
  388. {"rem", "the length of time the message will be displayed"},
  389. //////////////////////////////
  390. // trigger_hurt
  391. //////////////////////////////
  392. {"classname", "trigger_hurt"},
  393. {"color", "0.5 0.5 0.5"},
  394. {"sound", ""},
  395. {"dmg", "2.0"},
  396. {"wait", "2.0"},
  397. {"message", ""},
  398. {"rem", "sound - name of sound to play upon firing"},
  399. {"rem", "dmg - the amount of damage the trigger will do to an object"},
  400. {"rem", "wait - the number of seconds between triggerings and"},
  401. //////////////////////////////
  402. // trigger_push
  403. //////////////////////////////
  404. {"classname", "trigger_push"},
  405. {"color", "0.5 0.5 0.5"},
  406. {"sound", ""},
  407. {"message", ""},
  408. {"speed", "1000.0"},
  409. {"flag", "PUSH_ONCE"},
  410. {"rem", "speed - the velocity to give the object"},
  411. {"rem", "speed - the velocity to give the object"},
  412. //////////////////////////////
  413. // trigger_counter
  414. //////////////////////////////
  415. {"classname", "trigger_counter"},
  416. {"color", "0.5 0.5 0.5"},
  417. {"sound", ""},
  418. {"flag", "NO_MESSAGE"},
  419. {"rem", "sound - name of sound to play upon firing"},
  420. {"rem", "message - message to display upon last triggering"},
  421. {"rem", "when NO_MESSAGE is set, no messages are displayed upon triggering"},
  422. //////////////////////////////
  423. // trigger_changelevel
  424. //////////////////////////////
  425. {"classname", "trigger_changelevel"},
  426. {"color", "0.5 0.5 0.5"},
  427. {"sound", ""},
  428. {"map", ""},
  429. {"flag", "NO_INTERMISSION"},
  430. {"rem", "sound - name of sound to play upon firing"},
  431. {"rem", "message - message to display upon last triggering"},
  432. //////////////////////////////
  433. // func_wall
  434. //////////////////////////////
  435. {"classname", "func_wall"},
  436. {"color", "0 0.5 0.8"},
  437. {"health", "0"},
  438. {"message", ""},
  439. {"targetname", ""},
  440. {"target", ""},
  441. {"killtarget", ""},
  442. {"rem", "targetname - the name of this wall if it is a target"},
  443. {"rem", "target - the next entity to trigger when this one is triggered"},
  444. {"rem", "killtarget - the targetname of the entity to remove when triggered"},
  445. //////////////////////////////
  446. // func_button
  447. //////////////////////////////
  448. {"classname", "func_button"},
  449. {"color", "0 0.5 0.8"},
  450. {"health", "0"},
  451. {"targetname", ""},
  452. {"target", ""},
  453. {"killtarget", ""},
  454. {"speed", ""},
  455. {"wait", ""},
  456. {"angle", ""},
  457. {"lip", ""},
  458. {"flag", "PUSH_TOUCH"},
  459. {"rem", "targetname - the name of this wall if it is a target"},
  460. {"rem", "target - the next entity to trigger when this one is triggered"},
  461. {"rem", "killtarget - the targetname of the entity to remove when triggered"},
  462. {"rem", "sound_use - the sound to play when the button is used (defaults to none)"},
  463. {"rem", "sound_return - the sound to play when the button returns (defaults to none)"},
  464. {"rem", "speed - rate of travel when button moves"},
  465. {"rem", "wait - seconds to wait befor returning to useable (-1 = never return)"},
  466. {"rem", "angle - direction of travel"},
  467. {"rem", "lip - amount of button left sticking out after being pushed (default 4)"},
  468. {"rem", "health - when > 0 the button must be killed in order to fire"},
  469. {"rem", "PUSH_TOUCH will allow the button to be pushed by running into it, Quake style"},
  470. //////////////////////////////
  471. // func_multi_button
  472. //////////////////////////////
  473. {"classname", "func_multi_button"},
  474. {"color", "0 0.5 0.8"},
  475. {"health", "0"},
  476. {"targetname", ""},
  477. {"target", ""},
  478. {"killtarget", ""},
  479. {"speed", ""},
  480. {"wait", ""},
  481. {"angle", ""},
  482. {"lip", ""},
  483. {"flag", "PUSH_TOUCH"},
  484. {"flag", "CYCLE"},
  485. {"rem", "targetname - the name of this wall if it is a target"},
  486. {"rem", "target - the next entity to trigger when this one is triggered"},
  487. {"rem", "killtarget - the targetname of the entity to remove when triggered"},
  488. {"rem", "sound_use - the sound to play when the button is used (defaults to none)"},
  489. {"rem", "sound_return - the sound to play when the button returns (defaults to none)"},
  490. {"rem", "speed - rate of travel when button moves"},
  491. {"rem", "wait - seconds to wait befor returning to useable (-1 = never return)"},
  492. {"rem", "angle - direction of travel"},
  493. {"rem", "health - when > 0 the button must be killed in order to fire"},
  494. {"rem", "distance - distance button travels on each push"},
  495. {"rem", "count - number of positions this button has"},
  496. {"rem", "PUSH_TOUCH will allow the button to be pushed by running into it, Quake style"},
  497. {"rem", "CYCLE - button will not return to top from last position, but will go back through all positions"},
  498. //////////////////////////////
  499. // func_train
  500. //////////////////////////////
  501. {"classname", "func_train"},
  502. {"distance", "90.0"},
  503. {"color", "0 0.5 0.8"},
  504. {"rem", "targetname - the name of this train"},
  505. {"rem", "target - the path_corner that the train will spawn at"},
  506. {"rem", "killtarget - the targetname of the entity to remove when triggered"},
  507. //////////////////////////////
  508. // func_train
  509. //////////////////////////////
  510. {"classname", "func_train2"},
  511. {"distance", "90.0"},
  512. {"color", "0 0.5 0.8"},
  513. {"rem", "targetname - the name of this train"},
  514. {"rem", "target - the path_corner that the train will spawn at"},
  515. {"rem", "killtarget - the targetname of the entity to remove when triggered"},
  516. //////////////////////////////
  517. // path_corner_train
  518. //////////////////////////////
  519. {"classname", "path_corner_train"},
  520. {"distance", "90.0"},
  521. {"color", "0.5 0.3 0"},
  522. {"size", "-8 -8 -8 8 8 8"},
  523. {"flag", "X_AXIS"},
  524. {"flag", "Y_AXIS"},
  525. {"flag", "Z_AXIS"},
  526. {"flag", "TRIGWAIT"},
  527. {"rem", "killtarget - the targetname of the entity to remove when this"},
  528. {"rem", "path_corner is reached"},
  529. {"rem", "speed - rate of travel from this path_corner to the next"},
  530. {"rem", "wait - seconds to wait after the actions on this path_corner are complete"},
  531. {"rem", "sound - sound to play at this path corner"},
  532. {"rem", "x_distance - distance in degrees to rotate around x axis"},
  533. {"rem", "y_distance - distance in degrees to rotate around y axis"},
  534. {"rem", "z_distance - distance in degrees to rotate around z axis"},
  535. {"rem", "x_speed - speed to rotate along x axis in degrees per second"},
  536. {"rem", "y_speed - speed to rotate along y axis in degrees per second"},
  537. {"rem", "z_speed - speed to rotate along z axis in degrees per second"},
  538. {"rem", "health - if health is set, the train will wait at this path corner"},
  539. {"rem", "until it is killed."},
  540. {"rem", "Spawnflags:"},
  541. {"rem", "X_AXIS - when checked train will rotate continually around "},
  542. {"rem", "x axis at x_speed degrees per second"},
  543. {"rem", "Y_AXIS - when checked train will rotate continually around "},
  544. {"rem", "y axis at y_speed degrees per second"},
  545. {"rem", "Z_AXIS - when checked train will rotate continually around "},
  546. {"rem", "z axis at z_speed degrees per second"},
  547. {"rem", "TRIGWAIT - wait here until triggered"},
  548. //////////////////////////////
  549. // info_player_start
  550. //////////////////////////////
  551. {"classname", "info_player_start"},
  552. {"color", "1 0 0"},
  553. {"size", "-16 -16 -24 16 16 32"},
  554. {"rem", "Location player starts in single play."},
  555. //////////////////////////////
  556. // info_mikiko_start
  557. //////////////////////////////
  558. {"classname", "info_mikiko_start"},
  559. {"color", "1 0 0"},
  560. {"size", "-16 -16 -24 16 16 32"},
  561. {"rem", "Location Mikiko starts in single play."},
  562. //////////////////////////////
  563. // info_superfly_start
  564. //////////////////////////////
  565. {"classname", "info_superfly_start"},
  566. {"color", "1 0 0"},
  567. {"size", "-16 -16 -24 16 16 32"},
  568. {"rem", "Location Superfly starts in single play."},
  569. //////////////////////////////
  570. // info_null
  571. //////////////////////////////
  572. {"classname", "info_null"},
  573. {"color", "1 0 0"},
  574. {"size", "-8 -8 -8 8 8 8"},
  575. {"rem", "You can point anything to this as a target"},
  576. //////////////////////////////
  577. // info_player_deathmatch
  578. //////////////////////////////
  579. {"classname", "info_player_deathmatch"},
  580. {"color", "1 0 1"},
  581. {"size", "-16 -16 -24 16 16 32"},
  582. {"rem", "Location player starts in deathmatch"},
  583. //////////////////////////////
  584. // info_player_coop
  585. //////////////////////////////
  586. {"classname", "info_player_coop"},
  587. {"color", "1 0 1"},
  588. {"size", "-16 -16 -24 16 16 32"},
  589. {"rem", "Location player starts in coop"},
  590. //////////////////////////////
  591. // func_door_secret
  592. //////////////////////////////
  593. {"classname", "func_door_secret"},
  594. {"color", "0 0.5 0.8"},
  595. {"health", "0"},
  596. {"speed", "100"},
  597. {"wait", "3"},
  598. {"lip", "8"},
  599. {"dmg", "2"},
  600. {"angle", "0 0 0"},
  601. {"message", "we all suck"},
  602. {"targetname", ""},
  603. {"flag", "OPEN_ONCE"},
  604. {"flag", "1ST_LEFT"},
  605. {"flag", "1ST_DOWN"},
  606. {"flag", "NO_SHOOT"},
  607. {"flag", "YES_SHOOT"},
  608. {"rem", "message - printed when the door is touched if it is a trigger door and it hasn't been fired yet"},
  609. {"rem", "angle - determines the opening direction"},
  610. {"rem", "targetname - if set, no touch field will be spawned and a remote button or trigger field activates the door."},
  611. {"rem", "health - if set, door must be shot open"},
  612. {"rem", "speed - movement speed (100 default)"},
  613. {"rem", "wait - time to wait before returning (3 default, -1 = never return)"},
  614. {"rem", "dmg - damage to inflict when blocked (2 default)"},
  615. {"rem", "sound_opening - name of the sound to play during opening, ie. doors/creek.wav"},
  616. {"rem", "sound_open_finish - name of the sound to play when opening completes, ie. doors/slam.wav"},
  617. {"rem", "sound_closing - name of the sound to play when closing starts, ie. doors/creek.wav"},
  618. {"rem", "sound_close_finish - name of the sound to play when closing completes, ie. doors/slam.wav"},
  619. {"rem", " "},
  620. {"rem", "Spawnflags:"},
  621. {"rem", "SECRET_OPEN_ONCE - door stays open (imagine that...)"},
  622. {"rem", "SECRET_1ST_LEFT - first move is left of move direction"},
  623. {"rem", "SECRET_1ST_DOWN - first move is down from move direction"},
  624. {"rem", "SECRET_NO_SHOOT - only opened by a trigger"},
  625. {"rem", "SECRET_YES_SHOOT - shootable even if targeted"},
  626. //////////////////////////////
  627. // func_wall_explode
  628. //////////////////////////////
  629. {"classname", "func_wall_explode"},
  630. {"color", "0 0.5 0.8"},
  631. {"health", "0"},
  632. {"message", ""},
  633. {"targetname", ""},
  634. {"target", ""},
  635. {"killtarget", ""},
  636. {"model_1", ""},
  637. {"model_2", ""},
  638. {"model_3", ""},
  639. {"flag", "ROCK_CHUNKS"},
  640. {"flag", "WOOD_CHUNKS"},
  641. {"flag", "EXTRA_CHUNKS"},
  642. {"flag", "EXTRA_VELOCITY"},
  643. {"flag", "NO_CHUNKS"},
  644. {"flag", "NO_SOUND"},
  645. {"rem", "targetname - the name of this wall if it is a target"},
  646. {"rem", "target - the next entity to trigger when this one is triggered"},
  647. {"rem", "killtarget - the targetname of the entity to remove when triggered"},
  648. {"rem", "health - ummm... this would be the health of the wall, if it is 0 then"},
  649. {"rem", "the wall can only be exploded by targetting it"},
  650. {"rem", "message - this prints out when wall go boom"},
  651. {"rem", "model_1 - the specific pathname of the first model to throw when killed"},
  652. {"rem", "if model_1 is set then spawnflags ROCK_CHUNKS and WOOD_CHUNKS are overridden"},
  653. {"rem", "model_2 - the pathname of the second model"},
  654. {"rem", "model_3 - I wouldn't bet on it, but this is probably the name of the 3rd model"},
  655. {"rem", " "},
  656. {"rem", "Spawnflags:"},
  657. {"rem", "ROCK_CHUNKS - makes rock chunk wall-gibs fly"},
  658. {"rem", "WOOD_CHUNKS - makes wood chunk wall-gibs fly"},
  659. {"rem", "EXTRA_CHUNKS - makes up to 3 chunks per explosion, instead of just one"},
  660. {"rem", "EXTRA_VELOCITY - gives chunks a higher velocity (good for underwater)"},
  661. {"rem", "NO_CHUNKS - um, no chunks"},
  662. {"rem", "NO_SOUND - no sound, use when lots of func walls are activated simultaneously to keep the"},
  663. {"rem", "Quake engine from choking with too many sounds at once."},
  664. //////////////////////////////
  665. // func_anim
  666. //////////////////////////////
  667. {"classname", "func_anim"},
  668. {"color", "0.0 1.0 0.1"},
  669. {"flag", "VISIBLE"},
  670. {"rem", "Spawnflags:"},
  671. {"rem", "VISIBLE - start visible"},
  672. //////////////////////////////
  673. // func_floater
  674. //////////////////////////////
  675. {"classname", "func_floater"},
  676. {"color", "0 0.5 0.8"},
  677. {"size", "-16 -16 -16 16 16 16"},
  678. {"model", ""},
  679. {"rem", "model - pathname to model (ie. models/floater.mdl)"},
  680. {"rem", "velocity_cap - maximum up/down velocity"},
  681. {"rem", "dissipate - how fast velocity degrades to velocity_cap (default = 0.99)"},
  682. {"rem", "object_mass - mass of object (mass / volume = density)"},
  683. {"rem", "object_volume - volume of object (mass / volume = density)"},
  684. //////////////////////////////
  685. // func_debris
  686. //////////////////////////////
  687. {"classname", "func_debris"},
  688. {"color", "0 0.5 0.8"},
  689. {"target", ""},
  690. {"flag", "GO_TO_ACTIVATOR"},
  691. {"flag", "NO_ROTATE"},
  692. {"flag", "MOMENTUM_DAMAGE"},
  693. {"flag", "NO_ROTATION_ADJUST"},
  694. {"flag", "DROP_ONLY"},
  695. {"flag", "QUARTER_SIZE"},
  696. {"rem", "target - debris will fly towards targeted entity"},
  697. {"rem", "fly_sound - sound to play while the entity flies through the air"},
  698. {"rem", "hit_sound - sound to play when the entity hits something"},
  699. {"rem", "damage - amount of damage to do when hitting another object"},
  700. {"rem", "if MOMENTUM_DAMAGE is selected, then damage will be based on the"},
  701. {"rem", "speed of the debris when it impacts the object and damage becomes"},
  702. {"rem", "the divisor, so if speed at impact = 300 and damge = 3, then damage done"},
  703. {"rem", "while 300 / 3 = 100 points. If damage is not set, then momentum damage"},
  704. {"rem", "will be the default with a damage divisor of 3."},
  705. {"rem", "Spawnflags:"},
  706. {"rem", "GO_TO_ACTIVATOR - debris will fly at whoever activated it"},
  707. {"rem", "NO_ROTATE - don't give this debris any random rotation"},
  708. {"rem", "MOMENTUM_DAMAGE - damage based on velocity"},
  709. {"rem", "DROP_ONLY - no upward velocity, debris just falls"},
  710. {"rem", "QUARTER_SIZE - shrink bounding box by 1/4"},
  711. {"rem", "Notes:"},
  712. {"rem", "A func debris entity must have an origin brush contained in it,"},
  713. {"rem", "otherwise it will rotate around the center of the level, not"},
  714. {"rem", "its own center. That is bad."},
  715. //////////////////////////////
  716. // func_debris_visible
  717. //////////////////////////////
  718. {"classname", "func_debris_visible"},
  719. {"color", "0 0.5 0.8"},
  720. {"target", ""},
  721. {"flag", "GO_TO_ACTIVATOR"},
  722. {"flag", "NO_ROTATE"},
  723. {"flag", "MOMENTUM_DAMAGE"},
  724. {"flag", "NO_ROTATION_ADJUST"},
  725. {"flag", "DROP_ONLY"},
  726. {"flag", "QUARTER_SIZE"},
  727. {"rem", "SAME AS FUNC_DEBRIS EXCEPT DEBRIS IS VISIBLE BEFORE TARGETTING"},
  728. {"rem", "target - debris will fly towards targeted entity"},
  729. {"rem", "fly_sound - sound to play while the entity flies through the air"},
  730. {"rem", "hit_sound - sound to play when the entity hits something"},
  731. {"rem", "damage - amount of damage to do when hitting another object"},
  732. {"rem", "if MOMENTUM_DAMAGE is selected, then damage will be based on the"},
  733. {"rem", "speed of the debris when it impacts the object and damage becomes"},
  734. {"rem", "the divisor, so if speed at impact = 300 and damge = 3, then damage done"},
  735. {"rem", "while 300 / 3 = 100 points. If damage is not set, then momentum damage"},
  736. {"rem", "will be the default with a damage divisor of 3."},
  737. {"rem", "Spawnflags:"},
  738. {"rem", "GO_TO_ACTIVATOR - debris will fly at whoever activated it"},
  739. {"rem", "NO_ROTATE - don't give this debris any random rotation"},
  740. {"rem", "MOMENTUM_DAMAGE - damage based on velocity"},
  741. {"rem", "DROP_ONLY - no upward velocity, debris just falls"},
  742. {"rem", "QUARTER_SIZE - shrink bounding box by 1/4"},
  743. {"rem", "Notes:"},
  744. {"rem", "A func debris entity must have an origin brush contained in it,"},
  745. {"rem", "otherwise it will rotate around the center of the level, not"},
  746. {"rem", "its own center. That is bad."},
  747. //////////////////////////////
  748. // func_particlefield
  749. //////////////////////////////
  750. {"classname", "func_particlefield"},
  751. {"color", "0 0.5 0.8"},
  752. {"flag", "USE_COUNT"},
  753. {"rem", "count - number of times to trigger before activated"},
  754. {"rem", "color - color of particles use:"},
  755. {"rem", "black, blue, green, cyan, red, "},
  756. {"rem", "purple, brown, ltgray, dkgray, "},
  757. {"rem", "ltblue, ltgreen, ltcyan, ltpurple,"},
  758. {"rem", "yellow, white"},
  759. //////////////////////////////
  760. // func_monitor
  761. //////////////////////////////
  762. {"classname", "func_monitor"},
  763. {"color", "0 0.5 0.8"},
  764. {"rem", "target - the info_camera that the view will be from"},
  765. {"rem", "fov - the field of view when looking through this camera"},
  766. //////////////////////////////
  767. // info_camera
  768. //////////////////////////////
  769. {"classname", "info_camera"},
  770. {"color", "1 0 0"},
  771. {"size", "-8 -8 -8 8 8 8"},
  772. //////////////////////////////
  773. // misc_lavaball_drop
  774. //////////////////////////////
  775. {"classname", "misc_lavaball_drop"},
  776. {"size", "-8 -8 -8 8 8 8"},
  777. {"color", "1.0 0.5 0.0"},
  778. //////////////////////////////
  779. // misc_lavaball_toss
  780. //////////////////////////////
  781. {"classname", "misc_lavaball_toss"},
  782. {"size", "-8 -8 -8 8 8 8"},
  783. {"color", "1.0 0.5 0.0"},
  784. {"rem", "target = can be triggered"},
  785. {"rem", "mintime = minimum time between tosses (default = 4.0 seconds)"},
  786. {"rem", "maxtime = maximum time between tosses (default = 12.0 seconds)"},
  787. {"rem", "damage = damage to do when an hitting something"},
  788. {"rem", "upmin = minimum upward velocity (default = 200)"},
  789. {"rem", "upmax = maximum upward velocity (default = 800)"},
  790. //////////////////////////////
  791. // sound_ambient
  792. //////////////////////////////
  793. {"classname", "sound_ambient"},
  794. {"size", "-8 -8 -8 8 8 8"},
  795. {"color", "1 0 1"},
  796. {"rem", "sound - path to ambient sound (ie. ambience/sound.wav."},
  797. {"rem", "fade - distance multiplier to make sounds fade in further away from source."},
  798. {"rem", "1.0 is normal, 2.0 is twice as far."},
  799. {"rem", "volume - 0 through 255. 255 is max."},
  800. //////////////////////////////
  801. // sound_ambient
  802. //////////////////////////////
  803. {"classname", "trigger_fog_value"},
  804. {"color", "0 1 0"},
  805. {"rem", "fog_value - the value for fog density 0 - 4. 0 is off, ie. r_drawfog 0"},
  806. //////////////////////////////
  807. // node_node
  808. //////////////////////////////
  809. {"classname", "node_node"},
  810. {"color", "0.5 0.5 1"},
  811. {"size", "-8 -8 -8 8 8 8"},
  812. {"flag", "NODE_DOOR"},
  813. {"rem", "number - the number of this node"},
  814. {"rem", "link - the number of the node linked to (can be up to four link fields)"},
  815. //////////////////////////////////////////////////////////////////////////////////////////////////////
  816. //
  817. // Monsters
  818. //
  819. //////////////////////////////////////////////////////////////////////////////////////////////////////
  820. ////////////////////////////////////////
  821. // Episode 1 monsters
  822. ////////////////////////////////////////
  823. {"classname", "monster_froginator"},
  824. {"color", "1.0 0.0 0.0"},
  825. {"size", "-16 -16 -24 16 16 32"},
  826. {"flag", "WANDER"},
  827. {"rem", "A light and refreshing monster."},
  828. {"rem", "One day I will read the spec and know what this"},
  829. {"rem", "monster does."},
  830. {"rem", "radius - wander radius"},
  831. {"rem", "Spawnflags:"},
  832. {"rem", "WANDER - monster will wander around"},
  833. {"classname", "monster_crox"},
  834. {"color", "1.0 0.0 0.0"},
  835. {"size", "-16 -16 -24 16 16 32"},
  836. {"flag", "WANDER"},
  837. {"rem", "A realistic representation of your mother"},
  838. {"rem", "radius - wander radius"},
  839. {"rem", "Spawnflags:"},
  840. {"rem", "WANDER - monster will wander around"},
  841. {"classname", "monster_slaughterskeet"},
  842. {"color", "1.0 0.0 0.0"},
  843. {"size", "-16 -16 -24 16 16 32"},
  844. {"flag", "WANDER"},
  845. {"rem", "A big thing with a big beak."},
  846. {"rem", "radius - wander radius"},
  847. {"rem", "Spawnflags:"},
  848. {"rem", "WANDER - monster will wander around"},
  849. {"classname", "monster_thunderskeet"},
  850. {"color", "1.0 0.0 0.0"},
  851. {"size", "-16 -16 -24 16 16 32"},
  852. {"flag", "WANDER"},
  853. {"rem", "A big thing with a big beak."},
  854. {"rem", "radius - wander radius"},
  855. {"rem", "Spawnflags:"},
  856. {"rem", "WANDER - monster will wander around"},
  857. {"classname", "monster_venomvermin"},
  858. {"color", "1.0 0.0 0.0"},
  859. {"size", "-16 -16 -24 16 16 32"},
  860. {"flag", "WANDER"},
  861. {"rem", "A big thing with a big beak."},
  862. {"rem", "radius - wander radius"},
  863. {"rem", "Spawnflags:"},
  864. {"rem", "WANDER - monster will wander around"},
  865. {"classname", "monster_tentaclor"},
  866. {"color", "1.0 0.0 0.0"},
  867. {"size", "-16 -16 -24 16 16 32"},
  868. {"flag", "WANDER"},
  869. {"rem", "A big thing with a big beak."},
  870. {"rem", "radius - wander radius"},
  871. {"rem", "Spawnflags:"},
  872. {"rem", "WANDER - monster will wander around"},
  873. {"classname", "monster_sludgeminion"},
  874. {"color", "1.0 0.0 0.0"},
  875. {"size", "-16 -16 -24 16 16 32"},
  876. {"flag", "WANDER"},
  877. {"flag", "PATHFOLLOW"},
  878. {"rem", "A big thing with a big beak."},
  879. {"rem", "radius - wander radius"},
  880. {"rem", "Spawnflags:"},
  881. {"rem", "WANDER - monster will wander around"},
  882. {"classname", "monster_prisoner"},
  883. {"color", "1.0 0.0 0.0"},
  884. {"size", "-16 -16 -24 16 16 32"},
  885. {"flag", "WANDER"},
  886. {"rem", "gib him."},
  887. {"rem", "radius - wander radius"},
  888. {"rem", "Spawnflags:"},
  889. {"rem", "WANDER - monster will wander around"},
  890. {"classname", "func_prisoner_respawn"},
  891. {"color", "1.0 0.0 0.0"},
  892. {"size", "-16 -16 -24 16 16 32"},
  893. {"rem", "time - seconds until a new prisoner is spawned"},
  894. {"classname", "monster_inmater"},
  895. {"color", "1.0 0.0 0.0"},
  896. {"size", "-32 -32 -24 32 32 64"},
  897. {"flag", "WANDER"},
  898. {"flag", "PATHFOLLOW"},
  899. {"rem", "A big thing with a big beak."},
  900. {"rem", "radius - wander radius"},
  901. {"rem", "Spawnflags:"},
  902. {"rem", "WANDER - monster will wander around"},
  903. {"rem", "PATH_FOLLOW - begin following a monster path"},
  904. {"classname", "monster_squid"},
  905. {"color", "1.0 0.0 0.0"},
  906. {"size", "-16 -16 -24 16 16 32"},
  907. {"flag", "WANDER"},
  908. {"rem", "A big thing with a big beak."},
  909. {"rem", "radius - wander radius"},
  910. {"rem", "Spawnflags:"},
  911. {"rem", "WANDER - monster will wander around"},
  912. {"classname", "monster_trackattack"},
  913. {"color", "1.0 0.0 0.0"},
  914. {"size", "-16 -16 -24 16 16 32"},
  915. {"rem", "Track turrets need to have a target"},
  916. {"rem", "which is the path_corner_track at which"},
  917. {"rem", "they will start."},
  918. {"rem", "Spawn about 16 units below the track to"},
  919. {"classname", "monster_trackdaddy"},
  920. {"color", "1.0 0.0 0.0"},
  921. {"size", "-16 -16 -24 16 16 32"},
  922. {"rem", "Track turrets need to have a target"},
  923. {"rem", "which is the path_corner_track at which"},
  924. {"rem", "they will start."},
  925. {"classname", "monster_lasergat"},
  926. {"color", "1.0 0.0 0.0"},
  927. {"size", "-16 -16 -24 16 16 32"},
  928. {"rem", "Track turrets need to have a target"},
  929. {"rem", "which is the path_corner_track at which"},
  930. {"rem", "they will start."},
  931. {"classname", "monster_psyclaw"},
  932. {"color", "1.0 0.0 0.0"},
  933. {"size", "-16 -16 -24 16 16 32"},
  934. {"flag", "WANDER"},
  935. {"rem", "A big dog without a head and a"},
  936. {"rem", "brain for a back. Cool, eh?"},
  937. {"rem", "Spawnflags:"},
  938. {"rem", "WANDER - monster will wander around"},
  939. {"classname", "monster_labworker"},
  940. {"color", "1.0 0.0 0.0"},
  941. {"size", "-16 -16 -24 16 16 32"},
  942. {"flag", "WANDER"},
  943. {"rem", "Lab worker. Your momma."},
  944. {"rem", "Spawnflags:"},
  945. {"rem", "WANDER - monster will wander around"},
  946. {"classname", "monster_battleboar"},
  947. {"color", "1.0 0.0 0.0"},
  948. {"size", "-16 -16 -24 16 16 32"},
  949. {"flag", "WANDER"},
  950. {"rem", "A motorized, cybernetic pig, of course."},
  951. {"rem", "Spawnflags:"},
  952. {"rem", "WANDER - monster will wander around"},
  953. //////////////////////////////
  954. // path_corner_track
  955. //
  956. // path corners for tracked turrets only!
  957. //////////////////////////////
  958. {"classname", "path_corner_track"},
  959. {"distance", "90.0"},
  960. {"color", "0.5 0.3 0"},
  961. {"size", "-8 -8 -8 8 8 8"},
  962. ////////////////////////////////////////
  963. // Episode 2 monsters
  964. ////////////////////////////////////////
  965. {"classname", "monster_skeleton"},
  966. {"color", "1.0 0.0 0.0"},
  967. {"size", "-16 -16 -24 16 16 32"},
  968. {"flag", "WANDER"},
  969. {"rem", "Where's he at? Ahh! He's in me!"},
  970. {"rem", "Spawnflags:"},
  971. {"rem", "WANDER - monster will wander around"},
  972. {"classname", "monster_spider"},
  973. {"color", "1.0 0.0 0.0"},
  974. {"size", "-32 -32 -24 32 32 32"},
  975. {"flag", "WANDER"},
  976. {"rem", "Dumbass."},
  977. {"rem", "Spawnflags:"},
  978. {"rem", "WANDER - monster will wander around"},
  979. {"classname", "monster_tarantula"},
  980. {"color", "1.0 0.0 0.0"},
  981. {"size", "-16 -16 -24 16 16 32"},
  982. {"flag", "WANDER"},
  983. {"rem", "Dumbass."},
  984. {"rem", "Spawnflags:"},
  985. {"rem", "WANDER - monster will wander around"},
  986. {"classname", "monster_griffon"},
  987. {"color", "1.0 0.0 0.0"},
  988. {"size", "-16 -16 -24 16 16 32"},
  989. {"flag", "WANDER"},
  990. {"rem", "A big thing with a big beak."},
  991. {"rem", "Spawnflags:"},
  992. {"rem", "WANDER - monster will wander around"},
  993. {"classname", "monster_harpy"},
  994. {"color", "1.0 0.0 0.0"},
  995. {"size", "-16 -16 -24 16 16 32"},
  996. {"flag", "WANDER"},
  997. {"rem", "A big thing with a big beak."},
  998. {"rem", "Spawnflags:"},
  999. {"rem", "WANDER - monster will wander around"},
  1000. {"classname", "monster_centurion"},
  1001. {"color", "1.0 0.0 0.0"},
  1002. {"size", "-16 -16 -24 16 16 32"},
  1003. {"flag", "WANDER"},
  1004. {"rem", "A big thing with a big beak."},
  1005. {"rem", "Spawnflags:"},
  1006. {"rem", "WANDER - monster will wander around"},
  1007. {"classname", "monster_siren"},
  1008. {"color", "1.0 0.0 0.0"},
  1009. {"size", "-16 -16 -24 16 16 32"},
  1010. {"flag", "WANDER"},
  1011. {"rem", "A big thing with a big beak."},
  1012. {"rem", "Spawnflags:"},
  1013. {"rem", "WANDER - monster will wander around"},
  1014. {"classname", "monster_ferryman"},
  1015. {"color", "1.0 0.0 0.0"},
  1016. {"size", "-16 -16 -24 16 16 32"},
  1017. {"flag", "WANDER"},
  1018. {"rem", "A big thing with a big beak."},
  1019. {"rem", "Spawnflags:"},
  1020. {"rem", "WANDER - monster will wander around"},
  1021. {"classname", "monster_satyr"},
  1022. {"color", "1.0 0.0 0.0"},
  1023. {"size", "-32 -32 -24 32 32 64"},
  1024. {"flag", "WANDER"},
  1025. {"rem", "This thing will beat you down."},
  1026. {"rem", "Spawnflags:"},
  1027. {"rem", "WANDER - monster will wander around"},
  1028. {"classname", "monster_column"},
  1029. {"color", "1.0 0.0 0.0"},
  1030. {"size", "-32 -32 -24 32 32 64"},
  1031. {"flag", "WANDER"},
  1032. {"rem", "Look at the tits on that statue!!"},
  1033. {"rem", "Spawnflags:"},
  1034. {"rem", "WANDER - monster will wander around"},
  1035. ////////////////////////////////////////
  1036. // Episode 3 monsters
  1037. ////////////////////////////////////////
  1038. {"classname", "monster_plague_rat"},
  1039. {"color", "1.0 0.0 0.0"},
  1040. {"size", "-16 -16 -24 16 16 32"},
  1041. {"rem", "I broke you!"},
  1042. {"flag", "WANDER"},
  1043. {"rem", "I broke you!"},
  1044. {"rem", "radius - wander radius"},
  1045. {"rem", "Spawnflags:"},
  1046. {"rem", "WANDER - monster will wander around"},
  1047. {"classname", "monster_rotworm"},
  1048. {"color", "1.0 0.0 0.0"},
  1049. {"size", "-16 -16 -24 16 16 32"},
  1050. {"flag", "WANDER"},
  1051. {"rem", "I beat the dictionary out of your filthy mouth!"},
  1052. {"rem", "radius - wander radius"},
  1053. {"rem", "Spawnflags:"},
  1054. {"rem", "WANDER - monster will wander around"},
  1055. {"classname", "monster_buboid"},
  1056. {"color", "1.0 0.0 0.0"},
  1057. {"size", "-16 -16 -24 16 16 32"},
  1058. {"flag", "WANDER"},
  1059. {"rem", "Dumbass."},
  1060. {"rem", "radius - wander radius"},
  1061. {"rem", "Spawnflags:"},
  1062. {"rem", "WANDER - monster will wander around"},
  1063. {"classname", "monster_priest"},
  1064. {"color", "1.0 0.0 0.0"},
  1065. {"size", "-16 -16 -24 16 16 32"},
  1066. {"flag", "WANDER"},
  1067. {"rem", "A big thing with a big beak."},
  1068. {"rem", "radius - wander radius"},
  1069. {"rem", "Spawnflags:"},
  1070. {"rem", "WANDER - monster will wander around"},
  1071. {"classname", "monster_doombat"},
  1072. {"color", "1.0 0.0 0.0"},
  1073. {"size", "-16 -16 -24 16 16 32"},
  1074. {"flag", "WANDER"},
  1075. {"rem", "A big thing with a big beak."},
  1076. {"rem", "radius - wander radius"},
  1077. {"rem", "Spawnflags:"},
  1078. {"rem", "WANDER - monster will wander around"},
  1079. {"classname", "monster_lycanthir"},
  1080. {"color", "1.0 0.0 0.0"},
  1081. {"size", "-16 -16 -24 16 16 32"},
  1082. {"flag", "WANDER"},
  1083. {"rem", "A big thing with a big beak."},
  1084. {"rem", "radius - wander radius"},
  1085. {"rem", "Spawnflags:"},
  1086. {"rem", "WANDER - monster will wander around"},
  1087. {"classname", "monster_fletcher"},
  1088. {"color", "1.0 0.0 0.0"},
  1089. {"size", "-16 -16 -24 16 16 32"},
  1090. {"flag", "WANDER"},
  1091. {"rem", "A big thing with a big beak."},
  1092. {"rem", "radius - wander radius"},
  1093. {"rem", "Spawnflags:"},
  1094. {"rem", "WANDER - monster will wander around"},
  1095. {"classname", "monster_dwarf"},
  1096. {"color", "1.0 0.0 0.0"},
  1097. {"size", "-16 -16 -24 16 16 32"},
  1098. {"flag", "WANDER"},
  1099. {"rem", "A big thing with a big beak."},
  1100. {"rem", "radius - wander radius"},
  1101. {"rem", "Spawnflags:"},
  1102. {"rem", "WANDER - monster will wander around"},
  1103. {"classname", "monster_dragonegg"},
  1104. {"color", "1.0 0.0 0.0"},
  1105. {"size", "-16 -16 -24 16 16 32"},
  1106. {"flag", "WANDER"},
  1107. {"rem", "A big thing with a big beak."},
  1108. {"rem", "radius - wander radius"},
  1109. {"rem", "Spawnflags:"},
  1110. {"rem", "WANDER - monster will wander around"},
  1111. {"classname", "monster_babydragon"},
  1112. {"color", "1.0 0.0 0.0"},
  1113. {"size", "-16 -16 -24 16 16 32"},
  1114. {"flag", "WANDER"},
  1115. {"rem", "A big thing with a big beak."},
  1116. {"rem", "radius - wander radius"},
  1117. {"rem", "Spawnflags:"},
  1118. {"rem", "WANDER - monster will wander around"},
  1119. ////////////////////////////////////////
  1120. // Episode 4 monsters
  1121. ////////////////////////////////////////
  1122. {"classname", "monster_gang1"},
  1123. {"color", "1.0 0.0 0.0"},
  1124. {"size", "-16 -16 -24 16 16 32"},
  1125. {"flag", "WANDER"},
  1126. {"rem", "Less than half a fucking man."},
  1127. {"rem", "radius - wander radius"},
  1128. {"rem", "Spawnflags:"},
  1129. {"rem", "WANDER - monster will wander around"},
  1130. {"classname", "monster_gang2"},
  1131. {"color", "1.0 0.0 0.0"},
  1132. {"size", "-16 -16 -24 16 16 32"},
  1133. {"flag", "WANDER"},
  1134. {"rem", "You're fucking dumb! Suck it down."},
  1135. {"rem", "radius - wander radius"},
  1136. {"rem", "Spawnflags:"},
  1137. {"rem", "WANDER - monster will wander around"},
  1138. {"classname", "monster_blackprisoner"},
  1139. {"color", "1.0 0.0 0.0"},
  1140. {"size", "-16 -16 -24 16 16 32"},
  1141. {"flag", "WANDER"},
  1142. {"rem", "A big thing with a big beak."},
  1143. {"rem", "radius - wander radius"},
  1144. {"rem", "Spawnflags:"},
  1145. {"rem", "WANDER - monster will wander around"},
  1146. {"classname", "monster_whiteprisoner"},
  1147. {"color", "1.0 0.0 0.0"},
  1148. {"size", "-16 -16 -24 16 16 32"},
  1149. {"flag", "WANDER"},
  1150. {"rem", "A big thing with a big beak."},
  1151. {"rem", "radius - wander radius"},
  1152. {"rem", "Spawnflags:"},
  1153. {"rem", "WANDER - monster will wander around"},
  1154. {"classname", "monster_femgang"},
  1155. {"color", "1.0 0.0 0.0"},
  1156. {"size", "-16 -16 -24 16 16 32"},
  1157. {"flag", "WANDER"},
  1158. {"rem", "A big thing with a big beak."},
  1159. {"rem", "radius - wander radius"},
  1160. {"rem", "Spawnflags:"},
  1161. {"rem", "WANDER - monster will wander around"},
  1162. {"classname", "monster_rocketdude"},
  1163. {"color", "1.0 0.0 0.0"},
  1164. {"size", "-16 -16 -24 16 16 32"},
  1165. {"flag", "WANDER"},
  1166. {"rem", "A big thing with a big beak."},
  1167. {"rem", "radius - wander radius"},
  1168. {"rem", "Spawnflags:"},
  1169. {"rem", "WANDER - monster will wander around"},
  1170. {"classname", "monster_chaingang"},
  1171. {"color", "1.0 0.0 0.0"},
  1172. {"size", "-16 -16 -24 16 16 32"},
  1173. {"flag", "WANDER"},
  1174. {"rem", "A big thing with a big beak."},
  1175. {"rem", "radius - wander radius"},
  1176. {"rem", "Spawnflags:"},
  1177. {"rem", "WANDER - monster will wander around"},
  1178. {"classname", "monster_labmonkey"},
  1179. {"color", "1.0 0.0 0.0"},
  1180. {"size", "-16 -16 -24 16 16 32"},
  1181. {"flag", "WANDER"},
  1182. {"rem", "Lab monkey. This thing will crack your skull."},
  1183. {"rem", "Spawnflags:"},
  1184. {"rem", "WANDER - monster will wander around"},
  1185. {"classname", "monkey_message"},
  1186. {"color", "1.0 0.0 0.0"},
  1187. {"size", "-8 -8 -8 8 8 8"},
  1188. {"rem", "Target this from the monkey switch to display current monkey state."},
  1189. //////////////////////////////////////////////////////////////////
  1190. // monster AI markers
  1191. //////////////////////////////////////////////////////////////////
  1192. {"classname", "monster_path_corner"},
  1193. {"distance", "90.0"},
  1194. {"color", "0.5 0.3 0"},
  1195. {"size", "-8 -8 -8 8 8 8"},
  1196. {"rem", "A path corner for a monster to travel along"},
  1197. {"rem" "target1 - target4: "},
  1198. {"rem", "Can have up to 4 targets for the monster"},
  1199. {"rem", "to travel to. If there is more than one target"},
  1200. {"rem", "the monster will randomly choose the next target"},
  1201. {"rem", "from those available."},
  1202. {"rem", "action1 - action4: "},
  1203. {"rem", "Use the action field to make a monster perform a"},
  1204. {"rem", "specific action at the path corner. For example"},
  1205. {"rem", "'action scoop' will make a sludge minion scoop"},
  1206. {"rem", "sludge at that path corner (other monsters will"},
  1207. {"rem", "ignore the scoop command. You can have multiple"},
  1208. {"rem", "actions on a path corner, for instance:"},
  1209. {"rem", " action1 scoop"},
  1210. {"rem", " action2 interrogate"},
  1211. {"rem", "Sludge minions reaching this path corner will scoop"},
  1212. {"rem", "while Inmaters will search out nearest prisoner"},
  1213. //////////////////////////////////////////////////////////////////
  1214. // decorations
  1215. //////////////////////////////////////////////////////////////////
  1216. {"classname", "deco_e1"},
  1217. {"color", "1.0 0.0 0.0"},
  1218. {"size", "-16 -16 -24 16 16 0"},
  1219. {"flag", "DECO_EXPLODE"},
  1220. {"flag", "DECO_NO_EXPLODE"},
  1221. {"flag", "DECO_PUSHABLE"},
  1222. {"rem", "model - choose model # -- see list."},
  1223. {"classname", "deco_e2"},
  1224. {"color", "1.0 0.0 0.0"},
  1225. {"size", "-16 -16 -24 16 16 0"},
  1226. {"flag", "DECO_EXPLODE"},
  1227. {"flag", "DECO_NO_EXPLODE"},
  1228. {"flag", "DECO_PUSHABLE"},
  1229. {"rem", "model - choose model # -- see list."},
  1230. {"classname", "deco_e3"},
  1231. {"color", "1.0 0.0 0.0"},
  1232. {"size", "-16 -16 -24 16 16 0"},
  1233. {"flag", "DECO_EXPLODE"},
  1234. {"flag", "DECO_NO_EXPLODE"},
  1235. {"flag", "DECO_PUSHABLE"},
  1236. {"rem", "model - choose model # -- see list."},
  1237. {"classname", "deco_e4"},
  1238. {"color", "1.0 0.0 0.0"},
  1239. {"size", "-16 -16 -24 16 16 0"},
  1240. {"flag", "DECO_EXPLODE"},
  1241. {"flag", "DECO_NO_EXPLODE"},
  1242. {"flag", "DECO_PUSHABLE"},
  1243. {"rem", "model - choose model # -- see list."},
  1244. {NULL, NULL},
  1245. };
  1246. #endif