home *** CD-ROM | disk | FTP | other *** search
-
-
- /*
- ===============================================================================
-
- PLAYER BACKPACKS
-
- ===============================================================================
- */
-
- void() BackpackTouch =
- {
- local string s;
- local float best;
- local entity stemp;
-
- if (other.classname != "player")
- return;
- if (other.health <= 0)
- return;
-
- // if the player was using his best weapon, change up to the new one if better
- stemp = self;
- self = other;
- best = W_BestWeapon();
- self = stemp;
-
- // change weapons
- other.ammo_shells = other.ammo_shells + self.ammo_shells;
- other.ammo_nails = other.ammo_nails + self.ammo_nails;
- other.ammo_rockets = other.ammo_rockets + self.ammo_rockets;
- other.ammo_cells = other.ammo_cells + self.ammo_cells;
-
- other.items = other.items | self.items;
-
- bound_other_ammo ();
-
- sprint (other, "You get ");
-
- if (self.ammo_shells)
- {
- s = ftos(self.ammo_shells);
- sprint (other, s);
- sprint (other, " shells ");
- }
- if (self.ammo_nails)
- {
- s = ftos(self.ammo_nails);
- sprint (other, s);
- sprint (other, " nails ");
- }
- if (self.ammo_rockets)
- {
- s = ftos(self.ammo_rockets);
- sprint (other, s);
- sprint (other, " rockets ");
- }
- if (self.ammo_cells)
- {
- s = ftos(self.ammo_cells);
- sprint (other, s);
- sprint (other, " cells ");
- }
-
- sprint (other, "\n");
- // backpack touch sound
- sound (other, CHAN_ITEM, "weapons/lock4.wav", 1, ATTN_NORM);
- stuffcmd (other, "bf\n");
-
- // change to a better weapon if appropriate
- if ( other.weapon == best )
- {
- stemp = self;
- self = other;
- self.weapon = W_BestWeapon();
- self = stemp;
- }
-
-
- remove(self);
-
- self = other;
- W_SetCurrentAmmo ();
- };
-
- /*
- ===============
- DropBackpack
- ===============
- */
- void() DropBackpack =
- {
- local entity item;
-
- if (!(self.ammo_shells + self.ammo_nails + self.ammo_rockets + self.ammo_cells))
- return; // nothing in it
-
- item = spawn();
- item.origin = self.origin - '0 0 24';
-
- item.items = self.weapon;
-
- item.ammo_shells = self.ammo_shells;
- item.ammo_nails = self.ammo_nails;
- item.ammo_rockets = self.ammo_rockets;
- item.ammo_cells = self.ammo_cells;
-
- item.velocity_z = 300;
- item.velocity_x = -100 + (random() * 200);
- item.velocity_y = -100 + (random() * 200);
-
- item.flags = FL_ITEM;
- item.solid = SOLID_SLIDEBOX;
- item.movetype = MOVETYPE_TOSS;
- setmodel (item, "progs/backpack.mdl");
- setsize (item, '-16 -16 0', '16 16 56');
- item.touch = BackpackTouch;
- item.health = 30;
- item.th_die = barrel_explode;
-
- item.takedamage = DAMAGE_AIM;
-
- item.nextthink = time + 120; // remove after 2 minutes
- item.think = SUB_Remove;
- };
-