SHARE
TWEET

Untitled

a guest Dec 20th, 2015 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. };
RAW Paste Data
Challenge yourself this year...
Learn something new in 2017
Top