Advertisement
Guest User

Untitled

a guest
Dec 20th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.23 KB | None | 0 0
  1. /*
  2. ==============================================================================
  3.  
  4. butch
  5.  
  6. ==============================================================================
  7. */
  8.  
  9. $cd id1/models/butch_c
  10. $origin 0 0 24
  11. $base base
  12. $skin base
  13.  
  14. $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8 stand9
  15.  
  16. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7
  17. $frame walk8 walk9 walk10 walk11 walk12 walk13 walk14 walk15 walk16
  18.  
  19. $frame run1 run2 run3 run4 run5 run6 run7 run8
  20.  
  21. $frame swing1 swing2 swing3 swing4 swing5 swing6 swing7
  22. $frame swing8 swing9 swing10 swing11 swing12 swing13 swing14
  23.  
  24. $frame smash1 smash2 smash3 smash4 smash5 smash6 smash7
  25. $frame smash8 smash9 smash10 smash11 smash12 smash13 smash14
  26.  
  27. $frame shoot1 shoot2 shoot3 shoot4 shoot5 shoot6
  28.  
  29. $frame pain1 pain2 pain3 pain4 pain5
  30.  
  31. $frame painb1 painb2 painb3
  32.  
  33. $frame painc1 painc2 painc3 painc4 painc5 painc6
  34.  
  35. $frame paind1 paind2 paind3 paind4 paind5 paind6 paind7 paind8 paind9 paind10
  36. $frame paind11 paind12 paind13 paind14 paind15 paind16
  37.  
  38. $frame paine1 paine2 paine3 paine4 paine5 paine6 paine7 paine8 paine9 paine10
  39. $frame paine11 paine12 paine13 paine14 paine15
  40.  
  41. $frame death1 death2 death3 death4 death5 death6
  42. $frame death7 death8 death9 death10 death11 death12
  43. $frame death13 death14
  44.  
  45. $frame bdeath1 bdeath2 bdeath3 bdeath4 bdeath5 bdeath6
  46. $frame bdeath7 bdeath8 bdeath9 bdeath10
  47.  
  48. $frame pull1 pull2 pull3 pull4 pull5 pull6 pull7 pull8 pull9 pull10 pull11
  49.  
  50. //=============================================================================
  51.  
  52.  
  53. void() FlakFire =
  54. {
  55. local vector dir;
  56. local entity en;
  57.  
  58. ai_face();
  59.  
  60. sound (self, CHAN_WEAPON, "butch/flak.wav", 1, ATTN_NORM);
  61.  
  62. // fire somewhat behind the player, so a dodging player is harder to hit
  63. en = self.enemy;
  64.  
  65. dir = en.origin - en.velocity*0.2;
  66. dir = normalize (dir - self.origin);
  67.  
  68. launch_spike_butcher (self.origin + '0 0 16', dir + v_right* 0.1 * (random() - 0.5) + v_up* 0.1 * (random() - 0.5)); //0.08
  69. launch_spike_butcher (self.origin + '0 0 16', dir + v_right* 0.1 * (random() - 0.5) + v_up* 0.1 * (random() - 0.5)); //0.08
  70. launch_spike_butcher (self.origin + '0 0 16', dir + v_right* 0.1 * (random() - 0.5) + v_up* 0.1 * (random() - 0.5)); //0.08
  71. launch_spike_butcher (self.origin + '0 0 16', dir + v_right* 0.1 * (random() - 0.5) + v_up* 0.1 * (random() - 0.5)); //0.08
  72. launch_spike_butcher (self.origin + '0 0 16', dir + v_right* 0.1 * (random() - 0.5) + v_up* 0.1 * (random() - 0.5)); //0.08
  73. };
  74.  
  75.  
  76. //=============================================================================
  77.  
  78. /*
  79. ================
  80. chainsaw
  81.  
  82. FIXME
  83. ================
  84. */
  85. void(float side) chainsaw =
  86. {
  87. local vector delta;
  88. local float ldmg;
  89.  
  90. if (!self.enemy)
  91. return;
  92. if (!CanDamage (self.enemy, self))
  93. return;
  94.  
  95. ai_charge(10);
  96.  
  97. delta = self.enemy.origin - self.origin;
  98.  
  99. if (vlen(delta) > 100)
  100. return;
  101.  
  102. ldmg = (random() + random() + random()) * 4;
  103. T_Damage (self.enemy, self, self, ldmg);
  104.  
  105. if (side)
  106. {
  107. makevectors (self.angles);
  108. if (side == 1)
  109. SpawnMeatSpray (self.origin + v_forward*16, crandom() * 100 * v_right);
  110. else
  111. SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
  112. }
  113. };
  114.  
  115.  
  116. void() butch_stand1 =[ $stand1, butch_stand2 ] {ai_stand();};
  117. void() butch_stand2 =[ $stand2, butch_stand3 ] {ai_stand();};
  118. void() butch_stand3 =[ $stand3, butch_stand4 ] {ai_stand();};
  119. void() butch_stand4 =[ $stand4, butch_stand5 ] {ai_stand();};
  120. void() butch_stand5 =[ $stand5, butch_stand6 ] {
  121. if (random() < 0.2)
  122. sound (self, CHAN_VOICE, "butch/ogidle.wav", 1, ATTN_IDLE);
  123. ai_stand();
  124. };
  125. void() butch_stand6 =[ $stand6, butch_stand7 ] {ai_stand();};
  126. void() butch_stand7 =[ $stand7, butch_stand8 ] {ai_stand();};
  127. void() butch_stand8 =[ $stand8, butch_stand9 ] {ai_stand();};
  128. void() butch_stand9 =[ $stand9, butch_stand1 ] {ai_stand();};
  129.  
  130. void() butch_walk1 =[ $walk1, butch_walk2 ] {ai_walk(3);};
  131. void() butch_walk2 =[ $walk2, butch_walk3 ] {ai_walk(2);};
  132. void() butch_walk3 =[ $walk3, butch_walk4 ] {
  133. ai_walk(2);
  134. if (random() < 0.2)
  135. sound (self, CHAN_VOICE, "butch/ogidle.wav", 1, ATTN_IDLE);
  136. };
  137. void() butch_walk4 =[ $walk4, butch_walk5 ] {ai_walk(2);};
  138. void() butch_walk5 =[ $walk5, butch_walk6 ] {ai_walk(2);};
  139. void() butch_walk6 =[ $walk6, butch_walk7 ] {
  140. ai_walk(5);
  141. if (random() < 0.1)
  142. sound (self, CHAN_VOICE, "butch/ogdrag.wav", 1, ATTN_IDLE);
  143. };
  144. void() butch_walk7 =[ $walk7, butch_walk8 ] {ai_walk(3);};
  145. void() butch_walk8 =[ $walk8, butch_walk9 ] {ai_walk(2);};
  146. void() butch_walk9 =[ $walk9, butch_walk10 ] {ai_walk(3);};
  147. void() butch_walk10 =[ $walk10, butch_walk11 ] {ai_walk(1);};
  148. void() butch_walk11 =[ $walk11, butch_walk12 ] {ai_walk(2);};
  149. void() butch_walk12 =[ $walk12, butch_walk13 ] {ai_walk(3);};
  150. void() butch_walk13 =[ $walk13, butch_walk14 ] {ai_walk(3);};
  151. void() butch_walk14 =[ $walk14, butch_walk15 ] {ai_walk(3);};
  152. void() butch_walk15 =[ $walk15, butch_walk16 ] {ai_walk(3);};
  153. void() butch_walk16 =[ $walk16, butch_walk1 ] {ai_walk(4);};
  154.  
  155. void() butch_run1 =[ $run1, butch_run2 ] {ai_run(9);
  156. if (random() < 0.2)
  157. sound (self, CHAN_VOICE, "butch/ogidle2.wav", 1, ATTN_IDLE);
  158. };
  159. void() butch_run2 =[ $run2, butch_run3 ] {ai_run(12);};
  160. void() butch_run3 =[ $run3, butch_run4 ] {ai_run(8);};
  161. void() butch_run4 =[ $run4, butch_run5 ] {ai_run(22);};
  162. void() butch_run5 =[ $run5, butch_run6 ] {ai_run(16);};
  163. void() butch_run6 =[ $run6, butch_run7 ] {ai_run(4);};
  164. void() butch_run7 =[ $run7, butch_run8 ] {ai_run(13);};
  165. void() butch_run8 =[ $run8, butch_run1 ] {ai_run(24);};
  166.  
  167. void() butch_swing1 =[ $swing1, butch_swing2 ] {ai_charge(11);
  168. sound (self, CHAN_WEAPON, "butch/ogsawatk.wav", 1, ATTN_NORM);
  169. };
  170. void() butch_swing2 =[ $swing2, butch_swing3 ] {ai_charge(1);};
  171. void() butch_swing3 =[ $swing3, butch_swing4 ] {ai_charge(4);};
  172. void() butch_swing4 =[ $swing4, butch_swing5 ] {ai_charge(13);};
  173. void() butch_swing5 =[ $swing5, butch_swing6 ] {ai_charge(9); chainsaw(0);self.angles_y = self.angles_y + random()*25;};
  174. void() butch_swing6 =[ $swing6, butch_swing7 ] {chainsaw(200);self.angles_y = self.angles_y + random()* 25;};
  175. void() butch_swing7 =[ $swing7, butch_swing8 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  176. void() butch_swing8 =[ $swing8, butch_swing9 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  177. void() butch_swing9 =[ $swing9, butch_swing10 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  178. void() butch_swing10 =[ $swing10, butch_swing11 ] {chainsaw(-200);self.angles_y = self.angles_y + random()* 25;};
  179. void() butch_swing11 =[ $swing11, butch_swing12 ] {chainsaw(0);self.angles_y = self.angles_y + random()* 25;};
  180. void() butch_swing12 =[ $swing12, butch_swing13 ] {ai_charge(3);};
  181. void() butch_swing13 =[ $swing13, butch_swing14 ] {ai_charge(8);};
  182. void() butch_swing14 =[ $swing14, butch_run1 ] {ai_charge(9);};
  183.  
  184. void() butch_smash1 =[ $smash1, butch_smash2 ] {ai_charge(6);
  185. sound (self, CHAN_WEAPON, "butch/ogsawatk.wav", 1, ATTN_NORM);
  186. };
  187. void() butch_smash2 =[ $smash2, butch_smash3 ] {ai_charge(0);};
  188. void() butch_smash3 =[ $smash3, butch_smash4 ] {ai_charge(0);};
  189. void() butch_smash4 =[ $smash4, butch_smash5 ] {ai_charge(1);};
  190. void() butch_smash5 =[ $smash5, butch_smash6 ] {ai_charge(4);};
  191. void() butch_smash6 =[ $smash6, butch_smash7 ] {ai_charge(4); chainsaw(0);};
  192. void() butch_smash7 =[ $smash7, butch_smash8 ] {ai_charge(4); chainsaw(0);};
  193. void() butch_smash8 =[ $smash8, butch_smash9 ] {ai_charge(10); chainsaw(0);};
  194. void() butch_smash9 =[ $smash9, butch_smash10 ] {ai_charge(13); chainsaw(0);};
  195. void() butch_smash10 =[ $smash10, butch_smash11 ] {chainsaw(1);};
  196. void() butch_smash11 =[ $smash11, butch_smash12 ] {ai_charge(2); chainsaw(0);
  197. self.nextthink = self.nextthink + random()*0.2;}; // slight variation
  198. void() butch_smash12 =[ $smash12, butch_smash13 ] {ai_charge();};
  199. void() butch_smash13 =[ $smash13, butch_smash14 ] {ai_charge(4);};
  200. void() butch_smash14 =[ $smash14, butch_run1 ] {ai_charge(12);};
  201.  
  202. void() butch_nail1 =[ $shoot1, butch_nail2 ] {ai_face();};
  203. void() butch_nail2 =[ $shoot2, butch_nail3 ] {ai_face();};
  204. void() butch_nail3 =[ $shoot2, butch_nail4 ] {ai_face();};
  205. void() butch_nail4 =[ $shoot3, butch_nail5 ] {ai_face();FlakFire();};
  206. void() butch_nail5 =[ $shoot4, butch_nail6 ] {ai_face();};
  207. void() butch_nail6 =[ $shoot5, butch_nail7 ] {ai_face();};
  208. void() butch_nail7 =[ $shoot6, butch_run1 ] {ai_face();};
  209.  
  210. void() butch_pain1 =[ $pain1, butch_pain2 ] {};
  211. void() butch_pain2 =[ $pain2, butch_pain3 ] {};
  212. void() butch_pain3 =[ $pain3, butch_pain4 ] {};
  213. void() butch_pain4 =[ $pain4, butch_pain5 ] {};
  214. void() butch_pain5 =[ $pain5, butch_run1 ] {};
  215.  
  216.  
  217. void() butch_painb1 =[ $painb1, butch_painb2 ] {};
  218. void() butch_painb2 =[ $painb2, butch_painb3 ] {};
  219. void() butch_painb3 =[ $painb3, butch_run1 ] {};
  220.  
  221.  
  222. void() butch_painc1 =[ $painc1, butch_painc2 ] {};
  223. void() butch_painc2 =[ $painc2, butch_painc3 ] {};
  224. void() butch_painc3 =[ $painc3, butch_painc4 ] {};
  225. void() butch_painc4 =[ $painc4, butch_painc5 ] {};
  226. void() butch_painc5 =[ $painc5, butch_painc6 ] {};
  227. void() butch_painc6 =[ $painc6, butch_run1 ] {};
  228.  
  229.  
  230. void() butch_paind1 =[ $paind1, butch_paind2 ] {};
  231. void() butch_paind2 =[ $paind2, butch_paind3 ] {ai_pain(10);};
  232. void() butch_paind3 =[ $paind3, butch_paind4 ] {ai_pain(9);};
  233. void() butch_paind4 =[ $paind4, butch_paind5 ] {ai_pain(4);};
  234. void() butch_paind5 =[ $paind5, butch_paind6 ] {};
  235. void() butch_paind6 =[ $paind6, butch_paind7 ] {};
  236. void() butch_paind7 =[ $paind7, butch_paind8 ] {};
  237. void() butch_paind8 =[ $paind8, butch_paind9 ] {};
  238. void() butch_paind9 =[ $paind9, butch_paind10 ] {};
  239. void() butch_paind10=[ $paind10, butch_paind11 ] {};
  240. void() butch_paind11=[ $paind11, butch_paind12 ] {};
  241. void() butch_paind12=[ $paind12, butch_paind13 ] {};
  242. void() butch_paind13=[ $paind13, butch_paind14 ] {};
  243. void() butch_paind14=[ $paind14, butch_paind15 ] {};
  244. void() butch_paind15=[ $paind15, butch_paind16 ] {};
  245. void() butch_paind16=[ $paind16, butch_run1 ] {};
  246.  
  247. void() butch_paine1 =[ $paine1, butch_paine2 ] {};
  248. void() butch_paine2 =[ $paine2, butch_paine3 ] {ai_pain(10);};
  249. void() butch_paine3 =[ $paine3, butch_paine4 ] {ai_pain(9);};
  250. void() butch_paine4 =[ $paine4, butch_paine5 ] {ai_pain(4);};
  251. void() butch_paine5 =[ $paine5, butch_paine6 ] {};
  252. void() butch_paine6 =[ $paine6, butch_paine7 ] {};
  253. void() butch_paine7 =[ $paine7, butch_paine8 ] {};
  254. void() butch_paine8 =[ $paine8, butch_paine9 ] {};
  255. void() butch_paine9 =[ $paine9, butch_paine10 ] {};
  256. void() butch_paine10=[ $paine10, butch_paine11 ] {};
  257. void() butch_paine11=[ $paine11, butch_paine12 ] {};
  258. void() butch_paine12=[ $paine12, butch_paine13 ] {};
  259. void() butch_paine13=[ $paine13, butch_paine14 ] {};
  260. void() butch_paine14=[ $paine14, butch_paine15 ] {};
  261. void() butch_paine15=[ $paine15, butch_run1 ] {};
  262.  
  263.  
  264. void(entity attacker, float damage) butch_pain =
  265. {
  266. local float r;
  267.  
  268. // don't make multiple pain sounds right after each other
  269. if (self.pain_finished > time)
  270. return;
  271.  
  272. sound (self, CHAN_VOICE, "butch/ogpain1.wav", 1, ATTN_NORM);
  273.  
  274. r = random();
  275.  
  276. if (r < 0.25)
  277. {
  278. butch_pain1 ();
  279. self.pain_finished = time + 1;
  280. }
  281. else if (r < 0.5)
  282. {
  283. butch_painb1 ();
  284. self.pain_finished = time + 1;
  285. }
  286. else if (r < 0.75)
  287. {
  288. butch_painc1 ();
  289. self.pain_finished = time + 1;
  290. }
  291. else if (r < 0.88)
  292. {
  293. butch_paind1 ();
  294. self.pain_finished = time + 2;
  295. }
  296. else
  297. {
  298. butch_paine1 ();
  299. self.pain_finished = time + 2;
  300. }
  301. };
  302.  
  303. void() butch_die1 =[ $death1, butch_die2 ] {};
  304. void() butch_die2 =[ $death2, butch_die3 ] {};
  305. void() butch_die3 =[ $death3, butch_die4 ]
  306. {self.solid = SOLID_NOT;
  307. self.ammo_rockets = 2;DropBackpack();};
  308. void() butch_die4 =[ $death4, butch_die5 ] {};
  309. void() butch_die5 =[ $death5, butch_die6 ] {};
  310. void() butch_die6 =[ $death6, butch_die7 ] {};
  311. void() butch_die7 =[ $death7, butch_die8 ] {};
  312. void() butch_die8 =[ $death8, butch_die9 ] {};
  313. void() butch_die9 =[ $death9, butch_die10 ] {};
  314. void() butch_die10 =[ $death10, butch_die11 ] {};
  315. void() butch_die11 =[ $death11, butch_die12 ] {};
  316. void() butch_die12 =[ $death12, butch_die13 ] {};
  317. void() butch_die13 =[ $death13, butch_die14 ] {};
  318. void() butch_die14 =[ $death14, butch_die14 ] {};
  319.  
  320. void() butch_bdie1 =[ $bdeath1, butch_bdie2 ] {};
  321. void() butch_bdie2 =[ $bdeath2, butch_bdie3 ] {ai_forward(5);};
  322. void() butch_bdie3 =[ $bdeath3, butch_bdie4 ]
  323. {self.solid = SOLID_NOT;
  324. self.ammo_rockets = 2;DropBackpack();};
  325. void() butch_bdie4 =[ $bdeath4, butch_bdie5 ] {ai_forward(1);};
  326. void() butch_bdie5 =[ $bdeath5, butch_bdie6 ] {ai_forward(3);};
  327. void() butch_bdie6 =[ $bdeath6, butch_bdie7 ] {ai_forward(7);};
  328. void() butch_bdie7 =[ $bdeath7, butch_bdie8 ] {ai_forward(25);};
  329. void() butch_bdie8 =[ $bdeath8, butch_bdie9 ] {};
  330. void() butch_bdie9 =[ $bdeath9, butch_bdie10 ] {};
  331. void() butch_bdie10 =[ $bdeath10, butch_bdie10 ] {};
  332.  
  333. void() butch_die =
  334. {
  335. // check for gib
  336. if (self.health < -80)
  337. {
  338. sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
  339. ThrowHead ("progs/h_butch.mdl", self.health);
  340. ThrowGib ("progs/gib3.mdl", self.health);
  341. ThrowGib ("progs/gib3.mdl", self.health);
  342. ThrowGib ("progs/gib3.mdl", self.health);
  343. return;
  344. }
  345.  
  346. sound (self, CHAN_VOICE, "butch/ogdth.wav", 1, ATTN_NORM);
  347.  
  348. if (random() < 0.5)
  349. butch_die1 ();
  350. else
  351. butch_bdie1 ();
  352. };
  353.  
  354. void() butch_melee =
  355. {
  356. if (random() > 0.5)
  357. butch_smash1 ();
  358. else
  359. butch_swing1 ();
  360. };
  361.  
  362.  
  363. /*QUAKED monster_butch (1 0 0) (-32 -32 -24) (32 32 64) Ambush
  364.  
  365. */
  366. void() monster_butcher =
  367. {
  368. if (deathmatch)
  369. {
  370. remove(self);
  371. return;
  372. }
  373. precache_model ("progs/butch.mdl");
  374. precache_model ("progs/h_butch.mdl");
  375. precache_model ("progs/spike.mdl");
  376.  
  377. precache_sound ("butch/ogdrag.wav");
  378. precache_sound ("butch/ogdth.wav");
  379. precache_sound ("butch/ogidle.wav");
  380. precache_sound ("butch/ogidle2.wav");
  381. precache_sound ("butch/ogpain1.wav");
  382. precache_sound ("butch/ogsawatk.wav");
  383. precache_sound ("butch/ogwake.wav");
  384.  
  385. self.solid = SOLID_SLIDEBOX;
  386. self.movetype = MOVETYPE_STEP;
  387.  
  388. setmodel (self, "progs/butch.mdl");
  389.  
  390. setsize (self, VEC_HULL2_MIN, VEC_HULL2_MAX);
  391. self.health = 200;
  392.  
  393. self.th_stand = butch_stand1;
  394. self.th_walk = butch_walk1;
  395. self.th_run = butch_run1;
  396. self.th_die = butch_die;
  397. self.th_melee = butch_melee;
  398. self.th_missile = butch_nail1;
  399. self.th_pain = butch_pain;
  400.  
  401. walkmonster_start();
  402. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement