/* * $Header: /HexenWorld/HCode/skullwiz.hc 1 2/04/98 1:59p Rjohnson $ */ // $frame skdeth1 skdeth2 skdeth3 skdeth4 skdeth5 $frame skdeth6 skdeth7 skdeth8 skdeth9 skdeth10 $frame skdeth11 skdeth12 skdeth13 skdeth14 skdeth15 // $frame skgate1 skgate2 skgate3 skgate4 skgate5 $frame skgate6 skgate7 skgate8 skgate9 skgate10 $frame skgate11 skgate12 skgate13 skgate14 skgate15 $frame skgate16 skgate17 skgate18 skgate19 skgate20 $frame skgate21 skgate22 skgate23 skgate24 skgate25 $frame skgate26 skgate27 skgate28 skgate29 skgate30 // Frame 46 - 57 $frame skpain1 skpain2 skpain3 skpain4 skpain5 $frame skpain6 skpain7 skpain8 skpain9 skpain10 $frame skpain11 skpain12 // Frame 58 - 69 $frame skredi1 skredi2 skredi3 skredi4 skredi5 $frame skredi6 skredi7 skredi8 skredi9 skredi10 $frame skredi11 skredi12 // //$frame skspel1 skspel2 skspel3 skspel4 skspel5 //$frame skspel6 skspel7 skspel8 skspel9 skspel10 //$frame skspel11 skspel12 skspel13 skspel14 skspel15 //$frame skspel16 skspel17 skspel18 skspel19 skspel20 //$frame skspel21 skspel22 skspel23 skspel24 skspel25 //$frame skspel26 skspel27 skspel28 skspel29 skspel30 //$frame skspel31 // Frame 70 - 84 $frame skspel2 skspel4 $frame skspel6 skspel8 skspel10 $frame skspel12 skspel14 $frame skspel16 skspel18 skspel20 $frame skspel22 skspel24 $frame skspel26 skspel28 skspel30 // //$frame sktele1 sktele2 sktele3 sktele4 sktele5 //$frame sktele6 sktele7 sktele8 sktele9 sktele10 //$frame sktele11 sktele12 sktele13 sktele14 sktele15 //$frame sktele16 sktele17 sktele18 sktele19 sktele20 //$frame sktele21 sktele22 sktele23 sktele24 sktele25 //$frame sktele26 sktele27 sktele28 sktele29 sktele30 //$frame sktele31 $frame sktele2 sktele4 $frame sktele6 sktele8 sktele10 $frame sktele12 sktele14 $frame sktele16 sktele18 sktele20 $frame sktele22 sktele24 $frame sktele26 sktele28 sktele30 // $frame sktran1 sktran2 sktran3 sktran4 sktran5 $frame sktran6 sktran7 // $frame skwait1 skwait2 skwait10 skwait11 skwait12 $frame skwait13 skwait14 skwait15 skwait16 skwait17 $frame skwait18 skwait19 skwait20 skwait21 skwait22 $frame skwait23 skwait24 skwait25 skwait26 // $frame skwalk1 skwalk2 skwalk3 skwalk4 skwalk5 $frame skwalk6 skwalk7 skwalk8 skwalk9 skwalk10 $frame skwalk11 skwalk12 skwalk13 skwalk14 skwalk15 $frame skwalk16 skwalk17 skwalk18 skwalk19 skwalk20 $frame skwalk21 skwalk22 skwalk23 skwalk24 void skullwiz_walk(void); void skullwiz_run(void); void skullwiz_melee(void); void skullwiz_blink(void); void skullwiz_push (void); void skullwiz_missile_init (void); float SKULLBOOK =0; float SKULLHEAD =1; float() SkullFacingIdeal = { local float delta; delta = anglemod(self.angles_y - self.ideal_yaw); if (delta > 25 && delta < 335) return FALSE; return TRUE; }; void phase_init (void) { vector spot1,newangle; float loop_cnt,forward; trace_fraction =0; loop_cnt = 0; do { newangle = self.angles; newangle_y = random(0,360); makevectors (newangle); forward = random(40,100); spot1 = self.origin + v_forward * forward; tracearea (spot1,spot1 + v_up * 80,'-32 -32 -10','32 32 46',FALSE,self); if ((trace_fraction == 1.0) && (!trace_allsolid)) // Check there is a floor at the new spot { traceline (spot1, spot1 + (v_up * -4) , FALSE, self); if (trace_fraction ==1) // Didn't hit anything? There was no floor trace_fraction = 0; // So it will loop else trace_fraction = 1; // So it will end loop } else trace_fraction = 0; loop_cnt += 1; if (loop_cnt > 500) // No endless loops { self.nextthink = time + 2; return; } } while (trace_fraction != 1.0); self.origin = spot1; } float check_defense_blink () { vector spot1,spot2,dangerous_dir; float dot; if(!self.enemy) return FALSE; if(!visible(self.enemy)) return FALSE; if(self.enemy.last_attack