-using Content.Shared.Administration.Notes;
+using Content.Shared.Administration.Notes;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.XAML;
{
RobustXamlLoader.Load(this);
- Admin.SetMessage(FormattedMessage.FromMarkup(Loc.GetString(
+ Admin.SetMessage(FormattedMessage.FromMarkupOrThrow(Loc.GetString(
"admin-notes-message-admin",
("admin", message.AdminName),
("date", message.AddedOn.ToLocalTime()))));
MessageContainer.AddChild(new AdminMessagePopupMessage(message));
}
- Description.SetMessage(FormattedMessage.FromMarkup(Loc.GetString("admin-notes-message-desc", ("count", state.Messages.Length))));
+ Description.SetMessage(FormattedMessage.FromMarkupOrThrow(Loc.GetString("admin-notes-message-desc", ("count", state.Messages.Length))));
}
private void OnDismissButtonPressed(BaseButton.ButtonEventArgs obj)
Unread++;
var formatted = new FormattedMessage(1);
- formatted.AddMarkup($"[color=gray]{message.SentAt.ToShortTimeString()}[/color] {message.Text}");
+ formatted.AddMarkupOrThrow($"[color=gray]{message.SentAt.ToShortTimeString()}[/color] {message.Text}");
TextOutput.AddMessage(formatted);
LastMessage = message.SentAt;
}
Margin = new Thickness(6, 0, 0, 0),
};
authorLabel.SetMessage(
- FormattedMessage.FromMarkup(Loc.GetString("changelog-author-changed", ("author", author))));
+ FormattedMessage.FromMarkupOrThrow(Loc.GetString("changelog-author-changed", ("author", author))));
ChangelogBody.AddChild(authorLabel);
foreach (var change in groupedEntry.SelectMany(c => c.Changes))
{
var text = new RichTextLabel();
- text.SetMessage(FormattedMessage.FromMarkup(change.Message));
+ text.SetMessage(FormattedMessage.FromMarkupOrThrow(change.Message));
ChangelogBody.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Horizontal,
var msg = new FormattedMessage();
if (fontColor != null)
msg.PushColor(fontColor.Value);
- msg.AddMarkup(message);
+ msg.AddMarkupOrThrow(message);
return msg;
}
var text = _resourceManager.ContentFileReadAllText($"/Credits/{path}");
if (markup)
{
- label.SetMessage(FormattedMessage.FromMarkup(text.Trim()));
+ label.SetMessage(FormattedMessage.FromMarkupOrThrow(text.Trim()));
}
else
{
StatusOptionButton.SelectId((int) criminalRecord.Status);
if (criminalRecord.Reason is {} reason)
{
- var message = FormattedMessage.FromMarkup(Loc.GetString("criminal-records-console-wanted-reason"));
+ var message = FormattedMessage.FromMarkupOrThrow(Loc.GetString("criminal-records-console-wanted-reason"));
message.AddText($": {reason}");
WantedReason.SetMessage(message);
WantedReason.Visible = true;
var i = 0;
foreach (var effectString in effect.EffectDescriptions)
{
- descMsg.AddMarkup(effectString);
+ descMsg.AddMarkupOrThrow(effectString);
i++;
if (i < descriptionsCount)
descMsg.PushNewline();
var i = 0;
foreach (var effectString in guideEntryRegistryPlant.PlantMetabolisms)
{
- descMsg.AddMarkup(effectString);
+ descMsg.AddMarkupOrThrow(effectString);
i++;
if (i < descriptionsCount)
descMsg.PushNewline();
FormattedMessage description = new();
description.AddText(reagent.LocalizedDescription);
description.PushNewline();
- description.AddMarkup(Loc.GetString("guidebook-reagent-physical-description",
+ description.AddMarkupOrThrow(Loc.GetString("guidebook-reagent-physical-description",
("description", reagent.LocalizedPhysicalDescription)));
ReagentDescription.SetMessage(description);
}
var i = 0;
foreach (var (product, amount) in reagents.OrderByDescending(p => p.Value))
{
- msg.AddMarkup(Loc.GetString("guidebook-reagent-recipes-reagent-display",
+ msg.AddMarkupOrThrow(Loc.GetString("guidebook-reagent-recipes-reagent-display",
("reagent", protoMan.Index<ReagentPrototype>(product).LocalizedName), ("ratio", amount)));
i++;
if (i < reagentCount)
-using Robust.Client.AutoGenerated;
+using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Utility;
{
TitleLabel.Text = title;
if (markup)
- Content.SetMessage(FormattedMessage.FromMarkup(text.Trim()));
+ Content.SetMessage(FormattedMessage.FromMarkupOrThrow(text.Trim()));
else
Content.SetMessage(text);
}
}
public void SetInfoBlob(string markup)
{
- _richTextLabel.SetMessage(FormattedMessage.FromMarkup(markup));
+ _richTextLabel.SetMessage(FormattedMessage.FromMarkupOrThrow(markup));
}
}
}
/// </remarks>
public static RichTextLabel SetMarkup(this RichTextLabel label, string markup)
{
- label.SetMessage(FormattedMessage.FromMarkup(markup));
+ label.SetMessage(FormattedMessage.FromMarkupOrThrow(markup));
return label;
}
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
using Content.Client.Lobby;
using Content.Shared.CCVar;
using Content.Shared.Players;
reasons.Add(jobReason.ToMarkup());
}
- reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkup(string.Join('\n', reasons));
+ reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkupOrThrow(string.Join('\n', reasons));
return reason == null;
}
BorderThickness = new Thickness(2),
};
- msg.AddMarkup(Loc.GetString("power-monitoring-window-rogue-power-consumer"));
+ msg.AddMarkupOrThrow(Loc.GetString("power-monitoring-window-rogue-power-consumer"));
SystemWarningPanel.Visible = true;
}
BorderThickness = new Thickness(2),
};
- msg.AddMarkup(Loc.GetString("power-monitoring-window-power-net-abnormalities"));
+ msg.AddMarkupOrThrow(Loc.GetString("power-monitoring-window-power-net-abnormalities"));
SystemWarningPanel.Visible = true;
}
};
var text = new FormattedMessage();
- text.PushMarkup(Loc.GetString("robotics-console-model", ("name", model)));
- text.AddMarkup(Loc.GetString("robotics-console-designation"));
+ text.AddMarkupOrThrow($"{Loc.GetString("robotics-console-model", ("name", model))}\n");
+ text.AddMarkupOrThrow(Loc.GetString("robotics-console-designation"));
text.AddText($" {data.Name}\n"); // prevent players trolling by naming borg [color=red]satan[/color]
- text.PushMarkup(Loc.GetString("robotics-console-battery", ("charge", (int) (data.Charge * 100f)), ("color", batteryColor)));
- text.PushMarkup(Loc.GetString("robotics-console-brain", ("brain", data.HasBrain)));
- text.AddMarkup(Loc.GetString("robotics-console-modules", ("count", data.ModuleCount)));
+ text.AddMarkupOrThrow($"{Loc.GetString("robotics-console-battery", ("charge", (int)(data.Charge * 100f)), ("color", batteryColor))}\n");
+ text.AddMarkupOrThrow($"{Loc.GetString("robotics-console-brain", ("brain", data.HasBrain))}\n");
+ text.AddMarkupOrThrow(Loc.GetString("robotics-console-modules", ("count", data.ModuleCount)));
BorgInfo.SetMessage(text);
// how the turntables
//Gamemode Name
var gamemodeLabel = new RichTextLabel();
var gamemodeMessage = new FormattedMessage();
- gamemodeMessage.AddMarkup(Loc.GetString("round-end-summary-window-round-id-label", ("roundId", roundId)));
+ gamemodeMessage.AddMarkupOrThrow(Loc.GetString("round-end-summary-window-round-id-label", ("roundId", roundId)));
gamemodeMessage.AddText(" ");
- gamemodeMessage.AddMarkup(Loc.GetString("round-end-summary-window-gamemode-name-label", ("gamemode", gamemode)));
+ gamemodeMessage.AddMarkupOrThrow(Loc.GetString("round-end-summary-window-gamemode-name-label", ("gamemode", gamemode)));
gamemodeLabel.SetMessage(gamemodeMessage);
roundEndSummaryContainer.AddChild(gamemodeLabel);
-using System.Numerics;
+using System.Numerics;
using Content.Client.Actions.UI;
using Content.Client.Cooldown;
using Content.Shared.Alert;
private Control SupplyTooltip(Control? sender)
{
- var msg = FormattedMessage.FromMarkup(Loc.GetString(Alert.Name));
- var desc = FormattedMessage.FromMarkup(Loc.GetString(Alert.Description));
+ var msg = FormattedMessage.FromMarkupOrThrow(Loc.GetString(Alert.Name));
+ var desc = FormattedMessage.FromMarkupOrThrow(Loc.GetString(Alert.Description));
return new ActionAlertTooltip(msg, desc) {Cooldown = Cooldown};
}
{
var formatted = new FormattedMessage(3);
formatted.PushColor(color);
- formatted.AddMarkup(message);
+ formatted.AddMarkupOrThrow(message);
formatted.Pop();
Contents.AddMessage(formatted);
}
{
if (state.Paused)
{
- message.AddMarkup(Loc.GetString("analysis-console-info-scanner-paused"));
+ message.AddMarkupOrThrow(Loc.GetString("analysis-console-info-scanner-paused"));
}
else
{
- message.AddMarkup(Loc.GetString("analysis-console-info-scanner"));
+ message.AddMarkupOrThrow(Loc.GetString("analysis-console-info-scanner"));
}
Information.SetMessage(message);
UpdateArtifactIcon(null); //set it to blank
if (state.ScanReport == null)
{
if (!state.AnalyzerConnected) //no analyzer connected
- message.AddMarkup(Loc.GetString("analysis-console-info-no-scanner"));
+ message.AddMarkupOrThrow(Loc.GetString("analysis-console-info-no-scanner"));
else if (!state.CanScan) //no artifact
- message.AddMarkup(Loc.GetString("analysis-console-info-no-artifact"));
+ message.AddMarkupOrThrow(Loc.GetString("analysis-console-info-no-artifact"));
else if (state.Artifact == null) //ready to go
- message.AddMarkup(Loc.GetString("analysis-console-info-ready"));
+ message.AddMarkupOrThrow(Loc.GetString("analysis-console-info-ready"));
}
else
{
{
public FormattedMessage DescribeInner()
{
- return FormattedMessage.FromMarkup($"The command {Command.FullName()} is missing permission flags and cannot be executed.");
+ return FormattedMessage.FromMarkupOrThrow($"The command {Command.FullName()} is missing permission flags and cannot be executed.");
}
public string? Expression { get; set; }
{
public FormattedMessage DescribeInner()
{
- return FormattedMessage.FromMarkup($"You do not have permission to execute {Command.FullName()}");
+ return FormattedMessage.FromMarkupOrThrow($"You do not have permission to execute {Command.FullName()}");
}
public string? Expression { get; set; }
msg.PushNewline();
foreach (var entry in prototype.Entries)
{
- msg.AddMarkup($"- {Loc.GetString("bounty-console-manifest-entry",
+ msg.AddMarkupOrThrow($"- {Loc.GetString("bounty-console-manifest-entry",
("amount", entry.Amount),
("item", Loc.GetString(entry.Name)))}");
msg.PushNewline();
}
- msg.AddMarkup(Loc.GetString("bounty-console-manifest-reward", ("reward", prototype.Reward)));
+ msg.AddMarkupOrThrow(Loc.GetString("bounty-console-manifest-reward", ("reward", prototype.Reward)));
_paperSystem.SetContent((uid, paper), msg.ToMarkup());
}
if (!_actionBlocker.CanSpeak(source) && !ignoreActionBlocker)
return;
- var message = TransformSpeech(source, FormattedMessage.RemoveMarkup(originalMessage));
+ var message = TransformSpeech(source, FormattedMessage.RemoveMarkupOrThrow(originalMessage));
if (message.Length == 0)
return;
var wrappedMessage = Loc.GetString("chat-manager-entity-me-wrap-message",
("entityName", name),
("entity", ent),
- ("message", FormattedMessage.RemoveMarkup(action)));
+ ("message", FormattedMessage.RemoveMarkupOrThrow(action)));
if (checkEmote)
TryEmoteChatInput(source, action);
-using Content.Shared.Examine;
+using Content.Shared.Examine;
using Content.Shared.IdentityManagement;
using Content.Shared.Verbs;
using Robust.Shared.Utility;
Act = () =>
{
var markup = new FormattedMessage();
- markup.AddMarkup(component.Content);
+ markup.AddMarkupOrThrow(component.Content);
_examineSystem.SendExamineTooltip(args.User, uid, markup, false, false);
},
Text = Loc.GetString("detail-examinable-verb-text"),
Dirty(uid, comp);
var msg = Loc.GetString("carp-rift-warning",
- ("location", FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString((uid, xform)))));
+ ("location", FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString((uid, xform)))));
_chat.DispatchGlobalAnnouncement(msg, playSound: false, colorOverride: Color.Red);
_audio.PlayGlobal("/Audio/Misc/notice1.ogg", Filter.Broadcast(), true);
_navMap.SetBeaconEnabled(uid, true);
return;
// Gets location of the implant
- var posText = FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString(uid));
+ var posText = FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString(uid));
var critMessage = Loc.GetString(component.CritMessage, ("user", implanted.ImplantedEntity.Value), ("position", posText));
var deathMessage = Loc.GetString(component.DeathMessage, ("user", implanted.ImplantedEntity.Value), ("position", posText));
// Create the gateway.
var gatewayUid = SpawnAtPosition(generator.Proto, originCoords);
var gatewayComp = Comp<GatewayComponent>(gatewayUid);
- _gateway.SetDestinationName(gatewayUid, FormattedMessage.FromMarkup($"[color=#D381C996]{gatewayName}[/color]"), gatewayComp);
+ _gateway.SetDestinationName(gatewayUid, FormattedMessage.FromMarkupOrThrow($"[color=#D381C996]{gatewayName}[/color]"), gatewayComp);
_gateway.SetEnabled(gatewayUid, true, gatewayComp);
generator.Generated.Add(mapUid);
}
}
codesMessage.PushNewline();
- codesMessage.AddMarkup(Loc.GetString("nuke-codes-list", ("name", MetaData(nukeUid).EntityName), ("code", nuke.Code)));
+ codesMessage.AddMarkupOrThrow(Loc.GetString("nuke-codes-list", ("name", MetaData(nukeUid).EntityName), ("code", nuke.Code)));
break;
}
// warn a crew
var announcement = Loc.GetString("nuke-component-announcement-armed",
("time", (int) component.RemainingTime),
- ("location", FormattedMessage.RemoveMarkup(_navMap.GetNearestBeaconString((uid, nukeXform)))));
+ ("location", FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString((uid, nukeXform)))));
var sender = Loc.GetString("nuke-component-announcement-sender");
_chatSystem.DispatchStationAnnouncement(stationUid ?? uid, announcement, sender, false, null, Color.Red);
-using System.Linq;
+using System.Linq;
using Content.Shared.FixedPoint;
using Content.Shared.Points;
using JetBrains.Annotations;
if (!_player.TryGetPlayerData(id, out var data))
continue;
- msg.AddMarkup(Loc.GetString("point-scoreboard-list",
+ msg.AddMarkupOrThrow(Loc.GetString("point-scoreboard-list",
("place", place),
("name", data.UserName),
("points", points.Int())));
if (args.Handled || args.Target == null || !args.CanReach || !_toolSystem.HasQuality(args.Used, SharedToolSystem.PulseQuality))
return;
- var markup = FormattedMessage.FromMarkup(GenerateCableMarkup(uid));
+ var markup = FormattedMessage.FromMarkupOrThrow(GenerateCableMarkup(uid));
_examineSystem.SendExamineTooltip(args.User, uid, markup, false, false);
args.Handled = true;
}
Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/zap.svg.192dpi.png")),
Act = () =>
{
- var markup = FormattedMessage.FromMarkup(GenerateCableMarkup(uid));
+ var markup = FormattedMessage.FromMarkupOrThrow(GenerateCableMarkup(uid));
_examineSystem.SendExamineTooltip(args.User, uid, markup, false, false);
}
};
-using System.Diagnostics;
+using System.Diagnostics;
using System.Linq;
using Content.Server.Administration;
using Content.Server.Cargo.Systems;
{
public FormattedMessage DescribeInner()
{
- return FormattedMessage.FromMarkup("This command doesn't function if there is more than one or no stations, explicitly specify a station with the ent command or similar.");
+ return FormattedMessage.FromMarkupOrThrow("This command doesn't function if there is more than one or no stations, explicitly specify a station with the ent command or similar.");
}
public string? Expression { get; set; }
break;
codesMessage.PushNewline();
- codesMessage.AddMarkup(code);
+ codesMessage.AddMarkupOrThrow(code);
}
if (!codesMessage.IsEmpty)
var n = component.LastAnalyzedNode;
- msg.AddMarkup(Loc.GetString("analysis-console-info-id", ("id", n.Id)));
+ msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-id", ("id", n.Id)));
msg.PushNewline();
- msg.AddMarkup(Loc.GetString("analysis-console-info-depth", ("depth", n.Depth)));
+ msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-depth", ("depth", n.Depth)));
msg.PushNewline();
var activated = n.Triggered
? "analysis-console-info-triggered-true"
: "analysis-console-info-triggered-false";
- msg.AddMarkup(Loc.GetString(activated));
+ msg.AddMarkupOrThrow(Loc.GetString(activated));
msg.PushNewline();
msg.PushNewline();
var triggerProto = _prototype.Index<ArtifactTriggerPrototype>(n.Trigger);
if (triggerProto.TriggerHint != null)
{
- msg.AddMarkup(Loc.GetString("analysis-console-info-trigger",
+ msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-trigger",
("trigger", Loc.GetString(triggerProto.TriggerHint))) + "\n");
needSecondNewline = true;
}
var effectproto = _prototype.Index<ArtifactEffectPrototype>(n.Effect);
if (effectproto.EffectHint != null)
{
- msg.AddMarkup(Loc.GetString("analysis-console-info-effect",
+ msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-effect",
("effect", Loc.GetString(effectproto.EffectHint))) + "\n");
needSecondNewline = true;
}
if (needSecondNewline)
msg.PushNewline();
- msg.AddMarkup(Loc.GetString("analysis-console-info-edges", ("edges", n.Edges.Count)));
+ msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-edges", ("edges", n.Edges.Count)));
msg.PushNewline();
if (component.LastAnalyzerPointValue != null)
- msg.AddMarkup(Loc.GetString("analysis-console-info-value", ("value", component.LastAnalyzerPointValue)));
+ msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-value", ("value", component.LastAnalyzerPointValue)));
return msg;
}
if (group.Title != null)
{
- message.AddMarkup(Loc.GetString(group.Title));
+ message.AddMarkupOrThrow(Loc.GetString(group.Title));
message.PushNewline();
}
message.AddMessage(GetFormattedMessageFromExamineEntries(group.Entries));
/// <seealso cref="PushMessage"/>
public void PushMarkup(string markup, int priority=0)
{
- PushMessage(FormattedMessage.FromMarkup(markup), priority);
+ PushMessage(FormattedMessage.FromMarkupOrThrow(markup), priority);
}
/// <summary>
/// <seealso cref="AddMessage"/>
public void AddMarkup(string markup, int priority=0)
{
- AddMessage(FormattedMessage.FromMarkup(markup), priority);
+ AddMessage(FormattedMessage.FromMarkupOrThrow(markup), priority);
}
/// <summary>
-using Content.Shared.Damage;
+using Content.Shared.Damage;
using Content.Shared.Examine;
using Content.Shared.FixedPoint;
using Content.Shared.IdentityManagement;
{
first = false;
}
- msg.AddMarkup(chosenLocStr);
+ msg.AddMarkupOrThrow(chosenLocStr);
}
if (msg.IsEmpty)
{
- msg.AddMarkup(Loc.GetString($"health-examinable-{component.LocPrefix}-none"));
+ msg.AddMarkupOrThrow(Loc.GetString($"health-examinable-{component.LocPrefix}-none"));
}
// Anything else want to add on to this?
string flavortext;
if (FlavorText.Length > MaxDescLength)
{
- flavortext = FormattedMessage.RemoveMarkup(FlavorText)[..MaxDescLength];
+ flavortext = FormattedMessage.RemoveMarkupOrThrow(FlavorText)[..MaxDescLength];
}
else
{
- flavortext = FormattedMessage.RemoveMarkup(FlavorText);
+ flavortext = FormattedMessage.RemoveMarkupOrThrow(FlavorText);
}
var appearance = HumanoidCharacterAppearance.EnsureValid(Appearance, Species, Sex);
reasons.Add(reason.ToMarkup());
}
- reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkup(string.Join('\n', reasons));
+ reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkupOrThrow(string.Join('\n', reasons));
return reason == null;
}
}
if (!protoManager.TryIndex(loadout, out var loadoutProto))
{
// Uhh
- reason = FormattedMessage.FromMarkup("");
+ reason = FormattedMessage.FromMarkupOrThrow("");
return false;
}
-using System.Linq;
+using System.Linq;
using Content.Shared.Lathe;
using Content.Shared.Research.Components;
using Content.Shared.Research.Prototypes;
if (includeTier)
{
disciplinePrototype ??= PrototypeManager.Index(technology.Discipline);
- description.AddMarkup(Loc.GetString("research-console-tier-discipline-info",
+ description.AddMarkupOrThrow(Loc.GetString("research-console-tier-discipline-info",
("tier", technology.Tier), ("color", disciplinePrototype.Color), ("discipline", Loc.GetString(disciplinePrototype.Name))));
description.PushNewline();
}
if (includeCost)
{
- description.AddMarkup(Loc.GetString("research-console-cost", ("amount", technology.Cost)));
+ description.AddMarkupOrThrow(Loc.GetString("research-console-cost", ("amount", technology.Cost)));
description.PushNewline();
}
if (includePrereqs && technology.TechnologyPrerequisites.Any())
{
- description.AddMarkup(Loc.GetString("research-console-prereqs-list-start"));
+ description.AddMarkupOrThrow(Loc.GetString("research-console-prereqs-list-start"));
foreach (var recipe in technology.TechnologyPrerequisites)
{
var techProto = PrototypeManager.Index(recipe);
description.PushNewline();
- description.AddMarkup(Loc.GetString("research-console-prereqs-list-entry",
+ description.AddMarkupOrThrow(Loc.GetString("research-console-prereqs-list-entry",
("text", Loc.GetString(techProto.Name))));
}
description.PushNewline();
}
- description.AddMarkup(Loc.GetString("research-console-unlocks-list-start"));
+ description.AddMarkupOrThrow(Loc.GetString("research-console-unlocks-list-start"));
foreach (var recipe in technology.RecipeUnlocks)
{
var recipeProto = PrototypeManager.Index(recipe);
description.PushNewline();
- description.AddMarkup(Loc.GetString("research-console-unlocks-list-entry",
+ description.AddMarkupOrThrow(Loc.GetString("research-console-unlocks-list-entry",
("name", _lathe.GetRecipeName(recipeProto))));
}
foreach (var generic in technology.GenericUnlocks)
{
description.PushNewline();
- description.AddMarkup(Loc.GetString("research-console-unlocks-list-entry-generic",
+ description.AddMarkupOrThrow(Loc.GetString("research-console-unlocks-list-entry-generic",
("text", Loc.GetString(generic.UnlockDescription))));
}