home *** CD-ROM | disk | FTP | other *** search
- /*
- ==============================================================================
-
- BEGINING CRAP
-
- ==============================================================================
- */
-
- void() W_ChangeWeapon;
- void() W_SetCurrentAmmo;
-
- void() HomeThink;
- entity() HomeFindTarget;
- float(entity targ) visible;
- float(entity targ) infront;
-
- void() s_spreadexplode1 = [0, s_spreadexplode2] {};
- void() s_spreadexplode2 = [1, s_spreadexplode3] {};
- void() s_spreadexplode3 = [2, s_spreadexplode4] {};
- void() s_spreadexplode4 = [3, s_spreadexplode5] {};
- void() s_spreadexplode5 = [4, s_spreadexplode6] {};
- void() s_spreadexplode6 = [5, SUB_Remove] {};
-
- /*
- ==============================================================================
-
- DOG ROCKET
-
- ==============================================================================
- */
-
- vector(float dm) DogVelocityForDamage =
- {
- local vector v;
-
- v_x = 100 * random();
- v_y = 100 * random();
- 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) DogGib =
- {
- local entity new;
-
- new = spawn();
- new.origin = self.origin;
- setmodel (new, gibname);
- setsize (new, '0 0 0', '0 0 0');
- new.velocity = DogVelocityForDamage (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() DogBecomeExplosion =
- {
- sound (self, CHAN_WEAPON, "dog/dattack1.wav", 1, ATTN_NORM);
- self.movetype = MOVETYPE_NONE;
- self.velocity = '0 0 0';
- self.touch = SUB_Null;
- setmodel (self, "progs/s_explod.spr");
- self.solid = SOLID_NOT;
- s_spreadexplode1();
- DogGib ("progs/gib1.mdl",100);
- DogGib ("progs/gib2.mdl",100);
- DogGib ("progs/gib3.mdl",100);
- };
-
- void() T_DogTouch =
- {
- local float damg;
-
- if (other == self.owner)
- return; // don't explode on owner
-
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- remove(self);
- return;
- }
-
- // damg = 100 + random()*20; Previous value
- damg = 10;
-
- if (other.health)
- {
- T_Damage (other, self, self.owner, damg );
- }
-
- // don't do radius damage to the other, because all the damage
- // was done in the impact
- // T_RadiusDamage (self, self.owner, 120, other);
-
- // sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
- self.origin = self.origin - 8*normalize(self.velocity);
-
- 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);
-
- DogBecomeExplosion();
- };
-
-
-
-
- void() W_FireDog =
- {
- local entity missile, mpuff;
-
- // self.currentammo = self.ammo_rockets = self.ammo_rockets - 1;
-
- sound (self, CHAN_WEAPON, "weapons/sgun1.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -2;
-
- missile = spawn ();
- missile.owner = self;
- missile.movetype = MOVETYPE_FLYMISSILE;
- missile.solid = SOLID_BBOX;
-
- // set missile speed
-
- makevectors (self.v_angle);
- missile.velocity = aim(self, 1000);
- missile.velocity = missile.velocity * 1000;
- missile.angles = vectoangles(missile.velocity);
-
- missile.touch = T_DogTouch;
-
- // set missile duration
- // missile.nextthink = time + 30;
- // missile.think = SUB_Remove;
- missile.nextthink = time + 0.2; //HOMING CODE!!!!
- missile.think = HomeThink;
- missile.enemy = world;
- setmodel (missile, "progs/dog.mdl");
- setsize (missile, '0 0 0', '0 0 0');
- setorigin (missile, self.origin + v_forward*8 + '0 0 16');
- };
-
-
- /*
- ==============================================================================
-
- CONTRA SPREAD GUN
-
- ==============================================================================
- */
-
- void() SpreadBecomeExplosion =
- {
- self.movetype = MOVETYPE_NONE;
- self.velocity = '0 0 0';
- self.touch = SUB_Null;
- setmodel (self, "progs/s_explod.spr");
- self.solid = SOLID_NOT;
- s_spreadexplode1();
- };
-
- void() T_SpreadTouch =
- {
- local float damg;
-
- if (other == self.owner)
- return; // don't explode on owner
-
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- remove(self);
- return;
- }
-
- // damg = 100 + random()*20; Previous value
- damg = 40 + random()*20; //Previous value
-
- if (other.health)
- {
- T_Damage (other, self, self.owner, damg );
- }
-
- // don't do radius damage to the other, because all the damage
- // was done in the impact
- // T_RadiusDamage (self, self.owner, 120, other);
-
- // sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
- self.origin = self.origin - 8*normalize(self.velocity);
-
- 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);
-
- SpreadBecomeExplosion ();
- };
-
- void() W_FireSpread =
- {
- local entity missile1, mpuff;
- local entity missile2, mpuff;
- local entity missile3, mpuff;
- local entity missile4, mpuff;
- local entity missile5, mpuff;
-
- if (self.ammo_cells < 1)
- {
- sprint(self, "Cells Needed to Fire Spread Gun\n");
- self.weapon = W_BestWeapon ();
- W_SetCurrentAmmo ();
- return;
- }
-
- self.currentammo = self.ammo_cells = self.ammo_cells - 5;
- if(self.ammo_cells < 0) {self.ammo_cells=0;}
-
- sound (self, CHAN_WEAPON, "weapons/spredgun.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -2;
-
- missile1 = spawn ();
- missile1.owner = self;
- missile1.movetype = MOVETYPE_FLYMISSILE;
- missile1.solid = SOLID_BBOX;
-
- missile2 = spawn ();
- missile2.owner = self;
- missile2.movetype = MOVETYPE_FLYMISSILE;
- missile2.solid = SOLID_BBOX;
-
- missile3 = spawn ();
- missile3.owner = self;
- missile3.movetype = MOVETYPE_FLYMISSILE;
- missile3.solid = SOLID_BBOX;
-
- missile4 = spawn ();
- missile4.owner = self;
- missile4.movetype = MOVETYPE_FLYMISSILE;
- missile4.solid = SOLID_BBOX;
-
- missile5 = spawn ();
- missile5.owner = self;
- missile5.movetype = MOVETYPE_FLYMISSILE;
- missile5.solid = SOLID_BBOX;
-
-
-
- // set missile speed
-
- makevectors (self.v_angle);
- missile1.velocity = aim(self, 1000);
- missile1.velocity = missile1.velocity * 1000;
- missile1.angles = vectoangles(missile1.velocity);
- missile1.touch = T_SpreadTouch;
-
- makevectors (self.v_angle + '0 11 0');
- missile2.velocity = aim(self, 1000);
- missile2.velocity = missile2.velocity * 1000;
- missile2.angles = vectoangles(missile2.velocity);
- missile2.touch = T_SpreadTouch;
-
- makevectors (self.v_angle + '0 -11 0');
- missile3.velocity = aim(self, 1000);
- missile3.velocity = missile3.velocity * 1000;
- missile3.angles = vectoangles(missile3.velocity);
- missile3.touch = T_SpreadTouch;
-
- makevectors (self.v_angle + '0 22 0');
- missile4.velocity = aim(self, 1000);
- missile4.velocity = missile4.velocity * 1000;
- missile4.angles = vectoangles(missile4.velocity);
- missile4.touch = T_SpreadTouch;
-
- makevectors (self.v_angle + '0 -22 0');
- missile5.velocity = aim(self, 1000);
- missile5.velocity = missile5.velocity * 1000;
- missile5.angles = vectoangles(missile5.velocity);
- missile5.touch = T_SpreadTouch;
-
-
- // set missile duration
- missile1.nextthink = time + 5; // number is # of secs missle lasts
- missile1.think = SUB_Remove;
- // missile1.nextthink = time + 0.2;
- // missile1.think = HomeThink;
- // missile1.enemy = world;
- setmodel (missile1, "progs/spredgun.mdl");
- setsize (missile1, '0 0 0', '0 0 0');
- setorigin (missile1, self.origin + v_forward*8 + '0 0 16');
-
-
- missile2.nextthink = time + 5; // number is # of secs missle lasts
- missile2.think = SUB_Remove;
- // missile2.nextthink = time + 0.2;
- // missile2.think = HomeThink;
- // missile2.enemy = world;
- setmodel (missile2, "progs/spredgun.mdl");
- setsize (missile2, '0 0 0', '0 0 0');
- setorigin (missile2, self.origin + v_forward*8 + '0 0 16');//16
-
-
- missile3.nextthink = time + 5; // number is # of secs missle lasts
- missile3.think = SUB_Remove;
- // missile3.nextthink = time + 0.2;
- // missile3.think = HomeThink;
- // missile3.enemy = world;
- setmodel (missile3, "progs/spredgun.mdl");
- setsize (missile3, '0 0 0', '0 0 0');
- setorigin (missile3, self.origin + v_forward*8 + '0 0 16'); //16
-
- missile4.nextthink = time + 5; // number is # of secs missle lasts
- missile4.think = SUB_Remove;
- // missile4.nextthink = time + 0.2;
- // missile4.think = HomeThink;
- // missile4.enemy = world;
- setmodel (missile4, "progs/spredgun.mdl");
- setsize (missile4, '0 0 0', '0 0 0');
- setorigin (missile4, self.origin + v_forward*8 + '0 0 16');//16
-
-
- missile5.nextthink = time + 5; // number is # of secs missle lasts
- missile5.think = SUB_Remove;
- // missile5.nextthink = time + 0.2;
- // missile5.think = HomeThink;
- // missile5.enemy = world;
- setmodel (missile5, "progs/spredgun.mdl");
- setsize (missile5, '0 0 0', '0 0 0');
- setorigin (missile5, self.origin + v_forward*8 + '0 0 16'); //16
-
-
- };
- /*
- ==============================================================================
-
- CONTRA HOMING SPREAD GUN
-
- ==============================================================================
- */
-
- void() HomeSpreadBecomeExplosion =
- {
- self.movetype = MOVETYPE_NONE;
- self.velocity = '0 0 0';
- self.touch = SUB_Null;
- setmodel (self, "progs/s_explod.spr");
- self.solid = SOLID_NOT;
- s_spreadexplode1();
- };
-
- void() T_HomeSpreadTouch =
- {
- local float damg;
-
- if (other == self.owner)
- return; // don't explode on owner
-
- if (pointcontents(self.origin) == CONTENT_SKY)
- {
- remove(self);
- return;
- }
-
- // damg = 100 + random()*20; Previous value
- damg = 40 + random()*20; //Previous value
-
- if (other.health)
- {
- T_Damage (other, self, self.owner, damg );
- }
-
- // don't do radius damage to the other, because all the damage
- // was done in the impact
- // T_RadiusDamage (self, self.owner, 120, other);
-
- // sound (self, CHAN_WEAPON, "weapons/r_exp3.wav", 1, ATTN_NORM);
- self.origin = self.origin - 8*normalize(self.velocity);
-
- 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);
-
- HomeSpreadBecomeExplosion ();
- };
-
- void() W_FireHomeSpread =
- {
- local entity missile1, mpuff;
- local entity missile2, mpuff;
- local entity missile3, mpuff;
- local entity missile4, mpuff;
- local entity missile5, mpuff;
-
- if (self.ammo_cells < 1)
- {
- sprint(self, "Cells Needed to Fire Homing Spread Gun\n");
- self.weapon = W_BestWeapon ();
- W_SetCurrentAmmo ();
- return;
- }
-
- self.currentammo = self.ammo_cells = self.ammo_cells - 25;
- if(self.ammo_cells < 0) {self.ammo_cells=0;}
-
- sound (self, CHAN_WEAPON, "weapons/spredgun.wav", 1, ATTN_NORM);
-
- self.punchangle_x = -2;
-
- missile1 = spawn ();
- missile1.owner = self;
- missile1.movetype = MOVETYPE_FLYMISSILE;
- missile1.solid = SOLID_BBOX;
-
- missile2 = spawn ();
- missile2.owner = self;
- missile2.movetype = MOVETYPE_FLYMISSILE;
- missile2.solid = SOLID_BBOX;
-
- missile3 = spawn ();
- missile3.owner = self;
- missile3.movetype = MOVETYPE_FLYMISSILE;
- missile3.solid = SOLID_BBOX;
-
- missile4 = spawn ();
- missile4.owner = self;
- missile4.movetype = MOVETYPE_FLYMISSILE;
- missile4.solid = SOLID_BBOX;
-
- missile5 = spawn ();
- missile5.owner = self;
- missile5.movetype = MOVETYPE_FLYMISSILE;
- missile5.solid = SOLID_BBOX;
-
- // set missile speed
-
- makevectors (self.v_angle);
- missile1.velocity = aim(self, 1000);
- missile1.velocity = missile1.velocity * 1000;
- missile1.angles = vectoangles(missile1.velocity);
- missile1.touch = T_HomeSpreadTouch;
-
- makevectors (self.v_angle + '0 11 0');
- missile2.velocity = aim(self, 1000);
- missile2.velocity = missile2.velocity * 1000;
- missile2.angles = vectoangles(missile2.velocity);
- missile2.touch = T_HomeSpreadTouch;
-
- makevectors (self.v_angle + '0 -11 0');
- missile3.velocity = aim(self, 1000);
- missile3.velocity = missile3.velocity * 1000;
- missile3.angles = vectoangles(missile3.velocity);
- missile3.touch = T_HomeSpreadTouch;
-
- makevectors (self.v_angle + '0 22 0');
- missile4.velocity = aim(self, 1000);
- missile4.velocity = missile4.velocity * 1000;
- missile4.angles = vectoangles(missile4.velocity);
- missile4.touch = T_HomeSpreadTouch;
-
- makevectors (self.v_angle + '0 -22 0');
- missile5.velocity = aim(self, 1000);
- missile5.velocity = missile5.velocity * 1000;
- missile5.angles = vectoangles(missile5.velocity);
- missile5.touch = T_HomeSpreadTouch;
-
-
- // set missile duration
- missile1.nextthink = time + 30; // number is # of secs missle lasts
- missile1.think = SUB_Remove;
- missile1.nextthink = time + 0.2;
- missile1.think = HomeThink;
- missile1.enemy = world;
- setmodel (missile1, "progs/spredgun.mdl");
- setsize (missile1, '0 0 0', '0 0 0');
- setorigin (missile1, self.origin + v_forward*8 + '0 0 16');
-
-
- missile2.nextthink = time + 30; // number is # of secs missle lasts
- missile2.think = SUB_Remove;
- missile2.nextthink = time + 0.2;
- missile2.think = HomeThink;
- missile2.enemy = world;
- setmodel (missile2, "progs/spredgun.mdl");
- setsize (missile2, '0 0 0', '0 0 0');
- setorigin (missile2, self.origin + v_forward*8 + '0 0 16');//16
-
-
- missile3.nextthink = time + 30; // number is # of secs missle lasts
- missile3.think = SUB_Remove;
- missile3.nextthink = time + 0.2;
- missile3.think = HomeThink;
- missile3.enemy = world;
- setmodel (missile3, "progs/spredgun.mdl");
- setsize (missile3, '0 0 0', '0 0 0');
- setorigin (missile3, self.origin + v_forward*8 + '0 0 16'); //16
-
- missile4.nextthink = time + 30; // number is # of secs missle lasts
- missile4.think = SUB_Remove;
- missile4.nextthink = time + 0.2;
- missile4.think = HomeThink;
- missile4.enemy = world;
- setmodel (missile4, "progs/spredgun.mdl");
- setsize (missile4, '0 0 0', '0 0 0');
- setorigin (missile4, self.origin + v_forward*8 + '0 0 16');//16
-
-
- missile5.nextthink = time + 30; // number is # of secs missle lasts
- missile5.think = SUB_Remove;
- missile5.nextthink = time + 0.2;
- missile5.think = HomeThink;
- missile5.enemy = world;
- setmodel (missile5, "progs/spredgun.mdl");
- setsize (missile5, '0 0 0', '0 0 0');
- setorigin (missile5, self.origin + v_forward*8 + '0 0 16'); //16
-
-
- };
-
-
-
- /*
- ==============================================================================
-
- SWITCH CONTROL
-
- ==============================================================================
- */
-
- void() SwitchSpread =
- {
- if (self.spredgun == 9){self.spredgun=0;}
-
- if (self.spredgun == 2)
- {
- self.spredgun = 0;
- sprint(self, "Rocket Launcher Armed\n");
-
- self.impulse=7;
- W_ChangeWeapon();
- }
-
- else if (self.spredgun == 1)
- {
- self.spredgun = 2;
- sprint(self, "Homing Spread Gun Armed\n");
-
- self.impulse=7;
- W_ChangeWeapon();
- }
-
- else if (self.spredgun == 0)
- {
- self.spredgun = 1;
- sprint(self, "Spread Gun Armed\n");
-
- self.impulse=7;
- W_ChangeWeapon();
-
- self.items = self.items | IT_CELLS;
- }
- };
-
- void() SwitchDog =
- {
- if (self.spredgun == 1){self.spredgun=0;}
- if (self.spredgun == 2){self.spredgun=0;}
-
- if (self.spredgun == 9)
- {
- self.spredgun = 0;
- sprint(self, "Rocket Launcher Armed\n");
-
- self.impulse=7;
- W_ChangeWeapon();
- }
- else if (self.spredgun == 0)
- {
- self.spredgun = 9;
- sprint(self, "Dog Rocket Armed!!!\n");
-
- self.impulse=7;
- W_ChangeWeapon();
- }
- };
-
-
-
-
-
- /*
- ==============================================================================
-
- HOMING CODE
-
- ==============================================================================
- */
-
-
- 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) )
- {
- 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;
- }
- if (selected != world)
- {
- sprint (self.owner,"Homing in on ");
- if (selected.classname == "player")
- {
- sprint (self.owner,selected.netname);
- sprint (selected,self.owner.netname);
- sprint (selected," has Let his Puppy Go!!!\n");
- }
- else
- sprint (self.owner,selected.classname);
- sprint (self.owner,"\n");
-
- }
- return selected;
- };
-
- void() HomeThink =
- {
- local vector dir, vtemp;
-
- if ( !(self.enemy) || (self.enemy == world) || (self.enemy.health < 1) )
- self.enemy = HomeFindTarget();
-
- if (self.enemy != world) // Arr.. don't be taken on da World!
- {
- vtemp = self.enemy.origin + '0 0 10';
- dir = normalize(vtemp - self.origin);
- self.velocity = dir * 250;
- self.angles = vectoangles(self.velocity);
- }
-
- self.nextthink = time + 0.2;
- self.think=HomeThink;
- };
-