Advertisement
Guest User

Untitled

a guest
May 9th, 2021
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.10 KB | None | 0 0
  1. /*
  2. ==============================================================================
  3.  
  4. SHAMBLER
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. $cd id1/models/shams
  10. $origin 0 0 24
  11. $base base
  12. $skin base
  13.  
  14. $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8 stand9
  15. $frame stand10 stand11 stand12 stand13 stand14 stand15 stand16 stand17
  16.  
  17. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7
  18. $frame walk8 walk9 walk10 walk11 walk12
  19.  
  20. $frame run1 run2 run3 run4 run5 run6
  21.  
  22. $frame smash1 smash2 smash3 smash4 smash5 smash6 smash7
  23. $frame smash8 smash9 smash10 smash11 smash12
  24.  
  25. $frame swingr1 swingr2 swingr3 swingr4 swingr5
  26. $frame swingr6 swingr7 swingr8 swingr9
  27.  
  28. $frame swingl1 swingl2 swingl3 swingl4 swingl5
  29. $frame swingl6 swingl7 swingl8 swingl9
  30.  
  31. $frame magic1 magic2 magic3 magic4 magic5
  32. $frame magic6 magic7 magic8 magic9 magic10 magic11 magic12
  33.  
  34. $frame pain1 pain2 pain3 pain4 pain5 pain6
  35.  
  36. $frame death1 death2 death3 death4 death5 death6
  37. $frame death7 death8 death9 death10 death11
  38.  
  39. void() sham_stand1 =[ $stand1, sham_stand2 ] {ai_stand();};
  40. void() sham_stand2 =[ $stand2, sham_stand3 ] {ai_stand();};
  41. void() sham_stand3 =[ $stand3, sham_stand4 ] {ai_stand();};
  42. void() sham_stand4 =[ $stand4, sham_stand5 ] {ai_stand();};
  43. void() sham_stand5 =[ $stand5, sham_stand6 ] {ai_stand();};
  44. void() sham_stand6 =[ $stand6, sham_stand7 ] {ai_stand();};
  45. void() sham_stand7 =[ $stand7, sham_stand8 ] {ai_stand();};
  46. void() sham_stand8 =[ $stand8, sham_stand9 ] {ai_stand();};
  47. void() sham_stand9 =[ $stand9, sham_stand10] {ai_stand();};
  48. void() sham_stand10 =[ $stand10, sham_stand11] {ai_stand();};
  49. void() sham_stand11 =[ $stand11, sham_stand12] {ai_stand();};
  50. void() sham_stand12 =[ $stand12, sham_stand13] {ai_stand();};
  51. void() sham_stand13 =[ $stand13, sham_stand14] {ai_stand();};
  52. void() sham_stand14 =[ $stand14, sham_stand15] {ai_stand();};
  53. void() sham_stand15 =[ $stand15, sham_stand16] {ai_stand();};
  54. void() sham_stand16 =[ $stand16, sham_stand17] {ai_stand();};
  55. void() sham_stand17 =[ $stand17, sham_stand1 ] {ai_stand();};
  56.  
  57. void() sham_walk1 =[ $walk1, sham_walk2 ] {ai_walk(10);};
  58. void() sham_walk2 =[ $walk2, sham_walk3 ] {ai_walk(9 * (1 + self.speed_mod));};
  59. void() sham_walk3 =[ $walk3, sham_walk4 ] {ai_walk(9 * (1 + self.speed_mod));};
  60. void() sham_walk4 =[ $walk4, sham_walk5 ] {ai_walk(5 * (1 + self.speed_mod));};
  61. void() sham_walk5 =[ $walk5, sham_walk6 ] {ai_walk(6 * (1 + self.speed_mod));};
  62. void() sham_walk6 =[ $walk6, sham_walk7 ] {ai_walk(12 * (1 + self.speed_mod));};
  63. void() sham_walk7 =[ $walk7, sham_walk8 ] {ai_walk(8 * (1 + self.speed_mod));};
  64. void() sham_walk8 =[ $walk8, sham_walk9 ] {ai_walk(3 * (1 + self.speed_mod));};
  65. void() sham_walk9 =[ $walk9, sham_walk10] {ai_walk(13 * (1 + self.speed_mod));};
  66. void() sham_walk10 =[ $walk10, sham_walk11] {ai_walk(9 * (1 + self.speed_mod));};
  67. void() sham_walk11 =[ $walk11, sham_walk12] {ai_walk(7 * (1 + self.speed_mod));};
  68. void() sham_walk12 =[ $walk12, sham_walk1 ] {ai_walk(7 * (1 + self.speed_mod));
  69. if (random() > 0.8)
  70. sound_idle (self, CHAN_VOICE, "shambler/sidle.wav", 1, ATTN_IDLE);};
  71.  
  72. void() sham_run1 =[ $run1, sham_run2 ] {ai_run(20 * (1 + self.speed_mod));};
  73. void() sham_run2 =[ $run2, sham_run3 ] {ai_run(24 * (1 + self.speed_mod));};
  74. void() sham_run3 =[ $run3, sham_run4 ] {ai_run(20 * (1 + self.speed_mod));};
  75. void() sham_run4 =[ $run4, sham_run5 ] {ai_run(20 * (1 + self.speed_mod));};
  76. void() sham_run5 =[ $run5, sham_run6 ] {ai_run(24 * (1 + self.speed_mod));};
  77. void() sham_run6 =[ $run6, sham_run1 ] {ai_run(20 * (1 + self.speed_mod));
  78. if (random() > 0.8)
  79. sound_idle (self, CHAN_VOICE, "shambler/sidle.wav", 1, ATTN_IDLE);
  80. };
  81.  
  82. void() sham_smash1 =[ $smash1, sham_smash2 ] {
  83. sound_attack (self, CHAN_VOICE, "shambler/melee1.wav", 1, ATTN_NORM);
  84. ai_charge(2);};
  85. void() sham_smash2 =[ $smash2, sham_smash3 ] {ai_charge(6 * (1 + self.speed_mod));};
  86. void() sham_smash3 =[ $smash3, sham_smash4 ] {ai_charge(6 * (1 + self.speed_mod));};
  87. void() sham_smash4 =[ $smash4, sham_smash5 ] {ai_charge(5 * (1 + self.speed_mod));};
  88. void() sham_smash5 =[ $smash5, sham_smash6 ] {ai_charge(4 * (1 + self.speed_mod));};
  89. void() sham_smash6 =[ $smash6, sham_smash7 ] {ai_charge(1 * (1 + self.speed_mod));};
  90. void() sham_smash7 =[ $smash7, sham_smash8 ] {ai_charge(0 * (1 + self.speed_mod));};
  91. void() sham_smash8 =[ $smash8, sham_smash9 ] {ai_charge(0 * (1 + self.speed_mod));};
  92. void() sham_smash9 =[ $smash9, sham_smash10 ] {ai_charge(0 * (1 + self.speed_mod));};
  93. void() sham_smash10 =[ $smash10, sham_smash11 ] {
  94. local vector delta;
  95. local float ldmg;
  96.  
  97. if (!self.enemy)
  98. return;
  99. ai_charge(0);
  100.  
  101. delta = self.enemy.origin - self.origin;
  102.  
  103. if (vlen(delta) > 100)
  104. return;
  105. if (!CanDamage (self.enemy, self))
  106. return;
  107.  
  108. ldmg = (random() + random() + random()) * 40;
  109. T_Damage (self.enemy, self, self, ldmg);
  110. sound_hit (self, CHAN_VOICE, "shambler/smack.wav", 1, ATTN_NORM);
  111.  
  112. SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);
  113. SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);
  114. };
  115. void() sham_smash11 =[ $smash11, sham_smash12 ] {ai_charge(5 * (1 + self.speed_mod));};
  116. void() sham_smash12 =[ $smash12, sham_run1 ] {ai_charge(4 * (1 + self.speed_mod));};
  117.  
  118. void() sham_swingr1;
  119.  
  120. void(float side) ShamClaw =
  121. {
  122. local vector delta;
  123. local float ldmg;
  124.  
  125. if (!self.enemy)
  126. return;
  127. ai_charge(10 * (1 + self.speed_mod));
  128.  
  129. delta = self.enemy.origin - self.origin;
  130.  
  131. if (vlen(delta) > 100)
  132. return;
  133.  
  134. ldmg = (random() + random() + random()) * 20;
  135. T_Damage (self.enemy, self, self, ldmg);
  136. sound_hit (self, CHAN_VOICE, "shambler/smack.wav", 1, ATTN_NORM);
  137.  
  138. if (side)
  139. {
  140. makevectors (self.angles);
  141. SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
  142. }
  143. };
  144.  
  145. void() sham_swingl1 =[ $swingl1, sham_swingl2 ] {
  146. sound_misc (self, CHAN_VOICE, "shambler/melee2.wav", 1, ATTN_NORM);
  147. ai_charge(5);};
  148. void() sham_swingl2 =[ $swingl2, sham_swingl3 ] {ai_charge(3 * (1 + self.speed_mod));};
  149. void() sham_swingl3 =[ $swingl3, sham_swingl4 ] {ai_charge(7 * (1 + self.speed_mod));};
  150. void() sham_swingl4 =[ $swingl4, sham_swingl5 ] {ai_charge(3 * (1 + self.speed_mod));};
  151. void() sham_swingl5 =[ $swingl5, sham_swingl6 ] {ai_charge(7 * (1 + self.speed_mod));};
  152. void() sham_swingl6 =[ $swingl6, sham_swingl7 ] {ai_charge(9 * (1 + self.speed_mod));};
  153. void() sham_swingl7 =[ $swingl7, sham_swingl8 ] {ai_charge(5 * (1 + self.speed_mod)); ShamClaw(250);};
  154. void() sham_swingl8 =[ $swingl8, sham_swingl9 ] {ai_charge(4 * (1 + self.speed_mod));};
  155. void() sham_swingl9 =[ $swingl9, sham_run1 ] {
  156. ai_charge(8 * (1 + self.speed_mod));
  157. if (random()<0.5)
  158. self.think = sham_swingr1;
  159. };
  160.  
  161. void() sham_swingr1 =[ $swingr1, sham_swingr2 ] {
  162. sound_attack (self, CHAN_VOICE, "shambler/melee1.wav", 1, ATTN_NORM);
  163. ai_charge(1 * (1 + self.speed_mod));};
  164. void() sham_swingr2 =[ $swingr2, sham_swingr3 ] {ai_charge(8 * (1 + self.speed_mod));};
  165. void() sham_swingr3 =[ $swingr3, sham_swingr4 ] {ai_charge(14 * (1 + self.speed_mod));};
  166. void() sham_swingr4 =[ $swingr4, sham_swingr5 ] {ai_charge(7 * (1 + self.speed_mod));};
  167. void() sham_swingr5 =[ $swingr5, sham_swingr6 ] {ai_charge(3 * (1 + self.speed_mod));};
  168. void() sham_swingr6 =[ $swingr6, sham_swingr7 ] {ai_charge(6 * (1 + self.speed_mod));};
  169. void() sham_swingr7 =[ $swingr7, sham_swingr8 ] {ai_charge(6 * (1 + self.speed_mod)); ShamClaw(-250);};
  170. void() sham_swingr8 =[ $swingr8, sham_swingr9 ] {ai_charge(3 * (1 + self.speed_mod));};
  171. void() sham_swingr9 =[ $swingr9, sham_run1 ] {ai_charge(1 * (1 + self.speed_mod));
  172. ai_charge(10 * (1 + self.speed_mod));
  173. if (random()<0.5)
  174. self.think = sham_swingl1;
  175. };
  176.  
  177. void() sham_melee =
  178. {
  179. local float chance;
  180.  
  181. chance = random();
  182. if (chance > 0.6 || self.health == 600)
  183. sham_smash1 ();
  184. else if (chance > 0.3)
  185. sham_swingr1 ();
  186. else
  187. sham_swingl1 ();
  188. };
  189.  
  190.  
  191. //============================================================================
  192.  
  193.  
  194. void() sham_arc_think =
  195. {
  196. if (self.owner != world && self.owner.trigger_field == self)
  197. self.owner.trigger_field = world;
  198. remove (self);
  199. };
  200.  
  201.  
  202. void() CastLightning =
  203. {
  204. local vector org, dir;
  205.  
  206. self.effects = self.effects | EF_MUZZLEFLASH;
  207.  
  208. ai_face ();
  209.  
  210. org = self.origin + self.attack_offset; //'0 0 40';
  211.  
  212. dir = self.enemy.origin + '0 0 16' - org;
  213. dir = normalize (dir);
  214.  
  215. if (self.hitscan_range)
  216. traceline (org, self.origin + dir*self.hitscan_range, TRUE, self);
  217. else
  218. traceline (org, self.origin + dir*600, TRUE, self);
  219.  
  220. WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
  221. WriteByte (MSG_BROADCAST, TE_LIGHTNING1);
  222. WriteEntity (MSG_BROADCAST, self);
  223. WriteCoord (MSG_BROADCAST, org_x);
  224. WriteCoord (MSG_BROADCAST, org_y);
  225. WriteCoord (MSG_BROADCAST, org_z);
  226. WriteCoord (MSG_BROADCAST, trace_endpos_x);
  227. WriteCoord (MSG_BROADCAST, trace_endpos_y);
  228. WriteCoord (MSG_BROADCAST, trace_endpos_z);
  229.  
  230. LightningDamage (org, trace_endpos, self, 10);
  231. };
  232.  
  233. //void() sham_magic1 =[ $magic1, sham_magic2 ] {ai_face();
  234. // sound_misc1 (self, CHAN_WEAPON, "shambler/sattck1.wav", 1, ATTN_NORM);
  235. void() sham_magic1 =[ $magic1, sham_magic2 ] {ai_face();
  236. sound_misc1 (self, CHAN_WEAPON, "shambler/sattck1.wav", 1, ATTN_NORM);
  237.  
  238. };
  239. void() sham_magic2 =[ $magic2, sham_magic3 ] {ai_face();};
  240. void() sham_magic3 =[ $magic3, sham_magic4 ] {ai_face();self.nextthink = self.nextthink + (0.2 * self.speed_mod);
  241. local entity o;
  242.  
  243. self.effects = self.effects | EF_MUZZLEFLASH;
  244. ai_face();
  245. self.trigger_field = spawn();
  246. o = self.trigger_field;
  247. setmodel (o, "progs/s_light.mdl");
  248. setorigin (o, self.origin);
  249. o.owner = self;
  250. o.angles = self.angles;
  251. o.nextthink = time + 0.7;
  252. o.think = sham_arc_think;
  253. };
  254. void() sham_magic4 =[ $magic4, sham_magic5 ]
  255. {
  256. self.effects = self.effects | EF_MUZZLEFLASH;
  257. self.trigger_field.frame = 1;
  258. };
  259. void() sham_magic5 =[ $magic5, sham_magic6 ]
  260. {
  261. self.effects = self.effects | EF_MUZZLEFLASH;
  262. self.trigger_field.frame = 2;
  263. };
  264. void() sham_magic6 =[ $magic6, sham_magic9 ]
  265. {
  266. remove (self.trigger_field);
  267. self.trigger_field = world;
  268. CastLightning();
  269. sound_misc2 (self, CHAN_WEAPON, "shambler/sboom.wav", 1, ATTN_NORM);
  270. };
  271. void() sham_magic9 =[ $magic9, sham_magic10 ]
  272. {CastLightning();};
  273. void() sham_magic10 =[ $magic10, sham_magic11 ]
  274. {CastLightning();};
  275. void() sham_magic11 =[ $magic11, sham_magic12 ]
  276. {
  277. if (skill == 3)
  278. CastLightning();
  279. };
  280. void() sham_magic12 =[ $magic12, sham_run1 ] {};
  281.  
  282.  
  283.  
  284. void() sham_pain1 =[ $pain1, sham_pain2 ] {};
  285. void() sham_pain2 =[ $pain2, sham_pain3 ] {};
  286. void() sham_pain3 =[ $pain3, sham_pain4 ] {};
  287. void() sham_pain4 =[ $pain4, sham_pain5 ] {};
  288. void() sham_pain5 =[ $pain5, sham_pain6 ] {};
  289. void() sham_pain6 =[ $pain6, sham_run1 ] {};
  290.  
  291. void(entity attacker, float damage) sham_pain =
  292. {
  293. sound_pain (self, CHAN_VOICE, "shambler/shurt2.wav", 1, ATTN_NORM);
  294.  
  295. if (self.health <= 0)
  296. return; // allready dying, don't go into pain frame
  297.  
  298. if (random()*400 > damage)
  299. return; // didn't flinch
  300.  
  301. if (self.pain_finished > time)
  302. return;
  303. self.pain_finished = time + 2;
  304.  
  305. if (self.trigger_field != world && self.trigger_field.owner == self)
  306. self.trigger_field.frame = 2;
  307. self.trigger_field = world;
  308.  
  309. sham_pain1 ();
  310. };
  311.  
  312.  
  313. //============================================================================
  314.  
  315. void() sham_death1 =[ $death1, sham_death2 ] {};
  316. void() sham_death2 =[ $death2, sham_death3 ] {};
  317. void() sham_death3 =[ $death3, sham_death4 ] {self.solid = SOLID_NOT;};
  318. void() sham_death4 =[ $death4, sham_death5 ] {};
  319. void() sham_death5 =[ $death5, sham_death6 ] {};
  320. void() sham_death6 =[ $death6, sham_death7 ] {};
  321. void() sham_death7 =[ $death7, sham_death8 ] {};
  322. void() sham_death8 =[ $death8, sham_death9 ] {};
  323. void() sham_death9 =[ $death9, sham_death10 ] {};
  324. void() sham_death10 =[ $death10, sham_death11 ] {};
  325. void() sham_death11 =[ $death11, sham_death11 ] {};
  326.  
  327. void() sham_die =
  328. {
  329. // check for gib
  330. if (self.health < -60)
  331. {
  332. sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
  333. if (self.mdl_head != "") //dumptruck_ds custom_mdls
  334. {
  335. ThrowHead (self.mdl_head, self.health);
  336. }
  337. else
  338. {
  339. ThrowHead ("progs/h_shams.mdl", self.health);
  340. }
  341. // ThrowGib ("progs/gib1.mdl", self.health);
  342. // ThrowGib ("progs/gib2.mdl", self.health);
  343. // ThrowGib ("progs/gib3.mdl", self.health);
  344. if (self.mdl_gib1 != "") // custom models -- dumptruck_ds
  345. {
  346. ThrowGib (self.mdl_gib1, self.health);
  347. }
  348. else
  349. {
  350. ThrowGib ("progs/gib1.mdl", self.health);
  351. }
  352. if (self.mdl_gib2 != "")
  353. {
  354. ThrowGib (self.mdl_gib2, self.health);
  355. }
  356. else
  357. {
  358. ThrowGib ("progs/gib2.mdl", self.health);
  359. }
  360. if (self.mdl_gib3 != "")
  361. {
  362. ThrowGib (self.mdl_gib3, self.health);
  363. }
  364. else
  365. {
  366. ThrowGib ("progs/gib3.mdl", self.health);
  367. }
  368. DropStuff();
  369. return;
  370. }
  371.  
  372. // regular death
  373. sound_death (self, CHAN_VOICE, "shambler/sdeath.wav", 1, ATTN_NORM);
  374. DropStuff();
  375. sham_death1 ();
  376. };
  377.  
  378. //============================================================================
  379.  
  380.  
  381. /*QUAKED monster_shambler (1 0 0) (-32 -32 -24) (32 32 64) AMBUSH X X TRIGGER_SPAWNED X X X X NOT_ON_EASY NOT_ON_NORMAL NOT_ON_HARD_OR_NIGHTMARE NOT_IN_DEATHMATCH NOT_IN_COOP NOT_IN_SINGLEPLAYER X NOT_ON_HARD_ONLY NOT_ON_NIGHTMARE_ONLY
  382. {
  383. model ("progs/shambler.mdl");
  384. }
  385. Shambler.
  386.  
  387. Default health = 600
  388.  
  389. snd_death(string) : "Path to custom death sound"
  390. snd_pain(string) : "Path to custom pain sound"
  391. snd_sight(string) : "Path to custom sight sound"
  392. snd_attack(string) : "Path to custom attack sound (GRUNT)"
  393. snd_hit(string) : "Path to custom hit sound (FLESH TEARING)"
  394. snd_idle(string) : "Path to custom idle sound"
  395. snd_misc(string) : "Path to custom sound (GRUNT 2)"
  396. snd_misc1(string) : "Path to custom sound (LIGHTNING ZAP)"
  397. snd_misc2(string) : "Path to custom sound (LIGHTNING BOOM)"
  398.  
  399. mdl_head(string) : "Path to custom head model"
  400. mdl_body(string) : "Path to custom body model"
  401. skin_head(float) : "Skin index of custom head model"
  402. mdl_gib1(string) : "Path to custom 1st gib model"
  403. mdl_gib2(string) : "Path to custom 2nd gib model"
  404. mdl_gib3(string) : "Path to custom 3rd gib model"
  405.  
  406. effects(choices) : "Add a visual effect to an entity"
  407. 0 : "None (Default)"
  408. 1 : "Brightfield (yellow particles)"
  409. 4 : "Bright light"
  410. 8 : "Dim light"
  411.  
  412. berserk(choices) "Skips certain pain animations similar to skill 3 (Makes a semi-nightmare monster!)"
  413. 0 : "Off (Default)"
  414. 1 : "Berserk (skip pain animations)"
  415.  
  416. delay(float) : "Delay spawn in for this amount of time"
  417.  
  418. wait(choices) : "Play an effect when trigger spawned?"
  419. 0 : "Teleport Effects (Default)"
  420. 1 : "Spawn Silently"
  421.  
  422. spawn_angry(Choices)
  423. 0 : "Only when trigger spawned, default behavior - not angry"
  424. 1 : "Only when trigger spawned, set to 1 to spawn angry at player"
  425.  
  426. health(integer) : "Set this to a custom health amount"
  427. pain_target(string) : "Fire this target when pain_threshold is reached"
  428. pain_threshold(integer) : "Fire pain_target when health drops below this amount"
  429. sight_trigger(integer) : "1 = Fire target upon seeing the player instead of death"
  430. skin(integer) : "Skin index (default 0) Use this when your custom model has more than one skin to select"
  431. obit_name(string) : "When used with obit_method, this will set part of the text for a custom obituary. e.g. a Super Soldier! Using the examples here, the obituary would read: Player was eviscerated by a Super Solider!"
  432. obit_method(string) : "When used with obit_name, will set part of the text for a custom obituary. e.g. eviscerated - If empty, defaults to killed."
  433. damage_mod(float) : "USE WITH CAUTION! Multiply all damage from this monster by this number (e.g. 4 = Quad damage)"
  434.  
  435. */
  436. void() monster_shambler =
  437. {
  438. if (SUB_Inhibit ()) // new spawnflags for all entities -- iw
  439. return;
  440.  
  441. if (deathmatch)
  442. {
  443. remove(self);
  444. return;
  445. }
  446. precache_body_model ("progs/shambler.mdl"); // custom_mdls dumptruck_ds
  447. precache_head_model ("progs/h_shams.mdl"); // custom_mdls dumptruck_ds
  448. // precache_model ("progs/shambler.mdl");
  449. precache_model ("progs/s_light.mdl");
  450. // precache_model ("progs/h_shams.mdl");
  451. precache_model ("progs/bolt.mdl");
  452.  
  453. precache_sound_misc1 ("shambler/sattck1.wav");
  454. precache_sound_misc2 ("shambler/sboom.wav");
  455. precache_sound_death ("shambler/sdeath.wav");
  456. precache_sound_pain ("shambler/shurt2.wav");
  457. precache_sound_idle ("shambler/sidle.wav");
  458. precache_sound_sight ("shambler/ssight.wav");
  459. precache_sound_attack ("shambler/melee1.wav");
  460. precache_sound_misc ("shambler/melee2.wav");
  461. precache_sound_hit ("shambler/smack.wav");
  462.  
  463. precache_gib1 ("progs/gib1.mdl");
  464. precache_gib2 ("progs/gib2.mdl");
  465. precache_gib3 ("progs/gib3.mdl");
  466.  
  467. self.solid = SOLID_SLIDEBOX;
  468. self.movetype = MOVETYPE_STEP;
  469. body_model ("progs/shambler.mdl");
  470. // setmodel (self, "progs/shambler.mdl");
  471.  
  472. setsize (self, VEC_HULL2_MIN, VEC_HULL2_MAX);
  473.  
  474. if (!self.health) //thanks RennyC -- dumptruck_ds
  475. self.health = 600;
  476.  
  477. self.attack_offset = '0 0 40'; //lightning offset
  478.  
  479. self.th_stand = sham_stand1;
  480. self.th_walk = sham_walk1;
  481. self.th_run = sham_run1;
  482. self.th_die = sham_die;
  483. self.th_melee = sham_melee;
  484. self.th_missile = sham_magic1;
  485. if !(self.berserk) //Berserk test from http://celephais.net/board/view_thread.php?id=4&start=3465 -- dumptruck_ds
  486. self.th_pain = sham_pain;
  487. else
  488. self.th_pain = SUB_NullPain;
  489.  
  490. walkmonster_start();
  491. };
  492. /* Scenic Dead Monster Patch stuff here from DeadStuff mod -- dumptruck_ds */
  493.  
  494. /*QUAKED monster_dead_shambler (0 0.5 0.8) (-32 -32 -24) (32 32 64) SOLID X X X X X X X NOT_ON_EASY NOT_ON_NORMAL NOT_ON_HARD_OR_NIGHTMARE NOT_IN_DEATHMATCH NOT_IN_COOP NOT_IN_SINGLEPLAYER X NOT_ON_HARD_ONLY NOT_ON_NIGHTMARE_ONLY
  495. {
  496. model ({"path":"progs/shambler.mdl","frame":93});
  497. }
  498. */
  499. void() monster_dead_shambler =
  500. {
  501. if (SUB_Inhibit ()) // new spawnflags for all entities -- iw
  502. return;
  503.  
  504. precache_model("progs/shambler.mdl");
  505. setmodel(self, "progs/shambler.mdl");
  506. self.frame = $death11;
  507. if (self.spawnflags & 1)
  508. {
  509. self.solid = SOLID_BBOX;
  510. setsize(self,'-77.09 -72.17 -51.52','47.44 98.15 30');
  511. }
  512. else
  513. {
  514. self.solid = SOLID_NOT;
  515. }
  516. };
  517.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement