diff --git a/quakec/fallout2/client.qc b/quakec/fallout2/client.qc index d050982df..206d94b52 100644 --- a/quakec/fallout2/client.qc +++ b/quakec/fallout2/client.qc @@ -8,6 +8,8 @@ void (vector org) spawn_tfog; void (vector org, entity death_owner) spawn_tdeath; void(float slot) WeaponAmmo; void() Identify; +void(entity to, float iid, float amount) AddStackable; +void(entity to, float iid, float amount) AddNonStackable; float modelindex_dead, modelindex_sneak, modelindex_prone, modelindex_eyes, modelindex_player, modelindex_gone; @@ -107,18 +109,18 @@ void() SetNewParms = parm16 = 1; - parm17 = SlotVal(IID_WP_AK74, 30); - parm18 = SlotVal(IID_GREN_SMOKE, 5); - parm19 = SlotVal(IID_ARM_LEATHER, 1); - parm20 = SlotVal(IID_AM_5MMHIGHVEL, 120); - parm21 = SlotVal(IID_AM_556MM, 120); + parm17 = SlotVal(IID_WP_USP, 12); + parm18 = 0; + parm19 = SlotVal(IID_ARM_SHIRT, 1); + parm20 = SlotVal(IID_CHEM_STIMPACK, 3); + parm21 = SlotVal(IID_AM_10MM, 24); parm22 = 0; - parm23 = SlotVal(IID_WP_TOOLKIT, 1); - parm24 = SlotVal(IID_WP_MOONLIGHT, 30); + parm23 = 0; + parm24 = 0; parm25 = 0; - parm26 = SlotVal(IID_CHEM_STIMPACK, 3); - parm27 = SlotVal(IID_BUILD_MRAMMO, 3); - parm28 = SlotVal(IID_BUILD_AUTODOC, 3); + parm26 = 0; + parm27 = 0; + parm28 = 0; parm29 = 0; parm30 = 0; parm31 = 0; @@ -483,8 +485,8 @@ called each time a player enters a new level */ void() PutClientInServer = { - local entity spot; - + local entity spot; + local float x; if (self.class == 0 || self.team == 0) { self.deadflag = DEAD_NO; @@ -530,6 +532,25 @@ void() PutClientInServer = DecodeLevelParms (); + if (self.class == 1) + { + x = SlotOfItem(self, IID_CHEM_MEDICALBAG); + if (x == 0) + AddNonStackable(self, IID_CHEM_MEDICALBAG, 1); + } + if (self.class == 2) + { + x = SlotOfItem(self, IID_EQUIP_STEALTHBOY); + if (x == 0) + AddNonStackable(self, IID_EQUIP_STEALTHBOY, 1); + } + if (self.class == 4) + { + x = SlotOfItem(self, IID_WP_TOOLKIT); + if (x == 0) + AddNonStackable(self, IID_WP_TOOLKIT, 1); + } + self.attack_finished = time; self.th_pain = player_pain; self.th_die = PlayerDie; diff --git a/quakec/fallout2/inventory.qc b/quakec/fallout2/inventory.qc index 8e5bf41d1..1e13f357f 100644 --- a/quakec/fallout2/inventory.qc +++ b/quakec/fallout2/inventory.qc @@ -80,6 +80,7 @@ float IID_BUILD_TESLA = 354; //float IID_BUILD_TELEPAD = 355; float IID_EQUIP_CLIMBINGGEAR = 375; +float IID_EQUIP_STEALTHBOY = 376; #define IsShootable(iid) (IsMelee(iid) || IsRanged(iid) || IsGrenade(iid)) @@ -875,6 +876,8 @@ string(float iid) GetItemName = if (iid == IID_EQUIP_CLIMBINGGEAR) return "climbing gear"; + if (iid == IID_EQUIP_STEALTHBOY) + return "stealthboy"; bprint(PRINT_MEDIUM, ftos(iid), " without a name!\n"); return strcat("unknown", ftos(iid)); @@ -1030,6 +1033,8 @@ string(float iid) GetItemImage = if (iid == IID_EQUIP_CLIMBINGGEAR) return "robofang.jpg"; + if (iid == IID_EQUIP_STEALTHBOY) + return "stealthboy.jpg"; bprint(PRINT_MEDIUM, ftos(iid), " without a name!\n"); return strcat("unknown.jpg", ftos(iid)); @@ -1150,6 +1155,9 @@ float(string itname) ItemIDOfName = return IID_EQUIP_CLIMBINGGEAR; if (itname == "gear") return IID_EQUIP_CLIMBINGGEAR; + if (itname == "stealthboy") + return IID_EQUIP_STEALTHBOY; + return 0; }; diff --git a/quakec/fallout2/items.qc b/quakec/fallout2/items.qc index ca5abaa36..0a4c2317b 100644 --- a/quakec/fallout2/items.qc +++ b/quakec/fallout2/items.qc @@ -806,27 +806,55 @@ float() GetRandomAmmo = if (r <= 2) return IID_AM_NEEDLER; - else if (r <= 4) - return IID_AM_10MM; else if (r <= 6) - return IID_AM_556MM; + return IID_AM_10MM; else if (r <= 8) - return IID_AM_5MMHIGHVEL; + return IID_AM_556MM; else if (r <= 10) + return IID_AM_5MMHIGHVEL; + else if (r <= 13) return IID_AM_12GAUGESHELLS; - else if (r <= 12) - return IID_AM_ENERGYCELL; else if (r <= 14) + return IID_AM_ENERGYCELL; + else if (r <= 15) return IID_AM_2MMEC; else if (r <= 16) return IID_AM_762MM; else if (r <= 18) return IID_AM_44MAGNUM; else - return IID_AM_45ACP; + return IID_AM_10MM; }; +float(float ammotype) GetAmmoCount = +{ + local float ammocount; + + if (ammotype == IID_AM_NEEDLER) + ammocount = 2 + random()*7; + if (ammotype == IID_AM_10MM) + ammocount = 5 + random()*10; + if (ammotype == IID_AM_556MM) + ammocount = 3 + random()*8; + if (ammotype == IID_AM_5MMHIGHVEL) + ammocount = 5 + random()*10; + if (ammotype == IID_AM_12GAUGESHELLS) + ammocount = 2 + random()*6; + if (ammotype == IID_AM_ENERGYCELL) + ammocount = 2 + random()*6; + if (ammotype == IID_AM_2MMEC) + ammocount = 1 + random()*2; + if (ammotype == IID_AM_762MM) + ammocount = 2 + random()*4; + if (ammotype == IID_AM_44MAGNUM) + ammocount = 2 + random()*4; + if (ammotype == IID_AM_45ACP) + ammocount = 5 + random()*10; + + return ammocount; +}; + void() ammo_touch = { local entity stemp; @@ -849,36 +877,16 @@ void() ammo_touch = ammotype = GetRandomAmmo(); - if (ammotype == IID_AM_NEEDLER) - ammocount = 2 + random()*7; - if (ammotype == IID_AM_10MM) - ammocount = 5 + random()*10; - if (ammotype == IID_AM_556MM) - ammocount = 3 + random()*8; - if (ammotype == IID_AM_5MMHIGHVEL) - ammocount = 5 + random()*10; - if (ammotype == IID_AM_12GAUGESHELLS) - ammocount = 2 + random()*6; - if (ammotype == IID_AM_ENERGYCELL) - ammocount = 2 + random()*6; - if (ammotype == IID_AM_2MMEC) - ammocount = 1 + random()*2; - if (ammotype == IID_AM_762MM) - ammocount = 2 + random()*4; - if (ammotype == IID_AM_44MAGNUM) - ammocount = 2 + random()*4; - if (ammotype == IID_AM_45ACP) - ammocount = 5 + random()*10; - + ammocount = GetAmmoCount(ammotype); ammocount = ceil(ammocount); if (coop == 1 && total_players == 1) ammocount = ammocount * 2; ammoname = GetItemName(ammotype); - ammocountftos = ftos(ammocount); + // shotgun if (self.weapon == 1) { @@ -1518,6 +1526,8 @@ PLAYER BACKPACKS void() BackpackTouch = { + local float ammotype, ammocount; + if (other.classname != "player") return; @@ -1528,21 +1538,27 @@ void() BackpackTouch = AddStackable(other, IID_AM_10MM, floor(9+random()*9)); sprint(other, 2, " 10mm ammo"); } - if (self.weapon == 2) + else if (self.weapon == 2) { AddStackable(other, IID_AM_556MM, floor(5+random()*5)); sprint(other, 2, " 5mm ammo"); } - if (self.weapon == 3) + else if (self.weapon == 3) { AddStackable(other, IID_AM_12GAUGESHELLS, floor(3+random()*3)); sprint(other, 2, " 12 gauge ammo"); } - if (self.weapon == 4) + else if (self.weapon == 4) { AddStackable(other, IID_AM_10MM, floor(9+random()*9)); sprint(other, 2, " 10mm ammo"); } + else + { + ammotype = GetRandomAmmo(); + ammocount = GetAmmoCount(ammotype); + } + if (random()*4 <= 2) { diff --git a/quakec/fallout2/weapons.qc b/quakec/fallout2/weapons.qc index dfd64c35d..95e5ef939 100644 --- a/quakec/fallout2/weapons.qc +++ b/quakec/fallout2/weapons.qc @@ -986,6 +986,7 @@ void (float slotno) ReloadWeapon = sound (self, CHAN_WEAPON, "weapons/shell.wav", TRUE, ATTN_NORM); else sound (self, CHAN_WEAPON, "weapons/reload.wav", TRUE, ATTN_NORM); + sprint(self, 2, "reloading...\n"); if (self.perk == 3) @@ -3858,7 +3859,7 @@ void (float rec, float number, float dam, float spread, float ran, float auto) W } }; -void () PTouch2 = +void () PlasmaBolt = { local float dam; local float zdif; @@ -3877,23 +3878,7 @@ void () PTouch2 = if (other.takedamage) { - zdif = self.origin_z - other.origin_z; - ydif = self.origin_y - other.origin_y; - xdif = self.origin_x - other.origin_x; - tru = 0; - if (ydif >= -6 && ydif <= 6) - { - tru = 1; - } - if (xdif >= -6 && xdif <= 6) - { - tru = 1; - } - dam = 60 + (random () * 90); - if (other.classname == "ighoul") - { - dam = 120 + (random () * 120); - } + dam = 30 + (random () * 30); T_Damage (other, self, self.owner, dam); WriteByte (MSG_MULTICAST, SVC_TEMPENTITY); @@ -3938,7 +3923,6 @@ void () FireAlienBlaster = newmis.velocity = (newmis.velocity * 3000); newmis.angles = vectoangles (newmis.velocity); -// newmis.touch = PTouch; newmis.nextthink = (time + IDLE3A); newmis.think = SUB_Remove; setmodel (newmis, "progs/plasma.mdl"); @@ -3951,7 +3935,7 @@ void () FireAlienBlaster = newmis.angles = vectoangles (newmis.velocity); newmis.nextthink = time + 1.4; sound (self, CHAN_WEAPON, "weapons/blaster.wav", WEAPON_SHOTGUN, ATTN_NORM); - newmis.touch = PTouch2; + newmis.touch = PlasmaBolt; setmodel (newmis, "progs/ray.mdl"); tmp = 90 + self.velocity_y + self.velocity_x; } diff --git a/quakec/fallout2/world.qc b/quakec/fallout2/world.qc index 362aee9d9..2d07578a9 100644 --- a/quakec/fallout2/world.qc +++ b/quakec/fallout2/world.qc @@ -579,6 +579,7 @@ void() worldspawn = precache_sound ("weapons/tink1.wav"); precache_sound ("weapons/sa80-1.wav"); precache_sound ("weapons/shell.wav"); + precache_sound ("weapons/reload.wav"); precache_sound ("misc/build1.wav"); precache_sound ("misc/build2.wav"); precache_sound ("misc/build3.wav");