SHARE
TWEET

Untitled

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