void () bubble_bob; void () make_bubbles; void () bubble_remove; void () PlayerDead; void () player_diea1; void () player_walk; void () player_slow; $cd /raid/quake/id1/models/enforcer $origin 0 -6 24 $base base $skin skin void() corpse_gib = { self.solid = SOLID_NOT; }; // // running // $frame axrun1 axrun2 axrun3 axrun4 axrun5 axrun6 $frame rockrun1 rockrun2 rockrun3 rockrun4 rockrun5 rockrun6 // // standing // $frame stand1 stand2 stand3 stand4 stand5 $frame axstnd1 axstnd2 axstnd3 axstnd4 axstnd5 axstnd6 $frame axstnd7 axstnd8 axstnd9 axstnd10 axstnd11 axstnd12 // // pain // $frame axpain1 axpain2 axpain3 axpain4 axpain5 axpain6 $frame pain1 pain2 pain3 pain4 pain5 pain6 // // death // $frame axdeth1 axdeth2 axdeth3 axdeth4 axdeth5 axdeth6 $frame axdeth7 axdeth8 axdeth9 $frame deatha1 deatha2 deatha3 deatha4 deatha5 deatha6 deatha7 deatha8 $frame deatha9 deatha10 deatha11 $frame deathb1 deathb2 deathb3 deathb4 deathb5 deathb6 deathb7 deathb8 $frame deathb9 $frame deathc1 deathc2 deathc3 deathc4 deathc5 deathc6 deathc7 deathc8 $frame deathc9 deathc10 deathc11 deathc12 deathc13 deathc14 deathc15 $frame deathd1 deathd2 deathd3 deathd4 deathd5 deathd6 deathd7 $frame deathd8 deathd9 $frame deathe1 deathe2 deathe3 deathe4 deathe5 deathe6 deathe7 $frame deathe8 deathe9 // // attacks // $frame nailatt1 nailatt2 $frame light1 light2 $frame rockatt1 rockatt2 rockatt3 rockatt4 rockatt5 rockatt6 $frame shotatt1 shotatt2 shotatt3 shotatt4 shotatt5 shotatt6 $frame axatt1 axatt2 axatt3 axatt4 axatt5 axatt6 $frame axattb1 axattb2 axattb3 axattb4 axattb5 axattb6 $frame axattc1 axattc2 axattc3 axattc4 axattc5 axattc6 $frame axattd1 axattd2 axattd3 axattd4 axattd5 axattd6 void () player_duck = [ 45, player_run ] { }; void () CrawlSound = { local float rand; local float r; rand = random (); if (self.velocity == '0 0 0') { self.crawltime = 0; return; } self.rtime = time + 1; r = 0.5; if (self.sneak > 0) r = r / 2; if ((rand < 0.25)) sound (self, CHAN_ITEM, "player/prone1.wav", r, ATTN_NORM); else if ((rand < 0.5)) sound (self, CHAN_ITEM, "player/prone2.wav", r, ATTN_NORM); else if ((rand < 0.75)) sound (self, CHAN_ITEM, "player/prone3.wav", r, ATTN_NORM); else sound (self, CHAN_ITEM, "player/prone4.wav", r, ATTN_NORM); }; void() idle_frames = { self.weaponframe = 0; }; void () player_lay = [ 45, player_run ] { idle_frames(); if (self.velocity != '0 0 0') self.frame = 8 - self.crawltime; else if (self.velocity == '0 0 0') { self.frame = 0; return; } self.crawltime = self.crawltime - 1; if (self.crawltime <= 0) { CrawlSound(); self.crawltime = 8; } }; void () player_single_shot = [ 89, player_single_shot2 ]{}; void () player_single_shot2 = [ 90, player_run ]{}; void () player_single_shot_duck = [ 183, player_single_shot_duck2 ]{}; void () player_single_shot_duck2 = [ 184, player_run ]{}; void() army_radio1; void (vector org) spawn_tracer; void (float db) loud_noise = { //db is loudness factor //10 is low and 50 is high //10 would be a footstep //50 would be a gunshot local vector dir, start, org; local entity te; local string z, dt; local float x, y, d, t, v, md; if (db >= 50)//big rifles and guns can be heard through thick walls md = 3; else if (db >= 30)//things like SMGs and pistols, a little less md = 2; else if (db >= 15)//miscellaneous, richochets, silenced guns md = 1; else//very quiet things cannot be heard through doors md = 0; te = findradius(self.origin, db*40); while (te) { if (te.classname == "monster" && (te.enemy.classname != "player" && te.charmed <= 0)) { dir = normalize(te.origin - self.origin); v = vlen(te.origin - self.origin); t = 32; d = 0; while (t < v) { start = (self.origin + (dir*t)); if (pointcontents (start) == CONTENT_SOLID) d = d + 1; //spawn_tracer(start); t = t + 32; } if (x < db*20 && d <= md && (te.friend != self)) { te.enemy = self; te.think = HuntTarget; te.nextthink = time + 0.25; te.alert = 20; if (world.map_obj == OBJ_SHADOW && self.has_radio == 1) { spawn_excla(self, 8); bprint(2, self.netname); bprint(2, " is calling for help! silence him!\n"); self.rtime = 0; army_radio1(); return; } } else te.alert = 20; } te = te.chain; } traceline (self.origin, te.origin, FALSE, self); if (trace_fraction == 1.0) return; }; void (float db) monster_noise = { //db is loudness factor //10 is low and 50 is high //10 would be a footstep //50 would be a gunshot local vector dir, start, org; local entity te; local string z, dt; local float x, y, d, t, v, md; if (db >= 50) md = 3; else if (db >= 30) md = 2; else if (db >= 15) md = 1; else md = 0; te = findradius(self.origin, db*40); while (te) { if (te.classname == "monster" && te.enemy.classname == "world") { dir = normalize(te.origin - self.origin); v = vlen(te.origin - self.origin); t = 32; d = 0; while (t < v) { start = (self.origin + (dir*t)); if (pointcontents (start) == CONTENT_SOLID) d = d + 1; t = t + 32; } } te = te.chain; } traceline (self.origin, te.origin, FALSE, self); if (trace_fraction == 1.0) return; }; void () Footstep = { local float rand; local float r; rand = random (); if (self.sneak <= 0) { loud_noise(20 - self.skill_sneak); r = 1 - (self.skill_sneak/40); } else r = 0.25; if (self.position == 1) r = r * 0.5; if (rand < 0.25) sound (self, CHAN_ITEM, "player/step1.wav", r, ATTN_NORM); else if (rand < 0.5) sound (self, CHAN_ITEM, "player/step2.wav", r, ATTN_NORM); else if (rand < 0.75) sound (self, CHAN_ITEM, "player/step3.wav", r, ATTN_NORM); else sound (self, CHAN_ITEM, "player/step4.wav", r, ATTN_NORM); }; float (entity guy) holding_melee = { local float iid; iid = ToIID(ItemInSlot(guy, guy.current_slot)); if (iid == IID_NONE || iid == IID_WP_KNIFE || iid == IID_WP_SLEDGE || iid == IID_WP_SPEAR || iid == IID_WP_WRENCH) return true; return false; }; void () player_crouch; void () player_stand1 = [ 149, player_stand1 ] { if (self.rtime < time && self.attack == 0) idle_frames(); if (self.position == 1) { player_crouch (); return; } else if (self.position == 2) { player_lay (); return; } if (self.velocity_x || self.velocity_y) { self.walkframe = 0; player_run (); return; } if (self.walkframe >= 4) self.walkframe = 0; self.frame = 149 + self.walkframe; self.walkframe = self.walkframe + 1; }; void () player_crouch = [ 45, player_run ] { if (self.rtime < time && self.attack == 0) self.weaponframe = 0; if (!self.velocity_x && !self.velocity_y) { self.frame = 45; return; } else if (self.position == 2) { player_lay (); return; } idle_frames(); self.frame = (35 + self.walkframe); if (self.walkframe == 3 && self.ghost == 0 && self.velocity_z == 0) Footstep (); if (self.walkframe == 8 && self.ghost == 0 && self.velocity_z == 0) Footstep (); if (self.walkframe == 11) self.walkframe = 0; self.walkframe = (self.walkframe + 1); }; void () player_climb = [ 23, player_run ] { self.weaponframe = 0; if (self.velocity == '0 0 0') { self.frame = 25; return; } self.frame = (23 + self.walkframe); if ((self.walkframe >= 10)) { self.walkframe = 0; } self.walkframe = (self.walkframe + 1); }; void () player_run = [ 137, player_run ] { if (self.rtime <= time) idle_frames(); if (self.equipment_slot) if ((ToIID(ItemInSlot(self, self.equipment_slot))) == IID_EQUIP_CLIMBINGGEAR) { if (self.gravity == 0) { player_climb(); return; } } if (!self.velocity_x && !self.velocity_y) { player_stand1 (); return; } else if (self.position == 1) { player_crouch (); return; } else if (self.position == 2) { player_lay (); return; } if (self.speedmulti <= 0.60) { player_slow (); return; } else if (self.speedmulti <= 0.80) { player_walk (); return; } if (self.walkframe == 2 && self.ghost == 0 && self.position == 0 && self.velocity_z == 0) Footstep (); if (self.walkframe == 5 && self.ghost == 0 && self.position == 0 && self.velocity_z == 0) Footstep (); idle_frames(); self.frame = (137 + self.walkframe*2); self.walkframe = self.walkframe + 1; if (self.walkframe >= 6) self.walkframe = 0; }; void () player_walk = [ 170, player_walk ] { if (self.rtime <= time) self.weaponframe = 0; if (self.equipment_slot) if ((ToIID(ItemInSlot(self, self.equipment_slot))) == IID_EQUIP_CLIMBINGGEAR) { if (self.gravity == 0) { player_climb(); return; } } if (!self.velocity_x && !self.velocity_y) { player_stand1 (); return; } if (self.position == 1) { player_crouch (); return; } else { if (self.position == 2) { player_lay (); return; } } if (self.speedmulti > 0.80) { player_run (); return; } else if (self.speedmulti <= 0.60) { player_slow (); return; } if (self.walkframe == 3 && self.ghost == 0 && self.position == 0 && self.velocity_z == 0) Footstep (); if (self.walkframe == 8 && self.ghost == 0 && self.position == 0 && self.velocity_z == 0) Footstep (); idle_frames(); self.frame = (170 + self.walkframe); if (self.walkframe >= 11) self.walkframe = 0; self.walkframe = (self.walkframe + 1); }; void () player_slow = [ 170, player_slow ] { if (self.rtime <= time) self.weaponframe = 0; if (self.equipment_slot) if ((ToIID(ItemInSlot(self, self.equipment_slot))) == IID_EQUIP_CLIMBINGGEAR) { if (self.gravity == 0) { player_climb(); return; } } if (!self.velocity_x && !self.velocity_y) { player_stand1 (); return; } if (self.position == 1) { player_crouch (); return; } else { if (self.position == 2) { player_lay (); return; } } if (self.speedmulti > 0.80) { player_run (); return; } else if (self.speedmulti > 0.60) { player_walk (); return; } if (self.walkframe == 6 && self.ghost == 0 && self.position == 0 && self.velocity_z == 0) Footstep (); if (self.walkframe == 18 && self.ghost == 0 && self.position == 0 && self.velocity_z == 0) Footstep (); idle_frames(); self.frame = (170 + floor(self.walkframe/2)); if (self.walkframe >= 22) self.walkframe = 0; self.walkframe = (self.walkframe + 1); }; void () player_reload1 = [ 123, player_reload2 ] { }; void () player_reload2 = [ 124, player_reload3 ] { }; void () player_reload3 = [ 125, player_reload4 ] { }; void () player_reload4 = [ 126, player_reload5 ] { }; void () player_reload5 = [ 127, player_reload6 ] { }; void () player_reload6 = [ 128, player_reload7 ] { }; void () player_reload7 = [ 129, player_reload8 ] { }; void () player_reload8 = [ 130, player_reload9 ] { }; void () player_reload9 = [ 131, player_reload10 ] { }; void () player_reload10 = [ 132, player_reload11 ] { }; void () player_reload11 = [ 133, player_reload12 ] { }; void () player_reload12 = [ 134, player_reload13 ] { }; void () player_reload13 = [ 135, player_reload14 ] { }; void () player_reload14 = [ 136, player_run ] { }; void () player_creload1 = [ 74, player_creload2 ] { }; void () player_creload2 = [ 75, player_creload3 ] { }; void () player_creload3 = [ 76, player_creload4 ] { }; void () player_creload4 = [ 77, player_creload5 ] { }; void () player_creload5 = [ 78, player_creload6 ] { }; void () player_creload6 = [ 79, player_creload7 ] { }; void () player_creload7 = [ 80, player_creload8 ] { }; void () player_creload8 = [ 81, player_creload9 ] { }; void () player_creload9 = [ 82, player_creload10 ] { }; void () player_creload10 = [ 83, player_creload11 ] { }; void () player_creload11 = [ 84, player_creload12 ] { }; void () player_creload12 = [ 85, player_creload13 ] { }; void () player_creload13 = [ 86, player_creload14 ] { }; void () player_creload14 = [ 87, player_run ] { }; void () player_use1 = [ 155, player_use2 ] { }; void () player_use2 = [ 156, player_use3 ] { }; void () player_use3 = [ 157, player_use4 ] { }; void () player_use4 = [ 158, player_use5 ] { }; void () player_use5 = [ 159, player_use6 ] { }; void () player_use6 = [ 160, player_use7 ] { }; void () player_use7 = [ 161, player_use8 ] { }; void () player_use8 = [ 162, player_use9 ] { }; void () player_use9 = [ 163, player_use10 ] { }; void () player_use10 = [ 164, player_use11 ] { }; void () player_use11 = [ 165, player_use12 ] { }; void () player_use12 = [ 166, player_use13 ] { }; void () player_use13 = [ 167, player_use14 ] { }; void () player_use14 = [ 168, player_use15 ] { }; void () player_use15 = [ 169, player_use16 ] { }; void () player_use16 = [ 170, player_run ] { }; void () player_holster1 = [ 107, player_holster2 ] { self.attack_finished = (time + 0.25); }; void () player_holster2 = [ 109, player_holster3 ] { }; void () player_holster3 = [ 111, player_holster4 ] { }; void () player_holster4 = [ 112, player_holster5 ] { }; void () player_holster5 = [ 113, player_holster6 ] { }; void () player_holster6 = [ 114, player_holster7 ] { }; void () player_holster7 = [ 115, player_holster8 ] { }; void () player_holster8 = [ 116, player_holster9 ] { }; void () player_holster9 = [ 117, player_holster10 ] { }; void () player_holster10 = [ 119, player_holster11 ] { }; void () player_holster11 = [ 121, player_holster12 ] { }; void () player_holster12 = [ 122, player_run ] { }; void () player_jump1 = [ 48, player_jump2 ] { }; void () player_jump2 = [ 49, player_jump3 ] { }; void () player_jump3 = [ 50, player_jump4 ] { }; void () player_jump4 = [ 52, player_jump5 ] { }; void () player_jump5 = [ 54, player_jump6 ] { }; void () player_jump6 = [ 53, player_jump7 ] { }; void () player_jump7 = [ 51, player_jump8 ] { }; void () player_jump8 = [ 49, player_jump9 ] { }; void () player_jump9 = [ 48, player_run ] { }; void() player_singlex = [89, player_singlex2 ] {muzzleflash();}; void() player_singlex2 = [89, player_run ] {muzzleflash();}; void() player_singley = [90, player_singley2 ] {muzzleflash();}; void() player_singley2 = [90, player_run ] {muzzleflash();}; void() player_auto_duck1 = [182, player_auto_duck2 ] {muzzleflash();}; void() player_auto_duck2 = [182, player_run ] {muzzleflash();}; void() player_auto_ducka1 = [183, player_auto_ducka2 ] {muzzleflash();}; void() player_auto_ducka2 = [183, player_run ] {muzzleflash();}; void() player_auto_prone1 = [1, player_auto_prone2 ] {muzzleflash();}; void() player_auto_prone2 = [1, player_run ] {muzzleflash();}; void() player_auto_pronea1 = [0, player_auto_pronea2 ] {muzzleflash();}; void() player_auto_pronea2 = [0, player_run ] {muzzleflash();}; void () player_single1_left = [ 88, player_single2_left ] { self.weaponframe = 4; muzzleflash (); }; void () player_single2_left = [ 89, player_run ] { self.weaponframe = 5; }; void () player_single1s_left = [ 183, player_single2_s ] { self.weaponframe = 4; muzzleflash (); }; void () player_single2s_left = [ 184, player_run ] { self.weaponframe = 5; }; void () player_singlea = [ 88, player_run ] { self.weaponframe = WEAPON_SHOTGUN; muzzleflash (); }; void () player_singleaz = [ 183, player_run ] { self.weaponframe = WEAPON_SHOTGUN; muzzleflash (); }; void () player_singlea2 = [ 89, player_run ] { self.weaponframe = WEAPON_SHOTGUN; muzzleflash (); }; void () player_singleb = [ 89, player_run ] { self.weaponframe = WEAPON_ROCKET; muzzleflash (); }; void () player_singleb2 = [ 89, player_run ] { self.weaponframe = WEAPON_ROCKET; muzzleflash (); }; void () player_singlebz = [ 184, player_run ] { self.weaponframe = WEAPON_ROCKET; muzzleflash (); }; void () player_shotty1 = [ 88, player_shotty2 ] { self.weaponframe = WEAPON_SHOTGUN; }; void () player_shotty2 = [ 89, player_shotty3 ] { self.weaponframe = WEAPON_ROCKET; }; void () player_shotty3 = [ 90, player_shotty4 ] { self.weaponframe = AS_MELEE; }; void () player_shotty4 = [ 91, player_run ] { self.weaponframe = WEAPON_ROCKET; }; void () player_pull1 = [ 155, player_pull2 ] { self.weaponframe = 1; }; void () player_pull2 = [ 156, player_pull3 ] { self.weaponframe = 2; sound (self, CHAN_WEAPON, "weapons/gpull.wav", WEAPON_SHOTGUN, ATTN_IDLE); }; void () player_pull3 = [ 157, player_pull4 ] { self.weaponframe = AS_MELEE; }; void () player_pull4 = [ 158, player_pull5 ] { self.weaponframe = WEAPON_SPIKES; }; void () player_pull5 = [ 157, player_pull6 ] { self.weaponframe = MULTICAST_PVS_R; }; void () player_pull6 = [ 156, player_pull7 ] { self.weaponframe = TE_LIGHTNING2; }; void () player_pull7 = [ 155, player_pull8 ] { self.weaponframe = TE_WIZSPIKE; }; void () player_pull8 = [ 155, player_pull9 ] { self.weaponframe = 8; self.grenadetoggle = 1; }; void () player_pull9 = [ 155, player_pull10 ] { self.weaponframe = 9; }; void () player_pull10 = [ 155, player_pull11 ] { self.weaponframe = 10; }; void () player_pull11 = [ 155, player_throw1 ] { self.weaponframe = 11; }; void () player_throw1 = [ 155, player_throw2 ] { if (self.attack_finished > time) return; self.attack_finished = time + 1; self.weaponframe = 13; if (((random () * WEAPON_BIG) <= WEAPON_SPIKES)) sound (self, CHAN_VOICE, "radio/grenade.wav", 0.7, ATTN_NORM); else sound (self, CHAN_VOICE, "radio/lookout.wav", 0.7, ATTN_NORM); }; void () player_throw2 = [ 156, player_run ] { self.weaponframe = 14; if (self.grenslot == 0) self.grenslot = self.current_slot; FireHandGrenade (); self.attack_finished = time + 1; W_SetCurrentAmmo(); }; void () player_shotty1b = [ 183, player_shotty2b ] { self.weaponframe = WEAPON_SHOTGUN; }; void () player_shotty2b = [ 183, player_shotty3b ] { self.weaponframe = WEAPON_ROCKET; }; void () player_shotty3b = [ 184, player_shotty4b ] { self.weaponframe = AS_MELEE; }; void () player_shotty4b = [ 184, player_run ] { self.weaponframe = WEAPON_ROCKET; }; void () player_punch1 = [ 155, player_run ] { self.weaponframe = 1; W_FireMelee (); }; void () player_punch2 = [ 156, player_run ] { self.weaponframe = 2; W_FireMelee (); }; void () player_swing1 = [ 155, player_run ] { self.attack_finished = time + 0.30; self.weaponframe = 1; W_FireMelee (); }; void () player_swing1a = [ 155, player_run ] { self.attack_finished = time + 0.30; self.weaponframe = 2; W_FireMelee (); }; void () player_kick1 = [ 155, player_kick2 ] { self.attack_finished = time + 0.40; self.weaponframe = 7; }; void () player_kick2 = [ 156, player_kick3 ] { self.weaponframe = 8; W_FireMelee (); W_FireMelee (); }; void () player_kick3 = [ 157, player_run ] { self.weaponframe = 9; }; void () player_kick1a = [ 155, player_kick2a ] { self.attack_finished = time + 0.40; self.weaponframe = 10; }; void () player_kick2a = [ 156, player_kick3a ] { self.weaponframe = 11; W_FireMelee (); W_FireMelee (); }; void () player_kick3a = [ 157, player_run ] { self.weaponframe = 12; }; void () player_kick1b = [ 155, player_kick2b ] { self.attack_finished = time + 1; self.weaponframe = 10; }; void () player_kick2b = [ 156, player_kick3b ] { self.weaponframe = 10; }; void () player_kick3b = [ 155, player_kick4b ] { self.weaponframe = 11; W_FireMelee (); W_FireMelee (); }; void () player_kick4b = [ 156, player_kick5b ] { self.weaponframe = 11; W_FireMelee (); W_FireMelee (); }; void () player_kick5b = [ 155, player_kick6b ] { self.weaponframe = 12; W_FireMelee (); W_FireMelee (); }; void () player_kick6b = [ 156, player_run ] { W_FireMelee (); W_FireMelee (); self.attack_finished = time + 1; self.weaponframe = 12; }; void () player_dragon_kick = { self.velocity = self.velocity * 1.50; self.velocity_x = self.velocity_x * 1.50; self.velocity_y = self.velocity_y * 1.50; self.recoil = 30; player_kick1b(); }; void () player_knife1 = [ 91, player_knife2 ] { self.weaponframe = 5; }; void () player_knife2 = [ 92, player_knife3] { self.weaponframe = 6; }; void () player_knife3 = [ 93, player_run ] { self.weaponframe = 7; W_FireMelee (); }; void () player_spear1 = [ 89, player_spear2 ] { self.weaponframe = 5; }; void () player_spear2 = [ 90, player_spear3 ] { self.weaponframe = 6; }; void () player_spear3 = [ 89, player_run ] { self.weaponframe = 7; W_FireMelee (); }; void () player_spear1a = [ 89, player_spear2a ] { self.weaponframe = 5; }; void () player_spear2a = [ 90, player_spear3a ] { self.weaponframe = 6; }; void () player_spear3a = [ 89, player_run ] { self.weaponframe = 7; W_FireMelee (); }; void () player_knifea = [ 91, player_knifeb ] { self.weaponframe = 8; }; void () player_knifeb = [ 92, player_knifec ] { self.weaponframe = 9; }; void () player_knifec = [ 93, player_run ] { self.weaponframe = 10; W_FireMelee (); }; void () player_axe1 = [ 89, player_axe2 ] { self.weaponframe = 1; }; void () player_axe2 = [ 89, player_axe3 ] { self.weaponframe = 1; }; void () player_axe3 = [ 90, player_axe4 ] { sound (self, CHAN_WEAPON, "effects/axe_swing.wav", TRUE, ATTN_NORM); self.weaponframe = 2; }; void () player_axe4 = [ 90, player_axe5 ] { self.weaponframe = 3; W_FireMelee (); }; void () player_axe5 = [ 89, player_run ] { self.weaponframe = 7; }; void () player_axeb1 = [ 89, player_axeb2 ] { self.weaponframe = 4; }; void () player_axeb2 = [ 89, player_axeb3 ] { self.weaponframe = 4; }; void () player_axeb3 = [ 90, player_axeb4 ] { sound (self, CHAN_WEAPON, "effects/axe_swing.wav", TRUE, ATTN_NORM); self.weaponframe = 5; }; void () player_axeb4 = [ 90, player_axeb5 ] { self.weaponframe = 6; W_FireMelee (); }; void () player_axeb5 = [ 89, player_run ] { self.weaponframe = 8; }; void () player_nail1 = [ 88, player_nail2 ] { muzzleflash (); if (((!self.button0 || intermission_running) || self.impulse)) { player_run (); return; } self.weaponframe = (self.weaponframe + WEAPON_SHOTGUN); if ((self.weaponframe == AS_MELEE)) { self.weaponframe = WEAPON_SHOTGUN; } }; void () player_nail2 = [ 89, player_nail1 ] { muzzleflash (); if (((!self.button0 || intermission_running) || self.impulse)) { player_run (); return; } self.weaponframe = (self.weaponframe + WEAPON_SHOTGUN); if ((self.weaponframe == AS_MELEE)) { self.weaponframe = WEAPON_SHOTGUN; } }; void () player_auto1 = [ 88, player_auto2 ] { muzzleflash (); if (((!self.button0 || intermission_running) || self.impulse)) { player_run (); return; } self.weaponframe = (self.weaponframe + WEAPON_SHOTGUN); if ((self.weaponframe == WEAPON_ROCKET)) { self.weaponframe = WEAPON_SHOTGUN; } }; void () player_auto2 = [ 89, player_auto1 ] { muzzleflash (); if (((!self.button0 || intermission_running) || self.impulse)) { player_run (); return; } self.weaponframe = (self.weaponframe + WEAPON_SHOTGUN); if ((self.weaponframe == WEAPON_ROCKET)) { self.weaponframe = WEAPON_SHOTGUN; } }; void () player_auto3 = [ 88, player_auto4 ] { muzzleflash (); if (((!self.button0 || intermission_running) || self.impulse)) { player_run (); return; } self.weaponframe = WEAPON_SHOTGUN; }; void () player_auto4 = [ 89, player_auto3 ] { muzzleflash (); if (((!self.button0 || intermission_running) || self.impulse)) { player_run (); return; } self.weaponframe = MULTICAST_ALL; }; void (float num_bubbles) DeathBubbles; void () PainSound = { if ((self.equipment == 8)) return; if ((self.health <= 0)) return; if (self.air_finished < time) { sound (self, CHAN_VOICE, "player/drown2.wav", 1, ATTN_NORM); return; } if ((damage_attacker.classname == "teledeath")) { sound (self, CHAN_VOICE, "player/teledth1.wav", WEAPON_SHOTGUN, ATTN_NONE); return; } if (((self.watertype == CONTENT_WATER) && (self.waterlevel == AS_MELEE))) { DeathBubbles (WEAPON_SHOTGUN); sound (self, CHAN_VOICE, "player/pain1.wav", WEAPON_SHOTGUN, ATTN_NORM); return; } if ((self.watertype == CONTENT_SLIME)) { if ((random () > 0.5)) sound (self, CHAN_VOICE, "player/slimbrn2.wav", WEAPON_SHOTGUN, ATTN_NORM); else sound (self, CHAN_VOICE, "player/lburn2.wav", WEAPON_SHOTGUN, ATTN_NORM); return; } if ((self.watertype == CONTENT_LAVA)) { if ((random () > 0.5)) sound (self, CHAN_VOICE, "player/lburn1.wav", WEAPON_SHOTGUN, ATTN_NORM); else sound (self, CHAN_VOICE, "player/lburn2.wav", WEAPON_SHOTGUN, ATTN_NORM); return; } if ((self.pain_finished > time)) { self.axhitme = MULTICAST_ALL; return; } self.pain_finished = (time + 1.5); if ((self.axhitme == WEAPON_SHOTGUN)) { self.axhitme = 0; sound (self, CHAN_VOICE, "player/pain1.wav", WEAPON_SHOTGUN, ATTN_NORM); return; } self.noise = "player/pain2.wav"; sound (self, CHAN_VOICE, self.noise, WEAPON_SHOTGUN, ATTN_NORM); return; }; void () player_pain1 = [ 14, player_pain2 ] { }; void () player_pain2 = [ 15, player_pain3 ] { }; void () player_pain3 = [ 16, player_pain4 ] { }; void () player_pain4 = [ 17, player_pain5 ] { }; void () player_pain5 = [ 18, player_pain6 ] { }; void () player_pain6 = [ 19, player_run ] { }; void () player_pain = { self.pain_finished = time + 0.1; self.missionbrief = 6; if (self.pain_finished > time) { sound (self, CHAN_VOICE, self.armornoise, 1, ATTN_NORM); return; } if ((self.health <= 40) && (getperk(9)) && (random()<=0.10)) { sprint(self, 2, "THE ZONE!\n"); self.rage = 255; self.ragetime = 10; } self.pain_finished = time + 0.1; if (random () * WEAPON_BIG < WEAPON_SPIKES) sound (self, CHAN_VOICE, "player/paina.wav", WEAPON_SHOTGUN, ATTN_NORM); else sound (self, CHAN_VOICE, "player/painb.wav", WEAPON_SHOTGUN, ATTN_NORM); if (random () * WEAPON_BIG < TE_LIGHTNING2) sound (self, CHAN_BODY, "player/hit1.wav", WEAPON_SHOTGUN, ATTN_NORM); if (self.invisible_finished > time) return; if (getperk(1)) self.maxspeed = (self.maxspeed * 0.9); else self.maxspeed = (self.maxspeed * 0.6); player_pain1 (); }; void () player_dieb1; void () player_diec1; void () DeathBubblesSpawn = { local entity bubble; if ((self.owner.waterlevel != AS_MELEE)) { return; } bubble = spawn (); setmodel (bubble, "progs/s_bubble.spr"); setorigin (bubble, (self.owner.origin + '0 0 24')); bubble.movetype = MOVETYPE_NOCLIP; bubble.solid = SOLID_NOT; bubble.velocity = '0 0 15'; bubble.nextthink = (time + 0.5); bubble.think = bubble_bob; bubble.classname = "bubble"; bubble.frame = MULTICAST_ALL; bubble.cnt = MULTICAST_ALL; setsize (bubble, '-8 -8 -8', '8 8 8'); self.nextthink = (time + 0.1); self.think = DeathBubblesSpawn; self.air_finished = (self.air_finished + 1); if ((self.air_finished >= self.bubble_count)) { remove (self); } }; void (float num_bubbles) DeathBubbles = { local entity bubble_spawner; bubble_spawner = spawn (); setorigin (bubble_spawner, self.origin); bubble_spawner.movetype = MOVETYPE_NONE; bubble_spawner.solid = SOLID_NOT; bubble_spawner.nextthink = (time + 0.1); bubble_spawner.think = DeathBubblesSpawn; bubble_spawner.air_finished = MULTICAST_ALL; bubble_spawner.owner = self; bubble_spawner.bubble_count = num_bubbles; return; }; void () DeathSound = { local float r; if ((self.equipment == 8)) { return; } if ((self.waterlevel == AS_MELEE)) { sound (self, CHAN_VOICE, "player/drown2.wav", WEAPON_SHOTGUN, ATTN_NONE); return; } r = random (); self.noise = "player/agdie4.wav"; sound (self, CHAN_VOICE, self.noise, 0.9, ATTN_NORM); return; }; void () PlayerDead = { setmodel(self, "progs/dead.mdl"); setsize(self, '-16 -16 -24', '16 16 0'); self.nextthink = CONTENT_EMPTY; self.deadflag = DEAD_DEAD; }; vector(float dm) VelocityForDamage = { local vector v; v_x = 100 * crandom(); v_y = 100 * crandom(); v_z = 200 + 100 * random(); if (dm > -50) { // dprint ("level 1\n"); v = v * 0.7; } else if (dm > -200) { // dprint ("level 3\n"); v = v * 2; } else v = v * 10; return v; }; void(string gibname, float dm) ThrowGib = { local entity new; new = spawn(); new.origin = self.origin; setmodel (new, gibname); setsize (new, '0 0 0', '0 0 0'); new.velocity = VelocityForDamage (dm); new.movetype = MOVETYPE_BOUNCE; new.solid = SOLID_NOT; // new.avelocity_x = random()*600; new.avelocity_y = random()*600; // new.avelocity_z = random()*600; new.think = SUB_Remove; new.ltime = time; new.nextthink = time + 10 + random()*10; new.frame = 0; new.flags = 0; }; void(string gibname, float dm) ThrowHead = { setmodel (self, gibname); self.frame = 0; self.nextthink = -1; self.movetype = MOVETYPE_BOUNCE; self.takedamage = DAMAGE_NO; self.solid = SOLID_NOT; self.view_ofs = '0 0 8'; setsize (self, '-16 -16 0', '16 16 56'); self.velocity = VelocityForDamage (dm); self.origin_z = self.origin_z - 24; self.flags = self.flags - (self.flags & FL_ONGROUND); self.avelocity = crandom() * '0 600 0'; }; void (string gibname, float dm) ThrowGib2 = { local entity new; new = spawn(); new.origin = self.origin; setmodel (new, gibname); setsize (new, '0 0 0', '0 0 0'); new.velocity = VelocityForDamage (dm); new.velocity_z = new.velocity_z + 40; new.movetype = MOVETYPE_BOUNCE; new.solid = SOLID_NOT; // new.avelocity_x = random()*600; new.avelocity_y = random()*600; // new.avelocity_z = random()*600; new.think = SUB_Remove; new.ltime = time; new.nextthink = time + 10 + random()*10; new.frame = 0; new.flags = 0; }; void () SmokeBob2 = { local float rnd1; local float rnd2; local float rnd3; self.cnt = (self.cnt + WEAPON_SHOTGUN); if ((self.cnt >= (WEAPON_ROCKET + (random () * AS_MELEE)))) { remove (self); } rnd1 = (self.velocity_x + (-10 + (random () * IDLE8A))); rnd2 = (self.velocity_y + (-10 + (random () * IDLE8A))); rnd3 = ((self.velocity_z + TE_LAVASPLASH) + (random () * TE_LAVASPLASH)); if ((rnd1 > MULTICAST_PVS_R)) { rnd1 = MULTICAST_PVS_R; } if ((rnd1 < CONTENT_LAVA)) { rnd1 = CONTENT_LAVA; } if ((rnd2 > MULTICAST_PVS_R)) { rnd2 = MULTICAST_PVS_R; } if ((rnd2 < CONTENT_LAVA)) { rnd2 = CONTENT_LAVA; } if ((rnd3 < TE_LAVASPLASH)) { rnd3 = IDLE3A; } if ((rnd3 > SVC_INTERMISSION)) { rnd3 = DRAW3; } self.velocity_x = rnd1; self.velocity_y = rnd2; self.velocity_z = rnd3; self.nextthink = (time + 0.5); self.think = SmokeBob2; }; void (string gibname, float dm) ThrowPlayerHead = { setmodel (self, gibname); self.frame = MULTICAST_ALL; if (self.team == 1) self.skin = 0; if (self.team == 2) self.skin = 1; self.nextthink = (time + WEAPON_SHOTGUN); self.think = SUB_Null; self.movetype = MOVETYPE_BOUNCE; self.takedamage = DAMAGE_NO; self.view_ofs = '0 0 8'; setsize (self, '-8 -8 -8', '8 8 8'); self.velocity = VelocityForDamage (dm); self.origin_z = (self.origin_z + DRAW2); self.flags = (self.flags - (self.flags & FL_ONGROUND)); self.avelocity = (crandom () * '0 600 0'); }; void () GibPlayer = { self.solid = SOLID_NOT; self.deadflag = DEAD_DYING; setmodel (self, ""); self.skin = self.team; ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib1.mdl", self.health); ThrowGib ("progs/gib3.mdl", self.health); SpawnMeatSpray (self.origin, (self.origin + VEC_ORIGIN)); SpawnMeatSpray (self.origin, (self.origin + VEC_ORIGIN)); SpawnMeatSpray (self.origin, (self.origin + VEC_ORIGIN)); self.deadflag = DEAD_DEAD; }; void () PlayerDie = { local float i; local float r; r = random (); self.noise = "player/agdie2.wav"; sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM); self.items = (self.items - (self.items & IT_INVISIBILITY)); self.invisible_finished = 0; self.invincible_finished = 0; self.super_damage_finished = 0; self.radsuit_finished = 0; self.modelindex = modelindex_player; self.weaponmodel = ""; self.view_ofs = '0 0 -8'; self.deadflag = DEAD_DYING; self.flags = (self.flags - (self.flags & FL_ONGROUND)); self.movetype = MOVETYPE_WALK; self.angles_z = 0; if (self.position == 1 || self.position == 2) player_diec1 (); else { if (self.health <= -40) player_dieb1 (); else player_diea1 (); } }; void () set_suicide_frame = { self.frame = TE_LAVASPLASH; self.solid = SOLID_NOT; self.movetype = MOVETYPE_TOSS; self.deadflag = DEAD_DEAD; self.nextthink = CONTENT_EMPTY; }; void () player_diea1 = [ 1, player_diea2 ] { }; void () player_diea2 = [ 2, player_diea3 ] { }; void () player_diea3 = [ 3, player_diea4 ] { }; void () player_diea4 = [ 4, player_diea5 ] { }; void () player_diea5 = [ 5, player_diea6 ] { }; void () player_diea6 = [ 6, player_diea7 ] { }; void () player_diea7 = [ 7, player_diea8 ] { }; void () player_diea8 = [ 8, player_diea9 ] { }; void () player_diea9 = [ 9, player_diea10 ] { }; void () player_diea10 = [ 10, player_diea11 ] { }; void () player_diea11 = [ 11, player_diea12 ] { }; void () player_diea12 = [ 12, player_diea13 ] { }; void () player_diea13 = [ 13, player_diea13 ] { PlayerDead (); }; void () player_dieb1 = [ 94, player_dieb2 ] { }; void () player_dieb2 = [ 95, player_dieb3 ] { }; void () player_dieb3 = [ 96, player_dieb4 ] { }; void () player_dieb4 = [ 97, player_dieb5 ] { }; void () player_dieb5 = [ 98, player_dieb6 ] { }; void () player_dieb6 = [ 99, player_dieb7 ] { }; void () player_dieb7 = [ 100, player_dieb8 ] { }; void () player_dieb8 = [ 101, player_dieb9 ] { }; void () player_dieb9 = [ 102, player_dieb10 ] { }; void () player_dieb10 = [ 103, player_dieb11 ] { }; void () player_dieb11 = [ 104, player_dieb12 ] { }; void () player_dieb12 = [ 105, player_dieb13 ] { }; void () player_dieb13 = [ 106, player_dieb13 ] { PlayerDead (); }; void () player_diec1 = [ 55, player_diec2 ] { }; void () player_diec2 = [ 56, player_diec3 ] { }; void () player_diec3 = [ 57, player_diec4 ] { }; void () player_diec4 = [ 58, player_diec5 ] { }; void () player_diec5 = [ 59, player_diec6 ] { }; void () player_diec6 = [ 60, player_diec7 ] { }; void () player_diec7 = [ 61, player_diec8 ] { }; void () player_diec8 = [ 62, player_diec9 ] { }; void () player_diec9 = [ 63, player_diec10 ] { }; void () player_diec10 = [ 64, player_diec11 ] { }; void () player_diec11 = [ 65, player_diec12 ] { }; void () player_diec12 = [ 66, player_diec13 ] { }; void () player_diec13 = [ 67, player_diec13 ] { PlayerDead (); };