diff --git a/source/server/entities/machines.qc b/source/server/entities/machines.qc index f3875b6..d947400 100644 --- a/source/server/entities/machines.qc +++ b/source/server/entities/machines.qc @@ -479,6 +479,9 @@ void() perk_revive = precache_sound("sounds/weapons/papfire.wav"); precache_extra(W_BIATCH); setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_revive"; @@ -541,6 +544,9 @@ void() perk_flopper = if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_flopper"; @@ -603,6 +609,9 @@ void() perk_juggernog = if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_juggernog"; @@ -665,6 +674,9 @@ void() perk_staminup = if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_staminup"; @@ -727,6 +739,9 @@ void() perk_speed = if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_speed"; @@ -789,6 +804,9 @@ void() perk_double = if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_double"; @@ -850,6 +868,9 @@ void() perk_deadshot = precache_model(self.weapon2model); precache_sound(self.oldmodel); setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setmodel(self, self.model); @@ -916,6 +937,9 @@ void() perk_mule = if (self.aistatus) { precache_sound(self.aistatus); } if (self.powerup_vo) { precache_sound(self.powerup_vo); } setorigin(self, self.origin); + self.oldorigin = self.origin; + self.finalangle = self.angles; + self.door_model_name = self.model; setmodel(self, self.model); setsize(self, VEC_HULL2_MIN, VEC_HULL2_MAX); self.classname = "perk_mule"; diff --git a/source/server/utilities/game_restart.qc b/source/server/utilities/game_restart.qc index 2a7febd..ce141e7 100644 --- a/source/server/utilities/game_restart.qc +++ b/source/server/utilities/game_restart.qc @@ -29,6 +29,9 @@ void() PutClientInServer; void() InitRounds; void() func_door_nzp; +void(entity e) Light_None; +void() setup_perk; +void() touch_perk; // // GameRestart_CleanPowerUps() @@ -109,6 +112,52 @@ void() GameRestart_RepairBarricades = } } +// +// GameRestart_TurnPerkOff() +// Wrapper for turning off Perk lights. +// +void(string perk_classname) GameRestart_TurnPerkOff = +{ + entity tempe; + + tempe = find(world, classname, perk_classname); + while(tempe != world) { + setmodel(tempe, tempe.door_model_name); + setorigin(tempe, tempe.oldorigin); + + Light_None(tempe); + + tempe.velocity = '0 0 0'; + tempe.angles = tempe.finalangle; + tempe.touch = touch_perk; + tempe.revivesoda = 0; + + // Run our initial setup function + tempe.think = setup_perk; + tempe.nextthink = time + 0.1; + + tempe = find(tempe, classname, perk_classname); + } +} + +// +// GameRestart_ResetPerkaColas() +// Make sure Perk-a-Colas are in their +// right states. +// +void() GameRestart_ResetPerkaColas = +{ + // Go on a reset spree! + GameRestart_TurnPerkOff("perk_revive"); // Quick Revive + GameRestart_TurnPerkOff("perk_juggernog"); // Jugger-Nog + GameRestart_TurnPerkOff("perk_speed"); // Speed Cola + GameRestart_TurnPerkOff("perk_double"); // Double Tap Root Beer + GameRestart_TurnPerkOff("perk_flopper"); // PhD Flopper + GameRestart_TurnPerkOff("perk_staminup"); // Stamin-Up + GameRestart_TurnPerkOff("perk_deadshot"); // Deadshot Daiquiri + GameRestart_TurnPerkOff("perk_mule"); // Mule Kick +} + //moto -- put this here because it keeps soft_restart somewhat clean.. void(entity door) reclose_door = { entity oldself; @@ -127,7 +176,7 @@ void(entity door) reclose_door = { } void() Soft_Restart = { - entity who, oldself, doors, box, revive, endgame; + entity who, oldself, doors, box, endgame; self = find(world,classname,"player"); oldself = self; @@ -158,6 +207,7 @@ void() Soft_Restart = { GameRestart_CleanPowerUps(); // Get rid of any Power-Ups that were spawned and left. GameRestart_CleanWallSummons(); // Delete residual wall weapon spawns from our last game. GameRestart_RepairBarricades(); // Make sure all barricades are fully repaired. + GameRestart_ResetPerkaColas(); // Turn all of the Perk-a-Cola lights off, reset states. //close doors doors = findfloat(world, isopen, 1); @@ -184,13 +234,6 @@ void() Soft_Restart = { //self = oldself; } - //reset quick revive - revive = find(world, classname, "perk_revive"); - if (revive) { - setmodel(revive, revive.model); - oldself.revivesoda = 0; - } - //reset buyable ending endgame = find(world, classname, "func_ending"); if (endgame) {