From f6d83b29b05d5837f278931db87adbe4443634c3 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 18 May 2013 17:44:04 +1000 Subject: [PATCH] Fix generators not updating team colors on first load --- qcsrc/server/generator.qc | 18 +++++++++++++----- qcsrc/server/mutators/gamemode_towerdefense.qc | 10 ++++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/qcsrc/server/generator.qc b/qcsrc/server/generator.qc index 1588aef6b..62fd76e9a 100644 --- a/qcsrc/server/generator.qc +++ b/qcsrc/server/generator.qc @@ -257,11 +257,18 @@ void generator_construct() .vector glowmod; void generator_changeteam() { - self.glowmod = Team_ColorRGB(self.team - 1); - self.teamradar_color = Team_ColorRGB(self.team - 1); - if(self.team) + { + self.glowmod = Team_ColorRGB(self.team - 1); + self.teamradar_color = Team_ColorRGB(self.team - 1); self.colormap = 1024 + (self.team - 1) * 17; + } + else + { + self.colormap = 1024; + self.glowmod = '1 1 0'; + self.teamradar_color = '1 1 0'; + } } void ent_generator() @@ -279,14 +286,14 @@ void ent_generator() self.health = ReadByte(); self.max_health = ReadByte(); self.count = ReadByte(); + self.team = ReadByte(); if not(self.count) self.count = 40; + generator_changeteam(); generator_precache(); generator_construct(); - self.colormap = 1024; - self.glowmod = '1 1 0'; } if(sf & GSF_STATUS) @@ -323,6 +330,7 @@ float generator_send(entity to, float sf) WriteByte(MSG_ENTITY, self.health); WriteByte(MSG_ENTITY, self.max_health); WriteByte(MSG_ENTITY, self.count); + WriteByte(MSG_ENTITY, self.team); } if(sf & GSF_STATUS) diff --git a/qcsrc/server/mutators/gamemode_towerdefense.qc b/qcsrc/server/mutators/gamemode_towerdefense.qc index 29f316f13..49f8e5b74 100644 --- a/qcsrc/server/mutators/gamemode_towerdefense.qc +++ b/qcsrc/server/mutators/gamemode_towerdefense.qc @@ -139,7 +139,6 @@ void td_generator_setup() self.event_damage = td_generator_damage; self.movetype = MOVETYPE_NONE; self.monster_attack = TRUE; - self.SendFlags = GSF_SETUP; self.netname = "Generator"; self.reset = func_null; @@ -300,6 +299,13 @@ void spawn_td_fuel(float fuel_size) self.velocity = randomvec() * 175 + '0 0 325'; } +void td_generator_delayed() +{ + generator_link(td_generator_setup); + + self.SendFlags = GSF_SETUP; +} + // round handling #define TD_ALIVE_TEAMS() ((redalive > 0) + (bluealive > 0)) #define TD_ALIVE_TEAMS_OK() (TD_ALIVE_TEAMS() == 2) @@ -440,7 +446,7 @@ void spawnfunc_td_generator() setorigin(self, self.origin + '0 0 20'); droptofloor(); - generator_link(td_generator_setup); + InitializeEntity(self, td_generator_delayed, INITPRIO_LAST); } void spawnfunc_td_waypoint() -- 2.39.2