Advertisement
Guest User

Untitled

a guest
Nov 15th, 2015
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.53 KB | None | 0 0
  1. /*
  2. ==============================================================================
  3.  
  4. SOLDIER / PLAYER
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. $cd infantry/models/nailinf
  10. $origin 0 -6 24
  11. $base base
  12. $skin skin
  13.  
  14. $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7
  15.  
  16. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9 walk10
  17. $frame walk11 walk12 walk13 walk14 walk15 walk16
  18.  
  19. $frame run1 run2 run3 run4 run5 run6 run7 run8
  20.  
  21. $frame attack1 attack2 attack3 attack4 attack5 attack6
  22. $frame attack7 attack8 attack9 attack10
  23.  
  24. $frame death1 death2 death3 death4 death5 death6 death7 death8
  25. $frame death9 death10 death11 death12 death13 death14
  26.  
  27. $frame fdeath1 fdeath2 fdeath3 fdeath4 fdeath5 fdeath6 fdeath7 fdeath8
  28. $frame fdeath9 fdeath10 fdeath11
  29.  
  30. $frame paina1 paina2 paina3 paina4
  31.  
  32. $frame painb1 painb2 painb3 painb4 painb5
  33.  
  34. $frame painc1 painc2 painc3 painc4 painc5 painc6 painc7 painc8
  35.  
  36. $frame paind1 paind2 paind3 paind4 paind5 paind6 paind7 paind8
  37. $frame paind9 paind10 paind11 paind12 paind13 paind14 paind15 paind16
  38. $frame paind17 paind18 paind19
  39.  
  40.  
  41. void() nailinfantry_fire =
  42. {
  43. local vector dir;
  44. local entity en;
  45.  
  46. ai_face();
  47.  
  48. sound (self, CHAN_WEAPON, "nailinf/nailshrd.wav", 1, ATTN_NORM);
  49.  
  50. // fire somewhat behind the player, so a dodging player is harder to hit
  51. en = self.enemy;
  52.  
  53. dir = en.origin - en.velocity*0.2;
  54. dir = normalize (dir - self.origin);
  55.  
  56. FireNailShards (1, dir, '0.02 0.02 0');
  57. };
  58.  
  59. //============================================================================
  60.  
  61. void() inf_stand1 =[ $stand1, inf_stand2 ] {ai_stand();};
  62. void() inf_stand2 =[ $stand2, inf_stand3 ] {ai_stand();};
  63. void() inf_stand3 =[ $stand3, inf_stand4 ] {ai_stand();};
  64. void() inf_stand4 =[ $stand4, inf_stand5 ] {ai_stand();};
  65. void() inf_stand5 =[ $stand5, inf_stand6 ] {ai_stand();};
  66. void() inf_stand6 =[ $stand6, inf_stand7 ] {ai_stand();};
  67. void() inf_stand7 =[ $stand7, inf_stand1 ] {ai_stand();};
  68.  
  69. void() inf_walk1 =[ $walk1 , inf_walk2 ] {
  70. if (random() < 0.2)
  71. sound (self, CHAN_VOICE, "nailinf/idle1.wav", 1, ATTN_IDLE);
  72. ai_walk(2);};
  73. void() inf_walk2 =[ $walk2 , inf_walk3 ] {ai_walk(4);};
  74. void() inf_walk3 =[ $walk3 , inf_walk4 ] {ai_walk(4);};
  75. void() inf_walk4 =[ $walk4 , inf_walk5 ] {ai_walk(3);};
  76. void() inf_walk5 =[ $walk5 , inf_walk6 ] {ai_walk(1);};
  77. void() inf_walk6 =[ $walk6 , inf_walk7 ] {ai_walk(2);};
  78. void() inf_walk7 =[ $walk7 , inf_walk8 ] {ai_walk(2);};
  79. void() inf_walk8 =[ $walk8 , inf_walk9 ] {ai_walk(1);};
  80. void() inf_walk9 =[ $walk9 , inf_walk10 ] {ai_walk(2);};
  81. void() inf_walk10 =[ $walk10, inf_walk11 ] {ai_walk(4);};
  82. void() inf_walk11 =[ $walk11, inf_walk12 ] {ai_walk(4);};
  83. void() inf_walk12 =[ $walk12, inf_walk13 ] {ai_walk(1);};
  84. void() inf_walk13 =[ $walk13, inf_walk14 ] {ai_walk(2);};
  85. void() inf_walk14 =[ $walk14, inf_walk15 ] {ai_walk(3);};
  86. void() inf_walk15 =[ $walk15, inf_walk16 ] {ai_walk(4);};
  87. void() inf_walk16 =[ $walk16, inf_walk1 ] {ai_walk(2);};
  88.  
  89. void() inf_run1 =[ $run1 , inf_run2 ] {
  90. if (random() < 0.2)
  91. sound (self, CHAN_VOICE, "nailinf/idle1.wav", 1, ATTN_IDLE);
  92. ai_run(18);};
  93. void() inf_run2 =[ $run2 , inf_run3 ] {ai_run(14);};
  94. void() inf_run3 =[ $run3 , inf_run4 ] {ai_run(7);};
  95. void() inf_run4 =[ $run4 , inf_run5 ] {ai_run(12);};
  96. void() inf_run5 =[ $run5 , inf_run6 ] {ai_run(14);};
  97. void() inf_run6 =[ $run6 , inf_run7 ] {ai_run(14);};
  98. void() inf_run7 =[ $run7 , inf_run8 ] {ai_run(7);};
  99. void() inf_run8 =[ $run8 , inf_run1 ] {ai_run(11);};
  100.  
  101. void() inf_atk1 =[ $attack1, inf_atk2 ] {ai_face();sound (self, CHAN_VOICE, "nailinf/prepfire.wav", 1, ATTN_IDLE);};
  102. void() inf_atk2 =[ $attack2, inf_atk3 ] {ai_face();};
  103. void() inf_atk3 =[ $attack3, inf_atk4 ] {ai_face();};
  104. void() inf_atk4 =[ $attack4, inf_atk5 ] {ai_face();};
  105. void() inf_atk5 =[ $attack5, inf_atk6 ] {ai_face();};
  106. void() inf_atk6 =[ $attack6, inf_atk7 ] {nailinfantry_fire();self.nextthink = time + 0.06;};
  107. void() inf_atk7 =[ $attack7, inf_atk8 ] {
  108. ai_face();
  109. self.nextthink = time + 0.06;
  110. if(visible(self.enemy))
  111. inf_atk6();
  112. };
  113. void() inf_atk8 =[ $attack8, inf_atk9 ] {ai_face();};
  114. void() inf_atk9 =[ $attack9, inf_atk10 ] {ai_face();};
  115. void() inf_atk10 =[ $attack10, inf_run1 ] {ai_face();
  116. SUB_CheckRefire (inf_atk1);
  117. };
  118.  
  119. void() inf_paina1 =[ $paina1, inf_paina2 ] {};
  120. void() inf_paina2 =[ $paina2, inf_paina3 ] {};
  121. void() inf_paina3 =[ $paina3, inf_paina4 ] {};
  122. void() inf_paina4 =[ $paina4, inf_run1 ] {};
  123.  
  124. void() inf_painb1 =[ $painb1, inf_painb2 ] {};
  125. void() inf_painb2 =[ $painb2, inf_painb3 ] {};
  126. void() inf_painb3 =[ $painb3, inf_painb4 ] {};
  127. void() inf_painb4 =[ $painb4, inf_painb5 ] {};
  128. void() inf_painb5 =[ $painb5, inf_run1 ] {};
  129.  
  130. void() inf_painc1 =[ $painc1, inf_painc2 ] {};
  131. void() inf_painc2 =[ $painc2, inf_painc3 ] {};
  132. void() inf_painc3 =[ $painc3, inf_painc4 ] {};
  133. void() inf_painc4 =[ $painc4, inf_painc5 ] {};
  134. void() inf_painc5 =[ $painc5, inf_painc6 ] {};
  135. void() inf_painc6 =[ $painc6, inf_painc7 ] {};
  136. void() inf_painc7 =[ $painc7, inf_painc8 ] {};
  137. void() inf_painc8 =[ $painc8, inf_run1 ] {};
  138.  
  139. void() inf_paind1 =[ $paind1, inf_paind2 ] {};
  140. void() inf_paind2 =[ $paind2, inf_paind3 ] {};
  141. void() inf_paind3 =[ $paind3, inf_paind4 ] {};
  142. void() inf_paind4 =[ $paind4, inf_paind5 ] {ai_painforward(2);};
  143. void() inf_paind5 =[ $paind5, inf_paind6 ] {ai_painforward(1);};
  144. void() inf_paind6 =[ $paind6, inf_paind7 ] {};
  145. void() inf_paind7 =[ $paind7, inf_paind8 ] {};
  146. void() inf_paind8 =[ $paind8, inf_paind9 ] {};
  147. void() inf_paind9 =[ $paind9, inf_paind10 ] {};
  148. void() inf_paind10 =[ $paind10, inf_paind11 ] {};
  149. void() inf_paind11 =[ $paind11, inf_paind12 ] {ai_painforward(1);};
  150. void() inf_paind12 =[ $paind12, inf_paind13 ] {ai_painforward(1);};
  151. void() inf_paind13 =[ $paind13, inf_paind14 ] {ai_painforward(1);};
  152. void() inf_paind14 =[ $paind14, inf_paind15 ] {};
  153. void() inf_paind15 =[ $paind15, inf_paind16 ] {};
  154. void() inf_paind16 =[ $paind16, inf_paind17 ] {ai_pain(1);};
  155. void() inf_paind17 =[ $paind17, inf_paind18 ] {ai_pain(1);};
  156. void() inf_paind18 =[ $paind18, inf_paind19 ] {};
  157. void() inf_paind19 =[ $paind19, inf_run1 ] {};
  158.  
  159. void(entity attacker, float damage) inf_pain =
  160. {
  161. local float r;
  162.  
  163. r = random ();
  164. if (self.pain_finished > time)
  165. return;
  166.  
  167.  
  168. if (r < 0.5)
  169. sound (self, CHAN_VOICE, "nailinf/pain1.wav", 1, ATTN_NORM);
  170. else
  171. sound (self, CHAN_VOICE, "nailinf/pain2.wav", 1, ATTN_NORM);
  172.  
  173. if (r < 0.2)
  174. {
  175. self.pain_finished = time + 1;
  176. inf_paina1 ();
  177. }
  178. else if (r < 0.4)
  179. {
  180. self.pain_finished = time + 1;
  181. inf_painb1 ();
  182. }
  183. else if (r < 0.7)
  184. {
  185. self.pain_finished = time + 1;
  186. inf_painc1 ();
  187. }
  188. else
  189. {
  190. self.pain_finished = time + 2;
  191. inf_paind1 ();
  192. }
  193. };
  194.  
  195. //============================================================================
  196.  
  197.  
  198.  
  199.  
  200. void() inf_die1 =[ $death1, inf_die2 ] {};
  201. void() inf_die2 =[ $death2, inf_die3 ] {};
  202. void() inf_die3 =[ $death3, inf_die4 ]
  203. {self.solid = SOLID_NOT;self.ammo_nails = 5;DropBackpack();};
  204. void() inf_die4 =[ $death4, inf_die5 ] {ai_forward(14);};
  205. void() inf_die5 =[ $death5, inf_die6 ] {ai_forward(2);};
  206. void() inf_die6 =[ $death6, inf_die7 ] {};
  207. void() inf_die7 =[ $death7, inf_die8 ] {};
  208. void() inf_die8 =[ $death8, inf_die9 ] {};
  209. void() inf_die9 =[ $death9, inf_die10 ] {ai_forward(3);};
  210. void() inf_die10 =[ $death10, inf_die11 ] {ai_forward(5);};
  211. void() inf_die11 =[ $death11, inf_die12 ] {ai_forward(5);};
  212. void() inf_die12 =[ $death12, inf_die13 ] {ai_forward(5);};
  213. void() inf_die13 =[ $death13, inf_die14 ] {};
  214. void() inf_die14 =[ $death14, inf_die14 ] {};
  215.  
  216. void() inf_fdie1 =[ $fdeath1, inf_fdie2 ] {
  217.  
  218. };
  219. void() inf_fdie2 =[ $fdeath2, inf_fdie3 ] {};
  220. void() inf_fdie3 =[ $fdeath3, inf_fdie4 ]
  221. {self.solid = SOLID_NOT;self.ammo_nails = 5;DropBackpack();};
  222. void() inf_fdie4 =[ $fdeath4, inf_fdie5 ] {};
  223. void() inf_fdie5 =[ $fdeath5, inf_fdie6 ] {};
  224. void() inf_fdie6 =[ $fdeath6, inf_fdie7 ] {};
  225. void() inf_fdie7 =[ $fdeath7, inf_fdie8 ] {};
  226. void() inf_fdie8 =[ $fdeath8, inf_fdie9 ] {};
  227. void() inf_fdie9 =[ $fdeath9, inf_fdie10 ] {};
  228. void() inf_fdie10 =[ $fdeath10, inf_fdie11 ] {};
  229. void() inf_fdie11 =[ $fdeath11, inf_fdie11 ] {};
  230.  
  231.  
  232. void() inf_die =
  233. {
  234. // check for gib
  235. if (self.health < -35)
  236. {
  237. sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
  238. ThrowHead ("progs/h_nail.mdl", self.health);
  239. ThrowGib ("progs/gib1.mdl", self.health);
  240. ThrowGib ("progs/gib2.mdl", self.health);
  241. ThrowGib ("progs/gib3.mdl", self.health);
  242. return;
  243. }
  244.  
  245. // regular death
  246. sound (self, CHAN_VOICE, "nailinf/death1.wav", 1, ATTN_NORM);
  247. if (random() > 0.5)
  248. inf_die1 ();
  249. else
  250. inf_fdie1 ();
  251. };
  252.  
  253.  
  254. /*QUAKED monster_enforcer (1 0 0) (-16 -16 -24) (16 16 40) Ambush
  255.  
  256. */
  257. void() monster_nailinf =
  258. {
  259. if (deathmatch)
  260. {
  261. remove(self);
  262. return;
  263. }
  264. precache_model ("progs/nailinf.mdl");
  265. precache_model ("progs/h_nail.mdl");
  266.  
  267. precache_sound ("nailinf/death.wav");
  268. precache_sound ("nailinf/prepfire.wav");
  269. precache_sound ("nailinf/nailshrd.wav");
  270. precache_sound ("nailinf/idle1.wav");
  271. precache_sound ("nailinf/pain1.wav");
  272. precache_sound ("nailinf/pain2.wav");
  273. precache_sound ("nailinf/sight1.wav");
  274. precache_sound ("nailinf/sight2.wav");
  275. precache_sound ("nailinf/sight3.wav");
  276. precache_sound ("nailinf/sight4.wav");
  277.  
  278. self.solid = SOLID_SLIDEBOX;
  279. self.movetype = MOVETYPE_STEP;
  280.  
  281. setmodel (self, "progs/nailinf.mdl");
  282.  
  283. setsize (self, '-16 -16 -24', '16 16 40');
  284. self.health = 80;
  285.  
  286. self.th_stand = inf_stand1;
  287. self.th_walk = inf_walk1;
  288. self.th_run = inf_run1;
  289. self.th_pain = inf_pain;
  290. self.th_die = inf_die;
  291. self.th_missile = inf_atk1;
  292.  
  293. walkmonster_start();
  294. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement