home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-08-20 | 41.7 KB | 1,342 lines |
- void(float shotcount, vector dir, vector spread) FireBullets;
- void() bubble_bob;
-
- /*
- ==============================================================================
-
- PLAYER
-
- ==============================================================================
- */
-
- $cd /raid/quake/id1/models/player_4
- $origin 0 -6 24
- $base base
- $skin skin
-
- //
- // 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
-
- // 143
-
- /*
- ==============================================================================
- PLAYER
- ==============================================================================
- */
-
- void() player_demon_jump =[ $axstnd11, player_demon_jump ]
- {
- if (self.walkframe >= 12)
- self.walkframe = 11;
- self.frame = $axstnd11 + self.walkframe;
- self.walkframe = self.walkframe + 1;
- if (self.flags & FL_ONGROUND)
- player_stand1();
- };
-
- void() player_run;
-
- /*
- ***********
- STANDING
- ***********
- */
-
- void() player_stand1 =[ $axstnd1, player_stand1 ]
- {
- self.weaponframe=0;
- if (self.velocity_x || self.velocity_y)
- {
- self.walkframe=0;
- player_run();
- return;
- }
-
- if (self.effects & EF_DEMON)
- {
- // We are a demon
- self.view_ofs = '0 0 4';
- if (self.walkframe >= 13)
- self.walkframe = 0;
- self.frame = $axrun1 + self.walkframe;
- }
- else if (self.effects & EF_GRUNT)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = $axrun1 + self.walkframe;
- }
- else if (self.effects & EF_SHALRATH)
- {
- self.view_ofs = '0 0 18';
- self.walkframe = 0;
- self.frame = 24;
- }
- else if (self.effects & EF_ENFORCER)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 6)
- self.walkframe = 0;
- self.frame = 1 + self.walkframe;
- }
- else if (self.effects & EF_WIZARD)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 14)
- self.walkframe = 0;
- self.frame = 1 + self.walkframe;
- }
- else if (self.effects & EF_KNIGHT)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = 1 + self.walkframe;
- }
- else if (self.effects & EF_HKNIGHT)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = 1 + self.walkframe;
- }
-
- else if (self.effects & EF_OGRE)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = 1 + self.walkframe;
- }
-
- else if (self.weapon == IT_AXE)
- {
- if (self.walkframe >= 12)
- self.walkframe = 0;
- self.frame = $axstnd1 + self.walkframe;
- }
- else
- {
- if (self.walkframe >= 5)
- self.walkframe = 0;
- self.frame = $stand1 + self.walkframe;
- }
- self.walkframe = self.walkframe + 1;
- };
-
- /*
- ******************
- RUNNING
- ******************
- */
-
- void() player_run =[ $rockrun1, player_run ]
- {
- self.weaponframe=0;
- if (!self.velocity_x && !self.velocity_y)
- {
- self.walkframe=0;
- player_stand1();
- return;
- }
-
- if(self.effects & EF_DEMON)
- {
- //We are a demon
- self.view_ofs = '0 0 4';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = $stand2 + self.walkframe;
- }
- else if(self.effects & EF_GRUNT)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = $deathc4 + self.walkframe;
- }
- else if(self.effects & EF_SHALRATH)
- {
- self.view_ofs = '0 0 18';
- if (self.walkframe >= 10)
- self.walkframe = 0;
- self.frame = 25 + self.walkframe;
- }
- else if(self.effects & EF_ENFORCER)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 7)
- self.walkframe = 0;
- self.frame = 24 + self.walkframe;
- }
- else if(self.effects & EF_WIZARD)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 13)
- self.walkframe = 0;
- self.frame = 16 + self.walkframe;
- }
- else if(self.effects & EF_KNIGHT)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 8)
- self.walkframe = 0;
- self.frame = $rockrun4 + self.walkframe;
- }
- else if(self.effects & EF_HKNIGHT)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 7)
- self.walkframe = 0;
- self.frame = 30 + self.walkframe;
- }
-
- else if(self.effects & EF_OGRE)
- {
- self.view_ofs = '0 0 24';
- if (self.walkframe >= 7)
- self.walkframe = 0;
- self.frame = 26 + self.walkframe;
- }
-
- else if (self.weapon == IT_AXE)
- {
- if (self.walkframe == 6)
- self.walkframe = 0;
- self.frame = $axrun1 + self.walkframe;
- }
- else
- {
- if (self.walkframe == 6)
- self.walkframe = 0;
- self.frame = self.frame + self.walkframe;
- }
- self.walkframe = self.walkframe + 1;
- };
-
-
- /*
- ***************
- MISSILE ATTACKS
- ***************
- */
-
- // FRAMES
-
- void() GruntFire;
-
- void() player_gattack = [$deathd1 , player_gattack6 ] {self.weaponframe = 1;GruntFire();self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_gattack6 = [$deathd2 , player_gattack7 ] {self.weaponframe = 2;};
- void() player_gattack7 = [$deathd3 , player_gattack8 ] {self.weaponframe = 3;};
- void() player_gattack8 = [$deathd4 , player_gattack9 ] {self.weaponframe = 4;};
- void() player_gattack9 = [$deathd5 , player_run ] {self.weaponframe = 5;};
-
- void() ShalFire;
-
- void() player_sattack = [ 1, player_sattack2 ] {sound (self, CHAN_VOICE, "shalrath/attack.wav", 1, ATTN_NORM); self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_sattack2 = [ 2, player_sattack3 ] {};
- void() player_sattack3 = [ 3, player_sattack4 ] {};
- void() player_sattack4 = [ 4, player_sattack5 ] {};
- void() player_sattack5 = [ 5, player_sattack6 ] {};
- void() player_sattack6 = [ 6, player_sattack7 ] {};
- void() player_sattack7 = [ 7, player_sattack8 ] {};
- void() player_sattack8 = [ 8, player_sattack9 ] {};
- void() player_sattack9 = [ 9, player_sattack10 ] {ShalFire();};
- void() player_sattack10 = [10, player_sattack11 ] {};
- void() player_sattack11 = [11, player_run ] {};
-
-
- void (float offset) FireHK;
-
- void() player_hkattack = [85, player_hkattack7 ] {};
- void() player_hkattack7 = [86, player_hkattack8 ] {FireHK(-2);self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_hkattack8 = [87, player_hkattack9 ] {FireHK(-1);self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_hkattack9 = [88, player_hkattack10 ] {FireHK(0);self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_hkattack10 = [89, player_hkattack11 ] {FireHK(1);self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_hkattack11 = [80, player_hkattack12 ] {FireHK(2);self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_hkattack12 = [91, player_hkattack13 ] {FireHK(3);self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_hkattack13 = [92, player_hkattack14 ] {};
- void() player_hkattack14 = [93, player_run ] {};
-
- void() player_eattack = [ 37, player_eattack2 ] {self.weaponframe = 1;FireLaser();self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_eattack2= [ 38, player_eattack3 ] {self.weaponframe = 0;};
- void() player_eattack3= [ 39, player_eattack4 ] {self.weaponframe = 0;};
- void() player_eattack4= [ 40, player_run ] {self.weaponframe = 0;};
-
- void() player_wattack = [ 30, player_wattack2] {sound (self, CHAN_WEAPON, "wizard/wattack.wav", 1, ATTN_NORM); FireMagic('0 3 16');self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_wattack2 = [ 31, player_wattack3] {};
- void() player_wattack3 = [ 31, player_wattack4] {};
- void() player_wattack4 = [ 31, player_wattack5] {};
- void() player_wattack5 = [ 31, player_wattack6] {FireMagic('0 -3 16');};
- void() player_wattack6 = [ 31, player_wattack7] {};
- void() player_wattack7 = [ 31, player_wattack8] {};
- void() player_wattack8 = [ 31, player_wattack9] {};
- void() player_wattack9 = [ 31, player_wattack10] {};
- void() player_wattack10 = [ 31, player_wattack11] {};
- void() player_wattack11 = [ 31, player_wattack12] {};
- void() player_wattack12 = [ 31, player_wattack13] {};
- void() player_wattack13 = [ 31, player_run ] {};
-
- void() OgreFire;
-
- void() player_ogren = [$deathb1, player_ogren2 ] {self.weaponframe = 1; OgreFire(); self.effects = self.effects | EF_MUZZLEFLASH;};
- void() player_ogren2 = [$deathb2, player_ogren3 ] {self.weaponframe = 2;};
- void() player_ogren3 = [$deathb3, player_ogren4 ] {self.weaponframe = 3;};
- void() player_ogren4 = [$deathb4, player_ogren5 ] {self.weaponframe = 4;};
- void() player_ogren5 = [$deathb5, player_ogren6 ] {self.weaponframe = 5;};
- void() player_ogren6= [$deathb6, player_run ] {self.weaponframe = 6;};
-
-
- // WEAPONS
-
- /*
- ================
- GruntFire
- ================
- */
- void() GruntFire =
- {
- local vector dir;
-
- sound (self, CHAN_WEAPON, "weapons/guncock.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -2;
-
- dir = aim (self, 100000);
- FireBullets (6, dir, '0.04 0.04 0');
- };
-
-
-
- void(float offset) FireHK =
- {
- local vector offang, dir;
- local vector org, vec;
-
- dir = aim (self, 1000);
- offang = vectoangles (dir);
- offang_y = offang_y + offset * 6;
-
- makevectors (offang);
-
- org = self.origin + '0 0 16';
-
- // set missile speed
- vec = normalize (v_forward);
- vec_z = 0 - vec_z + (random() - 0.5)*0.1;
-
- launch_spike (org, vec);
- newmis.classname = "knightspike";
- newmis.owner = self;
- setmodel (newmis, "progs/k_spike.mdl");
- setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);
- newmis.velocity = vec*1000;
- sound (self, CHAN_WEAPON, "hknight/attack1.wav", 1, ATTN_NORM);
- };
-
-
- void() OgreGrenExplode =
- {
- T_RadiusDamage (self, self.owner, 40, world);
- sound (self, CHAN_VOICE, "weapons/r_exp3.wav", 1, ATTN_NORM);
-
- WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
- WriteByte (MSG_BROADCAST, TE_EXPLOSION);
- WriteCoord (MSG_BROADCAST, self.origin_x);
- WriteCoord (MSG_BROADCAST, self.origin_y);
- WriteCoord (MSG_BROADCAST, self.origin_z);
-
- self.velocity = '0 0 0';
- self.touch = SUB_Null;
- setmodel (self, "progs/s_explod.spr");
- self.solid = SOLID_NOT;
- s_explode1 ();
- };
-
- void() OgreGrenTouch =
- {
- if (other == self.owner)
- return; // don't explode on owner
- if (other.takedamage == DAMAGE_AIM)
- {
- OgreGrenExplode();
- return;
- }
- sound (self, CHAN_VOICE, "weapons/bounce.wav", 1, ATTN_NORM); // bounce sound
- if (self.velocity == '0 0 0')
- self.avelocity = '0 0 0';
- };
-
- void() OgreFire =
- {
- local entity missile, mpuff;
-
- sound (self, CHAN_WEAPON, "weapons/grenade.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -4;
-
- missile = spawn ();
- missile.owner = self;
- missile.movetype = MOVETYPE_BOUNCE;
- missile.solid = SOLID_BBOX;
- missile.classname = "grenade";
- missile.wait = time + 10 + 10*random();
-
- // set missile speed
-
- makevectors (self.v_angle);
-
- if (self.v_angle_x)
- missile.velocity = v_forward*600 + v_up * 200 + crandom()*v_right*10 + crandom()*v_up*10;
- else
- {
- missile.velocity = aim(self, 10000);
- missile.velocity = missile.velocity * 600;
- missile.velocity_z = 200;
- }
-
- missile.avelocity = '300 300 300';
-
- missile.angles = vectoangles(missile.velocity);
-
- missile.touch = OgreGrenTouch;
-
- missile.nextthink = time + 1.5;
- missile.think = OgreGrenExplode;
-
- setmodel (missile, "progs/grenade.mdl");
- setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, self.origin);
- };
-
- /*
- ================
- HomeFindTarget by Vhold
- returns the closest entity to itself that is killable, not a team member on
- self's team, ect ect....
- ================
- */
- entity() HomeFindTarget =
- {
- local entity head, selected;
- local float dist;
- dist = 100000;
- selected = world;
- head = findradius(self.origin, 100000);
- while(head)
- {
- if( (head.health > 1) && (head != self) && (head != self.owner) && !( (teamplay == 1) && (head.team > 0)&&(head.team == self.owner.team) ) && (head.classname != "door") && (head.classname != "misc_explobox") && !(head.items & IT_INVISIBILITY) )
- {
-
- traceline(self.origin,head.origin,TRUE,self);
- if ( (trace_fraction >= 1) && (vlen(head.origin - self.origin) < dist) )
- {
- selected = head;
- dist = vlen(head.origin - self.origin);
- }
- }
- head = head.chain;
- }
-
- return selected;
- };
- /*
- ===============
- HomeThink by Vhold
- The Think function for the Homing Missile
- ===============
- */
- void() HomeThink =
- {
- local vector needdir, currdir;
- local float needspeed, maxspeed, acceleration;
- local vector temp;
-
- traceline(self.origin,self.enemy.origin,TRUE,self);
-
- if ( (trace_fraction < 1) || !(self.enemy) || (self.enemy == world) || (self.enemy.health < 1) )
- self.enemy = HomeFindTarget();
-
- if (self.enemy != world) // Arr.. don't be taken on da World!
- {
- temp = normalize(self.velocity) * 100;
- traceline(self.origin,self.origin+temp,TRUE,self);
- if(trace_fraction < 1)
- {
- maxspeed = 200;
- acceleration = 300;
- }
- else
- {
- maxspeed = 350;
- acceleration = 150;
- }
- needdir = normalize((self.enemy.origin + '0 0 10') - self.origin);
- currdir = normalize(self.velocity);
- self.angles = vectoangles(needdir);
-
- needspeed = vlen(needdir - currdir) * acceleration;
-
- self.movedir = needdir * needspeed;
- self.velocity = self.velocity + self.movedir;
-
- if ( vlen(self.velocity) > maxspeed )
- self.velocity = normalize(self.velocity) * maxspeed;
- self.nextthink = time + 0.1;
-
- }
- else
- self.nextthink = time + 0.5;
-
- self.think=HomeThink;
- };
-
- /*
- ==============
- ShalFire
- Fires a Shalrath missile using Vhold's homing code
- ==============
- */
- void() ShalTouch;
-
- void() ShalFire =
- {
- local entity missile, mpuff;
-
- sound (self, CHAN_WEAPON, "shalrath/attack2.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -4;
-
- missile = spawn ();
- missile.owner = self;
- missile.movetype = MOVETYPE_FLYMISSILE;
- missile.solid = SOLID_BBOX;
- missile.classname = "arocket";
-
- // set missile speed
-
- makevectors (self.v_angle);
- missile.velocity = aim(self, 1000);
- missile.velocity = missile.velocity * 350;
- missile.avelocity= '300 300 300';
- missile.angles = vectoangles(missile.velocity);
-
- missile.touch = ShalTouch;
-
- // set missile duration
- missile.nextthink = time + 0.5;
- missile.think = HomeThink;
- missile.enemy = world;
-
- setmodel (missile, "progs/v_spike.mdl");
- setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, self.origin + v_forward*8 + '0 0 16');
-
- };
-
- void() ShalTouch =
- {
- if (other == self.owner)
- return; // don't explode on owner
-
- T_RadiusDamage (self, self.owner, 40, world);
- sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
-
- WriteByte (MSG_BROADCAST, SVC_TEMPENTITY);
- WriteByte (MSG_BROADCAST, TE_EXPLOSION);
- WriteCoord (MSG_BROADCAST, self.origin_x);
- WriteCoord (MSG_BROADCAST, self.origin_y);
- WriteCoord (MSG_BROADCAST, self.origin_z);
-
- self.velocity = '0 0 0';
- self.touch = SUB_Null;
- setmodel (self, "progs/s_explod.spr");
- self.solid = SOLID_NOT;
- s_explode1 ();
- };
-
- /*
- **************
- MELEE ATTACKS
- **************
- */
-
- // FRAMES
-
- void(float side) HKSword;
-
- void() player_hksword = [ 113, player_hksword2 ] {self.weaponframe = 1;};
- void() player_hksword2 = [ 114, player_hksword3 ] {self.weaponframe = 2;sound (self, CHAN_WEAPON, "knight/sword2.wav", 1, ATTN_NORM);};
- void() player_hksword3 = [ 115, player_hksword4 ] {self.weaponframe = 3;HKSword();};
- void() player_hksword4 = [ 116, player_hksword5 ] {self.weaponframe = 4;};
- void() player_hksword5 = [ 117, player_hksword6 ] {self.weaponframe = 5;HKSword();};
- void() player_hksword6 = [ 118, player_hksword7 ] {self.weaponframe = 6;HKSword();};
- void() player_hksword7 = [ 119, player_hksword8 ] {self.weaponframe = 7;HKSword();};
- void() player_hksword8 = [ 120, player_hksword9 ] {self.weaponframe = 8;HKSword();};
- void() player_hksword9 = [ 121, player_hksword10 ] {self.weaponframe = 0;};
- void() player_hksword10 = [ 122, player_run ] {};
-
-
- void(float side) Player_Demon_Melee;
-
- void() player_dattack = [$deatha5, player_dattack2 ] {self.view_ofs = '0 0 8';};
- void() player_dattack2 = [$deatha6, player_dattack3 ] {self.view_ofs = '0 0 16';};
- void() player_dattack3 = [$deatha7, player_dattack4 ] {self.view_ofs = '0 0 25';};
- void() player_dattack4 = [$deatha8, player_dattack5 ] {self.view_ofs = '0 0 23';};
- void() player_dattack5 = [$deatha9, player_dattack6 ] {self.view_ofs = '0 0 21'; Player_Demon_Melee(200);};
- void() player_dattack6 = [$deatha10, player_dattack7 ] {self.view_ofs = '0 0 23';};
- void() player_dattack7 = [$deatha11, player_dattack8 ] {self.view_ofs = '0 0 24';};
- void() player_dattack8 = [$deathb1, player_dattack9 ] {self.view_ofs = '0 0 25';};
- void() player_dattack9 = [$deathb2, player_dattack10 ] {self.view_ofs = '0 0 24';};
- void() player_dattack10 = [$deathb3, player_dattack11 ] {self.view_ofs = '0 0 23';};
- void() player_dattack11 = [$deathb4, player_dattack12 ] {self.view_ofs = '0 0 21'; Player_Demon_Melee(-200);};
- void() player_dattack12 = [$deathb5, player_dattack13 ] {self.view_ofs = '0 0 16';};
- void() player_dattack13 = [$deathb6, player_dattack14 ] {self.view_ofs = '0 0 12';};
- void() player_dattack14 = [$deathb7, player_dattack15 ] {self.view_ofs = '0 0 8';};
- void() player_dattack15 = [$deathb8, player_stand1 ] {self.view_ofs = '0 0 4';};
-
- void(float side) Player_Knight_Melee;
-
- void() player_kattack = [18 , player_kattack2 ] {self.weaponframe = 4; sound (self, CHAN_WEAPON, "knight/sword1.wav", 1, ATTN_NORM);};
- void() player_kattack2 = [19 , player_kattack3 ]{self.weaponframe = 5; Player_Knight_Melee(100);};
- void() player_kattack3 = [20 , player_kattack4 ]{self.weaponframe = 6;};
- void() player_kattack4 = [21 , player_kattack5 ]{self.weaponframe = 7;};
- void() player_kattack5 = [22 , player_kattack6 ]{self.weaponframe = 8; Player_Knight_Melee(1);};
- void() player_kattack6 = [23 , player_kattack7 ]{self.weaponframe = 1;};
- void() player_kattack7 = [24 , player_kattack8 ]{self.weaponframe = 2;};
- void() player_kattack8 = [25 , player_kattack9 ]{self.weaponframe = 3;Player_Knight_Melee(-100);};
- void() player_kattack9 = [26 , player_kattack10 ]{self.weaponframe = 4;};
- void() player_kattack10 = [27 , player_kattack11 ]{self.weaponframe = 4;};
- void() player_kattack11 = [28 , player_run ] {self.weaponframe = 0;};
-
- void (float side) player_chainsaw;
-
- void() player_oattack = [$axpain5, player_oattack2 ] {sound (self, CHAN_WEAPON, "ogre/ogsawatk.wav", 1, ATTN_NORM);};
- void() player_oattack2 = [$axpain6, player_oattack3 ] {};
- void() player_oattack3 = [ $pain1, player_oattack4 ] {};
- void() player_oattack4 = [ $pain2, player_oattack5 ] {};
- void() player_oattack5 = [ $pain3, player_oattack6 ] {player_chainsaw(0);};
- void() player_oattack6 = [ $pain4, player_oattack7 ] {player_chainsaw(300);};
- void() player_oattack7 = [ $pain5, player_oattack8 ] {player_chainsaw(0);};
- void() player_oattack8 = [ $pain6, player_oattack9 ] {player_chainsaw(0);};
- void() player_oattack9 = [ $axdeth1, player_oattack10 ] {player_chainsaw(0);};
- void() player_oattack10 = [ $axdeth2, player_oattack11 ] {player_chainsaw(-200);};
- void() player_oattack11 = [ $axdeth3, player_oattack12 ] {player_chainsaw(0);};
- void() player_oattack12 = [ $axdeth4, player_oattack13 ] {};
- void() player_oattack13 = [ $axdeth5, player_oattack14 ] {};
- void() player_oattack14 = [ $axdeth6, player_run ] {};
-
-
- // WEAPONS
-
- void(float side) Player_Demon_Melee =
- {
- local vector source;
- local vector org;
- local float ldmg;
-
- sound (self, CHAN_WEAPON, "weapons/ax1.wav", 1, ATTN_NORM);
-
- source = self.origin + '0 0 4';
- makevectors (self.angles);
- traceline (source, source + v_forward*128, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 + v_right*30, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 - v_right*30, FALSE, self);
-
- if (trace_fraction == 1.0)
- return;
-
- org = trace_endpos - v_forward*4;
- if (trace_ent.takedamage)
- {
- sound (self, CHAN_WEAPON, "demon/dhit2.wav", 1, ATTN_NORM);
- ldmg = 10 + 5*random();
- T_Damage (trace_ent, self, self, ldmg);
-
- SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
- }
- };
-
- void(float side) Player_Knight_Melee =
- {
- local vector source;
- local vector org;
- local float ldmg;
-
- source = self.origin + '0 0 16';
- makevectors (self.angles);
- traceline (source, source + v_forward*128, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 + v_right*30, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 - v_right*30, FALSE, self);
-
- if (trace_fraction == 1.0)
- return;
-
- org = trace_endpos - v_forward*4;
- if (trace_ent.takedamage)
- {
- ldmg = 6 + 3*random();
- T_Damage (trace_ent, self, self, ldmg);
-
- SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
- }
- };
-
-
- void(float side) HKSword =
- {
- local vector source;
- local vector org;
- local float ldmg;
-
- source = self.origin + '0 0 16';
- makevectors (self.angles);
- traceline (source, source + v_forward*128, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 + v_right*30, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 - v_right*30, FALSE, self);
-
- if (trace_fraction == 1.0)
- return;
-
- org = trace_endpos - v_forward*4;
- if (trace_ent.takedamage)
- {
- ldmg = 6 + 3*random();
- T_Damage (trace_ent, self, self, ldmg);
-
- SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
- }
- };
-
-
-
- void(float side) player_chainsaw =
- {
- local vector source;
- local vector org;
- local float ldmg;
-
- source = self.origin + '0 0 16';
- makevectors (self.angles);
- traceline (source, source + v_forward*128, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 + v_right*30, FALSE, self);
- if (!trace_ent.takedamage)
- traceline (source, source + v_forward*128 - v_right*30, FALSE, self);
-
- if (trace_fraction == 1.0)
- return;
-
- org = trace_endpos - v_forward*4;
- if (trace_ent.takedamage)
- {
- ldmg = (random() + random() + random()) * 4;
- T_Damage (trace_ent, self, self, ldmg);
-
- SpawnMeatSpray (self.origin + v_forward*16, side * v_right);
- }
- };
-
-
-
- void() Player_Demon_JumpTouch =
- {
- local float ldmg;
-
- if(other.takedamage)
- {
- ldmg = 40 + 10*random();
- T_Damage(other, self, self, ldmg);
- SpawnMeatSpray (self.origin + v_forward*20, 100* v_forward);
- SpawnMeatSpray (self.origin + v_forward*20, 50* v_forward);
- }
-
- self.touch = SUB_Null;
- };
-
-
- /*
- ***********
- PAIN
- ***********
- */
-
- void(float num_bubbles) DeathBubbles;
-
- void() PainSound =
- {
- local float rs;
-
- if (self.health < 0)
- return;
-
- if (damage_attacker.classname == "teledeath")
- {
- sound (self, CHAN_VOICE, "player/teledth1.wav", 1, ATTN_NONE);
- return;
- }
-
- // water pain sounds
- if (self.watertype == CONTENT_WATER && self.waterlevel == 3)
- {
- DeathBubbles(1);
- if (random() > 0.5)
- sound (self, CHAN_VOICE, "player/drown1.wav", 1, ATTN_NORM);
- else
- sound (self, CHAN_VOICE, "player/drown2.wav", 1, ATTN_NORM);
- return;
- }
-
- // slime pain sounds
- if (self.watertype == CONTENT_SLIME)
- {
- // FIX ME put in some steam here
- if (random() > 0.5)
- sound (self, CHAN_VOICE, "player/lburn1.wav", 1, ATTN_NORM);
- else
- sound (self, CHAN_VOICE, "player/lburn2.wav", 1, ATTN_NORM);
- return;
- }
-
- if (self.watertype == CONTENT_LAVA)
- {
- if (random() > 0.5)
- sound (self, CHAN_VOICE, "player/lburn1.wav", 1, ATTN_NORM);
- else
- sound (self, CHAN_VOICE, "player/lburn2.wav", 1, ATTN_NORM);
- return;
- }
-
- if (self.pain_finished > time)
- {
- self.axhitme = 0;
- return;
- }
- self.pain_finished = time + 0.5;
-
- // don't make multiple pain sounds right after each other
-
- // ax pain sound
- self.noise = "";
- if (self.effects & EF_DEMON)
- self.noise = "demon/dpain1.wav";
- else if (self.effects & EF_GRUNT)
- self.noise = "soldier/pain1.wav";
- else if (self.effects & EF_KNIGHT)
- self.noise = "knight/khurt.wav";
- else if (self.effects & EF_HKNIGHT)
- self.noise = "hknight/pain1.wav";
- else if (self.effects & EF_OGRE)
- self.noise = "ogre/ogpain1.wav";
- else if (self.effects & EF_WIZARD)
- self.noise = "wizard/wpain.wav";
- else if (self.effects & EF_ENFORCER)
- self.noise = "enforcer/pain1.wav";
- else if (self.effects & EF_SHALRATH)
- self.noise = "shalrath/pain.wav";
- sound (self, CHAN_VOICE, self.noise, 1, ATTN_NORM);
- return;
- };
-
- void() player_dpain = [ $pain5, player_dpain1 ]
- {
- self.walkframe = 1;
- PainSound();
- self.weaponframe = 0;
- self.frame = $pain5;
- };
-
- void() player_dpain1 = [ $pain5, player_dpain1 ]
- {
- if (self.walkframe >=10)
- player_stand1();
- if (self.walkframe < 6)
- self.frame = $pain5 + self.walkframe;
- else self.frame = $pain5 + (10 - self.walkframe);
- self.walkframe = self.walkframe + 1;
- };
-
-
- void() player_gpain = [$pain6 , player_gpain2 ] {PainSound();self.weaponframe=0;};
- void() player_gpain2 = [$axdeth1 , player_gpain3 ] {};
- void() player_gpain3 = [$axdeth2 , player_gpain4 ] {};
- void() player_gpain4 = [$axdeth3 , player_gpain5 ] {};
- void() player_gpain5 = [$axdeth4 , player_gpain6 ] {};
- void() player_gpain6 = [$axdeth5 , player_run ] {};
-
- void() player_kpain = [$axpain6 , player_kpain2 ] {PainSound();self.weaponframe= 0;};
- void() player_kpain2 = [$pain1 , player_kpain3 ] {};
- void() player_kpain3 = [$pain2 , player_run ] {};
-
- void() player_epain = [71, player_epain2 ] {PainSound();self.weaponframe = 0;};
- void() player_epain2 = [ 72, player_epain3 ] {};
- void() player_epain3 = [ 73, player_epain4 ] {};
- void() player_epain4 = [ 74, player_epain5 ] {};
- void() player_epain5 = [ 75, player_run ] {};
-
- void() player_spain = [ 12, player_spain2] {PainSound();self.weaponframe = 0;};
- void() player_spain2 = [ 13, player_spain3 ] {};
- void() player_spain3 = [ 14, player_spain4 ] {};
- void() player_spain4 = [ 15, player_spain5 ] {};
- void() player_spain5 = [ 16, player_run ] {};
-
- void() player_opain = [ $deathb7, player_opain2 ] {PainSound();self.weaponframe = 0;};
- void() player_opain2 = [ $deathb8, player_opain3 ] {};
- void() player_opain3 = [ $deathb9, player_opain4 ] {};
- void() player_opain4 = [ $deathc1, player_opain5] {};
- void() player_opain5 = [ $deathc2, player_run ] {};
-
- void() player_wpain = [ 43, player_wpain2 ] {PainSound();};
- void() player_wpain2 = [ 44, player_wpain3 ] {};
- void() player_wpain3 = [ 45, player_wpain4 ] {};
- void() player_wpain4 = [ 46, player_run ] {};
-
- void() player_hkpain = [ 38, player_hkpain2 ] {PainSound();};
- void() player_hkpain2 = [ 39, player_hkpain3 ] {};
- void() player_hkpain3 = [ 40, player_hkpain4 ] {};
- void() player_hkpain4 = [ 41, player_hkpain5 ] {};
- void() player_hkpain5 = [ 42, player_run ] {};
-
- void() player_pain =
- {
- if (self.weaponframe)
- return;
-
- if (self.invisible_finished > time)
- return; // eyes don't have pain frames
-
- if (self.effects & EF_DEMON)
- player_dpain ();
-
- else if (self.effects & EF_GRUNT)
- player_gpain ();
-
- else if (self.effects & EF_ENFORCER)
- player_epain ();
-
- else if (self.effects & EF_KNIGHT)
- player_kpain ();
-
- else if (self.effects & EF_KNIGHT)
- player_hkpain ();
-
- else if (self.effects & EF_OGRE)
- player_opain();
-
- else if (self.effects & EF_OGRE)
- player_opain();
-
- else if (self.effects & EF_WIZARD)
- player_wpain();
-
- else if (self.effects & EF_SHALRATH)
- player_spain();
-
- };
-
- void() DeathBubblesSpawn =
- {
- local entity bubble;
- if (self.owner.waterlevel != 3)
- 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 = 0;
- bubble.cnt = 0;
- 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 = 0;
- bubble_spawner.owner = self;
- bubble_spawner.bubble_count = num_bubbles;
- return;
- };
-
-
- void() PlayerDead =
- {
- self.nextthink = -1;
- // allow respawn after a certain time
- 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() GibPlayer =
- {
- ThrowHead ("progs/h_player.mdl", self.health);
- ThrowGib ("progs/gib1.mdl", self.health);
- ThrowGib ("progs/gib2.mdl", self.health);
- ThrowGib ("progs/gib3.mdl", self.health);
-
- self.deadflag = DEAD_DEAD;
-
- if (damage_attacker.classname == "teledeath")
- {
- sound (self, CHAN_VOICE, "player/teledth1.wav", 1, ATTN_NONE);
- return;
- }
-
- if (damage_attacker.classname == "teledeath2")
- {
- sound (self, CHAN_VOICE, "player/teledth1.wav", 1, ATTN_NONE);
- return;
- }
-
- if (random() < 0.5)
- sound (self, CHAN_VOICE, "player/gib.wav", 1, ATTN_NONE);
- else
- sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NONE);
- };
-
- void() player_ddie = [ $axdeth5, player_ddie1 ]
- {
- sound (self, CHAN_VOICE, "demon/ddeath.wav", 1, ATTN_NONE);
- self.walkframe = 1;
- self.frame = $axdeth5;
- };
-
- /*
- ***********
- DEATH
- ***********
- */
-
- void() player_ddie2 = [ $deatha4, player_ddie2 ] {PlayerDead();};
-
- void() player_ddie1 = [ $axdeth5, player_ddie1 ]
- {
- if (self.walkframe >= 8) {
- player_ddie2();
- }
- else {
- self.frame = $axdeth5 + self.walkframe;
- self.walkframe = self.walkframe + 1;
- }
- };
-
- void() player_gdie = [ $rockrun3, player_gdie2 ] {sound(self, CHAN_VOICE, "soldier/death1.wav", 1, ATTN_NONE);};
- void() player_gdie2 = [ $rockrun4, player_gdie3 ] {};
- void() player_gdie3 = [ $rockrun5, player_gdie4 ] {};
- void() player_gdie4 = [ $rockrun6, player_gdie5 ] {};
- void() player_gdie5 = [ $stand1, player_gdie6 ] {};
- void() player_gdie6 = [ $stand2, player_gdie7 ] {};
- void() player_gdie7 = [ $stand3, player_gdie8 ] {};
- void() player_gdie8 = [ $stand4, player_gdie9 ] {};
- void() player_gdie9 = [ $stand5, player_gdie10 ] {};
- void() player_gdie10 = [ $axstnd1, player_gdie10 ] {PlayerDead();};
-
- void() player_kdie = [$deathd3, player_kdie2 ] {sound (self, CHAN_VOICE, "knight/kdeath.wav", 1, ATTN_NONE);};
- void() player_kdie2 = [ $deathd4, player_kdie3 ] {};
- void() player_kdie3 = [ $deathd5, player_kdie4 ] {};
- void() player_kdie4 = [ $deathd6, player_kdie5 ] {};
- void() player_kdie5 = [ $deathd7, player_kdie6 ] {};
- void() player_kdie6 = [ $deathd8, player_kdie7 ] {};
- void() player_kdie7 = [ $deathd9, player_kdie8 ] {};
- void() player_kdie8 = [ $deathe1, player_kdie9 ] {};
- void() player_kdie9 = [ $deathe2, player_kdie10 ] {};
- void() player_kdie10 = [ $deathe3, player_kdie10 ] {PlayerDead();};
-
- void() player_hkdie = [ 43, player_hkdie2 ] {sound (self, CHAN_VOICE, "hknight/death1.wav", 1, ATTN_NONE);};
- void() player_hkdie2 = [ 44, player_hkdie3 ] {};
- void() player_hkdie3 = [ 45, player_hkdie4 ] {};
- void() player_hkdie4 = [ 46, player_hkdie5 ] {};
- void() player_hkdie5 = [ 47, player_hkdie6 ] {};
- void() player_hkdie6 = [ 48, player_hkdie7 ] {};
- void() player_hkdie7 = [ 49, player_hkdie8 ] {};
- void() player_hkdie8 = [ 50, player_hkdie9 ] {};
- void() player_hkdie9 = [ 51, player_hkdie10 ] {};
- void() player_hkdie10 = [ 52, player_hkdie11 ] {};
- void() player_hkdie11 = [ 53, player_hkdie11 ] {PlayerDead();};
-
-
- void() player_edie = [56, player_edie2 ] {sound (self, CHAN_VOICE, "enforcer/death1.wav", 1, ATTN_NONE);};
- void() player_edie2= [57, player_edie3 ] {};
- void() player_edie3= [58, player_edie4 ] {};
- void() player_edie4= [59, player_edie5 ] {};
- void() player_edie5= [60, player_edie6 ] {};
- void() player_edie6= [61, player_edie7 ] {};
- void() player_edie7= [62, player_edie8 ] {};
- void() player_edie8= [63, player_edie9 ] {};
- void() player_edie9= [64, player_edie10 ] {};
- void() player_edie10= [65, player_edie10 ] {PlayerDead();};
-
- void() player_sdie= [17, player_sdie2] {sound (self, CHAN_VOICE, "shalrath/death.wav", 1, ATTN_NONE);};
- void() player_sdie2= [18, player_sdie3] {};
- void() player_sdie3= [19, player_sdie4] {};
- void() player_sdie4= [20, player_sdie5] {};
- void() player_sdie5= [21, player_sdie6] {};
- void() player_sdie6= [22, player_sdie6] {PlayerDead();};
-
-
- void() player_odie = [ $rockatt6, player_odie2 ] {sound (self, CHAN_VOICE, "ogre/ogdth.wav", 1, ATTN_NONE);};
- void() player_odie2 = [ $shotatt1, player_odie3 ] {};
- void() player_odie3 = [ $shotatt2, player_odie4 ] {};
- void() player_odie4 = [ $shotatt3, player_odie5 ] {};
- void() player_odie5 = [ $shotatt4, player_odie6 ] {};
- void() player_odie6 = [ $shotatt5, player_odie7 ] {};
- void() player_odie7 = [ $shotatt6, player_odie8 ] {};
- void() player_odie8 = [ $axatt1, player_odie9 ] {};
- void() player_odie9 = [ $axatt2, player_odie10 ] {};
- void() player_odie10 = [ $axatt3, player_odie11 ] {};
- void() player_odie11 = [ $axatt4, player_odie12 ] {};
- void() player_odie12 = [ $axatt5, player_odie13 ] {};
- void() player_odie13 = [ $axatt6, player_odie14 ] {};
- void() player_odie14 = [ $axattb1, player_odie14 ] {PlayerDead();};
-
- void() player_wdie = [ 47, player_wdie2 ] {sound (self, CHAN_VOICE, "wizard/wdeath.wav", 1, ATTN_NONE);};
- void() player_wdie2 = [ 48, player_wdie3 ] {};
- void() player_wdie3 = [ 49, player_wdie4 ] {};
- void() player_wdie4 = [ 50, player_wdie5 ] {};
- void() player_wdie5 = [ 51, player_wdie6 ] {};
- void() player_wdie6 = [ 52, player_wdie7 ] {};
- void() player_wdie7 = [ 53, player_wdie7 ] {PlayerDead();};
- void() PlayerDie =
- {
- local float i;
-
- self.items = self.items - (self.items & IT_INVISIBILITY);
- self.invisible_finished = 0; // don't die as eyes
- self.invincible_finished = 0;
- self.super_damage_finished = 0;
- self.radsuit_finished = 0;
- if (self.modelindex == modelindex_eyes)
- {
- if(self.effects & EF_DEMON)
- self.modelindex = modelindex_demon;
- else if(self.effects & EF_GRUNT)
- self.modelindex = modelindex_grunt;
- else if(self.effects & EF_KNIGHT)
- self.modelindex = modelindex_knight;
- else if(self.effects & EF_HKNIGHT)
- self.modelindex = modelindex_hknight;
- else if(self.effects & EF_KNIGHT)
- self.modelindex = modelindex_ogre;
- else if(self.effects & EF_WIZARD)
- self.modelindex = modelindex_ogre;
- else if(self.effects & EF_ENFORCER)
- self.modelindex = modelindex_enforcer;
- else if(self.effects & EF_SHALRATH)
- self.modelindex = modelindex_shalrath;
- }
-
- self.weaponmodel="";
- self.view_ofs = '0 0 -8';
- self.deadflag = DEAD_DYING;
- self.solid = SOLID_NOT;
- self.flags = self.flags - (self.flags & FL_ONGROUND);
- self.movetype = MOVETYPE_TOSS;
- if (self.velocity_z < 10)
- self.velocity_z = self.velocity_z + random()*300;
-
- if (self.health < -20)
- {
- GibPlayer ();
- return;
- }
-
- self.angles_x = 0;
- self.angles_z = 0;
-
- if (self.effects & EF_DEMON)
- {
- player_ddie ();
- return;
- }
- else if (self.effects & EF_GRUNT)
- {
- player_gdie();
- return;
- }
- else if (self.effects & EF_ENFORCER)
- {
- player_edie();
- return;
- }
- else if (self.effects & EF_KNIGHT)
- {
- player_kdie();
- return;
- }
- else if (self.effects & EF_HKNIGHT)
- {
- player_hkdie();
- return;
- }
- else if (self.effects & EF_OGRE)
- {
- player_odie();
- return;
- }
- else if (self.effects & EF_WIZARD)
- {
- player_wdie();
- return;
- }
- else if (self.effects & EF_SHALRATH)
- {
- player_sdie();
- return;
- }
- };
-
- void() set_suicide_frame =
- { // used by klill command and diconnect command
- if (self.model != "progs/player.mdl")
- return; // allready gibbed
- self.frame = $deatha11;
- self.solid = SOLID_NOT;
- self.movetype = MOVETYPE_TOSS;
- self.deadflag = DEAD_DEAD;
- self.nextthink = -1;
- };
-