public void Tick(World world) { if (self.Destroyed) { world.AddFrameEndTask(w => w.Remove(this)); } if (world.LocalPlayer == null || !self.IsInWorld || self.Destroyed) { return; } // Can be granted at runtime via a crate, so can't cache var cloak = self.TraitOrDefault <Cloak>(); if (firstTick) { huf = self.TraitOrDefault <HiddenUnderFog>(); spy = self.TraitOrDefault <Spy>(); firstTick = false; } var hasGps = (watcher != null && (watcher.Granted || watcher.GrantedAllies)); var hasDot = (huf != null && !huf.IsVisible(self, self.World.RenderPlayer)); var dotHidden = (cloak != null && cloak.Cloaked) || (spy != null && spy.Disguised); show = hasGps && hasDot && !dotHidden; }
public void Tick(World world) { if (self.Destroyed) world.AddFrameEndTask(w => w.Remove(this)); if (world.LocalPlayer == null || !self.IsInWorld || self.Destroyed) return; // Can be granted at runtime via a crate, so can't cache var cloak = self.TraitOrDefault<Cloak>(); if (firstTick) { huf = self.TraitOrDefault<HiddenUnderFog>(); spy = self.TraitOrDefault<Spy>(); firstTick = false; } var hasGps = (watcher != null && (watcher.Granted || watcher.GrantedAllies)); var hasDot = (huf != null && !huf.IsVisible(self, self.World.RenderPlayer)); var dotHidden = (cloak != null && cloak.Cloaked) || (spy != null && spy.Disguised); show = hasGps && hasDot && !dotHidden; }