diff --git a/source/client.qc b/source/client.qc index 6143d3b..96d8827 100644 --- a/source/client.qc +++ b/source/client.qc @@ -22,7 +22,7 @@ void() SetChangeParms = { } // remove items - self.items = self.items - (self.items & (IT_KEY1 | IT_KEY2 | IT_INVISIBILITY | IT_INVULNERABILITY | IT_SUIT | IT_QUAD)); + self.items &= ~(IT_KEY1 | IT_KEY2 | IT_INVISIBILITY | IT_INVULNERABILITY | IT_SUIT | IT_QUAD); // cap super health if(self.health > 100) { @@ -55,7 +55,7 @@ void() SetNewParms = { parm5 = 0; parm6 = 0; parm7 = 0; - parm8 = 1; + parm8 = IT_SHOTGUN; parm9 = 0; }; @@ -93,13 +93,11 @@ entity() FindIntermission = { spot = find(world, classname, "info_intermission"); if(spot) { // pick a random one - cyc = random() * 4; - while(cyc > 1) { + for(cyc = random() * 4; cyc > 1; cyc--) { spot = find(spot, classname, "info_intermission"); if(!spot) { spot = find(spot, classname, "info_intermission"); } - cyc = cyc - 1; } return spot; } @@ -283,7 +281,7 @@ void() changelevel_touch = { }; /*QUAKED trigger_changelevel(0.5 0.5 0.5) ? NO_INTERMISSION -When the player touches this, he gets sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats. +When the player touches this, they get sent to the map listed in the "map" variable. Unless the NO_INTERMISSION flag is set, the view will go to the info_intermission spot and display stats. */ void() trigger_changelevel = { if(!self.map) { diff --git a/source/triggers.qc b/source/triggers.qc index 6d43ce1..ff82c37 100644 --- a/source/triggers.qc +++ b/source/triggers.qc @@ -357,7 +357,7 @@ void() teleport_touch = { spawn_tfog(org); spawn_tdeath(t.origin, other); - // move the player and lock him down for a little while + // move the player and lock them down for a little while if(!other.health) { other.origin = t.origin; other.velocity = (v_forward * other.velocity_x) + (v_forward * other.velocity_y); diff --git a/source/weapons.qc b/source/weapons.qc index cb00b31..b985180 100644 --- a/source/weapons.qc +++ b/source/weapons.qc @@ -760,23 +760,6 @@ float() W_BestWeapon = { return IT_AXE; }; -float() W_CheckNoAmmo = { - if(self.currentammo > 0) { - return TRUE; - } - - if(self.weapon == IT_AXE) { - return TRUE; - } - - self.weapon = W_BestWeapon(); - - W_SetCurrentAmmo(); - - // drop the weapon down - return FALSE; -}; - /* ============ W_Attack @@ -787,50 +770,59 @@ An attack impulse can be triggered now void() W_Attack = { float r; - if(!W_CheckNoAmmo()) { + if(self.currentammo <= 0 && self.weapon != IT_AXE) { + self.weapon = W_BestWeapon(); + W_SetCurrentAmmo(); return; } makevectors(self.v_angle); // calculate forward angle for velocity self.show_hostile = time + 1; // wake monsters up - if(self.weapon == IT_AXE) { - sound(self, CHAN_WEAPON, "weapons/ax1.wav", 1, ATTN_NORM); - r = random(); - if(r < 0.25) { - player_axe1(); - } else if(r < 0.5) { - player_axeb1(); - } else if(r < 0.75) { - player_axec1(); - } else { - player_axed1(); - } - self.attack_finished = time + 0.5; - } else if(self.weapon == IT_SHOTGUN) { - player_shot1(); - W_FireShotgun(); - self.attack_finished = time + 0.5; - } else if(self.weapon == IT_SUPER_SHOTGUN) { - player_shot1(); - W_FireSuperShotgun(); - self.attack_finished = time + 0.7; - } else if(self.weapon == IT_NAILGUN) { - player_nail1(); - } else if(self.weapon == IT_SUPER_NAILGUN) { - player_nail1(); - } else if(self.weapon == IT_GRENADE_LAUNCHER) { - player_rocket1(); - W_FireGrenade(); - self.attack_finished = time + 0.6; - } else if(self.weapon == IT_ROCKET_LAUNCHER) { - player_rocket1(); - W_FireRocket(); - self.attack_finished = time + 0.8; - } else if(self.weapon == IT_LIGHTNING) { - player_light1(); - self.attack_finished = time + 0.1; - sound(self, CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM); + switch(self.weapon) { + case IT_AXE: + sound(self, CHAN_WEAPON, "weapons/ax1.wav", 1, ATTN_NORM); + r = random(); + if(r < 0.25) { + player_axe1(); + } else if(r < 0.5) { + player_axeb1(); + } else if(r < 0.75) { + player_axec1(); + } else { + player_axed1(); + } + self.attack_finished = time + 0.5; + break; + case IT_SHOTGUN: + player_shot1(); + W_FireShotgun(); + self.attack_finished = time + 0.5; + break; + case IT_SUPER_SHOTGUN: + player_shot1(); + W_FireSuperShotgun(); + self.attack_finished = time + 0.7; + break; + case IT_NAILGUN: + case IT_SUPER_NAILGUN: + player_nail1(); + break; + case IT_GRENADE_LAUNCHER: + player_rocket1(); + W_FireGrenade(); + self.attack_finished = time + 0.6; + break; + case IT_ROCKET_LAUNCHER: + player_rocket1(); + W_FireRocket(); + self.attack_finished = time + 0.8; + break; + case IT_LIGHTNING: + player_light1(); + self.attack_finished = time + 0.1; + sound(self, CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM); + break; } }; @@ -971,13 +963,14 @@ void() W_CycleWeapon = { am = 1; } break; + default: + return; } if((it & self.weapon) && am == 0) { W_SetCurrentAmmo(); return; } } - }; /* @@ -1040,13 +1033,14 @@ void() W_CycleWeaponReverse = { am = 1; } break; + default: + return; } if((it & self.weapon) && am == 0) { W_SetCurrentAmmo(); return; } } - }; /* diff --git a/todo b/todo index 762e668..0e3c77e 100644 --- a/todo +++ b/todo @@ -5,7 +5,6 @@ rename all functions to be lower_underscore core features: -custom pronouns distributed ammo lives counting @@ -27,4 +26,5 @@ third person player weapon models done: corpse pickups have keys +custom pronouns no friendly fire