public static void ChangeRole(Player p, CustomRole newRole) { if (p == null) { return; } if (newRole == null || !roles.ContainsKey(newRole.id)) { if (users.ContainsKey(p.UserId)) { users.Remove(p.UserId); } return; } AdvancedSubclassing.RemovePlayer(p); if (!users.ContainsKey(p.UserId)) { users[p.UserId] = newRole.id; roles[newRole.id].members.Add(p.UserId); } else { roles[users[p.UserId]].members.Remove(p.UserId); users[p.UserId] = newRole.id; roles[newRole.id].members.Add(p.UserId); } if (newRole.isSubclass) { AdvancedSubclassing.SetClass(p, newRole.id.Substring(2)); } }