/* ============================================================================== Necromancer coded by Michael Rogers a.k.a Xsniper http://xsniper.virtualave.net/ some code done by iD software ============================================================================== */ $cd /models/enemies $origin 0 0 24 $base base $skin base $frame idle001 idle002 idle003 idle004 idle005 idle006 idle007 idle008 idle009 idle010 $frame idle011 idle012 idle013 idle014 idle015 idle016 idle017 idle018 idle019 idle020 $frame idle021 idle022 idle023 idle024 idle025 idle026 idle027 idle028 idle029 idle030 $frame idle031 idle032 idle033 idle034 idle035 idle036 idle037 idle038 idle039 idle040 $frame idle041 idle042 idle043 idle044 idle045 idle046 idle047 idle048 idle049 idle050 $frame idle051 idle052 idle053 idle054 idle055 idle056 idle057 idle058 idle059 idle060 $frame fly001 fly002 fly003 fly004 fly005 fly006 fly007 fly008 fly009 fly010 $frame fly011 fly012 fly013 fly014 fly015 fly016 fly017 fly018 fly019 fly020 $frame summon001 summon002 summon003 summon004 summon005 summon006 summon007 summon008 summon009 summon010 $frame summon011 summon012 summon013 summon014 summon015 summon016 summon017 summon018 summon019 summon020 $frame summon021 summon022 summon023 summon024 summon025 summon026 summon027 summon028 summon029 summon030 $frame summon031 summon032 summon033 summon034 summon035 summon036 summon037 summon038 summon039 summon040 $frame summon041 summon042 summon043 summon044 summon045 summon046 summon047 summon048 summon049 summon050 $frame summon051 summon052 summon053 summon054 summon055 summon056 summon057 summon058 summon059 summon060 $frame summon061 summon062 summon063 summon064 summon065 summon066 summon067 summon068 summon069 summon070 $frame attack001 attack002 attack003 attack004 attack005 attack006 attack007 attack008 attack009 attack010 $frame attack011 attack012 attack013 attack014 attack015 attack016 attack017 attack018 attack019 attack020 $frame pain001 pain002 pain003 pain004 $frame death001 death002 death003 death004 death005 death006 death007 death008 death009 death010 $frame death011 death012 death013 death014 death015 death016 death017 death018 death019 death020 $frame death021 death022 death023 death024 death025 death026 death027 death028 death029 death030 $frame death031 death032 death033 death034 death035 death036 death037 death038 death039 death040 $frame death041 death042 death043 death044 death045 death046 death047 death048 death049 death050 $frame death051 death052 death053 death054 death055 death056 death057 death058 death059 death060 $frame death061 death062 death063 death064 death065 death066 death067 death068 death069 death070 $frame death071 death072 death073 death074 death075 death076 death077 death078 void() necro_run1; void() necro_side1; /* ================= NecromancerCheckAttack ================= */ float() NecromancerCheckAttack = { local vector spot1, spot2; local entity targ; local float chance; if (time < self.attack_finished) return FALSE; if (!enemy_vis) return FALSE; if (enemy_range == RANGE_FAR) { if (self.attack_state != AS_STRAIGHT) { self.attack_state = AS_STRAIGHT; necro_run1 (); } return FALSE; } targ = self.enemy; // see if any entities are in the way of the shot spot1 = self.origin + self.view_ofs; spot2 = targ.origin + targ.view_ofs; traceline (spot1, spot2, FALSE, self); if (trace_ent != targ) { // don't have a clear shot, so move to a side if (self.attack_state != AS_STRAIGHT) { self.attack_state = AS_STRAIGHT; necro_run1 (); } return FALSE; } if (enemy_range == RANGE_MELEE) chance = 0.9; else if (enemy_range == RANGE_NEAR) chance = 0.6; else if (enemy_range == RANGE_MID) chance = 0.2; else chance = 0; if (random () < chance) { self.attack_state = AS_MISSILE; return TRUE; } if (enemy_range == RANGE_MID) { if (self.attack_state != AS_STRAIGHT) { self.attack_state = AS_STRAIGHT; necro_run1 (); } } else { if (self.attack_state != AS_SLIDING) { self.attack_state = AS_SLIDING; necro_side1 (); } } return FALSE; }; /* ================= NecromancerAttackFinished ================= */ float() NecromancerAttackFinished = { if (enemy_range >= RANGE_MID || !enemy_vis) { self.attack_state = AS_STRAIGHT; self.think = necro_run1; } else { self.attack_state = AS_SLIDING; self.think = necro_side1; } }; /* ============================================================================== FAST ATTACKS ============================================================================== */ void() necro_idlesound = { local float r; r = random(); if (self.waitmin < time) { self.waitmin = time + 2; if ( r <= 0.20) sound (self, CHAN_VOICE, "enemy/apprent/idle1.wav", 1, ATTN_IDLE); else if ( r <= 0.40) sound (self, CHAN_VOICE, "enemy/apprent/idle2.wav", 1, ATTN_IDLE); else if ( r <= 0.60) sound (self, CHAN_VOICE, "enemy/apprent/idle3.wav", 1, ATTN_IDLE); else if ( r <= 0.80) sound (self, CHAN_VOICE, "enemy/apprent/idle4.wav", 1, ATTN_IDLE); else sound (self, CHAN_VOICE, "enemy/apprent/idle5.wav", 1, ATTN_IDLE); } return; }; void(vector spot) create_dwellerbot; /* ==================== necro_check_summon Check to see if we can summon a dweller ==================== */ float() necro_check_summon = { local vector start, end; //set up angles stuff self.v_angle = self.angles; makevectors (self.angles); //we need to check for walls so that we don't summon the dweller inside them // Check in front of the necromancer for a wall start = self.origin; end = (start + (v_forward * 80)) - '0 0 20'; // Check 80 Quake units infront and 20 units down traceline (start, end, TRUE, self); // If there is a wall or obstacle then return NOSUMMON if (trace_fraction != 1.0) return (0); //NOSUMMON return (1); //SUMMON }; /* ==================== necro_summon_dweller The necromancer will summon dwellers from beyond the grave ==================== */ void() necro_summon_dweller = { //set up angles stuff self.v_angle = self.angles; makevectors (self.angles); create_dwellerbot((self.origin + (v_forward * 80)) - '0 0 20'); //create dweller infront of him }; //=========================================================================== void() necro_idle001 =[ $idle001, necro_idle002 ] {ai_stand();}; void() necro_idle002 =[ $idle002, necro_idle003 ] {ai_stand();}; void() necro_idle003 =[ $idle003, necro_idle004 ] {ai_stand();}; void() necro_idle004 =[ $idle004, necro_idle005 ] {ai_stand();}; void() necro_idle005 =[ $idle005, necro_idle006 ] {ai_stand();}; void() necro_idle006 =[ $idle006, necro_idle007 ] {ai_stand();}; void() necro_idle007 =[ $idle007, necro_idle008 ] {ai_stand();}; void() necro_idle008 =[ $idle008, necro_idle009 ] {ai_stand();}; void() necro_idle009 =[ $idle009, necro_idle010 ] {ai_stand();}; void() necro_idle010 =[ $idle010, necro_idle011 ] {ai_stand();}; void() necro_idle011 =[ $idle011, necro_idle012 ] {ai_stand();}; void() necro_idle012 =[ $idle012, necro_idle013 ] {ai_stand();}; void() necro_idle013 =[ $idle013, necro_idle014 ] {ai_stand();}; void() necro_idle014 =[ $idle014, necro_idle015 ] {ai_stand();}; void() necro_idle015 =[ $idle015, necro_idle016 ] {ai_stand();}; void() necro_idle016 =[ $idle016, necro_idle017 ] {ai_stand();}; void() necro_idle017 =[ $idle017, necro_idle018 ] {ai_stand();}; void() necro_idle018 =[ $idle018, necro_idle019 ] {ai_stand();}; void() necro_idle019 =[ $idle019, necro_idle020 ] {ai_stand();}; void() necro_idle020 =[ $idle020, necro_idle021 ] {ai_stand();}; void() necro_idle021 =[ $idle021, necro_idle022 ] {ai_stand();}; void() necro_idle022 =[ $idle022, necro_idle023 ] {ai_stand();}; void() necro_idle023 =[ $idle023, necro_idle024 ] {ai_stand();}; void() necro_idle024 =[ $idle024, necro_idle025 ] {ai_stand();}; void() necro_idle025 =[ $idle025, necro_idle026 ] {ai_stand();}; void() necro_idle026 =[ $idle026, necro_idle027 ] {ai_stand();}; void() necro_idle027 =[ $idle027, necro_idle028 ] {ai_stand();}; void() necro_idle028 =[ $idle028, necro_idle029 ] {ai_stand();}; void() necro_idle029 =[ $idle029, necro_idle030 ] {ai_stand();}; void() necro_idle030 =[ $idle030, necro_idle031 ] {ai_stand();}; void() necro_idle031 =[ $idle031, necro_idle032 ] {ai_stand();}; void() necro_idle032 =[ $idle032, necro_idle033 ] {ai_stand();}; void() necro_idle033 =[ $idle033, necro_idle034 ] {ai_stand();}; void() necro_idle034 =[ $idle034, necro_idle035 ] {ai_stand();}; void() necro_idle035 =[ $idle035, necro_idle036 ] {ai_stand();}; void() necro_idle036 =[ $idle036, necro_idle037 ] {ai_stand();}; void() necro_idle037 =[ $idle037, necro_idle038 ] {ai_stand();}; void() necro_idle038 =[ $idle038, necro_idle039 ] {ai_stand();}; void() necro_idle039 =[ $idle039, necro_idle040 ] {ai_stand();}; void() necro_idle040 =[ $idle040, necro_idle041 ] {ai_stand();}; void() necro_idle041 =[ $idle041, necro_idle042 ] {ai_stand();}; void() necro_idle042 =[ $idle042, necro_idle043 ] {ai_stand();}; void() necro_idle043 =[ $idle043, necro_idle044 ] {ai_stand();}; void() necro_idle044 =[ $idle044, necro_idle045 ] {ai_stand();}; void() necro_idle045 =[ $idle045, necro_idle046 ] {ai_stand();}; void() necro_idle046 =[ $idle046, necro_idle047 ] {ai_stand();}; void() necro_idle047 =[ $idle047, necro_idle048 ] {ai_stand();}; void() necro_idle048 =[ $idle048, necro_idle049 ] {ai_stand();}; void() necro_idle049 =[ $idle049, necro_idle050 ] {ai_stand();}; void() necro_idle050 =[ $idle050, necro_idle051 ] {ai_stand();}; void() necro_idle051 =[ $idle051, necro_idle052 ] {ai_stand();}; void() necro_idle052 =[ $idle052, necro_idle053 ] {ai_stand();}; void() necro_idle053 =[ $idle053, necro_idle054 ] {ai_stand();}; void() necro_idle054 =[ $idle054, necro_idle055 ] {ai_stand();}; void() necro_idle055 =[ $idle055, necro_idle056 ] {ai_stand();}; void() necro_idle056 =[ $idle056, necro_idle057 ] {ai_stand();}; void() necro_idle057 =[ $idle057, necro_idle058 ] {ai_stand();}; void() necro_idle058 =[ $idle058, necro_idle059 ] {ai_stand();}; void() necro_idle059 =[ $idle059, necro_idle060 ] {ai_stand();}; void() necro_idle060 =[ $idle060, necro_idle001 ] {ai_stand();}; //=========================================================================== void() necro_fly001 =[ $fly001, necro_fly002 ] { ai_walk(8); necro_idlesound(); }; void() necro_fly002 =[ $fly002, necro_fly003 ] {ai_walk(8);}; void() necro_fly003 =[ $fly003, necro_fly004 ] {ai_walk(8);}; void() necro_fly004 =[ $fly004, necro_fly005 ] {ai_walk(8);}; void() necro_fly005 =[ $fly005, necro_fly006 ] {ai_walk(8);}; void() necro_fly006 =[ $fly006, necro_fly007 ] {ai_walk(8);}; void() necro_fly007 =[ $fly007, necro_fly008 ] {ai_walk(8);}; void() necro_fly008 =[ $fly008, necro_fly009 ] {ai_walk(8);}; void() necro_fly009 =[ $fly009, necro_fly010 ] {ai_walk(8);}; void() necro_fly010 =[ $fly010, necro_fly011 ] {ai_walk(8);}; void() necro_fly011 =[ $fly011, necro_fly012 ] {ai_walk(8);}; void() necro_fly012 =[ $fly012, necro_fly013 ] {ai_walk(8);}; void() necro_fly013 =[ $fly013, necro_fly014 ] {ai_walk(8);}; void() necro_fly014 =[ $fly014, necro_fly015 ] {ai_walk(8);}; void() necro_fly015 =[ $fly015, necro_fly016 ] {ai_walk(8);}; void() necro_fly016 =[ $fly016, necro_fly017 ] {ai_walk(8);}; void() necro_fly017 =[ $fly017, necro_fly018 ] {ai_walk(8);}; void() necro_fly018 =[ $fly018, necro_fly019 ] {ai_walk(8);}; void() necro_fly019 =[ $fly019, necro_fly020 ] {ai_walk(8);}; void() necro_fly020 =[ $fly020, necro_fly001 ] {ai_walk(8);}; //=========================================================================== void() necro_side1 =[ $fly001, necro_side2 ] { ai_run(8); necro_idlesound(); }; void() necro_side2 =[ $fly002, necro_side3 ] {ai_run(8);}; void() necro_side3 =[ $fly003, necro_side4 ] {ai_run(8);}; void() necro_side4 =[ $fly004, necro_side5 ] {ai_run(8);}; void() necro_side5 =[ $fly005, necro_side6 ] {ai_run(8);}; void() necro_side6 =[ $fly006, necro_side7 ] {ai_run(8);}; void() necro_side7 =[ $fly007, necro_side8 ] {ai_run(8);}; void() necro_side8 =[ $fly008, necro_side9 ] {ai_run(8);}; void() necro_side9 =[ $fly009, necro_side10 ] {ai_run(8);}; void() necro_side10 =[ $fly010, necro_side11 ] {ai_run(8);}; void() necro_side11 =[ $fly011, necro_side12 ] {ai_run(8);}; void() necro_side12 =[ $fly012, necro_side13 ] {ai_run(8);}; void() necro_side13 =[ $fly013, necro_side14 ] {ai_run(8);}; void() necro_side14 =[ $fly014, necro_side15 ] {ai_run(8);}; void() necro_side15 =[ $fly015, necro_side16 ] {ai_run(8);}; void() necro_side16 =[ $fly016, necro_side17 ] {ai_run(8);}; void() necro_side17 =[ $fly017, necro_side18 ] {ai_run(8);}; void() necro_side18 =[ $fly018, necro_side19 ] {ai_run(8);}; void() necro_side19 =[ $fly019, necro_side20 ] {ai_run(8);}; void() necro_side20 =[ $fly020, necro_side1 ] {ai_run(8);}; //=========================================================================== void() necro_run1 =[ $fly001, necro_run2 ] { ai_run(16); necro_idlesound(); }; void() necro_run2 =[ $fly002, necro_run3 ] {ai_run(16);}; void() necro_run3 =[ $fly003, necro_run4 ] {ai_run(16);}; void() necro_run4 =[ $fly004, necro_run5 ] {ai_run(16);}; void() necro_run5 =[ $fly005, necro_run6 ] {ai_run(16);}; void() necro_run6 =[ $fly006, necro_run7 ] {ai_run(16);}; void() necro_run7 =[ $fly007, necro_run8 ] {ai_run(16);}; void() necro_run8 =[ $fly008, necro_run9 ] {ai_run(16);}; void() necro_run9 =[ $fly009, necro_run10 ] {ai_run(16);}; void() necro_run10 =[ $fly010, necro_run11 ] {ai_run(16);}; void() necro_run11 =[ $fly011, necro_run12 ] {ai_run(16);}; void() necro_run12 =[ $fly012, necro_run13 ] {ai_run(16);}; void() necro_run13 =[ $fly013, necro_run14 ] {ai_run(16);}; void() necro_run14 =[ $fly014, necro_run15 ] {ai_run(16);}; void() necro_run15 =[ $fly015, necro_run16 ] {ai_run(16);}; void() necro_run16 =[ $fly016, necro_run17 ] {ai_run(16);}; void() necro_run17 =[ $fly017, necro_run18 ] {ai_run(16);}; void() necro_run18 =[ $fly018, necro_run19 ] {ai_run(16);}; void() necro_run19 =[ $fly019, necro_run20 ] {ai_run(16);}; void() necro_run20 =[ $fly020, necro_run1 ] {ai_run(16);}; //=========================================================================== void() necro_acid1 =[ $attack001, necro_acid2 ] { ai_face(); Apprent_StartMissile(0); }; void() necro_acid2 =[ $attack002, necro_acid3 ] {ai_face();}; void() necro_acid3 =[ $attack003, necro_acid4 ] {ai_face();}; void() necro_acid4 =[ $attack004, necro_acid5 ] {ai_face();}; void() necro_acid5 =[ $attack005, necro_acid6 ] {ai_face();}; void() necro_acid6 =[ $attack006, necro_acid7 ] {ai_face();}; void() necro_acid7 =[ $attack007, necro_acid8 ] {ai_face();}; void() necro_acid8 =[ $attack008, necro_acid9 ] {ai_face();}; void() necro_acid9 =[ $attack009, necro_acid10 ] {ai_face();}; void() necro_acid10 =[ $attack010, necro_acid11 ] {ai_face();}; void() necro_acid11 =[ $attack011, necro_acid12 ] {ai_face();}; void() necro_acid12 =[ $attack012, necro_acid13 ] {ai_face();}; void() necro_acid13 =[ $attack013, necro_acid14 ] {ai_face();}; void() necro_acid14 =[ $attack014, necro_acid15 ] {ai_face();}; void() necro_acid15 =[ $attack015, necro_acid16 ] {ai_face();}; void() necro_acid16 =[ $attack016, necro_acid17 ] {ai_face();}; void() necro_acid17 =[ $attack017, necro_acid18 ] {ai_face();}; void() necro_acid18 =[ $attack018, necro_acid19 ] {ai_face();}; void() necro_acid19 =[ $attack019, necro_acid20 ] {ai_face();}; void() necro_acid20 =[ $attack020, necro_run1 ] { ai_face(); SUB_AttackFinished(2); NecromancerAttackFinished (); }; //=========================================================================== void() necro_skull1 =[ $attack001, necro_skull2 ] { ai_face(); Apprent_StartMissile(1); }; void() necro_skull2 =[ $attack002, necro_skull3 ] {ai_face();}; void() necro_skull3 =[ $attack003, necro_skull4 ] {ai_face();}; void() necro_skull4 =[ $attack004, necro_skull5 ] {ai_face();}; void() necro_skull5 =[ $attack005, necro_skull6 ] {ai_face();}; void() necro_skull6 =[ $attack006, necro_skull7 ] {ai_face();}; void() necro_skull7 =[ $attack007, necro_skull8 ] {ai_face();}; void() necro_skull8 =[ $attack008, necro_skull9 ] {ai_face();}; void() necro_skull9 =[ $attack009, necro_skull10 ] {ai_face();}; void() necro_skull10 =[ $attack010, necro_skull11 ] {ai_face();}; void() necro_skull11 =[ $attack011, necro_skull12 ] {ai_face();}; void() necro_skull12 =[ $attack012, necro_skull13 ] {ai_face();}; void() necro_skull13 =[ $attack013, necro_skull14 ] {ai_face();}; void() necro_skull14 =[ $attack014, necro_skull15 ] {ai_face();}; void() necro_skull15 =[ $attack015, necro_skull16 ] {ai_face();}; void() necro_skull16 =[ $attack016, necro_skull17 ] {ai_face();}; void() necro_skull17 =[ $attack017, necro_skull18 ] {ai_face();}; void() necro_skull18 =[ $attack018, necro_skull19 ] {ai_face();}; void() necro_skull19 =[ $attack019, necro_skull20 ] {ai_face();}; void() necro_skull20 =[ $attack020, necro_run1 ] { ai_face(); SUB_AttackFinished(2); NecromancerAttackFinished (); }; //=========================================================================== void() necro_summon001 =[ $summon001, necro_summon002 ] {ai_face();}; void() necro_summon002 =[ $summon002, necro_summon003 ] {}; void() necro_summon003 =[ $summon003, necro_summon004 ] {}; void() necro_summon004 =[ $summon004, necro_summon005 ] {}; void() necro_summon005 =[ $summon005, necro_summon006 ] {}; void() necro_summon006 =[ $summon006, necro_summon007 ] {}; void() necro_summon007 =[ $summon007, necro_summon008 ] {}; void() necro_summon008 =[ $summon008, necro_summon009 ] {}; void() necro_summon009 =[ $summon009, necro_summon010 ] {}; void() necro_summon010 =[ $summon010, necro_summon011 ] {}; void() necro_summon011 =[ $summon011, necro_summon012 ] {}; void() necro_summon012 =[ $summon012, necro_summon013 ] {}; void() necro_summon013 =[ $summon013, necro_summon014 ] {}; void() necro_summon014 =[ $summon014, necro_summon015 ] {}; void() necro_summon015 =[ $summon015, necro_summon016 ] {}; void() necro_summon016 =[ $summon016, necro_summon017 ] {}; void() necro_summon017 =[ $summon017, necro_summon018 ] {}; void() necro_summon018 =[ $summon018, necro_summon019 ] {}; void() necro_summon019 =[ $summon019, necro_summon020 ] {}; void() necro_summon020 =[ $summon020, necro_summon021 ] {necro_summon_dweller();}; void() necro_summon021 =[ $summon021, necro_summon022 ] {}; void() necro_summon022 =[ $summon022, necro_summon023 ] {}; void() necro_summon023 =[ $summon023, necro_summon024 ] {}; void() necro_summon024 =[ $summon024, necro_summon025 ] {}; void() necro_summon025 =[ $summon025, necro_summon026 ] {}; void() necro_summon026 =[ $summon026, necro_summon027 ] {}; void() necro_summon027 =[ $summon027, necro_summon028 ] {}; void() necro_summon028 =[ $summon028, necro_summon029 ] {}; void() necro_summon029 =[ $summon029, necro_summon030 ] {}; void() necro_summon030 =[ $summon030, necro_summon031 ] {}; void() necro_summon031 =[ $summon031, necro_summon032 ] {}; void() necro_summon032 =[ $summon032, necro_summon033 ] {}; void() necro_summon033 =[ $summon033, necro_summon034 ] {}; void() necro_summon034 =[ $summon034, necro_summon035 ] {}; void() necro_summon035 =[ $summon035, necro_summon036 ] {}; void() necro_summon036 =[ $summon036, necro_summon037 ] {}; void() necro_summon037 =[ $summon037, necro_summon038 ] {}; void() necro_summon038 =[ $summon038, necro_summon039 ] {}; void() necro_summon039 =[ $summon039, necro_summon040 ] {}; void() necro_summon040 =[ $summon040, necro_summon041 ] {}; void() necro_summon041 =[ $summon041, necro_summon042 ] {}; void() necro_summon042 =[ $summon042, necro_summon043 ] {}; void() necro_summon043 =[ $summon043, necro_summon044 ] {}; void() necro_summon044 =[ $summon044, necro_summon045 ] {}; void() necro_summon045 =[ $summon045, necro_summon046 ] {}; void() necro_summon046 =[ $summon046, necro_summon047 ] {}; void() necro_summon047 =[ $summon047, necro_summon048 ] {}; void() necro_summon048 =[ $summon048, necro_summon049 ] {}; void() necro_summon049 =[ $summon049, necro_summon050 ] {}; void() necro_summon050 =[ $summon050, necro_summon051 ] {}; void() necro_summon051 =[ $summon051, necro_summon052 ] {}; void() necro_summon052 =[ $summon052, necro_summon053 ] {}; void() necro_summon053 =[ $summon053, necro_summon054 ] {}; void() necro_summon054 =[ $summon054, necro_summon055 ] {}; void() necro_summon055 =[ $summon055, necro_summon056 ] {}; void() necro_summon056 =[ $summon056, necro_summon057 ] {}; void() necro_summon057 =[ $summon057, necro_summon058 ] {}; void() necro_summon058 =[ $summon058, necro_summon059 ] {}; void() necro_summon059 =[ $summon059, necro_summon060 ] {}; void() necro_summon060 =[ $summon060, necro_summon061 ] {}; void() necro_summon061 =[ $summon061, necro_summon062 ] {}; void() necro_summon062 =[ $summon062, necro_summon063 ] {}; void() necro_summon063 =[ $summon063, necro_summon064 ] {}; void() necro_summon064 =[ $summon064, necro_summon065 ] {}; void() necro_summon065 =[ $summon065, necro_summon066 ] {}; void() necro_summon066 =[ $summon066, necro_summon067 ] {}; void() necro_summon067 =[ $summon067, necro_summon068 ] {}; void() necro_summon068 =[ $summon068, necro_summon069 ] {}; void() necro_summon069 =[ $summon069, necro_summon070 ] {}; void() necro_summon070 =[ $summon070, necro_run1 ] {}; //=========================================================================== void() necro_pain1 =[ $pain001, necro_pain2 ] {}; void() necro_pain2 =[ $pain002, necro_pain3 ] {}; void() necro_pain3 =[ $pain003, necro_pain4 ] {}; void() necro_pain4 =[ $pain004, necro_run1 ] {}; void(entity attacker, float damage) necro_Pain = { sound (self, CHAN_VOICE, "enemy/apprent/pain.wav", 1, ATTN_NORM); if (random()*70 > damage) return; // didn't flinch necro_pain1 (); }; //=========================================================================== void() necro_death1 =[ $death001, necro_death2 ] { self.velocity_x = -200 + 400*random(); self.velocity_y = -200 + 400*random(); self.velocity_z = 100 + 100*random(); self.flags = self.flags - (self.flags & FL_ONGROUND); sound (self, CHAN_VOICE, "enemy/apprent/death.wav", 1, ATTN_NORM); }; void() necro_death2 =[ $death002, necro_death3 ] {}; void() necro_death3 =[ $death003, necro_death4 ] {}; void() necro_death4 =[ $death004, necro_death5 ] {}; void() necro_death5 =[ $death005, necro_death6 ] {}; void() necro_death6 =[ $death006, necro_death7 ] {}; void() necro_death7 =[ $death007, necro_death8 ] {}; void() necro_death8 =[ $death008, necro_death9 ] {}; void() necro_death9 =[ $death009, necro_death10 ] {}; void() necro_death10 =[ $death010, necro_death11 ] {}; void() necro_death11 =[ $death011, necro_death12 ] {}; void() necro_death12 =[ $death012, necro_death13 ] {}; void() necro_death13 =[ $death013, necro_death14 ] {}; void() necro_death14 =[ $death014, necro_death15 ] {}; void() necro_death15 =[ $death015, necro_death16 ] {}; void() necro_death16 =[ $death016, necro_death17 ] {}; void() necro_death17 =[ $death017, necro_death18 ] {}; void() necro_death18 =[ $death018, necro_death19 ] {}; void() necro_death19 =[ $death019, necro_death20 ] {}; void() necro_death20 =[ $death020, necro_death21 ] {}; void() necro_death21 =[ $death021, necro_death22 ] {}; void() necro_death22 =[ $death022, necro_death23 ] {}; void() necro_death23 =[ $death023, necro_death24 ] {}; void() necro_death24 =[ $death024, necro_death25 ] {}; void() necro_death25 =[ $death025, necro_death26 ] {}; void() necro_death26 =[ $death026, necro_death27 ] {}; void() necro_death27 =[ $death027, necro_death28 ] {}; void() necro_death28 =[ $death028, necro_death29 ] {}; void() necro_death29 =[ $death029, necro_death30 ] {}; void() necro_death30 =[ $death030, necro_death31 ] {}; void() necro_death31 =[ $death031, necro_death32 ] {}; void() necro_death32 =[ $death032, necro_death33 ] {}; void() necro_death33 =[ $death033, necro_death34 ] {}; void() necro_death34 =[ $death034, necro_death35 ] {}; void() necro_death35 =[ $death035, necro_death36 ] {}; void() necro_death36 =[ $death036, necro_death37 ] {}; void() necro_death37 =[ $death037, necro_death38 ] {}; void() necro_death38 =[ $death038, necro_death39 ] {}; void() necro_death39 =[ $death039, necro_death40 ] {}; void() necro_death40 =[ $death040, necro_death41 ] {}; void() necro_death41 =[ $death041, necro_death42 ] {}; void() necro_death42 =[ $death042, necro_death43 ] {}; void() necro_death43 =[ $death043, necro_death44 ] {}; void() necro_death44 =[ $death044, necro_death45 ] {}; void() necro_death45 =[ $death045, necro_death46 ] {}; void() necro_death46 =[ $death046, necro_death47 ] {}; void() necro_death47 =[ $death047, necro_death48 ] {}; void() necro_death48 =[ $death048, necro_death49 ] {}; void() necro_death49 =[ $death049, necro_death50 ] {}; void() necro_death50 =[ $death050, necro_death51 ] {}; void() necro_death51 =[ $death051, necro_death52 ] {}; void() necro_death52 =[ $death052, necro_death53 ] {}; void() necro_death53 =[ $death053, necro_death54 ] {}; void() necro_death54 =[ $death054, necro_death55 ] {}; void() necro_death55 =[ $death055, necro_death56 ] {}; void() necro_death56 =[ $death056, necro_death57 ] {}; void() necro_death57 =[ $death057, necro_death58 ] {}; void() necro_death58 =[ $death058, necro_death59 ] {}; void() necro_death59 =[ $death059, necro_death60 ] {}; void() necro_death60 =[ $death060, necro_death61 ] {}; void() necro_death61 =[ $death061, necro_death62 ] {}; void() necro_death62 =[ $death062, necro_death63 ] {}; void() necro_death63 =[ $death063, necro_death64 ] {}; void() necro_death64 =[ $death064, necro_death65 ] {}; void() necro_death65 =[ $death065, necro_death66 ] {}; void() necro_death66 =[ $death066, necro_death67 ] {}; void() necro_death67 =[ $death067, necro_death68 ] {}; void() necro_death68 =[ $death068, necro_death69 ] {}; void() necro_death69 =[ $death069, necro_death70 ] {}; void() necro_death70 =[ $death070, necro_death71 ] {}; void() necro_death71 =[ $death071, necro_death72 ] {}; void() necro_death72 =[ $death072, necro_death73 ] {}; void() necro_death73 =[ $death073, necro_death74 ] {}; void() necro_death74 =[ $death074, necro_death75 ] {}; void() necro_death75 =[ $death075, necro_death76 ] {}; void() necro_death76 =[ $death076, necro_death77 ] {}; void() necro_death77 =[ $death077, necro_death78 ] {}; void() necro_death78 =[ $death078, necro_death78 ] { //necro leaves a big mess when he dies so lets blow him up at the end of it all T_RadiusDamage (self, self, 120, world); sound (self, CHAN_VOICE, "enemy/apprent/death.wav", 1, ATTN_NORM); self.origin = self.origin - 8*normalize(self.velocity); WriteByte (MSG_BROADCAST, SVC_TEMPENTITY); WriteByte (MSG_BROADCAST, TE_TAREXPLOSION); WriteCoord (MSG_BROADCAST, self.origin_x); WriteCoord (MSG_BROADCAST, self.origin_y); WriteCoord (MSG_BROADCAST, self.origin_z); BecomeExplosion (); }; void() necro_die = { //this seemed important self.solid = SOLID_NOT; //go into death animation necro_death1 (); }; //=========================================================================== void() necro_Missile = { local float r; //set random value to r r = random(); //Three attack types, choose between Acid attack, Skull Blast, or Summon Dweller if (r >= 0.65) { if (necro_check_summon() == 1) necro_summon001(); } else { if (r >= 0.33) necro_acid1(); else necro_skull1(); } }; //=========================================================================== void() necro_precache = { //necromancer graphics precache_model ("models/enemies/necro.md2"); precache_model ("models/weapons/gfx/acid.mdl"); precache_model ("models/weapons/gfx/skullblast.md2"); //necromancer sounds precache_sound ("enemy/apprent/ability.wav"); precache_sound ("enemy/apprent/death.wav"); precache_sound ("enemy/apprent/idle1.wav"); precache_sound ("enemy/apprent/idle2.wav"); precache_sound ("enemy/apprent/idle3.wav"); precache_sound ("enemy/apprent/idle4.wav"); precache_sound ("enemy/apprent/idle5.wav"); precache_sound ("enemy/apprent/pain.wav"); precache_sound ("enemy/apprent/sight.wav"); precache_sound ("weapons/demon/acidhit1.wav"); precache_sound ("weapons/demon/acidhit2.wav"); precache_sound ("weapons/lock4.wav"); //used for missile touch function //dweller precaches precache_model ("models/enemies/dweller.md2"); precache_sound ("enemy/dweller/alert1.wav"); precache_sound ("enemy/dweller/attack1.wav"); precache_sound ("enemy/dweller/miss.wav"); precache_sound ("enemy/dweller/pain1.wav"); precache_sound ("enemy/dweller/pain2.wav"); precache_sound ("enemy/dweller/pain3.wav"); precache_sound ("enemy/dweller/rage.wav"); }; /*EWED monster_necromancer (1 0 0) (-16 -16 -24) (16 16 40) Ambush */ void() monster_necromancer = { if (deathmatch) { remove(self); return; } //if we are put in the level directly then call necro_precache if (self.classname != "monster_wizard") necro_precache(); self.solid = SOLID_SLIDEBOX; self.movetype = MOVETYPE_STEP; setmodel (self, "models/enemies/necro.md2"); setsize (self, '-16 -16 -24', '16 16 40'); // setsize (self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.health = set_health(80); self.speed = set_speed(0); //variable velocity system, not a factor for flying monster self.dtype = 3; //dodge type teleport self.th_stand = necro_idle001; self.th_walk = necro_fly001; self.th_run = necro_run1; self.th_missile = necro_Missile; self.th_pain = necro_Pain; self.th_die = necro_die; //my new classname is? self.classname = "monster_necromancer"; //set up our monflag self.monflag = "TRUE"; flymonster_start (); };