private void EndRoleAndReplaceWithNew(Role value) { if (value != null) { try { SimDescription currentActor = value.mSim; value.RemoveSimFromRole(); Drunkard aRole = Drunkard.clone(value, currentActor); this.mCurrentRole = aRole; RoleManager.sRoleManager.AddRole(aRole); if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Role cloning succeeded: " + currentActor.FullName); } } catch (Exception ex) { Message.Sender.ShowError(this, "Cannot create custom role", true, ex); this.mCurrentRole = value; } } }
public override void Tick() { base.Tick(); if (Local.Pawn is not Player player) { return; } this.Enabled(!player.IsSpectator && !player.IsSpectatingPlayer && Gamemode.Game.Instance.Round is Rounds.InProgressRound); if (this.IsEnabled()) { if (player.Role.Name != _role?.Name) { _role = player.Role; Style.BackgroundColor = _role.Color; RoleLabel.UpdateTranslation(new TranslationData(_role.GetTranslationKey("NAME"))); } } }