diff --git a/source/server/player.qc b/source/server/player.qc index 85f2ab5..3695837 100644 --- a/source/server/player.qc +++ b/source/server/player.qc @@ -449,16 +449,22 @@ void() PlayerPreThink = // refuel/cool flamethrowers if (self.ltime < time) { - if (self.weapons[0].weapon_magazine == 0 && !self.cooldown) { + // FIXME: Weapon hardcode definition. + float weapon_slot = Weapon_PlayerHasWeapon(self, W_M2, true); + + if (!weapon_slot) + return; + + weapon_slot--; + if (self.weapons[weapon_slot].weapon_magazine == 0 && !self.cooldown) { self.cooldown = true; } - if (self.cooldown && self.weapons[0].weapon_magazine > 20) + if (self.cooldown && self.weapons[weapon_slot].weapon_magazine > 20) self.cooldown = false; - if (GetFiretype(self.weapon) == FIRETYPE_FLAME && - self.weapons[0].weapon_magazine < getWeaponMag(self.weapon)) { - self.weapons[0].weapon_magazine += 1; + if (self.weapons[weapon_slot].weapon_magazine < getWeaponMag(self.weapon)) { + self.weapons[weapon_slot].weapon_magazine += 1; } self.ltime = time + 0.1; diff --git a/source/server/rounds.qc b/source/server/rounds.qc index c8db70f..c10b41c 100644 --- a/source/server/rounds.qc +++ b/source/server/rounds.qc @@ -95,19 +95,20 @@ float() getZombieTotal = { return 0; } -void(string s) playSoundAtPlayers = +// +// Rounds_PlayTransition(sound_path) +// A nice wrapper for sound() that checks if +// music is playing and proceeds if not. +// +void(string sound_path) Rounds_PlayTransition = { // Don't play any round stuff while there's a song egg happening. if (music_override > time) return; - local entity p; - p = find(world,classname,"player"); - while(p) - { - sound(p,CHAN_AUTO,s,1,ATTN_NONE); - p = find(p,classname,"player"); - } + // Pick a random player because it needs a source. + entity some_player = find(world, classname, "player"); + sound(some_player, CHAN_AUTO, sound_path, 1, ATTN_NONE); } void() updateDogRound = @@ -141,10 +142,10 @@ void() EndRound = rounds_change = 4; SetUpdate(self, UT_ROUNDS_CHANGE, rounds_change, 0, 0); if (gotdog && rounds == dogRound) { - playSoundAtPlayers("sounds/rounds/droundend.wav"); + Rounds_PlayTransition("sounds/rounds/droundend.wav"); dogWave = false; } else { - playSoundAtPlayers("sounds/rounds/eround.wav"); + Rounds_PlayTransition("sounds/rounds/eround.wav"); } round_changetime = time + 10; @@ -181,11 +182,11 @@ void() NewRound = if (rounds != 0) { if (gotdog && rounds == (dogRound - 1)) { - playSoundAtPlayers("sounds/rounds/droundstart.wav"); + Rounds_PlayTransition("sounds/rounds/droundstart.wav"); dogWave = true; dog_round_count++; } else { - playSoundAtPlayers("sounds/rounds/nround.wav"); + Rounds_PlayTransition("sounds/rounds/nround.wav"); } rounds_change = 6; SetUpdate(self, UT_ROUNDS_CHANGE, rounds_change, 0, 0);