[feat] Custom name for clown, mime and borgs
This commit is contained in:
@@ -19,7 +19,31 @@ namespace Content.Client.Preferences.UI
|
|||||||
if (Profile == null) return;
|
if (Profile == null) return;
|
||||||
var name = HumanoidCharacterProfile.GetName(Profile.Species, Profile.Gender);
|
var name = HumanoidCharacterProfile.GetName(Profile.Species, Profile.Gender);
|
||||||
SetName(name);
|
SetName(name);
|
||||||
UpdateNameEdit();
|
UpdateNamesEdit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RandomizeClownName()
|
||||||
|
{
|
||||||
|
if (Profile == null) return;
|
||||||
|
var name = HumanoidCharacterProfile.GetClownName();
|
||||||
|
SetClownName(name);
|
||||||
|
UpdateNamesEdit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RandomizeMimeName()
|
||||||
|
{
|
||||||
|
if (Profile == null) return;
|
||||||
|
var name = HumanoidCharacterProfile.GetMimeName();
|
||||||
|
SetMimeName(name);
|
||||||
|
UpdateNamesEdit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RandomizeBorgName()
|
||||||
|
{
|
||||||
|
if (Profile == null) return;
|
||||||
|
var name = HumanoidCharacterProfile.GetBorgName();
|
||||||
|
SetBorgName(name);
|
||||||
|
UpdateNamesEdit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,21 @@
|
|||||||
<LineEdit Name="CNameEdit" MinSize="270 0" VerticalAlignment="Center" Margin="5 0 0 0" />
|
<LineEdit Name="CNameEdit" MinSize="270 0" VerticalAlignment="Center" Margin="5 0 0 0" />
|
||||||
<Button Name="CNameRandomize" Text="{Loc 'humanoid-profile-editor-name-random-button'}" />
|
<Button Name="CNameRandomize" Text="{Loc 'humanoid-profile-editor-name-random-button'}" />
|
||||||
</BoxContainer>
|
</BoxContainer>
|
||||||
|
<BoxContainer Orientation="Horizontal" VerticalExpand="True">
|
||||||
|
<Label Text="{Loc 'humanoid-profile-editor-clown-name-label'}" />
|
||||||
|
<LineEdit Name="CClownNameEdit" MinSize="270 0" VerticalAlignment="Center" Margin="5 0 0 0" />
|
||||||
|
<Button Name="CClownNameRandomize" Text="{Loc 'humanoid-profile-editor-name-random-button'}" />
|
||||||
|
</BoxContainer>
|
||||||
|
<BoxContainer Orientation="Horizontal" VerticalExpand="True">
|
||||||
|
<Label Text="{Loc 'humanoid-profile-editor-mime-name-label'}" />
|
||||||
|
<LineEdit Name="CMimeNameEdit" MinSize="270 0" VerticalAlignment="Center" Margin="5 0 0 0" />
|
||||||
|
<Button Name="CMimeNameRandomize" Text="{Loc 'humanoid-profile-editor-name-random-button'}" />
|
||||||
|
</BoxContainer>
|
||||||
|
<BoxContainer Orientation="Horizontal" VerticalExpand="True">
|
||||||
|
<Label Text="{Loc 'humanoid-profile-editor-borg-name-label'}" />
|
||||||
|
<LineEdit Name="CBorgNameEdit" MinSize="270 0" VerticalAlignment="Center" Margin="5 0 0 0" />
|
||||||
|
<Button Name="CBorgNameRandomize" Text="{Loc 'humanoid-profile-editor-name-random-button'}" />
|
||||||
|
</BoxContainer>
|
||||||
<Button Name="CRandomizeEverything" HorizontalAlignment="Center"
|
<Button Name="CRandomizeEverything" HorizontalAlignment="Center"
|
||||||
HorizontalExpand="False" MaxWidth="256"
|
HorizontalExpand="False" MaxWidth="256"
|
||||||
Text="{Loc 'humanoid-profile-editor-randomize-everything-button'}" />
|
Text="{Loc 'humanoid-profile-editor-randomize-everything-button'}" />
|
||||||
|
|||||||
@@ -69,7 +69,13 @@ namespace Content.Client.Preferences.UI
|
|||||||
private LineEdit _ageEdit => CAgeEdit;
|
private LineEdit _ageEdit => CAgeEdit;
|
||||||
private LineEdit _nameEdit => CNameEdit;
|
private LineEdit _nameEdit => CNameEdit;
|
||||||
private TextEdit _flavorTextEdit = null!;
|
private TextEdit _flavorTextEdit = null!;
|
||||||
|
private LineEdit _nameClownEdit => CClownNameEdit;
|
||||||
|
private LineEdit _nameMimeEdit => CMimeNameEdit;
|
||||||
|
private LineEdit _nameBorgEdit => CBorgNameEdit;
|
||||||
private Button _nameRandomButton => CNameRandomize;
|
private Button _nameRandomButton => CNameRandomize;
|
||||||
|
private Button _nameClownRandomButton => CClownNameRandomize;
|
||||||
|
private Button _nameMimeRandomButton => CMimeNameRandomize;
|
||||||
|
private Button _nameBorgRandomButton => CBorgNameRandomize;
|
||||||
private Button _randomizeEverythingButton => CRandomizeEverything;
|
private Button _randomizeEverythingButton => CRandomizeEverything;
|
||||||
private RichTextLabel _warningLabel => CWarningLabel;
|
private RichTextLabel _warningLabel => CWarningLabel;
|
||||||
private Button _saveButton => CSaveButton;
|
private Button _saveButton => CSaveButton;
|
||||||
@@ -136,7 +142,13 @@ namespace Content.Client.Preferences.UI
|
|||||||
#region Name
|
#region Name
|
||||||
|
|
||||||
_nameEdit.OnTextChanged += args => { SetName(args.Text); };
|
_nameEdit.OnTextChanged += args => { SetName(args.Text); };
|
||||||
|
_nameClownEdit.OnTextChanged += args => { SetClownName(args.Text); };
|
||||||
|
_nameMimeEdit.OnTextChanged += args => { SetMimeName(args.Text); };
|
||||||
|
_nameBorgEdit.OnTextChanged += args => { SetBorgName(args.Text); };
|
||||||
_nameRandomButton.OnPressed += args => RandomizeName();
|
_nameRandomButton.OnPressed += args => RandomizeName();
|
||||||
|
_nameClownRandomButton.OnPressed += args => RandomizeClownName();
|
||||||
|
_nameMimeRandomButton.OnPressed += args => RandomizeMimeName();
|
||||||
|
_nameBorgRandomButton.OnPressed += args => RandomizeBorgName();
|
||||||
_randomizeEverythingButton.OnPressed += args => { RandomizeEverything(); };
|
_randomizeEverythingButton.OnPressed += args => { RandomizeEverything(); };
|
||||||
_warningLabel.SetMarkup($"[color=red]{Loc.GetString("humanoid-profile-editor-naming-rules-warning")}[/color]");
|
_warningLabel.SetMarkup($"[color=red]{Loc.GetString("humanoid-profile-editor-naming-rules-warning")}[/color]");
|
||||||
|
|
||||||
@@ -817,6 +829,24 @@ namespace Content.Client.Preferences.UI
|
|||||||
IsDirty = true;
|
IsDirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetClownName(string newName)
|
||||||
|
{
|
||||||
|
Profile = Profile?.WithClownName(newName);
|
||||||
|
IsDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetMimeName(string newName)
|
||||||
|
{
|
||||||
|
Profile = Profile?.WithMimeName(newName);
|
||||||
|
IsDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetBorgName(string newName)
|
||||||
|
{
|
||||||
|
Profile = Profile?.WithBorgName(newName);
|
||||||
|
IsDirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
private void SetClothing(ClothingPreference newClothing)
|
private void SetClothing(ClothingPreference newClothing)
|
||||||
{
|
{
|
||||||
Profile = Profile?.WithClothingPreference(newClothing);
|
Profile = Profile?.WithClothingPreference(newClothing);
|
||||||
@@ -852,9 +882,12 @@ namespace Content.Client.Preferences.UI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateNameEdit()
|
private void UpdateNamesEdit()
|
||||||
{
|
{
|
||||||
_nameEdit.Text = Profile?.Name ?? "";
|
_nameEdit.Text = Profile?.Name ?? "";
|
||||||
|
_nameClownEdit.Text = Profile?.ClownName ?? "";
|
||||||
|
_nameMimeEdit.Text = Profile?.MimeName ?? "";
|
||||||
|
_nameBorgEdit.Text = Profile?.BorgName ?? "";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateFlavorTextEdit()
|
private void UpdateFlavorTextEdit()
|
||||||
@@ -1134,8 +1167,10 @@ namespace Content.Client.Preferences.UI
|
|||||||
|
|
||||||
public void UpdateControls()
|
public void UpdateControls()
|
||||||
{
|
{
|
||||||
if (Profile is null) return;
|
if (Profile is null)
|
||||||
UpdateNameEdit();
|
return;
|
||||||
|
|
||||||
|
UpdateNamesEdit();
|
||||||
UpdateFlavorTextEdit();
|
UpdateFlavorTextEdit();
|
||||||
UpdateSexControls();
|
UpdateSexControls();
|
||||||
UpdateGenderControls();
|
UpdateGenderControls();
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ namespace Content.IntegrationTests.Tests.Preferences
|
|||||||
{
|
{
|
||||||
return new(
|
return new(
|
||||||
"Charlie Charlieson",
|
"Charlie Charlieson",
|
||||||
|
"HONK",
|
||||||
|
"Quiet",
|
||||||
|
"Silicon",
|
||||||
"The biggest boy around.",
|
"The biggest boy around.",
|
||||||
"Human",
|
"Human",
|
||||||
"Eugene",
|
"Eugene",
|
||||||
|
|||||||
1370
Content.Server.Database/Migrations/Postgres/20230409140454_CATaddNamesToProfile.Designer.cs
generated
Normal file
1370
Content.Server.Database/Migrations/Postgres/20230409140454_CATaddNamesToProfile.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,48 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Content.Server.Database.Migrations.Postgres
|
||||||
|
{
|
||||||
|
public partial class CATaddNamesToProfile : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "borg_name",
|
||||||
|
table: "profile",
|
||||||
|
type: "text",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "clown_name",
|
||||||
|
table: "profile",
|
||||||
|
type: "text",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "mime_name",
|
||||||
|
table: "profile",
|
||||||
|
type: "text",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "borg_name",
|
||||||
|
table: "profile");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "clown_name",
|
||||||
|
table: "profile");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "mime_name",
|
||||||
|
table: "profile");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1304
Content.Server.Database/Migrations/Sqlite/20230409140432_CATaddNamesToProfile.Designer.cs
generated
Normal file
1304
Content.Server.Database/Migrations/Sqlite/20230409140432_CATaddNamesToProfile.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,48 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace Content.Server.Database.Migrations.Sqlite
|
||||||
|
{
|
||||||
|
public partial class CATaddNamesToProfile : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "borg_name",
|
||||||
|
table: "profile",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "clown_name",
|
||||||
|
table: "profile",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "mime_name",
|
||||||
|
table: "profile",
|
||||||
|
type: "TEXT",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "borg_name",
|
||||||
|
table: "profile");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "clown_name",
|
||||||
|
table: "profile");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "mime_name",
|
||||||
|
table: "profile");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -320,6 +320,9 @@ namespace Content.Server.Database
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public int Slot { get; set; }
|
public int Slot { get; set; }
|
||||||
[Column("char_name")] public string CharacterName { get; set; } = null!;
|
[Column("char_name")] public string CharacterName { get; set; } = null!;
|
||||||
|
public string ClownName { get; set; } = null!;
|
||||||
|
public string MimeName { get; set; } = null!;
|
||||||
|
public string BorgName { get; set; } = null!;
|
||||||
public string FlavorText { get; set; } = null!;
|
public string FlavorText { get; set; } = null!;
|
||||||
public int Age { get; set; }
|
public int Age { get; set; }
|
||||||
public string Sex { get; set; } = null!;
|
public string Sex { get; set; } = null!;
|
||||||
|
|||||||
@@ -213,6 +213,9 @@ namespace Content.Server.Database
|
|||||||
|
|
||||||
return new HumanoidCharacterProfile(
|
return new HumanoidCharacterProfile(
|
||||||
profile.CharacterName,
|
profile.CharacterName,
|
||||||
|
profile.ClownName,
|
||||||
|
profile.MimeName,
|
||||||
|
profile.BorgName,
|
||||||
profile.FlavorText,
|
profile.FlavorText,
|
||||||
profile.Species,
|
profile.Species,
|
||||||
voice,
|
voice,
|
||||||
@@ -250,6 +253,9 @@ namespace Content.Server.Database
|
|||||||
var markings = JsonSerializer.SerializeToDocument(markingStrings);
|
var markings = JsonSerializer.SerializeToDocument(markingStrings);
|
||||||
|
|
||||||
profile.CharacterName = humanoid.Name;
|
profile.CharacterName = humanoid.Name;
|
||||||
|
profile.ClownName = humanoid.ClownName;
|
||||||
|
profile.MimeName = humanoid.MimeName;
|
||||||
|
profile.BorgName = humanoid.BorgName;
|
||||||
profile.FlavorText = humanoid.FlavorText;
|
profile.FlavorText = humanoid.FlavorText;
|
||||||
profile.Species = humanoid.Species;
|
profile.Species = humanoid.Species;
|
||||||
profile.Age = humanoid.Age;
|
profile.Age = humanoid.Age;
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ namespace Content.Server.GameTicking
|
|||||||
|
|
||||||
DebugTools.AssertNotNull(data);
|
DebugTools.AssertNotNull(data);
|
||||||
|
|
||||||
var newMind = _mind.CreateMind(data!.UserId, character.Name);
|
var newMind = _mind.CreateMind(data!.UserId, character.Name, character.ClownName, character.MimeName, character.BorgName);
|
||||||
_mind.SetUserId(newMind, data.UserId);
|
_mind.SetUserId(newMind, data.UserId);
|
||||||
|
|
||||||
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
|
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
|
||||||
@@ -210,42 +210,31 @@ namespace Content.Server.GameTicking
|
|||||||
_roles.MindAddRole(newMind, job, silent: silent);
|
_roles.MindAddRole(newMind, job, silent: silent);
|
||||||
var jobName = _jobs.MindTryGetJobName(newMind);
|
var jobName = _jobs.MindTryGetJobName(newMind);
|
||||||
|
|
||||||
_playTimeTrackings.PlayerRolesChanged(player);
|
if (_cfg.GetCVar(WhiteCVars.FanaticXenophobiaEnabled))
|
||||||
|
|
||||||
var whitelistedSpecies = jobPrototype.WhitelistedSpecies;
|
|
||||||
|
|
||||||
if (whitelistedSpecies.Count > 0 && !whitelistedSpecies.Contains(character.Species))
|
|
||||||
{
|
{
|
||||||
var playerProfiles = _prefsManager.GetPreferences(player.UserId).Characters.Values.Cast<HumanoidCharacterProfile>().ToList();
|
character = ReplaceBlacklistedSpecies(player, character, jobPrototype);
|
||||||
|
newMind.Comp.CharacterName = character.Name;
|
||||||
var existedAllowedProfile = playerProfiles.FindAll(x => whitelistedSpecies.Contains(x.Species));
|
newMind.Comp.ClownName = character.ClownName;
|
||||||
|
newMind.Comp.MimeName = character.MimeName;
|
||||||
if (existedAllowedProfile.Count == 0)
|
newMind.Comp.BorgName = character.BorgName;
|
||||||
{
|
|
||||||
character = HumanoidCharacterProfile.RandomWithSpecies(_robustRandom.Pick(whitelistedSpecies));
|
|
||||||
_chatManager.DispatchServerMessage(player, "Данному виду запрещено играть на этой профессии. Вам была выдана случайная внешность.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
character = _robustRandom.Pick(existedAllowedProfile);
|
|
||||||
_chatManager.DispatchServerMessage(player, "Данному виду запрещено играть на этой профессии. Вам была выдана случайная внешность с подходящим видом из вашего профиля.");
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuilder availableSpeciesLoc = new StringBuilder();
|
|
||||||
foreach (var specie in whitelistedSpecies)
|
|
||||||
{
|
|
||||||
availableSpeciesLoc.AppendLine("-" + Loc.GetString($"species-name-{specie.ToLower()}"));
|
|
||||||
}
|
|
||||||
|
|
||||||
_chatManager.DispatchServerMessage(player, $"Доступные виды: \n {availableSpeciesLoc}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_playTimeTrackings.PlayerRolesChanged(player);
|
||||||
|
|
||||||
var mobMaybe = _stationSpawning.SpawnPlayerCharacterOnStation(station, job, character);
|
var mobMaybe = _stationSpawning.SpawnPlayerCharacterOnStation(station, job, character);
|
||||||
DebugTools.AssertNotNull(mobMaybe);
|
DebugTools.AssertNotNull(mobMaybe);
|
||||||
var mob = mobMaybe!.Value;
|
var mob = mobMaybe!.Value;
|
||||||
|
|
||||||
|
if (jobId.Contains("Clown"))
|
||||||
|
if (newMind.Comp.ClownName != null)
|
||||||
|
_metaData.SetEntityName(mob, newMind.Comp.ClownName);
|
||||||
|
if (jobId.Contains("Mime"))
|
||||||
|
if (newMind.Comp.MimeName != null)
|
||||||
|
_metaData.SetEntityName(mob, newMind.Comp.MimeName);
|
||||||
|
if (jobId.Contains("Cyborg"))
|
||||||
|
if (newMind.Comp.BorgName != null)
|
||||||
|
_metaData.SetEntityName(mob, newMind.Comp.BorgName);
|
||||||
|
|
||||||
_mind.TransferTo(newMind, mob);
|
_mind.TransferTo(newMind, mob);
|
||||||
|
|
||||||
if (lateJoin && !silent)
|
if (lateJoin && !silent)
|
||||||
@@ -308,6 +297,42 @@ namespace Content.Server.GameTicking
|
|||||||
RaiseLocalEvent(mob, aev, true);
|
RaiseLocalEvent(mob, aev, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HumanoidCharacterProfile ReplaceBlacklistedSpecies(ICommonSession player, HumanoidCharacterProfile character, JobPrototype jobPrototype)
|
||||||
|
{
|
||||||
|
var whitelistedSpecies = jobPrototype.WhitelistedSpecies;
|
||||||
|
|
||||||
|
if (whitelistedSpecies.Count > 0 && !whitelistedSpecies.Contains(character.Species))
|
||||||
|
{
|
||||||
|
var playerProfiles = _prefsManager.GetPreferences(player.UserId).Characters.Values
|
||||||
|
.Cast<HumanoidCharacterProfile>().ToList();
|
||||||
|
|
||||||
|
var existedAllowedProfile = playerProfiles.FindAll(x => whitelistedSpecies.Contains(x.Species));
|
||||||
|
|
||||||
|
if (existedAllowedProfile.Count == 0)
|
||||||
|
{
|
||||||
|
character = HumanoidCharacterProfile.RandomWithSpecies(_robustRandom.Pick(whitelistedSpecies));
|
||||||
|
_chatManager.DispatchServerMessage(player,
|
||||||
|
"Данному виду запрещено играть на этой профессии. Вам была выдана случайная внешность.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
character = _robustRandom.Pick(existedAllowedProfile);
|
||||||
|
_chatManager.DispatchServerMessage(player,
|
||||||
|
"Данному виду запрещено играть на этой профессии. Вам была выдана случайная внешность с подходящим видом из вашего профиля.");
|
||||||
|
}
|
||||||
|
|
||||||
|
StringBuilder availableSpeciesLoc = new StringBuilder();
|
||||||
|
foreach (var specie in whitelistedSpecies)
|
||||||
|
{
|
||||||
|
availableSpeciesLoc.AppendLine("-" + Loc.GetString($"species-name-{specie.ToLower()}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
_chatManager.DispatchServerMessage(player, $"Доступные виды: \n {availableSpeciesLoc}");
|
||||||
|
}
|
||||||
|
|
||||||
|
return character;
|
||||||
|
}
|
||||||
|
|
||||||
public void Respawn(ICommonSession player)
|
public void Respawn(ICommonSession player)
|
||||||
{
|
{
|
||||||
_mind.WipeMind(player);
|
_mind.WipeMind(player);
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
|
|||||||
DebugTools.Assert(entity is null);
|
DebugTools.Assert(entity is null);
|
||||||
var jobEntity = EntityManager.SpawnEntity(prototype.JobEntity, coordinates);
|
var jobEntity = EntityManager.SpawnEntity(prototype.JobEntity, coordinates);
|
||||||
MakeSentientCommand.MakeSentient(jobEntity, EntityManager);
|
MakeSentientCommand.MakeSentient(jobEntity, EntityManager);
|
||||||
DoJobSpecials(job, jobEntity);
|
DoJobSpecials(job, jobEntity, profile);
|
||||||
_identity.QueueIdentityUpdate(jobEntity);
|
_identity.QueueIdentityUpdate(jobEntity);
|
||||||
return jobEntity;
|
return jobEntity;
|
||||||
}
|
}
|
||||||
@@ -141,7 +141,14 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
|
|||||||
var startingGear = _prototypeManager.Index<StartingGearPrototype>(prototype.StartingGear);
|
var startingGear = _prototypeManager.Index<StartingGearPrototype>(prototype.StartingGear);
|
||||||
EquipStartingGear(entity.Value, startingGear, profile);
|
EquipStartingGear(entity.Value, startingGear, profile);
|
||||||
if (profile != null)
|
if (profile != null)
|
||||||
EquipIdCard(entity.Value, profile.Name, prototype, station);
|
{
|
||||||
|
if (prototype.ID.Contains("Clown"))
|
||||||
|
EquipIdCard(entity.Value, profile.ClownName, prototype, station);
|
||||||
|
else if (prototype.ID.Contains("Mime"))
|
||||||
|
EquipIdCard(entity.Value, profile.MimeName, prototype, station);
|
||||||
|
else
|
||||||
|
EquipIdCard(entity.Value, profile.Name, prototype, station);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (profile != null)
|
if (profile != null)
|
||||||
@@ -154,12 +161,12 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DoJobSpecials(job, entity.Value);
|
DoJobSpecials(job, entity.Value, profile);
|
||||||
_identity.QueueIdentityUpdate(entity.Value);
|
_identity.QueueIdentityUpdate(entity.Value);
|
||||||
return entity.Value;
|
return entity.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DoJobSpecials(JobComponent? job, EntityUid entity)
|
private void DoJobSpecials(JobComponent? job, EntityUid entity, HumanoidCharacterProfile? profile)
|
||||||
{
|
{
|
||||||
if (!_prototypeManager.TryIndex(job?.Prototype ?? string.Empty, out JobPrototype? prototype))
|
if (!_prototypeManager.TryIndex(job?.Prototype ?? string.Empty, out JobPrototype? prototype))
|
||||||
return;
|
return;
|
||||||
@@ -168,6 +175,42 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem
|
|||||||
{
|
{
|
||||||
jobSpecial.AfterEquip(entity);
|
jobSpecial.AfterEquip(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prototype.ID.Contains("Cyborg"))
|
||||||
|
{
|
||||||
|
if (_randomizeCharacters || profile == null)
|
||||||
|
{
|
||||||
|
_metaSystem.SetEntityName(entity, HumanoidCharacterProfile.GetBorgName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_metaSystem.SetEntityName(entity, profile.BorgName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prototype.ID.Contains("Clown"))
|
||||||
|
{
|
||||||
|
if (_randomizeCharacters || profile == null)
|
||||||
|
{
|
||||||
|
_metaSystem.SetEntityName(entity, HumanoidCharacterProfile.GetClownName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_metaSystem.SetEntityName(entity, profile.ClownName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (prototype.ID.Contains("Mime"))
|
||||||
|
{
|
||||||
|
if (_randomizeCharacters || profile == null)
|
||||||
|
{
|
||||||
|
_metaSystem.SetEntityName(entity, HumanoidCharacterProfile.GetMimeName());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_metaSystem.SetEntityName(entity, profile.MimeName);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public sealed class StationRecordsSystem : SharedStationRecordsSystem
|
|||||||
TryComp<FingerprintComponent>(player, out var fingerprintComponent);
|
TryComp<FingerprintComponent>(player, out var fingerprintComponent);
|
||||||
TryComp<DnaComponent>(player, out var dnaComponent);
|
TryComp<DnaComponent>(player, out var dnaComponent);
|
||||||
|
|
||||||
CreateGeneralRecord(station, idUid.Value, profile.Name, profile.Age, profile.Species, profile.Gender, jobId, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records);
|
CreateGeneralRecord(station, idUid.Value, profile.Name, profile.ClownName, profile.MimeName, profile.BorgName, profile.Age, profile.Species, profile.Gender, jobId, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ public sealed class StationRecordsSystem : SharedStationRecordsSystem
|
|||||||
/// Optional - other systems should anticipate this.
|
/// Optional - other systems should anticipate this.
|
||||||
/// </param>
|
/// </param>
|
||||||
/// <param name="records">Station records component.</param>
|
/// <param name="records">Station records component.</param>
|
||||||
public void CreateGeneralRecord(EntityUid station, EntityUid? idUid, string name, int age, string species, Gender gender, string jobId, string? mobFingerprint, string? dna, HumanoidCharacterProfile? profile = null,
|
public void CreateGeneralRecord(EntityUid station, EntityUid? idUid, string name, string clownName, string mimeName, string borgName, int age, string species, Gender gender, string jobId, string? mobFingerprint, string? dna, HumanoidCharacterProfile? profile = null,
|
||||||
StationRecordsComponent? records = null)
|
StationRecordsComponent? records = null)
|
||||||
{
|
{
|
||||||
if (!Resolve(station, ref records))
|
if (!Resolve(station, ref records))
|
||||||
@@ -116,6 +116,9 @@ public sealed class StationRecordsSystem : SharedStationRecordsSystem
|
|||||||
var record = new GeneralStationRecord()
|
var record = new GeneralStationRecord()
|
||||||
{
|
{
|
||||||
Name = name,
|
Name = name,
|
||||||
|
ClownName = clownName,
|
||||||
|
MimeName = mimeName,
|
||||||
|
BorgName = borgName,
|
||||||
Age = age,
|
Age = age,
|
||||||
JobTitle = jobPrototype.LocalizedName,
|
JobTitle = jobPrototype.LocalizedName,
|
||||||
JobIcon = jobPrototype.Icon,
|
JobIcon = jobPrototype.Icon,
|
||||||
|
|||||||
@@ -72,5 +72,20 @@ namespace Content.Shared.Humanoid
|
|||||||
}
|
}
|
||||||
// WD-EDIT
|
// WD-EDIT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetBorgName()
|
||||||
|
{
|
||||||
|
return _random.Pick(_prototypeManager.Index<DatasetPrototype>("names_autoborg").Values); //Реди
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetMimeName()
|
||||||
|
{
|
||||||
|
return _random.Pick(_prototypeManager.Index<DatasetPrototype>("names_mime").Values); //Реди
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetClownName()
|
||||||
|
{
|
||||||
|
return _random.Pick(_prototypeManager.Index<DatasetPrototype>("names_clown").Values); //Реди
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,15 @@ namespace Content.Shared.Mind
|
|||||||
[DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)]
|
[DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
public string? CharacterName { get; set; }
|
public string? CharacterName { get; set; }
|
||||||
|
|
||||||
|
[DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public string? ClownName { get; set; }
|
||||||
|
|
||||||
|
[DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public string? MimeName { get; set; }
|
||||||
|
|
||||||
|
[DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public string? BorgName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The time of death for this Mind.
|
/// The time of death for this Mind.
|
||||||
/// Can be null - will be null if the Mind is not considered "dead".
|
/// Can be null - will be null if the Mind is not considered "dead".
|
||||||
|
|||||||
@@ -184,12 +184,15 @@ public abstract class SharedMindSystem : EntitySystem
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Entity<MindComponent> CreateMind(NetUserId? userId, string? name = null)
|
public Entity<MindComponent> CreateMind(NetUserId? userId, string? name = null, string? clownName = null, string? mimeName = null, string? borgName = null)
|
||||||
{
|
{
|
||||||
var mindId = Spawn(null, MapCoordinates.Nullspace);
|
var mindId = Spawn(null, MapCoordinates.Nullspace);
|
||||||
_metadata.SetEntityName(mindId, name == null ? "mind" : $"mind ({name})");
|
_metadata.SetEntityName(mindId, name == null ? "mind" : $"mind ({name})");
|
||||||
var mind = EnsureComp<MindComponent>(mindId);
|
var mind = EnsureComp<MindComponent>(mindId);
|
||||||
mind.CharacterName = name;
|
mind.CharacterName = name;
|
||||||
|
mind.ClownName = clownName;
|
||||||
|
mind.MimeName = mimeName;
|
||||||
|
mind.BorgName = borgName;
|
||||||
SetUserId(mindId, userId, mind);
|
SetUserId(mindId, userId, mind);
|
||||||
|
|
||||||
return (mindId, mind);
|
return (mindId, mind);
|
||||||
|
|||||||
@@ -34,6 +34,9 @@ namespace Content.Shared.Preferences
|
|||||||
|
|
||||||
private HumanoidCharacterProfile(
|
private HumanoidCharacterProfile(
|
||||||
string name,
|
string name,
|
||||||
|
string clownName,
|
||||||
|
string mimeName,
|
||||||
|
string borgName,
|
||||||
string flavortext,
|
string flavortext,
|
||||||
string species,
|
string species,
|
||||||
int age,
|
int age,
|
||||||
@@ -49,6 +52,9 @@ namespace Content.Shared.Preferences
|
|||||||
List<string> traitPreferences)
|
List<string> traitPreferences)
|
||||||
{
|
{
|
||||||
Name = name;
|
Name = name;
|
||||||
|
ClownName = clownName;
|
||||||
|
MimeName = mimeName;
|
||||||
|
BorgName = borgName;
|
||||||
FlavorText = flavortext;
|
FlavorText = flavortext;
|
||||||
Species = species;
|
Species = species;
|
||||||
Voice = voice;
|
Voice = voice;
|
||||||
@@ -70,7 +76,7 @@ namespace Content.Shared.Preferences
|
|||||||
Dictionary<string, JobPriority> jobPriorities,
|
Dictionary<string, JobPriority> jobPriorities,
|
||||||
List<string> antagPreferences,
|
List<string> antagPreferences,
|
||||||
List<string> traitPreferences)
|
List<string> traitPreferences)
|
||||||
: this(other.Name, other.FlavorText, other.Species, other.Voice, other.Age, other.Sex, other.Gender, other.Appearance, other.Clothing, other.Backpack,
|
: this(other.Name, other.ClownName, other.MimeName, other.BorgName, other.FlavorText, other.Species, other.Voice, other.Age, other.Sex, other.Gender, other.Appearance, other.Clothing, other.Backpack,
|
||||||
jobPriorities, other.PreferenceUnavailable, antagPreferences, traitPreferences)
|
jobPriorities, other.PreferenceUnavailable, antagPreferences, traitPreferences)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -83,6 +89,9 @@ namespace Content.Shared.Preferences
|
|||||||
|
|
||||||
public HumanoidCharacterProfile(
|
public HumanoidCharacterProfile(
|
||||||
string name,
|
string name,
|
||||||
|
string clownName,
|
||||||
|
string mimeName,
|
||||||
|
string borgName,
|
||||||
string flavortext,
|
string flavortext,
|
||||||
string species,
|
string species,
|
||||||
string voice,
|
string voice,
|
||||||
@@ -96,7 +105,7 @@ namespace Content.Shared.Preferences
|
|||||||
PreferenceUnavailableMode preferenceUnavailable,
|
PreferenceUnavailableMode preferenceUnavailable,
|
||||||
IReadOnlyList<string> antagPreferences,
|
IReadOnlyList<string> antagPreferences,
|
||||||
IReadOnlyList<string> traitPreferences)
|
IReadOnlyList<string> traitPreferences)
|
||||||
: this(name, flavortext, species, age, sex, voice, gender, appearance, clothing, backpack, new Dictionary<string, JobPriority>(jobPriorities),
|
: this(name, clownName, mimeName, borgName, flavortext, species, age, sex, voice, gender, appearance, clothing, backpack, new Dictionary<string, JobPriority>(jobPriorities),
|
||||||
preferenceUnavailable, new List<string>(antagPreferences), new List<string>(traitPreferences))
|
preferenceUnavailable, new List<string>(antagPreferences), new List<string>(traitPreferences))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -108,6 +117,9 @@ namespace Content.Shared.Preferences
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public HumanoidCharacterProfile() : this(
|
public HumanoidCharacterProfile() : this(
|
||||||
"John Doe",
|
"John Doe",
|
||||||
|
"HONK",
|
||||||
|
"Quiet",
|
||||||
|
"Silicon",
|
||||||
"",
|
"",
|
||||||
SharedHumanoidAppearanceSystem.DefaultSpecies,
|
SharedHumanoidAppearanceSystem.DefaultSpecies,
|
||||||
SharedHumanoidAppearanceSystem.DefaultVoice,
|
SharedHumanoidAppearanceSystem.DefaultVoice,
|
||||||
@@ -136,6 +148,9 @@ namespace Content.Shared.Preferences
|
|||||||
{
|
{
|
||||||
return new(
|
return new(
|
||||||
"John Doe",
|
"John Doe",
|
||||||
|
"HONK",
|
||||||
|
"Quiet",
|
||||||
|
"Silicon",
|
||||||
"",
|
"",
|
||||||
species,
|
species,
|
||||||
SharedHumanoidAppearanceSystem.DefaultVoice,
|
SharedHumanoidAppearanceSystem.DefaultVoice,
|
||||||
@@ -190,8 +205,11 @@ namespace Content.Shared.Preferences
|
|||||||
var gender = sex == Sex.Male ? Gender.Male : Gender.Female;
|
var gender = sex == Sex.Male ? Gender.Male : Gender.Female;
|
||||||
|
|
||||||
var name = GetName(species, gender);
|
var name = GetName(species, gender);
|
||||||
|
var clownName = GetClownName();
|
||||||
|
var mimeName = GetMimeName();
|
||||||
|
var borgName = GetBorgName();
|
||||||
|
|
||||||
return new HumanoidCharacterProfile(name, "", species, voiceId, age, sex, gender, HumanoidCharacterAppearance.Random(species, sex), ClothingPreference.Jumpsuit, BackpackPreference.Backpack,
|
return new HumanoidCharacterProfile(name, clownName, mimeName, borgName, "", species, voiceId, age, sex, gender, HumanoidCharacterAppearance.Random(species, sex), ClothingPreference.Jumpsuit, BackpackPreference.Backpack,
|
||||||
new Dictionary<string, JobPriority>
|
new Dictionary<string, JobPriority>
|
||||||
{
|
{
|
||||||
{SharedGameTicker.FallbackOverflowJob, JobPriority.High},
|
{SharedGameTicker.FallbackOverflowJob, JobPriority.High},
|
||||||
@@ -199,6 +217,9 @@ namespace Content.Shared.Preferences
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string Name { get; private set; }
|
public string Name { get; private set; }
|
||||||
|
public string ClownName { get; private set; }
|
||||||
|
public string MimeName { get; private set; }
|
||||||
|
public string BorgName { get; private set; }
|
||||||
public string FlavorText { get; private set; }
|
public string FlavorText { get; private set; }
|
||||||
public string Species { get; private set; }
|
public string Species { get; private set; }
|
||||||
|
|
||||||
@@ -235,6 +256,19 @@ namespace Content.Shared.Preferences
|
|||||||
return new(this) { Name = name };
|
return new(this) { Name = name };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HumanoidCharacterProfile WithClownName(string name)
|
||||||
|
{
|
||||||
|
return new(this) { ClownName = name };
|
||||||
|
}
|
||||||
|
public HumanoidCharacterProfile WithMimeName(string name)
|
||||||
|
{
|
||||||
|
return new(this) { MimeName = name };
|
||||||
|
}
|
||||||
|
public HumanoidCharacterProfile WithBorgName(string name)
|
||||||
|
{
|
||||||
|
return new(this) { BorgName = name };
|
||||||
|
}
|
||||||
|
|
||||||
public HumanoidCharacterProfile WithFlavorText(string flavorText)
|
public HumanoidCharacterProfile WithFlavorText(string flavorText)
|
||||||
{
|
{
|
||||||
return new(this) { FlavorText = flavorText };
|
return new(this) { FlavorText = flavorText };
|
||||||
@@ -357,6 +391,9 @@ namespace Content.Shared.Preferences
|
|||||||
{
|
{
|
||||||
if (maybeOther is not HumanoidCharacterProfile other) return false;
|
if (maybeOther is not HumanoidCharacterProfile other) return false;
|
||||||
if (Name != other.Name) return false;
|
if (Name != other.Name) return false;
|
||||||
|
if (ClownName != other.ClownName) return false;
|
||||||
|
if (MimeName != other.MimeName) return false;
|
||||||
|
if (BorgName != other.BorgName) return false;
|
||||||
if (Age != other.Age) return false;
|
if (Age != other.Age) return false;
|
||||||
if (Sex != other.Sex) return false;
|
if (Sex != other.Sex) return false;
|
||||||
if (Gender != other.Gender) return false;
|
if (Gender != other.Gender) return false;
|
||||||
@@ -414,6 +451,9 @@ namespace Content.Shared.Preferences
|
|||||||
};
|
};
|
||||||
|
|
||||||
string name;
|
string name;
|
||||||
|
string clownName;
|
||||||
|
string mimeName;
|
||||||
|
string borgName;
|
||||||
if (string.IsNullOrEmpty(Name))
|
if (string.IsNullOrEmpty(Name))
|
||||||
{
|
{
|
||||||
name = GetName(Species, gender);
|
name = GetName(Species, gender);
|
||||||
@@ -426,13 +466,55 @@ namespace Content.Shared.Preferences
|
|||||||
{
|
{
|
||||||
name = Name;
|
name = Name;
|
||||||
}
|
}
|
||||||
|
if (string.IsNullOrEmpty(ClownName))
|
||||||
|
{
|
||||||
|
clownName = GetClownName();
|
||||||
|
}
|
||||||
|
else if (ClownName.Length > MaxNameLength)
|
||||||
|
{
|
||||||
|
clownName = ClownName[..MaxNameLength];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clownName = ClownName;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(MimeName))
|
||||||
|
{
|
||||||
|
mimeName = GetMimeName();
|
||||||
|
}
|
||||||
|
else if (MimeName.Length > MaxNameLength)
|
||||||
|
{
|
||||||
|
mimeName = MimeName[..MaxNameLength];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mimeName = MimeName;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(BorgName))
|
||||||
|
{
|
||||||
|
borgName = GetBorgName();
|
||||||
|
}
|
||||||
|
else if (BorgName.Length > MaxNameLength)
|
||||||
|
{
|
||||||
|
borgName = BorgName[..MaxNameLength];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
borgName = BorgName;
|
||||||
|
}
|
||||||
|
|
||||||
name = name.Trim();
|
name = name.Trim();
|
||||||
|
clownName = clownName.Trim();
|
||||||
|
mimeName = mimeName.Trim();
|
||||||
|
borgName = borgName.Trim();
|
||||||
|
|
||||||
var configManager = IoCManager.Resolve<IConfigurationManager>();
|
var configManager = IoCManager.Resolve<IConfigurationManager>();
|
||||||
if (configManager.GetCVar(CCVars.RestrictedNames))
|
if (configManager.GetCVar(CCVars.RestrictedNames))
|
||||||
{
|
{
|
||||||
name = Regex.Replace(name, @"[^А-Я,а-я,0-9, -]", string.Empty); //WD EDIT
|
name = Regex.Replace(name, @"[^А-Я,а-я,0-9, -]", string.Empty); //WD EDIT
|
||||||
|
clownName = Regex.Replace(clownName, @"[^А-Я,а-я,0-9, -]", string.Empty);
|
||||||
|
mimeName = Regex.Replace(mimeName, @"[^А-Я,а-я,0-9, -]", string.Empty);
|
||||||
|
borgName = Regex.Replace(borgName, @"[^А-Я,а-я,0-9, -]", string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configManager.GetCVar(CCVars.ICNameCase))
|
if (configManager.GetCVar(CCVars.ICNameCase))
|
||||||
@@ -441,11 +523,23 @@ namespace Content.Shared.Preferences
|
|||||||
name = Regex.Replace(name,
|
name = Regex.Replace(name,
|
||||||
@"^(?<word>\w)|\b(?<word>\w)(?=\w*$)",
|
@"^(?<word>\w)|\b(?<word>\w)(?=\w*$)",
|
||||||
m => m.Groups["word"].Value.ToUpper());
|
m => m.Groups["word"].Value.ToUpper());
|
||||||
|
clownName = Regex.Replace(clownName,
|
||||||
|
@"^(?<word>\w)|\b(?<word>\w)(?=\w*$)",
|
||||||
|
m => m.Groups["word"].Value.ToUpper());
|
||||||
|
mimeName = Regex.Replace(mimeName,
|
||||||
|
@"^(?<word>\w)|\b(?<word>\w)(?=\w*$)",
|
||||||
|
m => m.Groups["word"].Value.ToUpper());
|
||||||
|
borgName = Regex.Replace(borgName,
|
||||||
|
@"^(?<word>\w)|\b(?<word>\w)(?=\w*$)",
|
||||||
|
m => m.Groups["word"].Value.ToUpper());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(name))
|
if (string.IsNullOrEmpty(name))
|
||||||
{
|
{
|
||||||
name = GetName(Species, gender);
|
name = GetName(Species, gender);
|
||||||
|
clownName = GetClownName();
|
||||||
|
mimeName = GetMimeName();
|
||||||
|
borgName = GetBorgName();
|
||||||
}
|
}
|
||||||
|
|
||||||
string flavortext;
|
string flavortext;
|
||||||
@@ -503,6 +597,9 @@ namespace Content.Shared.Preferences
|
|||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
Name = name;
|
Name = name;
|
||||||
|
ClownName = clownName;
|
||||||
|
MimeName = mimeName;
|
||||||
|
BorgName = borgName;
|
||||||
FlavorText = flavortext;
|
FlavorText = flavortext;
|
||||||
Age = age;
|
Age = age;
|
||||||
Sex = sex;
|
Sex = sex;
|
||||||
@@ -544,6 +641,24 @@ namespace Content.Shared.Preferences
|
|||||||
return namingSystem.GetName(species, gender);
|
return namingSystem.GetName(species, gender);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetClownName()
|
||||||
|
{
|
||||||
|
var namingSystem = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<NamingSystem>();
|
||||||
|
return namingSystem.GetClownName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetMimeName()
|
||||||
|
{
|
||||||
|
var namingSystem = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<NamingSystem>();
|
||||||
|
return namingSystem.GetMimeName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetBorgName()
|
||||||
|
{
|
||||||
|
var namingSystem = IoCManager.Resolve<IEntitySystemManager>().GetEntitySystem<NamingSystem>();
|
||||||
|
return namingSystem.GetBorgName();
|
||||||
|
}
|
||||||
|
|
||||||
public override bool Equals(object? obj)
|
public override bool Equals(object? obj)
|
||||||
{
|
{
|
||||||
return obj is HumanoidCharacterProfile other && MemberwiseEquals(other);
|
return obj is HumanoidCharacterProfile other && MemberwiseEquals(other);
|
||||||
@@ -562,6 +677,9 @@ namespace Content.Shared.Preferences
|
|||||||
Clothing,
|
Clothing,
|
||||||
Backpack
|
Backpack
|
||||||
),
|
),
|
||||||
|
ClownName,
|
||||||
|
MimeName,
|
||||||
|
BorgName,
|
||||||
PreferenceUnavailable,
|
PreferenceUnavailable,
|
||||||
_jobPriorities,
|
_jobPriorities,
|
||||||
_antagPreferences,
|
_antagPreferences,
|
||||||
|
|||||||
@@ -15,6 +15,15 @@ public sealed class GeneralStationRecord
|
|||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public string Name = string.Empty;
|
public string Name = string.Empty;
|
||||||
|
|
||||||
|
[ViewVariables]
|
||||||
|
public string ClownName = string.Empty;
|
||||||
|
|
||||||
|
[ViewVariables]
|
||||||
|
public string MimeName = string.Empty;
|
||||||
|
|
||||||
|
[ViewVariables]
|
||||||
|
public string BorgName = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Age of the person that this station record represents.
|
/// Age of the person that this station record represents.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user