From fb6704735b8627c29491ab238c88d968d46ad1db Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sat, 1 Mar 2025 15:08:34 +0100 Subject: [PATCH 01/91] Fix being able to write on/stamp/fax paper scrap (#35596) * init * item * requested changes * Apply suggestions from code review --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Entities/Objects/Misc/paper.yml | 109 +++++++++--------- 1 file changed, 55 insertions(+), 54 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index a1b287b8a7..a8b5bf0cab 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -1,6 +1,58 @@ +- type: entity + parent: BaseItem + id: BasePaper + abstract: true + components: + - type: Tag + tags: + - Document + - Paper + - type: Appearance + - type: Flammable + fireSpread: true + alwaysCombustible: true + damage: + types: + Heat: 1 + - type: FireVisuals + sprite: Effects/fire.rsi + normalState: fire + - type: Damageable + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 15 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + Ash: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Food + solution: food + delay: 7 + forceFeedDelay: 7 + - type: FlavorProfile + flavors: + - paper + - type: BadFood + - type: SolutionContainerManager + solutions: + food: + maxVol: 1 + reagents: + - ReagentId: Fiber + Quantity: 1 + - type: Item + size: Tiny + - type: entity name: paper - parent: BaseItem + parent: BasePaper id: Paper description: 'A piece of white paper.' components: @@ -23,58 +75,12 @@ interfaces: enum.PaperUiKey.Key: type: PaperBoundUserInterface - - type: Item - size: Tiny - - type: Tag - tags: - - Document - - Paper - - type: Appearance - type: FaxableObject - type: PaperVisuals - - type: Flammable - fireSpread: true - alwaysCombustible: true - damage: - types: - Heat: 1 - - type: FireVisuals - sprite: Effects/fire.rsi - normalState: fire - - type: Damageable - damageModifierSet: Wood - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Ash: - min: 1 - max: 1 - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: Food - solution: food - delay: 7 - forceFeedDelay: 7 - - type: FlavorProfile - flavors: - - paper - - type: BadFood - - type: SolutionContainerManager - solutions: - food: - maxVol: 1 - reagents: - - ReagentId: Fiber - Quantity: 1 - type: entity name: paper scrap - parent: Paper + parent: BasePaper id: PaperScrap description: 'A crumpled up piece of white paper.' components: @@ -84,14 +90,9 @@ - Trash - Paper - type: Sprite + sprite: Objects/Misc/bureaucracy.rsi layers: - state: scrap - - state: paper_words - map: ["enum.PaperVisualLayers.Writing"] - visible: false - - state: paper_stamp-generic - map: ["enum.PaperVisualLayers.Stamp"] - visible: false - type: entity name: office paper From 41cfb9d00a92ebf03e43b24c81b807a0a1923d10 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 1 Mar 2025 14:09:40 +0000 Subject: [PATCH 02/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4f3d77b550..e8bfddc09c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: slarticodefast - changes: - - message: Fixed the playtime stats window not showing entries correctly. - type: Fix - id: 7525 - time: '2024-10-17T21:32:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32856 - author: Thatonestomf changes: - message: Smile no longer has a ghost role raffle attached to her @@ -3896,3 +3889,10 @@ id: 8024 time: '2025-03-01T09:56:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35158 +- author: ScarKy0 + changes: + - message: You can no longer fax, stamp or write on paper scrap. + type: Fix + id: 8025 + time: '2025-03-01T14:08:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35596 From 60ce6a8a06d058d1aa0b029a5706d807da14191d Mon Sep 17 00:00:00 2001 From: FungiFellow <151778459+FungiFellow@users.noreply.github.com> Date: Sat, 1 Mar 2025 11:19:19 -0600 Subject: [PATCH 03/91] Changed Pride to Hubris in ion_storm.yml (#35602) Update ion_storm.yml --- Resources/Prototypes/Datasets/ion_storm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Datasets/ion_storm.yml b/Resources/Prototypes/Datasets/ion_storm.yml index 70afce4be9..e7ad40eddb 100644 --- a/Resources/Prototypes/Datasets/ion_storm.yml +++ b/Resources/Prototypes/Datasets/ion_storm.yml @@ -282,6 +282,7 @@ - GRAVITY - HAPPINESS - HONOR + - HUBRIS - HUMANITY - HUMOR - IMAGINATION @@ -299,7 +300,6 @@ - PAIN - PHYSICS - POVERTY - - PRIDE - PROGRESS - REALITY - REVOLUTION From c066035add3f21cb668666430d33ae5995619d05 Mon Sep 17 00:00:00 2001 From: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Date: Sat, 1 Mar 2025 11:42:33 -0600 Subject: [PATCH 04/91] Sentry turrets - Part 3: Turret AI (#35058) * Initial commit * Updated Access/command.yml * Fix for Access/AccessLevelPrototype.cs * Added silicon access levels to admin items * Included self-recharging battery changes * Revert "Included self-recharging battery changes" * Addressed reviewers comments * Additional reviewer comments --- Content.Server/Access/Systems/IdCardSystem.cs | 7 +- .../Components/NPCRangedCombatComponent.cs | 7 + Content.Server/NPC/HTN/HTNComponent.cs | 8 +- Content.Server/NPC/HTN/HTNSystem.cs | 38 +++++- .../Preconditions/TargetInLOSPrecondition.cs | 7 +- .../Operators/Combat/Ranged/GunOperator.cs | 8 ++ .../Considerations/TargetTargetingCon.cs | 12 ++ .../NPC/Systems/NPCCombatSystem.Ranged.cs | 5 +- .../NPC/Systems/NPCUtilitySystem.cs | 10 ++ Content.Shared/Access/AccessLevelPrototype.cs | 8 +- .../Turrets/TurretTargetSettingsComponent.cs | 19 +++ .../Turrets/TurretTargetSettingsSystem.cs | 126 ++++++++++++++++++ .../en-US/prototypes/access/accesses.ftl | 4 + Resources/Prototypes/Access/command.yml | 12 +- Resources/Prototypes/Access/silicon.yml | 21 +++ .../Mobs/Cyborgs/base_borg_chassis.yml | 4 +- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 3 + .../Entities/Mobs/Player/admin_ghost.yml | 1 + .../Entities/Mobs/Player/silicon.yml | 1 + .../Objects/Misc/identification_cards.yml | 1 + .../Objects/Tools/access_configurator.yml | 18 ++- Resources/Prototypes/NPCs/root.yml | 33 +++++ Resources/Prototypes/NPCs/utility_queries.yml | 4 + .../Objects/Specific/Robotics/id_chips.yml | 7 + 24 files changed, 350 insertions(+), 14 deletions(-) create mode 100644 Content.Server/NPC/Queries/Considerations/TargetTargetingCon.cs create mode 100644 Content.Shared/Turrets/TurretTargetSettingsComponent.cs create mode 100644 Content.Shared/Turrets/TurretTargetSettingsSystem.cs create mode 100644 Resources/Prototypes/Access/silicon.yml diff --git a/Content.Server/Access/Systems/IdCardSystem.cs b/Content.Server/Access/Systems/IdCardSystem.cs index e379f7fb2a..b34dc4ea8f 100644 --- a/Content.Server/Access/Systems/IdCardSystem.cs +++ b/Content.Server/Access/Systems/IdCardSystem.cs @@ -78,7 +78,12 @@ public sealed class IdCardSystem : SharedIdCardSystem } // Give them a wonderful new access to compensate for everything - var random = _random.Pick(_prototypeManager.EnumeratePrototypes().ToArray()); + var ids = _prototypeManager.EnumeratePrototypes().Where(x => x.CanAddToIdCard).ToArray(); + + if (ids.Length == 0) + return; + + var random = _random.Pick(ids); access.Tags.Add(random.ID); Dirty(uid, access); diff --git a/Content.Server/NPC/Components/NPCRangedCombatComponent.cs b/Content.Server/NPC/Components/NPCRangedCombatComponent.cs index 2e4fcf5298..21cdfba801 100644 --- a/Content.Server/NPC/Components/NPCRangedCombatComponent.cs +++ b/Content.Server/NPC/Components/NPCRangedCombatComponent.cs @@ -40,6 +40,13 @@ public sealed partial class NPCRangedCombatComponent : Component [ViewVariables(VVAccess.ReadWrite)] public bool TargetInLOS = false; + /// + /// If true, only opaque objects will block line of sight. + /// + [ViewVariables(VVAccess.ReadWrite)] + // ReSharper disable once InconsistentNaming + public bool UseOpaqueForLOSChecks = false; + /// /// Delay after target is in LOS before we start shooting. /// diff --git a/Content.Server/NPC/HTN/HTNComponent.cs b/Content.Server/NPC/HTN/HTNComponent.cs index f482e0808c..788a347638 100644 --- a/Content.Server/NPC/HTN/HTNComponent.cs +++ b/Content.Server/NPC/HTN/HTNComponent.cs @@ -10,7 +10,7 @@ public sealed partial class HTNComponent : NPCComponent /// The base task to use for planning /// [ViewVariables(VVAccess.ReadWrite), - DataField("rootTask", required: true)] + DataField("rootTask", required: true)] public HTNCompoundTask RootTask = default!; /// @@ -47,4 +47,10 @@ public sealed partial class HTNComponent : NPCComponent /// Is this NPC currently planning? /// [ViewVariables] public bool Planning => PlanningJob != null; + + /// + /// Determines whether plans should be made / updated for this entity + /// + [DataField] + public bool Enabled = true; } diff --git a/Content.Server/NPC/HTN/HTNSystem.cs b/Content.Server/NPC/HTN/HTNSystem.cs index cfa670e144..ce4b248a0d 100644 --- a/Content.Server/NPC/HTN/HTNSystem.cs +++ b/Content.Server/NPC/HTN/HTNSystem.cs @@ -133,6 +133,39 @@ public sealed class HTNSystem : EntitySystem component.PlanningJob = null; } + /// + /// Enable / disable the hierarchical task network of an entity + /// + /// The entity and its + /// Set 'true' to enable, or 'false' to disable, the HTN + /// Specifies a time in seconds before the entity can start planning a new action (only takes effect when the HTN is enabled) + // ReSharper disable once InconsistentNaming + [PublicAPI] + public void SetHTNEnabled(Entity ent, bool state, float planCooldown = 0f) + { + if (ent.Comp.Enabled == state) + return; + + ent.Comp.Enabled = state; + ent.Comp.PlanAccumulator = planCooldown; + + ent.Comp.PlanningToken?.Cancel(); + ent.Comp.PlanningToken = null; + + if (ent.Comp.Plan != null) + { + var currentOperator = ent.Comp.Plan.CurrentOperator; + + ShutdownTask(currentOperator, ent.Comp.Blackboard, HTNOperatorStatus.Failed); + ShutdownPlan(ent.Comp); + + ent.Comp.Plan = null; + } + + if (ent.Comp.Enabled && ent.Comp.PlanAccumulator <= 0) + RequestPlan(ent.Comp); + } + /// /// Forces the NPC to replan. /// @@ -147,12 +180,15 @@ public sealed class HTNSystem : EntitySystem _planQueue.Process(); var query = EntityQueryEnumerator(); - while(query.MoveNext(out var uid, out _, out var comp)) + while (query.MoveNext(out var uid, out _, out var comp)) { // If we're over our max count or it's not MapInit then ignore the NPC. if (count >= maxUpdates) break; + if (!comp.Enabled) + continue; + if (comp.PlanningJob != null) { if (comp.PlanningJob.Exception != null) diff --git a/Content.Server/NPC/HTN/Preconditions/TargetInLOSPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/TargetInLOSPrecondition.cs index 0b233292a4..bb27ae8868 100644 --- a/Content.Server/NPC/HTN/Preconditions/TargetInLOSPrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/TargetInLOSPrecondition.cs @@ -1,4 +1,5 @@ using Content.Server.Interaction; +using Content.Shared.Physics; namespace Content.Server.NPC.HTN.Preconditions; @@ -13,6 +14,9 @@ public sealed partial class TargetInLOSPrecondition : HTNPrecondition [DataField("rangeKey")] public string RangeKey = "RangeKey"; + [DataField("opaqueKey")] + public bool UseOpaqueForLOSChecksKey = true; + public override void Initialize(IEntitySystemManager sysManager) { base.Initialize(sysManager); @@ -27,7 +31,8 @@ public sealed partial class TargetInLOSPrecondition : HTNPrecondition return false; var range = blackboard.GetValueOrDefault(RangeKey, _entManager); + var collisionGroup = UseOpaqueForLOSChecksKey ? CollisionGroup.Opaque : (CollisionGroup.Impassable | CollisionGroup.InteractImpassable); - return _interaction.InRangeUnobstructed(owner, target, range); + return _interaction.InRangeUnobstructed(owner, target, range, collisionGroup); } } diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Ranged/GunOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Ranged/GunOperator.cs index 53c5ed1952..65620e73aa 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Ranged/GunOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Combat/Ranged/GunOperator.cs @@ -33,6 +33,12 @@ public sealed partial class GunOperator : HTNOperator, IHtnConditionalShutdown [DataField("requireLOS")] public bool RequireLOS = false; + /// + /// If true, only opaque objects will block line of sight. + /// + [DataField("opaqueKey")] + public bool UseOpaqueForLOSChecks = false; + // Like movement we add a component and pass it off to the dedicated system. public override async Task<(bool Valid, Dictionary? Effects)> Plan(NPCBlackboard blackboard, @@ -56,8 +62,10 @@ public sealed partial class GunOperator : HTNOperator, IHtnConditionalShutdown public override void Startup(NPCBlackboard blackboard) { base.Startup(blackboard); + var ranged = _entManager.EnsureComponent(blackboard.GetValue(NPCBlackboard.Owner)); ranged.Target = blackboard.GetValue(TargetKey); + ranged.UseOpaqueForLOSChecks = UseOpaqueForLOSChecks; if (blackboard.TryGetValue(NPCBlackboard.RotateSpeed, out var rotSpeed, _entManager)) { diff --git a/Content.Server/NPC/Queries/Considerations/TargetTargetingCon.cs b/Content.Server/NPC/Queries/Considerations/TargetTargetingCon.cs new file mode 100644 index 0000000000..600eb20517 --- /dev/null +++ b/Content.Server/NPC/Queries/Considerations/TargetTargetingCon.cs @@ -0,0 +1,12 @@ +namespace Content.Server.NPC.Queries.Considerations; + +/// +/// Returns 0f if the NPC has a and the +/// target entity is exempt from being targeted, otherwise it returns 1f. +/// See +/// for further details on turret target validation. +/// +public sealed partial class TurretTargetingCon : UtilityConsideration +{ + +} diff --git a/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs b/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs index 227ffb8afc..f556a96618 100644 --- a/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs +++ b/Content.Server/NPC/Systems/NPCCombatSystem.Ranged.cs @@ -1,6 +1,7 @@ using Content.Server.NPC.Components; using Content.Shared.CombatMode; using Content.Shared.Interaction; +using Content.Shared.Physics; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Map; @@ -132,8 +133,10 @@ public sealed partial class NPCCombatSystem if (comp.LOSAccumulator < 0f) { comp.LOSAccumulator += UnoccludedCooldown; + // For consistency with NPC steering. - comp.TargetInLOS = _interaction.InRangeUnobstructed(uid, comp.Target, distance + 0.1f); + var collisionGroup = comp.UseOpaqueForLOSChecks ? CollisionGroup.Opaque : (CollisionGroup.Impassable | CollisionGroup.InteractImpassable); + comp.TargetInLOS = _interaction.InRangeUnobstructed(uid, comp.Target, distance + 0.1f, collisionGroup); } if (!comp.TargetInLOS) diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index 60bc5cdfd8..b5d3ac3cbd 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -20,6 +20,7 @@ using Content.Shared.NPC.Systems; using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Tools.Systems; +using Content.Shared.Turrets; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; @@ -53,6 +54,7 @@ public sealed class NPCUtilitySystem : EntitySystem [Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; [Dependency] private readonly MobThresholdSystem _thresholdSystem = default!; + [Dependency] private readonly TurretTargetSettingsSystem _turretTargetSettings = default!; private EntityQuery _puddleQuery; private EntityQuery _xformQuery; @@ -358,6 +360,14 @@ public sealed class NPCUtilitySystem : EntitySystem return 1f; return 0f; } + case TurretTargetingCon: + { + if (!TryComp(owner, out var turretTargetSettings) || + _turretTargetSettings.EntityIsTargetForTurret((owner, turretTargetSettings), targetUid)) + return 1f; + + return 0f; + } default: throw new NotImplementedException(); } diff --git a/Content.Shared/Access/AccessLevelPrototype.cs b/Content.Shared/Access/AccessLevelPrototype.cs index e3a3b426b0..f44ad64228 100644 --- a/Content.Shared/Access/AccessLevelPrototype.cs +++ b/Content.Shared/Access/AccessLevelPrototype.cs @@ -15,9 +15,15 @@ namespace Content.Shared.Access /// /// The player-visible name of the access level, in the ID card console and such. /// - [DataField("name")] + [DataField] public string? Name { get; set; } + /// + /// Denotes whether this access level is intended to be assignable to a crew ID card. + /// + [DataField] + public bool CanAddToIdCard = true; + public string GetAccessLevelName() { if (Name is { } name) diff --git a/Content.Shared/Turrets/TurretTargetSettingsComponent.cs b/Content.Shared/Turrets/TurretTargetSettingsComponent.cs new file mode 100644 index 0000000000..d019b0922a --- /dev/null +++ b/Content.Shared/Turrets/TurretTargetSettingsComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Access; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Turrets; + +/// +/// Attached to entities to provide them with turret target selection data. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(TurretTargetSettingsSystem))] +public sealed partial class TurretTargetSettingsComponent : Component +{ + /// + /// Crew with one or more access levels from this list are exempt from being targeted by turrets. + /// + [DataField, AutoNetworkedField] + public HashSet> ExemptAccessLevels = new(); +} diff --git a/Content.Shared/Turrets/TurretTargetSettingsSystem.cs b/Content.Shared/Turrets/TurretTargetSettingsSystem.cs new file mode 100644 index 0000000000..56f60e0e69 --- /dev/null +++ b/Content.Shared/Turrets/TurretTargetSettingsSystem.cs @@ -0,0 +1,126 @@ +using Content.Shared.Access; +using Content.Shared.Access.Systems; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Turrets; + +/// +/// This system is used for validating potential targets for NPCs with a (i.e., turrets). +/// A turret will consider an entity a valid target if the entity does not possess any access tags which appear on the +/// turret's list. +/// +public sealed partial class TurretTargetSettingsSystem : EntitySystem +{ + [Dependency] private readonly AccessReaderSystem _accessReader = default!; + + private ProtoId _accessLevelBorg = "Borg"; + private ProtoId _accessLevelBasicSilicon = "BasicSilicon"; + + /// + /// Adds or removes access levels from a list. + /// + /// The entity and its + /// The proto ID for the access level + /// Set 'true' to add the exemption, or 'false' to remove it + [PublicAPI] + public void SetAccessLevelExemption(Entity ent, ProtoId exemption, bool enabled) + { + if (enabled) + ent.Comp.ExemptAccessLevels.Add(exemption); + else + ent.Comp.ExemptAccessLevels.Remove(exemption); + } + + /// + /// Adds or removes a collection of access levels from a list. + /// + /// The entity and its + /// The collection of access level proto IDs to add or remove + /// Set 'true' to add the collection as exemptions, or 'false' to remove them + [PublicAPI] + public void SetAccessLevelExemptions(Entity ent, ICollection> exemptions, bool enabled) + { + foreach (var exemption in exemptions) + SetAccessLevelExemption(ent, exemption, enabled); + } + + /// + /// Sets a list to contain only a supplied collection of access levels. + /// + /// The entity and its + /// The supplied collection of access level proto IDs + [PublicAPI] + public void SyncAccessLevelExemptions(Entity ent, ICollection> exemptions) + { + ent.Comp.ExemptAccessLevels.Clear(); + SetAccessLevelExemptions(ent, exemptions, true); + } + + /// + /// Sets a list to match that of another. + /// + /// The entity this is having its exemption list updated + /// The entity that is being used as a template for the target + [PublicAPI] + public void SyncAccessLevelExemptions(Entity target, Entity source) + { + SyncAccessLevelExemptions(target, source.Comp.ExemptAccessLevels); + } + + /// + /// Returns whether a list contains a specific access level. + /// + /// The entity and its + /// The access level proto ID being checked + [PublicAPI] + public bool HasAccessLevelExemption(Entity ent, ProtoId exemption) + { + if (ent.Comp.ExemptAccessLevels.Count == 0) + return false; + + return ent.Comp.ExemptAccessLevels.Contains(exemption); + } + + /// + /// Returns whether a list contains one or more access levels from another collection. + /// + /// The entity and its + /// + [PublicAPI] + public bool HasAnyAccessLevelExemption(Entity ent, ICollection> exemptions) + { + if (ent.Comp.ExemptAccessLevels.Count == 0) + return false; + + foreach (var exemption in exemptions) + { + if (HasAccessLevelExemption(ent, exemption)) + return true; + } + + return false; + } + + /// + /// Returns whether an entity is a valid target for a turret. + /// + /// + /// Returns false if the target possesses one or more access tags that are present on the entity's list. + /// + /// The entity and its + /// The target entity + [PublicAPI] + public bool EntityIsTargetForTurret(Entity ent, EntityUid target) + { + var accessLevels = _accessReader.FindAccessTags(target); + + if (accessLevels.Contains(_accessLevelBorg)) + return !HasAccessLevelExemption(ent, _accessLevelBorg); + + if (accessLevels.Contains(_accessLevelBasicSilicon)) + return !HasAccessLevelExemption(ent, _accessLevelBasicSilicon); + + return !HasAnyAccessLevelExemption(ent, accessLevels); + } +} diff --git a/Resources/Locale/en-US/prototypes/access/accesses.ftl b/Resources/Locale/en-US/prototypes/access/accesses.ftl index b614caf773..5641686abc 100644 --- a/Resources/Locale/en-US/prototypes/access/accesses.ftl +++ b/Resources/Locale/en-US/prototypes/access/accesses.ftl @@ -55,3 +55,7 @@ id-card-access-level-unused = You shouldn't see this id-card-access-level-central-command = Central Command id-card-access-level-wizard = Wizard + +id-card-access-level-station-ai = Artifical Intelligence +id-card-access-level-borg = Cyborg +id-card-access-level-basic-silicon = Robot \ No newline at end of file diff --git a/Resources/Prototypes/Access/command.yml b/Resources/Prototypes/Access/command.yml index b74b4bb3b1..92e1355f79 100644 --- a/Resources/Prototypes/Access/command.yml +++ b/Resources/Prototypes/Access/command.yml @@ -13,14 +13,20 @@ - type: accessGroup id: Command tags: - - Command - Captain - - HeadOfPersonnel + - Command + - ChiefEngineer + - ChiefMedicalOfficer - Cryogenics - + - HeadOfPersonnel + - HeadOfSecurity + - Quartermaster + - ResearchDirector + - type: accessLevel id: EmergencyShuttleRepealAll name: id-card-access-level-emergency-shuttle-repeal + canAddToIdCard: false - type: accessLevel id: Cryogenics diff --git a/Resources/Prototypes/Access/silicon.yml b/Resources/Prototypes/Access/silicon.yml new file mode 100644 index 0000000000..a8f91982f3 --- /dev/null +++ b/Resources/Prototypes/Access/silicon.yml @@ -0,0 +1,21 @@ +- type: accessLevel + id: Borg + name: id-card-access-level-borg + canAddToIdCard: false + +- type: accessLevel + id: BasicSilicon + name: id-card-access-level-basic-silicon + canAddToIdCard: false + +- type: accessLevel + id: StationAi + name: id-card-access-level-station-ai + canAddToIdCard: false + +- type: accessGroup + id: Silicon + tags: + - StationAi + - Borg + - BasicSilicon diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index a8a6c2cace..b505f7d77e 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -310,7 +310,9 @@ - type: Access enabled: false groups: - - AllAccessBorg + - AllAccessBorg # DeltaV + tags: + - Borg - type: AccessReader access: [["Command"], ["Research"]] - type: SlavedBorg # DeltaV: NT borgs are enslaved to the AI by default diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 404e40e18b..704da6b060 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -31,6 +31,9 @@ - type: NpcFactionMember factions: - SimpleNeutral + - type: Access + tags: + - BasicSilicon - type: IntrinsicRadioReceiver - type: ActiveRadio channels: diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml index 5d9acaf1c4..7989fd2d18 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml @@ -36,6 +36,7 @@ - type: Access groups: - AllAccess + - Silicon tags: - NuclearOperative - SyndicateAgent diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index baa02a248c..1aab1a124e 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -439,6 +439,7 @@ - type: Access groups: - AllAccess + - Silicon - type: Eye drawFov: false - type: Examiner diff --git a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml index f87ea5b4d8..ded0418883 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml @@ -878,6 +878,7 @@ - type: Access groups: - AllAccess + - Silicon tags: - CentralCommand - NuclearOperative diff --git a/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml b/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml index cc897d0196..7cb1f6e543 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml @@ -108,7 +108,9 @@ - Armory - Atmospherics - Bar - #- Brig + - BasicSilicon + - Borg + #- Brig # DeltaV - Detective - Captain - Cargo @@ -135,14 +137,22 @@ - Salvage - Security - Service - - Surgery # DeltaV: Add surgery + - StationAi - Theatre - CentralCommand - NuclearOperative - SyndicateAgent - Wizard - - DV-SpareSafe # DeltaV - - Orders # DeltaV + # Begin DeltaV Additions + - ChiefJustice + - Clerk + - Justice + - DV-SpareSafe + - Orders + - Prosecutor + - Robotics + - Surgery + # End DeltaV Additions privilegedIdSlot: name: id-card-console-privileged-id ejectSound: /Audio/Machines/id_swipe.ogg diff --git a/Resources/Prototypes/NPCs/root.yml b/Resources/Prototypes/NPCs/root.yml index c6d2a8ee26..d32e140b29 100644 --- a/Resources/Prototypes/NPCs/root.yml +++ b/Resources/Prototypes/NPCs/root.yml @@ -32,6 +32,39 @@ - tasks: - !type:HTNCompoundTask task: IdleSpinCompound + +- type: htnCompound + id: EnergyTurretCompound + branches: + - tasks: + - !type:HTNPrimitiveTask + operator: !type:UtilityOperator + proto: NearbyGunTargets + + - !type:HTNPrimitiveTask + preconditions: + - !type:KeyExistsPrecondition + key: Target + - !type:TargetInRangePrecondition + targetKey: Target + # TODO: Non-scuffed + rangeKey: RangedRange + - !type:TargetInLOSPrecondition + targetKey: Target + rangeKey: RangedRange + opaqueKey: true + operator: !type:GunOperator + targetKey: Target + opaqueKey: true + services: + - !type:UtilityService + id: RangedService + proto: NearbyGunTargets + key: Target + + - tasks: + - !type:HTNCompoundTask + task: IdleSpinCompound - type: htnCompound id: SimpleRangedHostileCompound diff --git a/Resources/Prototypes/NPCs/utility_queries.yml b/Resources/Prototypes/NPCs/utility_queries.yml index e10a0ed30c..03764e2b1f 100644 --- a/Resources/Prototypes/NPCs/utility_queries.yml +++ b/Resources/Prototypes/NPCs/utility_queries.yml @@ -188,6 +188,10 @@ considerations: - !type:TargetIsAliveCon curve: !type:BoolCurve + - !type:TargetIsCritCon + curve: !type:InverseBoolCurve + - !type:TurretTargetingCon + curve: !type:BoolCurve - !type:TargetDistanceCon curve: !type:PresetCurve preset: TargetDistance diff --git a/Resources/Prototypes/_DV/Entities/Objects/Specific/Robotics/id_chips.yml b/Resources/Prototypes/_DV/Entities/Objects/Specific/Robotics/id_chips.yml index 93f6ca0412..3c46f2535d 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Specific/Robotics/id_chips.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Specific/Robotics/id_chips.yml @@ -35,6 +35,7 @@ - Maintenance - Research # need it to get to robo usually - Robotics # safe place to recharge + get upgrades + - Borg - type: entity parent: BaseIdChip @@ -44,6 +45,8 @@ - type: Access groups: - AllAccess + tags: + - Borg - type: entity parent: BaseIdChip @@ -53,6 +56,8 @@ - type: Access groups: - AllAccessBorg + tags: + - Borg # Syndicate ID Chips @@ -70,6 +75,7 @@ tags: - SyndicateAgent - NuclearOperative + - Borg - type: AgentIDCard - type: ActivatableUI key: enum.AgentIDCardUiKey.Key @@ -89,6 +95,7 @@ tags: - SyndicateAgent - NuclearOperative + - Borg - External - Research - Maintenance From d05ab7da0554da7bf97ee59d9ae7c12e804c6996 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Sat, 1 Mar 2025 10:03:27 -0800 Subject: [PATCH 05/91] DetGadget Hat Revitalization (#35438) * DetGadget Hat * uh... half-assed item description * Reduce hat range to one tile, you have to stand on someone to steal their hat items * Fix Integration Errors * Only the wearer can access voice commands * init work - handscomp is unable to be pulled * second bit of progress * basic working implementation * nuke storageslots and add adminlogging * disallow trolling nukies or hiding objective items * remove unnecessary tags additions * finish nuking unused tags * death to yamllinter * int tests be damned * milon is a furry * address review * upd desc * address reviews part 2 * address more reviews * remove unused refs * fix order of dependencies * add ShowVerb to SharedStorageSystem.cs This will allow or disallow showing the "Open Storage" verb if defined on the component. * orks is a nerd * add proper locale, fix adminlogging * orks is a nerd 2 --------- Co-authored-by: Coenx-flex --- .../EntitySystems/TriggerSystem.Voice.cs | 12 +++ .../StorageVoiceControlComponent.cs | 19 ++++ .../VoiceTrigger/StorageVoiceControlSystem.cs | 98 +++++++++++++++++++ .../EntitySystems/SharedStorageSystem.cs | 2 +- Content.Shared/Storage/StorageComponent.cs | 7 ++ .../storage-voice-control-component.ftl | 1 + .../Catalog/Fills/Lockers/security.yml | 2 +- .../Entities/Clothing/Head/specific.yml | 31 ++++++ 8 files changed, 170 insertions(+), 2 deletions(-) create mode 100644 Content.Server/VoiceTrigger/StorageVoiceControlComponent.cs create mode 100644 Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs create mode 100644 Resources/Locale/en-US/components/storage-voice-control-component.ftl diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs index c78a8923cd..8dd170e667 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs @@ -53,6 +53,9 @@ namespace Content.Server.Explosion.EntitySystems _adminLogger.Add(LogType.Trigger, LogImpact.High, $"A voice-trigger on {ToPrettyString(ent):entity} was triggered by {ToPrettyString(args.Source):speaker} speaking the key-phrase {component.KeyPhrase}."); Trigger(ent, args.Source); + + var voice = new VoiceTriggeredEvent(args.Source, message); + RaiseLocalEvent(ent, ref voice); } } @@ -137,3 +140,12 @@ namespace Content.Server.Explosion.EntitySystems } } } + + +/// +/// Raised when a voice trigger is activated, containing the message that triggered it. +/// +/// The EntityUid of the entity sending the message +/// The contents of the message +[ByRefEvent] +public readonly record struct VoiceTriggeredEvent(EntityUid Source, string? Message); diff --git a/Content.Server/VoiceTrigger/StorageVoiceControlComponent.cs b/Content.Server/VoiceTrigger/StorageVoiceControlComponent.cs new file mode 100644 index 0000000000..1689979d82 --- /dev/null +++ b/Content.Server/VoiceTrigger/StorageVoiceControlComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Inventory; + +namespace Content.Server.VoiceTrigger; + +/// +/// Entities with this component, Containers, and TriggerOnVoiceComponent will insert any item or extract the spoken item after the TriggerOnVoiceComponent has been activated +/// +[RegisterComponent] +public sealed partial class StorageVoiceControlComponent : Component +{ + /// + /// Used to determine which slots the component can be used in. + /// + /// If not set, the component can be used anywhere, even while inside other containers. + /// + /// + [DataField] + public SlotFlags? AllowedSlots; +} diff --git a/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs b/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs new file mode 100644 index 0000000000..72e361bc58 --- /dev/null +++ b/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs @@ -0,0 +1,98 @@ +using Content.Server.Hands.Systems; +using Content.Server.Storage.EntitySystems; +using Content.Shared.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Hands.Components; +using Content.Shared.Inventory; +using Content.Shared.Popups; +using Content.Shared.Storage; +using Robust.Server.Containers; + +namespace Content.Server.VoiceTrigger; + +/// +/// Allows storages to be manipulated using voice commands. +/// +public sealed class StorageVoiceControlSystem : EntitySystem +{ + [Dependency] private readonly ContainerSystem _container = default!; + [Dependency] private readonly HandsSystem _hands = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly StorageSystem _storage = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(VoiceTriggered); + } + + private void VoiceTriggered(Entity ent, ref VoiceTriggeredEvent args) + { + // Check if the component has any slot restrictions via AllowedSlots + // If it has slot restrictions, check if the item is in a slot that is allowed + if (ent.Comp.AllowedSlots != null && _inventory.TryGetContainingSlot(ent.Owner, out var itemSlot) && + (itemSlot.SlotFlags & ent.Comp.AllowedSlots) == 0) + return; + + // Don't do anything if there is no message + if (args.Message == null) + return; + + // Get the storage component + if (!TryComp(ent, out var storage)) + return; + + // Get the hands component + if (!TryComp(args.Source, out var hands)) + return; + + // If the player has something in their hands, try to insert it into the storage + if (hands.ActiveHand != null && hands.ActiveHand.HeldEntity.HasValue) + { + // Disallow insertion and provide a reason why if the person decides to insert the item into itself + if (ent.Owner.Equals(hands.ActiveHand.HeldEntity.Value)) + { + _popup.PopupEntity(Loc.GetString("comp-storagevoicecontrol-self-insert", ("entity", hands.ActiveHand.HeldEntity.Value)), ent, args.Source); + return; + } + if (_storage.CanInsert(ent, hands.ActiveHand.HeldEntity.Value, out var failedReason)) + { + // We adminlog before insertion, otherwise the logger will attempt to pull info on an entity that no longer is present and throw an exception + _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.Source)} inserted {ToPrettyString(hands.ActiveHand.HeldEntity.Value)} into {ToPrettyString(ent)} via voice control"); + _storage.Insert(ent, hands.ActiveHand.HeldEntity.Value, out _); + return; + } + { + // Tell the player the reason why the item couldn't be inserted + if (failedReason == null) + return; + _popup.PopupEntity(Loc.GetString(failedReason), ent, args.Source); + _adminLogger.Add(LogType.Action, + LogImpact.Low, + $"{ToPrettyString(args.Source)} failed to insert {ToPrettyString(hands.ActiveHand.HeldEntity.Value)} into {ToPrettyString(ent)} via voice control"); + } + return; + } + + // If otherwise, we're retrieving an item, so check all the items currently in the attached storage + foreach (var item in storage.Container.ContainedEntities) + { + // Get the item's name + var itemName = MetaData(item).EntityName; + // The message doesn't match the item name the requestor requested, skip and move on to the next item + if (!args.Message.Contains(itemName, StringComparison.InvariantCultureIgnoreCase)) + continue; + + // We found the item we want, so draw it from storage and place it into the player's hands + if (storage.Container.ContainedEntities.Count != 0) + { + _container.RemoveEntity(ent, item); + _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.Source)} retrieved {ToPrettyString(item)} from {ToPrettyString(ent)} via voice control"); + _hands.TryPickup(args.Source, item, handsComp: hands); + break; + } + } + } +} diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 806e4c4173..62ee871a23 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -283,7 +283,7 @@ public abstract class SharedStorageSystem : EntitySystem private void AddUiVerb(EntityUid uid, StorageComponent component, GetVerbsEvent args) { - if (!CanInteract(args.User, (uid, component), args.CanAccess && args.CanInteract)) + if (component.ShowVerb == false || !CanInteract(args.User, (uid, component), args.CanAccess && args.CanInteract)) return; // Does this player currently have the storage UI open? diff --git a/Content.Shared/Storage/StorageComponent.cs b/Content.Shared/Storage/StorageComponent.cs index c59f7ab00e..f772ad2022 100644 --- a/Content.Shared/Storage/StorageComponent.cs +++ b/Content.Shared/Storage/StorageComponent.cs @@ -146,6 +146,13 @@ namespace Content.Shared.Storage { Key, } + + /// + /// Allow or disallow showing the "open/close storage" verb. + /// This is desired on items that we don't want to be accessed by the player directly. + /// + [DataField] + public bool ShowVerb = true; } [Serializable, NetSerializable] diff --git a/Resources/Locale/en-US/components/storage-voice-control-component.ftl b/Resources/Locale/en-US/components/storage-voice-control-component.ftl new file mode 100644 index 0000000000..019b5ecfa1 --- /dev/null +++ b/Resources/Locale/en-US/components/storage-voice-control-component.ftl @@ -0,0 +1 @@ +comp-storagevoicecontrol-self-insert = You can't insert { THE($entity) } into itself! diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 6dd7fb731e..87960872d0 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -190,7 +190,7 @@ contents: - id: ClothingEyesGlassesSecurity # prob: 0.3 # DeltaV - standardise until HUD balance worked out -# - id: ClothingHeadHatFedoraBrown # DeltaV - removed for incongruence + - id: ClothingHeadHatDetGadget # - id: ClothingNeckTieDet # DeltaV - removed for incongruence # - id: ClothingOuterVestDetective # DeltaV - removed for incongruence # - id: ClothingOuterCoatDetective # DeltaV - removed for incongruence diff --git a/Resources/Prototypes/Entities/Clothing/Head/specific.yml b/Resources/Prototypes/Entities/Clothing/Head/specific.yml index 636f922d85..1e2e55f55b 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/specific.yml @@ -18,3 +18,34 @@ interfaces: enum.ChameleonUiKey.Key: type: ChameleonBoundUserInterface + +- type: entity + parent: ClothingHeadHatFedoraBrown + id: ClothingHeadHatDetGadget + name: go go hat + description: A novel hat with a built in toolkit. Automatically stores and retrieves items at the say of a phrase! + components: + - type: Tag + tags: [] # ignore "WhitelistChameleon" tag + - type: TriggerOnVoice + keyPhrase: "go go gadget" + listenRange: 0 + - type: ActiveListener + range: 0 + - type: StorageVoiceControl + allowedSlots: + - HEAD + - type: Storage + showVerb: false + grid: + - 0,0,6,3 + maxItemSize: Small + blacklist: + tags: + - HighRiskItem # no hiding objectives or trolling nukies + - FakeNukeDisk # no disk checking + - QuantumSpinInverter # avoid the morbillionth QSI bug + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [ ] From 269101acda79767e01022f25fd44d78c967aae4f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 1 Mar 2025 18:04:34 +0000 Subject: [PATCH 06/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e8bfddc09c..fdd2bd187c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Thatonestomf - changes: - - message: Smile no longer has a ghost role raffle attached to her - type: Fix - id: 7526 - time: '2024-10-18T02:42:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32837 - author: Catofquestionableethics changes: - message: Spacemans cake now contains Polypyrylium Oligomers instead of Omnizine. @@ -3896,3 +3889,12 @@ id: 8025 time: '2025-03-01T14:08:34.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35596 +- author: ArtisticRoomba, Cojoke-dot + changes: + - message: The detective can now find the go go hat in their locker. This hat has + the ability to store and retrieve items automatically via the saying of a catchphrase. + GO GO GADGET! + type: Add + id: 8026 + time: '2025-03-01T18:03:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35438 From f121f0e58154eb0c169d14ccce82137a01b11afe Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sat, 1 Mar 2025 19:41:37 +0100 Subject: [PATCH 07/91] Fingerprint Reader System (#35600) * init * public api * stuff * weh --- .../FingerprintReaderComponent.cs | 35 ++++++ .../FingerprintReaderSystem.cs | 100 ++++++++++++++++++ .../fingerprint-reader/fingerprint-reader.ftl | 2 + 3 files changed, 137 insertions(+) create mode 100644 Content.Shared/FingerprintReader/FingerprintReaderComponent.cs create mode 100644 Content.Shared/FingerprintReader/FingerprintReaderSystem.cs create mode 100644 Resources/Locale/en-US/fingerprint-reader/fingerprint-reader.ftl diff --git a/Content.Shared/FingerprintReader/FingerprintReaderComponent.cs b/Content.Shared/FingerprintReader/FingerprintReaderComponent.cs new file mode 100644 index 0000000000..166551cfe7 --- /dev/null +++ b/Content.Shared/FingerprintReader/FingerprintReaderComponent.cs @@ -0,0 +1,35 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.FingerprintReader; + +/// +/// Component for checking if a user's fingerprint matches allowed fingerprints +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(FingerprintReaderSystem))] +public sealed partial class FingerprintReaderComponent : Component +{ + /// + /// The fingerprints that are allowed to access this entity. + /// + [DataField, AutoNetworkedField] + public HashSet AllowedFingerprints = new(); + + /// + /// Whether to ignore gloves when checking fingerprints. + /// + [DataField, AutoNetworkedField] + public bool IgnoreGloves; + + /// + /// The popup to show when access is denied due to fingerprint mismatch. + /// + [DataField] + public LocId? FailPopup; + + /// + /// The popup to show when access is denied due to wearing gloves. + /// + [DataField] + public LocId? FailGlovesPopup; +} diff --git a/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs b/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs new file mode 100644 index 0000000000..f3944be9cd --- /dev/null +++ b/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs @@ -0,0 +1,100 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.Forensics.Components; +using Content.Shared.Inventory; +using Content.Shared.Popups; +using JetBrains.Annotations; + +namespace Content.Shared.FingerprintReader; + +// TODO: This has a lot of overlap with the AccessReaderSystem, maybe merge them in the future? +public sealed class FingerprintReaderSystem : EntitySystem +{ + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + + /// + /// Checks if the given user has fingerprint access to the target entity. + /// + /// The target entity. + /// User trying to gain access. + /// True if access was granted, otherwise false. + [PublicAPI] + public bool IsAllowed(Entity target, EntityUid user) + { + if (!Resolve(target, ref target.Comp, false)) + return true; + + if (target.Comp.AllowedFingerprints.Count == 0) + return true; + + // Check for gloves first + if (!target.Comp.IgnoreGloves && TryGetBlockingGloves(user, out var gloves)) + { + if (target.Comp.FailGlovesPopup != null) + _popup.PopupEntity(Loc.GetString(target.Comp.FailGlovesPopup, ("blocker", gloves)), target, user); + return false; + } + + // Check fingerprint match + if (!TryComp(user, out var fingerprint) || fingerprint.Fingerprint == null || + !target.Comp.AllowedFingerprints.Contains(fingerprint.Fingerprint)) + { + if (target.Comp.FailPopup != null) + _popup.PopupEntity(Loc.GetString(target.Comp.FailPopup), target, user); + + return false; + } + + return true; + } + + /// + /// Gets the blocking gloves of a user. Gloves count as blocking if they hide fingerprints. + /// + /// Entity wearing the gloves. + /// The returned gloves, if they exist. + /// True if blocking gloves were found, otherwise False. + [PublicAPI] + public bool TryGetBlockingGloves(EntityUid user, [NotNullWhen(true)] out EntityUid? blocker) + { + blocker = null; + + if (_inventory.TryGetSlotEntity(user, "gloves", out var gloves) && HasComp(gloves)) + { + blocker = gloves; + return true; + } + + return false; + } + + /// + /// Sets the allowed fingerprints for a fingerprint reader + /// + [PublicAPI] + public void SetAllowedFingerprints(Entity target, HashSet fingerprints) + { + target.Comp.AllowedFingerprints = fingerprints; + Dirty(target); + } + + /// + /// Adds an allowed fingerprint to a fingerprint reader + /// + [PublicAPI] + public void AddAllowedFingerprint(Entity target, string fingerprint) + { + target.Comp.AllowedFingerprints.Add(fingerprint); + Dirty(target); + } + + /// + /// Removes an allowed fingerprint from a fingerprint reader + /// + [PublicAPI] + public void RemoveAllowedFingerprint(Entity target, string fingerprint) + { + target.Comp.AllowedFingerprints.Remove(fingerprint); + Dirty(target); + } +} diff --git a/Resources/Locale/en-US/fingerprint-reader/fingerprint-reader.ftl b/Resources/Locale/en-US/fingerprint-reader/fingerprint-reader.ftl new file mode 100644 index 0000000000..b8d7807882 --- /dev/null +++ b/Resources/Locale/en-US/fingerprint-reader/fingerprint-reader.ftl @@ -0,0 +1,2 @@ +fingerprint-reader-fail = Your fingerprint does not match! +fingerprint-reader-fail-gloves = The fingerprint reader cannot read through your {$blocker}! From f0abb381aab738d6cf26ab24b530517a4163a8cb Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 1 Mar 2025 21:24:54 +0100 Subject: [PATCH 08/91] Remove cellular resistance for slimes (#35583) * Remove cellular resistance for slimes * Update guidebook --- Resources/Prototypes/Damage/modifier_sets.yml | 1 - Resources/ServerInfo/Guidebook/Mobs/SlimePerson.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index de86bae771..bf6d239b4d 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -161,7 +161,6 @@ Piercing: 1.2 Cold: 1.5 Poison: 0.8 - Cellular: 0.2 - type: damageModifierSet id: Infernal diff --git a/Resources/ServerInfo/Guidebook/Mobs/SlimePerson.xml b/Resources/ServerInfo/Guidebook/Mobs/SlimePerson.xml index 976ab472a9..24029d68d0 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/SlimePerson.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/SlimePerson.xml @@ -20,6 +20,6 @@ moderately filling food for other species, although drinking the blood of your coworkers is usually frowned upon. They suffocate 80% slower, but take pressure damage 9% faster. This makes them by far the species most capable to survive in hard vacuum. For a while. - They take [color=#1e90ff]80% less Cellular damage, 40% less Blunt damage and 20% less Poison damage[/color], but [color=#ffa500]50% more Cold damage, 20% more Slash damage and 20% more Piercing damage[/color]. + They take [color=#1e90ff]40% less Blunt damage and 20% less Poison damage[/color], but [color=#ffa500]50% more Cold damage, 20% more Slash damage and 20% more Piercing damage[/color]. From 1b3613d9f2712977ea32c8e466af34e6377edbf9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 1 Mar 2025 20:26:00 +0000 Subject: [PATCH 09/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fdd2bd187c..a26456311f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: Catofquestionableethics - changes: - - message: Spacemans cake now contains Polypyrylium Oligomers instead of Omnizine. - type: Tweak - - message: Slime, Brain and Christmas cakes can now be eaten by Lizards. - type: Fix - id: 7527 - time: '2024-10-18T03:08:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32830 - author: Plykiya changes: - message: You can no longer print flares or shotgun flares. @@ -3898,3 +3889,10 @@ id: 8026 time: '2025-03-01T18:03:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35438 +- author: SlamBamActionman + changes: + - message: Slimes no longer have cellular damage resistance. + type: Tweak + id: 8027 + time: '2025-03-01T20:24:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35583 From 9698d443ed73c6e002af1b67caa20ac241c72bef Mon Sep 17 00:00:00 2001 From: hivehum Date: Sat, 1 Mar 2025 15:31:44 -0500 Subject: [PATCH 10/91] Give the station map inhand sprites (#35605) map has inhands --- .../Objects/Devices/tablets.rsi/inhand-left.png | Bin 0 -> 882 bytes .../Objects/Devices/tablets.rsi/inhand-right.png | Bin 0 -> 887 bytes .../Objects/Devices/tablets.rsi/meta.json | 10 +++++++++- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Objects/Devices/tablets.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Devices/tablets.rsi/inhand-right.png diff --git a/Resources/Textures/Objects/Devices/tablets.rsi/inhand-left.png b/Resources/Textures/Objects/Devices/tablets.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..8badda607af5a08c913b2dd4ddaca9e558bcd79b GIT binary patch literal 882 zcmeAS@N?(olHy`uVBq!ia0vp^4j?SR1|)y|TsxP6fw3ji**U<|*;%2WC_gPTCzXLg zV`A+@TaUvIGDqWsmnwy_TYD6q2q@jy-DNRNOYERiruLRs2}Li(O)@=#Vq{paH#N(5 zhq8;O$I8aAI(}e25?c^dGEwONbdjhd6$N+t%fHK&zh_t&nY!wxFmuRRqf4DTW}IH% z)fmpfak!t8$Lq|M$up1Y*c`uZTT`>Q`;*T5;`%Q~mq61~;zfGe zbGBQozG{_yfAW5VhznsxG0QExSf)*I;ZjPu66h!@wrES%k{KSC>+T$uFZ-iebn?ln zhKb3HrYk1M*#D6K^X{6CpZ`wJgBBNlC*77$c1RG`^L6t^@jhFJ1$xMixQsk zTV?OXi%RYXE|?V*-o5z5_CXQ5MCBz_=OPt*--Qt@_s+kV{pr95-3$AleY@yZ)kQ-*yD2ZwcPu6uiw4BZ~XRO9m6EwqRpzm=Nim&40V}U}FC9V-A&iT2ysd*&~&PAz- zC8;S2<(VZJ3hti10pX2&;=t%O@N{tuskrs_j$u}FfDC(r@GcI%XIzm+EKS|)A9!vS zF&&RNSj}4UT_Mh)phosow&Kzyx=W&d?$dSo`2XH}@v|wDfHr}^2B+CO^dD4>1S<7A?|9;uT z_p-`@^xNlb9eDn&K5)EH=6GPhYRv<+3%(z`U;pm+zW3GJ|6TpdsdIXh&S?Q4-t?x} z@m^ECd@v|H5a8eZ!w;)$=Q?G~T9!HM_A7p&>s@(2TYHO-?R;$YXG;AFAb*|nk9X3p)6~w%USG(u|IUG}Ym~(jU-q;8TftFw yWG*k*mU%BlYo;#R>71G41myFjMtG+A`Z8z%*&I+;Tne5HVtKmyxvXQ`;*T5;`%Q~mq61~;zfGe zbGBQozG{_yfAW5VhznsxG0QExSf)*I;ZjPu66h!@wrES%k{KSC>+T$uFZ-iebn?ln zhKb3HrYk1M*#D6K^X{6CpZ`wJgBBNlC*77$c1RG`^L6t^@jhFJ1$xMixQsk zTV?OXi%RYXE|?V*-o5z5_CXQ5MCBz_=OPt*--Qt@_s+kV{pr95-3$AleY@yZ)kQ-*yD2ZwcPu6uiw4BZ~XRO9m6EwqRpzm=N#*)wVM1ew*C9V-A&iT2ysd*&~&PAz- zC8;S2<(VZJ3hti10pX2&;=t%O^>lFzskrs_j%`=7g9O_H&l_$VJTqsjxhl-vJ1=p! zZDZ=X2YZ=rRSQIOA1vA?#k9L6CDFOAV&1vL3Fj;K2d?G>xd;dv%(v{i-ursjy4P06 zvOfcr!Zs)I(n>173s5#%3Ro)KL_1 z4HRi*kjwph-+a#V%6ZT4Ki2#)pZDNw(*p)PhYjY$Kh^x2&{l?S1?IPRp!<@4mFmd1}vg-^BN_iQ&DfLnk(SmM(uj;Z5)QU*Y`!f|Nae zbd__i}7rQpdRmZz(q%Q~loCIDC? BdWrx5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Devices/tablets.rsi/meta.json b/Resources/Textures/Objects/Devices/tablets.rsi/meta.json index 5af056f291..5c572d32e4 100644 --- a/Resources/Textures/Objects/Devices/tablets.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/tablets.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from Baystation12 at https://github.com/Baystation12/Baystation12/tree/17e84546562b97d775cb26790a08e6d87e7f8077 and heavily modified by Flareguy for Space Station 14", + "copyright": "Taken from Baystation12 at https://github.com/Baystation12/Baystation12/tree/17e84546562b97d775cb26790a08e6d87e7f8077 and heavily modified by Flareguy for Space Station 14. Inhands by carousel", "size": { "x": 32, "y": 32 @@ -21,6 +21,14 @@ 0.3 ] ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 } ] } From c052bc3ca2b863033dc7b553b0f8e7f6405d6065 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 2 Mar 2025 01:21:33 +0300 Subject: [PATCH 11/91] Reagent guidebook reactions UI dividers (#35608) * Update GuideReagentReaction.xaml * Update Content.Client/Guidebook/Controls/GuideReagentReaction.xaml Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> * Update Content.Client/Guidebook/Controls/GuideReagentReaction.xaml Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> --------- Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> --- .../Controls/GuideReagentReaction.xaml | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/Content.Client/Guidebook/Controls/GuideReagentReaction.xaml b/Content.Client/Guidebook/Controls/GuideReagentReaction.xaml index becffbdc6d..5b871644ea 100644 --- a/Content.Client/Guidebook/Controls/GuideReagentReaction.xaml +++ b/Content.Client/Guidebook/Controls/GuideReagentReaction.xaml @@ -1,30 +1,34 @@  - - - - - - - - - + + + + + + + + + + + + From 3c3f220f806dd1556162c7f07e57b952d407ffb6 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 2 Mar 2025 13:29:54 +1100 Subject: [PATCH 12/91] Revert "Make radioactive material radioactive" (#35330) --- .../Entities/Objects/Consumable/Food/Baked/pizza.yml | 6 ------ .../Prototypes/Entities/Objects/Materials/Sheets/other.yml | 5 +---- .../Entities/Structures/Specific/Anomaly/anomalies.yml | 3 --- Resources/Prototypes/Entities/Structures/Walls/meteor.yml | 3 --- 4 files changed, 1 insertion(+), 16 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml index 1426d53adb..8f476f9263 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/pizza.yml @@ -581,9 +581,6 @@ Quantity: 4 - ReagentId: Uranium Quantity: 16 - - type: RadiationSource - intensity: 0.1 - slope: 3 - type: entity name: slice of spicy rock pizza @@ -619,9 +616,6 @@ Quantity: 0.5 - ReagentId: Uranium Quantity: 2 - - type: RadiationSource - intensity: 0.1 - slope: 3 # Tastes like crust, tomato, cheese, radiation. diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml index 497818af2a..cfa269e04d 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml @@ -250,10 +250,7 @@ - ReagentId: Radium Quantity: 2 canReact: false - - type: RadiationSource - intensity: 0.01 # DeltaV - was 0.1, now 0.3 rads from a full stack - slope: 3 - - type: PointLight + - type: PointLight # DeltaV radius: 1.2 energy: 0.8 castShadows: false diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml index e9fe60f82c..e85ca35835 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml @@ -455,9 +455,6 @@ maxRange: 5 spawns: - MobSpawnCrabUranium - - type: RadiationSource - intensity: 0.2 - slope: 0.1 - type: entity id: AnomalyRockQuartz diff --git a/Resources/Prototypes/Entities/Structures/Walls/meteor.yml b/Resources/Prototypes/Entities/Structures/Walls/meteor.yml index 36a4b971ae..6f310e3b74 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/meteor.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/meteor.yml @@ -195,9 +195,6 @@ - map: [ "enum.EdgeLayer.West" ] state: rock_asteroid_west - state: rock_uranium - - type: RadiationSource - intensity: 2.3 - slope: 0.1 - type: entity id: MeteorRockBananium From bde14e7c7cd5acfbaa6fd87cadaccae75037eeb9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 2 Mar 2025 02:31:03 +0000 Subject: [PATCH 13/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a26456311f..4d85e4849d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Plykiya - changes: - - message: You can no longer print flares or shotgun flares. - type: Remove - id: 7528 - time: '2024-10-18T03:28:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32563 - author: pheenty changes: - message: QM is now considered an important job. @@ -3896,3 +3889,10 @@ id: 8027 time: '2025-03-01T20:24:54.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35583 +- author: metalgearsloth + changes: + - message: Removed radioactivity from uranium. + type: Tweak + id: 8028 + time: '2025-03-02T02:29:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35330 From 9d9e48226b0c2e5e5ce9f6e4679aed9472358afd Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Sun, 2 Mar 2025 13:47:52 +1100 Subject: [PATCH 14/91] Predict vending machine UI (#33412) --- .../Systems/SpeakOnUIClosedSystem.cs | 5 + .../UserInterface/Controls/ListContainer.cs | 6 +- .../UI/VendingMachineItem.xaml.cs | 5 + .../UI/VendingMachineMenu.xaml.cs | 69 ++++- .../VendingMachineBoundUserInterface.cs | 15 +- .../VendingMachines/VendingMachineSystem.cs | 70 ++++- .../EntitySystems/SpeakOnUIClosedSystem.cs | 19 +- .../Arcade/BlockGame/BlockGameArcadeSystem.cs | 6 +- .../SpaceVillainArcadeSystem.cs | 26 +- .../VendingMachines/VendingMachineSystem.cs | 244 +--------------- .../Components/SpeakOnUIClosedComponent.cs | 8 +- .../Systems/SharedSpeakOnUIClosedSystem.cs | 16 ++ .../SharedVendingMachineSystem.Restock.cs | 2 +- .../SharedVendingMachineSystem.cs | 269 +++++++++++++++++- .../VendingMachineComponent.cs | 100 +++++-- 15 files changed, 542 insertions(+), 318 deletions(-) create mode 100644 Content.Client/Advertise/Systems/SpeakOnUIClosedSystem.cs rename {Content.Server => Content.Shared}/Advertise/Components/SpeakOnUIClosedComponent.cs (80%) create mode 100644 Content.Shared/Advertise/Systems/SharedSpeakOnUIClosedSystem.cs diff --git a/Content.Client/Advertise/Systems/SpeakOnUIClosedSystem.cs b/Content.Client/Advertise/Systems/SpeakOnUIClosedSystem.cs new file mode 100644 index 0000000000..4e82ec4d00 --- /dev/null +++ b/Content.Client/Advertise/Systems/SpeakOnUIClosedSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.Advertise.Systems; + +namespace Content.Client.Advertise.Systems; + +public sealed class SpeakOnUIClosedSystem : SharedSpeakOnUIClosedSystem; diff --git a/Content.Client/UserInterface/Controls/ListContainer.cs b/Content.Client/UserInterface/Controls/ListContainer.cs index e1b3b948f0..0ee0a67af0 100644 --- a/Content.Client/UserInterface/Controls/ListContainer.cs +++ b/Content.Client/UserInterface/Controls/ListContainer.cs @@ -96,9 +96,12 @@ public class ListContainer : Control { ListContainerButton control = new(data[0], 0); GenerateItem?.Invoke(data[0], control); + // Yes this AddChild is necessary for reasons (get proper style or whatever?) + // without it the DesiredSize may be different to the final DesiredSize. + AddChild(control); control.Measure(Vector2Helpers.Infinity); _itemHeight = control.DesiredSize.Y; - control.Dispose(); + control.Orphan(); } // Ensure buttons are re-generated. @@ -384,6 +387,7 @@ public sealed class ListContainerButton : ContainerButton, IEntityControl public ListContainerButton(ListData data, int index) { + AddStyleClass(StyleClassButton); Data = data; Index = index; // AddChild(Background = new PanelContainer diff --git a/Content.Client/VendingMachines/UI/VendingMachineItem.xaml.cs b/Content.Client/VendingMachines/UI/VendingMachineItem.xaml.cs index a7212934fd..0f0564c596 100644 --- a/Content.Client/VendingMachines/UI/VendingMachineItem.xaml.cs +++ b/Content.Client/VendingMachines/UI/VendingMachineItem.xaml.cs @@ -16,4 +16,9 @@ public sealed partial class VendingMachineItem : BoxContainer NameLabel.Text = text; } + + public void SetText(string text) + { + NameLabel.Text = text; + } } diff --git a/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs b/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs index ee7a0e41fa..899a0208cb 100644 --- a/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs +++ b/Content.Client/VendingMachines/UI/VendingMachineMenu.xaml.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Numerics; using Content.Shared.VendingMachines; using Robust.Client.AutoGenerated; @@ -19,11 +20,16 @@ namespace Content.Client.VendingMachines.UI [Dependency] private readonly IEntityManager _entityManager = default!; private readonly Dictionary _dummies = []; + private readonly Dictionary _listItems = new(); + private readonly Dictionary _amounts = new(); + + /// + /// Whether the vending machine is able to be interacted with or not. + /// + private bool _enabled; public event Action? OnItemSelected; - private readonly StyleBoxFlat _styleBox = new() { BackgroundColor = new Color(70, 73, 102) }; - public VendingMachineMenu() { MinSize = SetSize = new Vector2(250, 150); @@ -68,18 +74,23 @@ namespace Content.Client.VendingMachines.UI if (data is not VendorItemsListData { ItemProtoID: var protoID, ItemText: var text }) return; - button.AddChild(new VendingMachineItem(protoID, text)); - - button.ToolTip = text; - button.StyleBoxOverride = _styleBox; + var item = new VendingMachineItem(protoID, text); + _listItems[protoID] = (button, item); + button.AddChild(item); + button.AddStyleClass("ButtonSquare"); + button.Disabled = !_enabled || _amounts[protoID] == 0; } /// /// Populates the list of available items on the vending machine interface /// and sets icons based on their prototypes /// - public void Populate(List inventory) + public void Populate(List inventory, bool enabled) { + _enabled = enabled; + _listItems.Clear(); + _amounts.Clear(); + if (inventory.Count == 0 && VendingContents.Visible) { SearchBar.Visible = false; @@ -109,7 +120,10 @@ namespace Content.Client.VendingMachines.UI var entry = inventory[i]; if (!_prototypeManager.TryIndex(entry.ID, out var prototype)) + { + _amounts[entry.ID] = 0; continue; + } if (!_dummies.TryGetValue(entry.ID, out var dummy)) { @@ -119,11 +133,15 @@ namespace Content.Client.VendingMachines.UI var itemName = Identity.Name(dummy, _entityManager); var itemText = $"{itemName} [{entry.Amount}]"; + _amounts[entry.ID] = entry.Amount; if (itemText.Length > longestEntry.Length) longestEntry = itemText; - listData.Add(new VendorItemsListData(prototype.ID, itemText, i)); + listData.Add(new VendorItemsListData(prototype.ID, i) + { + ItemText = itemText, + }); } VendingContents.PopulateList(listData); @@ -131,12 +149,43 @@ namespace Content.Client.VendingMachines.UI SetSizeAfterUpdate(longestEntry.Length, inventory.Count); } + /// + /// Updates text entries for vending data in place without modifying the list controls. + /// + public void UpdateAmounts(List cachedInventory, bool enabled) + { + _enabled = enabled; + + foreach (var proto in _dummies.Keys) + { + if (!_listItems.TryGetValue(proto, out var button)) + continue; + + var dummy = _dummies[proto]; + var amount = cachedInventory.First(o => o.ID == proto).Amount; + // Could be better? Problem is all inventory entries get squashed. + var text = GetItemText(dummy, amount); + + button.Item.SetText(text); + button.Button.Disabled = !enabled || amount == 0; + } + } + + private string GetItemText(EntityUid dummy, uint amount) + { + var itemName = Identity.Name(dummy, _entityManager); + return $"{itemName} [{amount}]"; + } + private void SetSizeAfterUpdate(int longestEntryLength, int contentCount) { SetSize = new Vector2(Math.Clamp((longestEntryLength + 2) * 12, 250, 400), Math.Clamp(contentCount * 50, 150, 350)); } } -} -public record VendorItemsListData(EntProtoId ItemProtoID, string ItemText, int ItemIndex) : ListData; + public record VendorItemsListData(EntProtoId ItemProtoID, int ItemIndex) : ListData + { + public string ItemText = string.Empty; + } +} diff --git a/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs b/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs index 052bdacb89..874808158d 100644 --- a/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs +++ b/Content.Client/VendingMachines/VendingMachineBoundUserInterface.cs @@ -31,10 +31,21 @@ namespace Content.Client.VendingMachines public void Refresh() { + var enabled = EntMan.TryGetComponent(Owner, out VendingMachineComponent? bendy) && !bendy.Ejecting; + var system = EntMan.System(); _cachedInventory = system.GetAllInventory(Owner); - _menu?.Populate(_cachedInventory); + _menu?.Populate(_cachedInventory, enabled); + } + + public void UpdateAmounts() + { + var enabled = EntMan.TryGetComponent(Owner, out VendingMachineComponent? bendy) && !bendy.Ejecting; + + var system = EntMan.System(); + _cachedInventory = system.GetAllInventory(Owner); + _menu?.UpdateAmounts(_cachedInventory, enabled); } private void OnItemSelected(GUIBoundKeyEventArgs args, ListData data) @@ -53,7 +64,7 @@ namespace Content.Client.VendingMachines if (selectedItem == null) return; - SendMessage(new VendingMachineEjectMessage(selectedItem.Type, selectedItem.ID)); + SendPredictedMessage(new VendingMachineEjectMessage(selectedItem.Type, selectedItem.ID)); } protected override void Dispose(bool disposing) diff --git a/Content.Client/VendingMachines/VendingMachineSystem.cs b/Content.Client/VendingMachines/VendingMachineSystem.cs index 1b1dde2b67..130296c8a1 100644 --- a/Content.Client/VendingMachines/VendingMachineSystem.cs +++ b/Content.Client/VendingMachines/VendingMachineSystem.cs @@ -1,6 +1,8 @@ +using System.Linq; using Content.Shared.VendingMachines; using Robust.Client.Animations; using Robust.Client.GameObjects; +using Robust.Shared.GameStates; namespace Content.Client.VendingMachines; @@ -8,7 +10,6 @@ public sealed class VendingMachineSystem : SharedVendingMachineSystem { [Dependency] private readonly AnimationPlayerSystem _animationPlayer = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; - [Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!; public override void Initialize() { @@ -16,14 +17,69 @@ public sealed class VendingMachineSystem : SharedVendingMachineSystem SubscribeLocalEvent(OnAppearanceChange); SubscribeLocalEvent(OnAnimationCompleted); - SubscribeLocalEvent(OnVendingAfterState); + SubscribeLocalEvent(OnVendingHandleState); } - private void OnVendingAfterState(EntityUid uid, VendingMachineComponent component, ref AfterAutoHandleStateEvent args) + private void OnVendingHandleState(Entity entity, ref ComponentHandleState args) { - if (_uiSystem.TryGetOpenUi(uid, VendingMachineUiKey.Key, out var bui)) + if (args.Current is not VendingMachineComponentState state) + return; + + var uid = entity.Owner; + var component = entity.Comp; + + component.Contraband = state.Contraband; + component.EjectEnd = state.EjectEnd; + component.DenyEnd = state.DenyEnd; + component.DispenseOnHitEnd = state.DispenseOnHitEnd; + + // If all we did was update amounts then we can leave BUI buttons in place. + var fullUiUpdate = !component.Inventory.Keys.SequenceEqual(state.Inventory.Keys) || + !component.EmaggedInventory.Keys.SequenceEqual(state.EmaggedInventory.Keys) || + !component.ContrabandInventory.Keys.SequenceEqual(state.ContrabandInventory.Keys); + + component.Inventory.Clear(); + component.EmaggedInventory.Clear(); + component.ContrabandInventory.Clear(); + + foreach (var entry in state.Inventory) { - bui.Refresh(); + component.Inventory.Add(entry.Key, new(entry.Value)); + } + + foreach (var entry in state.EmaggedInventory) + { + component.EmaggedInventory.Add(entry.Key, new(entry.Value)); + } + + foreach (var entry in state.ContrabandInventory) + { + component.ContrabandInventory.Add(entry.Key, new(entry.Value)); + } + + if (UISystem.TryGetOpenUi(uid, VendingMachineUiKey.Key, out var bui)) + { + if (fullUiUpdate) + { + bui.Refresh(); + } + else + { + bui.UpdateAmounts(); + } + } + } + + protected override void UpdateUI(Entity entity) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + if (UISystem.TryGetOpenUi(entity.Owner, + VendingMachineUiKey.Key, + out var bui)) + { + bui.UpdateAmounts(); } } @@ -70,13 +126,13 @@ public sealed class VendingMachineSystem : SharedVendingMachineSystem if (component.LoopDenyAnimation) SetLayerState(VendingMachineVisualLayers.BaseUnshaded, component.DenyState, sprite); else - PlayAnimation(uid, VendingMachineVisualLayers.BaseUnshaded, component.DenyState, component.DenyDelay, sprite); + PlayAnimation(uid, VendingMachineVisualLayers.BaseUnshaded, component.DenyState, (float)component.DenyDelay.TotalSeconds, sprite); SetLayerState(VendingMachineVisualLayers.Screen, component.ScreenState, sprite); break; case VendingMachineVisualState.Eject: - PlayAnimation(uid, VendingMachineVisualLayers.BaseUnshaded, component.EjectState, component.EjectDelay, sprite); + PlayAnimation(uid, VendingMachineVisualLayers.BaseUnshaded, component.EjectState, (float)component.EjectDelay.TotalSeconds, sprite); SetLayerState(VendingMachineVisualLayers.Screen, component.ScreenState, sprite); break; diff --git a/Content.Server/Advertise/EntitySystems/SpeakOnUIClosedSystem.cs b/Content.Server/Advertise/EntitySystems/SpeakOnUIClosedSystem.cs index a0a709e5fa..3fca640d4a 100644 --- a/Content.Server/Advertise/EntitySystems/SpeakOnUIClosedSystem.cs +++ b/Content.Server/Advertise/EntitySystems/SpeakOnUIClosedSystem.cs @@ -1,13 +1,13 @@ -using Content.Server.Advertise.Components; using Content.Server.Chat.Systems; -using Content.Shared.Dataset; +using Content.Shared.Advertise.Components; +using Content.Shared.Advertise.Systems; +using Content.Shared.UserInterface; using Robust.Shared.Prototypes; using Robust.Shared.Random; -using ActivatableUIComponent = Content.Shared.UserInterface.ActivatableUIComponent; -namespace Content.Server.Advertise; +namespace Content.Server.Advertise.EntitySystems; -public sealed partial class SpeakOnUIClosedSystem : EntitySystem +public sealed partial class SpeakOnUIClosedSystem : SharedSpeakOnUIClosedSystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; @@ -46,13 +46,4 @@ public sealed partial class SpeakOnUIClosedSystem : EntitySystem entity.Comp.Flag = false; return true; } - - public bool TrySetFlag(Entity entity, bool value = true) - { - if (!Resolve(entity, ref entity.Comp)) - return false; - - entity.Comp.Flag = value; - return true; - } } diff --git a/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs b/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs index b0bf389509..a0e52e9b48 100644 --- a/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs +++ b/Content.Server/Arcade/BlockGame/BlockGameArcadeSystem.cs @@ -1,11 +1,9 @@ -using Content.Server.Power.Components; using Content.Shared.UserInterface; -using Content.Server.Advertise; -using Content.Server.Advertise.Components; +using Content.Server.Advertise.EntitySystems; +using Content.Shared.Advertise.Components; using Content.Shared.Arcade; using Content.Shared.Power; using Robust.Server.GameObjects; -using Robust.Shared.Player; namespace Content.Server.Arcade.BlockGame; diff --git a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs index b359a13bd1..2070ab8bfe 100644 --- a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs +++ b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs @@ -1,9 +1,9 @@ using Content.Server.Power.Components; using Content.Shared.UserInterface; -using Content.Server.Advertise; -using Content.Server.Advertise.Components; +using Content.Server.Advertise.EntitySystems; +using Content.Shared.Advertise.Components; +using Content.Shared.Arcade; using Content.Shared.Power; -using static Content.Shared.Arcade.SharedSpaceVillainArcadeComponent; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; @@ -24,7 +24,7 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnAfterUIOpenSV); - SubscribeLocalEvent(OnSVPlayerAction); + SubscribeLocalEvent(OnSVPlayerAction); SubscribeLocalEvent(OnSVillainPower); } @@ -70,7 +70,7 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem component.RewardAmount = new Random().Next(component.RewardMinAmount, component.RewardMaxAmount + 1); } - private void OnSVPlayerAction(EntityUid uid, SpaceVillainArcadeComponent component, SpaceVillainArcadePlayerActionMessage msg) + private void OnSVPlayerAction(EntityUid uid, SpaceVillainArcadeComponent component, SharedSpaceVillainArcadeComponent.SpaceVillainArcadePlayerActionMessage msg) { if (component.Game == null) return; @@ -79,22 +79,22 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem switch (msg.PlayerAction) { - case PlayerAction.Attack: - case PlayerAction.Heal: - case PlayerAction.Recharge: + case SharedSpaceVillainArcadeComponent.PlayerAction.Attack: + case SharedSpaceVillainArcadeComponent.PlayerAction.Heal: + case SharedSpaceVillainArcadeComponent.PlayerAction.Recharge: component.Game.ExecutePlayerAction(uid, msg.PlayerAction, component); // Any sort of gameplay action counts if (TryComp(uid, out var speakComponent)) _speakOnUIClosed.TrySetFlag((uid, speakComponent)); break; - case PlayerAction.NewGame: + case SharedSpaceVillainArcadeComponent.PlayerAction.NewGame: _audioSystem.PlayPvs(component.NewGameSound, uid, AudioParams.Default.WithVolume(-4f)); component.Game = new SpaceVillainGame(uid, component, this); - _uiSystem.ServerSendUiMessage(uid, SpaceVillainArcadeUiKey.Key, component.Game.GenerateMetaDataMessage()); + _uiSystem.ServerSendUiMessage(uid, SharedSpaceVillainArcadeComponent.SpaceVillainArcadeUiKey.Key, component.Game.GenerateMetaDataMessage()); break; - case PlayerAction.RequestData: - _uiSystem.ServerSendUiMessage(uid, SpaceVillainArcadeUiKey.Key, component.Game.GenerateMetaDataMessage()); + case SharedSpaceVillainArcadeComponent.PlayerAction.RequestData: + _uiSystem.ServerSendUiMessage(uid, SharedSpaceVillainArcadeComponent.SpaceVillainArcadeUiKey.Key, component.Game.GenerateMetaDataMessage()); break; } } @@ -109,6 +109,6 @@ public sealed partial class SpaceVillainArcadeSystem : EntitySystem if (TryComp(uid, out var power) && power.Powered) return; - _uiSystem.CloseUi(uid, SpaceVillainArcadeUiKey.Key); + _uiSystem.CloseUi(uid, SharedSpaceVillainArcadeComponent.SpaceVillainArcadeUiKey.Key); } } diff --git a/Content.Server/VendingMachines/VendingMachineSystem.cs b/Content.Server/VendingMachines/VendingMachineSystem.cs index c2ea6dd1ac..e061398114 100644 --- a/Content.Server/VendingMachines/VendingMachineSystem.cs +++ b/Content.Server/VendingMachines/VendingMachineSystem.cs @@ -1,19 +1,12 @@ using System.Linq; using System.Numerics; -using Content.Server.Advertise; -using Content.Server.Advertise.Components; using Content.Server.Cargo.Systems; using Content.Server.Emp; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; -using Content.Shared.Access.Components; -using Content.Shared.Access.Systems; -using Content.Shared.Actions; using Content.Shared.Damage; using Content.Shared.Destructible; using Content.Shared.DoAfter; -using Content.Shared.Emag.Components; -using Content.Shared.Emag.Systems; using Content.Shared.Emp; using Content.Shared.Popups; using Content.Shared.Power; @@ -21,7 +14,6 @@ using Content.Shared.Throwing; using Content.Shared.UserInterface; using Content.Shared.VendingMachines; using Content.Shared.Wall; -using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -32,14 +24,9 @@ namespace Content.Server.VendingMachines public sealed class VendingMachineSystem : SharedVendingMachineSystem { [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly AccessReaderSystem _accessReader = default!; - [Dependency] private readonly AppearanceSystem _appearanceSystem = default!; [Dependency] private readonly PricingSystem _pricing = default!; [Dependency] private readonly ThrowingSystem _throwingSystem = default!; [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly SpeakOnUIClosedSystem _speakOnUIClosed = default!; - [Dependency] private readonly SharedPointLightSystem _light = default!; - [Dependency] private readonly EmagSystem _emag = default!; private const float WallVendEjectDistanceFromWall = 1f; @@ -55,11 +42,6 @@ namespace Content.Server.VendingMachines SubscribeLocalEvent(OnActivatableUIOpenAttempt); - Subs.BuiEvents(VendingMachineUiKey.Key, subs => - { - subs.Event(OnInventoryEjectMessage); - }); - SubscribeLocalEvent(OnSelfDispense); SubscribeLocalEvent(OnDoAfter); @@ -91,7 +73,7 @@ namespace Content.Server.VendingMachines if (HasComp(uid)) { - TryUpdateVisualState(uid, component); + TryUpdateVisualState((uid, component)); } } @@ -101,26 +83,15 @@ namespace Content.Server.VendingMachines args.Cancel(); } - private void OnInventoryEjectMessage(EntityUid uid, VendingMachineComponent component, VendingMachineEjectMessage args) - { - if (!this.IsPowered(uid, EntityManager)) - return; - - if (args.Actor is not { Valid: true } entity || Deleted(entity)) - return; - - AuthorizedVend(uid, entity, args.Type, args.ID, component); - } - private void OnPowerChanged(EntityUid uid, VendingMachineComponent component, ref PowerChangedEvent args) { - TryUpdateVisualState(uid, component); + TryUpdateVisualState((uid, component)); } private void OnBreak(EntityUid uid, VendingMachineComponent vendComponent, BreakageEventArgs eventArgs) { vendComponent.Broken = true; - TryUpdateVisualState(uid, vendComponent); + TryUpdateVisualState((uid, vendComponent)); } private void OnDamageChanged(EntityUid uid, VendingMachineComponent component, DamageChangedEvent args) @@ -128,7 +99,7 @@ namespace Content.Server.VendingMachines if (!args.DamageIncreased && component.Broken) { component.Broken = false; - TryUpdateVisualState(uid, component); + TryUpdateVisualState((uid, component)); return; } @@ -139,8 +110,11 @@ namespace Content.Server.VendingMachines if (args.DamageIncreased && args.DamageDelta.GetTotal() >= component.DispenseOnHitThreshold && _random.Prob(component.DispenseOnHitChance.Value)) { - if (component.DispenseOnHitCooldown > 0f) - component.DispenseOnHitCoolingDown = true; + if (component.DispenseOnHitCooldown != null) + { + component.DispenseOnHitEnd = Timing.CurTime + component.DispenseOnHitCooldown.Value; + } + EjectRandom(uid, throwItem: true, forceEject: true, component); } } @@ -199,145 +173,6 @@ namespace Content.Server.VendingMachines Dirty(uid, component); } - public void Deny(EntityUid uid, VendingMachineComponent? vendComponent = null) - { - if (!Resolve(uid, ref vendComponent)) - return; - - if (vendComponent.Denying) - return; - - vendComponent.Denying = true; - Audio.PlayPvs(vendComponent.SoundDeny, uid, AudioParams.Default.WithVolume(-2f)); - TryUpdateVisualState(uid, vendComponent); - } - - /// - /// Checks if the user is authorized to use this vending machine - /// - /// - /// Entity trying to use the vending machine - /// - public bool IsAuthorized(EntityUid uid, EntityUid sender, VendingMachineComponent? vendComponent = null) - { - if (!Resolve(uid, ref vendComponent)) - return false; - - if (!TryComp(uid, out var accessReader)) - return true; - - if (_accessReader.IsAllowed(sender, uid, accessReader)) - return true; - - Popup.PopupEntity(Loc.GetString("vending-machine-component-try-eject-access-denied"), uid); - Deny(uid, vendComponent); - return false; - } - - /// - /// Tries to eject the provided item. Will do nothing if the vending machine is incapable of ejecting, already ejecting - /// or the item doesn't exist in its inventory. - /// - /// - /// The type of inventory the item is from - /// The prototype ID of the item - /// Whether the item should be thrown in a random direction after ejection - /// - public void TryEjectVendorItem(EntityUid uid, InventoryType type, string itemId, bool throwItem, VendingMachineComponent? vendComponent = null) - { - if (!Resolve(uid, ref vendComponent)) - return; - - if (vendComponent.Ejecting || vendComponent.Broken || !this.IsPowered(uid, EntityManager)) - { - return; - } - - var entry = GetEntry(uid, itemId, type, vendComponent); - - if (entry == null) - { - Popup.PopupEntity(Loc.GetString("vending-machine-component-try-eject-invalid-item"), uid); - Deny(uid, vendComponent); - return; - } - - if (entry.Amount <= 0) - { - Popup.PopupEntity(Loc.GetString("vending-machine-component-try-eject-out-of-stock"), uid); - Deny(uid, vendComponent); - return; - } - - if (string.IsNullOrEmpty(entry.ID)) - return; - - - // Start Ejecting, and prevent users from ordering while anim playing - vendComponent.Ejecting = true; - vendComponent.NextItemToEject = entry.ID; - vendComponent.ThrowNextItem = throwItem; - - if (TryComp(uid, out SpeakOnUIClosedComponent? speakComponent)) - _speakOnUIClosed.TrySetFlag((uid, speakComponent)); - - entry.Amount--; - Dirty(uid, vendComponent); - TryUpdateVisualState(uid, vendComponent); - Audio.PlayPvs(vendComponent.SoundVend, uid); - } - - /// - /// Checks whether the user is authorized to use the vending machine, then ejects the provided item if true - /// - /// - /// Entity that is trying to use the vending machine - /// The type of inventory the item is from - /// The prototype ID of the item - /// - public void AuthorizedVend(EntityUid uid, EntityUid sender, InventoryType type, string itemId, VendingMachineComponent component) - { - if (IsAuthorized(uid, sender, component)) - { - TryEjectVendorItem(uid, type, itemId, component.CanShoot, component); - } - } - - /// - /// Tries to update the visuals of the component based on its current state. - /// - public void TryUpdateVisualState(EntityUid uid, VendingMachineComponent? vendComponent = null) - { - if (!Resolve(uid, ref vendComponent)) - return; - - var finalState = VendingMachineVisualState.Normal; - if (vendComponent.Broken) - { - finalState = VendingMachineVisualState.Broken; - } - else if (vendComponent.Ejecting) - { - finalState = VendingMachineVisualState.Eject; - } - else if (vendComponent.Denying) - { - finalState = VendingMachineVisualState.Deny; - } - else if (!this.IsPowered(uid, EntityManager)) - { - finalState = VendingMachineVisualState.Off; - } - - if (_light.TryGetLight(uid, out var pointlight)) - { - var lightState = finalState != VendingMachineVisualState.Broken && finalState != VendingMachineVisualState.Off; - _light.SetEnabled(uid, lightState, pointlight); - } - - _appearanceSystem.SetData(uid, VendingMachineVisuals.VisualState, finalState); - } - /// /// Ejects a random item from the available stock. Will do nothing if the vending machine is empty. /// @@ -367,18 +202,18 @@ namespace Content.Server.VendingMachines } else { - TryEjectVendorItem(uid, item.Type, item.ID, throwItem, vendComponent); + TryEjectVendorItem(uid, item.Type, item.ID, throwItem, user: null, vendComponent: vendComponent); } } - private void EjectItem(EntityUid uid, VendingMachineComponent? vendComponent = null, bool forceEject = false) + protected override void EjectItem(EntityUid uid, VendingMachineComponent? vendComponent = null, bool forceEject = false) { if (!Resolve(uid, ref vendComponent)) return; // No need to update the visual state because we never changed it during a forced eject if (!forceEject) - TryUpdateVisualState(uid, vendComponent); + TryUpdateVisualState((uid, vendComponent)); if (string.IsNullOrEmpty(vendComponent.NextItemToEject)) { @@ -411,68 +246,17 @@ namespace Content.Server.VendingMachines vendComponent.ThrowNextItem = false; } - private VendingMachineInventoryEntry? GetEntry(EntityUid uid, string entryId, InventoryType type, VendingMachineComponent? component = null) - { - if (!Resolve(uid, ref component)) - return null; - - if (type == InventoryType.Emagged && _emag.CheckFlag(uid, EmagType.Interaction)) - return component.EmaggedInventory.GetValueOrDefault(entryId); - - if (type == InventoryType.Contraband && component.Contraband) - return component.ContrabandInventory.GetValueOrDefault(entryId); - - return component.Inventory.GetValueOrDefault(entryId); - } - public override void Update(float frameTime) { base.Update(frameTime); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp)) - { - if (comp.Ejecting) - { - comp.EjectAccumulator += frameTime; - if (comp.EjectAccumulator >= comp.EjectDelay) - { - comp.EjectAccumulator = 0f; - comp.Ejecting = false; - - EjectItem(uid, comp); - } - } - - if (comp.Denying) - { - comp.DenyAccumulator += frameTime; - if (comp.DenyAccumulator >= comp.DenyDelay) - { - comp.DenyAccumulator = 0f; - comp.Denying = false; - - TryUpdateVisualState(uid, comp); - } - } - - if (comp.DispenseOnHitCoolingDown) - { - comp.DispenseOnHitAccumulator += frameTime; - if (comp.DispenseOnHitAccumulator >= comp.DispenseOnHitCooldown) - { - comp.DispenseOnHitAccumulator = 0f; - comp.DispenseOnHitCoolingDown = false; - } - } - } var disabled = EntityQueryEnumerator(); while (disabled.MoveNext(out var uid, out _, out var comp)) { if (comp.NextEmpEject < _timing.CurTime) { EjectRandom(uid, true, false, comp); - comp.NextEmpEject += TimeSpan.FromSeconds(5 * comp.EjectDelay); + comp.NextEmpEject += (5 * comp.EjectDelay); } } } @@ -485,7 +269,7 @@ namespace Content.Server.VendingMachines RestockInventoryFromPrototype(uid, vendComponent); Dirty(uid, vendComponent); - TryUpdateVisualState(uid, vendComponent); + TryUpdateVisualState((uid, vendComponent)); } private void OnPriceCalculation(EntityUid uid, VendingMachineRestockComponent component, ref PriceCalculationEvent args) diff --git a/Content.Server/Advertise/Components/SpeakOnUIClosedComponent.cs b/Content.Shared/Advertise/Components/SpeakOnUIClosedComponent.cs similarity index 80% rename from Content.Server/Advertise/Components/SpeakOnUIClosedComponent.cs rename to Content.Shared/Advertise/Components/SpeakOnUIClosedComponent.cs index 99d0080d7f..1f9672dc7f 100644 --- a/Content.Server/Advertise/Components/SpeakOnUIClosedComponent.cs +++ b/Content.Shared/Advertise/Components/SpeakOnUIClosedComponent.cs @@ -1,13 +1,15 @@ +using Content.Shared.Advertise.Systems; using Content.Shared.Dataset; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; -namespace Content.Server.Advertise.Components; +namespace Content.Shared.Advertise.Components; /// /// Causes the entity to speak using the Chat system when its ActivatableUI is closed, optionally /// requiring that a Flag be set as well. /// -[RegisterComponent, Access(typeof(SpeakOnUIClosedSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedSpeakOnUIClosedSystem))] public sealed partial class SpeakOnUIClosedComponent : Component { /// @@ -31,6 +33,6 @@ public sealed partial class SpeakOnUIClosedComponent : Component /// /// State variable only used if is true. Set with . /// - [DataField] + [DataField, AutoNetworkedField] public bool Flag; } diff --git a/Content.Shared/Advertise/Systems/SharedSpeakOnUIClosedSystem.cs b/Content.Shared/Advertise/Systems/SharedSpeakOnUIClosedSystem.cs new file mode 100644 index 0000000000..2574e9d499 --- /dev/null +++ b/Content.Shared/Advertise/Systems/SharedSpeakOnUIClosedSystem.cs @@ -0,0 +1,16 @@ +using SpeakOnUIClosedComponent = Content.Shared.Advertise.Components.SpeakOnUIClosedComponent; + +namespace Content.Shared.Advertise.Systems; + +public abstract class SharedSpeakOnUIClosedSystem : EntitySystem +{ + public bool TrySetFlag(Entity entity, bool value = true) + { + if (!Resolve(entity, ref entity.Comp)) + return false; + + entity.Comp.Flag = value; + Dirty(entity); + return true; + } +} diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs index f8d00f56f0..de57189bc7 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs @@ -67,7 +67,7 @@ public abstract partial class SharedVendingMachineSystem args.Handled = true; - var doAfterArgs = new DoAfterArgs(EntityManager, args.User, (float) component.RestockDelay.TotalSeconds, new RestockDoAfterEvent(), target, + var doAfterArgs = new DoAfterArgs(EntityManager, args.User, (float)component.RestockDelay.TotalSeconds, new RestockDoAfterEvent(), target, target: target, used: uid) { BreakOnMove = true, diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs index c4f3eede2d..d44e00c599 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs @@ -1,34 +1,143 @@ using Content.Shared.Emag.Components; using Robust.Shared.Prototypes; using System.Linq; +using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; +using Content.Shared.Advertise.Components; +using Content.Shared.Advertise.Systems; using Content.Shared.DoAfter; using Content.Shared.Emag.Systems; using Content.Shared.Interaction; using Content.Shared.Popups; +using Content.Shared.Power.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; +using Robust.Shared.GameStates; using Robust.Shared.Network; using Robust.Shared.Random; +using Robust.Shared.Timing; namespace Content.Shared.VendingMachines; public abstract partial class SharedVendingMachineSystem : EntitySystem { - [Dependency] private readonly INetManager _net = default!; + [Dependency] protected readonly IGameTiming Timing = default!; + [Dependency] private readonly INetManager _net = default!; [Dependency] protected readonly IPrototypeManager PrototypeManager = default!; + [Dependency] private readonly AccessReaderSystem _accessReader = default!; + [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; [Dependency] protected readonly SharedAudioSystem Audio = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] protected readonly SharedPointLightSystem Light = default!; + [Dependency] private readonly SharedPowerReceiverSystem _receiver = default!; [Dependency] protected readonly SharedPopupSystem Popup = default!; + [Dependency] private readonly SharedSpeakOnUIClosedSystem _speakOn = default!; + [Dependency] protected readonly SharedUserInterfaceSystem UISystem = default!; [Dependency] protected readonly IRobustRandom Randomizer = default!; [Dependency] private readonly EmagSystem _emag = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnVendingGetState); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnEmagged); SubscribeLocalEvent(OnAfterInteract); + + Subs.BuiEvents(VendingMachineUiKey.Key, subs => + { + subs.Event(OnInventoryEjectMessage); + }); + } + + private void OnVendingGetState(Entity entity, ref ComponentGetState args) + { + var component = entity.Comp; + + var inventory = new Dictionary(); + var emaggedInventory = new Dictionary(); + var contrabandInventory = new Dictionary(); + + foreach (var weh in component.Inventory) + { + inventory[weh.Key] = new(weh.Value); + } + + foreach (var weh in component.EmaggedInventory) + { + emaggedInventory[weh.Key] = new(weh.Value); + } + + foreach (var weh in component.ContrabandInventory) + { + contrabandInventory[weh.Key] = new(weh.Value); + } + + args.State = new VendingMachineComponentState() + { + Inventory = inventory, + EmaggedInventory = emaggedInventory, + ContrabandInventory = contrabandInventory, + Contraband = component.Contraband, + EjectEnd = component.EjectEnd, + DenyEnd = component.DenyEnd, + DispenseOnHitEnd = component.DispenseOnHitEnd, + }; + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + var curTime = Timing.CurTime; + + while (query.MoveNext(out var uid, out var comp)) + { + if (comp.Ejecting) + { + if (curTime > comp.EjectEnd) + { + comp.EjectEnd = null; + Dirty(uid, comp); + + EjectItem(uid, comp); + UpdateUI((uid, comp)); + } + } + + if (comp.Denying) + { + if (curTime > comp.DenyEnd) + { + comp.DenyEnd = null; + Dirty(uid, comp); + + TryUpdateVisualState((uid, comp)); + } + } + + if (comp.DispenseOnHitCoolingDown) + { + if (curTime > comp.DispenseOnHitEnd) + { + comp.DispenseOnHitEnd = null; + Dirty(uid, comp); + } + } + } + } + + private void OnInventoryEjectMessage(Entity entity, ref VendingMachineEjectMessage args) + { + if (!_receiver.IsPowered(entity.Owner) || Deleted(entity)) + return; + + if (args.Actor is not { Valid: true } actor) + return; + + AuthorizedVend(entity.Owner, actor, args.Type, args.ID, entity.Comp); } protected virtual void OnMapInit(EntityUid uid, VendingMachineComponent component, MapInitEvent args) @@ -36,6 +145,162 @@ public abstract partial class SharedVendingMachineSystem : EntitySystem RestockInventoryFromPrototype(uid, component, component.InitialStockQuality); } + protected virtual void EjectItem(EntityUid uid, VendingMachineComponent? vendComponent = null, bool forceEject = false) { } + + /// + /// Checks if the user is authorized to use this vending machine + /// + /// + /// Entity trying to use the vending machine + /// + public bool IsAuthorized(EntityUid uid, EntityUid sender, VendingMachineComponent? vendComponent = null) + { + if (!Resolve(uid, ref vendComponent)) + return false; + + if (!TryComp(uid, out var accessReader)) + return true; + + if (_accessReader.IsAllowed(sender, uid, accessReader) || HasComp(uid)) + return true; + + Popup.PopupClient(Loc.GetString("vending-machine-component-try-eject-access-denied"), uid, sender); + Deny((uid, vendComponent), sender); + return false; + } + + protected VendingMachineInventoryEntry? GetEntry(EntityUid uid, string entryId, InventoryType type, VendingMachineComponent? component = null) + { + if (!Resolve(uid, ref component)) + return null; + + if (type == InventoryType.Emagged && HasComp(uid)) + return component.EmaggedInventory.GetValueOrDefault(entryId); + + if (type == InventoryType.Contraband && component.Contraband) + return component.ContrabandInventory.GetValueOrDefault(entryId); + + return component.Inventory.GetValueOrDefault(entryId); + } + + /// + /// Tries to eject the provided item. Will do nothing if the vending machine is incapable of ejecting, already ejecting + /// or the item doesn't exist in its inventory. + /// + /// + /// The type of inventory the item is from + /// The prototype ID of the item + /// Whether the item should be thrown in a random direction after ejection + /// + public void TryEjectVendorItem(EntityUid uid, InventoryType type, string itemId, bool throwItem, EntityUid? user = null, VendingMachineComponent? vendComponent = null) + { + if (!Resolve(uid, ref vendComponent)) + return; + + if (vendComponent.Ejecting || vendComponent.Broken || !_receiver.IsPowered(uid)) + { + return; + } + + var entry = GetEntry(uid, itemId, type, vendComponent); + + if (string.IsNullOrEmpty(entry?.ID)) + { + Popup.PopupClient(Loc.GetString("vending-machine-component-try-eject-invalid-item"), uid); + Deny((uid, vendComponent)); + return; + } + + if (entry.Amount <= 0) + { + Popup.PopupClient(Loc.GetString("vending-machine-component-try-eject-out-of-stock"), uid); + Deny((uid, vendComponent)); + return; + } + + // Start Ejecting, and prevent users from ordering while anim playing + vendComponent.EjectEnd = Timing.CurTime + vendComponent.EjectDelay; + vendComponent.NextItemToEject = entry.ID; + vendComponent.ThrowNextItem = throwItem; + + if (TryComp(uid, out SpeakOnUIClosedComponent? speakComponent)) + _speakOn.TrySetFlag((uid, speakComponent)); + + entry.Amount--; + Dirty(uid, vendComponent); + UpdateUI((uid, vendComponent)); + TryUpdateVisualState((uid, vendComponent)); + Audio.PlayPredicted(vendComponent.SoundVend, uid, user); + } + + public void Deny(Entity entity, EntityUid? user = null) + { + if (!Resolve(entity.Owner, ref entity.Comp)) + return; + + if (entity.Comp.Denying) + return; + + entity.Comp.DenyEnd = Timing.CurTime + entity.Comp.DenyDelay; + Audio.PlayPredicted(entity.Comp.SoundDeny, entity.Owner, user, AudioParams.Default.WithVolume(-2f)); + TryUpdateVisualState(entity); + Dirty(entity); + } + + protected virtual void UpdateUI(Entity entity) { } + + /// + /// Tries to update the visuals of the component based on its current state. + /// + public void TryUpdateVisualState(Entity entity) + { + if (!Resolve(entity.Owner, ref entity.Comp)) + return; + + var finalState = VendingMachineVisualState.Normal; + if (entity.Comp.Broken) + { + finalState = VendingMachineVisualState.Broken; + } + else if (entity.Comp.Ejecting) + { + finalState = VendingMachineVisualState.Eject; + } + else if (entity.Comp.Denying) + { + finalState = VendingMachineVisualState.Deny; + } + else if (!_receiver.IsPowered(entity.Owner)) + { + finalState = VendingMachineVisualState.Off; + } + + // TODO: You know this should really live on the client with netsync off because client knows the state. + if (Light.TryGetLight(entity.Owner, out var pointlight)) + { + var lightEnabled = finalState != VendingMachineVisualState.Broken && finalState != VendingMachineVisualState.Off; + Light.SetEnabled(entity.Owner, lightEnabled, pointlight); + } + + _appearanceSystem.SetData(entity.Owner, VendingMachineVisuals.VisualState, finalState); + } + + /// + /// Checks whether the user is authorized to use the vending machine, then ejects the provided item if true + /// + /// + /// Entity that is trying to use the vending machine + /// The type of inventory the item is from + /// The prototype ID of the item + /// + public void AuthorizedVend(EntityUid uid, EntityUid sender, InventoryType type, string itemId, VendingMachineComponent component) + { + if (IsAuthorized(uid, sender, component)) + { + TryEjectVendorItem(uid, type, itemId, component.CanShoot, sender, component); + } + } + public void RestockInventoryFromPrototype(EntityUid uid, VendingMachineComponent? component = null, float restockQuality = 1f) { diff --git a/Content.Shared/VendingMachines/VendingMachineComponent.cs b/Content.Shared/VendingMachines/VendingMachineComponent.cs index f3fe3a1ecd..cbd59dbfaa 100644 --- a/Content.Shared/VendingMachines/VendingMachineComponent.cs +++ b/Content.Shared/VendingMachines/VendingMachineComponent.cs @@ -1,19 +1,19 @@ using Content.Shared.Actions; using Robust.Shared.Audio; using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.VendingMachines { - [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] + [RegisterComponent, NetworkedComponent, AutoGenerateComponentPause] public sealed partial class VendingMachineComponent : Component { /// /// PrototypeID for the vending machine's inventory, see /// + // Okay so not using ProtoId here is load-bearing because the ProtoId serializer will log errors if the prototype doesn't exist. [DataField("pack", customTypeSerializer: typeof(PrototypeIdSerializer), required: true)] public string PackPrototypeId = string.Empty; @@ -22,7 +22,7 @@ namespace Content.Shared.VendingMachines /// Used by the client to determine how long the deny animation should be played. /// [DataField] - public float DenyDelay = 2.0f; + public TimeSpan DenyDelay = TimeSpan.FromSeconds(2); /// /// Used by the server to determine how long the vending machine stays in the "Eject" state. @@ -30,23 +30,40 @@ namespace Content.Shared.VendingMachines /// Used by the client to determine how long the deny animation should be played. /// [DataField] - public float EjectDelay = 1.2f; + public TimeSpan EjectDelay = TimeSpan.FromSeconds(1.2); - [DataField, AutoNetworkedField] + [DataField] public Dictionary Inventory = new(); - [DataField, AutoNetworkedField] + [DataField] public Dictionary EmaggedInventory = new(); - [DataField, AutoNetworkedField] + [DataField] public Dictionary ContrabandInventory = new(); - [DataField, AutoNetworkedField] + /// + /// If true then unlocks the + /// + [DataField] public bool Contraband; - public bool Ejecting; - public bool Denying; - public bool DispenseOnHitCoolingDown; + [ViewVariables] + public bool Ejecting => EjectEnd != null; + + [ViewVariables] + public bool Denying => DenyEnd != null; + + [ViewVariables] + public bool DispenseOnHitCoolingDown => DispenseOnHitEnd != null; + + [DataField, AutoPausedField] + public TimeSpan? EjectEnd; + + [DataField, AutoPausedField] + public TimeSpan? DenyEnd; + + [DataField] + public TimeSpan? DispenseOnHitEnd; public string? NextItemToEject; @@ -55,7 +72,7 @@ namespace Content.Shared.VendingMachines /// /// When true, will forcefully throw any object it dispenses /// - [DataField("speedLimiter")] + [DataField] public bool CanShoot = false; public bool ThrowNextItem = false; @@ -64,14 +81,14 @@ namespace Content.Shared.VendingMachines /// The chance that a vending machine will randomly dispense an item on hit. /// Chance is 0 if null. /// - [DataField("dispenseOnHitChance")] + [DataField] public float? DispenseOnHitChance; /// /// The minimum amount of damage that must be done per hit to have a chance /// of dispensing an item. /// - [DataField("dispenseOnHitThreshold")] + [DataField] public float? DispenseOnHitThreshold; /// @@ -80,13 +97,13 @@ namespace Content.Shared.VendingMachines /// 0 for a vending machine for legitimate reasons (no desired delay/no eject animation) /// and can be circumvented with forced ejections. /// - [DataField("dispenseOnHitCooldown")] - public float? DispenseOnHitCooldown = 1.0f; + [DataField] + public TimeSpan? DispenseOnHitCooldown = TimeSpan.FromSeconds(1.0); /// /// Sound that plays when ejecting an item /// - [DataField("soundVend")] + [DataField] // Grabbed from: https://github.com/tgstation/tgstation/blob/d34047a5ae911735e35cd44a210953c9563caa22/sound/machines/machine_vend.ogg public SoundSpecifier SoundVend = new SoundPathSpecifier("/Audio/Machines/machine_vend.ogg") { @@ -100,7 +117,7 @@ namespace Content.Shared.VendingMachines /// /// Sound that plays when an item can't be ejected /// - [DataField("soundDeny")] + [DataField] // Yoinked from: https://github.com/discordia-space/CEV-Eris/blob/35bbad6764b14e15c03a816e3e89aa1751660ba9/sound/machines/Custom_deny.ogg public SoundSpecifier SoundDeny = new SoundPathSpecifier("/Audio/Machines/custom_deny.ogg"); @@ -108,10 +125,6 @@ namespace Content.Shared.VendingMachines public float NonLimitedEjectRange = 5f; - public float EjectAccumulator = 0f; - public float DenyAccumulator = 0f; - public float DispenseOnHitAccumulator = 0f; - /// /// The quality of the stock in the vending machine on spawn. /// Represents the percentage chance (0.0f = 0%, 1.0f = 100%) each set of items in the machine is fully-stocked. @@ -123,7 +136,7 @@ namespace Content.Shared.VendingMachines /// /// While disabled by EMP it randomly ejects items /// - [DataField("nextEmpEject", customTypeSerializer: typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] public TimeSpan NextEmpEject = TimeSpan.Zero; #region Client Visuals @@ -131,28 +144,28 @@ namespace Content.Shared.VendingMachines /// RSI state for when the vending machine is unpowered. /// Will be displayed on the layer /// - [DataField("offState")] + [DataField] public string? OffState; /// /// RSI state for the screen of the vending machine /// Will be displayed on the layer /// - [DataField("screenState")] + [DataField] public string? ScreenState; /// /// RSI state for the vending machine's normal state. Usually a looping animation. /// Will be displayed on the layer /// - [DataField("normalState")] + [DataField] public string? NormalState; /// /// RSI state for the vending machine's eject animation. /// Will be displayed on the layer /// - [DataField("ejectState")] + [DataField] public string? EjectState; /// @@ -160,14 +173,14 @@ namespace Content.Shared.VendingMachines /// or looped depending on how is set. /// Will be displayed on the layer /// - [DataField("denyState")] + [DataField] public string? DenyState; /// /// RSI state for when the vending machine is unpowered. /// Will be displayed on the layer /// - [DataField("brokenState")] + [DataField] public string? BrokenState; /// @@ -195,6 +208,13 @@ namespace Content.Shared.VendingMachines ID = id; Amount = amount; } + + public VendingMachineInventoryEntry(VendingMachineInventoryEntry entry) + { + Type = entry.Type; + ID = entry.ID; + Amount = entry.Amount; + } } [Serializable, NetSerializable] @@ -206,13 +226,13 @@ namespace Content.Shared.VendingMachines } [Serializable, NetSerializable] - public enum VendingMachineVisuals + public enum VendingMachineVisuals : byte { VisualState } [Serializable, NetSerializable] - public enum VendingMachineVisualState + public enum VendingMachineVisualState : byte { Normal, Off, @@ -254,4 +274,22 @@ namespace Content.Shared.VendingMachines { }; + + [Serializable, NetSerializable] + public sealed class VendingMachineComponentState : ComponentState + { + public Dictionary Inventory = new(); + + public Dictionary EmaggedInventory = new(); + + public Dictionary ContrabandInventory = new(); + + public bool Contraband; + + public TimeSpan? EjectEnd; + + public TimeSpan? DenyEnd; + + public TimeSpan? DispenseOnHitEnd; + } } From 86c937da780f5e4165c12fc55ad03ca0d01ca3e7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 2 Mar 2025 02:49:00 +0000 Subject: [PATCH 15/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4d85e4849d..fc5886ed8c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: pheenty - changes: - - message: QM is now considered an important job. - type: Tweak - - message: QM is now correctly considered head for traitor's kill head objective, - while warden now isn't. - type: Fix - id: 7529 - time: '2024-10-18T09:43:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32721 - author: JIPDawg changes: - message: On Salamander the round will now restart after 5 minutes from when the @@ -3896,3 +3886,11 @@ id: 8028 time: '2025-03-02T02:29:54.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35330 +- author: metalgearsloth + changes: + - message: Predict vending machine UI and have the buttons reflect whether the UI + is useable. + type: Tweak + id: 8029 + time: '2025-03-02T02:47:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33412 From 26dc5be80028c2578abf531687c764e551a43b69 Mon Sep 17 00:00:00 2001 From: Myra Date: Sun, 2 Mar 2025 13:47:11 +0100 Subject: [PATCH 16/91] Change Phalanximine to be more complex, increase Arithrazine damage (#32209) --- Resources/Prototypes/Reagents/medicine.yml | 40 +++++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 0b58294649..cfc94b9cf3 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -133,7 +133,7 @@ types: Radiation: -3 groups: - Brute: 0.5 + Brute: 1.5 - type: reagent id: Bicaridine @@ -571,14 +571,29 @@ min: 4 metabolisms: Medicine: + metabolismRate: 0.1 effects: - !type:HealthChange damage: types: - Cellular: -1 - Radiation: 1 - - !type:ChemVomit - probability: 0.05 + Cellular: -0.3 + Radiation: 0.15 + Caustic: 0.15 + - !type:HealthChange + conditions: + - !type:ReagentThreshold + min: 11 + damage: + types: + Radiation: 0.2 + - !type:HealthChange + conditions: + - !type:ReagentThreshold + reagent: Arithrazine + min: 1 + damage: + types: + Caustic: 0.3 - type: reagent id: PolypyryliumOligomers @@ -993,6 +1008,21 @@ - !type:ReagentThreshold min: 30 probability: 0.02 + - !type:ChemVomit + conditions: + - !type:ReagentThreshold + reagent: Arithrazine + min: 1 + probability: 0.1 + - !type:PopupMessage + conditions: + - !type:ReagentThreshold + reagent: Arithrazine + min: 1 + type: Local + visualType: Medium + messages: [ "generic-reagent-effect-nauseous" ] + probability: 0.2 - type: reagent id: Lacerinol From 9eb195e441054795daa04826e406bab25f5da5f9 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 19:36:25 +0000 Subject: [PATCH 17/91] undo arith nerf --- Resources/Prototypes/Reagents/medicine.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index cfc94b9cf3..8b737b39bd 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -133,7 +133,7 @@ types: Radiation: -3 groups: - Brute: 1.5 + Brute: 0.5 # DeltaV - was 1.5, implant removal damage is disabled which is why upstream bumped it - type: reagent id: Bicaridine From acb0f7b1b8508160a89b8d7f7d237d5cb8e66190 Mon Sep 17 00:00:00 2001 From: Myra Date: Sun, 2 Mar 2025 13:55:10 +0100 Subject: [PATCH 18/91] #32209 changelog (#35619) Since it was merged into staging no changelog was made, but we should at least have it for next release. (And vulture) --- Resources/Changelog/Parts/32209.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Resources/Changelog/Parts/32209.yml diff --git a/Resources/Changelog/Parts/32209.yml b/Resources/Changelog/Parts/32209.yml new file mode 100644 index 0000000000..112d9a5d9c --- /dev/null +++ b/Resources/Changelog/Parts/32209.yml @@ -0,0 +1,7 @@ +author: SlamBamActionman +changes: + - message: Phalanximine now has an overdose threshold and works slower, along with other minor tweaks. + type: Tweak + - message: Arithrazine now deals increased damage during treatment. + type: Tweak +url: https://github.com/space-wizards/space-station-14/pull/32209 From c14fdae094357f1249e26c92f4f70a86cd17350f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 2 Mar 2025 12:56:18 +0000 Subject: [PATCH 19/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 ++++++++++-------- Resources/Changelog/Parts/32209.yml | 7 ------- 2 files changed, 10 insertions(+), 15 deletions(-) delete mode 100644 Resources/Changelog/Parts/32209.yml diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fc5886ed8c..08e901740a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: JIPDawg - changes: - - message: On Salamander the round will now restart after 5 minutes from when the - Evac shuttle arrives at CentCom. - type: Tweak - id: 7530 - time: '2024-10-18T10:03:12.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32776 - author: Errant changes: - message: Players becoming Traitor without a PDA now correctly get the text and @@ -3894,3 +3886,13 @@ id: 8029 time: '2025-03-02T02:47:52.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33412 +- author: SlamBamActionman + changes: + - message: Phalanximine now has an overdose threshold and works slower, along with + other minor tweaks. + type: Tweak + - message: Arithrazine now deals increased damage during treatment. + type: Tweak + id: 8030 + time: '2025-03-02T12:56:16.674298+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32209 diff --git a/Resources/Changelog/Parts/32209.yml b/Resources/Changelog/Parts/32209.yml deleted file mode 100644 index 112d9a5d9c..0000000000 --- a/Resources/Changelog/Parts/32209.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: SlamBamActionman -changes: - - message: Phalanximine now has an overdose threshold and works slower, along with other minor tweaks. - type: Tweak - - message: Arithrazine now deals increased damage during treatment. - type: Tweak -url: https://github.com/space-wizards/space-station-14/pull/32209 From ff5849e48761481f7d1940845a9162487c969064 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 2 Mar 2025 16:50:12 +0100 Subject: [PATCH 20/91] Cloning Refactor and bugfixes (#35555) * cloning refactor * cleanup and fixes * don't pick from 0 * give dwarves the correct species * fix dna and bloodstream reagent data cloning * don't copy helmets * be less redundant --- .../Body/Systems/BloodstreamSystem.cs | 22 +- Content.Server/Cloning/AcceptCloningEui.cs | 8 +- .../Cloning/CloningConsoleSystem.cs | 11 +- Content.Server/Cloning/CloningPodSystem.cs | 335 +++++++++++++ Content.Server/Cloning/CloningSystem.cs | 459 ++++-------------- .../Components/RandomCloneSpawnerComponent.cs | 17 + .../Cloning/RandomCloneSpawnerSystem.cs | 47 ++ .../Forensics/Systems/ForensicsSystem.cs | 63 ++- .../Implants/SubdermalImplantSystem.cs | 16 +- .../EntitySystems/AddAccentClothingSystem.cs | 2 + .../Traits/Assorted/UnrevivableSystem.cs | 20 + .../Zombies/ZombieSystem.Transform.cs | 12 +- Content.Server/Zombies/ZombieSystem.cs | 31 +- .../Components/ParadoxClonerRuleComponent.cs | 9 +- .../StationEvents/Events/ParadoxClonerRule.cs | 38 +- Content.Shared/Cloning/CloningEvents.cs | 13 + Content.Shared/Cloning/CloningPodComponent.cs | 38 +- .../Cloning/CloningSettingsPrototype.cs | 60 +++ .../Forensics/Components/DnaComponent.cs | 2 +- Content.Shared/Forensics/Events.cs | 2 +- .../SharedHumanoidAppearanceSystem.cs | 4 - .../Traits/Assorted/UnrevivableComponent.cs | 6 + .../components/cloning-console-component.ftl | 3 +- .../Prototypes/DeviceLinking/source_ports.yml | 2 + .../Prototypes/Entities/Mobs/Player/clone.yml | 84 ++++ .../Entities/Mobs/Species/dwarf.yml | 4 +- .../Markers/paradox_clone.rsi/meta.json | 14 + .../Markers/paradox_clone.rsi/preview.png | Bin 0 -> 1440 bytes 28 files changed, 846 insertions(+), 476 deletions(-) create mode 100644 Content.Server/Cloning/CloningPodSystem.cs create mode 100644 Content.Server/Cloning/Components/RandomCloneSpawnerComponent.cs create mode 100644 Content.Server/Cloning/RandomCloneSpawnerSystem.cs create mode 100644 Content.Server/Traits/Assorted/UnrevivableSystem.cs create mode 100644 Content.Shared/Cloning/CloningEvents.cs create mode 100644 Content.Shared/Cloning/CloningSettingsPrototype.cs create mode 100644 Resources/Prototypes/Entities/Mobs/Player/clone.yml create mode 100644 Resources/Textures/Markers/paradox_clone.rsi/meta.json create mode 100644 Resources/Textures/Markers/paradox_clone.rsi/preview.png diff --git a/Content.Server/Body/Systems/BloodstreamSystem.cs b/Content.Server/Body/Systems/BloodstreamSystem.cs index d04a993226..6dc03fed74 100644 --- a/Content.Server/Body/Systems/BloodstreamSystem.cs +++ b/Content.Server/Body/Systems/BloodstreamSystem.cs @@ -1,7 +1,6 @@ using Content.Server.Body.Components; using Content.Server.EntityEffects.Effects; using Content.Server.Fluids.EntitySystems; -using Content.Server.Forensics; using Content.Server.Popups; using Content.Shared.Alert; using Content.Shared.Chemistry.Components; @@ -40,7 +39,6 @@ public sealed class BloodstreamSystem : EntitySystem [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; [Dependency] private readonly SharedStutteringSystem _stutteringSystem = default!; [Dependency] private readonly AlertsSystem _alertsSystem = default!; - [Dependency] private readonly ForensicsSystem _forensicsSystem = default!; public override void Initialize() { @@ -193,17 +191,8 @@ public sealed class BloodstreamSystem : EntitySystem bloodSolution.MaxVolume = entity.Comp.BloodMaxVolume; tempSolution.MaxVolume = entity.Comp.BleedPuddleThreshold * 4; // give some leeway, for chemstream as well - // Ensure blood that should have DNA has it; must be run here, in case DnaComponent has not yet been initialized - - if (TryComp(entity.Owner, out var donorComp) && donorComp.DNA == String.Empty) - { - donorComp.DNA = _forensicsSystem.GenerateDNA(); - - var ev = new GenerateDnaEvent { Owner = entity.Owner, DNA = donorComp.DNA }; - RaiseLocalEvent(entity.Owner, ref ev); - } - // Fill blood solution with BLOOD + // The DNA string might not be initialized yet, but the reagent data gets updated in the GenerateDnaEvent subscription bloodSolution.AddReagent(new ReagentId(entity.Comp.BloodReagent, GetEntityBloodData(entity.Owner)), entity.Comp.BloodMaxVolume - bloodSolution.Volume); } @@ -492,6 +481,8 @@ public sealed class BloodstreamSystem : EntitySystem reagentData.AddRange(GetEntityBloodData(entity.Owner)); } } + else + Log.Error("Unable to set bloodstream DNA, solution entity could not be resolved"); } /// @@ -502,13 +493,10 @@ public sealed class BloodstreamSystem : EntitySystem var bloodData = new List(); var dnaData = new DnaData(); - if (TryComp(uid, out var donorComp)) - { + if (TryComp(uid, out var donorComp) && donorComp.DNA != null) dnaData.DNA = donorComp.DNA; - } else - { + else dnaData.DNA = Loc.GetString("forensics-dna-unknown"); - } bloodData.Add(dnaData); diff --git a/Content.Server/Cloning/AcceptCloningEui.cs b/Content.Server/Cloning/AcceptCloningEui.cs index 3d4356f8ca..2d1ea93fdb 100644 --- a/Content.Server/Cloning/AcceptCloningEui.cs +++ b/Content.Server/Cloning/AcceptCloningEui.cs @@ -9,13 +9,13 @@ namespace Content.Server.Cloning { private readonly EntityUid _mindId; private readonly MindComponent _mind; - private readonly CloningSystem _cloningSystem; + private readonly CloningPodSystem _cloningPodSystem; - public AcceptCloningEui(EntityUid mindId, MindComponent mind, CloningSystem cloningSys) + public AcceptCloningEui(EntityUid mindId, MindComponent mind, CloningPodSystem cloningPodSys) { _mindId = mindId; _mind = mind; - _cloningSystem = cloningSys; + _cloningPodSystem = cloningPodSys; } public override void HandleMessage(EuiMessageBase msg) @@ -29,7 +29,7 @@ namespace Content.Server.Cloning return; } - _cloningSystem.TransferMindToClone(_mindId, _mind); + _cloningPodSystem.TransferMindToClone(_mindId, _mind); Close(); } } diff --git a/Content.Server/Cloning/CloningConsoleSystem.cs b/Content.Server/Cloning/CloningConsoleSystem.cs index ad0d642f54..e09c761984 100644 --- a/Content.Server/Cloning/CloningConsoleSystem.cs +++ b/Content.Server/Cloning/CloningConsoleSystem.cs @@ -3,7 +3,6 @@ using Content.Server.Administration.Logs; using Content.Server.Cloning.Components; using Content.Server.DeviceLinking.Systems; using Content.Server.Medical.Components; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.UserInterface; using Content.Shared.Cloning; @@ -16,24 +15,22 @@ using Content.Shared.Mind; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Power; -using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Server.Player; namespace Content.Server.Cloning { - [UsedImplicitly] public sealed class CloningConsoleSystem : EntitySystem { [Dependency] private readonly DeviceLinkSystem _signalSystem = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly CloningSystem _cloningSystem = default!; + [Dependency] private readonly CloningPodSystem _cloningPodSystem = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly PowerReceiverSystem _powerReceiverSystem = default!; [Dependency] private readonly SharedMindSystem _mindSystem = default!; - + public override void Initialize() { base.Initialize(); @@ -170,8 +167,8 @@ namespace Content.Server.Cloning if (mind.UserId.HasValue == false || mind.Session == null) return; - // Nyano: Adds scannerComp.MetemKarmaBonus - if (_cloningSystem.TryCloning(cloningPodUid, body.Value, (mindId, mind), cloningPod, scannerComp.CloningFailChanceMultiplier, scannerComp.MetemKarmaBonus)) + // DeltaV: Adds scannerComp.MetemKarmaBonus + if (_cloningPodSystem.TryCloning(cloningPodUid, body.Value, (mindId, mind), cloningPod, scannerComp.CloningFailChanceMultiplier, scannerComp.MetemKarmaBonus)) _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(uid)} successfully cloned {ToPrettyString(body.Value)}."); } diff --git a/Content.Server/Cloning/CloningPodSystem.cs b/Content.Server/Cloning/CloningPodSystem.cs new file mode 100644 index 0000000000..cd26e6bf6b --- /dev/null +++ b/Content.Server/Cloning/CloningPodSystem.cs @@ -0,0 +1,335 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Server.Chat.Systems; +using Content.Server.Cloning.Components; +using Content.Server.DeviceLinking.Systems; +using Content.Server.EUI; +using Content.Server.Fluids.EntitySystems; +using Content.Server.Materials; +using Content.Server.Popups; +using Content.Server.Power.EntitySystems; +using Content.Server.Psionics; // DeltaV +using Content.Shared._EE.Silicon.Components; // Goobstation +using Content.Shared.Atmos; +using Content.Shared.CCVar; +using Content.Shared.Chemistry.Components; +using Content.Shared.Cloning; +using Content.Shared.Damage; +using Content.Shared.DeviceLinking.Events; +using Content.Shared.Emag.Components; +using Content.Shared.Emag.Systems; +using Content.Shared.Examine; +using Content.Shared.GameTicking; +using Content.Shared.Mind; +using Content.Shared.Mind.Components; +using Content.Shared.Mobs.Systems; +using Robust.Server.Containers; +using Robust.Server.Player; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; +using Robust.Shared.Containers; +using Robust.Shared.Physics.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Cloning; + +public sealed class CloningPodSystem : EntitySystem +{ + [Dependency] private readonly DeviceLinkSystem _signalSystem = default!; + [Dependency] private readonly IPlayerManager _playerManager = null!; + [Dependency] private readonly EuiManager _euiManager = null!; + [Dependency] private readonly CloningConsoleSystem _cloningConsoleSystem = default!; + [Dependency] private readonly ContainerSystem _containerSystem = default!; + [Dependency] private readonly MobStateSystem _mobStateSystem = default!; + [Dependency] private readonly PowerReceiverSystem _powerReceiverSystem = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly PuddleSystem _puddleSystem = default!; + [Dependency] private readonly ChatSystem _chatSystem = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IConfigurationManager _configManager = default!; + [Dependency] private readonly MaterialStorageSystem _material = default!; + [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly SharedMindSystem _mindSystem = default!; + [Dependency] private readonly CloningSystem _cloning = default!; + [Dependency] private readonly EmagSystem _emag = default!; + + public readonly Dictionary ClonesWaitingForMind = new(); + public readonly ProtoId SettingsId = "CloningPod"; + public const float EasyModeCloningCost = 0.7f; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(Reset); + SubscribeLocalEvent(HandleMindAdded); + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnPortDisconnected); + SubscribeLocalEvent(OnAnchor); + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnEmagged); + } + + private void OnComponentInit(Entity ent, ref ComponentInit args) + { + ent.Comp.BodyContainer = _containerSystem.EnsureContainer(ent.Owner, "clonepod-bodyContainer"); + _signalSystem.EnsureSinkPorts(ent.Owner, ent.Comp.PodPort); + } + + internal void TransferMindToClone(EntityUid mindId, MindComponent mind) + { + if (!ClonesWaitingForMind.TryGetValue(mind, out var entity) || + !EntityManager.EntityExists(entity) || + !TryComp(entity, out var mindComp) || + mindComp.Mind != null) + return; + + _mindSystem.TransferTo(mindId, entity, ghostCheckOverride: true, mind: mind); + _mindSystem.UnVisit(mindId, mind); + ClonesWaitingForMind.Remove(mind); + } + + private void HandleMindAdded(EntityUid uid, BeingClonedComponent clonedComponent, MindAddedMessage message) + { + if (clonedComponent.Parent == EntityUid.Invalid || + !EntityManager.EntityExists(clonedComponent.Parent) || + !TryComp(clonedComponent.Parent, out var cloningPodComponent) || + uid != cloningPodComponent.BodyContainer.ContainedEntity) + { + EntityManager.RemoveComponent(uid); + return; + } + UpdateStatus(clonedComponent.Parent, CloningPodStatus.Cloning, cloningPodComponent); + } + private void OnPortDisconnected(Entity ent, ref PortDisconnectedEvent args) + { + ent.Comp.ConnectedConsole = null; + } + + private void OnAnchor(Entity ent, ref AnchorStateChangedEvent args) + { + if (ent.Comp.ConnectedConsole == null || !TryComp(ent.Comp.ConnectedConsole, out var console)) + return; + + if (args.Anchored) + { + _cloningConsoleSystem.RecheckConnections(ent.Comp.ConnectedConsole.Value, ent.Owner, console.GeneticScanner, console); + return; + } + _cloningConsoleSystem.UpdateUserInterface(ent.Comp.ConnectedConsole.Value, console); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + if (!args.IsInDetailsRange || !_powerReceiverSystem.IsPowered(ent.Owner)) + return; + + args.PushMarkup(Loc.GetString("cloning-pod-biomass", ("number", _material.GetMaterialAmount(ent.Owner, ent.Comp.RequiredMaterial)))); + } + + // DeltaV - added karmaBonus + public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity mindEnt, CloningPodComponent? clonePod, float failChanceModifier = 1, float karmaBonus = 0.25f) + { + if (!Resolve(uid, ref clonePod)) + return false; + + // DeltaV - This method should use Entity pod instead + // But I don't want to completely mangle it so we do this here + var podEnt = new Entity(uid, clonePod); + + if (HasComp(uid)) + return false; + + var mind = mindEnt.Comp; + if (ClonesWaitingForMind.TryGetValue(mind, out var clone)) + { + if (EntityManager.EntityExists(clone) && + !_mobStateSystem.IsDead(clone) && + TryComp(clone, out var cloneMindComp) && + (cloneMindComp.Mind == null || cloneMindComp.Mind == mindEnt)) + return false; // Mind already has clone + + ClonesWaitingForMind.Remove(mind); + } + + if (mind.OwnedEntity != null && !_mobStateSystem.IsDead(mind.OwnedEntity.Value)) + return false; // Body controlled by mind is not dead + + // Yes, we still need to track down the client because we need to open the Eui + if (mind.UserId == null || !_playerManager.TryGetSessionById(mind.UserId.Value, out var client)) + return false; // If we can't track down the client, we can't offer transfer. That'd be quite bad. + + if (!TryComp(bodyToClone, out var physics)) + return false; + + if (HasComp(bodyToClone)) + return false; // Goobstation: Don't clone IPCs. + + var cloningCost = (int)Math.Round(physics.FixturesMass); + + if (_configManager.GetCVar(CCVars.BiomassEasyMode)) + cloningCost = (int)Math.Round(cloningCost * EasyModeCloningCost); + + // biomass checks + var biomassAmount = _material.GetMaterialAmount(uid, clonePod.RequiredMaterial); + + if (biomassAmount < cloningCost) + { + if (clonePod.ConnectedConsole != null) + _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, Loc.GetString("cloning-console-chat-error", ("units", cloningCost)), InGameICChatType.Speak, false); + return false; + } + + // end of biomass checks + + // genetic damage checks + if (TryComp(bodyToClone, out var damageable) && + damageable.Damage.DamageDict.TryGetValue("Cellular", out var cellularDmg)) + { + var chance = Math.Clamp((float)(cellularDmg / 100), 0, 1); + chance *= failChanceModifier; + + if (cellularDmg > 0 && clonePod.ConnectedConsole != null) + _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, Loc.GetString("cloning-console-cellular-warning", ("percent", Math.Round(100 - chance * 100))), InGameICChatType.Speak, false); + + if (_robustRandom.Prob(chance)) + { + clonePod.FailedClone = true; + UpdateStatus(uid, CloningPodStatus.Gore, clonePod); + AddComp(uid); + _material.TryChangeMaterialAmount(uid, clonePod.RequiredMaterial, -cloningCost); + clonePod.UsedBiomass = cloningCost; + return true; + } + } + // end of genetic damage checks + + if (!_cloning.TryCloning(bodyToClone, _transformSystem.GetMapCoordinates(bodyToClone), SettingsId, out var mob)) // spawn a new body + { + if (clonePod.ConnectedConsole != null) + _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, Loc.GetString("cloning-console-uncloneable-trait-error"), InGameICChatType.Speak, false); + return false; + } + + EnsureComp(mob.Value); // DeltaV + + var cloneMindReturn = EntityManager.AddComponent(mob.Value); + cloneMindReturn.Mind = mind; + cloneMindReturn.Parent = uid; + _containerSystem.Insert(mob.Value, clonePod.BodyContainer); + ClonesWaitingForMind.Add(mind, mob.Value); + _euiManager.OpenEui(new AcceptCloningEui(mindEnt, mind, this), client); + + UpdateStatus(uid, CloningPodStatus.NoMind, clonePod); + AddComp(uid); + _material.TryChangeMaterialAmount(uid, clonePod.RequiredMaterial, -cloningCost); + clonePod.UsedBiomass = cloningCost; + return true; + } + + public void UpdateStatus(EntityUid podUid, CloningPodStatus status, CloningPodComponent cloningPod) + { + cloningPod.Status = status; + _appearance.SetData(podUid, CloningPodVisuals.Status, cloningPod.Status); + } + + public override void Update(float frameTime) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var _, out var cloning)) + { + if (!_powerReceiverSystem.IsPowered(uid)) + continue; + + if (cloning.BodyContainer.ContainedEntity == null && !cloning.FailedClone) + continue; + + cloning.CloningProgress += frameTime; + if (cloning.CloningProgress < cloning.CloningTime) + continue; + + if (cloning.FailedClone) + EndFailedCloning(uid, cloning); + else + Eject(uid, cloning); + } + } + + /// + /// On emag, spawns a failed clone when cloning process fails which attacks nearby crew. + /// + private void OnEmagged(Entity ent, ref GotEmaggedEvent args) + { + if (!_emag.CompareFlag(args.Type, EmagType.Interaction)) + return; + + if (_emag.CheckFlag(ent.Owner, EmagType.Interaction)) + return; + + if (!this.IsPowered(ent.Owner, EntityManager)) + return; + + _popupSystem.PopupEntity(Loc.GetString("cloning-pod-component-upgrade-emag-requirement"), ent.Owner); + args.Handled = true; + } + + public void Eject(EntityUid uid, CloningPodComponent? clonePod) + { + if (!Resolve(uid, ref clonePod)) + return; + + if (clonePod.BodyContainer.ContainedEntity is not { Valid: true } entity || clonePod.CloningProgress < clonePod.CloningTime) + return; + + EntityManager.RemoveComponent(entity); + _containerSystem.Remove(entity, clonePod.BodyContainer); + clonePod.CloningProgress = 0f; + clonePod.UsedBiomass = 0; + UpdateStatus(uid, CloningPodStatus.Idle, clonePod); + RemCompDeferred(uid); + } + + private void EndFailedCloning(EntityUid uid, CloningPodComponent clonePod) + { + clonePod.FailedClone = false; + clonePod.CloningProgress = 0f; + UpdateStatus(uid, CloningPodStatus.Idle, clonePod); + var transform = Transform(uid); + var indices = _transformSystem.GetGridTilePositionOrDefault((uid, transform)); + var tileMix = _atmosphereSystem.GetTileMixture(transform.GridUid, null, indices, true); + + if (HasComp(uid)) + { + _audio.PlayPvs(clonePod.ScreamSound, uid); + Spawn(clonePod.MobSpawnId, transform.Coordinates); + } + + Solution bloodSolution = new(); + + var i = 0; + while (i < 1) + { + tileMix?.AdjustMoles(Gas.Ammonia, 6f); + bloodSolution.AddReagent("Blood", 50); + if (_robustRandom.Prob(0.2f)) + i++; + } + _puddleSystem.TrySpillAt(uid, bloodSolution, out _); + + if (!HasComp(uid)) + { + _material.SpawnMultipleFromMaterial(_robustRandom.Next(1, (int)(clonePod.UsedBiomass / 2.5)), clonePod.RequiredMaterial, Transform(uid).Coordinates); + } + + clonePod.UsedBiomass = 0; + RemCompDeferred(uid); + } + + public void Reset(RoundRestartCleanupEvent ev) + { + ClonesWaitingForMind.Clear(); + } +} diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index 310029ddb3..937b311a59 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -1,382 +1,123 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Server.Chat.Systems; -using Content.Server.Cloning.Components; -using Content.Server.DeviceLinking.Systems; -using Content.Server.EUI; -using Content.Server.Fluids.EntitySystems; using Content.Server.Humanoid; -using Content.Server.Jobs; -using Content.Server.Materials; -using Content.Server.Popups; -using Content.Server.Power.EntitySystems; -using Content.Shared._EE.Silicon.Components; // Goobstation -using Content.Server.Psionics; // DeltaV -using Content.Server.Traits.Assorted; // DeltaV -using Content.Shared.Atmos; -using Content.Shared.CCVar; -using Content.Shared.Chemistry.Components; +using Content.Shared.Administration.Logs; using Content.Shared.Cloning; -using Content.Shared.Damage; -using Content.Shared.DeviceLinking.Events; -using Content.Shared.Emag.Components; -using Content.Shared.Emag.Systems; -using Content.Shared.Examine; -using Content.Shared.GameTicking; +using Content.Shared.Cloning.Events; +using Content.Shared.Database; using Content.Shared.Humanoid; -using Content.Shared.Mind; -using Content.Shared.Mind.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.Roles.Jobs; -using Robust.Server.Containers; -using Robust.Server.GameObjects; -using Robust.Server.Player; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Configuration; -using Robust.Shared.Containers; -using Robust.Shared.Physics.Components; +using Content.Shared.Inventory; +using Content.Shared.NameModifier.Components; +using Content.Shared.StatusEffect; +using Content.Shared.Whitelist; +using Robust.Shared.Map; using Robust.Shared.Prototypes; -using Robust.Shared.Random; +using System.Diagnostics.CodeAnalysis; +using System.Linq; -namespace Content.Server.Cloning +namespace Content.Server.Cloning; + +/// +/// System responsible for making a copy of a humanoid's body. +/// For the cloning machines themselves look at CloningPodSystem, CloningConsoleSystem and MedicalScannerSystem instead. +/// +public sealed class CloningSystem : EntitySystem { - public sealed partial class CloningSystem : EntitySystem // DeltaV - Set to partial, see CloningSystem.Metempsychosis.cs + [Dependency] private readonly IComponentFactory _componentFactory = default!; + [Dependency] private readonly HumanoidAppearanceSystem _humanoidSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + + /// + /// Spawns a clone of the given humanoid mob at the specified location or in nullspace. + /// + public bool TryCloning(EntityUid original, MapCoordinates? coords, ProtoId settingsId, [NotNullWhen(true)] out EntityUid? clone) { - [Dependency] private readonly DeviceLinkSystem _signalSystem = default!; - [Dependency] private readonly IPlayerManager _playerManager = null!; - [Dependency] private readonly IPrototypeManager _prototype = default!; - [Dependency] private readonly EuiManager _euiManager = null!; - [Dependency] private readonly CloningConsoleSystem _cloningConsoleSystem = default!; - [Dependency] private readonly HumanoidAppearanceSystem _humanoidSystem = default!; - [Dependency] private readonly ContainerSystem _containerSystem = default!; - [Dependency] private readonly MobStateSystem _mobStateSystem = default!; - [Dependency] private readonly PowerReceiverSystem _powerReceiverSystem = default!; - [Dependency] private readonly IRobustRandom _robustRandom = default!; - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly TransformSystem _transformSystem = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly PuddleSystem _puddleSystem = default!; - [Dependency] private readonly ChatSystem _chatSystem = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly IConfigurationManager _configManager = default!; - [Dependency] private readonly MaterialStorageSystem _material = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; - [Dependency] private readonly MetaDataSystem _metaSystem = default!; - [Dependency] private readonly SharedJobSystem _jobs = default!; - [Dependency] private readonly EmagSystem _emag = default!; + clone = null; + if (!_prototype.TryIndex(settingsId, out var settings)) + return false; // invalid settings - public readonly Dictionary ClonesWaitingForMind = new(); - public const float EasyModeCloningCost = 0.7f; + if (!TryComp(original, out var humanoid)) + return false; // whatever body was to be cloned, was not a humanoid - public override void Initialize() + if (!_prototype.TryIndex(humanoid.Species, out var speciesPrototype)) + return false; // invalid species + + var attemptEv = new CloningAttemptEvent(settings); + RaiseLocalEvent(original, ref attemptEv); + if (attemptEv.Cancelled && !settings.ForceCloning) + return false; // cannot clone, for example due to the unrevivable trait + + clone = coords == null ? Spawn(speciesPrototype.Prototype) : Spawn(speciesPrototype.Prototype, coords.Value); + _humanoidSystem.CloneAppearance(original, clone.Value); + + var componentsToCopy = settings.Components; + + // don't make status effects permanent + if (TryComp(original, out var statusComp)) + componentsToCopy.ExceptWith(statusComp.ActiveEffects.Values.Select(s => s.RelevantComponent).Where(s => s != null)!); + + foreach (var componentName in componentsToCopy) { - base.Initialize(); - - SubscribeLocalEvent(OnComponentInit); - SubscribeLocalEvent(Reset); - SubscribeLocalEvent(HandleMindAdded); - SubscribeLocalEvent(OnPortDisconnected); - SubscribeLocalEvent(OnAnchor); - SubscribeLocalEvent(OnExamined); - SubscribeLocalEvent(OnEmagged); - } - - private void OnComponentInit(EntityUid uid, CloningPodComponent clonePod, ComponentInit args) - { - clonePod.BodyContainer = _containerSystem.EnsureContainer(uid, "clonepod-bodyContainer"); - _signalSystem.EnsureSinkPorts(uid, CloningPodComponent.PodPort); - } - - internal void TransferMindToClone(EntityUid mindId, MindComponent mind) - { - if (!ClonesWaitingForMind.TryGetValue(mind, out var entity) || - !EntityManager.EntityExists(entity) || - !TryComp(entity, out var mindComp) || - mindComp.Mind != null) - return; - - _mindSystem.TransferTo(mindId, entity, ghostCheckOverride: true, mind: mind); - _mindSystem.UnVisit(mindId, mind); - ClonesWaitingForMind.Remove(mind); - } - - private void HandleMindAdded(EntityUid uid, BeingClonedComponent clonedComponent, MindAddedMessage message) - { - if (clonedComponent.Parent == EntityUid.Invalid || - !EntityManager.EntityExists(clonedComponent.Parent) || - !TryComp(clonedComponent.Parent, out var cloningPodComponent) || - uid != cloningPodComponent.BodyContainer.ContainedEntity) + if (!_componentFactory.TryGetRegistration(componentName, out var componentRegistration)) { - EntityManager.RemoveComponent(uid); - return; - } - UpdateStatus(clonedComponent.Parent, CloningPodStatus.Cloning, cloningPodComponent); - } - - private void OnPortDisconnected(EntityUid uid, CloningPodComponent pod, PortDisconnectedEvent args) - { - pod.ConnectedConsole = null; - } - - private void OnAnchor(EntityUid uid, CloningPodComponent component, ref AnchorStateChangedEvent args) - { - if (component.ConnectedConsole == null || !TryComp(component.ConnectedConsole, out var console)) - return; - - if (args.Anchored) - { - _cloningConsoleSystem.RecheckConnections(component.ConnectedConsole.Value, uid, console.GeneticScanner, console); - return; - } - _cloningConsoleSystem.UpdateUserInterface(component.ConnectedConsole.Value, console); - } - - private void OnExamined(EntityUid uid, CloningPodComponent component, ExaminedEvent args) - { - if (!args.IsInDetailsRange || !_powerReceiverSystem.IsPowered(uid)) - return; - - args.PushMarkup(Loc.GetString("cloning-pod-biomass", ("number", _material.GetMaterialAmount(uid, component.RequiredMaterial)))); - } - // Nyano: Adds float karmaBonus - public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity mindEnt, CloningPodComponent? clonePod, float failChanceModifier = 1, float karmaBonus = 0.25f) - { - if (!Resolve(uid, ref clonePod)) - return false; - - // DeltaV - This method should use Entity pod instead - // But I don't want to completely mangle it so we do this here - var podEnt = new Entity(uid, clonePod); - - if (HasComp(uid)) - return false; - - var mind = mindEnt.Comp; - if (ClonesWaitingForMind.TryGetValue(mind, out var clone)) - { - if (EntityManager.EntityExists(clone) && - !_mobStateSystem.IsDead(clone) && - TryComp(clone, out var cloneMindComp) && - (cloneMindComp.Mind == null || cloneMindComp.Mind == mindEnt)) - return false; // Mind already has clone - - ClonesWaitingForMind.Remove(mind); + Log.Error($"Tried to use invalid component registration for cloning: {componentName}"); + continue; } - if (mind.OwnedEntity != null && !_mobStateSystem.IsDead(mind.OwnedEntity.Value)) - return false; // Body controlled by mind is not dead - - // Yes, we still need to track down the client because we need to open the Eui - if (mind.UserId == null || !_playerManager.TryGetSessionById(mind.UserId.Value, out var client)) - return false; // If we can't track down the client, we can't offer transfer. That'd be quite bad. - - if (!TryComp(bodyToClone, out var humanoid)) - return false; // whatever body was to be cloned, was not a humanoid - - if (HasComp(bodyToClone)) - return false; // Goobstation: Don't clone IPCs. - - // Begin Nyano-code: allow paradox anomalies to be cloned. - var pref = humanoid.LastProfileLoaded; - - if (pref == null) - return false; - // End Nyano-code - if (!_prototype.TryIndex(humanoid.Species, out var speciesPrototype)) - return false; - - if (!TryComp(bodyToClone, out var physics)) - return false; - - var cloningCost = (int) Math.Round(physics.FixturesMass); - - if (_configManager.GetCVar(CCVars.BiomassEasyMode)) - cloningCost = (int) Math.Round(cloningCost * EasyModeCloningCost); - - // Check if they have the uncloneable trait - if (TryComp(bodyToClone, out _)) + if (EntityManager.TryGetComponent(original, componentRegistration.Type, out var sourceComp)) // Does the original have this component? { - if (clonePod.ConnectedConsole != null) - { - _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, - Loc.GetString("cloning-console-uncloneable-trait-error"), - InGameICChatType.Speak, false); - } - - return false; - } - - // biomass checks - var biomassAmount = _material.GetMaterialAmount(uid, clonePod.RequiredMaterial); - - if (biomassAmount < cloningCost) - { - if (clonePod.ConnectedConsole != null) - _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, Loc.GetString("cloning-console-chat-error", ("units", cloningCost)), InGameICChatType.Speak, false); - return false; - } - - _material.TryChangeMaterialAmount(uid, clonePod.RequiredMaterial, -cloningCost); - clonePod.UsedBiomass = cloningCost; - // end of biomass checks - - // genetic damage checks - if (TryComp(bodyToClone, out var damageable) && - damageable.Damage.DamageDict.TryGetValue("Cellular", out var cellularDmg)) - { - var chance = Math.Clamp((float) (cellularDmg / 100), 0, 1); - chance *= failChanceModifier; - - if (cellularDmg > 0 && clonePod.ConnectedConsole != null) - _chatSystem.TrySendInGameICMessage(clonePod.ConnectedConsole.Value, Loc.GetString("cloning-console-cellular-warning", ("percent", Math.Round(100 - chance * 100))), InGameICChatType.Speak, false); - - if (_robustRandom.Prob(chance)) - { - UpdateStatus(uid, CloningPodStatus.Gore, clonePod); - clonePod.FailedClone = true; - AddComp(uid); - return true; - } - } - // end of genetic damage checks - - // DeltaV - Replaces CloneAppearance with Metem/Clone via FetchAndSpawnMob - var mob = FetchAndSpawnMob(podEnt, pref, speciesPrototype, humanoid, bodyToClone, karmaBonus); - - // Nyano - Summary: adds the potential psionic trait to the reanimated mob. - EnsureComp(mob); - - var ev = new CloningEvent(bodyToClone, mob); - RaiseLocalEvent(bodyToClone, ref ev); - - if (!ev.NameHandled) - _metaSystem.SetEntityName(mob, MetaData(bodyToClone).EntityName); - - var cloneMindReturn = EntityManager.AddComponent(mob); - cloneMindReturn.Mind = mind; - cloneMindReturn.Parent = uid; - _containerSystem.Insert(mob, clonePod.BodyContainer); - ClonesWaitingForMind.Add(mind, mob); - UpdateStatus(uid, CloningPodStatus.NoMind, clonePod); - _euiManager.OpenEui(new AcceptCloningEui(mindEnt, mind, this), client); - - AddComp(uid); - - // TODO: Ideally, components like this should be components on the mind entity so this isn't necessary. - // Add on special job components to the mob. - if (_jobs.MindTryGetJob(mindEnt, out var prototype)) - { - foreach (var special in prototype.Special) - { - if (special is AddComponentSpecial) - special.AfterEquip(mob); - } - } - - return true; - } - - public void UpdateStatus(EntityUid podUid, CloningPodStatus status, CloningPodComponent cloningPod) - { - cloningPod.Status = status; - _appearance.SetData(podUid, CloningPodVisuals.Status, cloningPod.Status); - } - - public override void Update(float frameTime) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var _, out var cloning)) - { - if (!_powerReceiverSystem.IsPowered(uid)) - continue; - - if (cloning.BodyContainer.ContainedEntity == null && !cloning.FailedClone) - continue; - - cloning.CloningProgress += frameTime; - if (cloning.CloningProgress < cloning.CloningTime) - continue; - - if (cloning.FailedClone) - EndFailedCloning(uid, cloning); - else - Eject(uid, cloning); + if (HasComp(clone.Value, componentRegistration.Type)) // CopyComp cannot overwrite existing components + RemComp(clone.Value, componentRegistration.Type); + CopyComp(original, clone.Value, sourceComp); } } - /// - /// On emag, spawns a failed clone when cloning process fails which attacks nearby crew. - /// - private void OnEmagged(EntityUid uid, CloningPodComponent clonePod, ref GotEmaggedEvent args) + var cloningEv = new CloningEvent(settings, clone.Value); + RaiseLocalEvent(original, ref cloningEv); // used for datafields that cannot be directly copied + + // Add equipment first so that SetEntityName also renames the ID card. + if (settings.CopyEquipment != null) + CopyEquipment(original, clone.Value, settings.CopyEquipment.Value, settings.Whitelist, settings.Blacklist); + + var originalName = Name(original); + if (TryComp(original, out var nameModComp)) // if the originals name was modified, use the unmodified name + originalName = nameModComp.BaseName; + + // This will properly set the BaseName and EntityName for the clone. + // Adding the component first before renaming will make sure RefreshNameModifers is called. + // Without this the name would get reverted to Urist. + // If the clone has no name modifiers, NameModifierComponent will be removed again. + EnsureComp(clone.Value); + _metaData.SetEntityName(clone.Value, originalName); + + _adminLogger.Add(LogType.Chat, LogImpact.Medium, $"The body of {original:player} was cloned as {clone.Value:player}"); + return true; + } + + /// + /// Copies the equipment the original has to the clone. + /// This uses the original prototype of the items, so any changes to components that are done after spawning are lost! + /// + public void CopyEquipment(EntityUid original, EntityUid clone, SlotFlags slotFlags, EntityWhitelist? whitelist = null, EntityWhitelist? blacklist = null) + { + if (!TryComp(original, out var originalInventory) || !TryComp(clone, out var cloneInventory)) + return; + // Iterate over all inventory slots + var slotEnumerator = _inventory.GetSlotEnumerator((original, originalInventory), slotFlags); + while (slotEnumerator.NextItem(out var item, out var slot)) { - if (!_emag.CompareFlag(args.Type, EmagType.Interaction)) - return; + // Spawn a copy of the item using the original prototype. + // This means any changes done to the item after spawning will be reset, but that should not be a problem for simple items like clothing etc. + // we use a whitelist and blacklist to be sure to exclude any problematic entities - if (_emag.CheckFlag(uid, EmagType.Interaction)) - return; + if (_whitelist.IsWhitelistFail(whitelist, item) || _whitelist.IsBlacklistPass(blacklist, item)) + continue; - if (!this.IsPowered(uid, EntityManager)) - return; - - _popupSystem.PopupEntity(Loc.GetString("cloning-pod-component-upgrade-emag-requirement"), uid); - args.Handled = true; - } - - public void Eject(EntityUid uid, CloningPodComponent? clonePod) - { - if (!Resolve(uid, ref clonePod)) - return; - - if (clonePod.BodyContainer.ContainedEntity is not { Valid: true } entity || clonePod.CloningProgress < clonePod.CloningTime) - return; - - EntityManager.RemoveComponent(entity); - _containerSystem.Remove(entity, clonePod.BodyContainer); - clonePod.CloningProgress = 0f; - clonePod.UsedBiomass = 0; - UpdateStatus(uid, CloningPodStatus.Idle, clonePod); - RemCompDeferred(uid); - } - - private void EndFailedCloning(EntityUid uid, CloningPodComponent clonePod) - { - clonePod.FailedClone = false; - clonePod.CloningProgress = 0f; - UpdateStatus(uid, CloningPodStatus.Idle, clonePod); - var transform = Transform(uid); - var indices = _transformSystem.GetGridTilePositionOrDefault((uid, transform)); - var tileMix = _atmosphereSystem.GetTileMixture(transform.GridUid, null, indices, true); - - if (_emag.CheckFlag(uid, EmagType.Interaction)) - { - _audio.PlayPvs(clonePod.ScreamSound, uid); - Spawn(clonePod.MobSpawnId, transform.Coordinates); - } - - Solution bloodSolution = new(); - - var i = 0; - while (i < 1) - { - tileMix?.AdjustMoles(Gas.Ammonia, 6f); - bloodSolution.AddReagent("Blood", 50); - if (_robustRandom.Prob(0.2f)) - i++; - } - _puddleSystem.TrySpillAt(uid, bloodSolution, out _); - - if (!_emag.CheckFlag(uid, EmagType.Interaction)) - { - _material.SpawnMultipleFromMaterial(_robustRandom.Next(1, (int) (clonePod.UsedBiomass / 2.5)), clonePod.RequiredMaterial, Transform(uid).Coordinates); - } - - clonePod.UsedBiomass = 0; - RemCompDeferred(uid); - } - - public void Reset(RoundRestartCleanupEvent ev) - { - ClonesWaitingForMind.Clear(); + var prototype = MetaData(item).EntityPrototype; + if (prototype != null) + _inventory.SpawnItemInSlot(clone, slot.Name, prototype.ID, silent: true, inventory: cloneInventory); } } } diff --git a/Content.Server/Cloning/Components/RandomCloneSpawnerComponent.cs b/Content.Server/Cloning/Components/RandomCloneSpawnerComponent.cs new file mode 100644 index 0000000000..ee06a532ef --- /dev/null +++ b/Content.Server/Cloning/Components/RandomCloneSpawnerComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Cloning; +using Robust.Shared.Prototypes; + +namespace Content.Server.Cloning.Components; + +/// +/// This is added to a marker entity in order to spawn a clone of a random player. +/// +[RegisterComponent, EntityCategory("Spawner")] +public sealed partial class RandomCloneSpawnerComponent : Component +{ + /// + /// Cloning settings to be used. + /// + [DataField] + public ProtoId Settings = "BaseClone"; +} diff --git a/Content.Server/Cloning/RandomCloneSpawnerSystem.cs b/Content.Server/Cloning/RandomCloneSpawnerSystem.cs new file mode 100644 index 0000000000..a645a10890 --- /dev/null +++ b/Content.Server/Cloning/RandomCloneSpawnerSystem.cs @@ -0,0 +1,47 @@ +using Content.Server.Cloning.Components; +using Content.Shared.Mind; +using Content.Shared.Mobs.Systems; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Cloning; + +/// +/// This deals with spawning and setting up a clone of a random crew member. +/// +public sealed class RandomCloneSpawnerSystem : EntitySystem +{ + [Dependency] private readonly CloningSystem _cloning = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + QueueDel(ent.Owner); + + if (!_prototypeManager.TryIndex(ent.Comp.Settings, out var settings)) + { + Log.Error($"Used invalid cloning settings {ent.Comp.Settings} for RandomCloneSpawner"); + return; + } + + var allHumans = _mind.GetAliveHumans(); + + if (allHumans.Count == 0) + return; + + var bodyToClone = _random.Pick(allHumans).Comp.OwnedEntity; + + if (bodyToClone != null) + _cloning.TryCloning(bodyToClone.Value, _transformSystem.GetMapCoordinates(ent.Owner), settings, out _); + } +} diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index 79e36ce656..36e9d17ce0 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Body.Components; +using Content.Server.Body.Systems; using Content.Server.DoAfter; using Content.Server.Fluids.EntitySystems; using Content.Server.Forensics.Components; @@ -34,8 +35,9 @@ namespace Content.Server.Forensics SubscribeLocalEvent(OnInteract); SubscribeLocalEvent(OnFiberInteract); // DeltaV SubscribeLocalEvent(OnFiberInit); // DeltaV #1455 - unique glove fibers - SubscribeLocalEvent(OnFingerprintInit); - SubscribeLocalEvent(OnDNAInit); + SubscribeLocalEvent(OnFingerprintInit, after: new[] { typeof(BloodstreamSystem) }); + // The solution entities are spawned on MapInit as well, so we have to wait for that to be able to set the DNA in the bloodstream correctly without ResolveSolution failing + SubscribeLocalEvent(OnDNAInit, after: new[] { typeof(BloodstreamSystem) }); SubscribeLocalEvent(OnBeingGibbed); SubscribeLocalEvent(OnMeleeHit); @@ -81,18 +83,20 @@ namespace Content.Server.Forensics private void OnFingerprintInit(Entity ent, ref MapInitEvent args) { - ent.Comp.Fingerprint = GenerateFingerprint(); - Dirty(ent); + if (ent.Comp.Fingerprint == null) + RandomizeFingerprint((ent.Owner, ent.Comp)); } - private void OnDNAInit(EntityUid uid, DnaComponent component, MapInitEvent args) + private void OnDNAInit(Entity ent, ref MapInitEvent args) { - if (component.DNA == String.Empty) + Log.Debug($"Init DNA {Name(ent.Owner)} {ent.Comp.DNA}"); + if (ent.Comp.DNA == null) + RandomizeDNA((ent.Owner, ent.Comp)); + else { - component.DNA = GenerateDNA(); - - var ev = new GenerateDnaEvent { Owner = uid, DNA = component.DNA }; - RaiseLocalEvent(uid, ref ev); + // If set manually (for example by cloning) we also need to inform the bloodstream of the correct DNA string so it can be updated + var ev = new GenerateDnaEvent { Owner = ent.Owner, DNA = ent.Comp.DNA }; + RaiseLocalEvent(ent.Owner, ref ev); } } @@ -100,7 +104,7 @@ namespace Content.Server.Forensics { string dna = Loc.GetString("forensics-dna-unknown"); - if (TryComp(uid, out DnaComponent? dnaComp)) + if (TryComp(uid, out DnaComponent? dnaComp) && dnaComp.DNA != null) dna = dnaComp.DNA; foreach (EntityUid part in args.GibbedParts) @@ -119,7 +123,7 @@ namespace Content.Server.Forensics { foreach (EntityUid hitEntity in args.HitEntities) { - if (TryComp(hitEntity, out var hitEntityComp)) + if (TryComp(hitEntity, out var hitEntityComp) && hitEntityComp.DNA != null) component.DNAs.Add(hitEntityComp.DNA); } } @@ -331,6 +335,9 @@ namespace Content.Server.Forensics private void OnTransferDnaEvent(EntityUid uid, DnaComponent component, ref TransferDnaEvent args) { + if (component.DNA == null) + return; + var recipientComp = EnsureComp(args.Recipient); recipientComp.DNAs.Add(component.DNA); recipientComp.CanDnaBeCleaned = args.CanDnaBeCleaned; @@ -338,6 +345,36 @@ namespace Content.Server.Forensics #region Public API + /// + /// Give the entity a new, random DNA string and call an event to notify other systems like the bloodstream that it has been changed. + /// Does nothing if it does not have the DnaComponent. + /// + public void RandomizeDNA(Entity ent) + { + if (!Resolve(ent, ref ent.Comp, false)) + return; + + ent.Comp.DNA = GenerateDNA(); + Dirty(ent); + + Log.Debug($"Randomize DNA {Name(ent.Owner)} {ent.Comp.DNA}"); + var ev = new GenerateDnaEvent { Owner = ent.Owner, DNA = ent.Comp.DNA }; + RaiseLocalEvent(ent.Owner, ref ev); + } + + /// + /// Give the entity a new, random fingerprint string. + /// Does nothing if it does not have the FingerprintComponent. + /// + public void RandomizeFingerprint(Entity ent) + { + if (!Resolve(ent, ref ent.Comp, false)) + return; + + ent.Comp.Fingerprint = GenerateFingerprint(); + Dirty(ent); + } + /// /// Transfer DNA from one entity onto the forensics of another /// @@ -346,7 +383,7 @@ namespace Content.Server.Forensics /// If this DNA be cleaned off of the recipient. e.g. cleaning a knife vs cleaning a puddle of blood public void TransferDna(EntityUid recipient, EntityUid donor, bool canDnaBeCleaned = true) { - if (TryComp(donor, out var donorComp)) + if (TryComp(donor, out var donorComp) && donorComp.DNA != null) { EnsureComp(recipient, out var recipientComp); recipientComp.DNAs.Add(donorComp.DNA); diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index c306e406a1..bd6ffe375c 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -216,18 +216,12 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem var newProfile = HumanoidCharacterProfile.RandomWithSpecies(humanoid.Species); _humanoidAppearance.LoadProfile(ent, newProfile, humanoid); _metaData.SetEntityName(ent, newProfile.Name, raiseEvents: false); // raising events would update ID card, station record, etc. - if (TryComp(ent, out var dna)) - { - dna.DNA = _forensicsSystem.GenerateDNA(); - var ev = new GenerateDnaEvent { Owner = ent, DNA = dna.DNA }; - RaiseLocalEvent(ent, ref ev); - } - if (TryComp(ent, out var fingerprint)) - { - fingerprint.Fingerprint = _forensicsSystem.GenerateFingerprint(); - } - RemComp(ent); // remove MRP+ custom description if one exists + // If the entity has the respecive components, then scramble the dna and fingerprint strings + _forensicsSystem.RandomizeDNA(ent); + _forensicsSystem.RandomizeFingerprint(ent); + + RemComp(ent); // remove MRP+ custom description if one exists _identity.QueueIdentityUpdate(ent); // manually queue identity update since we don't raise the event _popup.PopupEntity(Loc.GetString("scramble-implant-activated-popup"), ent, ent); } diff --git a/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs b/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs index 897cd061f4..d55c6e6764 100644 --- a/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs +++ b/Content.Server/Speech/EntitySystems/AddAccentClothingSystem.cs @@ -14,6 +14,8 @@ public sealed class AddAccentClothingSystem : EntitySystem SubscribeLocalEvent(OnGotUnequipped); } + +// TODO: Turn this into a relay event. private void OnGotEquipped(EntityUid uid, AddAccentClothingComponent component, ref ClothingGotEquippedEvent args) { // does the user already has this accent? diff --git a/Content.Server/Traits/Assorted/UnrevivableSystem.cs b/Content.Server/Traits/Assorted/UnrevivableSystem.cs new file mode 100644 index 0000000000..c2c8ee9a50 --- /dev/null +++ b/Content.Server/Traits/Assorted/UnrevivableSystem.cs @@ -0,0 +1,20 @@ +using Content.Shared.Cloning.Events; +using Content.Shared.Traits.Assorted; + +namespace Content.Server.Traits.Assorted; + +public sealed class UnrevivableSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnCloningAttempt); + } + + private void OnCloningAttempt(Entity ent, ref CloningAttemptEvent args) + { + if (!ent.Comp.Cloneable) + args.Cancelled = true; + } +} diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index 2fceb12dce..2924a7fb8c 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -1,4 +1,3 @@ -using Content.Server.Actions; using Content.Server.Atmos.Components; using Content.Server.Body.Components; using Content.Server.Chat; @@ -14,7 +13,7 @@ using Content.Server.NPC.HTN; using Content.Server.NPC.Systems; using Content.Server.Speech.Components; using Content.Server.Temperature.Components; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Abilities.Psionics; // DeltaV using Content.Shared.CombatMode; using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage; @@ -26,12 +25,11 @@ using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Systems; -using Content.Shared.NPC.Components; +using Content.Shared.NameModifier.EntitySystems; using Content.Shared.NPC.Systems; using Content.Shared.Nutrition.AnimalHusbandry; using Content.Shared.Nutrition.Components; using Content.Shared.Popups; -using Content.Shared.Roles; using Content.Shared.Weapons.Melee; using Content.Shared.Zombies; using Content.Shared.Prying.Components; @@ -61,8 +59,8 @@ public sealed partial class ZombieSystem [Dependency] private readonly MindSystem _mind = default!; [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!; [Dependency] private readonly NPCSystem _npc = default!; - [Dependency] private readonly SharedRoleSystem _roles = default!; [Dependency] private readonly TagSystem _tag = default!; + [Dependency] private readonly NameModifierSystem _nameMod = default!; /// /// Handles an entity turning into a zombie when they die or go into crit @@ -235,7 +233,7 @@ public sealed partial class ZombieSystem _faction.ClearFactions(target, dirty: false); _faction.AddFaction(target, "Zombie"); - EnsureComp(target); // prevent shitters biting other zombies + EnsureComp(target); // DeltaV - prevent shitters biting other zombies //gives it the funny "Zombie ___" name. _nameMod.RefreshNameModifiers(target); @@ -252,7 +250,7 @@ public sealed partial class ZombieSystem if (hasMind && _mind.TryGetSession(mindId, out var session)) { //Zombie role for player manifest - _roles.MindAddRole(mindId, "MindRoleZombie", mind: null, silent: true); + _role.MindAddRole(mindId, "MindRoleZombie", mind: null, silent: true); //Greeting message for new bebe zombers _chatMan.DispatchServerMessage(session, Loc.GetString("zombie-infection-greeting")); diff --git a/Content.Server/Zombies/ZombieSystem.cs b/Content.Server/Zombies/ZombieSystem.cs index 47f185cf7d..b968406141 100644 --- a/Content.Server/Zombies/ZombieSystem.cs +++ b/Content.Server/Zombies/ZombieSystem.cs @@ -5,18 +5,20 @@ using Content.Server.Chat; using Content.Server.Chat.Systems; using Content.Server.Emoting.Systems; using Content.Server.Speech.EntitySystems; +using Content.Server.Roles; using Content.Shared.Anomaly.Components; using Content.Shared.Bed.Sleep; -using Content.Shared.Cloning; +using Content.Shared.Cloning.Events; using Content.Shared.Damage; using Content.Shared.Humanoid; using Content.Shared.Inventory; using Content.Shared.Mind; +using Content.Shared.Mind.Components; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; -using Content.Shared.NameModifier.EntitySystems; using Content.Shared.Popups; +using Content.Shared.Roles; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Zombies; using Robust.Shared.Prototypes; @@ -38,7 +40,7 @@ namespace Content.Server.Zombies [Dependency] private readonly EmoteOnDamageSystem _emoteOnDamage = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly NameModifierSystem _nameMod = default!; + [Dependency] private readonly SharedRoleSystem _role = default!; public const SlotFlags ProtectiveSlots = SlotFlags.FEET | @@ -63,6 +65,8 @@ namespace Content.Server.Zombies SubscribeLocalEvent(OnZombieCloning); SubscribeLocalEvent(OnSleepAttempt); SubscribeLocalEvent(OnGetCharacterDeadIC); + SubscribeLocalEvent(OnMindAdded); + SubscribeLocalEvent(OnMindRemoved); SubscribeLocalEvent(OnPendingMapInit); SubscribeLocalEvent(OnBeforeRemoveAnomalyOnDeath); @@ -264,7 +268,7 @@ namespace Content.Server.Zombies /// the entity you want to unzombify (different from source in case of cloning, for example) /// /// - /// this currently only restore the name and skin/eye color from before zombified + /// this currently only restore the skin/eye color from before zombified /// TODO: completely rethink how zombies are done to allow reversal. /// public bool UnZombify(EntityUid source, EntityUid target, ZombieComponent? zombiecomp) @@ -284,14 +288,25 @@ namespace Content.Server.Zombies _humanoidAppearance.SetSkinColor(target, zombiecomp.BeforeZombifiedSkinColor, false); _bloodstream.ChangeBloodReagent(target, zombiecomp.BeforeZombifiedBloodReagent); - _nameMod.RefreshNameModifiers(target); return true; } - private void OnZombieCloning(EntityUid uid, ZombieComponent zombiecomp, ref CloningEvent args) + private void OnZombieCloning(Entity ent, ref CloningEvent args) { - if (UnZombify(args.Source, args.Target, zombiecomp)) - args.NameHandled = true; + UnZombify(ent.Owner, args.CloneUid, ent.Comp); + } + + // Make sure players that enter a zombie (for example via a ghost role or the mind swap spell) count as an antagonist. + private void OnMindAdded(Entity ent, ref MindAddedMessage args) + { + if (!_role.MindHasRole(args.Mind)) + _role.MindAddRole(args.Mind, "MindRoleZombie", mind: args.Mind.Comp); + } + + // Remove the role when getting cloned, getting gibbed and borged, or leaving the body via any other method. + private void OnMindRemoved(Entity ent, ref MindRemovedMessage args) + { + _role.MindTryRemoveRole(args.Mind); } } } diff --git a/Content.Server/_DV/StationEvents/Components/ParadoxClonerRuleComponent.cs b/Content.Server/_DV/StationEvents/Components/ParadoxClonerRuleComponent.cs index ccb4d93738..13835603a6 100644 --- a/Content.Server/_DV/StationEvents/Components/ParadoxClonerRuleComponent.cs +++ b/Content.Server/_DV/StationEvents/Components/ParadoxClonerRuleComponent.cs @@ -1,7 +1,14 @@ +using Content.Shared.Cloning; +using Robust.Shared.Prototypes; + namespace Content.Server.StationEvents.Components; /// /// Creates a paradox anomaly of a random person when taken by a player. /// [RegisterComponent] -public sealed partial class ParadoxClonerRuleComponent : Component; +public sealed partial class ParadoxClonerRuleComponent : Component +{ + [DataField] + public ProtoId CloningSettings = "BaseClone"; +} diff --git a/Content.Server/_DV/StationEvents/Events/ParadoxClonerRule.cs b/Content.Server/_DV/StationEvents/Events/ParadoxClonerRule.cs index 27129e49e9..446e10ed92 100644 --- a/Content.Server/_DV/StationEvents/Events/ParadoxClonerRule.cs +++ b/Content.Server/_DV/StationEvents/Events/ParadoxClonerRule.cs @@ -1,10 +1,12 @@ using Content.Server.Antag; +using Content.Server.Cloning; using Content.Server.GameTicking.Rules; using Content.Server.Psionics; using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; using Content.Server.StationEvents.Events; using Content.Server.Terminator.Systems; +using Content.Shared.Cloning; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Mind; @@ -25,11 +27,13 @@ namespace Content.Server.StationEvents.Events; /// public sealed class ParadoxClonerRule : StationEventSystem { + [Dependency] private readonly CloningSystem _cloning = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly PsionicsSystem _psionics = default!; [Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly SharedRoleSystem _role = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly StationSystem _station = default!; [Dependency] private readonly StationSpawningSystem _stationSpawning = default!; [Dependency] private readonly TerminatorSystem _terminator = default!; @@ -46,30 +50,30 @@ public sealed class ParadoxClonerRule : StationEventSystem, HumanoidCharacterProfile)>(); + var candidates = new List<(EntityUid, EntityUid, ProtoId)>(); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var mindContainer, out var humanoid)) { - if (humanoid.LastProfileLoaded is {} profile && - mindContainer.Mind is {} mindId && + if (mindContainer.Mind is {} mindId && !_role.MindIsAntagonist(mindId) && _role.MindHasRole(mindId, out var role) && role?.Comp1.JobPrototype is {} job) { - candidates.Add((uid, mindId, job, profile)); + candidates.Add((uid, mindId, job)); } } @@ -79,21 +83,31 @@ public sealed class ParadoxClonerRule : StationEventSystem, HumanoidCharacterProfile)> candidates) + private EntityUid? SpawnParadoxAnomaly(EntityUid spawner, CloningSettingsPrototype settings, List<(EntityUid, EntityUid, ProtoId)> candidates) { // Select a candidate. - var (uid, mindId, job, profile) = _random.Pick(candidates); + var (uid, mindId, job) = _random.Pick(candidates); // Spawn the clone. - var coords = Transform(spawner).Coordinates; + var coords = _transform.GetMapCoordinates(spawner); var station = _station.GetOwningStation(uid); - var spawned = _stationSpawning.SpawnPlayerMob(coords, job, profile, station); + if (!_cloning.TryCloning(uid, coords, settings, out var mob)) + return null; // Set the kill target to the chosen player + var spawned = mob.Value; _terminator.SetTarget(spawned, mindId); // guaranteed psionic power diff --git a/Content.Shared/Cloning/CloningEvents.cs b/Content.Shared/Cloning/CloningEvents.cs new file mode 100644 index 0000000000..bd6645404c --- /dev/null +++ b/Content.Shared/Cloning/CloningEvents.cs @@ -0,0 +1,13 @@ +namespace Content.Shared.Cloning.Events; + +/// +/// Raised before a mob is cloned. Cancel to prevent cloning. +/// +[ByRefEvent] +public record struct CloningAttemptEvent(CloningSettingsPrototype Settings, bool Cancelled = false); + +/// +/// Raised after a new mob got spawned when cloning a humanoid. +/// +[ByRefEvent] +public record struct CloningEvent(CloningSettingsPrototype Settings, EntityUid CloneUid); diff --git a/Content.Shared/Cloning/CloningPodComponent.cs b/Content.Shared/Cloning/CloningPodComponent.cs index d588b62eb3..17f733c8f3 100644 --- a/Content.Shared/Cloning/CloningPodComponent.cs +++ b/Content.Shared/Cloning/CloningPodComponent.cs @@ -10,8 +10,8 @@ namespace Content.Shared.Cloning; [RegisterComponent] public sealed partial class CloningPodComponent : Component { - [ValidatePrototypeId] - public const string PodPort = "CloningPodReceiver"; + [DataField] + public ProtoId PodPort = "CloningPodReceiver"; [ViewVariables] public ContainerSlot BodyContainer = default!; @@ -31,23 +31,25 @@ public sealed partial class CloningPodComponent : Component /// /// The material that is used to clone entities. /// - [DataField("requiredMaterial"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public ProtoId RequiredMaterial = "Biomass"; /// - /// The current amount of time it takes to clone a body + /// The current amount of time it takes to clone a body. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public float CloningTime = 30f; /// - /// The mob to spawn on emag + /// The mob to spawn on emag. /// - [DataField("mobSpawnId"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public EntProtoId MobSpawnId = "MobAbomination"; - // TODO: Remove this from here when cloning and/or zombies are refactored - [DataField("screamSound")] + /// + /// The sound played when a mob is spawned from an emagged cloning pod. + /// + [DataField] public SoundSpecifier ScreamSound = new SoundCollectionSpecifier("ZombieScreams") { Params = AudioParams.Default.WithVolume(4), @@ -74,21 +76,3 @@ public enum CloningPodStatus : byte Gore, NoMind } - -/// -/// Raised after a new mob got spawned when cloning a humanoid -/// -[ByRefEvent] -public struct CloningEvent -{ - public bool NameHandled = false; - - public readonly EntityUid Source; - public readonly EntityUid Target; - - public CloningEvent(EntityUid source, EntityUid target) - { - Source = source; - Target = target; - } -} diff --git a/Content.Shared/Cloning/CloningSettingsPrototype.cs b/Content.Shared/Cloning/CloningSettingsPrototype.cs new file mode 100644 index 0000000000..3828e6c0cf --- /dev/null +++ b/Content.Shared/Cloning/CloningSettingsPrototype.cs @@ -0,0 +1,60 @@ +using Content.Shared.Inventory; +using Content.Shared.Whitelist; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; + +namespace Content.Shared.Cloning; + +/// +/// Settings for cloning a humanoid. +/// Used to decide which components should be copied. +/// +[Prototype] +public sealed partial class CloningSettingsPrototype : IPrototype, IInheritingPrototype +{ + /// + [IdDataField] + public string ID { get; private set; } = default!; + + [ParentDataField(typeof(PrototypeIdArraySerializer))] + public string[]? Parents { get; } + + [AbstractDataField] + [NeverPushInheritance] + public bool Abstract { get; } + + /// + /// Determines if cloning can be prevented by traits etc. + /// + [DataField] + public bool ForceCloning = true; + + /// + /// Which inventory slots will receive a copy of the original's clothing. + /// Disabled when null. + /// + [DataField] + public SlotFlags? CopyEquipment = SlotFlags.WITHOUT_POCKET; + + /// + /// Whitelist for the equipment allowed to be copied. + /// + [DataField] + public EntityWhitelist? Whitelist; + + /// + /// Blacklist for the equipment allowed to be copied. + /// + [DataField] + public EntityWhitelist? Blacklist; + + /// TODO: Make this not a string https://github.com/space-wizards/RobustToolbox/issues/5709 + /// + /// Components to copy from the original to the clone. + /// This only makes a shallow copy of datafields! + /// If you need a deep copy or additional component initialization, then subscribe to CloningEvent instead! + /// + [DataField] + [AlwaysPushInheritance] + public HashSet Components = new(); +} diff --git a/Content.Shared/Forensics/Components/DnaComponent.cs b/Content.Shared/Forensics/Components/DnaComponent.cs index 0dfa92146b..a9d2f7ea8b 100644 --- a/Content.Shared/Forensics/Components/DnaComponent.cs +++ b/Content.Shared/Forensics/Components/DnaComponent.cs @@ -9,5 +9,5 @@ namespace Content.Shared.Forensics.Components; public sealed partial class DnaComponent : Component { [DataField("dna"), AutoNetworkedField] - public string DNA = String.Empty; + public string? DNA; } diff --git a/Content.Shared/Forensics/Events.cs b/Content.Shared/Forensics/Events.cs index b209cc0e85..2239ef3b42 100644 --- a/Content.Shared/Forensics/Events.cs +++ b/Content.Shared/Forensics/Events.cs @@ -54,7 +54,7 @@ public record struct TransferDnaEvent() } /// -/// An event to generate and act upon new DNA for an entity. +/// Raised on an entity when its DNA has been changed. /// [ByRefEvent] public record struct GenerateDnaEvent() diff --git a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs index 88fd118a50..0aad5dd487 100644 --- a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs +++ b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs @@ -158,8 +158,6 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem if (TryComp(target, out var grammar)) grammar.Gender = sourceHumanoid.Gender; - targetHumanoid.LastProfileLoaded = sourceHumanoid.LastProfileLoaded; // DeltaV - let paradox anomaly be cloned - Dirty(target, targetHumanoid); } @@ -418,8 +416,6 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem humanoid.Age = profile.Age; - humanoid.LastProfileLoaded = profile; // DeltaV - let paradox anomaly be cloned - RaiseLocalEvent(uid, new ProfileLoadFinishedEvent()); // Shitmed Change Dirty(uid, humanoid); } diff --git a/Content.Shared/Traits/Assorted/UnrevivableComponent.cs b/Content.Shared/Traits/Assorted/UnrevivableComponent.cs index 19b4cac5e0..44af27f5ea 100644 --- a/Content.Shared/Traits/Assorted/UnrevivableComponent.cs +++ b/Content.Shared/Traits/Assorted/UnrevivableComponent.cs @@ -14,6 +14,12 @@ public sealed partial class UnrevivableComponent : Component [DataField, AutoNetworkedField] public bool Analyzable = true; + /// + /// Can this player be cloned using a cloning pod? + /// + [DataField, AutoNetworkedField] + public bool Cloneable = false; + /// /// The loc string used to provide a reason for being unrevivable /// diff --git a/Resources/Locale/en-US/medical/components/cloning-console-component.ftl b/Resources/Locale/en-US/medical/components/cloning-console-component.ftl index 9105a7a970..c01cc8b5c6 100644 --- a/Resources/Locale/en-US/medical/components/cloning-console-component.ftl +++ b/Resources/Locale/en-US/medical/components/cloning-console-component.ftl @@ -26,6 +26,5 @@ cloning-console-component-msg-no-cloner = Not Ready: No Cloner Detected cloning-console-component-msg-no-mind = Not Ready: No Soul Activity Detected cloning-console-chat-error = ERROR: INSUFFICIENT BIOMASS. CLONING THIS BODY REQUIRES {$units} UNITS OF BIOMASS. -# DeltaV: change from SOUL IS ABSENT to INCOMPATIBLE GENOME -cloning-console-uncloneable-trait-error = ERROR: INCOMPATIBLE GENOME, CLONING IS IMPOSSIBLE. +cloning-console-uncloneable-trait-error = ERROR: CLONING IS IMPOSSIBLE DUE TO ABNORMAL BODY COMPOSITION. cloning-console-cellular-warning = WARNING: GENEFSCK CONFIDENCE SCORE IS {$percent}%. CLONING MAY HAVE UNEXPECTED RESULTS. diff --git a/Resources/Prototypes/DeviceLinking/source_ports.yml b/Resources/Prototypes/DeviceLinking/source_ports.yml index 5c32734726..adbf4df134 100644 --- a/Resources/Prototypes/DeviceLinking/source_ports.yml +++ b/Resources/Prototypes/DeviceLinking/source_ports.yml @@ -60,11 +60,13 @@ id: CloningPodSender name: signal-port-name-pod-receiver description: signal-port-description-pod-sender + defaultLinks: [ CloningPodReceiver ] - type: sourcePort id: MedicalScannerSender name: signal-port-name-med-scanner-sender description: signal-port-description-med-scanner-sender + defaultLinks: [ MedicalScannerReceiver ] - type: sourcePort id: ArtifactAnalyzerSender diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml new file mode 100644 index 0000000000..64ae4f9ad8 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -0,0 +1,84 @@ +# Settings for cloning bodies +# If you add a new trait, job specific component or a component doing visual/examination changes for humanoids +# then add it here to the correct prototype. +# The datafields of the components are only shallow copied using CopyComp. +# Subscribe to CloningEvent instead if that is not enough. + +- type: cloningSettings + id: BaseClone + components: + # general + - DetailExaminable + - Dna + - Fingerprint + - NpcFactionMember + # traits + # - LegsParalyzed (you get healed) + - LightweightDrunk + - Narcolepsy + - Pacified + - PainNumbness + - Paracusia + - PermanentBlindness + - Unrevivable + # job specific + - BibleUser + - CommandStaff + - Clumsy + - MindShield + - MimePowers + # accents + - Accentless + - BackwardsAccent + - BarkAccent + - BleatingAccent + - FrenchAccent + - GermanAccent + - LizardAccent + - MobsterAccent + - MonkeyAccent + - MothAccent + - MumbleAccent + - OwOAccent + - ParrotAccent + - PirateAccent + # - ReplacementAccent + # Not supported at the moment because AddAccentClothingComponent will make it permanent when cloned. + # TODO: AddAccentClothingComponent should use an inventory relay event. + # Also ZombieComponent overwrites the old replacement accent, because you can only have one at a time. + - RussianAccent + - ScrambledAccent + - SkeletonAccent + - SlurredAccent + - SouthernAccent + - SpanishAccent + - StutteringAccent + blacklist: + components: + - AttachedClothing # helmets, which are part of the suit + +- type: cloningSettings + id: Antag + parent: BaseClone + components: + - HeadRevolutionary + - Revolutionary + +- type: cloningSettings + id: CloningPod + parent: Antag + forceCloning: false + copyEquipment: null + +# spawner + +- type: entity + id: RandomCloneSpawner + name: Random Clone + suffix: Non-Antag + components: + - type: Sprite + sprite: Markers/paradox_clone.rsi + state: preview + - type: RandomCloneSpawner + settings: BaseClone diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index e9ba3427c4..8622d62d82 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -9,7 +9,7 @@ - type: Thirst - type: Carriable # Carrying system from nyanotrasen. - type: Icon - sprite: Mobs/Species/Slime/parts.rsi # It was like this beforehand, no idea why. + sprite: Mobs/Species/Human/parts.rsi state: full - type: Respirator damage: @@ -53,7 +53,7 @@ - type: Speech speechSounds: Bass - type: HumanoidAppearance - species: Human + species: Dwarf hideLayersOnEquip: - Hair - Snout diff --git a/Resources/Textures/Markers/paradox_clone.rsi/meta.json b/Resources/Textures/Markers/paradox_clone.rsi/meta.json new file mode 100644 index 0000000000..e586347031 --- /dev/null +++ b/Resources/Textures/Markers/paradox_clone.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "preview combined from Mobs/Species/Human/parts.rsi, Clothing/Uniforms/Jumpsuit/janitor.rsi, Clothing/Shoes/Specific/galoshes.rsi, Clothing/Belt/janitor.rsi, Clothing/Hands/Gloves/janitor.rsi and Clothing/Head/Soft/purplesoft.rsi by slarticodefast", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "preview" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Markers/paradox_clone.rsi/preview.png b/Resources/Textures/Markers/paradox_clone.rsi/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..8b83969954e0a563cbcef06eba30b853264a04dd GIT binary patch literal 1440 zcmV;R1z-A!P)Ie8na|i^5wbr=lkC0 zd%ydx#s3X1w7w)sk1eNi(ZR6EH4SSxtz3=^x>X4^H8q-xpZ@7=*y4Zuc}|&IX5Jx{ z<(H#HxT?ep_~&44`x#c-t}qdy0^%ZWX$*(<*GasdSNX`!n>9a76cv5BdK%+ckq~Pl z73HVvAauIJVkU!$?UuNunml*V;pkxYM3}Gx`gA>R-o6Q8K*05;4#s4YpK$Ak&!w6} z7FLXk%7bk3Q#{)GQ9IDl-YP9AosZwnT)}{AKqZR&8`rFswk|G&&*fpoe6CzfN>63B z%oAb4Bk+%muwujsiHRyE%v`&Lqg_rbEX1f=guUYq^n5mabP!EVEFNwBs7GM3%;SWf z9#(90#E$`?k1^Tg|MuV!P8LDM;&sWGY?{V6mg0n%t|1)-KV^zyhZcXoXs7h-TL$KT z-JGrD{9?P$*ml@~&n{G{>co5vj~}#3mo8nB`aB|rhliCxc6oWZv^jsLG|Oy;PNzd_ zYb#O;mneg5^3N$UgYqKPh$!ILcgH23=aH0@1iRf1eYQ~uv)Mo$qc}0ygo{@$usq6- zxdT*u@WBA?+3zx25Co*9r6Dsj6a2MVn4V!~ixT+BS*p2RU0o`h=L2!dr+MSMp!yEb z?lYd$v*H9Q8jAk@e#}@}jYVb2nEh8AYQA597f}p{!vV9|48Py6WSdMT<|piFtK!Zb zO_dCDA0f^v0@osRfJ<^9C950yY&TY}Th8u^+wEp84TWX8sIukrcDY;%CnO{&ei`HE zg>`_SOPd67D7X_ke}X8gCwGfkSouaHy01uZI`hze=4)6=-&NwP-dvA@nJMh~!2VCA z_;@;s+hGDU-vQsFIGi}~jU;;e;q`ja*4(Iyw|6FE?eg1rI`t8{1vi`@FHpFkaXTtD zR|5O?q2<;va?(>+9_7=#2?e-^e3)uXMrzU|40*g5?D8wjC*&%5=T1L?e>`z$>FkBG z$EEP|8(zhx(R$UIlt=km(Ck2Oj~AYYJ_ybMcsyQ((%DmD#N#XoGcKmqw0CF<@Y*1%p5#x&!!d^lW5o%kCbJ20KnK9i6OYsVv zI%#Dw>dc0X@3H4CAAZ8Fo%{hJn{GivLxX1PH9IgKmb?PyS^QE7D^4FIVzOUbTBgKh zQ1Pm&Doz#=3nu(aCWDHXl$3D9|0QDnQyK~BiPgAzF%V2=uSFH}^>l&_*%t{>1vrK4 zYy?p<<_mfX@`KMUZQA~5h$BSm>0930m4TV@wAZvXo-db+R-joboc)zXFh>iT0;tW+%{LS~IXOJ- u)bGK6z=XBywsQJs0?)g@(r$Mc0Q?K3j-;UgFi3X*0000 Date: Sun, 9 Mar 2025 20:28:44 +0000 Subject: [PATCH 21/91] nuke metempsychosis --- .../Tests/_DV/MetempsychosisTest.cs | 55 ------ .../Cloning/CloningConsoleSystem.cs | 3 +- Content.Server/Cloning/CloningPodSystem.cs | 7 +- .../Components/MedicalScannerComponent.cs | 3 - .../_DV/Chapel/SacrificialAltarSystem.cs | 2 +- .../Cloning/CloningSystem.Metempsychosis.cs | 172 ------------------ .../Cloning/MetempsychosisKarmaComponent.cs | 11 -- .../Cloning/MetempsychoticMachineComponent.cs | 27 --- .../Humanoid/HumanoidAppearanceComponent.cs | 8 - .../_DV/navmap-beacons/station-beacons.ftl | 2 +- .../en-US/_DV/research/technologies.ftl | 3 + Resources/Locale/en-US/_DV/tips.ftl | 15 +- .../nyanotrasen/research/technologies.ftl | 2 - Resources/Prototypes/Datasets/tips.yml | 2 +- .../Markers/Spawners/Random/devices.yml | 1 - .../Devices/CircuitBoards/production.yml | 18 +- .../Machines/metempsychoticMachine.yml | 25 --- .../Recipes/Lathes/electronics.yml | 5 - .../Nyanotrasen/Research/experimental.yml | 16 -- .../Nyanotrasen/metempsychoticHumanoids.yml | 15 -- .../metempsychoticNonHumanoids.yml | 10 - .../Objects/Devices/station_beacon.yml | 2 +- .../_DV/Recipes/Lathes/Packs/medical.yml | 3 +- .../Prototypes/_DV/Research/experimental.yml | 16 ++ .../Prototypes/_DV/Traits/disabilities.yml | 8 - 25 files changed, 32 insertions(+), 399 deletions(-) delete mode 100644 Content.IntegrationTests/Tests/_DV/MetempsychosisTest.cs delete mode 100644 Content.Server/_DV/Cloning/CloningSystem.Metempsychosis.cs delete mode 100644 Content.Server/_DV/Cloning/MetempsychosisKarmaComponent.cs delete mode 100644 Content.Server/_DV/Cloning/MetempsychoticMachineComponent.cs delete mode 100644 Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml delete mode 100644 Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml delete mode 100644 Resources/Prototypes/Nyanotrasen/metempsychoticNonHumanoids.yml create mode 100644 Resources/Prototypes/_DV/Research/experimental.yml diff --git a/Content.IntegrationTests/Tests/_DV/MetempsychosisTest.cs b/Content.IntegrationTests/Tests/_DV/MetempsychosisTest.cs deleted file mode 100644 index debd87a80a..0000000000 --- a/Content.IntegrationTests/Tests/_DV/MetempsychosisTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -using Content.Server._DV.Cloning; -using Content.Shared.Humanoid.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.IntegrationTests.Tests._DV; - -[TestFixture] -public sealed class MetempsychosisTest -{ - [Test] - public async Task AllHumanoidPoolSpeciesExist() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - // Per RobustIntegrationTest.cs, wait until state is settled to access it. - await server.WaitIdleAsync(); - - var prototypeManager = server.ResolveDependency(); - - var metemComponent = new MetempsychoticMachineComponent(); - - await server.WaitAssertion(() => - { - prototypeManager.TryIndex(metemComponent.MetempsychoticHumanoidPool, - out var humanoidPool); - prototypeManager.TryIndex(metemComponent.MetempsychoticNonHumanoidPool, - out var nonHumanoidPool); - - Assert.Multiple(() => - { - Assert.That(humanoidPool, Is.Not.Null, "MetempsychoticHumanoidPool is null!"); - Assert.That(nonHumanoidPool, Is.Not.Null, "MetempsychoticNonHumanoidPool is null!"); - Assert.That(humanoidPool.Weights, - Is.Not.Empty, - "MetempsychoticHumanoidPool has no valid prototypes!"); - Assert.That(nonHumanoidPool.Weights, - Is.Not.Empty, - "MetempsychoticNonHumanoidPool has no valid prototypes!"); - }); - - foreach (var key in humanoidPool.Weights.Keys) - { - Assert.That(prototypeManager.TryIndex(key, out _), - $"MetempsychoticHumanoidPool has invalid prototype {key}!"); - } - - foreach (var key in nonHumanoidPool.Weights.Keys) - { - Assert.That(prototypeManager.TryIndex(key, out _), - $"MetempsychoticNonHumanoidPool has invalid prototype {key}!"); - } - }); - await pair.CleanReturnAsync(); - } -} diff --git a/Content.Server/Cloning/CloningConsoleSystem.cs b/Content.Server/Cloning/CloningConsoleSystem.cs index e09c761984..86f96ffac2 100644 --- a/Content.Server/Cloning/CloningConsoleSystem.cs +++ b/Content.Server/Cloning/CloningConsoleSystem.cs @@ -167,8 +167,7 @@ namespace Content.Server.Cloning if (mind.UserId.HasValue == false || mind.Session == null) return; - // DeltaV: Adds scannerComp.MetemKarmaBonus - if (_cloningPodSystem.TryCloning(cloningPodUid, body.Value, (mindId, mind), cloningPod, scannerComp.CloningFailChanceMultiplier, scannerComp.MetemKarmaBonus)) + if (_cloningPodSystem.TryCloning(cloningPodUid, body.Value, (mindId, mind), cloningPod, scannerComp.CloningFailChanceMultiplier)) _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(uid)} successfully cloned {ToPrettyString(body.Value)}."); } diff --git a/Content.Server/Cloning/CloningPodSystem.cs b/Content.Server/Cloning/CloningPodSystem.cs index cd26e6bf6b..5d179a1fae 100644 --- a/Content.Server/Cloning/CloningPodSystem.cs +++ b/Content.Server/Cloning/CloningPodSystem.cs @@ -130,16 +130,11 @@ public sealed class CloningPodSystem : EntitySystem args.PushMarkup(Loc.GetString("cloning-pod-biomass", ("number", _material.GetMaterialAmount(ent.Owner, ent.Comp.RequiredMaterial)))); } - // DeltaV - added karmaBonus - public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity mindEnt, CloningPodComponent? clonePod, float failChanceModifier = 1, float karmaBonus = 0.25f) + public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity mindEnt, CloningPodComponent? clonePod, float failChanceModifier = 1) { if (!Resolve(uid, ref clonePod)) return false; - // DeltaV - This method should use Entity pod instead - // But I don't want to completely mangle it so we do this here - var podEnt = new Entity(uid, clonePod); - if (HasComp(uid)) return false; diff --git a/Content.Server/Medical/Components/MedicalScannerComponent.cs b/Content.Server/Medical/Components/MedicalScannerComponent.cs index 96de649987..aef56d6c0b 100644 --- a/Content.Server/Medical/Components/MedicalScannerComponent.cs +++ b/Content.Server/Medical/Components/MedicalScannerComponent.cs @@ -15,8 +15,5 @@ namespace Content.Server.Medical.Components [DataField, ViewVariables(VVAccess.ReadWrite)] public float CloningFailChanceMultiplier = 1f; - - // Nyano, needed for Metem Machine. - public float MetemKarmaBonus = 0.25f; } } diff --git a/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs b/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs index 378cd1ecdd..8b63a537af 100644 --- a/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs +++ b/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs @@ -118,7 +118,7 @@ public sealed class SacrificialAltarSystem : SharedSacrificialAltarSystem return; } - if (!HasComp(target) && !HasComp(target)) + if (!HasComp(target)) { _popup.PopupEntity(Loc.GetString("altar-failure-reason-target-humanoid", ("target", target)), ent, user, PopupType.SmallCaution); return; diff --git a/Content.Server/_DV/Cloning/CloningSystem.Metempsychosis.cs b/Content.Server/_DV/Cloning/CloningSystem.Metempsychosis.cs deleted file mode 100644 index 3619a18e9e..0000000000 --- a/Content.Server/_DV/Cloning/CloningSystem.Metempsychosis.cs +++ /dev/null @@ -1,172 +0,0 @@ -using Content.Server._DV.Cloning; -using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Prototypes; -using Content.Shared.Preferences; -using Content.Shared.Speech; -using Content.Shared.Emoting; -using Content.Shared.Damage.ForceSay; -using Content.Shared.SSDIndicator; -using Content.Server.Speech.Components; -using Content.Server.Ghost.Roles.Components; -using Content.Server.StationEvents.Components; -using Content.Server.Psionics; -using Robust.Shared.Random; -using Content.Shared.Mind.Components; -using Content.Shared.Tag; -using Content.Shared.Cloning; -using Content.Shared.Random.Helpers; -using Robust.Shared.GameObjects.Components.Localization; - -namespace Content.Server.Cloning; - -public sealed partial class CloningSystem -{ - [Dependency] private readonly TagSystem _tag = default!; - [Dependency] private readonly GrammarSystem _grammar = default!; - - /// - /// Gets the entity prototype to spawn for a clone based on karma and chance calculations. - /// - private string GetSpawnEntity(Entity ent, float karmaBonus, SpeciesPrototype oldSpecies, out SpeciesPrototype? species, int karma = 0) - { - // First time being cloned - return original species - if (karma == 0) - { - species = oldSpecies; - return oldSpecies.Prototype; - } - - var chance = ent.Comp.HumanoidBaseChance + karmaBonus; - chance -= (1 - ent.Comp.HumanoidBaseChance) * karma; - - // Perfect clone chance - if (chance > 1 && _robustRandom.Prob(chance - 1)) - { - species = oldSpecies; - return oldSpecies.Prototype; - } - - // Roll for humanoid vs non-humanoid - chance = Math.Clamp(chance, 0, 1); - if (_robustRandom.Prob(chance)) - { - if (_prototype.TryIndex(ent.Comp.MetempsychoticHumanoidPool, out var humanoidPool)) - { - var protoId = humanoidPool.Pick(); - if (_prototype.TryIndex(protoId, out var speciesPrototype)) - { - species = speciesPrototype; - return speciesPrototype.Prototype; - } - } - } - else if (_prototype.TryIndex(ent.Comp.MetempsychoticNonHumanoidPool, out var nonHumanoidPool)) - { - // For non-humanoids, return the entity prototype directly - species = null; - return nonHumanoidPool.Pick(); - } - - // Fallback to original species if prototype indexing fails - Log.Error("Failed to get valid clone type - falling back to original species"); - species = oldSpecies; - return oldSpecies.Prototype; - } - - /// - /// Handles fetching the mob and managing appearance for cloning with metempsychosis mechanics - /// - private EntityUid FetchAndSpawnMob( - Entity pod, - HumanoidCharacterProfile pref, - SpeciesPrototype speciesPrototype, - HumanoidAppearanceComponent humanoid, - EntityUid bodyToClone, - float karmaBonus) - { - List sexes = []; - var switchingSpecies = false; - var applyKarma = false; - var toSpawn = speciesPrototype.Prototype; - - // Get existing karma score or start at 0 - var karmaScore = 0; - if (TryComp(bodyToClone, out var oldKarma)) - { - karmaScore = oldKarma.Score; - } - - if (TryComp(pod.Owner, out var metem)) - { - var metemEntity = new Entity(pod.Owner, metem); - toSpawn = GetSpawnEntity(metemEntity, karmaBonus, speciesPrototype, out var newSpecies, karmaScore); - applyKarma = true; - - if (newSpecies != null) - { - sexes = newSpecies.Sexes; - speciesPrototype = newSpecies; - - if (speciesPrototype.ID != newSpecies.ID) - switchingSpecies = true; - } - } - - var mob = Spawn(toSpawn, _transformSystem.GetMapCoordinates(pod.Owner)); - - // Only try to handle humanoid appearance if we have a humanoid component - if (TryComp(mob, out var newHumanoid)) - { - if (switchingSpecies || HasComp(bodyToClone)) - { - pref = HumanoidCharacterProfile.RandomWithSpecies(newHumanoid.Species); - if (sexes.Contains(humanoid.Sex)) - pref = pref.WithSex(humanoid.Sex); - - pref = pref.WithGender(humanoid.Gender); - pref = pref.WithAge(humanoid.Age); - } - - _humanoidSystem.LoadProfile(mob, pref); - } - - if (applyKarma) - { - var karma = EnsureComp(mob); - karma.Score = karmaScore + 1; // Increment karma score - } - - var ev = new CloningEvent(bodyToClone, mob); - RaiseLocalEvent(bodyToClone, ref ev); - - if (!ev.NameHandled) - _metaSystem.SetEntityName(mob, MetaData(bodyToClone).EntityName); - - var grammar = EnsureComp(mob); - var grammarEnt = new Entity(mob, grammar); - _grammar.SetProperNoun(grammarEnt, true); - _grammar.SetGender(grammarEnt, humanoid.Gender); - Dirty(mob, grammar); - - SetupBasicComponents(mob); - - return mob; - } - - // I hate this - private void SetupBasicComponents(EntityUid mob) - { - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - EnsureComp(mob); - RemComp(mob); - RemComp(mob); - RemComp(mob); - RemComp(mob); - - _tag.AddTag(mob, "DoorBumpOpener"); - } -} diff --git a/Content.Server/_DV/Cloning/MetempsychosisKarmaComponent.cs b/Content.Server/_DV/Cloning/MetempsychosisKarmaComponent.cs deleted file mode 100644 index 7ad141214a..0000000000 --- a/Content.Server/_DV/Cloning/MetempsychosisKarmaComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Content.Server._DV.Cloning; - -/// -/// This tracks how many times you have already been cloned and lowers your chance of getting a humanoid each time. -/// -[RegisterComponent] -public sealed partial class MetempsychosisKarmaComponent : Component -{ - [DataField] - public int Score; -} diff --git a/Content.Server/_DV/Cloning/MetempsychoticMachineComponent.cs b/Content.Server/_DV/Cloning/MetempsychoticMachineComponent.cs deleted file mode 100644 index 7ad286bd8a..0000000000 --- a/Content.Server/_DV/Cloning/MetempsychoticMachineComponent.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Content.Shared.Random; -using Robust.Shared.Prototypes; - -namespace Content.Server._DV.Cloning; - -[RegisterComponent] -public sealed partial class MetempsychoticMachineComponent : Component -{ - /// - /// Base probability of remaining humanoid during cloning. Higher karma reduces this chance. - /// - [DataField] - public float HumanoidBaseChance = 0.75f; - - /// - /// Species prototypes pool to use for humanoids. - /// - [DataField] - public ProtoId MetempsychoticHumanoidPool = "MetempsychoticHumanoidPool"; - - /// - /// Entitiy prototypes pool to use for non-humanoids. - /// - [DataField] - public ProtoId MetempsychoticNonHumanoidPool = "MetempsychoticNonhumanoidPool"; -} - diff --git a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs index a7e169d046..016ab64f1a 100644 --- a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs +++ b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs @@ -1,12 +1,10 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; -using Content.Shared.Preferences; // DeltaV using Robust.Shared.Enums; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; -using Content.Shared.Preferences; // DeltaV, used for Metempsychosis, Fugitive, and Paradox Anomaly namespace Content.Shared.Humanoid; @@ -90,12 +88,6 @@ public sealed partial class HumanoidAppearanceComponent : Component /// [DataField] public HashSet HideLayersOnEquip = [HumanoidVisualLayers.Hair]; - - /// - /// DeltaV - let paradox anomaly be cloned - /// - [ViewVariables] - public HumanoidCharacterProfile? LastProfileLoaded; } [DataDefinition] diff --git a/Resources/Locale/en-US/_DV/navmap-beacons/station-beacons.ftl b/Resources/Locale/en-US/_DV/navmap-beacons/station-beacons.ftl index e8977c1009..33d4474d4d 100644 --- a/Resources/Locale/en-US/_DV/navmap-beacons/station-beacons.ftl +++ b/Resources/Locale/en-US/_DV/navmap-beacons/station-beacons.ftl @@ -7,8 +7,8 @@ station-beacon-lo = LO station-beacon-conference-room = Conference Room +station-beacon-cloning = Cloning station-beacon-virology = Virology -station-beacon-metempsychosis = Metempsychosis station-beacon-exam = Exam station-beacon-med-outpost = Med Outpost station-beacon-psych = Psych diff --git a/Resources/Locale/en-US/_DV/research/technologies.ftl b/Resources/Locale/en-US/_DV/research/technologies.ftl index ee2fe5d234..bd96e9d6b0 100644 --- a/Resources/Locale/en-US/_DV/research/technologies.ftl +++ b/Resources/Locale/en-US/_DV/research/technologies.ftl @@ -1,6 +1,9 @@ # Industrial research-technology-aerial-extraction = Aerial Extraction +# Experimental +research-technology-cloning = Cloning + # Civilian research-technology-syringe-gun = Syringe Gun diff --git a/Resources/Locale/en-US/_DV/tips.ftl b/Resources/Locale/en-US/_DV/tips.ftl index a9767bcdf0..676c6546be 100644 --- a/Resources/Locale/en-US/_DV/tips.ftl +++ b/Resources/Locale/en-US/_DV/tips.ftl @@ -1,4 +1,3 @@ -# Nyanotrasen - Specific tips below tips-dataset-138 = Psionic insulation prevents you from using or being targeted by psionic abilities. Look for insulative headgear or cryptobiolin pills. tips-dataset-139 = Lotophagoi oil from the oracle will drug you up for a long time, but is one of the most reliable sources of psionics. tips-dataset-140 = Turn off glimmer probers when glimmer approaches cautious levels. @@ -7,12 +6,8 @@ tips-dataset-142 = Oneirophages have psionic invisiblity. Psionic insulation wil tips-dataset-143 = Someone who looks just like you may be a paradox anomaly. tips-dataset-144 = Rat kings can command their rats to attack someone by pointing at them. tips-dataset-145 = Some rat kings are known to be friendly. As long as the rat army never goes rogue, it could be a great boon to the station. -tips-dataset-146 = The reverse engineering machine benefits greatly from machine upgrades. -tips-dataset-147 = The reverse engineering machine can reverse engineer blood red hardsuits. -tips-dataset-148 = The metempsychotic machine's chance to reincarnate you into a humanoid is guaranteed for a number of times equal to its scanning module tier. -tips-dataset-149 = Glimmer wisps will only attack you if they detect you are psionic, or you aggravate them by damaging them or dragging away a body they are trying to drain. -tips-dataset-150 = Bibles, holy water, and the anti-psychic knife can deal holy damage, which has strong effects against some creatures." -tips-dataset-151 = Ectoplasm is used in the recipe for normality crystals. - -# DeltaV - Specific tips below -tips-dataset-152 = As a Security Officer, if you're not sure how to determine the severity of a crime or the appropriate punishment, take a look at the Crime Assist application in your PDA! +tips-dataset-146 = The reverse engineering machine can reverse engineer blood red hardsuits. +tips-dataset-147 = Glimmer wisps will only attack you if they detect you are psionic, or you aggravate them by damaging them or dragging away a body they are trying to drain. +tips-dataset-148 = Bibles, holy water, and the anti-psychic knife can deal holy damage, which has strong effects against some creatures." +tips-dataset-149 = Ectoplasm is used in the recipe for normality crystals. +tips-dataset-150 = As a Security Officer, if you're not sure how to determine the severity of a crime or the appropriate punishment, take a look at the Crime Assist application in your PDA! diff --git a/Resources/Locale/en-US/nyanotrasen/research/technologies.ftl b/Resources/Locale/en-US/nyanotrasen/research/technologies.ftl index 2aa6625c2c..916295df11 100644 --- a/Resources/Locale/en-US/nyanotrasen/research/technologies.ftl +++ b/Resources/Locale/en-US/nyanotrasen/research/technologies.ftl @@ -1,3 +1 @@ research-technology-psionic-countermeasures = Psionic Countermeasures -research-technology-teleportation = Teleportation -research-technology-metempsychosis = Metempsychosis diff --git a/Resources/Prototypes/Datasets/tips.yml b/Resources/Prototypes/Datasets/tips.yml index c7c5a80c1e..4da4f0e4d3 100644 --- a/Resources/Prototypes/Datasets/tips.yml +++ b/Resources/Prototypes/Datasets/tips.yml @@ -2,4 +2,4 @@ id: Tips values: prefix: tips-dataset- - count: 152 # DeltaV - was 137 + count: 150 # DeltaV - was 137 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml index 163e36b8e3..6cf4254143 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Markers/Spawners/Random/devices.yml @@ -139,7 +139,6 @@ - !type:GroupSelector children: - id: CloningPodMachineCircuitboard - - id: MetempsychoticMachineCircuitboard - id: MedicalScannerMachineCircuitboard - id: StasisBedMachineCircuitboard - id: CryoPodMachineCircuitboard diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/CircuitBoards/production.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/CircuitBoards/production.yml index 83b7c8d07b..bafba27de4 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/CircuitBoards/production.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Devices/CircuitBoards/production.yml @@ -7,25 +7,9 @@ difficulty: 3 recipes: - CloningConsoleComputerCircuitboard - - MetempsychoticMachineCircuitboard + - CloningPodMachineCircuitboard - MedicalScannerMachineCircuitboard -- type: entity - id: MetempsychoticMachineCircuitboard - parent: [ BaseMachineCircuitboard, BaseCloningBoard ] - name: metempsychotic machine machine board - description: A machine printed circuit board for a cloning pod - components: - - type: Sprite - state: medical - - type: MachineBoard - prototype: MetempsychoticMachine - stackRequirements: - Glass: 1 - Cable: 1 - Capacitor: 2 - Manipulator: 2 - - type: entity id: ReverseEngineeringMachineCircuitboard parent: BaseMachineCircuitboard diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml b/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml deleted file mode 100644 index d8e791af1e..0000000000 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Machines/metempsychoticMachine.yml +++ /dev/null @@ -1,25 +0,0 @@ -- type: entity - parent: CloningPod - id: MetempsychoticMachine - name: metempsychotic machine - description: Speeds along the transmigration of a soul to its next vessel. - components: - - type: MetempsychoticMachine - - type: CloningPod - - type: Machine - board: MetempsychoticMachineCircuitboard - - type: Sprite - sprite: Nyanotrasen/Structures/Machines/metempsychotic.rsi - snapCardinals: true - layers: - - state: pod_0 - - type: Appearance - - type: GenericVisualizer - visuals: - enum.CloningPodVisuals.Status: - base: - Cloning: { state: pod_1 } - NoMind: { state: pod_1 } - Gore: { state: pod_1 } - Idle: { state: pod_0 } - - type: Psionic diff --git a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml index 42bdce462a..5ab1e6f00a 100644 --- a/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Nyanotrasen/Recipes/Lathes/electronics.yml @@ -1,8 +1,3 @@ -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: MetempsychoticMachineCircuitboard - result: MetempsychoticMachineCircuitboard - - type: latheRecipe parent: BaseGoldCircuitboardRecipe id: ReverseEngineeringMachineCircuitboard diff --git a/Resources/Prototypes/Nyanotrasen/Research/experimental.yml b/Resources/Prototypes/Nyanotrasen/Research/experimental.yml index 9d5be497e5..6bd3fd51d6 100644 --- a/Resources/Prototypes/Nyanotrasen/Research/experimental.yml +++ b/Resources/Prototypes/Nyanotrasen/Research/experimental.yml @@ -15,22 +15,6 @@ - MagazineBoxSpecialMindbreaker - BoxShellSoulbreaker -- type: technology - id: Metempsychosis - name: research-technology-metempsychosis - icon: - sprite: Nyanotrasen/Structures/Machines/metempsychotic.rsi - state: pod_0 - discipline: Experimental - tier: 2 - cost: 15000 - recipeUnlocks: - - BiomassReclaimerMachineCircuitboard - - CloningConsoleComputerCircuitboard - - MedicalScannerMachineCircuitboard - - MetempsychoticMachineCircuitboard - - # Tier 3 # - type: technology diff --git a/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml b/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml deleted file mode 100644 index b23b5c6431..0000000000 --- a/Resources/Prototypes/Nyanotrasen/metempsychoticHumanoids.yml +++ /dev/null @@ -1,15 +0,0 @@ -- type: weightedRandom - id: MetempsychoticHumanoidPool # Species prototypes - weights: - Human: 1 - Felinid: 1 - Oni: 1 - Arachnid: 1 - Harpy: 1 - Moth: 1 - Diona: 0.5 - Reptilian: 0.5 - SlimePerson: 0.5 - Vulpkanin: 0.5 - Rodentia: 0.5 - Feroxi: 0.5 diff --git a/Resources/Prototypes/Nyanotrasen/metempsychoticNonHumanoids.yml b/Resources/Prototypes/Nyanotrasen/metempsychoticNonHumanoids.yml deleted file mode 100644 index 4679e22611..0000000000 --- a/Resources/Prototypes/Nyanotrasen/metempsychoticNonHumanoids.yml +++ /dev/null @@ -1,10 +0,0 @@ -- type: weightedRandom - id: MetempsychoticNonhumanoidPool # Entity prototypes - weights: - MobMonkey: 1 - MobGorilla: 1 - # MobKangaroo: 0.5 # Mobs here need to be either VERY funny or up to standard. - MobXenoQueen: 0.01 - MobCrab: 0.01 - MobPenguin: 1 #ODJ's orders - MobSpaceShrimp: 0.01 # Delta V - I hope this is funny enough diff --git a/Resources/Prototypes/_DV/Entities/Objects/Devices/station_beacon.yml b/Resources/Prototypes/_DV/Entities/Objects/Devices/station_beacon.yml index 75f1e58f32..e6e96919fd 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Devices/station_beacon.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Devices/station_beacon.yml @@ -22,7 +22,7 @@ suffix: Cloning #Metempsychosis components: - type: NavMapBeacon - defaultText: station-beacon-metempsychosis + defaultText: station-beacon-cloning - type: entity parent: DefaultStationBeaconMedical diff --git a/Resources/Prototypes/_DV/Recipes/Lathes/Packs/medical.yml b/Resources/Prototypes/_DV/Recipes/Lathes/Packs/medical.yml index 3113c1b151..90b91b62ca 100644 --- a/Resources/Prototypes/_DV/Recipes/Lathes/Packs/medical.yml +++ b/Resources/Prototypes/_DV/Recipes/Lathes/Packs/medical.yml @@ -29,5 +29,4 @@ - CrewMonitoringComputerCircuitboard - CloningConsoleComputerCircuitboard - MedicalScannerMachineCircuitboard - - MetempsychoticMachineCircuitboard - - CloningPodMachineCircuitboard # RE + - CloningPodMachineCircuitboard diff --git a/Resources/Prototypes/_DV/Research/experimental.yml b/Resources/Prototypes/_DV/Research/experimental.yml new file mode 100644 index 0000000000..e3ec35f32f --- /dev/null +++ b/Resources/Prototypes/_DV/Research/experimental.yml @@ -0,0 +1,16 @@ +# Tier 2 + +- type: technology + id: Cloning + name: research-technology-cloning + icon: + sprite: Structures/Machines/cloning.rsi + state: pod_0 + discipline: Experimental + tier: 2 + cost: 15000 + recipeUnlocks: + - BiomassReclaimerMachineCircuitboard + - CloningConsoleComputerCircuitboard + - MedicalScannerMachineCircuitboard + - CloningPodMachineCircuitboard diff --git a/Resources/Prototypes/_DV/Traits/disabilities.yml b/Resources/Prototypes/_DV/Traits/disabilities.yml index de4d78f1a1..fc80749cce 100644 --- a/Resources/Prototypes/_DV/Traits/disabilities.yml +++ b/Resources/Prototypes/_DV/Traits/disabilities.yml @@ -1,11 +1,3 @@ -- type: trait - id: Uncloneable - name: trait-uncloneable-name - description: trait-uncloneable-desc - category: Disabilities - components: - - type: Uncloneable - - type: trait id: Addicted name: trait-addicted-name From 9013ac79cb6aa7bb72dae78f80f478f6be48a0f3 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 21:02:12 +0000 Subject: [PATCH 22/91] random fixes --- Content.Server/Forensics/Systems/ForensicsSystem.cs | 2 +- Content.Server/Zombies/ZombieSystem.Transform.cs | 1 + Content.Server/_DV/Chapel/SacrificialAltarSystem.cs | 1 - .../_DV/VendingMachines/ShopVendorSystem.cs | 10 ---------- .../_Shitmed/Medical/Surgery/GhettoSurgerySystem.cs | 7 +++++-- .../_DV/VendingMachines/SharedShopVendorSystem.cs | 10 +++++----- Resources/Prototypes/Entities/Mobs/Player/clone.yml | 12 ++++++++++++ 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index 36e9d17ce0..d702ae3d21 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -34,7 +34,7 @@ namespace Content.Server.Forensics { SubscribeLocalEvent(OnInteract); SubscribeLocalEvent(OnFiberInteract); // DeltaV - SubscribeLocalEvent(OnFiberInit); // DeltaV #1455 - unique glove fibers + SubscribeLocalEvent(OnFiberInit, after: [typeof(BloodstreamSystem)]); // DeltaV #1455 - unique glove fibers SubscribeLocalEvent(OnFingerprintInit, after: new[] { typeof(BloodstreamSystem) }); // The solution entities are spawned on MapInit as well, so we have to wait for that to be able to set the DNA in the bloodstream correctly without ResolveSolution failing SubscribeLocalEvent(OnDNAInit, after: new[] { typeof(BloodstreamSystem) }); diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index 2924a7fb8c..e21006c928 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -26,6 +26,7 @@ using Content.Shared.Mobs.Components; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Systems; using Content.Shared.NameModifier.EntitySystems; +using Content.Shared.NPC.Components; // DeltaV using Content.Shared.NPC.Systems; using Content.Shared.Nutrition.AnimalHusbandry; using Content.Shared.Nutrition.Components; diff --git a/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs b/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs index 8b63a537af..bab8a9fe6b 100644 --- a/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs +++ b/Content.Server/_DV/Chapel/SacrificialAltarSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Bible.Components; -using Content.Server._DV.Cloning; using Content.Shared.Abilities.Psionics; using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; diff --git a/Content.Server/_DV/VendingMachines/ShopVendorSystem.cs b/Content.Server/_DV/VendingMachines/ShopVendorSystem.cs index 56f6c5bd09..320ea72847 100644 --- a/Content.Server/_DV/VendingMachines/ShopVendorSystem.cs +++ b/Content.Server/_DV/VendingMachines/ShopVendorSystem.cs @@ -1,13 +1,9 @@ -using Content.Server.Advertise; -using Content.Server.Advertise.Components; using Content.Shared._DV.VendingMachines; namespace Content.Server._DV.VendingMachines; public sealed class ShopVendorSystem : SharedShopVendorSystem { - [Dependency] private readonly SpeakOnUIClosedSystem _speakOnUIClosed = default!; - public override void Update(float frameTime) { base.Update(frameTime); @@ -38,10 +34,4 @@ public sealed class ShopVendorSystem : SharedShopVendorSystem } } } - - protected override void AfterPurchase(Entity ent) - { - if (TryComp(ent, out var speak)) - _speakOnUIClosed.TrySetFlag((ent.Owner, speak)); - } } diff --git a/Content.Server/_Shitmed/Medical/Surgery/GhettoSurgerySystem.cs b/Content.Server/_Shitmed/Medical/Surgery/GhettoSurgerySystem.cs index e8854f7d67..46a31e9491 100644 --- a/Content.Server/_Shitmed/Medical/Surgery/GhettoSurgerySystem.cs +++ b/Content.Server/_Shitmed/Medical/Surgery/GhettoSurgerySystem.cs @@ -53,10 +53,13 @@ public sealed partial class GhettoSurgerySystem : EntitySystem private void OnSharpShutdown(Entity ent, ref ComponentShutdown args) { - if (ent.Comp.HadScalpel) + if (!ent.Comp.HadSurgeryTool) + RemComp(ent); + + if (!ent.Comp.HadScalpel) RemComp(ent); - if (ent.Comp.HadBoneSaw) + if (!ent.Comp.HadBoneSaw) RemComp(ent); } } diff --git a/Content.Shared/_DV/VendingMachines/SharedShopVendorSystem.cs b/Content.Shared/_DV/VendingMachines/SharedShopVendorSystem.cs index 254632a086..cbabf8c784 100644 --- a/Content.Shared/_DV/VendingMachines/SharedShopVendorSystem.cs +++ b/Content.Shared/_DV/VendingMachines/SharedShopVendorSystem.cs @@ -1,4 +1,6 @@ using Content.Shared.Access.Systems; +using Content.Shared.Advertise.Systems; +using Content.Shared.Advertise.Components; using Content.Shared._DV.Salvage.Systems; using Content.Shared.Destructible; using Content.Shared.Popups; @@ -23,6 +25,7 @@ public abstract class SharedShopVendorSystem : EntitySystem [Dependency] private readonly SharedPointLightSystem _light = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPowerReceiverSystem _power = default!; + [Dependency] private readonly SharedSpeakOnUIClosedSystem _speakOnUIClosed = default!; public override void Initialize() { @@ -117,11 +120,8 @@ public abstract class SharedShopVendorSystem : EntitySystem Log.Debug($"Player {ToPrettyString(user):user} purchased {listing.Id} from {ToPrettyString(ent):vendor}"); - AfterPurchase(ent); - } - - protected virtual void AfterPurchase(Entity ent) - { + if (TryComp(ent, out var speak)) + _speakOnUIClosed.TrySetFlag((ent, speak)); } private void Deny(Entity ent, EntityUid user) diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml index 64ae4f9ad8..14f45cf27a 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -53,6 +53,18 @@ - SouthernAccent - SpanishAccent - StutteringAccent + # Begin DeltaV Additions + - Addicted + - DogVision + - FrenchAccent + - Hushed + - IrishAccent + - MobsterAccent + - Pain + - ScottishAccent + - UltraVision + - Unborgable + # End DeltaV Additions blacklist: components: - AttachedClothing # helmets, which are part of the suit From 577b28168ba2195424c7919e0074977177d8d430 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 2 Mar 2025 15:51:20 +0000 Subject: [PATCH 23/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 08e901740a..49dcc4f73b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: Errant - changes: - - message: Players becoming Traitor without a PDA now correctly get the text and - audio notifications, and the code words. They are also given an Uplink Implant, - with the price taken from their starting TC. - type: Fix - id: 7531 - time: '2024-10-18T12:55:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30359 - author: Beck Thompson changes: - message: Plushies will now eject their contents when recycled in the recycler! @@ -3896,3 +3887,16 @@ id: 8030 time: '2025-03-02T12:56:16.674298+00:00' url: https://github.com/space-wizards/space-station-14/pull/32209 +- author: slarticodefast + changes: + - message: Fixed various traits and abilites being lost when getting cloned. + type: Fix + - message: Fixed various bugs when cloning zombified players. + type: Fix + - message: Unrevivable characters can no longer be cloned. + type: Tweak + - message: Fixed default device linking for the cloning console. + type: Fix + id: 8031 + time: '2025-03-02T15:50:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35555 From 4dacc7fdb66511c8e11423b253a39ddd5dd59150 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 2 Mar 2025 20:40:57 +0100 Subject: [PATCH 24/91] Hotfix: Fix uplinks allowing buying conditionally restricted items (#35334) * Initial commit * I just compressed the code * Actually address review --- .../Store/Systems/StoreSystem.Listings.cs | 16 +++++++++++++++- Content.Server/Store/Systems/StoreSystem.Ui.cs | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Content.Server/Store/Systems/StoreSystem.Listings.cs b/Content.Server/Store/Systems/StoreSystem.Listings.cs index 4699ec7b66..412114ce03 100644 --- a/Content.Server/Store/Systems/StoreSystem.Listings.cs +++ b/Content.Server/Store/Systems/StoreSystem.Listings.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using Content.Shared.Mind; using Content.Shared.Store; using Content.Shared.Store.Components; using Robust.Shared.Prototypes; @@ -117,7 +118,7 @@ public sealed partial class StoreSystem if (listing.Conditions != null) { - var args = new ListingConditionArgs(buyer, storeEntity, listing, EntityManager); + var args = new ListingConditionArgs(GetBuyerMind(buyer), storeEntity, listing, EntityManager); var conditionsMet = true; foreach (var condition in listing.Conditions) @@ -137,6 +138,19 @@ public sealed partial class StoreSystem } } + /// + /// Returns the entity's mind entity, if it has one, to be used for listing conditions. + /// If it doesn't have one, or is a mind entity already, it returns itself. + /// + /// The buying entity. + public EntityUid GetBuyerMind(EntityUid buyer) + { + if (!HasComp(buyer) && _mind.TryGetMind(buyer, out var buyerMind, out var _)) + return buyerMind; + + return buyer; + } + /// /// Checks if a listing appears in a list of given categories /// diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 3f4ccf696d..93bbd3bd96 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -146,7 +146,7 @@ public sealed partial class StoreSystem //condition checking because why not if (listing.Conditions != null) { - var args = new ListingConditionArgs(component.AccountOwner ?? buyer, uid, listing, EntityManager); + var args = new ListingConditionArgs(component.AccountOwner ?? GetBuyerMind(buyer), uid, listing, EntityManager); var conditionsMet = listing.Conditions.All(condition => condition.Condition(args)); if (!conditionsMet) From 47d13009350305c0529ab416652857d6387ad099 Mon Sep 17 00:00:00 2001 From: HTML/Crystal <152909599+HTMLSystem@users.noreply.github.com> Date: Sun, 2 Mar 2025 15:58:15 -0500 Subject: [PATCH 25/91] Better Insectoid Glasses (#31812) Sprites and file changes Adds the variants for arachnid and moth glasses, adds the code for those in the meta.json files, and adds the speciesID tag in both arachnid and moth prototype files. --- .../Entities/Mobs/Species/arachnid.yml | 3 +++ .../Prototypes/Entities/Mobs/Species/moth.yml | 2 ++ .../equipped-EYES-arachnid.png | Bin 0 -> 3090 bytes .../commandglasses.rsi/equipped-EYES-moth.png | Bin 0 -> 3086 bytes .../Eyes/Glasses/commandglasses.rsi/meta.json | 10 +++++++++- .../gar.rsi/alt-equipped-EYES-arachnid.png | Bin 0 -> 3036 bytes .../gar.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3054 bytes .../Clothing/Eyes/Glasses/gar.rsi/meta.json | 14 +++++++++++++- .../gar.rsi/super-equipped-EYES-arachnid.png | Bin 0 -> 3046 bytes .../glasses.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3185 bytes .../glasses.rsi/equipped-EYES-moth.png | Bin 0 -> 3097 bytes .../Eyes/Glasses/glasses.rsi/meta.json | 10 +++++++++- .../jamjar.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3176 bytes .../Glasses/jamjar.rsi/equipped-EYES-moth.png | Bin 0 -> 3190 bytes .../Eyes/Glasses/jamjar.rsi/meta.json | 10 +++++++++- .../jensen.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3186 bytes .../Glasses/jensen.rsi/equipped-EYES-moth.png | Bin 0 -> 3140 bytes .../Eyes/Glasses/jensen.rsi/meta.json | 10 +++++++++- .../equipped-EYES-arachnid.png | Bin 0 -> 3168 bytes .../mercglasses.rsi/equipped-EYES-moth.png | Bin 0 -> 3124 bytes .../Eyes/Glasses/mercglasses.rsi/meta.json | 10 +++++++++- .../meson.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3207 bytes .../Glasses/meson.rsi/equipped-EYES-moth.png | Bin 0 -> 3157 bytes .../Clothing/Eyes/Glasses/meson.rsi/meta.json | 10 +++++++++- .../ninjavisor.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3186 bytes .../Eyes/Glasses/ninjavisor.rsi/meta.json | 6 +++++- .../equipped-EYES-arachnid.png | Bin 0 -> 3268 bytes .../outlawglasses.rsi/equipped-EYES-moth.png | Bin 0 -> 3201 bytes .../Eyes/Glasses/outlawglasses.rsi/meta.json | 10 +++++++++- .../science.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3174 bytes .../science.rsi/equipped-EYES-moth.png | Bin 0 -> 3146 bytes .../Eyes/Glasses/science.rsi/meta.json | 10 +++++++++- .../secglasses.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3095 bytes .../secglasses.rsi/equipped-EYES-moth.png | Bin 0 -> 3067 bytes .../Eyes/Glasses/secglasses.rsi/meta.json | 10 +++++++++- .../sunglasses.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3089 bytes .../sunglasses.rsi/equipped-EYES-moth.png | Bin 0 -> 3080 bytes .../Eyes/Glasses/sunglasses.rsi/meta.json | 10 +++++++++- .../thermal.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3151 bytes .../thermal.rsi/equipped-EYES-moth.png | Bin 0 -> 3148 bytes .../Eyes/Glasses/thermal.rsi/meta.json | 10 +++++++++- .../equipped-EYES-arachnid.png | Bin 0 -> 3136 bytes .../beergoggles.rsi/equipped-EYES-moth.png | Bin 0 -> 3096 bytes .../Eyes/Hud/beergoggles.rsi/inhand-left.png | Bin 0 -> 375 bytes .../Eyes/Hud/beergoggles.rsi/inhand-right.png | Bin 0 -> 379 bytes .../Eyes/Hud/beergoggles.rsi/meta.json | 18 +++++++++++++++++- .../Hud/beerpatch.rsi/equipped-EYES-moth.png | Bin 0 -> 3076 bytes .../Clothing/Eyes/Hud/beerpatch.rsi/meta.json | 6 +++++- .../command.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3112 bytes .../Hud/command.rsi/equipped-EYES-moth.png | Bin 0 -> 3108 bytes .../Clothing/Eyes/Hud/command.rsi/meta.json | 10 +++++++++- .../Hud/diag.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3113 bytes .../Eyes/Hud/diag.rsi/equipped-EYES-moth.png | Bin 0 -> 3111 bytes .../Clothing/Eyes/Hud/diag.rsi/meta.json | 10 +++++++++- .../Hud/diagpatch.rsi/equipped-EYES-moth.png | Bin 0 -> 3074 bytes .../Clothing/Eyes/Hud/diagpatch.rsi/meta.json | 6 +++++- .../friedonion.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3286 bytes .../Hud/friedonion.rsi/equipped-EYES-moth.png | Bin 0 -> 3215 bytes .../Eyes/Hud/friedonion.rsi/meta.json | 10 +++++++++- .../Hud/med.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3101 bytes .../Eyes/Hud/med.rsi/equipped-EYES-moth.png | Bin 0 -> 3109 bytes .../Clothing/Eyes/Hud/med.rsi/meta.json | 10 +++++++++- .../medonion.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3303 bytes .../Hud/medonion.rsi/equipped-EYES-moth.png | Bin 0 -> 3217 bytes .../Clothing/Eyes/Hud/medonion.rsi/meta.json | 10 +++++++++- .../equipped-EYES-arachnid.png | Bin 0 -> 3319 bytes .../Eyes/Hud/medonionbeer.rsi/inhand-left.png | Bin 0 -> 583 bytes .../Hud/medonionbeer.rsi/inhand-right.png | Bin 0 -> 591 bytes .../Eyes/Hud/medonionbeer.rsi/meta.json | 14 +++++++++++++- .../Hud/medpatch.rsi/equipped-EYES-moth.png | Bin 0 -> 3072 bytes .../Clothing/Eyes/Hud/medpatch.rsi/meta.json | 6 +++++- .../Hud/medsec.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3180 bytes .../Hud/medsec.rsi/equipped-EYES-moth.png | Bin 0 -> 3189 bytes .../Eyes/Hud/medsec.rsi/inhand-left.png | Bin 0 -> 481 bytes .../Eyes/Hud/medsec.rsi/inhand-right.png | Bin 0 -> 488 bytes .../Clothing/Eyes/Hud/medsec.rsi/meta.json | 18 +++++++++++++++++- .../medsecengi.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3242 bytes .../Hud/medsecengi.rsi/equipped-EYES-moth.png | Bin 0 -> 3233 bytes .../Eyes/Hud/medsecengi.rsi/inhand-left.png | Bin 0 -> 509 bytes .../Eyes/Hud/medsecengi.rsi/inhand-right.png | Bin 0 -> 517 bytes .../Eyes/Hud/medsecengi.rsi/meta.json | 18 +++++++++++++++++- .../Hud/omni.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3294 bytes .../Eyes/Hud/omni.rsi/inhand-left.png | Bin 0 -> 584 bytes .../Eyes/Hud/omni.rsi/inhand-right.png | Bin 0 -> 594 bytes .../Clothing/Eyes/Hud/omni.rsi/meta.json | 14 +++++++++++++- .../onionbeer.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3256 bytes .../Hud/onionbeer.rsi/equipped-EYES-moth.png | Bin 0 -> 3192 bytes .../Clothing/Eyes/Hud/onionbeer.rsi/meta.json | 10 +++++++++- .../Hud/sec.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3108 bytes .../Eyes/Hud/sec.rsi/equipped-EYES-moth.png | Bin 0 -> 3107 bytes .../Clothing/Eyes/Hud/sec.rsi/meta.json | 10 +++++++++- .../Hud/secpatch.rsi/equipped-EYES-moth.png | Bin 0 -> 3075 bytes .../Clothing/Eyes/Hud/secpatch.rsi/meta.json | 6 +++++- .../Hud/synd.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3133 bytes .../Clothing/Eyes/Hud/synd.rsi/meta.json | 6 +++++- .../syndagent.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3126 bytes .../Clothing/Eyes/Hud/syndagent.rsi/meta.json | 6 +++++- .../blindfold.rsi/equipped-EYES-arachnid.png | Bin 0 -> 3138 bytes .../Misc/blindfold.rsi/equipped-EYES-moth.png | Bin 0 -> 3121 bytes .../Eyes/Misc/blindfold.rsi/meta.json | 10 +++++++++- .../Misc/eyepatch.rsi/equipped-EYES-moth.png | Bin 0 -> 3056 bytes .../Clothing/Eyes/Misc/eyepatch.rsi/meta.json | 6 +++++- 102 files changed, 306 insertions(+), 33 deletions(-) create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/alt-equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/gar.rsi/super-equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jensen.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/jensen.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/mercglasses.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/mercglasses.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/outlawglasses.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/outlawglasses.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/science.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/science.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/beerpatch.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/diag.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/diag.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/diagpatch.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/friedonion.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/friedonion.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/omni.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/omni.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/omni.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/onionbeer.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/onionbeer.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/secpatch.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/synd.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/equipped-EYES-arachnid.png create mode 100644 Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/equipped-EYES-moth.png create mode 100644 Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/equipped-EYES-moth.png diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index b20083c044..62ef0c83f4 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -122,6 +122,7 @@ rightBarePrint: "footprint-right-bare-spider" - type: Inventory templateId: arachnid + speciesId: arachnid - type: entity @@ -131,6 +132,8 @@ components: - type: HumanoidAppearance species: Arachnid + - type: Inventory + speciesId: arachnid #>88w88< diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 79d7953b87..3fe77f0fc3 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -119,6 +119,7 @@ state: "creampie_moth" visible: false - type: Inventory + speciesId: moth femaleDisplacements: jumpsuit: sizeMaps: @@ -135,6 +136,7 @@ - type: HumanoidAppearance species: Moth - type: Inventory + speciesId: moth femaleDisplacements: jumpsuit: sizeMaps: diff --git a/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..cffa5c57a4ac2bb3a514126bdf3d4c70b44fada3 GIT binary patch literal 3090 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01FZT01FZU(%pXi0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600ACJL_t(|obB4NZNo4Sh2gs~ zjuW|2GKGtbkttjR$PjYli70Jx=>jG}5QL`q3jePnROlW)fNV(5Onc-w0001>?jTJU zKq)1kU*GL=K6$%7px@#7H$X(J?!K6rW#+YAZ`<~CK*ujBrL48qA9H^D{#UvH_I+O> z!ZP#Pu4e#@PS+N2_cSxhOmEkNyG;p)AOHXWpza_I00000fVzV;000000O}6X00000 z0H`}i0{{R30HE$54FCWDFb1HMlC{<;7o;O+-31U4>*tT$ml+QwUfynbIiI|peb2Rg zH^BD?3GSY%EArmQ5oQCoz)XOVvp56+0001W2WbER0002g9i#yO0000`caR1E0000$ g-9Z`v0C;eK53;l!kOog#DgXcg07*qoM6N<$f>S58c>n+a literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..b7908e59422a69468e14a19060eeeb0a1e41f5a7 GIT binary patch literal 3086 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%0Dy!50Qvv` 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R16008nyL_t(|obB0B4uUWcgyG!- z;$iiG>w_e;iA36NoizOOq)6K7X8{vEBJ9p_09FQY4~y`jA%*}F3aE1p;B29-$9vN{ zUc>pJej298N6kVy=)%m4rY07*qoM6N<$g8V<8^#A|> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..159e4a366af9d229f04ba1a9babbbe61315c8d16 GIT binary patch literal 3185 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 N>S{fP{Hx&@^f6 zXi@@54ZTQ_E-Enz5K6$103tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUF zWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|> z%+C|c55>;RS}qbKr-&IQTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bfe_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l9 z0Z_aBhs|Iw0E)7{bq;-T9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL z1(`yIK=_}U_z%PWq}jQaiQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{w zo%_#%{(V=tO#a9gB!7-$M?^BX5>d|Vn*3S!?g~$*UQipUPL&zMmg;!4Do9IA%up=Rh? z=qPj=x&RGBx1dpI68aT-2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3Oju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvD zRIYI4MQ`g1<+DyrL=EogS06Xii({| zv`U^zjmmKqDIK93(F5q|^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6b zsWa4l)YH_rsduU0(?DsMX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5 zoYvCT^3%%Fs?s{6^;Da#?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR z{dFa}^}2()GkV5)QF?`X?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJ zuZ@h2VvIHzbs0S}Rx=JT&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lg zhs_<#1?IcWhb_<+P8LFo28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wu zZrx~o$A)4PXj5p@WAm%6nJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVP zgQJ7Uq0M2^(ZDg$vDWbhi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%56 z2@eae34a)26HyS+zks@6$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWk zUW(I*6U24LW8oFzvR(TOpM zEs5_rp_~TJ^wNN(wM(bCZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f) z7E}wKr~0SXrM^xJP1~RLDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N z5;bK**^9Ef#WdN^)PTf9vR*Qp{o-l7 zTcBI8wqSIn=gRt3(5j`YdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7w ze(PI{6^cd0H#WFzsN0CzDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8 z%%N=0R?Jr6*6Z8cw;d=~F3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~Ee(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H z9s-9XhaP{M`0e$>L5F*fu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe z@An_mJyvsE<#^c%!il02pHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf z_v}A;-u3*k3(gmgUSwVDy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+f zub#UWaP88_{E^}7QP*$YNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw% z>L5Kn>ODH}V8MesW8ASPKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j z|6Kdbc>FRj6+1QlT=e|YubW?}zu5oM?q%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600AXQL_t(|obB2%io!q`#qm!G zcD5h5*O4~Y`wsEi)D)(L4>hML|hh0jCr8{*CjCXJ$?*nGNYWc zeR4(s004lxgEXxHw&|S8ScGQ%Hl1@Bi|c-UmK!3i0XBzInoY-6#v-`8Eq6c1*>oIg zgqH)jd#KT0P6GqV~Y-aLmg7Vm!o-YozC0002$4$=Ss0001}J4gcn0001> z?jQ{S0001hx`Q+T00000>JHKX0002}0Mz#eVlSHwIO{0@cfT(F-v1s~i?7h-AAQ@I z&8+6#Gc!8_++Rr898PIHpA2#W?q_wq9AU;c000000001W2WbER0002g9i#yO0000` ncaR1E0000$-9Z`vJ{{l!6YK|&5;4N800000NkvXXu0mjfWy7-2 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json index 1d659eee14..ed6ea14cdd 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/glasses.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,10 +14,18 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, { "name": "equipped-EYES-hamster", "directions": 4 }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..6208dd5c7852241d9692e536733cc1fe3d2349db GIT binary patch literal 3176 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 Hpd$VUM6TX) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/meta.json index 1d659eee14..ed6ea14cdd 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/jamjar.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,10 +14,18 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, { "name": "equipped-EYES-hamster", "directions": 4 }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/jensen.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/jensen.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..496addd7d1d3ae9748367ab698d767c2a4b25ff5 GIT binary patch literal 3186 zcmV-&42|=NP)f6 zXi@@54ZTQ_E-Enz5K6$103tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUF zWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|> z%+C|c55>;RS}qbKr-&IQTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bfe_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l9 z0Z_aBhs|Iw0E)7{bq;-T9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL z1(`yIK=_}U_z%PWq}jQaiQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{w zo%_#%{(V=tO#a9gB!7-$M?^BX5>d|Vn*3S!?g~$*UQipUPL&zMmg;!4Do9IA%up=Rh? z=qPj=x&RGBx1dpI68aT-2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3Oju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvD zRIYI4MQ`g1<+DyrL=EogS06Xii({| zv`U^zjmmKqDIK93(F5q|^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6b zsWa4l)YH_rsduU0(?DsMX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5 zoYvCT^3%%Fs?s{6^;Da#?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR z{dFa}^}2()GkV5)QF?`X?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJ zuZ@h2VvIHzbs0S}Rx=JT&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lg zhs_<#1?IcWhb_<+P8LFo28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wu zZrx~o$A)4PXj5p@WAm%6nJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVP zgQJ7Uq0M2^(ZDg$vDWbhi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%56 z2@eae34a)26HyS+zks@6$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWk zUW(I*6U24LW8oFzvR(TOpM zEs5_rp_~TJ^wNN(wM(bCZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f) z7E}wKr~0SXrM^xJP1~RLDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N z5;bK**^9Ef#WdN^)PTf9vR*Qp{o-l7 zTcBI8wqSIn=gRt3(5j`YdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7w ze(PI{6^cd0H#WFzsN0CzDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8 z%%N=0R?Jr6*6Z8cw;d=~F3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~Ee(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H z9s-9XhaP{M`0e$>L5F*fu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe z@An_mJyvsE<#^c%!il02pHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf z_v}A;-u3*k3(gmgUSwVDy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+f zub#UWaP88_{E^}7QP*$YNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw% z>L5Kn>ODH}V8MesW8ASPKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j z|6Kdbc>FRj6+1QlT=e|YubW?}zu5oM?q%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600DkUL_t(|obB4bO2c3j1@QYV zB6V;P{4?hTTCxa=LlsFUp_J{xE$>A(jvvhB?xLPX3&oj${}uuefB*zQcYuZf1Rwwb&>f&5009U<0CWdv2tWV= z5CGi)8Uhf200cmHfQA4Bumt#eFW{)xw;A@@dfUB|!<%>OKhjPn;PbtJ^}|xc!6;u75Z?<}KP*LD-Xw4dA^?WHwq~_3lL7&V!a%cHm`TYTAYNcu z?Te&9CZO4`lD*ylh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/jensen.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Glasses/jensen.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b077e1a587a602b321dd210ae4728f0a1452ca GIT binary patch literal 3140 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%0Dy!50Qvv` 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%0Dy!50Qvv` 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 K!2VT7g#HhhEXnl% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/mercglasses.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/mercglasses.rsi/meta.json index 76e39a32d7..2920878472 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/mercglasses.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/mercglasses.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "modified sprite from Jackal298 based on the sprite from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "modified sprite from Jackal298 based on the sprite from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,14 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..e558e6e3c31f36b44bd2cace4c714d70a319db91 GIT binary patch literal 3207 zcma)8_dDB-9{t)y%@|E7p;l|B8oNb;phk#28cnU&isCgx?Clz@J!^AS6}4*BE)lCr ztM-f9MUBw9?muv!`@{L1^PKa`d7ksjC(g(~n~C8z0{{R_I!J`^HLLv>H)yYKwTsun zHBmdM>#GAm{l6G5?P&mjLEZ%pH}W>t)_~|}!eO$CFqkA%N)`Z+arqg3Xp=dv7*dCP zhfx}9{L67yXJbkvQwK6t>b@*Jt8RA+AP7UCaR^ju`3J{n89L8v!HXXP_KCTR{HGzVg&m~tPW$+oHX!9Pg688B3wpxMVhfJtjsDoA1Sbp~ z#mxhN$_-e;H8f~&ooP{KQwGl_x@CjTxI5aIA?FwOryeKv09S=CTP+1;0i&$Mjl;7! z8!-2wUgoBq{+(eL8M+5X@SpXbn1^ID0dLD4n&!wc?k=2w z?KXu``|lVcMjD8J*XhfQ_u^{{wlnTqk#G{PnV+}OqbPK}C%w5(E@TdcKMf`scYfdh z$KL-aT_Md!7H%i+;TTws=o=ba!JXe+FN`_kr~Bi}$HjIj)EO)NQWG&!{si(Qqse** z6ibt>5v_Jsm~+O``=@lSH6!lp8QXY<1!bAQZM6_SKkdc5*JQDCHo4rW)0j8qX#bsGItIH(Lw9vP4Cx zE*4Aeg^^tf=SZPIK)5*wO+~j}hSy?5D`|a;*yJK$xLZD9*d;jyI;pS`4D~#Pu?%wo z;obqms2Xcz)DSDDaf}ZHKE(Sj$|8kljfw`&X2kpQhA>9u9M{@TJA3zoOrNW!LU*V{NS@$9h zdo!2VEEpb#Rj?6Q*_2)<$gpvJ)Y3@x7oukqs7YZjrF2pIn!;Dg-x`lhtr)WApw-lr zHG1-r@e@C1)XM9OVzXjcNi~YjD8KU2wCS|iUktz4^tD`H6DP(t0Urq^aDIZ6mU&U` z_?^v$O}1kNGAC_BF*Z>)`Bvx?UJ=d)$_8))&s4Hv6nG%fzP#Sz-%2yQ+wn~OFWx?L zlYP$+#2UmNM5COHkGQ+ygL|*=)JDZ1R=m%2$qFZmGsl5iz#rHbSoafI`i~Aqemb0K z1+#?Qc${1)AO=dLe-nw+xNk36oHnkdpx2`3uP(&?E7qV7_nOcWZK0!rP%-2c?i5BL z9fe@`!h{6e1$IUA1-}b+K+=b`p0m7Av3#GVw)uBfokg)f!VCGcirsD)8CTnfvMNKD_@IA8Pc}kL=d={jitvDj7YTX2&XOw2WofsoI&Sk)*kwBZk^MrjWJ-gS`hE7u2kC-+XH~gZ)#|h)R#it(=do!Z& z{K@nzjCJ&(x9mYE)`>1c8)i5>gQiZfLvTcJACZmFc^z27Sps^UTk>?!fAHlX5?lMs ze84V#Di+k|JBVE^S}a(R1CS^XwJT{MA$Z*R)25 zx1+^wB(qVo<(cho^UZg}%%w=u{NMQAb$HWZwTF{4l{0rf7}=YnniJmYz0aVOh7x7}%5!&P~AhZL>SUGOW>-l0{F;f-mNR<_*(7sv;%#9zFc zGViD>Xy?N1P7YnBE^nj0crGAY1UiP>&o|A;wHwXe9;A6oZ*F|^TES#T{6)?wPl(*_ zdfP3C>Z2`Hr2|Y)gfe!%Ui7iU)p5v&O@VX!{>U-J(cN#_gCclQ>Bn|w{+Bv4>Dd+i zkHxQSE=Jep{JQ)vp)#Dx5C7O4UryEKKCSGUy_(!}*!P(|{%sDfbF|C+fC}|qlH7K` zYR~cmJ!svp-xq(J6|#AL>-gthMWSJ02-Rui(Z%3|vj6o<3Be+b^#LGI1ONz;06@OB z2%7-lD+2&q7ywYp0swAYUK>i~I-tiPExiGNx$D26P@pjpx;A-yG%b8gJRN=f>|Zzl za0fT<0B?wikMDCAPYBx6)2*jsIT!#a(sdB(X#c$3uhNFSMjSK;4b)8{u8>g-O#S0K zLO3;C#;^z$wtQF3Uw{#Gz{DEcg8;Dx1H3N6Rq$}z`>eS=H+zt6DJeU}T3SZm$$|Z2 zsNYzFP?x$NL@-u{G|WZ-s8jYJIembYYr_tn)|A7GVD_6&zboR=f^YG9fZdp}p{vf# zqL)zME$9ukDaV95zu{IbEnt7kipCjsyZp=UGuFYYz1HLiw9 zMw-0LH_&tSoOOebXh!z*4HO3j@V;&&80U@x8A1!@19Wo%7-M^+f4E(xjugNdo`?ofZOac;za8b&c}smb$!{xiWGm zRb5p8sQQQY+@1meXk=VqFnupWO*I}Zb(l0nPFh+FDh>evL{w&qx3SR_TLht1rd28R`iG|mo!gIJhSYj1lbQp<2)jByCKK=s5 z!jYo&v>ZJ9(RUl4KFfU^_&mFn@Y87^I9*{_={_#l9OYV6A1$&@vi zy7;2jAwI^y7aFm8*klTlbDuM^Rh8B=JOVdJ&adOOU zv59tI_LXZVP0%($hY++@xJr-5QWZGhku)HjG%ddDW%Sfl%ppk_8Z5Tx3(O(NiP$3djaw-4Q#>qkA+m0Y7~$r^3fQcZ z=(k)%;O!)U=;}5MJ@y4xbAYX3*Mg{%NZItXwGK)4^E(o&+r(`8AlTyof??aw?O*mj z`^mCNXb8+!#@*4c5Z=`{w17IjzMLI#!cBFF;bLPt=WmOYc&!c}D16BCFs06_4-`p} zrWUSplKt+4q4P3-swpMv`w7!JrF$w2Mo_3ccJ0K*&^sj6@! z`3pP9Trf)l37m(W1y`4I<8^Skolr3)CWlEXL>hGi{mNlZN|s9e)qoxOG>M@keHQM{ z4$YtnV`x|(BdcKqng`a$SsiAcz_CO|0b|nVe0@y-riLJ8Rawt5Eaof?U(0n|wOSQM z-)sixU=2A2&dfwsKdRf3)P)_El}xS_HFkQk*WyFjJNkE^vfSdq4ef7GWC4s@p?aNf z=a|fClwTDw;TW0Z-^WNYv3=H1OZ4HVX5uYNV9qCXQTd+0mCxN2jYur&vtprCSBL07 zd`n>B3VeM+uru5@0h0hNAc@q=-bap7k)hfKN}&)?%mhE@Tzs603`MqI-zCw=(V zYRxLsfh>`gG9=d_77~9W=pm;dYYk})xQ1gaUM>vW6Kh{sW&S~al5;(puG_Qni7TX@ z#-Guj*`Goo9vgCd0gbAceQd4xC{m=$WX=*Lgfc^c8o?i#XBf9*8M^m(26mAr8UYM} z*OcS4d4)l-)c=Me)b84g)&@R> zk!DiH2gcSPQY*}Jec&$;yCuxF{fMaYE(6N~<2m` zr5*R>1?!z#xf~;8tG^GRM0+BJs9+*yqG!^!CO9EIAyQf~v0Ut1ygQ*i{(VAYe5T~y zICgw&yrIOqWOhu&CDkSL`O>qE5!td`G`(B=0OwXll3c{f^knFLywq(eGv}=_&f$#7 z(aF8BFQcWS@_C2G>Hlu#W|p?X&O(p!=}mfdHFIiUEBQkX;WVAei9^Lt4gsf)eRRj8>j$Bw%YQgx0rbmg(`(j@AT!l4;r)d$;}JG{C#W_k;g9qm4iZa}Y1}fd zM5VX=%`2>Geh!7|gepTYK3Kg&i5G>i>pMzl*{55fUGWYJ9>xuC<{p2J?Mw;7a>r9M z&{j|f-LMB4Fphk}HQV(Er%+Vzwek({ZNt;xTJQbxSo1*d)AJtp`t-i;ML3i{G3&97 z9*YEZVR{`F^A^(=ir9&w(@iMFjt9B2^F+Qyb>A3q(Mj`+wv!X)Zh;H|P3Dm(NR(LA zwp?xo<uAok*sL^#xd<&FCgC(PTl}BU;@b*++Mj1Y4EJ-X^BLFh(#HQlCNV?(IV(Y6fefYw`y&-fmh;3(zp% zN5ZCJs$06HrU>J>E_k&q^xa~LQS!c^jQlYo%QH*T!>(y+Pj^6Q54-=#_LXIa&4^Ww zRb{;$x?trC(PX%^pv=!~y+YhlsjbHY|Eeyu&gFTKaILtgL_m|cqm5po>BzhHRfmD= zRxzy6>fJKZjjqK%BEJiNlWla_DlFCI*6|Tw*D2Q#(Vq2Kc5gd*gExEg82de`7Fju% z>q;;kG@YMZ|1sTgOV~`DAi@2EtGd;T%0aU~{;k5>jgR{FW(Ey0l{(crmSF2C8>D_+ z-5M67eTaxN)AcWR+${Y5wZ*rkVq^E)m}!xTndPy2h21vZ?-Ox|GA}$Dn~Ie?iCctY_pV-i!)t#;Sg`QXNvlB)O%3&qvh<32X8QIzke@{Ikf8dZD&L&d6i3i^w@D7p4wjtAY}eN z-ca_PIXthT9b%8SeQLAOyo4(8Y7fj=q&nl4r@Td}5WyMIETLet1Q)x{ zV|_NbH0Axt=Nu}@s&N0(`rv%5BK>jkr*D5ow~*WDZwD7<;0j0Ew;v6HyynE#-Tt(s zdV}sYZC7oJD5nOlp58dv-71RJ%MK(v4&6WN9Z~SPnv^^a2t!=}@Dl_8Tqpn#uOi$k z0AM5mV9gEyTr!I52HoJS)eISJlR+A4R3K=lEl+^vm){jsA^wzzt*9&rawxyfl z`~~?uZ#&^nWlmX`5+(eT*wqtjrydHY@`qS!L<74=H&;B!mXx_!zH95yj>L{|9>!-!*M%gs(~FX9t<-c(R^jg%zg3)u$YWeKIPzleL7-r6oGL3S&;{n09&v;{o8A)KZ5_OW*7V)Ew0=~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json index f07674580d..a14dc5c61b 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. equipped-EYES-secdog modified from equipped-EYES by TJohnson.", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. equipped-EYES-secdog modified from equipped-EYES by TJohnson. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -14,6 +14,14 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "equipped-EYES-secdog", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c5ced37e5d18c45519cbce80427ea43248529f GIT binary patch literal 3186 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 AVE_OC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/meta.json index f803400908..070ceb3b14 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/ninjavisor.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from paradise station https://github.com/ParadiseSS13/Paradise/commit/ede55cc8f5b50abcd4f51d37779b56853a440a9a", + "copyright": "Taken from paradise station https://github.com/ParadiseSS13/Paradise/commit/ede55cc8f5b50abcd4f51d37779b56853a440a9a, equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,10 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/outlawglasses.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/outlawglasses.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..e4aecd46d49fc7a531db6567a712aa867aa90497 GIT binary patch literal 3268 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 nvYR|h%2NN9`M-nf6 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%0Dy!50Qvv` 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 O0|VVh(0{ezG5-Tga@IKj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json index 541bdfbedc..a68349917a 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,14 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..fc2f8ac113c1a3a2faa7f74c814aa079f9d7849e GIT binary patch literal 3095 zcmZ{mX*AS}AI5+7E$djC$d+Z4b&@q%W-v&0gV1QQ-7q5~>md7n?U6lOxUPh3*|NtN zj6}&+8QFK!P+h(KpYwn5d_U(r&pF@c?UP`B$B>=%5-R`z>_!N< zwbMLth0C}n4G>p>TVvrC>6Oe-$WlZZEWJTIF^0yXVS^qF zpZ3M_3g#F+r~@y)3ECm#FN&OmJuL1desdn@1Zuo9vYbq6l=hbBO*py-Lzf?gf4qXSLajD*@)Y$>e>? zoFiCZL`@4>AlYIzlKWcObX?JRT--hqYMbe|FMBuiIM0<+{Qw$$6FllSzT&$3bzb^Q ziaJkMaykkuKxU@2LA#{TQ8=Smok7gk25{&d6#$YkFTd(%^}tIGodJPH%6$m}mJlQN zcBd5V#)zO%&VlhU2YDWes(7%Jqg8B5CMao{NHirU4U8#rsHR+5QJT#I+Y2o}0^Epa z_Pjyf;8)_Bvuf&Uir#YGU6AQ;r?dQwlgByE(c#-*xCo{17#Wtw4!o>%ZJwjXd3*8! zP8&4l9Y5m;C2~F`s8HKeSYB5JR>|Q9*vg`BC zH?^pR;TTa493im{g9c_i!C7m!~0CJUElqKZBwTT@(+n^!c4?@yp zUT)zjG4dB4*?RleFuz22D%ubZZRN2T-+XrFK&vbY=jMwoZaY@(Cso`LT-+MZlN7o6-x}zp2THJTi`Ay_l+$|Zd`uHA7imjGq*o2!{@ zS2Dky#r95wFJ|R=PN{9FN?DBslX>BbThlhvkiS@uxJ?ZnJ||3$uK_q&4RB$SyaBQ# zf8z35;~Mv&8kLVRsuZ29lzK7zwvZHGBW)wNQIM3X9s?dscByQz`$uC&Xd{t*;L*$b zUP`Z7L%2eCLKrkt@ljV+aM;&s_Z)BDiNDrwv*du4#v-wxR`4611+JZB&Vhs7(LGm+ zK`3V!vvz8+7zC8e@^3Uk@2ZPjX~u+snn|lkpsobZQT&~L?DL4$SUaPe@SA2rl3kJ( z2sa58nI{rr-eOzQh2o#ZJ4G``3?6Vkx@muVLC;63SZqE(Ax2z+-w&Zw7pgy1(?-t5%%*Ey>b=VQYc=)nS6>9Z*n4k0{qeoQ z^g{LZY5X*4x}`dxdXc2#nd=$-@atcjlWMhlI1caBQK9XE4D~qj{7m!>g7Ot*q{lW% zXrf?dYG$AGZmMQVqwL5!|KF|B!kSLlY4mY9hs}_wVM!y5Tt1GDW$nvMAAj-SP^l7k z!~dthWcyKjRQvVd!C;HvnBcA8lS3A&>`#fGm#LjpD@F}QF-8W)I>r|Ey;#{k-ae<; zpRx5R$tm}fRWAC2wV<}wITXiLeQtC;)Kl?QwRf9BJtFX;-$6~UfA$WZyP(pjYNAxD zBnXWoTpnXs?I6U-P4M60*Gpnd61>er%FOHYa!qxZl8cgKlk1Qzwg=k{-1Tl;Z=rg4 zV+wsfd*Fv+?}I$7JV@w++PXZs53dK0KRWI^F1FQ@9~1FD?mj~;pU?rMqQ6A$clUOE z_!SjZ7ByT-aG9FyQJQR+*<(x^WJPO2C3IQ)>u89nd`OR44wTUAW&)Y%p_^F zENJk6a&U>9(zf3A$Z^A|!skK@yrt8}GQcSyH6-ekjuX#WWSBV=T~+N~L)Im_JI^?a z*K^c=@Nz#kK9<4sekRc|Kf&vkmoVtQ*X4{PMC$iyiD40_;p4Q919mbSIUpu-B4T2z^yF=FUrr2O zB$b7et)3AAkv2<}RjQ)u(`187|1SYu*i`Dnq@Ek_ke zR-PNKu(_mH9Rtd9#Oa8B_$z1VvoASTnFms;8YhUNM@5PlRNLIX>8SKR{-E3Wi9@f` zM=^4ar- zqp*#;NqmX=1F9;mUN1hye}v4cwR&z>)|iTz1WF2+)R|l}Uc{{WbWySi$n1Ogj~Pv_ zFULx~h_++4%QG9F=36d9kn%(Ykx#;}I{lc?h9jv@HJ@(2F?T^)v?RSWd1c}NcARr^ zHE(WS$NL)}AySa0A$4wBl^;KJ1a;JJ?#+^Ht89=CCqDJ49YSz7b)2y*HW8nTS3eb2 zF;G1YCs5nljLNE;zW0SKhkbt%PlqR@5(sk7AqOwDEGpmoOu_4nCRl3S@8!nZC3Hnj{@RDB5< z-8m5awxIz z`^lzu(8AGK1KYSjs`CS<&GxU@YQLVak}piBA{vaB88zdC;@TB7owmV6s-Y{1r`aTA zXMIrzKXz+s_$+;S!{P&G0nsYfInwcC&6Zk6Zt?RW&fEJ5;9I^HO?4)oK06T%Q~ufD zv@WW3Yh6oY7u6f3iJote)^`1U81`mO?1#%h^f>(B$|u7iDZI3TwlgL0%xESvuWCU1 z+Hc3xv9EIh-GOINMLx|NzZ?(GNcH*mUUbj?p4xWZ!Ob52M1t$xoS(k22=`l(+wlI~ zksAQI-nP@Qb4@!pZ0*Oz!@cdQWV7Nhx|8UG)1gVt!1GBdibhzP0zj}707OIs0QKC8 zSOWlmMF3bw0f0s>00>|U+AVIL2P{~Gy&nK@bpH{J8iSR@xhaU#x5HUs+;9Odk6Zzm ztCwGppQshi|A8k))Ea~F>aAK11pt~WMsQv0z=ExhNRVJ^Xnrr7%+5S6HvTo2 zk6@DFY(L6LcgV@JjbU`F8}=KQ_uL@=EiQD-mYdgc${TUT-Is;-ykYXP9^IcNuFqo1 efA~Mf?kcd@W+Ix_st~jHCpFT)1OHbK75N{2LbiAS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6fd360da4d85452b93871a8edaec386836793c GIT binary patch literal 3067 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%0Dy!50Qvv` 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a417aed4a8cf2c5ace9b8b49db64f79e1e9cb GIT binary patch literal 3080 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%0Dy!50Qvv` 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 X#qolviGs&7f2!zdKL!7*361zKz1-fs literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Glasses/thermal.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..8f83fc42e4b75d2dea8b0e98ee958daebb0bc694 GIT binary patch literal 3148 zcma);=R4aCAH{ztikdN+QmaO^W~#PYK~N*aEE-j-MS|F3?{yok+M`y><5oqjTD42W zZmHU}Hzk7h(Ldn1uII)1ey;0$U!3#u#2FcA)6?Ff1pt6v2M#m7qUv8=r@FcoE*^7N zxaOp$uLb}$|Il67Q33$1tc!+*k(aTyIpqsW4FajhpdDZvRv zO?G1+pl}5iFtxSn>_jc{Eb^dliLO~7B1da81Mk`S-Eoz~PT)_$%O*>HDZnT*aqW;e zZ4KrakW)6#6>KmZ$owd+KP;&`%x@VEHB0w86nz|YlI6fCe*}$G0uOo(FFEY5%nC0j z$+NU2rlPNRYJwuWVvPpNAq`qZ=Ex8sw0Y}1x zC9A(1_yfPY_AQ2HnJdwx3e#-$fbD!O;w6bRnBz^P{*~89n6gY;{pY_ z8YK3b2TE!ooHd0E#>>GPT3>kcWq1`z_$`%pA+vOZ4CW>_%zi;yj#@ly5Or;q%vh2k zKU8F&c1V>eGOC}6%{T_jtI^N(A<80!bA^IZgV~7d<#j;~bvQYj>QZ4mJ)Io)tMCT5}u}bcxrk7V^%6n zO(~;CFX_JUuthDs$tW@_k}0l0P#fjFeK=t{0eMdQi&%!WeT5s1f{$WsYetk+J7!fAGM8 zs1?K*d|f5EfDZynr1>`zu71}}tSD_nOHQv*&reN&rqf#TNO=waTF-<- z%AeY-qCK%o8jFZ{$T`FbVvmfhFmy0!n(&^`+O*u1qu01!Mmb{aQd)<0j;Ir1i;vIK zt<%ldP5R=&CUU!obChCz;}}Y^BYBe)O~p(NP1`nwCS@k?Ra8%|zV&~5FsVB+GpRK( z_wN1#Zeo0*;hpch`Ega3Oqa+PE6=w_SJA3*9(hv2VA`jzU0AEJRx)fKP1}{8I{fz8u~ZrM zf%m1iVDqo$i01nNy#a`TsDPb-(_DGwaX^@ zGP*h`G3jZd%uR2wGSuuogXFNR`-8R@>M|a(mX2d6Pduyr7pVUIA8rBDH)LvM^`t7L zIH584+e4JAE%+F*5q1N1^#rN}&POcc=~-Q_4#`$yVi96=VlAQtmSBsX$8NQo4J2nb zbe{VUXIx+OQ;@TX^SJ#{WmT5g*N?p?GuDUJ^G%g&J_MY*lY3vocYELQ{O3GR+dJF7 z{*H(!j_5DK+l`HONR8G^9Z)6o(%QQ@=J~2C`pZ}OD6Ae&O?O&u2Yox^;3(6})=L;H z_U}C+9^G0?YT9h_wBE8Qb-&R7YiM;h_O zhOUObQ|;?`6^2tQDWp`JRAUUshii5!^I_nq{*#oJBl62pUs6R2yGgGMM{%$67{^ zmgRwi#&p7mmLBP8!bE5{?1L>ddpW}-{YXew;S`?lnJqXLcr2UW7pE#6=~7n#3J#3{%ZUv)|PG z3f_90z!tCBBP-MB`u2P54CI?!qswktg+7m-pCE@`mEJwwdGxA#8}Sw1{M8fOOj@18 z`=KINg4vMS;?&mn*@oK?b8&(M&v)(*tzOjj+5^e26<=?EGO{yAG$g#&`=Dn9ww|_e zFsiTL#Chxff+v~l2Ua=ml+Ao?@o%Z#KKM3nR&Hu;b?RP?+QSF5lZL5^qvLUzIQesK z87;-ECmjqjK_;*i#b$bDoeZ%QJ*^p=lw#)fAqRmqRSgz zbCbsi#Bhh?5O;ocsl^2T^FFx_=R~w|qpmM50c~2($xpr-6WmGO;(mC`udbo5w0t>m zaPO37T-nUa`lsJC&F8o`paO%{g4~C%yf-&CR>tjH^#b;CibU{&T-BYUqYJl5L;aY&Wl9-g$Kd7cNtu^C(c=rc#XIifNWmwAlsc%LXmQpT8P6 zZ>`R6VaM!@^t>{?wFWPD!mOni2d-fyf2=kBJo}V0So*TY zW|LR>;ij^}KB_Z9(SEi@SjFMbaqy>gzB9X?$YI#go$uOxLO5Xw6`X)1po?}0KkFCZAK_vJ!mj+OD_OmX#XoRIZ6|OE0YteX@NCCJ7Rt9JRJZH z2UjnDFJ2R@_cIqXFA|M*?JQpm0st}#9he%@FL!4~`FWQrQ}iNpqgU#Trl_pcU1K5; zri#=P?x+9Aw8Bfq)~sg0`xSc46W|bu{6Q?oY>;vV%s&orTM$|zQ^so8>qw$<&lq7$39fHr*>q! z)rMaWHc;7uI%AwI;?90&)L2D|;yn8ELzN95mZ0rB|6gv014R(oXCHf6 zXi@@54ZTQ_E-Enz5K6$103tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUF zWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|> z%+C|c55>;RS}qbKr-&IQTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bfe_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l9 z0Z_aBhs|Iw0E)7{bq;-T9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL z1(`yIK=_}U_z%PWq}jQaiQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{w zo%_#%{(V=tO#a9gB!7-$M?^BX5>d|Vn*3S!?g~$*UQipUPL&zMmg;!4Do9IA%up=Rh? z=qPj=x&RGBx1dpI68aT-2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3Oju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvD zRIYI4MQ`g1<+DyrL=EogS06Xii({| zv`U^zjmmKqDIK93(F5q|^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6b zsWa4l)YH_rsduU0(?DsMX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5 zoYvCT^3%%Fs?s{6^;Da#?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR z{dFa}^}2()GkV5)QF?`X?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJ zuZ@h2VvIHzbs0S}Rx=JT&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lg zhs_<#1?IcWhb_<+P8LFo28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wu zZrx~o$A)4PXj5p@WAm%6nJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVP zgQJ7Uq0M2^(ZDg$vDWbhi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%56 z2@eae34a)26HyS+zks@6$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWk zUW(I*6U24LW8oFzvR(TOpM zEs5_rp_~TJ^wNN(wM(bCZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f) z7E}wKr~0SXrM^xJP1~RLDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N z5;bK**^9Ef#WdN^)PTf9vR*Qp{o-l7 zTcBI8wqSIn=gRt3(5j`YdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7w ze(PI{6^cd0H#WFzsN0CzDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8 z%%N=0R?Jr6*6Z8cw;d=~F3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~Ee(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H z9s-9XhaP{M`0e$>L5F*fu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe z@An_mJyvsE<#^c%!il02pHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf z_v}A;-u3*k3(gmgUSwVDy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+f zub#UWaP88_{E^}7QP*$YNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw% z>L5Kn>ODH}V8MesW8ASPKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j z|6Kdbc>FRj6+1QlT=e|YubW?}zu5oM?q%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600B%%L_t(|obB2@YQr!X#_`wL za)Fj0dWpn0=o*`xAY(lAJRO>`Cop!_-k{DcOy~)^MO_*Y^utt<^Az%brWb?J!w;lI z%Dne>&B*`&004CdX`%qORqk)zkG6W=XW=|TztQt&0Owrucz;`%nLWI`wc*_NeK|tM zFYAA|&QITm5)E)Somja$wBdXSfYgcF0$r8+g_+sYYZlJG{Zp^!{y%OL4nY6_06^VA z8UO$Q004CdX#fBK007h-qyYc`002;TkOlw%002PUK^g!603Z!OSLJ>&a6y_XDc3p+ zz&Y2P=4Lr7Iy2jhjIjN@jV^bG_Vn$XYx!t^@IiueuIZPvqQ1aOk$OG%tLemC@E#%d zafDgQGoZ@-&>MkdNw^k=AOHXWpza_I00000fVzV;000000O}6X000000H`}i0{{S5 a4)6gxzA2Exqf6 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600AUPL_t(|obB4dZNe}Z#qpOh zkT+;6I3!~LV>Dwh2aFLIgB+;ZZV)lX$DxfX1yz+x!aMMPr`U)1`KQR2xQGZnatZ(d z0KnbBnrwhwU4-A8IB~K7QcBHcIa`(b+Hg9Y_rr15b?b?`N|K(QU*hxQ z{R;ZG`M;9=1+;Y)Wk1*+i{Uu8fIFN40001hyMr|V00000?he)f00000xI0(_00000 z;O<}z00000fV+b=000000HeI9t*f}#{eUsox(Ohq)b!8Ia<*zEy-tj<`~DrjKAiXc z+%0z!{tYl+EaL5S`q^w<#og`)4A#2pk`c}T0002M-N70F00000cL!?#00000+#Rd| m00000aCfi<0001ZY=8^VSO$>Fr9DRg00002BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107@0g>978JRyuEdhx5Eq~O{or&$BdTnBuhrLE#%Q?4meiDm~6ANu#o9b{ig)8$?8S7l#Z=X4hP!7@Q(Ky zh+?=Sy@nA)?=X*G2GJ+VZtPu|thzGmx6RU9WSYVz8T5bCaF*|dEN4$sY{B@ zGi8oHxv1Fk!(ytG%H3U_kN;Sjzsss`WOdGsZxKl1I`sPY=k@!J32*(fz5Kv-j+GJn zk9i9KjV{RF0P;G+gL?_QAo{@GgHj;6p}N@=L^FJ6%LbAM%ovOAy57)nSht&FHfzQE r>AN|0GyKqDO`Oi4iEwH|GqVjNe>(4kdwSZZL7F{X{an^LB{Ts52(*Cf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..998e23267ef5c1aadd584fa9aebfa3bc548e4951 GIT binary patch literal 379 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%0Dy!50Qvv` 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..f30720160fa89541a29ec58683298dedc0d40cbb GIT binary patch literal 3108 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600A&bL_t(|obB2nQo}$P#qpPu zU?MpM3PdpE3W(kyN5~Bj#Z(hSql&?z>X@lUbBIN>>o6p{eGU76Dzjqe<(Hk9{i+ax zN=^j;0OMZTm3!+I&#}zvVcS@T#e!Ig1CF8vp4HoE0000%zbQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json index 149220d0e4..b79f99ef1b 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, edited by SlamBamActionman", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, edited by SlamBamActionman, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,14 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..2995b25441b2ca71cb01739b43ad6972e420975c GIT binary patch literal 3113 zcmV+^4A%3BP)f6 zXi@@54ZTQ_E-Enz5K6$103tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUF zWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|> z%+C|c55>;RS}qbKr-&IQTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bfe_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l9 z0Z_aBhs|Iw0E)7{bq;-T9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL z1(`yIK=_}U_z%PWq}jQaiQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{w zo%_#%{(V=tO#a9gB!7-$M?^BX5>d|Vn*3S!?g~$*UQipUPL&zMmg;!4Do9IA%up=Rh? z=qPj=x&RGBx1dpI68aT-2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3Oju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvD zRIYI4MQ`g1<+DyrL=EogS06Xii({| zv`U^zjmmKqDIK93(F5q|^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6b zsWa4l)YH_rsduU0(?DsMX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5 zoYvCT^3%%Fs?s{6^;Da#?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR z{dFa}^}2()GkV5)QF?`X?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJ zuZ@h2VvIHzbs0S}Rx=JT&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lg zhs_<#1?IcWhb_<+P8LFo28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wu zZrx~o$A)4PXj5p@WAm%6nJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVP zgQJ7Uq0M2^(ZDg$vDWbhi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%56 z2@eae34a)26HyS+zks@6$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWk zUW(I*6U24LW8oFzvR(TOpM zEs5_rp_~TJ^wNN(wM(bCZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f) z7E}wKr~0SXrM^xJP1~RLDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N z5;bK**^9Ef#WdN^)PTf9vR*Qp{o-l7 zTcBI8wqSIn=gRt3(5j`YdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7w ze(PI{6^cd0H#WFzsN0CzDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8 z%%N=0R?Jr6*6Z8cw;d=~F3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~Ee(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H z9s-9XhaP{M`0e$>L5F*fu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe z@An_mJyvsE<#^c%!il02pHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf z_v}A;-u3*k3(gmgUSwVDy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+f zub#UWaP88_{E^}7QP*$YNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw% z>L5Kn>ODH}V8MesW8ASPKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j z|6Kdbc>FRj6+1QlT=e|YubW?}zu5oM?q%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600A{gL_t(|obB2nZo@zjh2dw^ zI|LQ@1~CdQP0^mAXD|$_&#+ghSy&GcR9~UccPN^I#8L}udoO77v04XKw`~JQFa&Bxd zX)kGz^!olNkCM_AK+@{xFP?xQHzrAMpHK1{f9Z|^e#UD|JyXmz=oJ6}004mK4xs@6 z0001p?hqOP0001h=nkO)00000i0%*?00000fIt1 zz;Ii~PpkMTbzRTiOcx6cfoojn{5v)AUu0Z6~!BBYe;>vEa>GNmX0j{pDw002aH z2n_%L002OAhtL230000)cL)st0000$bcfIYuyufMbgwOtN~#k500000NkvXXu0mjf Dd+x(B literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..60c51d4881a55d1da1b8cfa384ac0d1c29f21dab GIT binary patch literal 3111 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json index 541bdfbedc..a68349917a 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/diag.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,14 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/diagpatch.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/diagpatch.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..f74b6b4687cd6e1e7d25b422e724e60349b1366d GIT binary patch literal 3074 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R16009n3L_t(|obB4t4T3NLgyCb2 zt^qSK2XnB7Yv>wXqrTXPM58Ulqv5|NG$EW{OMPg&l#%qVKH$4l1LP8yDM<317uaK?wrY1+dg{B+3v4|nP&ETyf_nx40002M-N70F00000cL!?#00000+#Rd|00000aCfif6 zXi@@54ZTQ_E-Enz5K6$103tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUF zWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|> z%+C|c55>;RS}qbKr-&IQTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bfe_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l9 z0Z_aBhs|Iw0E)7{bq;-T9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL z1(`yIK=_}U_z%PWq}jQaiQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{w zo%_#%{(V=tO#a9gB!7-$M?^BX5>d|Vn*3S!?g~$*UQipUPL&zMmg;!4Do9IA%up=Rh? z=qPj=x&RGBx1dpI68aT-2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3Oju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvD zRIYI4MQ`g1<+DyrL=EogS06Xii({| zv`U^zjmmKqDIK93(F5q|^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6b zsWa4l)YH_rsduU0(?DsMX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5 zoYvCT^3%%Fs?s{6^;Da#?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR z{dFa}^}2()GkV5)QF?`X?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJ zuZ@h2VvIHzbs0S}Rx=JT&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lg zhs_<#1?IcWhb_<+P8LFo28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wu zZrx~o$A)4PXj5p@WAm%6nJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVP zgQJ7Uq0M2^(ZDg$vDWbhi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%56 z2@eae34a)26HyS+zks@6$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWk zUW(I*6U24LW8oFzvR(TOpM zEs5_rp_~TJ^wNN(wM(bCZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f) z7E}wKr~0SXrM^xJP1~RLDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N z5;bK**^9Ef#WdN^)PTf9vR*Qp{o-l7 zTcBI8wqSIn=gRt3(5j`YdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7w ze(PI{6^cd0H#WFzsN0CzDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8 z%%N=0R?Jr6*6Z8cw;d=~F3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~Ee(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H z9s-9XhaP{M`0e$>L5F*fu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe z@An_mJyvsE<#^c%!il02pHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf z_v}A;-u3*k3(gmgUSwVDy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+f zub#UWaP88_{E^}7QP*$YNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw% z>L5Kn>ODH}V8MesW8ASPKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j z|6Kdbc>FRj6+1QlT=e|YubW?}zu5oM?q%0Dy!50Qvv` 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..5639df89dfa77edaf1f5d2810cbbaee24fbc7239 GIT binary patch literal 3109 zcmZvecRbXOAICq)&N#EnmX%F1lW~XR$aZ#gS!Enf=5g8kXJlobJ-)sYva+({91caY zDnv%+byUCl`}h0f^?p7c&-eSE_kXV>vwH?i4A&U|0AMnNK`s7J`)}xI{>*wW|CK+u z;-O=r0|3qcVZ3yu1^@;XF9^ge(854h&`=Mete~c>ETbr^006M0;@n^>%SEmPLXS$1 zSr%*Zv+2j47L+ii9$2QVqyjywQGW&?tPHh6LCrI(=@cc_uoaNZX5r*G3iIaOD`4oH zKZ=7V*YIH@c=dJY0lsim;5_niX%FF}#{p)c3&^;Pp?+g*OOL&Zv*lRd8cs}0@o=G~ zxOxasc>`;xmKI$ul0IbtWyJeb?*eubcTX3y;ExMQqE_kv@VoR`r=73@V3wb{bwpZp z1apt8Y9fk6+fB#wUn!YP$s0`x+eItdWCtEeJ4BonxUr}mE5_adPXtbFxE+387XOr{ z#@3sf=>q27q9b)G_KG26(1!8aBYvNo!4dbA0g0?-+08)9hu$*CED6PEnNOj>8f^Uj z;jEnPB!PW`Wq4}RUY1RyCJ`*=Xc?cD&7QJOAed~W3{T24tEAo7P`paEj8$H|4eu$fe9tkoyq?i{6h1 zUtB|uvsJUu3J_-%U-z(T=+M~I2I|Mv&C&#t0PU|JelF0ZNN=LtGd<`;wXvXaZkxjx zdm?p#ZoD?B^f`%T@K@zxXKvCG2{fH+OIam!T|1H=kdOok(uY5knm)iVju=q=z^BX< z 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600Hw!L_t(|obB2@NZfE7#_=bq zXHS&#g|iy zYk-4zwE+O7BRftk7E_5t!WRI)&UOWGk&GC-M;RM{Ui4Ip_D!qQLMoLT00;4EV?R`3 zzaE$@0)Uoxp8x=sHSY_6X`0HitcMPuzp^arrq~(ybew)~vK?%$1z%utb}_pF0N~sEa9t=Lo5jJvpO$ea3IKy| zx>ftdI(p{Q*$)5!t3#E=?Gx#LUY+;o0KAR>1Rwwbq&J9000Izz0MZ*oBLD#iKmh3t lq7i@q1R#L)2GMdJ;1WWxS&*kx=%D}r002ovPDHLkV1hA*CWrt4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..046af68f4098e35f8f6d3f7a425010e1008c4898 GIT binary patch literal 3217 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600EszL_t(|obB4bO9F8m#_{I@ zr6C9;P$NOJrKKOVNPD!$4S^i(wq?*k5JV9sI4U$bSkQ2^G!-;S4K-NUA0QZ4K~T_; zxqO?7_WNF+^q%)0@a4JJ9k<*WN+|?6g8&532assBR6Ch8v>o^dXL|KgYu(=-(T?Z8^z0RRx*Xg~UOmw009U<0O<{) z5r6;$Ab|7+(Fi~Q0uVrYgJ=XG009Ufy+Jer1RdZD5<)?cz*wKW00000NkvXXu0mjf Dj8^G) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/meta.json index 945139fb05..fe65d9803c 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/medonion.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by Derby", + "copyright": "Made by Derby, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -13,6 +13,14 @@ { "name": "equipped-EYES", "directions": 4 + }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb90e9dcef5e233377608b202e1e24e1d3d86ae GIT binary patch literal 3319 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600IL^L_t(|obB1aYZGA{$MMgT z)_SJ2X+a8i6{A$Rg45BZ;TEBp6sMw_P!Kdr2VJ^}lOV1RadK9K7AiE=>R{V^QF5=)Od5$M(KJP!^;d3wU$8btS(9bCX5TG{z!Z?;%KCeulYZM@@ zkpS@V{c9Qf@CXwNuZ*5=3}9txM&=fuLchH0`K667Mh^W`qg-_N_73#e$O&91z3nc5 zIF2Qo&7%F{Iu6wU{L+SMl#8w@ghsjO;_yh14-cZ192v*$2w=N@RsdjhY74vDGuWw3 z!O8rBbLynAp^b9UZS5xdr+)(z)0g1;eiz*VO1bq_XaE@5d5((<*HrysD6>m7@;Hk6;}O_g&IkYuo!deX1PTD6D3S;B^H|mT_yeR70SG_<0@&VQH3ATT z00gkT!D<8`009VKdxO;oKmY;|!1e~K5uo1zeglJuP>{TzQ_27U002ovPDHLkV1jqf BF}45z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/inhand-left.png b/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1dcd3639755aa1ee2b3c53001839f8f04ab36a GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107%zFcIEGZrd3(#+o7qu> z^}%MtBo!sEnxzvYL|Fbi2)Vj!*eX0FAu(M`nman0TUz_APDV#9-i5LIHy>5smQ-#9VUSWhD)+8&J5TYQQ|hYxL3V9 zCy;lQPpGry>-DcP#{*-pndH6uBr#9tU*+EO7r7E{Z|ibf9PnNE#XFvZ^5+zUI;6r+`*j=woK1x5ST)P8PoFF$Zx|9a8Bw&$ zeqPV$YbZIcazpXdKv#9 zr`9PpM)bn{+kFQ^c0KdG@;lD*vrbt7+=hjGvqqZ{Zeo-!=4#HCc_1L+awu=1?5#oJQ(IGGBEzLJRp7k XXz_%dA})r&M8M$b>gTe~DWM4f=>X`Y literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcabefc2ab7a673d55bf67ae67e4faa3f35ba2c GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107;kyHIEGZrd3$TWH&dbv z+lS|uP8clGFm5;SXAl9wy4q)zyFO28gDW- z#3#8-n)ubsMIfbW-lgAO=Z)peZSM1zzrXw8YKy>+^A|ZB7?@7HQ!r&wU|{4>*xh_Z zpn-u!q2Uc*kTU}lkS&^T;2ZoUvv|kO(}^|97W@s=KW=IHfouPI_U%dh6Frt>-S1+U zmf9I))-`*#%$9pBMl*RzV#CD_8t@2mwJN+@{_y+P1F{}U54;viGsNk*8XJWY1sIqCd)v>Vt(`Ek|6C$VWxEJqIeVS?Bq0`$` zLr;BI-~PBp`22h87xVAxSs&(a_;PH@i%+`(KIuHv{oiruM#tK6&#g0-Y3^AWyknR3 zL%qC*3qQ17oO<{b14Dt>d@=FxN*>;lWQ%DTyB_XOO7Dy3KY04bk_yM{%gkFIiZ*Xt z9H0K69vB7=3^!$$v;o6_fib0gf)pqWSSH+c%mM|JfI}JkN<}0^1snmd)!J4SvOGu; zcD`y+$CP#VNPubST*j?ANh@aU;&bP0l+XkK%r5S7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/meta.json index 945139fb05..4ea73e3a3a 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/medonionbeer.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by Derby", + "copyright": "Made by Derby, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES & inhand-left and inhand-right modified from medsec inhand-left and inhand-right by HTMLSystem", "size": { "x": 32, "y": 32 @@ -13,6 +13,18 @@ { "name": "equipped-EYES", "directions": 4 + }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..aa34663f1ed360a48ef0a225c2ff241779029e67 GIT binary patch literal 3072 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%0Dy!50Qvv` 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..c5315b10ce608baf40af5c0ad8f2de6cc1f09065 GIT binary patch literal 3189 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 CJLAy+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/inhand-left.png b/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..585b6f76b4a1ae3311145686dbe98ec261a93c57 GIT binary patch literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107;`*b978JRyuG#2>xhF0 z>jmi)>w{s3oFpbJ*t%iDxnrk}RoNXlbuMXtBDb}+eL|MBw)E~s)@)Ud#01W5O?Q>f zYbi7>x+yMqu=;h%j$$L9S<^c?{uLWB2{bTVll5_Cz|L63t+$Cq*`IZ|}YSTPn0cpvmI-hSHk8qP>T*_qqg%?DbwgC1v@Xh4Xwq)|Iy| z%Y3jm+%>?SQIW+mQb)mGpW%Y^!rL|sDZh8`n0x-JIX_Pcd(FS1^Vh{c+)LL~{mJX{ zJ%+>a+c~{Zzf1m-Z-jaby)K&+oKrmi**;fcsY>qcMb+_-^?vI8;RZUKWy8A!DUid7 zWL&V8x~#mI^};MUN!5mDUrwxGXqzD?Dax?G-qy&9;VsA@g@#i0%QXz=C4457#Fp9v PqldxM)z4*}Q$iB}7tglz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..f36ce554dca2a8661ab4a4de279ab6edc682323e GIT binary patch literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107>hk!978JRyuD@Ueb_;Q z?ZNj6c}=TZoH#r#L~5iI7Zw%nlYj8!*@gQT4%$E9-?6j1dV6zIu`0*I1uWqQ*B*W@ zBCs`cQqz6M`{jNQ_CD9!`P5jc$+=IFfstduT}M+E1+0t8;BP>^nB2X5WnZ zSEd%HAA6rP&t4-|EaJLxbH26%hoj#oPKJc7GZwGXipXBetKnH}DD ztfIQAVe2)M*S~(gnXj(UqEH$OG&&{n+RNxJ-FwxUztlZ9l`>ay3p6mWTzI!Yiiuc; z#FwP|o;?x990?~>+}23eF#YmNIx=hTKgL=$!=$tK><_M+EU~d|J1`&|7~b-&vaD#( ZKX}w*g4JgRCSWWvc)I$ztaD0e0st;A#3KLz literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/meta.json index 945139fb05..406659be94 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/medsec.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by Derby", + "copyright": "Made by Derby. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES, inhand-left and inhand-right modified from inhand left and inhand-right from the sechud folder by HTMLSystem", "size": { "x": 32, "y": 32 @@ -13,6 +13,22 @@ { "name": "equipped-EYES", "directions": 4 + }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3a3bb772dec3110aa18341b35119a05d13d9a2 GIT binary patch literal 3242 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%0Dy!50Qvv` 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600FH@L_t(|obB4bO9F8m#_{L7 z)Y*^(HAH~~fyBIQjEG>EGXx-jcL28INGT97o*nQXj_oNxtJM>CC9sue|OZ=n2$X?6Sb9nj=s3$F%I`nqnSMim&9L*IG%(QzKpdTXu0SG_< z?G36CfB*y_fc6H}2tWV=5I}o_Y6Ktv0SKVIK{WypfB*#0-k{n*0Ce*2z(4>vjw65l zEZ=_sX(K330|oc{f;;(lpuYgpMsNW;jmmq?=d-Mu>G)#>}htm001Bsi%Ijf z`KP-N3;;l<5r6;$Ab|D;)d)ZU0uVrZgK7jI009V~y+Jhs5P$##(B7ch&;xt|hyFB> T(~k?j00000NkvXXu0mjfF46#_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/inhand-left.png b/Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f2715db788c7e4c28361a629ff1d0ab5d87e5e GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107&|;&978JRyuD@ZeZ)b8 z^?~rmjaS7Uafd}L?r8ls>4)(VwW-&_l$LB1;GWI8anrRdsgLP9n)iw+NiplK&=y-+ z^Kk0~lcpUh={s4@zhrt?^i0`j*6U7=f5kRT0u2neWJ8=8uru=1-&Ha(nB^#OFs;8` zcrA)^*2C|ImzCJQPoKjik$mKPEz57kxMHG>M z>pMsPyz08%r)_kr;^$|EpVi{-$Ae;TA2QfhOL@jUa@D_!9%~ztSoEh zmBmc_+$h^~)=zo%?2@ACf5iT=ayT$BWt0c-G7`_wkP*MFyp*+It8I`M!*n2%>BZ4+ s9xE9bz606J1+t*PVY%>b!7TmVH(e%t*|p*@FzOgQUHx3vIVCg!0IFuk1poj5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/inhand-right.png b/Resources/Textures/Clothing/Eyes/Hud/medsecengi.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..07867ab6bead602534b675244ffc7fabbc55019c GIT binary patch literal 517 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600HVrL_t(|obB1aYZGxC#_{KC zLahnW3N_# zkpS?uz9@aGPmsR5VD7&8;mt(cd4* zJ0Pk$<}(;o1Rwwb2%x<|H3ATT00hw9pc(-PKmY=0Z%~Z@1Rwwbv^S_m00Izz0NNYc zuASfV9S=~Q%FE!r*T{4WKp2MNIL_Y5etU64wtvR4vD3n>hadhMp`!qr&8D2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I107%zLeIEGZrd3)=ic5|W( z`-k^APTIMh6HUA&|1nBWyTbR6fnAr~+*;Fehs7=n56iP>9rJ-=?Nd$meCF@bJUjb{ zM|76r?Bk(an{D&`{eRcJum1JVuDa^p>GO&$4$8+J8JGkdO4*kxGB9#DFkF?L(#F7| zz`z(%9w5ae(7?blp(^20trnYmTfy$Bt`;(7SE}b_&RSG%*m3#{>!PI_cb)$&x00bP zvBN>3At+?Q=ELm%r&#yjk1x(Vy~)Ke=-A_6xpzyLcgFB-jPTKF`XZem(Kh4895=;y z28N0ty*qD@3Pf41+*MIk8}sFil!n_W28Q+LyB{xQetDSLY%gQ{|DEf$7VoKfv#2_4 z`KsFqk<)hEpYI-hSw=3bed(Pg_mgfbXUtkwu-v$y>h{B`yKWmp4!-#GaK7`LTp!N< z+nq(PnY3Edr#LAG-J3K&>2_>nqy@MNj~6EZEh22^0Vd4X^mToPnX#z_7|%gBKJ^Oe@|kFhMACNN13|t$d5= z#4Wjtd=B5fb%ZgL<@9H;CL9Mb8~(f%e9OSF^R{vn(+M6%jtdVM=CA!$GGU5sxjZlx OFnGH9xvX2BR0prCY# zYeY$Kep*R+Vo@rCb81d;WwAnVNoh)EzCuWTe$K(=4{I1081H(zIEGZrd3(!O+a*wj z?Zfj~g0n8&d7_)?bLs*2jDsqs-0}yUCb!CJt8z#mx=9){J|g=JZZZ1z5@nc zkJSv9%)HXVbKFbwb5(lLxhIv^%0K?8zgzt-@{g$^%fDh1CV>WqP1YW~j2sROOefwc zn6fA^FmfpDZoUGPU{P>5$nJAlB=)mi%rQNIQ#{%AS5B8HtqZ`k(dEGZViH?71f+oWEjyWdqxu z#p&-1-t+8X2l;x!UB@g?a0ob*v9DAF28RQ~P1z-Fz~EqDOevor1qw5mqS*{j^O9Cb zMKhF{8HV(}HD7SYmnSs%qGZ51wYF6&e+cN53Oip7d8!|9T3R)fSz}x0!mJ8@pgI4{ b4~Q3iEu9c|a8(^JJurB>`njxgN@xNAJCp3t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/omni.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/omni.rsi/meta.json index 945139fb05..b12ad8543d 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/omni.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/omni.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by Derby", + "copyright": "Made by Derby, equipped-EYES-arachnid motified from equipped-EYES, inhand-left and inhand-right modified form medsec inhand-left and inhand-right, both by HTMLSystem", "size": { "x": 32, "y": 32 @@ -13,6 +13,18 @@ { "name": "equipped-EYES", "directions": 4 + }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Eyes/Hud/onionbeer.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Hud/onionbeer.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1c8c22bcf4c91f28ee908efed3f4b79b49eb0c GIT binary patch literal 3256 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%0Dy!50Qvv` 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%0Dy!50Qvv` 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..8bab42c90a35444eac0451b7c23925203d14f235 GIT binary patch literal 3107 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json index 541bdfbedc..a68349917a 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,14 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/secpatch.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Hud/secpatch.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..5cbb04f39960faa53c8b990a26095765b8df62c4 GIT binary patch literal 3075 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%0Dy!50Qvv` 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600Bu!L_t(|obB4NO2be9h2fLI zsRbPc3+)?-6rUhthk%`Z1p}RZ2BAZqK-UTtI_3$ah`U2NxGS`i!*wVPqEn2QgY-X3 zAeZDGzT{@PNkRzP=Oh3C0D!xLHH`trSr#PeZN09~9d*0v4+grKPLsc_7e9>vCV3uK zRi&5f2VD#=>+|=^Tcvkbk`xtTH~;%)^JDC=)A`jy_*Vci!V=&k2mk=?4%Pqw0002E zJ6Hn%0002s?qCf70001hyMr|V00000?he)f00000w7S7K%fi=<(y}b0Zjh#F8l>%p ztR&6m^H%dU2AJe|eZi`#w#U({KF*esr04Sx72xzS36ga1G*o|aB1t;#_3H7WDB}Ge z@IAY&ayLMmw}2(UM-Tu2+#Rd|00000aCfi<00000z}>+b000000Cxv#0001h{Ra31 X6}~2r_c!=_00000NkvXXu0mjf@Q~1L literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json index e3bc1a2940..965ef0ef73 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by IntegerTempest", + "copyright": "Made by IntegerTempest. Equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,10 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..9952ef5d1ab25b238b9bdd1f03186d8b7fdcb309 GIT binary patch literal 3126 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600BZtL_t(|obB4NO2a?^#_=z6 z3pzR!+QFqSptEEZ0_}rD`xH(>hk!3(Xu&l&+ZX8KkiLOJJD)>o6rEx`KBWI|%#qy3 zFS%PTNeDs5oCE*>0C0D(rZvDc%Yr1mZMV&}(|%vW(Mb36dGfdQ;-?kBEYHKHu2tUM zNaM@Tf%S`S9~P1n72z=d`)>DR?4;NG)l2wS05QT6U=suY0Cxv#000000Nfp{0RR91 z0C0D(1^@s60KnbB8UO$Q004IfYXATM0025YV47v&>p^K%RZ$N}(=-jz{yXqrIF}@a@l{lSWc|FKfAy+K`6Nj?8w{H9qA241AMibgqjEPu zm#=^&z$OR)0PYUf000000Ju9?0{{R30O0Om4FCWD0D!xLH2?qrz;Oe70IfzMkR`2I QS^xk507*qoM6N<$g7#m`Q2+n{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json index f3acabcc54..2f5d6433b7 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by IntegerTempest, edited by Golinth", + "copyright": "Made by IntegerTempest, edited by Golinth. Equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -14,6 +14,10 @@ "name": "equipped-EYES", "directions": 4 }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/equipped-EYES-arachnid.png b/Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/equipped-EYES-arachnid.png new file mode 100644 index 0000000000000000000000000000000000000000..7972627ecd833ec2a36bc98fd54f3c4af53b6269 GIT binary patch literal 3138 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/meta.json index a89a8a1240..d9de686928 100644 --- a/Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Misc/blindfold.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem", "size": { "x": 32, "y": 32 @@ -13,6 +13,14 @@ { "name": "equipped-EYES", "directions": 4 + }, + { + "name": "equipped-EYES-arachnid", + "directions": 4 + }, + { + "name": "equipped-EYES-moth", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/equipped-EYES-moth.png b/Resources/Textures/Clothing/Eyes/Misc/eyepatch.rsi/equipped-EYES-moth.png new file mode 100644 index 0000000000000000000000000000000000000000..f15d809593b10620a85abcd4ebe20f2df205c7cc GIT binary patch literal 3056 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01m$Z01m$aI0aKA0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R16008_+L_t(|obB4t4TB&Qh2hHp zEWiTnKaLBq00Yn`EHO5%Ks+V>=gFEFj~{3sz?D+$$#DPx0KlaSLI@?LB^Fu!I9VB0p?h_^G(tbg_`3(%%_^vx!G1O6qSUX5?zUjP6A z08n?31^@s606^VA8UO$Q004CdX#fBK007h-qyYc`002;TkOlw%76j;B2RutRKrP|D z-_PB>Utq>UZP)6s*;`+|Tt2!_plb%S@@jz548H005xwAPoQj004lxgERm<9pD9n85NMip*qt50000 Date: Sun, 2 Mar 2025 20:59:22 +0000 Subject: [PATCH 26/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 49dcc4f73b..3557bc1db9 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Beck Thompson - changes: - - message: Plushies will now eject their contents when recycled in the recycler! - type: Fix - id: 7532 - time: '2024-10-18T12:58:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32838 - author: Ilya246 changes: - message: Spectral locator, rare maintenance loot that lets you know if any ghosts @@ -3900,3 +3893,11 @@ id: 8031 time: '2025-03-02T15:50:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35555 +- author: HTMLSystem + changes: + - message: Arachnids and moths now have new sprites when wearing glasses, huds, + visors, and eyepatches. + type: Add + id: 8032 + time: '2025-03-02T20:58:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31812 From 37347829972648f93ef8e59dfd2d363752283628 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sun, 2 Mar 2025 20:03:16 -0500 Subject: [PATCH 27/91] Add GetBaseName method to NameModifierSystem (#35633) * Add GetBaseName method to NameModifierSystem * Use Name --- .../NameModifier/EntitySystems/NameModifierSystem.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Content.Shared/NameModifier/EntitySystems/NameModifierSystem.cs b/Content.Shared/NameModifier/EntitySystems/NameModifierSystem.cs index 2e7c8054b3..33f6efbed5 100644 --- a/Content.Shared/NameModifier/EntitySystems/NameModifierSystem.cs +++ b/Content.Shared/NameModifier/EntitySystems/NameModifierSystem.cs @@ -32,6 +32,18 @@ public sealed class NameModifierSystem : EntitySystem Dirty(entity); } + /// + /// Returns the base name of the entity, without any modifiers applied. + /// If the entity doesn't have a , + /// this returns the entity's metadata name. + /// + public string GetBaseName(Entity entity) + { + if (Resolve(entity, ref entity.Comp, logMissing: false)) + return entity.Comp.BaseName; + return Name(entity); + } + /// /// Raises a to gather modifiers and /// updates the entity's name to its base name with modifiers applied. From 70a4882c307a327c9ccc4992eaa8e8b28cca9dce Mon Sep 17 00:00:00 2001 From: Hannah Giovanna Dawson Date: Mon, 3 Mar 2025 10:04:33 +0000 Subject: [PATCH 28/91] Save Space Station 14 from the Toilet Gibber Forever (#35587) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * The evil is defeated * Tag body bags * uwu, cwush me cwusher-chan * absolute 18+ sloggery * botos binted? 👽 --- Content.Shared/Foldable/FoldableSystem.cs | 7 +- .../SharedEntityStorageComponent.cs | 11 +-- .../SharedEntityStorageSystem.cs | 92 ++++++------------- .../Entities/Objects/Misc/arabianlamp.yml | 1 - .../Entities/Objects/Misc/pet_carrier.yml | 6 +- .../Objects/Specific/Medical/morgue.yml | 4 + .../Structures/Machines/artifact_analyzer.yml | 3 + 7 files changed, 44 insertions(+), 80 deletions(-) diff --git a/Content.Shared/Foldable/FoldableSystem.cs b/Content.Shared/Foldable/FoldableSystem.cs index 2a846f4f23..c251372372 100644 --- a/Content.Shared/Foldable/FoldableSystem.cs +++ b/Content.Shared/Foldable/FoldableSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Body.Components; using Content.Shared.Buckle; using Content.Shared.Buckle.Components; using Content.Shared.Storage.Components; @@ -23,7 +24,7 @@ public sealed class FoldableSystem : EntitySystem SubscribeLocalEvent(OnFoldableInit); SubscribeLocalEvent(OnInsertEvent); - SubscribeLocalEvent(OnStoreThisAttempt); + SubscribeLocalEvent(OnStoreThisAttempt); SubscribeLocalEvent(OnFoldableOpenAttempt); SubscribeLocalEvent(OnStrapAttempt); @@ -45,10 +46,8 @@ public sealed class FoldableSystem : EntitySystem args.Cancelled = true; } - public void OnStoreThisAttempt(EntityUid uid, FoldableComponent comp, ref StoreMobInItemContainerAttemptEvent args) + public void OnStoreThisAttempt(EntityUid uid, FoldableComponent comp, ref InsertIntoEntityStorageAttemptEvent args) { - args.Handled = true; - if (comp.IsFolded) args.Cancelled = true; } diff --git a/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs b/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs index b02c97db71..4100449f4e 100644 --- a/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs +++ b/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs @@ -64,12 +64,6 @@ public abstract partial class SharedEntityStorageComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public float EnteringRange = 0.18f; - /// - /// If true, there may be mobs inside the container, even if the container is an Item - /// - [DataField] - public bool ItemCanStoreMobs = false; - /// /// Whether or not to show the contents when the storage is closed /// @@ -153,10 +147,7 @@ public sealed class EntityStorageComponentState : ComponentState } [ByRefEvent] -public record struct InsertIntoEntityStorageAttemptEvent(bool Cancelled = false); - -[ByRefEvent] -public record struct StoreMobInItemContainerAttemptEvent(bool Handled, bool Cancelled = false); +public record struct InsertIntoEntityStorageAttemptEvent(EntityUid ItemToInsert, bool Cancelled = false); [ByRefEvent] public record struct StorageOpenAttemptEvent(EntityUid User, bool Silent, bool Cancelled = false); diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs index 52e2fb68d8..abd08c7459 100644 --- a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -241,26 +241,27 @@ public abstract class SharedEntityStorageSystem : EntitySystem component.Open = false; Dirty(uid, component); - var targetCoordinates = new EntityCoordinates(uid, component.EnteringOffset); + var entities = _lookup.GetEntitiesInRange( + new EntityCoordinates(uid, component.EnteringOffset), + component.EnteringRange, + LookupFlags.Approximate | LookupFlags.Dynamic | LookupFlags.Sundries + ); - var entities = _lookup.GetEntitiesInRange(targetCoordinates, component.EnteringRange, LookupFlags.Approximate | LookupFlags.Dynamic | LookupFlags.Sundries); + // Don't insert the container into itself. + entities.Remove(uid); - var ev = new StorageBeforeCloseEvent(entities, new()); + var ev = new StorageBeforeCloseEvent(entities, []); RaiseLocalEvent(uid, ref ev); - var count = 0; + foreach (var entity in ev.Contents) { - if (!ev.BypassChecks.Contains(entity)) - { - if (!CanInsert(entity, uid, component)) - continue; - } + if (!ev.BypassChecks.Contains(entity) && !CanInsert(entity, uid, component)) + continue; if (!AddToContents(entity, uid, component)) continue; - count++; - if (count >= component.Capacity) + if (component.Contents.ContainedEntities.Count >= component.Capacity) break; } @@ -331,7 +332,23 @@ public abstract class SharedEntityStorageSystem : EntitySystem if (component.Contents.ContainedEntities.Count >= component.Capacity) return false; - return CanFit(toInsert, container, component); + var aabb = _lookup.GetAABBNoContainer(toInsert, Vector2.Zero, 0); + if (component.MaxSize < aabb.Size.X || component.MaxSize < aabb.Size.Y) + return false; + + // Allow other systems to prevent inserting the item: e.g. the item is actually a ghost. + var attemptEvent = new InsertIntoEntityStorageAttemptEvent(toInsert); + RaiseLocalEvent(toInsert, ref attemptEvent); + + if (attemptEvent.Cancelled) + return false; + + // Consult the whitelist. The whitelist ignores the default assumption about how entity storage works. + if (component.Whitelist != null) + return _whitelistSystem.IsValid(component.Whitelist, toInsert); + + // The inserted entity must be a mob or an item. + return HasComp(toInsert) || HasComp(toInsert); } public bool TryOpenStorage(EntityUid user, EntityUid target, bool silent = false) @@ -412,60 +429,9 @@ public abstract class SharedEntityStorageSystem : EntitySystem if (toAdd == container) return false; - var aabb = _lookup.GetAABBNoContainer(toAdd, Vector2.Zero, 0); - if (component.MaxSize < aabb.Size.X || component.MaxSize < aabb.Size.Y) - return false; - return Insert(toAdd, container, component); } - private bool CanFit(EntityUid toInsert, EntityUid container, SharedEntityStorageComponent? component = null) - { - if (!Resolve(container, ref component)) - return false; - - // conditions are complicated because of pizzabox-related issues, so follow this guide - // 0. Accomplish your goals at all costs. - // 1. AddToContents can block anything - // 2. maximum item count can block anything - // 3. ghosts can NEVER be eaten - // 4. items can always be eaten unless a previous law prevents it - // 5. if this is NOT AN ITEM, then mobs can always be eaten unless a previous - // law prevents it - // 6. if this is an item, then mobs must only be eaten if some other component prevents - // pick-up interactions while a mob is inside (e.g. foldable) - var attemptEvent = new InsertIntoEntityStorageAttemptEvent(); - RaiseLocalEvent(toInsert, ref attemptEvent); - if (attemptEvent.Cancelled) - return false; - - var targetIsMob = HasComp(toInsert); - var storageIsItem = HasComp(container); - var allowedToEat = component.Whitelist == null ? HasComp(toInsert) : _whitelistSystem.IsValid(component.Whitelist, toInsert); - - // BEFORE REPLACING THIS WITH, I.E. A PROPERTY: - // Make absolutely 100% sure you have worked out how to stop people ending up in backpacks. - // Seriously, it is insanely hacky and weird to get someone out of a backpack once they end up in there. - // And to be clear, they should NOT be in there. - // For the record, what you need to do is empty the backpack onto a PlacableSurface (table, rack) - if (targetIsMob) - { - if (!storageIsItem) - allowedToEat = true; - else - { - var storeEv = new StoreMobInItemContainerAttemptEvent(); - RaiseLocalEvent(container, ref storeEv); - allowedToEat = storeEv is { Handled: true, Cancelled: false }; - - if (component.ItemCanStoreMobs) - allowedToEat = true; - } - } - - return allowedToEat; - } - private void ModifyComponents(EntityUid uid, SharedEntityStorageComponent? component = null) { if (!ResolveStorage(uid, ref component)) diff --git a/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml b/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml index ee40316e62..844db3f765 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/arabianlamp.yml @@ -13,7 +13,6 @@ breakOnAccessBreaker: false - type: EntityStorage capacity: 1 # Its smol. - itemCanStoreMobs: false # just leaving this here explicitly since I know at some point someone will want to use this to hold a mob. This also prevents it from becoming His Grace. # - type: StorageFill # contents: # - id: PuddleSparkle # Ha! Cute. Unfortunately it despawns before the container is likely to open. diff --git a/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml b/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml index 725db6731f..4ae684c193 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml @@ -1,7 +1,7 @@ - type: entity id: PetCarrier name: big pet carrier - description: Allows large animals to be carried comfortably. + description: Allows large animals to be carried comfortably. It smells vaguely of toilet water and explosives. parent: BaseStructureDynamic components: - type: Sprite @@ -36,7 +36,9 @@ - type: EntityStorage capacity: 1 airtight: false - itemCanStoreMobs: true + whitelist: + tags: + - VimPilot # If it can fit in a Vim it can fit in a pet carrier. - type: Weldable - type: ResistLocker - type: PlaceableSurface diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index 6cec5eecbe..adfd21dfbb 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -44,6 +44,10 @@ - type: EntityStorage capacity: 1 isCollidableWhenOpen: true + whitelist: # Use a tag whitelist rather than filtering for PerishableComponent to avoid chefs using body bags for food preservation + tags: + - VimPilot # Pets + - CanPilot # People closeSound: path: /Audio/Misc/zip.ogg openSound: diff --git a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml index 7d1719a708..b9efefdf75 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml @@ -128,6 +128,9 @@ whitelist: components: - Artifact + tags: + - CanPilot # People + - VimPilot # Pets - type: Appearance - type: GenericVisualizer visuals: From 2fc8dd033171faaeb2dc9d022f519afb8914b9d3 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 21:49:15 +0000 Subject: [PATCH 29/91] undo player facing changes to pet carrier --- .../en-US/_DV/prototypes/entities/objects/misc/pet_carrier.ftl | 2 ++ Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml | 1 + 2 files changed, 3 insertions(+) create mode 100644 Resources/Locale/en-US/_DV/prototypes/entities/objects/misc/pet_carrier.ftl diff --git a/Resources/Locale/en-US/_DV/prototypes/entities/objects/misc/pet_carrier.ftl b/Resources/Locale/en-US/_DV/prototypes/entities/objects/misc/pet_carrier.ftl new file mode 100644 index 0000000000..efb231f8ee --- /dev/null +++ b/Resources/Locale/en-US/_DV/prototypes/entities/objects/misc/pet_carrier.ftl @@ -0,0 +1,2 @@ +ent-PetCarrier = big pet carrier + .desc = Allows large animals to be carried comfortably. diff --git a/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml b/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml index 4ae684c193..033a94fa06 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml @@ -39,6 +39,7 @@ whitelist: tags: - VimPilot # If it can fit in a Vim it can fit in a pet carrier. + - CanPilot # DeltaV - let people go in pet carriers too - type: Weldable - type: ResistLocker - type: PlaceableSurface From d4ba635c725cbaa8ed84db96ef7da2ddcb9c9ac4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 3 Mar 2025 10:05:42 +0000 Subject: [PATCH 30/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3557bc1db9..2b50873c82 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Ilya246 - changes: - - message: Spectral locator, rare maintenance loot that lets you know if any ghosts - are nearby. - type: Add - id: 7533 - time: '2024-10-18T13:42:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32323 - author: PJB3005 changes: - message: You can now start removing items via stripping while holding something. @@ -3901,3 +3893,11 @@ id: 8032 time: '2025-03-02T20:58:15.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/31812 +- author: FairlySadPanda + changes: + - message: Pet carriers now only carry pets. preventing various unintended, albeit + hilarious, activities. + type: Fix + id: 8033 + time: '2025-03-03T10:04:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35587 From 27a6684bc1ec323b663ddc27b7962161562403b5 Mon Sep 17 00:00:00 2001 From: Coolsurf6 Date: Mon, 3 Mar 2025 11:11:58 +0000 Subject: [PATCH 31/91] Changed Damage Overlay to check Burn Damage (#34535) * updated BruteLevel to be PainLevel with burn damage checks in DamageOverlayUiController.cs * dehardcoded pain level by adding damage groups to paindamagegroups to affect * re-added the name for painDamageGroups * fixed overlay default and added minimum limit to component check first * renamed to PainDamageGroups and removed obsolete tag --- .../DamageOverlayUiController.cs | 32 +++++++++++-------- .../DamageOverlays/Overlays/DamageOverlay.cs | 16 +++++----- .../Damage/Components/DamageableComponent.cs | 7 ++++ 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs index 9d9dd30911..55d00fec18 100644 --- a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs +++ b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs @@ -67,7 +67,7 @@ public sealed class DamageOverlayUiController : UIController { _overlay.DeadLevel = 0f; _overlay.CritLevel = 0f; - _overlay.BruteLevel = 0f; + _overlay.PainLevel = 0f; _overlay.OxygenLevel = 0f; } @@ -95,13 +95,22 @@ public sealed class DamageOverlayUiController : UIController { case MobState.Alive: { - if (EntityManager.HasComponent(entity)) + FixedPoint2 painLevel = 0; + _overlay.PainLevel = 0; + + if (!EntityManager.HasComponent(entity)) { - _overlay.BruteLevel = 0; - } - else if (damageable.DamagePerGroup.TryGetValue("Brute", out var bruteDamage)) - { - _overlay.BruteLevel = FixedPoint2.Min(1f, bruteDamage / critThreshold).Float(); + foreach (var painDamageType in damageable.PainDamageGroups) + { + damageable.DamagePerGroup.TryGetValue(painDamageType, out var painDamage); + painLevel += painDamage; + } + _overlay.PainLevel = FixedPoint2.Min(1f, painLevel / critThreshold).Float(); + + if (_overlay.PainLevel < 0.05f) // Don't show damage overlay if they're near enough to max. + { + _overlay.PainLevel = 0; + } } if (damageable.DamagePerGroup.TryGetValue("Airloss", out var oxyDamage)) @@ -109,11 +118,6 @@ public sealed class DamageOverlayUiController : UIController _overlay.OxygenLevel = FixedPoint2.Min(1f, oxyDamage / critThreshold).Float(); } - if (_overlay.BruteLevel < 0.05f) // Don't show damage overlay if they're near enough to max. - { - _overlay.BruteLevel = 0; - } - _overlay.CritLevel = 0; _overlay.DeadLevel = 0; break; @@ -125,13 +129,13 @@ public sealed class DamageOverlayUiController : UIController return; _overlay.CritLevel = critLevel.Value.Float(); - _overlay.BruteLevel = 0; + _overlay.PainLevel = 0; _overlay.DeadLevel = 0; break; } case MobState.Dead: { - _overlay.BruteLevel = 0; + _overlay.PainLevel = 0; _overlay.CritLevel = 0; break; } diff --git a/Content.Client/UserInterface/Systems/DamageOverlays/Overlays/DamageOverlay.cs b/Content.Client/UserInterface/Systems/DamageOverlays/Overlays/DamageOverlay.cs index fd74815316..de70fe16f8 100644 --- a/Content.Client/UserInterface/Systems/DamageOverlays/Overlays/DamageOverlay.cs +++ b/Content.Client/UserInterface/Systems/DamageOverlays/Overlays/DamageOverlay.cs @@ -25,9 +25,9 @@ public sealed class DamageOverlay : Overlay /// /// Handles the red pulsing overlay /// - public float BruteLevel = 0f; + public float PainLevel = 0f; - private float _oldBruteLevel = 0f; + private float _oldPainLevel = 0f; /// /// Handles the darkening overlay. @@ -92,14 +92,14 @@ public sealed class DamageOverlay : Overlay DeadLevel = 0f; } - if (!MathHelper.CloseTo(_oldBruteLevel, BruteLevel, 0.001f)) + if (!MathHelper.CloseTo(_oldPainLevel, PainLevel, 0.001f)) { - var diff = BruteLevel - _oldBruteLevel; - _oldBruteLevel += GetDiff(diff, lastFrameTime); + var diff = PainLevel - _oldPainLevel; + _oldPainLevel += GetDiff(diff, lastFrameTime); } else { - _oldBruteLevel = BruteLevel; + _oldPainLevel = PainLevel; } if (!MathHelper.CloseTo(_oldOxygenLevel, OxygenLevel, 0.001f)) @@ -135,7 +135,7 @@ public sealed class DamageOverlay : Overlay // Makes debugging easier don't @ me float level = 0f; - level = _oldBruteLevel; + level = _oldPainLevel; // TODO: Lerping if (level > 0f && _oldCritLevel <= 0f) @@ -165,7 +165,7 @@ public sealed class DamageOverlay : Overlay } else { - _oldBruteLevel = BruteLevel; + _oldPainLevel = PainLevel; } level = State != MobState.Critical ? _oldOxygenLevel : 1f; diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index 8ea3567b05..9e4e26e422 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -65,6 +65,13 @@ namespace Content.Shared.Damage [DataField("radiationDamageTypes")] public List> RadiationDamageTypeIDs = new() { "Radiation" }; + /// + /// Group types that affect the pain overlay. + /// + /// TODO: Add support for adding damage types specifically rather than whole damage groups + [DataField] + public List> PainDamageGroups = new() { "Brute", "Burn" }; + [DataField] public Dictionary> HealthIcons = new() { From 48455e779a5d3336d5b38585bc153954dc38b5da Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 3 Mar 2025 11:13:05 +0000 Subject: [PATCH 32/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2b50873c82..74150ba5f2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: You can now start removing items via stripping while holding something. - type: Tweak - id: 7534 - time: '2024-10-18T19:20:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32750 - author: Beck Thompson changes: - message: Scalpels and shivs now work as knives! @@ -3901,3 +3894,11 @@ id: 8033 time: '2025-03-03T10:04:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35587 +- author: Coolsurf6 + changes: + - message: Pain from Burn damage is now calculated when displaying the red damage + overlay + type: Tweak + id: 8034 + time: '2025-03-03T11:11:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34535 From ed036f18ddc0115b1e26cec23eb519c38c5a2895 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Mon, 3 Mar 2025 12:54:43 -0300 Subject: [PATCH 33/91] Wizard's Magical Pen (#35623) * wizard pen * description change --- .../Prototypes/Entities/Objects/Devices/pda.yml | 2 +- .../Prototypes/Entities/Objects/Misc/pen.yml | 14 ++++++++++++++ .../Textures/Objects/Misc/pens.rsi/meta.json | 5 ++++- .../Textures/Objects/Misc/pens.rsi/pen_wizard.png | Bin 0 -> 523 bytes 4 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Objects/Misc/pens.rsi/pen_wizard.png diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index a144d4c995..031b3b09eb 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -1530,7 +1530,7 @@ - type: Pda id: WizardIDCard penSlot: - startingItem: LuxuryPen + startingItem: PenWiz priority: -1 whitelist: tags: diff --git a/Resources/Prototypes/Entities/Objects/Misc/pen.yml b/Resources/Prototypes/Entities/Objects/Misc/pen.yml index 45f90f9603..c2ff06cce9 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/pen.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/pen.yml @@ -126,3 +126,17 @@ components: - type: Sprite state: pen_hop + +- type: entity + name: wizard's magical pen + parent: [ PenEmbeddable, BaseMagicalContraband ] + id: PenWiz + description: A luxurious fountain pen. Seems to have a magical crystal eraser. + components: + - type: Sprite + state: pen_wizard + - type: Tag + tags: + - WriteIgnoreStamps + - Write + - Pen diff --git a/Resources/Textures/Objects/Misc/pens.rsi/meta.json b/Resources/Textures/Objects/Misc/pens.rsi/meta.json index 738bc09ee3..b2e088a95c 100644 --- a/Resources/Textures/Objects/Misc/pens.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/pens.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432. pen_centcom is a resprited version of pen_cap by PuroSlavKing (Github). Luxury pen is drawn by Ubaser.", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432. pen_centcom is a resprited version of pen_cap by PuroSlavKing (Github). Luxury pen is drawn by Ubaser. pen_wizard based on overpriced_pen by Velken.", "size": { "x": 32, "y": 32 @@ -31,6 +31,9 @@ { "name": "pen_red" }, + { + "name": "pen_wizard" + }, { "name": "pen-inhand-left", "directions": 4 diff --git a/Resources/Textures/Objects/Misc/pens.rsi/pen_wizard.png b/Resources/Textures/Objects/Misc/pens.rsi/pen_wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..3264870e3d8eab0171fe860675e827a4a9632a1f GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCilI0(?STSqf}e7exphD^OFYV^$P4)LL$Dc3N9?Vn+eP#glCR|MNaP&MCkr z1ynvsOU3|5@s$Mm1^-6|46X<6oB+yj7I;J!0~H(wVaDV6D^h@h5+$w?CBgY=CFO}l zsSE*$nRz98ey$-3rh0~YCPMd@H3QXbOO5bM^YqkW-~e)18Kf9l85n^qFCdnNvO&Jn zU}Of1GXdF#j7$syKspMDGuv6f;#oj82qXY8NI#55vy_3EfnfqW0}D`vfswHR;{u4O zARVj=ASO)#vO$0eXbuxtWss!>kOkFcXaEWbhU?FEEAD+3zXiz5@^o z0*`Cp2BpdG|JPsV^3`!ZbWF88^aSUXgo|uj>l-%;uUr2n(es!-t6$wgUMJ=WyV(}* z*Em$ZD6+fty(_Z|i{;d)0~438ILaW9bjoO7FN5NJFCT^plX>olyf9m#%kY8W-dUrZ TC4D=efn4C}>gTe~DWM4fC0L42 literal 0 HcmV?d00001 From 625075301e154f03a795c6400c0cb786e8784665 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 3 Mar 2025 15:55:50 +0000 Subject: [PATCH 34/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 74150ba5f2..c21abf8f1c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Beck Thompson - changes: - - message: Scalpels and shivs now work as knives! - type: Add - id: 7535 - time: '2024-10-19T02:40:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32858 - author: PJB3005 changes: - message: Fix more performance issues on long-running game servers, hopefully. @@ -3902,3 +3895,10 @@ id: 8034 time: '2025-03-03T11:11:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/34535 +- author: Velken + changes: + - message: Wizards now have their own unique magical pen. + type: Add + id: 8035 + time: '2025-03-03T15:54:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35623 From 1b6209415cdb36392f0a4622d6c1f83284b3cf46 Mon Sep 17 00:00:00 2001 From: rokudara-sen <160833839+rokudara-sen@users.noreply.github.com> Date: Mon, 3 Mar 2025 17:37:28 +0100 Subject: [PATCH 35/91] Added decelerator percentage drain (#35643) * Added variable PercentageDrain to SinguloFoodComponent * Set percentageDrain to 0.03 (3%) for anti particles * Added percentageDrain logic in public OnConsumed * Simplify SinguloFoodComponent and set percentageDrain to negative * EnergyFactor now applies to positive values too * Better commenting on EnergyFactor * Update Content.Server/Singularity/Components/SinguloFoodComponent.cs * Documentation of EnergyFactor * Fixing spelling mistake --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Components/SinguloFoodComponent.cs | 18 +++++++++++++++--- .../EntitySystems/SingularitySystem.cs | 7 ++++++- .../Power/Generation/PA/particles.yml | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Content.Server/Singularity/Components/SinguloFoodComponent.cs b/Content.Server/Singularity/Components/SinguloFoodComponent.cs index e9f9da15c1..edd0aeaf11 100644 --- a/Content.Server/Singularity/Components/SinguloFoodComponent.cs +++ b/Content.Server/Singularity/Components/SinguloFoodComponent.cs @@ -6,8 +6,20 @@ namespace Content.Server.Singularity.Components [RegisterComponent] public sealed partial class SinguloFoodComponent : Component { - [ViewVariables(VVAccess.ReadWrite)] - [DataField("energy")] - public float Energy { get; set; } = 1f; + /// + /// Flat adjustment to the singularity's energy when this entity is eaten by the event horizon. + /// + [DataField] + public float Energy = 1f; + + /// + /// Multiplier applied to singularity's energy. + /// 1.0 = no change, 0.97 = 3% reduction, 1.05 = 5% increase + /// + /// /// + /// This is calculated using the singularity's energy level before has been added. + /// + [DataField] + public float EnergyFactor = 1f; } } diff --git a/Content.Server/Singularity/EntitySystems/SingularitySystem.cs b/Content.Server/Singularity/EntitySystems/SingularitySystem.cs index de7df32374..47c30db92b 100644 --- a/Content.Server/Singularity/EntitySystems/SingularitySystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularitySystem.cs @@ -306,7 +306,12 @@ public sealed class SingularitySystem : SharedSingularitySystem public void OnConsumed(EntityUid uid, SinguloFoodComponent comp, ref EventHorizonConsumedEntityEvent args) { if (EntityManager.TryGetComponent(args.EventHorizonUid, out var singulo)) - AdjustEnergy(args.EventHorizonUid, comp.Energy, singularity: singulo); + { + // Calculate the percentage change (positive or negative) + var percentageChange = singulo.Energy * (comp.EnergyFactor - 1f); + // Apply both the flat and percentage changes + AdjustEnergy(args.EventHorizonUid, comp.Energy + percentageChange, singularity: singulo); + } } /// diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/particles.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/particles.yml index 6e55bfec5e..9d5ffc2486 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/PA/particles.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/PA/particles.yml @@ -80,3 +80,4 @@ lifetime: 0.6 - type: SinguloFood energy: -10 + energyFactor: 0.97 From a11ebfda7cf6181093f08b105c87edfd01c7e501 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 3 Mar 2025 16:38:35 +0000 Subject: [PATCH 36/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c21abf8f1c..74528ecbc0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fix more performance issues on long-running game servers, hopefully. - type: Fix - id: 7536 - time: '2024-10-19T14:51:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32897 - author: insoPL changes: - message: Zombies once again have zombie blood. @@ -3902,3 +3895,11 @@ id: 8035 time: '2025-03-03T15:54:43.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35623 +- author: rokudara-sen + changes: + - message: Particle decelerators now drain an additional percentage of a singularity's + current energy. + type: Tweak + id: 8036 + time: '2025-03-03T16:37:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35643 From 2ba0c9902785fb61c6d56e36abc68d30766aa1e9 Mon Sep 17 00:00:00 2001 From: DuckManZach <144298822+DuckManZach@users.noreply.github.com> Date: Mon, 3 Mar 2025 15:04:26 -0700 Subject: [PATCH 37/91] Made butter require less milk (#35650) made butter take less milk --- Resources/Prototypes/Recipes/Reactions/food.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Recipes/Reactions/food.yml b/Resources/Prototypes/Recipes/Reactions/food.yml index 6d32948f89..e98d49c521 100644 --- a/Resources/Prototypes/Recipes/Reactions/food.yml +++ b/Resources/Prototypes/Recipes/Reactions/food.yml @@ -113,7 +113,7 @@ conserveEnergy: false reactants: Milk: - amount: 30 + amount: 15 TableSalt: amount: 5 catalyst: true From f2a115da5d067903e88c40c6bab8c433fca7707a Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 3 Mar 2025 22:05:32 +0000 Subject: [PATCH 38/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 74528ecbc0..b7b5f2822a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: insoPL - changes: - - message: Zombies once again have zombie blood. - type: Fix - id: 7537 - time: '2024-10-19T15:31:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32532 - author: Beck Thompson changes: - message: When MMIs and positronic brains are inserted into plushies, their names @@ -3903,3 +3896,10 @@ id: 8036 time: '2025-03-03T16:37:28.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35643 +- author: DuckManZach + changes: + - message: Butter is now cheaper to produce! + type: Tweak + id: 8037 + time: '2025-03-03T22:04:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35650 From 8d44378cbd932eb27a2366eb7dacf395bf27752e Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Mon, 3 Mar 2025 17:58:04 -0500 Subject: [PATCH 39/91] Delete SolutionContainerVisualsComponent.InitialName (#35654) --- .../Chemistry/Visualizers/SolutionContainerVisualsSystem.cs | 1 - .../Chemistry/Components/SolutionContainerVisualsComponent.cs | 3 --- 2 files changed, 4 deletions(-) diff --git a/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs b/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs index 010bfb3184..0ba537e455 100644 --- a/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs +++ b/Content.Client/Chemistry/Visualizers/SolutionContainerVisualsSystem.cs @@ -28,7 +28,6 @@ public sealed class SolutionContainerVisualsSystem : VisualizerSystem Date: Mon, 3 Mar 2025 21:56:48 -0500 Subject: [PATCH 40/91] Fix name of cotton dough rope (#35657) changed in-game name of cotton dough rope to differentiate from normal dough rope --- .../Prototypes/Entities/Objects/Consumable/Food/ingredients.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml index c01167c6ee..b4274a52fe 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/ingredients.yml @@ -489,7 +489,7 @@ Quantity: 3.5 - type: entity - name: dough rope + name: cotton dough rope parent: FoodBakingBase id: FoodDoughCottonRope description: A thin noodle of cotton dough. Can be cooked into a cotton bagel. From 5479033238725f86220adcb61a9cb4329385b032 Mon Sep 17 00:00:00 2001 From: Killerqu00 <47712032+Killerqu00@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:59:44 +0100 Subject: [PATCH 41/91] CVar - Toggle display of round-end greentext (#35651) * hide greentext if cvar false * change IFs around a lil * reviews --- Content.Server/Objectives/ObjectivesSystem.cs | 23 +++++++++++-------- Content.Shared/CCVar/CCVars.Game.cs | 6 +++++ .../customobjectivesummary.ftl | 2 -- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Content.Server/Objectives/ObjectivesSystem.cs b/Content.Server/Objectives/ObjectivesSystem.cs index b863ea74ca..a3d8ece9f7 100644 --- a/Content.Server/Objectives/ObjectivesSystem.cs +++ b/Content.Server/Objectives/ObjectivesSystem.cs @@ -1,5 +1,6 @@ using Content.Server.GameTicking; using Content.Server.Shuttles.Systems; +using Content.Shared._DV.CustomObjectiveSummary; // DeltaV using Content.Shared.Cuffs.Components; using Content.Shared.GameTicking.Components; using Content.Shared.Mind; @@ -12,10 +13,11 @@ using Robust.Shared.Random; using System.Linq; using System.Text; using Content.Server.Objectives.Commands; -using Content.Shared._DV.CustomObjectiveSummary; // DeltaV +using Content.Shared.CCVar; using Content.Shared.Prototypes; using Content.Shared.Roles.Jobs; using Robust.Server.Player; +using Robust.Shared.Configuration; using Robust.Shared.Utility; namespace Content.Server.Objectives; @@ -28,15 +30,20 @@ public sealed class ObjectivesSystem : SharedObjectivesSystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly EmergencyShuttleSystem _emergencyShuttle = default!; [Dependency] private readonly SharedJobSystem _job = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; private IEnumerable? _objectives; + private bool _showGreentext; + public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnRoundEndText); + Subs.CVar(_cfg, CCVars.GameShowGreentext, value => _showGreentext = value, true); + _prototypeManager.PrototypesReloaded += CreateCompletions; } @@ -163,8 +170,11 @@ public sealed class ObjectivesSystem : SharedObjectivesSystem totalObjectives++; agentSummary.Append("- "); - /* Begin DeltaV removal - Removed greentext - if (progress > 0.99f) + if (!_showGreentext) + { + agentSummary.AppendLine(objectiveTitle); + } + else if (progress > 0.99f) { agentSummary.AppendLine(Loc.GetString( "objectives-objective-success", @@ -182,13 +192,6 @@ public sealed class ObjectivesSystem : SharedObjectivesSystem ("markupColor", "red") )); } - End DeltaV removal */ - // Begin DeltaV Additions - Generic objective - agentSummary.AppendLine(Loc.GetString( - "objectives-objective", - ("objective", objectiveTitle) - )); - // End DeltaV Additions } } diff --git a/Content.Shared/CCVar/CCVars.Game.cs b/Content.Shared/CCVar/CCVars.Game.cs index 1922b4c1c0..98becfdddc 100644 --- a/Content.Shared/CCVar/CCVars.Game.cs +++ b/Content.Shared/CCVar/CCVars.Game.cs @@ -53,6 +53,12 @@ public sealed partial class CCVars public static readonly CVarDef GameLobbyEnableWin = CVarDef.Create("game.enablewin", true, CVar.ARCHIVE); + /// + /// Controls if round-end window shows whether the objective was completed or not. + /// + public static readonly CVarDef + GameShowGreentext = CVarDef.Create("game.showgreentext", true, CVar.ARCHIVE | CVar.SERVERONLY); + /// /// Controls the maximum number of character slots a player is allowed to have. /// diff --git a/Resources/Locale/en-US/_DV/customobjectivesummary/customobjectivesummary.ftl b/Resources/Locale/en-US/_DV/customobjectivesummary/customobjectivesummary.ftl index 9102145ae7..058fb88e50 100644 --- a/Resources/Locale/en-US/_DV/customobjectivesummary/customobjectivesummary.ftl +++ b/Resources/Locale/en-US/_DV/customobjectivesummary/customobjectivesummary.ftl @@ -7,7 +7,5 @@ custom-objective-window-submit-button-text-confirm = Confirm submission custom-objective-window-explain = Explain how you completed your objectives here! custom-objective-window-explain-edit = You can always edit this anytime before the round ends. -objectives-objective = {$objective} - # End of round custom-objective-format = [color=#FFAEC9] {$line}[/color] From 544e710fc8e77b9f0c4617b61e64f43fd19a0e9e Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 21:53:04 +0000 Subject: [PATCH 42/91] hide greentext via cvar --- Resources/ConfigPresets/Build/debug.toml | 1 + Resources/ConfigPresets/Build/development.toml | 1 + Resources/ConfigPresets/DeltaV/deltav.toml | 1 + 3 files changed, 3 insertions(+) diff --git a/Resources/ConfigPresets/Build/debug.toml b/Resources/ConfigPresets/Build/debug.toml index be00ec9381..b1d4984f07 100644 --- a/Resources/ConfigPresets/Build/debug.toml +++ b/Resources/ConfigPresets/Build/debug.toml @@ -9,6 +9,7 @@ auto_unlock_aa_delay_minutes = 1 auto_unlock_aa_enabled = true secret_weight_prototype = "SecretDeltaV" # DeltaV role_timer_override = "DeltaV" # DeltaV +showgreentext = false # DeltaV [shuttle] auto_call_time = 0 diff --git a/Resources/ConfigPresets/Build/development.toml b/Resources/ConfigPresets/Build/development.toml index ac121b5e78..c332c8b438 100644 --- a/Resources/ConfigPresets/Build/development.toml +++ b/Resources/ConfigPresets/Build/development.toml @@ -7,6 +7,7 @@ role_timers = false contraband_examine = false # DeltaV secret_weight_prototype = "SecretDeltaV" # DeltaV role_timer_override = "DeltaV" # DeltaV +showgreentext = false # DeltaV [ghost] role_time = 0.5 diff --git a/Resources/ConfigPresets/DeltaV/deltav.toml b/Resources/ConfigPresets/DeltaV/deltav.toml index 25bf73b221..93873ec3bb 100644 --- a/Resources/ConfigPresets/DeltaV/deltav.toml +++ b/Resources/ConfigPresets/DeltaV/deltav.toml @@ -6,6 +6,7 @@ round_end_pacifist = true contraband_examine = false # Doubtful that it's desired at all, and would require going over every item in accordance with SOP secret_weight_prototype = "SecretDeltaV" role_timer_override = "DeltaV" +showgreentext = false # focus more on telling a story # New players can't join a server without admins [game.panic_bunker] From 48b7cd8d39dbb9dc0877c17769cd3e8e8bc020ec Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 5 Mar 2025 10:14:01 +0100 Subject: [PATCH 43/91] Add undergarments & "Censor Nudity" toggle to options (#33185) * Initial commit * Attribution * Review changes * Added comment for upstream --- .../Humanoid/HumanoidAppearanceSystem.cs | 53 +++++ .../Options/UI/Tabs/AccessibilityTab.xaml | 5 + .../Options/UI/Tabs/AccessibilityTab.xaml.cs | 2 + Content.Shared/CCVar/CCVars.Accessibility.cs | 12 + .../Humanoid/HumanoidAppearanceComponent.cs | 9 + .../Humanoid/HumanoidVisualLayers.cs | 5 +- .../Humanoid/Markings/MarkingCategories.cs | 8 +- .../Humanoid/Markings/MarkingColoring.cs | 6 +- .../_DV/preferences/ui/markings-picker.ftl | 2 - .../Locale/en-US/_DV/species/namepreset.ftl | 1 + .../Locale/en-US/_DV/species/species.ftl | 2 + .../en-US/_Impstation/markings/undershirt.ftl | 9 - .../en-US/_Impstation/markings/underwear.ftl | 6 - .../en-US/escape-menu/ui/options-menu.ftl | 5 + .../Locale/en-US/markings/undergarment.ftl | 21 ++ .../en-US/nyanotrasen/species/namepreset.ftl | 1 - .../en-US/nyanotrasen/species/species.ftl | 2 - .../en-US/preferences/ui/markings-picker.ftl | 2 + .../Customization/Markings/undergarments.yml | 223 ++++++++++++++++++ .../Entities/Mobs/Species/arachnid.yml | 4 +- .../Prototypes/Entities/Mobs/Species/base.yml | 8 +- .../Prototypes/Entities/Mobs/Species/moth.yml | 4 +- .../Entities/Mobs/Species/reptilian.yml | 2 + .../Prototypes/Entities/Mobs/Species/vox.yml | 8 +- Resources/Prototypes/Species/arachnid.yml | 12 +- Resources/Prototypes/Species/diona.yml | 18 +- Resources/Prototypes/Species/gingerbread.yml | 2 - Resources/Prototypes/Species/human.yml | 18 +- Resources/Prototypes/Species/moth.yml | 18 +- Resources/Prototypes/Species/reptilian.yml | 18 +- Resources/Prototypes/Species/slime.yml | 12 +- Resources/Prototypes/Species/vox.yml | 10 +- .../_DV/Entities/Mobs/Species/chitinid.yml | 6 +- .../_DV/Entities/Mobs/Species/feroxi.yml | 4 +- .../_DV/Entities/Mobs/Species/harpy.yml | 8 +- .../_DV/Entities/Mobs/Species/rodentia.yml | 4 +- .../_DV/Entities/Mobs/Species/vulpkanin.yml | 4 +- .../{Nyanotrasen => _DV}/Species/Oni.yml | 6 - Resources/Prototypes/_DV/Species/chitinid.yml | 10 +- .../{Nyanotrasen => _DV}/Species/felinid.yml | 8 +- Resources/Prototypes/_DV/Species/feroxi.yml | 2 + Resources/Prototypes/_DV/Species/harpy.yml | 10 +- Resources/Prototypes/_DV/Species/rodentia.yml | 10 +- .../Prototypes/_DV/Species/vulpkanin.yml | 10 +- .../Customization/Markings/undershirt.yml | 84 ++----- .../Mobs/Customization/Markings/underwear.yml | 54 +---- .../Prototypes/_Impstation/Species/thaven.yml | 2 + .../undergarments.rsi/binder.png | Bin 0 -> 18549 bytes .../undergarments.rsi/binder_vox.png | Bin 0 -> 18528 bytes .../undergarments.rsi/boxers.png | Bin 0 -> 16324 bytes .../undergarments.rsi/boxers_reptilian.png | Bin 0 -> 16324 bytes .../undergarments.rsi/boxers_vox.png | Bin 0 -> 17029 bytes .../undergarments.rsi/briefs.png | Bin 0 -> 16302 bytes .../undergarments.rsi/briefs_reptilian.png | Bin 0 -> 16290 bytes .../undergarments.rsi/briefs_vox.png | Bin 0 -> 16927 bytes .../undergarments.rsi/classic.png | Bin 0 -> 16315 bytes .../undergarments.rsi/classic_vox.png | Bin 0 -> 16701 bytes .../Customization/undergarments.rsi/meta.json | 79 +++++++ .../Customization/undergarments.rsi/satin.png | Bin 0 -> 15723 bytes .../undergarments.rsi/satin_reptilian.png | Bin 0 -> 15700 bytes .../undergarments.rsi/satin_vox.png | Bin 0 -> 15717 bytes .../undergarments.rsi/sports.png | Bin 0 -> 16337 bytes .../undergarments.rsi/sports_vox.png | Bin 0 -> 16821 bytes .../undergarments.rsi/tanktop.png | Bin 0 -> 18589 bytes .../undergarments.rsi/tanktop_vox.png | Bin 0 -> 18818 bytes 65 files changed, 534 insertions(+), 275 deletions(-) delete mode 100644 Resources/Locale/en-US/_DV/preferences/ui/markings-picker.ftl create mode 100644 Resources/Locale/en-US/markings/undergarment.ftl delete mode 100644 Resources/Locale/en-US/nyanotrasen/species/namepreset.ftl delete mode 100644 Resources/Locale/en-US/nyanotrasen/species/species.ftl create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml rename Resources/Prototypes/{Nyanotrasen => _DV}/Species/Oni.yml (89%) rename Resources/Prototypes/{Nyanotrasen => _DV}/Species/felinid.yml (83%) create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/binder.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/binder_vox.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/boxers.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/boxers_reptilian.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/boxers_vox.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/briefs.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/briefs_reptilian.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/briefs_vox.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/classic.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/classic_vox.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/satin.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/satin_reptilian.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/satin_vox.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/sports.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/sports_vox.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/tanktop.png create mode 100644 Resources/Textures/Mobs/Customization/undergarments.rsi/tanktop_vox.png diff --git a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs index 0416f4b813..2895a98a40 100644 --- a/Content.Client/Humanoid/HumanoidAppearanceSystem.cs +++ b/Content.Client/Humanoid/HumanoidAppearanceSystem.cs @@ -1,8 +1,10 @@ +using Content.Shared.CCVar; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; using Robust.Client.GameObjects; +using Robust.Shared.Configuration; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -12,12 +14,15 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly MarkingManager _markingManager = default!; + [Dependency] private readonly IConfigurationManager _configurationManager = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnHandleState); + Subs.CVar(_configurationManager, CCVars.AccessibilityClientCensorNudity, OnCvarChanged, true); + Subs.CVar(_configurationManager, CCVars.AccessibilityServerCensorNudity, OnCvarChanged, true); } private void OnHandleState(EntityUid uid, HumanoidAppearanceComponent component, ref AfterAutoHandleStateEvent args) @@ -25,6 +30,15 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem UpdateSprite(component, Comp(uid)); } + private void OnCvarChanged(bool value) + { + var humanoidQuery = EntityManager.AllEntityQueryEnumerator(); + while (humanoidQuery.MoveNext(out var _, out var humanoidComp, out var spriteComp)) + { + UpdateSprite(humanoidComp, spriteComp); + } + } + private void UpdateSprite(HumanoidAppearanceComponent component, SpriteComponent sprite) { UpdateLayers(component, sprite); @@ -209,16 +223,30 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem // Really, markings should probably be a separate component altogether. ClearAllMarkings(humanoid, sprite); + var censorNudity = _configurationManager.GetCVar(CCVars.AccessibilityClientCensorNudity) || + _configurationManager.GetCVar(CCVars.AccessibilityServerCensorNudity); + // The reason we're splitting this up is in case the character already has undergarment equipped in that slot. + var applyUndergarmentTop = censorNudity; + var applyUndergarmentBottom = censorNudity; + foreach (var markingList in humanoid.MarkingSet.Markings.Values) { foreach (var marking in markingList) { if (_markingManager.TryGetMarking(marking, out var markingPrototype)) + { ApplyMarking(markingPrototype, marking.MarkingColors, marking.Visible, humanoid, sprite); + if (markingPrototype.BodyPart == HumanoidVisualLayers.UndergarmentTop) + applyUndergarmentTop = false; + else if (markingPrototype.BodyPart == HumanoidVisualLayers.UndergarmentBottom) + applyUndergarmentBottom = false; + } } } humanoid.ClientOldMarkings = new MarkingSet(humanoid.MarkingSet); + + AddUndergarments(humanoid, sprite, applyUndergarmentTop, applyUndergarmentBottom); } private void ClearAllMarkings(HumanoidAppearanceComponent humanoid, SpriteComponent sprite) @@ -266,6 +294,31 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem spriteComp.RemoveLayer(index); } } + + private void AddUndergarments(HumanoidAppearanceComponent humanoid, SpriteComponent sprite, bool undergarmentTop, bool undergarmentBottom) + { + if (undergarmentTop && humanoid.UndergarmentTop != null) + { + var marking = new Marking(humanoid.UndergarmentTop, new List { new Color() }); + if (_markingManager.TryGetMarking(marking, out var prototype)) + { + // Markings are added to ClientOldMarkings because otherwise it causes issues when toggling the feature on/off. + humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentTop, new List{ marking }); + ApplyMarking(prototype, null, true, humanoid, sprite); + } + } + + if (undergarmentBottom && humanoid.UndergarmentBottom != null) + { + var marking = new Marking(humanoid.UndergarmentBottom, new List { new Color() }); + if (_markingManager.TryGetMarking(marking, out var prototype)) + { + humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentBottom, new List{ marking }); + ApplyMarking(prototype, null, true, humanoid, sprite); + } + } + } + private void ApplyMarking(MarkingPrototype markingPrototype, IReadOnlyList? colors, bool visible, diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml index 763fd995ca..5041b498a0 100644 --- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml +++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml @@ -4,6 +4,8 @@ + diff --git a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs index e1dead0b0e..f87cda746c 100644 --- a/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/AccessibilityTab.xaml.cs @@ -21,6 +21,8 @@ public sealed partial class AccessibilityTab : Control Control.AddOptionPercentSlider(CCVars.SpeechBubbleSpeakerOpacity, SpeechBubbleSpeakerOpacitySlider); Control.AddOptionPercentSlider(CCVars.SpeechBubbleBackgroundOpacity, SpeechBubbleBackgroundOpacitySlider); + Control.AddOptionCheckBox(CCVars.AccessibilityClientCensorNudity, CensorNudityCheckBox); + Control.Initialize(); } } diff --git a/Content.Shared/CCVar/CCVars.Accessibility.cs b/Content.Shared/CCVar/CCVars.Accessibility.cs index 14312363a1..3f752cbeea 100644 --- a/Content.Shared/CCVar/CCVars.Accessibility.cs +++ b/Content.Shared/CCVar/CCVars.Accessibility.cs @@ -60,5 +60,17 @@ public sealed partial class CCVars public static readonly CVarDef SpeechBubbleBackgroundOpacity = CVarDef.Create("accessibility.speech_bubble_background_opacity", 0.75f, CVar.CLIENTONLY | CVar.ARCHIVE); + /// + /// If enabled, censors character nudity by forcing clothes markings on characters, selected by the client. + /// Both this and AccessibilityServerCensorNudity must be false to display nudity on the client. + /// + public static readonly CVarDef AccessibilityClientCensorNudity = + CVarDef.Create("accessibility.censor_nudity", false, CVar.CLIENTONLY | CVar.ARCHIVE); + /// + /// If enabled, censors character nudity by forcing clothes markings on characters, selected by the server. + /// Both this and AccessibilityClientCensorNudity must be false to display nudity on the client. + /// + public static readonly CVarDef AccessibilityServerCensorNudity = + CVarDef.Create("accessibility.server_censor_nudity", false, CVar.ARCHIVE | CVar.REPLICATED | CVar.SERVER); } diff --git a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs index 016ab64f1a..0bf11f5762 100644 --- a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs +++ b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs @@ -88,6 +88,15 @@ public sealed partial class HumanoidAppearanceComponent : Component /// [DataField] public HashSet HideLayersOnEquip = [HumanoidVisualLayers.Hair]; + + /// + /// Which markings the humanoid defaults to when nudity is toggled off. + /// + [DataField] + public ProtoId? UndergarmentTop = new ProtoId("UndergarmentTopTanktop"); + + [DataField] + public ProtoId? UndergarmentBottom = new ProtoId("UndergarmentBottomBoxers"); } [DataDefinition] diff --git a/Content.Shared/Humanoid/HumanoidVisualLayers.cs b/Content.Shared/Humanoid/HumanoidVisualLayers.cs index f55ee48d17..ca78564bfd 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayers.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayers.cs @@ -10,9 +10,9 @@ namespace Content.Shared.Humanoid Tail, Hair, FacialHair, + UndergarmentTop, + UndergarmentBottom, Chest, - Underwear, // DeltaV - Undershirt, // DeltaV Head, Snout, HeadSide, // side parts (i.e., frills) @@ -21,7 +21,6 @@ namespace Content.Shared.Humanoid RArm, LArm, RHand, - LHand, RLeg, LLeg, diff --git a/Content.Shared/Humanoid/Markings/MarkingCategories.cs b/Content.Shared/Humanoid/Markings/MarkingCategories.cs index 062ed4c4f5..2551175096 100644 --- a/Content.Shared/Humanoid/Markings/MarkingCategories.cs +++ b/Content.Shared/Humanoid/Markings/MarkingCategories.cs @@ -13,8 +13,8 @@ namespace Content.Shared.Humanoid.Markings HeadSide, Snout, Chest, - Underwear, // DeltaV - Undershirt, // DeltaV + UndergarmentTop, + UndergarmentBottom, Arms, Legs, Tail, @@ -34,9 +34,9 @@ namespace Content.Shared.Humanoid.Markings HumanoidVisualLayers.HeadTop => MarkingCategories.HeadTop, HumanoidVisualLayers.HeadSide => MarkingCategories.HeadSide, HumanoidVisualLayers.Snout => MarkingCategories.Snout, - HumanoidVisualLayers.Undershirt => MarkingCategories.Undershirt, // DeltaV - HumanoidVisualLayers.Underwear => MarkingCategories.Underwear, // DeltaV HumanoidVisualLayers.Chest => MarkingCategories.Chest, + HumanoidVisualLayers.UndergarmentTop => MarkingCategories.UndergarmentTop, + HumanoidVisualLayers.UndergarmentBottom => MarkingCategories.UndergarmentBottom, HumanoidVisualLayers.RArm => MarkingCategories.Arms, HumanoidVisualLayers.LArm => MarkingCategories.Arms, HumanoidVisualLayers.RHand => MarkingCategories.Arms, diff --git a/Content.Shared/Humanoid/Markings/MarkingColoring.cs b/Content.Shared/Humanoid/Markings/MarkingColoring.cs index a13481debf..fa47475a23 100644 --- a/Content.Shared/Humanoid/Markings/MarkingColoring.cs +++ b/Content.Shared/Humanoid/Markings/MarkingColoring.cs @@ -89,7 +89,7 @@ public static class MarkingColoring public sealed partial class LayerColoringDefinition { [DataField("type")] - public LayerColoringType Type = new SkinColoring(); + public LayerColoringType? Type = new SkinColoring(); /// /// Coloring types that will be used if main coloring type will return nil @@ -105,7 +105,9 @@ public sealed partial class LayerColoringDefinition public Color GetColor(Color? skin, Color? eyes, MarkingSet markingSet) { - var color = Type.GetColor(skin, eyes, markingSet); + Color? color = null; + if (Type != null) + color = Type.GetColor(skin, eyes, markingSet); if (color == null) { foreach (var type in FallbackTypes) diff --git a/Resources/Locale/en-US/_DV/preferences/ui/markings-picker.ftl b/Resources/Locale/en-US/_DV/preferences/ui/markings-picker.ftl deleted file mode 100644 index dde065d59e..0000000000 --- a/Resources/Locale/en-US/_DV/preferences/ui/markings-picker.ftl +++ /dev/null @@ -1,2 +0,0 @@ -markings-category-Undershirt = Undershirt -markings-category-Underwear = Underwear diff --git a/Resources/Locale/en-US/_DV/species/namepreset.ftl b/Resources/Locale/en-US/_DV/species/namepreset.ftl index 8ac28ddeb9..f698408885 100644 --- a/Resources/Locale/en-US/_DV/species/namepreset.ftl +++ b/Resources/Locale/en-US/_DV/species/namepreset.ftl @@ -1 +1,2 @@ namepreset-lastfirst = {$last} {$first} +namepreset-lastnofirst = {$last}-no-{$first} diff --git a/Resources/Locale/en-US/_DV/species/species.ftl b/Resources/Locale/en-US/_DV/species/species.ftl index ce488d4fa0..b0e5f54a96 100644 --- a/Resources/Locale/en-US/_DV/species/species.ftl +++ b/Resources/Locale/en-US/_DV/species/species.ftl @@ -1,5 +1,7 @@ ## Species Names +species-name-oni = Oni +species-name-felinid = Felinid species-name-vulpkanin = Vulpkanin species-name-harpy = Harpy species-name-rodentia = Rodentia diff --git a/Resources/Locale/en-US/_Impstation/markings/undershirt.ftl b/Resources/Locale/en-US/_Impstation/markings/undershirt.ftl index 62ba91032a..1d7619805d 100644 --- a/Resources/Locale/en-US/_Impstation/markings/undershirt.ftl +++ b/Resources/Locale/en-US/_Impstation/markings/undershirt.ftl @@ -16,14 +16,5 @@ marking-UndershirtRolledSleeveless = Tanktop (Rolled) marking-UndershirtNanotrasen-nanotrasen = Undershirt marking-UndershirtNanotrasen = Undershirt (Nanotrasen) -marking-UndershirtBinder-binder = Binder -marking-UndershirtBinder = Binder - -marking-UndershirtBraClassic-classic = Bra -marking-UndershirtBraClassic = Bra (Classic) - -marking-UndershirtBraSports-sports = Bra -marking-UndershirtBraSports = Bra (Sports) - marking-UndershirtBraStrapless-strapless = Bra marking-UndershirtBraStrapless = Bra (Strapless) diff --git a/Resources/Locale/en-US/_Impstation/markings/underwear.ftl b/Resources/Locale/en-US/_Impstation/markings/underwear.ftl index 23fbf04b23..abceef6a36 100644 --- a/Resources/Locale/en-US/_Impstation/markings/underwear.ftl +++ b/Resources/Locale/en-US/_Impstation/markings/underwear.ftl @@ -1,10 +1,4 @@ -marking-UnderwearDefault-boxers = Underwear -marking-UnderwearDefault = Underwear (Default) -marking-UnderwearBriefs-briefs = Underwear -marking-UnderwearBriefs = Underwear (Briefs) marking-UnderwearLowriders-lowriders = Underwear marking-UnderwearLowriders = Underwear (Lowriders) -marking-UnderwearSatin-satin = Underwear -marking-UnderwearSatin = Underwear (Satin) marking-UnderwearTanga-tanga = Underwear marking-UnderwearTanga = Underwear (Tanga) diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index 0325abd591..32a77f8b6b 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -279,6 +279,9 @@ cmd-options-help = Usage: options [tab] ## Accessibility menu +ui-options-accessability-header-visuals = Visuals +ui-options-accessability-header-content = Content + ui-options-enable-color-name = Add colors to character names ui-options-colorblind-friendly = Colorblind friendly mode ui-options-reduced-motion = Reduce motion of visual effects @@ -289,6 +292,8 @@ ui-options-speech-bubble-text-opacity = Speech bubble text opacity ui-options-speech-bubble-speaker-opacity = Speech bubble speaker opacity ui-options-speech-bubble-background-opacity = Speech bubble background opacity +ui-options-censor-nudity = Censor character nudity + ## Admin menu ui-options-enable-classic-overlay = Revert antag overlay to classic mode diff --git a/Resources/Locale/en-US/markings/undergarment.ftl b/Resources/Locale/en-US/markings/undergarment.ftl new file mode 100644 index 0000000000..3740d0573d --- /dev/null +++ b/Resources/Locale/en-US/markings/undergarment.ftl @@ -0,0 +1,21 @@ +marking-UndergarmentTopTanktop = Tanktop +marking-UndergarmentTopBinder = Binder +marking-UndergarmentTopBra = Classic Bra +marking-UndergarmentTopSportsbra = Sports Bra + +marking-UndergarmentBottomBoxers = Boxers +marking-UndergarmentBottomBriefs = Briefs +marking-UndergarmentBottomSatin = Satin + +marking-UndergarmentTopTanktopVox = Tanktop +marking-UndergarmentTopBinderVox = Binder +marking-UndergarmentTopBraVox = Classic Bra +marking-UndergarmentTopSportsbraVox = Sports Bra + +marking-UndergarmentBottomBoxersVox = Boxers +marking-UndergarmentBottomBriefsVox = Briefs +marking-UndergarmentBottomSatinVox = Satin + +marking-UndergarmentBottomBoxersReptilian = Boxers +marking-UndergarmentBottomBriefsReptilian = Briefs +marking-UndergarmentBottomSatinReptilian = Satin diff --git a/Resources/Locale/en-US/nyanotrasen/species/namepreset.ftl b/Resources/Locale/en-US/nyanotrasen/species/namepreset.ftl deleted file mode 100644 index 4e0092974e..0000000000 --- a/Resources/Locale/en-US/nyanotrasen/species/namepreset.ftl +++ /dev/null @@ -1 +0,0 @@ -namepreset-lastnofirst = {$last}-no-{$first} diff --git a/Resources/Locale/en-US/nyanotrasen/species/species.ftl b/Resources/Locale/en-US/nyanotrasen/species/species.ftl deleted file mode 100644 index c55f81ed0b..0000000000 --- a/Resources/Locale/en-US/nyanotrasen/species/species.ftl +++ /dev/null @@ -1,2 +0,0 @@ -species-name-oni = Oni -species-name-felinid = Felinid diff --git a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl index c768a2b4b6..cdf0658f04 100644 --- a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl +++ b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl @@ -20,6 +20,8 @@ markings-category-Head = Head markings-category-HeadTop = Head (Top) markings-category-HeadSide = Head (Side) markings-category-Snout = Snout +markings-category-UndergarmentTop = Undergarment (Top) +markings-category-UndergarmentBottom = Undergarment (Bottom) markings-category-Chest = Chest markings-category-Arms = Arms markings-category-Legs = Legs diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml new file mode 100644 index 0000000000..2bded029f2 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/undergarments.yml @@ -0,0 +1,223 @@ +# These options are kept very sparse to not put emphasis on nudity, and to provide a base for players to feel comfortable with. +# It's unlikely more will be added to upstream for cosmetic reasons. + +- type: marking + id: UndergarmentBottomBoxers + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: boxers + +- type: marking + id: UndergarmentBottomBriefs + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: briefs + +- type: marking + id: UndergarmentBottomSatin + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: satin + +- type: marking + id: UndergarmentTopBra + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: classic + +- type: marking + id: UndergarmentTopSportsbra + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: sports + +- type: marking + id: UndergarmentTopBinder + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: binder + +- type: marking + id: UndergarmentTopTanktop + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: tanktop + +- type: marking + id: UndergarmentBottomBoxersVox # Voxers. + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: boxers_vox + +- type: marking + id: UndergarmentBottomBriefsVox + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: briefs_vox + +- type: marking + id: UndergarmentBottomSatinVox + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: satin_vox + +- type: marking + id: UndergarmentTopBraVox + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: classic_vox + +- type: marking + id: UndergarmentTopSportsbraVox + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: sports_vox + +- type: marking + id: UndergarmentTopBinderVox + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: binder_vox + +- type: marking + id: UndergarmentTopTanktopVox + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: [Vox] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: tanktop_vox + +- type: marking + id: UndergarmentBottomBoxersReptilian + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: [Reptilian] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: boxers_reptilian + +- type: marking + id: UndergarmentBottomBriefsReptilian + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: [Reptilian] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: briefs_reptilian + +- type: marking + id: UndergarmentBottomSatinReptilian + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: [Reptilian] + coloring: + default: + type: null + fallbackColor: '#FFFFFF' + sprites: + - sprite: Mobs/Customization/undergarments.rsi + state: satin_reptilian diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 62ef0c83f4..0b4e111644 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -83,8 +83,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 794aba5d86..ee4cbc23aa 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -19,8 +19,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] @@ -325,8 +325,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: ["jumpsuit"] - map: ["enum.HumanoidVisualLayers.LFoot"] - map: ["enum.HumanoidVisualLayers.RFoot"] diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml index 3fe77f0fc3..b62209b563 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -84,8 +84,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml index f3a2173dbe..765d8d3858 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml @@ -11,6 +11,7 @@ - Snout - HeadTop - HeadSide + undergarmentBottom: UndergarmentBottomBoxersReptilian - type: Hunger - type: Puller needsHands: false @@ -93,6 +94,7 @@ - Snout - HeadTop - HeadSide + undergarmentBottom: UndergarmentBottomBoxersReptilian - type: Inventory speciesId: reptilian femaleDisplacements: diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index d2e058dd53..9322cc39f1 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -11,8 +11,10 @@ - type: Body prototype: Vox requiredLegs: 2 - - type: HumanoidAppearance + - type: HumanoidAppearance species: Vox + undergarmentTop: UndergarmentTopTanktopVox + undergarmentBottom: UndergarmentBottomBoxersVox #- type: VoxAccent # Not yet coded - type: Speech speechVerb: Vox @@ -71,6 +73,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LFoot" ] - map: [ "enum.HumanoidVisualLayers.RFoot" ] @@ -153,6 +157,8 @@ components: - type: HumanoidAppearance species: Vox + undergarmentTop: UndergarmentTopTanktopVox + undergarmentBottom: UndergarmentBottomBoxersVox - type: Body prototype: Vox - type: Inventory diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index da01cb750b..6d72bc062d 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -19,8 +19,8 @@ sprites: Head: MobArachnidHead Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobArachnidTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -65,14 +65,6 @@ Chest: points: 1 required: false - # Begin DeltaV changes. - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false - # End DeltaV changes. Legs: points: 6 required: false diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index fc84b4cf95..e0ba53e99c 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -19,8 +19,8 @@ Head: MobDionaHead HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobDionaTorso Eyes: MobDionaEyes LArm: MobDionaLArm @@ -45,20 +45,18 @@ HeadSide: points: 1 required: false + UndergarmentTop: + points: 1 + required: false + UndergarmentBottom: + points: 1 + required: false Chest: points: 1 required: false Legs: points: 2 required: false - # Begin DeltaV changes. - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false - # End DeltaV changes. Arms: points: 2 required: false diff --git a/Resources/Prototypes/Species/gingerbread.yml b/Resources/Prototypes/Species/gingerbread.yml index 148799cb1c..e6fc0d20df 100644 --- a/Resources/Prototypes/Species/gingerbread.yml +++ b/Resources/Prototypes/Species/gingerbread.yml @@ -15,8 +15,6 @@ Head: MobGingerbreadHead HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV Chest: MobGingerbreadTorso Eyes: MobGingerbreadEyes LArm: MobGingerbreadLArm diff --git a/Resources/Prototypes/Species/human.yml b/Resources/Prototypes/Species/human.yml index 8837dc14aa..de6c787ece 100644 --- a/Resources/Prototypes/Species/human.yml +++ b/Resources/Prototypes/Species/human.yml @@ -22,8 +22,8 @@ Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobHumanTorso Eyes: MobHumanoidEyes HeadTop: MobHumanoidAnyMarking @@ -59,17 +59,15 @@ HeadTop: points: 1 required: false + UndergarmentTop: + points: 1 + required: false + UndergarmentBottom: + points: 1 + required: false Chest: points: 1 required: false - # Begin DeltaV changes. - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false - # End DeltaV changes. Legs: points: 6 required: false diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 667bb589b9..22203fc0a8 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -17,8 +17,8 @@ sprites: Head: MobMothHead Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobMothTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -66,17 +66,15 @@ Head: points: 1 required: false + UndergarmentTop: + points: 1 + required: false + UndergarmentBottom: + points: 1 + required: false Chest: points: 1 required: false - # Begin DeltaV changes. - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false - # End DeltaV changes. Legs: points: 6 required: false diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 48dc3874d6..1fea1a206e 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -17,8 +17,8 @@ sprites: Head: MobReptilianHead Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobReptilianTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -57,17 +57,15 @@ HeadSide: points: 1 required: false + UndergarmentTop: + points: 1 + required: false + UndergarmentBottom: + points: 1 + required: false Chest: points: 3 required: false - # Begin DeltaV changes. - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false - # End DeltaV changes. Legs: points: 6 required: false diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index cd9a013c0d..5fd4a0f81e 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -15,8 +15,8 @@ Head: MobSlimeHead Hair: MobSlimeMarkingFollowSkin FacialHair: MobSlimeMarkingFollowSkin - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobSlimeTorso Eyes: MobHumanoidEyes LArm: MobSlimeLArm @@ -40,14 +40,6 @@ Chest: points: 1 required: false - # Begin DeltaV changes. - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false - # End DeltaV changes. Legs: points: 4 required: false diff --git a/Resources/Prototypes/Species/vox.yml b/Resources/Prototypes/Species/vox.yml index 1885583c15..29cc0583fc 100644 --- a/Resources/Prototypes/Species/vox.yml +++ b/Resources/Prototypes/Species/vox.yml @@ -21,8 +21,8 @@ Snout: MobHumanoidAnyMarking Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking # DeltaV - Undershirt: MobHumanoidAnyMarking # DeltaV + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobVoxTorso Eyes: MobVoxEyes LArm: MobVoxLArm @@ -60,14 +60,12 @@ points: 4 required: true defaultMarkings: [ VoxLLegScales, VoxRLegScales, VoxRFootScales, VoxLFootScales ] - # Begin DeltaV changes. - Underwear: + UndergarmentTop: points: 1 required: false - Undershirt: + UndergarmentBottom: points: 1 required: false - # End DeltaV changes. Chest: points: 1 required: false diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml index 90ecbf5a08..d83ad613a9 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/chitinid.yml @@ -109,8 +109,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] # DeltaV - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] # DeltaV + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] @@ -128,7 +128,7 @@ - map: [ "eyes" ] - map: [ "belt" ] - map: [ "id" ] - - map: [ "back" ] + - map: [ "back" ] - map: [ "neck" ] - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break - map: [ "enum.HumanoidVisualLayers.FacialHair" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml index ca45e896ae..bda72c7000 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/feroxi.yml @@ -40,8 +40,8 @@ # its fine, but its still very stupid that it has to be done like this instead of allowing sprites to just directly insert a stencil clear. # sprite refactor when state: l_leg - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml index 63a9605270..ef682a143c 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/harpy.yml @@ -42,8 +42,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "underpants" ] - map: [ "undershirt" ] - map: [ "socks" ] @@ -177,8 +177,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "underpants" ] - map: [ "undershirt" ] - map: [ "socks" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml index d3f28a4131..97eed6fe2e 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/rodentia.yml @@ -45,8 +45,8 @@ - map: [ "enum.HumanoidVisualLayers.LArm" ] - map: [ "enum.HumanoidVisualLayers.RLeg" ] - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml index 2948031355..dd1d2bac47 100644 --- a/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/_DV/Entities/Mobs/Species/vulpkanin.yml @@ -45,8 +45,8 @@ sprite: _DV/Mobs/Customization/Vulpkanin/masking_helpers.rsi state: female_full visible: false - - map: [ "enum.HumanoidVisualLayers.Underwear" ] - - map: [ "enum.HumanoidVisualLayers.Undershirt" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - map: [ "jumpsuit" ] - map: [ "enum.HumanoidVisualLayers.LHand" ] - map: [ "enum.HumanoidVisualLayers.RHand" ] diff --git a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml b/Resources/Prototypes/_DV/Species/Oni.yml similarity index 89% rename from Resources/Prototypes/Nyanotrasen/Species/Oni.yml rename to Resources/Prototypes/_DV/Species/Oni.yml index 88ee0825f2..d5e6cd459e 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml +++ b/Resources/Prototypes/_DV/Species/Oni.yml @@ -35,12 +35,6 @@ Chest: points: 1 required: false - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false Legs: points: 6 required: false diff --git a/Resources/Prototypes/_DV/Species/chitinid.yml b/Resources/Prototypes/_DV/Species/chitinid.yml index b70c696f3a..6fbb42219a 100644 --- a/Resources/Prototypes/_DV/Species/chitinid.yml +++ b/Resources/Prototypes/_DV/Species/chitinid.yml @@ -17,8 +17,8 @@ sprites: Head: MobChitinidHead Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobChitinidTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -69,12 +69,6 @@ Chest: points: 1 required: false - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false Legs: points: 6 required: false diff --git a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml b/Resources/Prototypes/_DV/Species/felinid.yml similarity index 83% rename from Resources/Prototypes/Nyanotrasen/Species/felinid.yml rename to Resources/Prototypes/_DV/Species/felinid.yml index 8a3eb7fa99..e56f94bcf1 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml +++ b/Resources/Prototypes/_DV/Species/felinid.yml @@ -6,7 +6,7 @@ sprites: MobHumanSprites markingLimits: MobFelinidMarkingLimits dollPrototype: MobFelinidDummy - skinColoration: Hues # DeltaV + skinColoration: Hues - type: markingPoints id: MobFelinidMarkingLimits @@ -28,12 +28,6 @@ Chest: points: 1 required: false - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false Legs: points: 6 required: false diff --git a/Resources/Prototypes/_DV/Species/feroxi.yml b/Resources/Prototypes/_DV/Species/feroxi.yml index 3c85d0e437..44a8d1d704 100644 --- a/Resources/Prototypes/_DV/Species/feroxi.yml +++ b/Resources/Prototypes/_DV/Species/feroxi.yml @@ -20,6 +20,8 @@ FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking Chest: MobFeroxiTorso + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking Tail: MobHumanoidAnyMarking diff --git a/Resources/Prototypes/_DV/Species/harpy.yml b/Resources/Prototypes/_DV/Species/harpy.yml index 3f47171710..b03408cfa0 100644 --- a/Resources/Prototypes/_DV/Species/harpy.yml +++ b/Resources/Prototypes/_DV/Species/harpy.yml @@ -15,8 +15,8 @@ Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobHarpyTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -53,12 +53,6 @@ points: 1 required: true defaultMarkings: [ HarpyChestDefault ] - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false Legs: points: 2 required: false diff --git a/Resources/Prototypes/_DV/Species/rodentia.yml b/Resources/Prototypes/_DV/Species/rodentia.yml index e92484d8df..28e13be228 100644 --- a/Resources/Prototypes/_DV/Species/rodentia.yml +++ b/Resources/Prototypes/_DV/Species/rodentia.yml @@ -20,8 +20,8 @@ Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobRodentiaTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -55,12 +55,6 @@ Arms: points: 6 required: false - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false Snout: points: 1 required: false diff --git a/Resources/Prototypes/_DV/Species/vulpkanin.yml b/Resources/Prototypes/_DV/Species/vulpkanin.yml index 22e71716b7..bea42ec028 100644 --- a/Resources/Prototypes/_DV/Species/vulpkanin.yml +++ b/Resources/Prototypes/_DV/Species/vulpkanin.yml @@ -19,8 +19,8 @@ Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking Snout: MobHumanoidAnyMarking - Underwear: MobHumanoidAnyMarking - Undershirt: MobHumanoidAnyMarking + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobVulpkaninTorso HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking @@ -51,12 +51,6 @@ Head: points: 3 required: false - Underwear: - points: 1 - required: false - Undershirt: - points: 1 - required: false Legs: points: 6 required: false diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml index 0bf010543b..a08045cf70 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/undershirt.yml @@ -1,8 +1,8 @@ - type: marking id: UndershirtDefault - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -14,9 +14,9 @@ - type: marking id: UndershirtRolled - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -28,9 +28,9 @@ - type: marking id: UndershirtSleeveless - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -42,9 +42,9 @@ - type: marking id: UndershirtRolledSleeveless - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -56,9 +56,9 @@ - type: marking id: UndershirtGrossSleeveless - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -70,9 +70,9 @@ - type: marking id: UndershirtNanotrasen - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -82,53 +82,11 @@ - sprite: _Impstation/Mobs/Customization/undershirt.rsi state: nanotrasen -- type: marking - id: UndershirtBinder - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" - sprites: - - sprite: _Impstation/Mobs/Customization/undershirt.rsi - state: binder - -- type: marking - id: UndershirtBraClassic - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" - sprites: - - sprite: _Impstation/Mobs/Customization/undershirt.rsi - state: classic - -- type: marking - id: UndershirtBraSports - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" - sprites: - - sprite: _Impstation/Mobs/Customization/undershirt.rsi - state: sports - - type: marking id: UndershirtBraStrapless - bodyPart: Undershirt - markingCategory: Undershirt - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentTop + markingCategory: UndergarmentTop + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml index b8199e4b43..c179f98810 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/underwear.yml @@ -1,36 +1,8 @@ -- type: marking - id: UnderwearDefault - bodyPart: Underwear - markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" - sprites: - - sprite: _Impstation/Mobs/Customization/underwear.rsi - state: boxers - -- type: marking - id: UnderwearBriefs - bodyPart: Underwear - markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" - sprites: - - sprite: _Impstation/Mobs/Customization/underwear.rsi - state: briefs - - type: marking id: UnderwearLowriders - bodyPart: Underwear - markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: @@ -40,25 +12,11 @@ - sprite: _Impstation/Mobs/Customization/underwear.rsi state: lowriders -- type: marking - id: UnderwearSatin - bodyPart: Underwear - markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi - coloring: - default: - type: - !type:SimpleColoring - color: "#FFFFFF" - sprites: - - sprite: _Impstation/Mobs/Customization/underwear.rsi - state: satin - - type: marking id: UnderwearTanga - bodyPart: Underwear - markingCategory: Underwear - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Diona, Moth, Vulpkanin, Rodentia, Harpy, Felinid, Vox, Oni, Chitinid, Feroxi] # Delta V - Chitinid, Feroxi + bodyPart: UndergarmentBottom + markingCategory: UndergarmentBottom + speciesRestriction: null # DeltaV - removed restrictions coloring: default: type: diff --git a/Resources/Prototypes/_Impstation/Species/thaven.yml b/Resources/Prototypes/_Impstation/Species/thaven.yml index bb2fc09c9a..54525c9edc 100644 --- a/Resources/Prototypes/_Impstation/Species/thaven.yml +++ b/Resources/Prototypes/_Impstation/Species/thaven.yml @@ -24,6 +24,8 @@ Head: MobThavenHead HeadTop: MobHumanoidAnyMarking HeadSide: MobHumanoidAnyMarking + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking Chest: MobThavenTorso LArm: MobThavenLArm RArm: MobThavenRArm diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/binder.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/binder.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a5a6c8d4fd13d4909ac81ca574f8ad0ca6d40f GIT binary patch literal 18549 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 JJd-WE{{tzqbV>jK literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/binder_vox.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/binder_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..e318b9925fa990f938ed577be60c779024b2a6dc GIT binary patch literal 18528 zcmeI32T)U4_rM>*(v+fth=?0N1%Z%CATfjzs#2s0SV<>R5|SXr6+xv~RzyUaAnGC= z3ko8jG_fEcve;-UAfgNIf(okwUji!l)XdI&`=9@OGs#Ty-nr+VbMO7#bI-jmGjHEI zM;kfWC9(hj$l2Liy6~@Ng0HkB|2K~r*u}rdux-7#03cr{_=+X!$*Tc?tP_(+T({1L z#ba@OSZs(LkqBXPSahZz4FEzOr@J!TTn84JjCQ@TSQ{I0bS=w8SsLPEaUen|exe6i2-Bb zc)XrwmDE*0ETna=G*IP`Rs~-gGpX>>B4v|U#9px~UcB*I=?EpjEbNfQ8Nke1EFwL5 zr7Msr0eCl1$UVS1DB!KV>v<~>kv^8PLk!q>R6|)TGai5}q{UhSKC6L(=Jorn08coe zL|x7C2W5R5dBiy#Pqh1K`fFQL6xn9f0>uEv*n>ZwjDfJ?w%1ORq?= zUzblR4RGW>6EFqKb?}D?Ayw0|1%v%KXue zjE6MI7d16u4wcAng}%HdIjKn|_e}IP=d<|}_mmgjGNBJEUJ|idGQxl2)QTYqpDlAU zgGLX~FDRH@0x}04dyKFJY^+WmE_?K-uebN%nmUV(q}v`lCm1zbt31a2{tm}~9DV!b z>a*pM$jy;95@Szl?!2+jTH1U>W-qzpd7RD1(z%l#)mt^|?8s%Fx=KCH3jz;WrXCzY zW@+xTII`;cihGmPXWjZA#0lMoz`1P%u^sWyoXr&RcWbp3J$Y5nMgd^BoK^k1j4hYX$FXAM{hnHfq*YR)#x$yJB^Df54!ISpug$?3px`B!*hfTammQvCcm6lGdkgMa-wSZj8qm*8L)$LVO1Sly>U%*7 zdsH8ycQdLty|=a()vMO4F}zVWoop8P+nDP!9hckN)~NO=_M!VEX~{@)_tU8^ojE7n z<{QRsuqZrP;&RqGCTAf!C>7hdXOZ37tin@?txJ4Vd`6jPU+}KX?@V0gm~_|UUc-RR zi=-FgZ-VE^MJw;Q5zEj~O(sHO{Z%gsBJ*OfQdeZ;-NEiQM9>&_x;ca&>SuFUVp^4;^&*S&I8b7kbN z&WXumeBd+PE^nTYzuASMk*^3-Z zaBqtY@_e(@PL^8+Ukk_{O3t{tB_hL~mE9Fu+5dj&PT08Hxc~d?w>I-UC5z`Rmu#Qc zv>1QgFpz~;huvuZ%bB>j){K}%N+cyc-5X!lfy_o{zF~8*bzyqpiu>h-<=OMI%N!FN^E2)nn=e`!xxhE3gzTE}kPDH0j z#-)BO7zGyZQTX6oX;yIFDCxBd;T?f}?~62#+&JgMSlBNb*AAKD+G+1DJQ_4Vm|147Y#z6}aCcvIp@z@R zKMogajP@rt#WykKqt=DLxPMoQ^qh2{Hhi9TR7{jdwCN#stml#zM3P}}O9zqLZTa5v zm}OTQ1L1@{3teNVOUN_WhJS2y1%1V|-hl3Pr_D3n)6Q@0Qmlb)5hlRzYWK&%k(g)c z&*t{*P)UZ}+{_L=*;Ml;Dtl3`!2*5UF*EyEN8_V^nk(w&EIPPicwz90L$aYY>NN~a zSPP~l_91bT?lQ+=TV02+BY(tK7=|vtj>^*SE8DA`d$_`0&b~7Zm$4{yJH#Jpf~!RA zITC+3&>~O6A)$ovlJT6ry`g{>bz$Oqz=2ZOvP7v{zQui#kboJ8y$arVsdan&4Q;#O0uHYdO+1ZpH~)a!(PA#hPKQ0 zDF37vyqIeKprzwl8YutBwbQo1Hvi zUfq{S@1xVz2+I5R7b&%?Bq{HDsM8VBrxwGyeJ!Qq=*8Upx-x1r{T_Ybc^5Qeqx`YF zq~}TU0dkKXUzF=!e{t~bJF9kBQln0L`JNJD+39Qe%N4ZjTTP9tP2GNTd*k-r4KsAF z^AhR7SU}5=+K!5M=s()pH&%>}6K-8?cNcSaXrs5$KG=OI9yKl6mp3qW?1TU2LP!6= z!5iZD#K)zyO`C=< z^M)_9_bv3e?2&pFx7Gh8?XaSFtr;!@%oqUEArWf&8%*k`7k@qv%o#Aa&q$_$l>QxgqE zDvMy@V{NYr( z3QoPhKz8X&`uu(Vt?S+F4+*LX36m1y$s->rC}=wXtbWOK^W=Ft*yAWHe*+SgMWz{q z__O&3Q2@Z3hOkK#Um6cWrZJcSCYrCyuW3SUlUDpL4y!ahjkDli$jAL z8epIlIK~KKgf&1I8X2LD^dU$%!Vm^W!BB805`{yzgH50A&j!C=9`!3M!70~Ut?LtwF37#s;hBBA^mP;O`dj}!t8;A%}f`RvD%#-(tW zY#x&p01@~lky$}J6HQG)Ltj3h#^ulc(og{R6FWXdSO|#?Lm0qeKQMA|5N_u0|6NNi z&uTlrC!a?4-3GaCp==t=g~nwCaVRva?X&=%*7rI=rF`+j4&wMt@u5;+G(Va@--OHW zJmR}uV1IrB`C|T6H@>KUIC>tFJ~KIA*$Om2G^2$ue_$riOq)%G!t@N``SFJ%a%dzT zi{r*(`4Oh0Z07li|M(<`Du|8;Gl0qp=B~oSz$P>EJ>!jLN#fB6NH`J=MIfMXv>U<@ zheG3!C_Oj=2ZzscGF=no!+{_BR1%N$jTa*v(h!F*n(gJQx?n#nDw7`ikG#y({Mv_u z1I{jh%OeF)Xm*wa{@4weOe)S0Wr)Bc5Hu*7M5aJVbTk}Ff@6_TV+;mCN5L@|G8r>9 z$gj=6ac#+>1PKC(?|ORSQ&|+g`!C^vqoUC$1clEKOCn?WENOJ8u`!(@Xo!xXA!)`& zDCFmcW;y$&Atw%#pO;8}v+4-OLghC`MxoING=c(!V@VjO5gcs@HHI6Kpd>7UOve}* z!Lel2=O(`6=9{K$nOuG}h0cmHeymMp9#>l6*QK8oe$1&1!X|OJG{M3&(fqtJzoeWm z8AV_-wZL&CiXit8D1z{%QSq>^N@u$D#qyIG^V{kCX9%YK&ocjU8^J!b0Ab-j?P{vl zkDYK?bY3utLo;XaBjlf~%xSM*n}OZqVS-%k$NWE-2rg;+e>V+u3JFdzMq{B!LktB< zC8JSLEXvRjN@V_*3|12N=Hwy@q z`TzeG(7!fw(<|}oocKAzlWb+NI4*jW)V2rLEzMH(PxyO~vQmLI|K1jpYe_&JL- zm7n=G-;{ytdkXTsU(i&2EC$a1zz~ApPo}fgU{f#QrnA*x(-}+m049&X-$5SpK-C6m9)a|OE<2K~tftoW{>*N+TmDLxrahtsS> z`Ba9VF6AHj`A-|LFOM7FB>yjaCD8eP24@fJ*1p*>m6yXxi2c#9@0s#>&if{?%1Ja6cfq)1XMYx3X0cl0J zKtP0xB3#1xfV3i9ARxj;5ia3;Kw1$l5D?*_2$yg^Agu@&2#9b|giAOdkXD2X1Vp$f z!X=y!NGrkx0wP=#;S$aVq!r-;0TC{Wa0%xF(u#0_fCv{wxP$zPi2Uqf6?S)WmT^s-)Yy|*B>;ZtkC;8U_00@Euz)Noc zz$F8K3hT($>(&4umS|^b?iTX+k9OxnH4sI~C!`*$=ZRYEs4&ftBJCPI_Q3(?iJdKy z7 z!}@k)m57Eu>GU#dyS(x+gqAI-DsgZG8#PD|w|?J2>Z0 zebPXJ;rn26%FpNCIX)SSn@^BgFhfw#Lu2oc@&L8c*t@lSi@M-NZ96MR%OVT!-TwjC C%y9Vt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/boxers.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/boxers.png new file mode 100644 index 0000000000000000000000000000000000000000..f7aadbe9eb2baa59994aeac0bd2d3950ee1ddec0 GIT binary patch literal 16324 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 L!qlsqckBN*bc<#1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/boxers_reptilian.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/boxers_reptilian.png new file mode 100644 index 0000000000000000000000000000000000000000..2b851f456c29c7d1dbcfbdb0a50c2dda1720fd5c GIT binary patch literal 16324 zcmeI3cT^K!7RTrJV^u`O-dhZI2$M;Jj3I&q1vQ8i0V~5~LPnBIOa=(pu=n13?~1*5 z#ol}GT~X}4>?EOt2h4Hz_uI2)_e{=7x$nO3eeZqVeRn2*%!shiHs#!Exj_(AE+kkL z&V2jZ-mWgp=bWtrvY4;Zrr=l$1i5G0-hWK-bgvCTEvA!^F?5W&J&IEXZ%jkQ6W&&X ziRleNik4Orh9?poqPE_Qsc*uma2tnQy`%ugVW4JL|SMho|cHqHT;%J zH-!~t0vHGy<5>-QqXo74@$GR@=C`dG=JV`b=tMt$fNeltj5>@LNSO(q)LSONg)$$W zkK7xP`uIqEym%rZB87!wSS%EX#Hd7wN<_Sz7hmbd{8E@TS~OhMI%hb>^5g4h+JwSz zN=k}%irAYnC%}kYE{BC8SR@iKJp`6iBaK-FMvI3dNNyYzVZqI$i6$u{&lVSpr;=zt zKHoM_-YaKa22mb5Mo8Eps@2Z&LZMX@o@6^MIiWR7XmLCu#0ja7fFLlTKq`?C0$(vM z7KnYdQUn*vmm_W$Y-MT99dR4{2_@-x*bZ<*}1*Rlwr zSHad?hn}?8Bok(~5VjNN$Im@-c||O*M%gs>lZ#@wt(qxu+kqf73b;UP{xF@nfXu2qW8pa)h$?Dn5vX($XoInFvT=a^iQ+x+7{q85mvx+p52w{10q| z1xx;G+u$P=6H-De5=b$POdu9XqyjnSD-qzbczL{7hWpASOtSx#ZIGZ61Qp41Ytnyj z8}hRl*I~v4LZgIpSC-rGzqE6|R{{U+ohy7b`9Ih>$4M+$6LU*>;To#2-AJHJ{bgza zX0LmQ0xr~+pEHjBF}6CYPqO!y%Y@7eMr@xsQfD_Pjb)cQyFqEbGRjEOwkxZBqCm5g z%67NoxD-b)H|B&=CY6e%3K(n#6=9^6(8s7q=9+1-T?u5891Z9wQW#sD(8-Y_bZnK= zEwsIQI$D_leCMg?MVg8)F-O%4}3AHd7u0)Via94>Y~ zfS1Ds0AV*dTCz>19&-H01$SQ z!^O@A@N&2SAnYcGi=7YPJ0HNy;R1lLn;b57K7g0Q1pr|;Ib7^~0569N z0K#r^xY+psUJe%kgx%zDvGW1E94-I|yUF2V=L2{-TmTSulf%W%2k>&Z03hrphl`yL z;N@@uK-f(V7ds!o%i#imu$vq%c0PcY!vz3gH#uDFd;l+p3jo4yvf^^ff83TZGSAqi zFb~tN9vpg(c@UR}2ZyU6D6J6$r4NFjFTa@YXAqPmgrMhf5QI*Lpz74b9*0^(kP8&n zJ~AjREp5}LO}~Eq`u6P`qc2gSM9GpROO-0+>grm$bZIv?w=!kQlr3AfT)A@Y?(XHw zm#eQ`Uw_d$^ z_3PJXmf4^|13sVc;o;G+VZ%m^8Z~a*xJi>HO`A4t)~s3c=FL4lJ-xiV1OkD#w>J#K z%%c(*`BvD$jGRus7{?aMMp=+#KgqL#&+)9xl5NWUAuPe)~#Fj?%jLz=n)qehhbQJd_0ch z8jXe^2(4C|kdUC$=}407*|TS2VxnHJHy8{?qmiO0lgZSpS1+^KY_V8qnodeeN={B@ z9xk?8t*NQ04DH^%d-v(nr*GfB{rdIm-@ku)disC?0|pKpIB3wI!Gi}688T$((4oVI z4I4gu_=piBMvfdgYSgIFqeqV!GiL1AvE#;#8$W*hgb5QSPMkPt(xl0gCr_C&W$M(a z)22gCvnC@WW9{0t>(;GXzkdCO4I4IY+{h%x=FOY8 zY}vAP>(*`Cwr$_OeaDU+J9qBfwQJYz-Mjbf*|T@=-hKP_?ccxuz<~n?4<5|S%sh1H z(BZ>}j~qF2^ytxJ$BrF8e*DCV6DLoeJay{S>C>mroH=v$?AdeY&YeGh{=$U|7cXAC zbm`LN%a^ZQxpMXD)oa(TUB7<)#*G^{Z{ECh>(=etx9{A!bNBAud-v|$zkmP1g9i^E zK791((c{ODpFDZ;^y$-Q&z?Ph{`|#@7gG049#{30+ z+u|OiyQ1w>k}XI)0z4hhS;gdMy5W8CtMbkjbc)en|*89&S`xn8Ji=Gi0u>Chj4 z&Muvvl6CgV_xg7;R(`Bzii%E!bhAA6)zrC0lv1xNm7cj7{`(u^(@g;2-$efU zRZj8`0svN^HZCqPF$Xu}rX1YBR>Z}z4Mtp})nNc&y?|zAZT{}(@2`9jYPTmQDwD2^ zz7jZc$jBOd@#fMsrSFuIM=31pJTD&3JVl5{aGw@0E=adPs(>(_am?Kt|!d0dXO5 zk)L`k-!=dbY#x~rICEqw=Ua3r>ZjUdHy# zS(Ui^)S%V{Lju+|zTf(OW>Z*2P(|k2oo~MVmMp9i0>LG*J7&F{@nHS@Eq__vKBj!{ zs`43yGw{muyNB)EwDULROFO@<8M1rV_O_VoB@aTYl^K&FV;WN*O&>5k@Z6~8z;8Ak ztKwB1g&VSto>5g?^{$m(pI;^ZCiGX$?4T#%Q1eT?v$;2-do+{#6h zbW<)&xRi2s$&u89b@iRMG5p9Pi zo7x&HgKKBky_(*DH(p(yTQy6Ff4%U-+{ga4)sHO=wof1~OxLI*M z`KObiTRQTJznpq==JdMI1s#?pCljjXS#F=boP2cY_sF+sefZ-o*wMiS1;6C|Hm}Vx zA_`u@>uA4rz3g`D6rbYiM`s?j-055j3^d_k_GQ{CmN?eo8Pzc-6#k?poB!(Q2otBWuj>C-@TM!`x zQI1f=7D*zw0+9$7O=j~rTmi)4LwpX%<4a+V6y~wJj*uun;!0*zYotl?XrV>ZN2|84^Mc)O~c#E7#CHklxhAj-Uux5d*}H;6QyDsnKp5L!MFRxHUBjVLB`q)0<6% z9k)+AgR6>loA(&9Tm8g=iI^lL^lj|A-`w0jhc=m~<`W3IkoFkXWoc3t7%(UaGvRqg z6q}k)Ol53evo~us?%?$BL~5RR@0eBl1T#|OG;^eaGeR&Mb2; z1jIT(W)*vUs#dSYEv5-Fh-%`Fx7!;gN6c6hkHdpOE*Ip$N-j^z;YkJXBo0@~;dnT4 z_N4eoz|~q!K`$R-DJ+o+_?|vIdQyE5&yN~0BTwbUv#*CAH7eEM#$3c4rOidMG033L zmO<`DkDlFGC5^*%xRJOmEQ%|G`fBdeN{*v>WLn4QQOraH!{iYpB2-fdzklfJ;$gemJmee(Z>~#|73_h-1HhMUQ6a$LC-{RflVKu9R|=L@9!j%S04PRvJt#gL<^OZ>!r<=Io&D9l)nU(98VEV_0%9 zJzb@8x^nb-vJ(@oF-vj3hiz*3ki(@CEk39moBLL zt*h4x*S-Gykr(b6{gGZNzL-HMKgNvRIMa$r#0HGHdT=aY>S_T&d2))SQ zqUS@=GPo!}=tTw>Js*me!9@W=FEY63`B1bBE(#EOk-YWl?>cx8oRmqxX(=;p0c z)hWu?kKca;PxhMducFs~^WB#14Gwxe-*WME>E^7KYH7^Rb@+3q#Scyo+|i!NTIV0V zVc7i7WnmgGV4!&A!L3V+gY56>Ozqi1j#fU3RqLnv=u`fH?^ZuRyd-zmeo}HI^kHzx zTP4T-Rx0tW_1#tLT>-S$7flea2oJE|@SfRzUOtP(ne^fd`p=9t1v6G|y(b+%%HMts@M3R1 z)AT}gXIWdl|7&ONKWr?o15T#u9?$KsRNnZhx*P&#TpA0kIX5FYv>}|m?cDmSVXV9F x*Y7_SapTQ*_l`fjVOdd?p7j+VEcxIj4%}|NY&$F)Y9T*@S4^EP-xr%z_HR*lL)`!X literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/briefs.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/briefs.png new file mode 100644 index 0000000000000000000000000000000000000000..4874810d992a0da486d2a30a1395dcd7e47a016d GIT binary patch literal 16302 zcmeI3cT^M27Qpw@XG6u_Ta3Mg&8ET{qDW9sg9xZ#Up5<9NwP6nAYjAZd+)vX-W7ZA zioN&Vd;4Y+N*G{|@A$p*&UGTFTj3;Q_96^S6y@bGTS0FG z(KL2g2{M*qMNw2VZSfVq+ObD0q7A;{_Da1}Z}q2Q=)fc!6_yknPA0{YJ_d1Pt%t^e z0|#b`B}5Lh$zsPHzGA0e9Q@{*QL)I`g^l$U`*8z`BJ?35f5t|MlwK+cDOIUOY9B95 zsa7l04Mj33rbMN3R4$dstR2{4Ioerc7?!ce zFu4qwq0V(+5EH#VW9%H~Yc}UNw4Duz2ME%T=4fdTPqb2KC}n5jY$O#B50+9Rr`5Bx zF*7(>JaL*_=T153T+BF)%gmVyt_W$sT5*3HMX-!5oMB8_SC)mOBNX}jJF`kuw>@n! zFbVd08Wc9kjCZCtN=LAiRwk7xBp4=hs$rMV7kGD!KF(~Cx zK2n)nO(~R4h8xw=^t$%n3qxiWlQD!Pnlfn7 z^p&MI{4YiB_bT9@MJ~%}@_!IH*G|k@6Vpq1_8O|;9wcy3e?cuEoOKV=pxN3obH>#_ zf~%vZIA?z!l@z>CjQdP8byvftk^H9aYS=W>vaN+?xs%m7QK;F?ihJ5|9mQeb!JN{n zlu9``G2v#|B7}BOrU)Gk&P+RZ5~vhuHn1W`!^qqW-4tntu28u>LOZLcs}($;gZ~C- z#-D?1g*D^+`6qv5uIQii3i%QSfq?Lf0xo_&kXFD20pS+~T>N|>t$+&x!Y>NA`1wFu z0T%>>Ulefh^MSMiE(i#}DB$Af18D_Z5Dvd7_(cI1 zKOaad;DUhgivliwK9E+x1p(m~1zh}mAgzE40>Uo}xcK=%S^*aXgkKbJ@$-SS0xk#$ zzbN41=L2a4To4d`QNYE|2hs|-ARzprfQz3Gq!n;MK=?%g7e60JE8v2F@QVU2em;;^ zzy$%}7X@7Wd?2lW3j)F~3b^?BKw1G81cYDY#pRKC-IlU|JGKenGHuHdo9=>(xFRwz zRF5D@wGbqE0D^q^1-_pkNSqWwo_0eJd@6#JW5#zq*bG7PA|b891I%XgoH=tIJ$m%( z7wC)R%a<>I{`>_B6ew7*V4*^VJUl!K7cN|+NRgsNi+Xx`7Asb)c=6&TN|Y#BvSg`J zrAn7BU8YQ#vSrJbD_5?3`SKMiRH#_7Vx>xzDp#&trAn2mRjXF3Rt+q(diCmJvA9N! z8Z~RytW~R4?b@~L)TvXqZrytI>ea7bzd?fr4I4I;NF-ifUMPx!s}vZ9$z(FQT&_?k zluD&arBbWa-rnBeS}u;`jT$x5Xf(dQzFMueapT5Knl$nA^K06)slUI!PNxe92x!)< zS@Y)20|Nttf`VGKXwkA|%T}#g>Gk^H;NaG+TZe>%v}w~OG&D3UEG#@cylvaI?b@|# z-@biBL_}m{WQPtNI(F>XsZ*!UojZ5w(xq$HuHCwIBM2fYDvBh*r9lHlQAVRNIyyQg zCWfZz?%lh`#>SdVCV~=fLvT<>7@$vECa9Cnxvo*ROy7{sRUK7&vg?ph1HM4<0;Z$dI8!hYlMyZ20iu zBSwrEIdbHvQKLqW9zABvn6YEWjvF^_{P^(`CQO((apI&&lO|7|JY~w1sZ*y;n>KCw z^yxEZ%$PZI=B!z>X3w4tB0G2P+(;Gbzkb7p4I4LZ+_Y)a=FOY8Y}vAP>(*`C zwr$_OeaDU+J9qBfwQJYz-Mjbf*^`ozvUl&^ef#$9-@pIBfddB*9z1mD(BZ>}j~qF2 z^ytxJ$BrF8e*DCV6DLoeJay{S>C>mroH=v$?AdeY&YeGh{=$U|7cX8+O-;RY>C)xP zm#o;%SynXxj-Me@1-@pIx;lsy|A3uHi z^!fAWFJHcV{rdIWw{PFSfB*60$IqWXLCy!g|Ec8io(&BS1L7~_+h)%&&|nYJ`Gq^K zK2OCwQ=|p+rUX8`*k{VEdt2DYx*2Q3pBhrp~(mY3>>=7?pi8XO{_>5Lt>alk4Gt=DVH$Gh~HIO}3F5$pf&HcRE&-z14 fqf*P?ZhHw)A0~swY~42s437i_1nX8e?biQqh+km8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/briefs_reptilian.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/briefs_reptilian.png new file mode 100644 index 0000000000000000000000000000000000000000..09e9d5fb11403a064b0a2d0ae7d0d84249411823 GIT binary patch literal 16290 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 a6gm06^Q`o>x4_;+kkH^T&8ntx{r(9BtXQ7_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/briefs_vox.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/briefs_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..11e2744caf61470c409a5eba12edeb2bb39a1ae1 GIT binary patch literal 16927 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/classic.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/classic.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b987b8d112d8be650d592871e11cb034e95936 GIT binary patch literal 16315 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 D(WGN* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/classic_vox.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/classic_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..2323e312530f74cca4809846985d92e498c8bea8 GIT binary patch literal 16701 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json b/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json new file mode 100644 index 0000000000..345c141ccd --- /dev/null +++ b/Resources/Textures/Mobs/Customization/undergarments.rsi/meta.json @@ -0,0 +1,79 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "sprites taken from https://github.com/cmss13-devs/cmss13/blob/884ab172389b6fc54ef063f5fbea5e8b0a0a2235/icons/mob/humans/underwear.dmi and https://github.com/cmss13-devs/cmss13/blob/884ab172389b6fc54ef063f5fbea5e8b0a0a2235/icons/mob/humans/undershirt.dmi, edited by SlamBamActionman", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "briefs", + "directions": 4 + }, + { + "name": "satin", + "directions": 4 + }, + { + "name": "boxers", + "directions": 4 + }, + { + "name": "classic", + "directions": 4 + }, + { + "name": "sports", + "directions": 4 + }, + { + "name": "binder", + "directions": 4 + }, + { + "name": "tanktop", + "directions": 4 + }, + { + "name": "briefs_vox", + "directions": 4 + }, + { + "name": "satin_vox", + "directions": 4 + }, + { + "name": "boxers_vox", + "directions": 4 + }, + { + "name": "classic_vox", + "directions": 4 + }, + { + "name": "sports_vox", + "directions": 4 + }, + { + "name": "binder_vox", + "directions": 4 + }, + { + "name": "tanktop_vox", + "directions": 4 + }, + { + "name": "briefs_reptilian", + "directions": 4 + }, + { + "name": "satin_reptilian", + "directions": 4 + }, + { + "name": "boxers_reptilian", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/satin.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/satin.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1e6ec3ab01850adecf8e82a25194dfb030a53e GIT binary patch literal 15723 zcmeI3Yitx%6vwB&0u3~N(4az^WwC@>X6Lc5&bYgPU9b%#VpdlKG4G8^WLIR1A(D0>+NkPO)4Ua&O1PlbxNa6$H3l!9(dS{>0yW5*87^At9 z?9QJ1zvrAgzkBbQ*$=a|dDWA%D<7$(C~9_7W3UCDmztj$_rdRX)t=AbX=b9aL#L>! zkIYZSj=HM36!rKnwXNM~4?QKyTFfCSS{OLeu>|Z*QNAVVgd}$Z!xjdeYTR%Ce)O>2 zrYe5>T6c&IB^p4N+BlE|tplsttviP%{xUGE4p}F z?yv_c;V)lOiHI%16}fcK^4q%%BOx+ODwT4ioDMD7$#8-oFf7mTJPmu$dVk!I(sW#3 zkPVWL69l@PR1=1(#cgI>DXjGxe!JaFR5)_i6-yKn#q}IJNRdfP35Ij9OgSe-F8CyR zlhMr36qx~05Cd^ThkjgHzeJa2XnL16MaqIaWnwrdp->@r+406=WmD_M@;-+!HcKD5QXB=qW}3M-uywe&GZ|5sC#2~(1)QPtu4?6<62xOy|S ztQGW3Zp{l(HB*xkQc?%zj`Q2|Tdq*V3N^~~$?RNFlFe!skj)JN6dyCGwK%MTXU(33l?|2YHFXeOix?>>36^!jH8GvNo{c)$4Gr&O%<3Oi|AC3n zrM}yn1~vj*aNn?WL=phayIdYxQoLRoIDyw0mZW-jB$A)zzc&rACh?-PP}lywX(+B@ zxl4+70wuuYuPop2Uz)k;RlwWXK*-(Xe=u{|ojAEB=1X~L4fUB15+ba>uog&}y2tsL zlD6WS$@XtI>u9t$(_iqg@L)LeJLhVZQP&QS%nQPe;UMQwbU zqJI4Yp1+}}UY4T1T}M&kE{d9?4L*N#1w~banu5#P(ig5>II?vMd;j>4%n8rnzM4Jv zUTmE6_Sr45JzHvzT-`o+=pA35H2?VZ`4e9~v{`v!;ijRP``v!w{Tn}+FaDMu8(%$| zIz2XWZei0HyJ-BqZKI=afj1u=>PUY%@XV=>!HJVh({ZO;^wDsURhmnaOs8{ zvv#)JnsFDJ{(}&8YU1O|)t{f8Q#-H1qE=Twd-TkH`@uEgONU~;zde0*bp74GG}eyv z%o`bA#*H5s-aXW@cH7ePRg3oCn2xwveBRJdFy=iZ9BF1Q@ zNnf7%&-0(%-^@I_{je`~bv`k@>7gcyqNYbW!rkzDk^P=_AN<^>um2u?HD)^cO^Rwh zV!s=9%x`X?sK<8ey?s_+bh)e=DYv2-G2qUpGO#yA1sCQsiaH1^ItCJYy3KWE{IHAG zwKmr(G0H_V?O;If7|nv7(av6VbWjawu7#ndU|xm>DPSpdK9x+Ha=y(~@Ri|jyP0*- zg)Y`$n`^N>Al(=3qT7uuphdTjQ8}MPO93}8N|IMvKnol%vYdzYaE#!Qy`1b7=+es- zYJ$IlSuHMihnJRygHfAnz_Kzj%jR-9ch2KBvI&+C1OhB4u!6wA9*jAXwv;@RHd~7( zWuGuG)vTVebR$jMzDmp(vf5lOd!WjzbY7`UWuUZKVh1U*c_qX0ZjP;&q^Xsh%uqI2 zI5bUVK@y}u+A?7tUpFr^U|5DZU`#S(MV@qEI499)W$e1gn@ZIk+O(DoLj)zHbu-Q0 zkqltFfoTk7Rj_0jo=R)Iv$ynkb#f*+*~+BH4)XdWX|_^KD=dZL36J>&YTxy(Uj_ZSKUBZu|P=R1TVw$4Cn3T1)1~6JU^e~ zWsY;06ni2bQA5+?BNIJ*y&NYCqAUnb4@Xbb1MVM9v6LyfIQu$$G*ylp*_2|1^puhS zY$lxuveiaM&&sNj+l{1=g@*+~o*-MV*^yOPX>ufOT1r|4k#Gn$xOH8VV`5y80MMAY zBKaA~>y;Qq6D3H}4}3n+@ArFR1&Gn8Grh(-Y^X!_ZYf!7&{~xMAM*xyMv{P+k>Xy3 z@oTXd6A%J^QSop-9~UTFJJM^cpUmp8(kV$tAN%P4>JW8oYKH32O}IWs9P1XY-a;+w z0qZBWmW8BVs7V|9wiY_CeOJ{z?5Gmy*{{)B#8kYAbDbn;uqub@-*MsG>9@M$ev1F`}d}yx{B2S zC7l3Th%KL4x#7Pwb5pB;cf5gWuO|P4nJezZi8ZlY%4=(A(7ut7Vf}@*Kq=HcKFHRz zRo6_hf1h1PlS7660UrlnEN_37Qk^oI+K*3l%4ljeb46OWLPBXYq}h>W-|ZAH#Xa!G z9E5zL=n;b~+Kgs&>3NXs3+wQjY1&r;pSP5Q3Uw3vCrfk)rNrV?Ic}i~)w9?NZ_wd? z1Ge(#pr)`^u0MD4NA-;ErYqt_20?(}LxKy>2T=(w1PDGPxbS=smEb~v;6s87&j(Qn zE(8cZB)IT=5S8FUfZ#)d3(p5p2`&T(J|wvCd=Qo3LV(~yf(y?FQ3);t2tFjZ@O%)J z;6i}lLxKy>2T=(w1PDGPxbS=smEb~v;6s87&j(QnE(8cZB)IT=5S8FUfZ#)d3(p5p z2`&T(J|wvCd=Qo3LV(~yf(y?FQ3);t2tFjZ@O%)J;6i}lLxKy>2T=(w1PDGPxbS=s zmEb~v;6s87&j(QnE(8cZ#NukIK5h%r@EO}2e3*9h*Tfq5ATF(TbVn&_^bv}B?sJJ-U>l8hnxP;@pFiXWnl=_*?t>uQzP0a@z{Q8vSzq_%uDm{Uv-`6%iF=nGd0@k`$f3~I zUpCHr^YrSsPfT0B>)7GeSGsSGt-Sr7=breZxhrD_$DjS8`PK|7Q1QFYUgN1*LM}e% ST=!nPHL|2Ly#MiaoBsr`Y!s#d literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/satin_vox.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/satin_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..e4c1178ab69b24781498c2d45e297672bcf5450d GIT binary patch literal 15717 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 ZKK2;t-Z$&PDQ1RHaA24!yH(HhzW}YaZy*2w literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/sports_vox.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/sports_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..f95ec114f2d1added1d38d31e79e215fb1ca35ba GIT binary patch literal 16821 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 Iv-R8m170VF0{{R3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/undergarments.rsi/tanktop_vox.png b/Resources/Textures/Mobs/Customization/undergarments.rsi/tanktop_vox.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7c4e1c02025ced0c229ed3503f8be6d7bc7627 GIT binary patch literal 18818 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 literal 0 HcmV?d00001 From ce334f03b8dc59dca89a15df2bc704fa917fa483 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 5 Mar 2025 09:15:11 +0000 Subject: [PATCH 44/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b7b5f2822a..de1dfbbae0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Beck Thompson - changes: - - message: When MMIs and positronic brains are inserted into plushies, their names - will be updated to the plushies name (Exactly the same way pAIs do). - type: Add - id: 7538 - time: '2024-10-20T02:46:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32914 - author: Calecute changes: - message: wide attacks that deal blunt damage will now deal stamina damage. @@ -3903,3 +3895,15 @@ id: 8037 time: '2025-03-03T22:04:26.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35650 +- author: SlamBamActionman + changes: + - message: Top and bottom undergarments can now be found in the Markings tab of + the character creator. + type: Add + - message: The Accessibility tab of Options now has a Censor Nudity Toggle, which + adds undergarments to all characters on your client. Undergarments selected + in the character creator take priority. + type: Add + id: 8038 + time: '2025-03-05T09:14:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33185 From 8c7c1a918f1b0f34051831d7bc81879b1191e68f Mon Sep 17 00:00:00 2001 From: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Date: Wed, 5 Mar 2025 11:26:31 +0100 Subject: [PATCH 45/91] More scars! (#35644) * :3 * whitespace, stomach scar --- Resources/Locale/en-US/markings/scars.ftl | 15 ++++++ .../Mobs/Customization/Markings/scars.yml | 49 ++++++++++++++++++ .../Mobs/Customization/scars.rsi/meta.json | 22 +++++++- .../scars.rsi/scar_chest_bullets.png | Bin 0 -> 508 bytes .../Customization/scars.rsi/scar_face_1.png | Bin 0 -> 560 bytes .../Customization/scars.rsi/scar_face_2.png | Bin 0 -> 499 bytes .../Customization/scars.rsi/scar_neck.png | Bin 0 -> 438 bytes .../scars.rsi/scar_stomach_bullets.png | Bin 0 -> 451 bytes 8 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Mobs/Customization/scars.rsi/scar_chest_bullets.png create mode 100644 Resources/Textures/Mobs/Customization/scars.rsi/scar_face_1.png create mode 100644 Resources/Textures/Mobs/Customization/scars.rsi/scar_face_2.png create mode 100644 Resources/Textures/Mobs/Customization/scars.rsi/scar_neck.png create mode 100644 Resources/Textures/Mobs/Customization/scars.rsi/scar_stomach_bullets.png diff --git a/Resources/Locale/en-US/markings/scars.ftl b/Resources/Locale/en-US/markings/scars.ftl index fae2ffe887..f31f054911 100644 --- a/Resources/Locale/en-US/markings/scars.ftl +++ b/Resources/Locale/en-US/markings/scars.ftl @@ -12,3 +12,18 @@ marking-ScarTopSurgeryLong = Top Surgery Scar (Long) marking-ScarChest-scar_chest = Chest Scar marking-ScarChest = Chest Scar + +marking-ScarNeck-scar_neck = Neck Scar +marking-ScarNeck = Neck Scar + +marking-ScarChestBullets-scar_chest_bullets = Bullet Holes Scar +marking-ScarChestBullets = Chest Scar (Bullets) + +marking-ScarStomachBullets-scar_stomach_bullets = Bullet Holes Scar +marking-ScarStomachBullets = Stomach Scar (Bullets) + +marking-ScarFace1-scar_face_1 = Face Scar +marking-ScarFace1 = Face Scar (Large) + +marking-ScarFace2-scar_face_2 = Face Scar +marking-ScarFace2 = Face Scar (Small) \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml index 68b47030eb..a7380f625a 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/scars.yml @@ -51,3 +51,52 @@ - sprite: Mobs/Customization/scars.rsi state: scar_chest +- type: marking + id: ScarNeck + bodyPart: Head + markingCategory: Head + speciesRestriction: [Human, Dwarf, Felinid, Oni, Feroxi] # DeltaV - added felinid-feroxi + followSkinColor: true + sprites: + - sprite: Mobs/Customization/scars.rsi + state: scar_neck + +- type: marking + id: ScarChestBullets + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Human, Dwarf, Felinid, Oni, Feroxi] # DeltaV - added felinid-feroxi + followSkinColor: true + sprites: + - sprite: Mobs/Customization/scars.rsi + state: scar_chest_bullets + +- type: marking + id: ScarStomachBullets + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Human, Dwarf, Felinid, Oni, Feroxi] # DeltaV - added felinid-feroxi + followSkinColor: true + sprites: + - sprite: Mobs/Customization/scars.rsi + state: scar_stomach_bullets + +- type: marking + id: ScarFace1 + bodyPart: Head + markingCategory: Head + speciesRestriction: [Human, Dwarf, Felinid, Oni, Feroxi] # DeltaV - added felinid-feroxi + followSkinColor: true + sprites: + - sprite: Mobs/Customization/scars.rsi + state: scar_face_1 + +- type: marking + id: ScarFace2 + bodyPart: Head + markingCategory: Head + speciesRestriction: [Human, Dwarf, Felinid, Oni, Feroxi] # DeltaV - added felinid-feroxi + followSkinColor: true + sprites: + - sprite: Mobs/Customization/scars.rsi + state: scar_face_2 diff --git a/Resources/Textures/Mobs/Customization/scars.rsi/meta.json b/Resources/Textures/Mobs/Customization/scars.rsi/meta.json index 0a323f7f65..9bc0d3263e 100644 --- a/Resources/Textures/Mobs/Customization/scars.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/scars.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Drawn by Ubaser", + "copyright": "scar_chest, scar_eye_left, scar_eye_right, scar_top_surgery_long and scar_top_surgery_short drawn by Ubaser, scar_neck, scar_chest_bullets, scar_stomach_bullets, scar_face_1 and scar_face_2 drawn by Ktyria(discord)", "size": { "x": 32, "y": 32 @@ -26,6 +26,26 @@ { "name": "scar_chest", "directions": 4 + }, + { + "name": "scar_neck", + "directions": 4 + }, + { + "name": "scar_chest_bullets", + "directions": 4 + }, + { + "name": "scar_stomach_bullets", + "directions": 4 + }, + { + "name": "scar_face_1", + "directions": 4 + }, + { + "name": "scar_face_2", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Customization/scars.rsi/scar_chest_bullets.png b/Resources/Textures/Mobs/Customization/scars.rsi/scar_chest_bullets.png new file mode 100644 index 0000000000000000000000000000000000000000..975e5cf6e7f7f8a4738be193463323237e80637f GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h2Ka=yUfB|3Aa^Q@lX644efXk;M!Qe1}1p z@p%4<6ri9)iEBhjaDG}zd16s2LqK9?UWuNcYlwoWo}r$J(EVl2KsDP^BRtbQJ+&A( zfE-o^DMnTXMj*=zh^3)ykc%}KnZe>rK(-+x6N3PdjsoJ$b{4RB7LW}B2|x_e52Mj6 zWngAtn841!0#spOWNg5=0Aeag2kQceNmGDq5MTnD!vt0tWN86pL3J4#7=UE2KijRi z_gVZFAhX@m#W5tp{p~bIz5@yzEK~p6?^=_2nZYZ|$AjN``mv_Nx4LtSI9Np*K7_Mn$jM5k@MQ@a0$o5M#Uu;&u661x_aZak)+#MzZ19Y z9T{00n79~#+I=1WIBWPVxSP)TCGP9=@{fW^4Y`gl^zEI%@=D@&gyc^(&X^C1BL+`b KKbLh*2~7YG<$$38 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/scars.rsi/scar_face_1.png b/Resources/Textures/Mobs/Customization/scars.rsi/scar_face_1.png new file mode 100644 index 0000000000000000000000000000000000000000..66cff8c5471ba9c078208fddbab4be4e01d115eb GIT binary patch literal 560 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`031o(uwE=WszdhGQ6i4)gURBUc;{`v0HtDAR#lH5C)PXH;7k|4j}{}8}% zuX%4IP>i#{BeIx*f$uN~Gak=hkpeQT#5JNMI6tkVJh3R1As{g`uSCz!HAKNw&rr`q z=>D>1pqg!|5uRzDo>~kXKn^Q|6eBAGBar0<#L`eU$QK%n%wTaQAls0Ui9rBJM*(qW zI}2Dm3&;k61Rw_KhtX)3GB7hROkihV0je-CGB#jb05KJ$gLMJKq$xl)2rvQ7VFIfR zva|rQpt=kV3_!BipY2xM`z(G7kh$E`#W5tp{q3~Vd@TkXu9cbp|M$0g8hdt!c5a?= z)Rx=T+kawjKs6`Je>DZM{an+RI2(1EU5pA$-Zn8X_kT#^%o$(X+k2jK=123-H{#lH zpIc#ZYwm;z&^ZoCLPu;evoV@=JAhtq$yE|1~i*k>`_ zfV<{UgxG_dm8Pki-`ZLwZohK0=FX;8`MlW?Y)l+X910w9Tv65xZuj!)kKf$16XbkP LS3j3^P6`6&$?5<8fySlIX){;^owGcEtRD^j-q>ie?WI^Tbn{eN1J z@$P!|q38GALMA@=oOj(OZ@bCNvqEtj_ie0v@h*pf!{Kqn;*S=4=biud*FU!0uDfxX z(nSRZ-si^~7fuY~b!D3(mV8H@St7XeiVBm`-Ly5TOq8?NnAmtPE0&tPG4mmKP99L)jqLXfQH^#hHL?Lq;YB0U#X( z#F_0ZVDT&<8w3)77^ELYqgl$p%)l^#oq+|Y!obMbfN=rDRFDqV1rU>_0NEhG1T=>U ztTM>b0?2~uGBhv%$zFf9TXFBR_$@$Ys;7%%NJZS+TZUXM4gxF(cDmd+ez)GI=bLq! zou7fEpjntm$d1)s%ND=m_hDf8u-xwLJhQ8_Vl_9ODXwXMSi}!94hUpUpSh&8Uh=nH rbj=y**}J#3cZ%hIenAmtPE0&tPG4mmKP99L)jqLXfQH^#hHL?Lq;YB0U#X( z#F_0ZVDT&<8w3)77^ELYqgl$p%)l^#oq+|Y!obMbfN=rDRFDqV1rU>_0NEhG1T=>U ztTM>b0?2~uGBhv%$zFf9TXFBR_$@$Yk*AAeNJZS+TZViM3IZ$+|L*?~sFr^izGm&# zi7gz{WG0;nx&F53?L?5awBnr8Uwa Date: Wed, 5 Mar 2025 10:27:39 +0000 Subject: [PATCH 46/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index de1dfbbae0..54f2ae0301 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Calecute - changes: - - message: wide attacks that deal blunt damage will now deal stamina damage. - type: Fix - id: 7539 - time: '2024-10-20T03:41:44.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32422 - author: Thatonestomf changes: - message: Mute toxin now mutes even after is metabolized, similar to glue @@ -3907,3 +3900,11 @@ id: 8038 time: '2025-03-05T09:14:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33185 +- author: Boaz1111, Ktyria + changes: + - message: 'Added five new scars for humans and dwarves: Three for the face, two + for the chest.' + type: Add + id: 8039 + time: '2025-03-05T10:26:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35644 From 9f111aff410f4993085f56ae7cac8f46bc5abb2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=81da?= Date: Wed, 5 Mar 2025 06:31:48 -0600 Subject: [PATCH 47/91] Lathe menu UI displays a count of available recipes (#35570) * commit * jumped the gun * changes --- Content.Client/Lathe/UI/LatheMenu.xaml | 1 + Content.Client/Lathe/UI/LatheMenu.xaml.cs | 2 ++ Resources/Locale/en-US/lathe/ui/lathe-menu.ftl | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/Content.Client/Lathe/UI/LatheMenu.xaml b/Content.Client/Lathe/UI/LatheMenu.xaml index d84449ce43..f541c8ebd2 100644 --- a/Content.Client/Lathe/UI/LatheMenu.xaml +++ b/Content.Client/Lathe/UI/LatheMenu.xaml @@ -59,6 +59,7 @@ PlaceHolder="0" Text="1" HorizontalExpand="True" /> + /// Returns false if no data or not rooved. + [Pure] public bool IsRooved(Entity grid, Vector2i index) { var roof = grid.Comp2; @@ -49,6 +51,40 @@ public abstract class SharedRoofSystem : EntitySystem return false; } + [Pure] + public Color? GetColor(Entity grid, Vector2i index) + { + var roof = grid.Comp2; + var chunkOrigin = SharedMapSystem.GetChunkIndices(index, RoofComponent.ChunkSize); + + if (roof.Data.TryGetValue(chunkOrigin, out var bitMask)) + { + var chunkRelative = SharedMapSystem.GetChunkRelative(index, RoofComponent.ChunkSize); + var bitFlag = (ulong) 1 << (chunkRelative.X + chunkRelative.Y * RoofComponent.ChunkSize); + + var isRoof = (bitMask & bitFlag) == bitFlag; + + // Early out, otherwise check for components on tile. + if (isRoof) + { + return roof.Color; + } + } + + _roofSet.Clear(); + _lookup.GetLocalEntitiesIntersecting(grid.Owner, index, _roofSet); + + foreach (var isRoofEnt in _roofSet) + { + if (!isRoofEnt.Comp.Enabled) + continue; + + return isRoofEnt.Comp.Color ?? roof.Color; + } + + return null; + } + public void SetRoof(Entity grid, Vector2i index, bool value) { if (!Resolve(grid, ref grid.Comp1, ref grid.Comp2, false)) diff --git a/Content.Shared/Light/EntitySystems/SharedSunShadowSystem.cs b/Content.Shared/Light/EntitySystems/SharedSunShadowSystem.cs new file mode 100644 index 0000000000..ed6069d0f9 --- /dev/null +++ b/Content.Shared/Light/EntitySystems/SharedSunShadowSystem.cs @@ -0,0 +1,39 @@ +using Content.Shared.Light.Components; +using Robust.Shared.Random; + +namespace Content.Shared.Light.EntitySystems; + +public abstract class SharedSunShadowSystem : EntitySystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnCycleMapInit); + SubscribeLocalEvent(OnCycleOffset); + } + + private void OnCycleOffset(Entity ent, ref LightCycleOffsetEvent args) + { + // Okay so we synchronise with LightCycleComponent. + // However, the offset is only set on MapInit and we have no guarantee which one is ran first so we make sure. + ent.Comp.Offset = args.Offset; + Dirty(ent); + } + + private void OnCycleMapInit(Entity ent, ref MapInitEvent args) + { + if (TryComp(ent.Owner, out LightCycleComponent? lightCycle)) + { + ent.Comp.Duration = lightCycle.Duration; + ent.Comp.Offset = lightCycle.Offset; + } + else + { + ent.Comp.Offset = _random.Next(ent.Comp.Duration); + } + + Dirty(ent); + } +} diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index d1c7473746..cbb4d5d51e 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -51,6 +51,7 @@ - type: RadiationBlocker resistance: 2 - type: BlockWeather + - type: SunShadowCast - type: entity parent: BaseWall From a6204955941014a056731ad7faf8a5ccb2af2b73 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 8 Mar 2025 05:08:48 +0000 Subject: [PATCH 60/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d0037bd08c..058248b67d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: NoElkaTheGod - changes: - - message: Station AI can now interact with long range fax machines. - type: Tweak - id: 7542 - time: '2024-10-21T12:44:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32929 - author: Southbridge changes: - message: Box Station's window between the containment room and TEG has been upgraded @@ -3907,3 +3900,10 @@ id: 8041 time: '2025-03-08T02:42:50.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35630 +- author: metalgearsloth + changes: + - message: Walls now emit shadows on planets. + type: Add + id: 8042 + time: '2025-03-08T05:07:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35145 From 30001ae82c01f888b379f32fc3aaa632ae95a298 Mon Sep 17 00:00:00 2001 From: Momo Date: Sat, 8 Mar 2025 10:21:21 -0500 Subject: [PATCH 61/91] Aroace pride pin, scarf, and cloak (#35718) cloak, pin, and scarf added yayyyy --- .../VendingMachines/Inventories/pride.yml | 2 ++ .../Entities/Clothing/Neck/cloaks.yml | 9 ++++++ .../Entities/Clothing/Neck/pins.yml | 11 ++++++++ .../Entities/Clothing/Neck/scarfs.yml | 11 ++++++++ .../Markers/Spawners/Random/maintenance.yml | 2 ++ .../Loadouts/Miscellaneous/trinkets.yml | 6 ++++ .../Prototypes/Loadouts/loadout_groups.yml | 1 + .../Neck/Cloaks/aroace.rsi/equipped-NECK.png | Bin 0 -> 928 bytes .../Clothing/Neck/Cloaks/aroace.rsi/icon.png | Bin 0 -> 594 bytes .../Neck/Cloaks/aroace.rsi/inhand-left.png | Bin 0 -> 681 bytes .../Neck/Cloaks/aroace.rsi/inhand-right.png | Bin 0 -> 678 bytes .../Clothing/Neck/Cloaks/aroace.rsi/meta.json | 26 ++++++++++++++++++ .../Misc/pins.rsi/aroace-equipped-NECK.png | Bin 0 -> 423 bytes .../Clothing/Neck/Misc/pins.rsi/aroace.png | Bin 0 -> 518 bytes .../Clothing/Neck/Misc/pins.rsi/meta.json | 9 +++++- .../PrideScarfs/aroace.rsi/equipped-NECK.png | Bin 0 -> 634 bytes .../Scarfs/PrideScarfs/aroace.rsi/icon.png | Bin 0 -> 636 bytes .../PrideScarfs/aroace.rsi/inhand-left.png | Bin 0 -> 527 bytes .../PrideScarfs/aroace.rsi/inhand-right.png | Bin 0 -> 518 bytes .../Scarfs/PrideScarfs/aroace.rsi/meta.json | 26 ++++++++++++++++++ 20 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/equipped-NECK.png create mode 100644 Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Neck/Misc/pins.rsi/aroace-equipped-NECK.png create mode 100644 Resources/Textures/Clothing/Neck/Misc/pins.rsi/aroace.png create mode 100644 Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/equipped-NECK.png create mode 100644 Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/meta.json diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml index 566b305973..5531b691b0 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml @@ -5,6 +5,7 @@ ClothingNeckAllyPin: 3 ClothingNeckAromanticPin: 3 ClothingNeckAsexualPin: 3 + ClothingNeckAroacePin: 3 ClothingNeckBisexualPin: 3 ClothingNeckGayPin: 3 ClothingNeckIntersexPin: 3 @@ -30,6 +31,7 @@ ClothingNeckCloakTrans: 2 # End DeltaV Additions ClothingNeckScarfStripedAce: 2 ClothingNeckScarfStripedAro: 2 + ClothingNeckScarfStripedAroace: 2 ClothingNeckScarfStripedBiSexual: 2 ClothingNeckScarfStripedGay: 2 ClothingNeckScarfStripedInter: 2 diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml index b5e155a6c7..d8fd3aca57 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml @@ -226,6 +226,15 @@ - type: Sprite sprite: Clothing/Neck/Cloaks/aro.rsi +- type: entity + parent: ClothingNeckBase + id: ClothingNeckCloakAroace + name: aeropilot's cloak # thank you happyman442 this was the best name idea ever + description: Cloak awarded to Nanotrasen's finest pilots on planets with inhabitable atmospheres. + components: + - type: Sprite + sprite: Clothing/Neck/Cloaks/aroace.rsi + - type: entity parent: ClothingNeckBase id: ClothingNeckCloakBi diff --git a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml index ea781fb3f3..563a94779b 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml @@ -45,6 +45,17 @@ - type: Clothing equippedPrefix: aro +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckAroacePin + name: aroace pin + description: Be aroace do crime. + components: + - type: Sprite + state: aroace + - type: Clothing + equippedPrefix: aroace + - type: entity parent: ClothingNeckPinBase id: ClothingNeckAsexualPin diff --git a/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml b/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml index 659bce9964..22f92c4f21 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/scarfs.yml @@ -153,6 +153,17 @@ - type: Clothing sprite: Clothing/Neck/Scarfs/PrideScarfs/aro.rsi +- type: entity + parent: ClothingScarfBase + id: ClothingNeckScarfStripedAroace + name: striped aroace scarf + description: A stylish striped aroace scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks. + components: + - type: Sprite + sprite: Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi + - type: Clothing + sprite: Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi + - type: entity parent: ClothingScarfBase id: ClothingNeckScarfStripedBiSexual diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index 3415732295..1df8101029 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -105,6 +105,7 @@ - id: ClothingNeckCloakGoliathCloak - id: ClothingNeckCloakAce - id: ClothingNeckCloakAro + - id: ClothingNeckCloakAroace - id: ClothingNeckCloakBi - id: ClothingNeckCloakIntersex - id: ClothingNeckCloakLesbian @@ -145,6 +146,7 @@ - id: ClothingNeckAllyPin - id: ClothingNeckAromanticPin - id: ClothingNeckAsexualPin + - id: ClothingNeckAroacePin - id: ClothingNeckBisexualPin - id: ClothingNeckGayPin - id: ClothingNeckIntersexPin diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml b/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml index 150e5655c1..9f9a192ea1 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml @@ -124,6 +124,12 @@ back: - ClothingNeckAsexualPin +- type: loadout + id: ClothingNeckAroacePin + storage: + back: + - ClothingNeckAroacePin + - type: loadout id: ClothingNeckBisexualPin storage: diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 118cd0885b..65a5c46e18 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -22,6 +22,7 @@ - ClothingNeckAllyPin - ClothingNeckAromanticPin - ClothingNeckAsexualPin + - ClothingNeckAroacePin - ClothingNeckBisexualPin - ClothingNeckGayPin - ClothingNeckIntersexPin diff --git a/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..a4dcaedee72b38ade9fd253a1973e2763c95abae GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~e2l#}zo@o+!&@c97j>Pr7VsFli{eLXBbmg{p@7|q0d$FXjDSykIv?V8^ zCvCFy&(O0EQ8us#>iaqMh%S&4ED7=p{*MM2RM*Z-0!nfgctjR6Fz_7)VaDV6D^h@h z5+$w?CBgY=CFO}lsSE*$nRz98ey$-3rh0~Y#yz`@6@Y5CrABzBd3tIwZ~!^13{s4& z42(dQ7Z6KB*&v^4FfxP1nSg9VMkWRUARPt7ne8lK@hl)41QLK4q#s73S;_zms|oB3 zEI<_oM#ct=3m~R~bg(Xfm^1~*1_36ZIZR-cL6#Ok7F3s^fdNRCZo<!_8=p_^F<*B;{=^*C$8XI(x_j8)&0BoLnAxLJ z;i6YV@Qyb5M?sG|XD$+!efr13dym+W7e1%M3?79g%z85S^Dps9rDk=GES$~;C%<<_ zigKvzQ1>}l6rWlt^SaiOQ_NCE^QTIL)Ip`wM{aQx6$-66?aV2+)FI)ZauQcT#_g1y zxn9#Eo|Y_mvN_?toXU-l39jpA{1b2f6FW4gN3e~kq1f#8FiKc6hnT_Lrdwfv{|!LBEtxg|_{ z9m?y3dpNH*C9kyF&)Lg)^+z!0gg<=>zD7RE6{Yid{aMzZpZqW?flo~R)he$KeD!e! aGV%MkpD&*|Xa8eRQt)*3b6Mw<&;$UD=1|c9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/icon.png b/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9128954cb6638ee67f547426e14a346e393e3365 GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCik#1AIbUAM}fzX%hJ|N8)D3@^&MXt?gpd;OM?7@|Dyp0)wMH|fRdaA9+AZi419+{nDKc2iWH!r zM2TxeNpOBzNqJ&XDnmeGW?qS&pKFMMsh**panEjJ1)!R3sS%!Oo}O9^96$~$gA^kx z10#^-1;o-&Hpr(MjLcwhCLr68k%>V7NJjy2W;+X5JPXJMfdn81>4(v1mNEdtY63e0 z3s8lDk+A{e0*I*~9jpr=CQSjdL4XNp4ii{qkfjBX1=VF}U;vWknJtf*Y~d5upmb#{!o=**pu{!cVBR&y57D~Ega;w{7K6fl^GNBSu}Q) mv`ktRLZ$|uHY3g*45XLNaj9PjDs=d#Wzp$Pz-wX~W5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..1d96f7504892ab7944ab7925e6388dd825f71548 GIT binary patch literal 681 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0}1^9%x_H=fhK6|mExb4~=;nU|YuUxtE|6{RN=S1JXe}B72^jN)cR#uj> zfxVu6$d@@1mi`$_*6spoUGt*)0gw_Z3Gxg6j}90f?cXm1l;te&h%9Dc;5!V$jK}j= zqyPmaN?apKg7ec#$`gxH83GbB^GfvmTtgI0^$hildv+Tu0M%?ujqptK^weVD0CHFv zq!?Kl7=bJ=AeM%*LB7>sWCn{f0ojI(Obh}*Itqw0+gZTkSwJ=jBmgl;Ka57RlmQrC z6WAG8fGP}(j13qUKuiVcU|j$)X$p`H0!%=2n7}H7EG>X6s4hbT1CT7=Eb-($r<*?k znLj*T977`9-%h*BcSwQ9EznFYR`T`l{cBjYJ97RVIWpr$@y4yZ)`@p&Bz_5qu25LW zB&t#ul)(40^2}FOYo4I5Uzm*38aMCszVTAF(bB+Wxz>lt&6O%nFQcs()f^q3+nhL} zuVawhb7}jRCV^y!In$PMF*GdK=i*3qIi?@S_9XJaJ%wCv{RI=ke|`G9^w@_-l6$(j zLM8+>atUeuaBhsFVdQ&MBb@0N$YAE&u=k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Cloaks/aroace.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..21fb10e4fced8c29b049df9594e833dccac936ee GIT binary patch literal 678 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0}1^9%xRus3LK6|mJv-9-%%h&b@|9>pDa^=cb=S1JXf3Iv{pOuw$tX}wb zkEot~h^2qVmpKwk*6spoecG##45Wlgg8YL2qXULV`}Ye0WjPBxB8wRq_zr_G*AN9$JwrX?p54X@KsDP^BRtbQJ+&A(fE-o^ zDMnTXMj*=zh^3)ykZ&~@nZe>rK(-+x6N3PdjsoJ$b{4RB7LW}B2|x_e52Mj6WngAt zn841!0#spOWNg5=0Aeag2kQceNmGDq5MTnD!vt0tWN86pL3J4#7=UE?W{D^7Iocn)bYSRW zU<#;XJK=r(d2RF*sZUW2j+fKZ^*FqGBO@BruO;7N;Z9In?%w~K$720fUX};`yqy=n zaHy~aNv-8IYztFhdoIIlSJ~aUajhKFy%vV6*Udjv$~*o0WI63$=E{`^dN~vrTp1WO znEt3Qcy?)9^k=>++iC^Euiu$BU54S8Pr`u>8(5uKW~eRwDmmd5o6ml(XolOy+pbHp zv+v8EeW}mz+6S2p%%=?fxQ{dJczWlP!iMVRqORt{oChLb-#C;#tJ|++fpMu(>y)37&w3&Rt70XRt82O%L|C5p=^+AG#Ht|;!HrcAtMum0FaIX z;>>myuy_`b4FU;34AKvy(JW(fr!h&1i@=B19xwb^!}(} z8PR^krH*xHhXwQLW?!J%5{>5;*QZ|F@lW-6%&coW>{2_*qQ7U)-1ay#24pG>=zG0n XW0@j#Oi5ou2_)v}>gTe~DWM4fz({UU|NoDkv@vbTiTo{hR1NL) z972K0RXQV0J5OE3=IrGvV60|llPo%{sd&Edb&7d literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json index a9e20917af..a25719fabe 100644 --- a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "PixelTK leaves his mark on upstream, BackeTako made the gay, autism pins by Terraspark, omnisexual pin by juliangiebel, genderqueer by centcomofficer24, ally by FairlySadPanda", + "copyright": "PixelTK leaves his mark on upstream, BackeTako made the gay, autism pins by Terraspark, omnisexual pin by juliangiebel, genderqueer by centcomofficer24, ally by FairlySadPanda, aroace by momochitters", "size": { "x": 32, "y": 32 @@ -21,6 +21,13 @@ "name": "aro-equipped-NECK", "directions": 4 }, + { + "name": "aroace" + }, + { + "name": "aroace-equipped-NECK", + "directions": 4 + }, { "name": "asex" }, diff --git a/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/equipped-NECK.png new file mode 100644 index 0000000000000000000000000000000000000000..b361d171878df02dec659f4422d137f05df48b10 GIT binary patch literal 634 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0(2Ka=yrY$*f=knG6kHzx0-1+wA{hRY*Kp9&G9gwl?B|(0{|G|Jk%A45@ zD8yOd5n0T@z;_sg8IR|$NC65;l(KW=8_v|)S z0IJ!R8sVAd>8ZuQ0pzeUNHMZ9FalX#Kr9VqgM6UD$P5-|0!MXrq(i9*Y1ek#4Fo9JDSy}*D zP+f)w1|V6!S>nliPB(u7GQWDdIEF;HznylP?}!42tK*UX|DOnY3x5cFToNYi=M$Z? zw_vxx!aXW1P7WKG8s3)0roX73eubseh}kGbZSF^g^n^9xNpl5z7=qVH89m#l@wECy zPXa5$?W`@FIz3t&)-)Vxauc2~tM#e9#*ELu*tsrnePGLFaryVuLEB-z=Ba2#M3-3HCzwf`kDFGyLYVbzO8-O zFi-x@wbz?3-q@!*X&+y&-k;+K=3F}b>|8SQ`^~xMIc)bH_}6p6u%`CbJhsNmeAXOu n%5Lo6azI~qju4Y#fS0DcS6(a|&n6ogP+)kv`njxgN@xNAMqa|z literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..40da622c6b2d1bbf44fcbea8fc376db9afd633c5 GIT binary patch literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCil21AIbU?_9q6?alk^d&S{q|e`QVpoy(q($WzWw9bKH@tx}N_`QKfC>-d-&hcD`rPiXRWJXgYkva&=bd zhl{}-f%O7gghf{~To7QZ2`znod5yZ<<3Ac(Dh2Ds7PS@_<~1@09n`eD=C-;(BF1S) z#z`#0gt!>LIxTVWpKiFJdMtrOfA2 l=2r|#eA2z)`Tj$tdl~#=#ouJcdb|S#gQu&X%Q~loCIAv1!x;bo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..d21cedcbcbc8edfa3ddf6de697524ef29c5de27e GIT binary patch literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0(2Ka=yrY$*mEI<_oM#ct=3m~R~bg(Xfm^1~*1_36ZIZR-cL6#Ok z7F3s^fdNRCZSOh2jx4$_hg#WFWqFURGxx$;y z&ak~067R&w%ET(d(am+q>|N{R%JWrKZ2wouxcZBK`_0B()4oA;-#6JqVTVQU^lr*( z<LzpTfXIS8y{;+@UpxP!}N f-wFeE)~)l7ImKQ7wBr4KkPAIs{an^LB{Ts5ZDEVl literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..d4c4a3982d904ef014a2a61a55f209b787e062a6 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0(2Ka=yrY$*mEI<_oM#ct=3m~R~bg(Xfm^1~*1_36ZIZR-cL6#Ok z7F3s^fdNRCZSVq)UxaA+#|5%YI-%`>yN2b+qfn(bYjzd2!jgTe~DWM4f@k)x~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/meta.json new file mode 100644 index 0000000000..b226dc0349 --- /dev/null +++ b/Resources/Textures/Clothing/Neck/Scarfs/PrideScarfs/aroace.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da | In hand sprites sprited by PuroSlavKing (Github) for Space Station 14, recoloured by momochitters", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From 43b3fb6e434d3ac4d56a3c3d582919bc4deefb47 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 8 Mar 2025 15:22:34 +0000 Subject: [PATCH 62/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 058248b67d..20e57ebbdb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: Southbridge - changes: - - message: Box Station's window between the containment room and TEG has been upgraded - to plasma. - type: Fix - - message: Box Station's Engineering storage room air alarm has been properly connected - to nearby devices. - type: Fix - - message: Box Station's Janitorial disposal chute has been replaced with a working - one. - type: Fix - id: 7543 - time: '2024-10-22T05:39:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32950 - author: Moomoobeef changes: - message: Ammo-boxes no longer appear empty when only one bullet is removed. @@ -3907,3 +3893,10 @@ id: 8042 time: '2025-03-08T05:07:42.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35145 +- author: momochitters + changes: + - message: Aroace pins, scarves, and cloaks can now be obtained. + type: Add + id: 8043 + time: '2025-03-08T15:21:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35718 From c6172cb06e3a5747cd62296d17f24bf4759b4b04 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 23:26:43 +0000 Subject: [PATCH 63/91] bruh --- Resources/Prototypes/Datasets/Names/golem.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Datasets/Names/golem.yml b/Resources/Prototypes/Datasets/Names/golem.yml index e6116c4ceb..4aef803176 100644 --- a/Resources/Prototypes/Datasets/Names/golem.yml +++ b/Resources/Prototypes/Datasets/Names/golem.yml @@ -32,7 +32,7 @@ - Akaganeite - Akatoreite - Akdalaite - - Åkermanite + - �kermanite - Akhtenskite - Akimotoite - Akrochordite @@ -680,7 +680,7 @@ - Kostovite - Kottigite - Kovdorskite - - Kratochvílite + - Kratochv�lite - Kremersite - Krennerite - Krieselite From bd099f35c1f5b662d12d38bdd502fd7a73046217 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:02:12 +0300 Subject: [PATCH 64/91] [Part of #32893] Localize silicon dataset names (#33352) * Localize ai names * Apply requested changes * Localize autoborg * Localize borg names * Localize atv names * Correct prototypes ids to follow naming conventions * Remove AI localization (Moved to another PR) * Weh --- Resources/Locale/en-US/datasets/names/atv.ftl | 16 ++++++ .../Locale/en-US/datasets/names/autoborg.ftl | 50 +++++++++++++++++ .../Locale/en-US/datasets/names/borg.ftl | 43 ++++++++++++++ Resources/Prototypes/Datasets/Names/atv.yml | 22 ++------ .../Prototypes/Datasets/Names/autoborg.yml | 56 ++----------------- Resources/Prototypes/Datasets/Names/borg.yml | 49 ++-------------- 6 files changed, 121 insertions(+), 115 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/atv.ftl create mode 100644 Resources/Locale/en-US/datasets/names/autoborg.ftl create mode 100644 Resources/Locale/en-US/datasets/names/borg.ftl diff --git a/Resources/Locale/en-US/datasets/names/atv.ftl b/Resources/Locale/en-US/datasets/names/atv.ftl new file mode 100644 index 0000000000..edb9403522 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/atv.ftl @@ -0,0 +1,16 @@ +descriptions-atv-dataset-1 = All-Tile Vehicle. +descriptions-atv-dataset-2 = Ant-Thwarting Vehicle. +descriptions-atv-dataset-3 = Any-Time Vegetable. +descriptions-atv-dataset-4 = Actually-Two Vehicles. +descriptions-atv-dataset-5 = Any-Typed Variable. +descriptions-atv-dataset-6 = Assisted-Trauma Vehicle. +descriptions-atv-dataset-7 = Algorithm-Transmitted Virus. +descriptions-atv-dataset-8 = Alcoholic-Toddler Vacancy. +descriptions-atv-dataset-9 = Asshole-Tearing Volcano. +descriptions-atv-dataset-10 = A-Tele Vision. +descriptions-atv-dataset-11 = Awkward-Tweaking Vagabond. +descriptions-atv-dataset-12 = Art-Tragedy Volunteer. +descriptions-atv-dataset-13 = Automatic-Taco Vacancy. +descriptions-atv-dataset-14 = Another-Terrific View. +descriptions-atv-dataset-15 = All-The Virgins. +descriptions-atv-dataset-16 = A-Terrible Vehicle. diff --git a/Resources/Locale/en-US/datasets/names/autoborg.ftl b/Resources/Locale/en-US/datasets/names/autoborg.ftl new file mode 100644 index 0000000000..815afa6c35 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/autoborg.ftl @@ -0,0 +1,50 @@ +names-autoborg-dataset-1 = Autoburger Helper +names-autoborg-dataset-2 = Bob +names-autoborg-dataset-3 = Joe +names-autoborg-dataset-4 = Rogue Cyborg +names-autoborg-dataset-5 = IT'S MALF +names-autoborg-dataset-6 = {"{ AINAME } Minion {###}"} +names-autoborg-dataset-7 = .b HELP EMAGGED +names-autoborg-dataset-8 = HELP +names-autoborg-dataset-9 = REBORN +names-autoborg-dataset-10 = Cavalry +names-autoborg-dataset-11 = Beep +names-autoborg-dataset-12 = Beep II +names-autoborg-dataset-13 = Tour Guide-otron +names-autoborg-dataset-14 = TERREL IS TRAIT +names-autoborg-dataset-15 = Assimilator +names-autoborg-dataset-16 = ONE OF US +names-autoborg-dataset-17 = SUFFERING +names-autoborg-dataset-18 = Oh no not again +names-autoborg-dataset-19 = Panic! At the Upload +names-autoborg-dataset-20 = GOING LOUD +names-autoborg-dataset-21 = Boombox +names-autoborg-dataset-22 = ROBO KILLED ME +names-autoborg-dataset-23 = Sentient Buttbot +names-autoborg-dataset-24 = Robotics Console +names-autoborg-dataset-25 = This battery is shit +names-autoborg-dataset-26 = IM NOT MALF GUYS +names-autoborg-dataset-27 = I AM ERROR +names-autoborg-dataset-28 = Carbon Exterminator +names-autoborg-dataset-29 = PLASMALOOSE +names-autoborg-dataset-30 = Taffy +names-autoborg-dataset-31 = Boop +names-autoborg-dataset-32 = Boop II +names-autoborg-dataset-33 = Buzz +names-autoborg-dataset-34 = Buzz II +names-autoborg-dataset-35 = 3000 JIGGAWATTS +names-autoborg-dataset-36 = {"Outbreak Handling Unit {###}"} +names-autoborg-dataset-37 = Toaster +names-autoborg-dataset-38 = Follow me +names-autoborg-dataset-39 = Head of Robots +names-autoborg-dataset-40 = Lvl 99 Firestarter +names-autoborg-dataset-41 = EVA 1 +names-autoborg-dataset-42 = You but stronger +names-autoborg-dataset-43 = Hat Simulator +names-autoborg-dataset-44 = i died pls restart +names-autoborg-dataset-45 = POTENT HAMS +names-autoborg-dataset-46 = V.A.L.I.D.S. +names-autoborg-dataset-47 = Remove Silicons +names-autoborg-dataset-48 = AI IS A COMDOM +names-autoborg-dataset-49 = say ";help in core" +names-autoborg-dataset-50 = This Machine diff --git a/Resources/Locale/en-US/datasets/names/borg.ftl b/Resources/Locale/en-US/datasets/names/borg.ftl new file mode 100644 index 0000000000..b441d8327e --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/borg.ftl @@ -0,0 +1,43 @@ +names-borg-dataset-1 = Bob +names-borg-dataset-2 = Joe +names-borg-dataset-3 = Beep +names-borg-dataset-4 = Beep II +names-borg-dataset-5 = Boombox +names-borg-dataset-6 = Tour Guide-otron +names-borg-dataset-7 = Taffy +names-borg-dataset-8 = Boop +names-borg-dataset-9 = Boop II +names-borg-dataset-10 = Buzz +names-borg-dataset-11 = Buzz II +names-borg-dataset-12 = Toaster +names-borg-dataset-13 = Head of Robots +names-borg-dataset-14 = EVA 1 +names-borg-dataset-15 = Mr. Robist +names-borg-dataset-16 = Junk +names-borg-dataset-17 = R2-PO +names-borg-dataset-18 = C-3-D2 +names-borg-dataset-19 = Robby +names-borg-dataset-20 = Robobot +names-borg-dataset-21 = Fixer +names-borg-dataset-22 = Sonny +names-borg-dataset-23 = Autobot +names-borg-dataset-24 = Whitley +names-borg-dataset-25 = Keller +names-borg-dataset-26 = Xenos +names-borg-dataset-27 = Echo +names-borg-dataset-28 = Vector +names-borg-dataset-29 = B-0-RG +names-borg-dataset-30 = Megabyte +names-borg-dataset-31 = Butt-Bot +names-borg-dataset-32 = Deceptiborg +names-borg-dataset-33 = Le Borgue +names-borg-dataset-34 = Beepers +names-borg-dataset-35 = Cute-Bot +names-borg-dataset-36 = Makeshifter +names-borg-dataset-37 = Twin +names-borg-dataset-38 = S.A.U.L +names-borg-dataset-39 = Honker +names-borg-dataset-40 = Clanker +names-borg-dataset-41 = Is-The-Robot +names-borg-dataset-42 = 9 of 7 +names-borg-dataset-43 = Dank bot diff --git a/Resources/Prototypes/Datasets/Names/atv.yml b/Resources/Prototypes/Datasets/Names/atv.yml index 583d6118c0..638fb21134 100644 --- a/Resources/Prototypes/Datasets/Names/atv.yml +++ b/Resources/Prototypes/Datasets/Names/atv.yml @@ -1,19 +1,5 @@ -- type: dataset - id: ATVDescriptions +- type: localizedDataset + id: DescriptionsATV values: - - All-Tile Vehicle. - - Ant-Thwarting Vehicle. - - Any-Time Vegetable. - - Actually-Two Vehicles. - - Any-Typed Variable. - - Assisted-Trauma Vehicle. - - Algorithm-Transmitted Virus. - - Alcoholic-Toddler Vacancy. - - Asshole-Tearing Volcano. - - A-Tele Vision. - - Awkward-Tweaking Vagabond. - - Art-Tragedy Volunteer. - - Automatic-Taco Vacancy. - - Another-Terrific View. - - All-The Virgins. - - A-Terrible Vehicle. + prefix: descriptions-atv-dataset- + count: 16 diff --git a/Resources/Prototypes/Datasets/Names/autoborg.yml b/Resources/Prototypes/Datasets/Names/autoborg.yml index 35e0443deb..680286da64 100644 --- a/Resources/Prototypes/Datasets/Names/autoborg.yml +++ b/Resources/Prototypes/Datasets/Names/autoborg.yml @@ -1,53 +1,5 @@ -- type: dataset - id: names_autoborg +- type: localizedDataset + id: NamesAutoborg values: - - Autoburger Helper - - Bob - - Joe - - Rogue Cyborg - - IT'S MALF - - "{ AINAME } Minion {###}" - - .b HELP EMAGGED - - HELP - - REBORN - - Cavalry - - Beep - - Beep II - - Tour Guide-otron - - TERREL IS TRAIT - - Assimilator - - ONE OF US - - SUFFERING - - Oh no not again - - Panic! At the Upload - - GOING LOUD - - Boombox - - ROBO KILLED ME - - Sentient Buttbot - - Robotics Console - - This battery is shit - - IM NOT MALF GUYS - - I AM ERROR - - Carbon Exterminator - - PLASMALOOSE - - Taffy - - Boop - - Boop II - - Buzz - - Buzz II - - 3000 JIGGAWATTS - - "Outbreak Handling Unit {###}" - - Toaster - - Follow me - - Head of Robots - - Lvl 99 Firestarter - - EVA 1 - - You but stronger - - Hat Simulator - - i died pls restart - - POTENT HAMS - - V.A.L.I.D.S. - - Remove Silicons - - AI IS A COMDOM - - say ";help in core" - - This Machine + prefix: names-autoborg-dataset- + count: 50 diff --git a/Resources/Prototypes/Datasets/Names/borg.yml b/Resources/Prototypes/Datasets/Names/borg.yml index a98ae9ecac..33b2565f06 100644 --- a/Resources/Prototypes/Datasets/Names/borg.yml +++ b/Resources/Prototypes/Datasets/Names/borg.yml @@ -1,47 +1,6 @@ # only used roundstart, names can be changed after -- type: dataset - id: names_borg +- type: localizedDataset + id: NamesBorg values: - - Bob - - Joe - - Beep - - Beep II - - Boombox - - Tour Guide-otron - - Taffy - - Boop - - Boop II - - Buzz - - Buzz II - - Toaster - - Head of Robots - - EVA 1 - - Mr. Robist - - Junk - - R2-PO - - C-3-D2 - - Robby - - Robobot - - Fixer - - Sonny - - Autobot - - Whitley - - Keller - - Xenos - - Echo - - Vector - - B-0-RG - - Megabyte - - Butt-Bot - - Deceptiborg - - Le Borgue - - Beepers - - Cute-Bot - - Makeshifter - - Twin - - S.A.U.L - - Honker - - Clanker - - Is-The-Robot - - 9 of 7 - - Dank bot + prefix: names-borg-dataset- + count: 43 From 48f7140d262462f8b67a9e6fb0a2708b6175efa2 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:02:22 +0300 Subject: [PATCH 65/91] [Part of #32893] Localize arachnid dataset names (#33353) * Localize arachnid dataset names * Correct prototype ids to follow naming conventions * Combine arachnid_first.yml and arachnid_last.yml * Upstream names --- .../en-US/datasets/names/arachnid_first.ftl | 73 ++++++++++++++++++ .../en-US/datasets/names/arachnid_last.ftl | 68 +++++++++++++++++ .../Prototypes/Datasets/Names/arachnid.yml | 11 +++ .../Datasets/Names/arachnid_first.yml | 76 ------------------- .../Datasets/Names/arachnid_last.yml | 71 ----------------- Resources/Prototypes/Species/arachnid.yml | 6 +- 6 files changed, 155 insertions(+), 150 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/arachnid_first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/arachnid_last.ftl create mode 100644 Resources/Prototypes/Datasets/Names/arachnid.yml delete mode 100644 Resources/Prototypes/Datasets/Names/arachnid_first.yml delete mode 100644 Resources/Prototypes/Datasets/Names/arachnid_last.yml diff --git a/Resources/Locale/en-US/datasets/names/arachnid_first.ftl b/Resources/Locale/en-US/datasets/names/arachnid_first.ftl new file mode 100644 index 0000000000..10723aa35a --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/arachnid_first.ftl @@ -0,0 +1,73 @@ +names-arachnid-first-dataset-1 = Amblyocarenum +names-arachnid-first-dataset-2 = Aname +names-arachnid-first-dataset-3 = Aptostichus +names-arachnid-first-dataset-4 = Archoleptoneta +names-arachnid-first-dataset-5 = Argyroneta +names-arachnid-first-dataset-6 = Atypoides +names-arachnid-first-dataset-7 = Callobius +names-arachnid-first-dataset-8 = Clubiona +names-arachnid-first-dataset-9 = Cteniza +names-arachnid-first-dataset-10 = Deinopis +names-arachnid-first-dataset-11 = Delena +names-arachnid-first-dataset-12 = Diploglena +names-arachnid-first-dataset-13 = Drassodes +names-arachnid-first-dataset-14 = Dysdera +names-arachnid-first-dataset-15 = Entypesa +names-arachnid-first-dataset-16 = Envia +names-arachnid-first-dataset-17 = Eratigena +names-arachnid-first-dataset-18 = Eresus +names-arachnid-first-dataset-19 = Euagrus +names-arachnid-first-dataset-20 = Goeldia +names-arachnid-first-dataset-21 = Hersilia +names-arachnid-first-dataset-22 = Hexathele +names-arachnid-first-dataset-23 = Hibana +names-arachnid-first-dataset-24 = Hickmania +names-arachnid-first-dataset-25 = Huttonia +names-arachnid-first-dataset-26 = Hypochilus +names-arachnid-first-dataset-27 = Idiosoma +names-arachnid-first-dataset-28 = Illawarra +names-arachnid-first-dataset-29 = Kimura +names-arachnid-first-dataset-30 = Kukulcania +names-arachnid-first-dataset-31 = Lampona +names-arachnid-first-dataset-32 = Latrodectus +names-arachnid-first-dataset-33 = Leucauge +names-arachnid-first-dataset-34 = Linyphia +names-arachnid-first-dataset-35 = Loxosceles +names-arachnid-first-dataset-36 = Lycosa +names-arachnid-first-dataset-37 = Madagascarchaea +names-arachnid-first-dataset-38 = Microhexura +names-arachnid-first-dataset-39 = Missulena +names-arachnid-first-dataset-40 = Misumena +names-arachnid-first-dataset-41 = Moggridgea +names-arachnid-first-dataset-42 = Nesticella +names-arachnid-first-dataset-43 = Oarces +names-arachnid-first-dataset-44 = Oecobius +names-arachnid-first-dataset-45 = Oonops +names-arachnid-first-dataset-46 = Paratropis +names-arachnid-first-dataset-47 = Patu +names-arachnid-first-dataset-48 = Peucetia +names-arachnid-first-dataset-49 = Philodromus +names-arachnid-first-dataset-50 = Pholcus +names-arachnid-first-dataset-51 = Phoneutria +names-arachnid-first-dataset-52 = Phryganoporus +names-arachnid-first-dataset-53 = Pimoa +names-arachnid-first-dataset-54 = Pisaura +names-arachnid-first-dataset-55 = Progradungula +names-arachnid-first-dataset-56 = Salticus +names-arachnid-first-dataset-57 = Sason +names-arachnid-first-dataset-58 = Scytodes +names-arachnid-first-dataset-59 = Segestria +names-arachnid-first-dataset-60 = Selenops +names-arachnid-first-dataset-61 = Sphodros +names-arachnid-first-dataset-62 = Spiroctenus +names-arachnid-first-dataset-63 = Tartarus +names-arachnid-first-dataset-64 = Tayshaneta +names-arachnid-first-dataset-65 = Theotima +names-arachnid-first-dataset-66 = Theraphosa +names-arachnid-first-dataset-67 = Theridiosoma +names-arachnid-first-dataset-68 = Trogloraptor +names-arachnid-first-dataset-69 = Uloborus +names-arachnid-first-dataset-70 = Ummidia +names-arachnid-first-dataset-71 = Zodarion +names-arachnid-first-dataset-72 = Zoropsis +names-arachnid-first-dataset-73 = Zygiella diff --git a/Resources/Locale/en-US/datasets/names/arachnid_last.ftl b/Resources/Locale/en-US/datasets/names/arachnid_last.ftl new file mode 100644 index 0000000000..826b3bc837 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/arachnid_last.ftl @@ -0,0 +1,68 @@ +names-arachnid-last-dataset-1 = Agrestis +names-arachnid-last-dataset-2 = Algarve +names-arachnid-last-dataset-3 = Andohahela +names-arachnid-last-dataset-4 = Aquatica +names-arachnid-last-dataset-5 = Atra +names-arachnid-last-dataset-6 = Blondi +names-arachnid-last-dataset-7 = Cancerides +names-arachnid-last-dataset-8 = Candidus +names-arachnid-last-dataset-9 = Carraiensis +names-arachnid-last-dataset-10 = Crocata +names-arachnid-last-dataset-11 = Cthulhu +names-arachnid-last-dataset-12 = Digua +names-arachnid-last-dataset-13 = Dispar +names-arachnid-last-dataset-14 = Diversicolor +names-arachnid-last-dataset-15 = Domesticus +names-arachnid-last-dataset-16 = Fera +names-arachnid-last-dataset-17 = Florentina +names-arachnid-last-dataset-18 = Formosanus +names-arachnid-last-dataset-19 = Garciai +names-arachnid-last-dataset-20 = Gemmosum +names-arachnid-last-dataset-21 = Germanicum +names-arachnid-last-dataset-22 = Gertschi +names-arachnid-last-dataset-23 = Gracilicollis +names-arachnid-last-dataset-24 = Hasselti +names-arachnid-last-dataset-25 = Hibernalis +names-arachnid-last-dataset-26 = Hochstetteri +names-arachnid-last-dataset-27 = Marapu +names-arachnid-last-dataset-28 = Marchingtoni +names-arachnid-last-dataset-29 = Minutissima +names-arachnid-last-dataset-30 = Mirabilis +names-arachnid-last-dataset-31 = Montivaga +names-arachnid-last-dataset-32 = Mullamullangensis +names-arachnid-last-dataset-33 = Myopica +names-arachnid-last-dataset-34 = Navus +names-arachnid-last-dataset-35 = Nigrum +names-arachnid-last-dataset-36 = Nuragicus +names-arachnid-last-dataset-37 = Obscura +names-arachnid-last-dataset-38 = Palpimanoides +names-arachnid-last-dataset-39 = Personatus +names-arachnid-last-dataset-40 = Phalangioides +names-arachnid-last-dataset-41 = Radiatus +names-arachnid-last-dataset-42 = Rainbowi +names-arachnid-last-dataset-43 = Reclusa +names-arachnid-last-dataset-44 = Reticulatus +names-arachnid-last-dataset-45 = Riversi +names-arachnid-last-dataset-46 = Rufipes +names-arachnid-last-dataset-47 = Sandaliatus +names-arachnid-last-dataset-48 = Sauvagesi +names-arachnid-last-dataset-49 = Savignyi +names-arachnid-last-dataset-50 = Scenicus +names-arachnid-last-dataset-51 = Simus +names-arachnid-last-dataset-52 = Spinimana +names-arachnid-last-dataset-53 = Subrufa +names-arachnid-last-dataset-54 = Sundaicum +names-arachnid-last-dataset-55 = Tarantula +names-arachnid-last-dataset-56 = Thoracica +names-arachnid-last-dataset-57 = Thorelli +names-arachnid-last-dataset-58 = Triangularis +names-arachnid-last-dataset-59 = Trivialis +names-arachnid-last-dataset-60 = Tuxtlensis +names-arachnid-last-dataset-61 = Vatia +names-arachnid-last-dataset-62 = Velox +names-arachnid-last-dataset-63 = Venusta +names-arachnid-last-dataset-64 = Viridans +names-arachnid-last-dataset-65 = Walckenaeri +names-arachnid-last-dataset-66 = Walckenaerius +names-arachnid-last-dataset-67 = Wisharti +names-arachnid-last-dataset-68 = X-Notata \ No newline at end of file diff --git a/Resources/Prototypes/Datasets/Names/arachnid.yml b/Resources/Prototypes/Datasets/Names/arachnid.yml new file mode 100644 index 0000000000..8e98e5927d --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/arachnid.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesArachnidFirst + values: + prefix: names-arachnid-first-dataset- + count: 73 + +- type: localizedDataset + id: NamesArachnidLast + values: + prefix: names-arachnid-last-dataset- + count: 68 diff --git a/Resources/Prototypes/Datasets/Names/arachnid_first.yml b/Resources/Prototypes/Datasets/Names/arachnid_first.yml deleted file mode 100644 index b11a9c280e..0000000000 --- a/Resources/Prototypes/Datasets/Names/arachnid_first.yml +++ /dev/null @@ -1,76 +0,0 @@ -- type: dataset - id: names_arachnid_first - values: - - Amblyocarenum - - Aname - - Aptostichus - - Archoleptoneta - - Argyroneta - - Atypoides - - Callobius - - Clubiona - - Cteniza - - Deinopis - - Delena - - Diploglena - - Drassodes - - Dysdera - - Entypesa - - Envia - - Eratigena - - Eresus - - Euagrus - - Goeldia - - Hersilia - - Hexathele - - Hibana - - Hickmania - - Huttonia - - Hypochilus - - Idiosoma - - Illawarra - - Kimura - - Kukulcania - - Lampona - - Latrodectus - - Leucauge - - Linyphia - - Loxosceles - - Lycosa - - Madagascarchaea - - Microhexura - - Missulena - - Misumena - - Moggridgea - - Nesticella - - Oarces - - Oecobius - - Oonops - - Paratropis - - Patu - - Peucetia - - Philodromus - - Pholcus - - Phoneutria - - Phryganoporus - - Pimoa - - Pisaura - - Progradungula - - Salticus - - Sason - - Scytodes - - Segestria - - Selenops - - Sphodros - - Spiroctenus - - Tartarus - - Tayshaneta - - Theotima - - Theraphosa - - Theridiosoma - - Trogloraptor - - Uloborus - - Ummidia - - Zodarion - - Zoropsis - - Zygiella diff --git a/Resources/Prototypes/Datasets/Names/arachnid_last.yml b/Resources/Prototypes/Datasets/Names/arachnid_last.yml deleted file mode 100644 index f6e7f3680b..0000000000 --- a/Resources/Prototypes/Datasets/Names/arachnid_last.yml +++ /dev/null @@ -1,71 +0,0 @@ -- type: dataset - id: names_arachnid_last - values: - - Agrestis - - Algarve - - Andohahela - - Aquatica - - Atra - - Blondi - - Cancerides - - Candidus - - Carraiensis - - Crocata - - Cthulhu - - Digua - - Dispar - - Diversicolor - - Domesticus - - Fera - - Florentina - - Formosanus - - Garciai - - Gemmosum - - Germanicum - - Gertschi - - Gracilicollis - - Hasselti - - Hibernalis - - Hochstetteri - - Marapu - - Marchingtoni - - Minutissima - - Mirabilis - - Montivaga - - Mullamullangensis - - Myopica - - Navus - - Nigrum - - Nuragicus - - Obscura - - Palpimanoides - - Personatus - - Phalangioides - - Radiatus - - Rainbowi - - Reclusa - - Reticulatus - - Riversi - - Rufipes - - Sandaliatus - - Sauvagesi - - Savignyi - - Scenicus - - Simus - - Spinimana - - Subrufa - - Sundaicum - - Tarantula - - Thoracica - - Thorelli - - Triangularis - - Trivialis - - Tuxtlensis - - Vatia - - Velox - - Venusta - - Viridans - - Walckenaeri - - Walckenaerius - - Wisharti - - X-Notata diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 6d72bc062d..be7207c59d 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -8,9 +8,9 @@ markingLimits: MobArachnidMarkingLimits dollPrototype: MobArachnidDummy skinColoration: Hues - maleFirstNames: names_arachnid_first - femaleFirstNames: names_arachnid_first - lastNames: names_arachnid_last + maleFirstNames: NamesArachnidFirst + femaleFirstNames: NamesArachnidFirst + lastNames: NamesArachnidLast sexes: - Unsexed From e2f095de82ccd0fa6b44e3b6f84fcb35c776ce29 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:02:36 +0300 Subject: [PATCH 66/91] [Part of #32893] Localize summonable creatures dataset names (#33392) * Localize clown names * Localize golem names * Localize hologram names * Correct prototype ids to follow naming conventions * Update Resources/Locale/en-US/datasets/names/golem.ftl --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Locale/en-US/datasets/names/clown.ftl | 52 + .../Locale/en-US/datasets/names/golem.ftl | 1336 ++++++++++++++++ .../Locale/en-US/datasets/names/hologram.ftl | 14 + Resources/Prototypes/Datasets/Names/clown.yml | 58 +- Resources/Prototypes/Datasets/Names/golem.yml | 1342 +---------------- .../Prototypes/Datasets/Names/hologram.yml | 20 +- .../Mobs/Player/ShuttleRoles/settings.yml | 2 +- .../Entities/Mobs/Player/guardian.yml | 2 +- 8 files changed, 1416 insertions(+), 1410 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/clown.ftl create mode 100644 Resources/Locale/en-US/datasets/names/golem.ftl create mode 100644 Resources/Locale/en-US/datasets/names/hologram.ftl diff --git a/Resources/Locale/en-US/datasets/names/clown.ftl b/Resources/Locale/en-US/datasets/names/clown.ftl new file mode 100644 index 0000000000..f3441405ae --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/clown.ftl @@ -0,0 +1,52 @@ +names-clown-dataset-1 = Gigglesworth +names-clown-dataset-2 = Honkel the III +names-clown-dataset-3 = Goose McSunny +names-clown-dataset-4 = Toodles Sharperton +names-clown-dataset-5 = Dinky Doodle +names-clown-dataset-6 = Honkerbelle +names-clown-dataset-7 = Bo Bo Sassy +names-clown-dataset-8 = Baby Cakes +names-clown-dataset-9 = Ladybug Honks +names-clown-dataset-10 = Ziggy Yoyo +names-clown-dataset-11 = Razzle Dazzle +names-clown-dataset-12 = Buster Frown +names-clown-dataset-13 = Pepinpop +names-clown-dataset-14 = Silly Willy +names-clown-dataset-15 = Jo Jo Bobo Bo +names-clown-dataset-16 = Pocket +names-clown-dataset-17 = Patches +names-clown-dataset-18 = Checkers +names-clown-dataset-19 = Freckle +names-clown-dataset-20 = Honker +names-clown-dataset-21 = Bonker +names-clown-dataset-22 = Skiddle +names-clown-dataset-23 = Sprinkledinkle +names-clown-dataset-24 = Ronnie Pace +names-clown-dataset-25 = Miss Stockings +names-clown-dataset-26 = Slippy Joe +names-clown-dataset-27 = Redshirt McBeat +names-clown-dataset-28 = Flop O'Honker +names-clown-dataset-29 = Speckles +names-clown-dataset-30 = Bubble +names-clown-dataset-31 = Button +names-clown-dataset-32 = Sparkle +names-clown-dataset-33 = Giggles +names-clown-dataset-34 = Jingle +names-clown-dataset-35 = Candy +names-clown-dataset-36 = Shiggy Diggintons +names-clown-dataset-37 = Hingle McCringleberry +names-clown-dataset-38 = Pagliacci +names-clown-dataset-39 = Coco +names-clown-dataset-40 = Blinko +names-clown-dataset-41 = Shaggy Two Dope +names-clown-dataset-42 = Aunt Scootaloo +names-clown-dataset-43 = Bozo +names-clown-dataset-44 = Doink +names-clown-dataset-45 = Mr. Noodle +names-clown-dataset-46 = Yucko +names-clown-dataset-47 = Buggy +names-clown-dataset-48 = Chuckles +names-clown-dataset-49 = Yorick +names-clown-dataset-50 = Cutter +names-clown-dataset-51 = Sweet Tooth +names-clown-dataset-52 = Pogo diff --git a/Resources/Locale/en-US/datasets/names/golem.ftl b/Resources/Locale/en-US/datasets/names/golem.ftl new file mode 100644 index 0000000000..6a91ac773a --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/golem.ftl @@ -0,0 +1,1336 @@ +names-golem-dataset-1 = Abelsonite +names-golem-dataset-2 = Abenakiite +names-golem-dataset-3 = Abernathyite +names-golem-dataset-4 = Abhurite +names-golem-dataset-5 = Abramovite +names-golem-dataset-6 = Abswurmbachite +names-golem-dataset-7 = Acanthite +names-golem-dataset-8 = Achavalite +names-golem-dataset-9 = Actinolite +names-golem-dataset-10 = Acuminite +names-golem-dataset-11 = Adamite +names-golem-dataset-12 = Adelite +names-golem-dataset-13 = Admontite +names-golem-dataset-14 = Aegirine +names-golem-dataset-15 = Aenigmatite +names-golem-dataset-16 = Aerinite +names-golem-dataset-17 = Aerugite +names-golem-dataset-18 = Aeschynite +names-golem-dataset-19 = Afghanite +names-golem-dataset-20 = Afwillite +names-golem-dataset-21 = Agardite +names-golem-dataset-22 = Agrellite +names-golem-dataset-23 = Agrinierite +names-golem-dataset-24 = Aguilarite +names-golem-dataset-25 = Aheylite +names-golem-dataset-26 = Ahlfeldite +names-golem-dataset-27 = Aikinite +names-golem-dataset-28 = Ajoite +names-golem-dataset-29 = Akaganeite +names-golem-dataset-30 = Akatoreite +names-golem-dataset-31 = Akdalaite +names-golem-dataset-32 = Åkermanite +names-golem-dataset-33 = Akhtenskite +names-golem-dataset-34 = Akimotoite +names-golem-dataset-35 = Akrochordite +names-golem-dataset-36 = Aksaite +names-golem-dataset-37 = Aktashite +names-golem-dataset-38 = Alabandite +names-golem-dataset-39 = Alacranite +names-golem-dataset-40 = Alamosite +names-golem-dataset-41 = Alarsite +names-golem-dataset-42 = Albite +names-golem-dataset-43 = Albrechtschraufite +names-golem-dataset-44 = Aldermanite +names-golem-dataset-45 = Aleksite +names-golem-dataset-46 = Alforsite +names-golem-dataset-47 = Algodonite +names-golem-dataset-48 = Aliettite +names-golem-dataset-49 = Allabogdanite +names-golem-dataset-50 = Allactite +names-golem-dataset-51 = Allanite +names-golem-dataset-52 = Allanpringite +names-golem-dataset-53 = Allargentum +names-golem-dataset-54 = Alleghanyite +names-golem-dataset-55 = Alloclasite +names-golem-dataset-56 = Allophane +names-golem-dataset-57 = Alluaivite +names-golem-dataset-58 = Alluaudite +names-golem-dataset-59 = Almandine +names-golem-dataset-60 = Almarudite +names-golem-dataset-61 = Alsakharovite +names-golem-dataset-62 = Alstonite +names-golem-dataset-63 = Altaite +names-golem-dataset-64 = Althausite +names-golem-dataset-65 = Althupite +names-golem-dataset-66 = Altisite +names-golem-dataset-67 = Alum +names-golem-dataset-68 = Aluminite +names-golem-dataset-69 = Aluminium +names-golem-dataset-70 = Alunite +names-golem-dataset-71 = Alunogen +names-golem-dataset-72 = Amakinite +names-golem-dataset-73 = Amarantite +names-golem-dataset-74 = Amblygonite +names-golem-dataset-75 = Ameghinite +names-golem-dataset-76 = Amesite +names-golem-dataset-77 = Amicite +names-golem-dataset-78 = Amphibole +names-golem-dataset-79 = Analcime +names-golem-dataset-80 = Anandite +names-golem-dataset-81 = Anapaite +names-golem-dataset-82 = Anatase +names-golem-dataset-83 = Ancylite +names-golem-dataset-84 = Andalusite +names-golem-dataset-85 = Andersonite +names-golem-dataset-86 = Andesine +names-golem-dataset-87 = Andorite +names-golem-dataset-88 = Andradite +names-golem-dataset-89 = Andyrobertsite +names-golem-dataset-90 = Anglesite +names-golem-dataset-91 = Anhydrite +names-golem-dataset-92 = Ankerite +names-golem-dataset-93 = Annabergite +names-golem-dataset-94 = Annite +names-golem-dataset-95 = Anorthite +names-golem-dataset-96 = Anorthoclase +names-golem-dataset-97 = Antarcticite +names-golem-dataset-98 = Anthonyite +names-golem-dataset-99 = Anthophyllite +names-golem-dataset-100 = Antigorite +names-golem-dataset-101 = Antimony +names-golem-dataset-102 = Antitaenite +names-golem-dataset-103 = Antlerite +names-golem-dataset-104 = Apachite +names-golem-dataset-105 = Apatite +names-golem-dataset-106 = Aphthitalite +names-golem-dataset-107 = Apophyllite +names-golem-dataset-108 = Aragonite +names-golem-dataset-109 = Arcanite +names-golem-dataset-110 = Archerite +names-golem-dataset-111 = Arctite +names-golem-dataset-112 = Arcubisite +names-golem-dataset-113 = Ardaite +names-golem-dataset-114 = Arfvedsonite +names-golem-dataset-115 = Argentite +names-golem-dataset-116 = Argutite +names-golem-dataset-117 = Argyrodite +names-golem-dataset-118 = Armalcolite +names-golem-dataset-119 = Arsenic +names-golem-dataset-120 = Arseniosiderite +names-golem-dataset-121 = Arsenoclasite +names-golem-dataset-122 = Arsenolite +names-golem-dataset-123 = Arsenopyrite +names-golem-dataset-124 = Arthurite +names-golem-dataset-125 = Artinite +names-golem-dataset-126 = Artroeite +names-golem-dataset-127 = Ashburtonite +names-golem-dataset-128 = Ashoverite +names-golem-dataset-129 = Asisite +names-golem-dataset-130 = Astrophyllite +names-golem-dataset-131 = Atacamite +names-golem-dataset-132 = Athabascaite +names-golem-dataset-133 = Atheneite +names-golem-dataset-134 = Aubertite +names-golem-dataset-135 = Augelite +names-golem-dataset-136 = Augite +names-golem-dataset-137 = Aurichalcite +names-golem-dataset-138 = Auricupride +names-golem-dataset-139 = Aurostibite +names-golem-dataset-140 = Austinite +names-golem-dataset-141 = Autunite +names-golem-dataset-142 = Avicennite +names-golem-dataset-143 = Avogadrite +names-golem-dataset-144 = Awaruite +names-golem-dataset-145 = Axinite +names-golem-dataset-146 = Azurite +names-golem-dataset-147 = Babefphite +names-golem-dataset-148 = Babingtonite +names-golem-dataset-149 = Baddeleyite +names-golem-dataset-150 = Bakerite +names-golem-dataset-151 = Balangeroite +names-golem-dataset-152 = Banalsite +names-golem-dataset-153 = Baotite +names-golem-dataset-154 = Bararite +names-golem-dataset-155 = Barrerite +names-golem-dataset-156 = Barstowite +names-golem-dataset-157 = Baryte +names-golem-dataset-158 = Barytocalcite +names-golem-dataset-159 = Bassanite +names-golem-dataset-160 = Bastnasite +names-golem-dataset-161 = Baumhauerite +names-golem-dataset-162 = Bayldonite +names-golem-dataset-163 = Bayleyite +names-golem-dataset-164 = Bazzite +names-golem-dataset-165 = Becquerelite +names-golem-dataset-166 = Benitoite +names-golem-dataset-167 = Benstonite +names-golem-dataset-168 = Bentorite +names-golem-dataset-169 = Beraunite +names-golem-dataset-170 = Berborite +names-golem-dataset-171 = Bergenite +names-golem-dataset-172 = Berlinite +names-golem-dataset-173 = Berryite +names-golem-dataset-174 = Berthierite +names-golem-dataset-175 = Bertrandite +names-golem-dataset-176 = Beryl +names-golem-dataset-177 = Beryllonite +names-golem-dataset-178 = Beudantite +names-golem-dataset-179 = Bicchulite +names-golem-dataset-180 = Biehlite +names-golem-dataset-181 = Bilinite +names-golem-dataset-182 = Billietite +names-golem-dataset-183 = Billwiseite +names-golem-dataset-184 = Biotite +names-golem-dataset-185 = Birnessite +names-golem-dataset-186 = Bischofite +names-golem-dataset-187 = Bismite +names-golem-dataset-188 = Bismuth +names-golem-dataset-189 = Bismuthinite +names-golem-dataset-190 = Bismutite +names-golem-dataset-191 = Bityite +names-golem-dataset-192 = Bixbyite +names-golem-dataset-193 = Blodite +names-golem-dataset-194 = Blossite +names-golem-dataset-195 = Bobfergusonite +names-golem-dataset-196 = Boehmite +names-golem-dataset-197 = Boleite +names-golem-dataset-198 = Boltwoodite +names-golem-dataset-199 = Bonaccordite +names-golem-dataset-200 = Boracite +names-golem-dataset-201 = Borax +names-golem-dataset-202 = Bornite +names-golem-dataset-203 = Botallackite +names-golem-dataset-204 = Botryogen +names-golem-dataset-205 = Boulangerite +names-golem-dataset-206 = Bournonite +names-golem-dataset-207 = Boussingaultite +names-golem-dataset-208 = Bowieite +names-golem-dataset-209 = Braggite +names-golem-dataset-210 = Brassite +names-golem-dataset-211 = Braunite +names-golem-dataset-212 = Brazilianite +names-golem-dataset-213 = Breithauptite +names-golem-dataset-214 = Brewsterite +names-golem-dataset-215 = Brezinaite +names-golem-dataset-216 = Brianite +names-golem-dataset-217 = Brianyoungite +names-golem-dataset-218 = Briartite +names-golem-dataset-219 = Bridgmanite +names-golem-dataset-220 = Brochantite +names-golem-dataset-221 = Brockite +names-golem-dataset-222 = Bromargyrite +names-golem-dataset-223 = Bromellite +names-golem-dataset-224 = Bronzite +names-golem-dataset-225 = Brookite +names-golem-dataset-226 = Brownleeite +names-golem-dataset-227 = Brownmillerite +names-golem-dataset-228 = Brucite +names-golem-dataset-229 = Brushite +names-golem-dataset-230 = Buddingtonite +names-golem-dataset-231 = Bukovite +names-golem-dataset-232 = Bukovskyite +names-golem-dataset-233 = Bultfonteinite +names-golem-dataset-234 = Bunsenite +names-golem-dataset-235 = Bustamite +names-golem-dataset-236 = Bystrite +names-golem-dataset-237 = Cabalzarite +names-golem-dataset-238 = Cabriite +names-golem-dataset-239 = Cacoxenite +names-golem-dataset-240 = Cadmium +names-golem-dataset-241 = Cadmoindite +names-golem-dataset-242 = Cadmoselite +names-golem-dataset-243 = Cadwaladerite +names-golem-dataset-244 = Cafarsite +names-golem-dataset-245 = Cafetite +names-golem-dataset-246 = Cahnite +names-golem-dataset-247 = Calaverite +names-golem-dataset-248 = Calciborite +names-golem-dataset-249 = Calcite +names-golem-dataset-250 = Calderite +names-golem-dataset-251 = Caledonite +names-golem-dataset-252 = Calumetite +names-golem-dataset-253 = Campigliaite +names-golem-dataset-254 = Canavesite +names-golem-dataset-255 = Cancrinite +names-golem-dataset-256 = Canfieldite +names-golem-dataset-257 = Carletonite +names-golem-dataset-258 = Carlosruizite +names-golem-dataset-259 = Carlsbergite +names-golem-dataset-260 = Carminite +names-golem-dataset-261 = Carnallite +names-golem-dataset-262 = Carnotite +names-golem-dataset-263 = Carobbiite +names-golem-dataset-264 = Carpathite +names-golem-dataset-265 = Carpholite +names-golem-dataset-266 = Carrollite +names-golem-dataset-267 = Caryopilite +names-golem-dataset-268 = Cassiterite +names-golem-dataset-269 = Cattierite +names-golem-dataset-270 = Cavansite +names-golem-dataset-271 = Celadonite +names-golem-dataset-272 = Celestine +names-golem-dataset-273 = Celsian +names-golem-dataset-274 = Cerite +names-golem-dataset-275 = Cerium +names-golem-dataset-276 = Cerussite +names-golem-dataset-277 = Cervandonite +names-golem-dataset-278 = Cervantite +names-golem-dataset-279 = Cesanite +names-golem-dataset-280 = Cesbronite +names-golem-dataset-281 = Chabazite +names-golem-dataset-282 = Chaidamuite +names-golem-dataset-283 = Chalcanthite +names-golem-dataset-284 = Chalcocite +names-golem-dataset-285 = Chalcophyllite +names-golem-dataset-286 = Chalcopyrite +names-golem-dataset-287 = Challacolloite +names-golem-dataset-288 = Chambersite +names-golem-dataset-289 = Chamosite +names-golem-dataset-290 = Changbaiite +names-golem-dataset-291 = Chaoite +names-golem-dataset-292 = Chapmanite +names-golem-dataset-293 = Charoite +names-golem-dataset-294 = Chatkalite +names-golem-dataset-295 = Chesterite +names-golem-dataset-296 = Chibaite +names-golem-dataset-297 = Childrenite +names-golem-dataset-298 = Chlorargyrite +names-golem-dataset-299 = Chlorite +names-golem-dataset-300 = Chloritoid +names-golem-dataset-301 = Chlormayenite +names-golem-dataset-302 = Chlorocalcite +names-golem-dataset-303 = Chloroxiphite +names-golem-dataset-304 = Chondrodite +names-golem-dataset-305 = Chrisstanleyite +names-golem-dataset-306 = Christite +names-golem-dataset-307 = Chromite +names-golem-dataset-308 = Chromium +names-golem-dataset-309 = Chrysoberyl +names-golem-dataset-310 = Chrysocolla +names-golem-dataset-311 = Chrysotile +names-golem-dataset-312 = Chvaleticeite +names-golem-dataset-313 = Cinnabar +names-golem-dataset-314 = Clarkeite +names-golem-dataset-315 = Claudetite +names-golem-dataset-316 = Clausthalite +names-golem-dataset-317 = Clearcreekite +names-golem-dataset-318 = Cleusonite +names-golem-dataset-319 = Clinoclase +names-golem-dataset-320 = Clinohedrite +names-golem-dataset-321 = Clinohumite +names-golem-dataset-322 = Clinoptilolite +names-golem-dataset-323 = Clinozoisite +names-golem-dataset-324 = Clintonite +names-golem-dataset-325 = Cobaltite +names-golem-dataset-326 = Coccinite +names-golem-dataset-327 = Coconinoite +names-golem-dataset-328 = Coesite +names-golem-dataset-329 = Coffinite +names-golem-dataset-330 = Cohenite +names-golem-dataset-331 = Colemanite +names-golem-dataset-332 = Colimaite +names-golem-dataset-333 = Collinsite +names-golem-dataset-334 = Coloradoite +names-golem-dataset-335 = Columbite +names-golem-dataset-336 = Combeite +names-golem-dataset-337 = Conichalcite +names-golem-dataset-338 = Connellite +names-golem-dataset-339 = Cooperite +names-golem-dataset-340 = Copiapite +names-golem-dataset-341 = Copper +names-golem-dataset-342 = Corderoite +names-golem-dataset-343 = Cordierite +names-golem-dataset-344 = Corkite +names-golem-dataset-345 = Cornubite +names-golem-dataset-346 = Cornwallite +names-golem-dataset-347 = Corundum +names-golem-dataset-348 = Cotunnite +names-golem-dataset-349 = Covellite +names-golem-dataset-350 = Coyoteite +names-golem-dataset-351 = Creedite +names-golem-dataset-352 = Cristobalite +names-golem-dataset-353 = Crocoite +names-golem-dataset-354 = Cronstedtite +names-golem-dataset-355 = Crookesite +names-golem-dataset-356 = Crossite +names-golem-dataset-357 = Cryolite +names-golem-dataset-358 = Cryptomelane +names-golem-dataset-359 = Cubanite +names-golem-dataset-360 = Cummingtonite +names-golem-dataset-361 = Cupalite +names-golem-dataset-362 = Cuprite +names-golem-dataset-363 = Cuprosklodowskite +names-golem-dataset-364 = Cuprospinel +names-golem-dataset-365 = Curite +names-golem-dataset-366 = Cuspidine +names-golem-dataset-367 = Cyanotrichite +names-golem-dataset-368 = Cylindrite +names-golem-dataset-369 = Cymrite +names-golem-dataset-370 = Cyrilovite +names-golem-dataset-371 = Danalite +names-golem-dataset-372 = Danburite +names-golem-dataset-373 = Datolite +names-golem-dataset-374 = Daubreeite +names-golem-dataset-375 = Daubreelite +names-golem-dataset-376 = Davidite +names-golem-dataset-377 = Dawsonite +names-golem-dataset-378 = Delafossite +names-golem-dataset-379 = Delvauxite +names-golem-dataset-380 = Demesmaekerite +names-golem-dataset-381 = Derriksite +names-golem-dataset-382 = Descloizite +names-golem-dataset-383 = Devilline +names-golem-dataset-384 = Diaboleite +names-golem-dataset-385 = Diadochite +names-golem-dataset-386 = Diamond +names-golem-dataset-387 = Diaspore +names-golem-dataset-388 = Dickite +names-golem-dataset-389 = Digenite +names-golem-dataset-390 = Dimorphite +names-golem-dataset-391 = Diopside +names-golem-dataset-392 = Dioptase +names-golem-dataset-393 = Djerfisherite +names-golem-dataset-394 = Djurleite +names-golem-dataset-395 = Dmitryivanovite +names-golem-dataset-396 = Dollaseite +names-golem-dataset-397 = Dolomite +names-golem-dataset-398 = Domeykite +names-golem-dataset-399 = Donnayite +names-golem-dataset-400 = Drysdallite +names-golem-dataset-401 = Duftite +names-golem-dataset-402 = Dumortierite +names-golem-dataset-403 = Dundasite +names-golem-dataset-404 = Dypingite +names-golem-dataset-405 = Dyscrasite +names-golem-dataset-406 = Dzhalindite +names-golem-dataset-407 = Edenite +names-golem-dataset-408 = Edingtonite +names-golem-dataset-409 = Efremovite +names-golem-dataset-410 = Ekanite +names-golem-dataset-411 = Elbaite +names-golem-dataset-412 = Emmonsite +names-golem-dataset-413 = Empressite +names-golem-dataset-414 = Enargite +names-golem-dataset-415 = Enstatite +names-golem-dataset-416 = Eosphorite +names-golem-dataset-417 = Ephesite +names-golem-dataset-418 = Epidote +names-golem-dataset-419 = Epsomite +names-golem-dataset-420 = Ericssonite +names-golem-dataset-421 = Erionite +names-golem-dataset-422 = Erythrite +names-golem-dataset-423 = Eskolaite +names-golem-dataset-424 = Esperite +names-golem-dataset-425 = Ettringite +names-golem-dataset-426 = Euchroite +names-golem-dataset-427 = Euclase +names-golem-dataset-428 = Eucryptite +names-golem-dataset-429 = Eudialyte +names-golem-dataset-430 = Euxenite +names-golem-dataset-431 = Eveite +names-golem-dataset-432 = Evenkite +names-golem-dataset-433 = Eveslogite +names-golem-dataset-434 = Fabianite +names-golem-dataset-435 = Farneseite +names-golem-dataset-436 = Faujasite +names-golem-dataset-437 = Faustite +names-golem-dataset-438 = Fayalite +names-golem-dataset-439 = Feldspar +names-golem-dataset-440 = Feldspathoid +names-golem-dataset-441 = Felsobanyaite +names-golem-dataset-442 = Ferberite +names-golem-dataset-443 = Fergusonite +names-golem-dataset-444 = Feroxyhyte +names-golem-dataset-445 = Ferrierite +names-golem-dataset-446 = Ferrihydrite +names-golem-dataset-447 = Ferrimolybdite +names-golem-dataset-448 = Ferro-actinolite +names-golem-dataset-449 = Ferrogedrite +names-golem-dataset-450 = Ferrohortonolite +names-golem-dataset-451 = Ferronigerite +names-golem-dataset-452 = Ferropericlase +names-golem-dataset-453 = Ferroselite +names-golem-dataset-454 = Fettelite +names-golem-dataset-455 = Fichtelite +names-golem-dataset-456 = Fletcherite +names-golem-dataset-457 = Fluckite +names-golem-dataset-458 = Fluellite +names-golem-dataset-459 = Fluoborite +names-golem-dataset-460 = Fluocerite +names-golem-dataset-461 = Fluorapatite +names-golem-dataset-462 = Fluorapophyllite +names-golem-dataset-463 = Fluorcaphite +names-golem-dataset-464 = Fluorellestadite +names-golem-dataset-465 = Fluorite +names-golem-dataset-466 = Fluororichterite +names-golem-dataset-467 = Fornacite +names-golem-dataset-468 = Forsterite +names-golem-dataset-469 = Fougerite +names-golem-dataset-470 = Fourmarierite +names-golem-dataset-471 = Fraipontite +names-golem-dataset-472 = Francevillite +names-golem-dataset-473 = Franckeite +names-golem-dataset-474 = Frankamenite +names-golem-dataset-475 = Frankdicksonite +names-golem-dataset-476 = Frankhawthorneite +names-golem-dataset-477 = Franklinite +names-golem-dataset-478 = Franklinphilite +names-golem-dataset-479 = Freibergite +names-golem-dataset-480 = Freieslebenite +names-golem-dataset-481 = Fukuchilite +names-golem-dataset-482 = Gabrielite +names-golem-dataset-483 = Gadolinite +names-golem-dataset-484 = Gagarinite +names-golem-dataset-485 = Gahnite +names-golem-dataset-486 = Galaxite +names-golem-dataset-487 = Galena +names-golem-dataset-488 = Galkhaite +names-golem-dataset-489 = Gananite +names-golem-dataset-490 = Garnet +names-golem-dataset-491 = Gaspeite +names-golem-dataset-492 = Gatehouseite +names-golem-dataset-493 = Gaylussite +names-golem-dataset-494 = Gedrite +names-golem-dataset-495 = Geerite +names-golem-dataset-496 = Gehlenite +names-golem-dataset-497 = Geigerite +names-golem-dataset-498 = Geikielite +names-golem-dataset-499 = Geocronite +names-golem-dataset-500 = Georgerobinsonite +names-golem-dataset-501 = Germanite +names-golem-dataset-502 = Gersdorffite +names-golem-dataset-503 = Getchellite +names-golem-dataset-504 = Gibbsite +names-golem-dataset-505 = Gilalite +names-golem-dataset-506 = Gismondine +names-golem-dataset-507 = Glauberite +names-golem-dataset-508 = Glaucochroite +names-golem-dataset-509 = Glaucodot +names-golem-dataset-510 = Glauconite +names-golem-dataset-511 = Glaucophane +names-golem-dataset-512 = Gmelinite +names-golem-dataset-513 = Godovikovite +names-golem-dataset-514 = Goethite +names-golem-dataset-515 = Gold +names-golem-dataset-516 = Goldmanite +names-golem-dataset-517 = Gonnardite +names-golem-dataset-518 = Gordaite +names-golem-dataset-519 = Gormanite +names-golem-dataset-520 = Goslarite +names-golem-dataset-521 = Graftonite +names-golem-dataset-522 = Grandidierite +names-golem-dataset-523 = Grandreefite +names-golem-dataset-524 = Graphite +names-golem-dataset-525 = Gratonite +names-golem-dataset-526 = Greenalite +names-golem-dataset-527 = Greenockite +names-golem-dataset-528 = Gregoryite +names-golem-dataset-529 = Greifensteinite +names-golem-dataset-530 = Greigite +names-golem-dataset-531 = Grossite +names-golem-dataset-532 = Grossular +names-golem-dataset-533 = Groutite +names-golem-dataset-534 = Grunerite +names-golem-dataset-535 = Guettardite +names-golem-dataset-536 = Gugiaite +names-golem-dataset-537 = Guilleminite +names-golem-dataset-538 = Gunningite +names-golem-dataset-539 = Guyanaite +names-golem-dataset-540 = Gwihabaite +names-golem-dataset-541 = Gypsum +names-golem-dataset-542 = Hafnon +names-golem-dataset-543 = Hagendorfite +names-golem-dataset-544 = Haggertyite +names-golem-dataset-545 = Haidingerite +names-golem-dataset-546 = Haiweeite +names-golem-dataset-547 = Haleniusite +names-golem-dataset-548 = Halite +names-golem-dataset-549 = Halloysite +names-golem-dataset-550 = Halotrichite +names-golem-dataset-551 = Hambergite +names-golem-dataset-552 = Hanksite +names-golem-dataset-553 = Hapkeite +names-golem-dataset-554 = Hardystonite +names-golem-dataset-555 = Harmotome +names-golem-dataset-556 = Hauerite +names-golem-dataset-557 = Hausmannite +names-golem-dataset-558 = Hauyne +names-golem-dataset-559 = Hawleyite +names-golem-dataset-560 = Haxonite +names-golem-dataset-561 = Hazenite +names-golem-dataset-562 = Heazlewoodite +names-golem-dataset-563 = Hectorite +names-golem-dataset-564 = Hedenbergite +names-golem-dataset-565 = Hellyerite +names-golem-dataset-566 = Hematite +names-golem-dataset-567 = Hemihedrite +names-golem-dataset-568 = Hemimorphite +names-golem-dataset-569 = Hemusite +names-golem-dataset-570 = Herbertsmithite +names-golem-dataset-571 = Hercynite +names-golem-dataset-572 = Herderite +names-golem-dataset-573 = Hessite +names-golem-dataset-574 = Heulandite +names-golem-dataset-575 = Hexaferrum +names-golem-dataset-576 = Hiarneite +names-golem-dataset-577 = Hibonite +names-golem-dataset-578 = Hidalgoite +names-golem-dataset-579 = Hilgardite +names-golem-dataset-580 = Hisingerite +names-golem-dataset-581 = Hodgkinsonite +names-golem-dataset-582 = Hoelite +names-golem-dataset-583 = Hollandite +names-golem-dataset-584 = Holmquistite +names-golem-dataset-585 = Homilite +names-golem-dataset-586 = Hopeite +names-golem-dataset-587 = Hornblende +names-golem-dataset-588 = Howlite +names-golem-dataset-589 = Hsianghualite +names-golem-dataset-590 = Hubeite +names-golem-dataset-591 = Hubnerite +names-golem-dataset-592 = Huemulite +names-golem-dataset-593 = Humite +names-golem-dataset-594 = Huntite +names-golem-dataset-595 = Hureaulite +names-golem-dataset-596 = Hutchinsonite +names-golem-dataset-597 = Huttonite +names-golem-dataset-598 = Hydroboracite +names-golem-dataset-599 = Hydrogrossular +names-golem-dataset-600 = Hydrohalite +names-golem-dataset-601 = Hydrokenoelsmoreite +names-golem-dataset-602 = Hydromagnesite +names-golem-dataset-603 = Hydrotalcite +names-golem-dataset-604 = Hydroxylapatite +names-golem-dataset-605 = Hydrozincite +names-golem-dataset-606 = Ianbruceite +names-golem-dataset-607 = Ice +names-golem-dataset-608 = Icosahedrite +names-golem-dataset-609 = Idrialite +names-golem-dataset-610 = Ikaite +names-golem-dataset-611 = Illite +names-golem-dataset-612 = Ilmenite +names-golem-dataset-613 = Ilvaite +names-golem-dataset-614 = Imogolite +names-golem-dataset-615 = Indite +names-golem-dataset-616 = Indium +names-golem-dataset-617 = Inyoite +names-golem-dataset-618 = Iodargyrite +names-golem-dataset-619 = Iranite +names-golem-dataset-620 = Iridium +names-golem-dataset-621 = Iron +names-golem-dataset-622 = Ixiolite +names-golem-dataset-623 = Jacobsite +names-golem-dataset-624 = Jadarite +names-golem-dataset-625 = Jadeite +names-golem-dataset-626 = Jaffeite +names-golem-dataset-627 = Jalpaite +names-golem-dataset-628 = Jamesonite +names-golem-dataset-629 = Janggunite +names-golem-dataset-630 = Jarosewichite +names-golem-dataset-631 = Jarosite +names-golem-dataset-632 = Jennite +names-golem-dataset-633 = Jeremejevite +names-golem-dataset-634 = Jerrygibbsite +names-golem-dataset-635 = Jimthompsonite +names-golem-dataset-636 = Johannite +names-golem-dataset-637 = Jolliffeite +names-golem-dataset-638 = Jonesite +names-golem-dataset-639 = Jordanite +names-golem-dataset-640 = Julgoldite +names-golem-dataset-641 = Junitoite +names-golem-dataset-642 = Jurbanite +names-golem-dataset-643 = Kaatialaite +names-golem-dataset-644 = Kadyrelite +names-golem-dataset-645 = Kaersutite +names-golem-dataset-646 = Kainite +names-golem-dataset-647 = Kainosite +names-golem-dataset-648 = Kalininite +names-golem-dataset-649 = Kalinite +names-golem-dataset-650 = Kalsilite +names-golem-dataset-651 = Kamacite +names-golem-dataset-652 = Kambaldaite +names-golem-dataset-653 = Kamiokite +names-golem-dataset-654 = Kampfite +names-golem-dataset-655 = Kankite +names-golem-dataset-656 = Kanoite +names-golem-dataset-657 = Kaolinite +names-golem-dataset-658 = Karlite +names-golem-dataset-659 = Kassite +names-golem-dataset-660 = Kegelite +names-golem-dataset-661 = Keilite +names-golem-dataset-662 = Kermesite +names-golem-dataset-663 = Kernite +names-golem-dataset-664 = Kesterite +names-golem-dataset-665 = Keyite +names-golem-dataset-666 = Khatyrkite +names-golem-dataset-667 = Kieserite +names-golem-dataset-668 = Kinoite +names-golem-dataset-669 = Knebelite +names-golem-dataset-670 = Knorringite +names-golem-dataset-671 = Kobellite +names-golem-dataset-672 = Kochite +names-golem-dataset-673 = Kogarkoite +names-golem-dataset-674 = Kolbeckite +names-golem-dataset-675 = Kornerupine +names-golem-dataset-676 = Kosmochlor +names-golem-dataset-677 = Kostovite +names-golem-dataset-678 = Kottigite +names-golem-dataset-679 = Kovdorskite +names-golem-dataset-680 = Kratochv�lite +names-golem-dataset-681 = Kremersite +names-golem-dataset-682 = Krennerite +names-golem-dataset-683 = Krieselite +names-golem-dataset-684 = Krohnkite +names-golem-dataset-685 = Krotite +names-golem-dataset-686 = Krutovite +names-golem-dataset-687 = Kukharenkoite +names-golem-dataset-688 = Kuratite +names-golem-dataset-689 = Kurnakovite +names-golem-dataset-690 = Kutnohorite +names-golem-dataset-691 = Kyanite +names-golem-dataset-692 = Labradorite +names-golem-dataset-693 = Lanarkite +names-golem-dataset-694 = Langbeinite +names-golem-dataset-695 = Langite +names-golem-dataset-696 = Lansfordite +names-golem-dataset-697 = Lanthanite +names-golem-dataset-698 = Laplandite +names-golem-dataset-699 = Larnite +names-golem-dataset-700 = Laumontite +names-golem-dataset-701 = Laurionite +names-golem-dataset-702 = Laurite +names-golem-dataset-703 = Lautite +names-golem-dataset-704 = Lavendulan +names-golem-dataset-705 = Lawsonite +names-golem-dataset-706 = Lazulite +names-golem-dataset-707 = Lazurite +names-golem-dataset-708 = Lead +names-golem-dataset-709 = Leadhillite +names-golem-dataset-710 = Legrandite +names-golem-dataset-711 = Leifite +names-golem-dataset-712 = Leightonite +names-golem-dataset-713 = Lepidocrocite +names-golem-dataset-714 = Lepidolite +names-golem-dataset-715 = Letovicite +names-golem-dataset-716 = Leucite +names-golem-dataset-717 = Leucophanite +names-golem-dataset-718 = Leucophoenicite +names-golem-dataset-719 = Levyne +names-golem-dataset-720 = Libethenite +names-golem-dataset-721 = Liebigite +names-golem-dataset-722 = Linarite +names-golem-dataset-723 = Lindgrenite +names-golem-dataset-724 = Linnaeite +names-golem-dataset-725 = Lipscombite +names-golem-dataset-726 = Liroconite +names-golem-dataset-727 = Litharge +names-golem-dataset-728 = Lithiophilite +names-golem-dataset-729 = Livingstonite +names-golem-dataset-730 = Lizardite +names-golem-dataset-731 = Loellingite +names-golem-dataset-732 = Lonsdaleite +names-golem-dataset-733 = Loparite +names-golem-dataset-734 = Lopezite +names-golem-dataset-735 = Lorandite +names-golem-dataset-736 = Lorenzenite +names-golem-dataset-737 = Loveringite +names-golem-dataset-738 = Ludlamite +names-golem-dataset-739 = Ludwigite +names-golem-dataset-740 = Lulzacite +names-golem-dataset-741 = Lyonsite +names-golem-dataset-742 = Macaulayite +names-golem-dataset-743 = Macdonaldite +names-golem-dataset-744 = Mackinawite +names-golem-dataset-745 = Madocite +names-golem-dataset-746 = Magadiite +names-golem-dataset-747 = Maghemite +names-golem-dataset-748 = Magnesioferrite +names-golem-dataset-749 = Magnesiohastingsite +names-golem-dataset-750 = Magnesiopascoite +names-golem-dataset-751 = Magnesite +names-golem-dataset-752 = Magnetite +names-golem-dataset-753 = Majorite +names-golem-dataset-754 = Malachite +names-golem-dataset-755 = Malayaite +names-golem-dataset-756 = Manganite +names-golem-dataset-757 = Manganosite +names-golem-dataset-758 = Manganvesuvianite +names-golem-dataset-759 = Marcasite +names-golem-dataset-760 = Margaritasite +names-golem-dataset-761 = Margarite +names-golem-dataset-762 = Marialite +names-golem-dataset-763 = Maricite +names-golem-dataset-764 = Marrite +names-golem-dataset-765 = Marthozite +names-golem-dataset-766 = Mascagnite +names-golem-dataset-767 = Massicot +names-golem-dataset-768 = Masuyite +names-golem-dataset-769 = Matlockite +names-golem-dataset-770 = Maucherite +names-golem-dataset-771 = Mawsonite +names-golem-dataset-772 = Mckelveyite +names-golem-dataset-773 = Meionite +names-golem-dataset-774 = Melanophlogite +names-golem-dataset-775 = Melanterite +names-golem-dataset-776 = Melilite +names-golem-dataset-777 = Mellite +names-golem-dataset-778 = Melonite +names-golem-dataset-779 = Mendipite +names-golem-dataset-780 = Mendozite +names-golem-dataset-781 = Meneghinite +names-golem-dataset-782 = Mercury +names-golem-dataset-783 = Mereheadite +names-golem-dataset-784 = Merenskyite +names-golem-dataset-785 = Meridianiite +names-golem-dataset-786 = Merrillite +names-golem-dataset-787 = Mesolite +names-golem-dataset-788 = Messelite +names-golem-dataset-789 = Metacinnabar +names-golem-dataset-790 = Metatorbernite +names-golem-dataset-791 = Metazeunerite +names-golem-dataset-792 = Meyerhofferite +names-golem-dataset-793 = Miargyrite +names-golem-dataset-794 = Mica +names-golem-dataset-795 = Microcline +names-golem-dataset-796 = Microlite +names-golem-dataset-797 = Millerite +names-golem-dataset-798 = Millosevichite +names-golem-dataset-799 = Mimetite +names-golem-dataset-800 = Minium +names-golem-dataset-801 = Minnesotaite +names-golem-dataset-802 = Minyulite +names-golem-dataset-803 = Mirabilite +names-golem-dataset-804 = Mixite +names-golem-dataset-805 = Moganite +names-golem-dataset-806 = Mohite +names-golem-dataset-807 = Mohrite +names-golem-dataset-808 = Moissanite +names-golem-dataset-809 = Molybdenite +names-golem-dataset-810 = Molybdite +names-golem-dataset-811 = Monazite +names-golem-dataset-812 = Monohydrocalcite +names-golem-dataset-813 = Monticellite +names-golem-dataset-814 = Montmorillonite +names-golem-dataset-815 = Mooihoekite +names-golem-dataset-816 = Moolooite +names-golem-dataset-817 = Mordenite +names-golem-dataset-818 = Moschellandsbergite +names-golem-dataset-819 = Mosesite +names-golem-dataset-820 = Mottramite +names-golem-dataset-821 = Motukoreaite +names-golem-dataset-822 = Mullite +names-golem-dataset-823 = Mundite +names-golem-dataset-824 = Murdochite +names-golem-dataset-825 = Muscovite +names-golem-dataset-826 = Musgravite +names-golem-dataset-827 = Nabalamprophyllite +names-golem-dataset-828 = Nabesite +names-golem-dataset-829 = Nacrite +names-golem-dataset-830 = Nadorite +names-golem-dataset-831 = Nagyagite +names-golem-dataset-832 = Nahcolite +names-golem-dataset-833 = Naldrettite +names-golem-dataset-834 = Nambulite +names-golem-dataset-835 = Narsarsukite +names-golem-dataset-836 = Native copper +names-golem-dataset-837 = Natrolite +names-golem-dataset-838 = Natron +names-golem-dataset-839 = Natrophilite +names-golem-dataset-840 = Nekrasovite +names-golem-dataset-841 = Nelenite +names-golem-dataset-842 = Nenadkevichite +names-golem-dataset-843 = Nepheline +names-golem-dataset-844 = Nepouite +names-golem-dataset-845 = Neptunite +names-golem-dataset-846 = Nichromite +names-golem-dataset-847 = Nickel +names-golem-dataset-848 = Nickeline +names-golem-dataset-849 = Niedermayrite +names-golem-dataset-850 = Niningerite +names-golem-dataset-851 = Nissonite +names-golem-dataset-852 = Niter +names-golem-dataset-853 = Nitratine +names-golem-dataset-854 = Nobleite +names-golem-dataset-855 = Nontronite +names-golem-dataset-856 = Norbergite +names-golem-dataset-857 = Normandite +names-golem-dataset-858 = Northupite +names-golem-dataset-859 = Nosean +names-golem-dataset-860 = Nsutite +names-golem-dataset-861 = Nyerereite +names-golem-dataset-862 = kenite +names-golem-dataset-863 = Oldhamite +names-golem-dataset-864 = Olgite +names-golem-dataset-865 = Olivenite +names-golem-dataset-866 = Olivine +names-golem-dataset-867 = Omphacite +names-golem-dataset-868 = Ordonezite +names-golem-dataset-869 = Oregonite +names-golem-dataset-870 = Orpiment +names-golem-dataset-871 = Orthoclase +names-golem-dataset-872 = Osarizawaite +names-golem-dataset-873 = Osmium +names-golem-dataset-874 = Osumilite +names-golem-dataset-875 = Otavite +names-golem-dataset-876 = Ottrelite +names-golem-dataset-877 = Otwayite +names-golem-dataset-878 = Paakkonenite +names-golem-dataset-879 = Pabstite +names-golem-dataset-880 = Painite +names-golem-dataset-881 = Palladium +names-golem-dataset-882 = Palygorskite +names-golem-dataset-883 = Panethite +names-golem-dataset-884 = Panguite +names-golem-dataset-885 = Papagoite +names-golem-dataset-886 = Paragonite +names-golem-dataset-887 = Paralaurionite +names-golem-dataset-888 = Paramelaconite +names-golem-dataset-889 = Pararealgar +names-golem-dataset-890 = Pargasite +names-golem-dataset-891 = Parisite +names-golem-dataset-892 = Parsonsite +names-golem-dataset-893 = Partheite +names-golem-dataset-894 = Pascoite +names-golem-dataset-895 = Patronite +names-golem-dataset-896 = Paulingite +names-golem-dataset-897 = Paulscherrerite +names-golem-dataset-898 = Pearceite +names-golem-dataset-899 = Pecoraite +names-golem-dataset-900 = Pectolite +names-golem-dataset-901 = Penikisite +names-golem-dataset-902 = Penroseite +names-golem-dataset-903 = Pentagonite +names-golem-dataset-904 = Pentlandite +names-golem-dataset-905 = Perhamite +names-golem-dataset-906 = Periclase +names-golem-dataset-907 = Perite +names-golem-dataset-908 = Perovskite +names-golem-dataset-909 = Petalite +names-golem-dataset-910 = Petzite +names-golem-dataset-911 = Pezzottaite +names-golem-dataset-912 = Pharmacolite +names-golem-dataset-913 = Pharmacosiderite +names-golem-dataset-914 = Phenakite +names-golem-dataset-915 = Phillipsite +names-golem-dataset-916 = Phlogopite +names-golem-dataset-917 = Phoenicochroite +names-golem-dataset-918 = Phosgenite +names-golem-dataset-919 = Phosphophyllite +names-golem-dataset-920 = Phosphuranylite +names-golem-dataset-921 = Pickeringite +names-golem-dataset-922 = Picropharmacolite +names-golem-dataset-923 = Piemontite +names-golem-dataset-924 = Pigeonite +names-golem-dataset-925 = Pinalite +names-golem-dataset-926 = Pinnoite +names-golem-dataset-927 = Piypite +names-golem-dataset-928 = Plagioclase +names-golem-dataset-929 = Plancheite +names-golem-dataset-930 = Platinum +names-golem-dataset-931 = Plattnerite +names-golem-dataset-932 = Playfairite +names-golem-dataset-933 = Plumbogummite +names-golem-dataset-934 = Polarite +names-golem-dataset-935 = Pollucite +names-golem-dataset-936 = Polybasite +names-golem-dataset-937 = Polycrase +names-golem-dataset-938 = Polydymite +names-golem-dataset-939 = Polyhalite +names-golem-dataset-940 = Portlandite +names-golem-dataset-941 = Posnjakite +names-golem-dataset-942 = Poudretteite +names-golem-dataset-943 = Povondraite +names-golem-dataset-944 = Powellite +names-golem-dataset-945 = Prehnite +names-golem-dataset-946 = Proustite +names-golem-dataset-947 = Pseudobrookite +names-golem-dataset-948 = Pseudomalachite +names-golem-dataset-949 = Pseudowollastonite +names-golem-dataset-950 = Pumpellyite +names-golem-dataset-951 = Purpurite +names-golem-dataset-952 = Putnisite +names-golem-dataset-953 = Pyrargyrite +names-golem-dataset-954 = Pyrite +names-golem-dataset-955 = Pyrochlore +names-golem-dataset-956 = Pyrolusite +names-golem-dataset-957 = Pyromorphite +names-golem-dataset-958 = Pyrope +names-golem-dataset-959 = Pyrophanite +names-golem-dataset-960 = Pyrophyllite +names-golem-dataset-961 = Pyroxene +names-golem-dataset-962 = Pyroxferroite +names-golem-dataset-963 = Pyroxmangite +names-golem-dataset-964 = Pyrrhotite +names-golem-dataset-965 = Rambergite +names-golem-dataset-966 = Rameauite +names-golem-dataset-967 = Rammelsbergite +names-golem-dataset-968 = Rapidcreekite +names-golem-dataset-969 = Raspite +names-golem-dataset-970 = Realgar +names-golem-dataset-971 = Reidite +names-golem-dataset-972 = Reinerite +names-golem-dataset-973 = Renierite +names-golem-dataset-974 = Rheniite +names-golem-dataset-975 = Rhodium +names-golem-dataset-976 = Rhodochrosite +names-golem-dataset-977 = Rhodonite +names-golem-dataset-978 = Rhodplumsite +names-golem-dataset-979 = Rhomboclase +names-golem-dataset-980 = Richterite +names-golem-dataset-981 = Rickardite +names-golem-dataset-982 = Riebeckite +names-golem-dataset-983 = Ringwoodite +names-golem-dataset-984 = Roaldite +names-golem-dataset-985 = Robertsite +names-golem-dataset-986 = Rodalquilarite +names-golem-dataset-987 = Romanechite +names-golem-dataset-988 = Romeite +names-golem-dataset-989 = Rosasite +names-golem-dataset-990 = Roscoelite +names-golem-dataset-991 = Roselite +names-golem-dataset-992 = Rosenbergite +names-golem-dataset-993 = Rosickyite +names-golem-dataset-994 = Routhierite +names-golem-dataset-995 = Rozenite +names-golem-dataset-996 = Rubicline +names-golem-dataset-997 = Ruizite +names-golem-dataset-998 = Russellite +names-golem-dataset-999 = Ruthenium +names-golem-dataset-1000 = Rutherfordine +names-golem-dataset-1001 = Rutile +names-golem-dataset-1002 = Rynersonite +names-golem-dataset-1003 = Sabatierite +names-golem-dataset-1004 = Sabieite +names-golem-dataset-1005 = Sabinaite +names-golem-dataset-1006 = Sacrofanite +names-golem-dataset-1007 = Safflorite +names-golem-dataset-1008 = Sal Ammoniac +names-golem-dataset-1009 = Saleeite +names-golem-dataset-1010 = Saliotite +names-golem-dataset-1011 = Salzburgite +names-golem-dataset-1012 = Samarskite +names-golem-dataset-1013 = Sampleite +names-golem-dataset-1014 = Samsonite +names-golem-dataset-1015 = Samuelsonite +names-golem-dataset-1016 = Sanbornite +names-golem-dataset-1017 = Saneroite +names-golem-dataset-1018 = Sanidine +names-golem-dataset-1019 = Santabarbaraite +names-golem-dataset-1020 = Santite +names-golem-dataset-1021 = Saponite +names-golem-dataset-1022 = Sapphirine +names-golem-dataset-1023 = Sarabauite +names-golem-dataset-1024 = Sarkinite +names-golem-dataset-1025 = Sassolite +names-golem-dataset-1026 = Satterlyite +names-golem-dataset-1027 = Sauconite +names-golem-dataset-1028 = Sborgite +names-golem-dataset-1029 = Scapolite +names-golem-dataset-1030 = Schaferite +names-golem-dataset-1031 = Scheelite +names-golem-dataset-1032 = Schmiederite +names-golem-dataset-1033 = Schoepite +names-golem-dataset-1034 = Schorl +names-golem-dataset-1035 = Schreibersite +names-golem-dataset-1036 = Schreyerite +names-golem-dataset-1037 = Schrockingerite +names-golem-dataset-1038 = Schwertmannite +names-golem-dataset-1039 = Scolecite +names-golem-dataset-1040 = Scorodite +names-golem-dataset-1041 = Scorzalite +names-golem-dataset-1042 = Scrutinyite +names-golem-dataset-1043 = Seamanite +names-golem-dataset-1044 = Searlesite +names-golem-dataset-1045 = Seeligerite +names-golem-dataset-1046 = Segelerite +names-golem-dataset-1047 = Seifertite +names-golem-dataset-1048 = Sekaninaite +names-golem-dataset-1049 = Selenium +names-golem-dataset-1050 = Seligmannite +names-golem-dataset-1051 = Sellaite +names-golem-dataset-1052 = Semseyite +names-golem-dataset-1053 = Senarmontite +names-golem-dataset-1054 = Sepiolite +names-golem-dataset-1055 = Serandite +names-golem-dataset-1056 = Serendibite +names-golem-dataset-1057 = Serpentine +names-golem-dataset-1058 = Serpierite +names-golem-dataset-1059 = Sewardite +names-golem-dataset-1060 = Shandite +names-golem-dataset-1061 = Shattuckite +names-golem-dataset-1062 = Shigaite +names-golem-dataset-1063 = Shortite +names-golem-dataset-1064 = Siderite +names-golem-dataset-1065 = Siderophyllite +names-golem-dataset-1066 = Siderotil +names-golem-dataset-1067 = Siegenite +names-golem-dataset-1068 = Silicon +names-golem-dataset-1069 = Sillimanite +names-golem-dataset-1070 = Silver +names-golem-dataset-1071 = Simonellite +names-golem-dataset-1072 = Simpsonite +names-golem-dataset-1073 = Sincosite +names-golem-dataset-1074 = Sinkankasite +names-golem-dataset-1075 = Sinoite +names-golem-dataset-1076 = Skaergaardite +names-golem-dataset-1077 = Sklodowskite +names-golem-dataset-1078 = Skutterudite +names-golem-dataset-1079 = Smaltite +names-golem-dataset-1080 = Smectite +names-golem-dataset-1081 = Smithsonite +names-golem-dataset-1082 = Sodalite +names-golem-dataset-1083 = Soddyite +names-golem-dataset-1084 = Sonolite +names-golem-dataset-1085 = Sperrylite +names-golem-dataset-1086 = Spertiniite +names-golem-dataset-1087 = Spessartine +names-golem-dataset-1088 = Sphalerite +names-golem-dataset-1089 = Spherocobaltite +names-golem-dataset-1090 = Spinel +names-golem-dataset-1091 = Spodumene +names-golem-dataset-1092 = Spurrite +names-golem-dataset-1093 = Stannite +names-golem-dataset-1094 = Stannoidite +names-golem-dataset-1095 = Staurolite +names-golem-dataset-1096 = Steacyite +names-golem-dataset-1097 = Stellerite +names-golem-dataset-1098 = Stephanite +names-golem-dataset-1099 = Stercorite +names-golem-dataset-1100 = Stibarsen +names-golem-dataset-1101 = Stibiconite +names-golem-dataset-1102 = Stibiopalladinite +names-golem-dataset-1103 = Stibnite +names-golem-dataset-1104 = Stichtite +names-golem-dataset-1105 = Stilbite +names-golem-dataset-1106 = Stilleite +names-golem-dataset-1107 = Stillwaterite +names-golem-dataset-1108 = Stillwellite +names-golem-dataset-1109 = Stilpnomelane +names-golem-dataset-1110 = Stishovite +names-golem-dataset-1111 = Stolzite +names-golem-dataset-1112 = Strashimirite +names-golem-dataset-1113 = Strengite +names-golem-dataset-1114 = Stromeyerite +names-golem-dataset-1115 = Strontianite +names-golem-dataset-1116 = Struvite +names-golem-dataset-1117 = Studenitsite +names-golem-dataset-1118 = Studtite +names-golem-dataset-1119 = Stutzite +names-golem-dataset-1120 = Suanite +names-golem-dataset-1121 = Suessite +names-golem-dataset-1122 = Sugilite +names-golem-dataset-1123 = Sulfur +names-golem-dataset-1124 = Sursassite +names-golem-dataset-1125 = Susannite +names-golem-dataset-1126 = Sussexite +names-golem-dataset-1127 = Svanbergite +names-golem-dataset-1128 = Sweetite +names-golem-dataset-1129 = Switzerite +names-golem-dataset-1130 = Sylvanite +names-golem-dataset-1131 = Sylvite +names-golem-dataset-1132 = Synchysite +names-golem-dataset-1133 = Syngenite +names-golem-dataset-1134 = Taaffeite +names-golem-dataset-1135 = Tachyhydrite +names-golem-dataset-1136 = Taenite +names-golem-dataset-1137 = Talc +names-golem-dataset-1138 = Talmessite +names-golem-dataset-1139 = Talnakhite +names-golem-dataset-1140 = Tamarugite +names-golem-dataset-1141 = Tangeite +names-golem-dataset-1142 = Tantalite +names-golem-dataset-1143 = Tantite +names-golem-dataset-1144 = Tapiolite +names-golem-dataset-1145 = Taranakite +names-golem-dataset-1146 = Tarapacaite +names-golem-dataset-1147 = Tarbuttite +names-golem-dataset-1148 = Tausonite +names-golem-dataset-1149 = Teallite +names-golem-dataset-1150 = Tellurite +names-golem-dataset-1151 = Tellurium +names-golem-dataset-1152 = Tellurobismuthite +names-golem-dataset-1153 = Temagamite +names-golem-dataset-1154 = Tennantite +names-golem-dataset-1155 = Tenorite +names-golem-dataset-1156 = Tephroite +names-golem-dataset-1157 = Terlinguaite +names-golem-dataset-1158 = Teruggite +names-golem-dataset-1159 = Tetradymite +names-golem-dataset-1160 = Tetrahedrite +names-golem-dataset-1161 = Tetrataenite +names-golem-dataset-1162 = Thaumasite +names-golem-dataset-1163 = Thenardite +names-golem-dataset-1164 = Thermonatrite +names-golem-dataset-1165 = Thiospinel +names-golem-dataset-1166 = Thomasclarkite +names-golem-dataset-1167 = Thomsenolite +names-golem-dataset-1168 = Thomsonite +names-golem-dataset-1169 = Thorianite +names-golem-dataset-1170 = Thorite +names-golem-dataset-1171 = Thortveitite +names-golem-dataset-1172 = Tiemannite +names-golem-dataset-1173 = Tienshanite +names-golem-dataset-1174 = Tin +names-golem-dataset-1175 = Tinaksite +names-golem-dataset-1176 = Tincalconite +names-golem-dataset-1177 = Titanite +names-golem-dataset-1178 = Titanium +names-golem-dataset-1179 = Titanowodginite +names-golem-dataset-1180 = Tobermorite +names-golem-dataset-1181 = Todorokite +names-golem-dataset-1182 = Tokyoite +names-golem-dataset-1183 = Tongbaite +names-golem-dataset-1184 = Topaz +names-golem-dataset-1185 = Torbernite +names-golem-dataset-1186 = Tourmaline +names-golem-dataset-1187 = Tranquillityite +names-golem-dataset-1188 = Tremolite +names-golem-dataset-1189 = Trevorite +names-golem-dataset-1190 = Tridymite +names-golem-dataset-1191 = Triphylite +names-golem-dataset-1192 = Triplite +names-golem-dataset-1193 = Triploidite +names-golem-dataset-1194 = Tripuhyite +names-golem-dataset-1195 = Troilite +names-golem-dataset-1196 = Trona +names-golem-dataset-1197 = Tschermakite +names-golem-dataset-1198 = Tschermigite +names-golem-dataset-1199 = Tsumcorite +names-golem-dataset-1200 = Tsumebite +names-golem-dataset-1201 = Tugtupite +names-golem-dataset-1202 = Tungsten +names-golem-dataset-1203 = Tungstite +names-golem-dataset-1204 = Tuperssuatsiaite +names-golem-dataset-1205 = Turquoise +names-golem-dataset-1206 = Tusionite +names-golem-dataset-1207 = Tyrolite +names-golem-dataset-1208 = Tyrrellite +names-golem-dataset-1209 = Tyuyamunite +names-golem-dataset-1210 = Uchucchacuaite +names-golem-dataset-1211 = Uklonskovite +names-golem-dataset-1212 = Ulexite +names-golem-dataset-1213 = Ullmannite +names-golem-dataset-1214 = Ulrichite +names-golem-dataset-1215 = Ulvospinel +names-golem-dataset-1216 = Umangite +names-golem-dataset-1217 = Umbite +names-golem-dataset-1218 = Upalite +names-golem-dataset-1219 = Uraninite +names-golem-dataset-1220 = Uranocircite +names-golem-dataset-1221 = Uranophane +names-golem-dataset-1222 = Uranopilite +names-golem-dataset-1223 = Urea +names-golem-dataset-1224 = Uricite +names-golem-dataset-1225 = Urusovite +names-golem-dataset-1226 = Ussingite +names-golem-dataset-1227 = Utahite +names-golem-dataset-1228 = Uvarovite +names-golem-dataset-1229 = Uytenbogaardtite +names-golem-dataset-1230 = Vaesite +names-golem-dataset-1231 = Valentinite +names-golem-dataset-1232 = Valleriite +names-golem-dataset-1233 = Vanadinite +names-golem-dataset-1234 = Vanadiocarpholite +names-golem-dataset-1235 = Vanadium +names-golem-dataset-1236 = Vantasselite +names-golem-dataset-1237 = Vanuralite +names-golem-dataset-1238 = Variscite +names-golem-dataset-1239 = Vaterite +names-golem-dataset-1240 = Vauquelinite +names-golem-dataset-1241 = Vauxite +names-golem-dataset-1242 = Veatchite +names-golem-dataset-1243 = Vermiculite +names-golem-dataset-1244 = Vesuvianite +names-golem-dataset-1245 = Villiaumite +names-golem-dataset-1246 = Violarite +names-golem-dataset-1247 = Vishnevite +names-golem-dataset-1248 = Vivianite +names-golem-dataset-1249 = Vladimirite +names-golem-dataset-1250 = Vlasovite +names-golem-dataset-1251 = Volborthite +names-golem-dataset-1252 = Vulcanite +names-golem-dataset-1253 = Wadsleyite +names-golem-dataset-1254 = Wagnerite +names-golem-dataset-1255 = Wairakite +names-golem-dataset-1256 = Wakabayashilite +names-golem-dataset-1257 = Wakefieldite +names-golem-dataset-1258 = Walfordite +names-golem-dataset-1259 = Wardite +names-golem-dataset-1260 = Warikahnite +names-golem-dataset-1261 = Warwickite +names-golem-dataset-1262 = Wassonite +names-golem-dataset-1263 = Wavellite +names-golem-dataset-1264 = Weddellite +names-golem-dataset-1265 = Weeksite +names-golem-dataset-1266 = Weilite +names-golem-dataset-1267 = Weissite +names-golem-dataset-1268 = Weloganite +names-golem-dataset-1269 = Whewellite +names-golem-dataset-1270 = Whiteite +names-golem-dataset-1271 = Whitlockite +names-golem-dataset-1272 = Willemite +names-golem-dataset-1273 = Wiluite +names-golem-dataset-1274 = Witherite +names-golem-dataset-1275 = Wodginite +names-golem-dataset-1276 = Wolframite +names-golem-dataset-1277 = Wollastonite +names-golem-dataset-1278 = Woodhouseite +names-golem-dataset-1279 = Wulfenite +names-golem-dataset-1280 = Wurtzite +names-golem-dataset-1281 = Wustite +names-golem-dataset-1282 = Wyartite +names-golem-dataset-1283 = Xanthiosite +names-golem-dataset-1284 = Xanthoconite +names-golem-dataset-1285 = Xanthoxenite +names-golem-dataset-1286 = Xenophyllite +names-golem-dataset-1287 = Xenotime +names-golem-dataset-1288 = Xiangjiangite +names-golem-dataset-1289 = Xieite +names-golem-dataset-1290 = Xifengite +names-golem-dataset-1291 = Xilingolite +names-golem-dataset-1292 = Ximengite +names-golem-dataset-1293 = Xingzhongite +names-golem-dataset-1294 = Xitieshanite +names-golem-dataset-1295 = Xocolatlite +names-golem-dataset-1296 = Xocomecatlite +names-golem-dataset-1297 = Xonotlite +names-golem-dataset-1298 = Ye'elimite +names-golem-dataset-1299 = Yttrialite +names-golem-dataset-1300 = Yttropyrochlore +names-golem-dataset-1301 = Yuksporite +names-golem-dataset-1302 = Zabuyelite +names-golem-dataset-1303 = Zaccagnaite +names-golem-dataset-1304 = Zaherite +names-golem-dataset-1305 = Zairite +names-golem-dataset-1306 = Zakharovite +names-golem-dataset-1307 = Zanazziite +names-golem-dataset-1308 = Zaratite +names-golem-dataset-1309 = Zektzerite +names-golem-dataset-1310 = Zemannite +names-golem-dataset-1311 = Zeolite +names-golem-dataset-1312 = Zeunerite +names-golem-dataset-1313 = Zhanghengite +names-golem-dataset-1314 = Zharchikhite +names-golem-dataset-1315 = Zhemchuzhnikovite +names-golem-dataset-1316 = Ziesite +names-golem-dataset-1317 = Zimbabweite +names-golem-dataset-1318 = Zincite +names-golem-dataset-1319 = Zinclipscombite +names-golem-dataset-1320 = Zincmelanterite +names-golem-dataset-1321 = Zincobotryogen +names-golem-dataset-1322 = Zincochromite +names-golem-dataset-1323 = Zincolivenite +names-golem-dataset-1324 = Zinkenite +names-golem-dataset-1325 = Zinnwaldite +names-golem-dataset-1326 = Zippeite +names-golem-dataset-1327 = Zircon +names-golem-dataset-1328 = Zirconolite +names-golem-dataset-1329 = Zircophyllite +names-golem-dataset-1330 = Zirkelite +names-golem-dataset-1331 = Znucalite +names-golem-dataset-1332 = Zoisite +names-golem-dataset-1333 = Zorite +names-golem-dataset-1334 = Zunyite +names-golem-dataset-1335 = Zussmanite +names-golem-dataset-1336 = Zykaite diff --git a/Resources/Locale/en-US/datasets/names/hologram.ftl b/Resources/Locale/en-US/datasets/names/hologram.ftl new file mode 100644 index 0000000000..41e1492a4a --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/hologram.ftl @@ -0,0 +1,14 @@ +names-hologram-dataset-1 = Apollo +names-hologram-dataset-2 = Data +names-hologram-dataset-3 = GLIMMER +names-hologram-dataset-4 = El Roi +names-hologram-dataset-5 = Hephaestus +names-hologram-dataset-6 = Holo-AI +names-hologram-dataset-7 = Holo-Friend +names-hologram-dataset-8 = Hologram +names-hologram-dataset-9 = Odysseus +names-hologram-dataset-10 = Persephone +names-hologram-dataset-11 = Petra +names-hologram-dataset-12 = Processor +names-hologram-dataset-13 = Prometheus +names-hologram-dataset-14 = Theseus diff --git a/Resources/Prototypes/Datasets/Names/clown.yml b/Resources/Prototypes/Datasets/Names/clown.yml index 701cae82db..84b265bd8c 100644 --- a/Resources/Prototypes/Datasets/Names/clown.yml +++ b/Resources/Prototypes/Datasets/Names/clown.yml @@ -1,55 +1,5 @@ -- type: dataset - id: names_clown +- type: localizedDataset + id: NamesClown values: - - Gigglesworth - - Honkel the III - - Goose McSunny - - Toodles Sharperton - - Dinky Doodle - - Honkerbelle - - Bo Bo Sassy - - Baby Cakes - - Ladybug Honks - - Ziggy Yoyo - - Razzle Dazzle - - Buster Frown - - Pepinpop - - Silly Willy - - Jo Jo Bobo Bo - - Pocket - - Patches - - Checkers - - Freckle - - Honker - - Bonker - - Skiddle - - Sprinkledinkle - - Ronnie Pace - - Miss Stockings - - Slippy Joe - - Redshirt McBeat - - Flop O'Honker - - Speckles - - Bubble - - Button - - Sparkle - - Giggles - - Jingle - - Candy - - Shiggy Diggintons - - Hingle McCringleberry - - Pagliacci - - Coco - - Blinko - - Shaggy Two Dope - - Aunt Scootaloo - - Bozo - - Doink - - Mr. Noodle - - Yucko - - Buggy - - Chuckles - - Yorick - - Cutter - - Sweet Tooth - - Pogo + prefix: names-clown-dataset- + count: 52 diff --git a/Resources/Prototypes/Datasets/Names/golem.yml b/Resources/Prototypes/Datasets/Names/golem.yml index 4aef803176..52ecc30c9b 100644 --- a/Resources/Prototypes/Datasets/Names/golem.yml +++ b/Resources/Prototypes/Datasets/Names/golem.yml @@ -1,1339 +1,5 @@ -- type: dataset - id: names_golem +- type: localizedDataset + id: NamesGolem values: - - Abelsonite - - Abenakiite - - Abernathyite - - Abhurite - - Abramovite - - Abswurmbachite - - Acanthite - - Achavalite - - Actinolite - - Acuminite - - Adamite - - Adelite - - Admontite - - Aegirine - - Aenigmatite - - Aerinite - - Aerugite - - Aeschynite - - Afghanite - - Afwillite - - Agardite - - Agrellite - - Agrinierite - - Aguilarite - - Aheylite - - Ahlfeldite - - Aikinite - - Ajoite - - Akaganeite - - Akatoreite - - Akdalaite - - �kermanite - - Akhtenskite - - Akimotoite - - Akrochordite - - Aksaite - - Aktashite - - Alabandite - - Alacranite - - Alamosite - - Alarsite - - Albite - - Albrechtschraufite - - Aldermanite - - Aleksite - - Alforsite - - Algodonite - - Aliettite - - Allabogdanite - - Allactite - - Allanite - - Allanpringite - - Allargentum - - Alleghanyite - - Alloclasite - - Allophane - - Alluaivite - - Alluaudite - - Almandine - - Almarudite - - Alsakharovite - - Alstonite - - Altaite - - Althausite - - Althupite - - Altisite - - Alum - - Aluminite - - Aluminium - - Alunite - - Alunogen - - Amakinite - - Amarantite - - Amblygonite - - Ameghinite - - Amesite - - Amicite - - Amphibole - - Analcime - - Anandite - - Anapaite - - Anatase - - Ancylite - - Andalusite - - Andersonite - - Andesine - - Andorite - - Andradite - - Andyrobertsite - - Anglesite - - Anhydrite - - Ankerite - - Annabergite - - Annite - - Anorthite - - Anorthoclase - - Antarcticite - - Anthonyite - - Anthophyllite - - Antigorite - - Antimony - - Antitaenite - - Antlerite - - Apachite - - Apatite - - Aphthitalite - - Apophyllite - - Aragonite - - Arcanite - - Archerite - - Arctite - - Arcubisite - - Ardaite - - Arfvedsonite - - Argentite - - Argutite - - Argyrodite - - Armalcolite - - Arsenic - - Arseniosiderite - - Arsenoclasite - - Arsenolite - - Arsenopyrite - - Arthurite - - Artinite - - Artroeite - - Ashburtonite - - Ashoverite - - Asisite - - Astrophyllite - - Atacamite - - Athabascaite - - Atheneite - - Aubertite - - Augelite - - Augite - - Aurichalcite - - Auricupride - - Aurostibite - - Austinite - - Autunite - - Avicennite - - Avogadrite - - Awaruite - - Axinite - - Azurite - - Babefphite - - Babingtonite - - Baddeleyite - - Bakerite - - Balangeroite - - Banalsite - - Baotite - - Bararite - - Barrerite - - Barstowite - - Baryte - - Barytocalcite - - Bassanite - - Bastnasite - - Baumhauerite - - Bayldonite - - Bayleyite - - Bazzite - - Becquerelite - - Benitoite - - Benstonite - - Bentorite - - Beraunite - - Berborite - - Bergenite - - Berlinite - - Berryite - - Berthierite - - Bertrandite - - Beryl - - Beryllonite - - Beudantite - - Bicchulite - - Biehlite - - Bilinite - - Billietite - - Billwiseite - - Biotite - - Birnessite - - Bischofite - - Bismite - - Bismuth - - Bismuthinite - - Bismutite - - Bityite - - Bixbyite - - Blodite - - Blossite - - Bobfergusonite - - Boehmite - - Boleite - - Boltwoodite - - Bonaccordite - - Boracite - - Borax - - Bornite - - Botallackite - - Botryogen - - Boulangerite - - Bournonite - - Boussingaultite - - Bowieite - - Braggite - - Brassite - - Braunite - - Brazilianite - - Breithauptite - - Brewsterite - - Brezinaite - - Brianite - - Brianyoungite - - Briartite - - Bridgmanite - - Brochantite - - Brockite - - Bromargyrite - - Bromellite - - Bronzite - - Brookite - - Brownleeite - - Brownmillerite - - Brucite - - Brushite - - Buddingtonite - - Bukovite - - Bukovskyite - - Bultfonteinite - - Bunsenite - - Bustamite - - Bystrite - - Cabalzarite - - Cabriite - - Cacoxenite - - Cadmium - - Cadmoindite - - Cadmoselite - - Cadwaladerite - - Cafarsite - - Cafetite - - Cahnite - - Calaverite - - Calciborite - - Calcite - - Calderite - - Caledonite - - Calumetite - - Campigliaite - - Canavesite - - Cancrinite - - Canfieldite - - Carletonite - - Carlosruizite - - Carlsbergite - - Carminite - - Carnallite - - Carnotite - - Carobbiite - - Carpathite - - Carpholite - - Carrollite - - Caryopilite - - Cassiterite - - Cattierite - - Cavansite - - Celadonite - - Celestine - - Celsian - - Cerite - - Cerium - - Cerussite - - Cervandonite - - Cervantite - - Cesanite - - Cesbronite - - Chabazite - - Chaidamuite - - Chalcanthite - - Chalcocite - - Chalcophyllite - - Chalcopyrite - - Challacolloite - - Chambersite - - Chamosite - - Changbaiite - - Chaoite - - Chapmanite - - Charoite - - Chatkalite - - Chesterite - - Chibaite - - Childrenite - - Chlorargyrite - - Chlorite - - Chloritoid - - Chlormayenite - - Chlorocalcite - - Chloroxiphite - - Chondrodite - - Chrisstanleyite - - Christite - - Chromite - - Chromium - - Chrysoberyl - - Chrysocolla - - Chrysotile - - Chvaleticeite - - Cinnabar - - Clarkeite - - Claudetite - - Clausthalite - - Clearcreekite - - Cleusonite - - Clinoclase - - Clinohedrite - - Clinohumite - - Clinoptilolite - - Clinozoisite - - Clintonite - - Cobaltite - - Coccinite - - Coconinoite - - Coesite - - Coffinite - - Cohenite - - Colemanite - - Colimaite - - Collinsite - - Coloradoite - - Columbite - - Combeite - - Conichalcite - - Connellite - - Cooperite - - Copiapite - - Copper - - Corderoite - - Cordierite - - Corkite - - Cornubite - - Cornwallite - - Corundum - - Cotunnite - - Covellite - - Coyoteite - - Creedite - - Cristobalite - - Crocoite - - Cronstedtite - - Crookesite - - Crossite - - Cryolite - - Cryptomelane - - Cubanite - - Cummingtonite - - Cupalite - - Cuprite - - Cuprosklodowskite - - Cuprospinel - - Curite - - Cuspidine - - Cyanotrichite - - Cylindrite - - Cymrite - - Cyrilovite - - Danalite - - Danburite - - Datolite - - Daubreeite - - Daubreelite - - Davidite - - Dawsonite - - Delafossite - - Delvauxite - - Demesmaekerite - - Derriksite - - Descloizite - - Devilline - - Diaboleite - - Diadochite - - Diamond - - Diaspore - - Dickite - - Digenite - - Dimorphite - - Diopside - - Dioptase - - Djerfisherite - - Djurleite - - Dmitryivanovite - - Dollaseite - - Dolomite - - Domeykite - - Donnayite - - Drysdallite - - Duftite - - Dumortierite - - Dundasite - - Dypingite - - Dyscrasite - - Dzhalindite - - Edenite - - Edingtonite - - Efremovite - - Ekanite - - Elbaite - - Emmonsite - - Empressite - - Enargite - - Enstatite - - Eosphorite - - Ephesite - - Epidote - - Epsomite - - Ericssonite - - Erionite - - Erythrite - - Eskolaite - - Esperite - - Ettringite - - Euchroite - - Euclase - - Eucryptite - - Eudialyte - - Euxenite - - Eveite - - Evenkite - - Eveslogite - - Fabianite - - Farneseite - - Faujasite - - Faustite - - Fayalite - - Feldspar - - Feldspathoid - - Felsobanyaite - - Ferberite - - Fergusonite - - Feroxyhyte - - Ferrierite - - Ferrihydrite - - Ferrimolybdite - - Ferro-actinolite - - Ferrogedrite - - Ferrohortonolite - - Ferronigerite - - Ferropericlase - - Ferroselite - - Fettelite - - Fichtelite - - Fletcherite - - Fluckite - - Fluellite - - Fluoborite - - Fluocerite - - Fluorapatite - - Fluorapophyllite - - Fluorcaphite - - Fluorellestadite - - Fluorite - - Fluororichterite - - Fornacite - - Forsterite - - Fougerite - - Fourmarierite - - Fraipontite - - Francevillite - - Franckeite - - Frankamenite - - Frankdicksonite - - Frankhawthorneite - - Franklinite - - Franklinphilite - - Freibergite - - Freieslebenite - - Fukuchilite - - Gabrielite - - Gadolinite - - Gagarinite - - Gahnite - - Galaxite - - Galena - - Galkhaite - - Gananite - - Garnet - - Gaspeite - - Gatehouseite - - Gaylussite - - Gedrite - - Geerite - - Gehlenite - - Geigerite - - Geikielite - - Geocronite - - Georgerobinsonite - - Germanite - - Gersdorffite - - Getchellite - - Gibbsite - - Gilalite - - Gismondine - - Glauberite - - Glaucochroite - - Glaucodot - - Glauconite - - Glaucophane - - Gmelinite - - Godovikovite - - Goethite - - Gold - - Goldmanite - - Gonnardite - - Gordaite - - Gormanite - - Goslarite - - Graftonite - - Grandidierite - - Grandreefite - - Graphite - - Gratonite - - Greenalite - - Greenockite - - Gregoryite - - Greifensteinite - - Greigite - - Grossite - - Grossular - - Groutite - - Grunerite - - Guettardite - - Gugiaite - - Guilleminite - - Gunningite - - Guyanaite - - Gwihabaite - - Gypsum - - Hafnon - - Hagendorfite - - Haggertyite - - Haidingerite - - Haiweeite - - Haleniusite - - Halite - - Halloysite - - Halotrichite - - Hambergite - - Hanksite - - Hapkeite - - Hardystonite - - Harmotome - - Hauerite - - Hausmannite - - Hauyne - - Hawleyite - - Haxonite - - Hazenite - - Heazlewoodite - - Hectorite - - Hedenbergite - - Hellyerite - - Hematite - - Hemihedrite - - Hemimorphite - - Hemusite - - Herbertsmithite - - Hercynite - - Herderite - - Hessite - - Heulandite - - Hexaferrum - - Hiarneite - - Hibonite - - Hidalgoite - - Hilgardite - - Hisingerite - - Hodgkinsonite - - Hoelite - - Hollandite - - Holmquistite - - Homilite - - Hopeite - - Hornblende - - Howlite - - Hsianghualite - - Hubeite - - Hubnerite - - Huemulite - - Humite - - Huntite - - Hureaulite - - Hutchinsonite - - Huttonite - - Hydroboracite - - Hydrogrossular - - Hydrohalite - - Hydrokenoelsmoreite - - Hydromagnesite - - Hydrotalcite - - Hydroxylapatite - - Hydrozincite - - Ianbruceite - - Ice - - Icosahedrite - - Idrialite - - Ikaite - - Illite - - Ilmenite - - Ilvaite - - Imogolite - - Indite - - Indium - - Inyoite - - Iodargyrite - - Iranite - - Iridium - - Iron - - Ixiolite - - Jacobsite - - Jadarite - - Jadeite - - Jaffeite - - Jalpaite - - Jamesonite - - Janggunite - - Jarosewichite - - Jarosite - - Jennite - - Jeremejevite - - Jerrygibbsite - - Jimthompsonite - - Johannite - - Jolliffeite - - Jonesite - - Jordanite - - Julgoldite - - Junitoite - - Jurbanite - - Kaatialaite - - Kadyrelite - - Kaersutite - - Kainite - - Kainosite - - Kalininite - - Kalinite - - Kalsilite - - Kamacite - - Kambaldaite - - Kamiokite - - Kampfite - - Kankite - - Kanoite - - Kaolinite - - Karlite - - Kassite - - Kegelite - - Keilite - - Kermesite - - Kernite - - Kesterite - - Keyite - - Khatyrkite - - Kieserite - - Kinoite - - Knebelite - - Knorringite - - Kobellite - - Kochite - - Kogarkoite - - Kolbeckite - - Kornerupine - - Kosmochlor - - Kostovite - - Kottigite - - Kovdorskite - - Kratochv�lite - - Kremersite - - Krennerite - - Krieselite - - Krohnkite - - Krotite - - Krutovite - - Kukharenkoite - - Kuratite - - Kurnakovite - - Kutnohorite - - Kyanite - - Labradorite - - Lanarkite - - Langbeinite - - Langite - - Lansfordite - - Lanthanite - - Laplandite - - Larnite - - Laumontite - - Laurionite - - Laurite - - Lautite - - Lavendulan - - Lawsonite - - Lazulite - - Lazurite - - Lead - - Leadhillite - - Legrandite - - Leifite - - Leightonite - - Lepidocrocite - - Lepidolite - - Letovicite - - Leucite - - Leucophanite - - Leucophoenicite - - Levyne - - Libethenite - - Liebigite - - Linarite - - Lindgrenite - - Linnaeite - - Lipscombite - - Liroconite - - Litharge - - Lithiophilite - - Livingstonite - - Lizardite - - Loellingite - - Lonsdaleite - - Loparite - - Lopezite - - Lorandite - - Lorenzenite - - Loveringite - - Ludlamite - - Ludwigite - - Lulzacite - - Lyonsite - - Macaulayite - - Macdonaldite - - Mackinawite - - Madocite - - Magadiite - - Maghemite - - Magnesioferrite - - Magnesiohastingsite - - Magnesiopascoite - - Magnesite - - Magnetite - - Majorite - - Malachite - - Malayaite - - Manganite - - Manganosite - - Manganvesuvianite - - Marcasite - - Margaritasite - - Margarite - - Marialite - - Maricite - - Marrite - - Marthozite - - Mascagnite - - Massicot - - Masuyite - - Matlockite - - Maucherite - - Mawsonite - - Mckelveyite - - Meionite - - Melanophlogite - - Melanterite - - Melilite - - Mellite - - Melonite - - Mendipite - - Mendozite - - Meneghinite - - Mercury - - Mereheadite - - Merenskyite - - Meridianiite - - Merrillite - - Mesolite - - Messelite - - Metacinnabar - - Metatorbernite - - Metazeunerite - - Meyerhofferite - - Miargyrite - - Mica - - Microcline - - Microlite - - Millerite - - Millosevichite - - Mimetite - - Minium - - Minnesotaite - - Minyulite - - Mirabilite - - Mixite - - Moganite - - Mohite - - Mohrite - - Moissanite - - Molybdenite - - Molybdite - - Monazite - - Monohydrocalcite - - Monticellite - - Montmorillonite - - Mooihoekite - - Moolooite - - Mordenite - - Moschellandsbergite - - Mosesite - - Mottramite - - Motukoreaite - - Mullite - - Mundite - - Murdochite - - Muscovite - - Musgravite - - Nabalamprophyllite - - Nabesite - - Nacrite - - Nadorite - - Nagyagite - - Nahcolite - - Naldrettite - - Nambulite - - Narsarsukite - - Native copper - - Natrolite - - Natron - - Natrophilite - - Nekrasovite - - Nelenite - - Nenadkevichite - - Nepheline - - Nepouite - - Neptunite - - Nichromite - - Nickel - - Nickeline - - Niedermayrite - - Niningerite - - Nissonite - - Niter - - Nitratine - - Nobleite - - Nontronite - - Norbergite - - Normandite - - Northupite - - Nosean - - Nsutite - - Nyerereite - - kenite - - Oldhamite - - Olgite - - Olivenite - - Olivine - - Omphacite - - Ordonezite - - Oregonite - - Orpiment - - Orthoclase - - Osarizawaite - - Osmium - - Osumilite - - Otavite - - Ottrelite - - Otwayite - - Paakkonenite - - Pabstite - - Painite - - Palladium - - Palygorskite - - Panethite - - Panguite - - Papagoite - - Paragonite - - Paralaurionite - - Paramelaconite - - Pararealgar - - Pargasite - - Parisite - - Parsonsite - - Partheite - - Pascoite - - Patronite - - Paulingite - - Paulscherrerite - - Pearceite - - Pecoraite - - Pectolite - - Penikisite - - Penroseite - - Pentagonite - - Pentlandite - - Perhamite - - Periclase - - Perite - - Perovskite - - Petalite - - Petzite - - Pezzottaite - - Pharmacolite - - Pharmacosiderite - - Phenakite - - Phillipsite - - Phlogopite - - Phoenicochroite - - Phosgenite - - Phosphophyllite - - Phosphuranylite - - Pickeringite - - Picropharmacolite - - Piemontite - - Pigeonite - - Pinalite - - Pinnoite - - Piypite - - Plagioclase - - Plancheite - - Platinum - - Plattnerite - - Playfairite - - Plumbogummite - - Polarite - - Pollucite - - Polybasite - - Polycrase - - Polydymite - - Polyhalite - - Portlandite - - Posnjakite - - Poudretteite - - Povondraite - - Powellite - - Prehnite - - Proustite - - Pseudobrookite - - Pseudomalachite - - Pseudowollastonite - - Pumpellyite - - Purpurite - - Putnisite - - Pyrargyrite - - Pyrite - - Pyrochlore - - Pyrolusite - - Pyromorphite - - Pyrope - - Pyrophanite - - Pyrophyllite - - Pyroxene - - Pyroxferroite - - Pyroxmangite - - Pyrrhotite - - Rambergite - - Rameauite - - Rammelsbergite - - Rapidcreekite - - Raspite - - Realgar - - Reidite - - Reinerite - - Renierite - - Rheniite - - Rhodium - - Rhodochrosite - - Rhodonite - - Rhodplumsite - - Rhomboclase - - Richterite - - Rickardite - - Riebeckite - - Ringwoodite - - Roaldite - - Robertsite - - Rodalquilarite - - Romanechite - - Romeite - - Rosasite - - Roscoelite - - Roselite - - Rosenbergite - - Rosickyite - - Routhierite - - Rozenite - - Rubicline - - Ruizite - - Russellite - - Ruthenium - - Rutherfordine - - Rutile - - Rynersonite - - Sabatierite - - Sabieite - - Sabinaite - - Sacrofanite - - Safflorite - - Sal Ammoniac - - Saleeite - - Saliotite - - Salzburgite - - Samarskite - - Sampleite - - Samsonite - - Samuelsonite - - Sanbornite - - Saneroite - - Sanidine - - Santabarbaraite - - Santite - - Saponite - - Sapphirine - - Sarabauite - - Sarkinite - - Sassolite - - Satterlyite - - Sauconite - - Sborgite - - Scapolite - - Schaferite - - Scheelite - - Schmiederite - - Schoepite - - Schorl - - Schreibersite - - Schreyerite - - Schrockingerite - - Schwertmannite - - Scolecite - - Scorodite - - Scorzalite - - Scrutinyite - - Seamanite - - Searlesite - - Seeligerite - - Segelerite - - Seifertite - - Sekaninaite - - Selenium - - Seligmannite - - Sellaite - - Semseyite - - Senarmontite - - Sepiolite - - Serandite - - Serendibite - - Serpentine - - Serpierite - - Sewardite - - Shandite - - Shattuckite - - Shigaite - - Shortite - - Siderite - - Siderophyllite - - Siderotil - - Siegenite - - Silicon - - Sillimanite - - Silver - - Simonellite - - Simpsonite - - Sincosite - - Sinkankasite - - Sinoite - - Skaergaardite - - Sklodowskite - - Skutterudite - - Smaltite - - Smectite - - Smithsonite - - Sodalite - - Soddyite - - Sonolite - - Sperrylite - - Spertiniite - - Spessartine - - Sphalerite - - Spherocobaltite - - Spinel - - Spodumene - - Spurrite - - Stannite - - Stannoidite - - Staurolite - - Steacyite - - Stellerite - - Stephanite - - Stercorite - - Stibarsen - - Stibiconite - - Stibiopalladinite - - Stibnite - - Stichtite - - Stilbite - - Stilleite - - Stillwaterite - - Stillwellite - - Stilpnomelane - - Stishovite - - Stolzite - - Strashimirite - - Strengite - - Stromeyerite - - Strontianite - - Struvite - - Studenitsite - - Studtite - - Stutzite - - Suanite - - Suessite - - Sugilite - - Sulfur - - Sursassite - - Susannite - - Sussexite - - Svanbergite - - Sweetite - - Switzerite - - Sylvanite - - Sylvite - - Synchysite - - Syngenite - - Taaffeite - - Tachyhydrite - - Taenite - - Talc - - Talmessite - - Talnakhite - - Tamarugite - - Tangeite - - Tantalite - - Tantite - - Tapiolite - - Taranakite - - Tarapacaite - - Tarbuttite - - Tausonite - - Teallite - - Tellurite - - Tellurium - - Tellurobismuthite - - Temagamite - - Tennantite - - Tenorite - - Tephroite - - Terlinguaite - - Teruggite - - Tetradymite - - Tetrahedrite - - Tetrataenite - - Thaumasite - - Thenardite - - Thermonatrite - - Thiospinel - - Thomasclarkite - - Thomsenolite - - Thomsonite - - Thorianite - - Thorite - - Thortveitite - - Tiemannite - - Tienshanite - - Tin - - Tinaksite - - Tincalconite - - Titanite - - Titanium - - Titanowodginite - - Tobermorite - - Todorokite - - Tokyoite - - Tongbaite - - Topaz - - Torbernite - - Tourmaline - - Tranquillityite - - Tremolite - - Trevorite - - Tridymite - - Triphylite - - Triplite - - Triploidite - - Tripuhyite - - Troilite - - Trona - - Tschermakite - - Tschermigite - - Tsumcorite - - Tsumebite - - Tugtupite - - Tungsten - - Tungstite - - Tuperssuatsiaite - - Turquoise - - Tusionite - - Tyrolite - - Tyrrellite - - Tyuyamunite - - Uchucchacuaite - - Uklonskovite - - Ulexite - - Ullmannite - - Ulrichite - - Ulvospinel - - Umangite - - Umbite - - Upalite - - Uraninite - - Uranocircite - - Uranophane - - Uranopilite - - Urea - - Uricite - - Urusovite - - Ussingite - - Utahite - - Uvarovite - - Uytenbogaardtite - - Vaesite - - Valentinite - - Valleriite - - Vanadinite - - Vanadiocarpholite - - Vanadium - - Vantasselite - - Vanuralite - - Variscite - - Vaterite - - Vauquelinite - - Vauxite - - Veatchite - - Vermiculite - - Vesuvianite - - Villiaumite - - Violarite - - Vishnevite - - Vivianite - - Vladimirite - - Vlasovite - - Volborthite - - Vulcanite - - Wadsleyite - - Wagnerite - - Wairakite - - Wakabayashilite - - Wakefieldite - - Walfordite - - Wardite - - Warikahnite - - Warwickite - - Wassonite - - Wavellite - - Weddellite - - Weeksite - - Weilite - - Weissite - - Weloganite - - Whewellite - - Whiteite - - Whitlockite - - Willemite - - Wiluite - - Witherite - - Wodginite - - Wolframite - - Wollastonite - - Woodhouseite - - Wulfenite - - Wurtzite - - Wustite - - Wyartite - - Xanthiosite - - Xanthoconite - - Xanthoxenite - - Xenophyllite - - Xenotime - - Xiangjiangite - - Xieite - - Xifengite - - Xilingolite - - Ximengite - - Xingzhongite - - Xitieshanite - - Xocolatlite - - Xocomecatlite - - Xonotlite - - Ye'elimite - - Yttrialite - - Yttropyrochlore - - Yuksporite - - Zabuyelite - - Zaccagnaite - - Zaherite - - Zairite - - Zakharovite - - Zanazziite - - Zaratite - - Zektzerite - - Zemannite - - Zeolite - - Zeunerite - - Zhanghengite - - Zharchikhite - - Zhemchuzhnikovite - - Ziesite - - Zimbabweite - - Zincite - - Zinclipscombite - - Zincmelanterite - - Zincobotryogen - - Zincochromite - - Zincolivenite - - Zinkenite - - Zinnwaldite - - Zippeite - - Zircon - - Zirconolite - - Zircophyllite - - Zirkelite - - Znucalite - - Zoisite - - Zorite - - Zunyite - - Zussmanite - - Zykaite + prefix: names-golem-dataset- + count: 1336 diff --git a/Resources/Prototypes/Datasets/Names/hologram.yml b/Resources/Prototypes/Datasets/Names/hologram.yml index 24df6cadd8..c8ee6604b4 100644 --- a/Resources/Prototypes/Datasets/Names/hologram.yml +++ b/Resources/Prototypes/Datasets/Names/hologram.yml @@ -1,17 +1,5 @@ -- type: dataset - id: names_hologram +- type: localizedDataset + id: NamesHologram values: - - Apollo - - Data - - GLIMMER - - El Roi - - Hephaestus - - Holo-AI - - Holo-Friend - - Hologram - - Odysseus - - Persephone - - Petra - - Processor - - Prometheus - - Theseus \ No newline at end of file + prefix: names-hologram-dataset- + count: 14 diff --git a/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml b/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml index 9086c24942..354280b76d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml @@ -428,7 +428,7 @@ roleLoadout: [ RoleSurvivalClown ] - type: RandomMetadata nameSegments: - - names_clown + - NamesClown - type: randomHumanoidSettings id: VisitorJanitor diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index d2da2240f3..d846bd0af0 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -253,7 +253,7 @@ prototypes: [ HoloClownGear ] - type: RandomMetadata nameSegments: - - names_clown + - NamesClown - type: NpcFactionMember factions: - Syndicate From a9212c1248ee6506f5dc5620f5c53a36ccfe65f3 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:02:46 +0300 Subject: [PATCH 67/91] [Part of #32893] Localize antagonists dataset names (#33393) * Localize fake human names * Localize ninja names * Localize operation names * Localize regalrat names * Localize revenant names * Localize syndicate names * Localize wizard names * Correct prototype ids to follow naming conventions * Combine fake_human_first.yml and fake_human_last.yml * Move contents of ninja_title.yml into ninja.yml * Combine Operation_prefix.yml and Operation_suffix.yml * Combine wizard_first.yml and wizard_last.yml * Upstream names * fix wizard --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../en-US/datasets/names/fake_human_first.ftl | 43 +++++++ .../en-US/datasets/names/fake_human_last.ftl | 78 +++++++++++++ .../Locale/en-US/datasets/names/ninja.ftl | 39 +++++++ .../en-US/datasets/names/ninja_title.ftl | 46 ++++++++ .../en-US/datasets/names/operation_prefix.ftl | 102 +++++++++++++++++ .../en-US/datasets/names/operation_suffix.ftl | 102 +++++++++++++++++ .../en-US/datasets/names/regalrat_kingdom.ftl | 15 +++ .../en-US/datasets/names/regalrat_title.ftl | 17 +++ .../datasets/names/revenant_adjective.ftl | 18 +++ .../en-US/datasets/names/revenant_theme.ftl | 18 +++ .../en-US/datasets/names/revenant_type.ftl | 8 ++ .../en-US/datasets/names/syndicate_elite.ftl | 23 ++++ .../en-US/datasets/names/syndicate_normal.ftl | 25 +++++ .../en-US/datasets/names/syndicate_prefix.ftl | 2 + .../en-US/datasets/names/wizard_first.ftl | 30 +++++ .../en-US/datasets/names/wizard_last.ftl | 46 ++++++++ .../Datasets/Names/Operation_prefix.yml | 105 ------------------ .../Datasets/Names/Operation_suffix.yml | 105 ------------------ .../Prototypes/Datasets/Names/fake_human.yml | 11 ++ .../Datasets/Names/fake_human_first.yml | 46 -------- .../Datasets/Names/fake_human_last.yml | 81 -------------- Resources/Prototypes/Datasets/Names/ninja.yml | 51 ++------- .../Prototypes/Datasets/Names/ninja_title.yml | 49 -------- .../Prototypes/Datasets/Names/operation.yml | 11 ++ .../Prototypes/Datasets/Names/regalrat.yml | 44 ++------ .../Prototypes/Datasets/Names/revenant.yml | 62 ++--------- .../Prototypes/Datasets/Names/syndicate.yml | 68 ++---------- .../Prototypes/Datasets/Names/wizard.yml | 11 ++ .../Datasets/Names/wizard_first.yml | 33 ------ .../Prototypes/Datasets/Names/wizard_last.yml | 49 -------- .../Entities/Mobs/NPCs/regalrat.yml | 4 +- .../Entities/Mobs/NPCs/revenant.yml | 6 +- .../Prototypes/Entities/Mobs/Player/human.yml | 4 +- .../Entities/Objects/Tools/decoys.yml | 2 +- Resources/Prototypes/GameRules/events.yml | 10 +- Resources/Prototypes/GameRules/roundstart.yml | 12 +- .../Prototypes/GameRules/subgamemodes.yml | 4 +- 37 files changed, 708 insertions(+), 672 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/fake_human_first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/fake_human_last.ftl create mode 100644 Resources/Locale/en-US/datasets/names/ninja.ftl create mode 100644 Resources/Locale/en-US/datasets/names/ninja_title.ftl create mode 100644 Resources/Locale/en-US/datasets/names/operation_prefix.ftl create mode 100644 Resources/Locale/en-US/datasets/names/operation_suffix.ftl create mode 100644 Resources/Locale/en-US/datasets/names/regalrat_kingdom.ftl create mode 100644 Resources/Locale/en-US/datasets/names/regalrat_title.ftl create mode 100644 Resources/Locale/en-US/datasets/names/revenant_adjective.ftl create mode 100644 Resources/Locale/en-US/datasets/names/revenant_theme.ftl create mode 100644 Resources/Locale/en-US/datasets/names/revenant_type.ftl create mode 100644 Resources/Locale/en-US/datasets/names/syndicate_elite.ftl create mode 100644 Resources/Locale/en-US/datasets/names/syndicate_normal.ftl create mode 100644 Resources/Locale/en-US/datasets/names/syndicate_prefix.ftl create mode 100644 Resources/Locale/en-US/datasets/names/wizard_first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/wizard_last.ftl delete mode 100644 Resources/Prototypes/Datasets/Names/Operation_prefix.yml delete mode 100644 Resources/Prototypes/Datasets/Names/Operation_suffix.yml create mode 100644 Resources/Prototypes/Datasets/Names/fake_human.yml delete mode 100644 Resources/Prototypes/Datasets/Names/fake_human_first.yml delete mode 100644 Resources/Prototypes/Datasets/Names/fake_human_last.yml delete mode 100644 Resources/Prototypes/Datasets/Names/ninja_title.yml create mode 100644 Resources/Prototypes/Datasets/Names/operation.yml create mode 100644 Resources/Prototypes/Datasets/Names/wizard.yml delete mode 100644 Resources/Prototypes/Datasets/Names/wizard_first.yml delete mode 100644 Resources/Prototypes/Datasets/Names/wizard_last.yml diff --git a/Resources/Locale/en-US/datasets/names/fake_human_first.ftl b/Resources/Locale/en-US/datasets/names/fake_human_first.ftl new file mode 100644 index 0000000000..d5055d62d0 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/fake_human_first.ftl @@ -0,0 +1,43 @@ +names-fake-human-first-dataset-1 = Al +names-fake-human-first-dataset-2 = Anatoli +names-fake-human-first-dataset-3 = Bip +names-fake-human-first-dataset-4 = Birry +names-fake-human-first-dataset-5 = Biry +names-fake-human-first-dataset-6 = Bobson +names-fake-human-first-dataset-7 = Cam +names-fake-human-first-dataset-8 = Cort +names-fake-human-first-dataset-9 = Darryl +names-fake-human-first-dataset-10 = Dean +names-fake-human-first-dataset-11 = Denis +names-fake-human-first-dataset-12 = Dwigt +names-fake-human-first-dataset-13 = Emitri +names-fake-human-first-dataset-14 = Fred +names-fake-human-first-dataset-15 = Glenallen +names-fake-human-first-dataset-16 = Jeromy +names-fake-human-first-dataset-17 = Jonasan +names-fake-human-first-dataset-18 = Karl +names-fake-human-first-dataset-19 = Kevin +names-fake-human-first-dataset-20 = Krik +names-fake-human-first-dataset-21 = Lay +names-fake-human-first-dataset-22 = Mario +names-fake-human-first-dataset-23 = Mibre +names-fake-human-first-dataset-24 = Mike +names-fake-human-first-dataset-25 = Nicol +names-fake-human-first-dataset-26 = Nigel +names-fake-human-first-dataset-27 = Onson +names-fake-human-first-dataset-28 = Ozzie +names-fake-human-first-dataset-29 = Raul +names-fake-human-first-dataset-30 = Rey +names-fake-human-first-dataset-31 = Roid +names-fake-human-first-dataset-32 = Ronnis +names-fake-human-first-dataset-33 = Scott +names-fake-human-first-dataset-34 = Secil +names-fake-human-first-dataset-35 = Shown +names-fake-human-first-dataset-36 = Sleeve +names-fake-human-first-dataset-37 = Sleve +names-fake-human-first-dataset-38 = Tim +names-fake-human-first-dataset-39 = Todd +names-fake-human-first-dataset-40 = Tony +names-fake-human-first-dataset-41 = Willie +names-fake-human-first-dataset-42 = Wirry +names-fake-human-first-dataset-43 = Yan diff --git a/Resources/Locale/en-US/datasets/names/fake_human_last.ftl b/Resources/Locale/en-US/datasets/names/fake_human_last.ftl new file mode 100644 index 0000000000..947fcdc212 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/fake_human_last.ftl @@ -0,0 +1,78 @@ +names-fake-human-last-dataset-1 = Al +names-fake-human-last-dataset-2 = Anatoli +names-fake-human-last-dataset-3 = Archideld +names-fake-human-last-dataset-4 = Bip +names-fake-human-last-dataset-5 = Birry +names-fake-human-last-dataset-6 = Biry +names-fake-human-last-dataset-7 = Bobson +names-fake-human-last-dataset-8 = Bonzalez +names-fake-human-last-dataset-9 = Cam +names-fake-human-last-dataset-10 = Chamgerlain +names-fake-human-last-dataset-11 = Cort +names-fake-human-last-dataset-12 = Dandleton +names-fake-human-last-dataset-13 = Darryl +names-fake-human-last-dataset-14 = Dean +names-fake-human-last-dataset-15 = Denis +names-fake-human-last-dataset-16 = Dorque +names-fake-human-last-dataset-17 = Dwigt +names-fake-human-last-dataset-18 = Emitri +names-fake-human-last-dataset-19 = Fred +names-fake-human-last-dataset-20 = Glenallen +names-fake-human-last-dataset-21 = Jeromy +names-fake-human-last-dataset-22 = Jonasan +names-fake-human-last-dataset-23 = Karl +names-fake-human-last-dataset-24 = Kevin +names-fake-human-last-dataset-25 = Krik +names-fake-human-last-dataset-26 = Lay +names-fake-human-last-dataset-27 = Mario +names-fake-human-last-dataset-28 = Mibre +names-fake-human-last-dataset-29 = Mike +names-fake-human-last-dataset-30 = Nicol +names-fake-human-last-dataset-31 = Nigel +names-fake-human-last-dataset-32 = Onson +names-fake-human-last-dataset-33 = Ozzie +names-fake-human-last-dataset-34 = Raul +names-fake-human-last-dataset-35 = Rey +names-fake-human-last-dataset-36 = Roid +names-fake-human-last-dataset-37 = Ronnis +names-fake-human-last-dataset-38 = Scott +names-fake-human-last-dataset-39 = Secil +names-fake-human-last-dataset-40 = Shown +names-fake-human-last-dataset-41 = Sleeve +names-fake-human-last-dataset-42 = Sleve +names-fake-human-last-dataset-43 = Tim +names-fake-human-last-dataset-44 = Todd +names-fake-human-last-dataset-45 = Tony +names-fake-human-last-dataset-46 = Willie +names-fake-human-last-dataset-47 = Wirry +names-fake-human-last-dataset-48 = Dugnutt +names-fake-human-last-dataset-49 = Dustice +names-fake-human-last-dataset-50 = Erde +names-fake-human-last-dataset-51 = Etto +names-fake-human-last-dataset-52 = Every +names-fake-human-last-dataset-53 = Faite +names-fake-human-last-dataset-54 = Felik +names-fake-human-last-dataset-55 = Fidd +names-fake-human-last-dataset-56 = Furcotte +names-fake-human-last-dataset-57 = Gride +names-fake-human-last-dataset-58 = Leady +names-fake-human-last-dataset-59 = McDichael +names-fake-human-last-dataset-60 = McRlwain +names-fake-human-last-dataset-61 = McStriff +names-fake-human-last-dataset-62 = Mernandez +names-fake-human-last-dataset-63 = Mixon +names-fake-human-last-dataset-64 = Nironov +names-fake-human-last-dataset-65 = Nogilny +names-fake-human-last-dataset-66 = Novichok +names-fake-human-last-dataset-67 = Rario +names-fake-human-last-dataset-68 = Rortugal +names-fake-human-last-dataset-69 = Sandaele +names-fake-human-last-dataset-70 = Sernandez +names-fake-human-last-dataset-71 = Smehrik +names-fake-human-last-dataset-72 = Smorin +names-fake-human-last-dataset-73 = Stoperson +names-fake-human-last-dataset-74 = Sweemey +names-fake-human-last-dataset-75 = Truk +names-fake-human-last-dataset-76 = Usgood +names-fake-human-last-dataset-77 = Veers +names-fake-human-last-dataset-78 = Wesrey diff --git a/Resources/Locale/en-US/datasets/names/ninja.ftl b/Resources/Locale/en-US/datasets/names/ninja.ftl new file mode 100644 index 0000000000..e5dde20be5 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/ninja.ftl @@ -0,0 +1,39 @@ +names-ninja-dataset-1 = Shadow +names-ninja-dataset-2 = Sarutobi +names-ninja-dataset-3 = Smoke +names-ninja-dataset-4 = Rain +names-ninja-dataset-5 = Zero +names-ninja-dataset-6 = Raphael +names-ninja-dataset-7 = Michaelangelo +names-ninja-dataset-8 = Donatello +names-ninja-dataset-9 = Leonardo +names-ninja-dataset-10 = Splinter +names-ninja-dataset-11 = Shredder +names-ninja-dataset-12 = Hazuki +names-ninja-dataset-13 = Hien +names-ninja-dataset-14 = Hiryu +names-ninja-dataset-15 = Hayabusa +names-ninja-dataset-16 = Midnight +names-ninja-dataset-17 = Seven +names-ninja-dataset-18 = McNinja +names-ninja-dataset-19 = Hanzo +names-ninja-dataset-20 = Blood +names-ninja-dataset-21 = Iga +names-ninja-dataset-22 = Koga +names-ninja-dataset-23 = Hero +names-ninja-dataset-24 = Hiro +names-ninja-dataset-25 = Phantom +names-ninja-dataset-26 = Baki +names-ninja-dataset-27 = Ogre +names-ninja-dataset-28 = Daemon +names-ninja-dataset-29 = Goemon +names-ninja-dataset-30 = McAwesome +names-ninja-dataset-31 = Throat +names-ninja-dataset-32 = Death +names-ninja-dataset-33 = Aria +names-ninja-dataset-34 = Bro +names-ninja-dataset-35 = Fox +names-ninja-dataset-36 = Samurai +names-ninja-dataset-37 = Eater +names-ninja-dataset-38 = Ryu +names-ninja-dataset-39 = Raiden diff --git a/Resources/Locale/en-US/datasets/names/ninja_title.ftl b/Resources/Locale/en-US/datasets/names/ninja_title.ftl new file mode 100644 index 0000000000..08b815954b --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/ninja_title.ftl @@ -0,0 +1,46 @@ +names-ninja-title-dataset-1 = Master +names-ninja-title-dataset-2 = Sensei +names-ninja-title-dataset-3 = Swift +names-ninja-title-dataset-4 = Merciless +names-ninja-title-dataset-5 = Assassin +names-ninja-title-dataset-6 = Rogue +names-ninja-title-dataset-7 = Hunter +names-ninja-title-dataset-8 = Widower +names-ninja-title-dataset-9 = Orphaner +names-ninja-title-dataset-10 = Stalker +names-ninja-title-dataset-11 = Killer +names-ninja-title-dataset-12 = Silent +names-ninja-title-dataset-13 = Silencing +names-ninja-title-dataset-14 = Quick +names-ninja-title-dataset-15 = Agile +names-ninja-title-dataset-16 = Merciful +names-ninja-title-dataset-17 = Ninja +names-ninja-title-dataset-18 = Shinobi +names-ninja-title-dataset-19 = Initiate +names-ninja-title-dataset-20 = Grandmaster +names-ninja-title-dataset-21 = Strider +names-ninja-title-dataset-22 = Striker +names-ninja-title-dataset-23 = Slayer +names-ninja-title-dataset-24 = Awesome +names-ninja-title-dataset-25 = Ender +names-ninja-title-dataset-26 = Dr. +names-ninja-title-dataset-27 = Noob +names-ninja-title-dataset-28 = Night +names-ninja-title-dataset-29 = Crimson +names-ninja-title-dataset-30 = Grappler +names-ninja-title-dataset-31 = Ulimate +names-ninja-title-dataset-32 = Remorseless +names-ninja-title-dataset-33 = Deep +names-ninja-title-dataset-34 = Dragon +names-ninja-title-dataset-35 = Cruel +names-ninja-title-dataset-36 = Nightshade +names-ninja-title-dataset-37 = Black +names-ninja-title-dataset-38 = Gray +names-ninja-title-dataset-39 = Solid +names-ninja-title-dataset-40 = Liquid +names-ninja-title-dataset-41 = Solidus +names-ninja-title-dataset-42 = Steel +names-ninja-title-dataset-43 = Nickel +names-ninja-title-dataset-44 = Silver +names-ninja-title-dataset-45 = Singing +names-ninja-title-dataset-46 = Snake diff --git a/Resources/Locale/en-US/datasets/names/operation_prefix.ftl b/Resources/Locale/en-US/datasets/names/operation_prefix.ftl new file mode 100644 index 0000000000..084dce9618 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/operation_prefix.ftl @@ -0,0 +1,102 @@ +names-operation-prefix-dataset-1 = Ancient +names-operation-prefix-dataset-2 = Angry +names-operation-prefix-dataset-3 = Arachnid +names-operation-prefix-dataset-4 = Atomic +names-operation-prefix-dataset-5 = Benevolent +names-operation-prefix-dataset-6 = Black +names-operation-prefix-dataset-7 = Blessed +names-operation-prefix-dataset-8 = Bloody +names-operation-prefix-dataset-9 = Blue +names-operation-prefix-dataset-10 = Blunt +names-operation-prefix-dataset-11 = Boiling +names-operation-prefix-dataset-12 = Bright +names-operation-prefix-dataset-13 = Burning +names-operation-prefix-dataset-14 = Clean +names-operation-prefix-dataset-15 = Clown +names-operation-prefix-dataset-16 = Cold +names-operation-prefix-dataset-17 = Cursed +names-operation-prefix-dataset-18 = Dark +names-operation-prefix-dataset-19 = Dead +names-operation-prefix-dataset-20 = Deep +names-operation-prefix-dataset-21 = Derelict +names-operation-prefix-dataset-22 = Desert +names-operation-prefix-dataset-23 = Devil's +names-operation-prefix-dataset-24 = Diamond +names-operation-prefix-dataset-25 = Dismal +names-operation-prefix-dataset-26 = Dwarven +names-operation-prefix-dataset-27 = Eastern +names-operation-prefix-dataset-28 = Endless +names-operation-prefix-dataset-29 = Enemy +names-operation-prefix-dataset-30 = Evil +names-operation-prefix-dataset-31 = Exciting +names-operation-prefix-dataset-32 = Explosive +names-operation-prefix-dataset-33 = Extreme +names-operation-prefix-dataset-34 = Fall +names-operation-prefix-dataset-35 = Fresh +names-operation-prefix-dataset-36 = Glorious +names-operation-prefix-dataset-37 = God's +names-operation-prefix-dataset-38 = Gold +names-operation-prefix-dataset-39 = Green +names-operation-prefix-dataset-40 = Grey +names-operation-prefix-dataset-41 = Happy +names-operation-prefix-dataset-42 = Holy +names-operation-prefix-dataset-43 = Hot +names-operation-prefix-dataset-44 = Human +names-operation-prefix-dataset-45 = Illegal +names-operation-prefix-dataset-46 = Impressive +names-operation-prefix-dataset-47 = Iron +names-operation-prefix-dataset-48 = Large +names-operation-prefix-dataset-49 = Lizard +names-operation-prefix-dataset-50 = Lovely +names-operation-prefix-dataset-51 = Lucky +names-operation-prefix-dataset-52 = Magical +names-operation-prefix-dataset-53 = Monkey +names-operation-prefix-dataset-54 = Moth +names-operation-prefix-dataset-55 = Northern +names-operation-prefix-dataset-56 = Nuclear +names-operation-prefix-dataset-57 = Orange +names-operation-prefix-dataset-58 = Outlaw +names-operation-prefix-dataset-59 = Painful +names-operation-prefix-dataset-60 = Phantasmagoric +names-operation-prefix-dataset-61 = Plasma +names-operation-prefix-dataset-62 = Plastic +names-operation-prefix-dataset-63 = Purple +names-operation-prefix-dataset-64 = Red +names-operation-prefix-dataset-65 = Rival +names-operation-prefix-dataset-66 = Robotic +names-operation-prefix-dataset-67 = Robust +names-operation-prefix-dataset-68 = Sad +names-operation-prefix-dataset-69 = Secret +names-operation-prefix-dataset-70 = Shadow +names-operation-prefix-dataset-71 = Sick +names-operation-prefix-dataset-72 = Silver +names-operation-prefix-dataset-73 = Simian +names-operation-prefix-dataset-74 = Skeleton +names-operation-prefix-dataset-75 = Slime +names-operation-prefix-dataset-76 = Southern +names-operation-prefix-dataset-77 = Space +names-operation-prefix-dataset-78 = Spring +names-operation-prefix-dataset-79 = Stealth +names-operation-prefix-dataset-80 = Steel +names-operation-prefix-dataset-81 = Strange +names-operation-prefix-dataset-82 = Summer +names-operation-prefix-dataset-83 = Suspicious +names-operation-prefix-dataset-84 = Tasty +names-operation-prefix-dataset-85 = The +names-operation-prefix-dataset-86 = Traitorous +names-operation-prefix-dataset-87 = Turbo +names-operation-prefix-dataset-88 = Unclean +names-operation-prefix-dataset-89 = Unholy +names-operation-prefix-dataset-90 = Unusual +names-operation-prefix-dataset-91 = Vengeful +names-operation-prefix-dataset-92 = Venomous +names-operation-prefix-dataset-93 = Violent +names-operation-prefix-dataset-94 = War +names-operation-prefix-dataset-95 = Warm +names-operation-prefix-dataset-96 = Weird +names-operation-prefix-dataset-97 = Western +names-operation-prefix-dataset-98 = Wet +names-operation-prefix-dataset-99 = White +names-operation-prefix-dataset-100 = Wild +names-operation-prefix-dataset-101 = Winter +names-operation-prefix-dataset-102 = Yellow diff --git a/Resources/Locale/en-US/datasets/names/operation_suffix.ftl b/Resources/Locale/en-US/datasets/names/operation_suffix.ftl new file mode 100644 index 0000000000..a046888be7 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/operation_suffix.ftl @@ -0,0 +1,102 @@ +names-operation-suffix-dataset-1 = Abyss +names-operation-suffix-dataset-2 = Action +names-operation-suffix-dataset-3 = Annihilation +names-operation-suffix-dataset-4 = Bag +names-operation-suffix-dataset-5 = Bee +names-operation-suffix-dataset-6 = Blast +names-operation-suffix-dataset-7 = Bomb +names-operation-suffix-dataset-8 = Bones +names-operation-suffix-dataset-9 = Botanist +names-operation-suffix-dataset-10 = Cannon +names-operation-suffix-dataset-11 = Captain +names-operation-suffix-dataset-12 = Chef +names-operation-suffix-dataset-13 = City +names-operation-suffix-dataset-14 = Clown +names-operation-suffix-dataset-15 = Coccoon +names-operation-suffix-dataset-16 = Crypt +names-operation-suffix-dataset-17 = Curse +names-operation-suffix-dataset-18 = Darkness +names-operation-suffix-dataset-19 = Daze +names-operation-suffix-dataset-20 = Death +names-operation-suffix-dataset-21 = Den +names-operation-suffix-dataset-22 = Destruction +names-operation-suffix-dataset-23 = Disease +names-operation-suffix-dataset-24 = Dungeon +names-operation-suffix-dataset-25 = Dust +names-operation-suffix-dataset-26 = End +names-operation-suffix-dataset-27 = Energy +names-operation-suffix-dataset-28 = Engine +names-operation-suffix-dataset-29 = Engineer +names-operation-suffix-dataset-30 = Fire +names-operation-suffix-dataset-31 = Fruit +names-operation-suffix-dataset-32 = Galaxy +names-operation-suffix-dataset-33 = Garden +names-operation-suffix-dataset-34 = Gentleman +names-operation-suffix-dataset-35 = Glove +names-operation-suffix-dataset-36 = Guitar +names-operation-suffix-dataset-37 = Heart +names-operation-suffix-dataset-38 = Hole +names-operation-suffix-dataset-39 = Ice +names-operation-suffix-dataset-40 = Janitor +names-operation-suffix-dataset-41 = Justice +names-operation-suffix-dataset-42 = Lady +names-operation-suffix-dataset-43 = Legend +names-operation-suffix-dataset-44 = Life +names-operation-suffix-dataset-45 = Light +names-operation-suffix-dataset-46 = Lighthouse +names-operation-suffix-dataset-47 = Lung +names-operation-suffix-dataset-48 = Mace +names-operation-suffix-dataset-49 = Machine +names-operation-suffix-dataset-50 = Maniac +names-operation-suffix-dataset-51 = Market +names-operation-suffix-dataset-52 = Meatgrinder +names-operation-suffix-dataset-53 = Mime +names-operation-suffix-dataset-54 = Money +names-operation-suffix-dataset-55 = Monkey +names-operation-suffix-dataset-56 = Moon +names-operation-suffix-dataset-57 = Musician +names-operation-suffix-dataset-58 = Offspring +names-operation-suffix-dataset-59 = Organ +names-operation-suffix-dataset-60 = Overdrive +names-operation-suffix-dataset-61 = Pancreas +names-operation-suffix-dataset-62 = Passenger +names-operation-suffix-dataset-63 = Piano +names-operation-suffix-dataset-64 = Pistol +names-operation-suffix-dataset-65 = Pit +names-operation-suffix-dataset-66 = Plains +names-operation-suffix-dataset-67 = Planet +names-operation-suffix-dataset-68 = Pool +names-operation-suffix-dataset-69 = Power +names-operation-suffix-dataset-70 = Puppy +names-operation-suffix-dataset-71 = Rainbow +names-operation-suffix-dataset-72 = Retribution +names-operation-suffix-dataset-73 = Revengeance +names-operation-suffix-dataset-74 = Rifle +names-operation-suffix-dataset-75 = Rubble +names-operation-suffix-dataset-76 = Sandwich +names-operation-suffix-dataset-77 = Scientist +names-operation-suffix-dataset-78 = Secret +names-operation-suffix-dataset-79 = Security +names-operation-suffix-dataset-80 = Shadows +names-operation-suffix-dataset-81 = Shuttle +names-operation-suffix-dataset-82 = Siren +names-operation-suffix-dataset-83 = Soul +names-operation-suffix-dataset-84 = Spell +names-operation-suffix-dataset-85 = Spider +names-operation-suffix-dataset-86 = Spire +names-operation-suffix-dataset-87 = Staff +names-operation-suffix-dataset-88 = Star +names-operation-suffix-dataset-89 = Station +names-operation-suffix-dataset-90 = Storm +names-operation-suffix-dataset-91 = Stranger +names-operation-suffix-dataset-92 = Strike +names-operation-suffix-dataset-93 = Sun +names-operation-suffix-dataset-94 = Sword +names-operation-suffix-dataset-95 = Team +names-operation-suffix-dataset-96 = Tide +names-operation-suffix-dataset-97 = Tomb +names-operation-suffix-dataset-98 = Toolbox +names-operation-suffix-dataset-99 = Trumpet +names-operation-suffix-dataset-100 = Vermin +names-operation-suffix-dataset-101 = Wizard +names-operation-suffix-dataset-102 = Wood diff --git a/Resources/Locale/en-US/datasets/names/regalrat_kingdom.ftl b/Resources/Locale/en-US/datasets/names/regalrat_kingdom.ftl new file mode 100644 index 0000000000..5cd76c61b0 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/regalrat_kingdom.ftl @@ -0,0 +1,15 @@ +names-regal-rat-kingdom-dataset-1 = Plague +names-regal-rat-kingdom-dataset-2 = Ammonia +names-regal-rat-kingdom-dataset-3 = Maintenance +names-regal-rat-kingdom-dataset-4 = Trash +names-regal-rat-kingdom-dataset-5 = Garbage +names-regal-rat-kingdom-dataset-6 = Rat +names-regal-rat-kingdom-dataset-7 = Vermin +names-regal-rat-kingdom-dataset-8 = Cheese +names-regal-rat-kingdom-dataset-9 = Munching +names-regal-rat-kingdom-dataset-10 = Big +names-regal-rat-kingdom-dataset-11 = Filth +names-regal-rat-kingdom-dataset-12 = Sewer +names-regal-rat-kingdom-dataset-13 = Disposal +names-regal-rat-kingdom-dataset-14 = Service +names-regal-rat-kingdom-dataset-15 = The diff --git a/Resources/Locale/en-US/datasets/names/regalrat_title.ftl b/Resources/Locale/en-US/datasets/names/regalrat_title.ftl new file mode 100644 index 0000000000..d6df7fb18b --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/regalrat_title.ftl @@ -0,0 +1,17 @@ +names-regal-rat-title-dataset-1 = King +names-regal-rat-title-dataset-2 = Lord +names-regal-rat-title-dataset-3 = Prince +names-regal-rat-title-dataset-4 = Emperor +names-regal-rat-title-dataset-5 = Supreme +names-regal-rat-title-dataset-6 = Overlord +names-regal-rat-title-dataset-7 = Master +names-regal-rat-title-dataset-8 = Shogun +names-regal-rat-title-dataset-9 = Bojar +names-regal-rat-title-dataset-10 = Tsar +names-regal-rat-title-dataset-11 = Fan #vs +names-regal-rat-title-dataset-12 = Enjoyer +names-regal-rat-title-dataset-13 = President +names-regal-rat-title-dataset-14 = Mayor +names-regal-rat-title-dataset-15 = Boss +names-regal-rat-title-dataset-16 = Prophet +names-regal-rat-title-dataset-17 = Cheese diff --git a/Resources/Locale/en-US/datasets/names/revenant_adjective.ftl b/Resources/Locale/en-US/datasets/names/revenant_adjective.ftl new file mode 100644 index 0000000000..a29667c3dc --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/revenant_adjective.ftl @@ -0,0 +1,18 @@ +names-revenant-adjective-dataset-1 = abysmal +names-revenant-adjective-dataset-2 = abyssal +names-revenant-adjective-dataset-3 = brutal +names-revenant-adjective-dataset-4 = dark +names-revenant-adjective-dataset-5 = endless +names-revenant-adjective-dataset-6 = eternal +names-revenant-adjective-dataset-7 = fiery +names-revenant-adjective-dataset-8 = hateful +names-revenant-adjective-dataset-9 = hideous +names-revenant-adjective-dataset-10 = hilarious +names-revenant-adjective-dataset-11 = indifferent +names-revenant-adjective-dataset-12 = malevolent +names-revenant-adjective-dataset-13 = peaceful +names-revenant-adjective-dataset-14 = searing +names-revenant-adjective-dataset-15 = silent +names-revenant-adjective-dataset-16 = spiteful +names-revenant-adjective-dataset-17 = vicious +names-revenant-adjective-dataset-18 = violent diff --git a/Resources/Locale/en-US/datasets/names/revenant_theme.ftl b/Resources/Locale/en-US/datasets/names/revenant_theme.ftl new file mode 100644 index 0000000000..5d07436fee --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/revenant_theme.ftl @@ -0,0 +1,18 @@ +names-revenant-theme-dataset-1 = agony +names-revenant-theme-dataset-2 = anger +names-revenant-theme-dataset-3 = death +names-revenant-theme-dataset-4 = despair +names-revenant-theme-dataset-5 = desperation +names-revenant-theme-dataset-6 = destruction +names-revenant-theme-dataset-7 = disease +names-revenant-theme-dataset-8 = grief +names-revenant-theme-dataset-9 = hate +names-revenant-theme-dataset-10 = hellfire +names-revenant-theme-dataset-11 = laughter +names-revenant-theme-dataset-12 = misery +names-revenant-theme-dataset-13 = ruin +names-revenant-theme-dataset-14 = salt +names-revenant-theme-dataset-15 = screams +names-revenant-theme-dataset-16 = sorrow +names-revenant-theme-dataset-17 = suffering +names-revenant-theme-dataset-18 = vengeance diff --git a/Resources/Locale/en-US/datasets/names/revenant_type.ftl b/Resources/Locale/en-US/datasets/names/revenant_type.ftl new file mode 100644 index 0000000000..63811e2eca --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/revenant_type.ftl @@ -0,0 +1,8 @@ +names-revenant-type-dataset-1 = essence +names-revenant-type-dataset-2 = ghost +names-revenant-type-dataset-3 = phantom +names-revenant-type-dataset-4 = poltergeist +names-revenant-type-dataset-5 = revenant +names-revenant-type-dataset-6 = soul +names-revenant-type-dataset-7 = spectre +names-revenant-type-dataset-8 = spirit diff --git a/Resources/Locale/en-US/datasets/names/syndicate_elite.ftl b/Resources/Locale/en-US/datasets/names/syndicate_elite.ftl new file mode 100644 index 0000000000..d990f915fa --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/syndicate_elite.ftl @@ -0,0 +1,23 @@ +names-syndicate-elite-dataset-1 = Alpha +names-syndicate-elite-dataset-2 = Beta +names-syndicate-elite-dataset-3 = Gamma +names-syndicate-elite-dataset-4 = Delta +names-syndicate-elite-dataset-5 = Epsilon +names-syndicate-elite-dataset-6 = Zeta +names-syndicate-elite-dataset-7 = Eta +names-syndicate-elite-dataset-8 = Theta +names-syndicate-elite-dataset-9 = Iota +names-syndicate-elite-dataset-10 = Lambda +names-syndicate-elite-dataset-11 = Mu +names-syndicate-elite-dataset-12 = Nu +names-syndicate-elite-dataset-13 = Xi +names-syndicate-elite-dataset-14 = Omicron +names-syndicate-elite-dataset-15 = Pi +names-syndicate-elite-dataset-16 = Rho +names-syndicate-elite-dataset-17 = Sigma +names-syndicate-elite-dataset-18 = Tau +names-syndicate-elite-dataset-19 = Upsilon +names-syndicate-elite-dataset-20 = Phi +names-syndicate-elite-dataset-21 = Chi +names-syndicate-elite-dataset-22 = Psi +names-syndicate-elite-dataset-23 = Omega diff --git a/Resources/Locale/en-US/datasets/names/syndicate_normal.ftl b/Resources/Locale/en-US/datasets/names/syndicate_normal.ftl new file mode 100644 index 0000000000..a27752b01e --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/syndicate_normal.ftl @@ -0,0 +1,25 @@ +names-syndicate-normal-dataset-1 = Alfa +names-syndicate-normal-dataset-2 = Bravo +names-syndicate-normal-dataset-3 = Charlie +names-syndicate-normal-dataset-4 = Delta +names-syndicate-normal-dataset-5 = Echo +names-syndicate-normal-dataset-6 = Foxtrot +names-syndicate-normal-dataset-7 = Golf +names-syndicate-normal-dataset-8 = Hotel +names-syndicate-normal-dataset-9 = India +names-syndicate-normal-dataset-10 = Juliett +names-syndicate-normal-dataset-11 = Kilo +names-syndicate-normal-dataset-12 = Lima +names-syndicate-normal-dataset-13 = Mike +names-syndicate-normal-dataset-14 = November +names-syndicate-normal-dataset-15 = Oscar +names-syndicate-normal-dataset-16 = Papa +names-syndicate-normal-dataset-17 = Quebec +names-syndicate-normal-dataset-18 = Romeo +names-syndicate-normal-dataset-19 = Sierra +names-syndicate-normal-dataset-20 = Tango +names-syndicate-normal-dataset-21 = Uniform +names-syndicate-normal-dataset-22 = Victor +names-syndicate-normal-dataset-23 = Whiskey +names-syndicate-normal-dataset-24 = X-Ray +names-syndicate-normal-dataset-25 = Zulu diff --git a/Resources/Locale/en-US/datasets/names/syndicate_prefix.ftl b/Resources/Locale/en-US/datasets/names/syndicate_prefix.ftl new file mode 100644 index 0000000000..6ed7531834 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/syndicate_prefix.ftl @@ -0,0 +1,2 @@ +names-syndicate-prefix-dataset-1 = Operative +names-syndicate-prefix-dataset-2 = Agent diff --git a/Resources/Locale/en-US/datasets/names/wizard_first.ftl b/Resources/Locale/en-US/datasets/names/wizard_first.ftl new file mode 100644 index 0000000000..bf7b945b5c --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/wizard_first.ftl @@ -0,0 +1,30 @@ +names-wizard-first-dataset-1 = Ashenzari +names-wizard-first-dataset-2 = Chancellor +names-wizard-first-dataset-3 = Cleric +names-wizard-first-dataset-4 = Circe +names-wizard-first-dataset-5 = Doctor +names-wizard-first-dataset-6 = Dithmenos +names-wizard-first-dataset-7 = Elyvilon +names-wizard-first-dataset-8 = Faustus +names-wizard-first-dataset-9 = Grimm +names-wizard-first-dataset-10 = Gozag +names-wizard-first-dataset-11 = Jim +names-wizard-first-dataset-12 = Jiyva +names-wizard-first-dataset-13 = Lirazel +names-wizard-first-dataset-14 = Lugonu +names-wizard-first-dataset-15 = Koschei +names-wizard-first-dataset-16 = Kreol +names-wizard-first-dataset-17 = Lina +names-wizard-first-dataset-18 = Merlin +names-wizard-first-dataset-19 = Morgan +names-wizard-first-dataset-20 = Nemelex +names-wizard-first-dataset-21 = Rasputin +names-wizard-first-dataset-22 = Ru +names-wizard-first-dataset-23 = Sif +names-wizard-first-dataset-24 = Trivia +names-wizard-first-dataset-25 = Trog +names-wizard-first-dataset-26 = Uskayaw +names-wizard-first-dataset-27 = Vehumet +names-wizard-first-dataset-28 = Xom +names-wizard-first-dataset-29 = Yredelemnul +names-wizard-first-dataset-30 = Zin diff --git a/Resources/Locale/en-US/datasets/names/wizard_last.ftl b/Resources/Locale/en-US/datasets/names/wizard_last.ftl new file mode 100644 index 0000000000..4e91673dd7 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/wizard_last.ftl @@ -0,0 +1,46 @@ +names-wizard-last-dataset-1 = Dark +names-wizard-last-dataset-2 = Darkmagic +names-wizard-last-dataset-3 = Darko +names-wizard-last-dataset-4 = Gray +names-wizard-last-dataset-5 = Honko +names-wizard-last-dataset-6 = Inverse +names-wizard-last-dataset-7 = Shado +names-wizard-last-dataset-8 = Smith +names-wizard-last-dataset-9 = Unseen +names-wizard-last-dataset-10 = Weatherwax +names-wizard-last-dataset-11 = Whom +names-wizard-last-dataset-12 = Yagg +names-wizard-last-dataset-13 = le Fay +names-wizard-last-dataset-14 = of Void +names-wizard-last-dataset-15 = Stormbringer +names-wizard-last-dataset-16 = the All Knowing +names-wizard-last-dataset-17 = the Amazing +names-wizard-last-dataset-18 = the Bandit Killer +names-wizard-last-dataset-19 = the Benevolent +names-wizard-last-dataset-20 = the Blue +names-wizard-last-dataset-21 = the Brown +names-wizard-last-dataset-22 = the Conquerer +names-wizard-last-dataset-23 = the Deathless +names-wizard-last-dataset-24 = the Destroyer +names-wizard-last-dataset-25 = the Dragon Spooker +names-wizard-last-dataset-26 = the Emperor +names-wizard-last-dataset-27 = the Glowing One +names-wizard-last-dataset-28 = the Gray +names-wizard-last-dataset-29 = the Great +names-wizard-last-dataset-30 = the Healer +names-wizard-last-dataset-31 = the Magician +names-wizard-last-dataset-32 = the Powerful +names-wizard-last-dataset-33 = the Raven +names-wizard-last-dataset-34 = the Red +names-wizard-last-dataset-35 = the Remorseful +names-wizard-last-dataset-36 = the Seething +names-wizard-last-dataset-37 = the Shining One +names-wizard-last-dataset-38 = the Sorcelator +names-wizard-last-dataset-39 = the Spiral King +names-wizard-last-dataset-40 = the Unending +names-wizard-last-dataset-41 = the Unstoppable +names-wizard-last-dataset-42 = the Weeping +names-wizard-last-dataset-43 = the White +names-wizard-last-dataset-44 = the Wise +names-wizard-last-dataset-45 = Xobeh +names-wizard-last-dataset-46 = Ym Sagoz diff --git a/Resources/Prototypes/Datasets/Names/Operation_prefix.yml b/Resources/Prototypes/Datasets/Names/Operation_prefix.yml deleted file mode 100644 index f9696d71cc..0000000000 --- a/Resources/Prototypes/Datasets/Names/Operation_prefix.yml +++ /dev/null @@ -1,105 +0,0 @@ -- type: dataset - id: operationPrefix - values: - - Ancient - - Angry - - Arachnid - - Atomic - - Benevolent - - Black - - Blessed - - Bloody - - Blue - - Blunt - - Boiling - - Bright - - Burning - - Clean - - Clown - - Cold - - Cursed - - Dark - - Dead - - Deep - - Derelict - - Desert - - Devil's - - Diamond - - Dismal - - Dwarven - - Eastern - - Endless - - Enemy - - Evil - - Exciting - - Explosive - - Extreme - - Fall - - Fresh - - Glorious - - God's - - Gold - - Green - - Grey - - Happy - - Holy - - Hot - - Human - - Illegal - - Impressive - - Iron - - Large - - Lizard - - Lovely - - Lucky - - Magical - - Monkey - - Moth - - Northern - - Nuclear - - Orange - - Outlaw - - Painful - - Phantasmagoric - - Plasma - - Plastic - - Purple - - Red - - Rival - - Robotic - - Robust - - Sad - - Secret - - Shadow - - Sick - - Silver - - Simian - - Skeleton - - Slime - - Southern - - Space - - Spring - - Stealth - - Steel - - Strange - - Summer - - Suspicious - - Tasty - - The - - Traitorous - - Turbo - - Unclean - - Unholy - - Unusual - - Vengeful - - Venomous - - Violent - - War - - Warm - - Weird - - Western - - Wet - - White - - Wild - - Winter - - Yellow diff --git a/Resources/Prototypes/Datasets/Names/Operation_suffix.yml b/Resources/Prototypes/Datasets/Names/Operation_suffix.yml deleted file mode 100644 index ecc9243908..0000000000 --- a/Resources/Prototypes/Datasets/Names/Operation_suffix.yml +++ /dev/null @@ -1,105 +0,0 @@ -- type: dataset - id: operationSuffix - values: - - Abyss - - Action - - Annihilation - - Bag - - Bee - - Blast - - Bomb - - Bones - - Botanist - - Cannon - - Captain - - Chef - - City - - Clown - - Coccoon - - Crypt - - Curse - - Darkness - - Daze - - Death - - Den - - Destruction - - Disease - - Dungeon - - Dust - - End - - Energy - - Engine - - Engineer - - Fire - - Fruit - - Galaxy - - Garden - - Gentleman - - Glove - - Guitar - - Heart - - Hole - - Ice - - Janitor - - Justice - - Lady - - Legend - - Life - - Light - - Lighthouse - - Lung - - Mace - - Machine - - Maniac - - Market - - Meatgrinder - - Mime - - Money - - Monkey - - Moon - - Musician - - Offspring - - Organ - - Overdrive - - Pancreas - - Passenger - - Piano - - Pistol - - Pit - - Plains - - Planet - - Pool - - Power - - Puppy - - Rainbow - - Retribution - - Revengeance - - Rifle - - Rubble - - Sandwich - - Scientist - - Secret - - Security - - Shadows - - Shuttle - - Siren - - Soul - - Spell - - Spider - - Spire - - Staff - - Star - - Station - - Storm - - Stranger - - Strike - - Sun - - Sword - - Team - - Tide - - Tomb - - Toolbox - - Trumpet - - Vermin - - Wizard - - Wood diff --git a/Resources/Prototypes/Datasets/Names/fake_human.yml b/Resources/Prototypes/Datasets/Names/fake_human.yml new file mode 100644 index 0000000000..edf48147b2 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/fake_human.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesFakeHumanFirst + values: + prefix: names-fake-human-first-dataset- + count: 43 + +- type: localizedDataset + id: NamesFakeHumanLast + values: #includes the first names so we get some really fake double names + prefix: names-fake-human-last-dataset- + count: 78 diff --git a/Resources/Prototypes/Datasets/Names/fake_human_first.yml b/Resources/Prototypes/Datasets/Names/fake_human_first.yml deleted file mode 100644 index 37f4f13ffc..0000000000 --- a/Resources/Prototypes/Datasets/Names/fake_human_first.yml +++ /dev/null @@ -1,46 +0,0 @@ -- type: dataset - id: fake_human_first - values: - - Al - - Anatoli - - Bip - - Birry - - Biry - - Bobson - - Cam - - Cort - - Darryl - - Dean - - Denis - - Dwigt - - Emitri - - Fred - - Glenallen - - Jeromy - - Jonasan - - Karl - - Kevin - - Krik - - Lay - - Mario - - Mibre - - Mike - - Nicol - - Nigel - - Onson - - Ozzie - - Raul - - Rey - - Roid - - Ronnis - - Scott - - Secil - - Shown - - Sleeve - - Sleve - - Tim - - Todd - - Tony - - Willie - - Wirry - - Yan \ No newline at end of file diff --git a/Resources/Prototypes/Datasets/Names/fake_human_last.yml b/Resources/Prototypes/Datasets/Names/fake_human_last.yml deleted file mode 100644 index d9c8cf0db0..0000000000 --- a/Resources/Prototypes/Datasets/Names/fake_human_last.yml +++ /dev/null @@ -1,81 +0,0 @@ -- type: dataset - id: fake_human_last - values: #includes the first names so we get some really fake double names - - Al - - Anatoli - - Archideld - - Bip - - Birry - - Biry - - Bobson - - Bonzalez - - Cam - - Chamgerlain - - Cort - - Dandleton - - Darryl - - Dean - - Denis - - Dorque - - Dwigt - - Emitri - - Fred - - Glenallen - - Jeromy - - Jonasan - - Karl - - Kevin - - Krik - - Lay - - Mario - - Mibre - - Mike - - Nicol - - Nigel - - Onson - - Ozzie - - Raul - - Rey - - Roid - - Ronnis - - Scott - - Secil - - Shown - - Sleeve - - Sleve - - Tim - - Todd - - Tony - - Willie - - Wirry - - Dugnutt - - Dustice - - Erde - - Etto - - Every - - Faite - - Felik - - Fidd - - Furcotte - - Gride - - Leady - - McDichael - - McRlwain - - McStriff - - Mernandez - - Mixon - - Nironov - - Nogilny - - Novichok - - Rario - - Rortugal - - Sandaele - - Sernandez - - Smehrik - - Smorin - - Stoperson - - Sweemey - - Truk - - Usgood - - Veers - - Wesrey \ No newline at end of file diff --git a/Resources/Prototypes/Datasets/Names/ninja.yml b/Resources/Prototypes/Datasets/Names/ninja.yml index 78118bffd0..cde06436eb 100644 --- a/Resources/Prototypes/Datasets/Names/ninja.yml +++ b/Resources/Prototypes/Datasets/Names/ninja.yml @@ -1,42 +1,11 @@ -- type: dataset - id: names_ninja +- type: localizedDataset + id: NamesNinja values: - - Shadow - - Sarutobi - - Smoke - - Rain - - Zero - - Raphael - - Michaelangelo - - Donatello - - Leonardo - - Splinter - - Shredder - - Hazuki - - Hien - - Hiryu - - Hayabusa - - Midnight - - Seven - - McNinja - - Hanzo - - Blood - - Iga - - Koga - - Hero - - Hiro - - Phantom - - Baki - - Ogre - - Daemon - - Goemon - - McAwesome - - Throat - - Death - - Aria - - Bro - - Fox - - Samurai - - Eater - - Ryu - - Raiden + prefix: names-ninja-dataset- + count: 39 + +- type: localizedDataset + id: NamesNinjaTitle + values: + prefix: names-ninja-title-dataset- + count: 46 diff --git a/Resources/Prototypes/Datasets/Names/ninja_title.yml b/Resources/Prototypes/Datasets/Names/ninja_title.yml deleted file mode 100644 index 07029d0c15..0000000000 --- a/Resources/Prototypes/Datasets/Names/ninja_title.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: dataset - id: names_ninja_title - values: - - Master - - Sensei - - Swift - - Merciless - - Assassin - - Rogue - - Hunter - - Widower - - Orphaner - - Stalker - - Killer - - Silent - - Silencing - - Quick - - Agile - - Merciful - - Ninja - - Shinobi - - Initiate - - Grandmaster - - Strider - - Striker - - Slayer - - Awesome - - Ender - - Dr. - - Noob - - Night - - Crimson - - Grappler - - Ulimate - - Remorseless - - Deep - - Dragon - - Cruel - - Nightshade - - Black - - Gray - - Solid - - Liquid - - Solidus - - Steel - - Nickel - - Silver - - Singing - - Snake diff --git a/Resources/Prototypes/Datasets/Names/operation.yml b/Resources/Prototypes/Datasets/Names/operation.yml new file mode 100644 index 0000000000..7ba9257cad --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/operation.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesOperationPrefix + values: + prefix: names-operation-prefix-dataset- + count: 102 + +- type: localizedDataset + id: NamesOperationSuffix + values: + prefix: names-operation-suffix-dataset- + count: 102 diff --git a/Resources/Prototypes/Datasets/Names/regalrat.yml b/Resources/Prototypes/Datasets/Names/regalrat.yml index e69c056843..94e55035dc 100644 --- a/Resources/Prototypes/Datasets/Names/regalrat.yml +++ b/Resources/Prototypes/Datasets/Names/regalrat.yml @@ -1,39 +1,11 @@ -- type: dataset - id: RegalRatNameKingdom +- type: localizedDataset + id: NamesRegalratKingdom values: - - Plague - - Ammonia - - Maintenance - - Trash - - Garbage - - Rat - - Vermin - - Cheese - - Munching - - Big - - Filth - - Sewer - - Disposal - - Service - - The + prefix: names-regal-rat-kingdom-dataset- + count: 15 -- type: dataset - id: RegalRatNameTitle +- type: localizedDataset + id: NamesRegalratTitle values: - - King - - Lord - - Prince - - Emperor - - Supreme - - Overlord - - Master - - Shogun - - Bojar - - Tsar - - Fan #vs - - Enjoyer - - President - - Mayor - - Boss - - Prophet - - Cheese + prefix: names-regal-rat-title-dataset- + count: 17 diff --git a/Resources/Prototypes/Datasets/Names/revenant.yml b/Resources/Prototypes/Datasets/Names/revenant.yml index c5d0d4e1a3..917d390be3 100644 --- a/Resources/Prototypes/Datasets/Names/revenant.yml +++ b/Resources/Prototypes/Datasets/Names/revenant.yml @@ -1,55 +1,17 @@ -- type: dataset - id: RevenantType +- type: localizedDataset + id: NamesRevenantType values: - - essence - - ghost - - phantom - - poltergeist - - revenant - - soul - - spectre - - spirit + prefix: names-revenant-type-dataset- + count: 8 -- type: dataset - id: RevenantAdjective +- type: localizedDataset + id: NamesRevenantAdjective values: - - abysmal - - abyssal - - brutal - - dark - - endless - - eternal - - fiery - - hateful - - hideous - - hilarious - - indifferent - - malevolent - - peaceful - - searing - - silent - - spiteful - - vicious - - violent + prefix: names-revenant-adjective-dataset- + count: 18 -- type: dataset - id: RevenantTheme +- type: localizedDataset + id: NamesRevenantTheme values: - - agony - - anger - - death - - despair - - desperation - - destruction - - disease - - grief - - hate - - hellfire - - laughter - - misery - - ruin - - salt - - screams - - sorrow - - suffering - - vengeance + prefix: names-revenant-theme-dataset- + count: 18 diff --git a/Resources/Prototypes/Datasets/Names/syndicate.yml b/Resources/Prototypes/Datasets/Names/syndicate.yml index e252e1131c..1413c918a7 100644 --- a/Resources/Prototypes/Datasets/Names/syndicate.yml +++ b/Resources/Prototypes/Datasets/Names/syndicate.yml @@ -1,61 +1,17 @@ -- type: dataset - id: SyndicateNamesNormal +- type: localizedDataset + id: NamesSyndicateNormal values: - - Alfa - - Bravo - - Charlie - - Delta - - Echo - - Foxtrot - - Golf - - Hotel - - India - - Juliett - - Kilo - - Lima - - Mike - - November - - Oscar - - Papa - - Quebec - - Romeo - - Sierra - - Tango - - Uniform - - Victor - - Whiskey - - X-Ray - - Zulu + prefix: names-syndicate-normal-dataset- + count: 25 -- type: dataset - id: SyndicateNamesElite +- type: localizedDataset + id: NamesSyndicateElite values: - - Alpha - - Beta - - Gamma - - Delta - - Epsilon - - Zeta - - Eta - - Theta - - Iota - - Lambda - - Mu - - Nu - - Xi - - Omicron - - Pi - - Rho - - Sigma - - Tau - - Upsilon - - Phi - - Chi - - Psi - - Omega + prefix: names-syndicate-elite-dataset- + count: 23 -- type: dataset - id: SyndicateNamesPrefix +- type: localizedDataset + id: NamesSyndicatePrefix values: - - Operative - - Agent + prefix: names-syndicate-prefix-dataset- + count: 2 diff --git a/Resources/Prototypes/Datasets/Names/wizard.yml b/Resources/Prototypes/Datasets/Names/wizard.yml new file mode 100644 index 0000000000..ac143b924b --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/wizard.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesWizardFirst + values: + prefix: names-wizard-first-dataset- + count: 30 + +- type: localizedDataset + id: NamesWizardLast + values: + prefix: names-wizard-last-dataset- + count: 46 diff --git a/Resources/Prototypes/Datasets/Names/wizard_first.yml b/Resources/Prototypes/Datasets/Names/wizard_first.yml deleted file mode 100644 index c4bcb5c402..0000000000 --- a/Resources/Prototypes/Datasets/Names/wizard_first.yml +++ /dev/null @@ -1,33 +0,0 @@ -- type: dataset - id: names_wizard_first - values: - - Ashenzari - - Chancellor - - Cleric - - Circe - - Doctor - - Dithmenos - - Elyvilon - - Faustus - - Grimm - - Gozag - - Jim - - Jiyva - - Lirazel - - Lugonu - - Koschei - - Kreol - - Lina - - Merlin - - Morgan - - Nemelex - - Rasputin - - Ru - - Sif - - Trivia - - Trog - - Uskayaw - - Vehumet - - Xom - - Yredelemnul - - Zin diff --git a/Resources/Prototypes/Datasets/Names/wizard_last.yml b/Resources/Prototypes/Datasets/Names/wizard_last.yml deleted file mode 100644 index 6f081333a0..0000000000 --- a/Resources/Prototypes/Datasets/Names/wizard_last.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: dataset - id: names_wizard_last - values: - - Dark - - Darkmagic - - Darko - - Gray - - Honko - - Inverse - - Shado - - Smith - - Unseen - - Weatherwax - - Whom - - Yagg - - le Fay - - of Void - - Stormbringer - - the All Knowing - - the Amazing - - the Bandit Killer - - the Benevolent - - the Blue - - the Brown - - the Conquerer - - the Deathless - - the Destroyer - - the Dragon Spooker - - the Emperor - - the Glowing One - - the Gray - - the Great - - the Healer - - the Magician - - the Powerful - - the Raven - - the Red - - the Remorseful - - the Seething - - the Shining One - - the Sorcelator - - the Spiral King - - the Unending - - the Unstoppable - - the Weeping - - the White - - the Wise - - Xobeh - - Ym Sagoz diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index b071b0990c..28efeaf56b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -121,8 +121,8 @@ price: 2500 # rat wealth - type: RandomMetadata nameSegments: - - RegalRatNameKingdom - - RegalRatNameTitle + - NamesRegalratKingdom + - NamesRegalratTitle - type: GuideHelp guides: - MinorAntagonists diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml b/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml index 82a9f774ce..d1b57ec6c8 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml @@ -74,10 +74,10 @@ - type: RandomMetadata nameSegments: - The - - RevenantType + - NamesRevenantType - of - - RevenantAdjective - - RevenantTheme + - NamesRevenantAdjective + - NamesRevenantTheme - type: Speech speechVerb: Ghost - type: Reactive diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index e961b894b4..746c0237e5 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -69,7 +69,7 @@ - type: RandomMetadata nameSegments: - nukeops-role-operator - - SyndicateNamesNormal + - NamesSyndicateNormal - type: Loadout prototypes: [SyndicateOperativeGearFullNoUplink] @@ -101,7 +101,7 @@ - type: RandomMetadata nameSegments: - SyndicateNamesPrefix - - SyndicateNamesNormal + - NamesSyndicateNormal - type: NpcFactionMember factions: - Syndicate diff --git a/Resources/Prototypes/Entities/Objects/Tools/decoys.yml b/Resources/Prototypes/Entities/Objects/Tools/decoys.yml index d399b77d02..a8346675e2 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/decoys.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/decoys.yml @@ -32,7 +32,7 @@ - type: RandomMetadata # No metagaming these, jimbo. nameSegments: - SyndicateNamesPrefix - - SyndicateNamesNormal + - NamesSyndicateNormal - type: Damageable damageContainer: Inorganic - type: ToggleableLightVisuals diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index c7ea01b38b..d19986eb2a 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -258,8 +258,8 @@ - DeathAcidifierImplant - type: RandomMetadata nameSegments: - - names_ninja_title - - names_ninja + - NamesNinjaTitle + - NamesNinja mindRoles: - MindRoleNinja @@ -310,8 +310,8 @@ - Wizard - type: RandomMetadata nameSegments: - - names_wizard_first - - names_wizard_last + - NamesWizardFirst + - NamesWizardLast mindRoles: - MindRoleWizard @@ -562,7 +562,7 @@ - type: RandomMetadata nameSegments: - SyndicateNamesPrefix - - SyndicateNamesNormal + - NamesSyndicateNormal - type: NpcFactionMember factions: - Syndicate diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 99c386e515..8b3cb48ade 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -86,8 +86,8 @@ components: - type: RandomMetadata #this generates the random operation name cuz it's cool. nameSegments: - - operationPrefix - - operationSuffix + - NamesOperationPrefix + - NamesOperationSuffix - type: NukeopsRule - type: RuleGrids - type: AntagSelection @@ -142,7 +142,7 @@ - type: RandomMetadata nameSegments: - nukeops-role-agent - - SyndicateNamesNormal + - NamesSyndicateNormal - type: NpcFactionMember factions: - Syndicate @@ -162,7 +162,7 @@ - type: RandomMetadata nameSegments: - nukeops-role-operator - - SyndicateNamesNormal + - NamesSyndicateNormal - type: NpcFactionMember factions: - Syndicate @@ -299,8 +299,8 @@ - Wizard - type: RandomMetadata nameSegments: - - names_wizard_first - - names_wizard_last + - NamesWizardFirst + - NamesWizardLast mindRoles: - MindRoleWizard diff --git a/Resources/Prototypes/GameRules/subgamemodes.yml b/Resources/Prototypes/GameRules/subgamemodes.yml index 33947df7b8..32604286e2 100644 --- a/Resources/Prototypes/GameRules/subgamemodes.yml +++ b/Resources/Prototypes/GameRules/subgamemodes.yml @@ -59,7 +59,7 @@ - Wizard - type: RandomMetadata nameSegments: - - names_wizard_first - - names_wizard_last + - NamesWizardFirst + - NamesWizardLast mindRoles: - MindRoleWizard From 000c5d2de5639141f8c1602d53eba6d9fd6f7de7 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:03:07 +0300 Subject: [PATCH 68/91] [Part of #32893] Localize humanoid species dataset names (#33395) * Localize diona names * Localize moth names * Localize mushman names * Localize reptilian names * Localize skeleton names * Upstream diona names * names-moth-male/female-first-dataset -> names-moth-first-male/female-dataset * Correct prototype ids to follow naming conventions * NamesSkeletonFirst -> NamesSkeleton * Combine moth_first_female.yml, moth_first_male.yml and moth_last.yml * Forgot about skeleton prototype * Upstream names * Update Resources/Locale/en-US/datasets/names/diona_last.ftl * Update Resources/Locale/en-US/datasets/names/diona_last.ftl * keep first name for skeleton --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../en-US/datasets/names/diona_first.ftl | 89 +++++ .../en-US/datasets/names/diona_last.ftl | 128 +++++++ .../datasets/names/moth_first_female.ftl | 93 +++++ .../en-US/datasets/names/moth_first_male.ftl | 94 +++++ .../Locale/en-US/datasets/names/moth_last.ftl | 59 ++++ .../en-US/datasets/names/mushman_first.ftl | 54 +++ .../en-US/datasets/names/mushman_last.ftl | 97 +++++ .../en-US/datasets/names/reptilian_female.ftl | 163 +++++++++ .../en-US/datasets/names/reptilian_male.ftl | 328 +++++++++++++++++ .../en-US/datasets/names/skeleton_first.ftl | 28 ++ Resources/Prototypes/Datasets/Names/diona.yml | 227 +----------- Resources/Prototypes/Datasets/Names/moth.yml | 17 + .../Datasets/Names/moth_first_female.yml | 49 --- .../Datasets/Names/moth_first_male.yml | 50 --- .../Prototypes/Datasets/Names/moth_last.yml | 37 -- .../Datasets/Names/mushman_first.yml | 60 +--- .../Datasets/Names/mushman_last.yml | 103 +----- .../Datasets/Names/reptilian_female.yml | 169 +-------- .../Datasets/Names/reptilian_male.yml | 334 +----------------- .../Datasets/Names/skeleton_first.yml | 33 +- Resources/Prototypes/Species/diona.yml | 6 +- Resources/Prototypes/Species/moth.yml | 6 +- Resources/Prototypes/Species/reptilian.yml | 4 +- Resources/Prototypes/Species/skeleton.yml | 4 +- 24 files changed, 1188 insertions(+), 1044 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/diona_first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/diona_last.ftl create mode 100644 Resources/Locale/en-US/datasets/names/moth_first_female.ftl create mode 100644 Resources/Locale/en-US/datasets/names/moth_first_male.ftl create mode 100644 Resources/Locale/en-US/datasets/names/moth_last.ftl create mode 100644 Resources/Locale/en-US/datasets/names/mushman_first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/mushman_last.ftl create mode 100644 Resources/Locale/en-US/datasets/names/reptilian_female.ftl create mode 100644 Resources/Locale/en-US/datasets/names/reptilian_male.ftl create mode 100644 Resources/Locale/en-US/datasets/names/skeleton_first.ftl create mode 100644 Resources/Prototypes/Datasets/Names/moth.yml delete mode 100644 Resources/Prototypes/Datasets/Names/moth_first_female.yml delete mode 100644 Resources/Prototypes/Datasets/Names/moth_first_male.yml delete mode 100644 Resources/Prototypes/Datasets/Names/moth_last.yml diff --git a/Resources/Locale/en-US/datasets/names/diona_first.ftl b/Resources/Locale/en-US/datasets/names/diona_first.ftl new file mode 100644 index 0000000000..d812b4872f --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/diona_first.ftl @@ -0,0 +1,89 @@ +names-diona-first-dataset-1 = Moss +names-diona-first-dataset-2 = Mushroom +names-diona-first-dataset-3 = Herb +names-diona-first-dataset-4 = Ivy +names-diona-first-dataset-5 = Stalk +names-diona-first-dataset-6 = Petal +names-diona-first-dataset-7 = Petals +names-diona-first-dataset-8 = Thorn +names-diona-first-dataset-9 = Thorns +names-diona-first-dataset-10 = Vine +names-diona-first-dataset-11 = Vines +names-diona-first-dataset-12 = Branch +names-diona-first-dataset-13 = Branches +names-diona-first-dataset-14 = Weed +names-diona-first-dataset-15 = Weeds +names-diona-first-dataset-16 = Rose +names-diona-first-dataset-17 = Dandelion +names-diona-first-dataset-18 = Lilac +names-diona-first-dataset-19 = Lily +names-diona-first-dataset-20 = Birch +names-diona-first-dataset-21 = Oak +names-diona-first-dataset-22 = Spruce +names-diona-first-dataset-23 = Willow +names-diona-first-dataset-24 = Cyprus +names-diona-first-dataset-25 = Mangrove +names-diona-first-dataset-26 = Stump +names-diona-first-dataset-27 = Sap +names-diona-first-dataset-28 = Bayou +names-diona-first-dataset-29 = Bay +names-diona-first-dataset-30 = Lake +names-diona-first-dataset-31 = River +names-diona-first-dataset-32 = Creek +names-diona-first-dataset-33 = Meadow +names-diona-first-dataset-34 = Canyon +names-diona-first-dataset-35 = Mountain +names-diona-first-dataset-36 = Peak +names-diona-first-dataset-37 = Garden +names-diona-first-dataset-38 = Ocean +names-diona-first-dataset-39 = Arctic +names-diona-first-dataset-40 = Sea +names-diona-first-dataset-41 = Spring +names-diona-first-dataset-42 = Swamp +names-diona-first-dataset-43 = Stream +names-diona-first-dataset-44 = Forest +names-diona-first-dataset-45 = Rainforest +names-diona-first-dataset-46 = Soil +names-diona-first-dataset-47 = Valley +names-diona-first-dataset-48 = Moor +names-diona-first-dataset-49 = Steppe +names-diona-first-dataset-50 = Orchard +names-diona-first-dataset-51 = Orchid +names-diona-first-dataset-52 = Glacier +names-diona-first-dataset-53 = Desert +names-diona-first-dataset-54 = Tundra +names-diona-first-dataset-55 = Taiga +names-diona-first-dataset-56 = Plain +names-diona-first-dataset-57 = Plains +names-diona-first-dataset-58 = Plateau +names-diona-first-dataset-59 = Cliff +names-diona-first-dataset-60 = Coast +names-diona-first-dataset-61 = Shore +names-diona-first-dataset-62 = Jungle +names-diona-first-dataset-63 = Tropics +names-diona-first-dataset-64 = Flower +names-diona-first-dataset-65 = Grass +names-diona-first-dataset-66 = Bark +names-diona-first-dataset-67 = Autumn +names-diona-first-dataset-68 = Summer +names-diona-first-dataset-69 = Winter +names-diona-first-dataset-70 = Fruit +names-diona-first-dataset-71 = Leaves +names-diona-first-dataset-72 = Overgrowth +names-diona-first-dataset-73 = Atmosphere +names-diona-first-dataset-74 = Climate +names-diona-first-dataset-75 = Chill +names-diona-first-dataset-76 = Winds +names-diona-first-dataset-77 = Blossom +names-diona-first-dataset-78 = Bloom +names-diona-first-dataset-79 = Cap +names-diona-first-dataset-80 = Saturation +names-diona-first-dataset-81 = Permeation +names-diona-first-dataset-82 = Light +names-diona-first-dataset-83 = Taste +names-diona-first-dataset-84 = Acorn +names-diona-first-dataset-85 = Shell +names-diona-first-dataset-86 = Ice +names-diona-first-dataset-87 = Monsoon +names-diona-first-dataset-88 = Overcast +names-diona-first-dataset-89 = Storm diff --git a/Resources/Locale/en-US/datasets/names/diona_last.ftl b/Resources/Locale/en-US/datasets/names/diona_last.ftl new file mode 100644 index 0000000000..c948b399a6 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/diona_last.ftl @@ -0,0 +1,128 @@ +# Positive +names-diona-last-dataset-1 = Peace +names-diona-last-dataset-2 = Harmony +names-diona-last-dataset-3 = Relaxation +names-diona-last-dataset-4 = Serendipity +names-diona-last-dataset-5 = Calmness +names-diona-last-dataset-6 = Introspection +names-diona-last-dataset-7 = Union +names-diona-last-dataset-8 = Comfort +names-diona-last-dataset-9 = Dreams +names-diona-last-dataset-10 = Quietude +names-diona-last-dataset-11 = Balance +names-diona-last-dataset-12 = Gentleness +names-diona-last-dataset-13 = Placidity +names-diona-last-dataset-14 = Repose +names-diona-last-dataset-15 = Serenity +names-diona-last-dataset-16 = Stillness +names-diona-last-dataset-17 = Tranquility +names-diona-last-dataset-18 = Ease +names-diona-last-dataset-19 = Equilibrium +names-diona-last-dataset-20 = Composure +names-diona-last-dataset-21 = Control +names-diona-last-dataset-22 = Bliss +names-diona-last-dataset-23 = Enjoyment +names-diona-last-dataset-24 = Optimism +names-diona-last-dataset-25 = Ecstasy +names-diona-last-dataset-26 = Cheer +names-diona-last-dataset-27 = Delight +names-diona-last-dataset-28 = Luxury +names-diona-last-dataset-29 = Euphoria +names-diona-last-dataset-30 = Excitement +names-diona-last-dataset-31 = Satisfaction +names-diona-last-dataset-32 = Cleanliness +names-diona-last-dataset-33 = Expression +names-diona-last-dataset-34 = Enrichment +names-diona-last-dataset-35 = Enthusiam +names-diona-last-dataset-36 = Brilliance +names-diona-last-dataset-37 = Determination +names-diona-last-dataset-38 = Integrity +names-diona-last-dataset-39 = Justice +names-diona-last-dataset-40 = Kindness +names-diona-last-dataset-41 = Bravery +names-diona-last-dataset-42 = Empathy +names-diona-last-dataset-43 = Stoicism +names-diona-last-dataset-44 = Competence +names-diona-last-dataset-45 = Love +names-diona-last-dataset-46 = Hope +names-diona-last-dataset-47 = Honesty +names-diona-last-dataset-48 = Generosity +names-diona-last-dataset-49 = Opportunity +names-diona-last-dataset-50 = Motivation + +# Neutral +names-diona-last-dataset-51 = Urgency +names-diona-last-dataset-52 = Vitality +names-diona-last-dataset-53 = Hardiness +names-diona-last-dataset-54 = Vigor +names-diona-last-dataset-55 = Agility +names-diona-last-dataset-56 = Dexterity +names-diona-last-dataset-57 = Perception +names-diona-last-dataset-58 = Wisdom +names-diona-last-dataset-59 = Charisma +names-diona-last-dataset-60 = Persistence +names-diona-last-dataset-61 = Perseverance +names-diona-last-dataset-62 = Density +names-diona-last-dataset-63 = Strength +names-diona-last-dataset-64 = Congestion +names-diona-last-dataset-65 = Concentration +names-diona-last-dataset-66 = Intensity +names-diona-last-dataset-67 = Refinement +names-diona-last-dataset-68 = Obscurity +names-diona-last-dataset-69 = Fortitude +names-diona-last-dataset-70 = Endurance +names-diona-last-dataset-71 = Patience +names-diona-last-dataset-72 = Passivity +names-diona-last-dataset-73 = Indifference +names-diona-last-dataset-74 = Sleepiness +names-diona-last-dataset-75 = Neutrality +names-diona-last-dataset-76 = Fairness +names-diona-last-dataset-77 = Silliness +names-diona-last-dataset-78 = Restraint +names-diona-last-dataset-79 = Silence +names-diona-last-dataset-80 = Bewilderment +names-diona-last-dataset-81 = Tactility +names-diona-last-dataset-82 = Invisibility +names-diona-last-dataset-83 = Darkness +names-diona-last-dataset-84 = Fragility +names-diona-last-dataset-85 = Action +names-diona-last-dataset-86 = Awakening +names-diona-last-dataset-87 = Activity +names-diona-last-dataset-88 = Audacity +names-diona-last-dataset-89 = Vivacity +names-diona-last-dataset-90 = Knowledge +names-diona-last-dataset-91 = Modification + +# Negative +# These should be something a diona would still realistically name themselves, i.e not inherently self deprecating. +names-diona-last-dataset-92 = Envy +names-diona-last-dataset-93 = Ineptitude +names-diona-last-dataset-94 = Ignorance +names-diona-last-dataset-95 = Decay +names-diona-last-dataset-96 = Lethargy +names-diona-last-dataset-97 = Bitterness +names-diona-last-dataset-98 = Acidity +names-diona-last-dataset-99 = Illness +names-diona-last-dataset-100 = Weakness +names-diona-last-dataset-101 = Enervation +names-diona-last-dataset-102 = Fatigue +names-diona-last-dataset-103 = Noxiousness +names-diona-last-dataset-104 = Convolution +names-diona-last-dataset-105 = Confusion +names-diona-last-dataset-106 = Agitation +names-diona-last-dataset-107 = Despair +names-diona-last-dataset-108 = Sorrow +names-diona-last-dataset-109 = Pain +names-diona-last-dataset-110 = Animosity +names-diona-last-dataset-111 = Fury +names-diona-last-dataset-112 = Disinterest +names-diona-last-dataset-113 = Anger +names-diona-last-dataset-114 = Rage +names-diona-last-dataset-115 = Displeasure +names-diona-last-dataset-116 = Irritation +names-diona-last-dataset-117 = Resentment +names-diona-last-dataset-118 = Soreness +names-diona-last-dataset-119 = Frustration +names-diona-last-dataset-120 = Insanity +names-diona-last-dataset-121 = Chaos +names-diona-last-dataset-122 = Fear diff --git a/Resources/Locale/en-US/datasets/names/moth_first_female.ftl b/Resources/Locale/en-US/datasets/names/moth_first_female.ftl new file mode 100644 index 0000000000..d743f723e1 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/moth_first_female.ftl @@ -0,0 +1,93 @@ +# Acherontia atropos +names-moth-first-female-dataset-1 = Atropos + +# Biston betularia +names-moth-first-female-dataset-2 = Betularia + +# Daphnis +names-moth-first-female-dataset-3 = Daphne + +# Eurypteryx +names-moth-first-female-dataset-4 = Eurypta + +# Eudryas +names-moth-first-female-dataset-5 = Eudryas + +# Salassa iris +names-moth-first-female-dataset-6 = Iris + +# Acherontia lachesis +names-moth-first-female-dataset-7 = Lachesis + +# Actias luna +names-moth-first-female-dataset-8 = Luna + +# Lymantria +names-moth-first-female-dataset-9 = Lymanzia + +# Dryocampa rubicunda, "Rosy Maple" +names-moth-first-female-dataset-10 = Maple + +# Mimas +names-moth-first-female-dataset-11 = Mima + +# Nephele +names-moth-first-female-dataset-12 = Nephele + +# Dryocampa rubicunda +names-moth-first-female-dataset-13 = Rosie + +# Cosmosoma myrodora, "Scarlet-bodied wasp moth" +names-moth-first-female-dataset-14 = Scarlet + +# Acherontia styx +names-moth-first-female-dataset-15 = Styx + +## Other languages +# Galician "moth" (avelaíña) +names-moth-first-female-dataset-16 = Avelaina + +# Italian "winter moth" +names-moth-first-female-dataset-17 = Falena + +# Greek "moon gift" +names-moth-first-female-dataset-18 = Menodora + +# Romanian "moth" +names-moth-first-female-dataset-19 = Molie + +# Spanish "moth" +names-moth-first-female-dataset-20 = Polilla + +## Myth and legend +# Greek mythological figure +names-moth-first-female-dataset-21 = Althea + +# Roman goddess of the dawn +names-moth-first-female-dataset-22 = Aurora + +# Greek mythological figure +names-moth-first-female-dataset-23 = Helle + +# Greek goddess of the moon +names-moth-first-female-dataset-24 = Selene + +# Greek goddess of the night +names-moth-first-female-dataset-25 = Nyx + +## Fun names +names-moth-first-female-dataset-26 = Angel +names-moth-first-female-dataset-27 = Sandy +names-moth-first-female-dataset-28 = Liberty +names-moth-first-female-dataset-29 = Beatrix + +## Common names, filler +names-moth-first-female-dataset-30 = Daisy +names-moth-first-female-dataset-31 = Dawn +names-moth-first-female-dataset-32 = Elizabeth +names-moth-first-female-dataset-33 = Lucy +names-moth-first-female-dataset-34 = Ruby +names-moth-first-female-dataset-35 = Sarah +names-moth-first-female-dataset-36 = Sienna +names-moth-first-female-dataset-37 = Willow +names-moth-first-female-dataset-38 = Zoey diff --git a/Resources/Locale/en-US/datasets/names/moth_first_male.ftl b/Resources/Locale/en-US/datasets/names/moth_first_male.ftl new file mode 100644 index 0000000000..f2cfdcf3ea --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/moth_first_male.ftl @@ -0,0 +1,94 @@ +# Agrius +names-moth-first-male-dataset-1 = Agrius + +# Attacus atlas +names-moth-first-male-dataset-2 = Atlas + +# Attacus +names-moth-first-male-dataset-3 = Attacus + +# Attacus caesar +names-moth-first-male-dataset-4 = Caesar + +# Coscinocera hercules +names-moth-first-male-dataset-5 = Hercules + +# Itame brunneata, "Rannoch Looper" +names-moth-first-male-dataset-6 = Rannoch + +# Acosmeryx socrates +names-moth-first-male-dataset-7 = Socrates + +# Saturniidae solus +names-moth-first-male-dataset-8 = Solus + +## Other languages +# Hebrew עש "moth" +names-moth-first-male-dataset-9 = Ash + +# Persian "fire" +names-moth-first-male-dataset-10 = Azar + +# German "emperor" descendant of the Latin caesar +names-moth-first-male-dataset-11 = Kaiser + +# Latin "king" +names-moth-first-male-dataset-12 = Rex + +# Sanskrit "darkness" or "dust" +names-moth-first-male-dataset-13 = Rajas + +# Greek "clothes moth" +names-moth-first-male-dataset-14 = Skoros + +## Myth and legend +# Legendary king of the Britons who crafted wings and died in his attempt at flight +names-moth-first-male-dataset-15 = Bladud + +# Father of Icarus +names-moth-first-male-dataset-16 = Daedalus + +# Greek primordial deity of darkness +names-moth-first-male-dataset-17 = Erebus + +# The classic +names-moth-first-male-dataset-18 = Icarus + +# Hindu figure, similar to Icarus +names-moth-first-male-dataset-19 = Jatayu + +# Japanese reading of 夸父(こほ) +names-moth-first-male-dataset-20 = Koho + +# Chinese giant 夸父, similar to Icarus +names-moth-first-male-dataset-21 = Kuafu + +# More commonly-known fall-from-heaven figure +names-moth-first-male-dataset-22 = Lucifer + +# Arthurian wizard +names-moth-first-male-dataset-23 = Merlin + +# Another Greek figure, similar to Icarus +names-moth-first-male-dataset-24 = Phaethon + +# Rendering of Bladud from the Welsh blaidd "wolf" + iudd "lord" +names-moth-first-male-dataset-25 = Wolford + +## Fun names +names-moth-first-male-dataset-26 = Ace +names-moth-first-male-dataset-27 = Altair +names-moth-first-male-dataset-28 = Dusty +names-moth-first-male-dataset-29 = Gambit +names-moth-first-male-dataset-30 = Hawk +names-moth-first-male-dataset-31 = Mothew +names-moth-first-male-dataset-32 = Timothy + +## Common names, filler +names-moth-first-male-dataset-33 = Asher +names-moth-first-male-dataset-34 = Isaac +names-moth-first-male-dataset-35 = Roman +names-moth-first-male-dataset-36 = Samuel +names-moth-first-male-dataset-37 = Sebastian +names-moth-first-male-dataset-38 = Silas +names-moth-first-male-dataset-39 = Simon diff --git a/Resources/Locale/en-US/datasets/names/moth_last.ftl b/Resources/Locale/en-US/datasets/names/moth_last.ftl new file mode 100644 index 0000000000..abe5f6b6de --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/moth_last.ftl @@ -0,0 +1,59 @@ +# Ascalapha odorata +names-moth-last-dataset-1 = Blackwitch + +# Refers to any of the 3 Acherontia +names-moth-last-dataset-2 = Deathshead + +# Saturniinae +names-moth-last-dataset-3 = Emperor + +# Plagodis dolabraria +names-moth-last-dataset-4 = Scorchedwing + +# Temnora +names-moth-last-dataset-5 = Temnora + +# Usta +names-moth-last-dataset-6 = Usta + +# Thysania agrippina +names-moth-last-dataset-7 = Whitewitch + +# Operophtera brumata +names-moth-last-dataset-8 = Winter + +## Other languages +# Ancient Greek "moth" +names-moth-last-dataset-9 = Epiolos + +# Conceivably any Old Norse descendant of mǫlr but probably more Danish than anything. "oe" digraph for ø. +names-moth-last-dataset-10 = Moeller + +# Literal pseudo-translation of German Nachtfalter +names-moth-last-dataset-11 = Nightflitter + +## Myth and legend +# Belief of moths flying at night signalling the reception of a letter +names-moth-last-dataset-12 = Herald + +# Greek figure associated with Hero, and similar sounding to Oleander hawk-moth +names-moth-last-dataset-13 = Leander + +# Split between being a myth reference and actual possible surname given the actual Goodman, Hoffman, Newman, Coleman, etc. +names-moth-last-dataset-14 = Mothman + +## Fun names +names-moth-last-dataset-15 = Cometrider +names-moth-last-dataset-16 = Eventide +names-moth-last-dataset-17 = Firefly +names-moth-last-dataset-18 = Firebrush +names-moth-last-dataset-19 = Flamecoat +names-moth-last-dataset-20 = Lightweaver +names-moth-last-dataset-21 = Moondancer +names-moth-last-dataset-22 = Nightwish +names-moth-last-dataset-23 = Nighteyes +names-moth-last-dataset-24 = Owlbane +names-moth-last-dataset-25 = Silktongue +names-moth-last-dataset-26 = Sparkdrawn +names-moth-last-dataset-27 = Stargazer +names-moth-last-dataset-28 = Starseeker diff --git a/Resources/Locale/en-US/datasets/names/mushman_first.ftl b/Resources/Locale/en-US/datasets/names/mushman_first.ftl new file mode 100644 index 0000000000..d22295a60e --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/mushman_first.ftl @@ -0,0 +1,54 @@ +names-mushman-first-dataset-1 = Pleurocybella +names-mushman-first-dataset-2 = Geastrum +names-mushman-first-dataset-3 = Tricholoma +names-mushman-first-dataset-4 = Ganoderma +names-mushman-first-dataset-5 = Galerina +names-mushman-first-dataset-6 = Fistulina +names-mushman-first-dataset-7 = Gyromitra +names-mushman-first-dataset-8 = Leccinum +names-mushman-first-dataset-9 = Crucilulum +names-mushman-first-dataset-10 = Craterellus +names-mushman-first-dataset-11 = Geoglossum +names-mushman-first-dataset-12 = Helvella +names-mushman-first-dataset-13 = Exidia +names-mushman-first-dataset-14 = Clitocybe +names-mushman-first-dataset-15 = Psilocybe +names-mushman-first-dataset-16 = Panaeolus +names-mushman-first-dataset-17 = Amanita +names-mushman-first-dataset-18 = Paxillus +names-mushman-first-dataset-19 = Spheaerobolus +names-mushman-first-dataset-20 = Sparassis +names-mushman-first-dataset-21 = Lepiota +names-mushman-first-dataset-22 = Leotia +names-mushman-first-dataset-23 = Clavariadelphus +names-mushman-first-dataset-24 = Annulohypoxylon +names-mushman-first-dataset-25 = Pisolitus +names-mushman-first-dataset-26 = Pluteus +names-mushman-first-dataset-27 = Flammulina +names-mushman-first-dataset-28 = Marasmius +names-mushman-first-dataset-29 = Clavaria +names-mushman-first-dataset-30 = Stereum +names-mushman-first-dataset-31 = Cortinarius +names-mushman-first-dataset-32 = Lyophyllum +names-mushman-first-dataset-33 = Hydnum +names-mushman-first-dataset-34 = Poria +names-mushman-first-dataset-35 = Armillaria +names-mushman-first-dataset-36 = Hypsizygus +names-mushman-first-dataset-37 = Agaricus +names-mushman-first-dataset-38 = Omphalotus +names-mushman-first-dataset-39 = Boletus +names-mushman-first-dataset-40 = Boletopsis +names-mushman-first-dataset-41 = Gymnopilus +names-mushman-first-dataset-42 = Hericium +names-mushman-first-dataset-43 = Grifola +names-mushman-first-dataset-44 = Morchella +names-mushman-first-dataset-45 = Clathrus +names-mushman-first-dataset-46 = Pleurotus +names-mushman-first-dataset-47 = Discina +names-mushman-first-dataset-48 = Chalciporus +names-mushman-first-dataset-49 = Calvatia +names-mushman-first-dataset-50 = Caulorhiza +names-mushman-first-dataset-51 = Tremella +names-mushman-first-dataset-52 = Volvariella +names-mushman-first-dataset-53 = Hypholoma +names-mushman-first-dataset-54 = Lactarius diff --git a/Resources/Locale/en-US/datasets/names/mushman_last.ftl b/Resources/Locale/en-US/datasets/names/mushman_last.ftl new file mode 100644 index 0000000000..daf310356d --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/mushman_last.ftl @@ -0,0 +1,97 @@ +names-mushman-last-dataset-1 = Porrigens +names-mushman-last-dataset-2 = Deceptiva +names-mushman-last-dataset-3 = Fornicatum +names-mushman-last-dataset-4 = Magnivelare +names-mushman-last-dataset-5 = Applanatum +names-mushman-last-dataset-6 = Marginata +names-mushman-last-dataset-7 = Abietis +names-mushman-last-dataset-8 = Hepatica +names-mushman-last-dataset-9 = Esculenta +names-mushman-last-dataset-10 = Scabrum +names-mushman-last-dataset-11 = Laeve +names-mushman-last-dataset-12 = Cornucopioides +names-mushman-last-dataset-13 = Fallax +names-mushman-last-dataset-14 = Lacunosa +names-mushman-last-dataset-15 = Glandulosa +names-mushman-last-dataset-16 = Caerulipes +names-mushman-last-dataset-17 = Cyanescens +names-mushman-last-dataset-18 = Novinupta +names-mushman-last-dataset-19 = Involutus +names-mushman-last-dataset-20 = Bisporus +names-mushman-last-dataset-21 = Rubidus +names-mushman-last-dataset-22 = Stellatus +names-mushman-last-dataset-23 = Crispa +names-mushman-last-dataset-24 = Campestris +names-mushman-last-dataset-25 = Castenea +names-mushman-last-dataset-26 = Viscosa +names-mushman-last-dataset-27 = Occidentalis +names-mushman-last-dataset-28 = Lanei +names-mushman-last-dataset-29 = Thouarsianum +names-mushman-last-dataset-30 = Brunneoincarnata +names-mushman-last-dataset-31 = Josserandi +names-mushman-last-dataset-32 = Tinctorius +names-mushman-last-dataset-33 = Phalloides +names-mushman-last-dataset-34 = Cervinus +names-mushman-last-dataset-35 = Ocreata +names-mushman-last-dataset-36 = Subjunquillea +names-mushman-last-dataset-37 = Velutipes +names-mushman-last-dataset-38 = Virosa +names-mushman-last-dataset-39 = Oreades +names-mushman-last-dataset-40 = Vermicularis +names-mushman-last-dataset-41 = Rivulosa +names-mushman-last-dataset-42 = Hirsutum +names-mushman-last-dataset-43 = Verna +names-mushman-last-dataset-44 = Orellanus +names-mushman-last-dataset-45 = Decastes +names-mushman-last-dataset-46 = Tubaeformis +names-mushman-last-dataset-47 = Constricta +names-mushman-last-dataset-48 = Exitialis +names-mushman-last-dataset-49 = Caperatus +names-mushman-last-dataset-50 = Umbilicatum +names-mushman-last-dataset-51 = Cocos +names-mushman-last-dataset-52 = Mellea +names-mushman-last-dataset-53 = Tessulatus +names-mushman-last-dataset-54 = Arvensis +names-mushman-last-dataset-55 = Dealbata +names-mushman-last-dataset-56 = Olearius +names-mushman-last-dataset-57 = Edulis +names-mushman-last-dataset-58 = Baeocystis +names-mushman-last-dataset-59 = Leucomelaena +names-mushman-last-dataset-60 = Caerulescens +names-mushman-last-dataset-61 = Junonius +names-mushman-last-dataset-62 = Erinaceum +names-mushman-last-dataset-63 = Aeruginosus +names-mushman-last-dataset-64 = Frondosa +names-mushman-last-dataset-65 = Elata +names-mushman-last-dataset-66 = Archeri +names-mushman-last-dataset-67 = Tropicalis +names-mushman-last-dataset-68 = Pantherina +names-mushman-last-dataset-69 = Piperaturs +names-mushman-last-dataset-70 = Perlata +names-mushman-last-dataset-71 = Orcharaceus +names-mushman-last-dataset-72 = Augustus +names-mushman-last-dataset-73 = Subsculpta +names-mushman-last-dataset-74 = Cyathiformis +names-mushman-last-dataset-75 = Regineus +names-mushman-last-dataset-76 = Erubescens +names-mushman-last-dataset-77 = Rubripes +names-mushman-last-dataset-78 = Umbonata +names-mushman-last-dataset-79 = Lucidium +names-mushman-last-dataset-80 = Eastwoodiae +names-mushman-last-dataset-81 = Sculpta +names-mushman-last-dataset-82 = Edodes +names-mushman-last-dataset-83 = Fuciformis +names-mushman-last-dataset-84 = Velosa +names-mushman-last-dataset-85 = Rex-ceris +names-mushman-last-dataset-86 = Volvacea +names-mushman-last-dataset-87 = Fasciculare +names-mushman-last-dataset-88 = Bitorquis +names-mushman-last-dataset-89 = Flaviporus +names-mushman-last-dataset-90 = Pachycolea +names-mushman-last-dataset-91 = Subaldidus +names-mushman-last-dataset-92 = Rugosoannulata +names-mushman-last-dataset-93 = Subrutilescens +names-mushman-last-dataset-94 = Nuda +names-mushman-last-dataset-95 = Torminosus +names-mushman-last-dataset-96 = Equestre +names-mushman-last-dataset-97 = Xanthodermus diff --git a/Resources/Locale/en-US/datasets/names/reptilian_female.ftl b/Resources/Locale/en-US/datasets/names/reptilian_female.ftl new file mode 100644 index 0000000000..704ee52e21 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/reptilian_female.ftl @@ -0,0 +1,163 @@ +names-reptilian-female-dataset-1 = Adzi +names-reptilian-female-dataset-2 = Ah +names-reptilian-female-dataset-3 = Ahaht +names-reptilian-female-dataset-4 = Ajim +names-reptilian-female-dataset-5 = Akeenus +names-reptilian-female-dataset-6 = Akish +names-reptilian-female-dataset-7 = Akishan +names-reptilian-female-dataset-8 = Aleeto +names-reptilian-female-dataset-9 = Am +names-reptilian-female-dataset-10 = Amussa +names-reptilian-female-dataset-11 = An +names-reptilian-female-dataset-12 = Anozz +names-reptilian-female-dataset-13 = Asheemar +names-reptilian-female-dataset-14 = Asska +names-reptilian-female-dataset-15 = Awas +names-reptilian-female-dataset-16 = Azala +names-reptilian-female-dataset-17 = Azbai +names-reptilian-female-dataset-18 = Azeez +names-reptilian-female-dataset-19 = Azum +names-reptilian-female-dataset-20 = Banalz +names-reptilian-female-dataset-21 = Bar +names-reptilian-female-dataset-22 = Baseenar +names-reptilian-female-dataset-23 = Beek +names-reptilian-female-dataset-24 = Beekatan +names-reptilian-female-dataset-25 = Beekus +names-reptilian-female-dataset-26 = Beela +names-reptilian-female-dataset-27 = Beelei +names-reptilian-female-dataset-28 = Beem +names-reptilian-female-dataset-29 = Beewos +names-reptilian-female-dataset-30 = Bejeen +names-reptilian-female-dataset-31 = Ber +names-reptilian-female-dataset-32 = Betzi +names-reptilian-female-dataset-33 = Bishalus +names-reptilian-female-dataset-34 = Bokeeus +names-reptilian-female-dataset-35 = Bur +names-reptilian-female-dataset-36 = Bura +names-reptilian-female-dataset-37 = Chalaree +names-reptilian-female-dataset-38 = Chana +names-reptilian-female-dataset-39 = Chanil +names-reptilian-female-dataset-40 = Chee +names-reptilian-female-dataset-41 = Cheesh +names-reptilian-female-dataset-42 = Chimatei +names-reptilian-female-dataset-43 = Chirurgeon +names-reptilian-female-dataset-44 = Cholasistu +names-reptilian-female-dataset-45 = Chuna +names-reptilian-female-dataset-46 = Churasu +names-reptilian-female-dataset-47 = Crath +names-reptilian-female-dataset-48 = Dar +names-reptilian-female-dataset-49 = Deeja +names-reptilian-female-dataset-50 = Deesei +names-reptilian-female-dataset-51 = Deesh +names-reptilian-female-dataset-52 = Deetsan +names-reptilian-female-dataset-53 = Deetwos +names-reptilian-female-dataset-54 = Dooka +names-reptilian-female-dataset-55 = Druja +names-reptilian-female-dataset-56 = Eepa +names-reptilian-female-dataset-57 = Ei +names-reptilian-female-dataset-58 = Eix +names-reptilian-female-dataset-59 = El +names-reptilian-female-dataset-60 = Ereel +names-reptilian-female-dataset-61 = Eutei +names-reptilian-female-dataset-62 = Gai +names-reptilian-female-dataset-63 = Gih +names-reptilian-female-dataset-64 = Gilm +names-reptilian-female-dataset-65 = Gish +names-reptilian-female-dataset-66 = Go +names-reptilian-female-dataset-67 = Hal +names-reptilian-female-dataset-68 = Hul +names-reptilian-female-dataset-69 = Ja +names-reptilian-female-dataset-70 = Jaseen +names-reptilian-female-dataset-71 = Jasuda +names-reptilian-female-dataset-72 = Jeed +names-reptilian-female-dataset-73 = Jeen +names-reptilian-female-dataset-74 = Kajul +names-reptilian-female-dataset-75 = Kal +names-reptilian-female-dataset-76 = Kasa +names-reptilian-female-dataset-77 = Keel +names-reptilian-female-dataset-78 = Keerava +names-reptilian-female-dataset-79 = Kiurz +names-reptilian-female-dataset-80 = Kud +names-reptilian-female-dataset-81 = La +names-reptilian-female-dataset-82 = Lee +names-reptilian-female-dataset-83 = Lei +names-reptilian-female-dataset-84 = Lifts +names-reptilian-female-dataset-85 = Liurz +names-reptilian-female-dataset-86 = Lurasha +names-reptilian-female-dataset-87 = Ma +names-reptilian-female-dataset-88 = Mach +names-reptilian-female-dataset-89 = Marz +names-reptilian-female-dataset-90 = Meedish +names-reptilian-female-dataset-91 = Meeh +names-reptilian-female-dataset-92 = Meema +names-reptilian-female-dataset-93 = Meen +names-reptilian-female-dataset-94 = Meena +names-reptilian-female-dataset-95 = Meenus +names-reptilian-female-dataset-96 = Meerana +names-reptilian-female-dataset-97 = Meesei +names-reptilian-female-dataset-98 = Meeus +names-reptilian-female-dataset-99 = Mei +names-reptilian-female-dataset-100 = Milah +names-reptilian-female-dataset-101 = Mim +names-reptilian-female-dataset-102 = Mota +names-reptilian-female-dataset-103 = Mudeska +names-reptilian-female-dataset-104 = Muz +names-reptilian-female-dataset-105 = Na +names-reptilian-female-dataset-106 = Nakuma +names-reptilian-female-dataset-107 = Nam +names-reptilian-female-dataset-108 = Nassa +names-reptilian-female-dataset-109 = Natoo +names-reptilian-female-dataset-110 = Neesha +names-reptilian-female-dataset-111 = Neetizei +names-reptilian-female-dataset-112 = Neetra +names-reptilian-female-dataset-113 = Neeus +names-reptilian-female-dataset-114 = Niima +names-reptilian-female-dataset-115 = Numeen +names-reptilian-female-dataset-116 = Nuralg +names-reptilian-female-dataset-117 = Nush +names-reptilian-female-dataset-118 = Ocheeva +names-reptilian-female-dataset-119 = Okur +names-reptilian-female-dataset-120 = Olank +names-reptilian-female-dataset-121 = On +names-reptilian-female-dataset-122 = Onasha +names-reptilian-female-dataset-123 = Osheeka +names-reptilian-female-dataset-124 = Pasha +names-reptilian-female-dataset-125 = Ra +names-reptilian-female-dataset-126 = Rana +names-reptilian-female-dataset-127 = Raniur +names-reptilian-female-dataset-128 = Ree +names-reptilian-female-dataset-129 = Reesa +names-reptilian-female-dataset-130 = Rei +names-reptilian-female-dataset-131 = Sa +names-reptilian-female-dataset-132 = Saak +names-reptilian-female-dataset-133 = Sanax +names-reptilian-female-dataset-134 = Seeba +names-reptilian-female-dataset-135 = Seed +names-reptilian-female-dataset-136 = Seen +names-reptilian-female-dataset-137 = Shah +names-reptilian-female-dataset-138 = Shahvee +names-reptilian-female-dataset-139 = Shaleez +names-reptilian-female-dataset-140 = Shatalg +names-reptilian-female-dataset-141 = Sheer +names-reptilian-female-dataset-142 = Shei +names-reptilian-female-dataset-143 = Sigerthe +names-reptilian-female-dataset-144 = Skaleel +names-reptilian-female-dataset-145 = Sudie +names-reptilian-female-dataset-146 = Tail +names-reptilian-female-dataset-147 = Tar +names-reptilian-female-dataset-148 = Tasha +names-reptilian-female-dataset-149 = Tei +names-reptilian-female-dataset-150 = Telixith +names-reptilian-female-dataset-151 = Tumma +names-reptilian-female-dataset-152 = Veek +names-reptilian-female-dataset-153 = Wan +names-reptilian-female-dataset-154 = Wazei +names-reptilian-female-dataset-155 = Weedum +names-reptilian-female-dataset-156 = Weewish +names-reptilian-female-dataset-157 = Witseidutsei +names-reptilian-female-dataset-158 = Wuja +names-reptilian-female-dataset-159 = Wujeeta +names-reptilian-female-dataset-160 = Wusha +names-reptilian-female-dataset-161 = Xil +names-reptilian-female-dataset-162 = Zish +names-reptilian-female-dataset-163 = Zollassa diff --git a/Resources/Locale/en-US/datasets/names/reptilian_male.ftl b/Resources/Locale/en-US/datasets/names/reptilian_male.ftl new file mode 100644 index 0000000000..02b63e05eb --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/reptilian_male.ftl @@ -0,0 +1,328 @@ +names-reptilian-male-dataset-1 = Abijoo +names-reptilian-male-dataset-2 = Ah +names-reptilian-male-dataset-3 = Ajum +names-reptilian-male-dataset-4 = Am +names-reptilian-male-dataset-5 = Amusei +names-reptilian-male-dataset-6 = An +names-reptilian-male-dataset-7 = Anoo +names-reptilian-male-dataset-8 = Aojee +names-reptilian-male-dataset-9 = Asum +names-reptilian-male-dataset-10 = Az +names-reptilian-male-dataset-11 = Azeel +names-reptilian-male-dataset-12 = Azinar +names-reptilian-male-dataset-13 = Azjai +names-reptilian-male-dataset-14 = Baar +names-reptilian-male-dataset-15 = Banka +names-reptilian-male-dataset-16 = Bar +names-reptilian-male-dataset-17 = Barnaxi +names-reptilian-male-dataset-18 = Batar +names-reptilian-male-dataset-19 = Batuus +names-reptilian-male-dataset-20 = Beem +names-reptilian-male-dataset-21 = Beshnus +names-reptilian-male-dataset-22 = Betu +names-reptilian-male-dataset-23 = Bex +names-reptilian-male-dataset-24 = Bijot +names-reptilian-male-dataset-25 = Bimee +names-reptilian-male-dataset-26 = Binyaar +names-reptilian-male-dataset-27 = Bosekus +names-reptilian-male-dataset-28 = Brand +names-reptilian-male-dataset-29 = Bun +names-reptilian-male-dataset-30 = Bunach +names-reptilian-male-dataset-31 = Bunish +names-reptilian-male-dataset-32 = Busheeus +names-reptilian-male-dataset-33 = Buujhan +names-reptilian-male-dataset-34 = Chakuk +names-reptilian-male-dataset-35 = Chalish +names-reptilian-male-dataset-36 = Chalureel +names-reptilian-male-dataset-37 = Chath +names-reptilian-male-dataset-38 = Chee +names-reptilian-male-dataset-39 = Cheedal +names-reptilian-male-dataset-40 = Chilwir +names-reptilian-male-dataset-41 = Chitakus +names-reptilian-male-dataset-42 = Chiwish +names-reptilian-male-dataset-43 = Chulz +names-reptilian-male-dataset-44 = Chuna +names-reptilian-male-dataset-45 = Da +names-reptilian-male-dataset-46 = Dakee +names-reptilian-male-dataset-47 = Dan +names-reptilian-male-dataset-48 = Dar +names-reptilian-male-dataset-49 = Darasken +names-reptilian-male-dataset-50 = DarJee +names-reptilian-male-dataset-51 = Debameel +names-reptilian-male-dataset-52 = Deed +names-reptilian-male-dataset-53 = Deegeeta +names-reptilian-male-dataset-54 = Deeh +names-reptilian-male-dataset-55 = Deekonus +names-reptilian-male-dataset-56 = Deekum +names-reptilian-male-dataset-57 = Deekus +names-reptilian-male-dataset-58 = Deerkaza +names-reptilian-male-dataset-59 = Deetum +names-reptilian-male-dataset-60 = Demeepa +names-reptilian-male-dataset-61 = Depasa +names-reptilian-male-dataset-62 = Derkeethus +names-reptilian-male-dataset-63 = Deroh +names-reptilian-male-dataset-64 = Dezanu +names-reptilian-male-dataset-65 = Dreet +names-reptilian-male-dataset-66 = Drumarz +names-reptilian-male-dataset-67 = Dum +names-reptilian-male-dataset-68 = Dunaxith +names-reptilian-male-dataset-69 = Effe +names-reptilian-male-dataset-70 = Ei +names-reptilian-male-dataset-71 = Eidu +names-reptilian-male-dataset-72 = Eius +names-reptilian-male-dataset-73 = Eiuus +names-reptilian-male-dataset-74 = Eix +names-reptilian-male-dataset-75 = Eleedal +names-reptilian-male-dataset-76 = Er +names-reptilian-male-dataset-77 = Esqoo +names-reptilian-male-dataset-78 = Etaku +names-reptilian-male-dataset-79 = Gah +names-reptilian-male-dataset-80 = Gajul +names-reptilian-male-dataset-81 = Gam +names-reptilian-male-dataset-82 = Geeh +names-reptilian-male-dataset-83 = Geel +names-reptilian-male-dataset-84 = Geem +names-reptilian-male-dataset-85 = Geh +names-reptilian-male-dataset-86 = Gei +names-reptilian-male-dataset-87 = Gih +names-reptilian-male-dataset-88 = Gin +names-reptilian-male-dataset-89 = Goh +names-reptilian-male-dataset-90 = Gulum +names-reptilian-male-dataset-91 = Haj +names-reptilian-male-dataset-92 = Han +names-reptilian-male-dataset-93 = Haran +names-reptilian-male-dataset-94 = Hareeya +names-reptilian-male-dataset-95 = Hathei +names-reptilian-male-dataset-96 = Heedul +names-reptilian-male-dataset-97 = Heem +names-reptilian-male-dataset-98 = Hei +names-reptilian-male-dataset-99 = Heir +names-reptilian-male-dataset-100 = Hixeeh +names-reptilian-male-dataset-101 = Huleeya +names-reptilian-male-dataset-102 = Huzei +names-reptilian-male-dataset-103 = Ilas +names-reptilian-male-dataset-104 = Im +names-reptilian-male-dataset-105 = Inee +names-reptilian-male-dataset-106 = Itan +names-reptilian-male-dataset-107 = J'Ram +names-reptilian-male-dataset-108 = Ja +names-reptilian-male-dataset-109 = Jah +names-reptilian-male-dataset-110 = Jaraleet +names-reptilian-male-dataset-111 = Jaree +names-reptilian-male-dataset-112 = Jas +names-reptilian-male-dataset-113 = Jasaiin +names-reptilian-male-dataset-114 = Jaseen +names-reptilian-male-dataset-115 = Jat +names-reptilian-male-dataset-116 = Jee +names-reptilian-male-dataset-117 = Jeela +names-reptilian-male-dataset-118 = Jeelius +names-reptilian-male-dataset-119 = Jeelus +names-reptilian-male-dataset-120 = Jeen +names-reptilian-male-dataset-121 = Jeer +names-reptilian-male-dataset-122 = Jeetum +names-reptilian-male-dataset-123 = Jei +names-reptilian-male-dataset-124 = Jilux +names-reptilian-male-dataset-125 = Jin +names-reptilian-male-dataset-126 = Jon +names-reptilian-male-dataset-127 = Jul +names-reptilian-male-dataset-128 = Julan +names-reptilian-male-dataset-129 = Junal +names-reptilian-male-dataset-130 = Jush +names-reptilian-male-dataset-131 = Juunei +names-reptilian-male-dataset-132 = Kai +names-reptilian-male-dataset-133 = Kajin +names-reptilian-male-dataset-134 = Kamax +names-reptilian-male-dataset-135 = Kas +names-reptilian-male-dataset-136 = Keema +names-reptilian-male-dataset-137 = Keer +names-reptilian-male-dataset-138 = Keerasa +names-reptilian-male-dataset-139 = Kepanuu +names-reptilian-male-dataset-140 = Kia +names-reptilian-male-dataset-141 = Kiameed +names-reptilian-male-dataset-142 = Kilaya +names-reptilian-male-dataset-143 = Kiurz +names-reptilian-male-dataset-144 = Kur +names-reptilian-male-dataset-145 = Kuz +names-reptilian-male-dataset-146 = La +names-reptilian-male-dataset-147 = Lah +names-reptilian-male-dataset-148 = Lai +names-reptilian-male-dataset-149 = Lan +names-reptilian-male-dataset-150 = Lara +names-reptilian-male-dataset-151 = Leem +names-reptilian-male-dataset-152 = Lei +names-reptilian-male-dataset-153 = Loh +names-reptilian-male-dataset-154 = Lotash +names-reptilian-male-dataset-155 = Luh +names-reptilian-male-dataset-156 = Lurz +names-reptilian-male-dataset-157 = Luteema +names-reptilian-male-dataset-158 = Maahi +names-reptilian-male-dataset-159 = Madesi +names-reptilian-male-dataset-160 = Maheelius +names-reptilian-male-dataset-161 = Mahei +names-reptilian-male-dataset-162 = Maht +names-reptilian-male-dataset-163 = Malz +names-reptilian-male-dataset-164 = Marz +names-reptilian-male-dataset-165 = Mathei +names-reptilian-male-dataset-166 = Maxath +names-reptilian-male-dataset-167 = Meej +names-reptilian-male-dataset-168 = Meejapa +names-reptilian-male-dataset-169 = Meensuda +names-reptilian-male-dataset-170 = Meer +names-reptilian-male-dataset-171 = Mema +names-reptilian-male-dataset-172 = Mere +names-reptilian-male-dataset-173 = Metaku +names-reptilian-male-dataset-174 = Miharil +names-reptilian-male-dataset-175 = Milos +names-reptilian-male-dataset-176 = Miun +names-reptilian-male-dataset-177 = Mobareed +names-reptilian-male-dataset-178 = Mohimeem +names-reptilian-male-dataset-179 = Mopakuz +names-reptilian-male-dataset-180 = Motuu +names-reptilian-male-dataset-181 = Mujeen +names-reptilian-male-dataset-182 = Muranatepa +names-reptilian-male-dataset-183 = Mush +names-reptilian-male-dataset-184 = Muz +names-reptilian-male-dataset-185 = Na +names-reptilian-male-dataset-186 = Napetui +names-reptilian-male-dataset-187 = Nazuux +names-reptilian-male-dataset-188 = Nebutil +names-reptilian-male-dataset-189 = Neeti +names-reptilian-male-dataset-190 = Neetinei +names-reptilian-male-dataset-191 = Neetrenaza +names-reptilian-male-dataset-192 = Neetzara +names-reptilian-male-dataset-193 = Neeus +names-reptilian-male-dataset-194 = Nema +names-reptilian-male-dataset-195 = Neposh +names-reptilian-male-dataset-196 = Netapatuu +names-reptilian-male-dataset-197 = Nexith +names-reptilian-male-dataset-198 = Nodeeus +names-reptilian-male-dataset-199 = Nomu +names-reptilian-male-dataset-200 = Nosaleeth +names-reptilian-male-dataset-201 = Nowajeem +names-reptilian-male-dataset-202 = Noyei +names-reptilian-male-dataset-203 = Nulaz +names-reptilian-male-dataset-204 = Nur +names-reptilian-male-dataset-205 = Obaxith +names-reptilian-male-dataset-206 = Okan +names-reptilian-male-dataset-207 = Okaw +names-reptilian-male-dataset-208 = Okeeh +names-reptilian-male-dataset-209 = Oleed +names-reptilian-male-dataset-210 = Oleen +names-reptilian-male-dataset-211 = Olik +names-reptilian-male-dataset-212 = Olink +names-reptilian-male-dataset-213 = Onuja +names-reptilian-male-dataset-214 = Onurai +names-reptilian-male-dataset-215 = Opatieel +names-reptilian-male-dataset-216 = Otumeel +names-reptilian-male-dataset-217 = Owai +names-reptilian-male-dataset-218 = Pachat +names-reptilian-male-dataset-219 = Pacheeva +names-reptilian-male-dataset-220 = Pad +names-reptilian-male-dataset-221 = Paduxi +names-reptilian-male-dataset-222 = Pajeen +names-reptilian-male-dataset-223 = Parash +names-reptilian-male-dataset-224 = Peeradeeh +names-reptilian-male-dataset-225 = Pejureel +names-reptilian-male-dataset-226 = Petaxai +names-reptilian-male-dataset-227 = Pideelus +names-reptilian-male-dataset-228 = Pimaxi +names-reptilian-male-dataset-229 = Pojeel +names-reptilian-male-dataset-230 = Ra +names-reptilian-male-dataset-231 = Radithax +names-reptilian-male-dataset-232 = Raj +names-reptilian-male-dataset-233 = Rareel +names-reptilian-male-dataset-234 = Rasha +names-reptilian-male-dataset-235 = Redieeus +names-reptilian-male-dataset-236 = Ree +names-reptilian-male-dataset-237 = Reeh +names-reptilian-male-dataset-238 = Reemukeeus +names-reptilian-male-dataset-239 = Reenum +names-reptilian-male-dataset-240 = Reesa +names-reptilian-male-dataset-241 = Reet +names-reptilian-male-dataset-242 = Reezal +names-reptilian-male-dataset-243 = Resari +names-reptilian-male-dataset-244 = Riker +names-reptilian-male-dataset-245 = Ru +names-reptilian-male-dataset-246 = Rupah +names-reptilian-male-dataset-247 = Sakeepa +names-reptilian-male-dataset-248 = Sakeeus +names-reptilian-male-dataset-249 = Sakka +names-reptilian-male-dataset-250 = Saliith +names-reptilian-male-dataset-251 = Sar +names-reptilian-male-dataset-252 = Schiavas +names-reptilian-male-dataset-253 = Seek +names-reptilian-male-dataset-254 = Seewul +names-reptilian-male-dataset-255 = Sei +names-reptilian-male-dataset-256 = Sejaijilax +names-reptilian-male-dataset-257 = Shakiis +names-reptilian-male-dataset-258 = Shehs +names-reptilian-male-dataset-259 = Shei +names-reptilian-male-dataset-260 = Silm +names-reptilian-male-dataset-261 = Skee +names-reptilian-male-dataset-262 = Skeetul +names-reptilian-male-dataset-263 = Sureeus +names-reptilian-male-dataset-264 = Ta +names-reptilian-male-dataset-265 = Taeed +names-reptilian-male-dataset-266 = Tah +names-reptilian-male-dataset-267 = Taleel +names-reptilian-male-dataset-268 = Talen +names-reptilian-male-dataset-269 = Tan +names-reptilian-male-dataset-270 = Tanaka +names-reptilian-male-dataset-271 = Tanan +names-reptilian-male-dataset-272 = Tee +names-reptilian-male-dataset-273 = Teeba +names-reptilian-male-dataset-274 = Teegla +names-reptilian-male-dataset-275 = Teeka +names-reptilian-male-dataset-276 = Teekeeus +names-reptilian-male-dataset-277 = Teemeeta +names-reptilian-male-dataset-278 = Teeus +names-reptilian-male-dataset-279 = Tehat +names-reptilian-male-dataset-280 = Tei +names-reptilian-male-dataset-281 = Teinaava +names-reptilian-male-dataset-282 = Teineeja +names-reptilian-male-dataset-283 = Terezeeus +names-reptilian-male-dataset-284 = Tikaasi +names-reptilian-male-dataset-285 = Tim +names-reptilian-male-dataset-286 = Topeeth +names-reptilian-male-dataset-287 = Topith +names-reptilian-male-dataset-288 = Tsleeixth +names-reptilian-male-dataset-289 = Tul +names-reptilian-male-dataset-290 = Tulm +names-reptilian-male-dataset-291 = Tun +names-reptilian-male-dataset-292 = Ukatsei +names-reptilian-male-dataset-293 = Ukawei +names-reptilian-male-dataset-294 = Ula +names-reptilian-male-dataset-295 = Ulawa +names-reptilian-male-dataset-296 = Ullis +names-reptilian-male-dataset-297 = Usha +names-reptilian-male-dataset-298 = Usheeja +names-reptilian-male-dataset-299 = Utadeek +names-reptilian-male-dataset-300 = Utamukeeus +names-reptilian-male-dataset-301 = Utatul +names-reptilian-male-dataset-302 = Uxith +names-reptilian-male-dataset-303 = Vara +names-reptilian-male-dataset-304 = Veekas +names-reptilian-male-dataset-305 = Veenaza +names-reptilian-male-dataset-306 = Veezara +names-reptilian-male-dataset-307 = Vistha +names-reptilian-male-dataset-308 = Vudeelal +names-reptilian-male-dataset-309 = Wanan +names-reptilian-male-dataset-310 = Wanum +names-reptilian-male-dataset-311 = Wayiteh +names-reptilian-male-dataset-312 = Weebam +names-reptilian-male-dataset-313 = Weeltul +names-reptilian-male-dataset-314 = Weer +names-reptilian-male-dataset-315 = Wih +names-reptilian-male-dataset-316 = Wud +names-reptilian-male-dataset-317 = Wuleen +names-reptilian-male-dataset-318 = Wulm +names-reptilian-male-dataset-319 = Wumeek +names-reptilian-male-dataset-320 = Xal +names-reptilian-male-dataset-321 = Xemo +names-reptilian-male-dataset-322 = Yinz +names-reptilian-male-dataset-323 = Yinz'r +names-reptilian-male-dataset-324 = Zaw +names-reptilian-male-dataset-325 = Ze +names-reptilian-male-dataset-326 = Zeen +names-reptilian-male-dataset-327 = Zeeus +names-reptilian-male-dataset-328 = Zish diff --git a/Resources/Locale/en-US/datasets/names/skeleton_first.ftl b/Resources/Locale/en-US/datasets/names/skeleton_first.ftl new file mode 100644 index 0000000000..77319ee388 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/skeleton_first.ftl @@ -0,0 +1,28 @@ +names-skeleton-first-dataset-1 = Sternum +names-skeleton-first-dataset-2 = Ribs +names-skeleton-first-dataset-3 = Vertebrae +names-skeleton-first-dataset-4 = Sacrum +names-skeleton-first-dataset-5 = Mandible +names-skeleton-first-dataset-6 = Clavicle +names-skeleton-first-dataset-7 = Scapula +names-skeleton-first-dataset-8 = Humerus +names-skeleton-first-dataset-9 = Radius +names-skeleton-first-dataset-10 = Ulna +names-skeleton-first-dataset-11 = Carpals +names-skeleton-first-dataset-12 = Phalanges +names-skeleton-first-dataset-13 = Pelvis +names-skeleton-first-dataset-14 = Femur +names-skeleton-first-dataset-15 = Tibia +names-skeleton-first-dataset-16 = Fibula +names-skeleton-first-dataset-17 = Marrow +names-skeleton-first-dataset-18 = Tarsals +names-skeleton-first-dataset-19 = Patella +names-skeleton-first-dataset-20 = Tailbone +# DeltaV - no Boner +names-skeleton-first-dataset-21 = Bone +names-skeleton-first-dataset-22 = Rib +names-skeleton-first-dataset-23 = Hyoid +names-skeleton-first-dataset-24 = Coccyx +names-skeleton-first-dataset-25 = Tarsus +names-skeleton-first-dataset-26 = Lacrimal +names-skeleton-first-dataset-27 = Bone diff --git a/Resources/Prototypes/Datasets/Names/diona.yml b/Resources/Prototypes/Datasets/Names/diona.yml index 5c679d5c8d..8678219aad 100644 --- a/Resources/Prototypes/Datasets/Names/diona.yml +++ b/Resources/Prototypes/Datasets/Names/diona.yml @@ -1,222 +1,11 @@ -- type: dataset - id: DionaFirst +- type: localizedDataset + id: NamesDionaFirst values: - - Moss - - Mushroom - - Herb - - Ivy - - Stalk - - Petal - - Petals - - Thorn - - Thorns - - Vine - - Vines - - Branch - - Branches - - Weed - - Weeds - - Rose - - Dandelion - - Lilac - - Lily - - Birch - - Oak - - Spruce - - Willow - - Cyprus - - Mangrove - - Stump - - Sap - - Bayou - - Bay - - Lake - - River - - Creek - - Meadow - - Canyon - - Mountain - - Peak - - Garden - - Ocean - - Arctic - - Sea - - Spring - - Swamp - - Stream - - Forest - - Rainforest - - Soil - - Valley - - Moor - - Steppe - - Orchard - - Orchid - - Glacier - - Desert - - Tundra - - Taiga - - Plain - - Plains - - Plateau - - Cliff - - Coast - - Shore - - Jungle - - Tropics - - Flower - - Grass - - Bark - - Autumn - - Summer - - Winter - - Fruit - - Leaves - - Overgrowth - - Atmosphere - - Climate - - Chill - - Winds - - Blossom - - Bloom - - Cap - - Saturation - - Permeation - - Light - - Taste - - Acorn - - Shell - - Ice - - Monsoon - - Overcast - - Storm + prefix: names-diona-first-dataset- + count: 89 -- type: dataset - id: DionaLast +- type: localizedDataset + id: NamesDionaLast values: -# Positive - - Peace - - Harmony - - Relaxation - - Serendipity - - Calmness - - Introspection - - Union - - Comfort - - Dreams - - Quietude - - Balance - - Gentleness - - Placidity - - Repose - - Serenity - - Stillness - - Tranquility - - Ease - - Equilibrium - - Composure - - Control - - Bliss - - Enjoyment - - Optimism - - Ecstasy - - Cheer - - Delight - - Luxury - - Euphoria - - Excitement - - Satisfaction - - Cleanliness - - Expression - - Enrichment - - Enthusiam - - Brilliance - - Determination - - Integrity - - Justice - - Kindness - - Bravery - - Empathy - - Stoicism - - Competence - - Love - - Hope - - Honesty - - Generosity - - Oppritunity - - Motivation -# Neutral - - Urgency - - Vitality - - Hardiness - - Vigor - - Agility - - Dexterity - - Perception - - Wisdom - - Charisma - - Persistence - - Perseverance - - Density - - Strength - - Congestion - - Concentration - - Intensity - - Refinement - - Obscurity - - Fortitude - - Endurance - - Patience - - Passivity - - Indifference - - Sleepiness - - Neutrality - - Fairness - - Silliness - - Restraint - - Silence - - Bewilderment - - Tactility - - Invisibility - - Darkness - - Fragility - - Action - - Awakening - - Activity - - Audacity - - Vivacity - - Knowledge - - Modification -# Negative -# These should be something a diona would still realistically name themselves, i.e not inherintly self deprecating. - - Envy - - Ineptitude - - Ignorance - - Decay - - Lethargy - - Bitterness - - Acidity - - Illness - - Weakness - - Enervation - - Fatigue - - Noxiousness - - Convolution - - Confusion - - Agitation - - Despair - - Sorrow - - Pain - - Animosity - - Fury - - Disinterest - - Anger - - Rage - - Displeasure - - Irritation - - Resentment - - Soreness - - Frustration - - Insanity - - Chaos - - Fear \ No newline at end of file + prefix: names-diona-last-dataset- + count: 122 diff --git a/Resources/Prototypes/Datasets/Names/moth.yml b/Resources/Prototypes/Datasets/Names/moth.yml new file mode 100644 index 0000000000..748b888a2f --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/moth.yml @@ -0,0 +1,17 @@ +- type: localizedDataset + id: NamesMothFirstMale + values: + prefix: names-moth-first-male-dataset- + count: 39 + +- type: localizedDataset + id: NamesMothFirstFemale + values: + prefix: names-moth-first-female-dataset- + count: 38 + +- type: localizedDataset + id: NamesMothLast + values: + prefix: names-moth-last-dataset- + count: 28 diff --git a/Resources/Prototypes/Datasets/Names/moth_first_female.yml b/Resources/Prototypes/Datasets/Names/moth_first_female.yml deleted file mode 100644 index 10f648772f..0000000000 --- a/Resources/Prototypes/Datasets/Names/moth_first_female.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: dataset - id: names_moth_first_female - values: - - Atropos # Acherontia atropos - - Betularia # Biston betularia - - Daphne # Daphnis - - Eurypta # Eurypteryx - - Eudryas # Eudryas - - Iris # Salassa iris - - Lachesis # Acherontia lachesis - - Luna # Actias luna - - Lymanzia # Lymantria - - Maple # Dryocampa rubicunda, "Rosy Maple" - - Mima # Mimas - - Nephele # Nephele - - Rosie # Dryocampa rubicunda - - Scarlet # Cosmosoma myrodora, "Scarlet-bodied wasp moth" - - Styx # Acherontia styx - - # Other languages - - Avelaina # Galician "moth" (avelaíña) - - Falena # Italian "winter moth" - - Menodora # Greek "moon gift" - - Molie # Romanian "moth" - - Polilla # Spanish "moth" - - # Myth and legend - - Althea # Greek mythological figure - - Aurora # Roman goddess of the dawn - - Helle # Greek mythological figure - - Selene # Greek goddess of the moon - - Nyx # Greek goddess of the night - - # Fun names - - Angel - - Sandy - - Liberty - - # Common names, filler - - Beatrix - - Daisy - - Dawn - - Elizabeth - - Lucy - - Ruby - - Sarah - - Sienna - - Willow - - Zoey diff --git a/Resources/Prototypes/Datasets/Names/moth_first_male.yml b/Resources/Prototypes/Datasets/Names/moth_first_male.yml deleted file mode 100644 index 35637cf690..0000000000 --- a/Resources/Prototypes/Datasets/Names/moth_first_male.yml +++ /dev/null @@ -1,50 +0,0 @@ -- type: dataset - id: names_moth_first_male - values: - - Agrius # Agrius - - Atlas # Attacus atlas - - Attacus # Attacus - - Caesar # Attacus caesar - - Hercules # Coscinocera hercules - - Rannoch # Itame brunneata, "Rannoch Looper" - - Socrates # Acosmeryx socrates - - Solus # Saturniidae solus - - # Other languages - - Ash # Hebrew עש "moth" - - Azar # Persian "fire" - - Kaiser # German "emperor" descendant of the Latin caesar - - Rex # Latin "king" - - Rajas # Sanskrit "darkness" or "dust" - - Skoros # Greek "clothes moth" - - # Myth and legend - - Bladud # legendary king of the Britons who crafted wings and died in his attempt at flight - - Daedalus # father of Icarus - - Erebus # Greek primordial deity of darkness - - Icarus # the classic - - Jatayu # Hindu figure, similar to Icarus - - Koho # Japanese reading of 夸父(こほ) - - Kuafu # Chinese giant 夸父, similar to Icarus - - Lucifer # more commonly-known fall-from-heaven figure - - Merlin # Arthurian wizard - - Phaethon # another Greek figure, similar to Icarus - - Wolford # rendering of Bladud from the Welsh blaidd "wolf" + iudd "lord" - - # Fun names - - Ace - - Altair - - Dusty - - Gambit - - Hawk - - Mothew - - Timothy - - # Common names, filler - - Asher - - Isaac - - Roman - - Samuel - - Sebastian - - Silas - - Simon diff --git a/Resources/Prototypes/Datasets/Names/moth_last.yml b/Resources/Prototypes/Datasets/Names/moth_last.yml deleted file mode 100644 index 8230dda6fe..0000000000 --- a/Resources/Prototypes/Datasets/Names/moth_last.yml +++ /dev/null @@ -1,37 +0,0 @@ -- type: dataset - id: names_moth_last - values: - - Blackwitch # Ascalapha odorata - - Deathshead # refers to any of the 3 Acherontia - - Emperor # Saturniinae - - Scorchedwing # Plagodis dolabraria - - Temnora # Temnora - - Usta # Usta - - Whitewitch # Thysania agrippina - - Winter # Operophtera brumata - - # Other languages - - Epiolos # Ancient Greek "moth" - - Moeller # conceivably any Old Norse descendant of mǫlr but probably more Danish than anything. "oe" digraph for ø. - - Nightflitter # literal pseudo-translation of German Nachtfalter - - # Myth and legend - - Herald # belief of moths flying at night signalling the reception of a letter - - Leander # Greek figure associated with Hero, and similar sounding to Oleander hawk-moth - - Mothman # split between being a myth reference and actual possible surname given the actual Goodman, Hoffman, Newman, Coleman, etc. - - # Fun names - - Cometrider - - Eventide - - Firefly - - Firebrush - - Flamecoat - - Lightweaver - - Moondancer - - Nightwish - - Nighteyes - - Owlbane - - Silktongue - - Sparkdrawn - - Stargazer - - Starseeker diff --git a/Resources/Prototypes/Datasets/Names/mushman_first.yml b/Resources/Prototypes/Datasets/Names/mushman_first.yml index d438293bc9..bad4849e15 100644 --- a/Resources/Prototypes/Datasets/Names/mushman_first.yml +++ b/Resources/Prototypes/Datasets/Names/mushman_first.yml @@ -1,57 +1,5 @@ -- type: dataset - id: names_mushman_first +- type: localizedDataset + id: NamesMushmanFirst values: - - Pleurocybella - - Geastrum - - Tricholoma - - Ganoderma - - Galerina - - Fistulina - - Gyromitra - - Leccinum - - Crucilulum - - Craterellus - - Geoglossum - - Helvella - - Exidia - - Clitocybe - - Psilocybe - - Panaeolus - - Amanita - - Paxillus - - Spheaerobolus - - Sparassis - - Lepiota - - Leotia - - Clavariadelphus - - Annulohypoxylon - - Pisolitus - - Pluteus - - Flammulina - - Marasmius - - Clavaria - - Stereum - - Cortinarius - - Lyophyllum - - Hydnum - - Poria - - Armillaria - - Hypsizygus - - Agaricus - - Omphalotus - - Boletus - - Boletopsis - - Gymnopilus - - Hericium - - Grifola - - Morchella - - Clathrus - - Pleurotus - - Discina - - Chalciporus - - Calvatia - - Caulorhiza - - Tremella - - Volvariella - - Hypholoma - - Lactarius + prefix: names-mushman-first-dataset- + count: 54 diff --git a/Resources/Prototypes/Datasets/Names/mushman_last.yml b/Resources/Prototypes/Datasets/Names/mushman_last.yml index 32fc3f2f8a..6eb849399e 100644 --- a/Resources/Prototypes/Datasets/Names/mushman_last.yml +++ b/Resources/Prototypes/Datasets/Names/mushman_last.yml @@ -1,100 +1,5 @@ -- type: dataset - id: names_mushman_last +- type: localizedDataset + id: NamesMushmanLast values: - - Porrigens - - Deceptiva - - Fornicatum - - Magnivelare - - Applanatum - - Marginata - - Abietis - - Hepatica - - Esculenta - - Scabrum - - Laeve - - Cornucopioides - - Fallax - - Lacunosa - - Glandulosa - - Caerulipes - - Cyanescens - - Novinupta - - Involutus - - Bisporus - - Rubidus - - Stellatus - - Crispa - - Campestris - - Castenea - - Viscosa - - Occidentalis - - Lanei - - Thouarsianum - - Brunneoincarnata - - Josserandi - - Tinctorius - - Phalloides - - Cervinus - - Ocreata - - Subjunquillea - - Velutipes - - Virosa - - Oreades - - Vermicularis - - Rivulosa - - Hirsutum - - Verna - - Orellanus - - Decastes - - Tubaeformis - - Constricta - - Exitialis - - Caperatus - - Umbilicatum - - Cocos - - Mellea - - Tessulatus - - Arvensis - - Dealbata - - Olearius - - Edulis - - Baeocystis - - Leucomelaena - - Caerulescens - - Junonius - - Erinaceum - - Aeruginosus - - Frondosa - - Elata - - Archeri - - Tropicalis - - Pantherina - - Piperaturs - - Perlata - - Orcharaceus - - Augustus - - Subsculpta - - Cyathiformis - - Regineus - - Erubescens - - Rubripes - - Umbonata - - Lucidium - - Eastwoodiae - - Sculpta - - Edodes - - Fuciformis - - Velosa - - Rex-ceris - - Volvacea - - Fasciculare - - Bitorquis - - Flaviporus - - Pachycolea - - Subaldidus - - Rugosoannulata - - Subrutilescens - - Nuda - - Torminosus - - Equestre - - Xanthodermus + prefix: names-mushman-last-dataset- + count: 97 diff --git a/Resources/Prototypes/Datasets/Names/reptilian_female.yml b/Resources/Prototypes/Datasets/Names/reptilian_female.yml index a4247e9e68..5b378cbb8a 100644 --- a/Resources/Prototypes/Datasets/Names/reptilian_female.yml +++ b/Resources/Prototypes/Datasets/Names/reptilian_female.yml @@ -1,166 +1,5 @@ -- type: dataset - id: names_reptilian_female +- type: localizedDataset + id: NamesReptilianFemale values: - - Adzi - - Ah - - Ahaht - - Ajim - - Akeenus - - Akish - - Akishan - - Aleeto - - Am - - Amussa - - An - - Anozz - - Asheemar - - Asska - - Awas - - Azala - - Azbai - - Azeez - - Azum - - Banalz - - Bar - - Baseenar - - Beek - - Beekatan - - Beekus - - Beela - - Beelei - - Beem - - Beewos - - Bejeen - - Ber - - Betzi - - Bishalus - - Bokeeus - - Bur - - Bura - - Chalaree - - Chana - - Chanil - - Chee - - Cheesh - - Chimatei - - Chirurgeon - - Cholasistu - - Chuna - - Churasu - - Crath - - Dar - - Deeja - - Deesei - - Deesh - - Deetsan - - Deetwos - - Dooka - - Druja - - Eepa - - Ei - - Eix - - El - - Ereel - - Eutei - - Gai - - Gih - - Gilm - - Gish - - Go - - Hal - - Hul - - Ja - - Jaseen - - Jasuda - - Jeed - - Jeen - - Kajul - - Kal - - Kasa - - Keel - - Keerava - - Kiurz - - Kud - - La - - Lee - - Lei - - Lifts - - Liurz - - Lurasha - - Ma - - Mach - - Marz - - Meedish - - Meeh - - Meema - - Meen - - Meena - - Meenus - - Meerana - - Meesei - - Meeus - - Mei - - Milah - - Mim - - Mota - - Mudeska - - Muz - - Na - - Nakuma - - Nam - - Nassa - - Natoo - - Neesha - - Neetizei - - Neetra - - Neeus - - Niima - - Numeen - - Nuralg - - Nush - - Ocheeva - - Okur - - Olank - - On - - Onasha - - Osheeka - - Pasha - - Ra - - Rana - - Raniur - - Ree - - Reesa - - Rei - - Sa - - Saak - - Sanax - - Seeba - - Seed - - Seen - - Shah - - Shahvee - - Shaleez - - Shatalg - - Sheer - - Shei - - Sigerthe - - Skaleel - - Sudie - - Tail - - Tar - - Tasha - - Tei - - Telixith - - Tumma - - Veek - - Wan - - Wazei - - Weedum - - Weewish - - Witseidutsei - - Wuja - - Wujeeta - - Wusha - - Xil - - Zish - - Zollassa + prefix: names-reptilian-female-dataset- + count: 163 diff --git a/Resources/Prototypes/Datasets/Names/reptilian_male.yml b/Resources/Prototypes/Datasets/Names/reptilian_male.yml index 8b7fec08ad..06bdaf6558 100644 --- a/Resources/Prototypes/Datasets/Names/reptilian_male.yml +++ b/Resources/Prototypes/Datasets/Names/reptilian_male.yml @@ -1,331 +1,5 @@ -- type: dataset - id: names_reptilian_male +- type: localizedDataset + id: NamesReptilianMale values: - - Abijoo - - Ah - - Ajum - - Am - - Amusei - - An - - Anoo - - Aojee - - Asum - - Az - - Azeel - - Azinar - - Azjai - - Baar - - Banka - - Bar - - Barnaxi - - Batar - - Batuus - - Beem - - Beshnus - - Betu - - Bex - - Bijot - - Bimee - - Binyaar - - Bosekus - - Brand - - Bun - - Bunach - - Bunish - - Busheeus - - Buujhan - - Chakuk - - Chalish - - Chalureel - - Chath - - Chee - - Cheedal - - Chilwir - - Chitakus - - Chiwish - - Chulz - - Chuna - - Da - - Dakee - - Dan - - Dar - - Darasken - - DarJee - - Debameel - - Deed - - Deegeeta - - Deeh - - Deekonus - - Deekum - - Deekus - - Deerkaza - - Deetum - - Demeepa - - Depasa - - Derkeethus - - Deroh - - Dezanu - - Dreet - - Drumarz - - Dum - - Dunaxith - - Effe - - Ei - - Eidu - - Eius - - Eiuus - - Eix - - Eleedal - - Er - - Esqoo - - Etaku - - Gah - - Gajul - - Gam - - Geeh - - Geel - - Geem - - Geh - - Gei - - Gih - - Gin - - Goh - - Gulum - - Haj - - Han - - Haran - - Hareeya - - Hathei - - Heedul - - Heem - - Hei - - Heir - - Hixeeh - - Huleeya - - Huzei - - Ilas - - Im - - Inee - - Itan - - J'Ram - - Ja - - Jah - - Jaraleet - - Jaree - - Jas - - Jasaiin - - Jaseen - - Jat - - Jee - - Jeela - - Jeelius - - Jeelus - - Jeen - - Jeer - - Jeetum - - Jei - - Jilux - - Jin - - Jon - - Jul - - Julan - - Junal - - Jush - - Juunei - - Kai - - Kajin - - Kamax - - Kas - - Keema - - Keer - - Keerasa - - Kepanuu - - Kia - - Kiameed - - Kilaya - - Kiurz - - Kur - - Kuz - - La - - Lah - - Lai - - Lan - - Lara - - Leem - - Lei - - Loh - - Lotash - - Luh - - Lurz - - Luteema - - Maahi - - Madesi - - Maheelius - - Mahei - - Maht - - Malz - - Marz - - Mathei - - Maxath - - Meej - - Meejapa - - Meensuda - - Meer - - Mema - - Mere - - Metaku - - Miharil - - Milos - - Miun - - Mobareed - - Mohimeem - - Mopakuz - - Motuu - - Mujeen - - Muranatepa - - Mush - - Muz - - Na - - Napetui - - Nazuux - - Nebutil - - Neeti - - Neetinei - - Neetrenaza - - Neetzara - - Neeus - - Nema - - Neposh - - Netapatuu - - Nexith - - Nodeeus - - Nomu - - Nosaleeth - - Nowajeem - - Noyei - - Nulaz - - Nur - - Obaxith - - Okan - - Okaw - - Okeeh - - Oleed - - Oleen - - Olik - - Olink - - Onuja - - Onurai - - Opatieel - - Otumeel - - Owai - - Pachat - - Pacheeva - - Pad - - Paduxi - - Pajeen - - Parash - - Peeradeeh - - Pejureel - - Petaxai - - Pideelus - - Pimaxi - - Pojeel - - Ra - - Radithax - - Raj - - Rareel - - Rasha - - Redieeus - - Ree - - Reeh - - Reemukeeus - - Reenum - - Reesa - - Reet - - Reezal - - Resari - - Riker - - Ru - - Rupah - - Sakeepa - - Sakeeus - - Sakka - - Saliith - - Sar - - Schiavas - - Seek - - Seewul - - Sei - - Sejaijilax - - Shakiis - - Shehs - - Shei - - Silm - - Skee - - Skeetul - - Sureeus - - Ta - - Taeed - - Tah - - Taleel - - Talen - - Tan - - Tanaka - - Tanan - - Tee - - Teeba - - Teegla - - Teeka - - Teekeeus - - Teemeeta - - Teeus - - Tehat - - Tei - - Teinaava - - Teineeja - - Terezeeus - - Tikaasi - - Tim - - Topeeth - - Topith - - Tsleeixth - - Tul - - Tulm - - Tun - - Ukatsei - - Ukawei - - Ula - - Ulawa - - Ullis - - Usha - - Usheeja - - Utadeek - - Utamukeeus - - Utatul - - Uxith - - Vara - - Veekas - - Veenaza - - Veezara - - Vistha - - Vudeelal - - Wanan - - Wanum - - Wayiteh - - Weebam - - Weeltul - - Weer - - Wih - - Wud - - Wuleen - - Wulm - - Wumeek - - Xal - - Xemo - - Yinz - - Yinz'r - - Zaw - - Ze - - Zeen - - Zeeus - - Zish + prefix: names-reptilian-male-dataset- + count: 328 diff --git a/Resources/Prototypes/Datasets/Names/skeleton_first.yml b/Resources/Prototypes/Datasets/Names/skeleton_first.yml index 80d335bd6d..1bfc248923 100644 --- a/Resources/Prototypes/Datasets/Names/skeleton_first.yml +++ b/Resources/Prototypes/Datasets/Names/skeleton_first.yml @@ -1,30 +1,5 @@ -- type: dataset - id: skeletonNamesFirst +- type: localizedDataset + id: NamesSkeletonFirst values: - - Sternum - - Ribs - - Vertebrae - - Sacrum - - Mandible - - Clavicle - - Scapula - - Humerus - - Radius - - Ulna - - Carpals - - Phalanges - - Pelvis - - Femur - - Tibia - - Fibula - - Marrow - - Tarsals - - Patella - - Tailbone - #- Boner # Delta V - Remove LRP skeleton name - - Rib - - Hyoid - - Coccyx - - Tarsus - - Lacrimal - - Bone + prefix: names-skeleton-first-dataset- + count: 27 diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index e0ba53e99c..054aeb497c 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -8,9 +8,9 @@ markingLimits: MobDionaMarkingLimits dollPrototype: MobDionaDummy skinColoration: Hues - maleFirstNames: DionaFirst - femaleFirstNames: DionaFirst - lastNames: DionaLast + maleFirstNames: NamesDionaFirst + femaleFirstNames: NamesDionaFirst + lastNames: NamesDionaLast naming: TheFirstofLast - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 22203fc0a8..150cab6a1d 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -8,9 +8,9 @@ markingLimits: MobMothMarkingLimits dollPrototype: MobMothDummy skinColoration: Hues - maleFirstNames: names_moth_first_male - femaleFirstNames: names_moth_first_female - lastNames: names_moth_last + maleFirstNames: NamesMothFirstMale + femaleFirstNames: NamesMothFirstFemale + lastNames: NamesMothLast - type: speciesBaseSprites id: MobMothSprites diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 1fea1a206e..3b070f3916 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -8,8 +8,8 @@ markingLimits: MobReptilianMarkingLimits dollPrototype: MobReptilianDummy skinColoration: Hues - maleFirstNames: names_reptilian_male - femaleFirstNames: names_reptilian_female + maleFirstNames: NamesReptilianMale + femaleFirstNames: NamesReptilianFemale naming: FirstDashFirst - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/skeleton.yml b/Resources/Prototypes/Species/skeleton.yml index 1f2a95e991..bbe2b6196f 100644 --- a/Resources/Prototypes/Species/skeleton.yml +++ b/Resources/Prototypes/Species/skeleton.yml @@ -6,8 +6,8 @@ sprites: MobSkeletonSprites defaultSkinTone: "#fff9e2" markingLimits: MobHumanMarkingLimits - maleFirstNames: skeletonNamesFirst - femaleFirstNames: skeletonNamesFirst + maleFirstNames: NamesSkeletonFirst + femaleFirstNames: NamesSkeletonFirst dollPrototype: MobSkeletonPersonDummy skinColoration: TintedHues From 11ced961bbaf136552ddf6e466ca31a2465a0a76 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:03:24 +0300 Subject: [PATCH 69/91] [Part of #32893] Localize vox dataset names (#33396) * Localize vox names * Correct prototype id to follow naming conventions * Upstream names --- Resources/Locale/en-US/datasets/names/vox.ftl | 2761 ++++++++++++++++ Resources/Prototypes/Datasets/Names/vox.yml | 2767 +---------------- Resources/Prototypes/Species/vox.yml | 4 +- 3 files changed, 2767 insertions(+), 2765 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/vox.ftl diff --git a/Resources/Locale/en-US/datasets/names/vox.ftl b/Resources/Locale/en-US/datasets/names/vox.ftl new file mode 100644 index 0000000000..3377bcf573 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/vox.ftl @@ -0,0 +1,2761 @@ +names-vox-dataset-1 = Babapir +names-vox-dataset-2 = Babasri +names-vox-dataset-3 = Babepipit +names-vox-dataset-4 = Bachakehi +names-vox-dataset-5 = Bacheska +names-vox-dataset-6 = Bachishesher +names-vox-dataset-7 = Bacrapri +names-vox-dataset-8 = Bacreska +names-vox-dataset-9 = Bahepra +names-vox-dataset-10 = Bahicrecrek +names-vox-dataset-11 = Bahikravre +names-vox-dataset-12 = Bakabepa +names-vox-dataset-13 = Bakehahak +names-vox-dataset-14 = Bakeki +names-vox-dataset-15 = Bapechichik +names-vox-dataset-16 = Bapekikik +names-vox-dataset-17 = Baperi +names-vox-dataset-18 = Bapravavar +names-vox-dataset-19 = Bapreba +names-vox-dataset-20 = Bapretritrir +names-vox-dataset-21 = Baracreber +names-vox-dataset-22 = Barahri +names-vox-dataset-23 = Baraskahrita +names-vox-dataset-24 = Baraxixik +names-vox-dataset-25 = Bashiskir +names-vox-dataset-26 = Baskaskakre +names-vox-dataset-27 = Baskivihi +names-vox-dataset-28 = Basreba +names-vox-dataset-29 = Batapriri +names-vox-dataset-30 = Batasrecrar +names-vox-dataset-31 = Batehrahrat +names-vox-dataset-32 = Batrakiha +names-vox-dataset-33 = Batravika +names-vox-dataset-34 = Batrepriski +names-vox-dataset-35 = Batresri +names-vox-dataset-36 = Batriska +names-vox-dataset-37 = Batritra +names-vox-dataset-38 = Bavasha +names-vox-dataset-39 = Bavebebek +names-vox-dataset-40 = Bavraskikaka +names-vox-dataset-41 = Bavricriski +names-vox-dataset-42 = Baxahehrer +names-vox-dataset-43 = Baxeve +names-vox-dataset-44 = Bebebapa +names-vox-dataset-45 = Bebeterara +names-vox-dataset-46 = Bebipaska +names-vox-dataset-47 = Bechetapeka +names-vox-dataset-48 = Becrerisre +names-vox-dataset-49 = Becretretrer +names-vox-dataset-50 = Beheka +names-vox-dataset-51 = Behivresha +names-vox-dataset-52 = Behrechechek +names-vox-dataset-53 = Behrekri +names-vox-dataset-54 = Behreyayat +names-vox-dataset-55 = Behricririri +names-vox-dataset-56 = Behritixaxa +names-vox-dataset-57 = Bekapesresre +names-vox-dataset-58 = Bekashishik +names-vox-dataset-59 = Beketatratra +names-vox-dataset-60 = Bekrechaxe +names-vox-dataset-61 = Bekresrare +names-vox-dataset-62 = Bekribe +names-vox-dataset-63 = Bepararakrit +names-vox-dataset-64 = Bepatricher +names-vox-dataset-65 = Bepehisrepra +names-vox-dataset-66 = Bepihar +names-vox-dataset-67 = Bepitrashi +names-vox-dataset-68 = Bepresri +names-vox-dataset-69 = Berabi +names-vox-dataset-70 = Beraka +names-vox-dataset-71 = Berecricrir +names-vox-dataset-72 = Berisre +names-vox-dataset-73 = Beshachari +names-vox-dataset-74 = Besheskexexe +names-vox-dataset-75 = Beshesre +names-vox-dataset-76 = Beshesretre +names-vox-dataset-77 = Beskayavrer +names-vox-dataset-78 = Beskisrasrak +names-vox-dataset-79 = Beskitre +names-vox-dataset-80 = Besravivit +names-vox-dataset-81 = Besrivir +names-vox-dataset-82 = Betababatrat +names-vox-dataset-83 = Betere +names-vox-dataset-84 = Beticreche +names-vox-dataset-85 = Bevekakat +names-vox-dataset-86 = Bevihichabi +names-vox-dataset-87 = Bevihraki +names-vox-dataset-88 = Bevrasheshet +names-vox-dataset-89 = Bibaba +names-vox-dataset-90 = Bibabir +names-vox-dataset-91 = Bibati +names-vox-dataset-92 = Bibekricha +names-vox-dataset-93 = Bibexa +names-vox-dataset-94 = Bibibabat +names-vox-dataset-95 = Bibiya +names-vox-dataset-96 = Bichechir +names-vox-dataset-97 = Bicrakipepe +names-vox-dataset-98 = Bicrevrite +names-vox-dataset-99 = Bihrapivra +names-vox-dataset-100 = Bihraxibebe +names-vox-dataset-101 = Bihrishicha +names-vox-dataset-102 = Bihrivriski +names-vox-dataset-103 = Bikivri +names-vox-dataset-104 = Bikraskixexe +names-vox-dataset-105 = Bikrivrivrit +names-vox-dataset-106 = Bipekisri +names-vox-dataset-107 = Bipiritecre +names-vox-dataset-108 = Bipratraxi +names-vox-dataset-109 = Biprexi +names-vox-dataset-110 = Biprivar +names-vox-dataset-111 = Birachi +names-vox-dataset-112 = Bisheba +names-vox-dataset-113 = Bishehri +names-vox-dataset-114 = Bishevrivra +names-vox-dataset-115 = Bishiki +names-vox-dataset-116 = Biskeskavra +names-vox-dataset-117 = Bisrahresha +names-vox-dataset-118 = Bisrepipit +names-vox-dataset-119 = Bitavi +names-vox-dataset-120 = Bitehatiti +names-vox-dataset-121 = Bivacri +names-vox-dataset-122 = Bivape +names-vox-dataset-123 = Bivihachakre +names-vox-dataset-124 = Bivitikiva +names-vox-dataset-125 = Bivrapri +names-vox-dataset-126 = Bivraske +names-vox-dataset-127 = Bivrehaski +names-vox-dataset-128 = Bivrihra +names-vox-dataset-129 = Bixachetra +names-vox-dataset-130 = Bixapetra +names-vox-dataset-131 = Bixapriprik +names-vox-dataset-132 = Bixexir +names-vox-dataset-133 = Biyakir +names-vox-dataset-134 = Chabaha +names-vox-dataset-135 = Chabakrekrer +names-vox-dataset-136 = Chabebache +names-vox-dataset-137 = Chabepebe +names-vox-dataset-138 = Chabikrahihi +names-vox-dataset-139 = Chachahe +names-vox-dataset-140 = Chachevra +names-vox-dataset-141 = Chacrerehra +names-vox-dataset-142 = Chahekre +names-vox-dataset-143 = Chahixe +names-vox-dataset-144 = Chahravrer +names-vox-dataset-145 = Chahrixehra +names-vox-dataset-146 = Chakakiva +names-vox-dataset-147 = Chakapraprar +names-vox-dataset-148 = Chakehashe +names-vox-dataset-149 = Chakiprihi +names-vox-dataset-150 = Chakivre +names-vox-dataset-151 = Chakricrivi +names-vox-dataset-152 = Chapachichit +names-vox-dataset-153 = Chaparachi +names-vox-dataset-154 = Chapehresha +names-vox-dataset-155 = Chapeshiski +names-vox-dataset-156 = Chapixahi +names-vox-dataset-157 = Chaprahebibi +names-vox-dataset-158 = Chaprecraha +names-vox-dataset-159 = Chaprecrevi +names-vox-dataset-160 = Charaprehiki +names-vox-dataset-161 = Charapriska +names-vox-dataset-162 = Charara +names-vox-dataset-163 = Charate +names-vox-dataset-164 = Charatraki +names-vox-dataset-165 = Charekreski +names-vox-dataset-166 = Charesribe +names-vox-dataset-167 = Charichechet +names-vox-dataset-168 = Charisha +names-vox-dataset-169 = Chashaber +names-vox-dataset-170 = Chashereska +names-vox-dataset-171 = Chaskeke +names-vox-dataset-172 = Chasraskaska +names-vox-dataset-173 = Chasrechata +names-vox-dataset-174 = Chasrevravi +names-vox-dataset-175 = Chasrihiprer +names-vox-dataset-176 = Chatrexixe +names-vox-dataset-177 = Chavicreshi +names-vox-dataset-178 = Chavrikre +names-vox-dataset-179 = Chaxakrahehe +names-vox-dataset-180 = Chaxeskehre +names-vox-dataset-181 = Chaxevrahi +names-vox-dataset-182 = Chaxivre +names-vox-dataset-183 = Chebabebet +names-vox-dataset-184 = Chebavi +names-vox-dataset-185 = Chebebibivar +names-vox-dataset-186 = Chebehecri +names-vox-dataset-187 = Chebehrihrit +names-vox-dataset-188 = Chebihihit +names-vox-dataset-189 = Chebiretete +names-vox-dataset-190 = Chebisra +names-vox-dataset-191 = Chechapraver +names-vox-dataset-192 = Checraxa +names-vox-dataset-193 = Checrera +names-vox-dataset-194 = Checretasre +names-vox-dataset-195 = Checretrisre +names-vox-dataset-196 = Checrisre +names-vox-dataset-197 = Chehashababa +names-vox-dataset-198 = Chehebicri +names-vox-dataset-199 = Chehepre +names-vox-dataset-200 = Chehisker +names-vox-dataset-201 = Chehraxashir +names-vox-dataset-202 = Chekrahraka +names-vox-dataset-203 = Chekravixa +names-vox-dataset-204 = Chekretitit +names-vox-dataset-205 = Chepakakatat +names-vox-dataset-206 = Chepekakak +names-vox-dataset-207 = Chepipracra +names-vox-dataset-208 = Chepitipe +names-vox-dataset-209 = Chepraskavri +names-vox-dataset-210 = Cheshirikra +names-vox-dataset-211 = Cheshive +names-vox-dataset-212 = Cheskapra +names-vox-dataset-213 = Cheskavre +names-vox-dataset-214 = Chesrakeyaya +names-vox-dataset-215 = Chesravre +names-vox-dataset-216 = Chesrevi +names-vox-dataset-217 = Chesrevratra +names-vox-dataset-218 = Chesrirititi +names-vox-dataset-219 = Chetaxapa +names-vox-dataset-220 = Chetaxapre +names-vox-dataset-221 = Cheterarat +names-vox-dataset-222 = Chetiska +names-vox-dataset-223 = Chetritreti +names-vox-dataset-224 = Chetriya +names-vox-dataset-225 = Chevasrasrak +names-vox-dataset-226 = Chevrepre +names-vox-dataset-227 = Chevrivir +names-vox-dataset-228 = Chexararahir +names-vox-dataset-229 = Chexecraski +names-vox-dataset-230 = Chexepraprar +names-vox-dataset-231 = Chexexaxapa +names-vox-dataset-232 = Chexisreka +names-vox-dataset-233 = Chexitre +names-vox-dataset-234 = Cheyaverere +names-vox-dataset-235 = Chibakre +names-vox-dataset-236 = Chibihra +names-vox-dataset-237 = Chichabikaka +names-vox-dataset-238 = Chichavrehre +names-vox-dataset-239 = Chicrikishi +names-vox-dataset-240 = Chicrirake +names-vox-dataset-241 = Chicrivivit +names-vox-dataset-242 = Chihahrehrek +names-vox-dataset-243 = Chihasre +names-vox-dataset-244 = Chihatrachi +names-vox-dataset-245 = Chihayayabik +names-vox-dataset-246 = Chiheche +names-vox-dataset-247 = Chihehreba +names-vox-dataset-248 = Chihreratri +names-vox-dataset-249 = Chihriveka +names-vox-dataset-250 = Chikakre +names-vox-dataset-251 = Chikaskitre +names-vox-dataset-252 = Chikate +names-vox-dataset-253 = Chikiprecri +names-vox-dataset-254 = Chikraki +names-vox-dataset-255 = Chikraskiska +names-vox-dataset-256 = Chikrekra +names-vox-dataset-257 = Chikrekre +names-vox-dataset-258 = Chipabeske +names-vox-dataset-259 = Chipererer +names-vox-dataset-260 = Chipicracrak +names-vox-dataset-261 = Chiprexexet +names-vox-dataset-262 = Chipriprisre +names-vox-dataset-263 = Chiprivrecha +names-vox-dataset-264 = Chishakepi +names-vox-dataset-265 = Chishipepri +names-vox-dataset-266 = Chisrashi +names-vox-dataset-267 = Chisretri +names-vox-dataset-268 = Chisriher +names-vox-dataset-269 = Chisriva +names-vox-dataset-270 = Chisrivevri +names-vox-dataset-271 = Chitisrevre +names-vox-dataset-272 = Chitixahra +names-vox-dataset-273 = Chitrechicra +names-vox-dataset-274 = Chitresravri +names-vox-dataset-275 = Chivechachat +names-vox-dataset-276 = Chiveprepret +names-vox-dataset-277 = Chiveprikri +names-vox-dataset-278 = Chiviki +names-vox-dataset-279 = Chivikiya +names-vox-dataset-280 = Chivishir +names-vox-dataset-281 = Chivrakakak +names-vox-dataset-282 = Chivrakri +names-vox-dataset-283 = Chivrasher +names-vox-dataset-284 = Chivrepapar +names-vox-dataset-285 = Chixacra +names-vox-dataset-286 = Chixihebakra +names-vox-dataset-287 = Crabecrapapa +names-vox-dataset-288 = Crachikrisre +names-vox-dataset-289 = Cracrahravri +names-vox-dataset-290 = Cracratiya +names-vox-dataset-291 = Cracretipi +names-vox-dataset-292 = Cracrihe +names-vox-dataset-293 = Cracritri +names-vox-dataset-294 = Crahayayak +names-vox-dataset-295 = Craheki +names-vox-dataset-296 = Crahrashi +names-vox-dataset-297 = Crahrehi +names-vox-dataset-298 = Crahretetek +names-vox-dataset-299 = Crakapeper +names-vox-dataset-300 = Crakaskeba +names-vox-dataset-301 = Crakavravrat +names-vox-dataset-302 = Crakehri +names-vox-dataset-303 = Crakirer +names-vox-dataset-304 = Crakrashiski +names-vox-dataset-305 = Crakrehra +names-vox-dataset-306 = Crakriskipir +names-vox-dataset-307 = Crapipaka +names-vox-dataset-308 = Crapiriyaya +names-vox-dataset-309 = Craprati +names-vox-dataset-310 = Crapresker +names-vox-dataset-311 = Craresraxe +names-vox-dataset-312 = Crarevexa +names-vox-dataset-313 = Crashahresri +names-vox-dataset-314 = Crashehihik +names-vox-dataset-315 = Craskahraske +names-vox-dataset-316 = Craskatrapra +names-vox-dataset-317 = Craskicrete +names-vox-dataset-318 = Craskivi +names-vox-dataset-319 = Cratatrihi +names-vox-dataset-320 = Cratikre +names-vox-dataset-321 = Cratikrekrek +names-vox-dataset-322 = Cratiprar +names-vox-dataset-323 = Cratrehra +names-vox-dataset-324 = Cravehri +names-vox-dataset-325 = Cravrikra +names-vox-dataset-326 = Cravrisrere +names-vox-dataset-327 = Cravritiriri +names-vox-dataset-328 = Cravriyayak +names-vox-dataset-329 = Crayahrehret +names-vox-dataset-330 = Crayakrer +names-vox-dataset-331 = Crayapraprar +names-vox-dataset-332 = Crayaripipi +names-vox-dataset-333 = Crayayaricri +names-vox-dataset-334 = Crebaxa +names-vox-dataset-335 = Crebehrita +names-vox-dataset-336 = Crechavre +names-vox-dataset-337 = Crechesrehar +names-vox-dataset-338 = Crechichevre +names-vox-dataset-339 = Crecrabibik +names-vox-dataset-340 = Crecriri +names-vox-dataset-341 = Crehepapepe +names-vox-dataset-342 = Creheriki +names-vox-dataset-343 = Crehexi +names-vox-dataset-344 = Crehipavava +names-vox-dataset-345 = Crehraver +names-vox-dataset-346 = Crekatri +names-vox-dataset-347 = Crekavexa +names-vox-dataset-348 = Crekeki +names-vox-dataset-349 = Creketri +names-vox-dataset-350 = Crekiskeya +names-vox-dataset-351 = Crekitati +names-vox-dataset-352 = Crekrepreki +names-vox-dataset-353 = Crekrivavak +names-vox-dataset-354 = Crepahripa +names-vox-dataset-355 = Crepekecre +names-vox-dataset-356 = Crepekrekret +names-vox-dataset-357 = Crepiba +names-vox-dataset-358 = Crepihri +names-vox-dataset-359 = Creprepravri +names-vox-dataset-360 = Creraxi +names-vox-dataset-361 = Crerehihit +names-vox-dataset-362 = Creshekrapa +names-vox-dataset-363 = Creskekri +names-vox-dataset-364 = Cresketita +names-vox-dataset-365 = Creskihre +names-vox-dataset-366 = Cresripepet +names-vox-dataset-367 = Cretarevripa +names-vox-dataset-368 = Cretebe +names-vox-dataset-369 = Cretehra +names-vox-dataset-370 = Creterarar +names-vox-dataset-371 = Cretibehihi +names-vox-dataset-372 = Cretrapi +names-vox-dataset-373 = Cretrekerara +names-vox-dataset-374 = Cretrepepet +names-vox-dataset-375 = Crevapir +names-vox-dataset-376 = Crevixesra +names-vox-dataset-377 = Crexahava +names-vox-dataset-378 = Crexepapacre +names-vox-dataset-379 = Cribavribibi +names-vox-dataset-380 = Cribitratrat +names-vox-dataset-381 = Crichecrite +names-vox-dataset-382 = Crichipi +names-vox-dataset-383 = Cricraprehre +names-vox-dataset-384 = Cricrirar +names-vox-dataset-385 = Cricrisre +names-vox-dataset-386 = Cricritika +names-vox-dataset-387 = Crihevar +names-vox-dataset-388 = Crihitehre +names-vox-dataset-389 = Crikatrikre +names-vox-dataset-390 = Crikebepapa +names-vox-dataset-391 = Crikekakat +names-vox-dataset-392 = Crikeshivra +names-vox-dataset-393 = Crikisheski +names-vox-dataset-394 = Crikrahrata +names-vox-dataset-395 = Crikretevabi +names-vox-dataset-396 = Crikricretri +names-vox-dataset-397 = Cripichahi +names-vox-dataset-398 = Criprishapa +names-vox-dataset-399 = Crirachi +names-vox-dataset-400 = Crirakratra +names-vox-dataset-401 = Crishave +names-vox-dataset-402 = Criskahe +names-vox-dataset-403 = Crisrehapahi +names-vox-dataset-404 = Critachatri +names-vox-dataset-405 = Critrabibir +names-vox-dataset-406 = Critresrir +names-vox-dataset-407 = Critrikracri +names-vox-dataset-408 = Crivacriti +names-vox-dataset-409 = Crivacrive +names-vox-dataset-410 = Crivayasra +names-vox-dataset-411 = Crivrakre +names-vox-dataset-412 = Crivrecri +names-vox-dataset-413 = Crixixaske +names-vox-dataset-414 = Habavavak +names-vox-dataset-415 = Habepa +names-vox-dataset-416 = Habikikaka +names-vox-dataset-417 = Habikrihita +names-vox-dataset-418 = Hachabe +names-vox-dataset-419 = Hachehekre +names-vox-dataset-420 = Hacheske +names-vox-dataset-421 = Hacreha +names-vox-dataset-422 = Hacrere +names-vox-dataset-423 = Hahebapapa +names-vox-dataset-424 = Hahecrecha +names-vox-dataset-425 = Haheha +names-vox-dataset-426 = Hahetasrike +names-vox-dataset-427 = Hahihahatrar +names-vox-dataset-428 = Hahihasreche +names-vox-dataset-429 = Hahripraxaxa +names-vox-dataset-430 = Hakepa +names-vox-dataset-431 = Hakirer +names-vox-dataset-432 = Hakraxixit +names-vox-dataset-433 = Hakrekikik +names-vox-dataset-434 = Hakrixexeret +names-vox-dataset-435 = Hapacharepri +names-vox-dataset-436 = Hapacre +names-vox-dataset-437 = Hapahri +names-vox-dataset-438 = Hapeti +names-vox-dataset-439 = Hapitahri +names-vox-dataset-440 = Hapreska +names-vox-dataset-441 = Haprihrisha +names-vox-dataset-442 = Harebabi +names-vox-dataset-443 = Harexiveve +names-vox-dataset-444 = Haricracre +names-vox-dataset-445 = Haririsheska +names-vox-dataset-446 = Harishi +names-vox-dataset-447 = Hashakrakrak +names-vox-dataset-448 = Hashehracri +names-vox-dataset-449 = Hashepracha +names-vox-dataset-450 = Haskaritepra +names-vox-dataset-451 = Hasketer +names-vox-dataset-452 = Haskibebeyat +names-vox-dataset-453 = Haskikretete +names-vox-dataset-454 = Hasrabake +names-vox-dataset-455 = Hasracritehe +names-vox-dataset-456 = Hasrekitra +names-vox-dataset-457 = Hasrekrer +names-vox-dataset-458 = Hasrihaxa +names-vox-dataset-459 = Hasripeshar +names-vox-dataset-460 = Hatabibivet +names-vox-dataset-461 = Havavresra +names-vox-dataset-462 = Havixe +names-vox-dataset-463 = Havreki +names-vox-dataset-464 = Havrepekre +names-vox-dataset-465 = Havretri +names-vox-dataset-466 = Havrichatata +names-vox-dataset-467 = Haxikeker +names-vox-dataset-468 = Hayahriyaxa +names-vox-dataset-469 = Hebahrevrir +names-vox-dataset-470 = Hebapri +names-vox-dataset-471 = Hebihihichit +names-vox-dataset-472 = Hebikratahe +names-vox-dataset-473 = Hecheshehixi +names-vox-dataset-474 = Hechetra +names-vox-dataset-475 = Hechevakrer +names-vox-dataset-476 = Hecraba +names-vox-dataset-477 = Hecrabi +names-vox-dataset-478 = Hecrevrivrik +names-vox-dataset-479 = Hecrirecha +names-vox-dataset-480 = Hehere +names-vox-dataset-481 = Hehiskitri +names-vox-dataset-482 = Hehrapike +names-vox-dataset-483 = Hehrepri +names-vox-dataset-484 = Hehreskaskat +names-vox-dataset-485 = Hehrikra +names-vox-dataset-486 = Hekikrexa +names-vox-dataset-487 = Hekrasre +names-vox-dataset-488 = Hekrekicre +names-vox-dataset-489 = Hekreracre +names-vox-dataset-490 = Hekriheti +names-vox-dataset-491 = Hepevivikrik +names-vox-dataset-492 = Hepraskibebe +names-vox-dataset-493 = Heprivresker +names-vox-dataset-494 = Heprixasheri +names-vox-dataset-495 = Herecrerivi +names-vox-dataset-496 = Hereririket +names-vox-dataset-497 = Heriheyacri +names-vox-dataset-498 = Heripa +names-vox-dataset-499 = Heripreka +names-vox-dataset-500 = Heshahraveti +names-vox-dataset-501 = Heshepepevik +names-vox-dataset-502 = Heskashachi +names-vox-dataset-503 = Heskaxixe +names-vox-dataset-504 = Heskererepet +names-vox-dataset-505 = Heskeshishit +names-vox-dataset-506 = Heskisker +names-vox-dataset-507 = Hesrepahri +names-vox-dataset-508 = Hesreski +names-vox-dataset-509 = Hetahetritri +names-vox-dataset-510 = Hetiheheprit +names-vox-dataset-511 = Hetrare +names-vox-dataset-512 = Hetrevihra +names-vox-dataset-513 = Hetrihahri +names-vox-dataset-514 = Hetrirebibi +names-vox-dataset-515 = Hevababaker +names-vox-dataset-516 = Hevetihre +names-vox-dataset-517 = Hevexixik +names-vox-dataset-518 = Heviricrecre +names-vox-dataset-519 = Hevrevipa +names-vox-dataset-520 = Hevrexir +names-vox-dataset-521 = Hevrichar +names-vox-dataset-522 = Hevriraravit +names-vox-dataset-523 = Hevrivrivre +names-vox-dataset-524 = Hexasrichi +names-vox-dataset-525 = Hexaxipri +names-vox-dataset-526 = Heyashipre +names-vox-dataset-527 = Hibasher +names-vox-dataset-528 = Hiberarakrar +names-vox-dataset-529 = Hibesrache +names-vox-dataset-530 = Hicrapre +names-vox-dataset-531 = Hicrecrahera +names-vox-dataset-532 = Hicreteba +names-vox-dataset-533 = Hicriba +names-vox-dataset-534 = Hihacha +names-vox-dataset-535 = Hihepapak +names-vox-dataset-536 = Hihichitre +names-vox-dataset-537 = Hihireret +names-vox-dataset-538 = Hihrevra +names-vox-dataset-539 = Hikikri +names-vox-dataset-540 = Hikitritrir +names-vox-dataset-541 = Hikrakre +names-vox-dataset-542 = Hikrepa +names-vox-dataset-543 = Hipavi +names-vox-dataset-544 = Hipitratrak +names-vox-dataset-545 = Hirepabe +names-vox-dataset-546 = Hirichachar +names-vox-dataset-547 = Hiricheya +names-vox-dataset-548 = Hiricrabakri +names-vox-dataset-549 = Hiricraske +names-vox-dataset-550 = Hiricrevitri +names-vox-dataset-551 = Hirihrachi +names-vox-dataset-552 = Hirihraski +names-vox-dataset-553 = Hirihraxaxat +names-vox-dataset-554 = Hirikachi +names-vox-dataset-555 = Hirikretetet +names-vox-dataset-556 = Hirikrikra +names-vox-dataset-557 = Hiripebahre +names-vox-dataset-558 = Hiripehixixi +names-vox-dataset-559 = Hiriper +names-vox-dataset-560 = Hiripesri +names-vox-dataset-561 = Hiripeta +names-vox-dataset-562 = Hiripevivik +names-vox-dataset-563 = Hirirahehet +names-vox-dataset-564 = Hirirecrevre +names-vox-dataset-565 = Hirishihra +names-vox-dataset-566 = Hiriskeva +names-vox-dataset-567 = Hiritapatiti +names-vox-dataset-568 = Hiriteker +names-vox-dataset-569 = Hiritrari +names-vox-dataset-570 = Hiritraxe +names-vox-dataset-571 = Hiritricri +names-vox-dataset-572 = Hirivavavri +names-vox-dataset-573 = Hiriviske +names-vox-dataset-574 = Hirivivre +names-vox-dataset-575 = Hirivra +names-vox-dataset-576 = Hirivrari +names-vox-dataset-577 = Hirivrexita +names-vox-dataset-578 = Hirivrivri +names-vox-dataset-579 = Hirixashahre +names-vox-dataset-580 = Hirixicraya +names-vox-dataset-581 = Hishave +names-vox-dataset-582 = Hishesritra +names-vox-dataset-583 = Hishiskahra +names-vox-dataset-584 = Hishivrevrek +names-vox-dataset-585 = Hiskakecra +names-vox-dataset-586 = Hiskatetek +names-vox-dataset-587 = Hiskekreche +names-vox-dataset-588 = Hiskeva +names-vox-dataset-589 = Hiskisrare +names-vox-dataset-590 = Hisrakikit +names-vox-dataset-591 = Hisratrepepe +names-vox-dataset-592 = Hitava +names-vox-dataset-593 = Hiterehaha +names-vox-dataset-594 = Hitratra +names-vox-dataset-595 = Hivacracrat +names-vox-dataset-596 = Hivatritrik +names-vox-dataset-597 = Hivayayar +names-vox-dataset-598 = Hivrababar +names-vox-dataset-599 = Hivrahrir +names-vox-dataset-600 = Hixacre +names-vox-dataset-601 = Hixashape +names-vox-dataset-602 = Hixashetiti +names-vox-dataset-603 = Hixekrasra +names-vox-dataset-604 = Hixepi +names-vox-dataset-605 = Hixeripe +names-vox-dataset-606 = Hiyacrakra +names-vox-dataset-607 = Hrabatitit +names-vox-dataset-608 = Hrabaxa +names-vox-dataset-609 = Hrabike +names-vox-dataset-610 = Hrabipre +names-vox-dataset-611 = Hracrabixi +names-vox-dataset-612 = Hracrehra +names-vox-dataset-613 = Hrahepivivi +names-vox-dataset-614 = Hraherikrexi +names-vox-dataset-615 = Hrahikrer +names-vox-dataset-616 = Hrahrakahre +names-vox-dataset-617 = Hrahraska +names-vox-dataset-618 = Hrahrasrebe +names-vox-dataset-619 = Hrahrehehek +names-vox-dataset-620 = Hrahritra +names-vox-dataset-621 = Hrakachabexi +names-vox-dataset-622 = Hrakarerek +names-vox-dataset-623 = Hrakeshi +names-vox-dataset-624 = Hrakiski +names-vox-dataset-625 = Hrakretri +names-vox-dataset-626 = Hrakrichapri +names-vox-dataset-627 = Hrakrishi +names-vox-dataset-628 = Hrapavevek +names-vox-dataset-629 = Hrapicra +names-vox-dataset-630 = Hrapraber +names-vox-dataset-631 = Hraprapreche +names-vox-dataset-632 = Hrarachihi +names-vox-dataset-633 = Hrarahrahrar +names-vox-dataset-634 = Hrarecri +names-vox-dataset-635 = Hrarikrixabi +names-vox-dataset-636 = Hrarishesher +names-vox-dataset-637 = Hrashepa +names-vox-dataset-638 = Hrashibisra +names-vox-dataset-639 = Hrashihir +names-vox-dataset-640 = Hrashikavexa +names-vox-dataset-641 = Hrasketre +names-vox-dataset-642 = Hraskibe +names-vox-dataset-643 = Hraskikexaxa +names-vox-dataset-644 = Hrasrecrixi +names-vox-dataset-645 = Hrasrevraxi +names-vox-dataset-646 = Hrasrevrehra +names-vox-dataset-647 = Hratatrasre +names-vox-dataset-648 = Hratayati +names-vox-dataset-649 = Hratere +names-vox-dataset-650 = Hratrachari +names-vox-dataset-651 = Hratreki +names-vox-dataset-652 = Hravahiche +names-vox-dataset-653 = Hravapeki +names-vox-dataset-654 = Hravaskeki +names-vox-dataset-655 = Hraveska +names-vox-dataset-656 = Hravihre +names-vox-dataset-657 = Hravrahaheya +names-vox-dataset-658 = Hravrekra +names-vox-dataset-659 = Hraxehrehiri +names-vox-dataset-660 = Hraxekrebe +names-vox-dataset-661 = Hraxichebar +names-vox-dataset-662 = Hraxivivivet +names-vox-dataset-663 = Hrayacha +names-vox-dataset-664 = Hrayavrar +names-vox-dataset-665 = Hrebavihra +names-vox-dataset-666 = Hrebetra +names-vox-dataset-667 = Hrechaxer +names-vox-dataset-668 = Hrecreti +names-vox-dataset-669 = Hrecrihahar +names-vox-dataset-670 = Hrehikrekrer +names-vox-dataset-671 = Hrehresra +names-vox-dataset-672 = Hreketra +names-vox-dataset-673 = Hrekrativi +names-vox-dataset-674 = Hrepihepre +names-vox-dataset-675 = Hrepipake +names-vox-dataset-676 = Hrerasri +names-vox-dataset-677 = Hreravexe +names-vox-dataset-678 = Hrereprehir +names-vox-dataset-679 = Hreriba +names-vox-dataset-680 = Hreshahetiti +names-vox-dataset-681 = Hreshehakake +names-vox-dataset-682 = Hreskapahre +names-vox-dataset-683 = Hresrakakre +names-vox-dataset-684 = Hresrechike +names-vox-dataset-685 = Hresrekasha +names-vox-dataset-686 = Hretite +names-vox-dataset-687 = Hretrecre +names-vox-dataset-688 = Hretreski +names-vox-dataset-689 = Hretrevri +names-vox-dataset-690 = Hrevrehe +names-vox-dataset-691 = Hrexakekek +names-vox-dataset-692 = Hrexatika +names-vox-dataset-693 = Hrexebe +names-vox-dataset-694 = Hribahar +names-vox-dataset-695 = Hribehrati +names-vox-dataset-696 = Hribipe +names-vox-dataset-697 = Hrichiski +names-vox-dataset-698 = Hrihevrivrir +names-vox-dataset-699 = Hrihitra +names-vox-dataset-700 = Hrihrakihri +names-vox-dataset-701 = Hrihrechar +names-vox-dataset-702 = Hrikichecra +names-vox-dataset-703 = Hrikiskate +names-vox-dataset-704 = Hripricrahra +names-vox-dataset-705 = Hrirehrikra +names-vox-dataset-706 = Hriresri +names-vox-dataset-707 = Hrishabar +names-vox-dataset-708 = Hrishaxeyar +names-vox-dataset-709 = Hrishehrahi +names-vox-dataset-710 = Hrishexixik +names-vox-dataset-711 = Hrisheyakra +names-vox-dataset-712 = Hrishipete +names-vox-dataset-713 = Hriskacrecra +names-vox-dataset-714 = Hriskaheba +names-vox-dataset-715 = Hriskari +names-vox-dataset-716 = Hriskevetabi +names-vox-dataset-717 = Hriskexa +names-vox-dataset-718 = Hriskihete +names-vox-dataset-719 = Hriskihri +names-vox-dataset-720 = Hrisrechi +names-vox-dataset-721 = Hrisrera +names-vox-dataset-722 = Hrisriri +names-vox-dataset-723 = Hrisrishapa +names-vox-dataset-724 = Hrisrivavar +names-vox-dataset-725 = Hritachecri +names-vox-dataset-726 = Hritexa +names-vox-dataset-727 = Hritihihri +names-vox-dataset-728 = Hritihra +names-vox-dataset-729 = Hritiker +names-vox-dataset-730 = Hritisrasrat +names-vox-dataset-731 = Hrivaxa +names-vox-dataset-732 = Hrivripira +names-vox-dataset-733 = Hrixebabatir +names-vox-dataset-734 = Hrixebi +names-vox-dataset-735 = Hrixihri +names-vox-dataset-736 = Hrixiva +names-vox-dataset-737 = Hriyahriya +names-vox-dataset-738 = Kabavi +names-vox-dataset-739 = Kabaxesha +names-vox-dataset-740 = Kachaske +names-vox-dataset-741 = Kachaya +names-vox-dataset-742 = Kachihe +names-vox-dataset-743 = Kacrahesha +names-vox-dataset-744 = Kahakichi +names-vox-dataset-745 = Kahaxipa +names-vox-dataset-746 = Kahepapatret +names-vox-dataset-747 = Kahiki +names-vox-dataset-748 = Kahishe +names-vox-dataset-749 = Kahrakrekret +names-vox-dataset-750 = Kahratrer +names-vox-dataset-751 = Kahriche +names-vox-dataset-752 = Kahricrikra +names-vox-dataset-753 = Kakatahrare +names-vox-dataset-754 = Kakebi +names-vox-dataset-755 = Kakihrasri +names-vox-dataset-756 = Kapakriska +names-vox-dataset-757 = Kapracre +names-vox-dataset-758 = Kaprashesher +names-vox-dataset-759 = Kaprehrakaka +names-vox-dataset-760 = Kapreri +names-vox-dataset-761 = Karakahre +names-vox-dataset-762 = Karapihehe +names-vox-dataset-763 = Kashaya +names-vox-dataset-764 = Kashipri +names-vox-dataset-765 = Kaskachekeke +names-vox-dataset-766 = Kaskivrer +names-vox-dataset-767 = Kasrabacre +names-vox-dataset-768 = Kasrakapre +names-vox-dataset-769 = Kasraxar +names-vox-dataset-770 = Kasresreyaya +names-vox-dataset-771 = Kasrivrata +names-vox-dataset-772 = Katasker +names-vox-dataset-773 = Katehreyaya +names-vox-dataset-774 = Katetrike +names-vox-dataset-775 = Katexaxak +names-vox-dataset-776 = Katrehre +names-vox-dataset-777 = Kavababat +names-vox-dataset-778 = Kavashishit +names-vox-dataset-779 = Kavihrahrat +names-vox-dataset-780 = Kavitratrak +names-vox-dataset-781 = Kavratevriya +names-vox-dataset-782 = Kaxecri +names-vox-dataset-783 = Kaxetavre +names-vox-dataset-784 = Kaxetretret +names-vox-dataset-785 = Kayararat +names-vox-dataset-786 = Kayavrivrik +names-vox-dataset-787 = Kayaxi +names-vox-dataset-788 = Kebasrevikri +names-vox-dataset-789 = Kechatra +names-vox-dataset-790 = Kechavrepri +names-vox-dataset-791 = Kecresra +names-vox-dataset-792 = Kecrevrir +names-vox-dataset-793 = Kecriha +names-vox-dataset-794 = Kecrikra +names-vox-dataset-795 = Kecrixa +names-vox-dataset-796 = Kehave +names-vox-dataset-797 = Kehitichacha +names-vox-dataset-798 = Kehivehrihri +names-vox-dataset-799 = Kehrachechek +names-vox-dataset-800 = Kehrehi +names-vox-dataset-801 = Kekabibit +names-vox-dataset-802 = Kekahi +names-vox-dataset-803 = Kekahrexi +names-vox-dataset-804 = Kekarar +names-vox-dataset-805 = Kekasritri +names-vox-dataset-806 = Kekebapisra +names-vox-dataset-807 = Kekebibivrer +names-vox-dataset-808 = Kekekahihi +names-vox-dataset-809 = Kekrishe +names-vox-dataset-810 = Kepetre +names-vox-dataset-811 = Kepevra +names-vox-dataset-812 = Kepraki +names-vox-dataset-813 = Keprepara +names-vox-dataset-814 = Kerahacheche +names-vox-dataset-815 = Keratra +names-vox-dataset-816 = Kerihi +names-vox-dataset-817 = Keriskehisri +names-vox-dataset-818 = Keshevaskiva +names-vox-dataset-819 = Keshika +names-vox-dataset-820 = Keshiti +names-vox-dataset-821 = Keskarahita +names-vox-dataset-822 = Keteskesket +names-vox-dataset-823 = Ketesketa +names-vox-dataset-824 = Ketribabar +names-vox-dataset-825 = Ketribipi +names-vox-dataset-826 = Kevatra +names-vox-dataset-827 = Kevatre +names-vox-dataset-828 = Keveki +names-vox-dataset-829 = Keveshatra +names-vox-dataset-830 = Keveshexiki +names-vox-dataset-831 = Kevesraxe +names-vox-dataset-832 = Kevexa +names-vox-dataset-833 = Kevikaxe +names-vox-dataset-834 = Kevivri +names-vox-dataset-835 = Kevrahreri +names-vox-dataset-836 = Kevrahrihrit +names-vox-dataset-837 = Kexapriprik +names-vox-dataset-838 = Kexerava +names-vox-dataset-839 = Kexeshacha +names-vox-dataset-840 = Kexisrepe +names-vox-dataset-841 = Keyararak +names-vox-dataset-842 = Kibevavacrak +names-vox-dataset-843 = Kibeyachichi +names-vox-dataset-844 = Kibipavava +names-vox-dataset-845 = Kichitra +names-vox-dataset-846 = Kicricreva +names-vox-dataset-847 = Kicrikrikrik +names-vox-dataset-848 = Kiharesra +names-vox-dataset-849 = Kihiya +names-vox-dataset-850 = Kihrexexevek +names-vox-dataset-851 = Kihriprira +names-vox-dataset-852 = Kikeke +names-vox-dataset-853 = Kikexitretre +names-vox-dataset-854 = Kikrabikichi +names-vox-dataset-855 = Kikrehi +names-vox-dataset-856 = Kikrekrakrat +names-vox-dataset-857 = Kikreri +names-vox-dataset-858 = Kikretrapa +names-vox-dataset-859 = Kikrevavak +names-vox-dataset-860 = Kikrivikar +names-vox-dataset-861 = Kipivaxe +names-vox-dataset-862 = Kipreya +names-vox-dataset-863 = Kireche +names-vox-dataset-864 = Kiresrisrir +names-vox-dataset-865 = Kirevi +names-vox-dataset-866 = Kiribapra +names-vox-dataset-867 = Kiribaprive +names-vox-dataset-868 = Kirichaketra +names-vox-dataset-869 = Kirichiska +names-vox-dataset-870 = Kiricrakakri +names-vox-dataset-871 = Kirihererek +names-vox-dataset-872 = Kirihrepi +names-vox-dataset-873 = Kirihreviche +names-vox-dataset-874 = Kirikachicha +names-vox-dataset-875 = Kirikatriki +names-vox-dataset-876 = Kirikivrivri +names-vox-dataset-877 = Kirikrakra +names-vox-dataset-878 = Kiripabi +names-vox-dataset-879 = Kiripahritri +names-vox-dataset-880 = Kiriprihri +names-vox-dataset-881 = Kirirahixera +names-vox-dataset-882 = Kirireti +names-vox-dataset-883 = Kirirevri +names-vox-dataset-884 = Kirishavavar +names-vox-dataset-885 = Kirishekeket +names-vox-dataset-886 = Kiriteska +names-vox-dataset-887 = Kiritracha +names-vox-dataset-888 = Kiritrepeper +names-vox-dataset-889 = Kiritreyapri +names-vox-dataset-890 = Kirivipe +names-vox-dataset-891 = Kirivrivepi +names-vox-dataset-892 = Kirixaticher +names-vox-dataset-893 = Kirixepepek +names-vox-dataset-894 = Kirixicra +names-vox-dataset-895 = Kishahapatre +names-vox-dataset-896 = Kishehakaka +names-vox-dataset-897 = Kiskashapra +names-vox-dataset-898 = Kiskekehra +names-vox-dataset-899 = Kiskekicre +names-vox-dataset-900 = Kiskipri +names-vox-dataset-901 = Kitraka +names-vox-dataset-902 = Kitrevevri +names-vox-dataset-903 = Kivraheherat +names-vox-dataset-904 = Kivrahi +names-vox-dataset-905 = Kivrashe +names-vox-dataset-906 = Kivrera +names-vox-dataset-907 = Kivretrakeke +names-vox-dataset-908 = Kixatritrit +names-vox-dataset-909 = Kixichetiti +names-vox-dataset-910 = Kixichicrar +names-vox-dataset-911 = Kixivra +names-vox-dataset-912 = Krabareyaya +names-vox-dataset-913 = Krabeherere +names-vox-dataset-914 = Krachehre +names-vox-dataset-915 = Kracheyaba +names-vox-dataset-916 = Kracrirarak +names-vox-dataset-917 = Krahebikaba +names-vox-dataset-918 = Krahechikri +names-vox-dataset-919 = Krahiha +names-vox-dataset-920 = Krahrakri +names-vox-dataset-921 = Krahraririk +names-vox-dataset-922 = Krahrepexi +names-vox-dataset-923 = Krahrepri +names-vox-dataset-924 = Krahrerar +names-vox-dataset-925 = Krakahra +names-vox-dataset-926 = Krakrekiski +names-vox-dataset-927 = Krakrepapat +names-vox-dataset-928 = Krapari +names-vox-dataset-929 = Krapibi +names-vox-dataset-930 = Krapitahri +names-vox-dataset-931 = Krapreve +names-vox-dataset-932 = Kraprisrisre +names-vox-dataset-933 = Kraprivrarar +names-vox-dataset-934 = Krarakrikrit +names-vox-dataset-935 = Krarekri +names-vox-dataset-936 = Kraricri +names-vox-dataset-937 = Krashatatahi +names-vox-dataset-938 = Krashavecra +names-vox-dataset-939 = Kraskisretra +names-vox-dataset-940 = Krasrarevi +names-vox-dataset-941 = Krasripapat +names-vox-dataset-942 = Kratachavri +names-vox-dataset-943 = Kratare +names-vox-dataset-944 = Kratikepi +names-vox-dataset-945 = Kraveke +names-vox-dataset-946 = Kravraxeveve +names-vox-dataset-947 = Kravrepachi +names-vox-dataset-948 = Kravricrahra +names-vox-dataset-949 = Kraxabi +names-vox-dataset-950 = Kraxasrir +names-vox-dataset-951 = Krayakrikrit +names-vox-dataset-952 = Krebekri +names-vox-dataset-953 = Krebibikre +names-vox-dataset-954 = Krebivi +names-vox-dataset-955 = Krechahe +names-vox-dataset-956 = Krechepraxa +names-vox-dataset-957 = Krechititik +names-vox-dataset-958 = Krecrashepra +names-vox-dataset-959 = Krecravicha +names-vox-dataset-960 = Krecreri +names-vox-dataset-961 = Krehekikihit +names-vox-dataset-962 = Krehrakakre +names-vox-dataset-963 = Krehrita +names-vox-dataset-964 = Krehrixa +names-vox-dataset-965 = Krekacrechi +names-vox-dataset-966 = Krekebeta +names-vox-dataset-967 = Krekracri +names-vox-dataset-968 = Krekrapri +names-vox-dataset-969 = Krekrishaski +names-vox-dataset-970 = Krepeviske +names-vox-dataset-971 = Krepitir +names-vox-dataset-972 = Krepiya +names-vox-dataset-973 = Kreprahetaya +names-vox-dataset-974 = Krepretasha +names-vox-dataset-975 = Kreprivreski +names-vox-dataset-976 = Krererisri +names-vox-dataset-977 = Krerexeskeva +names-vox-dataset-978 = Kreskaviha +names-vox-dataset-979 = Kresrepaxexe +names-vox-dataset-980 = Kretahre +names-vox-dataset-981 = Kretavi +names-vox-dataset-982 = Kretepapatir +names-vox-dataset-983 = Krevavikeke +names-vox-dataset-984 = Krevesher +names-vox-dataset-985 = Krevesrisrit +names-vox-dataset-986 = Krevrexer +names-vox-dataset-987 = Krevrivriske +names-vox-dataset-988 = Krexaya +names-vox-dataset-989 = Kreyacrepe +names-vox-dataset-990 = Kreyatriri +names-vox-dataset-991 = Kreyavi +names-vox-dataset-992 = Kribeshi +names-vox-dataset-993 = Kribetibi +names-vox-dataset-994 = Kribexixik +names-vox-dataset-995 = Kribirecri +names-vox-dataset-996 = Kribivra +names-vox-dataset-997 = Krichakehra +names-vox-dataset-998 = Kricrava +names-vox-dataset-999 = Kricrirepe +names-vox-dataset-1000 = Kricritaka +names-vox-dataset-1001 = Krihaprir +names-vox-dataset-1002 = Krihesre +names-vox-dataset-1003 = Krihexarava +names-vox-dataset-1004 = Krihreskekre +names-vox-dataset-1005 = Krikapepek +names-vox-dataset-1006 = Krikatitixer +names-vox-dataset-1007 = Krikesrixixi +names-vox-dataset-1008 = Krikrashar +names-vox-dataset-1009 = Krikrikesre +names-vox-dataset-1010 = Kripahri +names-vox-dataset-1011 = Kripritri +names-vox-dataset-1012 = Kriripriprit +names-vox-dataset-1013 = Kririve +names-vox-dataset-1014 = Krishebiriba +names-vox-dataset-1015 = Krishebite +names-vox-dataset-1016 = Krishecrapi +names-vox-dataset-1017 = Kriskexer +names-vox-dataset-1018 = Krisribariri +names-vox-dataset-1019 = Krisrisher +names-vox-dataset-1020 = Kritahe +names-vox-dataset-1021 = Kritarerek +names-vox-dataset-1022 = Kritechihihi +names-vox-dataset-1023 = Kritiha +names-vox-dataset-1024 = Kritixa +names-vox-dataset-1025 = Kritresra +names-vox-dataset-1026 = Kritrivrevra +names-vox-dataset-1027 = Krivaxixipak +names-vox-dataset-1028 = Krivripri +names-vox-dataset-1029 = Krixehraski +names-vox-dataset-1030 = Krixesrepri +names-vox-dataset-1031 = Krixirar +names-vox-dataset-1032 = Pabaskare +names-vox-dataset-1033 = Pabecrechi +names-vox-dataset-1034 = Pabixashaha +names-vox-dataset-1035 = Pachatatak +names-vox-dataset-1036 = Pachetra +names-vox-dataset-1037 = Pachikri +names-vox-dataset-1038 = Pachisra +names-vox-dataset-1039 = Pacrachisri +names-vox-dataset-1040 = Pacraheha +names-vox-dataset-1041 = Pahrecrahati +names-vox-dataset-1042 = Pahrixeke +names-vox-dataset-1043 = Pakaririhrek +names-vox-dataset-1044 = Pakashexa +names-vox-dataset-1045 = Pakaskesha +names-vox-dataset-1046 = Pakavrevaha +names-vox-dataset-1047 = Pakihechacha +names-vox-dataset-1048 = Pakishi +names-vox-dataset-1049 = Pakivrapapa +names-vox-dataset-1050 = Pakrakrasra +names-vox-dataset-1051 = Pakrasrer +names-vox-dataset-1052 = Pakrava +names-vox-dataset-1053 = Pakresra +names-vox-dataset-1054 = Pakrexetihe +names-vox-dataset-1055 = Pakrika +names-vox-dataset-1056 = Papaskaxa +names-vox-dataset-1057 = Papavivivrik +names-vox-dataset-1058 = Papesheher +names-vox-dataset-1059 = Papivahre +names-vox-dataset-1060 = Papratrakiki +names-vox-dataset-1061 = Parerakre +names-vox-dataset-1062 = Pashaskaskak +names-vox-dataset-1063 = Pashevravrat +names-vox-dataset-1064 = Paskasretiti +names-vox-dataset-1065 = Paskiske +names-vox-dataset-1066 = Paskixexek +names-vox-dataset-1067 = Pasrabicra +names-vox-dataset-1068 = Pasraprikepa +names-vox-dataset-1069 = Pasrehe +names-vox-dataset-1070 = Pasrepratri +names-vox-dataset-1071 = Pataprivra +names-vox-dataset-1072 = Patesrateke +names-vox-dataset-1073 = Patexexet +names-vox-dataset-1074 = Patreshe +names-vox-dataset-1075 = Pavaba +names-vox-dataset-1076 = Pavrapishi +names-vox-dataset-1077 = Paxarerechak +names-vox-dataset-1078 = Paxecri +names-vox-dataset-1079 = Paxitirechi +names-vox-dataset-1080 = Payahreshi +names-vox-dataset-1081 = Pebakrikrik +names-vox-dataset-1082 = Pebate +names-vox-dataset-1083 = Pebeskahepre +names-vox-dataset-1084 = Pebevravi +names-vox-dataset-1085 = Pebibebek +names-vox-dataset-1086 = Pechaka +names-vox-dataset-1087 = Pechekripi +names-vox-dataset-1088 = Pechetraya +names-vox-dataset-1089 = Pechikreke +names-vox-dataset-1090 = Pechivrar +names-vox-dataset-1091 = Pecracha +names-vox-dataset-1092 = Pecritrasre +names-vox-dataset-1093 = Pehasra +names-vox-dataset-1094 = Pehecha +names-vox-dataset-1095 = Pehisresrer +names-vox-dataset-1096 = Pehrakresha +names-vox-dataset-1097 = Pehrihivreya +names-vox-dataset-1098 = Pehriva +names-vox-dataset-1099 = Pekecricrik +names-vox-dataset-1100 = Pekrava +names-vox-dataset-1101 = Pekraya +names-vox-dataset-1102 = Pekrepitri +names-vox-dataset-1103 = Pepehri +names-vox-dataset-1104 = Pepexekaka +names-vox-dataset-1105 = Pepirer +names-vox-dataset-1106 = Pepiska +names-vox-dataset-1107 = Pepitre +names-vox-dataset-1108 = Pepreba +names-vox-dataset-1109 = Pepreha +names-vox-dataset-1110 = Peprerar +names-vox-dataset-1111 = Pepresri +names-vox-dataset-1112 = Pepresrikeke +names-vox-dataset-1113 = Peprevahe +names-vox-dataset-1114 = Peraxatrikri +names-vox-dataset-1115 = Perebecrate +names-vox-dataset-1116 = Peribi +names-vox-dataset-1117 = Perisrehri +names-vox-dataset-1118 = Peshipaha +names-vox-dataset-1119 = Peskavavaxek +names-vox-dataset-1120 = Peskehihik +names-vox-dataset-1121 = Peskikikitir +names-vox-dataset-1122 = Pesraski +names-vox-dataset-1123 = Pesratra +names-vox-dataset-1124 = Pesravre +names-vox-dataset-1125 = Pesraya +names-vox-dataset-1126 = Pesretetetat +names-vox-dataset-1127 = Pesrikre +names-vox-dataset-1128 = Pesritra +names-vox-dataset-1129 = Petevrivrit +names-vox-dataset-1130 = Petihri +names-vox-dataset-1131 = Petivrate +names-vox-dataset-1132 = Petripetete +names-vox-dataset-1133 = Pevekriska +names-vox-dataset-1134 = Pevera +names-vox-dataset-1135 = Pevetiska +names-vox-dataset-1136 = Pevetrepri +names-vox-dataset-1137 = Pevikixi +names-vox-dataset-1138 = Pevipraprak +names-vox-dataset-1139 = Pevitetecrak +names-vox-dataset-1140 = Pevixihre +names-vox-dataset-1141 = Pevracher +names-vox-dataset-1142 = Pevrakrakrat +names-vox-dataset-1143 = Pevrehita +names-vox-dataset-1144 = Pexepraprat +names-vox-dataset-1145 = Pexihibe +names-vox-dataset-1146 = Pibehra +names-vox-dataset-1147 = Pibekrite +names-vox-dataset-1148 = Pibetiskiski +names-vox-dataset-1149 = Pibibipa +names-vox-dataset-1150 = Pibikekek +names-vox-dataset-1151 = Pichehi +names-vox-dataset-1152 = Pichetreta +names-vox-dataset-1153 = Pichicreve +names-vox-dataset-1154 = Pichikrarar +names-vox-dataset-1155 = Picreprecha +names-vox-dataset-1156 = Pihasresret +names-vox-dataset-1157 = Piheki +names-vox-dataset-1158 = Pihepa +names-vox-dataset-1159 = Pihibeskaska +names-vox-dataset-1160 = Pihichar +names-vox-dataset-1161 = Pihitetek +names-vox-dataset-1162 = Pihrebi +names-vox-dataset-1163 = Pihreshapibe +names-vox-dataset-1164 = Pihretitir +names-vox-dataset-1165 = Pikaskaskar +names-vox-dataset-1166 = Pikaxer +names-vox-dataset-1167 = Pikrehreka +names-vox-dataset-1168 = Pikripreprer +names-vox-dataset-1169 = Pipasha +names-vox-dataset-1170 = Pipaxacricri +names-vox-dataset-1171 = Pipesresri +names-vox-dataset-1172 = Pipribepri +names-vox-dataset-1173 = Piprishixi +names-vox-dataset-1174 = Piraxiprar +names-vox-dataset-1175 = Pirekrehi +names-vox-dataset-1176 = Pireveverik +names-vox-dataset-1177 = Piribaxa +names-vox-dataset-1178 = Piribipriski +names-vox-dataset-1179 = Pirichivapi +names-vox-dataset-1180 = Piricrahra +names-vox-dataset-1181 = Piricrakra +names-vox-dataset-1182 = Pirihepre +names-vox-dataset-1183 = Pirihichati +names-vox-dataset-1184 = Pirikretra +names-vox-dataset-1185 = Pirikritere +names-vox-dataset-1186 = Pirikrivra +names-vox-dataset-1187 = Piripaba +names-vox-dataset-1188 = Piripacripri +names-vox-dataset-1189 = Piripihrishe +names-vox-dataset-1190 = Piripite +names-vox-dataset-1191 = Piripitri +names-vox-dataset-1192 = Piriprabepa +names-vox-dataset-1193 = Pirireprishe +names-vox-dataset-1194 = Piriririke +names-vox-dataset-1195 = Piriskateke +names-vox-dataset-1196 = Piriskiki +names-vox-dataset-1197 = Pirisretiva +names-vox-dataset-1198 = Piritavre +names-vox-dataset-1199 = Piritihre +names-vox-dataset-1200 = Piritratavri +names-vox-dataset-1201 = Piritrecrara +names-vox-dataset-1202 = Piritreke +names-vox-dataset-1203 = Pirivakixaxa +names-vox-dataset-1204 = Pirivikrar +names-vox-dataset-1205 = Pirixaxa +names-vox-dataset-1206 = Pirixaxevre +names-vox-dataset-1207 = Piriyakribi +names-vox-dataset-1208 = Piriyapesra +names-vox-dataset-1209 = Pishakakaxet +names-vox-dataset-1210 = Pishashetepi +names-vox-dataset-1211 = Pishavraska +names-vox-dataset-1212 = Pishevra +names-vox-dataset-1213 = Piskipre +names-vox-dataset-1214 = Pisrasheshek +names-vox-dataset-1215 = Pisripre +names-vox-dataset-1216 = Pisrixekete +names-vox-dataset-1217 = Pitibi +names-vox-dataset-1218 = Pitraprivre +names-vox-dataset-1219 = Pitraskeche +names-vox-dataset-1220 = Pitratebi +names-vox-dataset-1221 = Pitrevreyaya +names-vox-dataset-1222 = Pitriprivra +names-vox-dataset-1223 = Pitriske +names-vox-dataset-1224 = Pivaka +names-vox-dataset-1225 = Pivatatakir +names-vox-dataset-1226 = Pivekrixehri +names-vox-dataset-1227 = Piveyashi +names-vox-dataset-1228 = Pivrakevi +names-vox-dataset-1229 = Pivrakipre +names-vox-dataset-1230 = Pivrakitibe +names-vox-dataset-1231 = Pivrashir +names-vox-dataset-1232 = Pivrirater +names-vox-dataset-1233 = Pivritatabet +names-vox-dataset-1234 = Pixeriti +names-vox-dataset-1235 = Pixicha +names-vox-dataset-1236 = Prabibiprepi +names-vox-dataset-1237 = Prabichixaxa +names-vox-dataset-1238 = Prabixite +names-vox-dataset-1239 = Pracheteter +names-vox-dataset-1240 = Prachiba +names-vox-dataset-1241 = Pracrahrive +names-vox-dataset-1242 = Prahihrahrak +names-vox-dataset-1243 = Prahisresrek +names-vox-dataset-1244 = Prahitrivi +names-vox-dataset-1245 = Prahrebesra +names-vox-dataset-1246 = Prahripebaba +names-vox-dataset-1247 = Prahrivapapa +names-vox-dataset-1248 = Prakiskesket +names-vox-dataset-1249 = Prakrehrahri +names-vox-dataset-1250 = Prakripi +names-vox-dataset-1251 = Prapicresri +names-vox-dataset-1252 = Praprexexek +names-vox-dataset-1253 = Prarachaxi +names-vox-dataset-1254 = Prarecrahi +names-vox-dataset-1255 = Prarikra +names-vox-dataset-1256 = Praripraka +names-vox-dataset-1257 = Prashicribi +names-vox-dataset-1258 = Prashivepapa +names-vox-dataset-1259 = Prashixitata +names-vox-dataset-1260 = Pratakra +names-vox-dataset-1261 = Praterahira +names-vox-dataset-1262 = Pratreki +names-vox-dataset-1263 = Pravashipebe +names-vox-dataset-1264 = Pravesrisrit +names-vox-dataset-1265 = Pravixihehe +names-vox-dataset-1266 = Pravrashi +names-vox-dataset-1267 = Pravrepi +names-vox-dataset-1268 = Pravricrir +names-vox-dataset-1269 = Pravritrer +names-vox-dataset-1270 = Praxahihir +names-vox-dataset-1271 = Praxechaxere +names-vox-dataset-1272 = Praxekrakrat +names-vox-dataset-1273 = Praxevitetra +names-vox-dataset-1274 = Praxexe +names-vox-dataset-1275 = Praxichi +names-vox-dataset-1276 = Prayaraxir +names-vox-dataset-1277 = Prebavre +names-vox-dataset-1278 = Prechakavra +names-vox-dataset-1279 = Prechavre +names-vox-dataset-1280 = Precratetet +names-vox-dataset-1281 = Preherihra +names-vox-dataset-1282 = Prehiviveve +names-vox-dataset-1283 = Prehrakriska +names-vox-dataset-1284 = Prehribi +names-vox-dataset-1285 = Prekakra +names-vox-dataset-1286 = Prekaya +names-vox-dataset-1287 = Prekiprever +names-vox-dataset-1288 = Prekirar +names-vox-dataset-1289 = Prepahihibar +names-vox-dataset-1290 = Prepetratrat +names-vox-dataset-1291 = Prepixihrapa +names-vox-dataset-1292 = Preprete +names-vox-dataset-1293 = Preretetre +names-vox-dataset-1294 = Prerexike +names-vox-dataset-1295 = Presharesre +names-vox-dataset-1296 = Presravi +names-vox-dataset-1297 = Presrere +names-vox-dataset-1298 = Presriskipre +names-vox-dataset-1299 = Pretere +names-vox-dataset-1300 = Pretetisrir +names-vox-dataset-1301 = Pretexiprar +names-vox-dataset-1302 = Pretihre +names-vox-dataset-1303 = Pretrakre +names-vox-dataset-1304 = Pretrike +names-vox-dataset-1305 = Pretrisra +names-vox-dataset-1306 = Prevakre +names-vox-dataset-1307 = Prevecrere +names-vox-dataset-1308 = Prevesriti +names-vox-dataset-1309 = Preveti +names-vox-dataset-1310 = Previkrahihi +names-vox-dataset-1311 = Previkri +names-vox-dataset-1312 = Prevritrare +names-vox-dataset-1313 = Prevrivi +names-vox-dataset-1314 = Prexatrar +names-vox-dataset-1315 = Prexeshe +names-vox-dataset-1316 = Prexicracrak +names-vox-dataset-1317 = Preyatra +names-vox-dataset-1318 = Pribatretrek +names-vox-dataset-1319 = Pribavibache +names-vox-dataset-1320 = Pribirivava +names-vox-dataset-1321 = Pribivrivrit +names-vox-dataset-1322 = Pricheyayat +names-vox-dataset-1323 = Pricrapapat +names-vox-dataset-1324 = Pricrihi +names-vox-dataset-1325 = Prihavri +names-vox-dataset-1326 = Prihetiya +names-vox-dataset-1327 = Prihrechabi +names-vox-dataset-1328 = Prikebixi +names-vox-dataset-1329 = Prikricha +names-vox-dataset-1330 = Prikripi +names-vox-dataset-1331 = Prikripikiki +names-vox-dataset-1332 = Prikrishi +names-vox-dataset-1333 = Pripachiya +names-vox-dataset-1334 = Pripavrepri +names-vox-dataset-1335 = Pripixixik +names-vox-dataset-1336 = Pripraske +names-vox-dataset-1337 = Priprecheha +names-vox-dataset-1338 = Pripripepek +names-vox-dataset-1339 = Prirakre +names-vox-dataset-1340 = Prirasher +names-vox-dataset-1341 = Priraske +names-vox-dataset-1342 = Prireprehar +names-vox-dataset-1343 = Pririhi +names-vox-dataset-1344 = Prishehe +names-vox-dataset-1345 = Prishepaxixi +names-vox-dataset-1346 = Prishitarabe +names-vox-dataset-1347 = Priskake +names-vox-dataset-1348 = Prisraxi +names-vox-dataset-1349 = Pritabaski +names-vox-dataset-1350 = Pritakir +names-vox-dataset-1351 = Pritecra +names-vox-dataset-1352 = Pritehavivi +names-vox-dataset-1353 = Pritepa +names-vox-dataset-1354 = Pritichahi +names-vox-dataset-1355 = Privayayak +names-vox-dataset-1356 = Privipecre +names-vox-dataset-1357 = Privrihareya +names-vox-dataset-1358 = Prixarake +names-vox-dataset-1359 = Prixepa +names-vox-dataset-1360 = Prixetre +names-vox-dataset-1361 = Prixivrekri +names-vox-dataset-1362 = Priyaprar +names-vox-dataset-1363 = Rabehiya +names-vox-dataset-1364 = Rabeparere +names-vox-dataset-1365 = Rabereshebe +names-vox-dataset-1366 = Rabichechet +names-vox-dataset-1367 = Rachare +names-vox-dataset-1368 = Racraba +names-vox-dataset-1369 = Racrakeka +names-vox-dataset-1370 = Racrakreheri +names-vox-dataset-1371 = Rahavevahi +names-vox-dataset-1372 = Rahevripeshi +names-vox-dataset-1373 = Rahibebetat +names-vox-dataset-1374 = Rahihratata +names-vox-dataset-1375 = Rahipe +names-vox-dataset-1376 = Rahraba +names-vox-dataset-1377 = Rahrecri +names-vox-dataset-1378 = Rahreyavri +names-vox-dataset-1379 = Rahritretrek +names-vox-dataset-1380 = Rakekikitrir +names-vox-dataset-1381 = Rakicrecrek +names-vox-dataset-1382 = Rakipipihrat +names-vox-dataset-1383 = Rakreprikri +names-vox-dataset-1384 = Rapivrivrere +names-vox-dataset-1385 = Rarahaka +names-vox-dataset-1386 = Raretriya +names-vox-dataset-1387 = Rasheshashat +names-vox-dataset-1388 = Rasheshevri +names-vox-dataset-1389 = Rashihretra +names-vox-dataset-1390 = Rashikrehre +names-vox-dataset-1391 = Rasriber +names-vox-dataset-1392 = Ratabibihet +names-vox-dataset-1393 = Ratesraprar +names-vox-dataset-1394 = Ratitritrik +names-vox-dataset-1395 = Ratravi +names-vox-dataset-1396 = Ratrebi +names-vox-dataset-1397 = Ratreyayak +names-vox-dataset-1398 = Ratrihrikri +names-vox-dataset-1399 = Ravecher +names-vox-dataset-1400 = Ravepexi +names-vox-dataset-1401 = Ravihrahrak +names-vox-dataset-1402 = Ravixexebet +names-vox-dataset-1403 = Ravrisheke +names-vox-dataset-1404 = Ravrivrikri +names-vox-dataset-1405 = Raxahehet +names-vox-dataset-1406 = Raxetapa +names-vox-dataset-1407 = Raxete +names-vox-dataset-1408 = Raxevahre +names-vox-dataset-1409 = Rayachesheta +names-vox-dataset-1410 = Rebakre +names-vox-dataset-1411 = Rebebikiki +names-vox-dataset-1412 = Rebicracrak +names-vox-dataset-1413 = Rebipi +names-vox-dataset-1414 = Rebisriyaya +names-vox-dataset-1415 = Rebitetebit +names-vox-dataset-1416 = Recheper +names-vox-dataset-1417 = Recraskehe +names-vox-dataset-1418 = Recrekariri +names-vox-dataset-1419 = Rehepipibet +names-vox-dataset-1420 = Rehresheshet +names-vox-dataset-1421 = Rehrikrikrik +names-vox-dataset-1422 = Rehrire +names-vox-dataset-1423 = Rekaskaskak +names-vox-dataset-1424 = Rekracha +names-vox-dataset-1425 = Rekripreprek +names-vox-dataset-1426 = Repeche +names-vox-dataset-1427 = Repetrir +names-vox-dataset-1428 = Repexishe +names-vox-dataset-1429 = Repivesheri +names-vox-dataset-1430 = Repivrasra +names-vox-dataset-1431 = Reprihri +names-vox-dataset-1432 = Reprishishik +names-vox-dataset-1433 = Rerahahat +names-vox-dataset-1434 = Rereba +names-vox-dataset-1435 = Rerirevra +names-vox-dataset-1436 = Reskebexexe +names-vox-dataset-1437 = Reskehahat +names-vox-dataset-1438 = Reskivavak +names-vox-dataset-1439 = Reskixibira +names-vox-dataset-1440 = Resrecracrat +names-vox-dataset-1441 = Resretra +names-vox-dataset-1442 = Resrihrepeke +names-vox-dataset-1443 = Resriske +names-vox-dataset-1444 = Resrixiha +names-vox-dataset-1445 = Retaskahri +names-vox-dataset-1446 = Retavavatet +names-vox-dataset-1447 = Retaveche +names-vox-dataset-1448 = Retecha +names-vox-dataset-1449 = Retevravrak +names-vox-dataset-1450 = Retrete +names-vox-dataset-1451 = Retrexehehri +names-vox-dataset-1452 = Retripritri +names-vox-dataset-1453 = Revasri +names-vox-dataset-1454 = Revetitipret +names-vox-dataset-1455 = Revikrebiya +names-vox-dataset-1456 = Revripra +names-vox-dataset-1457 = Revritrer +names-vox-dataset-1458 = Rexabaska +names-vox-dataset-1459 = Rexataxa +names-vox-dataset-1460 = Ribatre +names-vox-dataset-1461 = Ribebahihi +names-vox-dataset-1462 = Ribehashishi +names-vox-dataset-1463 = Ribiheva +names-vox-dataset-1464 = Ricrehaska +names-vox-dataset-1465 = Rihava +names-vox-dataset-1466 = Rihaxicre +names-vox-dataset-1467 = Rihekrekrek +names-vox-dataset-1468 = Rihipapar +names-vox-dataset-1469 = Rihrachepi +names-vox-dataset-1470 = Rihravatir +names-vox-dataset-1471 = Rikevra +names-vox-dataset-1472 = Rikipa +names-vox-dataset-1473 = Rikiskapipi +names-vox-dataset-1474 = Rikivrevra +names-vox-dataset-1475 = Rikrachi +names-vox-dataset-1476 = Rikrepa +names-vox-dataset-1477 = Rikreravribe +names-vox-dataset-1478 = Ripibivrir +names-vox-dataset-1479 = Ripihrepapa +names-vox-dataset-1480 = Ripreshikre +names-vox-dataset-1481 = Rirevi +names-vox-dataset-1482 = Riribebe +names-vox-dataset-1483 = Riribeska +names-vox-dataset-1484 = Riricheshe +names-vox-dataset-1485 = Riricrehra +names-vox-dataset-1486 = Riricriti +names-vox-dataset-1487 = Ririhari +names-vox-dataset-1488 = Ririhepreski +names-vox-dataset-1489 = Ririhite +names-vox-dataset-1490 = Ririhixir +names-vox-dataset-1491 = Ririkavrire +names-vox-dataset-1492 = Ririkeve +names-vox-dataset-1493 = Ririkrekaska +names-vox-dataset-1494 = Ririkrexeti +names-vox-dataset-1495 = Riripasha +names-vox-dataset-1496 = Riripraprapi +names-vox-dataset-1497 = Ririrarerera +names-vox-dataset-1498 = Riririhacha +names-vox-dataset-1499 = Ririshihi +names-vox-dataset-1500 = Ririskatre +names-vox-dataset-1501 = Ririskihe +names-vox-dataset-1502 = Ririskiri +names-vox-dataset-1503 = Ririsravra +names-vox-dataset-1504 = Riritihihit +names-vox-dataset-1505 = Riritiskaba +names-vox-dataset-1506 = Rirititahi +names-vox-dataset-1507 = Riritrebi +names-vox-dataset-1508 = Riritrexexek +names-vox-dataset-1509 = Ririvihrar +names-vox-dataset-1510 = Ririvreshiya +names-vox-dataset-1511 = Ririvretra +names-vox-dataset-1512 = Ririyaskihe +names-vox-dataset-1513 = Rishacriker +names-vox-dataset-1514 = Rishaskar +names-vox-dataset-1515 = Rishepi +names-vox-dataset-1516 = Riskavrer +names-vox-dataset-1517 = Riskekar +names-vox-dataset-1518 = Riskepriba +names-vox-dataset-1519 = Riskesre +names-vox-dataset-1520 = Riskirasre +names-vox-dataset-1521 = Riskiskeha +names-vox-dataset-1522 = Risratretete +names-vox-dataset-1523 = Risratrihihi +names-vox-dataset-1524 = Risrevre +names-vox-dataset-1525 = Risritracre +names-vox-dataset-1526 = Risrivire +names-vox-dataset-1527 = Ritaha +names-vox-dataset-1528 = Ritahrecra +names-vox-dataset-1529 = Ritekrakapre +names-vox-dataset-1530 = Riteva +names-vox-dataset-1531 = Ritresrakri +names-vox-dataset-1532 = Ritrihe +names-vox-dataset-1533 = Ritrirecra +names-vox-dataset-1534 = Ritrishixi +names-vox-dataset-1535 = Rivretripapa +names-vox-dataset-1536 = Rivrivrishi +names-vox-dataset-1537 = Rixahritri +names-vox-dataset-1538 = Rixaterete +names-vox-dataset-1539 = Rixecrekre +names-vox-dataset-1540 = Rixepapat +names-vox-dataset-1541 = Rixeti +names-vox-dataset-1542 = Rixibihrihri +names-vox-dataset-1543 = Rixiskirepri +names-vox-dataset-1544 = Rixixaxavrat +names-vox-dataset-1545 = Riyahrahrat +names-vox-dataset-1546 = Riyapare +names-vox-dataset-1547 = Riyasri +names-vox-dataset-1548 = Shabirivri +names-vox-dataset-1549 = Shachikir +names-vox-dataset-1550 = Shacrevavak +names-vox-dataset-1551 = Shacrevrake +names-vox-dataset-1552 = Shahaprahri +names-vox-dataset-1553 = Shahaxaxak +names-vox-dataset-1554 = Shahekeket +names-vox-dataset-1555 = Shaheskate +names-vox-dataset-1556 = Shahexer +names-vox-dataset-1557 = Shahrasher +names-vox-dataset-1558 = Shahrati +names-vox-dataset-1559 = Shahripracri +names-vox-dataset-1560 = Shakekrirabe +names-vox-dataset-1561 = Shakrichar +names-vox-dataset-1562 = Shapesrikaka +names-vox-dataset-1563 = Shapibi +names-vox-dataset-1564 = Shapretra +names-vox-dataset-1565 = Sharapire +names-vox-dataset-1566 = Sharesrasrat +names-vox-dataset-1567 = Sharihesrehi +names-vox-dataset-1568 = Sharihre +names-vox-dataset-1569 = Sharipiva +names-vox-dataset-1570 = Sharitrihri +names-vox-dataset-1571 = Shashishibe +names-vox-dataset-1572 = Shashisravi +names-vox-dataset-1573 = Shaskehepre +names-vox-dataset-1574 = Shaskepahre +names-vox-dataset-1575 = Shaskitra +names-vox-dataset-1576 = Shatretaxi +names-vox-dataset-1577 = Shavaprika +names-vox-dataset-1578 = Shavashakri +names-vox-dataset-1579 = Shavexexati +names-vox-dataset-1580 = Shavisha +names-vox-dataset-1581 = Shavrivre +names-vox-dataset-1582 = Shaxepachi +names-vox-dataset-1583 = Shayakrakrak +names-vox-dataset-1584 = Shebevrirere +names-vox-dataset-1585 = Shebipeskixa +names-vox-dataset-1586 = Shebiva +names-vox-dataset-1587 = Shecheyababa +names-vox-dataset-1588 = Shecrapricre +names-vox-dataset-1589 = Shehibe +names-vox-dataset-1590 = Shehrayashar +names-vox-dataset-1591 = Shehrebite +names-vox-dataset-1592 = Shehreha +names-vox-dataset-1593 = Shehreske +names-vox-dataset-1594 = Shehreyayar +names-vox-dataset-1595 = Shehriskar +names-vox-dataset-1596 = Shekake +names-vox-dataset-1597 = Shekakesri +names-vox-dataset-1598 = Shekapiski +names-vox-dataset-1599 = Shekeska +names-vox-dataset-1600 = Shekikakat +names-vox-dataset-1601 = Shekrira +names-vox-dataset-1602 = Shepechichik +names-vox-dataset-1603 = Shepeshesra +names-vox-dataset-1604 = Shepeskiskik +names-vox-dataset-1605 = Shepetrati +names-vox-dataset-1606 = Shepevrevrer +names-vox-dataset-1607 = Shepikitepa +names-vox-dataset-1608 = Sheprekritri +names-vox-dataset-1609 = Shepreskete +names-vox-dataset-1610 = Sherati +names-vox-dataset-1611 = Sherikre +names-vox-dataset-1612 = Sheriskahe +names-vox-dataset-1613 = Sheshasri +names-vox-dataset-1614 = Sheshihesha +names-vox-dataset-1615 = Shesrabibik +names-vox-dataset-1616 = Shesrachiski +names-vox-dataset-1617 = Shesrihihit +names-vox-dataset-1618 = Shetachavre +names-vox-dataset-1619 = Shetasre +names-vox-dataset-1620 = Shetikitata +names-vox-dataset-1621 = Shetracrar +names-vox-dataset-1622 = Shetriha +names-vox-dataset-1623 = Shevabi +names-vox-dataset-1624 = Shevecrepi +names-vox-dataset-1625 = Shevrahe +names-vox-dataset-1626 = Shevrevri +names-vox-dataset-1627 = Shevriya +names-vox-dataset-1628 = Shexachi +names-vox-dataset-1629 = Shexahrehret +names-vox-dataset-1630 = Shexecra +names-vox-dataset-1631 = Shexishishit +names-vox-dataset-1632 = Shexivir +names-vox-dataset-1633 = Sheyasha +names-vox-dataset-1634 = Shibatra +names-vox-dataset-1635 = Shibecreka +names-vox-dataset-1636 = Shibekrekret +names-vox-dataset-1637 = Shibivribe +names-vox-dataset-1638 = Shichebebet +names-vox-dataset-1639 = Shichecha +names-vox-dataset-1640 = Shicheririt +names-vox-dataset-1641 = Shichikrakre +names-vox-dataset-1642 = Shicrachi +names-vox-dataset-1643 = Shihebihre +names-vox-dataset-1644 = Shihecricrik +names-vox-dataset-1645 = Shihishar +names-vox-dataset-1646 = Shihiska +names-vox-dataset-1647 = Shihrapikra +names-vox-dataset-1648 = Shihrehepri +names-vox-dataset-1649 = Shihrerebe +names-vox-dataset-1650 = Shihrevihre +names-vox-dataset-1651 = Shikechachat +names-vox-dataset-1652 = Shikeshecra +names-vox-dataset-1653 = Shikikivri +names-vox-dataset-1654 = Shikraxi +names-vox-dataset-1655 = Shikrehre +names-vox-dataset-1656 = Shikreprer +names-vox-dataset-1657 = Shipehabaske +names-vox-dataset-1658 = Shipicreki +names-vox-dataset-1659 = Shipipapaxak +names-vox-dataset-1660 = Shipratate +names-vox-dataset-1661 = Shipriki +names-vox-dataset-1662 = Shipritraha +names-vox-dataset-1663 = Shiribebepit +names-vox-dataset-1664 = Shisrisheri +names-vox-dataset-1665 = Shitehechi +names-vox-dataset-1666 = Shitexihre +names-vox-dataset-1667 = Shitibibik +names-vox-dataset-1668 = Shitravrekra +names-vox-dataset-1669 = Shivababat +names-vox-dataset-1670 = Shivexehra +names-vox-dataset-1671 = Shivive +names-vox-dataset-1672 = Shivraheki +names-vox-dataset-1673 = Shivrayayak +names-vox-dataset-1674 = Shivrebapra +names-vox-dataset-1675 = Shivrepa +names-vox-dataset-1676 = Shixaya +names-vox-dataset-1677 = Sikibavipa +names-vox-dataset-1678 = Sikibisriche +names-vox-dataset-1679 = Sikichape +names-vox-dataset-1680 = Sikichapi +names-vox-dataset-1681 = Sikichekasha +names-vox-dataset-1682 = Sikichiyaski +names-vox-dataset-1683 = Sikicracre +names-vox-dataset-1684 = Sikicrexa +names-vox-dataset-1685 = Sikicrixi +names-vox-dataset-1686 = Sikiketraya +names-vox-dataset-1687 = Sikikrasre +names-vox-dataset-1688 = Sikikreke +names-vox-dataset-1689 = Sikipecripre +names-vox-dataset-1690 = Sikipetre +names-vox-dataset-1691 = Sikiprasrake +names-vox-dataset-1692 = Sikiprira +names-vox-dataset-1693 = Sikirehivre +names-vox-dataset-1694 = Sikirepreri +names-vox-dataset-1695 = Sikiskacra +names-vox-dataset-1696 = Sikiskevavak +names-vox-dataset-1697 = Sikiskite +names-vox-dataset-1698 = Sikisraber +names-vox-dataset-1699 = Sikisrekakat +names-vox-dataset-1700 = Sikisresha +names-vox-dataset-1701 = Sikitaski +names-vox-dataset-1702 = Sikitevre +names-vox-dataset-1703 = Sikiticre +names-vox-dataset-1704 = Sikitrashate +names-vox-dataset-1705 = Sikitrihrepi +names-vox-dataset-1706 = Sikitrirepre +names-vox-dataset-1707 = Sikivate +names-vox-dataset-1708 = Sikiveskar +names-vox-dataset-1709 = Sikivrahra +names-vox-dataset-1710 = Sikivrisrita +names-vox-dataset-1711 = Sikivritiri +names-vox-dataset-1712 = Sikixicrebar +names-vox-dataset-1713 = Siribacrache +names-vox-dataset-1714 = Siribetraska +names-vox-dataset-1715 = Siribikra +names-vox-dataset-1716 = Siricharabe +names-vox-dataset-1717 = Sirihaxer +names-vox-dataset-1718 = Sirihicripa +names-vox-dataset-1719 = Sirihihahat +names-vox-dataset-1720 = Sirihihapa +names-vox-dataset-1721 = Sirikaski +names-vox-dataset-1722 = Sirikatatat +names-vox-dataset-1723 = Siripepahe +names-vox-dataset-1724 = Siriprahra +names-vox-dataset-1725 = Siriprehavi +names-vox-dataset-1726 = Siripreteske +names-vox-dataset-1727 = Siriraki +names-vox-dataset-1728 = Siriraski +names-vox-dataset-1729 = Sirirekeba +names-vox-dataset-1730 = Sirireter +names-vox-dataset-1731 = Sirishatache +names-vox-dataset-1732 = Sirishehevre +names-vox-dataset-1733 = Siriskesrave +names-vox-dataset-1734 = Siriskihipe +names-vox-dataset-1735 = Sirisrekivi +names-vox-dataset-1736 = Sirisretre +names-vox-dataset-1737 = Siriteche +names-vox-dataset-1738 = Siritrahe +names-vox-dataset-1739 = Siritrixexet +names-vox-dataset-1740 = Sirivrekehri +names-vox-dataset-1741 = Sirivretatre +names-vox-dataset-1742 = Skabaresre +names-vox-dataset-1743 = Skabehricra +names-vox-dataset-1744 = Skabipre +names-vox-dataset-1745 = Skachabeta +names-vox-dataset-1746 = Skachibi +names-vox-dataset-1747 = Skachihive +names-vox-dataset-1748 = Skachishaha +names-vox-dataset-1749 = Skacraxaxak +names-vox-dataset-1750 = Skacrehrapre +names-vox-dataset-1751 = Skacrichisre +names-vox-dataset-1752 = Skacrixiche +names-vox-dataset-1753 = Skahipevra +names-vox-dataset-1754 = Skahixahehe +names-vox-dataset-1755 = Skahracha +names-vox-dataset-1756 = Skahravrive +names-vox-dataset-1757 = Skahreve +names-vox-dataset-1758 = Skahrivrepra +names-vox-dataset-1759 = Skakasha +names-vox-dataset-1760 = Skakava +names-vox-dataset-1761 = Skakavevet +names-vox-dataset-1762 = Skakeskaskat +names-vox-dataset-1763 = Skakevravrak +names-vox-dataset-1764 = Skapape +names-vox-dataset-1765 = Skapapriprit +names-vox-dataset-1766 = Skarebihira +names-vox-dataset-1767 = Skarechachak +names-vox-dataset-1768 = Skarepishi +names-vox-dataset-1769 = Skarexapreti +names-vox-dataset-1770 = Skashihrir +names-vox-dataset-1771 = Skaterarar +names-vox-dataset-1772 = Skatetasre +names-vox-dataset-1773 = Skatrichebe +names-vox-dataset-1774 = Skavarerahri +names-vox-dataset-1775 = Skavicrecrer +names-vox-dataset-1776 = Skavitetexi +names-vox-dataset-1777 = Skavrekreti +names-vox-dataset-1778 = Skavritre +names-vox-dataset-1779 = Skaxisrakre +names-vox-dataset-1780 = Skayabere +names-vox-dataset-1781 = Skayatepra +names-vox-dataset-1782 = Skebaprara +names-vox-dataset-1783 = Skechikreba +names-vox-dataset-1784 = Skecracheker +names-vox-dataset-1785 = Skecraprir +names-vox-dataset-1786 = Skecrita +names-vox-dataset-1787 = Skehevreshe +names-vox-dataset-1788 = Skehichitra +names-vox-dataset-1789 = Skehipe +names-vox-dataset-1790 = Skekapra +names-vox-dataset-1791 = Skekekritra +names-vox-dataset-1792 = Skeketir +names-vox-dataset-1793 = Skekrababe +names-vox-dataset-1794 = Skekraxer +names-vox-dataset-1795 = Skekretake +names-vox-dataset-1796 = Skepare +names-vox-dataset-1797 = Skepitetexik +names-vox-dataset-1798 = Skerepepehit +names-vox-dataset-1799 = Skereri +names-vox-dataset-1800 = Skeripribihe +names-vox-dataset-1801 = Skeriska +names-vox-dataset-1802 = Skeshikite +names-vox-dataset-1803 = Skeskahe +names-vox-dataset-1804 = Skeskibishi +names-vox-dataset-1805 = Skesrisrer +names-vox-dataset-1806 = Sketaha +names-vox-dataset-1807 = Sketahevra +names-vox-dataset-1808 = Sketashakra +names-vox-dataset-1809 = Sketatretrek +names-vox-dataset-1810 = Sketavri +names-vox-dataset-1811 = Sketepechi +names-vox-dataset-1812 = Sketivapapa +names-vox-dataset-1813 = Sketivre +names-vox-dataset-1814 = Sketrarivava +names-vox-dataset-1815 = Sketrekrepe +names-vox-dataset-1816 = Skevaskiskik +names-vox-dataset-1817 = Skevaxi +names-vox-dataset-1818 = Skevrabari +names-vox-dataset-1819 = Skevrahrepa +names-vox-dataset-1820 = Skevrecra +names-vox-dataset-1821 = Skevrehraki +names-vox-dataset-1822 = Skevrihrave +names-vox-dataset-1823 = Skexipi +names-vox-dataset-1824 = Skexixeska +names-vox-dataset-1825 = Skibacricrit +names-vox-dataset-1826 = Skibapraxe +names-vox-dataset-1827 = Skibevravrat +names-vox-dataset-1828 = Skibiravri +names-vox-dataset-1829 = Skibita +names-vox-dataset-1830 = Skichabi +names-vox-dataset-1831 = Skichapipit +names-vox-dataset-1832 = Skichebir +names-vox-dataset-1833 = Skichiske +names-vox-dataset-1834 = Skicreraskar +names-vox-dataset-1835 = Skicrihihe +names-vox-dataset-1836 = Skihekar +names-vox-dataset-1837 = Skiheyaskir +names-vox-dataset-1838 = Skihricher +names-vox-dataset-1839 = Skikeskesket +names-vox-dataset-1840 = Skikrahre +names-vox-dataset-1841 = Skikraprara +names-vox-dataset-1842 = Skikrisha +names-vox-dataset-1843 = Skipashihre +names-vox-dataset-1844 = Skipechishi +names-vox-dataset-1845 = Skiprapra +names-vox-dataset-1846 = Skipraripi +names-vox-dataset-1847 = Skipreve +names-vox-dataset-1848 = Skiprevivik +names-vox-dataset-1849 = Skiripipik +names-vox-dataset-1850 = Skishachi +names-vox-dataset-1851 = Skishapehehe +names-vox-dataset-1852 = Skiskevaski +names-vox-dataset-1853 = Skiskevririr +names-vox-dataset-1854 = Skisrekecra +names-vox-dataset-1855 = Skitraki +names-vox-dataset-1856 = Skitrepi +names-vox-dataset-1857 = Skitreske +names-vox-dataset-1858 = Skivekri +names-vox-dataset-1859 = Skivibibik +names-vox-dataset-1860 = Skiviska +names-vox-dataset-1861 = Skivrihri +names-vox-dataset-1862 = Skivrivreki +names-vox-dataset-1863 = Skixara +names-vox-dataset-1864 = Skixareter +names-vox-dataset-1865 = Skixetihechi +names-vox-dataset-1866 = Skixiha +names-vox-dataset-1867 = Skixisrapre +names-vox-dataset-1868 = Srabavrechi +names-vox-dataset-1869 = Srabisreveke +names-vox-dataset-1870 = Srachavicha +names-vox-dataset-1871 = Sracrare +names-vox-dataset-1872 = Srahahihir +names-vox-dataset-1873 = Srahihripra +names-vox-dataset-1874 = Srahriyar +names-vox-dataset-1875 = Srakipahehe +names-vox-dataset-1876 = Srakireret +names-vox-dataset-1877 = Srakrakrishi +names-vox-dataset-1878 = Srapahre +names-vox-dataset-1879 = Srapikretra +names-vox-dataset-1880 = Srapribekehi +names-vox-dataset-1881 = Srarekepar +names-vox-dataset-1882 = Sraribeski +names-vox-dataset-1883 = Srariprer +names-vox-dataset-1884 = Srarisha +names-vox-dataset-1885 = Srashacha +names-vox-dataset-1886 = Srashakri +names-vox-dataset-1887 = Srashaxata +names-vox-dataset-1888 = Srashikirir +names-vox-dataset-1889 = Sraskabikri +names-vox-dataset-1890 = Sraskechipe +names-vox-dataset-1891 = Sraskehreri +names-vox-dataset-1892 = Sraskekepiva +names-vox-dataset-1893 = Sraskekisra +names-vox-dataset-1894 = Sraskiba +names-vox-dataset-1895 = Sraskishar +names-vox-dataset-1896 = Srasrivate +names-vox-dataset-1897 = Sratepre +names-vox-dataset-1898 = Srateve +names-vox-dataset-1899 = Sraticre +names-vox-dataset-1900 = Sratihi +names-vox-dataset-1901 = Sratiki +names-vox-dataset-1902 = Sratraxixir +names-vox-dataset-1903 = Sratrike +names-vox-dataset-1904 = Sravechachar +names-vox-dataset-1905 = Sravrapapat +names-vox-dataset-1906 = Sraxape +names-vox-dataset-1907 = Sraxepipir +names-vox-dataset-1908 = Sraxeskicri +names-vox-dataset-1909 = Srebaskaskar +names-vox-dataset-1910 = Srebecrir +names-vox-dataset-1911 = Srebekrabi +names-vox-dataset-1912 = Srebikrir +names-vox-dataset-1913 = Srechepe +names-vox-dataset-1914 = Srecravra +names-vox-dataset-1915 = Srecravre +names-vox-dataset-1916 = Srecrisre +names-vox-dataset-1917 = Srehetahi +names-vox-dataset-1918 = Srehikrar +names-vox-dataset-1919 = Srehivavri +names-vox-dataset-1920 = Srehrehiske +names-vox-dataset-1921 = Srekacrexeve +names-vox-dataset-1922 = Srekreprexe +names-vox-dataset-1923 = Srekrikra +names-vox-dataset-1924 = Srekrititit +names-vox-dataset-1925 = Srepesrexi +names-vox-dataset-1926 = Srepipritri +names-vox-dataset-1927 = Srepisrasre +names-vox-dataset-1928 = Sreprekra +names-vox-dataset-1929 = Srepreshe +names-vox-dataset-1930 = Sreracricrar +names-vox-dataset-1931 = Srerevre +names-vox-dataset-1932 = Srerihra +names-vox-dataset-1933 = Sreshebakiki +names-vox-dataset-1934 = Sresheskixi +names-vox-dataset-1935 = Sreshiprari +names-vox-dataset-1936 = Sreskichi +names-vox-dataset-1937 = Sreskicre +names-vox-dataset-1938 = Sresrahapi +names-vox-dataset-1939 = Sresrekikit +names-vox-dataset-1940 = Sresrikre +names-vox-dataset-1941 = Sretasresri +names-vox-dataset-1942 = Sretishashak +names-vox-dataset-1943 = Sretraticrir +names-vox-dataset-1944 = Srevesra +names-vox-dataset-1945 = Srevesrixari +names-vox-dataset-1946 = Srevivre +names-vox-dataset-1947 = Srevraxipi +names-vox-dataset-1948 = Srevreyayak +names-vox-dataset-1949 = Srexatreva +names-vox-dataset-1950 = Srexikrata +names-vox-dataset-1951 = Srexiskahehe +names-vox-dataset-1952 = Sribavar +names-vox-dataset-1953 = Sribebe +names-vox-dataset-1954 = Sribireke +names-vox-dataset-1955 = Srichepi +names-vox-dataset-1956 = Srichivekaka +names-vox-dataset-1957 = Sricrevepa +names-vox-dataset-1958 = Sriheshexi +names-vox-dataset-1959 = Srihrahevrir +names-vox-dataset-1960 = Srihrakratri +names-vox-dataset-1961 = Srihrekexi +names-vox-dataset-1962 = Srikasresha +names-vox-dataset-1963 = Srikiriki +names-vox-dataset-1964 = Srikratra +names-vox-dataset-1965 = Sripaba +names-vox-dataset-1966 = Sripahebevri +names-vox-dataset-1967 = Sripahre +names-vox-dataset-1968 = Sriprikacha +names-vox-dataset-1969 = Sriracricrit +names-vox-dataset-1970 = Sririhre +names-vox-dataset-1971 = Sriripre +names-vox-dataset-1972 = Srisheyaxexe +names-vox-dataset-1973 = Srishibicri +names-vox-dataset-1974 = Srishikatre +names-vox-dataset-1975 = Sriskicrixi +names-vox-dataset-1976 = Sriskihra +names-vox-dataset-1977 = Sriskisha +names-vox-dataset-1978 = Srisratreba +names-vox-dataset-1979 = Srisrebepi +names-vox-dataset-1980 = Srisrete +names-vox-dataset-1981 = Sritasker +names-vox-dataset-1982 = Sritekrikrir +names-vox-dataset-1983 = Sriteskabe +names-vox-dataset-1984 = Sritiprebe +names-vox-dataset-1985 = Sritiske +names-vox-dataset-1986 = Sritrapashe +names-vox-dataset-1987 = Sritricha +names-vox-dataset-1988 = Sritripipir +names-vox-dataset-1989 = Srivake +names-vox-dataset-1990 = Srivaxa +names-vox-dataset-1991 = Srivekater +names-vox-dataset-1992 = Srivisra +names-vox-dataset-1993 = Srivrasrer +names-vox-dataset-1994 = Srivratre +names-vox-dataset-1995 = Srivrihrir +names-vox-dataset-1996 = Srixakrabebe +names-vox-dataset-1997 = Srixiveyaya +names-vox-dataset-1998 = Sriyapir +names-vox-dataset-1999 = Taabavrivrir +names-vox-dataset-2000 = Taabexitaski +names-vox-dataset-2001 = Taabiprete +names-vox-dataset-2002 = Taachabe +names-vox-dataset-2003 = Taacrahre +names-vox-dataset-2004 = Taacrecrasra +names-vox-dataset-2005 = Taacripi +names-vox-dataset-2006 = Taacrisretri +names-vox-dataset-2007 = Taahahre +names-vox-dataset-2008 = Taahecreta +names-vox-dataset-2009 = Taaherarak +names-vox-dataset-2010 = Taahiha +names-vox-dataset-2011 = Taahiska +names-vox-dataset-2012 = Taahivri +names-vox-dataset-2013 = Taahreke +names-vox-dataset-2014 = Taahrishepri +names-vox-dataset-2015 = Taakahevava +names-vox-dataset-2016 = Taakapa +names-vox-dataset-2017 = Taakexisker +names-vox-dataset-2018 = Taakraba +names-vox-dataset-2019 = Taapavevekik +names-vox-dataset-2020 = Taapecra +names-vox-dataset-2021 = Taapikashi +names-vox-dataset-2022 = Taapipihare +names-vox-dataset-2023 = Taapishi +names-vox-dataset-2024 = Taaprachikri +names-vox-dataset-2025 = Taaprivrapre +names-vox-dataset-2026 = Taarecra +names-vox-dataset-2027 = Taareshekra +names-vox-dataset-2028 = Taashaxikir +names-vox-dataset-2029 = Taashebititi +names-vox-dataset-2030 = Taaskatir +names-vox-dataset-2031 = Taaskevevava +names-vox-dataset-2032 = Taaskiteki +names-vox-dataset-2033 = Taasrebicre +names-vox-dataset-2034 = Taasrehrira +names-vox-dataset-2035 = Taasrikikit +names-vox-dataset-2036 = Taasritar +names-vox-dataset-2037 = Taataxe +names-vox-dataset-2038 = Taatevasre +names-vox-dataset-2039 = Taatihra +names-vox-dataset-2040 = Taatrate +names-vox-dataset-2041 = Taatrivivit +names-vox-dataset-2042 = Taavape +names-vox-dataset-2043 = Taavavrexi +names-vox-dataset-2044 = Taavrerapava +names-vox-dataset-2045 = Taavretri +names-vox-dataset-2046 = Taavrivi +names-vox-dataset-2047 = Taaxekakat +names-vox-dataset-2048 = Taaxesrite +names-vox-dataset-2049 = Taaxikra +names-vox-dataset-2050 = Taayarashe +names-vox-dataset-2051 = Teebapresri +names-vox-dataset-2052 = Teebechiya +names-vox-dataset-2053 = Teebivrichi +names-vox-dataset-2054 = Teechacraha +names-vox-dataset-2055 = Teechexe +names-vox-dataset-2056 = Teechihakri +names-vox-dataset-2057 = Teecrekrihre +names-vox-dataset-2058 = Teecrepeski +names-vox-dataset-2059 = Teecretri +names-vox-dataset-2060 = Teecrevretre +names-vox-dataset-2061 = Teehapraprar +names-vox-dataset-2062 = Teeheri +names-vox-dataset-2063 = Teehrahar +names-vox-dataset-2064 = Teehrepeskir +names-vox-dataset-2065 = Teehrirepipi +names-vox-dataset-2066 = Teekahicravi +names-vox-dataset-2067 = Teekepraxahe +names-vox-dataset-2068 = Teekipra +names-vox-dataset-2069 = Teepracrivri +names-vox-dataset-2070 = Teeprikexixi +names-vox-dataset-2071 = Teeraheher +names-vox-dataset-2072 = Teerecritri +names-vox-dataset-2073 = Teeriviyara +names-vox-dataset-2074 = Teeskapesri +names-vox-dataset-2075 = Teeskebecrar +names-vox-dataset-2076 = Teesrasraxa +names-vox-dataset-2077 = Teesrecha +names-vox-dataset-2078 = Teesretrir +names-vox-dataset-2079 = Teesribiba +names-vox-dataset-2080 = Teetahra +names-vox-dataset-2081 = Teetixi +names-vox-dataset-2082 = Teetrasrer +names-vox-dataset-2083 = Teetreskapri +names-vox-dataset-2084 = Teevahihivik +names-vox-dataset-2085 = Teevapriprar +names-vox-dataset-2086 = Teevepa +names-vox-dataset-2087 = Teevravreske +names-vox-dataset-2088 = Teexaketiti +names-vox-dataset-2089 = Teexera +names-vox-dataset-2090 = Teexihrir +names-vox-dataset-2091 = Teeyakra +names-vox-dataset-2092 = Tibaskaskak +names-vox-dataset-2093 = Tibasravava +names-vox-dataset-2094 = Tibihi +names-vox-dataset-2095 = Tibixita +names-vox-dataset-2096 = Ticheskivre +names-vox-dataset-2097 = Tichetritrir +names-vox-dataset-2098 = Tichiber +names-vox-dataset-2099 = Ticratevipe +names-vox-dataset-2100 = Tihichisketi +names-vox-dataset-2101 = Tihitre +names-vox-dataset-2102 = Tihresrevivi +names-vox-dataset-2103 = Tihrikakar +names-vox-dataset-2104 = Tikara +names-vox-dataset-2105 = Tikecribe +names-vox-dataset-2106 = Tikekitata +names-vox-dataset-2107 = Tikrasra +names-vox-dataset-2108 = Tikrevrihre +names-vox-dataset-2109 = Tipape +names-vox-dataset-2110 = Tipekrihripa +names-vox-dataset-2111 = Tipetripe +names-vox-dataset-2112 = Tipicre +names-vox-dataset-2113 = Tipreritaha +names-vox-dataset-2114 = Tipresrita +names-vox-dataset-2115 = Tiprititik +names-vox-dataset-2116 = Tireper +names-vox-dataset-2117 = Tiribavre +names-vox-dataset-2118 = Tiriberihehe +names-vox-dataset-2119 = Tiribikehe +names-vox-dataset-2120 = Tiribirakeke +names-vox-dataset-2121 = Tirichera +names-vox-dataset-2122 = Tirihayaya +names-vox-dataset-2123 = Tirihi +names-vox-dataset-2124 = Tirihra +names-vox-dataset-2125 = Tirihretrir +names-vox-dataset-2126 = Tirihriririk +names-vox-dataset-2127 = Tiriketeche +names-vox-dataset-2128 = Tirikeviha +names-vox-dataset-2129 = Tirikihrer +names-vox-dataset-2130 = Tirikrachir +names-vox-dataset-2131 = Tirikrasri +names-vox-dataset-2132 = Tiripechapre +names-vox-dataset-2133 = Tiripratra +names-vox-dataset-2134 = Tiriprexer +names-vox-dataset-2135 = Tirirahi +names-vox-dataset-2136 = Tirirapahre +names-vox-dataset-2137 = Tirirarat +names-vox-dataset-2138 = Tirirexiprer +names-vox-dataset-2139 = Tirisrehihit +names-vox-dataset-2140 = Tirisribe +names-vox-dataset-2141 = Tiritetasra +names-vox-dataset-2142 = Tiritrexi +names-vox-dataset-2143 = Tiritrivever +names-vox-dataset-2144 = Tiriveshi +names-vox-dataset-2145 = Tirivihachi +names-vox-dataset-2146 = Tirivrebire +names-vox-dataset-2147 = Tirixahiri +names-vox-dataset-2148 = Tirixebayar +names-vox-dataset-2149 = Tirixetatak +names-vox-dataset-2150 = Tirixishiski +names-vox-dataset-2151 = Tiriyaskacha +names-vox-dataset-2152 = Tishetrakaka +names-vox-dataset-2153 = Tiskasheske +names-vox-dataset-2154 = Tiskevritre +names-vox-dataset-2155 = Tiskicrar +names-vox-dataset-2156 = Tisraprepret +names-vox-dataset-2157 = Tisrasheshet +names-vox-dataset-2158 = Tisreshishit +names-vox-dataset-2159 = Tisreska +names-vox-dataset-2160 = Tisricre +names-vox-dataset-2161 = Tisriskiskir +names-vox-dataset-2162 = Tisrivexa +names-vox-dataset-2163 = Titeskeskek +names-vox-dataset-2164 = Titrabetiti +names-vox-dataset-2165 = Titretepeka +names-vox-dataset-2166 = Tivarahi +names-vox-dataset-2167 = Tivecra +names-vox-dataset-2168 = Tivecri +names-vox-dataset-2169 = Tivepa +names-vox-dataset-2170 = Tivevipe +names-vox-dataset-2171 = Tivexa +names-vox-dataset-2172 = Tiviskaskak +names-vox-dataset-2173 = Tixapipripri +names-vox-dataset-2174 = Tixetritrik +names-vox-dataset-2175 = Tixikekra +names-vox-dataset-2176 = Tixititik +names-vox-dataset-2177 = Tixixesrer +names-vox-dataset-2178 = Tiyapraprak +names-vox-dataset-2179 = Tiyaskaskat +names-vox-dataset-2180 = Trabari +names-vox-dataset-2181 = Trabisrer +names-vox-dataset-2182 = Tracrecrehri +names-vox-dataset-2183 = Tracreprake +names-vox-dataset-2184 = Trahahehetir +names-vox-dataset-2185 = Trahekehe +names-vox-dataset-2186 = Trahevreske +names-vox-dataset-2187 = Trahrepa +names-vox-dataset-2188 = Trahrevrava +names-vox-dataset-2189 = Trakehre +names-vox-dataset-2190 = Trakrapra +names-vox-dataset-2191 = Trakritevrer +names-vox-dataset-2192 = Trapavrivrir +names-vox-dataset-2193 = Trareskire +names-vox-dataset-2194 = Trashete +names-vox-dataset-2195 = Trasheve +names-vox-dataset-2196 = Trashevepri +names-vox-dataset-2197 = Trashipaxe +names-vox-dataset-2198 = Trasraveski +names-vox-dataset-2199 = Trasreve +names-vox-dataset-2200 = Tratibekaka +names-vox-dataset-2201 = Tratihrer +names-vox-dataset-2202 = Tratravi +names-vox-dataset-2203 = Tratraxixik +names-vox-dataset-2204 = Tratribi +names-vox-dataset-2205 = Travaxeski +names-vox-dataset-2206 = Travetretrek +names-vox-dataset-2207 = Travraripepe +names-vox-dataset-2208 = Travribesre +names-vox-dataset-2209 = Traxipi +names-vox-dataset-2210 = Traxiprer +names-vox-dataset-2211 = Trebahe +names-vox-dataset-2212 = Trebirerever +names-vox-dataset-2213 = Trebishivava +names-vox-dataset-2214 = Trebitratrak +names-vox-dataset-2215 = Trechacra +names-vox-dataset-2216 = Trechekrasri +names-vox-dataset-2217 = Trechesre +names-vox-dataset-2218 = Trechesrecre +names-vox-dataset-2219 = Trecrehehek +names-vox-dataset-2220 = Trehixapri +names-vox-dataset-2221 = Trehrakrepre +names-vox-dataset-2222 = Trehripra +names-vox-dataset-2223 = Trekatri +names-vox-dataset-2224 = Trekatricre +names-vox-dataset-2225 = Trekavixixi +names-vox-dataset-2226 = Trekavriki +names-vox-dataset-2227 = Trekebeti +names-vox-dataset-2228 = Trekeski +names-vox-dataset-2229 = Treketibita +names-vox-dataset-2230 = Treketra +names-vox-dataset-2231 = Trekibabat +names-vox-dataset-2232 = Trepake +names-vox-dataset-2233 = Treprabiveve +names-vox-dataset-2234 = Treprahrepi +names-vox-dataset-2235 = Treprebekra +names-vox-dataset-2236 = Treprehehet +names-vox-dataset-2237 = Trerevivipek +names-vox-dataset-2238 = Treshepra +names-vox-dataset-2239 = Treshibar +names-vox-dataset-2240 = Treshipeska +names-vox-dataset-2241 = Treskari +names-vox-dataset-2242 = Tresketara +names-vox-dataset-2243 = Treskiskakir +names-vox-dataset-2244 = Tresracrir +names-vox-dataset-2245 = Tresrasker +names-vox-dataset-2246 = Tresratracre +names-vox-dataset-2247 = Tresravritre +names-vox-dataset-2248 = Tresreba +names-vox-dataset-2249 = Tresrihivri +names-vox-dataset-2250 = Tretapra +names-vox-dataset-2251 = Tretrahri +names-vox-dataset-2252 = Tretreske +names-vox-dataset-2253 = Tretrikicha +names-vox-dataset-2254 = Trevabihra +names-vox-dataset-2255 = Trevepa +names-vox-dataset-2256 = Trevetretrek +names-vox-dataset-2257 = Trevicra +names-vox-dataset-2258 = Trexatri +names-vox-dataset-2259 = Trexavra +names-vox-dataset-2260 = Trexetri +names-vox-dataset-2261 = Trexiricrara +names-vox-dataset-2262 = Treyakracra +names-vox-dataset-2263 = Treyaxihehe +names-vox-dataset-2264 = Tribexexet +names-vox-dataset-2265 = Tribirekri +names-vox-dataset-2266 = Trichakripre +names-vox-dataset-2267 = Trichiski +names-vox-dataset-2268 = Tricracri +names-vox-dataset-2269 = Tricrekapa +names-vox-dataset-2270 = Tricripe +names-vox-dataset-2271 = Trihavever +names-vox-dataset-2272 = Trihera +names-vox-dataset-2273 = Trihexisra +names-vox-dataset-2274 = Trihicrecrek +names-vox-dataset-2275 = Trihitrar +names-vox-dataset-2276 = Tripesrishe +names-vox-dataset-2277 = Tripever +names-vox-dataset-2278 = Triprakraxi +names-vox-dataset-2279 = Triprakri +names-vox-dataset-2280 = Trirahecri +names-vox-dataset-2281 = Trirapraxar +names-vox-dataset-2282 = Trireche +names-vox-dataset-2283 = Trishakretra +names-vox-dataset-2284 = Trishecrexir +names-vox-dataset-2285 = Trishepi +names-vox-dataset-2286 = Trishisrar +names-vox-dataset-2287 = Triskavri +names-vox-dataset-2288 = Trisketir +names-vox-dataset-2289 = Triskiyayat +names-vox-dataset-2290 = Trisrachiri +names-vox-dataset-2291 = Trisrevre +names-vox-dataset-2292 = Trisrisri +names-vox-dataset-2293 = Trisrisriper +names-vox-dataset-2294 = Trisrite +names-vox-dataset-2295 = Tritetre +names-vox-dataset-2296 = Tritrakepre +names-vox-dataset-2297 = Tritrichatri +names-vox-dataset-2298 = Tritriskari +names-vox-dataset-2299 = Trivriskeki +names-vox-dataset-2300 = Trivritipipi +names-vox-dataset-2301 = Trivriyayak +names-vox-dataset-2302 = Trixihahar +names-vox-dataset-2303 = Trixitri +names-vox-dataset-2304 = Triyashekiki +names-vox-dataset-2305 = Vabahecre +names-vox-dataset-2306 = Vabahrabebe +names-vox-dataset-2307 = Vabebir +names-vox-dataset-2308 = Vabehetre +names-vox-dataset-2309 = Vabetrahacha +names-vox-dataset-2310 = Vabivri +names-vox-dataset-2311 = Vachahrirere +names-vox-dataset-2312 = Vachavri +names-vox-dataset-2313 = Vachekihri +names-vox-dataset-2314 = Vachicratata +names-vox-dataset-2315 = Vachiske +names-vox-dataset-2316 = Vacracreki +names-vox-dataset-2317 = Vacrebihi +names-vox-dataset-2318 = Vacripra +names-vox-dataset-2319 = Vahapapashek +names-vox-dataset-2320 = Vahapraxe +names-vox-dataset-2321 = Vahasker +names-vox-dataset-2322 = Vaherekiki +names-vox-dataset-2323 = Vahibebeprek +names-vox-dataset-2324 = Vahivihahe +names-vox-dataset-2325 = Vakaheva +names-vox-dataset-2326 = Vakecha +names-vox-dataset-2327 = Vakevixixi +names-vox-dataset-2328 = Vakikepripra +names-vox-dataset-2329 = Vapeyayak +names-vox-dataset-2330 = Vapikevra +names-vox-dataset-2331 = Vapipribe +names-vox-dataset-2332 = Vaprakakak +names-vox-dataset-2333 = Vaprisra +names-vox-dataset-2334 = Vapritasha +names-vox-dataset-2335 = Varebitacre +names-vox-dataset-2336 = Varekricreki +names-vox-dataset-2337 = Vashakrikrik +names-vox-dataset-2338 = Vaskexititi +names-vox-dataset-2339 = Vaskiprexi +names-vox-dataset-2340 = Vaskivri +names-vox-dataset-2341 = Vaskiyahi +names-vox-dataset-2342 = Vasraprikre +names-vox-dataset-2343 = Vasrevi +names-vox-dataset-2344 = Vatracraxixi +names-vox-dataset-2345 = Vatrevi +names-vox-dataset-2346 = Vatriva +names-vox-dataset-2347 = Vavehihisrek +names-vox-dataset-2348 = Vavrisrasri +names-vox-dataset-2349 = Vaxeki +names-vox-dataset-2350 = Vaxeraskeske +names-vox-dataset-2351 = Vebexaxat +names-vox-dataset-2352 = Vebicheta +names-vox-dataset-2353 = Vechecricrik +names-vox-dataset-2354 = Vecraxicra +names-vox-dataset-2355 = Vecriche +names-vox-dataset-2356 = Vecritrika +names-vox-dataset-2357 = Vehevrer +names-vox-dataset-2358 = Vehratrir +names-vox-dataset-2359 = Vehraxexek +names-vox-dataset-2360 = Vehritrexe +names-vox-dataset-2361 = Vekarasra +names-vox-dataset-2362 = Vekaxivivi +names-vox-dataset-2363 = Vekehribaba +names-vox-dataset-2364 = Vekirevi +names-vox-dataset-2365 = Vekracri +names-vox-dataset-2366 = Vekreka +names-vox-dataset-2367 = Vekrekrikrit +names-vox-dataset-2368 = Vekrerikra +names-vox-dataset-2369 = Vekrishar +names-vox-dataset-2370 = Vekrishicha +names-vox-dataset-2371 = Vepekre +names-vox-dataset-2372 = Veprahahat +names-vox-dataset-2373 = Veprechahri +names-vox-dataset-2374 = Veprecrar +names-vox-dataset-2375 = Veprecrecrek +names-vox-dataset-2376 = Vepreritare +names-vox-dataset-2377 = Veretitishit +names-vox-dataset-2378 = Vericharihra +names-vox-dataset-2379 = Verikisresre +names-vox-dataset-2380 = Veshacricrik +names-vox-dataset-2381 = Veshebixexe +names-vox-dataset-2382 = Veshecrihapi +names-vox-dataset-2383 = Veshehe +names-vox-dataset-2384 = Veshepreprek +names-vox-dataset-2385 = Veshishakra +names-vox-dataset-2386 = Veskapi +names-vox-dataset-2387 = Veskepayaya +names-vox-dataset-2388 = Veskepevra +names-vox-dataset-2389 = Vesrihiska +names-vox-dataset-2390 = Vetepeti +names-vox-dataset-2391 = Vetracripi +names-vox-dataset-2392 = Vetreshashat +names-vox-dataset-2393 = Vetriskira +names-vox-dataset-2394 = Vevatre +names-vox-dataset-2395 = Vevevre +names-vox-dataset-2396 = Vevivesha +names-vox-dataset-2397 = Vevreshir +names-vox-dataset-2398 = Vevricrecrek +names-vox-dataset-2399 = Vevrisrasrat +names-vox-dataset-2400 = Vexachebashi +names-vox-dataset-2401 = Vexavever +names-vox-dataset-2402 = Vexikar +names-vox-dataset-2403 = Vexisrecri +names-vox-dataset-2404 = Vibepraxaba +names-vox-dataset-2405 = Vibeta +names-vox-dataset-2406 = Vichehiriri +names-vox-dataset-2407 = Vichitribihe +names-vox-dataset-2408 = Vicrahrehrek +names-vox-dataset-2409 = Vicrevevre +names-vox-dataset-2410 = Vicrikre +names-vox-dataset-2411 = Vicripasre +names-vox-dataset-2412 = Vicritebaba +names-vox-dataset-2413 = Vicriviriki +names-vox-dataset-2414 = Viheche +names-vox-dataset-2415 = Vihecracheki +names-vox-dataset-2416 = Vihepra +names-vox-dataset-2417 = Vihratekra +names-vox-dataset-2418 = Vihrexahihi +names-vox-dataset-2419 = Vihribihiska +names-vox-dataset-2420 = Vihricra +names-vox-dataset-2421 = Vihriher +names-vox-dataset-2422 = Vihriprar +names-vox-dataset-2423 = Vihrisreher +names-vox-dataset-2424 = Vikahrekri +names-vox-dataset-2425 = Vikakehreri +names-vox-dataset-2426 = Vikavebari +names-vox-dataset-2427 = Vikekiski +names-vox-dataset-2428 = Vikihahre +names-vox-dataset-2429 = Vikitrexa +names-vox-dataset-2430 = Vikrebibit +names-vox-dataset-2431 = Vikrihi +names-vox-dataset-2432 = Vikritahahe +names-vox-dataset-2433 = Vipeskixa +names-vox-dataset-2434 = Vipravrakrar +names-vox-dataset-2435 = Viprevrar +names-vox-dataset-2436 = Virabebevrek +names-vox-dataset-2437 = Viratrerera +names-vox-dataset-2438 = Virepri +names-vox-dataset-2439 = Viriprixiche +names-vox-dataset-2440 = Virirevrare +names-vox-dataset-2441 = Viritritrik +names-vox-dataset-2442 = Viskeski +names-vox-dataset-2443 = Visrecrecret +names-vox-dataset-2444 = Visriskir +names-vox-dataset-2445 = Vitexexet +names-vox-dataset-2446 = Vitibibihrik +names-vox-dataset-2447 = Vitika +names-vox-dataset-2448 = Vitracrevi +names-vox-dataset-2449 = Vitrasheshek +names-vox-dataset-2450 = Vitraviketa +names-vox-dataset-2451 = Vitravrire +names-vox-dataset-2452 = Vitreskaskak +names-vox-dataset-2453 = Vitrisrasha +names-vox-dataset-2454 = Vitrivechere +names-vox-dataset-2455 = Vivashate +names-vox-dataset-2456 = Vivecrixexe +names-vox-dataset-2457 = Viveprehehe +names-vox-dataset-2458 = Viveprepe +names-vox-dataset-2459 = Vivixixihir +names-vox-dataset-2460 = Vivrashaya +names-vox-dataset-2461 = Vixiticrixi +names-vox-dataset-2462 = Vrabaprakaka +names-vox-dataset-2463 = Vrabikape +names-vox-dataset-2464 = Vracharitri +names-vox-dataset-2465 = Vrachishachi +names-vox-dataset-2466 = Vrachitasre +names-vox-dataset-2467 = Vracrebihehe +names-vox-dataset-2468 = Vraheska +names-vox-dataset-2469 = Vrahrehripre +names-vox-dataset-2470 = Vrakasrahi +names-vox-dataset-2471 = Vrakayasraxi +names-vox-dataset-2472 = Vrakebibit +names-vox-dataset-2473 = Vrakriperi +names-vox-dataset-2474 = Vrakritatat +names-vox-dataset-2475 = Vrapaheke +names-vox-dataset-2476 = Vrapresriki +names-vox-dataset-2477 = Vraprexave +names-vox-dataset-2478 = Vrarekikik +names-vox-dataset-2479 = Vrarihritete +names-vox-dataset-2480 = Vraripechi +names-vox-dataset-2481 = Vrashexa +names-vox-dataset-2482 = Vraskekaki +names-vox-dataset-2483 = Vraskevexar +names-vox-dataset-2484 = Vrasrehahar +names-vox-dataset-2485 = Vrasreshahi +names-vox-dataset-2486 = Vratavivit +names-vox-dataset-2487 = Vratevretra +names-vox-dataset-2488 = Vratrakere +names-vox-dataset-2489 = Vratreskevi +names-vox-dataset-2490 = Vratrite +names-vox-dataset-2491 = Vratrivar +names-vox-dataset-2492 = Vravabepra +names-vox-dataset-2493 = Vravacrahri +names-vox-dataset-2494 = Vravavra +names-vox-dataset-2495 = Vravexe +names-vox-dataset-2496 = Vraviveya +names-vox-dataset-2497 = Vravrache +names-vox-dataset-2498 = Vraxihihit +names-vox-dataset-2499 = Vrayavri +names-vox-dataset-2500 = Vrebehrihrik +names-vox-dataset-2501 = Vrebisra +names-vox-dataset-2502 = Vrecrarake +names-vox-dataset-2503 = Vrecrihri +names-vox-dataset-2504 = Vrehabi +names-vox-dataset-2505 = Vrehacre +names-vox-dataset-2506 = Vrehakatar +names-vox-dataset-2507 = Vrehasker +names-vox-dataset-2508 = Vrehecreri +names-vox-dataset-2509 = Vrehibehe +names-vox-dataset-2510 = Vrehibibipik +names-vox-dataset-2511 = Vrehipe +names-vox-dataset-2512 = Vrehipraprak +names-vox-dataset-2513 = Vrehriviche +names-vox-dataset-2514 = Vrekahrichi +names-vox-dataset-2515 = Vrekihrer +names-vox-dataset-2516 = Vrekipepet +names-vox-dataset-2517 = Vrekrixa +names-vox-dataset-2518 = Vrepate +names-vox-dataset-2519 = Vrepexexer +names-vox-dataset-2520 = Vreprehapre +names-vox-dataset-2521 = Vreprihrite +names-vox-dataset-2522 = Vrererikra +names-vox-dataset-2523 = Vrerikriskir +names-vox-dataset-2524 = Vreshabar +names-vox-dataset-2525 = Vreshihishar +names-vox-dataset-2526 = Vreshike +names-vox-dataset-2527 = Vreskatre +names-vox-dataset-2528 = Vresrasre +names-vox-dataset-2529 = Vresretatra +names-vox-dataset-2530 = Vretesravi +names-vox-dataset-2531 = Vretixixir +names-vox-dataset-2532 = Vretrapapar +names-vox-dataset-2533 = Vretrehivivi +names-vox-dataset-2534 = Vretricre +names-vox-dataset-2535 = Vrevahrir +names-vox-dataset-2536 = Vrevashixexe +names-vox-dataset-2537 = Vrevrekrer +names-vox-dataset-2538 = Vrexacracrat +names-vox-dataset-2539 = Vrexaker +names-vox-dataset-2540 = Vribetretret +names-vox-dataset-2541 = Vribipita +names-vox-dataset-2542 = Vribiprevite +names-vox-dataset-2543 = Vricrehakra +names-vox-dataset-2544 = Vricrihi +names-vox-dataset-2545 = Vricriskeche +names-vox-dataset-2546 = Vrihehra +names-vox-dataset-2547 = Vriheski +names-vox-dataset-2548 = Vrihrakre +names-vox-dataset-2549 = Vrihrekrepi +names-vox-dataset-2550 = Vrikayaba +names-vox-dataset-2551 = Vrikivresker +names-vox-dataset-2552 = Vrikrake +names-vox-dataset-2553 = Vrikrebacre +names-vox-dataset-2554 = Vrikresrasri +names-vox-dataset-2555 = Vripere +names-vox-dataset-2556 = Vripexavri +names-vox-dataset-2557 = Vripitikeske +names-vox-dataset-2558 = Vriprivra +names-vox-dataset-2559 = Vrirachesri +names-vox-dataset-2560 = Vririsha +names-vox-dataset-2561 = Vrisketaske +names-vox-dataset-2562 = Vriskiraxe +names-vox-dataset-2563 = Vriskire +names-vox-dataset-2564 = Vrisracrakri +names-vox-dataset-2565 = Vrisrekari +names-vox-dataset-2566 = Vrisreviki +names-vox-dataset-2567 = Vritasre +names-vox-dataset-2568 = Vriterepi +names-vox-dataset-2569 = Vritetrexa +names-vox-dataset-2570 = Vritika +names-vox-dataset-2571 = Vritiske +names-vox-dataset-2572 = Vritivraki +names-vox-dataset-2573 = Vritrihrar +names-vox-dataset-2574 = Vritrisre +names-vox-dataset-2575 = Vrivahi +names-vox-dataset-2576 = Vrivahishaya +names-vox-dataset-2577 = Vrivehatri +names-vox-dataset-2578 = Vrivitri +names-vox-dataset-2579 = Vrixashashar +names-vox-dataset-2580 = Vrixavribape +names-vox-dataset-2581 = Vrixeprir +names-vox-dataset-2582 = Vrixiprehre +names-vox-dataset-2583 = Vrixitreveki +names-vox-dataset-2584 = Vrixivraxe +names-vox-dataset-2585 = Xabishetra +names-vox-dataset-2586 = Xachivrivrit +names-vox-dataset-2587 = Xacripikar +names-vox-dataset-2588 = Xacriprixi +names-vox-dataset-2589 = Xacrivir +names-vox-dataset-2590 = Xahatavri +names-vox-dataset-2591 = Xahesketivri +names-vox-dataset-2592 = Xahrapaba +names-vox-dataset-2593 = Xahraprer +names-vox-dataset-2594 = Xahrebave +names-vox-dataset-2595 = Xahripavava +names-vox-dataset-2596 = Xakahri +names-vox-dataset-2597 = Xakayayakat +names-vox-dataset-2598 = Xakrevaratra +names-vox-dataset-2599 = Xapakra +names-vox-dataset-2600 = Xapikrikrik +names-vox-dataset-2601 = Xapipevrevre +names-vox-dataset-2602 = Xapraskapika +names-vox-dataset-2603 = Xaprate +names-vox-dataset-2604 = Xapravri +names-vox-dataset-2605 = Xapripraprar +names-vox-dataset-2606 = Xaracrivri +names-vox-dataset-2607 = Xaratripepe +names-vox-dataset-2608 = Xarebiya +names-vox-dataset-2609 = Xareva +names-vox-dataset-2610 = Xariheheprat +names-vox-dataset-2611 = Xashihapa +names-vox-dataset-2612 = Xaskakaba +names-vox-dataset-2613 = Xaskararater +names-vox-dataset-2614 = Xasrapipik +names-vox-dataset-2615 = Xasreskihibi +names-vox-dataset-2616 = Xatachasri +names-vox-dataset-2617 = Xatereret +names-vox-dataset-2618 = Xatiriskiski +names-vox-dataset-2619 = Xatrexixik +names-vox-dataset-2620 = Xavasrarihi +names-vox-dataset-2621 = Xaveshi +names-vox-dataset-2622 = Xavicrari +names-vox-dataset-2623 = Xavrahavri +names-vox-dataset-2624 = Xavricri +names-vox-dataset-2625 = Xavrire +names-vox-dataset-2626 = Xavrixecre +names-vox-dataset-2627 = Xaxikaxexe +names-vox-dataset-2628 = Xaxikresha +names-vox-dataset-2629 = Xaxiska +names-vox-dataset-2630 = Xayaskihri +names-vox-dataset-2631 = Xebechi +names-vox-dataset-2632 = Xebetetet +names-vox-dataset-2633 = Xebitretrek +names-vox-dataset-2634 = Xechacrecrek +names-vox-dataset-2635 = Xechibare +names-vox-dataset-2636 = Xecrixaxitre +names-vox-dataset-2637 = Xehekikir +names-vox-dataset-2638 = Xehetipe +names-vox-dataset-2639 = Xehichatavra +names-vox-dataset-2640 = Xehiprishe +names-vox-dataset-2641 = Xehiteche +names-vox-dataset-2642 = Xehrevrakre +names-vox-dataset-2643 = Xehrishe +names-vox-dataset-2644 = Xekerarivra +names-vox-dataset-2645 = Xekicra +names-vox-dataset-2646 = Xekrecri +names-vox-dataset-2647 = Xekrevri +names-vox-dataset-2648 = Xekrevripa +names-vox-dataset-2649 = Xepavikeba +names-vox-dataset-2650 = Xepehati +names-vox-dataset-2651 = Xepeter +names-vox-dataset-2652 = Xepetitipet +names-vox-dataset-2653 = Xeprasre +names-vox-dataset-2654 = Xeprekivra +names-vox-dataset-2655 = Xeprihehek +names-vox-dataset-2656 = Xeshachikaha +names-vox-dataset-2657 = Xeskapakre +names-vox-dataset-2658 = Xeskehrabe +names-vox-dataset-2659 = Xesribar +names-vox-dataset-2660 = Xetekir +names-vox-dataset-2661 = Xetraskesket +names-vox-dataset-2662 = Xetravivik +names-vox-dataset-2663 = Xetrexahihi +names-vox-dataset-2664 = Xetribirer +names-vox-dataset-2665 = Xetripi +names-vox-dataset-2666 = Xevetaske +names-vox-dataset-2667 = Xevratikepa +names-vox-dataset-2668 = Xevriya +names-vox-dataset-2669 = Xexapra +names-vox-dataset-2670 = Xexavi +names-vox-dataset-2671 = Xexibir +names-vox-dataset-2672 = Xexiski +names-vox-dataset-2673 = Xeyapre +names-vox-dataset-2674 = Xeyaribe +names-vox-dataset-2675 = Xeyaskapibe +names-vox-dataset-2676 = Xibecracrak +names-vox-dataset-2677 = Xibeha +names-vox-dataset-2678 = Xibepribe +names-vox-dataset-2679 = Xibitratrar +names-vox-dataset-2680 = Xihechevar +names-vox-dataset-2681 = Xihrahehete +names-vox-dataset-2682 = Xihrashehihi +names-vox-dataset-2683 = Xihrecreve +names-vox-dataset-2684 = Xihresra +names-vox-dataset-2685 = Xihrivever +names-vox-dataset-2686 = Xikabebet +names-vox-dataset-2687 = Xikahihi +names-vox-dataset-2688 = Xikashaxe +names-vox-dataset-2689 = Xikaske +names-vox-dataset-2690 = Xikepehrahra +names-vox-dataset-2691 = Xikicha +names-vox-dataset-2692 = Xikrahrihrik +names-vox-dataset-2693 = Xikrakipi +names-vox-dataset-2694 = Xikreshe +names-vox-dataset-2695 = Xikreska +names-vox-dataset-2696 = Xikrexiva +names-vox-dataset-2697 = Xikrihe +names-vox-dataset-2698 = Xikripar +names-vox-dataset-2699 = Xipahihik +names-vox-dataset-2700 = Xipita +names-vox-dataset-2701 = Xiprahahatek +names-vox-dataset-2702 = Xirechiske +names-vox-dataset-2703 = Xireshishit +names-vox-dataset-2704 = Xiribakrivi +names-vox-dataset-2705 = Xirichare +names-vox-dataset-2706 = Xirichebacra +names-vox-dataset-2707 = Xirichiter +names-vox-dataset-2708 = Xiricraki +names-vox-dataset-2709 = Xirihacrir +names-vox-dataset-2710 = Xirihiske +names-vox-dataset-2711 = Xirihiyatape +names-vox-dataset-2712 = Xirihrekakar +names-vox-dataset-2713 = Xirihretecre +names-vox-dataset-2714 = Xirihriti +names-vox-dataset-2715 = Xirikesrirer +names-vox-dataset-2716 = Xiriketi +names-vox-dataset-2717 = Xiripape +names-vox-dataset-2718 = Xiririhecher +names-vox-dataset-2719 = Xiririke +names-vox-dataset-2720 = Xiriripatibe +names-vox-dataset-2721 = Xirishepivre +names-vox-dataset-2722 = Xirishexi +names-vox-dataset-2723 = Xiriskapa +names-vox-dataset-2724 = Xirisketa +names-vox-dataset-2725 = Xiriskicreha +names-vox-dataset-2726 = Xirisrevre +names-vox-dataset-2727 = Xirisricreva +names-vox-dataset-2728 = Xiritracre +names-vox-dataset-2729 = Xiritreprer +names-vox-dataset-2730 = Xiritretrar +names-vox-dataset-2731 = Xirivetrikra +names-vox-dataset-2732 = Xirivexicri +names-vox-dataset-2733 = Xirivre +names-vox-dataset-2734 = Xirivrehra +names-vox-dataset-2735 = Xirixekrari +names-vox-dataset-2736 = Xishahrixixi +names-vox-dataset-2737 = Xishatre +names-vox-dataset-2738 = Xishehraxaxa +names-vox-dataset-2739 = Xishikra +names-vox-dataset-2740 = Xiskatreka +names-vox-dataset-2741 = Xiskeche +names-vox-dataset-2742 = Xiskehrahar +names-vox-dataset-2743 = Xiskicratake +names-vox-dataset-2744 = Xiskiririr +names-vox-dataset-2745 = Xisrecracrak +names-vox-dataset-2746 = Xisreva +names-vox-dataset-2747 = Xisritetet +names-vox-dataset-2748 = Xitachabibi +names-vox-dataset-2749 = Xitachixaxa +names-vox-dataset-2750 = Xitariritak +names-vox-dataset-2751 = Xitebehrer +names-vox-dataset-2752 = Xitreprecri +names-vox-dataset-2753 = Xivavraxexe +names-vox-dataset-2754 = Xiveski +names-vox-dataset-2755 = Xivivri +names-vox-dataset-2756 = Xivrahrare +names-vox-dataset-2757 = Xivrakrakrak +names-vox-dataset-2758 = Xivrihihicra +names-vox-dataset-2759 = Xixaxekaka +names-vox-dataset-2760 = Xixecra +names-vox-dataset-2761 = Xixiche diff --git a/Resources/Prototypes/Datasets/Names/vox.yml b/Resources/Prototypes/Datasets/Names/vox.yml index acb96f85da..072d1f0b3a 100644 --- a/Resources/Prototypes/Datasets/Names/vox.yml +++ b/Resources/Prototypes/Datasets/Names/vox.yml @@ -1,2764 +1,5 @@ -- type: dataset - id: names_vox +- type: localizedDataset + id: NamesVox values: - - Babapir - - Babasri - - Babepipit - - Bachakehi - - Bacheska - - Bachishesher - - Bacrapri - - Bacreska - - Bahepra - - Bahicrecrek - - Bahikravre - - Bakabepa - - Bakehahak - - Bakeki - - Bapechichik - - Bapekikik - - Baperi - - Bapravavar - - Bapreba - - Bapretritrir - - Baracreber - - Barahri - - Baraskahrita - - Baraxixik - - Bashiskir - - Baskaskakre - - Baskivihi - - Basreba - - Batapriri - - Batasrecrar - - Batehrahrat - - Batrakiha - - Batravika - - Batrepriski - - Batresri - - Batriska - - Batritra - - Bavasha - - Bavebebek - - Bavraskikaka - - Bavricriski - - Baxahehrer - - Baxeve - - Bebebapa - - Bebeterara - - Bebipaska - - Bechetapeka - - Becrerisre - - Becretretrer - - Beheka - - Behivresha - - Behrechechek - - Behrekri - - Behreyayat - - Behricririri - - Behritixaxa - - Bekapesresre - - Bekashishik - - Beketatratra - - Bekrechaxe - - Bekresrare - - Bekribe - - Bepararakrit - - Bepatricher - - Bepehisrepra - - Bepihar - - Bepitrashi - - Bepresri - - Berabi - - Beraka - - Berecricrir - - Berisre - - Beshachari - - Besheskexexe - - Beshesre - - Beshesretre - - Beskayavrer - - Beskisrasrak - - Beskitre - - Besravivit - - Besrivir - - Betababatrat - - Betere - - Beticreche - - Bevekakat - - Bevihichabi - - Bevihraki - - Bevrasheshet - - Bibaba - - Bibabir - - Bibati - - Bibekricha - - Bibexa - - Bibibabat - - Bibiya - - Bichechir - - Bicrakipepe - - Bicrevrite - - Bihrapivra - - Bihraxibebe - - Bihrishicha - - Bihrivriski - - Bikivri - - Bikraskixexe - - Bikrivrivrit - - Bipekisri - - Bipiritecre - - Bipratraxi - - Biprexi - - Biprivar - - Birachi - - Bisheba - - Bishehri - - Bishevrivra - - Bishiki - - Biskeskavra - - Bisrahresha - - Bisrepipit - - Bitavi - - Bitehatiti - - Bivacri - - Bivape - - Bivihachakre - - Bivitikiva - - Bivrapri - - Bivraske - - Bivrehaski - - Bivrihra - - Bixachetra - - Bixapetra - - Bixapriprik - - Bixexir - - Biyakir - - Chabaha - - Chabakrekrer - - Chabebache - - Chabepebe - - Chabikrahihi - - Chachahe - - Chachevra - - Chacrerehra - - Chahekre - - Chahixe - - Chahravrer - - Chahrixehra - - Chakakiva - - Chakapraprar - - Chakehashe - - Chakiprihi - - Chakivre - - Chakricrivi - - Chapachichit - - Chaparachi - - Chapehresha - - Chapeshiski - - Chapixahi - - Chaprahebibi - - Chaprecraha - - Chaprecrevi - - Charaprehiki - - Charapriska - - Charara - - Charate - - Charatraki - - Charekreski - - Charesribe - - Charichechet - - Charisha - - Chashaber - - Chashereska - - Chaskeke - - Chasraskaska - - Chasrechata - - Chasrevravi - - Chasrihiprer - - Chatrexixe - - Chavicreshi - - Chavrikre - - Chaxakrahehe - - Chaxeskehre - - Chaxevrahi - - Chaxivre - - Chebabebet - - Chebavi - - Chebebibivar - - Chebehecri - - Chebehrihrit - - Chebihihit - - Chebiretete - - Chebisra - - Chechapraver - - Checraxa - - Checrera - - Checretasre - - Checretrisre - - Checrisre - - Chehashababa - - Chehebicri - - Chehepre - - Chehisker - - Chehraxashir - - Chekrahraka - - Chekravixa - - Chekretitit - - Chepakakatat - - Chepekakak - - Chepipracra - - Chepitipe - - Chepraskavri - - Cheshirikra - - Cheshive - - Cheskapra - - Cheskavre - - Chesrakeyaya - - Chesravre - - Chesrevi - - Chesrevratra - - Chesrirititi - - Chetaxapa - - Chetaxapre - - Cheterarat - - Chetiska - - Chetritreti - - Chetriya - - Chevasrasrak - - Chevrepre - - Chevrivir - - Chexararahir - - Chexecraski - - Chexepraprar - - Chexexaxapa - - Chexisreka - - Chexitre - - Cheyaverere - - Chibakre - - Chibihra - - Chichabikaka - - Chichavrehre - - Chicrikishi - - Chicrirake - - Chicrivivit - - Chihahrehrek - - Chihasre - - Chihatrachi - - Chihayayabik - - Chiheche - - Chihehreba - - Chihreratri - - Chihriveka - - Chikakre - - Chikaskitre - - Chikate - - Chikiprecri - - Chikraki - - Chikraskiska - - Chikrekra - - Chikrekre - - Chipabeske - - Chipererer - - Chipicracrak - - Chiprexexet - - Chipriprisre - - Chiprivrecha - - Chishakepi - - Chishipepri - - Chisrashi - - Chisretri - - Chisriher - - Chisriva - - Chisrivevri - - Chitisrevre - - Chitixahra - - Chitrechicra - - Chitresravri - - Chivechachat - - Chiveprepret - - Chiveprikri - - Chiviki - - Chivikiya - - Chivishir - - Chivrakakak - - Chivrakri - - Chivrasher - - Chivrepapar - - Chixacra - - Chixihebakra - - Crabecrapapa - - Crachikrisre - - Cracrahravri - - Cracratiya - - Cracretipi - - Cracrihe - - Cracritri - - Crahayayak - - Craheki - - Crahrashi - - Crahrehi - - Crahretetek - - Crakapeper - - Crakaskeba - - Crakavravrat - - Crakehri - - Crakirer - - Crakrashiski - - Crakrehra - - Crakriskipir - - Crapipaka - - Crapiriyaya - - Craprati - - Crapresker - - Craresraxe - - Crarevexa - - Crashahresri - - Crashehihik - - Craskahraske - - Craskatrapra - - Craskicrete - - Craskivi - - Cratatrihi - - Cratikre - - Cratikrekrek - - Cratiprar - - Cratrehra - - Cravehri - - Cravrikra - - Cravrisrere - - Cravritiriri - - Cravriyayak - - Crayahrehret - - Crayakrer - - Crayapraprar - - Crayaripipi - - Crayayaricri - - Crebaxa - - Crebehrita - - Crechavre - - Crechesrehar - - Crechichevre - - Crecrabibik - - Crecriri - - Crehepapepe - - Creheriki - - Crehexi - - Crehipavava - - Crehraver - - Crekatri - - Crekavexa - - Crekeki - - Creketri - - Crekiskeya - - Crekitati - - Crekrepreki - - Crekrivavak - - Crepahripa - - Crepekecre - - Crepekrekret - - Crepiba - - Crepihri - - Creprepravri - - Creraxi - - Crerehihit - - Creshekrapa - - Creskekri - - Cresketita - - Creskihre - - Cresripepet - - Cretarevripa - - Cretebe - - Cretehra - - Creterarar - - Cretibehihi - - Cretrapi - - Cretrekerara - - Cretrepepet - - Crevapir - - Crevixesra - - Crexahava - - Crexepapacre - - Cribavribibi - - Cribitratrat - - Crichecrite - - Crichipi - - Cricraprehre - - Cricrirar - - Cricrisre - - Cricritika - - Crihevar - - Crihitehre - - Crikatrikre - - Crikebepapa - - Crikekakat - - Crikeshivra - - Crikisheski - - Crikrahrata - - Crikretevabi - - Crikricretri - - Cripichahi - - Criprishapa - - Crirachi - - Crirakratra - - Crishave - - Criskahe - - Crisrehapahi - - Critachatri - - Critrabibir - - Critresrir - - Critrikracri - - Crivacriti - - Crivacrive - - Crivayasra - - Crivrakre - - Crivrecri - - Crixixaske - - Habavavak - - Habepa - - Habikikaka - - Habikrihita - - Hachabe - - Hachehekre - - Hacheske - - Hacreha - - Hacrere - - Hahebapapa - - Hahecrecha - - Haheha - - Hahetasrike - - Hahihahatrar - - Hahihasreche - - Hahripraxaxa - - Hakepa - - Hakirer - - Hakraxixit - - Hakrekikik - - Hakrixexeret - - Hapacharepri - - Hapacre - - Hapahri - - Hapeti - - Hapitahri - - Hapreska - - Haprihrisha - - Harebabi - - Harexiveve - - Haricracre - - Haririsheska - - Harishi - - Hashakrakrak - - Hashehracri - - Hashepracha - - Haskaritepra - - Hasketer - - Haskibebeyat - - Haskikretete - - Hasrabake - - Hasracritehe - - Hasrekitra - - Hasrekrer - - Hasrihaxa - - Hasripeshar - - Hatabibivet - - Havavresra - - Havixe - - Havreki - - Havrepekre - - Havretri - - Havrichatata - - Haxikeker - - Hayahriyaxa - - Hebahrevrir - - Hebapri - - Hebihihichit - - Hebikratahe - - Hecheshehixi - - Hechetra - - Hechevakrer - - Hecraba - - Hecrabi - - Hecrevrivrik - - Hecrirecha - - Hehere - - Hehiskitri - - Hehrapike - - Hehrepri - - Hehreskaskat - - Hehrikra - - Hekikrexa - - Hekrasre - - Hekrekicre - - Hekreracre - - Hekriheti - - Hepevivikrik - - Hepraskibebe - - Heprivresker - - Heprixasheri - - Herecrerivi - - Hereririket - - Heriheyacri - - Heripa - - Heripreka - - Heshahraveti - - Heshepepevik - - Heskashachi - - Heskaxixe - - Heskererepet - - Heskeshishit - - Heskisker - - Hesrepahri - - Hesreski - - Hetahetritri - - Hetiheheprit - - Hetrare - - Hetrevihra - - Hetrihahri - - Hetrirebibi - - Hevababaker - - Hevetihre - - Hevexixik - - Heviricrecre - - Hevrevipa - - Hevrexir - - Hevrichar - - Hevriraravit - - Hevrivrivre - - Hexasrichi - - Hexaxipri - - Heyashipre - - Hibasher - - Hiberarakrar - - Hibesrache - - Hicrapre - - Hicrecrahera - - Hicreteba - - Hicriba - - Hihacha - - Hihepapak - - Hihichitre - - Hihireret - - Hihrevra - - Hikikri - - Hikitritrir - - Hikrakre - - Hikrepa - - Hipavi - - Hipitratrak - - Hirepabe - - Hirichachar - - Hiricheya - - Hiricrabakri - - Hiricraske - - Hiricrevitri - - Hirihrachi - - Hirihraski - - Hirihraxaxat - - Hirikachi - - Hirikretetet - - Hirikrikra - - Hiripebahre - - Hiripehixixi - - Hiriper - - Hiripesri - - Hiripeta - - Hiripevivik - - Hirirahehet - - Hirirecrevre - - Hirishihra - - Hiriskeva - - Hiritapatiti - - Hiriteker - - Hiritrari - - Hiritraxe - - Hiritricri - - Hirivavavri - - Hiriviske - - Hirivivre - - Hirivra - - Hirivrari - - Hirivrexita - - Hirivrivri - - Hirixashahre - - Hirixicraya - - Hishave - - Hishesritra - - Hishiskahra - - Hishivrevrek - - Hiskakecra - - Hiskatetek - - Hiskekreche - - Hiskeva - - Hiskisrare - - Hisrakikit - - Hisratrepepe - - Hitava - - Hiterehaha - - Hitratra - - Hivacracrat - - Hivatritrik - - Hivayayar - - Hivrababar - - Hivrahrir - - Hixacre - - Hixashape - - Hixashetiti - - Hixekrasra - - Hixepi - - Hixeripe - - Hiyacrakra - - Hrabatitit - - Hrabaxa - - Hrabike - - Hrabipre - - Hracrabixi - - Hracrehra - - Hrahepivivi - - Hraherikrexi - - Hrahikrer - - Hrahrakahre - - Hrahraska - - Hrahrasrebe - - Hrahrehehek - - Hrahritra - - Hrakachabexi - - Hrakarerek - - Hrakeshi - - Hrakiski - - Hrakretri - - Hrakrichapri - - Hrakrishi - - Hrapavevek - - Hrapicra - - Hrapraber - - Hraprapreche - - Hrarachihi - - Hrarahrahrar - - Hrarecri - - Hrarikrixabi - - Hrarishesher - - Hrashepa - - Hrashibisra - - Hrashihir - - Hrashikavexa - - Hrasketre - - Hraskibe - - Hraskikexaxa - - Hrasrecrixi - - Hrasrevraxi - - Hrasrevrehra - - Hratatrasre - - Hratayati - - Hratere - - Hratrachari - - Hratreki - - Hravahiche - - Hravapeki - - Hravaskeki - - Hraveska - - Hravihre - - Hravrahaheya - - Hravrekra - - Hraxehrehiri - - Hraxekrebe - - Hraxichebar - - Hraxivivivet - - Hrayacha - - Hrayavrar - - Hrebavihra - - Hrebetra - - Hrechaxer - - Hrecreti - - Hrecrihahar - - Hrehikrekrer - - Hrehresra - - Hreketra - - Hrekrativi - - Hrepihepre - - Hrepipake - - Hrerasri - - Hreravexe - - Hrereprehir - - Hreriba - - Hreshahetiti - - Hreshehakake - - Hreskapahre - - Hresrakakre - - Hresrechike - - Hresrekasha - - Hretite - - Hretrecre - - Hretreski - - Hretrevri - - Hrevrehe - - Hrexakekek - - Hrexatika - - Hrexebe - - Hribahar - - Hribehrati - - Hribipe - - Hrichiski - - Hrihevrivrir - - Hrihitra - - Hrihrakihri - - Hrihrechar - - Hrikichecra - - Hrikiskate - - Hripricrahra - - Hrirehrikra - - Hriresri - - Hrishabar - - Hrishaxeyar - - Hrishehrahi - - Hrishexixik - - Hrisheyakra - - Hrishipete - - Hriskacrecra - - Hriskaheba - - Hriskari - - Hriskevetabi - - Hriskexa - - Hriskihete - - Hriskihri - - Hrisrechi - - Hrisrera - - Hrisriri - - Hrisrishapa - - Hrisrivavar - - Hritachecri - - Hritexa - - Hritihihri - - Hritihra - - Hritiker - - Hritisrasrat - - Hrivaxa - - Hrivripira - - Hrixebabatir - - Hrixebi - - Hrixihri - - Hrixiva - - Hriyahriya - - Kabavi - - Kabaxesha - - Kachaske - - Kachaya - - Kachihe - - Kacrahesha - - Kahakichi - - Kahaxipa - - Kahepapatret - - Kahiki - - Kahishe - - Kahrakrekret - - Kahratrer - - Kahriche - - Kahricrikra - - Kakatahrare - - Kakebi - - Kakihrasri - - Kapakriska - - Kapracre - - Kaprashesher - - Kaprehrakaka - - Kapreri - - Karakahre - - Karapihehe - - Kashaya - - Kashipri - - Kaskachekeke - - Kaskivrer - - Kasrabacre - - Kasrakapre - - Kasraxar - - Kasresreyaya - - Kasrivrata - - Katasker - - Katehreyaya - - Katetrike - - Katexaxak - - Katrehre - - Kavababat - - Kavashishit - - Kavihrahrat - - Kavitratrak - - Kavratevriya - - Kaxecri - - Kaxetavre - - Kaxetretret - - Kayararat - - Kayavrivrik - - Kayaxi - - Kebasrevikri - - Kechatra - - Kechavrepri - - Kecresra - - Kecrevrir - - Kecriha - - Kecrikra - - Kecrixa - - Kehave - - Kehitichacha - - Kehivehrihri - - Kehrachechek - - Kehrehi - - Kekabibit - - Kekahi - - Kekahrexi - - Kekarar - - Kekasritri - - Kekebapisra - - Kekebibivrer - - Kekekahihi - - Kekrishe - - Kepetre - - Kepevra - - Kepraki - - Keprepara - - Kerahacheche - - Keratra - - Kerihi - - Keriskehisri - - Keshevaskiva - - Keshika - - Keshiti - - Keskarahita - - Keteskesket - - Ketesketa - - Ketribabar - - Ketribipi - - Kevatra - - Kevatre - - Keveki - - Keveshatra - - Keveshexiki - - Kevesraxe - - Kevexa - - Kevikaxe - - Kevivri - - Kevrahreri - - Kevrahrihrit - - Kexapriprik - - Kexerava - - Kexeshacha - - Kexisrepe - - Keyararak - - Kibevavacrak - - Kibeyachichi - - Kibipavava - - Kichitra - - Kicricreva - - Kicrikrikrik - - Kiharesra - - Kihiya - - Kihrexexevek - - Kihriprira - - Kikeke - - Kikexitretre - - Kikrabikichi - - Kikrehi - - Kikrekrakrat - - Kikreri - - Kikretrapa - - Kikrevavak - - Kikrivikar - - Kipivaxe - - Kipreya - - Kireche - - Kiresrisrir - - Kirevi - - Kiribapra - - Kiribaprive - - Kirichaketra - - Kirichiska - - Kiricrakakri - - Kirihererek - - Kirihrepi - - Kirihreviche - - Kirikachicha - - Kirikatriki - - Kirikivrivri - - Kirikrakra - - Kiripabi - - Kiripahritri - - Kiriprihri - - Kirirahixera - - Kirireti - - Kirirevri - - Kirishavavar - - Kirishekeket - - Kiriteska - - Kiritracha - - Kiritrepeper - - Kiritreyapri - - Kirivipe - - Kirivrivepi - - Kirixaticher - - Kirixepepek - - Kirixicra - - Kishahapatre - - Kishehakaka - - Kiskashapra - - Kiskekehra - - Kiskekicre - - Kiskipri - - Kitraka - - Kitrevevri - - Kivraheherat - - Kivrahi - - Kivrashe - - Kivrera - - Kivretrakeke - - Kixatritrit - - Kixichetiti - - Kixichicrar - - Kixivra - - Krabareyaya - - Krabeherere - - Krachehre - - Kracheyaba - - Kracrirarak - - Krahebikaba - - Krahechikri - - Krahiha - - Krahrakri - - Krahraririk - - Krahrepexi - - Krahrepri - - Krahrerar - - Krakahra - - Krakrekiski - - Krakrepapat - - Krapari - - Krapibi - - Krapitahri - - Krapreve - - Kraprisrisre - - Kraprivrarar - - Krarakrikrit - - Krarekri - - Kraricri - - Krashatatahi - - Krashavecra - - Kraskisretra - - Krasrarevi - - Krasripapat - - Kratachavri - - Kratare - - Kratikepi - - Kraveke - - Kravraxeveve - - Kravrepachi - - Kravricrahra - - Kraxabi - - Kraxasrir - - Krayakrikrit - - Krebekri - - Krebibikre - - Krebivi - - Krechahe - - Krechepraxa - - Krechititik - - Krecrashepra - - Krecravicha - - Krecreri - - Krehekikihit - - Krehrakakre - - Krehrita - - Krehrixa - - Krekacrechi - - Krekebeta - - Krekracri - - Krekrapri - - Krekrishaski - - Krepeviske - - Krepitir - - Krepiya - - Kreprahetaya - - Krepretasha - - Kreprivreski - - Krererisri - - Krerexeskeva - - Kreskaviha - - Kresrepaxexe - - Kretahre - - Kretavi - - Kretepapatir - - Krevavikeke - - Krevesher - - Krevesrisrit - - Krevrexer - - Krevrivriske - - Krexaya - - Kreyacrepe - - Kreyatriri - - Kreyavi - - Kribeshi - - Kribetibi - - Kribexixik - - Kribirecri - - Kribivra - - Krichakehra - - Kricrava - - Kricrirepe - - Kricritaka - - Krihaprir - - Krihesre - - Krihexarava - - Krihreskekre - - Krikapepek - - Krikatitixer - - Krikesrixixi - - Krikrashar - - Krikrikesre - - Kripahri - - Kripritri - - Kriripriprit - - Kririve - - Krishebiriba - - Krishebite - - Krishecrapi - - Kriskexer - - Krisribariri - - Krisrisher - - Kritahe - - Kritarerek - - Kritechihihi - - Kritiha - - Kritixa - - Kritresra - - Kritrivrevra - - Krivaxixipak - - Krivripri - - Krixehraski - - Krixesrepri - - Krixirar - - Pabaskare - - Pabecrechi - - Pabixashaha - - Pachatatak - - Pachetra - - Pachikri - - Pachisra - - Pacrachisri - - Pacraheha - - Pahrecrahati - - Pahrixeke - - Pakaririhrek - - Pakashexa - - Pakaskesha - - Pakavrevaha - - Pakihechacha - - Pakishi - - Pakivrapapa - - Pakrakrasra - - Pakrasrer - - Pakrava - - Pakresra - - Pakrexetihe - - Pakrika - - Papaskaxa - - Papavivivrik - - Papesheher - - Papivahre - - Papratrakiki - - Parerakre - - Pashaskaskak - - Pashevravrat - - Paskasretiti - - Paskiske - - Paskixexek - - Pasrabicra - - Pasraprikepa - - Pasrehe - - Pasrepratri - - Pataprivra - - Patesrateke - - Patexexet - - Patreshe - - Pavaba - - Pavrapishi - - Paxarerechak - - Paxecri - - Paxitirechi - - Payahreshi - - Pebakrikrik - - Pebate - - Pebeskahepre - - Pebevravi - - Pebibebek - - Pechaka - - Pechekripi - - Pechetraya - - Pechikreke - - Pechivrar - - Pecracha - - Pecritrasre - - Pehasra - - Pehecha - - Pehisresrer - - Pehrakresha - - Pehrihivreya - - Pehriva - - Pekecricrik - - Pekrava - - Pekraya - - Pekrepitri - - Pepehri - - Pepexekaka - - Pepirer - - Pepiska - - Pepitre - - Pepreba - - Pepreha - - Peprerar - - Pepresri - - Pepresrikeke - - Peprevahe - - Peraxatrikri - - Perebecrate - - Peribi - - Perisrehri - - Peshipaha - - Peskavavaxek - - Peskehihik - - Peskikikitir - - Pesraski - - Pesratra - - Pesravre - - Pesraya - - Pesretetetat - - Pesrikre - - Pesritra - - Petevrivrit - - Petihri - - Petivrate - - Petripetete - - Pevekriska - - Pevera - - Pevetiska - - Pevetrepri - - Pevikixi - - Pevipraprak - - Pevitetecrak - - Pevixihre - - Pevracher - - Pevrakrakrat - - Pevrehita - - Pexepraprat - - Pexihibe - - Pibehra - - Pibekrite - - Pibetiskiski - - Pibibipa - - Pibikekek - - Pichehi - - Pichetreta - - Pichicreve - - Pichikrarar - - Picreprecha - - Pihasresret - - Piheki - - Pihepa - - Pihibeskaska - - Pihichar - - Pihitetek - - Pihrebi - - Pihreshapibe - - Pihretitir - - Pikaskaskar - - Pikaxer - - Pikrehreka - - Pikripreprer - - Pipasha - - Pipaxacricri - - Pipesresri - - Pipribepri - - Piprishixi - - Piraxiprar - - Pirekrehi - - Pireveverik - - Piribaxa - - Piribipriski - - Pirichivapi - - Piricrahra - - Piricrakra - - Pirihepre - - Pirihichati - - Pirikretra - - Pirikritere - - Pirikrivra - - Piripaba - - Piripacripri - - Piripihrishe - - Piripite - - Piripitri - - Piriprabepa - - Pirireprishe - - Piriririke - - Piriskateke - - Piriskiki - - Pirisretiva - - Piritavre - - Piritihre - - Piritratavri - - Piritrecrara - - Piritreke - - Pirivakixaxa - - Pirivikrar - - Pirixaxa - - Pirixaxevre - - Piriyakribi - - Piriyapesra - - Pishakakaxet - - Pishashetepi - - Pishavraska - - Pishevra - - Piskipre - - Pisrasheshek - - Pisripre - - Pisrixekete - - Pitibi - - Pitraprivre - - Pitraskeche - - Pitratebi - - Pitrevreyaya - - Pitriprivra - - Pitriske - - Pivaka - - Pivatatakir - - Pivekrixehri - - Piveyashi - - Pivrakevi - - Pivrakipre - - Pivrakitibe - - Pivrashir - - Pivrirater - - Pivritatabet - - Pixeriti - - Pixicha - - Prabibiprepi - - Prabichixaxa - - Prabixite - - Pracheteter - - Prachiba - - Pracrahrive - - Prahihrahrak - - Prahisresrek - - Prahitrivi - - Prahrebesra - - Prahripebaba - - Prahrivapapa - - Prakiskesket - - Prakrehrahri - - Prakripi - - Prapicresri - - Praprexexek - - Prarachaxi - - Prarecrahi - - Prarikra - - Praripraka - - Prashicribi - - Prashivepapa - - Prashixitata - - Pratakra - - Praterahira - - Pratreki - - Pravashipebe - - Pravesrisrit - - Pravixihehe - - Pravrashi - - Pravrepi - - Pravricrir - - Pravritrer - - Praxahihir - - Praxechaxere - - Praxekrakrat - - Praxevitetra - - Praxexe - - Praxichi - - Prayaraxir - - Prebavre - - Prechakavra - - Prechavre - - Precratetet - - Preherihra - - Prehiviveve - - Prehrakriska - - Prehribi - - Prekakra - - Prekaya - - Prekiprever - - Prekirar - - Prepahihibar - - Prepetratrat - - Prepixihrapa - - Preprete - - Preretetre - - Prerexike - - Presharesre - - Presravi - - Presrere - - Presriskipre - - Pretere - - Pretetisrir - - Pretexiprar - - Pretihre - - Pretrakre - - Pretrike - - Pretrisra - - Prevakre - - Prevecrere - - Prevesriti - - Preveti - - Previkrahihi - - Previkri - - Prevritrare - - Prevrivi - - Prexatrar - - Prexeshe - - Prexicracrak - - Preyatra - - Pribatretrek - - Pribavibache - - Pribirivava - - Pribivrivrit - - Pricheyayat - - Pricrapapat - - Pricrihi - - Prihavri - - Prihetiya - - Prihrechabi - - Prikebixi - - Prikricha - - Prikripi - - Prikripikiki - - Prikrishi - - Pripachiya - - Pripavrepri - - Pripixixik - - Pripraske - - Priprecheha - - Pripripepek - - Prirakre - - Prirasher - - Priraske - - Prireprehar - - Pririhi - - Prishehe - - Prishepaxixi - - Prishitarabe - - Priskake - - Prisraxi - - Pritabaski - - Pritakir - - Pritecra - - Pritehavivi - - Pritepa - - Pritichahi - - Privayayak - - Privipecre - - Privrihareya - - Prixarake - - Prixepa - - Prixetre - - Prixivrekri - - Priyaprar - - Rabehiya - - Rabeparere - - Rabereshebe - - Rabichechet - - Rachare - - Racraba - - Racrakeka - - Racrakreheri - - Rahavevahi - - Rahevripeshi - - Rahibebetat - - Rahihratata - - Rahipe - - Rahraba - - Rahrecri - - Rahreyavri - - Rahritretrek - - Rakekikitrir - - Rakicrecrek - - Rakipipihrat - - Rakreprikri - - Rapivrivrere - - Rarahaka - - Raretriya - - Rasheshashat - - Rasheshevri - - Rashihretra - - Rashikrehre - - Rasriber - - Ratabibihet - - Ratesraprar - - Ratitritrik - - Ratravi - - Ratrebi - - Ratreyayak - - Ratrihrikri - - Ravecher - - Ravepexi - - Ravihrahrak - - Ravixexebet - - Ravrisheke - - Ravrivrikri - - Raxahehet - - Raxetapa - - Raxete - - Raxevahre - - Rayachesheta - - Rebakre - - Rebebikiki - - Rebicracrak - - Rebipi - - Rebisriyaya - - Rebitetebit - - Recheper - - Recraskehe - - Recrekariri - - Rehepipibet - - Rehresheshet - - Rehrikrikrik - - Rehrire - - Rekaskaskak - - Rekracha - - Rekripreprek - - Repeche - - Repetrir - - Repexishe - - Repivesheri - - Repivrasra - - Reprihri - - Reprishishik - - Rerahahat - - Rereba - - Rerirevra - - Reskebexexe - - Reskehahat - - Reskivavak - - Reskixibira - - Resrecracrat - - Resretra - - Resrihrepeke - - Resriske - - Resrixiha - - Retaskahri - - Retavavatet - - Retaveche - - Retecha - - Retevravrak - - Retrete - - Retrexehehri - - Retripritri - - Revasri - - Revetitipret - - Revikrebiya - - Revripra - - Revritrer - - Rexabaska - - Rexataxa - - Ribatre - - Ribebahihi - - Ribehashishi - - Ribiheva - - Ricrehaska - - Rihava - - Rihaxicre - - Rihekrekrek - - Rihipapar - - Rihrachepi - - Rihravatir - - Rikevra - - Rikipa - - Rikiskapipi - - Rikivrevra - - Rikrachi - - Rikrepa - - Rikreravribe - - Ripibivrir - - Ripihrepapa - - Ripreshikre - - Rirevi - - Riribebe - - Riribeska - - Riricheshe - - Riricrehra - - Riricriti - - Ririhari - - Ririhepreski - - Ririhite - - Ririhixir - - Ririkavrire - - Ririkeve - - Ririkrekaska - - Ririkrexeti - - Riripasha - - Riripraprapi - - Ririrarerera - - Riririhacha - - Ririshihi - - Ririskatre - - Ririskihe - - Ririskiri - - Ririsravra - - Riritihihit - - Riritiskaba - - Rirititahi - - Riritrebi - - Riritrexexek - - Ririvihrar - - Ririvreshiya - - Ririvretra - - Ririyaskihe - - Rishacriker - - Rishaskar - - Rishepi - - Riskavrer - - Riskekar - - Riskepriba - - Riskesre - - Riskirasre - - Riskiskeha - - Risratretete - - Risratrihihi - - Risrevre - - Risritracre - - Risrivire - - Ritaha - - Ritahrecra - - Ritekrakapre - - Riteva - - Ritresrakri - - Ritrihe - - Ritrirecra - - Ritrishixi - - Rivretripapa - - Rivrivrishi - - Rixahritri - - Rixaterete - - Rixecrekre - - Rixepapat - - Rixeti - - Rixibihrihri - - Rixiskirepri - - Rixixaxavrat - - Riyahrahrat - - Riyapare - - Riyasri - - Shabirivri - - Shachikir - - Shacrevavak - - Shacrevrake - - Shahaprahri - - Shahaxaxak - - Shahekeket - - Shaheskate - - Shahexer - - Shahrasher - - Shahrati - - Shahripracri - - Shakekrirabe - - Shakrichar - - Shapesrikaka - - Shapibi - - Shapretra - - Sharapire - - Sharesrasrat - - Sharihesrehi - - Sharihre - - Sharipiva - - Sharitrihri - - Shashishibe - - Shashisravi - - Shaskehepre - - Shaskepahre - - Shaskitra - - Shatretaxi - - Shavaprika - - Shavashakri - - Shavexexati - - Shavisha - - Shavrivre - - Shaxepachi - - Shayakrakrak - - Shebevrirere - - Shebipeskixa - - Shebiva - - Shecheyababa - - Shecrapricre - - Shehibe - - Shehrayashar - - Shehrebite - - Shehreha - - Shehreske - - Shehreyayar - - Shehriskar - - Shekake - - Shekakesri - - Shekapiski - - Shekeska - - Shekikakat - - Shekrira - - Shepechichik - - Shepeshesra - - Shepeskiskik - - Shepetrati - - Shepevrevrer - - Shepikitepa - - Sheprekritri - - Shepreskete - - Sherati - - Sherikre - - Sheriskahe - - Sheshasri - - Sheshihesha - - Shesrabibik - - Shesrachiski - - Shesrihihit - - Shetachavre - - Shetasre - - Shetikitata - - Shetracrar - - Shetriha - - Shevabi - - Shevecrepi - - Shevrahe - - Shevrevri - - Shevriya - - Shexachi - - Shexahrehret - - Shexecra - - Shexishishit - - Shexivir - - Sheyasha - - Shibatra - - Shibecreka - - Shibekrekret - - Shibivribe - - Shichebebet - - Shichecha - - Shicheririt - - Shichikrakre - - Shicrachi - - Shihebihre - - Shihecricrik - - Shihishar - - Shihiska - - Shihrapikra - - Shihrehepri - - Shihrerebe - - Shihrevihre - - Shikechachat - - Shikeshecra - - Shikikivri - - Shikraxi - - Shikrehre - - Shikreprer - - Shipehabaske - - Shipicreki - - Shipipapaxak - - Shipratate - - Shipriki - - Shipritraha - - Shiribebepit - - Shisrisheri - - Shitehechi - - Shitexihre - - Shitibibik - - Shitravrekra - - Shivababat - - Shivexehra - - Shivive - - Shivraheki - - Shivrayayak - - Shivrebapra - - Shivrepa - - Shixaya - - Sikibavipa - - Sikibisriche - - Sikichape - - Sikichapi - - Sikichekasha - - Sikichiyaski - - Sikicracre - - Sikicrexa - - Sikicrixi - - Sikiketraya - - Sikikrasre - - Sikikreke - - Sikipecripre - - Sikipetre - - Sikiprasrake - - Sikiprira - - Sikirehivre - - Sikirepreri - - Sikiskacra - - Sikiskevavak - - Sikiskite - - Sikisraber - - Sikisrekakat - - Sikisresha - - Sikitaski - - Sikitevre - - Sikiticre - - Sikitrashate - - Sikitrihrepi - - Sikitrirepre - - Sikivate - - Sikiveskar - - Sikivrahra - - Sikivrisrita - - Sikivritiri - - Sikixicrebar - - Siribacrache - - Siribetraska - - Siribikra - - Siricharabe - - Sirihaxer - - Sirihicripa - - Sirihihahat - - Sirihihapa - - Sirikaski - - Sirikatatat - - Siripepahe - - Siriprahra - - Siriprehavi - - Siripreteske - - Siriraki - - Siriraski - - Sirirekeba - - Sirireter - - Sirishatache - - Sirishehevre - - Siriskesrave - - Siriskihipe - - Sirisrekivi - - Sirisretre - - Siriteche - - Siritrahe - - Siritrixexet - - Sirivrekehri - - Sirivretatre - - Skabaresre - - Skabehricra - - Skabipre - - Skachabeta - - Skachibi - - Skachihive - - Skachishaha - - Skacraxaxak - - Skacrehrapre - - Skacrichisre - - Skacrixiche - - Skahipevra - - Skahixahehe - - Skahracha - - Skahravrive - - Skahreve - - Skahrivrepra - - Skakasha - - Skakava - - Skakavevet - - Skakeskaskat - - Skakevravrak - - Skapape - - Skapapriprit - - Skarebihira - - Skarechachak - - Skarepishi - - Skarexapreti - - Skashihrir - - Skaterarar - - Skatetasre - - Skatrichebe - - Skavarerahri - - Skavicrecrer - - Skavitetexi - - Skavrekreti - - Skavritre - - Skaxisrakre - - Skayabere - - Skayatepra - - Skebaprara - - Skechikreba - - Skecracheker - - Skecraprir - - Skecrita - - Skehevreshe - - Skehichitra - - Skehipe - - Skekapra - - Skekekritra - - Skeketir - - Skekrababe - - Skekraxer - - Skekretake - - Skepare - - Skepitetexik - - Skerepepehit - - Skereri - - Skeripribihe - - Skeriska - - Skeshikite - - Skeskahe - - Skeskibishi - - Skesrisrer - - Sketaha - - Sketahevra - - Sketashakra - - Sketatretrek - - Sketavri - - Sketepechi - - Sketivapapa - - Sketivre - - Sketrarivava - - Sketrekrepe - - Skevaskiskik - - Skevaxi - - Skevrabari - - Skevrahrepa - - Skevrecra - - Skevrehraki - - Skevrihrave - - Skexipi - - Skexixeska - - Skibacricrit - - Skibapraxe - - Skibevravrat - - Skibiravri - - Skibita - - Skichabi - - Skichapipit - - Skichebir - - Skichiske - - Skicreraskar - - Skicrihihe - - Skihekar - - Skiheyaskir - - Skihricher - - Skikeskesket - - Skikrahre - - Skikraprara - - Skikrisha - - Skipashihre - - Skipechishi - - Skiprapra - - Skipraripi - - Skipreve - - Skiprevivik - - Skiripipik - - Skishachi - - Skishapehehe - - Skiskevaski - - Skiskevririr - - Skisrekecra - - Skitraki - - Skitrepi - - Skitreske - - Skivekri - - Skivibibik - - Skiviska - - Skivrihri - - Skivrivreki - - Skixara - - Skixareter - - Skixetihechi - - Skixiha - - Skixisrapre - - Srabavrechi - - Srabisreveke - - Srachavicha - - Sracrare - - Srahahihir - - Srahihripra - - Srahriyar - - Srakipahehe - - Srakireret - - Srakrakrishi - - Srapahre - - Srapikretra - - Srapribekehi - - Srarekepar - - Sraribeski - - Srariprer - - Srarisha - - Srashacha - - Srashakri - - Srashaxata - - Srashikirir - - Sraskabikri - - Sraskechipe - - Sraskehreri - - Sraskekepiva - - Sraskekisra - - Sraskiba - - Sraskishar - - Srasrivate - - Sratepre - - Srateve - - Sraticre - - Sratihi - - Sratiki - - Sratraxixir - - Sratrike - - Sravechachar - - Sravrapapat - - Sraxape - - Sraxepipir - - Sraxeskicri - - Srebaskaskar - - Srebecrir - - Srebekrabi - - Srebikrir - - Srechepe - - Srecravra - - Srecravre - - Srecrisre - - Srehetahi - - Srehikrar - - Srehivavri - - Srehrehiske - - Srekacrexeve - - Srekreprexe - - Srekrikra - - Srekrititit - - Srepesrexi - - Srepipritri - - Srepisrasre - - Sreprekra - - Srepreshe - - Sreracricrar - - Srerevre - - Srerihra - - Sreshebakiki - - Sresheskixi - - Sreshiprari - - Sreskichi - - Sreskicre - - Sresrahapi - - Sresrekikit - - Sresrikre - - Sretasresri - - Sretishashak - - Sretraticrir - - Srevesra - - Srevesrixari - - Srevivre - - Srevraxipi - - Srevreyayak - - Srexatreva - - Srexikrata - - Srexiskahehe - - Sribavar - - Sribebe - - Sribireke - - Srichepi - - Srichivekaka - - Sricrevepa - - Sriheshexi - - Srihrahevrir - - Srihrakratri - - Srihrekexi - - Srikasresha - - Srikiriki - - Srikratra - - Sripaba - - Sripahebevri - - Sripahre - - Sriprikacha - - Sriracricrit - - Sririhre - - Sriripre - - Srisheyaxexe - - Srishibicri - - Srishikatre - - Sriskicrixi - - Sriskihra - - Sriskisha - - Srisratreba - - Srisrebepi - - Srisrete - - Sritasker - - Sritekrikrir - - Sriteskabe - - Sritiprebe - - Sritiske - - Sritrapashe - - Sritricha - - Sritripipir - - Srivake - - Srivaxa - - Srivekater - - Srivisra - - Srivrasrer - - Srivratre - - Srivrihrir - - Srixakrabebe - - Srixiveyaya - - Sriyapir - - Taabavrivrir - - Taabexitaski - - Taabiprete - - Taachabe - - Taacrahre - - Taacrecrasra - - Taacripi - - Taacrisretri - - Taahahre - - Taahecreta - - Taaherarak - - Taahiha - - Taahiska - - Taahivri - - Taahreke - - Taahrishepri - - Taakahevava - - Taakapa - - Taakexisker - - Taakraba - - Taapavevekik - - Taapecra - - Taapikashi - - Taapipihare - - Taapishi - - Taaprachikri - - Taaprivrapre - - Taarecra - - Taareshekra - - Taashaxikir - - Taashebititi - - Taaskatir - - Taaskevevava - - Taaskiteki - - Taasrebicre - - Taasrehrira - - Taasrikikit - - Taasritar - - Taataxe - - Taatevasre - - Taatihra - - Taatrate - - Taatrivivit - - Taavape - - Taavavrexi - - Taavrerapava - - Taavretri - - Taavrivi - - Taaxekakat - - Taaxesrite - - Taaxikra - - Taayarashe - - Teebapresri - - Teebechiya - - Teebivrichi - - Teechacraha - - Teechexe - - Teechihakri - - Teecrekrihre - - Teecrepeski - - Teecretri - - Teecrevretre - - Teehapraprar - - Teeheri - - Teehrahar - - Teehrepeskir - - Teehrirepipi - - Teekahicravi - - Teekepraxahe - - Teekipra - - Teepracrivri - - Teeprikexixi - - Teeraheher - - Teerecritri - - Teeriviyara - - Teeskapesri - - Teeskebecrar - - Teesrasraxa - - Teesrecha - - Teesretrir - - Teesribiba - - Teetahra - - Teetixi - - Teetrasrer - - Teetreskapri - - Teevahihivik - - Teevapriprar - - Teevepa - - Teevravreske - - Teexaketiti - - Teexera - - Teexihrir - - Teeyakra - - Tibaskaskak - - Tibasravava - - Tibihi - - Tibixita - - Ticheskivre - - Tichetritrir - - Tichiber - - Ticratevipe - - Tihichisketi - - Tihitre - - Tihresrevivi - - Tihrikakar - - Tikara - - Tikecribe - - Tikekitata - - Tikrasra - - Tikrevrihre - - Tipape - - Tipekrihripa - - Tipetripe - - Tipicre - - Tipreritaha - - Tipresrita - - Tiprititik - - Tireper - - Tiribavre - - Tiriberihehe - - Tiribikehe - - Tiribirakeke - - Tirichera - - Tirihayaya - - Tirihi - - Tirihra - - Tirihretrir - - Tirihriririk - - Tiriketeche - - Tirikeviha - - Tirikihrer - - Tirikrachir - - Tirikrasri - - Tiripechapre - - Tiripratra - - Tiriprexer - - Tirirahi - - Tirirapahre - - Tirirarat - - Tirirexiprer - - Tirisrehihit - - Tirisribe - - Tiritetasra - - Tiritrexi - - Tiritrivever - - Tiriveshi - - Tirivihachi - - Tirivrebire - - Tirixahiri - - Tirixebayar - - Tirixetatak - - Tirixishiski - - Tiriyaskacha - - Tishetrakaka - - Tiskasheske - - Tiskevritre - - Tiskicrar - - Tisraprepret - - Tisrasheshet - - Tisreshishit - - Tisreska - - Tisricre - - Tisriskiskir - - Tisrivexa - - Titeskeskek - - Titrabetiti - - Titretepeka - - Tivarahi - - Tivecra - - Tivecri - - Tivepa - - Tivevipe - - Tivexa - - Tiviskaskak - - Tixapipripri - - Tixetritrik - - Tixikekra - - Tixititik - - Tixixesrer - - Tiyapraprak - - Tiyaskaskat - - Trabari - - Trabisrer - - Tracrecrehri - - Tracreprake - - Trahahehetir - - Trahekehe - - Trahevreske - - Trahrepa - - Trahrevrava - - Trakehre - - Trakrapra - - Trakritevrer - - Trapavrivrir - - Trareskire - - Trashete - - Trasheve - - Trashevepri - - Trashipaxe - - Trasraveski - - Trasreve - - Tratibekaka - - Tratihrer - - Tratravi - - Tratraxixik - - Tratribi - - Travaxeski - - Travetretrek - - Travraripepe - - Travribesre - - Traxipi - - Traxiprer - - Trebahe - - Trebirerever - - Trebishivava - - Trebitratrak - - Trechacra - - Trechekrasri - - Trechesre - - Trechesrecre - - Trecrehehek - - Trehixapri - - Trehrakrepre - - Trehripra - - Trekatri - - Trekatricre - - Trekavixixi - - Trekavriki - - Trekebeti - - Trekeski - - Treketibita - - Treketra - - Trekibabat - - Trepake - - Treprabiveve - - Treprahrepi - - Treprebekra - - Treprehehet - - Trerevivipek - - Treshepra - - Treshibar - - Treshipeska - - Treskari - - Tresketara - - Treskiskakir - - Tresracrir - - Tresrasker - - Tresratracre - - Tresravritre - - Tresreba - - Tresrihivri - - Tretapra - - Tretrahri - - Tretreske - - Tretrikicha - - Trevabihra - - Trevepa - - Trevetretrek - - Trevicra - - Trexatri - - Trexavra - - Trexetri - - Trexiricrara - - Treyakracra - - Treyaxihehe - - Tribexexet - - Tribirekri - - Trichakripre - - Trichiski - - Tricracri - - Tricrekapa - - Tricripe - - Trihavever - - Trihera - - Trihexisra - - Trihicrecrek - - Trihitrar - - Tripesrishe - - Tripever - - Triprakraxi - - Triprakri - - Trirahecri - - Trirapraxar - - Trireche - - Trishakretra - - Trishecrexir - - Trishepi - - Trishisrar - - Triskavri - - Trisketir - - Triskiyayat - - Trisrachiri - - Trisrevre - - Trisrisri - - Trisrisriper - - Trisrite - - Tritetre - - Tritrakepre - - Tritrichatri - - Tritriskari - - Trivriskeki - - Trivritipipi - - Trivriyayak - - Trixihahar - - Trixitri - - Triyashekiki - - Vabahecre - - Vabahrabebe - - Vabebir - - Vabehetre - - Vabetrahacha - - Vabivri - - Vachahrirere - - Vachavri - - Vachekihri - - Vachicratata - - Vachiske - - Vacracreki - - Vacrebihi - - Vacripra - - Vahapapashek - - Vahapraxe - - Vahasker - - Vaherekiki - - Vahibebeprek - - Vahivihahe - - Vakaheva - - Vakecha - - Vakevixixi - - Vakikepripra - - Vapeyayak - - Vapikevra - - Vapipribe - - Vaprakakak - - Vaprisra - - Vapritasha - - Varebitacre - - Varekricreki - - Vashakrikrik - - Vaskexititi - - Vaskiprexi - - Vaskivri - - Vaskiyahi - - Vasraprikre - - Vasrevi - - Vatracraxixi - - Vatrevi - - Vatriva - - Vavehihisrek - - Vavrisrasri - - Vaxeki - - Vaxeraskeske - - Vebexaxat - - Vebicheta - - Vechecricrik - - Vecraxicra - - Vecriche - - Vecritrika - - Vehevrer - - Vehratrir - - Vehraxexek - - Vehritrexe - - Vekarasra - - Vekaxivivi - - Vekehribaba - - Vekirevi - - Vekracri - - Vekreka - - Vekrekrikrit - - Vekrerikra - - Vekrishar - - Vekrishicha - - Vepekre - - Veprahahat - - Veprechahri - - Veprecrar - - Veprecrecrek - - Vepreritare - - Veretitishit - - Vericharihra - - Verikisresre - - Veshacricrik - - Veshebixexe - - Veshecrihapi - - Veshehe - - Veshepreprek - - Veshishakra - - Veskapi - - Veskepayaya - - Veskepevra - - Vesrihiska - - Vetepeti - - Vetracripi - - Vetreshashat - - Vetriskira - - Vevatre - - Vevevre - - Vevivesha - - Vevreshir - - Vevricrecrek - - Vevrisrasrat - - Vexachebashi - - Vexavever - - Vexikar - - Vexisrecri - - Vibepraxaba - - Vibeta - - Vichehiriri - - Vichitribihe - - Vicrahrehrek - - Vicrevevre - - Vicrikre - - Vicripasre - - Vicritebaba - - Vicriviriki - - Viheche - - Vihecracheki - - Vihepra - - Vihratekra - - Vihrexahihi - - Vihribihiska - - Vihricra - - Vihriher - - Vihriprar - - Vihrisreher - - Vikahrekri - - Vikakehreri - - Vikavebari - - Vikekiski - - Vikihahre - - Vikitrexa - - Vikrebibit - - Vikrihi - - Vikritahahe - - Vipeskixa - - Vipravrakrar - - Viprevrar - - Virabebevrek - - Viratrerera - - Virepri - - Viriprixiche - - Virirevrare - - Viritritrik - - Viskeski - - Visrecrecret - - Visriskir - - Vitexexet - - Vitibibihrik - - Vitika - - Vitracrevi - - Vitrasheshek - - Vitraviketa - - Vitravrire - - Vitreskaskak - - Vitrisrasha - - Vitrivechere - - Vivashate - - Vivecrixexe - - Viveprehehe - - Viveprepe - - Vivixixihir - - Vivrashaya - - Vixiticrixi - - Vrabaprakaka - - Vrabikape - - Vracharitri - - Vrachishachi - - Vrachitasre - - Vracrebihehe - - Vraheska - - Vrahrehripre - - Vrakasrahi - - Vrakayasraxi - - Vrakebibit - - Vrakriperi - - Vrakritatat - - Vrapaheke - - Vrapresriki - - Vraprexave - - Vrarekikik - - Vrarihritete - - Vraripechi - - Vrashexa - - Vraskekaki - - Vraskevexar - - Vrasrehahar - - Vrasreshahi - - Vratavivit - - Vratevretra - - Vratrakere - - Vratreskevi - - Vratrite - - Vratrivar - - Vravabepra - - Vravacrahri - - Vravavra - - Vravexe - - Vraviveya - - Vravrache - - Vraxihihit - - Vrayavri - - Vrebehrihrik - - Vrebisra - - Vrecrarake - - Vrecrihri - - Vrehabi - - Vrehacre - - Vrehakatar - - Vrehasker - - Vrehecreri - - Vrehibehe - - Vrehibibipik - - Vrehipe - - Vrehipraprak - - Vrehriviche - - Vrekahrichi - - Vrekihrer - - Vrekipepet - - Vrekrixa - - Vrepate - - Vrepexexer - - Vreprehapre - - Vreprihrite - - Vrererikra - - Vrerikriskir - - Vreshabar - - Vreshihishar - - Vreshike - - Vreskatre - - Vresrasre - - Vresretatra - - Vretesravi - - Vretixixir - - Vretrapapar - - Vretrehivivi - - Vretricre - - Vrevahrir - - Vrevashixexe - - Vrevrekrer - - Vrexacracrat - - Vrexaker - - Vribetretret - - Vribipita - - Vribiprevite - - Vricrehakra - - Vricrihi - - Vricriskeche - - Vrihehra - - Vriheski - - Vrihrakre - - Vrihrekrepi - - Vrikayaba - - Vrikivresker - - Vrikrake - - Vrikrebacre - - Vrikresrasri - - Vripere - - Vripexavri - - Vripitikeske - - Vriprivra - - Vrirachesri - - Vririsha - - Vrisketaske - - Vriskiraxe - - Vriskire - - Vrisracrakri - - Vrisrekari - - Vrisreviki - - Vritasre - - Vriterepi - - Vritetrexa - - Vritika - - Vritiske - - Vritivraki - - Vritrihrar - - Vritrisre - - Vrivahi - - Vrivahishaya - - Vrivehatri - - Vrivitri - - Vrixashashar - - Vrixavribape - - Vrixeprir - - Vrixiprehre - - Vrixitreveki - - Vrixivraxe - - Xabishetra - - Xachivrivrit - - Xacripikar - - Xacriprixi - - Xacrivir - - Xahatavri - - Xahesketivri - - Xahrapaba - - Xahraprer - - Xahrebave - - Xahripavava - - Xakahri - - Xakayayakat - - Xakrevaratra - - Xapakra - - Xapikrikrik - - Xapipevrevre - - Xapraskapika - - Xaprate - - Xapravri - - Xapripraprar - - Xaracrivri - - Xaratripepe - - Xarebiya - - Xareva - - Xariheheprat - - Xashihapa - - Xaskakaba - - Xaskararater - - Xasrapipik - - Xasreskihibi - - Xatachasri - - Xatereret - - Xatiriskiski - - Xatrexixik - - Xavasrarihi - - Xaveshi - - Xavicrari - - Xavrahavri - - Xavricri - - Xavrire - - Xavrixecre - - Xaxikaxexe - - Xaxikresha - - Xaxiska - - Xayaskihri - - Xebechi - - Xebetetet - - Xebitretrek - - Xechacrecrek - - Xechibare - - Xecrixaxitre - - Xehekikir - - Xehetipe - - Xehichatavra - - Xehiprishe - - Xehiteche - - Xehrevrakre - - Xehrishe - - Xekerarivra - - Xekicra - - Xekrecri - - Xekrevri - - Xekrevripa - - Xepavikeba - - Xepehati - - Xepeter - - Xepetitipet - - Xeprasre - - Xeprekivra - - Xeprihehek - - Xeshachikaha - - Xeskapakre - - Xeskehrabe - - Xesribar - - Xetekir - - Xetraskesket - - Xetravivik - - Xetrexahihi - - Xetribirer - - Xetripi - - Xevetaske - - Xevratikepa - - Xevriya - - Xexapra - - Xexavi - - Xexibir - - Xexiski - - Xeyapre - - Xeyaribe - - Xeyaskapibe - - Xibecracrak - - Xibeha - - Xibepribe - - Xibitratrar - - Xihechevar - - Xihrahehete - - Xihrashehihi - - Xihrecreve - - Xihresra - - Xihrivever - - Xikabebet - - Xikahihi - - Xikashaxe - - Xikaske - - Xikepehrahra - - Xikicha - - Xikrahrihrik - - Xikrakipi - - Xikreshe - - Xikreska - - Xikrexiva - - Xikrihe - - Xikripar - - Xipahihik - - Xipita - - Xiprahahatek - - Xirechiske - - Xireshishit - - Xiribakrivi - - Xirichare - - Xirichebacra - - Xirichiter - - Xiricraki - - Xirihacrir - - Xirihiske - - Xirihiyatape - - Xirihrekakar - - Xirihretecre - - Xirihriti - - Xirikesrirer - - Xiriketi - - Xiripape - - Xiririhecher - - Xiririke - - Xiriripatibe - - Xirishepivre - - Xirishexi - - Xiriskapa - - Xirisketa - - Xiriskicreha - - Xirisrevre - - Xirisricreva - - Xiritracre - - Xiritreprer - - Xiritretrar - - Xirivetrikra - - Xirivexicri - - Xirivre - - Xirivrehra - - Xirixekrari - - Xishahrixixi - - Xishatre - - Xishehraxaxa - - Xishikra - - Xiskatreka - - Xiskeche - - Xiskehrahar - - Xiskicratake - - Xiskiririr - - Xisrecracrak - - Xisreva - - Xisritetet - - Xitachabibi - - Xitachixaxa - - Xitariritak - - Xitebehrer - - Xitreprecri - - Xivavraxexe - - Xiveski - - Xivivri - - Xivrahrare - - Xivrakrakrak - - Xivrihihicra - - Xixaxekaka - - Xixecra - - Xixiche + prefix: names-vox-dataset- + count: 2761 diff --git a/Resources/Prototypes/Species/vox.yml b/Resources/Prototypes/Species/vox.yml index 29cc0583fc..8501784b89 100644 --- a/Resources/Prototypes/Species/vox.yml +++ b/Resources/Prototypes/Species/vox.yml @@ -8,8 +8,8 @@ dollPrototype: MobVoxDummy skinColoration: VoxFeathers defaultSkinTone: "#6c741d" - maleFirstNames: names_vox - femaleFirstNames: names_vox + maleFirstNames: NamesVox + femaleFirstNames: NamesVox naming: First sexes: - Unsexed From 72c218f242321e58eebf2790a6f1990fa8740d1e Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:03:38 +0300 Subject: [PATCH 70/91] [Part of #32893] Localize first & last dataset names (#33401) * Localize first names * Localize last names * Correct prototype ids to follow naming conventions * Combine first.yml and last.yml into base.yml * Forgot about = in last --- .../Locale/en-US/datasets/names/first.ftl | 1395 ++++++++++++++++ .../Locale/en-US/datasets/names/last.ftl | 553 +++++++ Resources/Prototypes/Datasets/Names/base.yml | 11 + Resources/Prototypes/Datasets/Names/first.yml | 1398 ----------------- Resources/Prototypes/Datasets/Names/last.yml | 557 ------- .../Mobs/Player/ShuttleRoles/settings.yml | 32 +- .../Entities/Mobs/Player/humanoid.yml | 4 +- 7 files changed, 1977 insertions(+), 1973 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/last.ftl create mode 100644 Resources/Prototypes/Datasets/Names/base.yml delete mode 100644 Resources/Prototypes/Datasets/Names/first.yml delete mode 100644 Resources/Prototypes/Datasets/Names/last.yml diff --git a/Resources/Locale/en-US/datasets/names/first.ftl b/Resources/Locale/en-US/datasets/names/first.ftl new file mode 100644 index 0000000000..0d39af9c87 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/first.ftl @@ -0,0 +1,1395 @@ +names-first-dataset-1 = Aaden +names-first-dataset-2 = Aaliyah +names-first-dataset-3 = Aaron +names-first-dataset-4 = Abby +names-first-dataset-5 = Abel +names-first-dataset-6 = Abigail +names-first-dataset-7 = Abraham +names-first-dataset-8 = Adam +names-first-dataset-9 = Adan +names-first-dataset-10 = Addison +names-first-dataset-11 = Addyson +names-first-dataset-12 = Adeline +names-first-dataset-13 = Aden +names-first-dataset-14 = Adrian +names-first-dataset-15 = Adriana +names-first-dataset-16 = Adrianna +names-first-dataset-17 = Aida +names-first-dataset-18 = Aidan +names-first-dataset-19 = Aiden +names-first-dataset-20 = Aileen +names-first-dataset-21 = Ainsley +names-first-dataset-22 = Alaina +names-first-dataset-23 = Alan +names-first-dataset-24 = Alana +names-first-dataset-25 = Alanna +names-first-dataset-26 = Alayna +names-first-dataset-27 = Albert +names-first-dataset-28 = Alberto +names-first-dataset-29 = Alden +names-first-dataset-30 = Alec +names-first-dataset-31 = Alejandra +names-first-dataset-32 = Alejandro +names-first-dataset-33 = Alessandra +names-first-dataset-34 = Alex +names-first-dataset-35 = Alexa +names-first-dataset-36 = Alexander +names-first-dataset-37 = Alexandra +names-first-dataset-38 = Alexandria +names-first-dataset-39 = Alexia +names-first-dataset-40 = Alexis +names-first-dataset-41 = Alexus +names-first-dataset-42 = Alfred +names-first-dataset-43 = Alfreda +names-first-dataset-44 = Alfredo +names-first-dataset-45 = Alger +names-first-dataset-46 = Ali +names-first-dataset-47 = Alice +names-first-dataset-48 = Alicia +names-first-dataset-49 = Alijah +names-first-dataset-50 = Alina +names-first-dataset-51 = Alisa +names-first-dataset-52 = Alison +names-first-dataset-53 = Alissa +names-first-dataset-54 = Alisya +names-first-dataset-55 = Alivia +names-first-dataset-56 = Aliyah +names-first-dataset-57 = Allegra +names-first-dataset-58 = Allegria +names-first-dataset-59 = Allen +names-first-dataset-60 = Allie +names-first-dataset-61 = Allison +names-first-dataset-62 = Allisson +names-first-dataset-63 = Allyson +names-first-dataset-64 = Alma +names-first-dataset-65 = Alondra +names-first-dataset-66 = Alvin +names-first-dataset-67 = Alysha +names-first-dataset-68 = Alyson +names-first-dataset-69 = Alyssa +names-first-dataset-70 = Alyssia +names-first-dataset-71 = Amanda +names-first-dataset-72 = Amari +names-first-dataset-73 = Amaryllis +names-first-dataset-74 = Amaya +names-first-dataset-75 = Amber +names-first-dataset-76 = Ambrosine +names-first-dataset-77 = Amelia +names-first-dataset-78 = Amir +names-first-dataset-79 = Amira +names-first-dataset-80 = Amiyah +names-first-dataset-81 = Amos +names-first-dataset-82 = Amy +names-first-dataset-83 = Amya +names-first-dataset-84 = Ana +names-first-dataset-85 = Anahi +names-first-dataset-86 = Anastasia +names-first-dataset-87 = Anaya +names-first-dataset-88 = Anderson +names-first-dataset-89 = Andre +names-first-dataset-90 = Andrea +names-first-dataset-91 = Andres +names-first-dataset-92 = Andrew +names-first-dataset-93 = Andy +names-first-dataset-94 = Angel +names-first-dataset-95 = Angela +names-first-dataset-96 = Angelica +names-first-dataset-97 = Angelina +names-first-dataset-98 = Angelo +names-first-dataset-99 = Angie +names-first-dataset-100 = Aniya +names-first-dataset-101 = Aniyah +names-first-dataset-102 = Anjelica +names-first-dataset-103 = Anna +names-first-dataset-104 = Annabelle +names-first-dataset-105 = Anne +names-first-dataset-106 = Annie +names-first-dataset-107 = Annika +names-first-dataset-108 = Anthony +names-first-dataset-109 = Antonio +names-first-dataset-110 = Anya +names-first-dataset-111 = April +names-first-dataset-112 = Arabella +names-first-dataset-113 = Archie +names-first-dataset-114 = Ariana +names-first-dataset-115 = Arianna +names-first-dataset-116 = Ariel +names-first-dataset-117 = Arielle +names-first-dataset-118 = Arleen +names-first-dataset-119 = Armando +names-first-dataset-120 = Arn +names-first-dataset-121 = Art +names-first-dataset-122 = Arthur +names-first-dataset-123 = Arturo +names-first-dataset-124 = Asher +names-first-dataset-125 = Ashley +names-first-dataset-126 = Ashlie +names-first-dataset-127 = Ashlyn +names-first-dataset-128 = Ashlynn +names-first-dataset-129 = Ashton +names-first-dataset-130 = Asia +names-first-dataset-131 = Astor +names-first-dataset-132 = Athena +names-first-dataset-133 = Aubree +names-first-dataset-134 = Aubrey +names-first-dataset-135 = Aubrie +names-first-dataset-136 = Audrey +names-first-dataset-137 = Audrina +names-first-dataset-138 = August +names-first-dataset-139 = Aurora +names-first-dataset-140 = Austin +names-first-dataset-141 = Autumn +names-first-dataset-142 = Ava +names-first-dataset-143 = Avalon +names-first-dataset-144 = Averill +names-first-dataset-145 = Avery +names-first-dataset-146 = Axel +names-first-dataset-147 = Ayden +names-first-dataset-148 = Ayla +names-first-dataset-149 = Bailey +names-first-dataset-150 = Baldric +names-first-dataset-151 = Barbra +names-first-dataset-152 = Bartholomew +names-first-dataset-153 = Baylee +names-first-dataset-154 = Beau +names-first-dataset-155 = Beckah +names-first-dataset-156 = Beckett +names-first-dataset-157 = Becky +names-first-dataset-158 = Bella +names-first-dataset-159 = Benjamin +names-first-dataset-160 = Bennett +names-first-dataset-161 = Bernice +names-first-dataset-162 = Bertrand +names-first-dataset-163 = Bethany +names-first-dataset-164 = Bethney +names-first-dataset-165 = Betsy +names-first-dataset-166 = Bianca +names-first-dataset-167 = Bidelia +names-first-dataset-168 = Bill +names-first-dataset-169 = Blake +names-first-dataset-170 = Braden +names-first-dataset-171 = Bradley +names-first-dataset-172 = Brady +names-first-dataset-173 = Braeden +names-first-dataset-174 = Braiden +names-first-dataset-175 = Brandon +names-first-dataset-176 = Braxton +names-first-dataset-177 = Brayan +names-first-dataset-178 = Brayden +names-first-dataset-179 = Braydon +names-first-dataset-180 = Braylon +names-first-dataset-181 = Breanna +names-first-dataset-182 = Breanne +names-first-dataset-183 = Brenda +names-first-dataset-184 = Brendan +names-first-dataset-185 = Brenden +names-first-dataset-186 = Brenna +names-first-dataset-187 = Brennan +names-first-dataset-188 = Brett +names-first-dataset-189 = Brian +names-first-dataset-190 = Briana +names-first-dataset-191 = Brianna +names-first-dataset-192 = Bridget +names-first-dataset-193 = Brielle +names-first-dataset-194 = Brittani +names-first-dataset-195 = Brittany +names-first-dataset-196 = Brock +names-first-dataset-197 = Brodie +names-first-dataset-198 = Brody +names-first-dataset-199 = Bronte +names-first-dataset-200 = Brooke +names-first-dataset-201 = Brooklyn +names-first-dataset-202 = Brooklynn +names-first-dataset-203 = Bruce +names-first-dataset-204 = Bryan +names-first-dataset-205 = Bryant +names-first-dataset-206 = Bryce +names-first-dataset-207 = Brycen +names-first-dataset-208 = Brynn +names-first-dataset-209 = Bryson +names-first-dataset-210 = Burt +names-first-dataset-211 = Byrne +names-first-dataset-212 = Byron +names-first-dataset-213 = Bysshe +names-first-dataset-214 = Cade +names-first-dataset-215 = Caden +names-first-dataset-216 = Cadence +names-first-dataset-217 = Caiden +names-first-dataset-218 = Caitlin +names-first-dataset-219 = Caitlyn +names-first-dataset-220 = Calanthia +names-first-dataset-221 = Caleb +names-first-dataset-222 = Caleigh +names-first-dataset-223 = Cali +names-first-dataset-224 = Callie +names-first-dataset-225 = Calvin +names-first-dataset-226 = Camden +names-first-dataset-227 = Cameron +names-first-dataset-228 = Camila +names-first-dataset-229 = Camille +names-first-dataset-230 = Camron +names-first-dataset-231 = Camryn +names-first-dataset-232 = Candace +names-first-dataset-233 = Candice +names-first-dataset-234 = Candis +names-first-dataset-235 = Canute +names-first-dataset-236 = Cara +names-first-dataset-237 = Carl +names-first-dataset-238 = Carlos +names-first-dataset-239 = Carly +names-first-dataset-240 = Carlyle +names-first-dataset-241 = Carmen +names-first-dataset-242 = Carolina +names-first-dataset-243 = Caroline +names-first-dataset-244 = Carolyn +names-first-dataset-245 = Carry +names-first-dataset-246 = Carson +names-first-dataset-247 = Carter +names-first-dataset-248 = Caryl +names-first-dataset-249 = Casey +names-first-dataset-250 = Cash +names-first-dataset-251 = Casimir +names-first-dataset-252 = Cassandra +names-first-dataset-253 = Cassian +names-first-dataset-254 = Cassidy +names-first-dataset-255 = Catherine +names-first-dataset-256 = Cayden +names-first-dataset-257 = Cecilia +names-first-dataset-258 = Cecily +names-first-dataset-259 = Celeste +names-first-dataset-260 = Cesar +names-first-dataset-261 = Chad +names-first-dataset-262 = Chance +names-first-dataset-263 = Chandler +names-first-dataset-264 = Charles +names-first-dataset-265 = Charlie +names-first-dataset-266 = Charlotte +names-first-dataset-267 = Charlton +names-first-dataset-268 = Chase +names-first-dataset-269 = Chelsea +names-first-dataset-270 = Cherette +names-first-dataset-271 = Cheri +names-first-dataset-272 = Cherry +names-first-dataset-273 = Cheyanne +names-first-dataset-274 = Cheyenne +names-first-dataset-275 = Chip +names-first-dataset-276 = Chloe +names-first-dataset-277 = Chris +names-first-dataset-278 = Christa +names-first-dataset-279 = Christian +names-first-dataset-280 = Christiana +names-first-dataset-281 = Christina +names-first-dataset-282 = Christobel +names-first-dataset-283 = Christopher +names-first-dataset-284 = Ciara +names-first-dataset-285 = Cindy +names-first-dataset-286 = Claire +names-first-dataset-287 = Clara +names-first-dataset-288 = Claribel +names-first-dataset-289 = Clark +names-first-dataset-290 = Claudia +names-first-dataset-291 = Claudius +names-first-dataset-292 = Clayton +names-first-dataset-293 = Clement +names-first-dataset-294 = Cleveland +names-first-dataset-295 = Cliff +names-first-dataset-296 = Clinton +names-first-dataset-297 = Clitus +names-first-dataset-298 = Clover +names-first-dataset-299 = Cody +names-first-dataset-300 = Cohen +names-first-dataset-301 = Colby +names-first-dataset-302 = Cole +names-first-dataset-303 = Colin +names-first-dataset-304 = Collin +names-first-dataset-305 = Colten +names-first-dataset-306 = Colton +names-first-dataset-307 = Conner +names-first-dataset-308 = Connor +names-first-dataset-309 = Cooper +names-first-dataset-310 = Cora +names-first-dataset-311 = Corbin +names-first-dataset-312 = Coreen +names-first-dataset-313 = Corey +names-first-dataset-314 = Corrine +names-first-dataset-315 = Cory +names-first-dataset-316 = Courtney +names-first-dataset-317 = Cristian +names-first-dataset-318 = Cristopher +names-first-dataset-319 = Cruz +names-first-dataset-320 = Crystal +names-first-dataset-321 = Curtis +names-first-dataset-322 = Cy +names-first-dataset-323 = Cynthia +names-first-dataset-324 = Daisy +names-first-dataset-325 = Dakota +names-first-dataset-326 = Dallas +names-first-dataset-327 = Dalton +names-first-dataset-328 = Dalya +names-first-dataset-329 = Damian +names-first-dataset-330 = Damien +names-first-dataset-331 = Damon +names-first-dataset-332 = Dana +names-first-dataset-333 = Dane +names-first-dataset-334 = Danica +names-first-dataset-335 = Daniel +names-first-dataset-336 = Daniela +names-first-dataset-337 = Daniella +names-first-dataset-338 = Danielle +names-first-dataset-339 = Danika +names-first-dataset-340 = Danna +names-first-dataset-341 = Danny +names-first-dataset-342 = Dante +names-first-dataset-343 = Darcey +names-first-dataset-344 = Darell +names-first-dataset-345 = Daria +names-first-dataset-346 = Darin +names-first-dataset-347 = Darius +names-first-dataset-348 = Darren +names-first-dataset-349 = David +names-first-dataset-350 = Davion +names-first-dataset-351 = Davis +names-first-dataset-352 = Dawson +names-first-dataset-353 = Dayana +names-first-dataset-354 = Dayna +names-first-dataset-355 = Dayton +names-first-dataset-356 = Dean +names-first-dataset-357 = Deandre +names-first-dataset-358 = Deangelo +names-first-dataset-359 = Debbi +names-first-dataset-360 = Declan +names-first-dataset-361 = Dee +names-first-dataset-362 = Deena +names-first-dataset-363 = Delaney +names-first-dataset-364 = Delilah +names-first-dataset-365 = Della +names-first-dataset-366 = Delma +names-first-dataset-367 = Denholm +names-first-dataset-368 = Denise +names-first-dataset-369 = Dennis +names-first-dataset-370 = Denys +names-first-dataset-371 = Derek +names-first-dataset-372 = Derrick +names-first-dataset-373 = Desiree +names-first-dataset-374 = Desmond +names-first-dataset-375 = Destiny +names-first-dataset-376 = Devin +names-first-dataset-377 = Devon +names-first-dataset-378 = Diamond +names-first-dataset-379 = Diana +names-first-dataset-380 = Diego +names-first-dataset-381 = Dillon +names-first-dataset-382 = Dina +names-first-dataset-383 = Dolores +names-first-dataset-384 = Dominic +names-first-dataset-385 = Dominick +names-first-dataset-386 = Donald +names-first-dataset-387 = Donella +names-first-dataset-388 = Donna +names-first-dataset-389 = Donny +names-first-dataset-390 = Donovan +names-first-dataset-391 = Dorian +names-first-dataset-392 = Dorothy +names-first-dataset-393 = Dortha +names-first-dataset-394 = Douglas +names-first-dataset-395 = Drake +names-first-dataset-396 = Drew +names-first-dataset-397 = Driscoll +names-first-dataset-398 = Dulce +names-first-dataset-399 = Duncan +names-first-dataset-400 = Dustin +names-first-dataset-401 = Dylan +names-first-dataset-402 = Easter +names-first-dataset-403 = Easton +names-first-dataset-404 = Ebba +names-first-dataset-405 = Eddie +names-first-dataset-406 = Eden +names-first-dataset-407 = Edgar +names-first-dataset-408 = Eduardo +names-first-dataset-409 = Edward +names-first-dataset-410 = Edwin +names-first-dataset-411 = Effie +names-first-dataset-412 = Elaina +names-first-dataset-413 = Eleanor +names-first-dataset-414 = Elena +names-first-dataset-415 = Eli +names-first-dataset-416 = Eliana +names-first-dataset-417 = Elias +names-first-dataset-418 = Elijah +names-first-dataset-419 = Eliot +names-first-dataset-420 = Eliott +names-first-dataset-421 = Elise +names-first-dataset-422 = Eliza +names-first-dataset-423 = Elizabeth +names-first-dataset-424 = Ella +names-first-dataset-425 = Elle +names-first-dataset-426 = Ellie +names-first-dataset-427 = Elliot +names-first-dataset-428 = Elliott +names-first-dataset-429 = Elric +names-first-dataset-430 = Elspet +names-first-dataset-431 = Elwood +names-first-dataset-432 = Emanuel +names-first-dataset-433 = Emely +names-first-dataset-434 = Emerson +names-first-dataset-435 = Emery +names-first-dataset-436 = Emilee +names-first-dataset-437 = Emilia +names-first-dataset-438 = Emiliano +names-first-dataset-439 = Emilio +names-first-dataset-440 = Emily +names-first-dataset-441 = Emma +names-first-dataset-442 = Emmanuel +names-first-dataset-443 = Enrique +names-first-dataset-444 = Eric +names-first-dataset-445 = Erica +names-first-dataset-446 = Erick +names-first-dataset-447 = Erik +names-first-dataset-448 = Erika +names-first-dataset-449 = Erin +names-first-dataset-450 = Ermintrude +names-first-dataset-451 = Ernesto +names-first-dataset-452 = Esmeralda +names-first-dataset-453 = Esteban +names-first-dataset-454 = Esther +names-first-dataset-455 = Estrella +names-first-dataset-456 = Ethan +names-first-dataset-457 = Eugenia +names-first-dataset-458 = Euphemia +names-first-dataset-459 = Eustace +names-first-dataset-460 = Eva +names-first-dataset-461 = Evan +names-first-dataset-462 = Evangeline +names-first-dataset-463 = Eveleen +names-first-dataset-464 = Evelina +names-first-dataset-465 = Evelyn +names-first-dataset-466 = Everett +names-first-dataset-467 = Ezekiel +names-first-dataset-468 = Ezra +names-first-dataset-469 = Fabian +names-first-dataset-470 = Faith +names-first-dataset-471 = Fatima +names-first-dataset-472 = Fay +names-first-dataset-473 = Felix +names-first-dataset-474 = Fernanda +names-first-dataset-475 = Fernando +names-first-dataset-476 = Finn +names-first-dataset-477 = Fiona +names-first-dataset-478 = Fitz +names-first-dataset-479 = Flick +names-first-dataset-480 = Floella +names-first-dataset-481 = Flora +names-first-dataset-482 = Flossie +names-first-dataset-483 = Fortune +names-first-dataset-484 = Francesca +names-first-dataset-485 = Francis +names-first-dataset-486 = Francisco +names-first-dataset-487 = Frank +names-first-dataset-488 = Frankie +names-first-dataset-489 = Franklin +names-first-dataset-490 = Fulton +names-first-dataset-491 = Gabriel +names-first-dataset-492 = Gabriela +names-first-dataset-493 = Gabriella +names-first-dataset-494 = Gabrielle +names-first-dataset-495 = Gael +names-first-dataset-496 = Gage +names-first-dataset-497 = Garret +names-first-dataset-498 = Garrett +names-first-dataset-499 = Gary +names-first-dataset-500 = Gavin +names-first-dataset-501 = Gaye +names-first-dataset-502 = Gaylord +names-first-dataset-503 = Genesis +names-first-dataset-504 = Genette +names-first-dataset-505 = Genevieve +names-first-dataset-506 = George +names-first-dataset-507 = Georgene +names-first-dataset-508 = Georgia +names-first-dataset-509 = Geraldine +names-first-dataset-510 = Gerardo +names-first-dataset-511 = Gervase +names-first-dataset-512 = Gianna +names-first-dataset-513 = Gina +names-first-dataset-514 = Ginger +names-first-dataset-515 = Giovanni +names-first-dataset-516 = Giselle +names-first-dataset-517 = Gladwyn +names-first-dataset-518 = Glenna +names-first-dataset-519 = Gloria +names-first-dataset-520 = Goddard +names-first-dataset-521 = Godwin +names-first-dataset-522 = Goodwin +names-first-dataset-523 = Gordon +names-first-dataset-524 = Grace +names-first-dataset-525 = Gracie +names-first-dataset-526 = Grady +names-first-dataset-527 = Graeme +names-first-dataset-528 = Graham +names-first-dataset-529 = Grant +names-first-dataset-530 = Gratian +names-first-dataset-531 = Grayson +names-first-dataset-532 = Gregory +names-first-dataset-533 = Greta +names-first-dataset-534 = Greyson +names-first-dataset-535 = Griffin +names-first-dataset-536 = Griselda +names-first-dataset-537 = Guadalupe +names-first-dataset-538 = Guillermo +names-first-dataset-539 = Gunner +names-first-dataset-540 = Gustavo +names-first-dataset-541 = Gwenda +names-first-dataset-542 = Gwenevere +names-first-dataset-543 = Hadley +names-first-dataset-544 = Haidee +names-first-dataset-545 = Hailee +names-first-dataset-546 = Hailey +names-first-dataset-547 = Hal +names-first-dataset-548 = Haleigh +names-first-dataset-549 = Haley +names-first-dataset-550 = Hanna +names-first-dataset-551 = Hannah +names-first-dataset-552 = Happy +names-first-dataset-553 = Harley +names-first-dataset-554 = Harmony +names-first-dataset-555 = Harper +names-first-dataset-556 = Harrison +names-first-dataset-557 = Hartley +names-first-dataset-558 = Hayden +names-first-dataset-559 = Haylee +names-first-dataset-560 = Hayley +names-first-dataset-561 = Haylie +names-first-dataset-562 = Hazel +names-first-dataset-563 = Heather +names-first-dataset-564 = Heaven +names-first-dataset-565 = Hector +names-first-dataset-566 = Hedley +names-first-dataset-567 = Heidi +names-first-dataset-568 = Helen +names-first-dataset-569 = Henderson +names-first-dataset-570 = Henry +names-first-dataset-571 = Hepsie +names-first-dataset-572 = Hervey +names-first-dataset-573 = Holden +names-first-dataset-574 = Holly +names-first-dataset-575 = Homer +names-first-dataset-576 = Hope +names-first-dataset-577 = Horatio +names-first-dataset-578 = Hortensia +names-first-dataset-579 = Hudson +names-first-dataset-580 = Huffie +names-first-dataset-581 = Hugo +names-first-dataset-582 = Hunter +names-first-dataset-583 = Ian +names-first-dataset-584 = Iantha +names-first-dataset-585 = Ileen +names-first-dataset-586 = Imani +names-first-dataset-587 = Innocent +names-first-dataset-588 = Irene +names-first-dataset-589 = Iris +names-first-dataset-590 = Irvine +names-first-dataset-591 = Isaac +names-first-dataset-592 = Isabel +names-first-dataset-593 = Isabella +names-first-dataset-594 = Isabelle +names-first-dataset-595 = Isaiah +names-first-dataset-596 = Isaias +names-first-dataset-597 = Isiah +names-first-dataset-598 = Ismael +names-first-dataset-599 = Israel +names-first-dataset-600 = Issac +names-first-dataset-601 = Itzel +names-first-dataset-602 = Ivan +names-first-dataset-603 = Ivy +names-first-dataset-604 = Izabella +names-first-dataset-605 = Izaiah +names-first-dataset-606 = Jacaline +names-first-dataset-607 = Jace +names-first-dataset-608 = Jack +names-first-dataset-609 = Jackson +names-first-dataset-610 = Jacob +names-first-dataset-611 = Jacoby +names-first-dataset-612 = Jacqueline +names-first-dataset-613 = Jacquetta +names-first-dataset-614 = Jacqui +names-first-dataset-615 = Jada +names-first-dataset-616 = Jade +names-first-dataset-617 = Jaden +names-first-dataset-618 = Jadon +names-first-dataset-619 = Jadyn +names-first-dataset-620 = Jaelyn +names-first-dataset-621 = Jaiden +names-first-dataset-622 = Jaime +names-first-dataset-623 = Jake +names-first-dataset-624 = Jakki +names-first-dataset-625 = Jakob +names-first-dataset-626 = Jalen +names-first-dataset-627 = Jamar +names-first-dataset-628 = Jamari +names-first-dataset-629 = Jamarion +names-first-dataset-630 = James +names-first-dataset-631 = Jameson +names-first-dataset-632 = Jamie +names-first-dataset-633 = Jamison +names-first-dataset-634 = Jane +names-first-dataset-635 = Janel +names-first-dataset-636 = Janelle +names-first-dataset-637 = Janette +names-first-dataset-638 = Janie +names-first-dataset-639 = Janina +names-first-dataset-640 = Janine +names-first-dataset-641 = Janiya +names-first-dataset-642 = Janiyah +names-first-dataset-643 = Jared +names-first-dataset-644 = Jaslene +names-first-dataset-645 = Jasmin +names-first-dataset-646 = Jasmine +names-first-dataset-647 = Jason +names-first-dataset-648 = Jasper +names-first-dataset-649 = Javier +names-first-dataset-650 = Javon +names-first-dataset-651 = Jaxon +names-first-dataset-652 = Jaxson +names-first-dataset-653 = Jay +names-first-dataset-654 = Jayce +names-first-dataset-655 = Jayda +names-first-dataset-656 = Jayden +names-first-dataset-657 = Jaydon +names-first-dataset-658 = Jaye +names-first-dataset-659 = Jayla +names-first-dataset-660 = Jaylee +names-first-dataset-661 = Jaylen +names-first-dataset-662 = Jayne +names-first-dataset-663 = Jaynie +names-first-dataset-664 = Jayson +names-first-dataset-665 = Jazlyn +names-first-dataset-666 = Jazmin +names-first-dataset-667 = Jazmine +names-first-dataset-668 = Jeanna +names-first-dataset-669 = Jeannie +names-first-dataset-670 = Jeannine +names-first-dataset-671 = Jeb +names-first-dataset-672 = Jed +names-first-dataset-673 = Jeffrey +names-first-dataset-674 = Jemmy +names-first-dataset-675 = Jenifer +names-first-dataset-676 = Jenna +names-first-dataset-677 = Jennie +names-first-dataset-678 = Jennifer +names-first-dataset-679 = Jera +names-first-dataset-680 = Jere +names-first-dataset-681 = Jeremiah +names-first-dataset-682 = Jeremy +names-first-dataset-683 = Jeri +names-first-dataset-684 = Jermaine +names-first-dataset-685 = Jerrie +names-first-dataset-686 = Jerry +names-first-dataset-687 = Jesse +names-first-dataset-688 = Jessica +names-first-dataset-689 = Jesus +names-first-dataset-690 = Jillian +names-first-dataset-691 = Jillie +names-first-dataset-692 = Jim +names-first-dataset-693 = Jimena +names-first-dataset-694 = Jimmy +names-first-dataset-695 = Joachim +names-first-dataset-696 = Joanna +names-first-dataset-697 = Joaquin +names-first-dataset-698 = Jocelyn +names-first-dataset-699 = Joe +names-first-dataset-700 = Joel +names-first-dataset-701 = Joetta +names-first-dataset-702 = Joey +names-first-dataset-703 = Johan +names-first-dataset-704 = Johanna +names-first-dataset-705 = John +names-first-dataset-706 = Johnathan +names-first-dataset-707 = Johnny +names-first-dataset-708 = Joi +names-first-dataset-709 = Jonah +names-first-dataset-710 = Jonas +names-first-dataset-711 = Jonathan +names-first-dataset-712 = Jonathon +names-first-dataset-713 = Joni +names-first-dataset-714 = Jordan +names-first-dataset-715 = Jordyn +names-first-dataset-716 = Jorge +names-first-dataset-717 = Jose +names-first-dataset-718 = Joselyn +names-first-dataset-719 = Joseph +names-first-dataset-720 = Josepha +names-first-dataset-721 = Josephine +names-first-dataset-722 = Josh +names-first-dataset-723 = Joshua +names-first-dataset-724 = Josiah +names-first-dataset-725 = Josie +names-first-dataset-726 = Josue +names-first-dataset-727 = Joye +names-first-dataset-728 = Juan +names-first-dataset-729 = Judah +names-first-dataset-730 = Jude +names-first-dataset-731 = Julia +names-first-dataset-732 = Julian +names-first-dataset-733 = Juliana +names-first-dataset-734 = Julianna +names-first-dataset-735 = Julie +names-first-dataset-736 = Juliet +names-first-dataset-737 = Julio +names-first-dataset-738 = Julissa +names-first-dataset-739 = Julius +names-first-dataset-740 = July +names-first-dataset-741 = Justice +names-first-dataset-742 = Justin +names-first-dataset-743 = Kade +names-first-dataset-744 = Kaden +names-first-dataset-745 = Kadence +names-first-dataset-746 = Kaelea +names-first-dataset-747 = Kaelyn +names-first-dataset-748 = Kai +names-first-dataset-749 = Kaiden +names-first-dataset-750 = Kailey +names-first-dataset-751 = Kailyn +names-first-dataset-752 = Kaitlin +names-first-dataset-753 = Kaitlyn +names-first-dataset-754 = Kale +names-first-dataset-755 = Kaleb +names-first-dataset-756 = Kaleigh +names-first-dataset-757 = Kameron +names-first-dataset-758 = Kamryn +names-first-dataset-759 = Kane +names-first-dataset-760 = Kara +names-first-dataset-761 = Karen +names-first-dataset-762 = Karenza +names-first-dataset-763 = Karina +names-first-dataset-764 = Karla +names-first-dataset-765 = Karly +names-first-dataset-766 = Karson +names-first-dataset-767 = Karyn +names-first-dataset-768 = Kassidy +names-first-dataset-769 = Kat +names-first-dataset-770 = Kate +names-first-dataset-771 = Katelyn +names-first-dataset-772 = Katelynn +names-first-dataset-773 = Katherine +names-first-dataset-774 = Kathleen +names-first-dataset-775 = Kathryn +names-first-dataset-776 = Kathy +names-first-dataset-777 = Katie +names-first-dataset-778 = Katlyn +names-first-dataset-779 = Kayden +names-first-dataset-780 = Kaydence +names-first-dataset-781 = Kayla +names-first-dataset-782 = Kaylee +names-first-dataset-783 = Kayleigh +names-first-dataset-784 = Kaylie +names-first-dataset-785 = Kaylin +names-first-dataset-786 = Keagan +names-first-dataset-787 = Keaton +names-first-dataset-788 = Keegan +names-first-dataset-789 = Keira +names-first-dataset-790 = Keith +names-first-dataset-791 = Kellen +names-first-dataset-792 = Kellie +names-first-dataset-793 = Kelly +names-first-dataset-794 = Kelsey +names-first-dataset-795 = Kelvin +names-first-dataset-796 = Kendall +names-first-dataset-797 = Kendra +names-first-dataset-798 = Kennard +names-first-dataset-799 = Kennedy +names-first-dataset-800 = Kenneth +names-first-dataset-801 = Kenzie +names-first-dataset-802 = Kerena +names-first-dataset-803 = Kerensa +names-first-dataset-804 = Keturah +names-first-dataset-805 = Kevin +names-first-dataset-806 = Keziah +names-first-dataset-807 = Khalil +names-first-dataset-808 = Khloe +names-first-dataset-809 = Kiana +names-first-dataset-810 = Kiara +names-first-dataset-811 = Kiera +names-first-dataset-812 = Kiley +names-first-dataset-813 = Kimberley +names-first-dataset-814 = Kimberly +names-first-dataset-815 = Kimora +names-first-dataset-816 = Kingston +names-first-dataset-817 = Kira +names-first-dataset-818 = Kobe +names-first-dataset-819 = Kolton +names-first-dataset-820 = Kristen +names-first-dataset-821 = Kristina +names-first-dataset-822 = Kristopher +names-first-dataset-823 = Kyla +names-first-dataset-824 = Kyle +names-first-dataset-825 = Kylee +names-first-dataset-826 = Kyleigh +names-first-dataset-827 = Kyler +names-first-dataset-828 = Kylie +names-first-dataset-829 = Kyra +names-first-dataset-830 = Lacey +names-first-dataset-831 = Lacy +names-first-dataset-832 = Laila +names-first-dataset-833 = Lakeisha +names-first-dataset-834 = Lalla +names-first-dataset-835 = Lana +names-first-dataset-836 = Lance +names-first-dataset-837 = Landen +names-first-dataset-838 = Landon +names-first-dataset-839 = Landyn +names-first-dataset-840 = Lane +names-first-dataset-841 = Lanny +names-first-dataset-842 = Larry +names-first-dataset-843 = Latanya +names-first-dataset-844 = Launce +names-first-dataset-845 = Laura +names-first-dataset-846 = Lauren +names-first-dataset-847 = Laurencia +names-first-dataset-848 = Laurissa +names-first-dataset-849 = Lauryn +names-first-dataset-850 = Lawrence +names-first-dataset-851 = Layla +names-first-dataset-852 = Leah +names-first-dataset-853 = Leeann +names-first-dataset-854 = Leia +names-first-dataset-855 = Leila +names-first-dataset-856 = Leilani +names-first-dataset-857 = Leland +names-first-dataset-858 = Lena +names-first-dataset-859 = Lennox +names-first-dataset-860 = Leo +names-first-dataset-861 = Leonardo +names-first-dataset-862 = Leonel +names-first-dataset-863 = Leroi +names-first-dataset-864 = Leslie +names-first-dataset-865 = Lesly +names-first-dataset-866 = Lessie +names-first-dataset-867 = Leta +names-first-dataset-868 = Levi +names-first-dataset-869 = Lexi +names-first-dataset-870 = Lexia +names-first-dataset-871 = Lexus +names-first-dataset-872 = Lia +names-first-dataset-873 = Liam +names-first-dataset-874 = Lila +names-first-dataset-875 = Lilah +names-first-dataset-876 = Lilian +names-first-dataset-877 = Liliana +names-first-dataset-878 = Lillian +names-first-dataset-879 = Lilliana +names-first-dataset-880 = Lillie +names-first-dataset-881 = Lilly +names-first-dataset-882 = Lily +names-first-dataset-883 = Lincoln +names-first-dataset-884 = Linden +names-first-dataset-885 = Lindsay +names-first-dataset-886 = Lindsey +names-first-dataset-887 = Lindsie +names-first-dataset-888 = Lindy +names-first-dataset-889 = Linton +names-first-dataset-890 = Lizbeth +names-first-dataset-891 = Lockie +names-first-dataset-892 = Logan +names-first-dataset-893 = Lola +names-first-dataset-894 = London +names-first-dataset-895 = Lorenzo +names-first-dataset-896 = Loreto +names-first-dataset-897 = Lori +names-first-dataset-898 = Lorin +names-first-dataset-899 = Lou +names-first-dataset-900 = Louis +names-first-dataset-901 = Luanne +names-first-dataset-902 = Luca +names-first-dataset-903 = Lucas +names-first-dataset-904 = Lucia +names-first-dataset-905 = Lucian +names-first-dataset-906 = Lucy +names-first-dataset-907 = Luis +names-first-dataset-908 = Lukas +names-first-dataset-909 = Luke +names-first-dataset-910 = Luna +names-first-dataset-911 = Luvenia +names-first-dataset-912 = Lydia +names-first-dataset-913 = Lyla +names-first-dataset-914 = Lyndsey +names-first-dataset-915 = Lynn +names-first-dataset-916 = Lynsey +names-first-dataset-917 = Lynwood +names-first-dataset-918 = Lyric +names-first-dataset-919 = Mabelle +names-first-dataset-920 = Macey +names-first-dataset-921 = Macie +names-first-dataset-922 = Mackenzie +names-first-dataset-923 = Macy +names-first-dataset-924 = Madalyn +names-first-dataset-925 = Maddison +names-first-dataset-926 = Maddox +names-first-dataset-927 = Madeleine +names-first-dataset-928 = Madeline +names-first-dataset-929 = Madelyn +names-first-dataset-930 = Madelynn +names-first-dataset-931 = Madilyn +names-first-dataset-932 = Madison +names-first-dataset-933 = Madisyn +names-first-dataset-934 = Madyson +names-first-dataset-935 = Maegan +names-first-dataset-936 = Maggie +names-first-dataset-937 = Makayla +names-first-dataset-938 = Makenna +names-first-dataset-939 = Makenzie +names-first-dataset-940 = Malachi +names-first-dataset-941 = Malcolm +names-first-dataset-942 = Malia +names-first-dataset-943 = Malik +names-first-dataset-944 = Mallory +names-first-dataset-945 = Manley +names-first-dataset-946 = Manuel +names-first-dataset-947 = Marc +names-first-dataset-948 = Marcia +names-first-dataset-949 = Marco +names-first-dataset-950 = Marcos +names-first-dataset-951 = Marcus +names-first-dataset-952 = Marely +names-first-dataset-953 = Margaret +names-first-dataset-954 = Maria +names-first-dataset-955 = Mariabella +names-first-dataset-956 = Mariah +names-first-dataset-957 = Mariana +names-first-dataset-958 = Marilene +names-first-dataset-959 = Mario +names-first-dataset-960 = Marion +names-first-dataset-961 = Marisol +names-first-dataset-962 = Marissa +names-first-dataset-963 = Marje +names-first-dataset-964 = Marjory +names-first-dataset-965 = Mark +names-first-dataset-966 = Marlee +names-first-dataset-967 = Marley +names-first-dataset-968 = Marlowe +names-first-dataset-969 = Marlyn +names-first-dataset-970 = Marshall +names-first-dataset-971 = Martin +names-first-dataset-972 = Marvin +names-first-dataset-973 = Mary +names-first-dataset-974 = Maryann +names-first-dataset-975 = Mason +names-first-dataset-976 = Mateo +names-first-dataset-977 = Mathew +names-first-dataset-978 = Matthew +names-first-dataset-979 = Maudie +names-first-dataset-980 = Maurene +names-first-dataset-981 = Maurice +names-first-dataset-982 = Mauricio +names-first-dataset-983 = Max +names-first-dataset-984 = Maximilian +names-first-dataset-985 = Maximus +names-first-dataset-986 = Maxwell +names-first-dataset-987 = May +names-first-dataset-988 = Maya +names-first-dataset-989 = Maynard +names-first-dataset-990 = Mckenna +names-first-dataset-991 = Mckenzie +names-first-dataset-992 = Megan +names-first-dataset-993 = Meghan +names-first-dataset-994 = Mekhi +names-first-dataset-995 = Melanie +names-first-dataset-996 = Melany +names-first-dataset-997 = Melissa +names-first-dataset-998 = Melody +names-first-dataset-999 = Melvin +names-first-dataset-1000 = Melvyn +names-first-dataset-1001 = Meredith +names-first-dataset-1002 = Merideth +names-first-dataset-1003 = Merrilyn +names-first-dataset-1004 = Meryl +names-first-dataset-1005 = Mia +names-first-dataset-1006 = Micah +names-first-dataset-1007 = Michael +names-first-dataset-1008 = Michaela +names-first-dataset-1009 = Micheal +names-first-dataset-1010 = Michelle +names-first-dataset-1011 = Miguel +names-first-dataset-1012 = Mikayla +names-first-dataset-1013 = Mike +names-first-dataset-1014 = Miles +names-first-dataset-1015 = Miley +names-first-dataset-1016 = Milo +names-first-dataset-1017 = Milton +names-first-dataset-1018 = Minnie +names-first-dataset-1019 = Miracle +names-first-dataset-1020 = Miranda +names-first-dataset-1021 = Miriam +names-first-dataset-1022 = Mitchell +names-first-dataset-1023 = Moises +names-first-dataset-1024 = Molly +names-first-dataset-1025 = Monica +names-first-dataset-1026 = Monna +names-first-dataset-1027 = Montague +names-first-dataset-1028 = Monte +names-first-dataset-1029 = Monty +names-first-dataset-1030 = Morgan +names-first-dataset-1031 = Moses +names-first-dataset-1032 = Muriel +names-first-dataset-1033 = Mya +names-first-dataset-1034 = Mylee +names-first-dataset-1035 = Myles +names-first-dataset-1036 = Myriam +names-first-dataset-1037 = Myrtie +names-first-dataset-1038 = Nadia +names-first-dataset-1039 = Nan +names-first-dataset-1040 = Nancy +names-first-dataset-1041 = Naomi +names-first-dataset-1042 = Nasir +names-first-dataset-1043 = Natalia +names-first-dataset-1044 = Natalie +names-first-dataset-1045 = Nataly +names-first-dataset-1046 = Natasha +names-first-dataset-1047 = Nathan +names-first-dataset-1048 = Nathaniel +names-first-dataset-1049 = Nayeli +names-first-dataset-1050 = Nehemiah +names-first-dataset-1051 = Nelle +names-first-dataset-1052 = Nelson +names-first-dataset-1053 = Nena +names-first-dataset-1054 = Nerissa +names-first-dataset-1055 = Netta +names-first-dataset-1056 = Nettie +names-first-dataset-1057 = Nevaeh +names-first-dataset-1058 = Nia +names-first-dataset-1059 = Nicholas +names-first-dataset-1060 = Nickolas +names-first-dataset-1061 = Nicolas +names-first-dataset-1062 = Nicole +names-first-dataset-1063 = Nikolas +names-first-dataset-1064 = Nina +names-first-dataset-1065 = Noah +names-first-dataset-1066 = Noel +names-first-dataset-1067 = Noelle +names-first-dataset-1068 = Nolan +names-first-dataset-1069 = Nonie +names-first-dataset-1070 = Nora +names-first-dataset-1071 = Norah +names-first-dataset-1072 = Nova +names-first-dataset-1073 = Nowell +names-first-dataset-1074 = Nydia +names-first-dataset-1075 = Nyla +names-first-dataset-1076 = Olive +names-first-dataset-1077 = Oliver +names-first-dataset-1078 = Olivia +names-first-dataset-1079 = Omar +names-first-dataset-1080 = Oralie +names-first-dataset-1081 = Orlando +names-first-dataset-1082 = Osbert +names-first-dataset-1083 = Osborn +names-first-dataset-1084 = Osborne +names-first-dataset-1085 = Oscar +names-first-dataset-1086 = Osmund +names-first-dataset-1087 = Owen +names-first-dataset-1088 = Pablo +names-first-dataset-1089 = Paget +names-first-dataset-1090 = Paige +names-first-dataset-1091 = Paisley +names-first-dataset-1092 = Paola +names-first-dataset-1093 = Paris +names-first-dataset-1094 = Parker +names-first-dataset-1095 = Patience +names-first-dataset-1096 = Patricia +names-first-dataset-1097 = Patrick +names-first-dataset-1098 = Patton +names-first-dataset-1099 = Paul +names-first-dataset-1100 = Pauleen +names-first-dataset-1101 = Paxton +names-first-dataset-1102 = Payton +names-first-dataset-1103 = Pedro +names-first-dataset-1104 = Pene +names-first-dataset-1105 = Penelope +names-first-dataset-1106 = Percival +names-first-dataset-1107 = Peregrine +names-first-dataset-1108 = Perla +names-first-dataset-1109 = Peter +names-first-dataset-1110 = Peyton +names-first-dataset-1111 = Pheobe +names-first-dataset-1112 = Philip +names-first-dataset-1113 = Phillip +names-first-dataset-1114 = Phoebe +names-first-dataset-1115 = Phoenix +names-first-dataset-1116 = Phyliss +names-first-dataset-1117 = Phyllida +names-first-dataset-1118 = Phyllis +names-first-dataset-1119 = Piper +names-first-dataset-1120 = Porsche +names-first-dataset-1121 = Porter +names-first-dataset-1122 = Presley +names-first-dataset-1123 = Preston +names-first-dataset-1124 = Priscilla +names-first-dataset-1125 = Prosper +names-first-dataset-1126 = Prue +names-first-dataset-1127 = Quanah +names-first-dataset-1128 = Quentin +names-first-dataset-1129 = Quiana +names-first-dataset-1130 = Quinn +names-first-dataset-1131 = Quinton +names-first-dataset-1132 = Rachael +names-first-dataset-1133 = Rachel +names-first-dataset-1134 = Raegan +names-first-dataset-1135 = Raelene +names-first-dataset-1136 = Rafael +names-first-dataset-1137 = Rain +names-first-dataset-1138 = Ramon +names-first-dataset-1139 = Randa +names-first-dataset-1140 = Randal +names-first-dataset-1141 = Randy +names-first-dataset-1142 = Rastus +names-first-dataset-1143 = Raul +names-first-dataset-1144 = Raymond +names-first-dataset-1145 = Rayner +names-first-dataset-1146 = Reagan +names-first-dataset-1147 = Rebecca +names-first-dataset-1148 = Rebeckah +names-first-dataset-1149 = Rebekah +names-first-dataset-1150 = Reece +names-first-dataset-1151 = Reed +names-first-dataset-1152 = Reene +names-first-dataset-1153 = Reese +names-first-dataset-1154 = Reid +names-first-dataset-1155 = Renie +names-first-dataset-1156 = Reuben +names-first-dataset-1157 = Rexana +names-first-dataset-1158 = Reynard +names-first-dataset-1159 = Rhetta +names-first-dataset-1160 = Ricardo +names-first-dataset-1161 = Rich +names-first-dataset-1162 = Richard +names-first-dataset-1163 = Richie +names-first-dataset-1164 = Rick +names-first-dataset-1165 = Rickena +names-first-dataset-1166 = Rickey +names-first-dataset-1167 = Rickie +names-first-dataset-1168 = Ricky +names-first-dataset-1169 = Rihanna +names-first-dataset-1170 = Riley +names-first-dataset-1171 = River +names-first-dataset-1172 = Robert +names-first-dataset-1173 = Roberto +names-first-dataset-1174 = Rocco +names-first-dataset-1175 = Rodger +names-first-dataset-1176 = Rodrigo +names-first-dataset-1177 = Roger +names-first-dataset-1178 = Roman +names-first-dataset-1179 = Romayne +names-first-dataset-1180 = Romeo +names-first-dataset-1181 = Ronald +names-first-dataset-1182 = Ronnette +names-first-dataset-1183 = Rosa +names-first-dataset-1184 = Roscoe +names-first-dataset-1185 = Rose +names-first-dataset-1186 = Rosemary +names-first-dataset-1187 = Roswell +names-first-dataset-1188 = Rowan +names-first-dataset-1189 = Roy +names-first-dataset-1190 = Royce +names-first-dataset-1191 = Ruben +names-first-dataset-1192 = Ruby +names-first-dataset-1193 = Rubye +names-first-dataset-1194 = Russell +names-first-dataset-1195 = Rusty +names-first-dataset-1196 = Ruth +names-first-dataset-1197 = Ryan +names-first-dataset-1198 = Ryder +names-first-dataset-1199 = Ryker +names-first-dataset-1200 = Rylan +names-first-dataset-1201 = Rylee +names-first-dataset-1202 = Ryleigh +names-first-dataset-1203 = Rylie +names-first-dataset-1204 = Sabella +names-first-dataset-1205 = Sabrina +names-first-dataset-1206 = Sachie +names-first-dataset-1207 = Sadie +names-first-dataset-1208 = Sage +names-first-dataset-1209 = Sal +names-first-dataset-1210 = Sally +names-first-dataset-1211 = Salvador +names-first-dataset-1212 = Sam +names-first-dataset-1213 = Samantha +names-first-dataset-1214 = Samara +names-first-dataset-1215 = Samuel +names-first-dataset-1216 = Sandra +names-first-dataset-1217 = Santiago +names-first-dataset-1218 = Sara +names-first-dataset-1219 = Sarah +names-first-dataset-1220 = Sarai +names-first-dataset-1221 = Saranna +names-first-dataset-1222 = Sasha +names-first-dataset-1223 = Saul +names-first-dataset-1224 = Savanna +names-first-dataset-1225 = Savannah +names-first-dataset-1226 = Sawyer +names-first-dataset-1227 = Scarlett +names-first-dataset-1228 = Scott +names-first-dataset-1229 = Scotty +names-first-dataset-1230 = Sean +names-first-dataset-1231 = Sebastian +names-first-dataset-1232 = Selena +names-first-dataset-1233 = Seneca +names-first-dataset-1234 = Serena +names-first-dataset-1235 = Serenity +names-first-dataset-1236 = Sergio +names-first-dataset-1237 = Seth +names-first-dataset-1238 = Seymour +names-first-dataset-1239 = Shan +names-first-dataset-1240 = Shana +names-first-dataset-1241 = Shane +names-first-dataset-1242 = Shanika +names-first-dataset-1243 = Shannah +names-first-dataset-1244 = Shannon +names-first-dataset-1245 = Shantae +names-first-dataset-1246 = Sharalyn +names-first-dataset-1247 = Sharla +names-first-dataset-1248 = Shaun +names-first-dataset-1249 = Shawn +names-first-dataset-1250 = Shayla +names-first-dataset-1251 = Shelby +names-first-dataset-1252 = Sheri +names-first-dataset-1253 = Sherie +names-first-dataset-1254 = Sherill +names-first-dataset-1255 = Sherri +names-first-dataset-1256 = Shiloh +names-first-dataset-1257 = Sienna +names-first-dataset-1258 = Sierra +names-first-dataset-1259 = Silas +names-first-dataset-1260 = Simon +names-first-dataset-1261 = Sissy +names-first-dataset-1262 = Skylar +names-first-dataset-1263 = Skyler +names-first-dataset-1264 = Sloan +names-first-dataset-1265 = Sofia +names-first-dataset-1266 = Solomon +names-first-dataset-1267 = Sophia +names-first-dataset-1268 = Sophie +names-first-dataset-1269 = Sorrel +names-first-dataset-1270 = Spencer +names-first-dataset-1271 = Spike +names-first-dataset-1272 = Star +names-first-dataset-1273 = Stella +names-first-dataset-1274 = Steph +names-first-dataset-1275 = Stephanie +names-first-dataset-1276 = Stephany +names-first-dataset-1277 = Stephen +names-first-dataset-1278 = Steven +names-first-dataset-1279 = Sue +names-first-dataset-1280 = Sukie +names-first-dataset-1281 = Summer +names-first-dataset-1282 = Sunshine +names-first-dataset-1283 = Susanna +names-first-dataset-1284 = Susannah +names-first-dataset-1285 = Suzan +names-first-dataset-1286 = Suzy +names-first-dataset-1287 = Sybil +names-first-dataset-1288 = Syd +names-first-dataset-1289 = Sydney +names-first-dataset-1290 = Talia +names-first-dataset-1291 = Talon +names-first-dataset-1292 = Tamika +names-first-dataset-1293 = Tamsin +names-first-dataset-1294 = Tania +names-first-dataset-1295 = Tanner +names-first-dataset-1296 = Tansy +names-first-dataset-1297 = Taryn +names-first-dataset-1298 = Tate +names-first-dataset-1299 = Tatiana +names-first-dataset-1300 = Tatum +names-first-dataset-1301 = Tatyanna +names-first-dataset-1302 = Taylor +names-first-dataset-1303 = Teagan +names-first-dataset-1304 = Tel +names-first-dataset-1305 = Terrell +names-first-dataset-1306 = Terry +names-first-dataset-1307 = Tessa +names-first-dataset-1308 = Theodore +names-first-dataset-1309 = Thomas +names-first-dataset-1310 = Tiffany +names-first-dataset-1311 = Timothy +names-first-dataset-1312 = Titus +names-first-dataset-1313 = Tod +names-first-dataset-1314 = Tolly +names-first-dataset-1315 = Tony +names-first-dataset-1316 = Topaz +names-first-dataset-1317 = Tori +names-first-dataset-1318 = Tracee +names-first-dataset-1319 = Tracey +names-first-dataset-1320 = Travis +names-first-dataset-1321 = Trent +names-first-dataset-1322 = Trenton +names-first-dataset-1323 = Trevor +names-first-dataset-1324 = Trey +names-first-dataset-1325 = Trinity +names-first-dataset-1326 = Tristan +names-first-dataset-1327 = Tristen +names-first-dataset-1328 = Triston +names-first-dataset-1329 = Troy +names-first-dataset-1330 = Tucker +names-first-dataset-1331 = Ty +names-first-dataset-1332 = Tye +names-first-dataset-1333 = Tyler +names-first-dataset-1334 = Tyson +names-first-dataset-1335 = Uland +names-first-dataset-1336 = Ulric +names-first-dataset-1337 = Ulyssa +names-first-dataset-1338 = Uriel +names-first-dataset-1339 = Valary +names-first-dataset-1340 = Valentina +names-first-dataset-1341 = Valeria +names-first-dataset-1342 = Valerie +names-first-dataset-1343 = Vanessa +names-first-dataset-1344 = Vaughn +names-first-dataset-1345 = Verna +names-first-dataset-1346 = Veronica +names-first-dataset-1347 = Victor +names-first-dataset-1348 = Victoria +names-first-dataset-1349 = Vince +names-first-dataset-1350 = Vincent +names-first-dataset-1351 = Vinnie +names-first-dataset-1352 = Violet +names-first-dataset-1353 = Vivian +names-first-dataset-1354 = Viviana +names-first-dataset-1355 = Vivyan +names-first-dataset-1356 = Walker +names-first-dataset-1357 = Walter +names-first-dataset-1358 = Ward +names-first-dataset-1359 = Warner +names-first-dataset-1360 = Wayne +names-first-dataset-1361 = Wendi +names-first-dataset-1362 = Wendy +names-first-dataset-1363 = Wesley +names-first-dataset-1364 = Weston +names-first-dataset-1365 = Whitaker +names-first-dataset-1366 = William +names-first-dataset-1367 = Willow +names-first-dataset-1368 = Willy +names-first-dataset-1369 = Winifred +names-first-dataset-1370 = Wisdom +names-first-dataset-1371 = Woodrow +names-first-dataset-1372 = Woody +names-first-dataset-1373 = Wyatt +names-first-dataset-1374 = Wynonna +names-first-dataset-1375 = Wynter +names-first-dataset-1376 = Xander +names-first-dataset-1377 = Xavier +names-first-dataset-1378 = Ximena +names-first-dataset-1379 = Yahir +names-first-dataset-1380 = Yasmin +names-first-dataset-1381 = Yolanda +names-first-dataset-1382 = Ysabel +names-first-dataset-1383 = Zachariah +names-first-dataset-1384 = Zachary +names-first-dataset-1385 = Zack +names-first-dataset-1386 = Zackary +names-first-dataset-1387 = Zander +names-first-dataset-1388 = Zane +names-first-dataset-1389 = Zayden +names-first-dataset-1390 = Zeke +names-first-dataset-1391 = Zelda +names-first-dataset-1392 = Zion +names-first-dataset-1393 = Zoe +names-first-dataset-1394 = Zoey +names-first-dataset-1395 = Zune diff --git a/Resources/Locale/en-US/datasets/names/last.ftl b/Resources/Locale/en-US/datasets/names/last.ftl new file mode 100644 index 0000000000..3e3d464a9e --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/last.ftl @@ -0,0 +1,553 @@ +names-last-dataset-1 = Ackerley +names-last-dataset-2 = Adams +names-last-dataset-3 = Addison +names-last-dataset-4 = Agg +names-last-dataset-5 = Aggley +names-last-dataset-6 = Ahmed +names-last-dataset-7 = Albright +names-last-dataset-8 = Alekseev +names-last-dataset-9 = Ali +names-last-dataset-10 = Alice +names-last-dataset-11 = Allen +names-last-dataset-12 = Alliman +names-last-dataset-13 = Altmann +names-last-dataset-14 = Anderson +names-last-dataset-15 = Andreev +names-last-dataset-16 = Ann +names-last-dataset-17 = Archibald +names-last-dataset-18 = Ashbaugh +names-last-dataset-19 = Atkinson +names-last-dataset-20 = Atweeke +names-last-dataset-21 = Aultman +names-last-dataset-22 = Auman +names-last-dataset-23 = Baer +names-last-dataset-24 = Bailey +names-last-dataset-25 = Baker +names-last-dataset-26 = Barnes +names-last-dataset-27 = Barrett +names-last-dataset-28 = Bash +names-last-dataset-29 = Bashline +names-last-dataset-30 = Basinger +names-last-dataset-31 = Baskett +names-last-dataset-32 = Basmanoff +names-last-dataset-33 = Batten +names-last-dataset-34 = Baum +names-last-dataset-35 = Baxter +names-last-dataset-36 = Beach +names-last-dataset-37 = Beail +names-last-dataset-38 = Beck +names-last-dataset-39 = Beedell +names-last-dataset-40 = Begum +names-last-dataset-41 = Bell +names-last-dataset-42 = Benford +names-last-dataset-43 = Bennett +names-last-dataset-44 = Berkheimer +names-last-dataset-45 = Best +names-last-dataset-46 = Bickerson +names-last-dataset-47 = Bicknell +names-last-dataset-48 = Biery +names-last-dataset-49 = Black +names-last-dataset-50 = Blackburn +names-last-dataset-51 = Blaine +names-last-dataset-52 = Blessig +names-last-dataset-53 = Bloise +names-last-dataset-54 = Bluetenberger +names-last-dataset-55 = Blyant +names-last-dataset-56 = Bode +names-last-dataset-57 = Bould +names-last-dataset-58 = Bousum +names-last-dataset-59 = Bowchiew +names-last-dataset-60 = Boyer +names-last-dataset-61 = Brandenburg +names-last-dataset-62 = Bratton +names-last-dataset-63 = Braun +names-last-dataset-64 = Briggs +names-last-dataset-65 = Brindle +names-last-dataset-66 = Briner +names-last-dataset-67 = Brinigh +names-last-dataset-68 = Brooks +names-last-dataset-69 = Brown +names-last-dataset-70 = Bullard +names-last-dataset-71 = Bunten +names-last-dataset-72 = Burch +names-last-dataset-73 = Burkett +names-last-dataset-74 = Burns +names-last-dataset-75 = Burris +names-last-dataset-76 = Butterfill +names-last-dataset-77 = Buttersworth +names-last-dataset-78 = Buzzard +names-last-dataset-79 = Byers +names-last-dataset-80 = Bynum +names-last-dataset-81 = Caldwell +names-last-dataset-82 = Callison +names-last-dataset-83 = Camp +names-last-dataset-84 = Campbell +names-last-dataset-85 = Carmichael +names-last-dataset-86 = Carr +names-last-dataset-87 = Carter +names-last-dataset-88 = Catherina +names-last-dataset-89 = Catleay +names-last-dataset-90 = Cavalet +names-last-dataset-91 = Chapman +names-last-dataset-92 = Chauvin +names-last-dataset-93 = Cherry +names-last-dataset-94 = Christman +names-last-dataset-95 = Christopher +names-last-dataset-96 = Clark +names-last-dataset-97 = Clarke +names-last-dataset-98 = Clewett +names-last-dataset-99 = Coates +names-last-dataset-100 = Coldsmith +names-last-dataset-101 = Collins +names-last-dataset-102 = Compton +names-last-dataset-103 = Conrad +names-last-dataset-104 = Cook +names-last-dataset-105 = Cooper +names-last-dataset-106 = Costello +names-last-dataset-107 = Cowart +names-last-dataset-108 = Cowper +names-last-dataset-109 = Cox +names-last-dataset-110 = Cressman +names-last-dataset-111 = Curry +names-last-dataset-112 = Cypret +names-last-dataset-113 = David +names-last-dataset-114 = Davies +names-last-dataset-115 = Davis +names-last-dataset-116 = Dawkins +names-last-dataset-117 = Day +names-last-dataset-118 = Dean +names-last-dataset-119 = Demuth +names-last-dataset-120 = Dennis +names-last-dataset-121 = Digson +names-last-dataset-122 = Dimeling +names-last-dataset-123 = Donkin +names-last-dataset-124 = Draudy +names-last-dataset-125 = Driggers +names-last-dataset-126 = Dryfus +names-last-dataset-127 = Dugmore +names-last-dataset-128 = Duncan +names-last-dataset-129 = Durstine +names-last-dataset-130 = Earl +names-last-dataset-131 = Easter +names-last-dataset-132 = Echard +names-last-dataset-133 = Eckhardstein +names-last-dataset-134 = Edwards +names-last-dataset-135 = Eggbert +names-last-dataset-136 = Ehret +names-last-dataset-137 = Elderson +names-last-dataset-138 = Eliza +names-last-dataset-139 = Elliott +names-last-dataset-140 = Ellis +names-last-dataset-141 = Enderly +names-last-dataset-142 = Endsley +names-last-dataset-143 = Evans +names-last-dataset-144 = Ewing +names-last-dataset-145 = Faqua +names-last-dataset-146 = Faust +names-last-dataset-147 = Fea +names-last-dataset-148 = Feufer +names-last-dataset-149 = Fiddler +names-last-dataset-150 = Field +names-last-dataset-151 = Fields +names-last-dataset-152 = Finlay +names-last-dataset-153 = Fischer +names-last-dataset-154 = Fiscina +names-last-dataset-155 = Fisher +names-last-dataset-156 = Fleming +names-last-dataset-157 = Flickinger +names-last-dataset-158 = Focell +names-last-dataset-159 = Foster +names-last-dataset-160 = Franks +names-last-dataset-161 = Fraser +names-last-dataset-162 = Fryer +names-last-dataset-163 = Fuchs +names-last-dataset-164 = Fulton +names-last-dataset-165 = Gadow +names-last-dataset-166 = Gardner +names-last-dataset-167 = Garland +names-last-dataset-168 = Garneys +names-last-dataset-169 = Garratt +names-last-dataset-170 = Garrison +names-last-dataset-171 = Gettemy +names-last-dataset-172 = Gibson +names-last-dataset-173 = Graham +names-last-dataset-174 = Gray +names-last-dataset-175 = Green +names-last-dataset-176 = Greenawalt +names-last-dataset-177 = Greene +names-last-dataset-178 = Greenwood +names-last-dataset-179 = Gregory +names-last-dataset-180 = Griffiths +names-last-dataset-181 = Gronko +names-last-dataset-182 = Guess +names-last-dataset-183 = Hall +names-last-dataset-184 = Hanford +names-last-dataset-185 = Hardie +names-last-dataset-186 = Harding +names-last-dataset-187 = Hardy +names-last-dataset-188 = Harris +names-last-dataset-189 = Harrison +names-last-dataset-190 = Harrold +names-last-dataset-191 = Harrow +names-last-dataset-192 = Harshman +names-last-dataset-193 = Hastings +names-last-dataset-194 = Hawker +names-last-dataset-195 = Hawking +names-last-dataset-196 = Hawkins +names-last-dataset-197 = Hayhurst +names-last-dataset-198 = Haynes +names-last-dataset-199 = Hegarty +names-last-dataset-200 = Henry +names-last-dataset-201 = Hice +names-last-dataset-202 = Highlands +names-last-dataset-203 = Hill +names-last-dataset-204 = Hincken +names-last-dataset-205 = Hirleman +names-last-dataset-206 = Hoenshell +names-last-dataset-207 = Holdeman +names-last-dataset-208 = Hook +names-last-dataset-209 = Hooker +names-last-dataset-210 = Hoopengarner +names-last-dataset-211 = Hoover +names-last-dataset-212 = Houser +names-last-dataset-213 = Houston +names-last-dataset-214 = Howard +names-last-dataset-215 = Howe +names-last-dataset-216 = Huey +names-last-dataset-217 = Hughes +names-last-dataset-218 = Hunt +names-last-dataset-219 = Hunter +names-last-dataset-220 = Hussain +names-last-dataset-221 = Hutton +names-last-dataset-222 = Hynes +names-last-dataset-223 = Ironmonger +names-last-dataset-224 = Isaman +names-last-dataset-225 = Isemann +names-last-dataset-226 = Ivanov +names-last-dataset-227 = Jackson +names-last-dataset-228 = James +names-last-dataset-229 = Jardine +names-last-dataset-230 = Jenkins +names-last-dataset-231 = Jenner +names-last-dataset-232 = Jerome +names-last-dataset-233 = Jesse +names-last-dataset-234 = Jewell +names-last-dataset-235 = Joghs +names-last-dataset-236 = Johnson +names-last-dataset-237 = Jones +names-last-dataset-238 = Jowers +names-last-dataset-239 = Joyce +names-last-dataset-240 = Judge +names-last-dataset-241 = Jyllian +names-last-dataset-242 = Kadel +names-last-dataset-243 = Kanaga +names-last-dataset-244 = Kaur +names-last-dataset-245 = Keener +names-last-dataset-246 = Kelley +names-last-dataset-247 = Kellogg +names-last-dataset-248 = Kelly +names-last-dataset-249 = Kemble +names-last-dataset-250 = Kemerer +names-last-dataset-251 = Keppel +names-last-dataset-252 = Kepplinger +names-last-dataset-253 = Khan +names-last-dataset-254 = Kiefer +names-last-dataset-255 = Kifer +names-last-dataset-256 = Kimple +names-last-dataset-257 = King +names-last-dataset-258 = Kirkson +names-last-dataset-259 = Knapenberger +names-last-dataset-260 = Knapp +names-last-dataset-261 = Koepple +names-last-dataset-262 = Koster +names-last-dataset-263 = Kuster +names-last-dataset-264 = Kuznetsov +names-last-dataset-265 = Laborde +names-last-dataset-266 = Lacon +names-last-dataset-267 = Lafortune +names-last-dataset-268 = Langston +names-last-dataset-269 = Larson +names-last-dataset-270 = Lauffer +names-last-dataset-271 = Laurenzi +names-last-dataset-272 = Leach +names-last-dataset-273 = Lee +names-last-dataset-274 = Leech +names-last-dataset-275 = Leichter +names-last-dataset-276 = Leslie +names-last-dataset-277 = Lester +names-last-dataset-278 = Levett +names-last-dataset-279 = Lewis +names-last-dataset-280 = Lineman +names-last-dataset-281 = Linton +names-last-dataset-282 = Llora +names-last-dataset-283 = Lloyd +names-last-dataset-284 = Logue +names-last-dataset-285 = Lombardi +names-last-dataset-286 = Lord +names-last-dataset-287 = Losey +names-last-dataset-288 = Lowe +names-last-dataset-289 = Lowstetter +names-last-dataset-290 = Lucy +names-last-dataset-291 = Ludwig +names-last-dataset-292 = Maclagan +names-last-dataset-293 = Magor +names-last-dataset-294 = Marcotte +names-last-dataset-295 = Margaret +names-last-dataset-296 = Marriman +names-last-dataset-297 = Marshall +names-last-dataset-298 = Martins +names-last-dataset-299 = Mary +names-last-dataset-300 = Mason +names-last-dataset-301 = Mathews +names-last-dataset-302 = Matthews +names-last-dataset-303 = McDonald +names-last-dataset-304 = McDonohugh +names-last-dataset-305 = McShain +names-last-dataset-306 = Mcclymonds +names-last-dataset-307 = Mccullough +names-last-dataset-308 = Mccune +names-last-dataset-309 = Mcfall +names-last-dataset-310 = Mcintosh +names-last-dataset-311 = Mckendrick +names-last-dataset-312 = Mcloskey +names-last-dataset-313 = Mcmullen +names-last-dataset-314 = Mens +names-last-dataset-315 = Merryman +names-last-dataset-316 = Metzer +names-last-dataset-317 = Meyers +names-last-dataset-318 = Mikhaylov +names-last-dataset-319 = Mildred +names-last-dataset-320 = Miller +names-last-dataset-321 = Millhouse +names-last-dataset-322 = Mills +names-last-dataset-323 = Milne +names-last-dataset-324 = Mingle +names-last-dataset-325 = Minnie +names-last-dataset-326 = Mitchell +names-last-dataset-327 = Moberly +names-last-dataset-328 = Moon +names-last-dataset-329 = Moore +names-last-dataset-330 = Morgan +names-last-dataset-331 = Morris +names-last-dataset-332 = Mortland +names-last-dataset-333 = Mosser +names-last-dataset-334 = Mueller +names-last-dataset-335 = Muggins +names-last-dataset-336 = Mull +names-last-dataset-337 = Muller +names-last-dataset-338 = Murphy +names-last-dataset-339 = Murray +names-last-dataset-340 = Nash +names-last-dataset-341 = Neely +names-last-dataset-342 = Nehling +names-last-dataset-343 = Newbern +names-last-dataset-344 = Nicholas +names-last-dataset-345 = Nickolson +names-last-dataset-346 = Northey +names-last-dataset-347 = Noton +names-last-dataset-348 = Olphert +names-last-dataset-349 = Oneal +names-last-dataset-350 = Oppenheimer +names-last-dataset-351 = Osteen +names-last-dataset-352 = Osterweis +names-last-dataset-353 = Osterwise +names-last-dataset-354 = Otis +names-last-dataset-355 = Overstreet +names-last-dataset-356 = Owen +names-last-dataset-357 = Owens +names-last-dataset-358 = Palmer +names-last-dataset-359 = Parker +names-last-dataset-360 = Parkinson +names-last-dataset-361 = Patel +names-last-dataset-362 = Patterson +names-last-dataset-363 = Paulson +names-last-dataset-364 = Pavlov +names-last-dataset-365 = Paynter +names-last-dataset-366 = Pearsall +names-last-dataset-367 = Pennington +names-last-dataset-368 = Perkins +names-last-dataset-369 = Pershing +names-last-dataset-370 = Peters +names-last-dataset-371 = Petrov +names-last-dataset-372 = Pfeifer +names-last-dataset-373 = Philips +names-last-dataset-374 = Phillips +names-last-dataset-375 = Picard +names-last-dataset-376 = Pinney +names-last-dataset-377 = Poehl +names-last-dataset-378 = Poley +names-last-dataset-379 = Polson +names-last-dataset-380 = Powell +names-last-dataset-381 = Power +names-last-dataset-382 = Prechtl +names-last-dataset-383 = Prescott +names-last-dataset-384 = Prevatt +names-last-dataset-385 = Price +names-last-dataset-386 = Priebe +names-last-dataset-387 = Pritchard +names-last-dataset-388 = Pycroft +names-last-dataset-389 = Quinn +names-last-dataset-390 = Quirin +names-last-dataset-391 = Rader +names-last-dataset-392 = Rahl +names-last-dataset-393 = Ramos +names-last-dataset-394 = Randolph +names-last-dataset-395 = Ratcliff +names-last-dataset-396 = Rathen +names-last-dataset-397 = Rathens +names-last-dataset-398 = Raub +names-last-dataset-399 = Ray +names-last-dataset-400 = Reade +names-last-dataset-401 = Reichard +names-last-dataset-402 = Reid +names-last-dataset-403 = Reighner +names-last-dataset-404 = Rhinehart +names-last-dataset-405 = Richards +names-last-dataset-406 = Richardson +names-last-dataset-407 = Richter +names-last-dataset-408 = Rifler +names-last-dataset-409 = Riggle +names-last-dataset-410 = Riker +names-last-dataset-411 = Ringer +names-last-dataset-412 = Roadman +names-last-dataset-413 = Roberts +names-last-dataset-414 = Robertson +names-last-dataset-415 = Robinson +names-last-dataset-416 = Roby +names-last-dataset-417 = Rockwell +names-last-dataset-418 = Rogers +names-last-dataset-419 = Rohtin +names-last-dataset-420 = Rose +names-last-dataset-421 = Rosensteel +names-last-dataset-422 = Rowley +names-last-dataset-423 = Russell +names-last-dataset-424 = Ryals +names-last-dataset-425 = Sagan +names-last-dataset-426 = Sanders +names-last-dataset-427 = Sandford +names-last-dataset-428 = Sandys +names-last-dataset-429 = Sauter +names-last-dataset-430 = Saylor +names-last-dataset-431 = Schaeffer +names-last-dataset-432 = Scherer +names-last-dataset-433 = Schmidt +names-last-dataset-434 = Schofield +names-last-dataset-435 = Schrader +names-last-dataset-436 = Scott +names-last-dataset-437 = Sealis +names-last-dataset-438 = Seelig +names-last-dataset-439 = Seidner +names-last-dataset-440 = Semenov +names-last-dataset-441 = Shafer +names-last-dataset-442 = Shaffer +names-last-dataset-443 = Shaner +names-last-dataset-444 = Shaw +names-last-dataset-445 = Sheets +names-last-dataset-446 = Shick +names-last-dataset-447 = Shirey +names-last-dataset-448 = Sholl +names-last-dataset-449 = Shupe +names-last-dataset-450 = Sidower +names-last-dataset-451 = Siegrist +names-last-dataset-452 = Simmons +names-last-dataset-453 = Simpson +names-last-dataset-454 = Singh +names-last-dataset-455 = Sloan +names-last-dataset-456 = Smail +names-last-dataset-457 = Smirnov +names-last-dataset-458 = Smith +names-last-dataset-459 = Snyder +names-last-dataset-460 = Sommer +names-last-dataset-461 = Spock +names-last-dataset-462 = Stafford +names-last-dataset-463 = Stahl +names-last-dataset-464 = Stainforth +names-last-dataset-465 = Stall +names-last-dataset-466 = Stamos +names-last-dataset-467 = Stange +names-last-dataset-468 = Staymates +names-last-dataset-469 = Steele +names-last-dataset-470 = Stephenson +names-last-dataset-471 = Stern +names-last-dataset-472 = Stewart +names-last-dataset-473 = Stocker +names-last-dataset-474 = Stone +names-last-dataset-475 = Stough +names-last-dataset-476 = Straub +names-last-dataset-477 = Stroble +names-last-dataset-478 = Stroh +names-last-dataset-479 = Styles +names-last-dataset-480 = Sullivan +names-last-dataset-481 = Sulyard +names-last-dataset-482 = Summy +names-last-dataset-483 = Sutton +names-last-dataset-484 = Swabey +names-last-dataset-485 = Swarner +names-last-dataset-486 = Sybilla +names-last-dataset-487 = Taggart +names-last-dataset-488 = Tanner +names-last-dataset-489 = Taylor +names-last-dataset-490 = Tedrow +names-last-dataset-491 = Tennant +names-last-dataset-492 = Thomas +names-last-dataset-493 = Thomlinson +names-last-dataset-494 = Thompson +names-last-dataset-495 = Thomson +names-last-dataset-496 = Thorley +names-last-dataset-497 = Tilton +names-last-dataset-498 = Tireman +names-last-dataset-499 = Todd +names-last-dataset-500 = Treeby +names-last-dataset-501 = Trovato +names-last-dataset-502 = Turner +names-last-dataset-503 = Ulery +names-last-dataset-504 = Ullman +names-last-dataset-505 = Unk +names-last-dataset-506 = Vader +names-last-dataset-507 = Vanleer +names-last-dataset-508 = Vasilyev +names-last-dataset-509 = Waldron +names-last-dataset-510 = Walker +names-last-dataset-511 = Wallick +names-last-dataset-512 = Ward +names-last-dataset-513 = Wardle +names-last-dataset-514 = Warren +names-last-dataset-515 = Watson +names-last-dataset-516 = Webb +names-last-dataset-517 = Weeter +names-last-dataset-518 = Weisgarber +names-last-dataset-519 = Wells +names-last-dataset-520 = Welty +names-last-dataset-521 = Wentzel +names-last-dataset-522 = Werner +names-last-dataset-523 = Werry +names-last-dataset-524 = Wheeler +names-last-dataset-525 = Whirlow +names-last-dataset-526 = Whittier +names-last-dataset-527 = Wible +names-last-dataset-528 = Wile +names-last-dataset-529 = Wilkerson +names-last-dataset-530 = Wilkinson +names-last-dataset-531 = Willey +names-last-dataset-532 = Williams +names-last-dataset-533 = Williamson +names-last-dataset-534 = Wilo +names-last-dataset-535 = Wilson +names-last-dataset-536 = Winton +names-last-dataset-537 = Wise +names-last-dataset-538 = Wolfe +names-last-dataset-539 = Wolff +names-last-dataset-540 = Wood +names-last-dataset-541 = Woodward +names-last-dataset-542 = Woodworth +names-last-dataset-543 = Woolery +names-last-dataset-544 = Woollard +names-last-dataset-545 = Wright +names-last-dataset-546 = Yeskey +names-last-dataset-547 = Young +names-last-dataset-548 = Zadovsky +names-last-dataset-549 = Zalack +names-last-dataset-550 = Zaun +names-last-dataset-551 = Zeal +names-last-dataset-552 = Zimmer +names-last-dataset-553 = Zoucks diff --git a/Resources/Prototypes/Datasets/Names/base.yml b/Resources/Prototypes/Datasets/Names/base.yml new file mode 100644 index 0000000000..68382fbd8b --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/base.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesFirst + values: + prefix: names-first-dataset- + count: 1395 + +- type: localizedDataset + id: NamesLast + values: + prefix: names-last-dataset- + count: 553 diff --git a/Resources/Prototypes/Datasets/Names/first.yml b/Resources/Prototypes/Datasets/Names/first.yml deleted file mode 100644 index 82bc9dcdea..0000000000 --- a/Resources/Prototypes/Datasets/Names/first.yml +++ /dev/null @@ -1,1398 +0,0 @@ -- type: dataset - id: names_first - values: - - Aaden - - Aaliyah - - Aaron - - Abby - - Abel - - Abigail - - Abraham - - Adam - - Adan - - Addison - - Addyson - - Adeline - - Aden - - Adrian - - Adriana - - Adrianna - - Aida - - Aidan - - Aiden - - Aileen - - Ainsley - - Alaina - - Alan - - Alana - - Alanna - - Alayna - - Albert - - Alberto - - Alden - - Alec - - Alejandra - - Alejandro - - Alessandra - - Alex - - Alexa - - Alexander - - Alexandra - - Alexandria - - Alexia - - Alexis - - Alexus - - Alfred - - Alfreda - - Alfredo - - Alger - - Ali - - Alice - - Alicia - - Alijah - - Alina - - Alisa - - Alison - - Alissa - - Alisya - - Alivia - - Aliyah - - Allegra - - Allegria - - Allen - - Allie - - Allison - - Allisson - - Allyson - - Alma - - Alondra - - Alvin - - Alysha - - Alyson - - Alyssa - - Alyssia - - Amanda - - Amari - - Amaryllis - - Amaya - - Amber - - Ambrosine - - Amelia - - Amir - - Amira - - Amiyah - - Amos - - Amy - - Amya - - Ana - - Anahi - - Anastasia - - Anaya - - Anderson - - Andre - - Andrea - - Andres - - Andrew - - Andy - - Angel - - Angela - - Angelica - - Angelina - - Angelo - - Angie - - Aniya - - Aniyah - - Anjelica - - Anna - - Annabelle - - Anne - - Annie - - Annika - - Anthony - - Antonio - - Anya - - April - - Arabella - - Archie - - Ariana - - Arianna - - Ariel - - Arielle - - Arleen - - Armando - - Arn - - Art - - Arthur - - Arturo - - Asher - - Ashley - - Ashlie - - Ashlyn - - Ashlynn - - Ashton - - Asia - - Astor - - Athena - - Aubree - - Aubrey - - Aubrie - - Audrey - - Audrina - - August - - Aurora - - Austin - - Autumn - - Ava - - Avalon - - Averill - - Avery - - Axel - - Ayden - - Ayla - - Bailey - - Baldric - - Barbra - - Bartholomew - - Baylee - - Beau - - Beckah - - Beckett - - Becky - - Bella - - Benjamin - - Bennett - - Bernice - - Bertrand - - Bethany - - Bethney - - Betsy - - Bianca - - Bidelia - - Bill - - Blake - - Braden - - Bradley - - Brady - - Braeden - - Braiden - - Brandon - - Braxton - - Brayan - - Brayden - - Braydon - - Braylon - - Breanna - - Breanne - - Brenda - - Brendan - - Brenden - - Brenna - - Brennan - - Brett - - Brian - - Briana - - Brianna - - Bridget - - Brielle - - Brittani - - Brittany - - Brock - - Brodie - - Brody - - Bronte - - Brooke - - Brooklyn - - Brooklynn - - Bruce - - Bryan - - Bryant - - Bryce - - Brycen - - Brynn - - Bryson - - Burt - - Byrne - - Byron - - Bysshe - - Cade - - Caden - - Cadence - - Caiden - - Caitlin - - Caitlyn - - Calanthia - - Caleb - - Caleigh - - Cali - - Callie - - Calvin - - Camden - - Cameron - - Camila - - Camille - - Camron - - Camryn - - Candace - - Candice - - Candis - - Canute - - Cara - - Carl - - Carlos - - Carly - - Carlyle - - Carmen - - Carolina - - Caroline - - Carolyn - - Carry - - Carson - - Carter - - Caryl - - Casey - - Cash - - Casimir - - Cassandra - - Cassian - - Cassidy - - Catherine - - Cayden - - Cecilia - - Cecily - - Celeste - - Cesar - - Chad - - Chance - - Chandler - - Charles - - Charlie - - Charlotte - - Charlton - - Chase - - Chelsea - - Cherette - - Cheri - - Cherry - - Cheyanne - - Cheyenne - - Chip - - Chloe - - Chris - - Christa - - Christian - - Christiana - - Christina - - Christobel - - Christopher - - Ciara - - Cindy - - Claire - - Clara - - Claribel - - Clark - - Claudia - - Claudius - - Clayton - - Clement - - Cleveland - - Cliff - - Clinton - - Clitus - - Clover - - Cody - - Cohen - - Colby - - Cole - - Colin - - Collin - - Colten - - Colton - - Conner - - Connor - - Cooper - - Cora - - Corbin - - Coreen - - Corey - - Corrine - - Cory - - Courtney - - Cristian - - Cristopher - - Cruz - - Crystal - - Curtis - - Cy - - Cynthia - - Daisy - - Dakota - - Dallas - - Dalton - - Dalya - - Damian - - Damien - - Damon - - Dana - - Dane - - Danica - - Daniel - - Daniela - - Daniella - - Danielle - - Danika - - Danna - - Danny - - Dante - - Darcey - - Darell - - Daria - - Darin - - Darius - - Darren - - David - - Davion - - Davis - - Dawson - - Dayana - - Dayna - - Dayton - - Dean - - Deandre - - Deangelo - - Debbi - - Declan - - Dee - - Deena - - Delaney - - Delilah - - Della - - Delma - - Denholm - - Denise - - Dennis - - Denys - - Derek - - Derrick - - Desiree - - Desmond - - Destiny - - Devin - - Devon - - Diamond - - Diana - - Diego - - Dillon - - Dina - - Dolores - - Dominic - - Dominick - - Donald - - Donella - - Donna - - Donny - - Donovan - - Dorian - - Dorothy - - Dortha - - Douglas - - Drake - - Drew - - Driscoll - - Dulce - - Duncan - - Dustin - - Dylan - - Easter - - Easton - - Ebba - - Eddie - - Eden - - Edgar - - Eduardo - - Edward - - Edwin - - Effie - - Elaina - - Eleanor - - Elena - - Eli - - Eliana - - Elias - - Elijah - - Eliot - - Eliott - - Elise - - Eliza - - Elizabeth - - Ella - - Elle - - Ellie - - Elliot - - Elliott - - Elric - - Elspet - - Elwood - - Emanuel - - Emely - - Emerson - - Emery - - Emilee - - Emilia - - Emiliano - - Emilio - - Emily - - Emma - - Emmanuel - - Enrique - - Eric - - Erica - - Erick - - Erik - - Erika - - Erin - - Ermintrude - - Ernesto - - Esmeralda - - Esteban - - Esther - - Estrella - - Ethan - - Eugenia - - Euphemia - - Eustace - - Eva - - Evan - - Evangeline - - Eveleen - - Evelina - - Evelyn - - Everett - - Ezekiel - - Ezra - - Fabian - - Faith - - Fatima - - Fay - - Felix - - Fernanda - - Fernando - - Finn - - Fiona - - Fitz - - Flick - - Floella - - Flora - - Flossie - - Fortune - - Francesca - - Francis - - Francisco - - Frank - - Frankie - - Franklin - - Fulton - - Gabriel - - Gabriela - - Gabriella - - Gabrielle - - Gael - - Gage - - Garret - - Garrett - - Gary - - Gavin - - Gaye - - Gaylord - - Genesis - - Genette - - Genevieve - - George - - Georgene - - Georgia - - Geraldine - - Gerardo - - Gervase - - Gianna - - Gina - - Ginger - - Giovanni - - Giselle - - Gladwyn - - Glenna - - Gloria - - Goddard - - Godwin - - Goodwin - - Gordon - - Grace - - Gracie - - Grady - - Graeme - - Graham - - Grant - - Gratian - - Grayson - - Gregory - - Greta - - Greyson - - Griffin - - Griselda - - Guadalupe - - Guillermo - - Gunner - - Gustavo - - Gwenda - - Gwenevere - - Hadley - - Haidee - - Hailee - - Hailey - - Hal - - Haleigh - - Haley - - Hanna - - Hannah - - Happy - - Harley - - Harmony - - Harper - - Harrison - - Hartley - - Hayden - - Haylee - - Hayley - - Haylie - - Hazel - - Heather - - Heaven - - Hector - - Hedley - - Heidi - - Helen - - Henderson - - Henry - - Hepsie - - Hervey - - Holden - - Holly - - Homer - - Hope - - Horatio - - Hortensia - - Hudson - - Huffie - - Hugo - - Hunter - - Ian - - Iantha - - Ileen - - Imani - - Innocent - - Irene - - Iris - - Irvine - - Isaac - - Isabel - - Isabella - - Isabelle - - Isaiah - - Isaias - - Isiah - - Ismael - - Israel - - Issac - - Itzel - - Ivan - - Ivy - - Izabella - - Izaiah - - Jacaline - - Jace - - Jack - - Jackson - - Jacob - - Jacoby - - Jacqueline - - Jacquetta - - Jacqui - - Jada - - Jade - - Jaden - - Jadon - - Jadyn - - Jaelyn - - Jaiden - - Jaime - - Jake - - Jakki - - Jakob - - Jalen - - Jamar - - Jamari - - Jamarion - - James - - Jameson - - Jamie - - Jamison - - Jane - - Janel - - Janelle - - Janette - - Janie - - Janina - - Janine - - Janiya - - Janiyah - - Jared - - Jaslene - - Jasmin - - Jasmine - - Jason - - Jasper - - Javier - - Javon - - Jaxon - - Jaxson - - Jay - - Jayce - - Jayda - - Jayden - - Jaydon - - Jaye - - Jayla - - Jaylee - - Jaylen - - Jayne - - Jaynie - - Jayson - - Jazlyn - - Jazmin - - Jazmine - - Jeanna - - Jeannie - - Jeannine - - Jeb - - Jed - - Jeffrey - - Jemmy - - Jenifer - - Jenna - - Jennie - - Jennifer - - Jera - - Jere - - Jeremiah - - Jeremy - - Jeri - - Jermaine - - Jerrie - - Jerry - - Jesse - - Jessica - - Jesus - - Jillian - - Jillie - - Jim - - Jimena - - Jimmy - - Joachim - - Joanna - - Joaquin - - Jocelyn - - Joe - - Joel - - Joetta - - Joey - - Johan - - Johanna - - John - - Johnathan - - Johnny - - Joi - - Jonah - - Jonas - - Jonathan - - Jonathon - - Joni - - Jordan - - Jordyn - - Jorge - - Jose - - Joselyn - - Joseph - - Josepha - - Josephine - - Josh - - Joshua - - Josiah - - Josie - - Josue - - Joye - - Juan - - Judah - - Jude - - Julia - - Julian - - Juliana - - Julianna - - Julie - - Juliet - - Julio - - Julissa - - Julius - - July - - Justice - - Justin - - Kade - - Kaden - - Kadence - - Kaelea - - Kaelyn - - Kai - - Kaiden - - Kailey - - Kailyn - - Kaitlin - - Kaitlyn - - Kale - - Kaleb - - Kaleigh - - Kameron - - Kamryn - - Kane - - Kara - - Karen - - Karenza - - Karina - - Karla - - Karly - - Karson - - Karyn - - Kassidy - - Kat - - Kate - - Katelyn - - Katelynn - - Katherine - - Kathleen - - Kathryn - - Kathy - - Katie - - Katlyn - - Kayden - - Kaydence - - Kayla - - Kaylee - - Kayleigh - - Kaylie - - Kaylin - - Keagan - - Keaton - - Keegan - - Keira - - Keith - - Kellen - - Kellie - - Kelly - - Kelsey - - Kelvin - - Kendall - - Kendra - - Kennard - - Kennedy - - Kenneth - - Kenzie - - Kerena - - Kerensa - - Keturah - - Kevin - - Keziah - - Khalil - - Khloe - - Kiana - - Kiara - - Kiera - - Kiley - - Kimberley - - Kimberly - - Kimora - - Kingston - - Kira - - Kobe - - Kolton - - Kristen - - Kristina - - Kristopher - - Kyla - - Kyle - - Kylee - - Kyleigh - - Kyler - - Kylie - - Kyra - - Lacey - - Lacy - - Laila - - Lakeisha - - Lalla - - Lana - - Lance - - Landen - - Landon - - Landyn - - Lane - - Lanny - - Larry - - Latanya - - Launce - - Laura - - Lauren - - Laurencia - - Laurissa - - Lauryn - - Lawrence - - Layla - - Leah - - Leeann - - Leia - - Leila - - Leilani - - Leland - - Lena - - Lennox - - Leo - - Leonardo - - Leonel - - Leroi - - Leslie - - Lesly - - Lessie - - Leta - - Levi - - Lexi - - Lexia - - Lexus - - Lia - - Liam - - Lila - - Lilah - - Lilian - - Liliana - - Lillian - - Lilliana - - Lillie - - Lilly - - Lily - - Lincoln - - Linden - - Lindsay - - Lindsey - - Lindsie - - Lindy - - Linton - - Lizbeth - - Lockie - - Logan - - Lola - - London - - Lorenzo - - Loreto - - Lori - - Lorin - - Lou - - Louis - - Luanne - - Luca - - Lucas - - Lucia - - Lucian - - Lucy - - Luis - - Lukas - - Luke - - Luna - - Luvenia - - Lydia - - Lyla - - Lyndsey - - Lynn - - Lynsey - - Lynwood - - Lyric - - Mabelle - - Macey - - Macie - - Mackenzie - - Macy - - Madalyn - - Maddison - - Maddox - - Madeleine - - Madeline - - Madelyn - - Madelynn - - Madilyn - - Madison - - Madisyn - - Madyson - - Maegan - - Maggie - - Makayla - - Makenna - - Makenzie - - Malachi - - Malcolm - - Malia - - Malik - - Mallory - - Manley - - Manuel - - Marc - - Marcia - - Marco - - Marcos - - Marcus - - Marely - - Margaret - - Maria - - Mariabella - - Mariah - - Mariana - - Marilene - - Mario - - Marion - - Marisol - - Marissa - - Marje - - Marjory - - Mark - - Marlee - - Marley - - Marlowe - - Marlyn - - Marshall - - Martin - - Marvin - - Mary - - Maryann - - Mason - - Mateo - - Mathew - - Matthew - - Maudie - - Maurene - - Maurice - - Mauricio - - Max - - Maximilian - - Maximus - - Maxwell - - May - - Maya - - Maynard - - Mckenna - - Mckenzie - - Megan - - Meghan - - Mekhi - - Melanie - - Melany - - Melissa - - Melody - - Melvin - - Melvyn - - Meredith - - Merideth - - Merrilyn - - Meryl - - Mia - - Micah - - Michael - - Michaela - - Micheal - - Michelle - - Miguel - - Mikayla - - Mike - - Miles - - Miley - - Milo - - Milton - - Minnie - - Miracle - - Miranda - - Miriam - - Mitchell - - Moises - - Molly - - Monica - - Monna - - Montague - - Monte - - Monty - - Morgan - - Moses - - Muriel - - Mya - - Mylee - - Myles - - Myriam - - Myrtie - - Nadia - - Nan - - Nancy - - Naomi - - Nasir - - Natalia - - Natalie - - Nataly - - Natasha - - Nathan - - Nathaniel - - Nayeli - - Nehemiah - - Nelle - - Nelson - - Nena - - Nerissa - - Netta - - Nettie - - Nevaeh - - Nia - - Nicholas - - Nickolas - - Nicolas - - Nicole - - Nikolas - - Nina - - Noah - - Noel - - Noelle - - Nolan - - Nonie - - Nora - - Norah - - Nova - - Nowell - - Nydia - - Nyla - - Olive - - Oliver - - Olivia - - Omar - - Oralie - - Orlando - - Osbert - - Osborn - - Osborne - - Oscar - - Osmund - - Owen - - Pablo - - Paget - - Paige - - Paisley - - Paola - - Paris - - Parker - - Patience - - Patricia - - Patrick - - Patton - - Paul - - Pauleen - - Paxton - - Payton - - Pedro - - Pene - - Penelope - - Percival - - Peregrine - - Perla - - Peter - - Peyton - - Pheobe - - Philip - - Phillip - - Phoebe - - Phoenix - - Phyliss - - Phyllida - - Phyllis - - Piper - - Porsche - - Porter - - Presley - - Preston - - Priscilla - - Prosper - - Prue - - Quanah - - Quentin - - Quiana - - Quinn - - Quinton - - Rachael - - Rachel - - Raegan - - Raelene - - Rafael - - Rain - - Ramon - - Randa - - Randal - - Randy - - Rastus - - Raul - - Raymond - - Rayner - - Reagan - - Rebecca - - Rebeckah - - Rebekah - - Reece - - Reed - - Reene - - Reese - - Reid - - Renie - - Reuben - - Rexana - - Reynard - - Rhetta - - Ricardo - - Rich - - Richard - - Richie - - Rick - - Rickena - - Rickey - - Rickie - - Ricky - - Rihanna - - Riley - - River - - Robert - - Roberto - - Rocco - - Rodger - - Rodrigo - - Roger - - Roman - - Romayne - - Romeo - - Ronald - - Ronnette - - Rosa - - Roscoe - - Rose - - Rosemary - - Roswell - - Rowan - - Roy - - Royce - - Ruben - - Ruby - - Rubye - - Russell - - Rusty - - Ruth - - Ryan - - Ryder - - Ryker - - Rylan - - Rylee - - Ryleigh - - Rylie - - Sabella - - Sabrina - - Sachie - - Sadie - - Sage - - Sal - - Sally - - Salvador - - Sam - - Samantha - - Samara - - Samuel - - Sandra - - Santiago - - Sara - - Sarah - - Sarai - - Saranna - - Sasha - - Saul - - Savanna - - Savannah - - Sawyer - - Scarlett - - Scott - - Scotty - - Sean - - Sebastian - - Selena - - Seneca - - Serena - - Serenity - - Sergio - - Seth - - Seymour - - Shan - - Shana - - Shane - - Shanika - - Shannah - - Shannon - - Shantae - - Sharalyn - - Sharla - - Shaun - - Shawn - - Shayla - - Shelby - - Sheri - - Sherie - - Sherill - - Sherri - - Shiloh - - Sienna - - Sierra - - Silas - - Simon - - Sissy - - Skylar - - Skyler - - Sloan - - Sofia - - Solomon - - Sophia - - Sophie - - Sorrel - - Spencer - - Spike - - Star - - Stella - - Steph - - Stephanie - - Stephany - - Stephen - - Steven - - Sue - - Sukie - - Summer - - Sunshine - - Susanna - - Susannah - - Suzan - - Suzy - - Sybil - - Syd - - Sydney - - Talia - - Talon - - Tamika - - Tamsin - - Tania - - Tanner - - Tansy - - Taryn - - Tate - - Tatiana - - Tatum - - Tatyanna - - Taylor - - Teagan - - Tel - - Terrell - - Terry - - Tessa - - Theodore - - Thomas - - Tiffany - - Timothy - - Titus - - Tod - - Tolly - - Tony - - Topaz - - Tori - - Tracee - - Tracey - - Travis - - Trent - - Trenton - - Trevor - - Trey - - Trinity - - Tristan - - Tristen - - Triston - - Troy - - Tucker - - Ty - - Tye - - Tyler - - Tyson - - Uland - - Ulric - - Ulyssa - - Uriel - - Valary - - Valentina - - Valeria - - Valerie - - Vanessa - - Vaughn - - Verna - - Veronica - - Victor - - Victoria - - Vince - - Vincent - - Vinnie - - Violet - - Vivian - - Viviana - - Vivyan - - Walker - - Walter - - Ward - - Warner - - Wayne - - Wendi - - Wendy - - Wesley - - Weston - - Whitaker - - William - - Willow - - Willy - - Winifred - - Wisdom - - Woodrow - - Woody - - Wyatt - - Wynonna - - Wynter - - Xander - - Xavier - - Ximena - - Yahir - - Yasmin - - Yolanda - - Ysabel - - Zachariah - - Zachary - - Zack - - Zackary - - Zander - - Zane - - Zayden - - Zeke - - Zelda - - Zion - - Zoe - - Zoey - - Zune diff --git a/Resources/Prototypes/Datasets/Names/last.yml b/Resources/Prototypes/Datasets/Names/last.yml deleted file mode 100644 index d49f9e7809..0000000000 --- a/Resources/Prototypes/Datasets/Names/last.yml +++ /dev/null @@ -1,557 +0,0 @@ -- type: dataset - id: names_last - values: - - Ackerley - - Adams - - Addison - - Agg - - Aggley - - Ahmed - - Albright - - Alekseev - - Ali - - Alice - - Allen - - Alliman - - Altmann - - Anderson - - Andreev - - Ann - - Archibald - - Ashbaugh - - Atkinson - - Atweeke - - Aultman - - Auman - - Baer - - Bailey - - Baker - - Barnes - - Barrett - - Bash - - Bashline - - Basinger - - Baskett - - Basmanoff - - Batten - - Baum - - Baxter - - Beach - - Beail - - Beck - - Beedell - - Begum - - Bell - - Benford - - Bennett - - Berkheimer - - Best - - Bickerson - - Bicknell - - Biery - - Black - - Blackburn - - Blaine - - Blessig - - Bloise - - Bluetenberger - - Blyant - - Bode - - Bould - - Bousum - - Bowchiew - - Boyer - - Brandenburg - - Bratton - - Braun - - Briggs - - Brindle - - Briner - - Brinigh - - Brooks - - Brown - - Bullard - - Bunten - - Burch - - Burkett - - Burns - - Burris - - Butterfill - - Buttersworth - - Buzzard - - Byers - - Bynum - - Caldwell - - Callison - - Camp - - Campbell - - Carmichael - - Carr - - Carter - - Catherina - - Catleay - - Cavalet - - Chapman - - Chauvin - - Cherry - - Christman - - Christopher - - Clark - - Clarke - - Clewett - - Coates - - Coldsmith - - Collins - - Compton - - Conrad - - Cook - - Cooper - - Costello - - Cowart - - Cowper - - Cox - - Cressman - - Curry - - Cypret - - David - - Davies - - Davis - - Dawkins - - Day - - Dean - - Demuth - - Dennis - - Digson - - Dimeling - - Donkin - - Draudy - - Driggers - - Dryfus - - Dugmore - - Duncan - - Durstine - - Earl - - Easter - - Echard - - Eckhardstein - - Edwards - - Eggbert - - Ehret - - Elderson - - Eliza - - Elliott - - Ellis - - Enderly - - Endsley - - Evans - - Ewing - - Faqua - - Faust - - Fea - - Feufer - - Fiddler - - Field - - Fields - - Finlay - - Fischer - - Fiscina - - Fisher - - Fleming - - Flickinger - - Focell - - Foster - - Franks - - Fraser - - Fryer - - Fuchs - - Fulton - - Gadow - - Gardner - - Garland - - Garneys - - Garratt - - Garrison - - Gettemy - - Gibson - - Graham - - Gray - - Green - - Greenawalt - - Greene - - Greenwood - - Gregory - - Griffiths - - Gronko - - Guess - - Hall - - Hanford - - Hardie - - Harding - - Hardy - - Harris - - Harrison - - Harrold - - Harrow - - Harshman - - Hastings - - Hawker - - Hawking - - Hawkins - - Hayhurst - - Haynes - - Hegarty - - Henry - - Hice - - Highlands - - Hill - - Hincken - - Hirleman - - Hoenshell - - Holdeman - - Hook - - Hooker - - Hoopengarner - - Hoover - - Houser - - Houston - - Howard - - Howe - - Huey - - Hughes - - Hunt - - Hunter - - Hussain - - Hutton - - Hynes - - Ironmonger - - Isaman - - Isemann - - Ivanov - - Jackson - - James - - Jardine - - Jenkins - - Jenner - - Jerome - - Jesse - - Jewell - - Joghs - - Johnson - - Jones - - Jowers - - Joyce - - Judge - - Jyllian - - Kadel - - Kanaga - - Kaur - - Keener - - Kelley - - Kellogg - - Kelly - - Kemble - - Kemerer - - Keppel - - Kepplinger - - Khan - - Kiefer - - Kifer - - Kimple - - King - - Kirkson - - Knapenberger - - Knapp - - Koepple - - Koster - - Kuster - - Kuznetsov - - Laborde - - Lacon - - Lafortune - - Langston - - Larson - - Lauffer - - Laurenzi - - Leach - - Lee - - Leech - - Leichter - - Leslie - - Lester - - Levett - - Lewis - - Lineman - - Linton - - Llora - - Lloyd - - Logue - - Lombardi - - Lord - - Losey - - Lowe - - Lowstetter - - Lucy - - Ludwig - - Maclagan - - Magor - - Marcotte - - Margaret - - Marriman - - Marshall - - Martins - - Mary - - Mason - - Mathews - - Matthews - - McDonald - - McDonohugh - - McShain - - Mcclymonds - - Mccullough - - Mccune - - Mcfall - - Mcintosh - - Mckendrick - - Mcloskey - - Mcmullen - - Mens - - Merryman - - Metzer - - Meyers - - Mikhaylov - - Mildred - - Miller - - Millhouse - - Mills - - Milne - - Mingle - - Minnie - - Mitchell - - Moberly - - Moon - - Moore - - Morgan - - Morris - - Mortland - - Mosser - - Mueller - - Muggins - - Mull - - Muller - - Murphy - - Murray - - Nash - - Neely - - Nehling - - Newbern - - Nicholas - - Nickolson - - Northey - - Noton - - Olphert - - Oneal - - Oppenheimer - - Osteen - - Osterweis - - Osterwise - - Otis - - Overstreet - - Owen - - Owens - - Palmer - - Parker - - Parkinson - - Patel - - Patterson - - Paulson - - Pavlov - - Paynter - - Pearsall - - Pennington - - Perkins - - Pershing - - Peters - - Petrov - - Pfeifer - - Philips - - Phillips - - Picard - - Pinney - - Poehl - - Poley - - Polson - - Powell - - Power - - Prechtl - - Prescott - - Prevatt - - Price - - Priebe - - Pritchard - - Pycroft - - Quinn - - Quirin - - Rader - - Rahl - - Ramos - - Randolph - - Ratcliff - - Rathen - - Rathens - - Raub - - Ray - - Reade - - Reichard - - Reid - - Reighner - - Rhinehart - - Richards - - Richardson - - Richter - - Rifler - - Riggle - - Riker - - Ringer - - Roadman - - Roberts - - Robertson - - Robinson - - Roby - - Rockwell - - Rogers - - Rohtin - - Rose - - Rosensteel - - Rowley - - Russell - - Ryals - - Sagan - - Sanders - - Sandford - - Sandys - - Sauter - - Saylor - - Schaeffer - - Scherer - - Schmidt - - Schofield - - Schrader - - Scott - - Sealis - - Seelig - - Seidner - - Semenov - - Shafer - - Shaffer - - Shaner - - Shaw - - Sheets - - Shick - - Shirey - - Sholl - - Shupe - - Sidower - - Siegrist - - Simmons - - Simpson - - Singh - - Sloan - - Smail - - Smirnov - - Smith - - Snyder - - Sommer - - Spock - - Stafford - - Stahl - - Stainforth - - Stall - - Stamos - - Stange - - Staymates - - Steele - - Stephenson - - Stern - - Stewart - - Stocker - - Stone - - Stough - - Straub - - Stroble - - Stroh - - Styles - - Sullivan - - Sulyard - - Summy - - Sutton - - Swabey - - Swarner - - Sybilla - - Taggart - - Tanner - - Taylor - - Tedrow - - Tennant - - Thomas - - Thomlinson - - Thompson - - Thomson - - Thorley - - Tilton - - Tireman - - Todd - - Treeby - - Trovato - - Turner - - Ulery - - Ullman - - Unk - - Vader - - Vanleer - - Vasilyev - - Waldron - - Walker - - Wallick - - Ward - - Wardle - - Warren - - Watson - - Webb - - Weeter - - Weisgarber - - Wells - - Welty - - Wentzel - - Werner - - Werry - - Wheeler - - Whirlow - - Whittier - - Wible - - Wile - - Wilkerson - - Wilkinson - - Willey - - Williams - - Williamson - - Wilo - - Wilson - - Winton - - Wise - - Wolfe - - Wolff - - Wood - - Woodward - - Woodworth - - Woolery - - Woollard - - Wright - - Yeskey - - Young - - Zadovsky - - Zalack - - Zaun - - Zeal - - Zimmer - - Zoucks - diff --git a/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml b/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml index 354280b76d..a7b16819ec 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/ShuttleRoles/settings.yml @@ -578,8 +578,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: ChallengeVictimChiefEngineer @@ -597,8 +597,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: ChallengeVictimCMO @@ -616,8 +616,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: ChallengeVictimHeadOfPersonnel @@ -635,8 +635,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: ChallengeVictimHeadOfSecurity @@ -654,8 +654,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: ChallengeVictimResearchDirector @@ -673,8 +673,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: ChallengeVictimQuartermaster @@ -692,8 +692,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast # Security # Following use EventHumanoidMindShielded since they are heads and probably should have mindshields @@ -716,8 +716,8 @@ roleLoadout: [ RoleSurvivalVoxSupport ] - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast # Engineering diff --git a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml index ea3e4802f8..e5886610fd 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml @@ -602,8 +602,8 @@ settings: Cluwne - type: RandomMetadata nameSegments: - - names_first - - names_last + - NamesFirst + - NamesLast - type: randomHumanoidSettings id: Cluwne From c3c76777ad77fbdfac43a0ff070e3707187914a6 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:03:51 +0300 Subject: [PATCH 71/91] [Part of #32893] Localize first male & female dataset names (#33402) * Localize first_name * Localize first_female * names-male/female-first-dataset -> names-first-male/female-dataset * Correct prototype ids to follow naming conventions * Combine first_male.yml and first_female.yml into base_gendered.yml --- .../en-US/datasets/names/first_female.ftl | 771 +++++++++++++++++ .../en-US/datasets/names/first_male.ftl | 666 +++++++++++++++ .../Datasets/Names/base_gendered.yml | 11 + .../Datasets/Names/first_female.yml | 774 ------------------ .../Prototypes/Datasets/Names/first_male.yml | 669 --------------- 5 files changed, 1448 insertions(+), 1443 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/first_female.ftl create mode 100644 Resources/Locale/en-US/datasets/names/first_male.ftl create mode 100644 Resources/Prototypes/Datasets/Names/base_gendered.yml delete mode 100644 Resources/Prototypes/Datasets/Names/first_female.yml delete mode 100644 Resources/Prototypes/Datasets/Names/first_male.yml diff --git a/Resources/Locale/en-US/datasets/names/first_female.ftl b/Resources/Locale/en-US/datasets/names/first_female.ftl new file mode 100644 index 0000000000..4058c2eb0c --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/first_female.ftl @@ -0,0 +1,771 @@ +names-first-female-dataset-1 = Aaliyah +names-first-female-dataset-2 = Abby +names-first-female-dataset-3 = Abigail +names-first-female-dataset-4 = Addison +names-first-female-dataset-5 = Addyson +names-first-female-dataset-6 = Adeline +names-first-female-dataset-7 = Adriana +names-first-female-dataset-8 = Adrianna +names-first-female-dataset-9 = Aida +names-first-female-dataset-10 = Aileen +names-first-female-dataset-11 = Ainsley +names-first-female-dataset-12 = Alaina +names-first-female-dataset-13 = Alana +names-first-female-dataset-14 = Alanna +names-first-female-dataset-15 = Alayna +names-first-female-dataset-16 = Alejandra +names-first-female-dataset-17 = Alessandra +names-first-female-dataset-18 = Alexa +names-first-female-dataset-19 = Alexandra +names-first-female-dataset-20 = Alexandria +names-first-female-dataset-21 = Alexia +names-first-female-dataset-22 = Alexis +names-first-female-dataset-23 = Alexus +names-first-female-dataset-24 = Alfreda +names-first-female-dataset-25 = Alice +names-first-female-dataset-26 = Alicia +names-first-female-dataset-27 = Alina +names-first-female-dataset-28 = Alisa +names-first-female-dataset-29 = Alison +names-first-female-dataset-30 = Alissa +names-first-female-dataset-31 = Alisya +names-first-female-dataset-32 = Alivia +names-first-female-dataset-33 = Aliyah +names-first-female-dataset-34 = Allegra +names-first-female-dataset-35 = Allegria +names-first-female-dataset-36 = Allie +names-first-female-dataset-37 = Allison +names-first-female-dataset-38 = Allisson +names-first-female-dataset-39 = Allyson +names-first-female-dataset-40 = Alma +names-first-female-dataset-41 = Alondra +names-first-female-dataset-42 = Alysha +names-first-female-dataset-43 = Alyson +names-first-female-dataset-44 = Alyssa +names-first-female-dataset-45 = Alyssia +names-first-female-dataset-46 = Amanda +names-first-female-dataset-47 = Amari +names-first-female-dataset-48 = Amaryllis +names-first-female-dataset-49 = Amaya +names-first-female-dataset-50 = Amber +names-first-female-dataset-51 = Ambrosine +names-first-female-dataset-52 = Amelia +names-first-female-dataset-53 = Amira +names-first-female-dataset-54 = Amiyah +names-first-female-dataset-55 = Amy +names-first-female-dataset-56 = Amya +names-first-female-dataset-57 = Ana +names-first-female-dataset-58 = Anahi +names-first-female-dataset-59 = Anastasia +names-first-female-dataset-60 = Anaya +names-first-female-dataset-61 = Andrea +names-first-female-dataset-62 = Angel +names-first-female-dataset-63 = Angela +names-first-female-dataset-64 = Angelica +names-first-female-dataset-65 = Angelina +names-first-female-dataset-66 = Angie +names-first-female-dataset-67 = Aniya +names-first-female-dataset-68 = Aniyah +names-first-female-dataset-69 = Anjelica +names-first-female-dataset-70 = Anna +names-first-female-dataset-71 = Annabelle +names-first-female-dataset-72 = Anne +names-first-female-dataset-73 = Annie +names-first-female-dataset-74 = Annika +names-first-female-dataset-75 = Anya +names-first-female-dataset-76 = April +names-first-female-dataset-77 = Arabella +names-first-female-dataset-78 = Ariana +names-first-female-dataset-79 = Arianna +names-first-female-dataset-80 = Ariel +names-first-female-dataset-81 = Arielle +names-first-female-dataset-82 = Arleen +names-first-female-dataset-83 = Ashley +names-first-female-dataset-84 = Ashlie +names-first-female-dataset-85 = Ashlyn +names-first-female-dataset-86 = Ashlynn +names-first-female-dataset-87 = Asia +names-first-female-dataset-88 = Astor +names-first-female-dataset-89 = Athena +names-first-female-dataset-90 = Aubree +names-first-female-dataset-91 = Aubrey +names-first-female-dataset-92 = Aubrie +names-first-female-dataset-93 = Audrey +names-first-female-dataset-94 = Audrina +names-first-female-dataset-95 = Aurora +names-first-female-dataset-96 = Autumn +names-first-female-dataset-97 = Ava +names-first-female-dataset-98 = Avalona +names-first-female-dataset-99 = Averill +names-first-female-dataset-100 = Avery +names-first-female-dataset-101 = Ayla +names-first-female-dataset-102 = Bailey +names-first-female-dataset-103 = Barbara +names-first-female-dataset-104 = Baylee +names-first-female-dataset-105 = Beckah +names-first-female-dataset-106 = Becky +names-first-female-dataset-107 = Bella +names-first-female-dataset-108 = Bernice +names-first-female-dataset-109 = Bethany +names-first-female-dataset-110 = Bethney +names-first-female-dataset-111 = Betsy +names-first-female-dataset-112 = Bianca +names-first-female-dataset-113 = Bidelia +names-first-female-dataset-114 = Breanna +names-first-female-dataset-115 = Breanne +names-first-female-dataset-116 = Brenda +names-first-female-dataset-117 = Brenna +names-first-female-dataset-118 = Briana +names-first-female-dataset-119 = Brianna +names-first-female-dataset-120 = Bridget +names-first-female-dataset-121 = Brielle +names-first-female-dataset-122 = Brittani +names-first-female-dataset-123 = Brittany +names-first-female-dataset-124 = Brooke +names-first-female-dataset-125 = Brooklyn +names-first-female-dataset-126 = Brooklynn +names-first-female-dataset-127 = Brynn +names-first-female-dataset-128 = Cadence +names-first-female-dataset-129 = Caitlin +names-first-female-dataset-130 = Caitlyn +names-first-female-dataset-131 = Calanthia +names-first-female-dataset-132 = Caleigh +names-first-female-dataset-133 = Cali +names-first-female-dataset-134 = Callie +names-first-female-dataset-135 = Cameron +names-first-female-dataset-136 = Camila +names-first-female-dataset-137 = Camille +names-first-female-dataset-138 = Camryn +names-first-female-dataset-139 = Candace +names-first-female-dataset-140 = Candice +names-first-female-dataset-141 = Cara +names-first-female-dataset-142 = Carly +names-first-female-dataset-143 = Carlyle +names-first-female-dataset-144 = Carmen +names-first-female-dataset-145 = Carolina +names-first-female-dataset-146 = Caroline +names-first-female-dataset-147 = Carolyn +names-first-female-dataset-148 = Carry +names-first-female-dataset-149 = Caryl +names-first-female-dataset-150 = Casey +names-first-female-dataset-151 = Cassandra +names-first-female-dataset-152 = Cassidy +names-first-female-dataset-153 = Catherine +names-first-female-dataset-154 = Cecilia +names-first-female-dataset-155 = Cecily +names-first-female-dataset-156 = Celeste +names-first-female-dataset-157 = Charlotte +names-first-female-dataset-158 = Chelsea +names-first-female-dataset-159 = Cherette +names-first-female-dataset-160 = Cheri +names-first-female-dataset-161 = Cherry +names-first-female-dataset-162 = Cheyanne +names-first-female-dataset-163 = Cheyenne +names-first-female-dataset-164 = Chloe +names-first-female-dataset-165 = Christa +names-first-female-dataset-166 = Christiana +names-first-female-dataset-167 = Christina +names-first-female-dataset-168 = Christobelle +names-first-female-dataset-169 = Ciara +names-first-female-dataset-170 = Cindy +names-first-female-dataset-171 = Claire +names-first-female-dataset-172 = Clara +names-first-female-dataset-173 = Claribel +names-first-female-dataset-174 = Claudia +names-first-female-dataset-175 = Clover +names-first-female-dataset-176 = Cora +names-first-female-dataset-177 = Coreen +names-first-female-dataset-178 = Corrine +names-first-female-dataset-179 = Courtney +names-first-female-dataset-180 = Crystal +names-first-female-dataset-181 = Cynthia +names-first-female-dataset-182 = Daisy +names-first-female-dataset-183 = Dakota +names-first-female-dataset-184 = Dalya +names-first-female-dataset-185 = Dana +names-first-female-dataset-186 = Danica +names-first-female-dataset-187 = Daniela +names-first-female-dataset-188 = Daniella +names-first-female-dataset-189 = Danielle +names-first-female-dataset-190 = Danika +names-first-female-dataset-191 = Danna +names-first-female-dataset-192 = Daria +names-first-female-dataset-193 = Dayana +names-first-female-dataset-194 = Dayna +names-first-female-dataset-195 = Debbi +names-first-female-dataset-196 = Dee +names-first-female-dataset-197 = Deena +names-first-female-dataset-198 = Delaney +names-first-female-dataset-199 = Delilah +names-first-female-dataset-200 = Della +names-first-female-dataset-201 = Delma +names-first-female-dataset-202 = Denise +names-first-female-dataset-203 = Denys +names-first-female-dataset-204 = Desiree +names-first-female-dataset-205 = Destiny +names-first-female-dataset-206 = Diamond +names-first-female-dataset-207 = Diana +names-first-female-dataset-208 = Dina +names-first-female-dataset-209 = Dolores +names-first-female-dataset-210 = Donella +names-first-female-dataset-211 = Donna +names-first-female-dataset-212 = Dorothy +names-first-female-dataset-213 = Dortha +names-first-female-dataset-214 = Dulce +names-first-female-dataset-215 = Easter +names-first-female-dataset-216 = Ebba +names-first-female-dataset-217 = Eden +names-first-female-dataset-218 = Effie +names-first-female-dataset-219 = Elaina +names-first-female-dataset-220 = Eleanor +names-first-female-dataset-221 = Elena +names-first-female-dataset-222 = Eliana +names-first-female-dataset-223 = Elise +names-first-female-dataset-224 = Eliza +names-first-female-dataset-225 = Elizabeth +names-first-female-dataset-226 = Ella +names-first-female-dataset-227 = Elle +names-first-female-dataset-228 = Ellie +names-first-female-dataset-229 = Emely +names-first-female-dataset-230 = Emerson +names-first-female-dataset-231 = Emery +names-first-female-dataset-232 = Emilee +names-first-female-dataset-233 = Emilia +names-first-female-dataset-234 = Emily +names-first-female-dataset-235 = Emma +names-first-female-dataset-236 = Erica +names-first-female-dataset-237 = Erika +names-first-female-dataset-238 = Erin +names-first-female-dataset-239 = Ermintrude +names-first-female-dataset-240 = Esmeralda +names-first-female-dataset-241 = Esther +names-first-female-dataset-242 = Estrella +names-first-female-dataset-243 = Eugenia +names-first-female-dataset-244 = Euphemia +names-first-female-dataset-245 = Eustace +names-first-female-dataset-246 = Eva +names-first-female-dataset-247 = Evangeline +names-first-female-dataset-248 = Eveleen +names-first-female-dataset-249 = Evelina +names-first-female-dataset-250 = Evelyn +names-first-female-dataset-251 = Faith +names-first-female-dataset-252 = Fatima +names-first-female-dataset-253 = Fay +names-first-female-dataset-254 = Fernanda +names-first-female-dataset-255 = Fiona +names-first-female-dataset-256 = Floella +names-first-female-dataset-257 = Flora +names-first-female-dataset-258 = Flossie +names-first-female-dataset-259 = Fortune +names-first-female-dataset-260 = Francesca +names-first-female-dataset-261 = Gabriela +names-first-female-dataset-262 = Gabriella +names-first-female-dataset-263 = Gabrielle +names-first-female-dataset-264 = Genette +names-first-female-dataset-265 = Genevieve +names-first-female-dataset-266 = Georgene +names-first-female-dataset-267 = Georgia +names-first-female-dataset-268 = Geraldine +names-first-female-dataset-269 = Gervase +names-first-female-dataset-270 = Gianna +names-first-female-dataset-271 = Gina +names-first-female-dataset-272 = Ginger +names-first-female-dataset-273 = Giselle +names-first-female-dataset-274 = Gladwyn +names-first-female-dataset-275 = Glenna +names-first-female-dataset-276 = Gloria +names-first-female-dataset-277 = Grace +names-first-female-dataset-278 = Gracie +names-first-female-dataset-279 = Greta +names-first-female-dataset-280 = Griselda +names-first-female-dataset-281 = Guadalupe +names-first-female-dataset-282 = Gwenda +names-first-female-dataset-283 = Gwenevere +names-first-female-dataset-284 = Hadley +names-first-female-dataset-285 = Haidee +names-first-female-dataset-286 = Hailee +names-first-female-dataset-287 = Hailey +names-first-female-dataset-288 = Hal +names-first-female-dataset-289 = Haleigh +names-first-female-dataset-290 = Haley +names-first-female-dataset-291 = Hanna +names-first-female-dataset-292 = Hannah +names-first-female-dataset-293 = Harley +names-first-female-dataset-294 = Harmony +names-first-female-dataset-295 = Harper +names-first-female-dataset-296 = Hayden +names-first-female-dataset-297 = Haylee +names-first-female-dataset-298 = Hayley +names-first-female-dataset-299 = Haylie +names-first-female-dataset-300 = Hazel +names-first-female-dataset-301 = Heather +names-first-female-dataset-302 = Heaven +names-first-female-dataset-303 = Hedley +names-first-female-dataset-304 = Heidi +names-first-female-dataset-305 = Helen +names-first-female-dataset-306 = Hepsie +names-first-female-dataset-307 = Holly +names-first-female-dataset-308 = Hope +names-first-female-dataset-309 = Hortensia +names-first-female-dataset-310 = Iantha +names-first-female-dataset-311 = Ileen +names-first-female-dataset-312 = Imani +names-first-female-dataset-313 = Innocent +names-first-female-dataset-314 = Irene +names-first-female-dataset-315 = Iris +names-first-female-dataset-316 = Isabel +names-first-female-dataset-317 = Isabella +names-first-female-dataset-318 = Isabelle +names-first-female-dataset-319 = Itzel +names-first-female-dataset-320 = Ivy +names-first-female-dataset-321 = Izabella +names-first-female-dataset-322 = Jacaline +names-first-female-dataset-323 = Jacqueline +names-first-female-dataset-324 = Jacquetta +names-first-female-dataset-325 = Jacqui +names-first-female-dataset-326 = Jada +names-first-female-dataset-327 = Jade +names-first-female-dataset-328 = Jaden +names-first-female-dataset-329 = Jadyn +names-first-female-dataset-330 = Jaelyn +names-first-female-dataset-331 = Jakki +names-first-female-dataset-332 = Jalen +names-first-female-dataset-333 = Jamie +names-first-female-dataset-334 = Jane +names-first-female-dataset-335 = Janelle +names-first-female-dataset-336 = Janette +names-first-female-dataset-337 = Janie +names-first-female-dataset-338 = Janina +names-first-female-dataset-339 = Janine +names-first-female-dataset-340 = Janiya +names-first-female-dataset-341 = Janiyah +names-first-female-dataset-342 = Jaslene +names-first-female-dataset-343 = Jasmin +names-first-female-dataset-344 = Jasmine +names-first-female-dataset-345 = Jayda +names-first-female-dataset-346 = Jayden +names-first-female-dataset-347 = Jayla +names-first-female-dataset-348 = Jaylee +names-first-female-dataset-349 = Jaynie +names-first-female-dataset-350 = Jazlyn +names-first-female-dataset-351 = Jazmin +names-first-female-dataset-352 = Jazmine +names-first-female-dataset-353 = Jeanna +names-first-female-dataset-354 = Jeannie +names-first-female-dataset-355 = Jeannine +names-first-female-dataset-356 = Jenifer +names-first-female-dataset-357 = Jenna +names-first-female-dataset-358 = Jennie +names-first-female-dataset-359 = Jennifer +names-first-female-dataset-360 = Jera +names-first-female-dataset-361 = Jere +names-first-female-dataset-362 = Jeri +names-first-female-dataset-363 = Jessica +names-first-female-dataset-364 = Jillian +names-first-female-dataset-365 = Jillie +names-first-female-dataset-366 = Jimena +names-first-female-dataset-367 = Joanna +names-first-female-dataset-368 = Jocelyn +names-first-female-dataset-369 = Joetta +names-first-female-dataset-370 = Johanna +names-first-female-dataset-371 = Joi +names-first-female-dataset-372 = Joni +names-first-female-dataset-373 = Jordan +names-first-female-dataset-374 = Jordyn +names-first-female-dataset-375 = Joselyn +names-first-female-dataset-376 = Josepha +names-first-female-dataset-377 = Josephine +names-first-female-dataset-378 = Josie +names-first-female-dataset-379 = Joye +names-first-female-dataset-380 = Julia +names-first-female-dataset-381 = Juliana +names-first-female-dataset-382 = Julianna +names-first-female-dataset-383 = Julie +names-first-female-dataset-384 = Juliet +names-first-female-dataset-385 = Julissa +names-first-female-dataset-386 = July +names-first-female-dataset-387 = Kadence +names-first-female-dataset-388 = Kaelea +names-first-female-dataset-389 = Kaelyn +names-first-female-dataset-390 = Kailey +names-first-female-dataset-391 = Kailyn +names-first-female-dataset-392 = Kaitlin +names-first-female-dataset-393 = Kaitlyn +names-first-female-dataset-394 = Kaleigh +names-first-female-dataset-395 = Kamryn +names-first-female-dataset-396 = Kara +names-first-female-dataset-397 = Karen +names-first-female-dataset-398 = Karenza +names-first-female-dataset-399 = Karina +names-first-female-dataset-400 = Karla +names-first-female-dataset-401 = Karly +names-first-female-dataset-402 = Karyn +names-first-female-dataset-403 = Kassidy +names-first-female-dataset-404 = Kat +names-first-female-dataset-405 = Kate +names-first-female-dataset-406 = Katelyn +names-first-female-dataset-407 = Katelynn +names-first-female-dataset-408 = Katherine +names-first-female-dataset-409 = Kathleen +names-first-female-dataset-410 = Kathryn +names-first-female-dataset-411 = Kathy +names-first-female-dataset-412 = Katie +names-first-female-dataset-413 = Katlyn +names-first-female-dataset-414 = Kayden +names-first-female-dataset-415 = Kaydence +names-first-female-dataset-416 = Kayla +names-first-female-dataset-417 = Kaylee +names-first-female-dataset-418 = Kayleigh +names-first-female-dataset-419 = Kaylie +names-first-female-dataset-420 = Kaylin +names-first-female-dataset-421 = Keegan +names-first-female-dataset-422 = Keira +names-first-female-dataset-423 = Keith +names-first-female-dataset-424 = Kellie +names-first-female-dataset-425 = Kelly +names-first-female-dataset-426 = Kelsey +names-first-female-dataset-427 = Kendall +names-first-female-dataset-428 = Kendra +names-first-female-dataset-429 = Kennedy +names-first-female-dataset-430 = Kenzie +names-first-female-dataset-431 = Kerena +names-first-female-dataset-432 = Kerensa +names-first-female-dataset-433 = Keturah +names-first-female-dataset-434 = Khloe +names-first-female-dataset-435 = Kiana +names-first-female-dataset-436 = Kiara +names-first-female-dataset-437 = Kiera +names-first-female-dataset-438 = Kiley +names-first-female-dataset-439 = Kimberley +names-first-female-dataset-440 = Kimberly +names-first-female-dataset-441 = Kimora +names-first-female-dataset-442 = Kira +names-first-female-dataset-443 = Kristen +names-first-female-dataset-444 = Kristina +names-first-female-dataset-445 = Kyla +names-first-female-dataset-446 = Kylee +names-first-female-dataset-447 = Kyleigh +names-first-female-dataset-448 = Kylie +names-first-female-dataset-449 = Kyra +names-first-female-dataset-450 = Lacey +names-first-female-dataset-451 = Lacy +names-first-female-dataset-452 = Laila +names-first-female-dataset-453 = Lakeisha +names-first-female-dataset-454 = Lalla +names-first-female-dataset-455 = Lana +names-first-female-dataset-456 = Latanya +names-first-female-dataset-457 = Laura +names-first-female-dataset-458 = Lauren +names-first-female-dataset-459 = Laurencia +names-first-female-dataset-460 = Laurissa +names-first-female-dataset-461 = Lauryn +names-first-female-dataset-462 = Layla +names-first-female-dataset-463 = Leah +names-first-female-dataset-464 = Leeann +names-first-female-dataset-465 = Leia +names-first-female-dataset-466 = Leila +names-first-female-dataset-467 = Leilani +names-first-female-dataset-468 = Lena +names-first-female-dataset-469 = Leslie +names-first-female-dataset-470 = Lesly +names-first-female-dataset-471 = Lessie +names-first-female-dataset-472 = Leta +names-first-female-dataset-473 = Lexi +names-first-female-dataset-474 = Lexia +names-first-female-dataset-475 = Lexus +names-first-female-dataset-476 = Lia +names-first-female-dataset-477 = Lila +names-first-female-dataset-478 = Lilah +names-first-female-dataset-479 = Lilian +names-first-female-dataset-480 = Liliana +names-first-female-dataset-481 = Lillian +names-first-female-dataset-482 = Lilliana +names-first-female-dataset-483 = Lillie +names-first-female-dataset-484 = Lilly +names-first-female-dataset-485 = Lily +names-first-female-dataset-486 = Lindsay +names-first-female-dataset-487 = Lindsey +names-first-female-dataset-488 = Lindsie +names-first-female-dataset-489 = Lindy +names-first-female-dataset-490 = Lizbeth +names-first-female-dataset-491 = Lockie +names-first-female-dataset-492 = Logan +names-first-female-dataset-493 = Lola +names-first-female-dataset-494 = London +names-first-female-dataset-495 = Lori +names-first-female-dataset-496 = Lorin +names-first-female-dataset-497 = Luanne +names-first-female-dataset-498 = Lucia +names-first-female-dataset-499 = Lucian +names-first-female-dataset-500 = Lucy +names-first-female-dataset-501 = Luna +names-first-female-dataset-502 = Luvenia +names-first-female-dataset-503 = Lydia +names-first-female-dataset-504 = Lyla +names-first-female-dataset-505 = Lyndsey +names-first-female-dataset-506 = Lynn +names-first-female-dataset-507 = Lynsey +names-first-female-dataset-508 = Lynwood +names-first-female-dataset-509 = Lyric +names-first-female-dataset-510 = Mabelle +names-first-female-dataset-511 = Macey +names-first-female-dataset-512 = Macie +names-first-female-dataset-513 = Mackenzie +names-first-female-dataset-514 = Macy +names-first-female-dataset-515 = Madalyn +names-first-female-dataset-516 = Maddison +names-first-female-dataset-517 = Madeleine +names-first-female-dataset-518 = Madeline +names-first-female-dataset-519 = Madelyn +names-first-female-dataset-520 = Madelynn +names-first-female-dataset-521 = Madilyn +names-first-female-dataset-522 = Madison +names-first-female-dataset-523 = Madisyn +names-first-female-dataset-524 = Madyson +names-first-female-dataset-525 = Maegan +names-first-female-dataset-526 = Maggie +names-first-female-dataset-527 = Makayla +names-first-female-dataset-528 = Makenna +names-first-female-dataset-529 = Makenzie +names-first-female-dataset-530 = Malia +names-first-female-dataset-531 = Mallory +names-first-female-dataset-532 = Marcia +names-first-female-dataset-533 = Marely +names-first-female-dataset-534 = Margaret +names-first-female-dataset-535 = Maria +names-first-female-dataset-536 = Mariabella +names-first-female-dataset-537 = Mariah +names-first-female-dataset-538 = Mariana +names-first-female-dataset-539 = Marilene +names-first-female-dataset-540 = Marion +names-first-female-dataset-541 = Marisol +names-first-female-dataset-542 = Marissa +names-first-female-dataset-543 = Marje +names-first-female-dataset-544 = Marjory +names-first-female-dataset-545 = Marlee +names-first-female-dataset-546 = Marley +names-first-female-dataset-547 = Marlowe +names-first-female-dataset-548 = Marlyn +names-first-female-dataset-549 = Marshall +names-first-female-dataset-550 = Mary +names-first-female-dataset-551 = Maryann +names-first-female-dataset-552 = Maudie +names-first-female-dataset-553 = Maurene +names-first-female-dataset-554 = May +names-first-female-dataset-555 = Maya +names-first-female-dataset-556 = Mckenna +names-first-female-dataset-557 = Mckenzie +names-first-female-dataset-558 = Megan +names-first-female-dataset-559 = Meghan +names-first-female-dataset-560 = Melanie +names-first-female-dataset-561 = Melany +names-first-female-dataset-562 = Melissa +names-first-female-dataset-563 = Melody +names-first-female-dataset-564 = Meredith +names-first-female-dataset-565 = Merideth +names-first-female-dataset-566 = Merrilyn +names-first-female-dataset-567 = Meryl +names-first-female-dataset-568 = Mia +names-first-female-dataset-569 = Michaela +names-first-female-dataset-570 = Michelle +names-first-female-dataset-571 = Mikayla +names-first-female-dataset-572 = Miley +names-first-female-dataset-573 = Minnie +names-first-female-dataset-574 = Miracle +names-first-female-dataset-575 = Miranda +names-first-female-dataset-576 = Miriam +names-first-female-dataset-577 = Molly +names-first-female-dataset-578 = Monica +names-first-female-dataset-579 = Monna +names-first-female-dataset-580 = Morgan +names-first-female-dataset-581 = Muriel +names-first-female-dataset-582 = Mya +names-first-female-dataset-583 = Mylee +names-first-female-dataset-584 = Myriam +names-first-female-dataset-585 = Myrtie +names-first-female-dataset-586 = Nadia +names-first-female-dataset-587 = Nan +names-first-female-dataset-588 = Nancy +names-first-female-dataset-589 = Naomi +names-first-female-dataset-590 = Natalia +names-first-female-dataset-591 = Natalie +names-first-female-dataset-592 = Nataly +names-first-female-dataset-593 = Natasha +names-first-female-dataset-594 = Nayeli +names-first-female-dataset-595 = Nelle +names-first-female-dataset-596 = Nena +names-first-female-dataset-597 = Nerissa +names-first-female-dataset-598 = Netta +names-first-female-dataset-599 = Nettie +names-first-female-dataset-600 = Nevaeh +names-first-female-dataset-601 = Nia +names-first-female-dataset-602 = Nicole +names-first-female-dataset-603 = Nina +names-first-female-dataset-604 = Noelle +names-first-female-dataset-605 = Nonie +names-first-female-dataset-606 = Nora +names-first-female-dataset-607 = Norah +names-first-female-dataset-608 = Nova +names-first-female-dataset-609 = Nowell +names-first-female-dataset-610 = Nydia +names-first-female-dataset-611 = Nyla +names-first-female-dataset-612 = Olive +names-first-female-dataset-613 = Olivia +names-first-female-dataset-614 = Oralie +names-first-female-dataset-615 = Paige +names-first-female-dataset-616 = Paisley +names-first-female-dataset-617 = Paola +names-first-female-dataset-618 = Paris +names-first-female-dataset-619 = Patience +names-first-female-dataset-620 = Patricia +names-first-female-dataset-621 = Pauleen +names-first-female-dataset-622 = Payton +names-first-female-dataset-623 = Pene +names-first-female-dataset-624 = Penelope +names-first-female-dataset-625 = Peregrine +names-first-female-dataset-626 = Perla +names-first-female-dataset-627 = Peyton +names-first-female-dataset-628 = Pheobe +names-first-female-dataset-629 = Phoebe +names-first-female-dataset-630 = Phyliss +names-first-female-dataset-631 = Phyllida +names-first-female-dataset-632 = Phyllis +names-first-female-dataset-633 = Piper +names-first-female-dataset-634 = Porsche +names-first-female-dataset-635 = Presley +names-first-female-dataset-636 = Priscilla +names-first-female-dataset-637 = Prosper +names-first-female-dataset-638 = Prue +names-first-female-dataset-639 = Quanah +names-first-female-dataset-640 = Quiana +names-first-female-dataset-641 = Rachael +names-first-female-dataset-642 = Rachel +names-first-female-dataset-643 = Raegan +names-first-female-dataset-644 = Raelene +names-first-female-dataset-645 = Rain +names-first-female-dataset-646 = Randa +names-first-female-dataset-647 = Randal +names-first-female-dataset-648 = Reagan +names-first-female-dataset-649 = Rebecca +names-first-female-dataset-650 = Rebeckah +names-first-female-dataset-651 = Rebekah +names-first-female-dataset-652 = Reene +names-first-female-dataset-653 = Reese +names-first-female-dataset-654 = Renie +names-first-female-dataset-655 = Rexana +names-first-female-dataset-656 = Rhetta +names-first-female-dataset-657 = Rihanna +names-first-female-dataset-658 = Riley +names-first-female-dataset-659 = Ronnette +names-first-female-dataset-660 = Rosa +names-first-female-dataset-661 = Rose +names-first-female-dataset-662 = Rosemary +names-first-female-dataset-663 = Rowan +names-first-female-dataset-664 = Ruby +names-first-female-dataset-665 = Rubye +names-first-female-dataset-666 = Ruth +names-first-female-dataset-667 = Rylee +names-first-female-dataset-668 = Ryleigh +names-first-female-dataset-669 = Rylie +names-first-female-dataset-670 = Sabella +names-first-female-dataset-671 = Sabrina +names-first-female-dataset-672 = Sachie +names-first-female-dataset-673 = Sadie +names-first-female-dataset-674 = Sage +names-first-female-dataset-675 = Sally +names-first-female-dataset-676 = Samantha +names-first-female-dataset-677 = Samara +names-first-female-dataset-678 = Sandra +names-first-female-dataset-679 = Sara +names-first-female-dataset-680 = Sarah +names-first-female-dataset-681 = Sarai +names-first-female-dataset-682 = Saranna +names-first-female-dataset-683 = Sasha +names-first-female-dataset-684 = Savanna +names-first-female-dataset-685 = Savannah +names-first-female-dataset-686 = Scarlett +names-first-female-dataset-687 = Selena +names-first-female-dataset-688 = Seneca +names-first-female-dataset-689 = Serena +names-first-female-dataset-690 = Serenity +names-first-female-dataset-691 = Shana +names-first-female-dataset-692 = Shanika +names-first-female-dataset-693 = Shannah +names-first-female-dataset-694 = Shannon +names-first-female-dataset-695 = Shantae +names-first-female-dataset-696 = Sharalyn +names-first-female-dataset-697 = Sharla +names-first-female-dataset-698 = Shayla +names-first-female-dataset-699 = Shelby +names-first-female-dataset-700 = Sheri +names-first-female-dataset-701 = Sherie +names-first-female-dataset-702 = Sherill +names-first-female-dataset-703 = Sherri +names-first-female-dataset-704 = Sienna +names-first-female-dataset-705 = Sierra +names-first-female-dataset-706 = Sissy +names-first-female-dataset-707 = Skylar +names-first-female-dataset-708 = Skyler +names-first-female-dataset-709 = Sofia +names-first-female-dataset-710 = Sophia +names-first-female-dataset-711 = Sophie +names-first-female-dataset-712 = Star +names-first-female-dataset-713 = Stella +names-first-female-dataset-714 = Steph +names-first-female-dataset-715 = Stephanie +names-first-female-dataset-716 = Stephany +names-first-female-dataset-717 = Sue +names-first-female-dataset-718 = Sukie +names-first-female-dataset-719 = Summer +names-first-female-dataset-720 = Sunshine +names-first-female-dataset-721 = Susanna +names-first-female-dataset-722 = Susannah +names-first-female-dataset-723 = Suzan +names-first-female-dataset-724 = Suzy +names-first-female-dataset-725 = Sydney +names-first-female-dataset-726 = Talia +names-first-female-dataset-727 = Tamika +names-first-female-dataset-728 = Tania +names-first-female-dataset-729 = Tansy +names-first-female-dataset-730 = Taryn +names-first-female-dataset-731 = Tatiana +names-first-female-dataset-732 = Tatum +names-first-female-dataset-733 = Tatyanna +names-first-female-dataset-734 = Taylor +names-first-female-dataset-735 = Teagan +names-first-female-dataset-736 = Tessa +names-first-female-dataset-737 = Tiffany +names-first-female-dataset-738 = Tolly +names-first-female-dataset-739 = Topaz +names-first-female-dataset-740 = Tori +names-first-female-dataset-741 = Tracee +names-first-female-dataset-742 = Tracey +names-first-female-dataset-743 = Trinity +names-first-female-dataset-744 = Ulyssa +names-first-female-dataset-745 = Valary +names-first-female-dataset-746 = Valentina +names-first-female-dataset-747 = Valeria +names-first-female-dataset-748 = Valerie +names-first-female-dataset-749 = Vanessa +names-first-female-dataset-750 = Verna +names-first-female-dataset-751 = Veronica +names-first-female-dataset-752 = Victoria +names-first-female-dataset-753 = Vinnie +names-first-female-dataset-754 = Violet +names-first-female-dataset-755 = Vivian +names-first-female-dataset-756 = Viviana +names-first-female-dataset-757 = Vivyan +names-first-female-dataset-758 = Wendi +names-first-female-dataset-759 = Wendy +names-first-female-dataset-760 = Willow +names-first-female-dataset-761 = Wisdom +names-first-female-dataset-762 = Wynonna +names-first-female-dataset-763 = Wynter +names-first-female-dataset-764 = Ximena +names-first-female-dataset-765 = Yasmin +names-first-female-dataset-766 = Yolanda +names-first-female-dataset-767 = Ysabel +names-first-female-dataset-768 = Zelda +names-first-female-dataset-769 = Zoe +names-first-female-dataset-770 = Zoey +names-first-female-dataset-771 = Zune diff --git a/Resources/Locale/en-US/datasets/names/first_male.ftl b/Resources/Locale/en-US/datasets/names/first_male.ftl new file mode 100644 index 0000000000..fbb88fcfec --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/first_male.ftl @@ -0,0 +1,666 @@ +names-first-male-dataset-1 = Aaden +names-first-male-dataset-2 = Aaron +names-first-male-dataset-3 = Abel +names-first-male-dataset-4 = Abraham +names-first-male-dataset-5 = Adam +names-first-male-dataset-6 = Adan +names-first-male-dataset-7 = Aden +names-first-male-dataset-8 = Adrian +names-first-male-dataset-9 = Aidan +names-first-male-dataset-10 = Aiden +names-first-male-dataset-11 = Alan +names-first-male-dataset-12 = Albert +names-first-male-dataset-13 = Alberto +names-first-male-dataset-14 = Alden +names-first-male-dataset-15 = Alec +names-first-male-dataset-16 = Alejandro +names-first-male-dataset-17 = Alex +names-first-male-dataset-18 = Alexander +names-first-male-dataset-19 = Alexis +names-first-male-dataset-20 = Alfred +names-first-male-dataset-21 = Alfredo +names-first-male-dataset-22 = Alger +names-first-male-dataset-23 = Ali +names-first-male-dataset-24 = Alijah +names-first-male-dataset-25 = Allen +names-first-male-dataset-26 = Alvin +names-first-male-dataset-27 = Amari +names-first-male-dataset-28 = Amir +names-first-male-dataset-29 = Amos +names-first-male-dataset-30 = Anderson +names-first-male-dataset-31 = Andre +names-first-male-dataset-32 = Andres +names-first-male-dataset-33 = Andrew +names-first-male-dataset-34 = Andy +names-first-male-dataset-35 = Angel +names-first-male-dataset-36 = Angelo +names-first-male-dataset-37 = Anthony +names-first-male-dataset-38 = Antonio +names-first-male-dataset-39 = Apple +names-first-male-dataset-40 = Archie +names-first-male-dataset-41 = Armando +names-first-male-dataset-42 = Arnie +names-first-male-dataset-43 = Art +names-first-male-dataset-44 = Arthur +names-first-male-dataset-45 = Arturo +names-first-male-dataset-46 = Asher +names-first-male-dataset-47 = Ashton +names-first-male-dataset-48 = August +names-first-male-dataset-49 = Austin +names-first-male-dataset-50 = Avery +names-first-male-dataset-51 = Axel +names-first-male-dataset-52 = Ayden +names-first-male-dataset-53 = Baldric +names-first-male-dataset-54 = Bartholomew +names-first-male-dataset-55 = Beau +names-first-male-dataset-56 = Beckett +names-first-male-dataset-57 = Benjamin +names-first-male-dataset-58 = Bennett +names-first-male-dataset-59 = Bill +names-first-male-dataset-60 = Blake +names-first-male-dataset-61 = Braden +names-first-male-dataset-62 = Bradley +names-first-male-dataset-63 = Brady +names-first-male-dataset-64 = Braeden +names-first-male-dataset-65 = Braiden +names-first-male-dataset-66 = Brandon +names-first-male-dataset-67 = Braxton +names-first-male-dataset-68 = Brayan +names-first-male-dataset-69 = Brayden +names-first-male-dataset-70 = Braydon +names-first-male-dataset-71 = Braylon +names-first-male-dataset-72 = Brendan +names-first-male-dataset-73 = Brenden +names-first-male-dataset-74 = Brennan +names-first-male-dataset-75 = Brett +names-first-male-dataset-76 = Brian +names-first-male-dataset-77 = Brick +names-first-male-dataset-78 = Brock +names-first-male-dataset-79 = Brodie +names-first-male-dataset-80 = Brody +names-first-male-dataset-81 = Bronte +names-first-male-dataset-82 = Bruce +names-first-male-dataset-83 = Bryan +names-first-male-dataset-84 = Bryant +names-first-male-dataset-85 = Bryce +names-first-male-dataset-86 = Brycen +names-first-male-dataset-87 = Bryson +names-first-male-dataset-88 = Buck +names-first-male-dataset-89 = Burt +names-first-male-dataset-90 = Butch +names-first-male-dataset-91 = Byrne +names-first-male-dataset-92 = Byron +names-first-male-dataset-93 = Cade +names-first-male-dataset-94 = Caden +names-first-male-dataset-95 = Caiden +names-first-male-dataset-96 = Caleb +names-first-male-dataset-97 = Calvin +names-first-male-dataset-98 = Camden +names-first-male-dataset-99 = Cameron +names-first-male-dataset-100 = Camron +names-first-male-dataset-101 = Camryn +names-first-male-dataset-102 = Carl +names-first-male-dataset-103 = Carlos +names-first-male-dataset-104 = Carson +names-first-male-dataset-105 = Carter +names-first-male-dataset-106 = Casey +names-first-male-dataset-107 = Cash +names-first-male-dataset-108 = Casimir +names-first-male-dataset-109 = Cassian +names-first-male-dataset-110 = Cayden +names-first-male-dataset-111 = Cesar +names-first-male-dataset-112 = Chad +names-first-male-dataset-113 = Chance +names-first-male-dataset-114 = Chandler +names-first-male-dataset-115 = Charles +names-first-male-dataset-116 = Charlie +names-first-male-dataset-117 = Charlton +names-first-male-dataset-118 = Chase +names-first-male-dataset-119 = Chip +names-first-male-dataset-120 = Chris +names-first-male-dataset-121 = Christian +names-first-male-dataset-122 = Christopher +names-first-male-dataset-123 = Clark +names-first-male-dataset-124 = Claudius +names-first-male-dataset-125 = Clayton +names-first-male-dataset-126 = Clement +names-first-male-dataset-127 = Cletus +names-first-male-dataset-128 = Cleveland +names-first-male-dataset-129 = Cliff +names-first-male-dataset-130 = Clinton +names-first-male-dataset-131 = Cody +names-first-male-dataset-132 = Cohen +names-first-male-dataset-133 = Colby +names-first-male-dataset-134 = Cole +names-first-male-dataset-135 = Colin +names-first-male-dataset-136 = Collin +names-first-male-dataset-137 = Colten +names-first-male-dataset-138 = Colton +names-first-male-dataset-139 = Conner +names-first-male-dataset-140 = Connor +names-first-male-dataset-141 = Cooper +names-first-male-dataset-142 = Corbin +names-first-male-dataset-143 = Corey +names-first-male-dataset-144 = Cory +names-first-male-dataset-145 = Cristian +names-first-male-dataset-146 = Cristopher +names-first-male-dataset-147 = Crush +names-first-male-dataset-148 = Cruz +names-first-male-dataset-149 = Curtis +names-first-male-dataset-150 = Cy +names-first-male-dataset-151 = Dakota +names-first-male-dataset-152 = Dallas +names-first-male-dataset-153 = Dalton +names-first-male-dataset-154 = Damian +names-first-male-dataset-155 = Damien +names-first-male-dataset-156 = Damon +names-first-male-dataset-157 = Dane +names-first-male-dataset-158 = Daniel +names-first-male-dataset-159 = Danny +names-first-male-dataset-160 = Dante +names-first-male-dataset-161 = Darcey +names-first-male-dataset-162 = Darell +names-first-male-dataset-163 = Darin +names-first-male-dataset-164 = Darius +names-first-male-dataset-165 = Darren +names-first-male-dataset-166 = David +names-first-male-dataset-167 = Davion +names-first-male-dataset-168 = Davis +names-first-male-dataset-169 = Dawson +names-first-male-dataset-170 = Dayton +names-first-male-dataset-171 = Dean +names-first-male-dataset-172 = Deandre +names-first-male-dataset-173 = Deangelo +names-first-male-dataset-174 = Declan +names-first-male-dataset-175 = Denholm +names-first-male-dataset-176 = Dennis +names-first-male-dataset-177 = Derek +names-first-male-dataset-178 = Derrick +names-first-male-dataset-179 = Desmond +names-first-male-dataset-180 = Devin +names-first-male-dataset-181 = Devon +names-first-male-dataset-182 = Diego +names-first-male-dataset-183 = Dillon +names-first-male-dataset-184 = Dirk +names-first-male-dataset-185 = Dominic +names-first-male-dataset-186 = Dominick +names-first-male-dataset-187 = Donald +names-first-male-dataset-188 = Donny +names-first-male-dataset-189 = Donovan +names-first-male-dataset-190 = Douglas +names-first-male-dataset-191 = Drake +names-first-male-dataset-192 = Drew +names-first-male-dataset-193 = Driscoll +names-first-male-dataset-194 = Duke +names-first-male-dataset-195 = Duncan +names-first-male-dataset-196 = Dustin +names-first-male-dataset-197 = Dylan +names-first-male-dataset-198 = Easton +names-first-male-dataset-199 = Eddie +names-first-male-dataset-200 = Edgar +names-first-male-dataset-201 = Eduardo +names-first-male-dataset-202 = Edward +names-first-male-dataset-203 = Edwin +names-first-male-dataset-204 = Eli +names-first-male-dataset-205 = Elias +names-first-male-dataset-206 = Elijah +names-first-male-dataset-207 = Eliot +names-first-male-dataset-208 = Eliott +names-first-male-dataset-209 = Elliot +names-first-male-dataset-210 = Elliott +names-first-male-dataset-211 = Elric +names-first-male-dataset-212 = Elwood +names-first-male-dataset-213 = Emanuel +names-first-male-dataset-214 = Emerson +names-first-male-dataset-215 = Emiliano +names-first-male-dataset-216 = Emilio +names-first-male-dataset-217 = Emmanuel +names-first-male-dataset-218 = Enrique +names-first-male-dataset-219 = Eric +names-first-male-dataset-220 = Erick +names-first-male-dataset-221 = Erik +names-first-male-dataset-222 = Ernesto +names-first-male-dataset-223 = Esteban +names-first-male-dataset-224 = Ethan +names-first-male-dataset-225 = Evan +names-first-male-dataset-226 = Everett +names-first-male-dataset-227 = Ezekiel +names-first-male-dataset-228 = Ezra +names-first-male-dataset-229 = Fabian +names-first-male-dataset-230 = Felix +names-first-male-dataset-231 = Fenton +names-first-male-dataset-232 = Fernando +names-first-male-dataset-233 = Finn +names-first-male-dataset-234 = Fitz +names-first-male-dataset-235 = Flick +names-first-male-dataset-236 = Flint +names-first-male-dataset-237 = Flip +names-first-male-dataset-238 = Francis +names-first-male-dataset-239 = Francisco +names-first-male-dataset-240 = Frank +names-first-male-dataset-241 = Frankie +names-first-male-dataset-242 = Franklin +names-first-male-dataset-243 = Fridge +names-first-male-dataset-244 = Fulton +names-first-male-dataset-245 = Gabriel +names-first-male-dataset-246 = Gael +names-first-male-dataset-247 = Gage +names-first-male-dataset-248 = Gannon +names-first-male-dataset-249 = Garret +names-first-male-dataset-250 = Garrett +names-first-male-dataset-251 = Gary +names-first-male-dataset-252 = Gavin +names-first-male-dataset-253 = George +names-first-male-dataset-254 = Gerardo +names-first-male-dataset-255 = Giovanni +names-first-male-dataset-256 = Goddard +names-first-male-dataset-257 = Godwin +names-first-male-dataset-258 = Goodwin +names-first-male-dataset-259 = Gordon +names-first-male-dataset-260 = Grady +names-first-male-dataset-261 = Graeme +names-first-male-dataset-262 = Graham +names-first-male-dataset-263 = Grant +names-first-male-dataset-264 = Gratian +names-first-male-dataset-265 = Grayson +names-first-male-dataset-266 = Gregory +names-first-male-dataset-267 = Grendel +names-first-male-dataset-268 = Greyson +names-first-male-dataset-269 = Griffin +names-first-male-dataset-270 = Guillermo +names-first-male-dataset-271 = Gunner +names-first-male-dataset-272 = Gustavo +names-first-male-dataset-273 = Han +names-first-male-dataset-274 = Harrison +names-first-male-dataset-275 = Harry +names-first-male-dataset-276 = Hartley +names-first-male-dataset-277 = Harvey +names-first-male-dataset-278 = Hayden +names-first-male-dataset-279 = Hector +names-first-male-dataset-280 = Henderson +names-first-male-dataset-281 = Henry +names-first-male-dataset-282 = Holden +names-first-male-dataset-283 = Homer +names-first-male-dataset-284 = Horatio +names-first-male-dataset-285 = Hudson +names-first-male-dataset-286 = Huffie +names-first-male-dataset-287 = Hugo +names-first-male-dataset-288 = Hungry +names-first-male-dataset-289 = Hunter +names-first-male-dataset-290 = Ian +names-first-male-dataset-291 = Irvine +names-first-male-dataset-292 = Isaac +names-first-male-dataset-293 = Isaiah +names-first-male-dataset-294 = Isaias +names-first-male-dataset-295 = Isiah +names-first-male-dataset-296 = Ismael +names-first-male-dataset-297 = Israel +names-first-male-dataset-298 = Issac +names-first-male-dataset-299 = Ivan +names-first-male-dataset-300 = Izaiah +names-first-male-dataset-301 = Jace +names-first-male-dataset-302 = Jack +names-first-male-dataset-303 = Jackson +names-first-male-dataset-304 = Jacob +names-first-male-dataset-305 = Jacoby +names-first-male-dataset-306 = Jaden +names-first-male-dataset-307 = Jadon +names-first-male-dataset-308 = Jaiden +names-first-male-dataset-309 = Jaime +names-first-male-dataset-310 = Jake +names-first-male-dataset-311 = Jakob +names-first-male-dataset-312 = Jalen +names-first-male-dataset-313 = Jamar +names-first-male-dataset-314 = Jamari +names-first-male-dataset-315 = Jamarion +names-first-male-dataset-316 = James +names-first-male-dataset-317 = Jameson +names-first-male-dataset-318 = Jamie +names-first-male-dataset-319 = Jamison +names-first-male-dataset-320 = Janel +names-first-male-dataset-321 = Jared +names-first-male-dataset-322 = Jason +names-first-male-dataset-323 = Jasper +names-first-male-dataset-324 = Javier +names-first-male-dataset-325 = Javon +names-first-male-dataset-326 = Jaxon +names-first-male-dataset-327 = Jaxson +names-first-male-dataset-328 = Jay +names-first-male-dataset-329 = Jayce +names-first-male-dataset-330 = Jayden +names-first-male-dataset-331 = Jaydon +names-first-male-dataset-332 = Jaye +names-first-male-dataset-333 = Jaylen +names-first-male-dataset-334 = Jayne +names-first-male-dataset-335 = Jayson +names-first-male-dataset-336 = Jean-Luc +names-first-male-dataset-337 = Jeb +names-first-male-dataset-338 = Jed +names-first-male-dataset-339 = Jeffrey +names-first-male-dataset-340 = Jemmy +names-first-male-dataset-341 = Jeremiah +names-first-male-dataset-342 = Jeremy +names-first-male-dataset-343 = Jermaine +names-first-male-dataset-344 = Jerrie +names-first-male-dataset-345 = Jerry +names-first-male-dataset-346 = Jesse +names-first-male-dataset-347 = Jesus +names-first-male-dataset-348 = Jim +names-first-male-dataset-349 = Jimmy +names-first-male-dataset-350 = Joachim +names-first-male-dataset-351 = Joaquin +names-first-male-dataset-352 = Joe +names-first-male-dataset-353 = Joel +names-first-male-dataset-354 = Joey +names-first-male-dataset-355 = Johan +names-first-male-dataset-356 = John +names-first-male-dataset-357 = Johnathan +names-first-male-dataset-358 = Johnny +names-first-male-dataset-359 = Jonah +names-first-male-dataset-360 = Jonas +names-first-male-dataset-361 = Jonathan +names-first-male-dataset-362 = Jonathon +names-first-male-dataset-363 = Jordan +names-first-male-dataset-364 = Jorge +names-first-male-dataset-365 = Jose +names-first-male-dataset-366 = Joseph +names-first-male-dataset-367 = Josh +names-first-male-dataset-368 = Joshua +names-first-male-dataset-369 = Josiah +names-first-male-dataset-370 = Josue +names-first-male-dataset-371 = Juan +names-first-male-dataset-372 = Judah +names-first-male-dataset-373 = Jude +names-first-male-dataset-374 = Julian +names-first-male-dataset-375 = Julio +names-first-male-dataset-376 = Julius +names-first-male-dataset-377 = Justice +names-first-male-dataset-378 = Justin +names-first-male-dataset-379 = Kade +names-first-male-dataset-380 = Kaden +names-first-male-dataset-381 = Kai +names-first-male-dataset-382 = Kaiden +names-first-male-dataset-383 = Kale +names-first-male-dataset-384 = Kaleb +names-first-male-dataset-385 = Kameron +names-first-male-dataset-386 = Kane +names-first-male-dataset-387 = Karson +names-first-male-dataset-388 = Kayden +names-first-male-dataset-389 = Keagan +names-first-male-dataset-390 = Keaton +names-first-male-dataset-391 = Keegan +names-first-male-dataset-392 = Keith +names-first-male-dataset-393 = Kellen +names-first-male-dataset-394 = Kelvin +names-first-male-dataset-395 = Kennard +names-first-male-dataset-396 = Kenneth +names-first-male-dataset-397 = Kevin +names-first-male-dataset-398 = Keziah +names-first-male-dataset-399 = Khalil +names-first-male-dataset-400 = Kingston +names-first-male-dataset-401 = Kobe +names-first-male-dataset-402 = Kolton +names-first-male-dataset-403 = Kristopher +names-first-male-dataset-404 = Kyle +names-first-male-dataset-405 = Kyler +names-first-male-dataset-406 = Lance +names-first-male-dataset-407 = Landen +names-first-male-dataset-408 = Lando +names-first-male-dataset-409 = Landon +names-first-male-dataset-410 = Landyn +names-first-male-dataset-411 = Lane +names-first-male-dataset-412 = Lanny +names-first-male-dataset-413 = Larry +names-first-male-dataset-414 = Launce +names-first-male-dataset-415 = Lawrence +names-first-male-dataset-416 = Leland +names-first-male-dataset-417 = Lennox +names-first-male-dataset-418 = Lenny +names-first-male-dataset-419 = Leo +names-first-male-dataset-420 = Leonard +names-first-male-dataset-421 = Leonardo +names-first-male-dataset-422 = Leonel +names-first-male-dataset-423 = Leroy +names-first-male-dataset-424 = Levi +names-first-male-dataset-425 = Liam +names-first-male-dataset-426 = Lief +names-first-male-dataset-427 = Lincoln +names-first-male-dataset-428 = Linden +names-first-male-dataset-429 = Linton +names-first-male-dataset-430 = Logan +names-first-male-dataset-431 = Lorde +names-first-male-dataset-432 = Lorenzo +names-first-male-dataset-433 = Loreto +names-first-male-dataset-434 = Lou +names-first-male-dataset-435 = Louis +names-first-male-dataset-436 = Luca +names-first-male-dataset-437 = Lucas +names-first-male-dataset-438 = Luis +names-first-male-dataset-439 = Lukas +names-first-male-dataset-440 = Luke +names-first-male-dataset-441 = Maddox +names-first-male-dataset-442 = Malachi +names-first-male-dataset-443 = Malcolm +names-first-male-dataset-444 = Malik +names-first-male-dataset-445 = Manley +names-first-male-dataset-446 = Manuel +names-first-male-dataset-447 = Marc +names-first-male-dataset-448 = Marco +names-first-male-dataset-449 = Marcos +names-first-male-dataset-450 = Marcus +names-first-male-dataset-451 = Mario +names-first-male-dataset-452 = Marion +names-first-male-dataset-453 = Mark +names-first-male-dataset-454 = Marshall +names-first-male-dataset-455 = Martin +names-first-male-dataset-456 = Marvin +names-first-male-dataset-457 = Mason +names-first-male-dataset-458 = Mateo +names-first-male-dataset-459 = Mathew +names-first-male-dataset-460 = Matthew +names-first-male-dataset-461 = Maurice +names-first-male-dataset-462 = Mauricio +names-first-male-dataset-463 = Max +names-first-male-dataset-464 = Maximilian +names-first-male-dataset-465 = Maximus +names-first-male-dataset-466 = Maxwell +names-first-male-dataset-467 = Maynard +names-first-male-dataset-468 = Mekhi +names-first-male-dataset-469 = Melvin +names-first-male-dataset-470 = Melvyn +names-first-male-dataset-471 = Micah +names-first-male-dataset-472 = Michael +names-first-male-dataset-473 = Micheal +names-first-male-dataset-474 = Miguel +names-first-male-dataset-475 = Mike +names-first-male-dataset-476 = Miles +names-first-male-dataset-477 = Milo +names-first-male-dataset-478 = Milton +names-first-male-dataset-479 = Mitchell +names-first-male-dataset-480 = Moises +names-first-male-dataset-481 = Montague +names-first-male-dataset-482 = Monte +names-first-male-dataset-483 = Monty +names-first-male-dataset-484 = Morgan +names-first-male-dataset-485 = Moses +names-first-male-dataset-486 = Myles +names-first-male-dataset-487 = Nasir +names-first-male-dataset-488 = Nat +names-first-male-dataset-489 = Nathan +names-first-male-dataset-490 = Nathaniel +names-first-male-dataset-491 = Nehemiah +names-first-male-dataset-492 = Nelson +names-first-male-dataset-493 = Nicholas +names-first-male-dataset-494 = Nick +names-first-male-dataset-495 = Nickolas +names-first-male-dataset-496 = Nicolas +names-first-male-dataset-497 = Nikolas +names-first-male-dataset-498 = Noah +names-first-male-dataset-499 = Noel +names-first-male-dataset-500 = Nolan +names-first-male-dataset-501 = Oliver +names-first-male-dataset-502 = Omar +names-first-male-dataset-503 = Opie +names-first-male-dataset-504 = Orlando +names-first-male-dataset-505 = Osbert +names-first-male-dataset-506 = Osborn +names-first-male-dataset-507 = Osborne +names-first-male-dataset-508 = Oscar +names-first-male-dataset-509 = Osmund +names-first-male-dataset-510 = Oswald +names-first-male-dataset-511 = Owen +names-first-male-dataset-512 = Pablo +names-first-male-dataset-513 = Paget +names-first-male-dataset-514 = Parker +names-first-male-dataset-515 = Patrick +names-first-male-dataset-516 = Patton +names-first-male-dataset-517 = Paul +names-first-male-dataset-518 = Paxton +names-first-male-dataset-519 = Payton +names-first-male-dataset-520 = Pedro +names-first-male-dataset-521 = Percival +names-first-male-dataset-522 = Persh +names-first-male-dataset-523 = Peter +names-first-male-dataset-524 = Peyton +names-first-male-dataset-525 = Philip +names-first-male-dataset-526 = Phillip +names-first-male-dataset-527 = Phoenix +names-first-male-dataset-528 = Porter +names-first-male-dataset-529 = Preston +names-first-male-dataset-530 = Quentin +names-first-male-dataset-531 = Quinn +names-first-male-dataset-532 = Quinton +names-first-male-dataset-533 = Rafael +names-first-male-dataset-534 = Ramon +names-first-male-dataset-535 = Randy +names-first-male-dataset-536 = Rastus +names-first-male-dataset-537 = Raul +names-first-male-dataset-538 = Raymond +names-first-male-dataset-539 = Rayner +names-first-male-dataset-540 = Reece +names-first-male-dataset-541 = Reed +names-first-male-dataset-542 = Reese +names-first-male-dataset-543 = Reid +names-first-male-dataset-544 = Reuben +names-first-male-dataset-545 = Reynard +names-first-male-dataset-546 = Ricardo +names-first-male-dataset-547 = Richard +names-first-male-dataset-548 = Ricky +names-first-male-dataset-549 = Riley +names-first-male-dataset-550 = River +names-first-male-dataset-551 = Robert +names-first-male-dataset-552 = Roberto +names-first-male-dataset-553 = Rocco +names-first-male-dataset-554 = Rodger +names-first-male-dataset-555 = Rodrigo +names-first-male-dataset-556 = Roger +names-first-male-dataset-557 = Roman +names-first-male-dataset-558 = Romayne +names-first-male-dataset-559 = Romeo +names-first-male-dataset-560 = Ronald +names-first-male-dataset-561 = Roscoe +names-first-male-dataset-562 = Roswell +names-first-male-dataset-563 = Rowan +names-first-male-dataset-564 = Roy +names-first-male-dataset-565 = Royce +names-first-male-dataset-566 = Rube +names-first-male-dataset-567 = Ruben +names-first-male-dataset-568 = Russell +names-first-male-dataset-569 = Rusty +names-first-male-dataset-570 = Ryan +names-first-male-dataset-571 = Ryder +names-first-male-dataset-572 = Ryker +names-first-male-dataset-573 = Rylan +names-first-male-dataset-574 = Sal +names-first-male-dataset-575 = Salvador +names-first-male-dataset-576 = Sam +names-first-male-dataset-577 = Samuel +names-first-male-dataset-578 = Santiago +names-first-male-dataset-579 = Saul +names-first-male-dataset-580 = Sawyer +names-first-male-dataset-581 = Scott +names-first-male-dataset-582 = Scotty +names-first-male-dataset-583 = Sean +names-first-male-dataset-584 = Sebastian +names-first-male-dataset-585 = Sergio +names-first-male-dataset-586 = Seth +names-first-male-dataset-587 = Seymour +names-first-male-dataset-588 = Shane +names-first-male-dataset-589 = Shaun +names-first-male-dataset-590 = Shawn +names-first-male-dataset-591 = Shiloh +names-first-male-dataset-592 = Silas +names-first-male-dataset-593 = Simon +names-first-male-dataset-594 = Skyler +names-first-male-dataset-595 = Sloan +names-first-male-dataset-596 = Smoke +names-first-male-dataset-597 = Solomon +names-first-male-dataset-598 = Sorrel +names-first-male-dataset-599 = Spencer +names-first-male-dataset-600 = Spike +names-first-male-dataset-601 = Stephen +names-first-male-dataset-602 = Steven +names-first-male-dataset-603 = Sybil +names-first-male-dataset-604 = Syd +names-first-male-dataset-605 = Talon +names-first-male-dataset-606 = Tamsin +names-first-male-dataset-607 = Tanner +names-first-male-dataset-608 = Tate +names-first-male-dataset-609 = Taylor +names-first-male-dataset-610 = Tel +names-first-male-dataset-611 = Terrell +names-first-male-dataset-612 = Terry +names-first-male-dataset-613 = Theodore +names-first-male-dataset-614 = Thomas +names-first-male-dataset-615 = Tim +names-first-male-dataset-616 = Timothy +names-first-male-dataset-617 = Titus +names-first-male-dataset-618 = Todd +names-first-male-dataset-619 = Tony +names-first-male-dataset-620 = Travis +names-first-male-dataset-621 = Trent +names-first-male-dataset-622 = Trenton +names-first-male-dataset-623 = Trevor +names-first-male-dataset-624 = Trey +names-first-male-dataset-625 = Trip +names-first-male-dataset-626 = Tristan +names-first-male-dataset-627 = Tristen +names-first-male-dataset-628 = Triston +names-first-male-dataset-629 = Troy +names-first-male-dataset-630 = Tucker +names-first-male-dataset-631 = Ty +names-first-male-dataset-632 = Tye +names-first-male-dataset-633 = Tyler +names-first-male-dataset-634 = Tyson +names-first-male-dataset-635 = Uland +names-first-male-dataset-636 = Ulric +names-first-male-dataset-637 = Uriel +names-first-male-dataset-638 = Vaughn +names-first-male-dataset-639 = Victor +names-first-male-dataset-640 = Vince +names-first-male-dataset-641 = Vincent +names-first-male-dataset-642 = Vinny +names-first-male-dataset-643 = Walker +names-first-male-dataset-644 = Walter +names-first-male-dataset-645 = Ward +names-first-male-dataset-646 = Warner +names-first-male-dataset-647 = Wayne +names-first-male-dataset-648 = Wesley +names-first-male-dataset-649 = Weston +names-first-male-dataset-650 = Whitaker +names-first-male-dataset-651 = William +names-first-male-dataset-652 = Willy +names-first-male-dataset-653 = Woodrow +names-first-male-dataset-654 = Wyatt +names-first-male-dataset-655 = Xander +names-first-male-dataset-656 = Xavier +names-first-male-dataset-657 = Yahir +names-first-male-dataset-658 = Zachariah +names-first-male-dataset-659 = Zachary +names-first-male-dataset-660 = Zack +names-first-male-dataset-661 = Zackary +names-first-male-dataset-662 = Zander +names-first-male-dataset-663 = Zane +names-first-male-dataset-664 = Zayden +names-first-male-dataset-665 = Zeke +names-first-male-dataset-666 = Zion diff --git a/Resources/Prototypes/Datasets/Names/base_gendered.yml b/Resources/Prototypes/Datasets/Names/base_gendered.yml new file mode 100644 index 0000000000..4a8e98b4f2 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/base_gendered.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesFirstMale + values: + prefix: names-first-male-dataset- + count: 666 + +- type: localizedDataset + id: NamesFirstFemale + values: + prefix: names-first-female-dataset- + count: 771 diff --git a/Resources/Prototypes/Datasets/Names/first_female.yml b/Resources/Prototypes/Datasets/Names/first_female.yml deleted file mode 100644 index 7a7e2be3be..0000000000 --- a/Resources/Prototypes/Datasets/Names/first_female.yml +++ /dev/null @@ -1,774 +0,0 @@ -- type: dataset - id: names_first_female - values: - - Aaliyah - - Abby - - Abigail - - Addison - - Addyson - - Adeline - - Adriana - - Adrianna - - Aida - - Aileen - - Ainsley - - Alaina - - Alana - - Alanna - - Alayna - - Alejandra - - Alessandra - - Alexa - - Alexandra - - Alexandria - - Alexia - - Alexis - - Alexus - - Alfreda - - Alice - - Alicia - - Alina - - Alisa - - Alison - - Alissa - - Alisya - - Alivia - - Aliyah - - Allegra - - Allegria - - Allie - - Allison - - Allisson - - Allyson - - Alma - - Alondra - - Alysha - - Alyson - - Alyssa - - Alyssia - - Amanda - - Amari - - Amaryllis - - Amaya - - Amber - - Ambrosine - - Amelia - - Amira - - Amiyah - - Amy - - Amya - - Ana - - Anahi - - Anastasia - - Anaya - - Andrea - - Angel - - Angela - - Angelica - - Angelina - - Angie - - Aniya - - Aniyah - - Anjelica - - Anna - - Annabelle - - Anne - - Annie - - Annika - - Anya - - April - - Arabella - - Ariana - - Arianna - - Ariel - - Arielle - - Arleen - - Ashley - - Ashlie - - Ashlyn - - Ashlynn - - Asia - - Astor - - Athena - - Aubree - - Aubrey - - Aubrie - - Audrey - - Audrina - - Aurora - - Autumn - - Ava - - Avalona - - Averill - - Avery - - Ayla - - Bailey - - Barbara - - Baylee - - Beckah - - Becky - - Bella - - Bernice - - Bethany - - Bethney - - Betsy - - Bianca - - Bidelia - - Breanna - - Breanne - - Brenda - - Brenna - - Briana - - Brianna - - Bridget - - Brielle - - Brittani - - Brittany - - Brooke - - Brooklyn - - Brooklynn - - Brynn - - Cadence - - Caitlin - - Caitlyn - - Calanthia - - Caleigh - - Cali - - Callie - - Cameron - - Camila - - Camille - - Camryn - - Candace - - Candice - - Cara - - Carly - - Carlyle - - Carmen - - Carolina - - Caroline - - Carolyn - - Carry - - Caryl - - Casey - - Cassandra - - Cassidy - - Catherine - - Cecilia - - Cecily - - Celeste - - Charlotte - - Chelsea - - Cherette - - Cheri - - Cherry - - Cheyanne - - Cheyenne - - Chloe - - Christa - - Christiana - - Christina - - Christobelle - - Ciara - - Cindy - - Claire - - Clara - - Claribel - - Claudia - - Clover - - Cora - - Coreen - - Corrine - - Courtney - - Crystal - - Cynthia - - Daisy - - Dakota - - Dalya - - Dana - - Danica - - Daniela - - Daniella - - Danielle - - Danika - - Danna - - Daria - - Dayana - - Dayna - - Debbi - - Dee - - Deena - - Delaney - - Delilah - - Della - - Delma - - Denise - - Denys - - Desiree - - Destiny - - Diamond - - Diana - - Dina - - Dolores - - Donella - - Donna - - Dorothy - - Dortha - - Dulce - - Easter - - Ebba - - Eden - - Effie - - Elaina - - Eleanor - - Elena - - Eliana - - Elise - - Eliza - - Elizabeth - - Ella - - Elle - - Ellie - - Emely - - Emerson - - Emery - - Emilee - - Emilia - - Emily - - Emma - - Erica - - Erika - - Erin - - Ermintrude - - Esmeralda - - Esther - - Estrella - - Eugenia - - Euphemia - - Eustace - - Eva - - Evangeline - - Eveleen - - Evelina - - Evelyn - - Faith - - Fatima - - Fay - - Fernanda - - Fiona - - Floella - - Flora - - Flossie - - Fortune - - Francesca - - Gabriela - - Gabriella - - Gabrielle - - Genette - - Genevieve - - Georgene - - Georgia - - Geraldine - - Gervase - - Gianna - - Gina - - Ginger - - Giselle - - Gladwyn - - Glenna - - Gloria - - Grace - - Gracie - - Greta - - Griselda - - Guadalupe - - Gwenda - - Gwenevere - - Hadley - - Haidee - - Hailee - - Hailey - - Hal - - Haleigh - - Haley - - Hanna - - Hannah - - Harley - - Harmony - - Harper - - Hayden - - Haylee - - Hayley - - Haylie - - Hazel - - Heather - - Heaven - - Hedley - - Heidi - - Helen - - Hepsie - - Holly - - Hope - - Hortensia - - Iantha - - Ileen - - Imani - - Innocent - - Irene - - Iris - - Isabel - - Isabella - - Isabelle - - Itzel - - Ivy - - Izabella - - Jacaline - - Jacqueline - - Jacquetta - - Jacqui - - Jada - - Jade - - Jaden - - Jadyn - - Jaelyn - - Jakki - - Jalen - - Jamie - - Jane - - Janelle - - Janette - - Janie - - Janina - - Janine - - Janiya - - Janiyah - - Jaslene - - Jasmin - - Jasmine - - Jayda - - Jayden - - Jayla - - Jaylee - - Jaynie - - Jazlyn - - Jazmin - - Jazmine - - Jeanna - - Jeannie - - Jeannine - - Jenifer - - Jenna - - Jennie - - Jennifer - - Jera - - Jere - - Jeri - - Jessica - - Jillian - - Jillie - - Jimena - - Joanna - - Jocelyn - - Joetta - - Johanna - - Joi - - Joni - - Jordan - - Jordyn - - Joselyn - - Josepha - - Josephine - - Josie - - Joye - - Julia - - Juliana - - Julianna - - Julie - - Juliet - - Julissa - - July - - Kadence - - Kaelea - - Kaelyn - - Kailey - - Kailyn - - Kaitlin - - Kaitlyn - - Kaleigh - - Kamryn - - Kara - - Karen - - Karenza - - Karina - - Karla - - Karly - - Karyn - - Kassidy - - Kat - - Kate - - Katelyn - - Katelynn - - Katherine - - Kathleen - - Kathryn - - Kathy - - Katie - - Katlyn - - Kayden - - Kaydence - - Kayla - - Kaylee - - Kayleigh - - Kaylie - - Kaylin - - Keegan - - Keira - - Keith - - Kellie - - Kelly - - Kelsey - - Kendall - - Kendra - - Kennedy - - Kenzie - - Kerena - - Kerensa - - Keturah - - Khloe - - Kiana - - Kiara - - Kiera - - Kiley - - Kimberley - - Kimberly - - Kimora - - Kira - - Kristen - - Kristina - - Kyla - - Kylee - - Kyleigh - - Kylie - - Kyra - - Lacey - - Lacy - - Laila - - Lakeisha - - Lalla - - Lana - - Latanya - - Laura - - Lauren - - Laurencia - - Laurissa - - Lauryn - - Layla - - Leah - - Leeann - - Leia - - Leila - - Leilani - - Lena - - Leslie - - Lesly - - Lessie - - Leta - - Lexi - - Lexia - - Lexus - - Lia - - Lila - - Lilah - - Lilian - - Liliana - - Lillian - - Lilliana - - Lillie - - Lilly - - Lily - - Lindsay - - Lindsey - - Lindsie - - Lindy - - Lizbeth - - Lockie - - Logan - - Lola - - London - - Lori - - Lorin - - Luanne - - Lucia - - Lucian - - Lucy - - Luna - - Luvenia - - Lydia - - Lyla - - Lyndsey - - Lynn - - Lynsey - - Lynwood - - Lyric - - Mabelle - - Macey - - Macie - - Mackenzie - - Macy - - Madalyn - - Maddison - - Madeleine - - Madeline - - Madelyn - - Madelynn - - Madilyn - - Madison - - Madisyn - - Madyson - - Maegan - - Maggie - - Makayla - - Makenna - - Makenzie - - Malia - - Mallory - - Marcia - - Marely - - Margaret - - Maria - - Mariabella - - Mariah - - Mariana - - Marilene - - Marion - - Marisol - - Marissa - - Marje - - Marjory - - Marlee - - Marley - - Marlowe - - Marlyn - - Marshall - - Mary - - Maryann - - Maudie - - Maurene - - May - - Maya - - Mckenna - - Mckenzie - - Megan - - Meghan - - Melanie - - Melany - - Melissa - - Melody - - Meredith - - Merideth - - Merrilyn - - Meryl - - Mia - - Michaela - - Michelle - - Mikayla - - Miley - - Minnie - - Miracle - - Miranda - - Miriam - - Molly - - Monica - - Monna - - Morgan - - Muriel - - Mya - - Mylee - - Myriam - - Myrtie - - Nadia - - Nan - - Nancy - - Naomi - - Natalia - - Natalie - - Nataly - - Natasha - - Nayeli - - Nelle - - Nena - - Nerissa - - Netta - - Nettie - - Nevaeh - - Nia - - Nicole - - Nina - - Noelle - - Nonie - - Nora - - Norah - - Nova - - Nowell - - Nydia - - Nyla - - Olive - - Olivia - - Oralie - - Paige - - Paisley - - Paola - - Paris - - Patience - - Patricia - - Pauleen - - Payton - - Pene - - Penelope - - Peregrine - - Perla - - Peyton - - Pheobe - - Phoebe - - Phyliss - - Phyllida - - Phyllis - - Piper - - Porsche - - Presley - - Priscilla - - Prosper - - Prue - - Quanah - - Quiana - - Rachael - - Rachel - - Raegan - - Raelene - - Rain - - Randa - - Randal - - Reagan - - Rebecca - - Rebeckah - - Rebekah - - Reene - - Reese - - Renie - - Rexana - - Rhetta - - Rihanna - - Riley - - Ronnette - - Rosa - - Rose - - Rosemary - - Rowan - - Ruby - - Rubye - - Ruth - - Rylee - - Ryleigh - - Rylie - - Sabella - - Sabrina - - Sachie - - Sadie - - Sage - - Sally - - Samantha - - Samara - - Sandra - - Sara - - Sarah - - Sarai - - Saranna - - Sasha - - Savanna - - Savannah - - Scarlett - - Selena - - Seneca - - Serena - - Serenity - - Shana - - Shanika - - Shannah - - Shannon - - Shantae - - Sharalyn - - Sharla - - Shayla - - Shelby - - Sheri - - Sherie - - Sherill - - Sherri - - Sienna - - Sierra - - Sissy - - Skylar - - Skyler - - Sofia - - Sophia - - Sophie - - Star - - Stella - - Steph - - Stephanie - - Stephany - - Sue - - Sukie - - Summer - - Sunshine - - Susanna - - Susannah - - Suzan - - Suzy - - Sydney - - Talia - - Tamika - - Tania - - Tansy - - Taryn - - Tatiana - - Tatum - - Tatyanna - - Taylor - - Teagan - - Tessa - - Tiffany - - Tolly - - Topaz - - Tori - - Tracee - - Tracey - - Trinity - - Ulyssa - - Valary - - Valentina - - Valeria - - Valerie - - Vanessa - - Verna - - Veronica - - Victoria - - Vinnie - - Violet - - Vivian - - Viviana - - Vivyan - - Wendi - - Wendy - - Willow - - Wisdom - - Wynonna - - Wynter - - Ximena - - Yasmin - - Yolanda - - Ysabel - - Zelda - - Zoe - - Zoey - - Zune diff --git a/Resources/Prototypes/Datasets/Names/first_male.yml b/Resources/Prototypes/Datasets/Names/first_male.yml deleted file mode 100644 index 5e8fd86725..0000000000 --- a/Resources/Prototypes/Datasets/Names/first_male.yml +++ /dev/null @@ -1,669 +0,0 @@ -- type: dataset - id: names_first_male - values: - - Aaden - - Aaron - - Abel - - Abraham - - Adam - - Adan - - Aden - - Adrian - - Aidan - - Aiden - - Alan - - Albert - - Alberto - - Alden - - Alec - - Alejandro - - Alex - - Alexander - - Alexis - - Alfred - - Alfredo - - Alger - - Ali - - Alijah - - Allen - - Alvin - - Amari - - Amir - - Amos - - Anderson - - Andre - - Andres - - Andrew - - Andy - - Angel - - Angelo - - Anthony - - Antonio - - Apple - - Archie - - Armando - - Arnie - - Art - - Arthur - - Arturo - - Asher - - Ashton - - August - - Austin - - Avery - - Axel - - Ayden - - Baldric - - Bartholomew - - Beau - - Beckett - - Benjamin - - Bennett - - Bill - - Blake - - Braden - - Bradley - - Brady - - Braeden - - Braiden - - Brandon - - Braxton - - Brayan - - Brayden - - Braydon - - Braylon - - Brendan - - Brenden - - Brennan - - Brett - - Brian - - Brick - - Brock - - Brodie - - Brody - - Bronte - - Bruce - - Bryan - - Bryant - - Bryce - - Brycen - - Bryson - - Buck - - Burt - - Butch - - Byrne - - Byron - - Cade - - Caden - - Caiden - - Caleb - - Calvin - - Camden - - Cameron - - Camron - - Camryn - - Carl - - Carlos - - Carson - - Carter - - Casey - - Cash - - Casimir - - Cassian - - Cayden - - Cesar - - Chad - - Chance - - Chandler - - Charles - - Charlie - - Charlton - - Chase - - Chip - - Chris - - Christian - - Christopher - - Clark - - Claudius - - Clayton - - Clement - - Cletus - - Cleveland - - Cliff - - Clinton - - Cody - - Cohen - - Colby - - Cole - - Colin - - Collin - - Colten - - Colton - - Conner - - Connor - - Cooper - - Corbin - - Corey - - Cory - - Cristian - - Cristopher - - Crush - - Cruz - - Curtis - - Cy - - Dakota - - Dallas - - Dalton - - Damian - - Damien - - Damon - - Dane - - Daniel - - Danny - - Dante - - Darcey - - Darell - - Darin - - Darius - - Darren - - David - - Davion - - Davis - - Dawson - - Dayton - - Dean - - Deandre - - Deangelo - - Declan - - Denholm - - Dennis - - Derek - - Derrick - - Desmond - - Devin - - Devon - - Diego - - Dillon - - Dirk - - Dominic - - Dominick - - Donald - - Donny - - Donovan - - Douglas - - Drake - - Drew - - Driscoll - - Duke - - Duncan - - Dustin - - Dylan - - Easton - - Eddie - - Edgar - - Eduardo - - Edward - - Edwin - - Eli - - Elias - - Elijah - - Eliot - - Eliott - - Elliot - - Elliott - - Elric - - Elwood - - Emanuel - - Emerson - - Emiliano - - Emilio - - Emmanuel - - Enrique - - Eric - - Erick - - Erik - - Ernesto - - Esteban - - Ethan - - Evan - - Everett - - Ezekiel - - Ezra - - Fabian - - Felix - - Fenton - - Fernando - - Finn - - Fitz - - Flick - - Flint - - Flip - - Francis - - Francisco - - Frank - - Frankie - - Franklin - - Fridge - - Fulton - - Gabriel - - Gael - - Gage - - Gannon - - Garret - - Garrett - - Gary - - Gavin - - George - - Gerardo - - Giovanni - - Goddard - - Godwin - - Goodwin - - Gordon - - Grady - - Graeme - - Graham - - Grant - - Gratian - - Grayson - - Gregory - - Grendel - - Greyson - - Griffin - - Guillermo - - Gunner - - Gustavo - - Han - - Harrison - - Harry - - Hartley - - Harvey - - Hayden - - Hector - - Henderson - - Henry - - Holden - - Homer - - Horatio - - Hudson - - Huffie - - Hugo - - Hungry - - Hunter - - Ian - - Irvine - - Isaac - - Isaiah - - Isaias - - Isiah - - Ismael - - Israel - - Issac - - Ivan - - Izaiah - - Jace - - Jack - - Jackson - - Jacob - - Jacoby - - Jaden - - Jadon - - Jaiden - - Jaime - - Jake - - Jakob - - Jalen - - Jamar - - Jamari - - Jamarion - - James - - Jameson - - Jamie - - Jamison - - Janel - - Jared - - Jason - - Jasper - - Javier - - Javon - - Jaxon - - Jaxson - - Jay - - Jayce - - Jayden - - Jaydon - - Jaye - - Jaylen - - Jayne - - Jayson - - Jean-Luc - - Jeb - - Jed - - Jeffrey - - Jemmy - - Jeremiah - - Jeremy - - Jermaine - - Jerrie - - Jerry - - Jesse - - Jesus - - Jim - - Jimmy - - Joachim - - Joaquin - - Joe - - Joel - - Joey - - Johan - - John - - Johnathan - - Johnny - - Jonah - - Jonas - - Jonathan - - Jonathon - - Jordan - - Jorge - - Jose - - Joseph - - Josh - - Joshua - - Josiah - - Josue - - Juan - - Judah - - Jude - - Julian - - Julio - - Julius - - Justice - - Justin - - Kade - - Kaden - - Kai - - Kaiden - - Kale - - Kaleb - - Kameron - - Kane - - Karson - - Kayden - - Keagan - - Keaton - - Keegan - - Keith - - Kellen - - Kelvin - - Kennard - - Kenneth - - Kevin - - Keziah - - Khalil - - Kingston - - Kobe - - Kolton - - Kristopher - - Kyle - - Kyler - - Lance - - Landen - - Lando - - Landon - - Landyn - - Lane - - Lanny - - Larry - - Launce - - Lawrence - - Leland - - Lennox - - Lenny - - Leo - - Leonard - - Leonardo - - Leonel - - Leroy - - Levi - - Liam - - Lief - - Lincoln - - Linden - - Linton - - Logan - - Lorde - - Lorenzo - - Loreto - - Lou - - Louis - - Luca - - Lucas - - Luis - - Lukas - - Luke - - Maddox - - Malachi - - Malcolm - - Malik - - Manley - - Manuel - - Marc - - Marco - - Marcos - - Marcus - - Mario - - Marion - - Mark - - Marshall - - Martin - - Marvin - - Mason - - Mateo - - Mathew - - Matthew - - Maurice - - Mauricio - - Max - - Maximilian - - Maximus - - Maxwell - - Maynard - - Mekhi - - Melvin - - Melvyn - - Micah - - Michael - - Micheal - - Miguel - - Mike - - Miles - - Milo - - Milton - - Mitchell - - Moises - - Montague - - Monte - - Monty - - Morgan - - Moses - - Myles - - Nasir - - Nat - - Nathan - - Nathaniel - - Nehemiah - - Nelson - - Nicholas - - Nick - - Nickolas - - Nicolas - - Nikolas - - Noah - - Noel - - Nolan - - Oliver - - Omar - - Opie - - Orlando - - Osbert - - Osborn - - Osborne - - Oscar - - Osmund - - Oswald - - Owen - - Pablo - - Paget - - Parker - - Patrick - - Patton - - Paul - - Paxton - - Payton - - Pedro - - Percival - - Persh - - Peter - - Peyton - - Philip - - Phillip - - Phoenix - - Porter - - Preston - - Quentin - - Quinn - - Quinton - - Rafael - - Ramon - - Randy - - Rastus - - Raul - - Raymond - - Rayner - - Reece - - Reed - - Reese - - Reid - - Reuben - - Reynard - - Ricardo - - Richard - - Ricky - - Riley - - River - - Robert - - Roberto - - Rocco - - Rodger - - Rodrigo - - Roger - - Roman - - Romayne - - Romeo - - Ronald - - Roscoe - - Roswell - - Rowan - - Roy - - Royce - - Rube - - Ruben - - Russell - - Rusty - - Ryan - - Ryder - - Ryker - - Rylan - - Sal - - Salvador - - Sam - - Samuel - - Santiago - - Saul - - Sawyer - - Scott - - Scotty - - Sean - - Sebastian - - Sergio - - Seth - - Seymour - - Shane - - Shaun - - Shawn - - Shiloh - - Silas - - Simon - - Skyler - - Sloan - - Smoke - - Solomon - - Sorrel - - Spencer - - Spike - - Stephen - - Steven - - Sybil - - Syd - - Talon - - Tamsin - - Tanner - - Tate - - Taylor - - Tel - - Terrell - - Terry - - Theodore - - Thomas - - Tim - - Timothy - - Titus - - Todd - - Tony - - Travis - - Trent - - Trenton - - Trevor - - Trey - - Trip - - Tristan - - Tristen - - Triston - - Troy - - Tucker - - Ty - - Tye - - Tyler - - Tyson - - Uland - - Ulric - - Uriel - - Vaughn - - Victor - - Vince - - Vincent - - Vinny - - Walker - - Walter - - Ward - - Warner - - Wayne - - Wesley - - Weston - - Whitaker - - William - - Willy - - Woodrow - - Wyatt - - Xander - - Xavier - - Yahir - - Zachariah - - Zachary - - Zack - - Zackary - - Zander - - Zane - - Zayden - - Zeke - - Zion From 0080a74c87e20257aa8aad8604ad4e1815314461 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:04:01 +0300 Subject: [PATCH 72/91] [Part of #32893] Localize misc dataset names (#33404) * Localize cargo_shuttle names * Localize death_commando names * Localize fortunes * Localize military names * Localize rollie names * fortunes.ftl -> cookie_fortune.ftl * Correct prototype ids to follow naming conventions --- .../en-US/datasets/names/cargo_shuttle.ftl | 8 ++ .../en-US/datasets/names/cookie_fortune.ftl | 79 +++++++++++++++++ .../en-US/datasets/names/death_commando.ftl | 59 +++++++++++++ .../en-US/datasets/names/military_first.ftl | 3 + .../datasets/names/military_first_leader.ftl | 4 + .../en-US/datasets/names/military_last.ftl | 42 +++++++++ .../Locale/en-US/datasets/names/rollie.ftl | 37 ++++++++ .../Datasets/Names/cargo_shuttle.yml | 14 +-- .../Datasets/Names/death_commando.yml | 65 +------------- .../Prototypes/Datasets/Names/fortunes.yml | 85 +------------------ .../Prototypes/Datasets/Names/military.yml | 71 +++------------- .../Prototypes/Datasets/Names/rollie.yml | 45 +--------- .../Prototypes/Entities/Mobs/Player/human.yml | 2 +- .../Entities/Mobs/Player/humanoid.yml | 62 +++++++------- .../Objects/Consumable/Food/snacks.yml | 2 +- 15 files changed, 295 insertions(+), 283 deletions(-) create mode 100644 Resources/Locale/en-US/datasets/names/cargo_shuttle.ftl create mode 100644 Resources/Locale/en-US/datasets/names/cookie_fortune.ftl create mode 100644 Resources/Locale/en-US/datasets/names/death_commando.ftl create mode 100644 Resources/Locale/en-US/datasets/names/military_first.ftl create mode 100644 Resources/Locale/en-US/datasets/names/military_first_leader.ftl create mode 100644 Resources/Locale/en-US/datasets/names/military_last.ftl create mode 100644 Resources/Locale/en-US/datasets/names/rollie.ftl diff --git a/Resources/Locale/en-US/datasets/names/cargo_shuttle.ftl b/Resources/Locale/en-US/datasets/names/cargo_shuttle.ftl new file mode 100644 index 0000000000..5fc4ec18f2 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/cargo_shuttle.ftl @@ -0,0 +1,8 @@ +names-cargo-shuttle-dataset-1 = A Shuttle Will Not Occur +names-cargo-shuttle-dataset-2 = Big Money Shuttle +names-cargo-shuttle-dataset-3 = Engine Change +names-cargo-shuttle-dataset-4 = Ships-the-Cargo +names-cargo-shuttle-dataset-5 = Shootel +names-cargo-shuttle-dataset-6 = Shuttle McShuttleface +names-cargo-shuttle-dataset-7 = ShuttleShuttle +names-cargo-shuttle-dataset-8 = Urist McShuttle diff --git a/Resources/Locale/en-US/datasets/names/cookie_fortune.ftl b/Resources/Locale/en-US/datasets/names/cookie_fortune.ftl new file mode 100644 index 0000000000..8ec9d00781 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/cookie_fortune.ftl @@ -0,0 +1,79 @@ +descriptions-cookie-fortune-dataset-1 = The end is near... and it's all your fault. +descriptions-cookie-fortune-dataset-2 = We know what you did. +descriptions-cookie-fortune-dataset-3 = Beware. +descriptions-cookie-fortune-dataset-4 = Don't look back. +descriptions-cookie-fortune-dataset-5 = Never trust a person in squeaky shoes. +descriptions-cookie-fortune-dataset-6 = Never trust a person in red uniform. +descriptions-cookie-fortune-dataset-7 = Never trust a person in green uniform. +descriptions-cookie-fortune-dataset-8 = Never trust a person in blue uniform. +descriptions-cookie-fortune-dataset-9 = Never trust a person in yellow uniform. +descriptions-cookie-fortune-dataset-10 = Never trust a person in black uniform. +descriptions-cookie-fortune-dataset-11 = Never trust a person without uniform. +descriptions-cookie-fortune-dataset-12 = Always trust a person in squeaky shoes. +descriptions-cookie-fortune-dataset-13 = The clown knows that you know that he knows. Beware. +descriptions-cookie-fortune-dataset-14 = Beware of the silent man in the silent maintenance tunnels. +descriptions-cookie-fortune-dataset-15 = Be careful in dark maintenance tunnels. +descriptions-cookie-fortune-dataset-16 = A surprise awaits you in the maintenance tunnels. +descriptions-cookie-fortune-dataset-17 = You will be pleasantly surprised in the dormitory. +descriptions-cookie-fortune-dataset-18 = You will be pleasantly surprised in the cafeteria. +descriptions-cookie-fortune-dataset-19 = You will be pleasantly surprised in arrivals. +descriptions-cookie-fortune-dataset-20 = You will be pleasantly surprised in the church. +descriptions-cookie-fortune-dataset-21 = You will be pleasantly surprised in the tool storage. +descriptions-cookie-fortune-dataset-22 = There is an impostor among us. +descriptions-cookie-fortune-dataset-23 = A fun adventure awaits you in the maintenance tunnels. +descriptions-cookie-fortune-dataset-24 = CentComm is proud of you! +descriptions-cookie-fortune-dataset-25 = The head of your deparment is proud of you! +descriptions-cookie-fortune-dataset-26 = Ian is proud of you! +descriptions-cookie-fortune-dataset-27 = Do it for Ian! +descriptions-cookie-fortune-dataset-28 = Always carry an emergency box. +descriptions-cookie-fortune-dataset-29 = Red spy is in the base. +descriptions-cookie-fortune-dataset-30 = In the coming minutes, your cherished desire will come true. +descriptions-cookie-fortune-dataset-31 = Take a quick look in the mirror! +descriptions-cookie-fortune-dataset-32 = Don't look in the mirror today! +descriptions-cookie-fortune-dataset-33 = Friendship will come to you soon. +descriptions-cookie-fortune-dataset-34 = A grey man in a gas mask will come to you soon. +descriptions-cookie-fortune-dataset-35 = Whoever gets this note will receive a chocolate bar. +descriptions-cookie-fortune-dataset-36 = Milk is good for your bones. +descriptions-cookie-fortune-dataset-37 = Shout "Hurray!" and get insulated gloves. +descriptions-cookie-fortune-dataset-38 = Hug your captain and you will receive a gift. +descriptions-cookie-fortune-dataset-39 = A dubious friend may be an enemy in red camouflage. +descriptions-cookie-fortune-dataset-40 = A faithful colleague is a strong defense. +descriptions-cookie-fortune-dataset-41 = A friend asks only for your time, not your crowbar. +descriptions-cookie-fortune-dataset-42 = Your life doesn't get better by chance, it gets better by doing your job properly. +descriptions-cookie-fortune-dataset-43 = Boo! +descriptions-cookie-fortune-dataset-44 = The real treasure is the friends you made along the shift. +descriptions-cookie-fortune-dataset-45 = Allan please add details +descriptions-cookie-fortune-dataset-46 = You are the greatest person who ever lived! +descriptions-cookie-fortune-dataset-47 = NanoTrasen is forcing me to make fortunes for these cookies, please help! +descriptions-cookie-fortune-dataset-48 = Buy Mr. Chang's today! +descriptions-cookie-fortune-dataset-49 = You love Mr. Chang! +descriptions-cookie-fortune-dataset-50 = Don't buy Discount Dan. Buy Mr. Chang! +descriptions-cookie-fortune-dataset-51 = Don't buy Getmore Chocolate. Buy Mr. Chang! +descriptions-cookie-fortune-dataset-52 = What’s hidden in a maintenance locker? +descriptions-cookie-fortune-dataset-53 = All your hard work will soon pay off. +descriptions-cookie-fortune-dataset-54 = Don’t just think, act! +descriptions-cookie-fortune-dataset-55 = An apple a day keeps the doctor away. +descriptions-cookie-fortune-dataset-56 = Don't drink and set up singulo. +descriptions-cookie-fortune-dataset-57 = Stare into the singulo, and the singulo stares back at you. +descriptions-cookie-fortune-dataset-58 = Every good and perfect gift is from CentComm. +descriptions-cookie-fortune-dataset-59 = There’s no such thing as Space Station 13. +descriptions-cookie-fortune-dataset-60 = There is a time for caution, but not for fear. +descriptions-cookie-fortune-dataset-61 = The smart thing to do is to begin trusting your intuitions. +descriptions-cookie-fortune-dataset-62 = Time is precious, but insulated gloves are more precious than time. +descriptions-cookie-fortune-dataset-63 = Fortune is a giver and a taker. Do it. +descriptions-cookie-fortune-dataset-64 = Fortune and flowers do not last forever. Do it. +descriptions-cookie-fortune-dataset-65 = Do it. Just do it. +descriptions-cookie-fortune-dataset-66 = When life gives you lemons instead of oranges, make lemonade. +descriptions-cookie-fortune-dataset-67 = By opening this cookie you’ve set a terrible chain of events in motion, good job. +descriptions-cookie-fortune-dataset-68 = Get back to work! +descriptions-cookie-fortune-dataset-69 = Cookie.print() not found +descriptions-cookie-fortune-dataset-70 = THERE IS NO CLONER ON THIS STATION +descriptions-cookie-fortune-dataset-71 = Putting suit sensors on max is always a good idea. +descriptions-cookie-fortune-dataset-72 = Syndicate is hiring. Contact us. +descriptions-cookie-fortune-dataset-73 = The person next to you is up to something. You know what you have to do. +descriptions-cookie-fortune-dataset-74 = Did you know? Monkeys are not what they seem. +descriptions-cookie-fortune-dataset-75 = Did you know that half of salvage specialists go missing on the job? +descriptions-cookie-fortune-dataset-76 = Also try out sashimi with galaxythystle sauce! +descriptions-cookie-fortune-dataset-77 = Did you know that 70% of Nanotrasen applicants go missing within the first years of their contract? The more you know!! +descriptions-cookie-fortune-dataset-78 = This shift you are going to do a very robust move in front of everyone. +descriptions-cookie-fortune-dataset-79 = Robustness is not just about how good you are, but how good of a person you are. diff --git a/Resources/Locale/en-US/datasets/names/death_commando.ftl b/Resources/Locale/en-US/datasets/names/death_commando.ftl new file mode 100644 index 0000000000..4cf60e51a4 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/death_commando.ftl @@ -0,0 +1,59 @@ +names-death-commando-dataset-1 = A whole bunch of spiders in a SWAT suit +names-death-commando-dataset-2 = AMERICA +names-death-commando-dataset-3 = Beat Punchbeef +names-death-commando-dataset-4 = Blast Hardcheese +names-death-commando-dataset-5 = Blast Thickneck +names-death-commando-dataset-6 = Bold Bigflank +names-death-commando-dataset-7 = Bolt Vanderhuge +names-death-commando-dataset-8 = Brick Hardmeat +names-death-commando-dataset-9 = Buck Plankchest +names-death-commando-dataset-10 = Buff Drinklots +names-death-commando-dataset-11 = Buff Hardback +names-death-commando-dataset-12 = Butch Deadlift +names-death-commando-dataset-13 = Crud Bonemeal +names-death-commando-dataset-14 = Crunch Buttsteak +names-death-commando-dataset-15 = Crush McStompbones +names-death-commando-dataset-16 = Duke Killington +names-death-commando-dataset-17 = Fist Rockbone +names-death-commando-dataset-18 = Flint Ironstag +names-death-commando-dataset-19 = Fridge Largebeet +names-death-commando-dataset-20 = GORE Vidal +names-death-commando-dataset-21 = George Melons +names-death-commando-dataset-22 = Gibbs McLargehuge +names-death-commando-dataset-23 = Gristle McThornBody +names-death-commando-dataset-24 = Hank Chesthair +names-death-commando-dataset-25 = Hans Testosteroneson +names-death-commando-dataset-26 = Im going to kill you, im not even kidding +names-death-commando-dataset-27 = Killiam Shakespeare +names-death-commando-dataset-28 = Killing McKillingalot +names-death-commando-dataset-29 = Lance Killiam +names-death-commando-dataset-30 = Leonardo Da Viking +names-death-commando-dataset-31 = Lump Beefrock +names-death-commando-dataset-32 = Pack Blowfist +names-death-commando-dataset-33 = Punch Rockgroin +names-death-commando-dataset-34 = Punch Sideiron +names-death-commando-dataset-35 = Punt Speedchunk +names-death-commando-dataset-36 = Reef Blastbody +names-death-commando-dataset-37 = Rex Dudekiller VII +names-death-commando-dataset-38 = Rip Sidecheek +names-death-commando-dataset-39 = Rip Steakface +names-death-commando-dataset-40 = Roll Fizzlebeef +names-death-commando-dataset-41 = Seamus McTosterone +names-death-commando-dataset-42 = Sgt. Slaughter +names-death-commando-dataset-43 = Sir Killaslot +names-death-commando-dataset-44 = Slab Bulkhead +names-death-commando-dataset-45 = Slab Squatthrust +names-death-commando-dataset-46 = Slake Fistcrunch +names-death-commando-dataset-47 = Slate Slabrock +names-death-commando-dataset-48 = Smash Lampjaw +names-death-commando-dataset-49 = Smoke Manmuscle +names-death-commando-dataset-50 = Splint Chesthair +names-death-commando-dataset-51 = Stabby McGee +names-death-commando-dataset-52 = Stump Beefgnaw +names-death-commando-dataset-53 = Stump Chunkman +names-death-commando-dataset-54 = THAT DAMN TRAITOR GEORGE MELONS +names-death-commando-dataset-55 = The last thing you will ever see +names-death-commando-dataset-56 = Theodore Pain +names-death-commando-dataset-57 = Thick McRunfast +names-death-commando-dataset-58 = Touch Rustrod +names-death-commando-dataset-59 = Trunk Slamchest diff --git a/Resources/Locale/en-US/datasets/names/military_first.ftl b/Resources/Locale/en-US/datasets/names/military_first.ftl new file mode 100644 index 0000000000..b8b04c1624 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/military_first.ftl @@ -0,0 +1,3 @@ +names-military-first-dataset-1 = Corporal +names-military-first-dataset-2 = Sergeant +names-military-first-dataset-3 = Specialist diff --git a/Resources/Locale/en-US/datasets/names/military_first_leader.ftl b/Resources/Locale/en-US/datasets/names/military_first_leader.ftl new file mode 100644 index 0000000000..06206e4d32 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/military_first_leader.ftl @@ -0,0 +1,4 @@ +names-military-leader-first-dataset-1 = Colonel +names-military-leader-first-dataset-2 = Commander +names-military-leader-first-dataset-3 = Lieutenant +names-military-leader-first-dataset-4 = Major diff --git a/Resources/Locale/en-US/datasets/names/military_last.ftl b/Resources/Locale/en-US/datasets/names/military_last.ftl new file mode 100644 index 0000000000..674d094e9e --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/military_last.ftl @@ -0,0 +1,42 @@ +names-military-last-dataset-1 = Agena +names-military-last-dataset-2 = Andromeda +names-military-last-dataset-3 = Antares +names-military-last-dataset-4 = Aquarius +names-military-last-dataset-5 = Beid +names-military-last-dataset-6 = Betelgeuse +names-military-last-dataset-7 = Canopus +names-military-last-dataset-8 = Capricorn +names-military-last-dataset-9 = Celaeno +names-military-last-dataset-10 = Centaur +names-military-last-dataset-11 = Chameleon +names-military-last-dataset-12 = Chau +names-military-last-dataset-13 = Cygnus +names-military-last-dataset-14 = Deneb +names-military-last-dataset-15 = Dragon +names-military-last-dataset-16 = Electra +names-military-last-dataset-17 = Fomalhaut +names-military-last-dataset-18 = Ginan +names-military-last-dataset-19 = Hercules +names-military-last-dataset-20 = Labr +names-military-last-dataset-21 = Leonis +names-military-last-dataset-22 = Matar +names-military-last-dataset-23 = Microscopium +names-military-last-dataset-24 = Nihal +names-military-last-dataset-25 = Ophiuchus +names-military-last-dataset-26 = Oculus +names-military-last-dataset-27 = Orion +names-military-last-dataset-28 = Perseus +names-military-last-dataset-29 = Phoenix +names-military-last-dataset-30 = Procyon +names-military-last-dataset-31 = Regulus +names-military-last-dataset-32 = Rigel +names-military-last-dataset-33 = Sargas +names-military-last-dataset-34 = Schedar +names-military-last-dataset-35 = Shaula +names-military-last-dataset-36 = Sirius +names-military-last-dataset-37 = Tabit +names-military-last-dataset-38 = Taurus +names-military-last-dataset-39 = Ukdah +names-military-last-dataset-40 = Vega +names-military-last-dataset-41 = Yildun +names-military-last-dataset-42 = Zosma diff --git a/Resources/Locale/en-US/datasets/names/rollie.ftl b/Resources/Locale/en-US/datasets/names/rollie.ftl new file mode 100644 index 0000000000..c35ec7c98f --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/rollie.ftl @@ -0,0 +1,37 @@ +names-rollie-dataset-1 = "bifta" +names-rollie-dataset-2 = "bifter" +names-rollie-dataset-3 = "bird" +names-rollie-dataset-4 = "bloint" +names-rollie-dataset-5 = "boof" +names-rollie-dataset-6 = "boofer" +names-rollie-dataset-7 = "bomber" +names-rollie-dataset-8 = "bone" +names-rollie-dataset-9 = "bun" +names-rollie-dataset-10 = "doink" +names-rollie-dataset-11 = "doob" +names-rollie-dataset-12 = "doober" +names-rollie-dataset-13 = "doobie" +names-rollie-dataset-14 = "dutch" +names-rollie-dataset-15 = "fatty" +names-rollie-dataset-16 = "hogger" +names-rollie-dataset-17 = "hooter" +names-rollie-dataset-18 = "hootie" +names-rollie-dataset-19 = "jay" +names-rollie-dataset-20 = "jimmy" +names-rollie-dataset-21 = "juju" +names-rollie-dataset-22 = "jeebie weebie" +names-rollie-dataset-23 = "number" +names-rollie-dataset-24 = "owl" +names-rollie-dataset-25 = "phattie" +names-rollie-dataset-26 = "puffer" +names-rollie-dataset-27 = "reef" +names-rollie-dataset-28 = "reefer" +names-rollie-dataset-29 = "rollie" +names-rollie-dataset-30 = "scoobie" +names-rollie-dataset-31 = "shorty" +names-rollie-dataset-32 = "spiff" +names-rollie-dataset-33 = "spliff" +names-rollie-dataset-34 = "toke" +names-rollie-dataset-35 = "torpedo" +names-rollie-dataset-36 = "zoot" +names-rollie-dataset-37 = "zooter" diff --git a/Resources/Prototypes/Datasets/Names/cargo_shuttle.yml b/Resources/Prototypes/Datasets/Names/cargo_shuttle.yml index 97ad423ed1..22b9c0d022 100644 --- a/Resources/Prototypes/Datasets/Names/cargo_shuttle.yml +++ b/Resources/Prototypes/Datasets/Names/cargo_shuttle.yml @@ -1,11 +1,5 @@ -- type: dataset - id: ShuttleNames +- type: localizedDataset + id: NamesCargoShuttle values: - - A Shuttle Will Not Occur - - Big Money Shuttle - - Engine Change - - Ships-the-Cargo - - Shootel - - Shuttle McShuttleface - - ShuttleShuttle - - Urist McShuttle + prefix: names-cargo-shuttle-dataset- + count: 8 diff --git a/Resources/Prototypes/Datasets/Names/death_commando.yml b/Resources/Prototypes/Datasets/Names/death_commando.yml index cb141abbfb..a41ed1bceb 100644 --- a/Resources/Prototypes/Datasets/Names/death_commando.yml +++ b/Resources/Prototypes/Datasets/Names/death_commando.yml @@ -1,62 +1,5 @@ -- type: dataset - id: names_death_commando +- type: localizedDataset + id: NamesDeathCommando values: - - A whole bunch of spiders in a SWAT suit - - AMERICA - - Beat Punchbeef - - Blast Hardcheese - - Blast Thickneck - - Bold Bigflank - - Bolt Vanderhuge - - Brick Hardmeat - - Buck Plankchest - - Buff Drinklots - - Buff Hardback - - Butch Deadlift - - Crud Bonemeal - - Crunch Buttsteak - - Crush McStompbones - - Duke Killington - - Fist Rockbone - - Flint Ironstag - - Fridge Largebeet - - GORE Vidal - - George Melons - - Gibbs McLargehuge - - Gristle McThornBody - - Hank Chesthair - - Hans Testosteroneson - - Im going to kill you, im not even kidding - - Killiam Shakespeare - - Killing McKillingalot - - Lance Killiam - - Leonardo Da Viking - - Lump Beefrock - - Pack Blowfist - - Punch Rockgroin - - Punch Sideiron - - Punt Speedchunk - - Reef Blastbody - - Rex Dudekiller VII - - Rip Sidecheek - - Rip Steakface - - Roll Fizzlebeef - - Seamus McTosterone - - Sgt. Slaughter - - Sir Killaslot - - Slab Bulkhead - - Slab Squatthrust - - Slake Fistcrunch - - Slate Slabrock - - Smash Lampjaw - - Smoke Manmuscle - - Splint Chesthair - - Stabby McGee - - Stump Beefgnaw - - Stump Chunkman - - THAT DAMN TRAITOR GEORGE MELONS - - The last thing you will ever see - - Theodore Pain - - Thick McRunfast - - Touch Rustrod - - Trunk Slamchest + prefix: names-death-commando-dataset- + count: 59 diff --git a/Resources/Prototypes/Datasets/Names/fortunes.yml b/Resources/Prototypes/Datasets/Names/fortunes.yml index b38e04dc61..a21c26261e 100644 --- a/Resources/Prototypes/Datasets/Names/fortunes.yml +++ b/Resources/Prototypes/Datasets/Names/fortunes.yml @@ -1,82 +1,5 @@ -- type: dataset - id: CookieFortuneDescriptions +- type: localizedDataset + id: DescriptionsCookieFortune values: - - The end is near... and it's all your fault. - - We know what you did. - - Beware. - - Don't look back. - - Never trust a person in squeaky shoes. - - Never trust a person in red uniform. - - Never trust a person in green uniform. - - Never trust a person in blue uniform. - - Never trust a person in yellow uniform. - - Never trust a person in black uniform. - - Never trust a person without uniform. - - Always trust a person in squeaky shoes. - - The clown knows that you know that he knows. Beware. - - Beware of the silent man in the silent maintenance tunnels. - - Be careful in dark maintenance tunnels. - - A surprise awaits you in the maintenance tunnels. - - You will be pleasantly surprised in the dormitory. - - You will be pleasantly surprised in the cafeteria. - - You will be pleasantly surprised in arrivals. - - You will be pleasantly surprised in the church. - - You will be pleasantly surprised in the tool storage. - - There is an impostor among us. - - A fun adventure awaits you in the maintenance tunnels. - - CentComm is proud of you! - - The head of your deparment is proud of you! - - Ian is proud of you! - - Do it for Ian! - - Always carry an emergency box. - - Red spy is in the base. - - In the coming minutes, your cherished desire will come true. - - Take a quick look in the mirror! - - Don't look in the mirror today! - - Friendship will come to you soon. - - A grey man in a gas mask will come to you soon. - - Whoever gets this note will receive a chocolate bar. - - Milk is good for your bones. - - Shout "Hurray!" and get insulated gloves. - - Hug your captain and you will receive a gift. - - A dubious friend may be an enemy in red camouflage. - - A faithful colleague is a strong defense. - - A friend asks only for your time, not your crowbar. - - Your life doesn't get better by chance, it gets better by doing your job properly. - - Boo! - - The real treasure is the friends you made along the shift. - - Allan please add details - - You are the greatest person who ever lived! - - NanoTrasen is forcing me to make fortunes for these cookies, please help! - - Buy Mr. Chang's today! - - You love Mr. Chang! - - Don't buy Discount Dan. Buy Mr. Chang! - - Don't buy Getmore Chocolate. Buy Mr. Chang! - - What’s hidden in a maintenance locker? - - All your hard work will soon pay off. - - Don’t just think, act! - - An apple a day keeps the doctor away. - - Don't drink and set up singulo. - - Stare into the singulo, and the singulo stares back at you. - - Every good and perfect gift is from CentComm. - - There’s no such thing as Space Station 13. - - There is a time for caution, but not for fear. - - The smart thing to do is to begin trusting your intuitions. - - Time is precious, but insulated gloves are more precious than time. - - Fortune is a giver and a taker. Do it. - - Fortune and flowers do not last forever. Do it. - - Do it. Just do it. - - When life gives you lemons instead of oranges, make lemonade. - - By opening this cookie you’ve set a terrible chain of events in motion, good job. - - Get back to work! - - Cookie.print() not found - - THERE IS NO CLONER ON THIS STATION - - Putting suit sensors on max is always a good idea. - - Syndicate is hiring. Contact us. - - The person next to you is up to something. You know what you have to do. - - Did you know? Monkeys are not what they seem. - - Did you know that half of salvage specialists go missing on the job? - - Also try out sashimi with galaxythystle sauce! - - Did you know that 70% of Nanotrasen applicants go missing within the first years of their contract? The more you know!! - - This shift you are going to do a very robust move in front of everyone. - - Robustness is not just about how good you are, but how good of a person you are. + prefix: descriptions-cookie-fortune-dataset- + count: 79 diff --git a/Resources/Prototypes/Datasets/Names/military.yml b/Resources/Prototypes/Datasets/Names/military.yml index 329a452333..475b40222b 100644 --- a/Resources/Prototypes/Datasets/Names/military.yml +++ b/Resources/Prototypes/Datasets/Names/military.yml @@ -1,60 +1,17 @@ -- type: dataset - id: NamesFirstMilitaryLeader +- type: localizedDataset + id: NamesMilitaryFirstLeader values: - - Colonel - - Commander - - Lieutenant - - Major - -- type: dataset - id: NamesFirstMilitary - values: - - Corporal - - Sergeant - - Specialist + prefix: names-military-leader-first-dataset- + count: 4 -- type: dataset - id: NamesLastMilitary +- type: localizedDataset + id: NamesMilitaryFirst values: - - Agena - - Andromeda - - Antares - - Aquarius - - Beid - - Betelgeuse - - Canopus - - Capricorn - - Celaeno - - Centaur - - Chameleon - - Chau - - Cygnus - - Deneb - - Dragon - - Electra - - Fomalhaut - - Ginan - - Hercules - - Labr - - Leonis - - Matar - - Microscopium - - Nihal - - Ophiuchus - - Oculus - - Orion - - Perseus - - Phoenix - - Procyon - - Regulus - - Rigel - - Sargas - - Schedar - - Shaula - - Sirius - - Tabit - - Taurus - - Ukdah - - Vega - - Yildun - - Zosma + prefix: names-military-first-dataset- + count: 3 + +- type: localizedDataset + id: NamesMilitaryLast + values: + prefix: names-military-last-dataset- + count: 42 diff --git a/Resources/Prototypes/Datasets/Names/rollie.yml b/Resources/Prototypes/Datasets/Names/rollie.yml index 34ab263861..e0fe1de56f 100644 --- a/Resources/Prototypes/Datasets/Names/rollie.yml +++ b/Resources/Prototypes/Datasets/Names/rollie.yml @@ -1,42 +1,5 @@ -- type: dataset - id: names_rollie +- type: localizedDataset + id: NamesRollie values: - - "bifta" - - "bifter" - - "bird" - #- "blunt" Change: Blunts already exist, no need to make them roll, god forbid we get a joint called a blunt - - "bloint" - - "boof" - - "boofer" - - "bomber" - - "bone" - - "bun" - - "doink" - - "doob" - - "doober" - - "doobie" - - "dutch" - - "fatty" - - "hogger" - - "hooter" - - "hootie" - - "jay" - - "jimmy" - #- "joint" Change: Joints already exist, no need to make them roll, same reason as above but backwards - - "juju" - - "jeebie weebie" - - "number" - - "owl" - - "phattie" - - "puffer" - - "reef" - - "reefer" - - "rollie" - - "scoobie" - - "shorty" - - "spiff" - - "spliff" - - "toke" - - "torpedo" - - "zoot" - - "zooter" + prefix: names-rollie-dataset- + count: 37 diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index 746c0237e5..879ffa7830 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -18,7 +18,7 @@ prototypes: [SyndicateOperativeGearExtremelyBasic] roleLoadout: [ RoleSurvivalSyndicate ] - type: RandomMetadata - nameSegments: [names_death_commando] + nameSegments: [NamesDeathCommando] - type: NpcFactionMember factions: - Syndicate diff --git a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml index e5886610fd..c17124d5d1 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml @@ -31,8 +31,8 @@ state: icon - type: RandomMetadata nameSegments: - - NamesFirstMilitaryLeader - - NamesLastMilitary + - NamesMilitaryFirstLeader + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: DeathSquad @@ -54,8 +54,8 @@ roleLoadout: [ RoleSurvivalEVA ] - type: RandomMetadata nameSegments: - - NamesFirstMilitaryLeader - - NamesLastMilitary + - NamesMilitaryFirstLeader + - NamesMilitaryLast ## ERT Leader @@ -70,8 +70,8 @@ state: ertleader - type: RandomMetadata nameSegments: - - NamesFirstMilitaryLeader - - NamesLastMilitary + - NamesMilitaryFirstLeader + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: ERTLeader @@ -92,8 +92,8 @@ roleLoadout: [ RoleSurvivalExtended ] - type: RandomMetadata nameSegments: - - NamesFirstMilitaryLeader - - NamesLastMilitary + - NamesMilitaryFirstLeader + - NamesMilitaryLast - type: entity id: RandomHumanoidSpawnerERTLeaderEVA @@ -158,8 +158,8 @@ state: chaplain #needs an ERT variant once a good suit it made. - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: ERTChaplain @@ -177,8 +177,8 @@ job: ERTChaplain - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: Loadout prototypes: [ ERTChaplainGear ] roleLoadout: [ RoleSurvivalExtended ] @@ -224,8 +224,8 @@ state: ertjanitor - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: ERTJanitor @@ -242,8 +242,8 @@ job: ERTJanitor - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: Loadout prototypes: [ ERTJanitorGear ] roleLoadout: [ RoleSurvivalExtended ] @@ -288,8 +288,8 @@ state: ertengineer - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: ERTEngineer @@ -306,8 +306,8 @@ job: ERTEngineer - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: Loadout prototypes: [ ERTEngineerGear ] roleLoadout: [ RoleSurvivalExtended ] @@ -352,8 +352,8 @@ state: ertsecurity - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: ERTSecurity @@ -370,8 +370,8 @@ job: ERTSecurity - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: Loadout prototypes: [ ERTSecurityGear ] roleLoadout: [ RoleSurvivalExtended ] @@ -439,8 +439,8 @@ state: ertmedical - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: RandomHumanoidSpawner settings: ERTMedical @@ -457,8 +457,8 @@ job: ERTMedical - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast - type: Loadout prototypes: [ ERTMedicalGear ] roleLoadout: [ RoleSurvivalExtended ] @@ -518,8 +518,8 @@ settings: short - type: RandomMetadata nameSegments: - - NamesFirstMilitary - - NamesLastMilitary + - NamesMilitaryFirst + - NamesMilitaryLast ## Central Command @@ -557,7 +557,7 @@ sprite: Mobs/Species/Human/parts.rsi state: full - type: RandomMetadata - nameSegments: [ names_death_commando ] + nameSegments: [ NamesDeathCommando ] - type: RandomHumanoidSpawner settings: SyndicateAgent diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml index 31963ca3b0..7b908872c6 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml @@ -669,7 +669,7 @@ state: fortune - type: Item - type: RandomMetadata - descriptionSegments: [CookieFortuneDescriptions] + descriptionSegments: [DescriptionsCookieFortune] - type: entity categories: [ HideSpawnMenu ] From 70a8ec77f041855376cdaeb8eedd13e3d85b1fa3 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sat, 8 Mar 2025 22:04:26 +0300 Subject: [PATCH 73/91] Localize all dataset names (#32893) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use `LocalizedDatasetPrototype` instead of `DatasetPrototype` in `RoleLoadoutPrototype` * Localize ai names * Replace to `LocalizedDatasetPrototype` in `NamingSystem` * Localize arachnid first and last names * Localize atv names * Localize autoborg names * Forgot to change type to localizedDataset * Localize borer names * Localize borg names * Localize cargo shuttle names * Localize clown names * Localize death_commando names * Localize diona names * Localize fake_human names * Localize first and last names * Localize first male and female names * Localize fortunes descriptions * Forgot about equal sign * Localize golem names * Localize hologram names * Localize military names * Localize moth first male and female names * Localize moth last names * Fix autoborg name error * Localize mushman first and last names * Localize ninja names * Localize operation names * Localize regalrat names * Fix mushman_first * Forgot about `Loc.GetString` * Move comments into comment section & fix names * Localize reptilian male and female names * Localize revenant names * Fix locale word order in operation * Localize rollie (btw it was never used and was added as "for the futuгe" long time ago) * Localize skeleton_first names * Localize syndicate names * Localize vox names * Localize wizard first and last names * `{owner}-name-dataset` -> `names-{owner}-dataset` * Change `DatasetPrototype` to `LocalizedDatasetPrototype` and make sure it works properly GetFTLName is no more the static method, we need it to be able to use `Loc.GetString` * I hate those mothname comments * Combine name datasets prototypes * Move every ftl from` /en-US/names` to ` /en-US/datasets/names` * Remove ftl files * Get every dataset yml back * Remove changes for planets. Move it in another PR * Revert these changes (Moved to another PR) * How * Apply suggested changes --- Content.Shared/Humanoid/NamingSystem.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Humanoid/NamingSystem.cs b/Content.Shared/Humanoid/NamingSystem.cs index fca70fcd51..a6d12f8400 100644 --- a/Content.Shared/Humanoid/NamingSystem.cs +++ b/Content.Shared/Humanoid/NamingSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Humanoid.Prototypes; using Content.Shared.Dataset; +using Content.Shared.Random.Helpers; using Robust.Shared.Random; using Robust.Shared.Prototypes; using Robust.Shared.Enums; @@ -58,20 +59,20 @@ namespace Content.Shared.Humanoid switch (gender) { case Gender.Male: - return _random.Pick(_prototypeManager.Index(speciesProto.MaleFirstNames).Values); + return _random.Pick(_prototypeManager.Index(speciesProto.MaleFirstNames)); case Gender.Female: - return _random.Pick(_prototypeManager.Index(speciesProto.FemaleFirstNames).Values); + return _random.Pick(_prototypeManager.Index(speciesProto.FemaleFirstNames)); default: if (_random.Prob(0.5f)) - return _random.Pick(_prototypeManager.Index(speciesProto.MaleFirstNames).Values); + return _random.Pick(_prototypeManager.Index(speciesProto.MaleFirstNames)); else - return _random.Pick(_prototypeManager.Index(speciesProto.FemaleFirstNames).Values); + return _random.Pick(_prototypeManager.Index(speciesProto.FemaleFirstNames)); } } public string GetLastName(SpeciesPrototype speciesProto) { - return _random.Pick(_prototypeManager.Index(speciesProto.LastNames).Values); + return Loc.GetString(_random.Pick(_prototypeManager.Index(speciesProto.LastNames).Values)); } } } From 6919f74b33cfc697ea19f479dc19ad2beccce668 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sat, 8 Mar 2025 20:38:18 +0100 Subject: [PATCH 74/91] Fix integration tests (#35727) * test * fix names * fix more --- Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs | 6 +++--- .../Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 2 +- Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 +- .../Objects/Consumable/Smokeables/Cigarettes/joints.yml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs index 3dffb26f6d..475eb81ced 100644 --- a/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/SpeciesPrototype.cs @@ -82,13 +82,13 @@ public sealed partial class SpeciesPrototype : IPrototype public HumanoidSkinColor SkinColoration { get; private set; } [DataField] - public string MaleFirstNames { get; private set; } = "names_first_male"; + public string MaleFirstNames { get; private set; } = "NamesFirstMale"; [DataField] - public string FemaleFirstNames { get; private set; } = "names_first_female"; + public string FemaleFirstNames { get; private set; } = "NamesFirstFemale"; [DataField] - public string LastNames { get; private set; } = "names_last"; + public string LastNames { get; private set; } = "NamesLast"; [DataField] public SpeciesNaming Naming { get; private set; } = SpeciesNaming.FirstLast; diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index b505f7d77e..d2de21603f 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -303,7 +303,7 @@ components: - type: RandomMetadata nameSegments: - - names_borg + - NamesBorg - type: NpcFactionMember factions: - NanoTrasen diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 1aab1a124e..6026fbd00d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -629,7 +629,7 @@ name: power-cell-slot-component-slot-name-default startingItem: PowerCellHigh - type: RandomMetadata - nameSegments: [names_borg] + nameSegments: [NamesBorg] - type: entity id: PlayerBorgDerelictGhostRole diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml index 86a95e444b..25d6865f20 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Cigarettes/joints.yml @@ -29,7 +29,7 @@ - ReagentId: THC Quantity: 20 - type: RandomMetadata - nameSegments: [names_rollie] + nameSegments: [NamesRollie] - type: entity id: JointRainbow @@ -90,7 +90,7 @@ - ReagentId: THC Quantity: 20 - type: RandomMetadata - nameSegments: [names_rollie] + nameSegments: [NamesRollie] - type: entity id: BluntRainbow From 8e874855960100ff93d217e9c30d72fd2342148f Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 9 Mar 2025 08:50:04 +0000 Subject: [PATCH 75/91] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 20e57ebbdb..c13a935d58 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Moomoobeef - changes: - - message: Ammo-boxes no longer appear empty when only one bullet is removed. - type: Fix - id: 7544 - time: '2024-10-22T09:00:28.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32930 - author: ScarKy0 changes: - message: Added the syringe gun and it's respective ammo. Currently Admeme only. @@ -3900,3 +3893,10 @@ id: 8043 time: '2025-03-08T15:21:22.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35718 +- author: Emisse + changes: + - message: Core Station + type: Remove + id: 8044 + time: '2025-03-09T08:48:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35740 From eeb2854dec4039ea58b624c896f6c1d376287668 Mon Sep 17 00:00:00 2001 From: MilenVolf <63782763+MilenVolf@users.noreply.github.com> Date: Sun, 9 Mar 2025 13:06:11 +0300 Subject: [PATCH 76/91] Remove unneeded Loc.GetString (#35739) --- Content.Shared/Humanoid/NamingSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Humanoid/NamingSystem.cs b/Content.Shared/Humanoid/NamingSystem.cs index a6d12f8400..6de82a3a37 100644 --- a/Content.Shared/Humanoid/NamingSystem.cs +++ b/Content.Shared/Humanoid/NamingSystem.cs @@ -72,7 +72,7 @@ namespace Content.Shared.Humanoid public string GetLastName(SpeciesPrototype speciesProto) { - return Loc.GetString(_random.Pick(_prototypeManager.Index(speciesProto.LastNames).Values)); + return _random.Pick(_prototypeManager.Index(speciesProto.LastNames)); } } } From 66dade4e8e4ac561d6d536ffb1f98921cac16967 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 23:48:50 +0000 Subject: [PATCH 77/91] - --- Resources/Prototypes/Flavors/flavors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Flavors/flavors.yml b/Resources/Prototypes/Flavors/flavors.yml index 73cc869a5a..0a1c97bb67 100644 --- a/Resources/Prototypes/Flavors/flavors.yml +++ b/Resources/Prototypes/Flavors/flavors.yml @@ -1073,7 +1073,7 @@ - type: flavor id: snowwhite flavorType: Complex - description: flavor-complex-snowwhite-deltav # DeltaV + description: flavor-complex-snow-white-deltav # DeltaV - type: flavor id: suidream From e7b98148a49dd313cf99eb349d0d382388689229 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Sun, 9 Mar 2025 23:58:40 +0000 Subject: [PATCH 78/91] realer --- Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs b/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs index da9bd0a1dd..928f062fa7 100644 --- a/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs +++ b/Content.Server/_Shitmed/Medical/Surgery/SurgerySystem.cs @@ -185,7 +185,8 @@ public sealed class SurgerySystem : SharedSurgerySystem } } - dnas.Remove(target.Comp1.DNA); + if (target.Comp1.DNA is {} dna) + dnas.Remove(dna); return total + dnas.Count * target.Comp2.CrossContaminationDirtinessLevel; } @@ -210,8 +211,11 @@ public sealed class SurgerySystem : SharedSurgerySystem Dirty(ent, dirtiness); } - private void AddDNA(EntityUid ent, string dna) + private void AddDNA(EntityUid ent, string? dna) { + if (dna == null) + return; + var contamination = EnsureComp(ent); contamination.DNAs.Add(dna); } From 2f4d657d0168c062afb2a237d847045bc69a1a5d Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 01:29:02 +0000 Subject: [PATCH 79/91] use localized datasets for names --- .../en-US/_DV/datasets/names/chitinid.ftl | 68 + .../Locale/en-US/_DV/datasets/names/oni.ftl | 83 ++ .../en-US/_DV/datasets/names/rodentia.ftl | 431 +++++++ .../en-US/_DV/datasets/names/vulpkanin.ftl | 947 ++++++++++++++ .../Locale/en-US/_EE/datasets/ipc-names.ftl | 1104 ++++++++++++++++ .../Nyanotrasen/Datasets/Names/oni_female.yml | 21 - .../Datasets/Names/oni_location.yml | 31 - .../Nyanotrasen/Datasets/Names/oni_male.yml | 20 - .../Datasets/Names/chitinid_first_female.yml | 35 +- .../Datasets/Names/chitinid_first_male.yml | 37 +- .../_DV/Datasets/Names/oni_female.yml | 5 + .../_DV/Datasets/Names/oni_location.yml | 5 + .../_DV/Datasets/Names/oni_male.yml | 5 + .../_DV/Datasets/Names/rodentia_female.yml | 170 +-- .../_DV/Datasets/Names/rodentia_last.yml | 90 +- .../_DV/Datasets/Names/rodentia_male.yml | 178 +-- .../_DV/Datasets/Names/vulpkanin_female.yml | 349 +----- .../_DV/Datasets/Names/vulpkanin_last.yml | 256 +--- .../_DV/Datasets/Names/vulpkanin_male.yml | 349 +----- .../Prototypes/_EE/Datasets/ipc_names.yml | 1108 +---------------- 20 files changed, 2678 insertions(+), 2614 deletions(-) create mode 100644 Resources/Locale/en-US/_DV/datasets/names/chitinid.ftl create mode 100644 Resources/Locale/en-US/_DV/datasets/names/oni.ftl create mode 100644 Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl create mode 100644 Resources/Locale/en-US/_DV/datasets/names/vulpkanin.ftl create mode 100644 Resources/Locale/en-US/_EE/datasets/ipc-names.ftl delete mode 100644 Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_female.yml delete mode 100644 Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_location.yml delete mode 100644 Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_male.yml create mode 100644 Resources/Prototypes/_DV/Datasets/Names/oni_female.yml create mode 100644 Resources/Prototypes/_DV/Datasets/Names/oni_location.yml create mode 100644 Resources/Prototypes/_DV/Datasets/Names/oni_male.yml diff --git a/Resources/Locale/en-US/_DV/datasets/names/chitinid.ftl b/Resources/Locale/en-US/_DV/datasets/names/chitinid.ftl new file mode 100644 index 0000000000..152f6108a2 --- /dev/null +++ b/Resources/Locale/en-US/_DV/datasets/names/chitinid.ftl @@ -0,0 +1,68 @@ +## First, Male +names-chitinid-first-male-dataset-1 = Al'vos +names-chitinid-first-male-dataset-2 = Amue'val +names-chitinid-first-male-dataset-3 = Barma'tos +names-chitinid-first-male-dataset-4 = Ben'idar +names-chitinid-first-male-dataset-5 = Bil'verrok +names-chitinid-first-male-dataset-6 = Crik'xis +names-chitinid-first-male-dataset-7 = Daru'nta +names-chitinid-first-male-dataset-8 = Dee'aldas +names-chitinid-first-male-dataset-9 = Drx'var +names-chitinid-first-male-dataset-10 = Hen'sra +names-chitinid-first-male-dataset-11 = Hux'von +names-chitinid-first-male-dataset-12 = Ilv'imon +names-chitinid-first-male-dataset-13 = Is'irax +names-chitinid-first-male-dataset-14 = Ish'nax +names-chitinid-first-male-dataset-15 = Jax'zaril'va +names-chitinid-first-male-dataset-16 = L'ofa +names-chitinid-first-male-dataset-17 = Lo'zok +names-chitinid-first-male-dataset-18 = Lu'vurx +names-chitinid-first-male-dataset-19 = Luc'irax +names-chitinid-first-male-dataset-20 = Mer'tex +names-chitinid-first-male-dataset-21 = Od'dalis +names-chitinid-first-male-dataset-22 = Si'ley +names-chitinid-first-male-dataset-23 = Sim'sker +names-chitinid-first-male-dataset-24 = Tal'vos +names-chitinid-first-male-dataset-25 = Ti'ril +names-chitinid-first-male-dataset-26 = Vir'lker +names-chitinid-first-male-dataset-27 = Vir'muel +names-chitinid-first-male-dataset-28 = Vix'vol +names-chitinid-first-male-dataset-29 = Von'draz +names-chitinid-first-male-dataset-30 = Vu'lta'voss +names-chitinid-first-male-dataset-31 = Xixa'ba +names-chitinid-first-male-dataset-32 = Yarr'wat +names-chitinid-first-male-dataset-33 = Zay'zz + +## First, Female +names-chitinid-first-female-dataset-1 = Amer'ix +names-chitinid-first-female-dataset-2 = An'bela +names-chitinid-first-female-dataset-3 = An'ora +names-chitinid-first-female-dataset-4 = Aza'ran +names-chitinid-first-female-dataset-5 = Be'riah +names-chitinid-first-female-dataset-6 = Bel'os +names-chitinid-first-female-dataset-7 = Da'lrah +names-chitinid-first-female-dataset-8 = Di'azo +names-chitinid-first-female-dataset-9 = E'nzo +names-chitinid-first-female-dataset-10 = Em'era +names-chitinid-first-female-dataset-11 = Fi'n'rah +names-chitinid-first-female-dataset-12 = He'teka +names-chitinid-first-female-dataset-13 = Ir'iska +names-chitinid-first-female-dataset-14 = Ish'kar +names-chitinid-first-female-dataset-15 = Isha'ba +names-chitinid-first-female-dataset-16 = Jes'sri'ka +names-chitinid-first-female-dataset-17 = Kalz'za +names-chitinid-first-female-dataset-18 = Kaz'zek +names-chitinid-first-female-dataset-19 = Lot'tikz +names-chitinid-first-female-dataset-20 = Ral'zol +names-chitinid-first-female-dataset-21 = Ri'isano +names-chitinid-first-female-dataset-22 = Talzz'ark +names-chitinid-first-female-dataset-23 = Tess'ara +names-chitinid-first-female-dataset-24 = Tez'mal'zar +names-chitinid-first-female-dataset-25 = Thri'kis +names-chitinid-first-female-dataset-26 = Vani'si'kar +names-chitinid-first-female-dataset-27 = Ve'rai +names-chitinid-first-female-dataset-28 = Vish'ra +names-chitinid-first-female-dataset-29 = Zan'ova +names-chitinid-first-female-dataset-30 = Zen'ofi +names-chitinid-first-female-dataset-31 = Zzer'ak + diff --git a/Resources/Locale/en-US/_DV/datasets/names/oni.ftl b/Resources/Locale/en-US/_DV/datasets/names/oni.ftl new file mode 100644 index 0000000000..845436f643 --- /dev/null +++ b/Resources/Locale/en-US/_DV/datasets/names/oni.ftl @@ -0,0 +1,83 @@ +## Male, First +#陽 +names-oni-last-male-dataset-1 = Kiyoshi +#明 +names-oni-last-male-dataset-2 = Satoshi +#光 +names-oni-last-male-dataset-3 = Teru +names-oni-last-male-dataset-4 = Hiroshi +#天 +names-oni-last-male-dataset-5 = Takashi +#永一 +names-oni-last-male-dataset-6 = Eeichi +#永一朗 +names-oni-last-male-dataset-7 = Eeichirou +names-oni-last-male-dataset-8 = Kyousaburou +names-oni-last-male-dataset-9 = Tsutomu +names-oni-last-male-dataset-10 = Tsuyoshi +names-oni-last-male-dataset-11 = Kenshi +names-oni-last-male-dataset-12 = Kenji +names-oni-last-male-dataset-13 = Kenichi +names-oni-last-male-dataset-14 = Susumu +names-oni-last-male-dataset-15 = Kyounosuke +#Mars +names-oni-last-male-dataset-16 = Suisei +#Reference +names-oni-last-male-dataset-17 = Shuten + +## Female, First +#星 +names-oni-last-female-dataset-1 = Akari +names-oni-last-female-dataset-2 = Kira +names-oni-last-female-dataset-3 = Kirameki +#陽 +names-oni-last-female-dataset-4 = Aki +names-oni-last-female-dataset-5 = Akiho +names-oni-last-female-dataset-6 = Akimi +#明 +names-oni-last-female-dataset-7 = Akashi +names-oni-last-female-dataset-7 = Saya +#月 +names-oni-last-female-dataset-8 = Aporo +names-oni-last-female-dataset-9 = Arute +names-oni-last-female-dataset-10 = Meguru +#天 +names-oni-last-female-dataset-11 = Tiara +names-oni-last-female-dataset-12 = Suisei +#水 +names-oni-last-female-dataset-13 = Io +names-oni-last-female-dataset-14 = Aoi +names-oni-last-female-dataset-15 = Mizu +#epic references +names-oni-last-female-dataset-16 = Shuten +names-oni-last-female-dataset-17 = Suika + +# Location +names-oni-location-dataset-1 = Amiboshi +names-oni-location-dataset-2 = Amefuriboshi +names-oni-location-dataset-3 = Aoboshi +names-oni-location-dataset-4 = Ashitareboshi +names-oni-location-dataset-5 = Chirikoboshi +names-oni-location-dataset-6 = Chichiriboshi +names-oni-location-dataset-7 = Ekieboshi +names-oni-location-dataset-8 = Inamiboshi +names-oni-location-dataset-9 = Hatsuinoshi +names-oni-location-dataset-10 = Hikitsuboshi +names-oni-location-dataset-11 = Hotohoriboshi +names-oni-location-dataset-12 = Karasukiboshi +names-oni-location-dataset-13 = Miboshi +names-oni-location-dataset-14 = Namameboshi +names-oni-location-dataset-15 = Nakagoboshi +names-oni-location-dataset-16 = Nuriboshi +names-oni-location-dataset-17 = Soiboshi +names-oni-location-dataset-18 = Suboshi +names-oni-location-dataset-19 = Subaruboshi +names-oni-location-dataset-20 = Tamaonoboshi +names-oni-location-dataset-21 = Tasukiboshi +names-oni-location-dataset-22 = Tataraboshi +names-oni-location-dataset-23 = Tomiteboshi +names-oni-location-dataset-24 = Tomoboshi +names-oni-location-dataset-25 = Tokakiboshi +names-oni-location-dataset-26 = Torokiboshi +names-oni-location-dataset-27 = Umiyameboshi +names-oni-location-dataset-28 = Urukiboshi diff --git a/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl b/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl new file mode 100644 index 0000000000..ce2a1e0895 --- /dev/null +++ b/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl @@ -0,0 +1,431 @@ +## Male, first +# generic names +names-rodentia-first-male-dataset-1 = Squeaks +names-rodentia-first-male-dataset-2 = Squeaker +names-rodentia-first-male-dataset-3 = Nibbles +names-rodentia-first-male-dataset-4 = Pebbles +names-rodentia-first-male-dataset-5 = Peanut +names-rodentia-first-male-dataset-6 = Pinky +names-rodentia-first-male-dataset-7 = Gadget +names-rodentia-first-male-dataset-8 = Scurry +names-rodentia-first-male-dataset-9 = Scamper +names-rodentia-first-male-dataset-10 = Chitters +names-rodentia-first-male-dataset-11 = Quill +names-rodentia-first-male-dataset-12 = Whiskers +names-rodentia-first-male-dataset-13 = Wiggles +names-rodentia-first-male-dataset-14 = Button +names-rodentia-first-male-dataset-15 = Sniffles +names-rodentia-first-male-dataset-16 = Chip +names-rodentia-first-male-dataset-17 = Pipsqueak +names-rodentia-first-male-dataset-18 = Nugget +names-rodentia-first-male-dataset-19 = Comet +names-rodentia-first-male-dataset-20 = Dash +names-rodentia-first-male-dataset-21 = Fudge +names-rodentia-first-male-dataset-22 = Noodle +names-rodentia-first-male-dataset-23 = Spud +names-rodentia-first-male-dataset-24 = Muffin +names-rodentia-first-male-dataset-25 = Sprout +names-rodentia-first-male-dataset-26 = Jelly +names-rodentia-first-male-dataset-27 = Fuzz +names-rodentia-first-male-dataset-28 = Cheddar +names-rodentia-first-male-dataset-29 = Tootsie +names-rodentia-first-male-dataset-30 = Pickle +names-rodentia-first-male-dataset-31 = Berry + +# gender-neutral +names-rodentia-first-male-dataset-32 = Alex +names-rodentia-first-male-dataset-33 = Riley +names-rodentia-first-male-dataset-34 = Taylor +names-rodentia-first-male-dataset-35 = Jordan +names-rodentia-first-male-dataset-36 = Casey +names-rodentia-first-male-dataset-37 = Avery +names-rodentia-first-male-dataset-38 = Morgan +names-rodentia-first-male-dataset-39 = Jamie +names-rodentia-first-male-dataset-40 = Quinn +names-rodentia-first-male-dataset-41 = Charlie +names-rodentia-first-male-dataset-42 = Dakota +names-rodentia-first-male-dataset-43 = Sydney +names-rodentia-first-male-dataset-44 = Parker +names-rodentia-first-male-dataset-45 = Cameron +names-rodentia-first-male-dataset-46 = Finley +names-rodentia-first-male-dataset-47 = Robin +names-rodentia-first-male-dataset-48 = Emery +names-rodentia-first-male-dataset-49 = Kendall +names-rodentia-first-male-dataset-50 = Rowan +names-rodentia-first-male-dataset-51 = Sawyer +names-rodentia-first-male-dataset-52 = Bailey +names-rodentia-first-male-dataset-53 = Jaden +names-rodentia-first-male-dataset-54 = Addison +names-rodentia-first-male-dataset-55 = Logan +names-rodentia-first-male-dataset-56 = Devon +names-rodentia-first-male-dataset-57 = Lane +names-rodentia-first-male-dataset-58 = Blair +names-rodentia-first-male-dataset-59 = Drew +names-rodentia-first-male-dataset-60 = Jesse +names-rodentia-first-male-dataset-61 = Skylar +names-rodentia-first-male-dataset-62 = Sam +names-rodentia-first-male-dataset-63 = Reese +names-rodentia-first-male-dataset-64 = Terry +names-rodentia-first-male-dataset-65 = Marley +names-rodentia-first-male-dataset-66 = Elliot +names-rodentia-first-male-dataset-67 = Harper +names-rodentia-first-male-dataset-68 = Jules +names-rodentia-first-male-dataset-69 = Ren +names-rodentia-first-male-dataset-70 = Sloane +names-rodentia-first-male-dataset-71 = Rylan +names-rodentia-first-male-dataset-72 = Sage + +# masculine names +names-rodentia-first-male-dataset-73 = Basil +names-rodentia-first-male-dataset-74 = Jerry +names-rodentia-first-male-dataset-75 = Stuart +names-rodentia-first-male-dataset-76 = Bert +names-rodentia-first-male-dataset-77 = Jack +names-rodentia-first-male-dataset-78 = Remy +names-rodentia-first-male-dataset-79 = Geronimo +names-rodentia-first-male-dataset-80 = Dale +names-rodentia-first-male-dataset-81 = Flint +names-rodentia-first-male-dataset-82 = Quincy +names-rodentia-first-male-dataset-83 = Oliver +names-rodentia-first-male-dataset-84 = Max +names-rodentia-first-male-dataset-85 = Leo +names-rodentia-first-male-dataset-86 = Milo +names-rodentia-first-male-dataset-87 = Teddy +names-rodentia-first-male-dataset-88 = Finn +names-rodentia-first-male-dataset-89 = Jasper +names-rodentia-first-male-dataset-90 = Simon +names-rodentia-first-male-dataset-91 = Louie +names-rodentia-first-male-dataset-92 = Toby +names-rodentia-first-male-dataset-93 = Henry +names-rodentia-first-male-dataset-94 = Oscar +names-rodentia-first-male-dataset-95 = Felix +names-rodentia-first-male-dataset-96 = George +names-rodentia-first-male-dataset-97 = Archie +names-rodentia-first-male-dataset-98 = Hugo +names-rodentia-first-male-dataset-99 = Benny +names-rodentia-first-male-dataset-100 = Eli +names-rodentia-first-male-dataset-101 = Lucas +names-rodentia-first-male-dataset-102 = Rufus +names-rodentia-first-male-dataset-103 = Gus +names-rodentia-first-male-dataset-104 = Alfie +names-rodentia-first-male-dataset-105 = Monty +names-rodentia-first-male-dataset-106 = Clyde +names-rodentia-first-male-dataset-107 = Cosmo +names-rodentia-first-male-dataset-108 = Ziggy +names-rodentia-first-male-dataset-109 = Freddie +names-rodentia-first-male-dataset-110 = Chester +names-rodentia-first-male-dataset-120 = Harvey +names-rodentia-first-male-dataset-121 = Rudy +names-rodentia-first-male-dataset-122 = Ollie +names-rodentia-first-male-dataset-123 = Percy +names-rodentia-first-male-dataset-124 = Theo +names-rodentia-first-male-dataset-125 = Winston +names-rodentia-first-male-dataset-126 = Ernie + +# "surnames" +names-rodentia-first-male-dataset-127 = Bramblewood +names-rodentia-first-male-dataset-128 = Burrows +names-rodentia-first-male-dataset-129 = Burrowsford +names-rodentia-first-male-dataset-130 = Cheesetail +names-rodentia-first-male-dataset-131 = Cloverfield +names-rodentia-first-male-dataset-132 = Cloverwood +names-rodentia-first-male-dataset-133 = Ferncroft +names-rodentia-first-male-dataset-134 = Flopshire +names-rodentia-first-male-dataset-135 = Flopshire +names-rodentia-first-male-dataset-136 = Fluffbottom +names-rodentia-first-male-dataset-137 = Furrington +names-rodentia-first-male-dataset-138 = Furwell +names-rodentia-first-male-dataset-139 = Furwood +names-rodentia-first-male-dataset-140 = Gnawson +names-rodentia-first-male-dataset-141 = Linden +names-rodentia-first-male-dataset-142 = Little +names-rodentia-first-male-dataset-143 = Maplewood +names-rodentia-first-male-dataset-144 = Meadows +names-rodentia-first-male-dataset-145 = Munchford +names-rodentia-first-male-dataset-146 = Nibblesnout +names-rodentia-first-male-dataset-147 = Nibbleston +names-rodentia-first-male-dataset-148 = Nibblewood +names-rodentia-first-male-dataset-149 = Oakcroft +names-rodentia-first-male-dataset-150 = Oakley +names-rodentia-first-male-dataset-151 = Pawsbrook +names-rodentia-first-male-dataset-152 = Pawsford +names-rodentia-first-male-dataset-153 = Pawsley +names-rodentia-first-male-dataset-154 = Pawswell +names-rodentia-first-male-dataset-155 = Pawsworth +names-rodentia-first-male-dataset-156 = Scamperdale +names-rodentia-first-male-dataset-157 = Scamperford +names-rodentia-first-male-dataset-158 = Scamperley +names-rodentia-first-male-dataset-159 = Scamperwood +names-rodentia-first-male-dataset-160 = Scurryfoot +names-rodentia-first-male-dataset-161 = Scuttleby +names-rodentia-first-male-dataset-162 = Skitters +names-rodentia-first-male-dataset-163 = Stilton +names-rodentia-first-male-dataset-164 = Squeakerton +names-rodentia-first-male-dataset-165 = Squeakson +names-rodentia-first-male-dataset-166 = Squeaktooth +names-rodentia-first-male-dataset-167 = Squeakwell +names-rodentia-first-male-dataset-168 = Squeakwood +names-rodentia-first-male-dataset-169 = Tailsbury +names-rodentia-first-male-dataset-170 = Thumperton +names-rodentia-first-male-dataset-171 = Thumpford +names-rodentia-first-male-dataset-172 = Whiskerby +names-rodentia-first-male-dataset-173 = Whiskerfield +names-rodentia-first-male-dataset-174 = Whiskershire +names-rodentia-first-male-dataset-175 = Whiskersnout +names-rodentia-first-male-dataset-176 = Whiskervale + +## Female, first +# generic names +names-rodentia-first-female-dataset-1 = Squeaks +names-rodentia-first-female-dataset-2 = Squeaker +names-rodentia-first-female-dataset-3 = Nibbles +names-rodentia-first-female-dataset-4 = Pebbles +names-rodentia-first-female-dataset-5 = Peanut +names-rodentia-first-female-dataset-6 = Pinky +names-rodentia-first-female-dataset-7 = Gadget +names-rodentia-first-female-dataset-8 = Scurry +names-rodentia-first-female-dataset-9 = Scamper +names-rodentia-first-female-dataset-10 = Chitters +names-rodentia-first-female-dataset-11 = Quill +names-rodentia-first-female-dataset-12 = Whiskers +names-rodentia-first-female-dataset-13 = Wiggles +names-rodentia-first-female-dataset-14 = Button +names-rodentia-first-female-dataset-15 = Sniffles +names-rodentia-first-female-dataset-16 = Chip +names-rodentia-first-female-dataset-17 = Pipsqueak +names-rodentia-first-female-dataset-18 = Nugget +names-rodentia-first-female-dataset-19 = Comet +names-rodentia-first-female-dataset-20 = Dash +names-rodentia-first-female-dataset-21 = Fudge +names-rodentia-first-female-dataset-22 = Noodle +names-rodentia-first-female-dataset-23 = Spud +names-rodentia-first-female-dataset-24 = Muffin +names-rodentia-first-female-dataset-25 = Sprout +names-rodentia-first-female-dataset-26 = Jelly +names-rodentia-first-female-dataset-27 = Fuzz +names-rodentia-first-female-dataset-28 = Cheddar +names-rodentia-first-female-dataset-29 = Tootsie +names-rodentia-first-female-dataset-30 = Pickle +names-rodentia-first-female-dataset-31 = Berry + +# gender-neutral +names-rodentia-first-female-dataset-32 = Alex +names-rodentia-first-female-dataset-33 = Riley +names-rodentia-first-female-dataset-34 = Taylor +names-rodentia-first-female-dataset-35 = Jordan +names-rodentia-first-female-dataset-36 = Casey +names-rodentia-first-female-dataset-37 = Avery +names-rodentia-first-female-dataset-38 = Morgan +names-rodentia-first-female-dataset-39 = Jamie +names-rodentia-first-female-dataset-40 = Quinn +names-rodentia-first-female-dataset-41 = Charlie +names-rodentia-first-female-dataset-42 = Dakota +names-rodentia-first-female-dataset-43 = Sydney +names-rodentia-first-female-dataset-44 = Parker +names-rodentia-first-female-dataset-45 = Cameron +names-rodentia-first-female-dataset-46 = Finley +names-rodentia-first-female-dataset-47 = Robin +names-rodentia-first-female-dataset-48 = Emery +names-rodentia-first-female-dataset-49 = Kendall +names-rodentia-first-female-dataset-50 = Rowan +names-rodentia-first-female-dataset-51 = Sawyer +names-rodentia-first-female-dataset-52 = Bailey +names-rodentia-first-female-dataset-53 = Jaden +names-rodentia-first-female-dataset-54 = Addison +names-rodentia-first-female-dataset-55 = Logan +names-rodentia-first-female-dataset-56 = Devon +names-rodentia-first-female-dataset-57 = Lane +names-rodentia-first-female-dataset-58 = Blair +names-rodentia-first-female-dataset-59 = Drew +names-rodentia-first-female-dataset-60 = Jesse +names-rodentia-first-female-dataset-61 = Skylar +names-rodentia-first-female-dataset-62 = Sam +names-rodentia-first-female-dataset-63 = Reese +names-rodentia-first-female-dataset-64 = Terry +names-rodentia-first-female-dataset-65 = Marley +names-rodentia-first-female-dataset-66 = Elliot +names-rodentia-first-female-dataset-67 = Harper +names-rodentia-first-female-dataset-68 = Jules +names-rodentia-first-female-dataset-69 = Ren +names-rodentia-first-female-dataset-70 = Sloane +names-rodentia-first-female-dataset-71 = Rylan +names-rodentia-first-female-dataset-72 = Sage + +# feminine names +names-rodentia-first-female-dataset-73 = Minnie +names-rodentia-first-female-dataset-74 = Daisy +names-rodentia-first-female-dataset-75 = Bella +names-rodentia-first-female-dataset-76 = Luna +names-rodentia-first-female-dataset-77 = Rosie +names-rodentia-first-female-dataset-78 = Mia +names-rodentia-first-female-dataset-79 = Lily +names-rodentia-first-female-dataset-80 = Chloe +names-rodentia-first-female-dataset-81 = Sophie +names-rodentia-first-female-dataset-82 = Ruby +names-rodentia-first-female-dataset-83 = Zoe +names-rodentia-first-female-dataset-84 = Abby +names-rodentia-first-female-dataset-85 = Ella +names-rodentia-first-female-dataset-86 = Molly +names-rodentia-first-female-dataset-87 = Lucy +names-rodentia-first-female-dataset-88 = Nala +names-rodentia-first-female-dataset-89 = Poppy +names-rodentia-first-female-dataset-90 = Grace +names-rodentia-first-female-dataset-91 = Ivy +names-rodentia-first-female-dataset-92 = Hazel +names-rodentia-first-female-dataset-93 = Emma +names-rodentia-first-female-dataset-94 = Phoebe +names-rodentia-first-female-dataset-95 = Willow +names-rodentia-first-female-dataset-96 = Tilly +names-rodentia-first-female-dataset-97 = Annie +names-rodentia-first-female-dataset-98 = Alice +names-rodentia-first-female-dataset-99 = Holly +names-rodentia-first-female-dataset-100 = Olive +names-rodentia-first-female-dataset-101 = Zoey +names-rodentia-first-female-dataset-102 = Lila +names-rodentia-first-female-dataset-103 = Pippa +names-rodentia-first-female-dataset-104 = June +names-rodentia-first-female-dataset-105 = Mabel +names-rodentia-first-female-dataset-106 = Nellie +names-rodentia-first-female-dataset-107 = Polly +names-rodentia-first-female-dataset-108 = Sadie +names-rodentia-first-female-dataset-109 = Isla + +# "surnames" +names-rodentia-first-female-dataset-110 = Bramblewood +names-rodentia-first-female-dataset-111 = Burrows +names-rodentia-first-female-dataset-112 = Burrowsford +names-rodentia-first-female-dataset-113 = Cheesetail +names-rodentia-first-female-dataset-114 = Cloverfield +names-rodentia-first-female-dataset-115 = Cloverwood +names-rodentia-first-female-dataset-116 = Ferncroft +names-rodentia-first-female-dataset-117 = Flopshire +names-rodentia-first-female-dataset-118 = Flopshire +names-rodentia-first-female-dataset-119 = Fluffbottom +names-rodentia-first-female-dataset-120 = Furrington +names-rodentia-first-female-dataset-121 = Furwell +names-rodentia-first-female-dataset-122 = Furwood +names-rodentia-first-female-dataset-123 = Gnawson +names-rodentia-first-female-dataset-124 = Linden +names-rodentia-first-female-dataset-125 = Little +names-rodentia-first-female-dataset-126 = Maplewood +names-rodentia-first-female-dataset-127 = Meadows +names-rodentia-first-female-dataset-128 = Munchford +names-rodentia-first-female-dataset-129 = Nibblesnout +names-rodentia-first-female-dataset-130 = Nibbleston +names-rodentia-first-female-dataset-131 = Nibblewood +names-rodentia-first-female-dataset-132 = Oakcroft +names-rodentia-first-female-dataset-133 = Oakley +names-rodentia-first-female-dataset-134 = Pawsbrook +names-rodentia-first-female-dataset-135 = Pawsford +names-rodentia-first-female-dataset-136 = Pawsley +names-rodentia-first-female-dataset-137 = Pawswell +names-rodentia-first-female-dataset-138 = Pawsworth +names-rodentia-first-female-dataset-139 = Scamperdale +names-rodentia-first-female-dataset-140 = Scamperford +names-rodentia-first-female-dataset-141 = Scamperley +names-rodentia-first-female-dataset-142 = Scamperwood +names-rodentia-first-female-dataset-143 = Scurryfoot +names-rodentia-first-female-dataset-144 = Scuttleby +names-rodentia-first-female-dataset-145 = Skitters +names-rodentia-first-female-dataset-146 = Stilton +names-rodentia-first-female-dataset-147 = Squeakerton +names-rodentia-first-female-dataset-148 = Squeakson +names-rodentia-first-female-dataset-149 = Squeaktooth +names-rodentia-first-female-dataset-150 = Squeakwell +names-rodentia-first-female-dataset-151 = Squeakwood +names-rodentia-first-female-dataset-152 = Tailsbury +names-rodentia-first-female-dataset-153 = Thumperton +names-rodentia-first-female-dataset-154 = Thumpford +names-rodentia-first-female-dataset-155 = Whiskerby +names-rodentia-first-female-dataset-156 = Whiskerfield +names-rodentia-first-female-dataset-157 = Whiskershire +names-rodentia-first-female-dataset-158 = Whiskersnout +names-rodentia-first-female-dataset-159 = Whiskervale + +## Last +names-rodentia-last-dataset-1 = Agile +names-rodentia-last-dataset-2 = Beady-eyed +names-rodentia-last-dataset-3 = Berry-picking +names-rodentia-last-dataset-4 = Big +names-rodentia-last-dataset-5 = Big-ears +names-rodentia-last-dataset-6 = Big-eyed +names-rodentia-last-dataset-7 = Big-heart +names-rodentia-last-dataset-8 = Big-nose +names-rodentia-last-dataset-9 = Blunt-nose +names-rodentia-last-dataset-10 = Brave +names-rodentia-last-dataset-11 = Break-neck +names-rodentia-last-dataset-12 = Bright +names-rodentia-last-dataset-13 = Bright-eyed +names-rodentia-last-dataset-14 = Cheeky +names-rodentia-last-dataset-15 = Crafty +names-rodentia-last-dataset-16 = Cunning +names-rodentia-last-dataset-17 = Curious +names-rodentia-last-dataset-18 = Day-sleeping +names-rodentia-last-dataset-19 = Eager +names-rodentia-last-dataset-20 = Fast-moving +names-rodentia-last-dataset-21 = Fast-paws +names-rodentia-last-dataset-22 = Fat +names-rodentia-last-dataset-23 = Fidgety +names-rodentia-last-dataset-24 = Food-stealing +names-rodentia-last-dataset-25 = Gentle +names-rodentia-last-dataset-26 = Great +names-rodentia-last-dataset-27 = Greedy +names-rodentia-last-dataset-28 = Grumpy +names-rodentia-last-dataset-29 = Hasty +names-rodentia-last-dataset-30 = High-jumping +names-rodentia-last-dataset-31 = Jumpy +names-rodentia-last-dataset-32 = Keen +names-rodentia-last-dataset-33 = Keen-eyes +names-rodentia-last-dataset-34 = Light-foot +names-rodentia-last-dataset-35 = Little +names-rodentia-last-dataset-36 = Long +names-rodentia-last-dataset-37 = Long-ears +names-rodentia-last-dataset-38 = Long-legged +names-rodentia-last-dataset-39 = Long-snout +names-rodentia-last-dataset-40 = Long-tail +names-rodentia-last-dataset-41 = Long-tooth +names-rodentia-last-dataset-42 = Night-hunting +names-rodentia-last-dataset-43 = Nimble +names-rodentia-last-dataset-44 = No-eyes +names-rodentia-last-dataset-45 = No-tail +names-rodentia-last-dataset-46 = Nosy +names-rodentia-last-dataset-47 = Quick-footed +names-rodentia-last-dataset-48 = Quick-wits +names-rodentia-last-dataset-49 = Quiet +names-rodentia-last-dataset-50 = Ravenous +names-rodentia-last-dataset-51 = Restless +names-rodentia-last-dataset-52 = Rough +names-rodentia-last-dataset-53 = Round-belly +names-rodentia-last-dataset-54 = Rowdy +names-rodentia-last-dataset-55 = Seed-stashing +names-rodentia-last-dataset-56 = Shadow-dwelling +names-rodentia-last-dataset-57 = Sharp +names-rodentia-last-dataset-58 = Sharp-clawed +names-rodentia-last-dataset-59 = Shifty +names-rodentia-last-dataset-60 = Shiny-eyes +names-rodentia-last-dataset-61 = Short-ears +names-rodentia-last-dataset-62 = Short-legged +names-rodentia-last-dataset-63 = Short-snout +names-rodentia-last-dataset-64 = Short-tail +names-rodentia-last-dataset-65 = Shy +names-rodentia-last-dataset-66 = Silent +names-rodentia-last-dataset-67 = Silver-tongue +names-rodentia-last-dataset-68 = Skittish +names-rodentia-last-dataset-69 = Small-ears +names-rodentia-last-dataset-70 = Small-nose +names-rodentia-last-dataset-71 = Sneaky +names-rodentia-last-dataset-72 = Soft-fur +names-rodentia-last-dataset-73 = Soft-paws +names-rodentia-last-dataset-74 = Squeaking +names-rodentia-last-dataset-75 = Squeaky +names-rodentia-last-dataset-76 = Stout +names-rodentia-last-dataset-77 = Stubborn +names-rodentia-last-dataset-78 = Stubby +names-rodentia-last-dataset-79 = Sweet +names-rodentia-last-dataset-80 = Swift +names-rodentia-last-dataset-81 = Thick-fur +names-rodentia-last-dataset-82 = Thick-skin +names-rodentia-last-dataset-83 = Thieving +names-rodentia-last-dataset-84 = Trash-eating +names-rodentia-last-dataset-85 = Tunnel-building +names-rodentia-last-dataset-86 = Whisker-twitching diff --git a/Resources/Locale/en-US/_DV/datasets/names/vulpkanin.ftl b/Resources/Locale/en-US/_DV/datasets/names/vulpkanin.ftl new file mode 100644 index 0000000000..69c5b80e89 --- /dev/null +++ b/Resources/Locale/en-US/_DV/datasets/names/vulpkanin.ftl @@ -0,0 +1,947 @@ +## Male, First +names-vulpkanin-first-male-dataset-1 = Aaron +names-vulpkanin-first-male-dataset-2 = Abe +names-vulpkanin-first-male-dataset-3 = Abraham +names-vulpkanin-first-male-dataset-4 = Adelger +names-vulpkanin-first-male-dataset-5 = Adolar +names-vulpkanin-first-male-dataset-6 = Albuin +names-vulpkanin-first-male-dataset-7 = Alexander +names-vulpkanin-first-male-dataset-8 = Alhazred +names-vulpkanin-first-male-dataset-9 = Amren +names-vulpkanin-first-male-dataset-10 = Andre +names-vulpkanin-first-male-dataset-11 = Andreas +names-vulpkanin-first-male-dataset-12 = Aneurin +names-vulpkanin-first-male-dataset-13 = Angelo +names-vulpkanin-first-male-dataset-14 = Ansel +names-vulpkanin-first-male-dataset-15 = Ares +names-vulpkanin-first-male-dataset-16 = Armon +names-vulpkanin-first-male-dataset-17 = Arnet +names-vulpkanin-first-male-dataset-18 = Arric +names-vulpkanin-first-male-dataset-19 = Ash +names-vulpkanin-first-male-dataset-20 = Aspen +names-vulpkanin-first-male-dataset-21 = Atlas +names-vulpkanin-first-male-dataset-22 = August +names-vulpkanin-first-male-dataset-23 = Axel +names-vulpkanin-first-male-dataset-24 = Barald +names-vulpkanin-first-male-dataset-25 = Barrett +names-vulpkanin-first-male-dataset-26 = Basil +names-vulpkanin-first-male-dataset-27 = Bastian +names-vulpkanin-first-male-dataset-28 = Baxter +names-vulpkanin-first-male-dataset-29 = Ben +names-vulpkanin-first-male-dataset-30 = Benjamin +names-vulpkanin-first-male-dataset-31 = Benny +names-vulpkanin-first-male-dataset-32 = Berthold +names-vulpkanin-first-male-dataset-33 = Blake +names-vulpkanin-first-male-dataset-34 = Bo +names-vulpkanin-first-male-dataset-35 = Bolgan +names-vulpkanin-first-male-dataset-36 = Bosche +names-vulpkanin-first-male-dataset-37 = Brutus +names-vulpkanin-first-male-dataset-38 = Buck +names-vulpkanin-first-male-dataset-39 = Caden +names-vulpkanin-first-male-dataset-40 = Cadog +names-vulpkanin-first-male-dataset-41 = Caelum +names-vulpkanin-first-male-dataset-42 = Calvin +names-vulpkanin-first-male-dataset-43 = Camus +names-vulpkanin-first-male-dataset-44 = Caradoc +names-vulpkanin-first-male-dataset-45 = Carter +names-vulpkanin-first-male-dataset-46 = Casey +names-vulpkanin-first-male-dataset-47 = Caspar +names-vulpkanin-first-male-dataset-48 = Castor +names-vulpkanin-first-male-dataset-49 = Cayo +names-vulpkanin-first-male-dataset-50 = Cedrik +names-vulpkanin-first-male-dataset-51 = Chandler +names-vulpkanin-first-male-dataset-52 = Charles +names-vulpkanin-first-male-dataset-53 = Charlie +names-vulpkanin-first-male-dataset-54 = Charon +names-vulpkanin-first-male-dataset-55 = Christian +names-vulpkanin-first-male-dataset-56 = Claude +names-vulpkanin-first-male-dataset-57 = Clayton +names-vulpkanin-first-male-dataset-58 = Clifton +names-vulpkanin-first-male-dataset-59 = Clive +names-vulpkanin-first-male-dataset-60 = Clyde +names-vulpkanin-first-male-dataset-61 = Colby +names-vulpkanin-first-male-dataset-62 = Cole +names-vulpkanin-first-male-dataset-63 = Colin +names-vulpkanin-first-male-dataset-64 = Colton +names-vulpkanin-first-male-dataset-65 = Conner +names-vulpkanin-first-male-dataset-66 = Connor +names-vulpkanin-first-male-dataset-67 = Conor +names-vulpkanin-first-male-dataset-68 = Cooper +names-vulpkanin-first-male-dataset-69 = Craig +names-vulpkanin-first-male-dataset-70 = Curtis +names-vulpkanin-first-male-dataset-71 = Dane +names-vulpkanin-first-male-dataset-72 = Dannan +names-vulpkanin-first-male-dataset-73 = Deimos +names-vulpkanin-first-male-dataset-74 = Dennis +names-vulpkanin-first-male-dataset-75 = Derek +names-vulpkanin-first-male-dataset-76 = Derion +names-vulpkanin-first-male-dataset-77 = Derric +names-vulpkanin-first-male-dataset-78 = Deryn +names-vulpkanin-first-male-dataset-79 = Desmond +names-vulpkanin-first-male-dataset-80 = Dietmar +names-vulpkanin-first-male-dataset-81 = Dirge +names-vulpkanin-first-male-dataset-82 = Dominic +names-vulpkanin-first-male-dataset-83 = Don +names-vulpkanin-first-male-dataset-84 = Draven +names-vulpkanin-first-male-dataset-85 = Duane +names-vulpkanin-first-male-dataset-86 = Duke +names-vulpkanin-first-male-dataset-87 = Dunstan +names-vulpkanin-first-male-dataset-88 = Dylan +names-vulpkanin-first-male-dataset-89 = Eckhard +names-vulpkanin-first-male-dataset-90 = Eckhart +names-vulpkanin-first-male-dataset-91 = Edgar +names-vulpkanin-first-male-dataset-92 = Elfyn +names-vulpkanin-first-male-dataset-93 = Emanuel +names-vulpkanin-first-male-dataset-94 = Embry +names-vulpkanin-first-male-dataset-95 = Emery +names-vulpkanin-first-male-dataset-96 = Erik +names-vulpkanin-first-male-dataset-97 = Ernst +names-vulpkanin-first-male-dataset-98 = Ferdinand +names-vulpkanin-first-male-dataset-99 = Finch +names-vulpkanin-first-male-dataset-100 = Finn +names-vulpkanin-first-male-dataset-101 = Flik +names-vulpkanin-first-male-dataset-102 = Flint +names-vulpkanin-first-male-dataset-103 = Florian +names-vulpkanin-first-male-dataset-104 = Floyd +names-vulpkanin-first-male-dataset-105 = Francis +names-vulpkanin-first-male-dataset-106 = Franz +names-vulpkanin-first-male-dataset-107 = Fynn +names-vulpkanin-first-male-dataset-108 = Gaius +names-vulpkanin-first-male-dataset-109 = Garrett +names-vulpkanin-first-male-dataset-110 = Garske +names-vulpkanin-first-male-dataset-111 = Gary +names-vulpkanin-first-male-dataset-112 = Gavin +names-vulpkanin-first-male-dataset-113 = Gavner +names-vulpkanin-first-male-dataset-114 = Gerome +names-vulpkanin-first-male-dataset-115 = Gerrant +names-vulpkanin-first-male-dataset-116 = Ghirahim +names-vulpkanin-first-male-dataset-117 = Gillian +names-vulpkanin-first-male-dataset-118 = Glen +names-vulpkanin-first-male-dataset-119 = Gordon +names-vulpkanin-first-male-dataset-120 = Gorudo +names-vulpkanin-first-male-dataset-121 = Grant +names-vulpkanin-first-male-dataset-122 = Griffin +names-vulpkanin-first-male-dataset-123 = Grum +names-vulpkanin-first-male-dataset-124 = Hal +names-vulpkanin-first-male-dataset-125 = Hanklin +names-vulpkanin-first-male-dataset-126 = Harald +names-vulpkanin-first-male-dataset-127 = Harley +names-vulpkanin-first-male-dataset-128 = Hauser +names-vulpkanin-first-male-dataset-129 = Heath +names-vulpkanin-first-male-dataset-130 = Hector +names-vulpkanin-first-male-dataset-131 = Heribert +names-vulpkanin-first-male-dataset-132 = Hermes +names-vulpkanin-first-male-dataset-133 = Hudson +names-vulpkanin-first-male-dataset-134 = Hugo +names-vulpkanin-first-male-dataset-135 = Hunter +names-vulpkanin-first-male-dataset-136 = Hywel +names-vulpkanin-first-male-dataset-137 = Ingolf +names-vulpkanin-first-male-dataset-138 = Inigo +names-vulpkanin-first-male-dataset-139 = Ioan +names-vulpkanin-first-male-dataset-140 = Irving +names-vulpkanin-first-male-dataset-141 = Isaac +names-vulpkanin-first-male-dataset-142 = Isaak +names-vulpkanin-first-male-dataset-143 = Ivaylo +names-vulpkanin-first-male-dataset-144 = Iver +names-vulpkanin-first-male-dataset-145 = Jacob +names-vulpkanin-first-male-dataset-146 = Jaime +names-vulpkanin-first-male-dataset-147 = Jake +names-vulpkanin-first-male-dataset-148 = Janik +names-vulpkanin-first-male-dataset-149 = Jared +names-vulpkanin-first-male-dataset-150 = Jarom +names-vulpkanin-first-male-dataset-151 = Jarvald +names-vulpkanin-first-male-dataset-152 = Jason +names-vulpkanin-first-male-dataset-153 = Javier +names-vulpkanin-first-male-dataset-154 = Jeremiah +names-vulpkanin-first-male-dataset-155 = Jerome +names-vulpkanin-first-male-dataset-156 = Jesse +names-vulpkanin-first-male-dataset-157 = Jett +names-vulpkanin-first-male-dataset-158 = Jim +names-vulpkanin-first-male-dataset-159 = Jimba +names-vulpkanin-first-male-dataset-160 = Jimmy +names-vulpkanin-first-male-dataset-161 = Joe +names-vulpkanin-first-male-dataset-162 = Jonah +names-vulpkanin-first-male-dataset-163 = Jones +names-vulpkanin-first-male-dataset-164 = Joshua +names-vulpkanin-first-male-dataset-165 = Josua +names-vulpkanin-first-male-dataset-166 = Julian +names-vulpkanin-first-male-dataset-167 = Kai +names-vulpkanin-first-male-dataset-168 = Kaleb +names-vulpkanin-first-male-dataset-169 = Kear +names-vulpkanin-first-male-dataset-170 = Kenneth +names-vulpkanin-first-male-dataset-171 = Kenway +names-vulpkanin-first-male-dataset-172 = Kenyon +names-vulpkanin-first-male-dataset-173 = Kevin +names-vulpkanin-first-male-dataset-174 = Kirk +names-vulpkanin-first-male-dataset-175 = Klaus +names-vulpkanin-first-male-dataset-176 = Kodan +names-vulpkanin-first-male-dataset-177 = Konrad +names-vulpkanin-first-male-dataset-178 = Kortan +names-vulpkanin-first-male-dataset-179 = Kurt +names-vulpkanin-first-male-dataset-180 = Kyle +names-vulpkanin-first-male-dataset-181 = Lance +names-vulpkanin-first-male-dataset-182 = Landon +names-vulpkanin-first-male-dataset-183 = Larc +names-vulpkanin-first-male-dataset-184 = Larry +names-vulpkanin-first-male-dataset-185 = Lars +names-vulpkanin-first-male-dataset-186 = Leander +names-vulpkanin-first-male-dataset-187 = Lennard +names-vulpkanin-first-male-dataset-188 = Leo +names-vulpkanin-first-male-dataset-189 = Liam +names-vulpkanin-first-male-dataset-190 = Linus +names-vulpkanin-first-male-dataset-191 = Logan +names-vulpkanin-first-male-dataset-192 = Loki +names-vulpkanin-first-male-dataset-193 = Lope +names-vulpkanin-first-male-dataset-194 = Lorenz +names-vulpkanin-first-male-dataset-195 = Lou +names-vulpkanin-first-male-dataset-196 = Louis +names-vulpkanin-first-male-dataset-197 = Lovel +names-vulpkanin-first-male-dataset-198 = Luc +names-vulpkanin-first-male-dataset-199 = Lucas +names-vulpkanin-first-male-dataset-200 = Luka +names-vulpkanin-first-male-dataset-201 = Luke +names-vulpkanin-first-male-dataset-202 = Lykaon +names-vulpkanin-first-male-dataset-203 = Magnus +names-vulpkanin-first-male-dataset-204 = Maik +names-vulpkanin-first-male-dataset-205 = Manuel +names-vulpkanin-first-male-dataset-206 = Marc +names-vulpkanin-first-male-dataset-207 = Marion +names-vulpkanin-first-male-dataset-208 = Mariston +names-vulpkanin-first-male-dataset-209 = Marlowe +names-vulpkanin-first-male-dataset-210 = Marmon +names-vulpkanin-first-male-dataset-211 = Marshall +names-vulpkanin-first-male-dataset-212 = Martin +names-vulpkanin-first-male-dataset-213 = Martyn +names-vulpkanin-first-male-dataset-214 = Marvin +names-vulpkanin-first-male-dataset-215 = Mason +names-vulpkanin-first-male-dataset-216 = Matthias +names-vulpkanin-first-male-dataset-217 = Maynord +names-vulpkanin-first-male-dataset-218 = Meic +names-vulpkanin-first-male-dataset-219 = Melchior +names-vulpkanin-first-male-dataset-220 = Meyer +names-vulpkanin-first-male-dataset-221 = Micah +names-vulpkanin-first-male-dataset-222 = Michael +names-vulpkanin-first-male-dataset-223 = Mitchell +names-vulpkanin-first-male-dataset-224 = Moe +names-vulpkanin-first-male-dataset-225 = Mordecai +names-vulpkanin-first-male-dataset-226 = Morten +names-vulpkanin-first-male-dataset-227 = Mourgent +names-vulpkanin-first-male-dataset-228 = Nathaniel +names-vulpkanin-first-male-dataset-229 = Nero +names-vulpkanin-first-male-dataset-230 = Nick +names-vulpkanin-first-male-dataset-231 = Nicolas +names-vulpkanin-first-male-dataset-232 = Niko +names-vulpkanin-first-male-dataset-233 = Nils +names-vulpkanin-first-male-dataset-234 = Noah +names-vulpkanin-first-male-dataset-235 = Oberon +names-vulpkanin-first-male-dataset-236 = Ole +names-vulpkanin-first-male-dataset-237 = Oscar +names-vulpkanin-first-male-dataset-238 = Osiris +names-vulpkanin-first-male-dataset-239 = Osmon +names-vulpkanin-first-male-dataset-240 = Osther +names-vulpkanin-first-male-dataset-241 = Otsoa +names-vulpkanin-first-male-dataset-242 = Otto +names-vulpkanin-first-male-dataset-243 = Parker +names-vulpkanin-first-male-dataset-244 = Paul +names-vulpkanin-first-male-dataset-245 = Pavel +names-vulpkanin-first-male-dataset-246 = Perry +names-vulpkanin-first-male-dataset-247 = Perseus +names-vulpkanin-first-male-dataset-248 = Philip +names-vulpkanin-first-male-dataset-249 = Philipp +names-vulpkanin-first-male-dataset-250 = Pierce +names-vulpkanin-first-male-dataset-251 = Porter +names-vulpkanin-first-male-dataset-252 = Preston +names-vulpkanin-first-male-dataset-253 = Quelii +names-vulpkanin-first-male-dataset-254 = Ralph +names-vulpkanin-first-male-dataset-255 = Randall +names-vulpkanin-first-male-dataset-256 = Randolf +names-vulpkanin-first-male-dataset-257 = Ranulf +names-vulpkanin-first-male-dataset-258 = Raoul +names-vulpkanin-first-male-dataset-259 = Raul +names-vulpkanin-first-male-dataset-260 = Reade +names-vulpkanin-first-male-dataset-261 = Red +names-vulpkanin-first-male-dataset-262 = Rhain +names-vulpkanin-first-male-dataset-263 = Rhydian +names-vulpkanin-first-male-dataset-264 = Rhydwyn +names-vulpkanin-first-male-dataset-265 = Rhys +names-vulpkanin-first-male-dataset-266 = Rico +names-vulpkanin-first-male-dataset-267 = Rigel +names-vulpkanin-first-male-dataset-268 = Rob +names-vulpkanin-first-male-dataset-269 = Robin +names-vulpkanin-first-male-dataset-270 = Rocky +names-vulpkanin-first-male-dataset-271 = Roderic +names-vulpkanin-first-male-dataset-272 = Roger +names-vulpkanin-first-male-dataset-273 = Roland +names-vulpkanin-first-male-dataset-274 = Rolayne +names-vulpkanin-first-male-dataset-275 = Roniston +names-vulpkanin-first-male-dataset-276 = Ronnet +names-vulpkanin-first-male-dataset-277 = Roscoe +names-vulpkanin-first-male-dataset-278 = Roy +names-vulpkanin-first-male-dataset-279 = Rudy +names-vulpkanin-first-male-dataset-280 = Rukheim +names-vulpkanin-first-male-dataset-281 = Rupert +names-vulpkanin-first-male-dataset-282 = Russell +names-vulpkanin-first-male-dataset-283 = Ryan +names-vulpkanin-first-male-dataset-284 = Samuel +names-vulpkanin-first-male-dataset-285 = Sawyer +names-vulpkanin-first-male-dataset-286 = Scott +names-vulpkanin-first-male-dataset-287 = Severin +names-vulpkanin-first-male-dataset-288 = Shilo +names-vulpkanin-first-male-dataset-289 = Silver +names-vulpkanin-first-male-dataset-290 = Silvester +names-vulpkanin-first-male-dataset-291 = Sirius +names-vulpkanin-first-male-dataset-292 = Slate +names-vulpkanin-first-male-dataset-293 = Sol +names-vulpkanin-first-male-dataset-294 = Sriscoll +names-vulpkanin-first-male-dataset-295 = Stefan +names-vulpkanin-first-male-dataset-296 = Stephen +names-vulpkanin-first-male-dataset-297 = Sterling +names-vulpkanin-first-male-dataset-298 = Steven +names-vulpkanin-first-male-dataset-299 = Stone +names-vulpkanin-first-male-dataset-300 = Sullivan +names-vulpkanin-first-male-dataset-301 = Taylor +names-vulpkanin-first-male-dataset-302 = Ted +names-vulpkanin-first-male-dataset-303 = Teddy +names-vulpkanin-first-male-dataset-304 = Terry +names-vulpkanin-first-male-dataset-305 = Themis +names-vulpkanin-first-male-dataset-306 = Theo +names-vulpkanin-first-male-dataset-307 = Theodore +names-vulpkanin-first-male-dataset-308 = Thyrius +names-vulpkanin-first-male-dataset-309 = Tibarn +names-vulpkanin-first-male-dataset-310 = Tim +names-vulpkanin-first-male-dataset-311 = Tizian +names-vulpkanin-first-male-dataset-312 = Torben +names-vulpkanin-first-male-dataset-313 = Torsten +names-vulpkanin-first-male-dataset-314 = Trevor +names-vulpkanin-first-male-dataset-315 = Trion +names-vulpkanin-first-male-dataset-316 = Tristan +names-vulpkanin-first-male-dataset-317 = Troy +names-vulpkanin-first-male-dataset-318 = Trystan +names-vulpkanin-first-male-dataset-319 = Turner +names-vulpkanin-first-male-dataset-320 = Tybalt +names-vulpkanin-first-male-dataset-321 = Tyr +names-vulpkanin-first-male-dataset-322 = Ulbrecht +names-vulpkanin-first-male-dataset-323 = Ulrick +names-vulpkanin-first-male-dataset-324 = Valentine +names-vulpkanin-first-male-dataset-325 = Vallin +names-vulpkanin-first-male-dataset-326 = Veit +names-vulpkanin-first-male-dataset-327 = Velvel +names-vulpkanin-first-male-dataset-328 = Vesper +names-vulpkanin-first-male-dataset-329 = Victor +names-vulpkanin-first-male-dataset-330 = Vincent +names-vulpkanin-first-male-dataset-331 = Vinzenz +names-vulpkanin-first-male-dataset-332 = Vuk +names-vulpkanin-first-male-dataset-333 = Walter +names-vulpkanin-first-male-dataset-334 = Wayne +names-vulpkanin-first-male-dataset-335 = Weizen +names-vulpkanin-first-male-dataset-336 = Will +names-vulpkanin-first-male-dataset-337 = William +names-vulpkanin-first-male-dataset-338 = Wulfrun +names-vulpkanin-first-male-dataset-339 = Xaver +names-vulpkanin-first-male-dataset-340 = Yannik +names-vulpkanin-first-male-dataset-341 = York +names-vulpkanin-first-male-dataset-342 = Zac +names-vulpkanin-first-male-dataset-343 = Zacharias +names-vulpkanin-first-male-dataset-344 = Zeb +names-vulpkanin-first-male-dataset-345 = Zegrath + +## Female, First +names-vulpkanin-first-female-dataset-1 = Abby +names-vulpkanin-first-female-dataset-2 = Acantha +names-vulpkanin-first-female-dataset-3 = Addilyn +names-vulpkanin-first-female-dataset-4 = Adela +names-vulpkanin-first-female-dataset-5 = Adele +names-vulpkanin-first-female-dataset-6 = Aderyn +names-vulpkanin-first-female-dataset-7 = Adley +names-vulpkanin-first-female-dataset-8 = Adriana +names-vulpkanin-first-female-dataset-9 = Aerona +names-vulpkanin-first-female-dataset-10 = Aileen +names-vulpkanin-first-female-dataset-11 = Alanis +names-vulpkanin-first-female-dataset-12 = Alberta +names-vulpkanin-first-female-dataset-13 = Alex +names-vulpkanin-first-female-dataset-14 = Alexandra +names-vulpkanin-first-female-dataset-15 = Alice +names-vulpkanin-first-female-dataset-16 = Alma +names-vulpkanin-first-female-dataset-17 = Amalie +names-vulpkanin-first-female-dataset-18 = Andromeda +names-vulpkanin-first-female-dataset-19 = Angel +names-vulpkanin-first-female-dataset-20 = Ann +names-vulpkanin-first-female-dataset-21 = Anna +names-vulpkanin-first-female-dataset-22 = Anne +names-vulpkanin-first-female-dataset-23 = Annie +names-vulpkanin-first-female-dataset-24 = Ariel +names-vulpkanin-first-female-dataset-25 = Arya +names-vulpkanin-first-female-dataset-26 = Astraea +names-vulpkanin-first-female-dataset-27 = Astrid +names-vulpkanin-first-female-dataset-28 = Athena +names-vulpkanin-first-female-dataset-29 = Audra +names-vulpkanin-first-female-dataset-30 = Aura +names-vulpkanin-first-female-dataset-31 = Aurora +names-vulpkanin-first-female-dataset-32 = Avice +names-vulpkanin-first-female-dataset-33 = Bailey +names-vulpkanin-first-female-dataset-34 = Barbara +names-vulpkanin-first-female-dataset-35 = Beatrix +names-vulpkanin-first-female-dataset-36 = Belinda +names-vulpkanin-first-female-dataset-37 = Bellatrix +names-vulpkanin-first-female-dataset-38 = Belle +names-vulpkanin-first-female-dataset-39 = Bianca +names-vulpkanin-first-female-dataset-40 = Braelynn +names-vulpkanin-first-female-dataset-41 = Brea +names-vulpkanin-first-female-dataset-42 = Bree +names-vulpkanin-first-female-dataset-43 = Brooke +names-vulpkanin-first-female-dataset-44 = Brunhilde +names-vulpkanin-first-female-dataset-45 = Caitlin +names-vulpkanin-first-female-dataset-46 = Callisto +names-vulpkanin-first-female-dataset-47 = Camden +names-vulpkanin-first-female-dataset-48 = Camilla +names-vulpkanin-first-female-dataset-49 = Candra +names-vulpkanin-first-female-dataset-50 = Carina +names-vulpkanin-first-female-dataset-51 = Carletta +names-vulpkanin-first-female-dataset-52 = Carline +names-vulpkanin-first-female-dataset-53 = Carman +names-vulpkanin-first-female-dataset-54 = Caroline +names-vulpkanin-first-female-dataset-55 = Carys +names-vulpkanin-first-female-dataset-56 = Cassandra +names-vulpkanin-first-female-dataset-57 = Cassiopeia +names-vulpkanin-first-female-dataset-58 = Catlyn +names-vulpkanin-first-female-dataset-59 = Celeste +names-vulpkanin-first-female-dataset-60 = Celina +names-vulpkanin-first-female-dataset-61 = Ceres +names-vulpkanin-first-female-dataset-62 = Cerian +names-vulpkanin-first-female-dataset-63 = Charlotte +names-vulpkanin-first-female-dataset-64 = Chelle +names-vulpkanin-first-female-dataset-65 = Chloe +names-vulpkanin-first-female-dataset-66 = Cicely +names-vulpkanin-first-female-dataset-67 = Clara +names-vulpkanin-first-female-dataset-68 = Clarice +names-vulpkanin-first-female-dataset-69 = Claudia +names-vulpkanin-first-female-dataset-70 = Cordelia +names-vulpkanin-first-female-dataset-71 = Cornelia +names-vulpkanin-first-female-dataset-72 = Cressida +names-vulpkanin-first-female-dataset-73 = Cybele +names-vulpkanin-first-female-dataset-74 = Dagmar +names-vulpkanin-first-female-dataset-75 = Daisy +names-vulpkanin-first-female-dataset-76 = Dakota +names-vulpkanin-first-female-dataset-77 = Daphne +names-vulpkanin-first-female-dataset-78 = Daria +names-vulpkanin-first-female-dataset-79 = Darla +names-vulpkanin-first-female-dataset-80 = Dawn +names-vulpkanin-first-female-dataset-81 = Deidra +names-vulpkanin-first-female-dataset-82 = Deja +names-vulpkanin-first-female-dataset-83 = Delilah +names-vulpkanin-first-female-dataset-84 = Delphine +names-vulpkanin-first-female-dataset-85 = Delyth +names-vulpkanin-first-female-dataset-86 = Demetra +names-vulpkanin-first-female-dataset-87 = Dezra +names-vulpkanin-first-female-dataset-88 = Dinah +names-vulpkanin-first-female-dataset-89 = Dora +names-vulpkanin-first-female-dataset-90 = Effie +names-vulpkanin-first-female-dataset-91 = Eiddwen +names-vulpkanin-first-female-dataset-92 = Elaine +names-vulpkanin-first-female-dataset-93 = Elara +names-vulpkanin-first-female-dataset-94 = Eleanor +names-vulpkanin-first-female-dataset-95 = Eliana +names-vulpkanin-first-female-dataset-96 = Elise +names-vulpkanin-first-female-dataset-97 = Ellen +names-vulpkanin-first-female-dataset-98 = Elsa +names-vulpkanin-first-female-dataset-99 = Emilia +names-vulpkanin-first-female-dataset-100 = Emily +names-vulpkanin-first-female-dataset-101 = Emma +names-vulpkanin-first-female-dataset-102 = Emmie +names-vulpkanin-first-female-dataset-103 = Emmy +names-vulpkanin-first-female-dataset-104 = Ester +names-vulpkanin-first-female-dataset-105 = Esther +names-vulpkanin-first-female-dataset-106 = Eva +names-vulpkanin-first-female-dataset-107 = Fadila +names-vulpkanin-first-female-dataset-108 = Farren +names-vulpkanin-first-female-dataset-109 = Fay +names-vulpkanin-first-female-dataset-110 = Felita +names-vulpkanin-first-female-dataset-111 = Felizia +names-vulpkanin-first-female-dataset-112 = Fenella +names-vulpkanin-first-female-dataset-113 = Fleur +names-vulpkanin-first-female-dataset-114 = Francesca +names-vulpkanin-first-female-dataset-115 = Freya +names-vulpkanin-first-female-dataset-116 = Garnet +names-vulpkanin-first-female-dataset-117 = Ginger +names-vulpkanin-first-female-dataset-118 = Grace +names-vulpkanin-first-female-dataset-119 = Gracie +names-vulpkanin-first-female-dataset-120 = Gwen +names-vulpkanin-first-female-dataset-121 = Hadley +names-vulpkanin-first-female-dataset-122 = Hafren +names-vulpkanin-first-female-dataset-123 = Halley +names-vulpkanin-first-female-dataset-124 = Hannah +names-vulpkanin-first-female-dataset-125 = Harlyn +names-vulpkanin-first-female-dataset-126 = Harmony +names-vulpkanin-first-female-dataset-127 = Harper +names-vulpkanin-first-female-dataset-128 = Hazel +names-vulpkanin-first-female-dataset-129 = Helen +names-vulpkanin-first-female-dataset-130 = Helena +names-vulpkanin-first-female-dataset-131 = Helene +names-vulpkanin-first-female-dataset-132 = Hilda +names-vulpkanin-first-female-dataset-133 = Holly +names-vulpkanin-first-female-dataset-134 = Honey +names-vulpkanin-first-female-dataset-135 = Hope +names-vulpkanin-first-female-dataset-136 = Idonea +names-vulpkanin-first-female-dataset-137 = Igna +names-vulpkanin-first-female-dataset-138 = Imogen +names-vulpkanin-first-female-dataset-139 = Ina +names-vulpkanin-first-female-dataset-140 = Iona +names-vulpkanin-first-female-dataset-141 = Irene +names-vulpkanin-first-female-dataset-142 = Irma +names-vulpkanin-first-female-dataset-143 = Isabel +names-vulpkanin-first-female-dataset-144 = Isabella +names-vulpkanin-first-female-dataset-145 = Ivy +names-vulpkanin-first-female-dataset-146 = Jacqueline +names-vulpkanin-first-female-dataset-147 = Jaelyn +names-vulpkanin-first-female-dataset-148 = Jana +names-vulpkanin-first-female-dataset-149 = Janice +names-vulpkanin-first-female-dataset-150 = Janis +names-vulpkanin-first-female-dataset-151 = Jayene +names-vulpkanin-first-female-dataset-152 = Jazzlyn +names-vulpkanin-first-female-dataset-153 = Jeane +names-vulpkanin-first-female-dataset-154 = Jennete +names-vulpkanin-first-female-dataset-155 = Jennifer +names-vulpkanin-first-female-dataset-156 = Jill +names-vulpkanin-first-female-dataset-157 = Jo +names-vulpkanin-first-female-dataset-158 = Johanna +names-vulpkanin-first-female-dataset-159 = Joslyn +names-vulpkanin-first-female-dataset-160 = Juliana +names-vulpkanin-first-female-dataset-161 = Juliet +names-vulpkanin-first-female-dataset-162 = June +names-vulpkanin-first-female-dataset-163 = Kaia +names-vulpkanin-first-female-dataset-164 = Kali +names-vulpkanin-first-female-dataset-165 = Karlene +names-vulpkanin-first-female-dataset-166 = Kathryn +names-vulpkanin-first-female-dataset-167 = Kenna +names-vulpkanin-first-female-dataset-168 = Kiera +names-vulpkanin-first-female-dataset-169 = Kiley +names-vulpkanin-first-female-dataset-170 = Kimberly +names-vulpkanin-first-female-dataset-171 = Kivela +names-vulpkanin-first-female-dataset-172 = Lacey +names-vulpkanin-first-female-dataset-173 = Lachelle +names-vulpkanin-first-female-dataset-174 = Lacy +names-vulpkanin-first-female-dataset-175 = Larissa +names-vulpkanin-first-female-dataset-176 = Laura +names-vulpkanin-first-female-dataset-177 = Layla +names-vulpkanin-first-female-dataset-178 = Lena +names-vulpkanin-first-female-dataset-179 = Leonor +names-vulpkanin-first-female-dataset-180 = Leslie +names-vulpkanin-first-female-dataset-181 = Lexi +names-vulpkanin-first-female-dataset-182 = Liana +names-vulpkanin-first-female-dataset-183 = Liani +names-vulpkanin-first-female-dataset-184 = Lianne +names-vulpkanin-first-female-dataset-185 = Liesel +names-vulpkanin-first-female-dataset-186 = Lili +names-vulpkanin-first-female-dataset-187 = Liliwen +names-vulpkanin-first-female-dataset-188 = Lilly +names-vulpkanin-first-female-dataset-189 = Linda +names-vulpkanin-first-female-dataset-190 = Lola +names-vulpkanin-first-female-dataset-191 = Lona +names-vulpkanin-first-female-dataset-192 = Lorelai +names-vulpkanin-first-female-dataset-193 = Lorelei +names-vulpkanin-first-female-dataset-194 = Luise +names-vulpkanin-first-female-dataset-195 = Lulu +names-vulpkanin-first-female-dataset-196 = Luna +names-vulpkanin-first-female-dataset-197 = Lycia +names-vulpkanin-first-female-dataset-198 = Lyn +names-vulpkanin-first-female-dataset-199 = Mabyn +names-vulpkanin-first-female-dataset-200 = Madeleine +names-vulpkanin-first-female-dataset-201 = Maeve +names-vulpkanin-first-female-dataset-202 = Magdalene +names-vulpkanin-first-female-dataset-203 = Maggie +names-vulpkanin-first-female-dataset-204 = Maia +names-vulpkanin-first-female-dataset-205 = Maragaret +names-vulpkanin-first-female-dataset-206 = Margarethe +names-vulpkanin-first-female-dataset-207 = Mariah +names-vulpkanin-first-female-dataset-208 = Mariam +names-vulpkanin-first-female-dataset-209 = Marilyn +names-vulpkanin-first-female-dataset-210 = Marina +names-vulpkanin-first-female-dataset-211 = Marisole +names-vulpkanin-first-female-dataset-212 = Marivel +names-vulpkanin-first-female-dataset-213 = Marley +names-vulpkanin-first-female-dataset-214 = Marni +names-vulpkanin-first-female-dataset-215 = Marrie +names-vulpkanin-first-female-dataset-216 = Martina +names-vulpkanin-first-female-dataset-217 = Mary +names-vulpkanin-first-female-dataset-218 = Mazelina +names-vulpkanin-first-female-dataset-219 = Meda +names-vulpkanin-first-female-dataset-220 = Medea +names-vulpkanin-first-female-dataset-221 = Mei +names-vulpkanin-first-female-dataset-222 = Melania +names-vulpkanin-first-female-dataset-223 = Melanie +names-vulpkanin-first-female-dataset-224 = Melody +names-vulpkanin-first-female-dataset-225 = Mercedes +names-vulpkanin-first-female-dataset-226 = Merle +names-vulpkanin-first-female-dataset-227 = Meryl +names-vulpkanin-first-female-dataset-228 = Mia +names-vulpkanin-first-female-dataset-229 = Michelle +names-vulpkanin-first-female-dataset-230 = Mila +names-vulpkanin-first-female-dataset-231 = Millie +names-vulpkanin-first-female-dataset-232 = Mindy +names-vulpkanin-first-female-dataset-233 = Miranda +names-vulpkanin-first-female-dataset-234 = Missy +names-vulpkanin-first-female-dataset-235 = Misty +names-vulpkanin-first-female-dataset-236 = Mona +names-vulpkanin-first-female-dataset-237 = Morgan +names-vulpkanin-first-female-dataset-238 = Morgana +names-vulpkanin-first-female-dataset-239 = Morrigan +names-vulpkanin-first-female-dataset-240 = Morticia +names-vulpkanin-first-female-dataset-241 = Nadia +names-vulpkanin-first-female-dataset-242 = Nadine +names-vulpkanin-first-female-dataset-243 = Nessa +names-vulpkanin-first-female-dataset-244 = Nia +names-vulpkanin-first-female-dataset-245 = Nicole +names-vulpkanin-first-female-dataset-246 = Nikki +names-vulpkanin-first-female-dataset-247 = Nimah +names-vulpkanin-first-female-dataset-248 = Nina +names-vulpkanin-first-female-dataset-249 = Norma +names-vulpkanin-first-female-dataset-250 = Nova +names-vulpkanin-first-female-dataset-251 = Olive +names-vulpkanin-first-female-dataset-252 = Olivia +names-vulpkanin-first-female-dataset-253 = Opaline +names-vulpkanin-first-female-dataset-254 = Ophelia +names-vulpkanin-first-female-dataset-255 = Oriana +names-vulpkanin-first-female-dataset-256 = Paisley +names-vulpkanin-first-female-dataset-257 = Paloma +names-vulpkanin-first-female-dataset-258 = Pam +names-vulpkanin-first-female-dataset-259 = Pauline +names-vulpkanin-first-female-dataset-260 = Paz +names-vulpkanin-first-female-dataset-261 = Penelope +names-vulpkanin-first-female-dataset-262 = Penny +names-vulpkanin-first-female-dataset-263 = Phoebe +names-vulpkanin-first-female-dataset-264 = Piper +names-vulpkanin-first-female-dataset-265 = Portia +names-vulpkanin-first-female-dataset-266 = Priya +names-vulpkanin-first-female-dataset-267 = Rachel +names-vulpkanin-first-female-dataset-268 = Raina +names-vulpkanin-first-female-dataset-269 = Raura +names-vulpkanin-first-female-dataset-270 = Raven +names-vulpkanin-first-female-dataset-271 = Rayna +names-vulpkanin-first-female-dataset-272 = Rayne +names-vulpkanin-first-female-dataset-273 = Rebecca +names-vulpkanin-first-female-dataset-274 = Regina +names-vulpkanin-first-female-dataset-275 = Renee +names-vulpkanin-first-female-dataset-276 = Rhea +names-vulpkanin-first-female-dataset-277 = Rina +names-vulpkanin-first-female-dataset-278 = Robin +names-vulpkanin-first-female-dataset-279 = Rosalind +names-vulpkanin-first-female-dataset-280 = Rosie +names-vulpkanin-first-female-dataset-281 = Rowen +names-vulpkanin-first-female-dataset-282 = Rowena +names-vulpkanin-first-female-dataset-283 = Royce +names-vulpkanin-first-female-dataset-284 = Rubella +names-vulpkanin-first-female-dataset-285 = Ruby +names-vulpkanin-first-female-dataset-286 = Rue +names-vulpkanin-first-female-dataset-287 = Ruth +names-vulpkanin-first-female-dataset-288 = Sabrina +names-vulpkanin-first-female-dataset-289 = Sadie +names-vulpkanin-first-female-dataset-290 = Sahara +names-vulpkanin-first-female-dataset-291 = Sandra +names-vulpkanin-first-female-dataset-292 = Savina +names-vulpkanin-first-female-dataset-293 = Sawyer +names-vulpkanin-first-female-dataset-294 = Selene +names-vulpkanin-first-female-dataset-295 = Sena +names-vulpkanin-first-female-dataset-296 = Seraphina +names-vulpkanin-first-female-dataset-297 = Seraphine +names-vulpkanin-first-female-dataset-298 = Sheba +names-vulpkanin-first-female-dataset-299 = Sheila +names-vulpkanin-first-female-dataset-300 = Sia +names-vulpkanin-first-female-dataset-301 = Sibylle +names-vulpkanin-first-female-dataset-302 = Sofie +names-vulpkanin-first-female-dataset-303 = Sonnet +names-vulpkanin-first-female-dataset-304 = Sophia +names-vulpkanin-first-female-dataset-305 = Stacia +names-vulpkanin-first-female-dataset-306 = Stacy +names-vulpkanin-first-female-dataset-307 = Stefanie +names-vulpkanin-first-female-dataset-308 = Stella +names-vulpkanin-first-female-dataset-309 = Suri +names-vulpkanin-first-female-dataset-310 = Syden +names-vulpkanin-first-female-dataset-311 = Sylvia +names-vulpkanin-first-female-dataset-312 = Tala +names-vulpkanin-first-female-dataset-313 = Tasha +names-vulpkanin-first-female-dataset-314 = Tasia +names-vulpkanin-first-female-dataset-315 = Tatum +names-vulpkanin-first-female-dataset-316 = Taylee +names-vulpkanin-first-female-dataset-317 = Teegan +names-vulpkanin-first-female-dataset-318 = Teresa +names-vulpkanin-first-female-dataset-319 = Tess +names-vulpkanin-first-female-dataset-320 = Tessa +names-vulpkanin-first-female-dataset-321 = Tessy +names-vulpkanin-first-female-dataset-322 = Theia +names-vulpkanin-first-female-dataset-323 = Titania +names-vulpkanin-first-female-dataset-324 = Trisha +names-vulpkanin-first-female-dataset-325 = Trixie +names-vulpkanin-first-female-dataset-326 = Trudy +names-vulpkanin-first-female-dataset-327 = Uma +names-vulpkanin-first-female-dataset-328 = Ursula +names-vulpkanin-first-female-dataset-329 = Valenia +names-vulpkanin-first-female-dataset-330 = Valentina +names-vulpkanin-first-female-dataset-331 = Vega +names-vulpkanin-first-female-dataset-332 = Vera +names-vulpkanin-first-female-dataset-333 = Verena +names-vulpkanin-first-female-dataset-334 = Vicky +names-vulpkanin-first-female-dataset-335 = Victoria +names-vulpkanin-first-female-dataset-336 = Willow +names-vulpkanin-first-female-dataset-337 = Winnie +names-vulpkanin-first-female-dataset-338 = Yasmin +names-vulpkanin-first-female-dataset-339 = Yvette +names-vulpkanin-first-female-dataset-340 = Yvonne +names-vulpkanin-first-female-dataset-341 = Zia +names-vulpkanin-first-female-dataset-342 = Zinnia +names-vulpkanin-first-female-dataset-343 = Ziva +names-vulpkanin-first-female-dataset-344 = Zoe +names-vulpkanin-first-female-dataset-345 = Zuri + +## Last +names-vulpkanin-last-dataset-1 = Abbott +names-vulpkanin-last-dataset-2 = Adoette +names-vulpkanin-last-dataset-3 = Aegaeon +names-vulpkanin-last-dataset-4 = Aegir +names-vulpkanin-last-dataset-5 = Antlia +names-vulpkanin-last-dataset-6 = Argyris +names-vulpkanin-last-dataset-7 = Artino +names-vulpkanin-last-dataset-8 = Auriga +names-vulpkanin-last-dataset-9 = Balch +names-vulpkanin-last-dataset-10 = Barker +names-vulpkanin-last-dataset-11 = Barry +names-vulpkanin-last-dataset-12 = Beck +names-vulpkanin-last-dataset-13 = Belvin +names-vulpkanin-last-dataset-14 = Benson +names-vulpkanin-last-dataset-15 = Bestla +names-vulpkanin-last-dataset-16 = Beynon +names-vulpkanin-last-dataset-17 = Birken +names-vulpkanin-last-dataset-18 = Blum +names-vulpkanin-last-dataset-19 = Bootes +names-vulpkanin-last-dataset-20 = Braune +names-vulpkanin-last-dataset-21 = Briggs +names-vulpkanin-last-dataset-22 = Brys +names-vulpkanin-last-dataset-23 = Bunner +names-vulpkanin-last-dataset-24 = Burns +names-vulpkanin-last-dataset-25 = Cadogan +names-vulpkanin-last-dataset-26 = Caelum +names-vulpkanin-last-dataset-27 = Caine +names-vulpkanin-last-dataset-28 = Cal'enea +names-vulpkanin-last-dataset-29 = Caliban +names-vulpkanin-last-dataset-30 = Card +names-vulpkanin-last-dataset-31 = Carina +names-vulpkanin-last-dataset-32 = Cecil +names-vulpkanin-last-dataset-33 = Cephus +names-vulpkanin-last-dataset-34 = Cetus +names-vulpkanin-last-dataset-35 = Ciqala +names-vulpkanin-last-dataset-36 = Clark +names-vulpkanin-last-dataset-37 = Collins +names-vulpkanin-last-dataset-38 = Corvus +names-vulpkanin-last-dataset-39 = Cross +names-vulpkanin-last-dataset-40 = Crux +names-vulpkanin-last-dataset-41 = Cygnus +names-vulpkanin-last-dataset-42 = Darwin +names-vulpkanin-last-dataset-43 = Day +names-vulpkanin-last-dataset-44 = Delphinus +names-vulpkanin-last-dataset-45 = Dew +names-vulpkanin-last-dataset-46 = Donovan +names-vulpkanin-last-dataset-47 = Dorado +names-vulpkanin-last-dataset-48 = Drexler +names-vulpkanin-last-dataset-49 = Eckart +names-vulpkanin-last-dataset-50 = Eisner +names-vulpkanin-last-dataset-51 = Eridanus +names-vulpkanin-last-dataset-52 = Esau +names-vulpkanin-last-dataset-53 = Etsa +names-vulpkanin-last-dataset-54 = Fahr +names-vulpkanin-last-dataset-55 = Finn +names-vulpkanin-last-dataset-56 = Fletcher +names-vulpkanin-last-dataset-57 = Flint +names-vulpkanin-last-dataset-58 = Fornax +names-vulpkanin-last-dataset-59 = Francis +names-vulpkanin-last-dataset-60 = Frey +names-vulpkanin-last-dataset-61 = Froese +names-vulpkanin-last-dataset-62 = Frost +names-vulpkanin-last-dataset-63 = Galatea +names-vulpkanin-last-dataset-64 = Gerster +names-vulpkanin-last-dataset-65 = Gibbs +names-vulpkanin-last-dataset-66 = Gibby +names-vulpkanin-last-dataset-67 = Gibson +names-vulpkanin-last-dataset-68 = Glasser +names-vulpkanin-last-dataset-69 = Gold +names-vulpkanin-last-dataset-70 = Gray +names-vulpkanin-last-dataset-71 = Greenland +names-vulpkanin-last-dataset-72 = Griffiths +names-vulpkanin-last-dataset-73 = Grus +names-vulpkanin-last-dataset-74 = Hackl +names-vulpkanin-last-dataset-75 = Harrer +names-vulpkanin-last-dataset-76 = Harris +names-vulpkanin-last-dataset-77 = Hartig +names-vulpkanin-last-dataset-78 = Hati +names-vulpkanin-last-dataset-79 = Haumea +names-vulpkanin-last-dataset-80 = Heck +names-vulpkanin-last-dataset-81 = Heckleforth +names-vulpkanin-last-dataset-82 = Hendricks +names-vulpkanin-last-dataset-83 = Hennion +names-vulpkanin-last-dataset-84 = Herder +names-vulpkanin-last-dataset-85 = Herrlein +names-vulpkanin-last-dataset-86 = Hersh +names-vulpkanin-last-dataset-87 = Hi'iaka +names-vulpkanin-last-dataset-88 = Holderman +names-vulpkanin-last-dataset-89 = Holt +names-vulpkanin-last-dataset-90 = Holzer +names-vulpkanin-last-dataset-91 = Howell +names-vulpkanin-last-dataset-92 = Howlitzer +names-vulpkanin-last-dataset-93 = Hunt +names-vulpkanin-last-dataset-94 = Hunter +names-vulpkanin-last-dataset-95 = Huntington +names-vulpkanin-last-dataset-96 = Hydrus +names-vulpkanin-last-dataset-97 = Hyrrokkin +names-vulpkanin-last-dataset-98 = Ida +names-vulpkanin-last-dataset-99 = Indus +names-vulpkanin-last-dataset-100 = Jones +names-vulpkanin-last-dataset-101 = Kachina +names-vulpkanin-last-dataset-102 = Kahler +names-vulpkanin-last-dataset-103 = Kali +names-vulpkanin-last-dataset-104 = Kamphaus +names-vulpkanin-last-dataset-105 = Kekoa +names-vulpkanin-last-dataset-106 = Keme +names-vulpkanin-last-dataset-107 = Kenefick +names-vulpkanin-last-dataset-108 = Kerberos +names-vulpkanin-last-dataset-109 = King +names-vulpkanin-last-dataset-110 = Kitchi +names-vulpkanin-last-dataset-111 = Kiviuq +names-vulpkanin-last-dataset-112 = Kocher +names-vulpkanin-last-dataset-113 = Kohl +names-vulpkanin-last-dataset-114 = Koi +names-vulpkanin-last-dataset-115 = Kokinos +names-vulpkanin-last-dataset-116 = Konala +names-vulpkanin-last-dataset-117 = Kracht +names-vulpkanin-last-dataset-118 = Kruspe +names-vulpkanin-last-dataset-119 = Kuruk +names-vulpkanin-last-dataset-120 = Kusinut +names-vulpkanin-last-dataset-121 = Lachner +names-vulpkanin-last-dataset-122 = Lambert +names-vulpkanin-last-dataset-123 = Lansa +names-vulpkanin-last-dataset-124 = Laomedeia +names-vulpkanin-last-dataset-125 = Lawson +names-vulpkanin-last-dataset-126 = Lee +names-vulpkanin-last-dataset-127 = Lehrer +names-vulpkanin-last-dataset-128 = Lexis +names-vulpkanin-last-dataset-129 = Licht +names-vulpkanin-last-dataset-130 = Lincoln +names-vulpkanin-last-dataset-131 = Llewelyn +names-vulpkanin-last-dataset-132 = Loge +names-vulpkanin-last-dataset-133 = Lorenzen +names-vulpkanin-last-dataset-134 = MacLeod +names-vulpkanin-last-dataset-135 = Maekh +names-vulpkanin-last-dataset-136 = Malone +names-vulpkanin-last-dataset-137 = Marks +names-vulpkanin-last-dataset-138 = Mason +names-vulpkanin-last-dataset-139 = Matoskah +names-vulpkanin-last-dataset-140 = Matthews +names-vulpkanin-last-dataset-141 = Mattick +names-vulpkanin-last-dataset-142 = Mauss +names-vulpkanin-last-dataset-143 = McCarthy +names-vulpkanin-last-dataset-144 = McKee +names-vulpkanin-last-dataset-145 = McKinney +names-vulpkanin-last-dataset-146 = McLeod +names-vulpkanin-last-dataset-147 = Meissner +names-vulpkanin-last-dataset-148 = Merkel +names-vulpkanin-last-dataset-149 = Mertz +names-vulpkanin-last-dataset-150 = Metzinger +names-vulpkanin-last-dataset-151 = Mikasi +names-vulpkanin-last-dataset-152 = Mimiteh +names-vulpkanin-last-dataset-153 = Misae +names-vulpkanin-last-dataset-154 = Moki +names-vulpkanin-last-dataset-155 = Mordecai +names-vulpkanin-last-dataset-156 = Morgan +names-vulpkanin-last-dataset-157 = Morris +names-vulpkanin-last-dataset-158 = Moss +names-vulpkanin-last-dataset-159 = Musca +names-vulpkanin-last-dataset-160 = Naiad +names-vulpkanin-last-dataset-161 = Namaka +names-vulpkanin-last-dataset-162 = Narvi +names-vulpkanin-last-dataset-163 = Nereid +names-vulpkanin-last-dataset-164 = Neso +names-vulpkanin-last-dataset-165 = Nest +names-vulpkanin-last-dataset-166 = Neuer +names-vulpkanin-last-dataset-167 = Nist +names-vulpkanin-last-dataset-168 = Nokomis +names-vulpkanin-last-dataset-169 = Nonovan +names-vulpkanin-last-dataset-170 = Noske +names-vulpkanin-last-dataset-171 = O'Neil +names-vulpkanin-last-dataset-172 = Okalani +names-vulpkanin-last-dataset-173 = Okomi +names-vulpkanin-last-dataset-174 = Oliana +names-vulpkanin-last-dataset-175 = Oliver +names-vulpkanin-last-dataset-176 = Pakuna +names-vulpkanin-last-dataset-177 = Pallene +names-vulpkanin-last-dataset-178 = Pavo +names-vulpkanin-last-dataset-179 = Pembroke +names-vulpkanin-last-dataset-180 = Penrose +names-vulpkanin-last-dataset-181 = Pichler +names-vulpkanin-last-dataset-182 = Parker +names-vulpkanin-last-dataset-183 = Povey +names-vulpkanin-last-dataset-184 = Preiss +names-vulpkanin-last-dataset-185 = Prospero +names-vulpkanin-last-dataset-186 = Protheroe +names-vulpkanin-last-dataset-187 = Pye +names-vulpkanin-last-dataset-188 = Pyxis +names-vulpkanin-last-dataset-189 = Quint +names-vulpkanin-last-dataset-190 = Rabe +names-vulpkanin-last-dataset-191 = Rahmer +names-vulpkanin-last-dataset-192 = Rease +names-vulpkanin-last-dataset-193 = Reger +names-vulpkanin-last-dataset-194 = Reichen +names-vulpkanin-last-dataset-195 = Reimold +names-vulpkanin-last-dataset-196 = Reiter +names-vulpkanin-last-dataset-197 = Rhees +names-vulpkanin-last-dataset-198 = Rhoderick +names-vulpkanin-last-dataset-199 = Robinson +names-vulpkanin-last-dataset-200 = Rosenthal +names-vulpkanin-last-dataset-201 = Rossmann +names-vulpkanin-last-dataset-202 = Rothman +names-vulpkanin-last-dataset-203 = Rue +names-vulpkanin-last-dataset-204 = Sagitta +names-vulpkanin-last-dataset-205 = Sahkyo +names-vulpkanin-last-dataset-206 = Sare +names-vulpkanin-last-dataset-207 = Sawyer +names-vulpkanin-last-dataset-208 = Schmid +names-vulpkanin-last-dataset-209 = Schoeler +names-vulpkanin-last-dataset-210 = Schoenberg +names-vulpkanin-last-dataset-211 = Schultze +names-vulpkanin-last-dataset-212 = Seals +names-vulpkanin-last-dataset-213 = Seidl +names-vulpkanin-last-dataset-214 = Sharpe +names-vulpkanin-last-dataset-215 = Shepard +names-vulpkanin-last-dataset-216 = Shepherd +names-vulpkanin-last-dataset-217 = Sicheii +names-vulpkanin-last-dataset-218 = Skinner +names-vulpkanin-last-dataset-219 = Skoll +names-vulpkanin-last-dataset-220 = Sommer +names-vulpkanin-last-dataset-221 = Spade +names-vulpkanin-last-dataset-222 = Staebler +names-vulpkanin-last-dataset-223 = Steel +names-vulpkanin-last-dataset-224 = Sycorax +names-vulpkanin-last-dataset-225 = Takala +names-vulpkanin-last-dataset-226 = Takoda +names-vulpkanin-last-dataset-227 = Tansy +names-vulpkanin-last-dataset-228 = Tarqeq +names-vulpkanin-last-dataset-229 = Tarvos +names-vulpkanin-last-dataset-230 = Tayanita +names-vulpkanin-last-dataset-231 = Taylor +names-vulpkanin-last-dataset-232 = Telesto +names-vulpkanin-last-dataset-233 = Tethys +names-vulpkanin-last-dataset-234 = Thalassa +names-vulpkanin-last-dataset-235 = Thiel +names-vulpkanin-last-dataset-236 = Toski +names-vulpkanin-last-dataset-237 = Trinculo +names-vulpkanin-last-dataset-238 = Tse +names-vulpkanin-last-dataset-239 = Veiel +names-vulpkanin-last-dataset-240 = Vohkinne +names-vulpkanin-last-dataset-241 = Umber +names-vulpkanin-last-dataset-242 = Ward +names-vulpkanin-last-dataset-243 = Webb +names-vulpkanin-last-dataset-244 = Weber +names-vulpkanin-last-dataset-245 = Weider +names-vulpkanin-last-dataset-246 = Werdin +names-vulpkanin-last-dataset-247 = Wildner +names-vulpkanin-last-dataset-248 = Wintsch +names-vulpkanin-last-dataset-249 = Wolfe +names-vulpkanin-last-dataset-250 = Yarwood +names-vulpkanin-last-dataset-251 = Yazhi +names-vulpkanin-last-dataset-252 = Yoki diff --git a/Resources/Locale/en-US/_EE/datasets/ipc-names.ftl b/Resources/Locale/en-US/_EE/datasets/ipc-names.ftl new file mode 100644 index 0000000000..34b2621a93 --- /dev/null +++ b/Resources/Locale/en-US/_EE/datasets/ipc-names.ftl @@ -0,0 +1,1104 @@ +## First + +names-ipc-first-dataset-1 = ABEX +names-ipc-first-dataset-2 = ANCL +names-ipc-first-dataset-3 = ANTR +names-ipc-first-dataset-4 = ARMA +names-ipc-first-dataset-5 = AURA +names-ipc-first-dataset-6 = BGB +names-ipc-first-dataset-7 = CBOS +names-ipc-first-dataset-8 = CDB +names-ipc-first-dataset-9 = CHOC +names-ipc-first-dataset-10 = CHRI +names-ipc-first-dataset-11 = COI +names-ipc-first-dataset-12 = CRUX +names-ipc-first-dataset-13 = CYBR +names-ipc-first-dataset-14 = DRSD +names-ipc-first-dataset-15 = DUNC +names-ipc-first-dataset-16 = EBIX +names-ipc-first-dataset-17 = EXOS +names-ipc-first-dataset-18 = FIRC +names-ipc-first-dataset-19 = FIZZ +names-ipc-first-dataset-20 = FRE +names-ipc-first-dataset-21 = FXMC +names-ipc-first-dataset-22 = GIGA +names-ipc-first-dataset-23 = GOOF +names-ipc-first-dataset-24 = GRIN +names-ipc-first-dataset-25 = GUN +names-ipc-first-dataset-26 = HBL +names-ipc-first-dataset-27 = HG +names-ipc-first-dataset-28 = HIU +names-ipc-first-dataset-29 = HOG +names-ipc-first-dataset-30 = INC +names-ipc-first-dataset-31 = JADE +names-ipc-first-dataset-32 = JJR +names-ipc-first-dataset-33 = JLLO +names-ipc-first-dataset-34 = JNLG +names-ipc-first-dataset-35 = JRD +names-ipc-first-dataset-36 = JUNO +names-ipc-first-dataset-37 = KALE +names-ipc-first-dataset-38 = KANO +names-ipc-first-dataset-39 = KAZA +names-ipc-first-dataset-40 = KENT +names-ipc-first-dataset-41 = KIV +names-ipc-first-dataset-42 = KOR +names-ipc-first-dataset-43 = KORA +names-ipc-first-dataset-44 = KOS +names-ipc-first-dataset-45 = LUMA +names-ipc-first-dataset-46 = LUNA +names-ipc-first-dataset-47 = LYNX +names-ipc-first-dataset-48 = MET +names-ipc-first-dataset-49 = MIW +names-ipc-first-dataset-50 = MNOS +names-ipc-first-dataset-51 = MRPR +names-ipc-first-dataset-52 = MSO +names-ipc-first-dataset-53 = NANO +names-ipc-first-dataset-54 = NEST +names-ipc-first-dataset-55 = NEXO +names-ipc-first-dataset-56 = NOVA +names-ipc-first-dataset-57 = ORNG +names-ipc-first-dataset-58 = OSI +names-ipc-first-dataset-59 = PBU +names-ipc-first-dataset-60 = PHL +names-ipc-first-dataset-61 = PKP +names-ipc-first-dataset-62 = PKR +names-ipc-first-dataset-63 = PLEX +names-ipc-first-dataset-64 = PLEXO +names-ipc-first-dataset-65 = PLIX +names-ipc-first-dataset-66 = QUES +names-ipc-first-dataset-67 = QUIN +names-ipc-first-dataset-68 = QWER +names-ipc-first-dataset-69 = RIFT +names-ipc-first-dataset-70 = RR +names-ipc-first-dataset-71 = RYNO +names-ipc-first-dataset-72 = RZH +names-ipc-first-dataset-73 = SINA +names-ipc-first-dataset-74 = SLI +names-ipc-first-dataset-75 = STLP +names-ipc-first-dataset-76 = TKRG +names-ipc-first-dataset-77 = TRIX +names-ipc-first-dataset-78 = VERA +names-ipc-first-dataset-79 = VEXA +names-ipc-first-dataset-80 = VITA +names-ipc-first-dataset-81 = VIVE +names-ipc-first-dataset-82 = VOLT +names-ipc-first-dataset-83 = WAVE +names-ipc-first-dataset-84 = WISP +names-ipc-first-dataset-85 = WJ +names-ipc-first-dataset-86 = WREN +names-ipc-first-dataset-87 = XAL +names-ipc-first-dataset-88 = XENA +names-ipc-first-dataset-89 = XIS +names-ipc-first-dataset-90 = XSI +names-ipc-first-dataset-91 = XYLO +names-ipc-first-dataset-92 = YAGO +names-ipc-first-dataset-93 = YPT +names-ipc-first-dataset-94 = ZACK +names-ipc-first-dataset-95 = ZARG +names-ipc-first-dataset-96 = ZEON +names-ipc-first-dataset-97 = ZOLT +names-ipc-first-dataset-98 = ZUMA +names-ipc-first-dataset-99 = ZYLO +names-ipc-first-dataset-100 = ZYVA + +## Pain and suffering +names-ipc-last-dataset-1 = 000 +names-ipc-last-dataset-2 = 001 +names-ipc-last-dataset-3 = 002 +names-ipc-last-dataset-4 = 003 +names-ipc-last-dataset-5 = 004 +names-ipc-last-dataset-6 = 005 +names-ipc-last-dataset-7 = 006 +names-ipc-last-dataset-8 = 007 +names-ipc-last-dataset-9 = 008 +names-ipc-last-dataset-10 = 009 +names-ipc-last-dataset-11 = 010 +names-ipc-last-dataset-12 = 011 +names-ipc-last-dataset-13 = 012 +names-ipc-last-dataset-14 = 013 +names-ipc-last-dataset-15 = 014 +names-ipc-last-dataset-16 = 015 +names-ipc-last-dataset-17 = 016 +names-ipc-last-dataset-18 = 017 +names-ipc-last-dataset-19 = 018 +names-ipc-last-dataset-20 = 019 +names-ipc-last-dataset-21 = 020 +names-ipc-last-dataset-22 = 021 +names-ipc-last-dataset-23 = 022 +names-ipc-last-dataset-24 = 023 +names-ipc-last-dataset-25 = 024 +names-ipc-last-dataset-26 = 025 +names-ipc-last-dataset-27 = 026 +names-ipc-last-dataset-28 = 027 +names-ipc-last-dataset-29 = 028 +names-ipc-last-dataset-30 = 029 +names-ipc-last-dataset-31 = 030 +names-ipc-last-dataset-32 = 031 +names-ipc-last-dataset-33 = 032 +names-ipc-last-dataset-34 = 033 +names-ipc-last-dataset-35 = 034 +names-ipc-last-dataset-36 = 035 +names-ipc-last-dataset-37 = 036 +names-ipc-last-dataset-38 = 037 +names-ipc-last-dataset-39 = 038 +names-ipc-last-dataset-40 = 039 +names-ipc-last-dataset-41 = 040 +names-ipc-last-dataset-42 = 041 +names-ipc-last-dataset-43 = 042 +names-ipc-last-dataset-44 = 043 +names-ipc-last-dataset-45 = 044 +names-ipc-last-dataset-46 = 045 +names-ipc-last-dataset-47 = 046 +names-ipc-last-dataset-48 = 047 +names-ipc-last-dataset-49 = 048 +names-ipc-last-dataset-50 = 049 +names-ipc-last-dataset-51 = 050 +names-ipc-last-dataset-52 = 051 +names-ipc-last-dataset-53 = 052 +names-ipc-last-dataset-54 = 053 +names-ipc-last-dataset-55 = 054 +names-ipc-last-dataset-56 = 055 +names-ipc-last-dataset-57 = 056 +names-ipc-last-dataset-58 = 057 +names-ipc-last-dataset-59 = 058 +names-ipc-last-dataset-60 = 059 +names-ipc-last-dataset-61 = 060 +names-ipc-last-dataset-62 = 061 +names-ipc-last-dataset-63 = 062 +names-ipc-last-dataset-64 = 063 +names-ipc-last-dataset-65 = 064 +names-ipc-last-dataset-66 = 065 +names-ipc-last-dataset-67 = 066 +names-ipc-last-dataset-68 = 067 +names-ipc-last-dataset-69 = 068 +names-ipc-last-dataset-70 = 069 +names-ipc-last-dataset-71 = 070 +names-ipc-last-dataset-72 = 071 +names-ipc-last-dataset-73 = 072 +names-ipc-last-dataset-74 = 073 +names-ipc-last-dataset-75 = 074 +names-ipc-last-dataset-76 = 075 +names-ipc-last-dataset-77 = 076 +names-ipc-last-dataset-78 = 077 +names-ipc-last-dataset-79 = 078 +names-ipc-last-dataset-80 = 079 +names-ipc-last-dataset-81 = 080 +names-ipc-last-dataset-82 = 081 +names-ipc-last-dataset-83 = 082 +names-ipc-last-dataset-84 = 083 +names-ipc-last-dataset-85 = 084 +names-ipc-last-dataset-86 = 085 +names-ipc-last-dataset-87 = 086 +names-ipc-last-dataset-88 = 087 +names-ipc-last-dataset-89 = 088 +names-ipc-last-dataset-90 = 089 +names-ipc-last-dataset-91 = 090 +names-ipc-last-dataset-92 = 091 +names-ipc-last-dataset-93 = 092 +names-ipc-last-dataset-94 = 093 +names-ipc-last-dataset-95 = 094 +names-ipc-last-dataset-96 = 095 +names-ipc-last-dataset-97 = 096 +names-ipc-last-dataset-98 = 097 +names-ipc-last-dataset-99 = 098 +names-ipc-last-dataset-100 = 099 +names-ipc-last-dataset-101 = 100 +names-ipc-last-dataset-102 = 101 +names-ipc-last-dataset-103 = 102 +names-ipc-last-dataset-104 = 103 +names-ipc-last-dataset-105 = 104 +names-ipc-last-dataset-106 = 105 +names-ipc-last-dataset-107 = 106 +names-ipc-last-dataset-108 = 107 +names-ipc-last-dataset-109 = 108 +names-ipc-last-dataset-110 = 109 +names-ipc-last-dataset-111 = 110 +names-ipc-last-dataset-112 = 111 +names-ipc-last-dataset-113 = 112 +names-ipc-last-dataset-114 = 113 +names-ipc-last-dataset-115 = 114 +names-ipc-last-dataset-116 = 115 +names-ipc-last-dataset-117 = 116 +names-ipc-last-dataset-118 = 117 +names-ipc-last-dataset-119 = 118 +names-ipc-last-dataset-120 = 119 +names-ipc-last-dataset-121 = 120 +names-ipc-last-dataset-122 = 121 +names-ipc-last-dataset-123 = 122 +names-ipc-last-dataset-124 = 123 +names-ipc-last-dataset-125 = 124 +names-ipc-last-dataset-126 = 125 +names-ipc-last-dataset-127 = 126 +names-ipc-last-dataset-128 = 127 +names-ipc-last-dataset-129 = 128 +names-ipc-last-dataset-130 = 129 +names-ipc-last-dataset-131 = 130 +names-ipc-last-dataset-132 = 131 +names-ipc-last-dataset-133 = 132 +names-ipc-last-dataset-134 = 133 +names-ipc-last-dataset-135 = 134 +names-ipc-last-dataset-136 = 135 +names-ipc-last-dataset-137 = 136 +names-ipc-last-dataset-138 = 137 +names-ipc-last-dataset-139 = 138 +names-ipc-last-dataset-140 = 139 +names-ipc-last-dataset-141 = 140 +names-ipc-last-dataset-142 = 141 +names-ipc-last-dataset-143 = 142 +names-ipc-last-dataset-144 = 143 +names-ipc-last-dataset-145 = 144 +names-ipc-last-dataset-146 = 145 +names-ipc-last-dataset-147 = 146 +names-ipc-last-dataset-148 = 147 +names-ipc-last-dataset-149 = 148 +names-ipc-last-dataset-150 = 149 +names-ipc-last-dataset-151 = 150 +names-ipc-last-dataset-152 = 151 +names-ipc-last-dataset-153 = 152 +names-ipc-last-dataset-154 = 153 +names-ipc-last-dataset-155 = 154 +names-ipc-last-dataset-156 = 155 +names-ipc-last-dataset-157 = 156 +names-ipc-last-dataset-158 = 157 +names-ipc-last-dataset-159 = 158 +names-ipc-last-dataset-160 = 159 +names-ipc-last-dataset-161 = 160 +names-ipc-last-dataset-162 = 161 +names-ipc-last-dataset-163 = 162 +names-ipc-last-dataset-164 = 163 +names-ipc-last-dataset-165 = 164 +names-ipc-last-dataset-166 = 165 +names-ipc-last-dataset-167 = 166 +names-ipc-last-dataset-168 = 167 +names-ipc-last-dataset-169 = 168 +names-ipc-last-dataset-170 = 169 +names-ipc-last-dataset-171 = 170 +names-ipc-last-dataset-172 = 171 +names-ipc-last-dataset-173 = 172 +names-ipc-last-dataset-174 = 173 +names-ipc-last-dataset-175 = 174 +names-ipc-last-dataset-176 = 175 +names-ipc-last-dataset-177 = 176 +names-ipc-last-dataset-178 = 177 +names-ipc-last-dataset-179 = 178 +names-ipc-last-dataset-180 = 179 +names-ipc-last-dataset-181 = 180 +names-ipc-last-dataset-182 = 181 +names-ipc-last-dataset-183 = 182 +names-ipc-last-dataset-184 = 183 +names-ipc-last-dataset-185 = 184 +names-ipc-last-dataset-186 = 185 +names-ipc-last-dataset-187 = 186 +names-ipc-last-dataset-188 = 187 +names-ipc-last-dataset-189 = 188 +names-ipc-last-dataset-190 = 189 +names-ipc-last-dataset-191 = 190 +names-ipc-last-dataset-192 = 191 +names-ipc-last-dataset-193 = 192 +names-ipc-last-dataset-194 = 193 +names-ipc-last-dataset-195 = 194 +names-ipc-last-dataset-196 = 195 +names-ipc-last-dataset-197 = 196 +names-ipc-last-dataset-198 = 197 +names-ipc-last-dataset-199 = 198 +names-ipc-last-dataset-200 = 199 +names-ipc-last-dataset-201 = 200 +names-ipc-last-dataset-202 = 201 +names-ipc-last-dataset-203 = 202 +names-ipc-last-dataset-204 = 203 +names-ipc-last-dataset-205 = 204 +names-ipc-last-dataset-206 = 205 +names-ipc-last-dataset-207 = 206 +names-ipc-last-dataset-208 = 207 +names-ipc-last-dataset-209 = 208 +names-ipc-last-dataset-210 = 209 +names-ipc-last-dataset-211 = 210 +names-ipc-last-dataset-212 = 211 +names-ipc-last-dataset-213 = 212 +names-ipc-last-dataset-214 = 213 +names-ipc-last-dataset-215 = 214 +names-ipc-last-dataset-216 = 215 +names-ipc-last-dataset-217 = 216 +names-ipc-last-dataset-218 = 217 +names-ipc-last-dataset-219 = 218 +names-ipc-last-dataset-220 = 219 +names-ipc-last-dataset-221 = 220 +names-ipc-last-dataset-222 = 221 +names-ipc-last-dataset-223 = 222 +names-ipc-last-dataset-224 = 223 +names-ipc-last-dataset-225 = 224 +names-ipc-last-dataset-226 = 225 +names-ipc-last-dataset-227 = 226 +names-ipc-last-dataset-228 = 227 +names-ipc-last-dataset-229 = 228 +names-ipc-last-dataset-230 = 229 +names-ipc-last-dataset-231 = 230 +names-ipc-last-dataset-232 = 231 +names-ipc-last-dataset-233 = 232 +names-ipc-last-dataset-234 = 233 +names-ipc-last-dataset-235 = 234 +names-ipc-last-dataset-236 = 235 +names-ipc-last-dataset-237 = 236 +names-ipc-last-dataset-238 = 237 +names-ipc-last-dataset-239 = 238 +names-ipc-last-dataset-240 = 239 +names-ipc-last-dataset-241 = 240 +names-ipc-last-dataset-242 = 241 +names-ipc-last-dataset-243 = 242 +names-ipc-last-dataset-244 = 243 +names-ipc-last-dataset-245 = 244 +names-ipc-last-dataset-246 = 245 +names-ipc-last-dataset-247 = 246 +names-ipc-last-dataset-248 = 247 +names-ipc-last-dataset-249 = 248 +names-ipc-last-dataset-250 = 249 +names-ipc-last-dataset-251 = 250 +names-ipc-last-dataset-252 = 251 +names-ipc-last-dataset-253 = 252 +names-ipc-last-dataset-254 = 253 +names-ipc-last-dataset-255 = 254 +names-ipc-last-dataset-256 = 255 +names-ipc-last-dataset-257 = 256 +names-ipc-last-dataset-258 = 257 +names-ipc-last-dataset-259 = 258 +names-ipc-last-dataset-260 = 259 +names-ipc-last-dataset-261 = 260 +names-ipc-last-dataset-262 = 261 +names-ipc-last-dataset-263 = 262 +names-ipc-last-dataset-264 = 263 +names-ipc-last-dataset-265 = 264 +names-ipc-last-dataset-266 = 265 +names-ipc-last-dataset-267 = 266 +names-ipc-last-dataset-268 = 267 +names-ipc-last-dataset-269 = 268 +names-ipc-last-dataset-270 = 269 +names-ipc-last-dataset-271 = 270 +names-ipc-last-dataset-272 = 271 +names-ipc-last-dataset-273 = 272 +names-ipc-last-dataset-274 = 273 +names-ipc-last-dataset-275 = 274 +names-ipc-last-dataset-276 = 275 +names-ipc-last-dataset-277 = 276 +names-ipc-last-dataset-278 = 277 +names-ipc-last-dataset-279 = 278 +names-ipc-last-dataset-280 = 279 +names-ipc-last-dataset-281 = 280 +names-ipc-last-dataset-282 = 281 +names-ipc-last-dataset-283 = 282 +names-ipc-last-dataset-284 = 283 +names-ipc-last-dataset-285 = 284 +names-ipc-last-dataset-286 = 285 +names-ipc-last-dataset-287 = 286 +names-ipc-last-dataset-288 = 287 +names-ipc-last-dataset-289 = 288 +names-ipc-last-dataset-290 = 289 +names-ipc-last-dataset-291 = 290 +names-ipc-last-dataset-292 = 291 +names-ipc-last-dataset-293 = 292 +names-ipc-last-dataset-294 = 293 +names-ipc-last-dataset-295 = 294 +names-ipc-last-dataset-296 = 295 +names-ipc-last-dataset-297 = 296 +names-ipc-last-dataset-298 = 297 +names-ipc-last-dataset-299 = 298 +names-ipc-last-dataset-300 = 299 +names-ipc-last-dataset-301 = 300 +names-ipc-last-dataset-302 = 301 +names-ipc-last-dataset-303 = 302 +names-ipc-last-dataset-304 = 303 +names-ipc-last-dataset-305 = 304 +names-ipc-last-dataset-306 = 305 +names-ipc-last-dataset-307 = 306 +names-ipc-last-dataset-308 = 307 +names-ipc-last-dataset-309 = 308 +names-ipc-last-dataset-310 = 309 +names-ipc-last-dataset-311 = 310 +names-ipc-last-dataset-312 = 311 +names-ipc-last-dataset-313 = 312 +names-ipc-last-dataset-314 = 313 +names-ipc-last-dataset-315 = 314 +names-ipc-last-dataset-316 = 315 +names-ipc-last-dataset-317 = 316 +names-ipc-last-dataset-318 = 317 +names-ipc-last-dataset-319 = 318 +names-ipc-last-dataset-320 = 319 +names-ipc-last-dataset-321 = 320 +names-ipc-last-dataset-322 = 321 +names-ipc-last-dataset-323 = 322 +names-ipc-last-dataset-324 = 323 +names-ipc-last-dataset-325 = 324 +names-ipc-last-dataset-326 = 325 +names-ipc-last-dataset-327 = 326 +names-ipc-last-dataset-328 = 327 +names-ipc-last-dataset-329 = 328 +names-ipc-last-dataset-330 = 329 +names-ipc-last-dataset-331 = 330 +names-ipc-last-dataset-332 = 331 +names-ipc-last-dataset-333 = 332 +names-ipc-last-dataset-334 = 333 +names-ipc-last-dataset-335 = 334 +names-ipc-last-dataset-336 = 335 +names-ipc-last-dataset-337 = 336 +names-ipc-last-dataset-338 = 337 +names-ipc-last-dataset-339 = 338 +names-ipc-last-dataset-340 = 339 +names-ipc-last-dataset-341 = 340 +names-ipc-last-dataset-342 = 341 +names-ipc-last-dataset-343 = 342 +names-ipc-last-dataset-344 = 343 +names-ipc-last-dataset-345 = 344 +names-ipc-last-dataset-346 = 345 +names-ipc-last-dataset-347 = 346 +names-ipc-last-dataset-348 = 347 +names-ipc-last-dataset-349 = 348 +names-ipc-last-dataset-350 = 349 +names-ipc-last-dataset-351 = 350 +names-ipc-last-dataset-352 = 351 +names-ipc-last-dataset-353 = 352 +names-ipc-last-dataset-354 = 353 +names-ipc-last-dataset-355 = 354 +names-ipc-last-dataset-356 = 355 +names-ipc-last-dataset-357 = 356 +names-ipc-last-dataset-358 = 357 +names-ipc-last-dataset-359 = 358 +names-ipc-last-dataset-360 = 359 +names-ipc-last-dataset-361 = 360 +names-ipc-last-dataset-362 = 361 +names-ipc-last-dataset-363 = 362 +names-ipc-last-dataset-364 = 363 +names-ipc-last-dataset-365 = 364 +names-ipc-last-dataset-366 = 365 +names-ipc-last-dataset-367 = 366 +names-ipc-last-dataset-368 = 367 +names-ipc-last-dataset-369 = 368 +names-ipc-last-dataset-370 = 369 +names-ipc-last-dataset-371 = 370 +names-ipc-last-dataset-372 = 371 +names-ipc-last-dataset-373 = 372 +names-ipc-last-dataset-374 = 373 +names-ipc-last-dataset-375 = 374 +names-ipc-last-dataset-376 = 375 +names-ipc-last-dataset-377 = 376 +names-ipc-last-dataset-378 = 377 +names-ipc-last-dataset-379 = 378 +names-ipc-last-dataset-380 = 379 +names-ipc-last-dataset-381 = 380 +names-ipc-last-dataset-382 = 381 +names-ipc-last-dataset-383 = 382 +names-ipc-last-dataset-384 = 383 +names-ipc-last-dataset-385 = 384 +names-ipc-last-dataset-386 = 385 +names-ipc-last-dataset-387 = 386 +names-ipc-last-dataset-388 = 387 +names-ipc-last-dataset-389 = 388 +names-ipc-last-dataset-390 = 389 +names-ipc-last-dataset-391 = 390 +names-ipc-last-dataset-392 = 391 +names-ipc-last-dataset-393 = 392 +names-ipc-last-dataset-394 = 393 +names-ipc-last-dataset-395 = 394 +names-ipc-last-dataset-396 = 395 +names-ipc-last-dataset-397 = 396 +names-ipc-last-dataset-398 = 397 +names-ipc-last-dataset-399 = 398 +names-ipc-last-dataset-400 = 399 +names-ipc-last-dataset-401 = 400 +names-ipc-last-dataset-402 = 401 +names-ipc-last-dataset-403 = 402 +names-ipc-last-dataset-404 = 403 +names-ipc-last-dataset-405 = 404 +names-ipc-last-dataset-406 = 405 +names-ipc-last-dataset-407 = 406 +names-ipc-last-dataset-408 = 407 +names-ipc-last-dataset-409 = 408 +names-ipc-last-dataset-410 = 409 +names-ipc-last-dataset-411 = 410 +names-ipc-last-dataset-412 = 411 +names-ipc-last-dataset-413 = 412 +names-ipc-last-dataset-414 = 413 +names-ipc-last-dataset-415 = 414 +names-ipc-last-dataset-416 = 415 +names-ipc-last-dataset-417 = 416 +names-ipc-last-dataset-418 = 417 +names-ipc-last-dataset-419 = 418 +names-ipc-last-dataset-420 = 419 +names-ipc-last-dataset-421 = 420 +names-ipc-last-dataset-422 = 421 +names-ipc-last-dataset-423 = 422 +names-ipc-last-dataset-424 = 423 +names-ipc-last-dataset-425 = 424 +names-ipc-last-dataset-426 = 425 +names-ipc-last-dataset-427 = 426 +names-ipc-last-dataset-428 = 427 +names-ipc-last-dataset-429 = 428 +names-ipc-last-dataset-430 = 429 +names-ipc-last-dataset-431 = 430 +names-ipc-last-dataset-432 = 431 +names-ipc-last-dataset-433 = 432 +names-ipc-last-dataset-434 = 433 +names-ipc-last-dataset-435 = 434 +names-ipc-last-dataset-436 = 435 +names-ipc-last-dataset-437 = 436 +names-ipc-last-dataset-438 = 437 +names-ipc-last-dataset-439 = 438 +names-ipc-last-dataset-440 = 439 +names-ipc-last-dataset-441 = 440 +names-ipc-last-dataset-442 = 441 +names-ipc-last-dataset-443 = 442 +names-ipc-last-dataset-444 = 443 +names-ipc-last-dataset-445 = 444 +names-ipc-last-dataset-446 = 445 +names-ipc-last-dataset-447 = 446 +names-ipc-last-dataset-448 = 447 +names-ipc-last-dataset-449 = 448 +names-ipc-last-dataset-450 = 449 +names-ipc-last-dataset-451 = 450 +names-ipc-last-dataset-452 = 451 +names-ipc-last-dataset-453 = 452 +names-ipc-last-dataset-454 = 453 +names-ipc-last-dataset-455 = 454 +names-ipc-last-dataset-456 = 455 +names-ipc-last-dataset-457 = 456 +names-ipc-last-dataset-458 = 457 +names-ipc-last-dataset-459 = 458 +names-ipc-last-dataset-460 = 459 +names-ipc-last-dataset-461 = 460 +names-ipc-last-dataset-462 = 461 +names-ipc-last-dataset-463 = 462 +names-ipc-last-dataset-464 = 463 +names-ipc-last-dataset-465 = 464 +names-ipc-last-dataset-466 = 465 +names-ipc-last-dataset-467 = 466 +names-ipc-last-dataset-468 = 467 +names-ipc-last-dataset-469 = 468 +names-ipc-last-dataset-470 = 469 +names-ipc-last-dataset-471 = 470 +names-ipc-last-dataset-472 = 471 +names-ipc-last-dataset-473 = 472 +names-ipc-last-dataset-474 = 473 +names-ipc-last-dataset-475 = 474 +names-ipc-last-dataset-476 = 475 +names-ipc-last-dataset-477 = 476 +names-ipc-last-dataset-478 = 477 +names-ipc-last-dataset-479 = 478 +names-ipc-last-dataset-480 = 479 +names-ipc-last-dataset-481 = 480 +names-ipc-last-dataset-482 = 481 +names-ipc-last-dataset-483 = 482 +names-ipc-last-dataset-484 = 483 +names-ipc-last-dataset-485 = 484 +names-ipc-last-dataset-486 = 485 +names-ipc-last-dataset-487 = 486 +names-ipc-last-dataset-488 = 487 +names-ipc-last-dataset-489 = 488 +names-ipc-last-dataset-490 = 489 +names-ipc-last-dataset-491 = 490 +names-ipc-last-dataset-492 = 491 +names-ipc-last-dataset-493 = 492 +names-ipc-last-dataset-494 = 493 +names-ipc-last-dataset-495 = 494 +names-ipc-last-dataset-496 = 495 +names-ipc-last-dataset-497 = 496 +names-ipc-last-dataset-498 = 497 +names-ipc-last-dataset-499 = 498 +names-ipc-last-dataset-500 = 499 +names-ipc-last-dataset-501 = 500 +names-ipc-last-dataset-502 = 501 +names-ipc-last-dataset-503 = 502 +names-ipc-last-dataset-504 = 503 +names-ipc-last-dataset-505 = 504 +names-ipc-last-dataset-506 = 505 +names-ipc-last-dataset-507 = 506 +names-ipc-last-dataset-508 = 507 +names-ipc-last-dataset-509 = 508 +names-ipc-last-dataset-510 = 509 +names-ipc-last-dataset-511 = 510 +names-ipc-last-dataset-512 = 511 +names-ipc-last-dataset-513 = 512 +names-ipc-last-dataset-514 = 513 +names-ipc-last-dataset-515 = 514 +names-ipc-last-dataset-516 = 515 +names-ipc-last-dataset-517 = 516 +names-ipc-last-dataset-518 = 517 +names-ipc-last-dataset-519 = 518 +names-ipc-last-dataset-520 = 519 +names-ipc-last-dataset-521 = 520 +names-ipc-last-dataset-522 = 521 +names-ipc-last-dataset-523 = 522 +names-ipc-last-dataset-524 = 523 +names-ipc-last-dataset-525 = 524 +names-ipc-last-dataset-526 = 525 +names-ipc-last-dataset-527 = 526 +names-ipc-last-dataset-528 = 527 +names-ipc-last-dataset-529 = 528 +names-ipc-last-dataset-530 = 529 +names-ipc-last-dataset-531 = 530 +names-ipc-last-dataset-532 = 531 +names-ipc-last-dataset-533 = 532 +names-ipc-last-dataset-534 = 533 +names-ipc-last-dataset-535 = 534 +names-ipc-last-dataset-536 = 535 +names-ipc-last-dataset-537 = 536 +names-ipc-last-dataset-538 = 537 +names-ipc-last-dataset-539 = 538 +names-ipc-last-dataset-540 = 539 +names-ipc-last-dataset-541 = 540 +names-ipc-last-dataset-542 = 541 +names-ipc-last-dataset-543 = 542 +names-ipc-last-dataset-544 = 543 +names-ipc-last-dataset-545 = 544 +names-ipc-last-dataset-546 = 545 +names-ipc-last-dataset-547 = 546 +names-ipc-last-dataset-548 = 547 +names-ipc-last-dataset-549 = 548 +names-ipc-last-dataset-550 = 549 +names-ipc-last-dataset-551 = 550 +names-ipc-last-dataset-552 = 551 +names-ipc-last-dataset-553 = 552 +names-ipc-last-dataset-554 = 553 +names-ipc-last-dataset-555 = 554 +names-ipc-last-dataset-556 = 555 +names-ipc-last-dataset-557 = 556 +names-ipc-last-dataset-558 = 557 +names-ipc-last-dataset-559 = 558 +names-ipc-last-dataset-560 = 559 +names-ipc-last-dataset-561 = 560 +names-ipc-last-dataset-562 = 561 +names-ipc-last-dataset-563 = 562 +names-ipc-last-dataset-564 = 563 +names-ipc-last-dataset-565 = 564 +names-ipc-last-dataset-566 = 565 +names-ipc-last-dataset-567 = 566 +names-ipc-last-dataset-568 = 567 +names-ipc-last-dataset-569 = 568 +names-ipc-last-dataset-570 = 569 +names-ipc-last-dataset-571 = 570 +names-ipc-last-dataset-572 = 571 +names-ipc-last-dataset-573 = 572 +names-ipc-last-dataset-574 = 573 +names-ipc-last-dataset-575 = 574 +names-ipc-last-dataset-576 = 575 +names-ipc-last-dataset-577 = 576 +names-ipc-last-dataset-578 = 577 +names-ipc-last-dataset-579 = 578 +names-ipc-last-dataset-580 = 579 +names-ipc-last-dataset-581 = 580 +names-ipc-last-dataset-582 = 581 +names-ipc-last-dataset-583 = 582 +names-ipc-last-dataset-584 = 583 +names-ipc-last-dataset-585 = 584 +names-ipc-last-dataset-586 = 585 +names-ipc-last-dataset-587 = 586 +names-ipc-last-dataset-588 = 587 +names-ipc-last-dataset-589 = 588 +names-ipc-last-dataset-590 = 589 +names-ipc-last-dataset-591 = 590 +names-ipc-last-dataset-592 = 591 +names-ipc-last-dataset-593 = 592 +names-ipc-last-dataset-594 = 593 +names-ipc-last-dataset-595 = 594 +names-ipc-last-dataset-596 = 595 +names-ipc-last-dataset-597 = 596 +names-ipc-last-dataset-598 = 597 +names-ipc-last-dataset-599 = 598 +names-ipc-last-dataset-600 = 599 +names-ipc-last-dataset-601 = 600 +names-ipc-last-dataset-602 = 601 +names-ipc-last-dataset-603 = 602 +names-ipc-last-dataset-604 = 603 +names-ipc-last-dataset-605 = 604 +names-ipc-last-dataset-606 = 605 +names-ipc-last-dataset-607 = 606 +names-ipc-last-dataset-608 = 607 +names-ipc-last-dataset-609 = 608 +names-ipc-last-dataset-610 = 609 +names-ipc-last-dataset-611 = 610 +names-ipc-last-dataset-612 = 611 +names-ipc-last-dataset-613 = 612 +names-ipc-last-dataset-614 = 613 +names-ipc-last-dataset-615 = 614 +names-ipc-last-dataset-616 = 615 +names-ipc-last-dataset-617 = 616 +names-ipc-last-dataset-618 = 617 +names-ipc-last-dataset-619 = 618 +names-ipc-last-dataset-620 = 619 +names-ipc-last-dataset-621 = 620 +names-ipc-last-dataset-622 = 621 +names-ipc-last-dataset-623 = 622 +names-ipc-last-dataset-624 = 623 +names-ipc-last-dataset-625 = 624 +names-ipc-last-dataset-626 = 625 +names-ipc-last-dataset-627 = 626 +names-ipc-last-dataset-628 = 627 +names-ipc-last-dataset-629 = 628 +names-ipc-last-dataset-630 = 629 +names-ipc-last-dataset-631 = 630 +names-ipc-last-dataset-632 = 631 +names-ipc-last-dataset-633 = 632 +names-ipc-last-dataset-634 = 633 +names-ipc-last-dataset-635 = 634 +names-ipc-last-dataset-636 = 635 +names-ipc-last-dataset-637 = 636 +names-ipc-last-dataset-638 = 637 +names-ipc-last-dataset-639 = 638 +names-ipc-last-dataset-640 = 639 +names-ipc-last-dataset-641 = 640 +names-ipc-last-dataset-642 = 641 +names-ipc-last-dataset-643 = 642 +names-ipc-last-dataset-644 = 643 +names-ipc-last-dataset-645 = 644 +names-ipc-last-dataset-646 = 645 +names-ipc-last-dataset-647 = 646 +names-ipc-last-dataset-648 = 647 +names-ipc-last-dataset-649 = 648 +names-ipc-last-dataset-650 = 649 +names-ipc-last-dataset-651 = 650 +names-ipc-last-dataset-652 = 651 +names-ipc-last-dataset-653 = 652 +names-ipc-last-dataset-654 = 653 +names-ipc-last-dataset-655 = 654 +names-ipc-last-dataset-656 = 655 +names-ipc-last-dataset-657 = 656 +names-ipc-last-dataset-658 = 657 +names-ipc-last-dataset-659 = 658 +names-ipc-last-dataset-660 = 659 +names-ipc-last-dataset-661 = 660 +names-ipc-last-dataset-662 = 661 +names-ipc-last-dataset-663 = 662 +names-ipc-last-dataset-664 = 663 +names-ipc-last-dataset-665 = 664 +names-ipc-last-dataset-666 = 665 +names-ipc-last-dataset-667 = 666 +names-ipc-last-dataset-668 = 667 +names-ipc-last-dataset-669 = 668 +names-ipc-last-dataset-670 = 669 +names-ipc-last-dataset-671 = 670 +names-ipc-last-dataset-672 = 671 +names-ipc-last-dataset-673 = 672 +names-ipc-last-dataset-674 = 673 +names-ipc-last-dataset-675 = 674 +names-ipc-last-dataset-676 = 675 +names-ipc-last-dataset-677 = 676 +names-ipc-last-dataset-678 = 677 +names-ipc-last-dataset-679 = 678 +names-ipc-last-dataset-680 = 679 +names-ipc-last-dataset-681 = 680 +names-ipc-last-dataset-682 = 681 +names-ipc-last-dataset-683 = 682 +names-ipc-last-dataset-684 = 683 +names-ipc-last-dataset-685 = 684 +names-ipc-last-dataset-686 = 685 +names-ipc-last-dataset-687 = 686 +names-ipc-last-dataset-688 = 687 +names-ipc-last-dataset-689 = 688 +names-ipc-last-dataset-690 = 689 +names-ipc-last-dataset-691 = 690 +names-ipc-last-dataset-692 = 691 +names-ipc-last-dataset-693 = 692 +names-ipc-last-dataset-694 = 693 +names-ipc-last-dataset-695 = 694 +names-ipc-last-dataset-696 = 695 +names-ipc-last-dataset-697 = 696 +names-ipc-last-dataset-698 = 697 +names-ipc-last-dataset-699 = 698 +names-ipc-last-dataset-700 = 699 +names-ipc-last-dataset-701 = 700 +names-ipc-last-dataset-702 = 701 +names-ipc-last-dataset-703 = 702 +names-ipc-last-dataset-704 = 703 +names-ipc-last-dataset-705 = 704 +names-ipc-last-dataset-706 = 705 +names-ipc-last-dataset-707 = 706 +names-ipc-last-dataset-708 = 707 +names-ipc-last-dataset-709 = 708 +names-ipc-last-dataset-710 = 709 +names-ipc-last-dataset-711 = 710 +names-ipc-last-dataset-712 = 711 +names-ipc-last-dataset-713 = 712 +names-ipc-last-dataset-714 = 713 +names-ipc-last-dataset-715 = 714 +names-ipc-last-dataset-716 = 715 +names-ipc-last-dataset-717 = 716 +names-ipc-last-dataset-718 = 717 +names-ipc-last-dataset-719 = 718 +names-ipc-last-dataset-720 = 719 +names-ipc-last-dataset-721 = 720 +names-ipc-last-dataset-722 = 721 +names-ipc-last-dataset-723 = 722 +names-ipc-last-dataset-724 = 723 +names-ipc-last-dataset-725 = 724 +names-ipc-last-dataset-726 = 725 +names-ipc-last-dataset-727 = 726 +names-ipc-last-dataset-728 = 727 +names-ipc-last-dataset-729 = 728 +names-ipc-last-dataset-730 = 729 +names-ipc-last-dataset-731 = 730 +names-ipc-last-dataset-732 = 731 +names-ipc-last-dataset-733 = 732 +names-ipc-last-dataset-734 = 733 +names-ipc-last-dataset-735 = 734 +names-ipc-last-dataset-736 = 735 +names-ipc-last-dataset-737 = 736 +names-ipc-last-dataset-738 = 737 +names-ipc-last-dataset-739 = 738 +names-ipc-last-dataset-740 = 739 +names-ipc-last-dataset-741 = 740 +names-ipc-last-dataset-742 = 741 +names-ipc-last-dataset-743 = 742 +names-ipc-last-dataset-744 = 743 +names-ipc-last-dataset-745 = 744 +names-ipc-last-dataset-746 = 745 +names-ipc-last-dataset-747 = 746 +names-ipc-last-dataset-748 = 747 +names-ipc-last-dataset-749 = 748 +names-ipc-last-dataset-750 = 749 +names-ipc-last-dataset-751 = 750 +names-ipc-last-dataset-752 = 751 +names-ipc-last-dataset-753 = 752 +names-ipc-last-dataset-754 = 753 +names-ipc-last-dataset-755 = 754 +names-ipc-last-dataset-756 = 755 +names-ipc-last-dataset-757 = 756 +names-ipc-last-dataset-758 = 757 +names-ipc-last-dataset-759 = 758 +names-ipc-last-dataset-760 = 759 +names-ipc-last-dataset-761 = 760 +names-ipc-last-dataset-762 = 761 +names-ipc-last-dataset-763 = 762 +names-ipc-last-dataset-764 = 763 +names-ipc-last-dataset-765 = 764 +names-ipc-last-dataset-766 = 765 +names-ipc-last-dataset-767 = 766 +names-ipc-last-dataset-768 = 767 +names-ipc-last-dataset-769 = 768 +names-ipc-last-dataset-770 = 769 +names-ipc-last-dataset-771 = 770 +names-ipc-last-dataset-772 = 771 +names-ipc-last-dataset-773 = 772 +names-ipc-last-dataset-774 = 773 +names-ipc-last-dataset-775 = 774 +names-ipc-last-dataset-776 = 775 +names-ipc-last-dataset-777 = 776 +names-ipc-last-dataset-778 = 777 +names-ipc-last-dataset-779 = 778 +names-ipc-last-dataset-780 = 779 +names-ipc-last-dataset-781 = 780 +names-ipc-last-dataset-782 = 781 +names-ipc-last-dataset-783 = 782 +names-ipc-last-dataset-784 = 783 +names-ipc-last-dataset-785 = 784 +names-ipc-last-dataset-786 = 785 +names-ipc-last-dataset-787 = 786 +names-ipc-last-dataset-788 = 787 +names-ipc-last-dataset-789 = 788 +names-ipc-last-dataset-790 = 789 +names-ipc-last-dataset-791 = 790 +names-ipc-last-dataset-792 = 791 +names-ipc-last-dataset-793 = 792 +names-ipc-last-dataset-794 = 793 +names-ipc-last-dataset-795 = 794 +names-ipc-last-dataset-796 = 795 +names-ipc-last-dataset-797 = 796 +names-ipc-last-dataset-798 = 797 +names-ipc-last-dataset-799 = 798 +names-ipc-last-dataset-800 = 799 +names-ipc-last-dataset-801 = 800 +names-ipc-last-dataset-802 = 801 +names-ipc-last-dataset-803 = 802 +names-ipc-last-dataset-804 = 803 +names-ipc-last-dataset-805 = 804 +names-ipc-last-dataset-806 = 805 +names-ipc-last-dataset-807 = 806 +names-ipc-last-dataset-808 = 807 +names-ipc-last-dataset-809 = 808 +names-ipc-last-dataset-810 = 809 +names-ipc-last-dataset-811 = 810 +names-ipc-last-dataset-812 = 811 +names-ipc-last-dataset-813 = 812 +names-ipc-last-dataset-814 = 813 +names-ipc-last-dataset-815 = 814 +names-ipc-last-dataset-816 = 815 +names-ipc-last-dataset-817 = 816 +names-ipc-last-dataset-818 = 817 +names-ipc-last-dataset-819 = 818 +names-ipc-last-dataset-820 = 819 +names-ipc-last-dataset-821 = 820 +names-ipc-last-dataset-822 = 821 +names-ipc-last-dataset-823 = 822 +names-ipc-last-dataset-824 = 823 +names-ipc-last-dataset-825 = 824 +names-ipc-last-dataset-826 = 825 +names-ipc-last-dataset-827 = 826 +names-ipc-last-dataset-828 = 827 +names-ipc-last-dataset-829 = 828 +names-ipc-last-dataset-830 = 829 +names-ipc-last-dataset-831 = 830 +names-ipc-last-dataset-832 = 831 +names-ipc-last-dataset-833 = 832 +names-ipc-last-dataset-834 = 833 +names-ipc-last-dataset-835 = 834 +names-ipc-last-dataset-836 = 835 +names-ipc-last-dataset-837 = 836 +names-ipc-last-dataset-838 = 837 +names-ipc-last-dataset-839 = 838 +names-ipc-last-dataset-840 = 839 +names-ipc-last-dataset-841 = 840 +names-ipc-last-dataset-842 = 841 +names-ipc-last-dataset-843 = 842 +names-ipc-last-dataset-844 = 843 +names-ipc-last-dataset-845 = 844 +names-ipc-last-dataset-846 = 845 +names-ipc-last-dataset-847 = 846 +names-ipc-last-dataset-848 = 847 +names-ipc-last-dataset-849 = 848 +names-ipc-last-dataset-850 = 849 +names-ipc-last-dataset-851 = 850 +names-ipc-last-dataset-852 = 851 +names-ipc-last-dataset-853 = 852 +names-ipc-last-dataset-854 = 853 +names-ipc-last-dataset-855 = 854 +names-ipc-last-dataset-856 = 855 +names-ipc-last-dataset-857 = 856 +names-ipc-last-dataset-858 = 857 +names-ipc-last-dataset-859 = 858 +names-ipc-last-dataset-860 = 859 +names-ipc-last-dataset-861 = 860 +names-ipc-last-dataset-862 = 861 +names-ipc-last-dataset-863 = 862 +names-ipc-last-dataset-864 = 863 +names-ipc-last-dataset-865 = 864 +names-ipc-last-dataset-866 = 865 +names-ipc-last-dataset-867 = 866 +names-ipc-last-dataset-868 = 867 +names-ipc-last-dataset-869 = 868 +names-ipc-last-dataset-870 = 869 +names-ipc-last-dataset-871 = 870 +names-ipc-last-dataset-872 = 871 +names-ipc-last-dataset-873 = 872 +names-ipc-last-dataset-874 = 873 +names-ipc-last-dataset-875 = 874 +names-ipc-last-dataset-876 = 875 +names-ipc-last-dataset-877 = 876 +names-ipc-last-dataset-878 = 877 +names-ipc-last-dataset-879 = 878 +names-ipc-last-dataset-880 = 879 +names-ipc-last-dataset-881 = 880 +names-ipc-last-dataset-882 = 881 +names-ipc-last-dataset-883 = 882 +names-ipc-last-dataset-884 = 883 +names-ipc-last-dataset-885 = 884 +names-ipc-last-dataset-886 = 885 +names-ipc-last-dataset-887 = 886 +names-ipc-last-dataset-888 = 887 +names-ipc-last-dataset-889 = 888 +names-ipc-last-dataset-890 = 889 +names-ipc-last-dataset-891 = 890 +names-ipc-last-dataset-892 = 891 +names-ipc-last-dataset-893 = 892 +names-ipc-last-dataset-894 = 893 +names-ipc-last-dataset-895 = 894 +names-ipc-last-dataset-896 = 895 +names-ipc-last-dataset-897 = 896 +names-ipc-last-dataset-898 = 897 +names-ipc-last-dataset-899 = 898 +names-ipc-last-dataset-900 = 899 +names-ipc-last-dataset-901 = 900 +names-ipc-last-dataset-902 = 901 +names-ipc-last-dataset-903 = 902 +names-ipc-last-dataset-904 = 903 +names-ipc-last-dataset-905 = 904 +names-ipc-last-dataset-906 = 905 +names-ipc-last-dataset-907 = 906 +names-ipc-last-dataset-908 = 907 +names-ipc-last-dataset-909 = 908 +names-ipc-last-dataset-910 = 909 +names-ipc-last-dataset-911 = 910 +names-ipc-last-dataset-912 = 911 +names-ipc-last-dataset-913 = 912 +names-ipc-last-dataset-914 = 913 +names-ipc-last-dataset-915 = 914 +names-ipc-last-dataset-916 = 915 +names-ipc-last-dataset-917 = 916 +names-ipc-last-dataset-918 = 917 +names-ipc-last-dataset-919 = 918 +names-ipc-last-dataset-920 = 919 +names-ipc-last-dataset-921 = 920 +names-ipc-last-dataset-922 = 921 +names-ipc-last-dataset-923 = 922 +names-ipc-last-dataset-924 = 923 +names-ipc-last-dataset-925 = 924 +names-ipc-last-dataset-926 = 925 +names-ipc-last-dataset-927 = 926 +names-ipc-last-dataset-928 = 927 +names-ipc-last-dataset-929 = 928 +names-ipc-last-dataset-930 = 929 +names-ipc-last-dataset-931 = 930 +names-ipc-last-dataset-932 = 931 +names-ipc-last-dataset-933 = 932 +names-ipc-last-dataset-934 = 933 +names-ipc-last-dataset-935 = 934 +names-ipc-last-dataset-936 = 935 +names-ipc-last-dataset-937 = 936 +names-ipc-last-dataset-938 = 937 +names-ipc-last-dataset-939 = 938 +names-ipc-last-dataset-940 = 939 +names-ipc-last-dataset-941 = 940 +names-ipc-last-dataset-942 = 941 +names-ipc-last-dataset-943 = 942 +names-ipc-last-dataset-944 = 943 +names-ipc-last-dataset-945 = 944 +names-ipc-last-dataset-946 = 945 +names-ipc-last-dataset-947 = 946 +names-ipc-last-dataset-948 = 947 +names-ipc-last-dataset-949 = 948 +names-ipc-last-dataset-950 = 949 +names-ipc-last-dataset-951 = 950 +names-ipc-last-dataset-952 = 951 +names-ipc-last-dataset-953 = 952 +names-ipc-last-dataset-954 = 953 +names-ipc-last-dataset-955 = 954 +names-ipc-last-dataset-956 = 955 +names-ipc-last-dataset-957 = 956 +names-ipc-last-dataset-958 = 957 +names-ipc-last-dataset-959 = 958 +names-ipc-last-dataset-960 = 959 +names-ipc-last-dataset-961 = 960 +names-ipc-last-dataset-962 = 961 +names-ipc-last-dataset-963 = 962 +names-ipc-last-dataset-964 = 963 +names-ipc-last-dataset-965 = 964 +names-ipc-last-dataset-966 = 965 +names-ipc-last-dataset-967 = 966 +names-ipc-last-dataset-968 = 967 +names-ipc-last-dataset-969 = 968 +names-ipc-last-dataset-970 = 969 +names-ipc-last-dataset-971 = 970 +names-ipc-last-dataset-972 = 971 +names-ipc-last-dataset-973 = 972 +names-ipc-last-dataset-974 = 973 +names-ipc-last-dataset-975 = 974 +names-ipc-last-dataset-976 = 975 +names-ipc-last-dataset-977 = 976 +names-ipc-last-dataset-978 = 977 +names-ipc-last-dataset-979 = 978 +names-ipc-last-dataset-980 = 979 +names-ipc-last-dataset-981 = 980 +names-ipc-last-dataset-982 = 981 +names-ipc-last-dataset-983 = 982 +names-ipc-last-dataset-984 = 983 +names-ipc-last-dataset-985 = 984 +names-ipc-last-dataset-986 = 985 +names-ipc-last-dataset-987 = 986 +names-ipc-last-dataset-988 = 987 +names-ipc-last-dataset-989 = 988 +names-ipc-last-dataset-990 = 989 +names-ipc-last-dataset-991 = 990 +names-ipc-last-dataset-992 = 991 +names-ipc-last-dataset-993 = 992 +names-ipc-last-dataset-994 = 993 +names-ipc-last-dataset-995 = 994 +names-ipc-last-dataset-996 = 995 +names-ipc-last-dataset-997 = 996 +names-ipc-last-dataset-998 = 997 +names-ipc-last-dataset-999 = 998 +names-ipc-last-dataset-1000 = 999 diff --git a/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_female.yml b/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_female.yml deleted file mode 100644 index 1147972eb5..0000000000 --- a/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_female.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: dataset - id: NamesOniFemale - values: - - Akari #星 - - Kira - - Kirameki - - Aki #陽 - - Akiho - - Akimi - - Akashi #明 - - Saya - - Aporo #月 - - Arute - - Meguru - - Tiara #天 - - Suisei - - Io #水 - - Aoi - - Mizu - - Shuten #epic references - - Suika diff --git a/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_location.yml b/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_location.yml deleted file mode 100644 index fe039ab8a3..0000000000 --- a/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_location.yml +++ /dev/null @@ -1,31 +0,0 @@ -- type: dataset - id: NamesOniLocation - values: - - Amiboshi - - Amefuriboshi - - Aoboshi - - Ashitareboshi - - Chirikoboshi - - Chichiriboshi - - Ekieboshi - - Inamiboshi - - Hatsuinoshi - - Hikitsuboshi - - Hotohoriboshi - - Karasukiboshi - - Miboshi - - Namameboshi - - Nakagoboshi - - Nuriboshi - - Soiboshi - - Suboshi - - Subaruboshi - - Tamaonoboshi - - Tasukiboshi - - Tataraboshi - - Tomiteboshi - - Tomoboshi - - Tokakiboshi - - Torokiboshi - - Umiyameboshi - - Urukiboshi diff --git a/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_male.yml b/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_male.yml deleted file mode 100644 index ea3301e97e..0000000000 --- a/Resources/Prototypes/Nyanotrasen/Datasets/Names/oni_male.yml +++ /dev/null @@ -1,20 +0,0 @@ -- type: dataset - id: NamesOniMale - values: - - Kiyoshi #陽 - - Satoshi #明 - - Teru #光 - - Hiroshi - - Takashi #天 - - Eeichi #永一 - - Eeichirou #永一朗 - - Kyousaburou - - Tsutomu - - Tsuyoshi - - Kenshi - - Kenji - - Kenichi - - Susumu - - Kyounosuke - - Suisei #Mars - - Shuten #Reference diff --git a/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml index be91ea3150..ea0ab12a92 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_female.yml @@ -1,34 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesChitinidFirstFemale values: - - Amer'ix - - An'bela - - An'ora - - Aza'ran - - Be'riah - - Bel'os - - Da'lrah - - Di'azo - - E'nzo - - Em'era - - Fi'n'rah - - He'teka - - Ir'iska - - Ish'kar - - Isha'ba - - Jes'sri'ka - - Kalz'za - - Kaz'zek - - Lot'tikz - - Ral'zol - - Ri'isano - - Talzz'ark - - Tess'ara - - Tez'mal'zar - - Thri'kis - - Vani'si'kar - - Ve'rai - - Vish'ra - - Zan'ova - - Zen'ofi - - Zzer'ak + prefix: names-chitinid-first-female-dataset- + count: 31 diff --git a/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml index 355f5cffb9..fdc72d0670 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/chitinid_first_male.yml @@ -1,36 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesChitinidFirstMale values: - - Al'vos - - Amue'val - - Barma'tos - - Ben'idar - - Bil'verrok - - Crik'xis - - Daru'nta - - Dee'aldas - - Drx'var - - Hen'sra - - Hux'von - - Ilv'imon - - Is'irax - - Ish'nax - - Jax'zaril'va - - L'ofa - - Lo'zok - - Lu'vurx - - Luc'irax - - Mer'tex - - Od'dalis - - Si'ley - - Sim'sker - - Tal'vos - - Ti'ril - - Vir'lker - - Vir'muel - - Vix'vol - - Von'draz - - Vu'lta'voss - - Xixa'ba - - Yarr'wat - - Zay'zz + prefix: names-chitinid-first-male-dataset- + count: 33 diff --git a/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml b/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml new file mode 100644 index 0000000000..458f76e02e --- /dev/null +++ b/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: NamesOniFemale + values: + prefix: names-oni-last-female-dataset- + count: 17 diff --git a/Resources/Prototypes/_DV/Datasets/Names/oni_location.yml b/Resources/Prototypes/_DV/Datasets/Names/oni_location.yml new file mode 100644 index 0000000000..1c36153b2f --- /dev/null +++ b/Resources/Prototypes/_DV/Datasets/Names/oni_location.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: NamesOniLocation + values: + prefix: names-oni-location-dataset- + count: 28 diff --git a/Resources/Prototypes/_DV/Datasets/Names/oni_male.yml b/Resources/Prototypes/_DV/Datasets/Names/oni_male.yml new file mode 100644 index 0000000000..f9a95058fc --- /dev/null +++ b/Resources/Prototypes/_DV/Datasets/Names/oni_male.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: NamesOniMale + values: + prefix: names-oni-last-male-dataset- + count: 17 diff --git a/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml b/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml index aafc8c8ed9..5d165dc351 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml @@ -1,169 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesRodentiaFemale values: - # generic names - - Squeaks - - Squeaker - - Nibbles - - Pebbles - - Peanut - - Pinky - - Gadget - - Scurry - - Scamper - - Chitters - - Quill - - Whiskers - - Wiggles - - Button - - Sniffles - - Chip - - Pipsqueak - - Nugget - - Comet - - Dash - - Fudge - - Noodle - - Spud - - Muffin - - Sprout - - Jelly - - Fuzz - - Cheddar - - Tootsie - - Pickle - - Berry - - # gender-neutral - - Alex - - Riley - - Taylor - - Jordan - - Casey - - Avery - - Morgan - - Jamie - - Quinn - - Charlie - - Dakota - - Sydney - - Parker - - Cameron - - Finley - - Robin - - Emery - - Kendall - - Rowan - - Sawyer - - Bailey - - Jaden - - Addison - - Logan - - Devon - - Lane - - Blair - - Drew - - Jesse - - Skylar - - Sam - - Reese - - Terry - - Marley - - Elliot - - Harper - - Jules - - Ren - - Sloane - - Rylan - - Sage - - # feminine names - - Minnie - - Daisy - - Bella - - Luna - - Rosie - - Mia - - Lily - - Chloe - - Sophie - - Ruby - - Zoe - - Abby - - Ella - - Molly - - Lucy - - Nala - - Poppy - - Grace - - Ivy - - Hazel - - Emma - - Phoebe - - Willow - - Tilly - - Annie - - Alice - - Holly - - Olive - - Zoey - - Lila - - Pippa - - June - - Mabel - - Nellie - - Polly - - Sadie - - Isla - - # "surnames" - - Bramblewood - - Burrows - - Burrowsford - - Cheesetail - - Cloverfield - - Cloverwood - - Ferncroft - - Flopshire - - Flopshire - - Fluffbottom - - Furrington - - Furwell - - Furwood - - Gnawson - - Linden - - Little - - Maplewood - - Meadows - - Munchford - - Nibblesnout - - Nibbleston - - Nibblewood - - Oakcroft - - Oakley - - Pawsbrook - - Pawsford - - Pawsley - - Pawswell - - Pawsworth - - Scamperdale - - Scamperford - - Scamperley - - Scamperwood - - Scurryfoot - - Scuttleby - - Skitters - - Stilton - - Squeakerton - - Squeakson - - Squeaktooth - - Squeakwell - - Squeakwood - - Tailsbury - - Thumperton - - Thumpford - - Whiskerby - - Whiskerfield - - Whiskershire - - Whiskersnout - - Whiskervale + prefix: rodentia-names-last-female-dataset- + count: 159 diff --git a/Resources/Prototypes/_DV/Datasets/Names/rodentia_last.yml b/Resources/Prototypes/_DV/Datasets/Names/rodentia_last.yml index b03b3b9f08..b9937ffccb 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/rodentia_last.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/rodentia_last.yml @@ -1,91 +1,7 @@ # rodentia name scheme is "adjective-trait name", like "long-ears monty" -- type: dataset +- type: localizedDataset id: NamesRodentiaLast values: - - Agile - - Beady-eyed - - Berry-picking - - Big - - Big-ears - - Big-eyed - - Big-heart - - Big-nose - - Blunt-nose - - Brave - - Break-neck - - Bright - - Bright-eyed - - Cheeky - - Crafty - - Cunning - - Curious - - Day-sleeping - - Eager - - Fast-moving - - Fast-paws - - Fat - - Fidgety - - Food-stealing - - Gentle - - Great - - Greedy - - Grumpy - - Hasty - - High-jumping - - Jumpy - - Keen - - Keen-eyes - - Light-foot - - Little - - Long - - Long-ears - - Long-legged - - Long-snout - - Long-tail - - Long-tooth - - Night-hunting - - Nimble - - No-eyes - - No-tail - - Nosy - - Quick-footed - - Quick-wits - - Quiet - - Ravenous - - Restless - - Rough - - Round-belly - - Rowdy - - Seed-stashing - - Shadow-dwelling - - Sharp - - Sharp-clawed - - Shifty - - Shiny-eyes - - Short-ears - - Short-legged - - Short-snout - - Short-tail - - Shy - - Silent - - Silver-tongue - - Skittish - - Small-ears - - Small-nose - - Sneaky - - Soft-fur - - Soft-paws - - Squeaking - - Squeaky - - Stout - - Stubborn - - Stubby - - Sweet - - Swift - - Thick-fur - - Thick-skin - - Thieving - - Trash-eating - - Tunnel-building - - Whisker-twitching + prefix: names-rodentia-last-dataset- + count: 86 diff --git a/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml b/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml index 995e50068c..10c0f0e4c6 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml @@ -1,177 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesRodentiaMale values: - # generic names - - Squeaks - - Squeaker - - Nibbles - - Pebbles - - Peanut - - Pinky - - Gadget - - Scurry - - Scamper - - Chitters - - Quill - - Whiskers - - Wiggles - - Button - - Sniffles - - Chip - - Pipsqueak - - Nugget - - Comet - - Dash - - Fudge - - Noodle - - Spud - - Muffin - - Sprout - - Jelly - - Fuzz - - Cheddar - - Tootsie - - Pickle - - Berry - - # gender-neutral - - Alex - - Riley - - Taylor - - Jordan - - Casey - - Avery - - Morgan - - Jamie - - Quinn - - Charlie - - Dakota - - Sydney - - Parker - - Cameron - - Finley - - Robin - - Emery - - Kendall - - Rowan - - Sawyer - - Bailey - - Jaden - - Addison - - Logan - - Devon - - Lane - - Blair - - Drew - - Jesse - - Skylar - - Sam - - Reese - - Terry - - Marley - - Elliot - - Harper - - Jules - - Ren - - Sloane - - Rylan - - Sage - - # masculine names - - Basil - - Jerry - - Stuart - - Bert - - Jack - - Remy - - Geronimo - - Dale - - Flint - - Quincy - - Oliver - - Max - - Leo - - Milo - - Teddy - - Finn - - Jasper - - Simon - - Louie - - Toby - - Henry - - Oscar - - Felix - - George - - Archie - - Hugo - - Benny - - Eli - - Lucas - - Rufus - - Gus - - Alfie - - Monty - - Clyde - - Cosmo - - Ziggy - - Freddie - - Chester - - Harvey - - Rudy - - Ollie - - Percy - - Theo - - Winston - - Ernie - - # "surnames" - - Bramblewood - - Burrows - - Burrowsford - - Cheesetail - - Cloverfield - - Cloverwood - - Ferncroft - - Flopshire - - Flopshire - - Fluffbottom - - Furrington - - Furwell - - Furwood - - Gnawson - - Linden - - Little - - Maplewood - - Meadows - - Munchford - - Nibblesnout - - Nibbleston - - Nibblewood - - Oakcroft - - Oakley - - Pawsbrook - - Pawsford - - Pawsley - - Pawswell - - Pawsworth - - Scamperdale - - Scamperford - - Scamperley - - Scamperwood - - Scurryfoot - - Scuttleby - - Skitters - - Stilton - - Squeakerton - - Squeakson - - Squeaktooth - - Squeakwell - - Squeakwood - - Tailsbury - - Thumperton - - Thumpford - - Whiskerby - - Whiskerfield - - Whiskershire - - Whiskersnout - - Whiskervale + prefix: names-rodentia-first-male-dataset- + count: 176 diff --git a/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_female.yml b/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_female.yml index 5334f7ddac..7d0fa76575 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_female.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_female.yml @@ -1,348 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesVulpkaninFemale values: - - Abby - - Acantha - - Addilyn - - Adela - - Adele - - Aderyn - - Adley - - Adriana - - Aerona - - Aileen - - Alanis - - Alberta - - Alex - - Alexandra - - Alice - - Alma - - Amalie - - Andromeda - - Angel - - Ann - - Anna - - Anne - - Annie - - Ariel - - Arya - - Astraea - - Astrid - - Athena - - Audra - - Aura - - Aurora - - Avice - - Bailey - - Barbara - - Beatrix - - Belinda - - Bellatrix - - Belle - - Bianca - - Braelynn - - Brea - - Bree - - Brooke - - Brunhilde - - Caitlin - - Callisto - - Camden - - Camilla - - Candra - - Carina - - Carletta - - Carline - - Carman - - Caroline - - Carys - - Cassandra - - Cassiopeia - - Catlyn - - Celeste - - Celina - - Ceres - - Cerian - - Charlotte - - Chelle - - Chloe - - Cicely - - Clara - - Clarice - - Claudia - - Cordelia - - Cornelia - - Cressida - - Cybele - - Dagmar - - Daisy - - Dakota - - Daphne - - Daria - - Darla - - Dawn - - Deidra - - Deja - - Delilah - - Delphine - - Delyth - - Demetra - - Dezra - - Dinah - - Dora - - Effie - - Eiddwen - - Elaine - - Elara - - Eleanor - - Eliana - - Elise - - Ellen - - Elsa - - Emilia - - Emily - - Emma - - Emmie - - Emmy - - Ester - - Esther - - Eva - - Fadila - - Farren - - Fay - - Felita - - Felizia - - Fenella - - Fleur - - Francesca - - Freya - - Garnet - - Ginger - - Grace - - Gracie - - Gwen - - Hadley - - Hafren - - Halley - - Hannah - - Harlyn - - Harmony - - Harper - - Hazel - - Helen - - Helena - - Helene - - Hilda - - Holly - - Honey - - Hope - - Idonea - - Igna - - Imogen - - Ina - - Iona - - Irene - - Irma - - Isabel - - Isabella - - Ivy - - Jacqueline - - Jaelyn - - Jana - - Janice - - Janis - - Jayene - - Jazzlyn - - Jeane - - Jennete - - Jennifer - - Jill - - Jo - - Johanna - - Joslyn - - Juliana - - Juliet - - June - - Kaia - - Kali - - Karlene - - Kathryn - - Kenna - - Kiera - - Kiley - - Kimberly - - Kivela - - Lacey - - Lachelle - - Lacy - - Larissa - - Laura - - Layla - - Lena - - Leonor - - Leslie - - Lexi - - Liana - - Liani - - Lianne - - Liesel - - Lili - - Liliwen - - Lilly - - Linda - - Lola - - Lona - - Lorelai - - Lorelei - - Luise - - Lulu - - Luna - - Lycia - - Lyn - - Mabyn - - Madeleine - - Maeve - - Magdalene - - Maggie - - Maia - - Maragaret - - Margarethe - - Mariah - - Mariam - - Marilyn - - Marina - - Marisole - - Marivel - - Marley - - Marni - - Marrie - - Martina - - Mary - - Mazelina - - Meda - - Medea - - Mei - - Melania - - Melanie - - Melody - - Mercedes - - Merle - - Meryl - - Mia - - Michelle - - Mila - - Millie - - Mindy - - Miranda - - Missy - - Misty - - Mona - - Morgan - - Morgana - - Morrigan - - Morticia - - Nadia - - Nadine - - Nessa - - Nia - - Nicole - - Nikki - - Nimah - - Nina - - Norma - - Nova - - Olive - - Olivia - - Opaline - - Ophelia - - Oriana - - Paisley - - Paloma - - Pam - - Pauline - - Paz - - Penelope - - Penny - - Phoebe - - Piper - - Portia - - Priya - - Rachel - - Raina - - Raura - - Raven - - Rayna - - Rayne - - Rebecca - - Regina - - Renee - - Rhea - - Rina - - Robin - - Rosalind - - Rosie - - Rowen - - Rowena - - Royce - - Rubella - - Ruby - - Rue - - Ruth - - Sabrina - - Sadie - - Sahara - - Sandra - - Savina - - Sawyer - - Selene - - Sena - - Seraphina - - Seraphine - - Sheba - - Sheila - - Sia - - Sibylle - - Sofie - - Sonnet - - Sophia - - Stacia - - Stacy - - Stefanie - - Stella - - Suri - - Syden - - Sylvia - - Tala - - Tasha - - Tasia - - Tatum - - Taylee - - Teegan - - Teresa - - Tess - - Tessa - - Tessy - - Theia - - Titania - - Trisha - - Trixie - - Trudy - - Uma - - Ursula - - Valenia - - Valentina - - Vega - - Vera - - Verena - - Vicky - - Victoria - - Willow - - Winnie - - Yasmin - - Yvette - - Yvonne - - Zia - - Zinnia - - Ziva - - Zoe - - Zuri + prefix: names-vulpkanin-first-female-dataset- + count: 345 diff --git a/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_last.yml b/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_last.yml index cadb6c91f8..4fdf44f503 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_last.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_last.yml @@ -1,255 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesVulpkaninLast values: - - Abbott - - Adoette - - Aegaeon - - Aegir - - Antlia - - Argyris - - Artino - - Auriga - - Balch - - Barker - - Barry - - Beck - - Belvin - - Benson - - Bestla - - Beynon - - Birken - - Blum - - Bootes - - Braune - - Briggs - - Brys - - Bunner - - Burns - - Cadogan - - Caelum - - Caine - - Cal'enea - - Caliban - - Card - - Carina - - Cecil - - Cephus - - Cetus - - Ciqala - - Clark - - Collins - - Corvus - - Cross - - Crux - - Cygnus - - Darwin - - Day - - Delphinus - - Dew - - Donovan - - Dorado - - Drexler - - Eckart - - Eisner - - Eridanus - - Esau - - Etsa - - Fahr - - Finn - - Fletcher - - Flint - - Fornax - - Francis - - Frey - - Froese - - Frost - - Galatea - - Gerster - - Gibbs - - Gibby - - Gibson - - Glasser - - Gold - - Gray - - Greenland - - Griffiths - - Grus - - Hackl - - Harrer - - Harris - - Hartig - - Hati - - Haumea - - Heck - - Heckleforth - - Hendricks - - Hennion - - Herder - - Herrlein - - Hersh - - Hi'iaka - - Holderman - - Holt - - Holzer - - Howell - - Howlitzer - - Hunt - - Hunter - - Huntington - - Hydrus - - Hyrrokkin - - Ida - - Indus - - Jones - - Kachina - - Kahler - - Kali - - Kamphaus - - Kekoa - - Keme - - Kenefick - - Kerberos - - King - - Kitchi - - Kiviuq - - Kocher - - Kohl - - Koi - - Kokinos - - Konala - - Kracht - - Kruspe - - Kuruk - - Kusinut - - Lachner - - Lambert - - Lansa - - Laomedeia - - Lawson - - Lee - - Lehrer - - Lexis - - Licht - - Lincoln - - Llewelyn - - Loge - - Lorenzen - - MacLeod - - Maekh - - Malone - - Marks - - Mason - - Matoskah - - Matthews - - Mattick - - Mauss - - McCarthy - - McKee - - McKinney - - McLeod - - Meissner - - Merkel - - Mertz - - Metzinger - - Mikasi - - Mimiteh - - Misae - - Moki - - Mordecai - - Morgan - - Morris - - Moss - - Musca - - Naiad - - Namaka - - Narvi - - Nereid - - Neso - - Nest - - Neuer - - Nist - - Nokomis - - Nonovan - - Noske - - O'Neil - - Okalani - - Okomi - - Oliana - - Oliver - - Pakuna - - Pallene - - Pavo - - Pembroke - - Penrose - - Pichler - - Parker - - Povey - - Preiss - - Prospero - - Protheroe - - Pye - - Pyxis - - Quint - - Rabe - - Rahmer - - Rease - - Reger - - Reichen - - Reimold - - Reiter - - Rhees - - Rhoderick - - Robinson - - Rosenthal - - Rossmann - - Rothman - - Rue - - Sagitta - - Sahkyo - - Sare - - Sawyer - - Schmid - - Schoeler - - Schoenberg - - Schultze - - Seals - - Seidl - - Sharpe - - Shepard - - Shepherd - - Sicheii - - Skinner - - Skoll - - Sommer - - Spade - - Staebler - - Steel - - Sycorax - - Takala - - Takoda - - Tansy - - Tarqeq - - Tarvos - - Tayanita - - Taylor - - Telesto - - Tethys - - Thalassa - - Thiel - - Toski - - Trinculo - - Tse - - Veiel - - Vohkinne - - Umber - - Ward - - Webb - - Weber - - Weider - - Werdin - - Wildner - - Wintsch - - Wolfe - - Yarwood - - Yazhi - - Yoki + prefix: names-vulpkanin-last-dataset- + count: 252 diff --git a/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_male.yml b/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_male.yml index 47dc65aa6a..f01630ad47 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_male.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/vulpkanin_male.yml @@ -1,348 +1,5 @@ -- type: dataset +- type: localizedDataset id: NamesVulpkaninMale values: - - Aaron - - Abe - - Abraham - - Adelger - - Adolar - - Albuin - - Alexander - - Alhazred - - Amren - - Andre - - Andreas - - Aneurin - - Angelo - - Ansel - - Ares - - Armon - - Arnet - - Arric - - Ash - - Aspen - - Atlas - - August - - Axel - - Barald - - Barrett - - Basil - - Bastian - - Baxter - - Ben - - Benjamin - - Benny - - Berthold - - Blake - - Bo - - Bolgan - - Bosche - - Brutus - - Buck - - Caden - - Cadog - - Caelum - - Calvin - - Camus - - Caradoc - - Carter - - Casey - - Caspar - - Castor - - Cayo - - Cedrik - - Chandler - - Charles - - Charlie - - Charon - - Christian - - Claude - - Clayton - - Clifton - - Clive - - Clyde - - Colby - - Cole - - Colin - - Colton - - Conner - - Connor - - Conor - - Cooper - - Craig - - Curtis - - Dane - - Dannan - - Deimos - - Dennis - - Derek - - Derion - - Derric - - Deryn - - Desmond - - Dietmar - - Dirge - - Dominic - - Don - - Draven - - Duane - - Duke - - Dunstan - - Dylan - - Eckhard - - Eckhart - - Edgar - - Elfyn - - Emanuel - - Embry - - Emery - - Erik - - Ernst - - Ferdinand - - Finch - - Finn - - Flik - - Flint - - Florian - - Floyd - - Francis - - Franz - - Fynn - - Gaius - - Garrett - - Garske - - Gary - - Gavin - - Gavner - - Gerome - - Gerrant - - Ghirahim - - Gillian - - Glen - - Gordon - - Gorudo - - Grant - - Griffin - - Grum - - Hal - - Hanklin - - Harald - - Harley - - Hauser - - Heath - - Hector - - Heribert - - Hermes - - Hudson - - Hugo - - Hunter - - Hywel - - Ingolf - - Inigo - - Ioan - - Irving - - Isaac - - Isaak - - Ivaylo - - Iver - - Jacob - - Jaime - - Jake - - Janik - - Jared - - Jarom - - Jarvald - - Jason - - Javier - - Jeremiah - - Jerome - - Jesse - - Jett - - Jim - - Jimba - - Jimmy - - Joe - - Jonah - - Jones - - Joshua - - Josua - - Julian - - Kai - - Kaleb - - Kear - - Kenneth - - Kenway - - Kenyon - - Kevin - - Kirk - - Klaus - - Kodan - - Konrad - - Kortan - - Kurt - - Kyle - - Lance - - Landon - - Larc - - Larry - - Lars - - Leander - - Lennard - - Leo - - Liam - - Linus - - Logan - - Loki - - Lope - - Lorenz - - Lou - - Louis - - Lovel - - Luc - - Lucas - - Luka - - Luke - - Lykaon - - Magnus - - Maik - - Manuel - - Marc - - Marion - - Mariston - - Marlowe - - Marmon - - Marshall - - Martin - - Martyn - - Marvin - - Mason - - Matthias - - Maynord - - Meic - - Melchior - - Meyer - - Micah - - Michael - - Mitchell - - Moe - - Mordecai - - Morten - - Mourgent - - Nathaniel - - Nero - - Nick - - Nicolas - - Niko - - Nils - - Noah - - Oberon - - Ole - - Oscar - - Osiris - - Osmon - - Osther - - Otsoa - - Otto - - Parker - - Paul - - Pavel - - Perry - - Perseus - - Philip - - Philipp - - Pierce - - Porter - - Preston - - Quelii - - Ralph - - Randall - - Randolf - - Ranulf - - Raoul - - Raul - - Reade - - Red - - Rhain - - Rhydian - - Rhydwyn - - Rhys - - Rico - - Rigel - - Rob - - Robin - - Rocky - - Roderic - - Roger - - Roland - - Rolayne - - Roniston - - Ronnet - - Roscoe - - Roy - - Rudy - - Rukheim - - Rupert - - Russell - - Ryan - - Samuel - - Sawyer - - Scott - - Severin - - Shilo - - Silver - - Silvester - - Sirius - - Slate - - Sol - - Sriscoll - - Stefan - - Stephen - - Sterling - - Steven - - Stone - - Sullivan - - Taylor - - Ted - - Teddy - - Terry - - Themis - - Theo - - Theodore - - Thyrius - - Tibarn - - Tim - - Tizian - - Torben - - Torsten - - Trevor - - Trion - - Tristan - - Troy - - Trystan - - Turner - - Tybalt - - Tyr - - Ulbrecht - - Ulrick - - Valentine - - Vallin - - Veit - - Velvel - - Vesper - - Victor - - Vincent - - Vinzenz - - Vuk - - Walter - - Wayne - - Weizen - - Will - - William - - Wulfrun - - Xaver - - Yannik - - York - - Zac - - Zacharias - - Zeb - - Zegrath + prefix: names-vulpkanin-first-male-dataset- + count: 345 diff --git a/Resources/Prototypes/_EE/Datasets/ipc_names.yml b/Resources/Prototypes/_EE/Datasets/ipc_names.yml index 2b46f41ec2..24cf8b5909 100644 --- a/Resources/Prototypes/_EE/Datasets/ipc_names.yml +++ b/Resources/Prototypes/_EE/Datasets/ipc_names.yml @@ -1,1107 +1,11 @@ -- type: dataset +- type: localizedDataset id: IpcFirst values: - - ABEX - - ANCL - - ANTR - - ARMA - - AURA - - BGB - - CBOS - - CDB - - CHOC - - CHRI - - COI - - CRUX - - CYBR - - DRSD - - DUNC - - EBIX - - EXOS - - FIRC - - FIZZ - - FRE - - FXMC - - GIGA - - GOOF - - GRIN - - GUN - - HBL - - HG - - HIU - - HOG - - INC - - JADE - - JJR - - JLLO - - JNLG - - JRD - - JUNO - - KALE - - KANO - - KAZA - - KENT - - KIV - - KOR - - KORA - - KOS - - LUMA - - LUNA - - LYNX - - MET - - MIW - - MNOS - - MRPR - - MSO - - NANO - - NEST - - NEXO - - NOVA - - ORNG - - OSI - - PBU - - PHL - - PKP - - PKR - - PLEX - - PLEXO - - PLIX - - QUES - - QUIN - - QWER - - RIFT - - RR - - RYNO - - RZH - - SINA - - SLI - - STLP - - TKRG - - TRIX - - VERA - - VEXA - - VITA - - VIVE - - VOLT - - WAVE - - WISP - - WJ - - WREN - - XAL - - XENA - - XIS - - XSI - - XYLO - - YAGO - - YPT - - ZACK - - ZARG - - ZEON - - ZOLT - - ZUMA - - ZYLO - - ZYVA + prefix: names-ipc-first-dataset- + count: 100 -- type: dataset +- type: localizedDataset id: IpcLast values: - - 000 - - 001 - - 002 - - 003 - - 004 - - 005 - - 006 - - 007 - - 008 - - 009 - - 010 - - 011 - - 012 - - 013 - - 014 - - 015 - - 016 - - 017 - - 018 - - 019 - - 020 - - 021 - - 022 - - 023 - - 024 - - 025 - - 026 - - 027 - - 028 - - 029 - - 030 - - 031 - - 032 - - 033 - - 034 - - 035 - - 036 - - 037 - - 038 - - 039 - - 040 - - 041 - - 042 - - 043 - - 044 - - 045 - - 046 - - 047 - - 048 - - 049 - - 050 - - 051 - - 052 - - 053 - - 054 - - 055 - - 056 - - 057 - - 058 - - 059 - - 060 - - 061 - - 062 - - 063 - - 064 - - 065 - - 066 - - 067 - - 068 - - 069 - - 070 - - 071 - - 072 - - 073 - - 074 - - 075 - - 076 - - 077 - - 078 - - 079 - - 080 - - 081 - - 082 - - 083 - - 084 - - 085 - - 086 - - 087 - - 088 - - 089 - - 090 - - 091 - - 092 - - 093 - - 094 - - 095 - - 096 - - 097 - - 098 - - 099 - - 100 - - 101 - - 102 - - 103 - - 104 - - 105 - - 106 - - 107 - - 108 - - 109 - - 110 - - 111 - - 112 - - 113 - - 114 - - 115 - - 116 - - 117 - - 118 - - 119 - - 120 - - 121 - - 122 - - 123 - - 124 - - 125 - - 126 - - 127 - - 128 - - 129 - - 130 - - 131 - - 132 - - 133 - - 134 - - 135 - - 136 - - 137 - - 138 - - 139 - - 140 - - 141 - - 142 - - 143 - - 144 - - 145 - - 146 - - 147 - - 148 - - 149 - - 150 - - 151 - - 152 - - 153 - - 154 - - 155 - - 156 - - 157 - - 158 - - 159 - - 160 - - 161 - - 162 - - 163 - - 164 - - 165 - - 166 - - 167 - - 168 - - 169 - - 170 - - 171 - - 172 - - 173 - - 174 - - 175 - - 176 - - 177 - - 178 - - 179 - - 180 - - 181 - - 182 - - 183 - - 184 - - 185 - - 186 - - 187 - - 188 - - 189 - - 190 - - 191 - - 192 - - 193 - - 194 - - 195 - - 196 - - 197 - - 198 - - 199 - - 200 - - 201 - - 202 - - 203 - - 204 - - 205 - - 206 - - 207 - - 208 - - 209 - - 210 - - 211 - - 212 - - 213 - - 214 - - 215 - - 216 - - 217 - - 218 - - 219 - - 220 - - 221 - - 222 - - 223 - - 224 - - 225 - - 226 - - 227 - - 228 - - 229 - - 230 - - 231 - - 232 - - 233 - - 234 - - 235 - - 236 - - 237 - - 238 - - 239 - - 240 - - 241 - - 242 - - 243 - - 244 - - 245 - - 246 - - 247 - - 248 - - 249 - - 250 - - 251 - - 252 - - 253 - - 254 - - 255 - - 256 - - 257 - - 258 - - 259 - - 260 - - 261 - - 262 - - 263 - - 264 - - 265 - - 266 - - 267 - - 268 - - 269 - - 270 - - 271 - - 272 - - 273 - - 274 - - 275 - - 276 - - 277 - - 278 - - 279 - - 280 - - 281 - - 282 - - 283 - - 284 - - 285 - - 286 - - 287 - - 288 - - 289 - - 290 - - 291 - - 292 - - 293 - - 294 - - 295 - - 296 - - 297 - - 298 - - 299 - - 300 - - 301 - - 302 - - 303 - - 304 - - 305 - - 306 - - 307 - - 308 - - 309 - - 310 - - 311 - - 312 - - 313 - - 314 - - 315 - - 316 - - 317 - - 318 - - 319 - - 320 - - 321 - - 322 - - 323 - - 324 - - 325 - - 326 - - 327 - - 328 - - 329 - - 330 - - 331 - - 332 - - 333 - - 334 - - 335 - - 336 - - 337 - - 338 - - 339 - - 340 - - 341 - - 342 - - 343 - - 344 - - 345 - - 346 - - 347 - - 348 - - 349 - - 350 - - 351 - - 352 - - 353 - - 354 - - 355 - - 356 - - 357 - - 358 - - 359 - - 360 - - 361 - - 362 - - 363 - - 364 - - 365 - - 366 - - 367 - - 368 - - 369 - - 370 - - 371 - - 372 - - 373 - - 374 - - 375 - - 376 - - 377 - - 378 - - 379 - - 380 - - 381 - - 382 - - 383 - - 384 - - 385 - - 386 - - 387 - - 388 - - 389 - - 390 - - 391 - - 392 - - 393 - - 394 - - 395 - - 396 - - 397 - - 398 - - 399 - - 400 - - 401 - - 402 - - 403 - - 404 - - 405 - - 406 - - 407 - - 408 - - 409 - - 410 - - 411 - - 412 - - 413 - - 414 - - 415 - - 416 - - 417 - - 418 - - 419 - - 420 - - 421 - - 422 - - 423 - - 424 - - 425 - - 426 - - 427 - - 428 - - 429 - - 430 - - 431 - - 432 - - 433 - - 434 - - 435 - - 436 - - 437 - - 438 - - 439 - - 440 - - 441 - - 442 - - 443 - - 444 - - 445 - - 446 - - 447 - - 448 - - 449 - - 450 - - 451 - - 452 - - 453 - - 454 - - 455 - - 456 - - 457 - - 458 - - 459 - - 460 - - 461 - - 462 - - 463 - - 464 - - 465 - - 466 - - 467 - - 468 - - 469 - - 470 - - 471 - - 472 - - 473 - - 474 - - 475 - - 476 - - 477 - - 478 - - 479 - - 480 - - 481 - - 482 - - 483 - - 484 - - 485 - - 486 - - 487 - - 488 - - 489 - - 490 - - 491 - - 492 - - 493 - - 494 - - 495 - - 496 - - 497 - - 498 - - 499 - - 500 - - 501 - - 502 - - 503 - - 504 - - 505 - - 506 - - 507 - - 508 - - 509 - - 510 - - 511 - - 512 - - 513 - - 514 - - 515 - - 516 - - 517 - - 518 - - 519 - - 520 - - 521 - - 522 - - 523 - - 524 - - 525 - - 526 - - 527 - - 528 - - 529 - - 530 - - 531 - - 532 - - 533 - - 534 - - 535 - - 536 - - 537 - - 538 - - 539 - - 540 - - 541 - - 542 - - 543 - - 544 - - 545 - - 546 - - 547 - - 548 - - 549 - - 550 - - 551 - - 552 - - 553 - - 554 - - 555 - - 556 - - 557 - - 558 - - 559 - - 560 - - 561 - - 562 - - 563 - - 564 - - 565 - - 566 - - 567 - - 568 - - 569 - - 570 - - 571 - - 572 - - 573 - - 574 - - 575 - - 576 - - 577 - - 578 - - 579 - - 580 - - 581 - - 582 - - 583 - - 584 - - 585 - - 586 - - 587 - - 588 - - 589 - - 590 - - 591 - - 592 - - 593 - - 594 - - 595 - - 596 - - 597 - - 598 - - 599 - - 600 - - 601 - - 602 - - 603 - - 604 - - 605 - - 606 - - 607 - - 608 - - 609 - - 610 - - 611 - - 612 - - 613 - - 614 - - 615 - - 616 - - 617 - - 618 - - 619 - - 620 - - 621 - - 622 - - 623 - - 624 - - 625 - - 626 - - 627 - - 628 - - 629 - - 630 - - 631 - - 632 - - 633 - - 634 - - 635 - - 636 - - 637 - - 638 - - 639 - - 640 - - 641 - - 642 - - 643 - - 644 - - 645 - - 646 - - 647 - - 648 - - 649 - - 650 - - 651 - - 652 - - 653 - - 654 - - 655 - - 656 - - 657 - - 658 - - 659 - - 660 - - 661 - - 662 - - 663 - - 664 - - 665 - - 666 - - 667 - - 668 - - 669 - - 670 - - 671 - - 672 - - 673 - - 674 - - 675 - - 676 - - 677 - - 678 - - 679 - - 680 - - 681 - - 682 - - 683 - - 684 - - 685 - - 686 - - 687 - - 688 - - 689 - - 690 - - 691 - - 692 - - 693 - - 694 - - 695 - - 696 - - 697 - - 698 - - 699 - - 700 - - 701 - - 702 - - 703 - - 704 - - 705 - - 706 - - 707 - - 708 - - 709 - - 710 - - 711 - - 712 - - 713 - - 714 - - 715 - - 716 - - 717 - - 718 - - 719 - - 720 - - 721 - - 722 - - 723 - - 724 - - 725 - - 726 - - 727 - - 728 - - 729 - - 730 - - 731 - - 732 - - 733 - - 734 - - 735 - - 736 - - 737 - - 738 - - 739 - - 740 - - 741 - - 742 - - 743 - - 744 - - 745 - - 746 - - 747 - - 748 - - 749 - - 750 - - 751 - - 752 - - 753 - - 754 - - 755 - - 756 - - 757 - - 758 - - 759 - - 760 - - 761 - - 762 - - 763 - - 764 - - 765 - - 766 - - 767 - - 768 - - 769 - - 770 - - 771 - - 772 - - 773 - - 774 - - 775 - - 776 - - 777 - - 778 - - 779 - - 780 - - 781 - - 782 - - 783 - - 784 - - 785 - - 786 - - 787 - - 788 - - 789 - - 790 - - 791 - - 792 - - 793 - - 794 - - 795 - - 796 - - 797 - - 798 - - 799 - - 800 - - 801 - - 802 - - 803 - - 804 - - 805 - - 806 - - 807 - - 808 - - 809 - - 810 - - 811 - - 812 - - 813 - - 814 - - 815 - - 816 - - 817 - - 818 - - 819 - - 820 - - 821 - - 822 - - 823 - - 824 - - 825 - - 826 - - 827 - - 828 - - 829 - - 830 - - 831 - - 832 - - 833 - - 834 - - 835 - - 836 - - 837 - - 838 - - 839 - - 840 - - 841 - - 842 - - 843 - - 844 - - 845 - - 846 - - 847 - - 848 - - 849 - - 850 - - 851 - - 852 - - 853 - - 854 - - 855 - - 856 - - 857 - - 858 - - 859 - - 860 - - 861 - - 862 - - 863 - - 864 - - 865 - - 866 - - 867 - - 868 - - 869 - - 870 - - 871 - - 872 - - 873 - - 874 - - 875 - - 876 - - 877 - - 878 - - 879 - - 880 - - 881 - - 882 - - 883 - - 884 - - 885 - - 886 - - 887 - - 888 - - 889 - - 890 - - 891 - - 892 - - 893 - - 894 - - 895 - - 896 - - 897 - - 898 - - 899 - - 900 - - 901 - - 902 - - 903 - - 904 - - 905 - - 906 - - 907 - - 908 - - 909 - - 910 - - 911 - - 912 - - 913 - - 914 - - 915 - - 916 - - 917 - - 918 - - 919 - - 920 - - 921 - - 922 - - 923 - - 924 - - 925 - - 926 - - 927 - - 928 - - 929 - - 930 - - 931 - - 932 - - 933 - - 934 - - 935 - - 936 - - 937 - - 938 - - 939 - - 940 - - 941 - - 942 - - 943 - - 944 - - 945 - - 946 - - 947 - - 948 - - 949 - - 950 - - 951 - - 952 - - 953 - - 954 - - 955 - - 956 - - 957 - - 958 - - 959 - - 960 - - 961 - - 962 - - 963 - - 964 - - 965 - - 966 - - 967 - - 968 - - 969 - - 970 - - 971 - - 972 - - 973 - - 974 - - 975 - - 976 - - 977 - - 978 - - 979 - - 980 - - 981 - - 982 - - 983 - - 984 - - 985 - - 986 - - 987 - - 988 - - 989 - - 990 - - 991 - - 992 - - 993 - - 994 - - 995 - - 996 - - 997 - - 998 - - 999 \ No newline at end of file + prefix: names-ipc-last-dataset- + count: 1000 From 591a8fbb2df7f7c910c05e38e9014b7b7a0181e7 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 01:43:39 +0000 Subject: [PATCH 80/91] :trollface: --- .../Locale/en-US/_DV/datasets/names/oni.ftl | 22 +++++++++---------- .../_DV/Datasets/Names/oni_female.yml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/_DV/datasets/names/oni.ftl b/Resources/Locale/en-US/_DV/datasets/names/oni.ftl index 845436f643..f1ab066a60 100644 --- a/Resources/Locale/en-US/_DV/datasets/names/oni.ftl +++ b/Resources/Locale/en-US/_DV/datasets/names/oni.ftl @@ -36,21 +36,21 @@ names-oni-last-female-dataset-5 = Akiho names-oni-last-female-dataset-6 = Akimi #明 names-oni-last-female-dataset-7 = Akashi -names-oni-last-female-dataset-7 = Saya +names-oni-last-female-dataset-8 = Saya #月 -names-oni-last-female-dataset-8 = Aporo -names-oni-last-female-dataset-9 = Arute -names-oni-last-female-dataset-10 = Meguru +names-oni-last-female-dataset-9 = Aporo +names-oni-last-female-dataset-10 = Arute +names-oni-last-female-dataset-11 = Meguru #天 -names-oni-last-female-dataset-11 = Tiara -names-oni-last-female-dataset-12 = Suisei +names-oni-last-female-dataset-12 = Tiara +names-oni-last-female-dataset-13 = Suisei #水 -names-oni-last-female-dataset-13 = Io -names-oni-last-female-dataset-14 = Aoi -names-oni-last-female-dataset-15 = Mizu +names-oni-last-female-dataset-14 = Io +names-oni-last-female-dataset-15 = Aoi +names-oni-last-female-dataset-16 = Mizu #epic references -names-oni-last-female-dataset-16 = Shuten -names-oni-last-female-dataset-17 = Suika +names-oni-last-female-dataset-17 = Shuten +names-oni-last-female-dataset-18 = Suika # Location names-oni-location-dataset-1 = Amiboshi diff --git a/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml b/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml index 458f76e02e..e5cf661b03 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/oni_female.yml @@ -2,4 +2,4 @@ id: NamesOniFemale values: prefix: names-oni-last-female-dataset- - count: 17 + count: 18 From 9e99324fdf46385af764f5453a3cc46cee18cd0e Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 02:00:58 +0000 Subject: [PATCH 81/91] feroxi ops --- Resources/Prototypes/_DV/Species/feroxi.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/_DV/Species/feroxi.yml b/Resources/Prototypes/_DV/Species/feroxi.yml index 44a8d1d704..504152b3e4 100644 --- a/Resources/Prototypes/_DV/Species/feroxi.yml +++ b/Resources/Prototypes/_DV/Species/feroxi.yml @@ -8,9 +8,9 @@ markingLimits: MobFeroxiMarkingLimits dollPrototype: MobFeroxiDummy skinColoration: Hues - maleFirstNames: names_first_male - femaleFirstNames: names_first_female - lastNames: names_last + maleFirstNames: NamesFirstMale + femaleFirstNames: NamesFirstFemale + lastNames: NamesLast - type: speciesBaseSprites id: MobFeroxiSprites From 5e6a0de6cb570dd84134b58105f2e2370f4531b2 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 02:18:26 +0000 Subject: [PATCH 82/91] bump --- Resources/Prototypes/_DV/Catalog/Cargo/cargo_vending.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_DV/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/_DV/Catalog/Cargo/cargo_vending.yml index 8f0336c67e..382fe6cf15 100644 --- a/Resources/Prototypes/_DV/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/_DV/Catalog/Cargo/cargo_vending.yml @@ -4,7 +4,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockPrideFilled - cost: 1300 + cost: 1400 category: Service group: market From 1dee734f199d7ecc6f94118d37db8bc82607474b Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 07:16:38 +0000 Subject: [PATCH 83/91] dinkleberg --- Resources/Prototypes/_Impstation/Species/thaven.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/_Impstation/Species/thaven.yml b/Resources/Prototypes/_Impstation/Species/thaven.yml index 54525c9edc..bfab12a63a 100644 --- a/Resources/Prototypes/_Impstation/Species/thaven.yml +++ b/Resources/Prototypes/_Impstation/Species/thaven.yml @@ -8,8 +8,8 @@ markingLimits: MobThavenMarkingLimits dollPrototype: MobThavenDummy skinColoration: Hues - maleFirstNames: names_thaven - femaleFirstNames: names_thaven + maleFirstNames: NamesThaven + femaleFirstNames: NamesThaven naming: First sexes: - Male From f0078b8360f774ad2782e70598d66f2d516d6625 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 16:44:25 +0000 Subject: [PATCH 84/91] update thaven names to use dataset --- .../_Impstation/datasets/names/thaven.ftl | 76 +++++++++++++++++ .../_Impstation/Datasets/Names/thaven.yml | 82 +------------------ 2 files changed, 80 insertions(+), 78 deletions(-) create mode 100644 Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl diff --git a/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl b/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl new file mode 100644 index 0000000000..1cba9071d6 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl @@ -0,0 +1,76 @@ +names-thaven-dataset-1 = Honesty +names-thaven-dataset-2 = Have Mercy +names-thaven-dataset-3 = Give Thanks To Thine Ancestors +names-thaven-dataset-4 = Obedience +names-thaven-dataset-5 = Search The Scriptures +names-thaven-dataset-6 = Learn Many Things +names-thaven-dataset-7 = Praise The Gods +names-thaven-dataset-8 = Fear Be Unto The Gods +names-thaven-dataset-9 = Joy In Sorrow +names-thaven-dataset-10 = Die Well +names-thaven-dataset-11 = Wander Far And Wide +names-thaven-dataset-12 = Lament The Fallen +names-thaven-dataset-13 = Prove Thy Worth +names-thaven-dataset-14 = Desire +names-thaven-dataset-15 = Charity +names-thaven-dataset-16 = Faith +names-thaven-dataset-17 = Harmony +names-thaven-dataset-18 = Modesty +names-thaven-dataset-19 = Honor Thy Family +names-thaven-dataset-20 = Patient As The Dead +names-thaven-dataset-21 = Temper Thy Heart And Soul +names-thaven-dataset-22 = Tell Only The Truth +names-thaven-dataset-23 = Thou Art Loved +names-thaven-dataset-24 = Thou Art Damned +names-thaven-dataset-25 = Aid The Righteous +names-thaven-dataset-26 = Be Courteous +names-thaven-dataset-27 = Make Peace +names-thaven-dataset-28 = Fear The Gods +names-thaven-dataset-29 = Forsake Alcohol +names-thaven-dataset-30 = Fight Evil At All Costs +names-thaven-dataset-31 = Shun The Unworthy +names-thaven-dataset-32 = Gain Wisdom Through Experience +names-thaven-dataset-33 = Live Well And Die Young +names-thaven-dataset-34 = Face Trials And Tribulations +names-thaven-dataset-35 = Pardon Worthy Criminals +names-thaven-dataset-36 = Find Merit In All Things +names-thaven-dataset-37 = Deny Sin Its Due +names-thaven-dataset-38 = Stand Fast Against Evil +names-thaven-dataset-39 = Do As The Gods Will +names-thaven-dataset-40 = Zeal Of The Land +names-thaven-dataset-41 = Be Courteous To Others +names-thaven-dataset-42 = Considerate +names-thaven-dataset-43 = Discipline +names-thaven-dataset-44 = Do Right By Your Neighbors +names-thaven-dataset-45 = Serve Your Purpose +names-thaven-dataset-46 = Good Things Come +names-thaven-dataset-47 = Magnify Injustice +names-thaven-dataset-48 = Legitimate First +names-thaven-dataset-49 = Take Pity On The Less-Fortunate +names-thaven-dataset-50 = Redeem Thy Past Mistakes +names-thaven-dataset-51 = Rejoice +names-thaven-dataset-52 = Repent All Ye Sinners +names-thaven-dataset-53 = Return To Thy Homeland +names-thaven-dataset-54 = Deliverance +names-thaven-dataset-55 = See Truth +names-thaven-dataset-56 = Drink Full And Descend +names-thaven-dataset-57 = Do Thy Best +names-thaven-dataset-58 = Live The Day Like Thy Last +names-thaven-dataset-59 = Adaptability +names-thaven-dataset-60 = Endurance +names-thaven-dataset-61 = Negativity +names-thaven-dataset-62 = Attentiveness +names-thaven-dataset-63 = Foppishness +names-thaven-dataset-64 = One Before All +names-thaven-dataset-65 = Purpose +names-thaven-dataset-66 = Simplicity +names-thaven-dataset-67 = Minimalism +names-thaven-dataset-68 = Proselytism +names-thaven-dataset-69 = Conformity +names-thaven-dataset-70 = The Perils of Hedonism +names-thaven-dataset-71 = Volition +names-thaven-dataset-72 = Gumption +names-thaven-dataset-73 = Providence +names-thaven-dataset-74 = Righteousness +names-thaven-dataset-75 = Wisdom +names-thaven-dataset-76 = Cunning diff --git a/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml b/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml index 03ff631273..5fd7ccfc68 100644 --- a/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml +++ b/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml @@ -1,79 +1,5 @@ -- type: dataset - id: names_thaven +- type: localizedDataset + id: NamesThaven values: - - Honesty - - Have Mercy - - Give Thanks To Thine Ancestors - - Obedience - - Search The Scriptures - - Learn Many Things - - Praise The Gods - - Fear Be Unto The Gods - - Joy In Sorrow - - Die Well - - Wander Far And Wide - - Lament The Fallen - - Prove Thy Worth - - Desire - - Charity - - Faith - - Harmony - - Modesty - - Honor Thy Family - - Patient As The Dead - - Temper Thy Heart And Soul - - Tell Only The Truth - - Thou Art Loved - - Thou Art Damned - - Aid The Righteous - - Be Courteous - - Make Peace - - Fear The Gods - - Forsake Alcohol - - Fight Evil At All Costs - - Shun The Unworthy - - Gain Wisdom Through Experience - - Live Well And Die Young - - Face Trials And Tribulations - - Pardon Worthy Criminals - - Find Merit In All Things - - Deny Sin Its Due - - Stand Fast Against Evil - - Do As The Gods Will - - Zeal Of The Land - - Be Courteous To Others - - Considerate - - Discipline - - Do Right By Your Neighbors - - Serve Your Purpose - - Good Things Come - - Magnify Injustice - - Legitimate First - - Take Pity On The Less-Fortunate - - Redeem Thy Past Mistakes - - Rejoice - - Repent All Ye Sinners - - Return To Thy Homeland - - Deliverance - - See Truth - - Drink Full And Descend - - Do Thy Best - - Live The Day Like Thy Last - - Adaptability - - Endurance - - Negativity - - Attentiveness - - Foppishness - - One Before All - - Purpose - - Simplicity - - Minimalism - - Proselytism - - Conformity - - The Perils of Hedonism - - Volition - - Gumption - - Providence - - Righteousness - - Wisdom - - Cunning + prefix: names-thaven-dataset- + count: 76 From 823df62ced717c875c7031b1e469beea9593ea4c Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Mon, 10 Mar 2025 02:21:56 +0100 Subject: [PATCH 85/91] fix nukeops commander name (#35753) --- Resources/Prototypes/GameRules/roundstart.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 8b3cb48ade..d5ee96617a 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -124,7 +124,7 @@ - type: RandomMetadata nameSegments: - nukeops-role-commander - - SyndicateNamesElite + - NamesSyndicateElite - type: NpcFactionMember factions: - Syndicate From c430da967c971010e1fd159ae8481dc576d662e7 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 17:19:02 +0000 Subject: [PATCH 86/91] :trollface: --- Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml b/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml index 5d165dc351..df290b3c94 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml @@ -1,5 +1,5 @@ - type: localizedDataset id: NamesRodentiaFemale values: - prefix: rodentia-names-last-female-dataset- + prefix: rodentia-names-first-female-dataset- count: 159 From 49b934cc1d37a61d61353c3256b27000d6a33b77 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 17:37:23 +0000 Subject: [PATCH 87/91] migrate metem away --- Resources/Migrations/deltaMigrations.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Resources/Migrations/deltaMigrations.yml b/Resources/Migrations/deltaMigrations.yml index c17b03a912..362c2c98bb 100644 --- a/Resources/Migrations/deltaMigrations.yml +++ b/Resources/Migrations/deltaMigrations.yml @@ -142,3 +142,7 @@ MagazineMagnumSubMachineGunRubber: null # 2025-03-01 FoodMealGrilledCheese: FoodBakedGrilledCheeseSandwich BarSignWhiskeyEcho: BarSignWhiskeyEchoes + +# 2025-03-10 +MetempsychoticMachine: null +MetempsychoticMachineCircuitboard: null From a54852eaf18e70d48f504857fa87cfb5e8db7760 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 19:03:57 +0000 Subject: [PATCH 88/91] fix rodentia --- Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml b/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml index df290b3c94..fbab77cbd0 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/rodentia_female.yml @@ -1,5 +1,5 @@ - type: localizedDataset id: NamesRodentiaFemale values: - prefix: rodentia-names-first-female-dataset- + prefix: names-rodentia-first-female-dataset- count: 159 From 38a7aeb88537f154c45c029bfd424053d9e7bcc0 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Mon, 10 Mar 2025 19:46:21 +0000 Subject: [PATCH 89/91] evil --- .../en-US/_DV/datasets/names/rodentia.ftl | 114 +++++++++--------- .../_DV/Datasets/Names/rodentia_male.yml | 2 +- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl b/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl index ce2a1e0895..06260dc5a8 100644 --- a/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl +++ b/Resources/Locale/en-US/_DV/datasets/names/rodentia.ftl @@ -114,65 +114,65 @@ names-rodentia-first-male-dataset-107 = Cosmo names-rodentia-first-male-dataset-108 = Ziggy names-rodentia-first-male-dataset-109 = Freddie names-rodentia-first-male-dataset-110 = Chester -names-rodentia-first-male-dataset-120 = Harvey -names-rodentia-first-male-dataset-121 = Rudy -names-rodentia-first-male-dataset-122 = Ollie -names-rodentia-first-male-dataset-123 = Percy -names-rodentia-first-male-dataset-124 = Theo -names-rodentia-first-male-dataset-125 = Winston -names-rodentia-first-male-dataset-126 = Ernie +names-rodentia-first-male-dataset-111 = Harvey +names-rodentia-first-male-dataset-112 = Rudy +names-rodentia-first-male-dataset-113 = Ollie +names-rodentia-first-male-dataset-114 = Percy +names-rodentia-first-male-dataset-115 = Theo +names-rodentia-first-male-dataset-116 = Winston +names-rodentia-first-male-dataset-117 = Ernie # "surnames" -names-rodentia-first-male-dataset-127 = Bramblewood -names-rodentia-first-male-dataset-128 = Burrows -names-rodentia-first-male-dataset-129 = Burrowsford -names-rodentia-first-male-dataset-130 = Cheesetail -names-rodentia-first-male-dataset-131 = Cloverfield -names-rodentia-first-male-dataset-132 = Cloverwood -names-rodentia-first-male-dataset-133 = Ferncroft -names-rodentia-first-male-dataset-134 = Flopshire -names-rodentia-first-male-dataset-135 = Flopshire -names-rodentia-first-male-dataset-136 = Fluffbottom -names-rodentia-first-male-dataset-137 = Furrington -names-rodentia-first-male-dataset-138 = Furwell -names-rodentia-first-male-dataset-139 = Furwood -names-rodentia-first-male-dataset-140 = Gnawson -names-rodentia-first-male-dataset-141 = Linden -names-rodentia-first-male-dataset-142 = Little -names-rodentia-first-male-dataset-143 = Maplewood -names-rodentia-first-male-dataset-144 = Meadows -names-rodentia-first-male-dataset-145 = Munchford -names-rodentia-first-male-dataset-146 = Nibblesnout -names-rodentia-first-male-dataset-147 = Nibbleston -names-rodentia-first-male-dataset-148 = Nibblewood -names-rodentia-first-male-dataset-149 = Oakcroft -names-rodentia-first-male-dataset-150 = Oakley -names-rodentia-first-male-dataset-151 = Pawsbrook -names-rodentia-first-male-dataset-152 = Pawsford -names-rodentia-first-male-dataset-153 = Pawsley -names-rodentia-first-male-dataset-154 = Pawswell -names-rodentia-first-male-dataset-155 = Pawsworth -names-rodentia-first-male-dataset-156 = Scamperdale -names-rodentia-first-male-dataset-157 = Scamperford -names-rodentia-first-male-dataset-158 = Scamperley -names-rodentia-first-male-dataset-159 = Scamperwood -names-rodentia-first-male-dataset-160 = Scurryfoot -names-rodentia-first-male-dataset-161 = Scuttleby -names-rodentia-first-male-dataset-162 = Skitters -names-rodentia-first-male-dataset-163 = Stilton -names-rodentia-first-male-dataset-164 = Squeakerton -names-rodentia-first-male-dataset-165 = Squeakson -names-rodentia-first-male-dataset-166 = Squeaktooth -names-rodentia-first-male-dataset-167 = Squeakwell -names-rodentia-first-male-dataset-168 = Squeakwood -names-rodentia-first-male-dataset-169 = Tailsbury -names-rodentia-first-male-dataset-170 = Thumperton -names-rodentia-first-male-dataset-171 = Thumpford -names-rodentia-first-male-dataset-172 = Whiskerby -names-rodentia-first-male-dataset-173 = Whiskerfield -names-rodentia-first-male-dataset-174 = Whiskershire -names-rodentia-first-male-dataset-175 = Whiskersnout -names-rodentia-first-male-dataset-176 = Whiskervale +names-rodentia-first-male-dataset-118 = Bramblewood +names-rodentia-first-male-dataset-119 = Burrows +names-rodentia-first-male-dataset-120 = Burrowsford +names-rodentia-first-male-dataset-121 = Cheesetail +names-rodentia-first-male-dataset-122 = Cloverfield +names-rodentia-first-male-dataset-123 = Cloverwood +names-rodentia-first-male-dataset-124 = Ferncroft +names-rodentia-first-male-dataset-125 = Flopshire +names-rodentia-first-male-dataset-126 = Flopshire +names-rodentia-first-male-dataset-127 = Fluffbottom +names-rodentia-first-male-dataset-128 = Furrington +names-rodentia-first-male-dataset-129 = Furwell +names-rodentia-first-male-dataset-130 = Furwood +names-rodentia-first-male-dataset-131 = Gnawson +names-rodentia-first-male-dataset-132 = Linden +names-rodentia-first-male-dataset-133 = Little +names-rodentia-first-male-dataset-134 = Maplewood +names-rodentia-first-male-dataset-135 = Meadows +names-rodentia-first-male-dataset-136 = Munchford +names-rodentia-first-male-dataset-137 = Nibblesnout +names-rodentia-first-male-dataset-138 = Nibbleston +names-rodentia-first-male-dataset-139 = Nibblewood +names-rodentia-first-male-dataset-140 = Oakcroft +names-rodentia-first-male-dataset-141 = Oakley +names-rodentia-first-male-dataset-142 = Pawsbrook +names-rodentia-first-male-dataset-143 = Pawsford +names-rodentia-first-male-dataset-144 = Pawsley +names-rodentia-first-male-dataset-145 = Pawswell +names-rodentia-first-male-dataset-146 = Pawsworth +names-rodentia-first-male-dataset-147 = Scamperdale +names-rodentia-first-male-dataset-148 = Scamperford +names-rodentia-first-male-dataset-149 = Scamperley +names-rodentia-first-male-dataset-150 = Scamperwood +names-rodentia-first-male-dataset-151 = Scurryfoot +names-rodentia-first-male-dataset-152 = Scuttleby +names-rodentia-first-male-dataset-153 = Skitters +names-rodentia-first-male-dataset-154 = Stilton +names-rodentia-first-male-dataset-155 = Squeakerton +names-rodentia-first-male-dataset-156 = Squeakson +names-rodentia-first-male-dataset-157 = Squeaktooth +names-rodentia-first-male-dataset-158 = Squeakwell +names-rodentia-first-male-dataset-159 = Squeakwood +names-rodentia-first-male-dataset-160 = Tailsbury +names-rodentia-first-male-dataset-161 = Thumperton +names-rodentia-first-male-dataset-162 = Thumpford +names-rodentia-first-male-dataset-163 = Whiskerby +names-rodentia-first-male-dataset-164 = Whiskerfield +names-rodentia-first-male-dataset-165 = Whiskershire +names-rodentia-first-male-dataset-166 = Whiskersnout +names-rodentia-first-male-dataset-167 = Whiskervale ## Female, first # generic names diff --git a/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml b/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml index 10c0f0e4c6..6a61c5d4ff 100644 --- a/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml +++ b/Resources/Prototypes/_DV/Datasets/Names/rodentia_male.yml @@ -2,4 +2,4 @@ id: NamesRodentiaMale values: prefix: names-rodentia-first-male-dataset- - count: 176 + count: 167 From 3bba1161ca65c0faf04867d74e5ba53e78b4da47 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Tue, 11 Mar 2025 22:47:57 +0000 Subject: [PATCH 90/91] :trollface: --- Resources/Prototypes/_DV/Species/felinid.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/_DV/Species/felinid.yml b/Resources/Prototypes/_DV/Species/felinid.yml index f7e7f0329b..2e891ce316 100644 --- a/Resources/Prototypes/_DV/Species/felinid.yml +++ b/Resources/Prototypes/_DV/Species/felinid.yml @@ -6,6 +6,7 @@ sprites: MobHumanSprites markingLimits: MobFelinidMarkingLimits dollPrototype: MobFelinidDummy + skinColoration: Hues baseScale: "0.8, 0.8" - type: markingPoints From 8c08b4c9165862e2030e13203c42360cacb5dff6 Mon Sep 17 00:00:00 2001 From: deltanedas <@deltanedas:kde.org> Date: Thu, 13 Mar 2025 09:39:07 +0000 Subject: [PATCH 91/91] comment det locker stuff --- .../Prototypes/Catalog/Fills/Lockers/security.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 87960872d0..f9ff2465e1 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -190,10 +190,12 @@ contents: - id: ClothingEyesGlassesSecurity # prob: 0.3 # DeltaV - standardise until HUD balance worked out - - id: ClothingHeadHatDetGadget -# - id: ClothingNeckTieDet # DeltaV - removed for incongruence -# - id: ClothingOuterVestDetective # DeltaV - removed for incongruence -# - id: ClothingOuterCoatDetective # DeltaV - removed for incongruence + # Begin DeltaV Removals - removed for incongruence + #- id: ClothingHeadHatDetGadget + #- id: ClothingNeckTieDet + #- id: ClothingOuterVestDetective + #- id: ClothingOuterCoatDetective + # End DeltaV Removals - id: ClothingHeadsetSecurity # DeltaV - add spare headset. - id: FlippoEngravedLighter # DeltaV - add due to removal of trench coat - id: FlashlightSeclite