From f52b453edbc6431e8df3940b222cb307de39b54b Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 20 Feb 2026 13:15:19 +0100 Subject: [PATCH 01/36] Added doll species --- Content.Server/Mobs/CritMobActionsSystem.cs | 2 +- .../Actions/EntitySystems/ShellSystem.cs | 29 ++ .../_Starlight/Medical/Surgery/OrganSystem.cs | 198 +++++++- .../Damage/Components/DamageableComponent.cs | 8 + .../Damage/Systems/DamageableSystem.API.cs | 59 ++- Content.Shared/Magic/SharedMagicSystem.cs | 16 +- .../Actions/Components/ShellComponent.cs | 32 ++ .../EntitySystems/SurgeryActionSystem.cs | 62 +++ .../Actions/Events/SurgeryActionEvent.cs | 26 + .../Magic/Events/SpawnItemInHandEvent.cs | 7 + .../Medical/Surgery/Components/_Organs.cs | 25 + .../Components/VentCrawlerComponent.cs | 5 + .../SharedVentCrawlSystem.Tube.cs | 8 + .../en-US/_Starlight/actions/actions/doll.ftl | 2 + .../en-US/_Starlight/datasets/names/doll.ftl | 449 ++++++++++++++++++ .../metabolism/metabolizer-types.ftl | 1 + .../en-US/_Starlight/species/species.ftl | 1 + .../Chemistry/metabolizer_types.yml | 4 + .../Customization/Markings/human_noses.yml | 10 +- .../Mobs/Customization/Markings/tattoos.yml | 8 +- .../Entities/Objects/Consumable/Food/meat.yml | 5 + .../Objects/Consumable/Food/produce.yml | 1 + .../Entities/Objects/Consumable/Food/soup.yml | 1 + Resources/Prototypes/Guidebook/species.yml | 1 + .../Loadouts/LoadoutGroups/loadout_groups.yml | 7 + .../Loadouts/LoadoutGroups/medical.yml | 1 + .../Loadouts/Miscellaneous/survival.yml | 250 ++++++++++ .../Reagents/Consumable/Drink/alcohol.yml | 62 ++- Resources/Prototypes/Reagents/biological.yml | 16 + Resources/Prototypes/Reagents/toxins.yml | 15 +- .../Prototypes/_Starlight/Actions/doll.yml | 61 +++ .../_Starlight/Body/Organs/doll.yml | 368 ++++++++++++++ .../Prototypes/_Starlight/Body/Parts/doll.yml | 153 ++++++ .../_Starlight/Body/Prototypes/doll.yml | 73 +++ .../Catalog/Fills/Boxes/emergency.yml | 238 ++++++++++ .../_Starlight/Damage/modifier_sets.yml | 8 + .../_Starlight/Datasets/Names/doll.yml | 17 + .../Mobs/Customization/Marking/doll.yml | 168 +++++++ .../Mobs/Customization/Marking/generic.yml | 8 +- .../_Starlight/Entities/Mobs/Player/doll.yml | 5 + .../Entities/Mobs/Player/humanoid.yml | 1 + .../Entities/Mobs/Species/appearances.yml | 9 + .../_Starlight/Entities/Mobs/Species/doll.yml | 73 +++ .../Objects/Consumable/Food/snacks.yml | 55 +++ .../_Starlight/Guidebook/species.yml | 6 + .../Reagents/Consumable/Drink/alcohol.yml | 14 + .../Prototypes/_Starlight/Species/doll.yml | 173 +++++++ .../Surgery/amputation_surgeries.yml | 2 + .../Surgery/attachment_surgeries.yml | 3 + .../_Starlight/Surgery/organs_steps.yml | 34 ++ .../_Starlight/Surgery/surgeries.yml | 99 +++- .../_Starlight/Surgery/surgery_steps.yml | 58 +++ Resources/Prototypes/_Starlight/tags.yml | 3 + .../ServerInfo/Guidebook/Mobs/Species.xml | 5 +- .../_Starlight/Guidebook/Mobs/Doll.xml | 32 ++ .../Customization/Doll/shell.rsi/head_f.png | Bin 0 -> 428 bytes .../Customization/Doll/shell.rsi/head_m.png | Bin 0 -> 424 bytes .../Customization/Doll/shell.rsi/l_arm.png | Bin 0 -> 267 bytes .../Customization/Doll/shell.rsi/l_foot.png | Bin 0 -> 263 bytes .../Customization/Doll/shell.rsi/l_hand.png | Bin 0 -> 280 bytes .../Customization/Doll/shell.rsi/l_leg.png | Bin 0 -> 267 bytes .../Customization/Doll/shell.rsi/meta.json | 59 +++ .../Customization/Doll/shell.rsi/r_arm.png | Bin 0 -> 276 bytes .../Customization/Doll/shell.rsi/r_foot.png | Bin 0 -> 269 bytes .../Customization/Doll/shell.rsi/r_hand.png | Bin 0 -> 279 bytes .../Customization/Doll/shell.rsi/r_leg.png | Bin 0 -> 289 bytes .../Customization/Doll/shell.rsi/torso_f.png | Bin 0 -> 868 bytes .../Customization/Doll/shell.rsi/torso_m.png | Bin 0 -> 761 bytes .../Doll/organs.rsi/brain-inhand-left.png | Bin 0 -> 411 bytes .../Doll/organs.rsi/brain-inhand-right.png | Bin 0 -> 415 bytes .../Mobs/Species/Doll/organs.rsi/brain.png | Bin 0 -> 457 bytes .../Mobs/Species/Doll/organs.rsi/ears.png | Bin 0 -> 704 bytes .../Species/Doll/organs.rsi/eyeball-l.png | Bin 0 -> 692 bytes .../Species/Doll/organs.rsi/eyeball-r.png | Bin 0 -> 804 bytes .../Species/Doll/organs.rsi/heart-off.png | Bin 0 -> 302 bytes .../Mobs/Species/Doll/organs.rsi/heart-on.png | Bin 0 -> 498 bytes .../Mobs/Species/Doll/organs.rsi/kidney-l.png | Bin 0 -> 306 bytes .../Mobs/Species/Doll/organs.rsi/kidney-r.png | Bin 0 -> 358 bytes .../Mobs/Species/Doll/organs.rsi/liver.png | Bin 0 -> 297 bytes .../Mobs/Species/Doll/organs.rsi/lung-l.png | Bin 0 -> 380 bytes .../Mobs/Species/Doll/organs.rsi/lung-r.png | Bin 0 -> 371 bytes .../Mobs/Species/Doll/organs.rsi/meta.json | 68 +++ .../Mobs/Species/Doll/organs.rsi/shell.png | Bin 0 -> 290 bytes .../Mobs/Species/Doll/organs.rsi/stomach.png | Bin 0 -> 509 bytes .../Mobs/Species/Doll/organs.rsi/tongue.png | Bin 0 -> 338 bytes .../Mobs/Species/Doll/parts.rsi/doll.png | Bin 0 -> 1637 bytes .../Mobs/Species/Doll/parts.rsi/head.png | Bin 0 -> 986 bytes .../Mobs/Species/Doll/parts.rsi/l_arm.png | Bin 0 -> 661 bytes .../Mobs/Species/Doll/parts.rsi/l_foot.png | Bin 0 -> 567 bytes .../Mobs/Species/Doll/parts.rsi/l_hand.png | Bin 0 -> 579 bytes .../Mobs/Species/Doll/parts.rsi/l_leg.png | Bin 0 -> 753 bytes .../Mobs/Species/Doll/parts.rsi/meta.json | 55 +++ .../Mobs/Species/Doll/parts.rsi/r_arm.png | Bin 0 -> 678 bytes .../Mobs/Species/Doll/parts.rsi/r_foot.png | Bin 0 -> 561 bytes .../Mobs/Species/Doll/parts.rsi/r_hand.png | Bin 0 -> 583 bytes .../Mobs/Species/Doll/parts.rsi/r_leg.png | Bin 0 -> 745 bytes .../Mobs/Species/Doll/parts.rsi/torso.png | Bin 0 -> 1245 bytes 97 files changed, 3108 insertions(+), 51 deletions(-) create mode 100644 Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs create mode 100644 Content.Shared/_Starlight/Actions/Components/ShellComponent.cs create mode 100644 Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs create mode 100644 Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs create mode 100644 Resources/Locale/en-US/_Starlight/actions/actions/doll.ftl create mode 100644 Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl create mode 100644 Resources/Prototypes/_Starlight/Actions/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Body/Organs/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Body/Parts/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Datasets/Names/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml create mode 100644 Resources/Prototypes/_Starlight/Species/doll.yml create mode 100644 Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-left.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-right.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/ears.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-l.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-r.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-off.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-on.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-l.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-r.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/liver.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-l.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-r.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/shell.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/stomach.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/tongue.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/doll.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/head.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/torso.png diff --git a/Content.Server/Mobs/CritMobActionsSystem.cs b/Content.Server/Mobs/CritMobActionsSystem.cs index 7077f52b8bcd..53bf06ac1e2d 100644 --- a/Content.Server/Mobs/CritMobActionsSystem.cs +++ b/Content.Server/Mobs/CritMobActionsSystem.cs @@ -49,7 +49,7 @@ private void OnSuccumb(EntityUid uid, MobStateActionsComponent component, CritSu private void OnFakeDeath(EntityUid uid, MobStateActionsComponent component, CritFakeDeathEvent args) { - if (!_mobState.IsCritical(uid)) + if (_mobState.IsDead(uid)) //Starlight - changed to checking if the creature is *dead*, rather than not critical, now we can use the same action to fake death on anyone still alive. return; //Starlight Start diff --git a/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs new file mode 100644 index 000000000000..4fee96fbce64 --- /dev/null +++ b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs @@ -0,0 +1,29 @@ +using Content.Shared.Actions; +using Content.Shared._Starlight.Actions.Components; + +namespace Content.Server._Starlight.Actions.EntitySystems; + +public sealed class ShellSystem : EntitySystem +{ + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnCompRemove); + } + + private void OnMapInit(EntityUid uid, ShellComponent comp, MapInitEvent args) + { + _actionsSystem.AddAction(uid, ref comp.BreakShellActionEntity, comp.BreakShellAction); + _actionsSystem.AddAction(uid, ref comp.GenerateShellPieceActionEntity, comp.GenerateShellPieceAction); + } + + private void OnCompRemove(EntityUid uid, ShellComponent comp, ComponentShutdown args) + { + _actionsSystem.RemoveAction(uid, comp.BreakShellActionEntity); + _actionsSystem.RemoveAction(uid, comp.GenerateShellPieceActionEntity); + } +} \ No newline at end of file diff --git a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs index 7ea4365db5c1..8df4eca35618 100644 --- a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs @@ -1,13 +1,17 @@ using System.Linq; using Content.Server._Starlight.Language; using Content.Server.Humanoid; +using Content.Shared._Starlight.Actions.Components; using Content.Shared.Actions; +using Content.Shared.Body.Part; +using Content.Shared.Body.Systems; using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; using Content.Shared.Eye.Blinding.Components; using Content.Shared.Eye.Blinding.Systems; using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; using Content.Shared.Radio.Components; using Content.Shared.Speech.Muting; using Content.Shared._Starlight.Cybernetics; @@ -29,14 +33,16 @@ namespace Content.Server._Starlight.Medical.Surgery; public sealed partial class OrganSystem : EntitySystem { - [Dependency] private BlindableSystem _blindable = default!; - [Dependency] private DamageableSystem _damageableSystem = default!; - [Dependency] private HumanoidAppearanceSystem _humanoidAppearanceSystem = default!; - [Dependency] private TagSystem _tag = default!; - [Dependency] private LanguageSystem _language = default!; - [Dependency] private SharedContainerSystem _container = default!; + [Dependency] private readonly BlindableSystem _blindable = default!; + [Dependency] private readonly DamageableSystem _damageableSystem = default!; + [Dependency] private readonly HumanoidAppearanceSystem _humanoidAppearanceSystem = default!; + [Dependency] private readonly TagSystem _tag = default!; + [Dependency] private readonly LanguageSystem _language = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private IGameTiming _timing = default!; - [Dependency] private SharedActionsSystem _actions = default!; + [Dependency] private readonly MarkingManager _markingManager = default!; + [Dependency] private readonly SharedBodySystem _body = default!; + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private ISerializationManager _serialization = default!; [Dependency] private SharedSurgerySystem _surgery = default!; @@ -49,8 +55,14 @@ public override void Initialize() SubscribeLocalEvent(OnTaggedOrganImplanted); SubscribeLocalEvent(OnTaggedOrganExtracted); - SubscribeLocalEvent(OnStorageOrganImplanted); - SubscribeLocalEvent(OnStorageOrganExtracted); + SubscribeLocalEvent(OnMarkingOrganImplanted); + SubscribeLocalEvent(OnMarkingOrganExtracted); + + SubscribeLocalEvent(OnDamageModifierOrganImplanted); + SubscribeLocalEvent(OnDamageModifierOrganExtracted); + + SubscribeLocalEvent(OnShellImplanted); + SubscribeLocalEvent(OnShellExtracted); SubscribeLocalEvent(OnEyeImplanted); SubscribeLocalEvent(OnEyeExtracted); @@ -147,27 +159,131 @@ private void OnTaggedOrganExtracted(Entity ent, ref Surger // - private void OnStorageOrganImplanted(Entity ent, ref SurgeryOrganImplantationCompleted args) + private void OnMarkingOrganImplanted(Entity ent, ref SurgeryOrganImplantationCompleted args) + { + if(ent.Comp.Markings.Count > 0) + { + var addedMarkings = new List(); + foreach(var marking in ent.Comp.Markings) + { + _humanoidAppearanceSystem.AddMarking(args.Body, marking.Key.ID, marking.Value.markingColors, marking.Value.isGlowing, forced: true); + addedMarkings.Add(marking.Key); + } + foreach(var key in addedMarkings) + ent.Comp.Markings.Remove(key); + } + else + foreach(var markingProto in ent.Comp.AppliedMarkings) + UpdateMarking(ent, args.Body, args.Part, markingProto, true); + + UpdateEntity(args.Body, ent.Comp); + } + + private void OnMarkingOrganExtracted(Entity ent, ref SurgeryOrganExtracted args) + { + if(ent.Comp.StoreMarkings) + { + if (!TryComp(args.Body, out HumanoidAppearanceComponent? appearance)) + return; + + if (!TryComp(args.Part, out BodyPartComponent? part)) + return; + + var resolvedLayers = ResolveBodyPartLayers(part.PartType, part.Symmetry); + if (!resolvedLayers.Any()) + return; + + var removedMarkings = new List(); + foreach (var markingSet in appearance.MarkingSet.Markings) + foreach (var marking in markingSet.Value) + { + if (!_markingManager.Markings.TryGetValue(marking.MarkingId, out var prototype)) + continue; + if (!resolvedLayers.Contains(prototype.BodyPart)) + continue; + ent.Comp.Markings.Add(prototype, (marking.IsGlowing, marking.MarkingColors)); + removedMarkings.Add(prototype.ID); + } + foreach(var key in removedMarkings) + _humanoidAppearanceSystem.RemoveMarking(args.Body, key); + } + else + foreach(var markingProto in ent.Comp.AppliedMarkings) + UpdateMarking(ent, args.Body, args.Part, markingProto, false); + + UpdateEntity(args.Body, ent.Comp); + } + + private static IEnumerable ResolveBodyPartLayers(BodyPartType partType, BodyPartSymmetry symmetry = BodyPartSymmetry.Right) { - // The results of the container change are already networked on their own - if (_timing.ApplyingState) + switch(partType) + { + case BodyPartType.Torso: + yield return HumanoidVisualLayers.Chest; + break; + case BodyPartType.Head: + yield return HumanoidVisualLayers.Head; + yield return HumanoidVisualLayers.HeadSide; + yield return HumanoidVisualLayers.HeadTop; + break; + case BodyPartType.Arm: + yield return symmetry == BodyPartSymmetry.Left ? HumanoidVisualLayers.LArm : HumanoidVisualLayers.RArm; + break; + case BodyPartType.Hand: + yield return symmetry == BodyPartSymmetry.Left ? HumanoidVisualLayers.LHand : HumanoidVisualLayers.RHand; + break; + case BodyPartType.Leg: + yield return symmetry == BodyPartSymmetry.Left ? HumanoidVisualLayers.LLeg : HumanoidVisualLayers.RLeg; + break; + case BodyPartType.Foot: + yield return symmetry == BodyPartSymmetry.Left ? HumanoidVisualLayers.LFoot : HumanoidVisualLayers.RFoot; + break; + case BodyPartType.Tail: + yield return HumanoidVisualLayers.Tail; + break; + default: + break; + } + } + + private void UpdateMarking(Entity ent, EntityUid targetBody, EntityUid targetPart, string marking, bool add = true) + { + if (!_markingManager.Markings.TryGetValue(marking, out var prototype)) + return; + + if(!TryComp(targetPart, out BodyPartComponent? part)) return; - Dirty(ent); + if(!ResolveBodyPartLayers(part.PartType, part.Symmetry).Contains(prototype.BodyPart)) + return; - if (ent.Comp.OrganAction != null) - _actions.AddAction(args.Body, ref ent.Comp.ActionEntity, ent.Comp.OrganAction, ent.Owner); + if(add) + _humanoidAppearanceSystem.AddMarking(targetBody, marking, ent.Comp.IsGlowing, forced: true); + else + _humanoidAppearanceSystem.RemoveMarking(targetBody, marking); } - private void OnStorageOrganExtracted(Entity ent, ref SurgeryOrganExtracted args) + // + + private void OnDamageModifierOrganImplanted(Entity ent, ref SurgeryOrganImplantationCompleted args) + { + if (!TryComp(args.Body, out DamageableComponent? damage)) + return; + + _damageableSystem.AddAdditiveModifierSet(ent, (args.Body, damage), ent.Comp.Modifiers); + + UpdateEntity(args.Body, ent.Comp); + } + + private void OnDamageModifierOrganExtracted(Entity ent, ref SurgeryOrganExtracted args) { - // The results of the container change are already networked on their own - if (_timing.ApplyingState) + if (!TryComp(args.Body, out DamageableComponent? damage)) return; - _actions.RemoveAction(args.Body, ent.Comp.ActionEntity); - ent.Comp.ActionEntity = null; + _damageableSystem.RemoveAdditiveModifierSet(ent, (args.Body, damage), ent.Comp.Modifiers); + + UpdateEntity(args.Body, ent.Comp); } // @@ -200,6 +316,48 @@ private void OnOrganExtracted(Entity ent, ref SurgeryOrganE // + private void OnShellImplanted(Entity ent, ref SurgeryOrganImplantationCompleted args) + { + if(!TryComp(args.Body, out ShellComponent? shell)) + return; + + if(!_body.GetBodyOrgans(args.Body).Where(o => TryComp(o.Id, out OrganShellComponent? _)).Any()) + return; + + foreach (var comp in ( shell.NoShellComponents ?? []).Values) + { + if (EntityManager.HasComponent(args.Body, comp.Component.GetType())) + { + EntityManager.RemoveComponent(args.Body, EntityManager.GetComponent(args.Body, comp.Component.GetType())); + UpdateEntity(args.Body, comp.Component, ent.Owner); + } + } + _actionsSystem.AddAction(args.Body, ref shell.BreakShellActionEntity, shell.BreakShellAction); + _actionsSystem.AddAction(args.Body, ref shell.GenerateShellPieceActionEntity, shell.GenerateShellPieceAction); + } + + private void OnShellExtracted(Entity ent, ref SurgeryOrganExtracted args) + { + if(!TryComp(args.Body, out ShellComponent? shell)) + return; + + if(_body.GetBodyOrgans(args.Body).Where(o => TryComp(o.Id, out OrganShellComponent? _)).Any()) + return; + + foreach (var comp in ( shell.NoShellComponents ?? []).Values) + { + if (!EntityManager.HasComponent(args.Body, comp.Component.GetType())) + { + EntityManager.AddComponent(args.Body, comp.Component); + UpdateEntity(args.Body, comp.Component, ent.Owner); + } + } + _actionsSystem.RemoveAction(args.Body, shell.BreakShellActionEntity); + _actionsSystem.RemoveAction(args.Body, shell.GenerateShellPieceActionEntity); + } + + // + private void OnAbductorOrganImplanted(Entity ent, ref SurgeryOrganImplantationCompleted args) { if (TryComp(args.Body, out var victim)) diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index cef27d4d2f11..cd5a4ea703bc 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -89,6 +89,14 @@ public sealed partial class DamageableComponent : Component [DataField] public FixedPoint2? HealthBarThreshold; + + #region Starlight + [DataField] + public Dictionary<(EntityUid Source, string ModifierKey), float> AdditiveCoefficients = []; + + [DataField] + public Dictionary<(EntityUid Source, string ModifierKey), float> AdditiveModifiers = []; + #endregion Starlight } [Serializable, NetSerializable] diff --git a/Content.Shared/Damage/Systems/DamageableSystem.API.cs b/Content.Shared/Damage/Systems/DamageableSystem.API.cs index 460f7e2d7fce..427efa875e9b 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.API.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.API.cs @@ -149,11 +149,34 @@ public DamageSpecifier ChangeDamage( // Apply resistances if (!ignoreResistances) { + //Starlight Start + var computedModifiers = new DamageModifierSet(); if ( ent.Comp.DamageModifierSetId != null && _prototypeManager.Resolve(ent.Comp.DamageModifierSetId, out var modifierSet) ) - damage = DamageSpecifier.ApplyModifierSet(damage, modifierSet); + { + foreach (var coefficient in modifierSet.Coefficients) + computedModifiers.Coefficients.Add(coefficient.Key, modifierSet.Coefficients[coefficient.Key]); + + foreach (var modifier in modifierSet.FlatReduction) + computedModifiers.FlatReduction.Add(modifier.Key, modifierSet.FlatReduction[modifier.Key]); + } + + foreach(var additiveCoefficent in ent.Comp.AdditiveCoefficients) + if(computedModifiers.Coefficients.ContainsKey(additiveCoefficent.Key.ModifierKey)) + computedModifiers.Coefficients[additiveCoefficent.Key.ModifierKey] += additiveCoefficent.Value; + else + computedModifiers.Coefficients.Add( additiveCoefficent.Key.ModifierKey, 1.0f + additiveCoefficent.Value); + + foreach(var additiveModifier in ent.Comp.AdditiveModifiers) + if(computedModifiers.Coefficients.ContainsKey(additiveModifier.Key.ModifierKey)) + computedModifiers.Coefficients[additiveModifier.Key.ModifierKey] += additiveModifier.Value; + else + computedModifiers.Coefficients.Add( additiveModifier.Key.ModifierKey, 0.0f + additiveModifier.Value); + + damage = DamageSpecifier.ApplyModifierSet(damage, computedModifiers); + //Starlight End // TODO DAMAGE // byref struct event. @@ -473,4 +496,38 @@ public void SetDamageContainerID(Entity ent, ProtoId + /// Adds to the additive damage modifiers of the DamageableComponent + /// + public void AddAdditiveModifierSet(EntityUid source, Entity ent, DamageModifierSet mods) + { + if(!Resolve(ent, ref ent.Comp)) + return; + + foreach (var coefficent in mods.Coefficients) + ent.Comp.AdditiveCoefficients.TryAdd((source, coefficent.Key), coefficent.Value); + + foreach (var modifier in mods.FlatReduction) + ent.Comp.AdditiveModifiers.TryAdd((source, modifier.Key), modifier.Value); + } + + /// + /// Subtracts from the additive damage modifiers of the DamageableComponent + /// + public void RemoveAdditiveModifierSet(EntityUid source, Entity ent, DamageModifierSet mods) + { + if(!Resolve(ent, ref ent.Comp)) + return; + + foreach (var coefficent in mods.Coefficients) + ent.Comp.AdditiveCoefficients.Remove((source, coefficent.Key)); + + foreach (var modifier in mods.FlatReduction) + ent.Comp.AdditiveModifiers.Remove((source, modifier.Key)); + } + + #endregion Starlight } diff --git a/Content.Shared/Magic/SharedMagicSystem.cs b/Content.Shared/Magic/SharedMagicSystem.cs index 0380530ed7d5..5288a03f911e 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -604,16 +604,16 @@ private void OnSpawnItemInHand(SpawnItemInHandEvent ev) var user = ev.Performer; // try to put item in hand, otherwise it goes on the ground - var spawnedEntity = PredictedSpawnAtPosition(ev.Spawned, Transform(user).Coordinates); + var star = Spawn(ev.Spawned, Transform(user).Coordinates); + if (IsClientSide(star)) + Del(star);//event has a tendency to produce client-sided cheese... this cleans those up... + else + _hands.TryPickupAnyHand(user, star); - var afterEvent = new AfterSpawnItemInHandEvent { Entity = spawnedEntity, Performer = user }; - RaiseLocalEvent(ev.Action, afterEvent); + if(ev.SelfDamage != null) //For dolls + _damageable.ChangeDamage(user, ev.SelfDamage, true); - var result = _hands.TryPickupAnyHand(user, spawnedEntity); - if(!result && ev.RequiresFreeHand) - Del(spawnedEntity); // abort! - else - ev.Handled = true; + ev.Handled = true; } private void OnTowerOfBabel(TowerOfBabelEvent ev) diff --git a/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs b/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs new file mode 100644 index 000000000000..5f1dc5aa686c --- /dev/null +++ b/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs @@ -0,0 +1,32 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Starlight.Actions.Components; + +/// +/// Component that allows an entity to enter and exit stasis. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ShellComponent : Component +{ + /// + /// The entity needed to break your shell. + /// + [DataField(required: true), AutoNetworkedField] + public EntProtoId BreakShellAction; + + [DataField, AutoNetworkedField] + public EntityUid? BreakShellActionEntity; + + /// + /// The entity needed to snap off a pice of your shell. + /// + [DataField(required: true), AutoNetworkedField] + public EntProtoId GenerateShellPieceAction; + + [DataField, AutoNetworkedField] + public EntityUid? GenerateShellPieceActionEntity; + + [DataField] + public ComponentRegistry? NoShellComponents; +} diff --git a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs new file mode 100644 index 000000000000..d8cb24c898ff --- /dev/null +++ b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs @@ -0,0 +1,62 @@ + +using System.Linq; +using Content.Shared._Starlight.Actions.Events; +using Content.Shared.Body.Part; +using Content.Shared.Body.Systems; +using Content.Shared.DoAfter; +using Content.Shared.Starlight.Medical.Surgery; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Starlight.Actions.EntitySystems; +public sealed class SurgeryActionSystem : EntitySystem +{ + [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedBodySystem _body = default!; + [Dependency] private readonly IPrototypeManager _protoManager = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly SharedSurgerySystem _surgery = default!; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAction); + } + + private void OnAction(SurgeryActionEvent args) + { + if (args.Handled) return; + + var duration = args.InitialDuration; + + foreach (var surgery in args.Surgeries) + { + if(!_protoManager.TryIndex(surgery, out var surgeryProto) || !surgeryProto.TryGetComponent(out var surgeryComp, _entityManager.ComponentFactory)) + continue; + foreach (var bodypart in _body.GetBodyChildren(args.Performer).Where(part => args.BodyPartTypes.Contains(part.Component.PartType) && (args.BodyPartSymmetries.Contains(part.Component.Symmetry) || part.Component.Symmetry == BodyPartSymmetry.None))) + foreach (var step in surgeryComp.Steps) + { + if(!_surgery.IsStepComplete(bodypart.Id, surgery, step)) + { + Surgerise(args.Performer, surgery, step, args.Performer, bodypart.Id, duration); + break; + } + } + } + args.Handled = true; + + } + + private void Surgerise(EntityUid ent, EntProtoId surgery, EntProtoId step, EntityUid body, EntityUid part, TimeSpan delay) + { + var ev = new SurgeryDoAfterEvent(surgery, step, 1); + var doAfter = new DoAfterArgs(EntityManager, ent, delay, ev, body, part) + { + BreakOnMove = true, + CancelDuplicate = false, + DuplicateCondition = DuplicateConditions.All, + ForceNet = true, + DistanceTarget = ent, + }; + _doAfter.TryStartDoAfter(doAfter); + } +} \ No newline at end of file diff --git a/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs new file mode 100644 index 000000000000..13072c1da218 --- /dev/null +++ b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs @@ -0,0 +1,26 @@ +using Content.Shared.Actions; +using Content.Shared.Body.Part; +using Content.Shared.Starlight.Medical.Surgery; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Starlight.Actions.Events; + +[Virtual] +public partial class SurgeryActionEvent : InstantActionEvent +{ + [DataField] + public EntProtoId[] Surgeries = []; + + [DataField] + public List BodyPartTypes = []; + + [DataField] + public List BodyPartSymmetries = []; + + [DataField] + public TimeSpan InitialDuration = TimeSpan.FromSeconds(5); + + [DataField] + public SoundSpecifier? Sound = default; +} \ No newline at end of file diff --git a/Content.Shared/_Starlight/Magic/Events/SpawnItemInHandEvent.cs b/Content.Shared/_Starlight/Magic/Events/SpawnItemInHandEvent.cs index 746ed5ff5772..947b5a6a5e85 100644 --- a/Content.Shared/_Starlight/Magic/Events/SpawnItemInHandEvent.cs +++ b/Content.Shared/_Starlight/Magic/Events/SpawnItemInHandEvent.cs @@ -1,4 +1,5 @@ using Content.Shared.Actions; +using Content.Shared.Damage; using Robust.Shared.Prototypes; namespace Content.Shared._Starlight.Magic.Events; @@ -11,6 +12,12 @@ public sealed partial class SpawnItemInHandEvent : InstantActionEvent [DataField(required: true)] public EntProtoId Spawned = string.Empty; + /// + /// Damage applied to user when used + /// + [DataField] + public DamageSpecifier? SelfDamage; + /// /// Should this require a free hand to work? /// diff --git a/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs b/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs index 9cebe46f8d1f..30a00f753319 100644 --- a/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs +++ b/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Content.Shared.Damage; using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Tag; using Robust.Shared.GameStates; @@ -21,6 +22,7 @@ namespace Content.Shared._Starlight.Medical.Surgery.Components; [RegisterComponent, NetworkedComponent, Access(typeof(SharedSurgerySystem))] public sealed partial class OrganKidneysComponent : Component; [RegisterComponent, NetworkedComponent, Access(typeof(SharedSurgerySystem))] public sealed partial class LeftArmComponent : Component; [RegisterComponent, NetworkedComponent, Access(typeof(SharedSurgerySystem))] public sealed partial class RightArmComponent : Component; +[RegisterComponent, NetworkedComponent, Access(typeof(SharedSurgerySystem))] public sealed partial class OrganShellComponent : Component; [RegisterComponent, NetworkedComponent] public sealed partial class OrganTongueComponent : Component { @@ -94,6 +96,29 @@ public sealed partial class OpenStorageOrganEvent : InstantActionEvent public string Key = "InternalStorage"; } +[RegisterComponent, NetworkedComponent] +public sealed partial class MarkingOrganComponent : Component +{ + [DataField] + public List> AppliedMarkings = []; + + [DataField] + public Dictionary markingColors)> Markings = []; + + [DataField] + public bool StoreMarkings = false; + + [DataField] + public bool IsGlowing = false; +} + +[RegisterComponent, NetworkedComponent] +public sealed partial class DamageModifierOrganComponent : Component +{ + [DataField(required: true)] + public DamageModifierSet Modifiers = default!; +} + [RegisterComponent, NetworkedComponent] public sealed partial class OrganDamageComponent : Component { diff --git a/Content.Shared/_Starlight/VentCrawl/Components/VentCrawlerComponent.cs b/Content.Shared/_Starlight/VentCrawl/Components/VentCrawlerComponent.cs index 65319c6e76f8..925f084a3808 100644 --- a/Content.Shared/_Starlight/VentCrawl/Components/VentCrawlerComponent.cs +++ b/Content.Shared/_Starlight/VentCrawl/Components/VentCrawlerComponent.cs @@ -18,6 +18,11 @@ public sealed partial class VentCrawlerComponent : Component public SoundCollectionSpecifier CrawlSound { get; set; } = new("VentClaw", AudioParams.Default.WithVolume(5f)); public float EnterDelay = 2.5f; + + // Starlight Start + [DataField] + public bool MayCarryItems = true; + //Starlight End } [Serializable, NetSerializable] diff --git a/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs b/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs index 6312e63ee870..9ae55971bc02 100644 --- a/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs +++ b/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs @@ -7,11 +7,14 @@ using Content.Shared.Verbs; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; +using Content.Shared.Inventory; namespace Content.Shared._Starlight.VentCrawl.EntitySystems; public sealed partial class SharedVentCrawlSystem { + [Dependency] private readonly InventorySystem _inventory = default!; + public void InitializeTubes() { SubscribeLocalEvent(OnComponentRemove); @@ -132,6 +135,11 @@ private void TryEnter(EntityUid uid, EntityUid user, VentCrawlerComponent crawle return; } } + if (!crawler.MayCarryItems && _inventory.GetHandOrInventoryEntities(uid).Any()) + { + _popup.PopupPredicted(Loc.GetString("entity-storage-component-already-contains-user-message"), user, null); + return; + } var args = new DoAfterArgs(EntityManager, user, crawler.EnterDelay, new EnterVentDoAfterEvent(), user, uid, user) { diff --git a/Resources/Locale/en-US/_Starlight/actions/actions/doll.ftl b/Resources/Locale/en-US/_Starlight/actions/actions/doll.ftl new file mode 100644 index 000000000000..454fe5a750cd --- /dev/null +++ b/Resources/Locale/en-US/_Starlight/actions/actions/doll.ftl @@ -0,0 +1,2 @@ +doll-shed-shell-action = You shudder at the thought of painfully shedding your shell. +doll-snap-shell-action = You hesitate for a moment, gathering strength to snap off a piece of yourself. \ No newline at end of file diff --git a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl new file mode 100644 index 000000000000..56dd6a26bf98 --- /dev/null +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -0,0 +1,449 @@ +names-first-doll-male-dataset-1 = Abaen +names-first-doll-male-dataset-2 = Abuin +names-first-doll-male-dataset-3 = Acator +names-first-doll-male-dataset-4 = Achyrus +names-first-doll-male-dataset-5 = Acedis +names-first-doll-male-dataset-6 = Acerola +names-first-doll-male-dataset-7 = Adalyr +names-first-doll-male-dataset-8 = Adros +names-first-doll-male-dataset-9 = Aeldir +names-first-doll-male-dataset-10 = Aphon +names-first-doll-male-dataset-11 = Agien +names-first-doll-male-dataset-12 = Ahorran +names-first-doll-male-dataset-13 = Alanel +names-first-doll-male-dataset-14 = Amestus +names-first-doll-male-dataset-15 = Anthyr +names-first-doll-male-dataset-16 = Apalatin +names-first-doll-male-dataset-17 = Aques +names-first-doll-male-dataset-18 = Arintos +names-first-doll-male-dataset-19 = Astyron +names-first-doll-male-dataset-20 = Athiel +names-first-doll-male-dataset-21 = Atryx +names-first-doll-male-dataset-22 = Auratos +names-first-doll-male-dataset-23 = Avaxir +names-first-doll-male-dataset-24 = Axamander +names-first-doll-male-dataset-25 = Aynor +names-first-doll-male-dataset-26 = Azuric +names-first-doll-male-dataset-27 = Bacchastos +names-first-doll-male-dataset-28 = Baclis +names-first-doll-male-dataset-29 = Bandur +names-first-doll-male-dataset-30 = Beyrir +names-first-doll-male-dataset-31 = Bodas +names-first-doll-male-dataset-32 = Bolios +names-first-doll-male-dataset-33 = Bortis +names-first-doll-male-dataset-34 = Bounzir +names-first-doll-male-dataset-35 = Buzik +names-first-doll-male-dataset-36 = Caelan +names-first-doll-male-dataset-37 = Camyr +names-first-doll-male-dataset-38 = Ceros +names-first-doll-male-dataset-39 = Charion +names-first-doll-male-dataset-40 = Chelys +names-first-doll-male-dataset-41 = Khonath +names-first-doll-male-dataset-42 = Kozanyl +names-first-doll-male-dataset-43 = Dahel +names-first-doll-male-dataset-44 = Darion +names-first-doll-male-dataset-45 = Dellion +names-first-doll-male-dataset-46 = Demystir +names-first-doll-male-dataset-47 = Dolan +names-first-doll-male-dataset-48 = Dostar +names-first-doll-male-dataset-49 = Duvir +names-first-doll-male-dataset-50 = Doxanyr +names-first-doll-male-dataset-51 = Easios +names-first-doll-male-dataset-52 = Eamon +names-first-doll-male-dataset-53 = Elthar +names-first-doll-male-dataset-54 = Eburon +names-first-doll-male-dataset-55 = Echyal +names-first-doll-male-dataset-56 = Ekhandris +names-first-doll-male-dataset-57 = Ementer +names-first-doll-male-dataset-58 = Ethyr +names-first-doll-male-dataset-59 = Chamon +names-first-doll-male-dataset-60 = Azyr +names-first-doll-male-dataset-61 = Asuryanodoros +names-first-doll-male-dataset-62 = Kurnodinius +names-first-doll-male-dataset-63 = Hotek +names-first-doll-male-dataset-64 = Vaular +names-first-doll-male-dataset-65 = Malus +names-first-doll-male-dataset-66 = Eithyr +names-first-doll-male-dataset-67 = Fanalor +names-first-doll-male-dataset-68 = Fazuan +names-first-doll-male-dataset-69 = Finreir +names-first-doll-male-dataset-70 = Fendyr +names-first-doll-male-dataset-71 = Forryn +names-first-doll-male-dataset-72 = Fyzzion +names-first-doll-male-dataset-73 = Galadar +names-first-doll-male-dataset-74 = Galith +names-first-doll-male-dataset-75 = Ganael +names-first-doll-male-dataset-76 = Gionestyr +names-first-doll-male-dataset-77 = Galendor +names-first-doll-male-dataset-78 = Guriten +names-first-doll-male-dataset-79 = Garien +names-first-doll-male-dataset-80 = Gardir +names-first-doll-male-dataset-81 = Haleth +names-first-doll-male-dataset-82 = Herion +names-first-doll-male-dataset-83 = Helenar +names-first-doll-male-dataset-84 = Horos +names-first-doll-male-dataset-85 = Hennic +names-first-doll-male-dataset-86 = Hyran +names-first-doll-male-dataset-87 = Iriol +names-first-doll-male-dataset-88 = Iralon +names-first-doll-male-dataset-89 = Ivarn +names-first-doll-male-dataset-90 = Istos +names-first-doll-male-dataset-91 = Joran +names-first-doll-male-dataset-92 = Jalik +names-first-doll-male-dataset-93 = Aethis +names-first-doll-male-dataset-94 = Ardath +names-first-doll-male-dataset-95 = Jyndon +names-first-doll-male-dataset-96 = Jazech +names-first-doll-male-dataset-97 = Koros +names-first-doll-male-dataset-98 = Karhan +names-first-doll-male-dataset-99 = Kydor +names-first-doll-male-dataset-100 = Kounath +names-first-doll-male-dataset-101 = Kouran +names-first-doll-male-dataset-102 = Kenyrion +names-first-doll-male-dataset-103 = Lambeth +names-first-doll-male-dataset-104 = Lossek +names-first-doll-male-dataset-105 = Loryn +names-first-doll-male-dataset-106 = Lasitar +names-first-doll-male-dataset-107 = Lendor +names-first-doll-male-dataset-108 = Levik +names-first-doll-male-dataset-109 = Lidaron +names-first-doll-male-dataset-110 = Mannitos +names-first-doll-male-dataset-111 = Meznyr +names-first-doll-male-dataset-112 = Maleroth +names-first-doll-male-dataset-113 = Mylin +names-first-doll-male-dataset-114 = Myoc +names-first-doll-male-dataset-115 = Narthex +names-first-doll-male-dataset-116 = Neimyr +names-first-doll-male-dataset-117 = Noven +names-first-doll-male-dataset-118 = Noutid +names-first-doll-male-dataset-119 = Nessec +names-first-doll-male-dataset-120 = Ngwendor +names-first-doll-male-dataset-121 = Olor +names-first-doll-male-dataset-122 = Ovin +names-first-doll-male-dataset-123 = Octavin +names-first-doll-male-dataset-124 = Otalos +names-first-doll-male-dataset-125 = Orion +names-first-doll-male-dataset-126 = Palator +names-first-doll-male-dataset-127 = Pembrus +names-first-doll-male-dataset-128 = Quaerel +names-first-doll-male-dataset-129 = Quodar +names-first-doll-male-dataset-130 = Quil +names-first-doll-male-dataset-131 = Raecos +names-first-doll-male-dataset-132 = Raevyr +names-first-doll-male-dataset-133 = Raphot +names-first-doll-male-dataset-134 = Remvar +names-first-doll-male-dataset-135 = Rath +names-first-doll-male-dataset-136 = Rozno +names-first-doll-male-dataset-137 = Rusmirrin +names-first-doll-male-dataset-138 = Releg +names-first-doll-male-dataset-139 = Ruthal +names-first-doll-male-dataset-140 = Rotan +names-first-doll-male-dataset-141 = Raith +names-first-doll-male-dataset-142 = Sinn +names-first-doll-male-dataset-143 = Sangor +names-first-doll-male-dataset-144 = Singer +names-first-doll-male-dataset-145 = Sorvin +names-first-doll-male-dataset-146 = Salter +names-first-doll-male-dataset-147 = Psander +names-first-doll-male-dataset-148 = Saemon +names-first-doll-male-dataset-149 = Suthael +names-first-doll-male-dataset-150 = Serden +names-first-doll-male-dataset-151 = Herident +names-first-doll-male-dataset-152 = Soffik +names-first-doll-male-dataset-153 = Sophal +names-first-doll-male-dataset-154 = Trast +names-first-doll-male-dataset-155 = Tarn +names-first-doll-male-dataset-156 = Tablos +names-first-doll-male-dataset-157 = Tergis +names-first-doll-male-dataset-158 = Taven +names-first-doll-male-dataset-159 = Tolorin +names-first-doll-male-dataset-160 = Thander +names-first-doll-male-dataset-161 = Ulorin +names-first-doll-male-dataset-162 = Untan +names-first-doll-male-dataset-163 = Usyros +names-first-doll-male-dataset-164 = Tizyl +names-first-doll-male-dataset-165 = Veyn +names-first-doll-male-dataset-166 = Varon +names-first-doll-male-dataset-167 = Vunthir +names-first-doll-male-dataset-168 = Vanleth +names-first-doll-male-dataset-169 = Varitt +names-first-doll-male-dataset-170 = Voke +names-first-doll-male-dataset-171 = Wysdin +names-first-doll-male-dataset-172 = Ulgir +names-first-doll-male-dataset-173 = Waran +names-first-doll-male-dataset-174 = Waenoth +names-first-doll-male-dataset-175 = Rienronnair +names-first-doll-male-dataset-176 = Kaeleneth +names-first-doll-male-dataset-177 = Caethilthwe +names-first-doll-male-dataset-178 = Dreth +names-first-doll-male-dataset-179 = Gaelen +names-first-doll-male-dataset-180 = Thyriol +names-first-doll-male-dataset-181 = Anthinol +names-first-doll-male-dataset-182 = Lian +names-first-doll-male-dataset-183 = Xanthus +names-first-doll-male-dataset-184 = Xikros +names-first-doll-male-dataset-185 = Xypreth +names-first-doll-male-dataset-186 = Yrellion +names-first-doll-male-dataset-187 = Faldor +names-first-doll-male-dataset-188 = Tesmeth +names-first-doll-male-dataset-189 = Zurtas +names-first-doll-male-dataset-190 = Zillan +names-first-doll-male-dataset-191 = Yasmus +names-first-doll-male-dataset-192 = Yetrel +names-first-doll-male-dataset-193 = Yonak +names-first-doll-male-dataset-194 = Yullis +names-first-doll-male-dataset-195 = Zabar +names-first-doll-male-dataset-196 = Zenyt +names-first-doll-male-dataset-197 = Zephyr +names-first-doll-male-dataset-198 = Zontar +names-first-doll-male-dataset-199 = Zoul +names-first-doll-male-dataset-200 = Zynn + +names-first-doll-female-dataset-1 = Mary +names-first-doll-female-dataset-2 = Elizabeth +names-first-doll-female-dataset-3 = Anne +names-first-doll-female-dataset-4 = Margaret +names-first-doll-female-dataset-5 = Catherine +names-first-doll-female-dataset-6 = Sarah +names-first-doll-female-dataset-7 = Jane +names-first-doll-female-dataset-8 = Emma +names-first-doll-female-dataset-9 = Emily +names-first-doll-female-dataset-10 = Charlotte +names-first-doll-female-dataset-11 = Eleanor +names-first-doll-female-dataset-12 = Frances +names-first-doll-female-dataset-13 = Adelaide +names-first-doll-female-dataset-14 = Beatrice +names-first-doll-female-dataset-15 = Clara +names-first-doll-female-dataset-16 = Dorothea +names-first-doll-female-dataset-17 = Edith +names-first-doll-female-dataset-18 = Florence +names-first-doll-female-dataset-19 = Harriet +names-first-doll-female-dataset-20 = Helena +names-first-doll-female-dataset-21 = Louisa +names-first-doll-female-dataset-22 = Matilda +names-first-doll-female-dataset-23 = Rosalind +names-first-doll-female-dataset-24 = Victoria +names-first-doll-female-dataset-25 = Arabella +names-first-doll-female-dataset-26 = Cecilia +names-first-doll-female-dataset-27 = Eliza +names-first-doll-female-dataset-28 = Josephine +names-first-doll-female-dataset-29 = Lillian +names-first-doll-female-dataset-30 = Lucinda +names-first-doll-female-dataset-31 = Marianne +names-first-doll-female-dataset-32 = Rosamund +names-first-doll-female-dataset-33 = Sylvia +names-first-doll-female-dataset-34 = Theodora +names-first-doll-female-dataset-35 = Agatha +names-first-doll-female-dataset-36 = Augusta +names-first-doll-female-dataset-37 = Constance +names-first-doll-female-dataset-38 = Cordelia +names-first-doll-female-dataset-39 = Euphemia +names-first-doll-female-dataset-40 = Millicent +names-first-doll-female-dataset-41 = Prudence +names-first-doll-female-dataset-42 = Rowena +names-first-doll-female-dataset-43 = Tabitha +names-first-doll-female-dataset-44 = Winifred +names-first-doll-female-dataset-45 = Lily +names-first-doll-female-dataset-46 = Katherine +names-first-doll-female-dataset-47 = Annie + +names-last-doll-dataset-1 = the Wise +names-last-doll-dataset-2 = the Ageless +names-last-doll-dataset-3 = the Denied +names-last-doll-dataset-4 = the Eternal +names-last-doll-dataset-5 = the Witness +names-last-doll-dataset-6 = the Seer +names-last-doll-dataset-7 = the Visionary +names-last-doll-dataset-8 = the Phoenix +names-last-doll-dataset-9 = the Dreaded +names-last-doll-dataset-10 = the Pure +names-last-doll-dataset-11 = the Brave +names-last-doll-dataset-12 = the Singer +names-last-doll-dataset-13 = of Alfholm +names-last-doll-dataset-14 = of the Sea +names-last-doll-dataset-15 = of the Forest +names-last-doll-dataset-16 = of the Beasts +names-last-doll-dataset-17 = of the Murderers +names-last-doll-dataset-18 = of the Black City +names-last-doll-dataset-19 = of the Shadowlands +names-last-doll-dataset-20 = of the Eternal Fields +names-last-doll-dataset-21 = of the Shadows +names-last-doll-dataset-22 = of the Phoenix +names-last-doll-dataset-23 = of the Dragon +names-last-doll-dataset-24 = of the Islands +names-last-doll-dataset-25 = of the White Tower +names-last-doll-dataset-26 = of the Shadows +names-last-doll-dataset-27 = the Proud +names-last-doll-dataset-28 = of the Abyss +names-last-doll-dataset-29 = the Jade-Touched +names-last-doll-dataset-30 = of the Old City +names-last-doll-dataset-31 = of the Estuary +names-last-doll-dataset-32 = of the Underworld +names-last-doll-dataset-33 = the Bloody +names-last-doll-dataset-34 = Dragonrider +names-last-doll-dataset-35 = Swordsmith +names-last-doll-dataset-36 = Beastmaster +names-last-doll-dataset-37 = Halberdier +names-last-doll-dataset-38 = Shade +names-last-doll-dataset-39 = Autarii +names-last-doll-dataset-40 = Mothkeeper +names-last-doll-dataset-41 = Peregrine +names-last-doll-dataset-42 = the Corsair +names-last-doll-dataset-43 = Elithis +names-last-doll-dataset-44 = Eventide +names-last-doll-dataset-45 = Hoethedor +names-last-doll-dataset-46 = Dreadheart +names-last-doll-dataset-47 = Blacksoul +names-last-doll-dataset-48 = Whitecloak +names-last-doll-dataset-49 = Leafbinder +names-last-doll-dataset-50 = Harper +names-last-doll-dataset-51 = Darkwine +names-last-doll-dataset-52 = Stormpeak +names-last-doll-dataset-53 = Dawnstrider +names-last-doll-dataset-54 = Shadewarden +names-last-doll-dataset-55 = Drakespear +names-last-doll-dataset-56 = Northwatch +names-last-doll-dataset-57 = Icewind +names-last-doll-dataset-58 = Lacuna +names-last-doll-dataset-59 = Lyxos +names-last-doll-dataset-60 = Nightfall +names-last-doll-dataset-61 = Daybreak +names-last-doll-dataset-62 = Midnight +names-last-doll-dataset-63 = Sunrise +names-last-doll-dataset-64 = Sunset +names-last-doll-dataset-65 = Solstice +names-last-doll-dataset-66 = Eclipse +names-last-doll-dataset-67 = Equinox +names-last-doll-dataset-68 = Autumnflower +names-last-doll-dataset-69 = Icebloom +names-last-doll-dataset-70 = Mageroyal +names-last-doll-dataset-71 = Thaumistos +names-last-doll-dataset-72 = Thanatos +names-last-doll-dataset-73 = Koraith +names-last-doll-dataset-74 = Mathlannite +names-last-doll-dataset-75 = Wytchwood +names-last-doll-dataset-76 = Beardtaker +names-last-doll-dataset-77 = Waywatcher +names-last-doll-dataset-78 = Snowcrest +names-last-doll-dataset-79 = Darkmoor +names-last-doll-dataset-80 = Starcaller +names-last-doll-dataset-81 = Chillbane +names-last-doll-dataset-82 = Daemonsbane +names-last-doll-dataset-83 = Pathfinder +names-last-doll-dataset-84 = the Ranger +names-last-doll-dataset-85 = Carver +names-last-doll-dataset-86 = Darkblade +names-last-doll-dataset-87 = Brightblade +names-last-doll-dataset-88 = Foebane +names-last-doll-dataset-89 = Fellheart +names-last-doll-dataset-90 = Krynn +names-last-doll-dataset-91 = Galiron +names-last-doll-dataset-92 = Shrinekeeper +names-last-doll-dataset-93 = Whitefire +names-last-doll-dataset-94 = Silverglen +names-last-doll-dataset-95 = Siroir +names-last-doll-dataset-96 = Cadaith +names-last-doll-dataset-97 = Sariour +names-last-doll-dataset-98 = Senthoi +names-last-doll-dataset-99 = Lacoi +names-last-doll-dataset-100 = Harathoi +names-last-doll-dataset-101 = Sarathai +names-last-doll-dataset-102 = Charoi +names-last-doll-dataset-103 = Yenlui +names-last-doll-dataset-104 = Cynath +names-last-doll-dataset-105 = Arhain +names-last-doll-dataset-106 = Daroir +names-last-doll-dataset-107 = Thalui +names-last-doll-dataset-108 = Ceyl +names-last-doll-dataset-109 = Avalu +names-last-doll-dataset-110 = na Dromui +names-last-doll-dataset-111 = Denla +names-last-doll-dataset-112 = Danoi +names-last-doll-dataset-113 = Darlioth +names-last-doll-dataset-114 = the Harlequin +names-last-doll-dataset-115 = Endri +names-last-doll-dataset-116 = Histos +names-last-doll-dataset-117 = Kurnath +names-last-doll-dataset-118 = Larime +names-last-doll-dataset-119 = Malavoi +names-last-doll-dataset-120 = Lithri +names-last-doll-dataset-121 = Lecai +names-last-doll-dataset-122 = Hadri +names-last-doll-dataset-123 = Quul +names-last-doll-dataset-124 = Oriour +names-last-doll-dataset-125 = Tavlu +names-last-doll-dataset-126 = Verdan +names-last-doll-dataset-127 = Yennla +names-last-doll-dataset-128 = Ytha +names-last-doll-dataset-129 = Volroth +names-last-doll-dataset-130 = Sarumar +names-last-doll-dataset-131 = the Watcher +names-last-doll-dataset-132 = Tiroir +names-last-doll-dataset-133 = Tyloir +names-last-doll-dataset-134 = Sariour +names-last-doll-dataset-135 = Moongazer +names-last-doll-dataset-136 = Chillgaze +names-last-doll-dataset-137 = Starwatcher +names-last-doll-dataset-138 = Manflayer +names-last-doll-dataset-139 = Skinpeeler +names-last-doll-dataset-140 = Blackglaive +names-last-doll-dataset-141 = Silvertongue +names-last-doll-dataset-142 = Greenbrow +names-last-doll-dataset-143 = Riverland +names-last-doll-dataset-144 = Highland +names-last-doll-dataset-145 = Dragonlance +names-last-doll-dataset-146 = Faerun +names-last-doll-dataset-147 = Minaith +names-last-doll-dataset-148 = Nadir +names-last-doll-dataset-149 = Astris +names-last-doll-dataset-150 = Amphictyon +names-last-doll-dataset-151 = Coldsteel +names-last-doll-dataset-152 = Reaverlord +names-last-doll-dataset-153 = Hydrakeeper +names-last-doll-dataset-154 = the Serpent's Doom +names-last-doll-dataset-155 = Edra +names-last-doll-dataset-156 = the Mirthful +names-last-doll-dataset-157 = the Dour +names-last-doll-dataset-158 = the Solemn +names-last-doll-dataset-159 = Shadowcaster +names-last-doll-dataset-160 = Vauvalka +names-last-doll-dataset-161 = Necrys +names-last-doll-dataset-162 = Hellbinder +names-last-doll-dataset-163 = Coldeye +names-last-doll-dataset-164 = Darkstone +names-last-doll-dataset-165 = Straightarrow +names-last-doll-dataset-166 = Firewind +names-last-doll-dataset-167 = Greengate +names-last-doll-dataset-168 = Truestrike +names-last-doll-dataset-169 = Moonguard +names-last-doll-dataset-170 = Phantasia +names-last-doll-dataset-171 = Corwynn +names-last-doll-dataset-172 = Blacksoul +names-last-doll-dataset-173 = the Betrayer +names-last-doll-dataset-174 = Ironbark +names-last-doll-dataset-175 = Tourmaline +names-last-doll-dataset-176 = Greyweave +names-last-doll-dataset-177 = the Noble +names-last-doll-dataset-178 = Saemrath +names-last-doll-dataset-179 = Everglade +names-last-doll-dataset-180 = Winter +names-last-doll-dataset-181 = Goblinsbane +names-last-doll-dataset-182 = Stagheart +names-last-doll-dataset-183 = Immarmor +names-last-doll-dataset-184 = Wardancer +names-last-doll-dataset-185 = Spitebow +names-last-doll-dataset-186 = Spellsinger +names-last-doll-dataset-187 = Spellweaver +names-last-doll-dataset-188 = the Mystic +names-last-doll-dataset-189 = Imlordil +names-last-doll-dataset-190 = Tesmethal +names-last-doll-dataset-191 = Whitebow +names-last-doll-dataset-192 = Blacksword +names-last-doll-dataset-193 = Darkhand +names-last-doll-dataset-194 = Bayne +names-last-doll-dataset-195 = Maelith +names-last-doll-dataset-196 = Manhide +names-last-doll-dataset-197 = the Vain +names-last-doll-dataset-198 = Poisonblade +names-last-doll-dataset-199 = Glitterleaf +names-last-doll-dataset-200 = of Red Ruin \ No newline at end of file diff --git a/Resources/Locale/en-US/_Starlight/metabolism/metabolizer-types.ftl b/Resources/Locale/en-US/_Starlight/metabolism/metabolizer-types.ftl index 73dec3407434..b1c23c58f8bf 100644 --- a/Resources/Locale/en-US/_Starlight/metabolism/metabolizer-types.ftl +++ b/Resources/Locale/en-US/_Starlight/metabolism/metabolizer-types.ftl @@ -4,3 +4,4 @@ metabolizer-type-resomi = Resomi metabolizer-type-budget-cyber = Budget Cyber metabolizer-type-rodentia = Rodentia metabolizer-type-neo-vox = Neo-Vox +metabolizer-type-doll = Doll diff --git a/Resources/Locale/en-US/_Starlight/species/species.ftl b/Resources/Locale/en-US/_Starlight/species/species.ftl index 2d5439cf7955..907dfea4f819 100644 --- a/Resources/Locale/en-US/_Starlight/species/species.ftl +++ b/Resources/Locale/en-US/_Starlight/species/species.ftl @@ -1,6 +1,7 @@ species-name-abductor = Abductor species-name-avali = Avali species-name-cyclorite = Cyclorite +species-name-doll = Doll species-name-elf = Aielith species-name-felionoid = Felionoid species-name-lagomorph = Lagomorph diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index 3f7bf05b35e1..5247eccaad0c 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -9,6 +9,10 @@ id: Bloodsucker name: metabolizer-type-bloodsucker +- type: metabolizerType #🌟Starlight🌟 + id: Doll + name: metabolizer-type-doll + - type: metabolizerType id: Dragon name: metabolizer-type-dragon diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml index 99c0382e7e30..2758fea73b04 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml @@ -4,7 +4,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes. I doubt it'll be much visible though... + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes. I doubt it'll be much visible though... Also: Starlight, Dolls sprites: - sprite: Mobs/Customization/human_noses.rsi state: schnozz @@ -15,7 +15,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls sprites: - sprite: Mobs/Customization/human_noses.rsi state: nubby @@ -26,7 +26,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls sprites: - sprite: Mobs/Customization/human_noses.rsi state: droop @@ -37,7 +37,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls sprites: - sprite: Mobs/Customization/human_noses.rsi state: blob @@ -48,7 +48,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls sprites: - sprite: Mobs/Customization/human_noses.rsi state: uppie diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index 7bb845ac6d49..e841338bb915 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -114,7 +114,7 @@ id: TattooEyeRight bodyPart: Eyes markingCategory: [Head] - speciesRestriction: [Human, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf + speciesRestriction: [Human, Doll, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf and Doll coloring: default: type: @@ -128,7 +128,7 @@ id: TattooEyeLeft bodyPart: Eyes markingCategory: Head - speciesRestriction: [Human, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf + speciesRestriction: [Human, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf and Doll coloring: default: type: @@ -203,7 +203,7 @@ # some of these limitations could possibly be removed with better control over how the marking can be customized - possibly removing stacking, allowing recoloring & clamping higher-end colors for the eyeshadow, etc. bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Human, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf + speciesRestriction: [Human, Doll, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf and Doll forcedColoring: true sprites: - sprite: Mobs/Customization/tattoos.rsi @@ -213,7 +213,7 @@ id: TattooEyeshadowLower bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Human, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf + speciesRestriction: [Human, Doll, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf and Doll forcedColoring: true sprites: - sprite: Mobs/Customization/tattoos.rsi diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index d50315b8519b..47af57e6d659 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -51,6 +51,11 @@ - type: PhysicalComposition materialComposition: Meaterial: 300 + # Starlight Start + - type: Tag + tags: + - Meat # Why was this not always tagged as meat? + # Starlight End - type: entity parent: FoodMeatBase diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index b75711de0e35..938617829504 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -1057,6 +1057,7 @@ tags: - Fruit # Fuck you they're a fruit - Vegetable + - Blood # Starlight - They're haemovore food! - type: FoodSequenceElement entries: Skewer: TomatoSkewer diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml index fe26d1ddd23a..33a4cec406ad 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -709,6 +709,7 @@ tags: - Fruit - Soup + - Blood # Starlight - type: entity name: wing fang chu diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index e5304c566e9a..e856dd315a11 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -8,6 +8,7 @@ - Avali - Cyclorite - Diona + - Doll #Starlight - Dwarf - Felionoid - Human diff --git a/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml b/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml index c2257338f6d0..eca067cabec1 100644 --- a/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml @@ -157,6 +157,7 @@ - EmergencyOxygen - EmergencyElfOxygen # Starlight - EmergencyDwarfOxygen # Starlight + - EmergencyOxygenBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonBreather # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -743,6 +744,7 @@ - EmergencyOxygenClown - EmergencyElfOxygenClown # Starlight - EmergencyDwarfOxygenClown # Starlight + - EmergencyOxygenClownBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherClown # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -814,6 +816,7 @@ - EmergencyOxygenMime - EmergencyElfOxygenMime # Starlight - EmergencyDwarfOxygenMime # Starlight + - EmergencyOxygenMimeBlood # 🌟Starlight🌟 - EmergencySpeciesMothMime - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherMime # 🌟Starlight🌟 @@ -1221,6 +1224,7 @@ - EmergencyOxygenExtended - EmergencyElfOxygenExtended # Starlight - EmergencyDwarfOxygenExtended # Starlight + - EmergencyOxygenExtendedBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherExtended # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -1621,6 +1625,7 @@ - EmergencyOxygenSecurity - EmergencyElfOxygenSecurity # Starlight - EmergencyDwarfOxygenSecurity # Starlight + - EmergencyOxygenSecurityBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonbreatherSecurity # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -1672,6 +1677,7 @@ - EmergencyOxygenSyndicate - EmergencyElfOxygenSyndicate # Starlight - EmergencyDwarfOxygenSyndicate # Starlight + - EmergencyOxygenSyndicateBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherSyndicate # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -1689,6 +1695,7 @@ - EmergencyDwarfOxygenMilitaryDouble # Starlight - EmergencyIPC # 🌟Starlight🌟 - EmergencyCheeseMilitary # Starlight + - EmergencyOxygenMilitaryDoubleBlood # 🌟Starlight🌟 - type: loadoutGroup id: GroupSpeciesBreathTool diff --git a/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml b/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml index 891a55487b8b..1d90d02b94a9 100644 --- a/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml +++ b/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml @@ -41,6 +41,7 @@ - EmergencyNonBreatherMedical # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 - EmergencyCheeseMedical # Starlight + - EmergencyOxygenMedicalBlood # Starlight # Chief Medical Officer diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 13047397b9cc..d69e66a9d58e 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -43,6 +43,22 @@ +# Starlight - exploiting the survival kit loadout group to add the cantrip spellbook +- type: loadoutEffectGroup + id: ElfOxygenBreather + effects: + - !type:SpeciesLoadoutEffect + species: + - Elf + +# Starlight - Dolls get blood in their kits +- type: loadoutEffectGroup + id: HaemovoreOxygenBreather + effects: + - !type:SpeciesLoadoutEffect + species: + - Doll + - type: loadoutEffectGroup id: EffectSpeciesVox effects: @@ -69,6 +85,37 @@ back: - BoxSurvivalNitrogen +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygen + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxSurvival + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalBlood + +# NonBreathers, ie. Shadekin 🌟Starlight🌟 +- type: loadout + id: EmergencyNonBreather + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxSurvivalNonBreather + # Clown - type: loadout id: EmergencyOxygenClown @@ -88,6 +135,36 @@ back: - BoxHugNitrogen +- type: loadout #🌟Starlight🌟 + id: EmergencyNonBreatherClown + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxHugNonBreather + +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenClown + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxHugNonBreather + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenClownBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalClownBlood + # Mime - type: loadoutEffectGroup id: OxygenBreatherMime @@ -134,6 +211,36 @@ back: - BoxMimeMoth +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenMime + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxMime + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenMimeBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalMimeBlood + +- type: loadout #🌟Starlight🌟 + id: EmergencyNonBreatherMime + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxMimeNonBreather + # Engineering / Extended - type: loadout id: EmergencyOxygenExtended @@ -153,6 +260,36 @@ back: - BoxSurvivalEngineeringNitrogen +- type: loadout #🌟Starlight🌟 + id: EmergencyNonBreatherExtended + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxSurvivalEngineeringNonBreather + +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenExtended + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxSurvivalEngineering + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenExtendedBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalEngineeringBlood + # Medical - type: loadout id: EmergencyOxygenMedical @@ -172,6 +309,36 @@ back: - BoxSurvivalMedicalNitrogen +- type: loadout #🌟Starlight🌟 + id: EmergencyNonBreatherMedical + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxSurvivalMedicalNonBreather + +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenMedical + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxSurvivalMedical + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenMedicalBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalMedicalBlood + # Security - type: loadout id: EmergencyOxygenSecurity @@ -191,6 +358,36 @@ back: - BoxSurvivalSecurityNitrogen +- type: loadout #🌟Starlight🌟 + id: EmergencyNonbreatherSecurity + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxSurvivalSecurityNonBreather + +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenSecurity + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxSurvivalSecurity + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenSecurityBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalSecurityBlood + # Syndicate - type: loadout id: EmergencyOxygenSyndicate @@ -210,6 +407,36 @@ back: - BoxSurvivalSyndicateNitrogen +- type: loadout #🌟Starlight🌟 + id: EmergencyNonBreatherSyndicate + effects: + - !type:GroupLoadoutEffect + proto: NonBreather + storage: + back: + - BoxSurvivalNonBreatherSyndicate + +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenSyndicate + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxSurvivalSyndicate + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenSyndicateBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalSyndicateBlood + # Military / Double Extended - type: loadout id: EmergencyOxygenMilitaryDouble @@ -233,6 +460,29 @@ back: - BoxSurvivalMilitaryDoubleNitrogen +# Starlight: there should be a EmergencyNonBreatherMilitaryDouble here, but the Syndicate version was here instead + +# Starlight: Elves also get cantrip spellbooks +- type: loadout + id: EmergencyElfOxygenMilitaryDouble + effects: + - !type:GroupLoadoutEffect + proto: ElfOxygenBreather + storage: + back: + - BoxSurvivalMilitaryDouble + - BookOfCantrips + +# Starlight: Dolls get blood in their survival kits +- type: loadout + id: EmergencyOxygenMilitaryDoubleBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalMilitaryDoubleBlood + # Pre-equipped species gear # Full tank for vox as part of any Survival loadout diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index ef8da3c35563..075d95b97784 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -927,6 +927,19 @@ metamorphicMaxFillLevels: 5 metamorphicFillBaseName: fill- metamorphicChangeColor: true + metabolisms: # SL Dolls + Drink: + effects: + #Starlight Start + - !type:HealthChange + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + damage: + groups: + Brute: -1.5 + Burn: -0.75 + #Starlight End - type: reagent id: Booger @@ -1149,6 +1162,22 @@ groups: Brute: -3 Burn: -1.25 + #Starlight Start + - !type:AdjustReagent + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + reagent: UncookedAnimalProteins + amount: 0.5 + - !type:HealthChange + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + damage: + groups: + Brute: -1.5 + Burn: -0.75 + #Starlight End - type: reagent id: DevilsKiss @@ -1175,6 +1204,22 @@ groups: Brute: -3 Burn: -1.25 + #Starlight Start + - !type:AdjustReagent + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + reagent: UncookedAnimalProteins + amount: 0.5 + - !type:HealthChange + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + damage: + groups: + Brute: -1.5 + Burn: -0.75 + #Starlight End - type: reagent id: DoctorsDelight @@ -2007,7 +2052,22 @@ groups: Brute: -3 Burn: -1.25 - # Starlight edit end + #Dolls + - !type:AdjustReagent + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + reagent: UncookedAnimalProteins + amount: 0.5 + - !type:HealthChange + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + damage: + groups: + Brute: -1.5 + Burn: -0.75 + #Starlight End - type: reagent id: PinaColada diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 0d0a873c1f5a..241f0e459829 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -19,6 +19,22 @@ metabolites: UncookedAnimalProteins: 0.2 effects: + #Starlight Start + - !type:AdjustReagent + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + reagent: UncookedAnimalProteins + amount: 0.5 + - !type:HealthChange + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + damage: + groups: + Brute: -1.5 + Burn: -0.75 + #Starlight End - !type:SatiateThirst factor: 1.0 conditions: diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index f5e586003b59..c8bf6b81aa78 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -693,7 +693,7 @@ - !type:PopupMessage conditions: - !type:MetabolizerTypeCondition - type: [ Animal, Vox, Vampire, Rodentia, Neocyte ] # SL - add Vampire, Rodentia / FH - add Neocyte + type: [ Animal, Vox, Vampire, Rodentia, Neocyte, Doll ] # SL - add Vampire, Rodentia and Doll / FH - add Neocyte inverted: true type: Local visualType: MediumCaution @@ -703,12 +703,12 @@ probability: 0.1 conditions: - !type:MetabolizerTypeCondition - type: [ Animal, Vox, Plant, Vampire, Rodentia, Neocyte ] # Starlight - add Vampire, Rodentia / FH - add Neocyte + type: [ Animal, Vox, Plant, Vampire, Rodentia, Neocyte, Doll ] # Starlight - add Vampire, Rodentia and Doll / FH - add Neocyte inverted: true - !type:HealthChange conditions: - !type:MetabolizerTypeCondition - type: [ Animal, Vox, Plant, Vampire, Rodentia, Neocyte ] # Starlight - add Vampire, Rodentia / FH - add Neocyte + type: [ Animal, Vox, Plant, Vampire, Rodentia, Neocyte, Doll ] # Starlight - add Vampire, Rodentia and Doll / FH - add Neocyte inverted: true damage: types: @@ -744,7 +744,14 @@ type: [ Neocyte ] # FH + Starlight reagent: Protein #FH amount: 0.5 #FH - # Starlight-Start: Cyclorite Metabolism + # Starlight Start + - !type:AdjustReagent + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + reagent: Protein + amount: 0.5 + # Cyclorite Metabolism - !type:AdjustReagent conditions: - !type:ReagentCondition diff --git a/Resources/Prototypes/_Starlight/Actions/doll.yml b/Resources/Prototypes/_Starlight/Actions/doll.yml new file mode 100644 index 000000000000..3b4f85005d27 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Actions/doll.yml @@ -0,0 +1,61 @@ +# Actions for Doll species + +- type: entity + id: ActionShedShell + name: shed shell + description: Break out of your shell at great expense to yourself. + components: + - type: Action + itemIconStyle: BigAction + icon: + sprite: _Starlight/Interface/Actions/actions_syndrunner.rsi + state: exit + - type: ConfirmableAction + popup: doll-shed-shell-action + - type: InstantAction + event: !type:SurgeryActionEvent + bodyPartTypes: + - Torso + - Head + - Arm + - Leg + - Hand + - Foot + bodyPartSymmetries: + - Left + - Right + surgeries: + - SurgeryRemoveShellDoll + +- type: entity + id: ActionGenerateShellPiece + name: snap shell + description: Break off an expendable piece of your shell, either to use it as a crude knife or to donate it to a fellow doll. + components: + - type: Action + itemIconStyle: BigAction + icon: + sprite: _Starlight/Interface/Actions/actions_syndrunner.rsi + state: exit + useDelay: 60 + - type: ConfirmableAction + popup: doll-snap-shell-action + - type: InstantAction + event: !type:SpawnItemInHandEvent + spawned: ShellFragmentDoll + selfDamage: + types: + Blunt: 15 + +- type: entity + id: ActionFakeDeath + name: Fake Death + description: Pretend to take your final breath while staying alive. + components: + - type: Action + useDelay: 30 + icon: + sprite: Interface/Actions/actions_crit.rsi + state: fakedeath + - type: InstantAction + event: !type:CritFakeDeathEvent \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml new file mode 100644 index 000000000000..4b7a4ed376d3 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml @@ -0,0 +1,368 @@ +- type: entity + id: BaseDollOrgan + parent: + - BaseMob + - MobPolymorphable + - MobAtmosExposed + - MobBloodstream + - MobFlammable + - MobRespirator + - MobAtmosStandard + - BaseItem + abstract: true + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/organs.rsi + - type: Organ + - type: Edible + - type: Extractable + grindableSolutionName: organ + - type: SolutionContainerManager + solutions: + organ: + reagents: + - ReagentId: Nutriment + Quantity: 15 + food: + maxVol: 15 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 15 + - type: FlavorProfile + flavors: + - savory + - meaty + - strange + - spooky + - type: Tag + tags: + - Meat + - type: StatusEffects + allowed: + - Electrocution + - TemporaryBlindness + - Pacified + - Flashed + - RadiationProtection + - Adrenaline + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: Blood + Quantity: 150 + - type: MobPrice + price: 150 + - type: FloatingVisuals + - type: Damageable + damageContainer: Biological + - type: RadiationReceiver + - type: Stamina + - type: StunVisuals + - type: MobState + - type: MobThresholds + thresholds: + 0: Alive + 100: Critical + 200: Dead + - type: MobStateActions + actions: + Critical: + - ActionCritSuccumb + - ActionCritFakeDeath + - ActionCritLastWords + - type: Deathgasp + - type: HealthExaminable + examinableTypes: + - Blunt + - Slash + - Piercing + - Heat + - Shock + - Cold + - Caustic + - Asphyxiation + - Radiation + - type: DamageOnHighSpeedImpact + damage: + types: + Blunt: 5 + soundHit: + path: /Audio/Effects/hit_kick.ogg + - type: Pullable + - type: LightningTarget + priority: 2 + lightningExplode: false + - type: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + Acidic: [Touch, Ingestion] + - type: Internals + - type: MovementSpeedModifier + baseWalkSpeed : 4 + baseSprintSpeed : 4 + - type: Buckle + - type: StandingState + - type: Blindable + - type: PermanentBlindness + - type: NpcFactionMember + factions: + - SimpleNeutral + - type: HTN + rootTask: + task: IdleCompound + - type: Body + prototype: Animal + - type: Climbing + - type: NameIdentifier + group: GenericNumber + - type: SlowOnDamage + speedModifierThresholds: + 60: 0.7 + 80: 0.5 + - type: VentCrawler + mayCarryItems: false + +- type: entity + id: OrganDollBrain + parent: [BaseDollOrgan] + name: brain + description: "A strange mass of meat somehow equivalent to a brain." + components: + - type: Sprite + state: brain + # Have to replicate normal BaseBrain components here, without the movement blocker + - type: Item + size: Small + heldPrefix: brain + - type: Organ + - type: Input + context: "ghost" + - type: Brain + - type: Examiner + - type: BadFood + - type: Tag + tags: + - Meat + - type: OrganBrain + - type: SolutionContainerManager + solutions: + organ: + reagents: + - ReagentId: Nutriment + Quantity: 10 + food: + maxVol: 20 + reagents: + - ReagentId: GreyMatter + Quantity: 20 + - type: FoodSequenceElement + entries: + Burger: Brain + Taco: Brain + +- type: entity + id: OrganDollEyes + parent: [BaseDollOrgan, BaseOrganEyes] + name: eyes + description: "There are too many of these..." + components: + - type: Sprite + layers: + - state: eyeball-l + - state: eyeball-r + - type: Item + size: Small + heldPrefix: eyeballs + - type: OrganVisualization + layer: Eyes + prototypes: + Default: MobHumanoidEyes + +- type: entity + id: OrganDollTongue + parent: [BaseDollOrgan, BaseOrganTongue] + name: tongue + description: "A fleshy muscle mostly used for whispering secrets from the dark." + components: + - type: Sprite + state: tongue + +- type: entity + id: OrganDollEars + parent: [BaseDollOrgan, BaseOrganEars] + name: ears + description: "There are three parts to the ear. Inner, middle and outer. You don't want to see any of it. Or for it to see you." + components: + - type: Sprite + state: ears + +- type: entity + id: OrganDollLungs + parent: [BaseDollOrgan, BaseOrganLungs] + name: lungs + description: "Dolls use these to breathe... somehow." + components: + - type: Sprite + layers: + - state: lung-l + - state: lung-r + - type: Lung + - type: Metabolizer + removeEmpty: true + solutionOnBody: false + solution: "Lung" + metabolizerTypes: [ Human ] + groups: + - id: Gas + rateModifier: 100.0 + - type: SolutionContainerManager + solutions: + organ: + reagents: + - ReagentId: Nutriment + Quantity: 10 + Lung: + maxVol: 100.0 + canReact: false + food: + maxVol: 10 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 10 + +- type: entity + id: OrganDollHeart + parent: [BaseDollOrgan, BaseOrganHeart] + name: heart + description: "Is this even a heart?" + components: + - type: Sprite + state: heart-on + # The heart 'metabolizes' medicines and poisons that aren't filtered out by other organs. + # This is done because these chemicals need to have some effect even if they aren't being filtered out of your body. + # You're technically 'immune to poison' without a heart, but.. uhh, you'll have bigger problems on your hands. + - type: Metabolizer + maxReagents: 2 + metabolizerTypes: [Human] + groups: + - id: Medicine + - id: Poison + - id: Narcotic + - type: Item + size: Small + heldPrefix: heart + +- type: entity + id: OrganDollStomach + parent: [BaseDollOrgan, BaseOrganStomach] + name: stomach + description: "Surprisingly large." + components: + - type: Sprite + state: stomach + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 100 + food: + maxVol: 10 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 10 + - type: Stomach + specialDigestible: + tags: + - Meat + - Blood + - Pill + - Crayon + - Paper + # The stomach metabolizes stuff like foods and drinks. + # TODO: Have it work off of the ent's solution container, and move this + # to intestines instead. + - type: Metabolizer + # mm yummy + maxReagents: 3 + metabolizerTypes: [ Doll ] + groups: + - id: Food + - id: Drink + +- type: entity + id: OrganDollLiver + parent: [BaseDollOrgan, BaseOrganLiver] + name: liver + description: "Indistinct mass of flesh. Probably the liver." + components: + - type: Sprite + state: liver + - type: Metabolizer # The liver metabolizes certain chemicals only, like alcohol. + maxReagents: 1 + metabolizerTypes: [ Human ] + groups: + - id: Alcohol + +- type: entity + id: OrganDollKidneys + parent: [BaseDollOrgan, BaseOrganKidneys] + name: kidneys + description: "Ew, why does it have eyes?!?" + components: + - type: Sprite + layers: + - state: kidney-l + - state: kidney-r + # The kidneys just remove anything that doesn't currently have any metabolisms, as a stopgap. + - type: Metabolizer + maxReagents: 5 + metabolizerTypes: [ Human ] + removeEmpty: true + +- type: entity + id: ShellFragmentDoll + parent: [BaseKnife] + name: doll shell fragement + description: A shell piece, broken off of a doll. Sharp, and looks quite sturdy. + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/organs.rsi + state: shell + - type: Organ + - type: PhysicalComposition + materialComposition: + Plasteel: 500 + - type: MeleeWeapon + wideAnimationRotation: -135 + attackRate: 1.0 + damage: + types: + Slash: 15 + - type: OrganShell + - type: OrganDamage + damage: + types: + Blunt: 30 + Slash: 5 + Piercing: 5 + - type: Damageable + damageContainer: Biological + - type: MarkingOrgan + storeMarkings: true + AppliedMarkings: + - DollShellHeadFemale + - DollShellChestFemale + - DollShellLArm + - DollShellLHand + - DollShellLLeg + - DollShellLFoot + - DollShellRArm + - DollShellRHand + - DollShellRLeg + - DollShellRFoot + - type: DamageModifierOrgan + modifiers: + coefficients: + Slash: -0.06 # Ten pieces subtract 0.6 coefficient + Piercing: -0.06 + Heat: 0.03 # More shell pieces means more insulation means more cooking! \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Body/Parts/doll.yml b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml new file mode 100644 index 000000000000..738626d2db75 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml @@ -0,0 +1,153 @@ +- type: entity + id: PartDoll + parent: [BaseItem, BasePart] + name: "doll body part" + abstract: true + components: + - type: Extractable + juiceSolution: + reagents: + - ReagentId: UncookedAnimalProtein + Quantity: 10 + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: TorsoDoll + name: "doll torso" + parent: [PartDoll, BaseTorso] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "torso" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "torso" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: UncookedAnimalProtein + Quantity: 20 + - ReagentId: Fat + Quantity: 20 + - ReagentId: Blood + Quantity: 40 + +- type: entity + id: HeadDoll + name: "doll head" + parent: [PartDoll, BaseHead] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "head" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "head" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: UncookedAnimalProtein + Quantity: 10 + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 20 + +- type: entity + id: LeftArmDoll + name: "left doll arm" + parent: [PartDoll, BaseLeftArm] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_arm" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_arm" + +- type: entity + id: RightArmDoll + name: "right doll arm" + parent: [PartDoll, BaseRightArm] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_arm" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_arm" + +- type: entity + id: LeftHandDoll + name: "left doll hand" + parent: [PartDoll, BaseLeftHand] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_hand" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_hand" + +- type: entity + id: RightHandDoll + name: "right doll hand" + parent: [PartDoll, BaseRightHand] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_hand" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_hand" + +- type: entity + id: LeftLegDoll + name: "left doll leg" + parent: [PartDoll, BaseLeftLeg] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_leg" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_leg" + +- type: entity + id: RightLegDoll + name: "right doll leg" + parent: [PartDoll, BaseRightLeg] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_leg" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_leg" + +- type: entity + id: LeftFootDoll + name: "left doll foot" + parent: [PartDoll, BaseLeftFoot] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_foot" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "l_foot" + +- type: entity + id: RightFootDoll + name: "right doll foot" + parent: [PartDoll, BaseRightFoot] + components: + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_foot" + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: "r_foot" diff --git a/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml b/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml new file mode 100644 index 000000000000..00cbe03c8671 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml @@ -0,0 +1,73 @@ +- type: body + id: Doll + name: "doll" + root: torso + slots: + head: + part: HeadDoll + connections: + - torso + organs: + brain: OrganDollBrain + eyes: OrganDollEyes + tongue: OrganDollTongue + eye_implant: null + brain_implant: null + shell: ShellFragmentDoll + torso: + part: TorsoDoll + connections: + - right arm + - left arm + - right leg + - left leg + organs: + heart: OrganDollHeart + lungs: OrganDollLungs + stomach: OrganDollStomach + liver: OrganDollLiver + kidneys: OrganDollKidneys + cavity: null + shell: ShellFragmentDoll + right arm: + part: RightArmDoll + connections: + - right hand + organs: + shell: ShellFragmentDoll + left arm: + part: LeftArmDoll + connections: + - left hand + organs: + shell: ShellFragmentDoll + right hand: + part: RightHandDoll + organs: + hand_implant: null + shell: ShellFragmentDoll + left hand: + part: LeftHandDoll + organs: + hand_implant: null + shell: ShellFragmentDoll + right leg: + part: RightLegDoll + connections: + - right foot + organs: + shell: ShellFragmentDoll + left leg: + part: LeftLegDoll + connections: + - left foot + organs: + shell: ShellFragmentDoll + right foot: + part: RightFootDoll + organs: + shell: ShellFragmentDoll + left foot: + part: LeftFootDoll + organs: + shell: ShellFragmentDoll diff --git a/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml b/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml index e8d088ba5c11..9b3189a9bae7 100644 --- a/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml +++ b/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml @@ -33,6 +33,26 @@ - state: internals - state: shadekin +- type: entity + parent: BoxCardboard + id: BoxSurvivalBlood + name: survival box + description: It's a box with basic internals inside. This one is labelled to contain a haemobrick. + suffix: Standard, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreath + - id: EmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - type: Sprite + layers: + - state: internals + - type: entity parent: BoxSurvivalNonBreather id: BoxSurvivalNonBreatherExtended @@ -49,6 +69,167 @@ amount: 2 - id: DrinkWaterBottleFull +- type: entity + parent: BoxCardboard + id: BoxSurvivalEngineeringBlood + name: extended-capacity survival box + description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank and a haemobrick. + suffix: Extended, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreath + - id: ExtendedEmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Sprite + layers: + - state: internals + - state: extendedtank + +- type: entity + + parent: BoxCardboard + id: BoxSurvivalSecurityBlood + name: survival box + description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank and a haemobrick. + suffix: Security, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskGasSecurity + - id: ExtendedEmergencyOxygenTankFilled #Starlight + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Sprite + layers: + - state: internals + - state: emergencytank + +- type: entity + parent: BoxCardboard + id: BoxSurvivalMedicalBlood + name: survival box + description: It's a box with basic internals inside. This one is labelled to contain a haemobrick. + suffix: Medical, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreathMedical + - id: EmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Sprite + layers: + - state: internals + - state: emergencytank + +- type: entity + parent: BoxCardboard + id: BoxHugBlood + name: box of hugs + description: A special box for sensitive people. This one is labelled to contain a haemobrick. + suffix: Emergency, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreath + - id: ExtendedEmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Sprite + layers: + - state: internals + - state: extendedtank + +- type: entity + parent: BoxCardboard + id: BoxSurvivalSecurityBlood + name: survival box + description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank and a haemobrick. + suffix: Security, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskGasSecurity + - id: ExtendedEmergencyOxygenTankFilled #Starlight + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Sprite + layers: + - state: internals + - state: emergencytank + +- type: entity + parent: BoxCardboard + id: BoxSurvivalMedicalBlood + name: survival box + description: It's a box with basic internals inside. This one is labelled to contain a haemobrick. + suffix: Medical, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreathMedical + - id: EmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Sprite + layers: + - state: internals + - state: emergencytank + +- type: entity + parent: BoxCardboard + id: BoxHugBlood + name: box of hugs + description: A special box for sensitive people. This one is labelled to contain a haemobrick. + suffix: Emergency, Blood + components: + - type: Sprite + layers: + - state: box_hug + - state: heart + - type: Item + heldPrefix: hug + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreath + - id: EmergencyFunnyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - id: DrinkWaterBottleFull + - type: Tag + tags: + - BoxCardboard + - BoxHug + - type: entity parent: BoxSurvivalNonBreather id: BoxHugNonBreather @@ -60,6 +241,22 @@ - state: box_hug - state: shadekin +- type: entity + parent: BoxSurvival + id: BoxMimeBlood + suffix: Mime, Emergency, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskBreath + - id: EmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodBreadNutriBatard + - id: DrinkWaterBottleFull + - type: entity parent: BoxSurvivalNonBreather id: BoxMimeNonBreather @@ -323,3 +520,44 @@ - id: EmergencyMedipen - id: Flare - id: FoodPacketCheeseBox + + + +- type: entity + parent: BoxCardboard + id: BoxSurvivalSyndicateBlood + name: extended-capacity survival box + description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank and a haemobrick. + suffix: Syndicate, Blood + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ClothingMaskGasSyndicate + - id: ExtendedEmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - id: FoodSnackBloodBrick + - type: Sprite + layers: + - state: internals + - state: extendedtank + +- type: entity + parent: BoxCardboardSmall # Cannot fit 3x3 boxes into already-filled ERT backpacks. + id: BoxSurvivalMilitaryDoubleBlood + suffix: Military O2, Blood + description: It's a box with basic internals inside. This one is labelled to contain an double extended-capacity tank and a haemobrick. + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: DoubleEmergencyOxygenTankFilled + - id: EmergencyMedipen + - id: Flare + - type: Sprite + layers: + - state: internals + - state: extendedtank diff --git a/Resources/Prototypes/_Starlight/Damage/modifier_sets.yml b/Resources/Prototypes/_Starlight/Damage/modifier_sets.yml index 4026eb768120..73bbd7e4ea42 100644 --- a/Resources/Prototypes/_Starlight/Damage/modifier_sets.yml +++ b/Resources/Prototypes/_Starlight/Damage/modifier_sets.yml @@ -18,6 +18,14 @@ Blunt: 0.85 # Have you ever tried to punch a rock? Slash: 0.7 +- type: damageModifierSet + id: Doll + coefficients: + Blunt: 1.3 # Base form is squish! + Slash: 1.3 + Piercing: 1.3 + Heat: 1.0 + - type: damageModifierSet id: Shadekin coefficients: diff --git a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml new file mode 100644 index 000000000000..833d83b1433b --- /dev/null +++ b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml @@ -0,0 +1,17 @@ +- type: localizedDataset + id: NamesFirstDollMale + values: + prefix: names-first-doll-male-dataset- + count: 200 + +- type: localizedDataset + id: NamesFirstDollFemale + values: + prefix: names-first-doll-female-dataset- + count: 47 + +- type: localizedDataset + id: NamesLastDoll + values: + prefix: names-last-doll-dataset- + count: 200 diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml new file mode 100644 index 000000000000..56dd4eb9a617 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml @@ -0,0 +1,168 @@ +# Doll Shell missing +- type: marking + id: DollShellLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: l_arm + +- type: marking + id: DollShellRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: r_arm + +- type: marking + id: DollShellLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: l_hand + +- type: marking + id: DollShellRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: r_hand + +- type: marking + id: DollShellLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: l_leg + +- type: marking + id: DollShellRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: r_leg + +- type: marking + id: DollShellLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: l_foot + +- type: marking + id: DollShellRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: r_foot + +- type: marking + id: DollShellChestFemale + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: torso_f + +- type: marking + id: DollShellChestMale + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: torso_m + +- type: marking + id: DollShellHeadFemale + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_f + +- type: marking + id: DollShellHeadMale + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_m \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml index e90844f937ef..8755b6b7c190 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml @@ -40,7 +40,7 @@ id: HeadEarrings bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, SlimePerson, NeoSlimePerson, Neocyte] + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, SlimePerson, NeoSlimePerson, Neocyte] forcedColoring: false followSkinColor: false coloring: @@ -58,7 +58,7 @@ id: HeadEarringsDrop bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, SlimePerson, NeoSlimePerson, Neocyte] + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, SlimePerson, NeoSlimePerson, Neocyte] forcedColoring: false followSkinColor: false coloring: @@ -76,7 +76,7 @@ id: HeadEarringsWeights bodyPart: HeadTop markingCategory: HeadTop - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, SlimePerson, NeoSlimePerson, Neocyte] + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, SlimePerson, NeoSlimePerson, Neocyte] forcedColoring: false followSkinColor: false coloring: @@ -95,7 +95,7 @@ id: HeadSeptum bodyPart: Snout markingCategory: Snout - speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Elf, Neocyte] + speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Elf, Neocyte] forcedColoring: false followSkinColor: false coloring: diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml new file mode 100644 index 000000000000..d81fe9917086 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml @@ -0,0 +1,5 @@ +- type: entity + save: false + name: Urist McHaunted + parent: BaseMobDoll + id: MobDoll \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/humanoid.yml index 7802eb3274ad..95934101e6a3 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/humanoid.yml @@ -775,6 +775,7 @@ - Moth - SlimePerson - Lagomorph + - Doll - Elf - NeoArachnid - NeoDiona diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml index 07048a154019..fb1b025f37b5 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml @@ -51,6 +51,15 @@ - type: HumanoidAppearance species: Dwarf +- type: entity + parent: [BaseSpeciesDummy, BaseInventoryFemaleJumpsuit] + id: AppearanceDoll + categories: [ HideSpawnMenu ] + description: A dummy doll meant to be used in character setup. + components: + - type: HumanoidAppearance + species: Doll + - type: entity parent: [BaseSpeciesDummy, BaseInventoryFemaleJumpsuit] id: AppearanceElf diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml new file mode 100644 index 000000000000..37dd8a1d0dd2 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml @@ -0,0 +1,73 @@ +- type: entity + parent: BaseMobSpeciesOrganic + id: BaseMobDoll + abstract: true + components: + - type: LanguageKnowledge + speaks: + - GalacticCommon + - Darktongue + understands: + - GalacticCommon + - Darktongue + - type: Absorbable + - type: Hunger + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: doll + - type: Thirst + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeatAnomaly # Actual anomaly meat, since players probably won't be butchered too often. Yes, that does mean Dolls do not have "people" meat. + amount: 5 + - id: SheetPlasteel1 + amount: 5 + - type: HumanoidAppearance + species: Doll + hideLayersOnEquip: + - Hair + - Snout + - type: Body + prototype: Doll + requiredLegs: 2 + - type: Damageable + damageContainer: Biological + damageModifierSet: Doll + - type: Vocal + sounds: + Male: MaleHuman + Female: FemaleHuman + Unsexed: FemaleHuman + - type: Inventory + speciesId: Doll + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: Shell + breakShellAction: ActionShedShell + generateShellPieceAction: ActionGenerateShellPiece + noShellComponents: + - type: VentCrawler + mayCarryItems: false + +- type: entity + parent: BaseSpeciesDummy + id: MobDollDummy + categories: [ HideSpawnMenu ] + components: + - type: HumanoidAppearance + species: Doll + - type: Body + prototype: Doll + - type: Inventory + speciesId: Doll + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female diff --git a/Resources/Prototypes/_Starlight/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/_Starlight/Entities/Objects/Consumable/Food/snacks.yml index 458d68ed96ae..edad00da549a 100644 --- a/Resources/Prototypes/_Starlight/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/_Starlight/Entities/Objects/Consumable/Food/snacks.yml @@ -209,6 +209,61 @@ - cheesy - stinky +- type: entity + parent: BaseItem + id: FoodSnackBloodBrick + name: haemobrick + description: A carefully synthesized brick of condensed blood. Tastes like you would expect. + components: + - type: Item + size: Small + storedOffset: -1,0 + heldPrefix: nutribrick + - type: Tag + tags: + - FoodSnack + - type: Sprite + sprite: Objects/Consumable/Food/snacks.rsi + state: nutribrick + - type: SpawnItemsOnUse + items: + - id: FoodPacketMRETrash + - id: FoodSnackBloodBrickOpen + sound: + path: /Audio/Effects/unwrap.ogg + requireHands: false + - type: ItemPrice + priceCategory: food_medium + +- type: entity + parent: FoodSnackBase + id: FoodSnackBloodBrickOpen + name: haemobrick + description: A carefully synthesized brick of condensed blood. Tastes like you would expect. + components: + - type: FlavorProfile + flavors: + - blood + - type: Item + size: Small + storedOffset: -1,0 + heldPrefix: nutribrick-open + - type: Tag + tags: + - Blood + - type: Sprite + state: nutribrick-open + color: '#880000' + - type: SolutionContainerManager + solutions: + food: + maxVol: 25 + reagents: + - ReagentId: Blood + Quantity: 20 + - type: ItemPrice + priceCategory: food_medium + - type: entity parent: FoodSnackBase id: FoodSnackCandyApple diff --git a/Resources/Prototypes/_Starlight/Guidebook/species.yml b/Resources/Prototypes/_Starlight/Guidebook/species.yml index f3bcbe8f30eb..ed2a540cd101 100644 --- a/Resources/Prototypes/_Starlight/Guidebook/species.yml +++ b/Resources/Prototypes/_Starlight/Guidebook/species.yml @@ -43,6 +43,12 @@ name: species-name-rodentia text: "/ServerInfo/_Starlight/Guidebook/Mobs/Rodentia.xml" + +- type: guideEntry + id: Doll + name: species-name-doll + text: "/ServerInfo/_StarLight/Guidebook/Mobs/Doll.xml" + - type: guideEntry id: Neocyte name: species-name-neocyte diff --git a/Resources/Prototypes/_Starlight/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/_Starlight/Reagents/Consumable/Drink/alcohol.yml index 16dcb6a5869a..8103a293d4cc 100644 --- a/Resources/Prototypes/_Starlight/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/_Starlight/Reagents/Consumable/Drink/alcohol.yml @@ -28,6 +28,20 @@ groups: Brute: -3 Burn: -1.25 + - !type:AdjustReagent + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + reagent: UncookedAnimalProteins + amount: 0.5 + - !type:HealthChange + conditions: + - !type:MetabolizerTypeCondition + type: [ Doll ] + damage: + groups: + Brute: -1.5 + Burn: -0.75 Metabolites: effects: - !type:Drunk diff --git a/Resources/Prototypes/_Starlight/Species/doll.yml b/Resources/Prototypes/_Starlight/Species/doll.yml new file mode 100644 index 000000000000..e841c5bc2e4f --- /dev/null +++ b/Resources/Prototypes/_Starlight/Species/doll.yml @@ -0,0 +1,173 @@ +- type: species + id: Doll + name: species-name-doll + roundStart: true + prototype: MobDoll + sprites: MobDollSprites + markingLimits: MobDollMarkingLimits + dollPrototype: MobDollDummy + skinColoration: Hues + defaultSkinTone: "#FFFFFF" + maleFirstNames: NamesFirstDollMale + femaleFirstNames: NamesFirstDollFemale + lastNames: NamesLastDoll + naming: FirstLast + customName: true + roundstartCyberwareCapacity: 3 + minAge: 20 + youngAge: 30 + oldAge: 50 + maxAge: 70 + +- type: speciesBaseSprites + id: MobDollSprites + sprites: + Head: MobDollHead + HeadTop: MobHumanoidAnyMarking + Snout: MobHumanoidAnyMarking + Hair: MobHumanoidAnyMarking + FacialHair: MobHumanoidAnyMarking + UndergarmentTop: MobHumanoidAnyMarking + UndergarmentBottom: MobHumanoidAnyMarking + Chest: MobDollTorso + Eyes: MobHumanoidEyes + LArm: MobDollLArm + RArm: MobDollRArm + LHand: MobDollLHand + RHand: MobDollRHand + LLeg: MobDollLLeg + RLeg: MobDollRLeg + LFoot: MobDollLFoot + RFoot: MobDollRFoot + +- type: markingPoints + id: MobDollMarkingLimits + onlyWhitelisted: true + points: + Head: + points: 1 + required: true + defaultMarkings: [ DollShellHeadFemale ] + Chest: + points: 1 + required: true + defaultMarkings: [ DollShellChestFemale ] + Legs: + points: 4 + required: true + defaultMarkings: [ DollShellLLeg, DollShellLFoot, DollShellRLeg, DollShellRFoot ] + Arms: + points: 4 + required: true + defaultMarkings: [ DollShellLArm, DollShellLHand, DollShellRArm, DollShellRHand ] + Special: + points: 0 + required: false + Hair: + points: 1 + required: false + FacialHair: + points: 1 + required: false + Snout: + points: 1 + required: false + Tail: + points: 0 + required: false + HeadTop: + points: 1 + required: false + HeadSide: + points: 1 + required: false + UndergarmentTop: + points: 1 + required: false + UndergarmentBottom: + points: 1 + required: false + +- type: humanoidBaseSprite + id: MobDollHead + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobDollHeadMale + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobDollHeadFemale + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobDollTorso + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: torso + +- type: humanoidBaseSprite + id: MobDollTorsoMale + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: torso + +- type: humanoidBaseSprite + id: MobDollTorsoFemale + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: torso + +- type: humanoidBaseSprite + id: MobDollLLeg + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobDollLArm + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobDollLHand + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobDollLFoot + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobDollRLeg + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobDollRArm + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobDollRHand + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobDollRFoot + baseSprite: + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/_Starlight/Surgery/amputation_surgeries.yml b/Resources/Prototypes/_Starlight/Surgery/amputation_surgeries.yml index f36243e42408..b9db8317a99c 100644 --- a/Resources/Prototypes/_Starlight/Surgery/amputation_surgeries.yml +++ b/Resources/Prototypes/_Starlight/Surgery/amputation_surgeries.yml @@ -7,6 +7,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepInciseCartilage - SurgeryStepExposeNerves @@ -37,6 +38,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepDeepIncision - SurgeryStepExposeSkull diff --git a/Resources/Prototypes/_Starlight/Surgery/attachment_surgeries.yml b/Resources/Prototypes/_Starlight/Surgery/attachment_surgeries.yml index 3a14eb395ea0..6f07cacfd211 100644 --- a/Resources/Prototypes/_Starlight/Surgery/attachment_surgeries.yml +++ b/Resources/Prototypes/_Starlight/Surgery/attachment_surgeries.yml @@ -7,6 +7,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepExposeNerves - SurgeryStepExposeBloodVessels @@ -36,6 +37,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepExposeNerves - SurgeryStepExposeBloodVessels @@ -64,6 +66,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepExposeNerves - SurgeryStepExposeBloodVessels diff --git a/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml b/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml index 9ff5f670299e..4002c33fabdb 100644 --- a/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml @@ -1354,3 +1354,37 @@ - type: Sprite sprite: Objects/Specific/Medical/Surgery/scissors.rsi state: hemostat + + +# Shell + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepRemoveShell + name: Remove Shell + components: + - type: SurgeryStep + duration: 4 + - type: SurgeryStepEmoteEffect + - type: SurgeryStepOrganExtract + organ: + - type: OrganShell + - type: SurgeryStepBleedEffect + damage: + types: + Blunt: 4 + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepPositionShell + name: Position Shell + components: + - type: SurgeryStep + duration: 3 + tools: + - type: OrganShell + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/organs.rsi + state: shell + - type: SurgeryStepOrganInsert + slot: shell diff --git a/Resources/Prototypes/_Starlight/Surgery/surgeries.yml b/Resources/Prototypes/_Starlight/Surgery/surgeries.yml index 99116c78ed2b..723ce35fb509 100644 --- a/Resources/Prototypes/_Starlight/Surgery/surgeries.yml +++ b/Resources/Prototypes/_Starlight/Surgery/surgeries.yml @@ -19,6 +19,7 @@ - SlimePerson - NeoSlimePerson - IPC + - Doll - type: entity parent: SurgeryOpenIncision @@ -54,6 +55,7 @@ - SlimePerson - NeoSlimePerson - IPC + - Doll - type: SurgeryPartCondition parts: - Torso @@ -82,12 +84,12 @@ - type: entity parent: SurgeryCloseIncision - id: SurgeryCloseIncisionLimb + id: SurgeryCloseIncisionDollLimb name: Close Incision components: - type: Surgery requirement: - - SurgeryOpenIncision + - SurgeryOpenIncisionDoll priority: 100 steps: - SurgeryStepRejoinBloodVessels @@ -175,6 +177,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll priority: -50 steps: - SurgeryStepSawBones @@ -200,6 +203,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll priority: -50 steps: - SurgeryStepCutAbdominalMuscles @@ -224,6 +228,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepExposeVocalCords - SurgeryStepAdjustVocalCords @@ -672,6 +677,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepLocateEyes - SurgeryStepClampOpticNerve @@ -700,6 +706,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepPrepareImplantSiteEyes - SurgeryStepInsertEyes @@ -728,6 +735,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepLocateImplant - SurgeryStepClampOpticNerve @@ -755,6 +763,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepPrepareImplantSiteEyes - SurgeryStepInsertEyeImplant @@ -843,6 +852,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepLocateImplant - SurgeryStepExposeNerves @@ -870,6 +880,7 @@ requirement: - SurgeryOpenIncision - SurgeryOpenIncisionSlime + - SurgeryOpenIncisionDoll steps: - SurgeryStepPrepareImplantSiteHand - SurgeryStepInsertHandImplant @@ -897,6 +908,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepPreparePatient - SurgeryStepShaveHead @@ -941,6 +953,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepCleanImplantSite - SurgeryStepPrepareScalp @@ -1092,6 +1105,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepPreparePatient - SurgeryStepShaveHead @@ -1129,6 +1143,7 @@ - type: Surgery requirement: - SurgeryOpenIncision + - SurgeryOpenIncisionDoll steps: - SurgeryStepCleanImplantSite - SurgeryStepPrepareScalp @@ -1353,3 +1368,83 @@ - type: Sprite sprite: _Starlight/Mobs/Species/Shadekin/organs.rsi state: core + +# +- type: entity + parent: SurgeryOpenIncision + id: SurgeryOpenIncisionDoll + name: Open Incision + components: + - type: Surgery + requirement: + - SurgeryRemoveShellDoll + priority: -100 + steps: + - SurgeryStepRetractSkin + - type: SurgerySpeciesCondition + speciesBlacklist: [] + speciesWhitelist: + - Doll + +- type: entity + parent: SurgeryCloseIncision + id: SurgeryCloseIncisionDoll + name: Close Incision + components: + - type: Surgery + requirement: + - SurgeryOpenIncisionDoll + priority: 100 + steps: + - SurgeryStepCloseIncisionDoll + - type: SurgerySpeciesCondition + speciesBlacklist: [] + speciesWhitelist: + - Doll + - type: SurgeryPartCondition + parts: + - Torso + - Head + - Arm + - Hand + - Leg + - Foot + +- type: entity + parent: SurgeryBase + id: SurgeryRemoveShellDoll + name: Remove Shell + description: Surgical removal of a dolls shell. + components: + - type: Surgery + steps: + - SurgeryStepOpenShell + - SurgeryStepClampTendrils + - SurgeryStepRemoveShell + - type: SurgerySpeciesCondition + speciesBlacklist: [] + speciesWhitelist: + - Doll + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/scissors.rsi + state: setter + +- type: entity + parent: SurgeryBase + id: SurgeryReattachShellDoll + name: Reattach Shell + description: Surgical reattachment of a dolls shell. + components: + - type: Surgery + requirement: + - SurgeryCloseIncisionDoll + steps: + - SurgeryStepPositionShell + - SurgeryStepMendShellDoll + - type: SurgerySpeciesCondition + speciesBlacklist: [] + speciesWhitelist: + - Doll + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/organs.rsi + state: shell diff --git a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml index 9b307d1679b0..78349ba954b5 100644 --- a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml @@ -133,12 +133,70 @@ - type: SurgeryStepEmoteEffect - type: SurgeryClearProgress +- type: entity + parent: SurgeryStepBase + id: SurgeryStepCloseIncisionDoll + name: Close incision + components: + - type: SurgeryStep + tools: + - type: Cautery + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/cautery.rsi + state: cautery + - type: SurgeryStepEmoteEffect + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepMendShellDoll + name: Mend shell + components: + - type: SurgeryStep + tools: + - type: BoneGel + remove: + - type: SkinRetracted + - type: BleedersClamped + - type: IncisionOpen + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi + state: bone-gel + - type: SurgeryStepEmoteEffect + emote: Sigh + - type: SurgeryClearProgress + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepOpenShell + name: Break open the shell + components: + - type: SurgeryStep + duration: 10 + add: + - type: IncisionOpen + - type: SurgeryStepBleedEffect + damage: + types: + Slash: 3 + - type: SurgeryStepEmoteEffect + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepClampTendrils + name: Remove the tendrils + components: + - type: SurgeryStep + add: + - type: BleedersClamped + - type: SurgeryClampBleedEffect + - type: entity parent: SurgeryStepBase id: SurgeryStepCutAbdominalMuscles name: Cut through abdominal muscles components: - type: SurgeryStep + duration: 5 tools: - type: Scalpel - type: Sprite diff --git a/Resources/Prototypes/_Starlight/tags.yml b/Resources/Prototypes/_Starlight/tags.yml index 0027bfda3368..f84d5444975b 100644 --- a/Resources/Prototypes/_Starlight/tags.yml +++ b/Resources/Prototypes/_Starlight/tags.yml @@ -47,6 +47,9 @@ - type: Tag id: BladeSteel +- type: Tag + id: Blood + - type: Tag id: BloodSplatter diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index ccbc841b9a4d..076caef9b255 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -13,19 +13,22 @@ + - + + + diff --git a/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml new file mode 100644 index 000000000000..feb88ff9a068 --- /dev/null +++ b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml @@ -0,0 +1,32 @@ + + # Doll + + + + + + The common perception of Dolls is one of cold, unmoving faces and eerily fluid motion. This is, of course, a deliberately chosen look - as they fear being outcast or even hunted, were people to look underneath their shell. + + In reality, Dolls are a recently discovered, sapient strain of meat anomaly creatures, hiding their rather disturbing forms underneath a hard, ceramic-like shell. It is more than just a suit - a Doll's shell is a core part of their very self. While they are able to leave it behind, they are unwilling to do so, save for extreme emergencies, and outside attempts to remove it are oft met with violent resistance. + + As the sight of a Doll without their shell is disturbing to most other species, being seen without their shell is considered grounds for immediate arrest. + + ## Diet + Dolls are anomalous creatures of flesh. As such, their diet consists of meat and blood, though they do not care whether it has been cooked beforehand. Consuming blood will also slowly heal a Doll, including their shell - though the mechanism for this is unknown. + + ## Racial Features + - [color=#00aa00]Slowly heal from consuming blood[/color] + - [color=#FFA500]Organs move independently[/color] + - [color=#aa0000]Takes 30% more blunt damage[/color] + + [bold]With Shell[/bold] + + - [color=#00aa00]Takes 30% less slashing damage[/color] + - [color=#00aa00]Takes 30% less piercing damage[/color] + - [color=#aa0000]Takes 30% more heat damage[/color] + + [bold]Without Shell[/bold] + - [color=#00aa00]Can crawl through vents, when not holding or wearing any items[/color] + - [color=#aa0000]Takes 30% more slashing damage[/color] + - [color=#aa0000]Takes 30% more piercing damage[/color] + diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac84cc9e7587dfb35eda67803e734859a865ac6 GIT binary patch literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z(>z@qLn`LH zy=9x%>>$AU;JHRC_nA1xLXmIBz7(_OZOGu(xwt9sj;~gqz zn}6#6&MytGzjmE|%Jf`@;eciP6rsHBw=V@8S5cC3y0Gr`mQ1O)yZoFvX4^46-hH6z zYvNz7j*fZfpFjWhx9_oYSn`|&hwt1|C@VT=~zZrW|l*s$mEvP$VKa3$Ja_$zV|PUU959@`(Hyh5!b}7 zojVxs{k|M?Xo}D#9b?grF4Iyc-~M0dsB`xJ#q@&pu3Rw+jxI2e@`cq`crk-a_6HAO P@H2S2`njxgN@xNAFe<<9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m.png new file mode 100644 index 0000000000000000000000000000000000000000..4a87d25253347dfc39f12670e3d176ed2da4e5e1 GIT binary patch literal 424 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zlRRAn2rt=uwy7b2McdHpTP-i+$$1Cumq;+X z{Erg59pF;(FL!P4yXVS}yF1pco&59HkKYegPTpbi&#EH!`t0m36&IJi-`klV?CtOR zU%btcgOMR%+S6xN_W!Gt7CpAey8k`u`qpo?>mOUF-DUb6Dq#J)!@ zx3_uwrMs?eusJW!B$a%@AwA26q literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f5f11d412a659a5f2aa3ea433f7487ed361149 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(WN{hE&XX zd&`jTkO5C?VzWd|%bcazes`EHlFwaQ=)FBJO>u>^mW4;-|Jl2qXx0|(R#5_KV^Eqg zvww>8xx2Pio70}Xv-4w|sJdnP`_KcrRvV@$t&*A*nLV}kzO(V{?EVW=CarjN{QlaR zJ6CymY33E*zi`ZKQG?w7DU0=lK_)?f!W{XW+s{7R%(rrv`Ioa{%BPyR>tDb8ddPjk zGCqp)^rks+_BD*YYrn3oX0Z=GVB-7Vmhsb$nM@$f2eQknqKXzC(A2mJ;(EIJxvX!d*3s8X-70AqbAHLiUk^QAm?3lg`r>7oyXKz! z!+m>V@w9onTM~c#KlAVkk&|UF;_; zvu~SicegkneAwW{F1_jZqGv=JZ~m643pNK#+&}$yzwOd1*Gfy@-}_YGzF^8C_w?QM z{r!($%-y5ivOwbT<>&RW`N}UX_})K>wM>8edtK(N5U<@Wt~$(698{Pc(ecj literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..55c1827a0931e98a428c4a465258ea7fe7cdd81f GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(WN{hE&XX zd&`io*?^}tar>(oi+`|0T9$|TO|TU|A=G(y?u)R-ByrJ~|M@=1F?AmmV+85~gY>CE zIX#JKX-h?ZmrkD$5#Q^3|+{sMRZ0<=lSOIdhZF>BZmm zR=tWkzdPj}kEhIeCnp%_$|xw}z;nOU>*WiZ z>Dqb=-d9gN|Md2@+Bt%+ypFQYnE7PRdC%fzU*QWTXDu`HHe^CfS#eu>?wO*6+dA%u PfQbP0l+XkKynApt literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..1aa9538909152550f2f83ba2f48ee7166cad761e GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j(fT|hE&XX zd&`=y*+9VcBIhZuJv?5U-!0s%o#plILE9uxW)-Kd6dgOEUCWCep1-`MP6?0(IA>XS?&LhhJ;mnR za(A!Wy-vHMVxH=G1DiV-=go28o#Z1UG;KL{L(2m_A@guJUDI3 XAjIOdw)g+O3Xox*u6{1-oD!MRL-llb96P9wn)XU+^V*AYrxx=oF^>1 zSGCQGbq!U0F0*RyQI;!FhqwN(V}hB*&>%l!=J$Jl6OXMukbhU}&NDlOS6|A0Tz%tP zsF_+3C_S$sYW0d$Z+`2&-nEZ+DThU$b4Y21sh+a@gNrsxO+*y5mVWuesoZw2;imP^ dn|~Xnf3VC~O!qE5@LU{ZgQu&X%Q~loCIF-VeIft= literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_f.png new file mode 100644 index 0000000000000000000000000000000000000000..3546464f0fa72c60c54fac43422777e2e0679e09 GIT binary patch literal 868 zcmV-q1DpJbP)Px&9!W$&RCt{2nz3%AFc60Sy^x3|t|+Joa@v$Ak=*jc`v7bQks`{pAfTe4St>`6 zaLpRQ-rio!p23f*=TjAPD0BWTSI)6h#971VMnNX~ucSage4d z03ZxQtu>eEbI#%WKH9bgV+=)6AkTBN`cV`OaU2g*_WS*89LMpXj5MLIH2S`u>3)2C zjJ6rkpNgNulo3k*oDI`?9sM7ly)j7=2qDhiBZNSbB%fVUo3?FdFMcV-{FE79$n%=$)0A^+&J@#=J`BUn@z}IJK@bE%5ClOG1VIo4L40!-eG{~88vyX| z@Bqdb@;t}={r#%n!LJ>L$OpfC#7j>d>2GfG^mGWjLqWTcp5y_D78j|lt~-3 zLqHusQ_l+_z&T&7Lqr{V$2KfE6SN(WrYTgDl47+crAbBjcQ)vvl?A2`*tYF>eHEu{ u(0vJu-q@))Te~*@FW5j31VIqQ_vR-SEFM~Px%vq?ljRCt{2nm@0qKoG@`PYVmBqM$TeQ(A57C-wtSx;B=yu2hD?hOJ0U+}pe* ztKv&$6z;uw^Gir{k)6Z-Ma}?%AP9mW2*Ur#g!1E}C_DhH*K1rZm##cbQydNl0KjIm zA=Sx=uav@SwSsdFNs^$dDp+fWjb9Xn_ul*6Zs)!CzG<57h|7b>A>&`KS08h`-PrMG zTtP{aa4&tE+3a5SWWw+CKa?Lk=iWO1E@%soBwhA)9KX3jn{(H>BNdp8UX-M*Y#6Nmt~2%uBlbA zIG@ij#sC1O(u4~kFeK!K);W#w={T_&>-Q#qm zLLLEHYh+mlV+^ddFvcLuveBkQh!t+y7}IIuz@7qa+oGx}v~A0+f<>C9-E)6fbgi{W z)09;oc?Ai3ZTzRBuWTsdy?(RVOdh`v9bXUxK@bE%5ClOG1VIpfIjnbr^Z6WzT$GsJd>e-fc1thMA(@G*0A%$%W5#$wy! zfiaEIzL@WNlB5P$EEacbKrDcppuiz)zv$_J#bQCK>tkyGX9ebRxm@lR!2l;qh1>wa zg?$``N~uv&WDsqGj~dc69lik$hXdyG`BQ?#;7?(H36Ah94OB?GKzxJFx$gKb`ZQ2G rfz@MukGx}h^FKj@AP9mW2)~;zorwh4#I!&j00000NkvXXu0mjfzkF*R literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-left.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..4a0a47f1a0ab643695b5bb3757df5d91b336b8a5 GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zLp@y_Ln`LH zy=9oi@%+|>-CSQg+H6tC$aSBzjxD^&p$u#dFJ)cU$SRQxBAxQ#ae0} zn9Q?#-<#m|F^Woy{$+N%z3;!GX|l#>`N^)1E)yAh&bvj^BN#8Ixb7`#jk{-esd)K? z1&&4=>$X3xnEA|0SUX{YkCBM*`#G{tm>@2KkTRT|r9bR8=RBW#A~t<-^m^GPEQ?Lb zUz_f-(2jcAA#M6i_N@c^`-id}qxa+H{a@4*u7j-eboFyt=akR{0M`hvJ^%m! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-right.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..23da07ad5a2e72ba5d1b8a4d7730dc2d9ceef609 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zBRyRlLn`LH zy}2>#kb?yK2YpqA4vW}~R-fM0&TTIO3SKFA#4o(27=3@?ob?yfKWM(GuB*=*kNMtpR~Q=Ev5#YR25F*+1L%?Va_^ znlXMV%SH4)XPt4}dT?H5VL2xG3LRq-Arn z^RmoM5kePZD)(PXy?AQ+{;n5p&TI7#m4@9dW`ej0Ogb#{cqmsIHRss&q~(XT^v?UQ zj9tA%C}*~a-uCRNN6y=>Xy~pxFX8K~C0ev{nnLU8rA~crmkmB{PCov472Cr(YTZje z+59u#cRozMTHaSX{@K}&mDl!fp1z-BNh~MGf(e21=NzgsO8unY2I6|U`njxgN@xNA DG?TJW literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain.png new file mode 100644 index 0000000000000000000000000000000000000000..bc4afe0bdb1b33b642e45cc558201af074a1bebb GIT binary patch literal 457 zcmV;)0XF`LP)Px$gGod|R9J=Wl|M)VQ5?rVT7w)2B6>oc%jxD2LX*(uSWDE@P#8`vO|9XSV+7IQ zl5-HaghOkiMT3jzEeeteNy>qf4f(F?kMy3kb)V(9cfWhz?|pyo-UAO050C$jPxXaD zBt7{&cGSODo=4e$5YC!0;!z!dYP~_J(_$@T%xy-hxDZKCgmAUq0HD-q0gyKmr1TK+ zs80K-$Bp%<7Msm0{AbUE126O|McSF1?35szfMpM18hhSIII#=Dfd$O{RRHR}fm1JoR05_J z-Pe}g-v&@K=2vo#T*#`u( z;x)CPviMvE+=z8BkMN%uz?H~v4kQl`kN?dpK7x`#(Us=i00000NkvXXu0mjfIk(da literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/ears.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/ears.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ab46430d3443a752ec55f309b44aec9c8a3c4a GIT binary patch literal 704 zcmV;x0zdtUP)Px%dPzh~@ra4>m0*!ML`5>Mk&$OFgSdtd+O ze)oPrixw^ZM>fL|u^Ent%XpW=?u~JGPyoDqc$d%1zmUhblhd}}abe=_py&oiH#p+% zpjhnb74o>*B%J5Dc{UuWB#LQg%FF?fD5jm+LcW>$wAZ^JBd9I4cL{yfx8VBN|nIb91@Osj;hxs*uC%n<^Hi|M91VNC(k zDyc$=V%oW|w?*HzTbNdfSir#V@scg%X*T}40#jDT5ycQxMZd7O#m9Ty_&r{Lqx~s? z>V9K4nYzDV%E~wZqzJ&k+A3r7LmUn#@q4_gf5^fi-FGavjIbkO%QC7NqVN3^-o2Uu zU~sgb8(&Pu*E8svi;(V9$pBOj&6JsIC}DdZ_&v15*!&QH5{U&2m4bh6ge#w3iNoQfI=AyeC+#W|3m6zPZ*foTbNy=v?umUK{g_k|A>CJVPC1u= zBxUAKq_DEILE2Tud(+46L7Dq+9TDyweLOm{g}nMrmqJuCgj|pww0lHUGsI#~uMmejYFq5-6;aI)o8gFv zYDUAw>O!+vR5OI^{R3;O-08SVEMPFco;k5knK?|Wq=xjR2}lV5U30;|*;ArxF4b;S myeWaxBBwd4aElf#B!2;HNhU>Px%Zb?KzR9J=WmR)F4VHn5%uhRslXww$v2js<}o|`cz%CR#4NDHzQeHEikH; z!gV57000=(N=aHGuN6>q90fCN$G1;k5E+@kSpMTu!t_#m+y)!{F<33I$(K z;N=uej^3iRp75FNRreZURRt#CjgQs!f{3Q?-pwnsa{=))fRttK)PQd9Up%Nky zHu0J56iB9p2cI842LL=fu??US_);2kp$HgXM)>S?Auf{7+)-TGDf|4L6rkfN%^i_75-swAu3tnf{&) zjb&6TCFwuv8O7`2GutVVD<@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-r.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-r.png new file mode 100644 index 0000000000000000000000000000000000000000..28bc9ef0b371e49dcf40bb89d4a34bc96bac07e2 GIT binary patch literal 804 zcmV+<1Ka$GP)Px%-bqA3R9J=WmP<%fQ5eU6$MHd<(}0eYH8P`E_Sj^r=>-vKs~!aH3KwOy$QFgs z3qmM}LLsEZ%-|wu)xt$X^p0?}Y|*&MvJ^+t(ZqIegLbatt5=G4k<;Ef@Hx~UO zV%FkPZ7GqwtPBQ15xT-7Tnl%q84;j=VWH6kKwee`&4WV#Tnl$9m)#-bMI_a@%kKCk z;l{h1m^bwO)MOejG@9ZrPTV65XHOp!n{6qddV`p+H^!eynt(I+>o8jv^SLj`h0-Gs z3&XjgR^@iq$j%+x2n+-XuNr00o)1T_K(cZm^x?H+noaTh@0!N`>@5@;O)R;vmjnAN z5s9E_!@TL}W+W6M*w)3aib|C-UE@!@9?3MDD7zUURufHH*$AVb~Aud z>7=FRQoOtXr4)H93ILe40GrJUz~jIuoLPn7N)0=UHgp9OBVp}wl@I4@ZnV|yS9b3x#=in0Kj|eF;(X;{d@R> zJ*^^I|AcL{$?K8mSU^PUm*`kPn!O$&Rt0+dbvtXs?W~c@XHQJ69k==(N@;^%RHk`S z5g&)zr731yNAC^)H3zCKCDP>eNRG2zN*ny*cGgV!5WVTVXu2)E-M+YYbS8|0-ZJyD zGEk@X08nx0_>{}G+*l;_!;cWaVECB>Pg{I!*tC7}vs`wE{Aq$sg*VN2M6`a%akfiZ z-AgHL@Jn!)o!M(D$95v@OdC05EGhmr33WRaCqte$v1VzXKC i_w=!GvILyXf43iik!kv1;GxU_0000Px#=t)FDR9J=Wk|7JiKp2K!ErX$L#VTTvg>A_Gg2g0eSzj>OXEY6~X}?1J5!!6J zqA=KkgN=iwvp6yC&I=0PlkURze$TxeKoA7+Zv=+L1HDoifxxhMucINf9V|~rB>q^5g!CWqr)%7@6aWyj zLN=zkK+FmxWrcH^W3`Px$tVu*cRCt{2+OcZFP!tB>-%=37Zdrs*t#m0;qKJ>smf|FxI*3EJ3{G839G#>~ zhfY2~XX`_lPAbO@YXsY<###hF-)Gc2O7f-O0Y<%p+1vpDOx>02Ho_jB zZi8#vs7B5YU4W^(g1z2g>@0(u7&}YY>y31{2tR+(wSw=AdM9$e)CpL0E%eG2ynKB| z3YWEg3Ze>KfWAA)_)h`9Pd`rE`HQZF`{Pq3`({KJG;>AoBzF{ip1Lda-HGr%vQ+0w zEo|nB!CN=ZKmS+qiHL}Zh=_=Yi0B_ldOkq4RL%#e#Q6Y`A16H@unSW20f**IV)Fs2 zh3=~O{rT;N=Px#>`6pHR9J;$U>F6XU=)mkQ9ve$=TiAk4Re^NVF)FFg;<4+B8G4u*S|T>NLL3m ziWvTPQ4(j66%~UBoMiZa@7rhkH~`u59anF`#TS0N!x+z{@_*sCI~0Wm(P;o?`SUM7 z8SZ`iJTQsSLtBl30qXmO-|jFfsc=x77D#fydmh?K8ukdkhSc zJnRftUwwd!$8)LtufKGK;t(J@8$SQ?6UzF)K&>3WKuQ$AEIs<_4FjbqpCkt;aq&{s z$0R!dR_ehVLQUTj4PdFBT6v#hhfos?cx^ZeM!_fm0QrwqPx$AW1|)R9J=Wl`%`hKoo$#QxOStk*HZ*LPixb34)tjH^I3$IQa`)Eb(uMLjHib z2>k^PF2$isIkJdUV~5hnQKxfCsoSNw*5$tKhWFmbdw1`^;cz${HEDT~t`omvPh~#V zY$Zzkc-o2fuq&1-kod7aKimi4?JEajZ7NY~1j)f3sgeSq)9cge_1WFp<|N$t(~*S< zl(dIkG5G$W6sbb35oB_rTV6ChU&sgY_fO>6m2r;R9Y~cFq1WL0;|c$6Oz^nQ(ewRs z1X3l%>>da&kJ;Q<1t3#}Q4TAwAX5dm(J3#JS4N{TH$l@l)`~!?q##ERf+m?N2)%}J z>_RqS6$xtssgh#0aFuOnjq*a8E+Om8Q~2M1Lx;oh3rE#n9n}WDWB>pF07*qoM6N<$ Ef|qWcz5oCK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/liver.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/liver.png new file mode 100644 index 0000000000000000000000000000000000000000..1f8ea5922b3c542766944e3b02b46073773405da GIT binary patch literal 297 zcmV+^0oMMBP)Px#<4Ht8R9J=WlrajzKoCWrAPACD4Hh=R*22mQd|6V!#4ttV140VRj9$zuW-m2d&cgdNq)jyAz5mkBG~rN7I1F zUGZ!(dK+qcJ(tSyX+WlT1^J!3V!%s|rUBVEHB7AzAQGVPgZoDA9Y92J6uuRss9YUD v1pT1(w1%o;!Rzp}J$(85RTUeCVf+ja+p?~u%r@Mg00000NkvXXu0mjf?eKi} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-l.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-l.png new file mode 100644 index 0000000000000000000000000000000000000000..0a387cfb1a317a13a7565c2bcfeeb7c219c267c6 GIT binary patch literal 380 zcmV-?0fYXDP)Px$Hc3Q5R9J=Wma%GsKpe)uD}{i>tx0jnB3T_e`2u;5;FCxn#kc6t)uEGX-`2GH$|APZ87K`Pcd3}00>VD%vCp-!R-F$Tc6VsmK zQ8hdY1KPx$ElET{R9J=Wl(A~VFcd|vOTi%Q%?)_yV!UR^l%XFJ@+BdklE3KCHAAONUP{oC zK}7Koun=fchhm|GhRR3|ZP8r}Hc#*9JWD`KOiavQ&bpXs-!&e5ikI`LH-s0!cNq%w z7`o|lJ_X*PSM4qt9pG@{rs?6t@%%I~?_3jP1a|W`dIScH!g~Z|mR>-B9^tAVz6Kh8 z1``SmKN|x>Plgx3mbU-^CKO(qj|+$eshuF4Ro%*h)cR#ofC+^%OU-l3TWsY1$Mu8! zgxAfPP^d`mWFZK^b@MVyL1pJuJBoo`zl#O$V_1^RCZtbQR`K^OV-6qL*B0U zHqf8>isS~UzZ>lDqXEFOu#x+O$_`8@=h`3u_AYIhy8*x&!LP{OuHu+~kxw$Dn1V;g R8#Mp`002ovPDHLkV1kG2p|St~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/meta.json new file mode 100644 index 000000000000..d9fbcca619c5 --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/meta.json @@ -0,0 +1,68 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Citrea", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "brain" + }, + { + "name": "brain-inhand-left", + "directions": 4 + }, + { + "name": "brain-inhand-right", + "directions": 4 + }, + { + "name": "ears" + }, + { + "name": "eyeball-l" + }, + { + "name": "eyeball-r" + }, + { + "name": "heart-off" + }, + { + "name": "heart-on", + "delays": [ + [ + 0.6, + 0.1, + 0.1 + ] + ] + }, + { + "name": "kidney-l" + }, + { + "name": "kidney-r" + }, + { + "name": "liver" + }, + { + "name": "lung-l" + }, + { + "name": "lung-r" + }, + { + "name": "stomach" + }, + { + "name": "tongue" + }, + { + "name": "shell" + } + ] +} diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/shell.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/shell.png new file mode 100644 index 0000000000000000000000000000000000000000..33918df1a687dfb66df02ab8b59b47e4b1da95d9 GIT binary patch literal 290 zcmV+-0p0$IP)Px#+(|@1R9J=Wl(7xNAP_}=qDas&fLCxq$3WhL87WwS0X%_IA)yPl4+3@+@hca` z@7?EQU}WSU6GGUy?>>77IOo_B%>}Hr?CHA*0Kh!Y>=v2|SZlXsS&GhdX+SA;uK)_J zp_xFeUrJeYu3H0_3e+rLGl3K?rGyXy>$+YeK;db;_t08nnx;n=fgD^2QT&}(DKtLQ z+G9%U2Y|zR_Mpg2or1abp9;|J&i&yi7yui7C=lT(bg$kN41f&>X9sc<($s)i0u&fQ oG&SH;0b|Su@Eg#`$jHy;4HY70A-r>7V*mgE07*qoM6N<$g6v9hpa1{> literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/stomach.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/stomach.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ce17ba6d840f5e763103f39cc8d9c2acd9ec82 GIT binary patch literal 509 zcmVPx$w@E}nR9J=WRxwD!KootIf^ZndmcCO~Qlcyh}d3GZIrj$k$YYD$a+hmn*62l}R9CBLuxZL>1O zO9?QD=4+$h0V6}oLunsamTYB2@$VNS#=pf6i16fce;EI400000NkvXXu0mjf9?;v} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/tongue.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/tongue.png new file mode 100644 index 0000000000000000000000000000000000000000..019250722b2bd0ddc4956de3d0170be2c7a53ca8 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^T+fo?~&q_f5IO%!fbkdd#!Z=oHx2UzZn47S+sN zz$MV9AU0u2lH>#@CP{^MuT?!phcAZbcknSzl4U4nF_OROxFKNCO6Cui9TDB`2Q`4c cXJBL4!s+*?&*z~GFpwBLUHx3vIVCg!0RDJ@^Z)<= literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/doll.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/doll.png new file mode 100644 index 0000000000000000000000000000000000000000..28aea6cbe75dea9072d23cca4fdbef0ba3ffa3bb GIT binary patch literal 1637 zcmV-r2AcVaP)Px*A4x<(RCt{2TRn^FSQvh?EG&c_u*d|qn2QX-CN?%Arm_q8AGGsdEEn-#r1SoV z3wB#&k!fx-X(U`^rV!4g5UvPTXN#LR`+kIKsOe;3K(D>0nbI>= z5Vn2E7w+1%Oc4Mu>2>kx>lY<{Wno|X1Nr(U5Io137my&+ZCu*o2}9G7q49QpG+3K=8l$ggAyTW|IqK#ZEOVfj=V;1PzC=< z4#ttYzxzEYz$3D=BtA)^8Ca@&!=4>$)?JG zQUPJxm!sv}@N6sFb5jzcEh&GG&IUZ&!e}`+ik=hX`N_&W5kB18`!XoFqN=3`K8sh9H~s{p($zj`ao z1&PEOtIaNZ9f}02%`S^SmFKB~^1y1d%Ss*qtTsDDVy(rmydBPK`Ox;XOkA5^NdZB< zBOlE>eBb`qd;k0P2OiD4t8aq-Yy1F!vDK1DyEOij-v7VxD~AAS|IxhL`z+Mm%?I$q5ZZ*i zzKKeD@u1$3uWw?Hn+`^F_%FU1;~=YZ@>#Ti?>2ztT<4J&!*?5)MGH)NUC=G{&pQjf zBRJ*#^Qps8q$e|F+zleNes=wJ;y_g8naUwRy*MqHFTBjf1HfoGH;Ctu3_8c~TEdbS z z2~fp^*daM+@xI&0Zm(74&^iKIpuHGo`@l+L{+j+0D4hpPx3K|%y%zKq6@WmKqVydC zo&2L^E!vUYY$wJNV$ts^XbTe}P4%Y}nZ3W~fHExBXlPTIEFx|!m4J=hP9>c*6P^1JG8f8bSh_Tg@Bv9G? jz|eFgc^yy2y1f4Y2sYZ~ZfBua00000NkvXXu0mjf1qT3~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/head.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/head.png new file mode 100644 index 0000000000000000000000000000000000000000..30f46cbfd3f3cbd78961eed5f301a659b51fecb6 GIT binary patch literal 986 zcmV<0110>4P)EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&PnD$Qy?MhF@g6`# zE(%X*8Kt@kVttSJRS;_#rMmFMRq?;L{76Qr27pE#AywC3--?V7Im{h z;x8sILg5LW_zTp{2Gx2C07(1=r0Nj*bEo(-n=iLnuD|{G*EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&DbzXDRFsi(^twmnVskysQ`lQn^u0FTf1)YY`{GZZXeetz}*XMV$ z{Q&>~00000004k?)?S}o%qRM>*m)_EG000000FLenlod?wXCWUZ00000NkvXXu0mjfTSzHm literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_foot.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf49123451e34026f140d66e32c33e31c65a9e7 GIT binary patch literal 567 zcmV-70?7S|P)EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&+vX6YrcJYiu>=*Cy z2LJ#700000{MK8&fFoV>1>Wcd9QnL2klhP7%YCXZumJvFE&ZJJ8wLOX002ovPDHLk FV1lmx`;!0w literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_hand.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..79be87f0d3e6af9e77bc4e9947d2d3cb05369e06 GIT binary patch literal 579 zcmV-J0=)f+P)EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&`S-fN&ChPZ zc;8CxSsS%P_QbZ@000000002sKde4vX6F&Ml$l4Ewt5nod4z4r4*&r0yAPqRF|&O3 RqoM!+002ovPDHLkV1oV)1)%@{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_leg.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..18fbd6888e2ac6e169fb40d8ed2cfeb2a4bddfe2 GIT binary patch literal 753 zcmVEX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&gl;i{Ov+LXg_g#V>_Gef9pHVEc$(gm0000000000_&2iH0wtqFWS4aHf|T4_Y_+o9OC`-5nJjeAt%McEJ)tPRNawdv!%xKU$mxvSo^0s!*fh{*bUN2{t@4xHMI}lQ0~4O(fa}2VVk8| jR+y?X`67#1z#n!6t9NBvwrU3r00000NkvXXu0mjf*3MW- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/meta.json new file mode 100644 index 000000000000..c3247ab59ad5 --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/meta.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Citrea", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso", + "directions": 4 + }, + { + "name": "doll", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_arm.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..c8255173872112b054e331611c764c59a1ad0de7 GIT binary patch literal 678 zcmV;X0$KfuP)EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&XYMv${{da<`((|x1wt?xG zplu3gtXAn!L`0hY62->Il-VmXUY;h>4Yy77|01z%i~s-t008jn0YExP-@5Z;xc~qF M07*qoM6N<$f`y_ndjJ3c literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_foot.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..9e28b4e5b101115208458a638a29a81e34b6e2bf GIT binary patch literal 561 zcmV-10?z%3P)EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&J$t4E8=xX

jNtsEHRN zLgGvV`}o}6MgRZ+00000a8^>T5fR(6*3nsxTAr4#>!9vK9x5rEX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&Yc2Qm(TM-yF+YOUlEX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&RCt{2+OcYcKoEf8F$4lj>=q%Nh%aC#_%L?& z9=?X%Jxt&p;*jfvBi+e@)m(E6NfWXgWdr%Yew=ZgwV4qC000000002s-^fA(#9b6D(C>lvenAuGPzq+ zvb{|1CY8x$EL+_@*<4@uzOGQgSHOS$%H%QmHs|Yz?aH777;K|mVWSf5 ztt)JF7XSbN000000002r=uNF-*=njG=~nrJhofFsSechK*`C1BowIpa<+roSr~?>m zqcPhUdpKN9S(2e>Z|Y?2zhw>2v4MUsN3NnNu0d~V_192b{BxrJ0rF_SRErXo$)lE{ b0DN%=boXUj!Ov;Q00000NkvXXu0mjfd6!mJ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/torso.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/torso.png new file mode 100644 index 0000000000000000000000000000000000000000..27e2a1dc890ed7fd833bd0ed7184cda67653039a GIT binary patch literal 1245 zcmV<31S0#1P)EX>4Tx04R}tkv&L4Q5c4wdo7AE95Rq-xPvv-QW1?|kpu~%25Jr6pESXHlY5mG z$Dmbc=x51lXlbssp*0ACejwU|rlOXR8%G5tvTr#L@A=-3^SuY;YF;;;u30dxq8$r| zlw>Nc^t>X`jm#hcRd))J_(Fn?^>vRV&bx6jt8?F<)o-jjI!FpIs~7AdNNd3KR zAMooNssYkDFlHxHX^|Hb!#~;bYPe;i$sW`piv@6o+9JquuyP_5hm2ZKUDWeDWQ=khmOKL zo0zC|KjII5XX|7pCmNHyA?SW_-H#FI*@argb-#~Yw{`-aXSlLj{>>`Pe1fOa(t=0e z+lGtlmZt5&&kz%UHM zFbu=^n%rqF-b~UC03ILiv3+?(;S%ip5oMmD_9yK85l`<2)jhTPg-ejRDXRS;=+hnm zYW?q8aY93O{s;ir`6CLKpg_`2*M4v=97AcTDFPrqFkgZ_Q{`gDv|fAAyl z(JpgWq+v0T_wCz3XV3{621fwSyHL0U>ued4PnoAz=VCnuTp)M2%u_r*++*jDSZB+t za~jmis#>f%E>bSIa0y~0zu5Y!2#{rvFaqTHSjhWJUD|Vt{@@%yWQfa>6uSa^qz?ek z_1n$*st71ta`p0qa{^)#)RrJEQin;g%+t#|$PM}`2SAjg`OIAw&p2O~bR1L7+&yVqJf)U7dgVAt6a z5Y3V?KT6ULE`FUYL-$&1hq^IBn%0LdG0shj{@3CdREt%|h73EyP3v#IpSm^1HdO6T z*uK1m*3^9FM)@u;waPrj_T@FS=lZh>Lr@P%(fe{>f@3mc6m;k*+Nz4LL~ zqHbC0b}kyZQx`Iqc3yQ(f=PY48t%C<8$*1-9aH3ER4=Y00000NkvXX Hu0mjfEX+x& literal 0 HcmV?d00001 From a6e9e53ca3eacf1e9395ff6f49dd2b5168ecf0d7 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sat, 21 Feb 2026 17:23:45 +0100 Subject: [PATCH 02/36] Guidebook update --- Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml index feb88ff9a068..3f6ad79f4f1a 100644 --- a/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml +++ b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml @@ -19,8 +19,10 @@ - [color=#FFA500]Organs move independently[/color] - [color=#aa0000]Takes 30% more blunt damage[/color] - [bold]With Shell[/bold] + ## The Shell + You have an outer shell hiding away your meaty tendrils. You should keep it on at all times! Discarding your shell takes a heavy toll on your mood, and is extremely painful. At need, you can break off small, spare pieces of your shell - which is still pretty painful - to use as a makeshift knife, or to give to another doll, should the worst happen and their shell was [italics]stolen[/italics]. + [bold]With Shell[/bold] - [color=#00aa00]Takes 30% less slashing damage[/color] - [color=#00aa00]Takes 30% less piercing damage[/color] - [color=#aa0000]Takes 30% more heat damage[/color] From 3b7ca8a5e8bba3d24e436a37da68df8cd876e413 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 13 Mar 2026 10:54:11 +0100 Subject: [PATCH 03/36] Name list changes in preparation to fill in the rest --- .../en-US/_Starlight/datasets/names/doll.ftl | 413 +----------------- .../_Starlight/Datasets/Names/doll.yml | 6 +- 2 files changed, 16 insertions(+), 403 deletions(-) diff --git a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl index 56dd6a26bf98..c1891c05ddac 100644 --- a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -1,203 +1,11 @@ -names-first-doll-male-dataset-1 = Abaen -names-first-doll-male-dataset-2 = Abuin -names-first-doll-male-dataset-3 = Acator -names-first-doll-male-dataset-4 = Achyrus -names-first-doll-male-dataset-5 = Acedis -names-first-doll-male-dataset-6 = Acerola -names-first-doll-male-dataset-7 = Adalyr -names-first-doll-male-dataset-8 = Adros -names-first-doll-male-dataset-9 = Aeldir -names-first-doll-male-dataset-10 = Aphon -names-first-doll-male-dataset-11 = Agien -names-first-doll-male-dataset-12 = Ahorran -names-first-doll-male-dataset-13 = Alanel -names-first-doll-male-dataset-14 = Amestus -names-first-doll-male-dataset-15 = Anthyr -names-first-doll-male-dataset-16 = Apalatin -names-first-doll-male-dataset-17 = Aques -names-first-doll-male-dataset-18 = Arintos -names-first-doll-male-dataset-19 = Astyron -names-first-doll-male-dataset-20 = Athiel -names-first-doll-male-dataset-21 = Atryx -names-first-doll-male-dataset-22 = Auratos -names-first-doll-male-dataset-23 = Avaxir -names-first-doll-male-dataset-24 = Axamander -names-first-doll-male-dataset-25 = Aynor -names-first-doll-male-dataset-26 = Azuric -names-first-doll-male-dataset-27 = Bacchastos -names-first-doll-male-dataset-28 = Baclis -names-first-doll-male-dataset-29 = Bandur -names-first-doll-male-dataset-30 = Beyrir -names-first-doll-male-dataset-31 = Bodas -names-first-doll-male-dataset-32 = Bolios -names-first-doll-male-dataset-33 = Bortis -names-first-doll-male-dataset-34 = Bounzir -names-first-doll-male-dataset-35 = Buzik -names-first-doll-male-dataset-36 = Caelan -names-first-doll-male-dataset-37 = Camyr -names-first-doll-male-dataset-38 = Ceros -names-first-doll-male-dataset-39 = Charion -names-first-doll-male-dataset-40 = Chelys -names-first-doll-male-dataset-41 = Khonath -names-first-doll-male-dataset-42 = Kozanyl -names-first-doll-male-dataset-43 = Dahel -names-first-doll-male-dataset-44 = Darion -names-first-doll-male-dataset-45 = Dellion -names-first-doll-male-dataset-46 = Demystir -names-first-doll-male-dataset-47 = Dolan -names-first-doll-male-dataset-48 = Dostar -names-first-doll-male-dataset-49 = Duvir -names-first-doll-male-dataset-50 = Doxanyr -names-first-doll-male-dataset-51 = Easios -names-first-doll-male-dataset-52 = Eamon -names-first-doll-male-dataset-53 = Elthar -names-first-doll-male-dataset-54 = Eburon -names-first-doll-male-dataset-55 = Echyal -names-first-doll-male-dataset-56 = Ekhandris -names-first-doll-male-dataset-57 = Ementer -names-first-doll-male-dataset-58 = Ethyr -names-first-doll-male-dataset-59 = Chamon -names-first-doll-male-dataset-60 = Azyr -names-first-doll-male-dataset-61 = Asuryanodoros -names-first-doll-male-dataset-62 = Kurnodinius -names-first-doll-male-dataset-63 = Hotek -names-first-doll-male-dataset-64 = Vaular -names-first-doll-male-dataset-65 = Malus -names-first-doll-male-dataset-66 = Eithyr -names-first-doll-male-dataset-67 = Fanalor -names-first-doll-male-dataset-68 = Fazuan -names-first-doll-male-dataset-69 = Finreir -names-first-doll-male-dataset-70 = Fendyr -names-first-doll-male-dataset-71 = Forryn -names-first-doll-male-dataset-72 = Fyzzion -names-first-doll-male-dataset-73 = Galadar -names-first-doll-male-dataset-74 = Galith -names-first-doll-male-dataset-75 = Ganael -names-first-doll-male-dataset-76 = Gionestyr -names-first-doll-male-dataset-77 = Galendor -names-first-doll-male-dataset-78 = Guriten -names-first-doll-male-dataset-79 = Garien -names-first-doll-male-dataset-80 = Gardir -names-first-doll-male-dataset-81 = Haleth -names-first-doll-male-dataset-82 = Herion -names-first-doll-male-dataset-83 = Helenar -names-first-doll-male-dataset-84 = Horos -names-first-doll-male-dataset-85 = Hennic -names-first-doll-male-dataset-86 = Hyran -names-first-doll-male-dataset-87 = Iriol -names-first-doll-male-dataset-88 = Iralon -names-first-doll-male-dataset-89 = Ivarn -names-first-doll-male-dataset-90 = Istos -names-first-doll-male-dataset-91 = Joran -names-first-doll-male-dataset-92 = Jalik -names-first-doll-male-dataset-93 = Aethis -names-first-doll-male-dataset-94 = Ardath -names-first-doll-male-dataset-95 = Jyndon -names-first-doll-male-dataset-96 = Jazech -names-first-doll-male-dataset-97 = Koros -names-first-doll-male-dataset-98 = Karhan -names-first-doll-male-dataset-99 = Kydor -names-first-doll-male-dataset-100 = Kounath -names-first-doll-male-dataset-101 = Kouran -names-first-doll-male-dataset-102 = Kenyrion -names-first-doll-male-dataset-103 = Lambeth -names-first-doll-male-dataset-104 = Lossek -names-first-doll-male-dataset-105 = Loryn -names-first-doll-male-dataset-106 = Lasitar -names-first-doll-male-dataset-107 = Lendor -names-first-doll-male-dataset-108 = Levik -names-first-doll-male-dataset-109 = Lidaron -names-first-doll-male-dataset-110 = Mannitos -names-first-doll-male-dataset-111 = Meznyr -names-first-doll-male-dataset-112 = Maleroth -names-first-doll-male-dataset-113 = Mylin -names-first-doll-male-dataset-114 = Myoc -names-first-doll-male-dataset-115 = Narthex -names-first-doll-male-dataset-116 = Neimyr -names-first-doll-male-dataset-117 = Noven -names-first-doll-male-dataset-118 = Noutid -names-first-doll-male-dataset-119 = Nessec -names-first-doll-male-dataset-120 = Ngwendor -names-first-doll-male-dataset-121 = Olor -names-first-doll-male-dataset-122 = Ovin -names-first-doll-male-dataset-123 = Octavin -names-first-doll-male-dataset-124 = Otalos -names-first-doll-male-dataset-125 = Orion -names-first-doll-male-dataset-126 = Palator -names-first-doll-male-dataset-127 = Pembrus -names-first-doll-male-dataset-128 = Quaerel -names-first-doll-male-dataset-129 = Quodar -names-first-doll-male-dataset-130 = Quil -names-first-doll-male-dataset-131 = Raecos -names-first-doll-male-dataset-132 = Raevyr -names-first-doll-male-dataset-133 = Raphot -names-first-doll-male-dataset-134 = Remvar -names-first-doll-male-dataset-135 = Rath -names-first-doll-male-dataset-136 = Rozno -names-first-doll-male-dataset-137 = Rusmirrin -names-first-doll-male-dataset-138 = Releg -names-first-doll-male-dataset-139 = Ruthal -names-first-doll-male-dataset-140 = Rotan -names-first-doll-male-dataset-141 = Raith -names-first-doll-male-dataset-142 = Sinn -names-first-doll-male-dataset-143 = Sangor -names-first-doll-male-dataset-144 = Singer -names-first-doll-male-dataset-145 = Sorvin -names-first-doll-male-dataset-146 = Salter -names-first-doll-male-dataset-147 = Psander -names-first-doll-male-dataset-148 = Saemon -names-first-doll-male-dataset-149 = Suthael -names-first-doll-male-dataset-150 = Serden -names-first-doll-male-dataset-151 = Herident -names-first-doll-male-dataset-152 = Soffik -names-first-doll-male-dataset-153 = Sophal -names-first-doll-male-dataset-154 = Trast -names-first-doll-male-dataset-155 = Tarn -names-first-doll-male-dataset-156 = Tablos -names-first-doll-male-dataset-157 = Tergis -names-first-doll-male-dataset-158 = Taven -names-first-doll-male-dataset-159 = Tolorin -names-first-doll-male-dataset-160 = Thander -names-first-doll-male-dataset-161 = Ulorin -names-first-doll-male-dataset-162 = Untan -names-first-doll-male-dataset-163 = Usyros -names-first-doll-male-dataset-164 = Tizyl -names-first-doll-male-dataset-165 = Veyn -names-first-doll-male-dataset-166 = Varon -names-first-doll-male-dataset-167 = Vunthir -names-first-doll-male-dataset-168 = Vanleth -names-first-doll-male-dataset-169 = Varitt -names-first-doll-male-dataset-170 = Voke -names-first-doll-male-dataset-171 = Wysdin -names-first-doll-male-dataset-172 = Ulgir -names-first-doll-male-dataset-173 = Waran -names-first-doll-male-dataset-174 = Waenoth -names-first-doll-male-dataset-175 = Rienronnair -names-first-doll-male-dataset-176 = Kaeleneth -names-first-doll-male-dataset-177 = Caethilthwe -names-first-doll-male-dataset-178 = Dreth -names-first-doll-male-dataset-179 = Gaelen -names-first-doll-male-dataset-180 = Thyriol -names-first-doll-male-dataset-181 = Anthinol -names-first-doll-male-dataset-182 = Lian -names-first-doll-male-dataset-183 = Xanthus -names-first-doll-male-dataset-184 = Xikros -names-first-doll-male-dataset-185 = Xypreth -names-first-doll-male-dataset-186 = Yrellion -names-first-doll-male-dataset-187 = Faldor -names-first-doll-male-dataset-188 = Tesmeth -names-first-doll-male-dataset-189 = Zurtas -names-first-doll-male-dataset-190 = Zillan -names-first-doll-male-dataset-191 = Yasmus -names-first-doll-male-dataset-192 = Yetrel -names-first-doll-male-dataset-193 = Yonak -names-first-doll-male-dataset-194 = Yullis -names-first-doll-male-dataset-195 = Zabar -names-first-doll-male-dataset-196 = Zenyt -names-first-doll-male-dataset-197 = Zephyr -names-first-doll-male-dataset-198 = Zontar -names-first-doll-male-dataset-199 = Zoul -names-first-doll-male-dataset-200 = Zynn +names-first-doll-male-dataset-1 = Charles +names-first-doll-male-dataset-2 = Thomas +names-first-doll-male-dataset-3 = Duke +names-first-doll-male-dataset-4 = Francis +names-first-doll-male-dataset-5 = Henry +names-first-doll-male-dataset-6 = James +names-first-doll-male-dataset-7 = Alistair +names-first-doll-male-dataset-8 = Oliver names-first-doll-female-dataset-1 = Mary names-first-doll-female-dataset-2 = Elizabeth @@ -246,204 +54,9 @@ names-first-doll-female-dataset-44 = Winifred names-first-doll-female-dataset-45 = Lily names-first-doll-female-dataset-46 = Katherine names-first-doll-female-dataset-47 = Annie +names-first-doll-female-dataset-48 = Albina +names-first-doll-female-dataset-49 = Selena +names-first-doll-female-dataset-50 = Angela +names-first-doll-female-dataset-51 = Severa -names-last-doll-dataset-1 = the Wise -names-last-doll-dataset-2 = the Ageless -names-last-doll-dataset-3 = the Denied -names-last-doll-dataset-4 = the Eternal -names-last-doll-dataset-5 = the Witness -names-last-doll-dataset-6 = the Seer -names-last-doll-dataset-7 = the Visionary -names-last-doll-dataset-8 = the Phoenix -names-last-doll-dataset-9 = the Dreaded -names-last-doll-dataset-10 = the Pure -names-last-doll-dataset-11 = the Brave -names-last-doll-dataset-12 = the Singer -names-last-doll-dataset-13 = of Alfholm -names-last-doll-dataset-14 = of the Sea -names-last-doll-dataset-15 = of the Forest -names-last-doll-dataset-16 = of the Beasts -names-last-doll-dataset-17 = of the Murderers -names-last-doll-dataset-18 = of the Black City -names-last-doll-dataset-19 = of the Shadowlands -names-last-doll-dataset-20 = of the Eternal Fields -names-last-doll-dataset-21 = of the Shadows -names-last-doll-dataset-22 = of the Phoenix -names-last-doll-dataset-23 = of the Dragon -names-last-doll-dataset-24 = of the Islands -names-last-doll-dataset-25 = of the White Tower -names-last-doll-dataset-26 = of the Shadows -names-last-doll-dataset-27 = the Proud -names-last-doll-dataset-28 = of the Abyss -names-last-doll-dataset-29 = the Jade-Touched -names-last-doll-dataset-30 = of the Old City -names-last-doll-dataset-31 = of the Estuary -names-last-doll-dataset-32 = of the Underworld -names-last-doll-dataset-33 = the Bloody -names-last-doll-dataset-34 = Dragonrider -names-last-doll-dataset-35 = Swordsmith -names-last-doll-dataset-36 = Beastmaster -names-last-doll-dataset-37 = Halberdier -names-last-doll-dataset-38 = Shade -names-last-doll-dataset-39 = Autarii -names-last-doll-dataset-40 = Mothkeeper -names-last-doll-dataset-41 = Peregrine -names-last-doll-dataset-42 = the Corsair -names-last-doll-dataset-43 = Elithis -names-last-doll-dataset-44 = Eventide -names-last-doll-dataset-45 = Hoethedor -names-last-doll-dataset-46 = Dreadheart -names-last-doll-dataset-47 = Blacksoul -names-last-doll-dataset-48 = Whitecloak -names-last-doll-dataset-49 = Leafbinder -names-last-doll-dataset-50 = Harper -names-last-doll-dataset-51 = Darkwine -names-last-doll-dataset-52 = Stormpeak -names-last-doll-dataset-53 = Dawnstrider -names-last-doll-dataset-54 = Shadewarden -names-last-doll-dataset-55 = Drakespear -names-last-doll-dataset-56 = Northwatch -names-last-doll-dataset-57 = Icewind -names-last-doll-dataset-58 = Lacuna -names-last-doll-dataset-59 = Lyxos -names-last-doll-dataset-60 = Nightfall -names-last-doll-dataset-61 = Daybreak -names-last-doll-dataset-62 = Midnight -names-last-doll-dataset-63 = Sunrise -names-last-doll-dataset-64 = Sunset -names-last-doll-dataset-65 = Solstice -names-last-doll-dataset-66 = Eclipse -names-last-doll-dataset-67 = Equinox -names-last-doll-dataset-68 = Autumnflower -names-last-doll-dataset-69 = Icebloom -names-last-doll-dataset-70 = Mageroyal -names-last-doll-dataset-71 = Thaumistos -names-last-doll-dataset-72 = Thanatos -names-last-doll-dataset-73 = Koraith -names-last-doll-dataset-74 = Mathlannite -names-last-doll-dataset-75 = Wytchwood -names-last-doll-dataset-76 = Beardtaker -names-last-doll-dataset-77 = Waywatcher -names-last-doll-dataset-78 = Snowcrest -names-last-doll-dataset-79 = Darkmoor -names-last-doll-dataset-80 = Starcaller -names-last-doll-dataset-81 = Chillbane -names-last-doll-dataset-82 = Daemonsbane -names-last-doll-dataset-83 = Pathfinder -names-last-doll-dataset-84 = the Ranger -names-last-doll-dataset-85 = Carver -names-last-doll-dataset-86 = Darkblade -names-last-doll-dataset-87 = Brightblade -names-last-doll-dataset-88 = Foebane -names-last-doll-dataset-89 = Fellheart -names-last-doll-dataset-90 = Krynn -names-last-doll-dataset-91 = Galiron -names-last-doll-dataset-92 = Shrinekeeper -names-last-doll-dataset-93 = Whitefire -names-last-doll-dataset-94 = Silverglen -names-last-doll-dataset-95 = Siroir -names-last-doll-dataset-96 = Cadaith -names-last-doll-dataset-97 = Sariour -names-last-doll-dataset-98 = Senthoi -names-last-doll-dataset-99 = Lacoi -names-last-doll-dataset-100 = Harathoi -names-last-doll-dataset-101 = Sarathai -names-last-doll-dataset-102 = Charoi -names-last-doll-dataset-103 = Yenlui -names-last-doll-dataset-104 = Cynath -names-last-doll-dataset-105 = Arhain -names-last-doll-dataset-106 = Daroir -names-last-doll-dataset-107 = Thalui -names-last-doll-dataset-108 = Ceyl -names-last-doll-dataset-109 = Avalu -names-last-doll-dataset-110 = na Dromui -names-last-doll-dataset-111 = Denla -names-last-doll-dataset-112 = Danoi -names-last-doll-dataset-113 = Darlioth -names-last-doll-dataset-114 = the Harlequin -names-last-doll-dataset-115 = Endri -names-last-doll-dataset-116 = Histos -names-last-doll-dataset-117 = Kurnath -names-last-doll-dataset-118 = Larime -names-last-doll-dataset-119 = Malavoi -names-last-doll-dataset-120 = Lithri -names-last-doll-dataset-121 = Lecai -names-last-doll-dataset-122 = Hadri -names-last-doll-dataset-123 = Quul -names-last-doll-dataset-124 = Oriour -names-last-doll-dataset-125 = Tavlu -names-last-doll-dataset-126 = Verdan -names-last-doll-dataset-127 = Yennla -names-last-doll-dataset-128 = Ytha -names-last-doll-dataset-129 = Volroth -names-last-doll-dataset-130 = Sarumar -names-last-doll-dataset-131 = the Watcher -names-last-doll-dataset-132 = Tiroir -names-last-doll-dataset-133 = Tyloir -names-last-doll-dataset-134 = Sariour -names-last-doll-dataset-135 = Moongazer -names-last-doll-dataset-136 = Chillgaze -names-last-doll-dataset-137 = Starwatcher -names-last-doll-dataset-138 = Manflayer -names-last-doll-dataset-139 = Skinpeeler -names-last-doll-dataset-140 = Blackglaive -names-last-doll-dataset-141 = Silvertongue -names-last-doll-dataset-142 = Greenbrow -names-last-doll-dataset-143 = Riverland -names-last-doll-dataset-144 = Highland -names-last-doll-dataset-145 = Dragonlance -names-last-doll-dataset-146 = Faerun -names-last-doll-dataset-147 = Minaith -names-last-doll-dataset-148 = Nadir -names-last-doll-dataset-149 = Astris -names-last-doll-dataset-150 = Amphictyon -names-last-doll-dataset-151 = Coldsteel -names-last-doll-dataset-152 = Reaverlord -names-last-doll-dataset-153 = Hydrakeeper -names-last-doll-dataset-154 = the Serpent's Doom -names-last-doll-dataset-155 = Edra -names-last-doll-dataset-156 = the Mirthful -names-last-doll-dataset-157 = the Dour -names-last-doll-dataset-158 = the Solemn -names-last-doll-dataset-159 = Shadowcaster -names-last-doll-dataset-160 = Vauvalka -names-last-doll-dataset-161 = Necrys -names-last-doll-dataset-162 = Hellbinder -names-last-doll-dataset-163 = Coldeye -names-last-doll-dataset-164 = Darkstone -names-last-doll-dataset-165 = Straightarrow -names-last-doll-dataset-166 = Firewind -names-last-doll-dataset-167 = Greengate -names-last-doll-dataset-168 = Truestrike -names-last-doll-dataset-169 = Moonguard -names-last-doll-dataset-170 = Phantasia -names-last-doll-dataset-171 = Corwynn -names-last-doll-dataset-172 = Blacksoul -names-last-doll-dataset-173 = the Betrayer -names-last-doll-dataset-174 = Ironbark -names-last-doll-dataset-175 = Tourmaline -names-last-doll-dataset-176 = Greyweave -names-last-doll-dataset-177 = the Noble -names-last-doll-dataset-178 = Saemrath -names-last-doll-dataset-179 = Everglade -names-last-doll-dataset-180 = Winter -names-last-doll-dataset-181 = Goblinsbane -names-last-doll-dataset-182 = Stagheart -names-last-doll-dataset-183 = Immarmor -names-last-doll-dataset-184 = Wardancer -names-last-doll-dataset-185 = Spitebow -names-last-doll-dataset-186 = Spellsinger -names-last-doll-dataset-187 = Spellweaver -names-last-doll-dataset-188 = the Mystic -names-last-doll-dataset-189 = Imlordil -names-last-doll-dataset-190 = Tesmethal -names-last-doll-dataset-191 = Whitebow -names-last-doll-dataset-192 = Blacksword -names-last-doll-dataset-193 = Darkhand -names-last-doll-dataset-194 = Bayne -names-last-doll-dataset-195 = Maelith -names-last-doll-dataset-196 = Manhide -names-last-doll-dataset-197 = the Vain -names-last-doll-dataset-198 = Poisonblade -names-last-doll-dataset-199 = Glitterleaf -names-last-doll-dataset-200 = of Red Ruin \ No newline at end of file +names-last-doll-dataset-1 = TEST \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml index 833d83b1433b..6a89ddfe514f 100644 --- a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml +++ b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml @@ -2,16 +2,16 @@ id: NamesFirstDollMale values: prefix: names-first-doll-male-dataset- - count: 200 + count: 8 - type: localizedDataset id: NamesFirstDollFemale values: prefix: names-first-doll-female-dataset- - count: 47 + count: 51 - type: localizedDataset id: NamesLastDoll values: prefix: names-last-doll-dataset- - count: 200 + count: 1 From 6cde9e8569134d3bc3e2e78013b30df05cb56c9c Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Mon, 16 Mar 2026 09:39:13 +0100 Subject: [PATCH 04/36] Male names pt 2 --- Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl | 6 ++++++ Resources/Prototypes/_Starlight/Datasets/Names/doll.yml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl index c1891c05ddac..02bc9fd0628d 100644 --- a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -6,6 +6,12 @@ names-first-doll-male-dataset-5 = Henry names-first-doll-male-dataset-6 = James names-first-doll-male-dataset-7 = Alistair names-first-doll-male-dataset-8 = Oliver +names-first-doll-male-dataset-9 = Sebastian +names-first-doll-male-dataset-10 = Quincy +names-first-doll-male-dataset-11 = Richard +names-first-doll-male-dataset-12 = Benedict +names-first-doll-male-dataset-13 = Alfred +names-first-doll-male-dataset-14 = Theodore names-first-doll-female-dataset-1 = Mary names-first-doll-female-dataset-2 = Elizabeth diff --git a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml index 6a89ddfe514f..aac58354b195 100644 --- a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml +++ b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml @@ -2,7 +2,7 @@ id: NamesFirstDollMale values: prefix: names-first-doll-male-dataset- - count: 8 + count: 14 - type: localizedDataset id: NamesFirstDollFemale From 019c2da1316c1a2ceb7bfa08d6cec149a89c5d1e Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 31 May 2026 10:50:41 +0200 Subject: [PATCH 05/36] Action icons and new markings --- .../Locale/en-US/_Starlight/markings/doll.ftl | 40 ++ .../Prototypes/_Starlight/Actions/doll.yml | 8 +- .../Mobs/Customization/Marking/doll.yml | 370 +++++++++++++++++- .../Actions/actions_doll.rsi/break_shard.png | Bin 0 -> 890 bytes .../Actions/actions_doll.rsi/break_shell.png | Bin 0 -> 1014 bytes .../Actions/actions_doll.rsi/meta.json | 18 + .../Doll/shell.rsi/devil_head_f.png | Bin 0 -> 501 bytes .../Doll/shell.rsi/devil_head_m.png | Bin 0 -> 501 bytes .../Doll/shell.rsi/devil_l_arm.png | Bin 0 -> 275 bytes .../Doll/shell.rsi/devil_l_foot.png | Bin 0 -> 205 bytes .../Doll/shell.rsi/devil_l_hand.png | Bin 0 -> 237 bytes .../Doll/shell.rsi/devil_l_leg.png | Bin 0 -> 241 bytes .../Doll/shell.rsi/devil_r_arm.png | Bin 0 -> 278 bytes .../Doll/shell.rsi/devil_r_foot.png | Bin 0 -> 206 bytes .../Doll/shell.rsi/devil_r_hand.png | Bin 0 -> 247 bytes .../Doll/shell.rsi/devil_r_leg.png | Bin 0 -> 280 bytes .../Doll/shell.rsi/devil_torso_f.png | Bin 0 -> 792 bytes .../Doll/shell.rsi/devil_torso_m.png | Bin 0 -> 792 bytes .../Doll/shell.rsi/head_f_reverse.png | Bin 0 -> 426 bytes .../Doll/shell.rsi/head_m_reverse.png | Bin 0 -> 422 bytes .../Customization/Doll/shell.rsi/meta.json | 168 +++++++- .../Doll/shell.rsi/segmented_head_f.png | Bin 0 -> 399 bytes .../Doll/shell.rsi/segmented_head_m.png | Bin 0 -> 399 bytes .../Doll/shell.rsi/segmented_l_arm.png | Bin 0 -> 225 bytes .../Doll/shell.rsi/segmented_l_foot.png | Bin 0 -> 252 bytes .../Doll/shell.rsi/segmented_l_hand.png | Bin 0 -> 267 bytes .../Doll/shell.rsi/segmented_l_leg.png | Bin 0 -> 279 bytes .../Doll/shell.rsi/segmented_r_arm.png | Bin 0 -> 238 bytes .../Doll/shell.rsi/segmented_r_foot.png | Bin 0 -> 257 bytes .../Doll/shell.rsi/segmented_r_hand.png | Bin 0 -> 264 bytes .../Doll/shell.rsi/segmented_r_leg.png | Bin 0 -> 265 bytes .../Doll/shell.rsi/segmented_torso_f.png | Bin 0 -> 763 bytes .../Doll/shell.rsi/segmented_torso_m.png | Bin 0 -> 763 bytes 33 files changed, 585 insertions(+), 19 deletions(-) create mode 100644 Resources/Locale/en-US/_Starlight/markings/doll.ftl create mode 100644 Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shard.png create mode 100644 Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shell.png create mode 100644 Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f_reverse.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m_reverse.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_f.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_m.png diff --git a/Resources/Locale/en-US/_Starlight/markings/doll.ftl b/Resources/Locale/en-US/_Starlight/markings/doll.ftl new file mode 100644 index 000000000000..38f23a9a3ff4 --- /dev/null +++ b/Resources/Locale/en-US/_Starlight/markings/doll.ftl @@ -0,0 +1,40 @@ +marking-DollShellLArm = Left Arm Shell +marking-DollShellRArm = Right Arm Shell +marking-DollShellLHand = Left Hand Shell +marking-DollShellRHand = Right Hand Shell +marking-DollShellLLeg = Left Leg Shell +marking-DollShellRLeg = Right Leg Shell +marking-DollShellLFoot = Left Foot Shell +marking-DollShellRFoot = Right Foot Shell +marking-DollShellChestFemale = Feminine Chest Shell +marking-DollShellChestMale = Masculine Chest Shell +marking-DollShellHeadFemale = Feminine Head Shell +marking-DollShellHeadMale = Masculine Head Shell +marking-DollShellHeadFemaleReverse = Reversed Feminine Head Shell +marking-DollShellHeadMaleReverse = Reversed Masculine Head Shell + +marking-DollShellLArmDevil = Left Devil Arm Shell +marking-DollShellRArmDevil = Right Devil Arm Shell +marking-DollShellLHandDevil = Left Devil Hand Shell +marking-DollShellRHandDevil = Right Devil Hand Shell +marking-DollShellLLegDevil = Left Devil Leg Shell +marking-DollShellRLegDevil = Right Devil Leg Shell +marking-DollShellLFootDevil = Left Devil Foot Shell +marking-DollShellRFootDevil = Right Devil Foot Shell +marking-DollShellChestFemaleDevil = Feminine Devil Chest Shell +marking-DollShellChestMaleDevil = Masculine Devil Chest Shell +marking-DollShellHeadFemaleDevil = Feminine Devil Head Shell +marking-DollShellHeadMaleDevil = Masculine Devil Head Shell + +marking-DollShellLArmSegmented = Left Segmented Arm Shell +marking-DollShellRArmSegmented = Right Segmented Arm Shell +marking-DollShellLHandSegmented = Left Segmented Hand Shell +marking-DollShellRHandSegmented = Right Segmented Hand Shell +marking-DollShellLLegSegmented = Left Segmented Leg Shell +marking-DollShellRLegSegmented = Right Segmented Leg Shell +marking-DollShellLFootSegmented = Left Segmented Foot Shell +marking-DollShellRFootSegmented = Right Segmented Foot Shell +marking-DollShellChestFemaleSegmented = Feminine Segmented Chest Shell +marking-DollShellChestMaleSegmented = Masculine Segmented Chest Shell +marking-DollShellHeadFemaleSegmented = Feminine Segmented Head Shell +marking-DollShellHeadMaleSegmented = Masculine Segmented Head Shell \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Actions/doll.yml b/Resources/Prototypes/_Starlight/Actions/doll.yml index 3b4f85005d27..2fc720d2644f 100644 --- a/Resources/Prototypes/_Starlight/Actions/doll.yml +++ b/Resources/Prototypes/_Starlight/Actions/doll.yml @@ -8,8 +8,8 @@ - type: Action itemIconStyle: BigAction icon: - sprite: _Starlight/Interface/Actions/actions_syndrunner.rsi - state: exit + sprite: _Starlight/Interface/Actions/actions_doll.rsi + state: break_shell - type: ConfirmableAction popup: doll-shed-shell-action - type: InstantAction @@ -35,8 +35,8 @@ - type: Action itemIconStyle: BigAction icon: - sprite: _Starlight/Interface/Actions/actions_syndrunner.rsi - state: exit + sprite: _Starlight/Interface/Actions/actions_doll.rsi + state: break_shard useDelay: 60 - type: ConfirmableAction popup: doll-snap-shell-action diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml index 56dd4eb9a617..5af34e860a09 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml @@ -1,4 +1,4 @@ -# Doll Shell missing +# Doll Shell - type: marking id: DollShellLArm bodyPart: LArm @@ -165,4 +165,370 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: head_m \ No newline at end of file + state: head_m + +- type: marking + id: DollShellHeadFemaleReverse + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_f_reverse + +- type: marking + id: DollShellHeadMaleReverse + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_m_reverse + +#Devil +- type: marking + id: DollShellLArmDevil + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_l_arm + +- type: marking + id: DollShellRArmDevil + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_r_arm + +- type: marking + id: DollShellLHandDevil + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_l_hand + +- type: marking + id: DollShellRHandDevil + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_r_hand + +- type: marking + id: DollShellLLegDevil + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_l_leg + +- type: marking + id: DollShellRLegDevil + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_r_leg + +- type: marking + id: DollShellLFootDevil + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_l_foot + +- type: marking + id: DollShellRFootDevil + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_r_foot + +- type: marking + id: DollShellChestFemaleDevil + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_torso_f + +- type: marking + id: DollShellChestMaleDevil + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_torso_m + +- type: marking + id: DollShellHeadFemaleDevil + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_head_f + +- type: marking + id: DollShellHeadMaleDevil + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_head_m + +#Segmented +- type: marking + id: DollShellLArmSegmented + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_l_arm + +- type: marking + id: DollShellRArmSegmented + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_r_arm + +- type: marking + id: DollShellLHandSegmented + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_l_hand + +- type: marking + id: DollShellRHandSegmented + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_r_hand + +- type: marking + id: DollShellLLegSegmented + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_l_leg + +- type: marking + id: DollShellRLegSegmented + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_r_leg + +- type: marking + id: DollShellLFootSegmented + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_l_foot + +- type: marking + id: DollShellRFootSegmented + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_r_foot + +- type: marking + id: DollShellChestFemaleSegmented + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_torso_f + +- type: marking + id: DollShellChestMaleSegmented + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_torso_m + +- type: marking + id: DollShellHeadFemaleSegmented + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_head_f + +- type: marking + id: DollShellHeadMaleSegmented + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_head_m \ No newline at end of file diff --git a/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shard.png b/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shard.png new file mode 100644 index 0000000000000000000000000000000000000000..df8ae3f344859bbec4accf9fa640c6f64210f3ee GIT binary patch literal 890 zcmV-=1BLvFP)DXlDdmW|(1Y zG`j4m-CP5JJp2d%X6+G(hODu>CPjMK2(bm9a_kA9HCxVkVA~8lz~m=!Y-k_z%mJFZ z{KYxXQaXqsnP}nz5d?15O}nPaWiH)g$u!4xDHP z)$7M6mGZ8L;@}7(NcnB-vcvKEKm=SqKjY;2T>aQPdH_&AK0!XELwKz?Abbfb<=x=; zaI0017WZ;26OljyhkS$T!SY22gX(?|z62^f%!&~!4G}MbF?oXLfJYzI0YEC3#@9-| z?^NtW2qZuVls_g<1l0lGtddt>WL|zNeHBODoi>30@!qcv+($?|{q2qk?{plbf$PBf zm=Mdy_rt2&0e0f<>{Euqg&cSjh#a-m(!y3I;4I z7Pc~C#fpZV>SnRFTH>AecJztII2{mBIG=0Q+xvvwh#pq-KI&PL(whe1LlO^s)FHr8Nv zF|McEECG1M>YpNm>f%3Heyab{!-`1;50TO#1^|iml0VrhEM|l1%z<{vZl&q+id~8T zhi&`AQm`Tr>;U=f`fmf=(qi3dmoT(9J&%`PJT~`=9mK@TFLQt||LOYv7tF5A;{Cfr Q(EtDd07*qoM6N<$g0jb{z5oCK literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shell.png b/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..a322e25a100facbc3af6a44cc524f47cf4dc7b79 GIT binary patch literal 1014 zcmV?`^vWKwuAKe+l~GKA2N4xxi0h@$&or7+TpgoRLy6xqZ|ctlEO z4TG?^535uJ5iE#;2qjR8BI^Vd9xGcxGHALOTVsN+W88O=`(EFlv_d^!a&q6f=lp)> zoO|wVn|=5QrYx6U!zI=73Mr+3mH?C&D*(csApp|u4*C=fZ+CBOmp&mypr8EL=b4xP zR6@8o1RyMKNf{B=V@>!Ab+#B0EfV~z=ia`V3Ey)N+4tG(xy&eD#A{02P{sl} zc?ZCh0E<^O)AhZu@2hNL;lWYNvAV$&(PUM2yjM?+@GbPXv!0IZako}_%B=l2lA`IbvyYEf82o|z kS6G0L{`jTUkMw;1A11;vtpK9AN&o-=07*qoM6N<$f=o;31poj5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/meta.json b/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/meta.json new file mode 100644 index 000000000000..f09ca9ddd4d3 --- /dev/null +++ b/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Proto (discord @pedrohampel)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "break_shard" + }, + { + "name": "break_shell" + } + ] +} + diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_f.png new file mode 100644 index 0000000000000000000000000000000000000000..5030810f3317e2bcecc0ca7a7da04d87f64a765c GIT binary patch literal 501 zcmVJO7{W1$myM zEX$`yt}M%-@DOw7dvCz$bi(0qKvh+5=VMqqA0pzW#QX@Zmj4(I0FS>hCh=+U-{gD0 z0>|SKyWQ^ToV6C0%f)x7AY*=>=d z%<>Je)}kniXpdk~6p6KVma&31z!-zB>+Z*6t-h+NMgOKm#Eq>nkNp8%*TEPQG-l8S zD5c&4opY|P>qS3CTI-~)>w9O)$QT2qRM42-8=$pLrUI?C$g(VG5$H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_m.png new file mode 100644 index 0000000000000000000000000000000000000000..5030810f3317e2bcecc0ca7a7da04d87f64a765c GIT binary patch literal 501 zcmVJO7{W1$myM zEX$`yt}M%-@DOw7dvCz$bi(0qKvh+5=VMqqA0pzW#QX@Zmj4(I0FS>hCh=+U-{gD0 z0>|SKyWQ^ToV6C0%f)x7AY*=>=d z%<>Je)}kniXpdk~6p6KVma&31z!-zB>+Z*6t-h+NMgOKm#Eq>nkNp8%*TEPQG-l8S zD5c&4opY|P>qS3CTI-~)>w9O)$QT2qRM42-8=$pLrUI?C$g(VG5$H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..7d94a311d1627315edf40db79583b5cd26f7e2cc GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=w>(`OLn`LHy|q#BumVqOqUCg1 zi9^u~7;QGbux%)7(43-{7xPrcQe6H2_0N8Lnz>wndKgj+Htz_^+jXxxg+Dv(V)cGE zMnS=usyVa!JA%1(q_S_jwq(krS&?27uSI1&Q`^fRIMJ}}O4R**+tb9hhDjzr;oUwt zu3?qmyLo0`B%JTWhLn17-m!eja^mxix?nz#`C#zxuIBsP`CI;*Z&*cHkb#KHLDxmI zr###>SMN^qZVvT;2?{|Soa|{_KhC$`*~AG{4g?3}cgWZVWXCSc^qREg+9Z{wQx2EM zmrhE#`^znTd(`Vq*Q(>+^~>ITvDd!T&2*h|->@ wmdKI;Vst02laDs{jB1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..8ad5a72a9e06395eb58f16de98fa5a01754a6f27 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=TRdGHLn`LHy|t0^umg`AF#H#;+Y221_TE*1uq(HPEG6XD4Tvw zpTG3N-L+GawuX7Gzm~OBq`2Jk{q11cInQqzU2aR9@a0V#O#n}~n=@4eUg;!@lK)B^$Eg0AMJ-958w)wk7WtEyT$ zJUR@kTynb%*#rwuS68;^oPH#@*?a9((|)#!mJ1Es<}iH>3^x|6+Pk&v#O{Xt&-U+G zqp}bGH`ps}Q|)hVUH^-r?+(xZq<>c!rv&+BJDmF|c#l_ODbI5sSqHC|`ce~ur2hT; cR?bjRtZio;qZspRUL(j@Pgg&ebxsLQ0O+w^cmMzZ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..013fa3564d0f3bf78eb54ea0de80fab6c0733bf2 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=cRgJkLn`LHy>*cHkO5EY!-g9N z?=JbC@`&$2&P3TqnrApU`KGW$DSW6ut~K>e`0DA`1%R3u)&z$B|H7kNHZwSM?=>qI zhOJ@uO3^zonh=%bLsPlBIbdTfpGW($(*yryYG>xo@YL z?`46x4{ev0QQ{sOuA@9-I2wd&CG&oSzjp|6W7<$M4c$oj=^uJ1rxd TzP{Sc2;zIX`njxgN@xNA7kzO9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..17ef76e6bf56f2eca98d6ee5657e865102b6c1c1 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Q$1ZALn`LHy|t0|kb?lr0oO&+ z(;x0SA6vtJzqQlBq3Ix7bduV>>uc@qdIMF1z`p~TFB3w~dK&RKPg=5dTA_^i{{Pcf z&3bRFdebgE^z7d6Kkt2Y{uUO>zq9IneyX*;Y|h%dbw4teW!|!8f|zh%W9^m2|Cdaz y-)LWbPixKFC)eNI`xKV=vG%}bTkD^?`J#GtGELX@jy?7QsrPjCb6Mw<&;$U|VO56! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..813b6121a801c0dcd675c271ff02cdc20805fa20 GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=`#fD7Ln`LHy=BPPY{1i+xcb!r zxlWk|!{y%@Yk1sd@LCH+TU}hKyM-%Y$^Y59zco*#bpv&QfPdPwySBTl%{JGR&C}g? zwkBG;!_bSvG05wv(>u+jDvB(fhIy;@uNUPxtPp$sq|JHNPjA=dMz37uHEWsX;H9mV=394hC)ECVDO`N=G7oC-K8PM ztJlwSFQ4&puc<(C2**OxZvl!dMz8gTe~DWM4f$_8zm literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_f.png new file mode 100644 index 0000000000000000000000000000000000000000..b924c45267b7f180af725bc28a920a487aabee86 GIT binary patch literal 792 zcmV+z1LypSP)C8E5Xb+0WC$HJdGJ((yLR;Cp+obD^8vIJ?4fw<>L5I2&|*!71oVcN6H1#0kzF}2 zy!$~Q5sv@o^GPRk2QUo7Fbu;m|0fSI7b~S40F-43V+^#`kWwPcGPG?A0N89cQTM#H z{?!*NrJR%!08kVK0Ki%cAp`(mx7z^#wAM+Sa8rGylylCxx~|_md2`D}CCK z91aIp*R|`q&ee784u?aM4bT$$zor<{_dUjOgw`74IHK?SDYuzLs6U73lto?+)6J!^ zRD^GtHb~*`)cOp=Fbu;m48t%C!!QhU=S(^iT(8#vfR~pSUz2-&eqQuEuIoBSb;8fj zPvCS=n)F<7yWP5B7#uGLUyN2k>(0;%7RhV%czcnl@LD&>Aj^nJRjA#esdG333cDr5jo`6e)O%YPc zGkapAU{Ym>pcWOX&Mr}yAPv%;8+FkU5K@-q*$TWAT5CTIsa!slS!oaes;csfQQNl3 zqd+O;=%IxWXY)UK8l<+gOHkWdGVw$R~x3R3DFK{+ZOBf z8dX*Kv8HL#hu;aR2>;E7Sfa8(_<+`0|G5>HY)IBC9CB%%EnS=c7i?e{hG7`yzWEIq Wy}x1$vCiQD0000~&}W literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_m.png new file mode 100644 index 0000000000000000000000000000000000000000..b924c45267b7f180af725bc28a920a487aabee86 GIT binary patch literal 792 zcmV+z1LypSP)C8E5Xb+0WC$HJdGJ((yLR;Cp+obD^8vIJ?4fw<>L5I2&|*!71oVcN6H1#0kzF}2 zy!$~Q5sv@o^GPRk2QUo7Fbu;m|0fSI7b~S40F-43V+^#`kWwPcGPG?A0N89cQTM#H z{?!*NrJR%!08kVK0Ki%cAp`(mx7z^#wAM+Sa8rGylylCxx~|_md2`D}CCK z91aIp*R|`q&ee784u?aM4bT$$zor<{_dUjOgw`74IHK?SDYuzLs6U73lto?+)6J!^ zRD^GtHb~*`)cOp=Fbu;m48t%C!!QhU=S(^iT(8#vfR~pSUz2-&eqQuEuIoBSb;8fj zPvCS=n)F<7yWP5B7#uGLUyN2k>(0;%7RhV%czcnl@LD&>Aj^nJRjA#esdG333cDr5jo`6e)O%YPc zGkapAU{Ym>pcWOX&Mr}yAPv%;8+FkU5K@-q*$TWAT5CTIsa!slS!oaes;csfQQNl3 zqd+O;=%IxWXY)UK8l<+gOHkWdGVw$R~x3R3DFK{+ZOBf z8dX*Kv8HL#hu;aR2>;E7Sfa8(_<+`0|G5>HY)IBC9CB%%EnS=c7i?e{hG7`yzWEIq Wy}x1$vCiQD0000~&}W literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f_reverse.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f_reverse.png new file mode 100644 index 0000000000000000000000000000000000000000..e986aaae43bd932bcf552eae44586c2178d1a39e GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zQ#@T9Ln`LH zy=9o!Vj#eJLD9>R@dsDO;s?@~&x`IjsK7NL!;tsxlBgqk9)kB0oIb^G=AL9bKk{0y zFUyDZuKSp0M#|q`yY=4ZJDco`U*EDiGk^X6D4UWF@7Kng`3`T8PLOE3?7T*P-@4b! z{qL*Q%oF}aq#eH|IsOQWuDEsI^Q^eFaz z_SclO-p3U?=RLQ4;Z;*w3v@aRG(`WJ_?fZfpxoc3U*os0xPNo@=e7Du*XIZ(q{$vH z+-xhiinE%3{VJ=z#o>SX=L;w~owJ<3aCyPGi5(TawpSR^u5HpeDd8MBP51lkWed0E z?q&LsaeLaVWs&PP>nJDlOikSxDZQ_F1>?0_D^_V~btMUFod2vGyjS)7XWzr!ix#X} z#i!ra{-4QnQcm1|_XPsl8@HO>%HC1jH%Z0P=Dse!$De6DFqbkgZ2!#q?D}E`{>P;s OL4uyHelF{r5}E+2D!1@ZqI&xuFJ(AXLQc(Jk2tvc)NPxn?D9T{Kv02 z{@A5{^>@Yl&W;tYceN+)sNcOha>C=+@{iZQ*18rY+2*)r>!x+tMSqrDojh~ty4QcJ zZf{$oUHI|`(7|vZ|1$g=dqAU9?ZqF@g|-^1W%tgTc~l}et=~bzZ{Aa>meuFFJ&GDl zR@&tCoDA=)Yy3X1$I$bA-Eo^UXD)rWt$gpPx%K}1Wu4C|{k#-hJFafi6%^E5y5hA} zke8sb_n9gIQ|2w#u3Gf*&*kSd^%cH+C3@DfN~waSBE63#_DZ<@XF9#f#`ph(fWD~_ z*|D*_JHF4GmfD%8|4N*LbB?*jlm~N^pWmtL^%a7x056 zO@}(PBR&~wSQ@g=D2mQ|z^Ag^jQ8#mPVIkP31z*L_N-47=iDE8Z5lVf;DP{!DsWWR%$F=byJf+}XXuv|iHBWy_vt8cj2gR_|Z!=yIfb{*?cf-x?Do zR_L6*x>rKE_i;tp3hyaFS^LiED|4rbJ)iTXRzLQ-=l$=G=A7QevgiBiHCO8AuY1GP zfBdmz#P!l|u|RhtfM1noJ;U7sxBBdVHFg!(CI5cwuz7y-$-{neK~BXK&8C^EEgMez z*K*3Q*U&oV5gM90yD2nur9|?&9eWo?I@~|Y^?nZP=PS!ylU=^4I=Gmy=WWgX{Y~lC zHrt&3!gH#r>bi{CYmJVrd3RL8GkdPl9nGlhTYmM)JdxRxr#)C&x;tmmjAfd)!;YK@ j5;^+WTFM0Bu(}uAmpAQy^D*GaM3A7TtDnm{r-UW|#SW^) literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head_m.png new file mode 100644 index 0000000000000000000000000000000000000000..6e58ad9abb08ce4b112bdcf5e10542c49b3968db GIT binary patch literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU<~tgaSW-L^Y)f)UWx056 zO@}(PBR&~wSQ@g=D2mQ|z^Ag^jQ8#mPVIkP31z*L_N-47=iDE8Z5lVf;DP{!DsWWR%$F=byJf+}XXuv|iHBWy_vt8cj2gR_|Z!=yIfb{*?cf-x?Do zR_L6*x>rKE_i;tp3hyaFS^LiED|4rbJ)iTXRzLQ-=l$=G=A7QevgiBiHCO8AuY1GP zfBdmz#P!l|u|RhtfM1noJ;U7sxBBdVHFg!(CI5cwuz7y-$-{neK~BXK&8C^EEgMez z*K*3Q*U&oV5gM90yD2nur9|?&9eWo?I@~|Y^?nZP=PS!ylU=^4I=Gmy=WWgX{Y~lC zHrt&3!gH#r>bi{CYmJVrd3RL8GkdPl9nGlhTYmM)JdxRxr#)C&x;tmmjAfd)!;YK@ j5;^+WTFM0Bu(}uAmpAQy^D*GaM3A7TtDnm{r-UW|#SW^) literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..3547a0ff0ec697102bc1948763d87b06a92eef58 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=D?D8sLn`LHy|s~-MUlrP@b#)2 z|Ew1uDf8&ZdWO?I*ZlUR0W~lf?bz+NYPR2`O|whOJ+0Im&IlZP z+|T*om!N_1>aC}QX0O}2tp93|c9}!k-ka&64|{A2u6$w!X#|67($7EN+wG;f-Y@fX zUh{sV`|{D*)w6G=@;!Vj{=rGA#+ZOgTe~DWM4f%!F2O literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..f53c042dc7eff2778d4133f3de871055c80e30d6 GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=hdo^!Ln`LHy=8l@*+8J>A?GR2 zZxU0U-SJKjzfw}bZayVvmPXf<{r>XHs^>GGiMU;*0@MTr2lC&^ZN1jf5iw2mj_tWu zh2J|mR%|tU{W7Y>BS_OVZP}DbQSt}x9zK(jrnPiS&$X?tCro@NEh&_VKC*Y~y4T+F zFmo6f9^{MKs literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..0430e366e315de69cf6cfe8550e417325374ff74 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=mpok@Ln`LHy=8c+*+HP~;rWnx z4mz!STjy3VoZrPB@kVD&?%swQ8L8%(|Ku;JOtA1!cz^l5`5PZgWk#TG28IXQQ|>it zs-FHFGpR(T{noa>JKEB(r9P|NmV4W$UfyEz)F2~cW6xK=|AkyLHh+IWz{$*a^1s;y z*Y>@aI(~81vY-E6+FM!IzLxhEkiryt4w4B}9fZgWhHjEnmI`iR6%WuX28((gDQ`-F4}+^Yha=IQF^ Jvd$@?2>^T?a~uEw literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..90149182890b4163ec6af690e4ef95083f0fc6af GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=_dH!3Ln`LHy|uCTumMkNqSjPy z-G_0)Hd$(>? zU5S4A_tMziUw3`g_~fbBV$hdt@mubH@VTFfZ{8_?xLxUA&2nZE(5~@{`oaR)z|8;e+ntv`JeHJ*s51cMa(xJ z{?BSNxwy>ubI>VEK@UyOwV_Epx~ccXlBYziUNYt0x{G_5mt|(@7QXy<;OJk5u*1u; T7H{=21sUt<>gTe~DWM4fdm(fp literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..39af7a45e199172347ca26db936fafe0d06abb1c GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=TRmMILn`LHy|t0|u!2ZS;uOt2 z|Jm{xUPv_aX3ThSiRE;cl6sf|%g6eu+9mG=Om0{L^)RIG`7Sm0p>S+b)qB;~%hT*kqg zuI`JCYhQoK{V;XT=YO(J8FQcSpLuiN2ls3|udmS@vyXXO?(4}c dAgvAacQU)&?2>%dAO8%*_jL7hS?83{1ONq&T>Ah3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..572d342da1188ebdeec16b22543fdea20ddd00c3 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Cp=voLn`LHy=BYSY{1i&DE?K& zj!k*a?VOWG&ajoAIMlJ5VeJI1r5*AstLAGui`1Wb<%G+&&djdm3Lqh9*wxqv1x-9cr@$GHaO7qfB z8uJ{!8wfLsf#E@a&ATVg9Mj8L&zy1QXfF}nbp3I3?Ddl-zCqKTO08P=`uM%?MY^%9 uGp!k2Cx#aO$okIS^H^ikOWv5LCuZu;YA(5+wo1naWS*z1pUXO@geCy;O=-gb literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..0f52a9c811e390492b84b2f6967684ac30c2915f GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC==RI8dyIMZ@;j{#`v|;U=zWnR>$1?G3#dBw54AfXEPe#UY^-C>wSssKacz0 zPv*0&TGb`@c`4hK(zTWICg0~-^Lm!i-Q=`m?__~m?ccE}H(SYG8RY5e=d#Wz Gp$P!zxNM*R literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..45e5940101a20a152d3eff1b9d1c2d6e7f9a1df2 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=7d%}YLn`LHy|uCTumMkN;?shq z4Cf!j3GeuNM5r&wm>EUQR9PJ1-!3YunqUQ3^^bF9Vjncjw>nd$GIU_t}}T z*NbmI2yIU|&kZw*f#Kbc-F;G9C;eJ)dN=wH{{fD*rmihnYn{zDZ4Gm6iON2o&uAR1 zsk*cJl%@RIyQp=fS?83{ F1OOAtZJz)D literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_f.png new file mode 100644 index 0000000000000000000000000000000000000000..147585c4222d3f226d03cedfaccf63218991d60a GIT binary patch literal 763 zcmVBF@+~t z^IO0%@pt^^oFjA$Fbu;m48t(LlN*;G$8k&muvjeqd+)Qp@4{+KCKEh7Jk&aAn$mK) zM6ddB9Fvrih=_K(9Ub=Vb~_>>l2Vd2vJZW$QB@TgV+a6@F|^_QOHk>Gqj$9FG6Q~&n%_Nf2n=HI5f>bF_|08mOn2yyi6{r&x@Erftls_l@@Y`5D^ z{hf&8n35!+!<|3X?$ZVAF()EQ)0FVx{}vw?bP5sm}(&!C>I3?@XGe6h#q+!yy1*I2<6ex-ULI^CEOH3w{PWsLZAcR0wRZvP{G#X*OUgPQM z2|*Cx_4U=;khY9QBi!HL*ZN8+JU>4p&vRs1<~*L03s_dG70R+imSrf*606n9XBaQS zFhri`08mdj&vS%f=rx{q8azyS=lCPk)UtZbcHjC8!!QiPFbu;m48t%C^BYN$q^{3j z1I8G#b<2y0UqtxA+BI~*Id;L8exAn~opUR9YR>SJr z(!4LurLiXVVuaTEEQJYM42hzsZ>jc3DbMZ-m(XMmFG^k7mL|TJw48&Wt-{(Pc*&#K zw85uB>>LEO*0{U7gAfAtBuFW#EX%W1XX7}grVUCdlx68WmeUD1oS;oZySoQ tZi3g2o$|AD*XFOm28Ll6hGBj-e*xD8H&Ja&FTwx-002ovPDHLkV1jL*YNh}H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_m.png new file mode 100644 index 0000000000000000000000000000000000000000..147585c4222d3f226d03cedfaccf63218991d60a GIT binary patch literal 763 zcmVBF@+~t z^IO0%@pt^^oFjA$Fbu;m48t(LlN*;G$8k&muvjeqd+)Qp@4{+KCKEh7Jk&aAn$mK) zM6ddB9Fvrih=_K(9Ub=Vb~_>>l2Vd2vJZW$QB@TgV+a6@F|^_QOHk>Gqj$9FG6Q~&n%_Nf2n=HI5f>bF_|08mOn2yyi6{r&x@Erftls_l@@Y`5D^ z{hf&8n35!+!<|3X?$ZVAF()EQ)0FVx{}vw?bP5sm}(&!C>I3?@XGe6h#q+!yy1*I2<6ex-ULI^CEOH3w{PWsLZAcR0wRZvP{G#X*OUgPQM z2|*Cx_4U=;khY9QBi!HL*ZN8+JU>4p&vRs1<~*L03s_dG70R+imSrf*606n9XBaQS zFhri`08mdj&vS%f=rx{q8azyS=lCPk)UtZbcHjC8!!QiPFbu;m48t%C^BYN$q^{3j z1I8G#b<2y0UqtxA+BI~*Id;L8exAn~opUR9YR>SJr z(!4LurLiXVVuaTEEQJYM42hzsZ>jc3DbMZ-m(XMmFG^k7mL|TJw48&Wt-{(Pc*&#K zw85uB>>LEO*0{U7gAfAtBuFW#EX%W1XX7}grVUCdlx68WmeUD1oS;oZySoQ tZi3g2o$|AD*XFOm28Ll6hGBj-e*xD8H&Ja&FTwx-002ovPDHLkV1jL*YNh}H literal 0 HcmV?d00001 From 52eba66e0010b6c19bc495121879c32d242bec0f Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Mon, 22 Jun 2026 17:56:35 +0200 Subject: [PATCH 06/36] Expanded name lists --- .../en-US/_Starlight/datasets/names/doll.ftl | 51 ++++++++++++++++++- .../_Starlight/Datasets/Names/doll.yml | 4 +- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl index 02bc9fd0628d..8341b74c4641 100644 --- a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -12,6 +12,24 @@ names-first-doll-male-dataset-11 = Richard names-first-doll-male-dataset-12 = Benedict names-first-doll-male-dataset-13 = Alfred names-first-doll-male-dataset-14 = Theodore +names-first-doll-male-dataset-15 = Harold +names-first-doll-male-dataset-16 = Jonathan +names-first-doll-male-dataset-17 = Leopold +names-first-doll-male-dataset-18 = Silas +names-first-doll-male-dataset-19 = August +names-first-doll-male-dataset-20 = Felix +names-first-doll-male-dataset-21 = Arthur +names-first-doll-male-dataset-22 = Everett +names-first-doll-male-dataset-23 = Vincent +names-first-doll-male-dataset-24 = Miles +names-first-doll-male-dataset-25 = William +names-first-doll-male-dataset-26 = Otto +names-first-doll-male-dataset-27 = Bartholomew +names-first-doll-male-dataset-28 = Oscar +names-first-doll-male-dataset-29 = Julian +names-first-doll-male-dataset-30 = Jonathan +names-first-doll-male-dataset-31 = Thomas +names-first-doll-male-dataset-32 = Wesley names-first-doll-female-dataset-1 = Mary names-first-doll-female-dataset-2 = Elizabeth @@ -65,4 +83,35 @@ names-first-doll-female-dataset-49 = Selena names-first-doll-female-dataset-50 = Angela names-first-doll-female-dataset-51 = Severa -names-last-doll-dataset-1 = TEST \ No newline at end of file +names-last-doll-dataset-1 = Ambrose +names-last-doll-dataset-2 = Anstey +names-last-doll-dataset-3 = Atterton +names-last-doll-dataset-4 = Bentley +names-last-doll-dataset-5 = Byron +names-last-doll-dataset-6 = Clarence +names-last-doll-dataset-7 = Clements +names-last-doll-dataset-8 = Culpepper +names-last-doll-dataset-9 = Davenport +names-last-doll-dataset-10 = Deighton +names-last-doll-dataset-11 = Digby +names-last-doll-dataset-12 = Dyden +names-last-doll-dataset-13 = Easthoff +names-last-doll-dataset-14 = Edwards +names-last-doll-dataset-15 = Enfield +names-last-doll-dataset-16 = Ferguson +names-last-doll-dataset-17 = Gilbert +names-last-doll-dataset-18 = Hornsby +names-last-doll-dataset-19 = Johnson +names-last-doll-dataset-20 = Lewis +names-last-doll-dataset-21 = Lloyd +names-last-doll-dataset-22 = Masters +names-last-doll-dataset-23 = Merriweather +names-last-doll-dataset-24 = Middleton +names-last-doll-dataset-25 = Northolt +names-last-doll-dataset-26 = Raleigh +names-last-doll-dataset-27 = Shaw +names-last-doll-dataset-38 = Sims +names-last-doll-dataset-29 = Spinster +names-last-doll-dataset-30 = Villiers +names-last-doll-dataset-31 = Walker +names-last-doll-dataset-32 = Yeoman \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml index aac58354b195..4e44015c89ae 100644 --- a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml +++ b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml @@ -2,7 +2,7 @@ id: NamesFirstDollMale values: prefix: names-first-doll-male-dataset- - count: 14 + count: 32 - type: localizedDataset id: NamesFirstDollFemale @@ -14,4 +14,4 @@ id: NamesLastDoll values: prefix: names-last-doll-dataset- - count: 1 + count: 32 From 1c7105a19bb1c2484eb0baf79f429a9d4e29d8e1 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Mon, 22 Jun 2026 18:11:18 +0200 Subject: [PATCH 07/36] Shell refining --- .../Locale/en-US/_Starlight/markings/doll.ftl | 15 +++-- .../Mobs/Customization/Marking/doll.yml | 57 +++++------------- .../{devil_head_f.png => devil_head.png} | Bin .../Doll/shell.rsi/devil_head_m.png | Bin 501 -> 0 bytes .../{devil_torso_f.png => devil_torso.png} | Bin .../Doll/shell.rsi/devil_torso_m.png | Bin 792 -> 0 bytes .../Customization/Doll/shell.rsi/head_fox.png | Bin 0 -> 550 bytes .../Doll/shell.rsi/head_moth.png | Bin 0 -> 692 bytes .../Customization/Doll/shell.rsi/meta.json | 22 ++----- ...egmented_head_f.png => segmented_head.png} | Bin .../Doll/shell.rsi/segmented_head_m.png | Bin 399 -> 0 bytes ...mented_torso_f.png => segmented_torso.png} | Bin .../Doll/shell.rsi/segmented_torso_m.png | Bin 763 -> 0 bytes 13 files changed, 28 insertions(+), 66 deletions(-) rename Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/{devil_head_f.png => devil_head.png} (100%) delete mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_m.png rename Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/{devil_torso_f.png => devil_torso.png} (100%) delete mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_m.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_fox.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_moth.png rename Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/{segmented_head_f.png => segmented_head.png} (100%) delete mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head_m.png rename Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/{segmented_torso_f.png => segmented_torso.png} (100%) delete mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_m.png diff --git a/Resources/Locale/en-US/_Starlight/markings/doll.ftl b/Resources/Locale/en-US/_Starlight/markings/doll.ftl index 38f23a9a3ff4..dbc34a8a6212 100644 --- a/Resources/Locale/en-US/_Starlight/markings/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/markings/doll.ftl @@ -21,10 +21,8 @@ marking-DollShellLLegDevil = Left Devil Leg Shell marking-DollShellRLegDevil = Right Devil Leg Shell marking-DollShellLFootDevil = Left Devil Foot Shell marking-DollShellRFootDevil = Right Devil Foot Shell -marking-DollShellChestFemaleDevil = Feminine Devil Chest Shell -marking-DollShellChestMaleDevil = Masculine Devil Chest Shell -marking-DollShellHeadFemaleDevil = Feminine Devil Head Shell -marking-DollShellHeadMaleDevil = Masculine Devil Head Shell +marking-DollShellChestDevil = Devil Chest Shell +marking-DollShellHeadDevil = Devil Head Shell marking-DollShellLArmSegmented = Left Segmented Arm Shell marking-DollShellRArmSegmented = Right Segmented Arm Shell @@ -34,7 +32,8 @@ marking-DollShellLLegSegmented = Left Segmented Leg Shell marking-DollShellRLegSegmented = Right Segmented Leg Shell marking-DollShellLFootSegmented = Left Segmented Foot Shell marking-DollShellRFootSegmented = Right Segmented Foot Shell -marking-DollShellChestFemaleSegmented = Feminine Segmented Chest Shell -marking-DollShellChestMaleSegmented = Masculine Segmented Chest Shell -marking-DollShellHeadFemaleSegmented = Feminine Segmented Head Shell -marking-DollShellHeadMaleSegmented = Masculine Segmented Head Shell \ No newline at end of file +marking-DollShellChestSegmented = Segmented Chest Shell +marking-DollShellHeadSegmented = Segmented Head Shell + +marking-DollShellHeadFox = Fox-like Head Shell +marking-DollShellHeadMoth = Moth-ish Head Shell \ No newline at end of file diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml index 5af34e860a09..3383bce35808 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml @@ -309,7 +309,7 @@ state: devil_r_foot - type: marking - id: DollShellChestFemaleDevil + id: DollShellChestDevil bodyPart: Chest markingCategory: Chest speciesRestriction: [Doll] @@ -320,38 +320,10 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: devil_torso_f + state: devil_torso - type: marking - id: DollShellChestMaleDevil - bodyPart: Chest - markingCategory: Chest - speciesRestriction: [Doll] - coloring: - default: - type: - !type:SimpleColoring - color: "#ffffff" - sprites: - - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: devil_torso_m - -- type: marking - id: DollShellHeadFemaleDevil - bodyPart: Head - markingCategory: Head - speciesRestriction: [Doll] - coloring: - default: - type: - !type:SimpleColoring - color: "#ffffff" - sprites: - - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: devil_head_f - -- type: marking - id: DollShellHeadMaleDevil + id: DollShellHeadDevil bodyPart: Head markingCategory: Head speciesRestriction: [Doll] @@ -362,7 +334,7 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: devil_head_m + state: devil_head #Segmented - type: marking @@ -478,7 +450,7 @@ state: segmented_r_foot - type: marking - id: DollShellChestFemaleSegmented + id: DollShellChestSegmented bodyPart: Chest markingCategory: Chest speciesRestriction: [Doll] @@ -489,12 +461,12 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: segmented_torso_f + state: segmented_torso - type: marking - id: DollShellChestMaleSegmented - bodyPart: Chest - markingCategory: Chest + id: DollShellHeadSegmented + bodyPart: Head + markingCategory: Head speciesRestriction: [Doll] coloring: default: @@ -503,10 +475,11 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: segmented_torso_m + state: segmented_head +#Species Masks - type: marking - id: DollShellHeadFemaleSegmented + id: DollShellHeadFox bodyPart: Head markingCategory: Head speciesRestriction: [Doll] @@ -517,10 +490,10 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: segmented_head_f + state: head_fox - type: marking - id: DollShellHeadMaleSegmented + id: DollShellHeadMoth bodyPart: Head markingCategory: Head speciesRestriction: [Doll] @@ -531,4 +504,4 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: segmented_head_m \ No newline at end of file + state: head_moth \ No newline at end of file diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head.png similarity index 100% rename from Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_f.png rename to Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head.png diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head_m.png deleted file mode 100644 index 5030810f3317e2bcecc0ca7a7da04d87f64a765c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 501 zcmVJO7{W1$myM zEX$`yt}M%-@DOw7dvCz$bi(0qKvh+5=VMqqA0pzW#QX@Zmj4(I0FS>hCh=+U-{gD0 z0>|SKyWQ^ToV6C0%f)x7AY*=>=d z%<>Je)}kniXpdk~6p6KVma&31z!-zB>+Z*6t-h+NMgOKm#Eq>nkNp8%*TEPQG-l8S zD5c&4opY|P>qS3CTI-~)>w9O)$QT2qRM42-8=$pLrUI?C$g(VG5$H diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso.png similarity index 100% rename from Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_f.png rename to Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso.png diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso_m.png deleted file mode 100644 index b924c45267b7f180af725bc28a920a487aabee86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmV+z1LypSP)C8E5Xb+0WC$HJdGJ((yLR;Cp+obD^8vIJ?4fw<>L5I2&|*!71oVcN6H1#0kzF}2 zy!$~Q5sv@o^GPRk2QUo7Fbu;m|0fSI7b~S40F-43V+^#`kWwPcGPG?A0N89cQTM#H z{?!*NrJR%!08kVK0Ki%cAp`(mx7z^#wAM+Sa8rGylylCxx~|_md2`D}CCK z91aIp*R|`q&ee784u?aM4bT$$zor<{_dUjOgw`74IHK?SDYuzLs6U73lto?+)6J!^ zRD^GtHb~*`)cOp=Fbu;m48t%C!!QhU=S(^iT(8#vfR~pSUz2-&eqQuEuIoBSb;8fj zPvCS=n)F<7yWP5B7#uGLUyN2k>(0;%7RhV%czcnl@LD&>Aj^nJRjA#esdG333cDr5jo`6e)O%YPc zGkapAU{Ym>pcWOX&Mr}yAPv%;8+FkU5K@-q*$TWAT5CTIsa!slS!oaes;csfQQNl3 zqd+O;=%IxWXY)UK8l<+gOHkWdGVw$R~x3R3DFK{+ZOBf z8dX*Kv8HL#hu;aR2>;E7Sfa8(_<+`0|G5>HY)IBC9CB%%EnS=c7i?e{hG7`yzWEIq Wy}x1$vCiQD0000~&}W diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_fox.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_fox.png new file mode 100644 index 0000000000000000000000000000000000000000..67593bac83af4f681c6fc6c7314f4b3a65bc995a GIT binary patch literal 550 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WChAy@N{tusfc@f%dl**fdJcs`625H7Bhc%z%_?qegylBNy!H|GnSmXo0I%h zko8)kLC&PV`;Wcv-I#8|A%2ZPy0hb%;UCq1S=p7>9-ZIwwDG-<%a&EEYlbjF+(`OuI1ahL=l; z1RJm7p7+NRC49>3H&2NP6=is~e!1w!^=D^K_+#Gf@8S{~y7&94RrXaMpFIzE`BJp= zLEZkxWxHqYZ|{JEx~BJE!hg(*I^&+azjY;J(IcA!#?{$|rVRa-jZ<#Ss_CDyebuVi z&79BJ7#w1+XWYJKGcReX*u8DKuXdfgZx>hRv__rRBO%d)dGqC$e{QY6v4{DS>$1eo zO*+pXI!{gAX)$Bs^|BdTn4dk?dfE4-wmw3z_I~}2&lNq#-rQtV`&n}!hQo31cYXb1 z)%&gHFR_-|@KcbXVOeHZq0Gc*Et4damu24ix_Zws%l6D!V#R%rJCPx#1ZP1_K>z@;j|==^1poj7UP(kjRCr$P+OcZeKp4RBzXKi|(wfs~=wdC3K zP(Mx|pwG|;2;^n1L+0YeOG%J!C>Tu^YJ)Xs_`3MSMQIvYwOpEfKQKb)JAHSbPSS7( z>SY@=3z~|eknMI`pXYhbd_I5BZnav8F{VC`qKNT${Gi^U`i}o(1%RrmWVhP^;5(D1 zY5o6nI)!~ufb;WnhQnd2Yq#;Qf z)>>IC767c*YuN7^0r>Fd+W_G1#~rWUe+ru&humD&i=$bVNl_H_k6`mcv)!@SU?W5r zJIk_qfmUuVo6Y{H^&59d8Q*L+BuPS&B=z&w+qRT|k1-yP2R{C0v#Do+?_*mB zCBVz`9AgZV$%HtLanAL2*B|4YlQ@oI59B^BuF+%5*xdUxwT5mORgU{UZ36 zpE2fM+%!!)$Lur%0G7+;AWc)svV`FCa|%9IS(bk__+Iq=5^R0Xu)8AdWK>djT0000x056 zO@}(PBR&~wSQ@g=D2mQ|z^Ag^jQ8#mPVIkP31z*L_N-47=iDE8Z5lVf;DP{!DsWWR%$F=byJf+}XXuv|iHBWy_vt8cj2gR_|Z!=yIfb{*?cf-x?Do zR_L6*x>rKE_i;tp3hyaFS^LiED|4rbJ)iTXRzLQ-=l$=G=A7QevgiBiHCO8AuY1GP zfBdmz#P!l|u|RhtfM1noJ;U7sxBBdVHFg!(CI5cwuz7y-$-{neK~BXK&8C^EEgMez z*K*3Q*U&oV5gM90yD2nur9|?&9eWo?I@~|Y^?nZP=PS!ylU=^4I=Gmy=WWgX{Y~lC zHrt&3!gH#r>bi{CYmJVrd3RL8GkdPl9nGlhTYmM)JdxRxr#)C&x;tmmjAfd)!;YK@ j5;^+WTFM0Bu(}uAmpAQy^D*GaM3A7TtDnm{r-UW|#SW^) diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_f.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso.png similarity index 100% rename from Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_f.png rename to Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso.png diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso_m.png deleted file mode 100644 index 147585c4222d3f226d03cedfaccf63218991d60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 763 zcmVBF@+~t z^IO0%@pt^^oFjA$Fbu;m48t(LlN*;G$8k&muvjeqd+)Qp@4{+KCKEh7Jk&aAn$mK) zM6ddB9Fvrih=_K(9Ub=Vb~_>>l2Vd2vJZW$QB@TgV+a6@F|^_QOHk>Gqj$9FG6Q~&n%_Nf2n=HI5f>bF_|08mOn2yyi6{r&x@Erftls_l@@Y`5D^ z{hf&8n35!+!<|3X?$ZVAF()EQ)0FVx{}vw?bP5sm}(&!C>I3?@XGe6h#q+!yy1*I2<6ex-ULI^CEOH3w{PWsLZAcR0wRZvP{G#X*OUgPQM z2|*Cx_4U=;khY9QBi!HL*ZN8+JU>4p&vRs1<~*L03s_dG70R+imSrf*606n9XBaQS zFhri`08mdj&vS%f=rx{q8azyS=lCPk)UtZbcHjC8!!QiPFbu;m48t%C^BYN$q^{3j z1I8G#b<2y0UqtxA+BI~*Id;L8exAn~opUR9YR>SJr z(!4LurLiXVVuaTEEQJYM42hzsZ>jc3DbMZ-m(XMmFG^k7mL|TJw48&Wt-{(Pc*&#K zw85uB>>LEO*0{U7gAfAtBuFW#EX%W1XX7}grVUCdlx68WmeUD1oS;oZySoQ tZi3g2o$|AD*XFOm28Ll6hGBj-e*xD8H&Ja&FTwx-002ovPDHLkV1jL*YNh}H From a6816bf15234e70ac1e72d7d81824fcf74c08b86 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Mon, 22 Jun 2026 19:15:41 +0200 Subject: [PATCH 08/36] namespacing fixes --- .../_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs | 4 ++-- .../_Starlight/Actions/Events/SurgeryActionEvent.cs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs index d8cb24c898ff..3b72a8a621e2 100644 --- a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs +++ b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs @@ -4,7 +4,7 @@ using Content.Shared.Body.Part; using Content.Shared.Body.Systems; using Content.Shared.DoAfter; -using Content.Shared.Starlight.Medical.Surgery; +using Content.Shared._Starlight.Medical.Surgery; using Robust.Shared.Prototypes; namespace Content.Shared._Starlight.Actions.EntitySystems; @@ -59,4 +59,4 @@ private void Surgerise(EntityUid ent, EntProtoId surgery, EntProtoId step, Entit }; _doAfter.TryStartDoAfter(doAfter); } -} \ No newline at end of file +} diff --git a/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs index 13072c1da218..4a01175f0af2 100644 --- a/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs +++ b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs @@ -1,11 +1,11 @@ using Content.Shared.Actions; using Content.Shared.Body.Part; -using Content.Shared.Starlight.Medical.Surgery; +using Content.Shared._Starlight.Medical.Surgery; using Robust.Shared.Audio; using Robust.Shared.Prototypes; namespace Content.Shared._Starlight.Actions.Events; - + [Virtual] public partial class SurgeryActionEvent : InstantActionEvent { @@ -23,4 +23,4 @@ public partial class SurgeryActionEvent : InstantActionEvent [DataField] public SoundSpecifier? Sound = default; -} \ No newline at end of file +} From 72e805c488cdb4ac60e1e6c68fe8c74819b1dd6f Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Mon, 22 Jun 2026 19:46:08 +0200 Subject: [PATCH 09/36] Further merge fixes --- Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs | 1 + .../_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs | 3 +++ Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs | 2 ++ 3 files changed, 6 insertions(+) diff --git a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs index 8df4eca35618..1bd22d4c1f3a 100644 --- a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Actions; using Content.Shared.Body.Part; using Content.Shared.Body.Systems; +using Content.Shared._Starlight.Medical.Body.Part; using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; diff --git a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs index 3b72a8a621e2..f05108a324eb 100644 --- a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs +++ b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs @@ -2,9 +2,12 @@ using System.Linq; using Content.Shared._Starlight.Actions.Events; using Content.Shared.Body.Part; +using Content.Shared._Starlight.Medical.Body.Part; using Content.Shared.Body.Systems; using Content.Shared.DoAfter; using Content.Shared._Starlight.Medical.Surgery; +using Content.Shared._Starlight.Medical.Surgery.Components; +using Content.Shared._Starlight.Medical.Surgery.Events; using Robust.Shared.Prototypes; namespace Content.Shared._Starlight.Actions.EntitySystems; diff --git a/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs index 4a01175f0af2..41e98992e130 100644 --- a/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs +++ b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs @@ -1,6 +1,8 @@ using Content.Shared.Actions; using Content.Shared.Body.Part; +using Content.Shared._Starlight.Medical.Body.Part; using Content.Shared._Starlight.Medical.Surgery; +using Content.Shared._Starlight.Medical.Surgery.Components; using Robust.Shared.Audio; using Robust.Shared.Prototypes; From 64309cce246ba31b99127dd5bbcc25defc2d53f1 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sat, 4 Jul 2026 10:29:17 +0200 Subject: [PATCH 10/36] More Names! --- .../en-US/_Starlight/datasets/names/doll.ftl | 33 ++++++++++++++++++- .../_Starlight/Datasets/Names/doll.yml | 6 ++-- 2 files changed, 35 insertions(+), 4 deletions(-) diff --git a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl index 8341b74c4641..aa21eb36d82a 100644 --- a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -30,6 +30,17 @@ names-first-doll-male-dataset-29 = Julian names-first-doll-male-dataset-30 = Jonathan names-first-doll-male-dataset-31 = Thomas names-first-doll-male-dataset-32 = Wesley +names-first-doll-male-dataset-33 = Edward +names-first-doll-male-dataset-34 = Albert +names-first-doll-male-dataset-35 = Hector +names-first-doll-male-dataset-36 = Victor +names-first-doll-male-dataset-37 = Nicholas +names-first-doll-male-dataset-38 = Percival +names-first-doll-male-dataset-39 = Simon +names-first-doll-male-dataset-40 = Harrison +names-first-doll-male-dataset-41 = Walter +names-first-doll-male-dataset-42 = Cornelius +names-first-doll-male-dataset-43 = Edmund names-first-doll-female-dataset-1 = Mary names-first-doll-female-dataset-2 = Elizabeth @@ -82,6 +93,11 @@ names-first-doll-female-dataset-48 = Albina names-first-doll-female-dataset-49 = Selena names-first-doll-female-dataset-50 = Angela names-first-doll-female-dataset-51 = Severa +names-first-doll-female-dataset-52 = May +names-first-doll-female-dataset-53 = Evelyn +names-first-doll-female-dataset-54 = Phoebe +names-first-doll-female-dataset-55 = Sadie +names-first-doll-female-dataset-56 = Violet names-last-doll-dataset-1 = Ambrose names-last-doll-dataset-2 = Anstey @@ -114,4 +130,19 @@ names-last-doll-dataset-38 = Sims names-last-doll-dataset-29 = Spinster names-last-doll-dataset-30 = Villiers names-last-doll-dataset-31 = Walker -names-last-doll-dataset-32 = Yeoman \ No newline at end of file +names-last-doll-dataset-32 = Yeoman +names-last-doll-dataset-33 = Livingstone +names-last-doll-dataset-34 = Ellis +names-last-doll-dataset-35 = Williams +names-last-doll-dataset-36 = Griffiths +names-last-doll-dataset-37 = Moore +names-last-doll-dataset-38 = Abott +names-last-doll-dataset-39 = Acaster +names-last-doll-dataset-40 = Penrose +names-last-doll-dataset-41 = Osborne +names-last-doll-dataset-42 = Thorpe +names-last-doll-dataset-43 = Townsend +names-last-doll-dataset-44 = Webster +names-last-doll-dataset-45 = Woodward +names-last-doll-dataset-46 = Graham +names-last-doll-dataset-47 = Halifax diff --git a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml index 4e44015c89ae..4df777afcc01 100644 --- a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml +++ b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml @@ -2,16 +2,16 @@ id: NamesFirstDollMale values: prefix: names-first-doll-male-dataset- - count: 32 + count: 56 - type: localizedDataset id: NamesFirstDollFemale values: prefix: names-first-doll-female-dataset- - count: 51 + count: 56 - type: localizedDataset id: NamesLastDoll values: prefix: names-last-doll-dataset- - count: 32 + count: 47 From 552d3849e619e137c28c7ca7b272f7f7c2060aad Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 21 Aug 2026 11:13:01 +0200 Subject: [PATCH 11/36] Dolls can no longer ventcrawl or break out of their own shells. Infrastructure left in place. --- .../Actions/EntitySystems/ShellSystem.cs | 4 +-- .../_Starlight/Medical/Surgery/OrganSystem.cs | 2 -- .../Actions/Components/ShellComponent.cs | 9 ------ .../Prototypes/_Starlight/Actions/doll.yml | 29 +------------------ .../_Starlight/Entities/Mobs/Species/doll.yml | 4 --- .../_Starlight/Guidebook/species.yml | 2 +- .../_Starlight/Guidebook/Mobs/Doll.xml | 5 +--- 7 files changed, 4 insertions(+), 51 deletions(-) diff --git a/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs index 4fee96fbce64..ca6794e64c94 100644 --- a/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs +++ b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs @@ -17,13 +17,11 @@ public override void Initialize() private void OnMapInit(EntityUid uid, ShellComponent comp, MapInitEvent args) { - _actionsSystem.AddAction(uid, ref comp.BreakShellActionEntity, comp.BreakShellAction); _actionsSystem.AddAction(uid, ref comp.GenerateShellPieceActionEntity, comp.GenerateShellPieceAction); } private void OnCompRemove(EntityUid uid, ShellComponent comp, ComponentShutdown args) { - _actionsSystem.RemoveAction(uid, comp.BreakShellActionEntity); _actionsSystem.RemoveAction(uid, comp.GenerateShellPieceActionEntity); } -} \ No newline at end of file +} diff --git a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs index 1bd22d4c1f3a..a5d0fa83cb3f 100644 --- a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs @@ -333,7 +333,6 @@ private void OnShellImplanted(Entity ent, ref SurgeryOrganI UpdateEntity(args.Body, comp.Component, ent.Owner); } } - _actionsSystem.AddAction(args.Body, ref shell.BreakShellActionEntity, shell.BreakShellAction); _actionsSystem.AddAction(args.Body, ref shell.GenerateShellPieceActionEntity, shell.GenerateShellPieceAction); } @@ -353,7 +352,6 @@ private void OnShellExtracted(Entity ent, ref SurgeryOrganE UpdateEntity(args.Body, comp.Component, ent.Owner); } } - _actionsSystem.RemoveAction(args.Body, shell.BreakShellActionEntity); _actionsSystem.RemoveAction(args.Body, shell.GenerateShellPieceActionEntity); } diff --git a/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs b/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs index 5f1dc5aa686c..5632221341b9 100644 --- a/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs +++ b/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs @@ -9,15 +9,6 @@ namespace Content.Shared._Starlight.Actions.Components; [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ShellComponent : Component { - ///

- /// The entity needed to break your shell. - /// - [DataField(required: true), AutoNetworkedField] - public EntProtoId BreakShellAction; - - [DataField, AutoNetworkedField] - public EntityUid? BreakShellActionEntity; - /// /// The entity needed to snap off a pice of your shell. /// diff --git a/Resources/Prototypes/_Starlight/Actions/doll.yml b/Resources/Prototypes/_Starlight/Actions/doll.yml index 2fc720d2644f..a6f448420ce1 100644 --- a/Resources/Prototypes/_Starlight/Actions/doll.yml +++ b/Resources/Prototypes/_Starlight/Actions/doll.yml @@ -1,32 +1,5 @@ # Actions for Doll species -- type: entity - id: ActionShedShell - name: shed shell - description: Break out of your shell at great expense to yourself. - components: - - type: Action - itemIconStyle: BigAction - icon: - sprite: _Starlight/Interface/Actions/actions_doll.rsi - state: break_shell - - type: ConfirmableAction - popup: doll-shed-shell-action - - type: InstantAction - event: !type:SurgeryActionEvent - bodyPartTypes: - - Torso - - Head - - Arm - - Leg - - Hand - - Foot - bodyPartSymmetries: - - Left - - Right - surgeries: - - SurgeryRemoveShellDoll - - type: entity id: ActionGenerateShellPiece name: snap shell @@ -58,4 +31,4 @@ sprite: Interface/Actions/actions_crit.rsi state: fakedeath - type: InstantAction - event: !type:CritFakeDeathEvent \ No newline at end of file + event: !type:CritFakeDeathEvent diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml index 37dd8a1d0dd2..90205e15aedf 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml @@ -48,11 +48,7 @@ sprite: Mobs/Species/Human/displacement.rsi state: jumpsuit-female - type: Shell - breakShellAction: ActionShedShell generateShellPieceAction: ActionGenerateShellPiece - noShellComponents: - - type: VentCrawler - mayCarryItems: false - type: entity parent: BaseSpeciesDummy diff --git a/Resources/Prototypes/_Starlight/Guidebook/species.yml b/Resources/Prototypes/_Starlight/Guidebook/species.yml index ed2a540cd101..bf62db7c50fe 100644 --- a/Resources/Prototypes/_Starlight/Guidebook/species.yml +++ b/Resources/Prototypes/_Starlight/Guidebook/species.yml @@ -47,7 +47,7 @@ - type: guideEntry id: Doll name: species-name-doll - text: "/ServerInfo/_StarLight/Guidebook/Mobs/Doll.xml" + text: "/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml" - type: guideEntry id: Neocyte diff --git a/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml index 3f6ad79f4f1a..5b6d45720828 100644 --- a/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml +++ b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml @@ -9,8 +9,6 @@ In reality, Dolls are a recently discovered, sapient strain of meat anomaly creatures, hiding their rather disturbing forms underneath a hard, ceramic-like shell. It is more than just a suit - a Doll's shell is a core part of their very self. While they are able to leave it behind, they are unwilling to do so, save for extreme emergencies, and outside attempts to remove it are oft met with violent resistance. - As the sight of a Doll without their shell is disturbing to most other species, being seen without their shell is considered grounds for immediate arrest. - ## Diet Dolls are anomalous creatures of flesh. As such, their diet consists of meat and blood, though they do not care whether it has been cooked beforehand. Consuming blood will also slowly heal a Doll, including their shell - though the mechanism for this is unknown. @@ -20,7 +18,7 @@ - [color=#aa0000]Takes 30% more blunt damage[/color] ## The Shell - You have an outer shell hiding away your meaty tendrils. You should keep it on at all times! Discarding your shell takes a heavy toll on your mood, and is extremely painful. At need, you can break off small, spare pieces of your shell - which is still pretty painful - to use as a makeshift knife, or to give to another doll, should the worst happen and their shell was [italics]stolen[/italics]. + You have an outer shell hiding away your meaty tendrils. You should keep it on at all times! At need, you can break off small, spare pieces of your shell - which is a pretty painful process - to use as a makeshift knife, or to give to another doll, should the worst happen and their shell was [italics]stolen[/italics]. [bold]With Shell[/bold] - [color=#00aa00]Takes 30% less slashing damage[/color] @@ -28,7 +26,6 @@ - [color=#aa0000]Takes 30% more heat damage[/color] [bold]Without Shell[/bold] - - [color=#00aa00]Can crawl through vents, when not holding or wearing any items[/color] - [color=#aa0000]Takes 30% more slashing damage[/color] - [color=#aa0000]Takes 30% more piercing damage[/color] From 240a08f2520316ed276d23636e56a41512af0bbf Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 21 Aug 2026 11:33:46 +0200 Subject: [PATCH 12/36] Dolls can no longer discard their head shell for Heterochromia --- .../Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index e841338bb915..9316814e8cfe 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -114,7 +114,7 @@ id: TattooEyeRight bodyPart: Eyes markingCategory: [Head] - speciesRestriction: [Human, Doll, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf and Doll + speciesRestriction: [Human, NeoHuman, SlimePerson, NeoSlimePerson, Reptilian, NeoReptilian, Dwarf, NeoDwarf, Elf, NeoElf, Neocyte] # Starlight Edit: Add Elf coloring: default: type: From d3cbb583444777aeea3d21c7e0f53b3eb1c032f9 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 21 Aug 2026 11:53:38 +0200 Subject: [PATCH 13/36] Assigned doll appearance as dollPrototype for dolls (that won't get confusing at all) --- Resources/Prototypes/_Starlight/Species/doll.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Starlight/Species/doll.yml b/Resources/Prototypes/_Starlight/Species/doll.yml index e841c5bc2e4f..90f94268a7ea 100644 --- a/Resources/Prototypes/_Starlight/Species/doll.yml +++ b/Resources/Prototypes/_Starlight/Species/doll.yml @@ -5,7 +5,7 @@ prototype: MobDoll sprites: MobDollSprites markingLimits: MobDollMarkingLimits - dollPrototype: MobDollDummy + dollPrototype: AppearanceDoll skinColoration: Hues defaultSkinTone: "#FFFFFF" maleFirstNames: NamesFirstDollMale From f99891b47f38949df6c09257067f0e96241c8aa4 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 21 Aug 2026 14:08:47 +0200 Subject: [PATCH 14/36] Doll organs can metabolise again --- Resources/Prototypes/_Starlight/Body/Organs/doll.yml | 12 ++++++++---- .../_Starlight/Entities/Mobs/Species/appearances.yml | 3 +++ .../Prototypes/_Starlight/Surgery/organs_steps.yml | 3 +++ .../Prototypes/_Starlight/Surgery/surgery_steps.yml | 10 ++++++++++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml index 4b7a4ed376d3..c3cf92095ad9 100644 --- a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml +++ b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml @@ -160,7 +160,7 @@ entries: Burger: Brain Taco: Brain - + - type: entity id: OrganDollEyes parent: [BaseDollOrgan, BaseOrganEyes] @@ -213,6 +213,7 @@ solutionOnBody: false solution: "Lung" metabolizerTypes: [ Human ] + stages: [ Respiration ] groups: - id: Gas rateModifier: 100.0 @@ -244,7 +245,8 @@ # You're technically 'immune to poison' without a heart, but.. uhh, you'll have bigger problems on your hands. - type: Metabolizer maxReagents: 2 - metabolizerTypes: [Human] + metabolizerTypes: [ Doll, Human ] + stages: [ Bloodstream ] groups: - id: Medicine - id: Poison @@ -285,6 +287,7 @@ # mm yummy maxReagents: 3 metabolizerTypes: [ Doll ] + stages: [ Digestion ] groups: - id: Food - id: Drink @@ -299,7 +302,8 @@ state: liver - type: Metabolizer # The liver metabolizes certain chemicals only, like alcohol. maxReagents: 1 - metabolizerTypes: [ Human ] + metabolizerTypes: [ Doll, Human ] + stages: [ Metabolites ] groups: - id: Alcohol @@ -365,4 +369,4 @@ coefficients: Slash: -0.06 # Ten pieces subtract 0.6 coefficient Piercing: -0.06 - Heat: 0.03 # More shell pieces means more insulation means more cooking! \ No newline at end of file + Heat: 0.03 # More shell pieces means more insulation means more cooking! diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml index fb1b025f37b5..6abfd507a669 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml @@ -59,6 +59,9 @@ components: - type: HumanoidAppearance species: Doll + hideLayersOnEquip: + - Hair + - Snout - type: entity parent: [BaseSpeciesDummy, BaseInventoryFemaleJumpsuit] diff --git a/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml b/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml index 4002c33fabdb..67f2899edaa3 100644 --- a/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml @@ -1373,6 +1373,9 @@ damage: types: Blunt: 4 + - type: Sprite + sprite: _Starlight/Mobs/Species/Doll/organs.rsi + state: shell - type: entity parent: SurgeryStepBase diff --git a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml index 78349ba954b5..389ccfb1c7f9 100644 --- a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml @@ -174,11 +174,16 @@ duration: 10 add: - type: IncisionOpen + tools: + - type: BoneSetter - type: SurgeryStepBleedEffect damage: types: Slash: 3 - type: SurgeryStepEmoteEffect + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi + state: bone-setter - type: entity parent: SurgeryStepBase @@ -188,7 +193,12 @@ - type: SurgeryStep add: - type: BleedersClamped + tools: + - type: Hemostat - type: SurgeryClampBleedEffect + - type: Sprite + sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi + state: hemostat - type: entity parent: SurgeryStepBase From 553284d04fd073e8a3f5211ea7bec262dd60e386 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 21 Aug 2026 14:31:16 +0200 Subject: [PATCH 15/36] Doll surgery steps no longer show as error --- Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml index 389ccfb1c7f9..64aa0a05344f 100644 --- a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml @@ -182,8 +182,8 @@ Slash: 3 - type: SurgeryStepEmoteEffect - type: Sprite - sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi - state: bone-setter + sprite: _Starlight/Objects/Specific/Medical/scissors.rsi + state: setter - type: entity parent: SurgeryStepBase @@ -197,7 +197,7 @@ - type: Hemostat - type: SurgeryClampBleedEffect - type: Sprite - sprite: Objects/Specific/Medical/Surgery/bone_gel.rsi + sprite: _Starlight/Objects/Specific/Medical/scissors.rsi state: hemostat - type: entity From 4c6ec4a6ba7c8c3fc3d7186bf1c11b9131749a96 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 21 Aug 2026 20:43:36 +0200 Subject: [PATCH 16/36] Added resources for marking colours --- .../Locale/en-US/_Starlight/markings/doll.ftl | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/_Starlight/markings/doll.ftl b/Resources/Locale/en-US/_Starlight/markings/doll.ftl index dbc34a8a6212..919547b826cf 100644 --- a/Resources/Locale/en-US/_Starlight/markings/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/markings/doll.ftl @@ -1,39 +1,75 @@ marking-DollShellLArm = Left Arm Shell +marking-DollShellLArm-l_arm = Shell marking-DollShellRArm = Right Arm Shell +marking-DollShellRArm-r_arm = Shell marking-DollShellLHand = Left Hand Shell +marking-DollShellLHand-l_hand = Shell marking-DollShellRHand = Right Hand Shell +marking-DollShellRHand-r_hand = Shell marking-DollShellLLeg = Left Leg Shell +marking-DollShellLLeg-l_leg = Shell marking-DollShellRLeg = Right Leg Shell +marking-DollShellRLeg-r_leg = Shell marking-DollShellLFoot = Left Foot Shell +marking-DollShellLFoot-l_foot = Shell marking-DollShellRFoot = Right Foot Shell +marking-DollShellRFoot-r_foot = Shell marking-DollShellChestFemale = Feminine Chest Shell +marking-DollShellChestFemale-torso_f = Shell marking-DollShellChestMale = Masculine Chest Shell +marking-DollShellChestMale-torso_m = Shell marking-DollShellHeadFemale = Feminine Head Shell +marking-DollShellHeadFemale-head_f = Shell marking-DollShellHeadMale = Masculine Head Shell +marking-DollShellHeadMale-head_m = Shell marking-DollShellHeadFemaleReverse = Reversed Feminine Head Shell +marking-DollShellHeadFemaleReverse-head_f_reverse = Shell marking-DollShellHeadMaleReverse = Reversed Masculine Head Shell +marking-DollShellHeadMaleReverse-head_m_reverse = Shell marking-DollShellLArmDevil = Left Devil Arm Shell +marking-DollShellLArmDevil-devil_l_arm = Shell marking-DollShellRArmDevil = Right Devil Arm Shell +marking-DollShellRArmDevil-devil_r_arm = Shell marking-DollShellLHandDevil = Left Devil Hand Shell +marking-DollShellLHandDevil-devil_l_hand = Shell marking-DollShellRHandDevil = Right Devil Hand Shell +marking-DollShellRHandDevil-devil_r_hand = Shell marking-DollShellLLegDevil = Left Devil Leg Shell +marking-DollShellLLegDevil-devil_l_leg = Shell marking-DollShellRLegDevil = Right Devil Leg Shell +marking-DollShellRLegDevil-devil_r_leg = Shell marking-DollShellLFootDevil = Left Devil Foot Shell +marking-DollShellLFootDevil-devil_l_foot = Shell marking-DollShellRFootDevil = Right Devil Foot Shell +marking-DollShellRFootDevil-devil_r_foot = Shell marking-DollShellChestDevil = Devil Chest Shell +marking-DollShellChestDevil-devil_torso = Shell marking-DollShellHeadDevil = Devil Head Shell +marking-DollShellHeadDevil-devil_head = Shell marking-DollShellLArmSegmented = Left Segmented Arm Shell +marking-DollShellLArmSegmented-segmented_l_arm = Shell marking-DollShellRArmSegmented = Right Segmented Arm Shell +marking-DollShellRArmSegmented-segmented_r_arm = Shell marking-DollShellLHandSegmented = Left Segmented Hand Shell +marking-DollShellLHandSegmented-segmented_l_hand = Shell marking-DollShellRHandSegmented = Right Segmented Hand Shell +marking-DollShellRHandSegmented-segmented_r_hand = Shell marking-DollShellLLegSegmented = Left Segmented Leg Shell +marking-DollShellLLegSegmented-segmented_l_leg = Shell marking-DollShellRLegSegmented = Right Segmented Leg Shell +marking-DollShellRLegSegmented-segmented_r_leg = Shell marking-DollShellLFootSegmented = Left Segmented Foot Shell +marking-DollShellLFootSegmented-segmented_l_foot = Shell marking-DollShellRFootSegmented = Right Segmented Foot Shell +marking-DollShellRFootSegmented-segmented_r_foot = Shell marking-DollShellChestSegmented = Segmented Chest Shell +marking-DollShellChestSegmented-segmented_torso = Shell marking-DollShellHeadSegmented = Segmented Head Shell +marking-DollShellHeadSegmented-segmented_head = Shell marking-DollShellHeadFox = Fox-like Head Shell -marking-DollShellHeadMoth = Moth-ish Head Shell \ No newline at end of file +marking-DollShellHeadFox-head_fox = Shell +marking-DollShellHeadMoth = Moth-ish Head Shell +marking-DollShellHeadMoth-head_moth = Shell From 1d77078944f4d9810bbed27a610447de29a468fb Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 23 Aug 2026 22:55:37 +0200 Subject: [PATCH 17/36] Human snout markings really don't fit dolls so they don't get them anymore --- .../Mobs/Customization/Markings/human_noses.yml | 10 +++++----- .../Entities/Mobs/Customization/Marking/generic.yml | 2 +- Resources/Prototypes/_Starlight/Species/doll.yml | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml index 2758fea73b04..99c0382e7e30 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/human_noses.yml @@ -4,7 +4,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes. I doubt it'll be much visible though... Also: Starlight, Dolls + speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes. I doubt it'll be much visible though... sprites: - sprite: Mobs/Customization/human_noses.rsi state: schnozz @@ -15,7 +15,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls + speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes sprites: - sprite: Mobs/Customization/human_noses.rsi state: nubby @@ -26,7 +26,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls + speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes sprites: - sprite: Mobs/Customization/human_noses.rsi state: droop @@ -37,7 +37,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls + speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes sprites: - sprite: Mobs/Customization/human_noses.rsi state: blob @@ -48,7 +48,7 @@ markingCategory: Snout followSkinColor: true forcedColoring: true - speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes Also: Starlight, Dolls + speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Neocyte] # Starlight, Neocytes sprites: - sprite: Mobs/Customization/human_noses.rsi state: uppie diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml index 8755b6b7c190..4db9c3b18cc0 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml @@ -95,7 +95,7 @@ id: HeadSeptum bodyPart: Snout markingCategory: Snout - speciesRestriction: [Human, Doll, NeoHuman, Dwarf, NeoDwarf, Elf, Neocyte] + speciesRestriction: [Human, NeoHuman, Dwarf, NeoDwarf, Elf, Neocyte] forcedColoring: false followSkinColor: false coloring: diff --git a/Resources/Prototypes/_Starlight/Species/doll.yml b/Resources/Prototypes/_Starlight/Species/doll.yml index 90f94268a7ea..aec330cbac23 100644 --- a/Resources/Prototypes/_Starlight/Species/doll.yml +++ b/Resources/Prototypes/_Starlight/Species/doll.yml @@ -24,7 +24,6 @@ sprites: Head: MobDollHead HeadTop: MobHumanoidAnyMarking - Snout: MobHumanoidAnyMarking Hair: MobHumanoidAnyMarking FacialHair: MobHumanoidAnyMarking UndergarmentTop: MobHumanoidAnyMarking From b3470d8728eab32521b8da31f5cc1e151bfbedd0 Mon Sep 17 00:00:00 2001 From: taco_llama <57606690+TacoLlama@users.noreply.github.com> Date: Wed, 26 Aug 2026 13:30:03 +1200 Subject: [PATCH 18/36] markings --- .../Locale/en-US/_Starlight/markings/doll.ftl | 91 ++++ .../Mobs/Customization/Marking/doll.yml | 492 +++++++++++++++++- .../Doll/overgrown.rsi/meta.json | 51 ++ .../Doll/overgrown.rsi/overgrown_head.png | Bin 0 -> 547 bytes .../Doll/overgrown.rsi/overgrown_l_arm.png | Bin 0 -> 352 bytes .../Doll/overgrown.rsi/overgrown_l_hand.png | Bin 0 -> 339 bytes .../Doll/overgrown.rsi/overgrown_l_leg.png | Bin 0 -> 360 bytes .../Doll/overgrown.rsi/overgrown_r_arm.png | Bin 0 -> 366 bytes .../Doll/overgrown.rsi/overgrown_r_hand.png | Bin 0 -> 315 bytes .../Doll/overgrown.rsi/overgrown_r_leg.png | Bin 0 -> 353 bytes .../Doll/overgrown.rsi/overgrown_torso.png | Bin 0 -> 925 bytes .../Customization/Doll/paradigm.rsi/meta.json | 91 ++++ .../Doll/paradigm.rsi/paradigm_head.png | Bin 0 -> 496 bytes .../Doll/paradigm.rsi/paradigm_l_arm.png | Bin 0 -> 302 bytes .../Doll/paradigm.rsi/paradigm_l_foot.png | Bin 0 -> 260 bytes .../paradigm.rsi/paradigm_l_foot_flesh.png | Bin 0 -> 152 bytes .../Doll/paradigm.rsi/paradigm_l_hand.png | Bin 0 -> 289 bytes .../paradigm.rsi/paradigm_l_hand_flesh.png | Bin 0 -> 120 bytes .../Doll/paradigm.rsi/paradigm_l_leg.png | Bin 0 -> 336 bytes .../paradigm.rsi/paradigm_l_leg_flesh.png | Bin 0 -> 152 bytes .../Doll/paradigm.rsi/paradigm_r_arm.png | Bin 0 -> 301 bytes .../Doll/paradigm.rsi/paradigm_r_foot.png | Bin 0 -> 255 bytes .../paradigm.rsi/paradigm_r_foot_flesh.png | Bin 0 -> 150 bytes .../Doll/paradigm.rsi/paradigm_r_hand.png | Bin 0 -> 292 bytes .../paradigm.rsi/paradigm_r_hand_flesh.png | Bin 0 -> 121 bytes .../Doll/paradigm.rsi/paradigm_r_leg.png | Bin 0 -> 345 bytes .../paradigm.rsi/paradigm_r_leg_flesh.png | Bin 0 -> 156 bytes .../Doll/paradigm.rsi/paradigm_torso.png | Bin 0 -> 889 bytes .../Doll/shell.rsi/head_crested.png | Bin 0 -> 523 bytes .../Doll/shell.rsi/head_hawk.png | Bin 0 -> 599 bytes .../Customization/Doll/shell.rsi/head_owl.png | Bin 0 -> 535 bytes .../Customization/Doll/shell.rsi/meta.json | 55 +- .../Customization/Doll/unbroken.rsi/meta.json | 161 ++++++ .../Doll/unbroken.rsi/unbroken_head.png | Bin 0 -> 379 bytes .../Doll/unbroken.rsi/unbroken_head_gold.png | Bin 0 -> 258 bytes .../unbroken.rsi/unbroken_head_repaired.png | Bin 0 -> 204 bytes .../Doll/unbroken.rsi/unbroken_l_arm.png | Bin 0 -> 225 bytes .../Doll/unbroken.rsi/unbroken_l_arm_gold.png | Bin 0 -> 196 bytes .../unbroken.rsi/unbroken_l_arm_repaired.png | Bin 0 -> 173 bytes .../Doll/unbroken.rsi/unbroken_l_foot.png | Bin 0 -> 219 bytes .../unbroken.rsi/unbroken_l_foot_gold.png | Bin 0 -> 189 bytes .../unbroken.rsi/unbroken_l_foot_repaired.png | Bin 0 -> 144 bytes .../Doll/unbroken.rsi/unbroken_l_hand.png | Bin 0 -> 220 bytes .../unbroken.rsi/unbroken_l_hand_gold.png | Bin 0 -> 174 bytes .../unbroken.rsi/unbroken_l_hand_repaired.png | Bin 0 -> 157 bytes .../Doll/unbroken.rsi/unbroken_l_leg.png | Bin 0 -> 263 bytes .../Doll/unbroken.rsi/unbroken_l_leg_gold.png | Bin 0 -> 254 bytes .../unbroken.rsi/unbroken_l_leg_repaired.png | Bin 0 -> 205 bytes .../Doll/unbroken.rsi/unbroken_r_arm.png | Bin 0 -> 216 bytes .../Doll/unbroken.rsi/unbroken_r_arm_gold.png | Bin 0 -> 230 bytes .../unbroken.rsi/unbroken_r_arm_repaired.png | Bin 0 -> 179 bytes .../Doll/unbroken.rsi/unbroken_r_foot.png | Bin 0 -> 227 bytes .../unbroken.rsi/unbroken_r_foot_gold.png | Bin 0 -> 185 bytes .../unbroken.rsi/unbroken_r_foot_repaired.png | Bin 0 -> 187 bytes .../Doll/unbroken.rsi/unbroken_r_hand.png | Bin 0 -> 216 bytes .../unbroken.rsi/unbroken_r_hand_gold.png | Bin 0 -> 221 bytes .../unbroken.rsi/unbroken_r_hand_repaired.png | Bin 0 -> 170 bytes .../Doll/unbroken.rsi/unbroken_r_leg.png | Bin 0 -> 277 bytes .../Doll/unbroken.rsi/unbroken_r_leg_gold.png | Bin 0 -> 223 bytes .../unbroken.rsi/unbroken_r_leg_repaired.png | Bin 0 -> 198 bytes .../Doll/unbroken.rsi/unbroken_torso.png | Bin 0 -> 829 bytes .../Doll/unbroken.rsi/unbroken_torso_gold.png | Bin 0 -> 359 bytes .../unbroken.rsi/unbroken_torso_repaired.png | Bin 0 -> 421 bytes 63 files changed, 920 insertions(+), 21 deletions(-) create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_head.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_torso.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_head.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot_flesh.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand_flesh.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg_flesh.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot_flesh.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand_flesh.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg_flesh.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_torso.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_crested.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_hawk.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_owl.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/meta.json create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_repaired.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_gold.png create mode 100644 Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_repaired.png diff --git a/Resources/Locale/en-US/_Starlight/markings/doll.ftl b/Resources/Locale/en-US/_Starlight/markings/doll.ftl index 919547b826cf..ae2fc44ebfb6 100644 --- a/Resources/Locale/en-US/_Starlight/markings/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/markings/doll.ftl @@ -73,3 +73,94 @@ marking-DollShellHeadFox = Fox-like Head Shell marking-DollShellHeadFox-head_fox = Shell marking-DollShellHeadMoth = Moth-ish Head Shell marking-DollShellHeadMoth-head_moth = Shell +marking-DollShellHeadOwl = Rounded Avian Head Shell +marking-DollShellHeadOwl-head_owl = Shell +marking-DollShellHeadHawk = Sharp Avian Head Shell +marking-DollShellHeadHawk-head_hawk = Shell +marking-DollShellHeadCrested = Crested Head Shell +marking-DollShellHeadCrested-head_crested = Shell + +marking-DollShellLArmUnbroken = Left Arm Unbroken Shell +marking-DollShellLArmUnbroken-unbroken_l_arm = Shell +marking-DollShellLArmUnbroken-unbroken_l_arm_gold = Joinery +marking-DollShellLArmUnbroken-unbroken_l_arm_repaired = Replaced Shell +marking-DollShellRArmUnbroken = Right Arm Unbroken Shell +marking-DollShellRArmUnbroken-unbroken_r_arm = Shell +marking-DollShellRArmUnbroken-unbroken_r_arm_gold = Joinery +marking-DollShellRArmUnbroken-unbroken_r_arm_repaired = Replaced Shell +marking-DollShellLHandUnbroken = Left Hand Unbroken Shell +marking-DollShellLHandUnbroken-unbroken_l_hand = Shell +marking-DollShellLHandUnbroken-unbroken_l_hand_gold = Joinery +marking-DollShellLHandUnbroken-unbroken_l_hand_repaired = Replaced Shell +marking-DollShellRHandUnbroken = Right Hand Unbroken Shell +marking-DollShellRHandUnbroken-unbroken_r_hand = Shell +marking-DollShellRHandUnbroken-unbroken_r_hand_gold = Joinery +marking-DollShellRHandUnbroken-unbroken_r_hand_repaired = Replaced Shell +marking-DollShellLLegUnbroken = Left Leg Unbroken Shell +marking-DollShellLLegUnbroken-unbroken_l_leg = Shell +marking-DollShellLLegUnbroken-unbroken_l_leg_gold = Joinery +marking-DollShellLLegUnbroken-unbroken_l_leg_repaired = Replaced Shell +marking-DollShellRLegUnbroken = Right UnbrokenLeg Shell +marking-DollShellRLegUnbroken-unbroken_r_leg = Shell +marking-DollShellRLegUnbroken-unbroken_r_leg_gold = Joinery +marking-DollShellRLegUnbroken-unbroken_r_leg_repaired = Replaced Shell +marking-DollShellLFootUnbroken = Left Foot Unbroken Shell +marking-DollShellLFootUnbroken-unbroken_l_foot = Shell +marking-DollShellLFootUnbroken-unbroken_l_foot_gold = Joinery +marking-DollShellLFootUnbroken-unbroken_l_foot_repaired = Replaced Shell +marking-DollShellRFootUnbroken = Right Foot Unbroken Shell +marking-DollShellRFootUnbroken-unbroken_r_foot = Shell +marking-DollShellRFootUnbroken-unbroken_r_foot_gold = Joinery +marking-DollShellRFootUnbroken-unbroken_r_foot_repaired = Replaced Shell +marking-DollShellChestUnbroken = Unbroken Chest Shell +marking-DollShellChestUnbroken-unbroken_torso = Shell +marking-DollShellChestUnbroken-unbroken_torso_gold = Joinery +marking-DollShellChestUnbroken-unbroken_torso_repaired = Replaced Shell +marking-DollShellHeadUnbroken = Unbroken Head Shell +marking-DollShellHeadUnbroken-unbroken_head = Shell +marking-DollShellHeadUnbroken-unbroken_head_gold = Joinery +marking-DollShellHeadUnbroken-unbroken_head_repaired = Replaced Shell + +marking-DollShellLArmOvergrown = Left Overgrown Arm Shell +marking-DollShellLArmOvergrown-overgrown_l_arm = Shell +marking-DollShellRArmOvergrown = Right Overgrown Arm Shell +marking-DollShellRArmOvergrown-overgrown_r_arm = Shell +marking-DollShellLHandOvergrown = Left Overgrown Hand Shell +marking-DollShellLHandOvergrown-overgrown_l_hand = Shell +marking-DollShellRHandOvergrown = Right Overgrown Hand Shell +marking-DollShellRHandOvergrown-overgrown_r_hand = Shell +marking-DollShellLLegOvergrown = Left Overgrown Leg Shell +marking-DollShellLLegOvergrown-overgrown_l_leg = Shell +marking-DollShellRLegOvergrown = Right Overgrown Leg Shell +marking-DollShellRLegOvergrown-overgrown_r_leg = Shell +marking-DollShellChestOvergrown = Overgrown Chest Shell +marking-DollShellChestOvergrown-overgrown_torso = Shell +marking-DollShellHeadOvergrown = Overgrown Head Shell +marking-DollShellHeadOvergrown-overgrown_head = Shell + +marking-DollShellLArmParadigm = Left Paradigm Arm Shell +marking-DollShellLArmParadigm-paradigm_l_arm = Shell +marking-DollShellRArmParadigm = Right Paradigm Arm Shell +marking-DollShellRArmParadigm-paradigm_r_arm = Shell +marking-DollShellLHandParadigm = Left Paradigm Hand Shell +marking-DollShellLHandParadigm-paradigm_l_hand = Shell +marking-DollShellLHandParadigm-paradigm_l_hand_flesh = Flesh +marking-DollShellRHandParadigm = Right Paradigm Hand Shell +marking-DollShellRHandParadigm-paradigm_r_hand = Shell +marking-DollShellRHandParadigm-paradigm_r_hand_flesh = Flesh +marking-DollShellLLegParadigm = Left Paradigm Leg Shell +marking-DollShellLLegParadigm-paradigm_l_leg = Shell +marking-DollShellLLegParadigm-paradigm_l_leg_flesh = Flesh +marking-DollShellRLegParadigm = Right Paradigm Leg Shell +marking-DollShellRLegParadigm-paradigm_r_leg = Shell +marking-DollShellRLegParadigm-paradigm_r_leg_flesh = Flesh +marking-DollShellLFootParadigm = Left Paradigm Foot Shell +marking-DollShellLFootParadigm-paradigm_l_foot = Shell +marking-DollShellLFootParadigm-paradigm_l_foot_flesh = Flesh +marking-DollShellRFootParadigm = Right Paradigm Foot Shell +marking-DollShellRFootParadigm-paradigm_r_foot = Shell +marking-DollShellRFootParadigm-paradigm_r_foot_flesh = Flesh +marking-DollShellChestParadigm = Paradigm Chest Shell +marking-DollShellChestParadigm-paradigm_torso = Shell +marking-DollShellHeadParadigm = Paradigm Head Shell +marking-DollShellHeadParadigm-paradigm_head = Shell diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml index 3383bce35808..9726ab06b68b 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml @@ -477,6 +477,453 @@ - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi state: segmented_head +#Unbroken +- type: marking + id: DollShellLArmUnbroken + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_arm + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_arm_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_arm_repaired + +- type: marking + id: DollShellRArmUnbroken + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_arm + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_arm_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_arm_repaired + +- type: marking + id: DollShellLHandUnbroken + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_hand + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_hand_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_hand_repaired + +- type: marking + id: DollShellRHandUnbroken + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_hand + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_hand_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_hand_repaired + +- type: marking + id: DollShellLLegUnbroken + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_leg + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_leg_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_leg_repaired + +- type: marking + id: DollShellRLegUnbroken + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_leg + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_leg_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_leg_repaired + +- type: marking + id: DollShellLFootUnbroken + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_foot + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_foot_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_l_foot_repaired + +- type: marking + id: DollShellRFootUnbroken + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_foot + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_foot_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_r_foot_repaired + +- type: marking + id: DollShellChestUnbroken + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_torso + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_torso_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_torso_repaired + +- type: marking + id: DollShellHeadUnbroken + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_head + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_head_gold + - sprite: _Starlight/Mobs/Customization/Doll/unbroken.rsi + state: unbroken_head_repaired + +#Overgrown +- type: marking + id: DollShellLArmOvergrown + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_l_arm + +- type: marking + id: DollShellRArmOvergrown + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_r_arm + +- type: marking + id: DollShellLHandOvergrown + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_l_hand + +- type: marking + id: DollShellRHandOvergrown + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_r_hand + +- type: marking + id: DollShellLLegOvergrown + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_l_leg + +- type: marking + id: DollShellRLegOvergrown + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_r_leg + +- type: marking + id: DollShellChestOvergrown + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_torso + +- type: marking + id: DollShellHeadOvergrown + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/overgrown.rsi + state: overgrown_head + +#Paradigm +- type: marking + id: DollShellLArmParadigm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_arm + +- type: marking + id: DollShellRArmParadigm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_arm + +- type: marking + id: DollShellLHandParadigm + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_hand + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_hand_flesh + +- type: marking + id: DollShellRHandParadigm + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_hand + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_hand_flesh + +- type: marking + id: DollShellLLegParadigm + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_leg + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_leg_flesh + +- type: marking + id: DollShellRLegParadigm + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_leg + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_leg_flesh + +- type: marking + id: DollShellLFootParadigm + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_foot + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_l_foot_flesh + +- type: marking + id: DollShellRFootParadigm + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_foot + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_r_foot_flesh + +- type: marking + id: DollShellChestParadigm + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_torso + +- type: marking + id: DollShellHeadParadigm + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/paradigm.rsi + state: paradigm_head + #Species Masks - type: marking id: DollShellHeadFox @@ -504,4 +951,47 @@ color: "#ffffff" sprites: - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi - state: head_moth \ No newline at end of file + state: head_moth + +# Other Masks +- type: marking + id: DollShellHeadCrested + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_crested + +- type: marking + id: DollShellHeadOwl + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_owl + +- type: marking + id: DollShellHeadHawk + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_hawk diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/meta.json new file mode 100644 index 000000000000..364c58a6627e --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/meta.json @@ -0,0 +1,51 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "State based copyright", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "overgrown_head", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_l_arm", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_l_hand", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_l_leg", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_r_arm", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_r_hand", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_r_leg", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "overgrown_torso", + "directions": 4, + "copyright": "SevenShades" + } + ] +} diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_head.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_head.png new file mode 100644 index 0000000000000000000000000000000000000000..84b0ea088a5c6beefebcc6f5845e4116d87c6baf GIT binary patch literal 547 zcmV+;0^I$HP)Px$-AP12RCt{2+Oe{tFcb#hb9Z(|8%bwl!|*8KA$DOEHS)s_ z@#6U**ch`)5#!8pkHBK##+X0u(JxU1Gsk{_P=ohAK8)1yCanQskA4^iGR909Dv2?M zhGB>`gl+O1SrcHbrLODZaZwbclp?M5tcxNui`JTyQcpMCbsbr2v&PJtfU+#fT1#!) z#&cCwQPVWDZd2EF{na!LRaF(wwQWn*S}MzOuGrs=*MZaNwAvaFvUA^m%59LKm75gM lAOQdX000000001x=^M!D19Wg+^1sYZ0~K2jlE4A zl%A`%`+zKggEwmN51bL;bRjt|=T($k(xAX(YqP%@C3kU{kK7G5Z-k5QA l5ZBk*|36-rLaaJ4wU+UnL3;3vDE1zZh^MQc%Q~loCIBdokbM9E literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..084a80ac124c3e3286d613a8260f751f86e3719c GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zc|BbmLn`LH zy=B;S*ny|@;q(oyt3wX%keL*{<11rPn7o5|!OXIrQv!3+_$J&eo6VB5B{A{;`sm{qC}S>{ElDyqjHgCstE+uAlnZ&ujkH$=j|{(X_dGw{&k@ zsMkdk-`VlG5^ZyLub#5#_~V7oKTF!adT+S->i>Vjkr4Yq8Vr$>Z?vu;EZD#dp?UYHs_T7(>uTv=8e}A#^{i5=_dFG|D%TpumZv8%Qu-U3l f*_;JvNW??wy$(5ZqzhKdg3R=E^>bP0l+XkK^M#X` literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..2e18bf87e55b0f847ec34f575216faa863f4d97f GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zl{{S>Ln`LH zy=9o!Vj$4^Q1O(Y1;edb!aJVcS+=C;Ip+7ZFEc7xR;edQv>7ozw%E2~`Szl7OS2`~f_K|Z z3)=NYd53@Fswl6QSM>gf$DZC$t0UjvUJ`rVL>lIVJI_!3XS(-wd&IPPpXv|f2kn)O zo961`a^}psdu(s-nnu4|#V(L6@_f#dIoU~kGncJ2Hm;7FDIZwMa;#7%KXKmkSu32M zRZf#gzRD6(&pfAC$Z106th~rJtLN`lu>R|kf24Tn48yYT%pmJLUHx3vIVCg!0QI_< A$^ZZW literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..2b74c72caf18d163be8dc9d928072c6a0264abd7 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zH9TD$Ln`LH zy`?zmh=Ks?g?Vd5HAI-^X1hE)azxlYWSs+7=Ud?~vrm*%Ex*G`mmP7#XC_SAH( z-^U)co1xoX@6cW03#GAF6T*#;*;q4yY=!`b$#aT*dEHkfr~SOHYVo{f=KXaIcQ4+U z_9<+Eh5EJbqH~^-Gqzcn+%0;+(jri27M1q?vdKjQp6$Y$V;@~$=KLi$RXW)t+xN50 z{MoNWTLoNPmekyT_~Wwj^o0B0w-?IHuF{2Cw&5*z^n??&8ynPtVaCAV>FVdQ&MBb@ E0K(Fg5C8xG literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..d185da9875e30b51ea29f71a9de77d73815bb12b GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|zIwVihE&XX zduwlRi-ADfL(3A?1yh~57BB^IEeI1gSQyL5YT>4m(l?{~L|LQN8F}ri zv#U}(rjdL5l+F30PV-i-(keV>JE#1+^oGpaVaE!mObP0&Ssr~oG{`IHdg;ujRaG-z z@86k}2DS!FJpWZy*7*J2wv*ZCB7g0x-*s&Dp6_Nn&KLjk9e-TCYu)5!nO!=1?@S4Zyfv$WL3+=DoYX^U(u{Y%C;eM*XvkxHkn?N? z56~nqI8pijYsIQn%cgv(_?~yK+E;Vss;s!@H-D_(%pL5t-%Pe`;f5>KPf9JG|GQE- z^YIdA4k@P#sgZVzn5U&)6mTj{ubZwWBDnee?wQM0ntTy^y-VtOOzEGO%o4{xKHYnL z-Ro78?`j^)ShF=v=6Ja0otM@R6qJrdMN5@g3;vw3js@n31IbT}f7a;zzi%4zalO;W zoDZ2@#~<&Mcw9O)2{;U^_fr{an^LB{Ts5Q2d%V literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_torso.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_torso.png new file mode 100644 index 0000000000000000000000000000000000000000..99b21bde4d25f8da9ba0a0baf02c6751284c547c GIT binary patch literal 925 zcmV;O17iG%P)Px&S4l)cRCt{2nlWqRFcioCcZA}l9*PDpH9}oGh88?FpEw`D+3Z5_*j0++p?Jt* zL%}p|eTyaJw09RdRql?{4+4>#=siEZr)T^g;PH4o9*@W4`9Jw)^W!v4djOcv=h*Fb zdY%x1q9_0Wi^alf%_;I3W1y6xX&QuK2q`6m5N_qCY1$uB*Y$@vrKBtQS(f!(*J*iK zmi6!N?|qhK?&O=o6`b=AH}6Ub)A*(i=GdIKk^lYJALePOB)AYlxn`8CeWe6PZ{${iJ;0?C&kM;nC5CUD-VYONT09LCNx~>Cb zOdmw9XxkQ2N?`EF>+5TMO-hNjZLQa|J~5SrDW!u)w2tw&wgljK{6Kpe-I&1OiFM7#WKHbWf8wo6Th zQi|8tS73N1IR$G2U^oXbJdn7K`$H}-FCnGG#l;0ErFedR*7H-aHo$tlMjXc@BjkCG z^?E%?0b91)Ehwcr-Ky`8kB^hqvo?UryMz!3A&}=e?(Xh>`Hb+DTwPt^?d?sEg%G&E zzef~Blh&IQ0%cjEC<;g^5k(QovYaG*3Sk)H<>duY6zNpF-EKh$nY7;IG-#%r&*ofV zp7e{w;@jcawS14qtx5JCvt+}xb?eH`b! zXN;j~8azEc0YmN3>3hNDaye>>Fw0V$bEjo76VAET!z|I&b=@zQOSjcwvo%Jc+EmVA z1kQOcr9>EpN9p!EX10H*stQ$A0fWn7D3L!rJh*L87$AgzF{Wj) z7^*U=M0Tzk;cmCnJ1v9&rF5i^trtwH3@N0PAcW{z{W%UoC4*85LWu57n2NOrn9S$% z(FuGmq?8DP0993;Tpm9u4Pq#ks@N}z!g+ZrP19c8bQp%C_;;QLKWmgSo1|QKh`7+f zIs{Y|*0g+*Bw&o49FNDM4!uJirkn}Z1}KUGK@g1k0nXN>WK@KIrh_e3S-`x(rfKx& zPw|-!wwo|%$3Ba*bJyno1|2*ekH_Qj{M-Bh3>7W4Bf&Bq00000NkvXXu0mjf3|+X& literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/meta.json new file mode 100644 index 000000000000..adcbe94cd52a --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/meta.json @@ -0,0 +1,91 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "State based copyright", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "paradigm_head", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_arm", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_foot_flesh", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_foot", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_hand_flesh", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_hand", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_leg_flesh", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_l_leg", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_arm", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_foot_flesh", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_foot", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_hand_flesh", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_hand", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_leg_flesh", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_r_leg", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "paradigm_torso", + "directions": 4, + "copyright": "SevenShades" + } + ] +} diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_head.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_head.png new file mode 100644 index 0000000000000000000000000000000000000000..16e5c69a0fb7c14d14b3e19072ed2c59a886b711 GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zS9!WPhE&XX zd&{uzkbwZ}h4)v#Wol?Buh_{@{yx(o|)qgw>7SU&d> zU+D6${1xZrg5+k8ybR!;yjVIsxaR9Hm{TxZF|@n zu23xy)-r2y{IlC(*7G|Mz;5zs+rphfujicJcP;)|x^Ca9Ro`m=7pw^ryf<@x36qhJ^0P zr=NbBG|l@{newu?Mn`S6n|KdZ$L9##`yF4r+V`HCg>KVVu9DdB8iCmBcYh0Qm{D`` z(fNw^p)P5;SxP})-sx{%zP4z6O8WnViuYd&EDlsPpL=fHcRYFOe#iHF-<4TExVE6w jYVN93VL=$E-69_P}^6v8B@uX2o9$S~2-g*%DEGxT8b5=nKw4{L1>-~IpechmB-Thf3! z8EkqUuaMhm`CM=3JC&2WTjp$5xx1L5Sa0Fp8qKBNjQsBp1a&!a94t;%)oc;i^J&*9 z%hgkqJgc_0ObgAfwR~+Jf3Hz literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..03cee0725b9f54f6caf6db6c1b01cb54a12f7f5b GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_IbKEhE&XX zdu#XF!v;L9iLaDqSMW@~b_bh97U{!xJ)bIMHtl(H`%nDRuJ%b@mw14>py0!- zRg+Xgr{0NmPua2i+=S96t48B?A>1T z^6>Y2Wv8;kOkiNRp?g}%^VFHk&%eG~cV^0x|2Kti=Lq literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot_flesh.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot_flesh.png new file mode 100644 index 0000000000000000000000000000000000000000..49753558d4c1984f02eed45ddd5230783188b74e GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|f;?RuLn`LH zy=5raU?9M9VEsx#hsMT|9i3u1M{*u1n9Q^}x~_5e&ReQ0shUAjjca44)aN-MVNX{-mvv4FO#lTTFQ@uD6fR+_`)EHNEZces=Jk`@H7btn%3Fu3yf54p|#&`Ml$f{zLW+ zxwC`3vevfViSY8=e%p8Hl#V;uGa_%OOW$OIm<1$1)VKC*sE@jSb$Tl2`+Lc0_rC8{ zS$S<$`gcD0e*VJ(b89r7ugRSCZ_hvDFS#nR#|7usteCQ>_P%M~;;gm$cYo*3n7RJ- fDSH;6Nfn30XB&kJMYkTG4l>=-)z4*}Q$iB}E1rBy literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand_flesh.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand_flesh.png new file mode 100644 index 0000000000000000000000000000000000000000..861e796bcfc4bbbfd28bdd5ec2f3d5d71539b782 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j67W&Ln`LH zJ!ityRH7lKgo!@p|Xtw zXb>1wgnFIqmfPv#a_8>pUDv{M8|G~8=vc98*3Grf5^at_Uh7sxeY*B5PjHF*=k#~) zR;|)a3VqM;Q&*$q!jc8yD^?wouz$=UV%t_A)86xVh3|=Rq(}Mt0y|gUVOIMuWb4u a{trX0?F2pD)6a!L_IbMcxvXZgF1qi|^q6l**qRK*bCU4>~KqY_(>N?78$Q t?sn+;{Au5r!Qu=J@wW}Tq>>mPY?bEO%`G-pZhbaL!qe5yWt~$(69DD}Ff0H7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..291b33a3d9c4100ebd198946e4b6643af8f89d49 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|o_o4DhE&XX zduwBEtAR-C!`D8Jyr$e2svOrJVp!JPCEBBrX?xIfvPWPSyNg=Oi~m`tt?c&A%>^0v zV5&gVyK@CDJsWGz2{ftLE@JT1iaIozFF$Qs(4@IDTDI?H&AmOV_*`w?pX;W+kGo7>`YW_`aW>RqY$e(&t(H(%|t+fui^VX-tL&;|(j z?{h9P{_fo8;a_X@fB$F+_@jKtw@luBzx46Iw6wzpHqVa!n0lEtBsBH1N$lijY|FWC nY&*Ma-EOtBymclJQ*3TqC$6uu-}gn-5M-pMtDnm{r-UW|X}Ef4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..f2181e1cf25f0d4b9ce9cabdf018a1f8a5aa34f1 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|c6z!vhE&XX zd&`>Zuz^6!L(wN`yVkxpcqcYL>0o%l7>pVBIp#<{moZ>p*DwdZMGo>?@f?ZXSdy8hGa4qXepQT+Yx r--hhhyV_K?U%R!u{y=JY;`_Vq>faYF+a;oB3Np>p)z4*}Q$iB}TK;Ne literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot_flesh.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot_flesh.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e01f2df48da3cd5f6674f3098f84d0e2c8c80e GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|0z6$DLn`LH zy=5rcU?AXfaP>;%1}5f`LSfw-9XA&=^iAKLdYX%T6_4Qh6&j?a#Mq nmEVjWGeRU9Y>nnC)z^r|eQx7w?YB$-*~j4N>gTe~DWM4figzyw literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a6013eb6d937fb05cd74671d298d87424e5dd1 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|?s>X6hE&XX zd&{t|#ekoeu-P&m&7ec^?sI!~-lX{-*6&IX1XLHZv zA0_?wy9{rc_=Y|gz5ckL=dgle%dE(*Tie#&+gzdWaqha;DUo6)EyMZ0Os>6u-|GEB g3FY7AK%-*r@G3NhOj_AEHyvcKr>mdKI;Vst0P<>kJOBUy literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand_flesh.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand_flesh.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b77fca067fa8722e662e8f8fdb058803c12100 GIT binary patch literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|j6Gc(Ln`LH zJ*UXXV8Fp(ut=bJjea%Lf`A#i2bF;G3<(vH|9^oPP;kJBd0{f+r@q;#Yd|8Nu6{1- HoD!Ma>7JK<#ajJen^NF%;_lruIg!&YMd)wT>E5~f`JB+}r62z+ zV!5$h<<3C^o_%2l#Ex>VSd|riVDZu^Wq&7ppLDSN_8+fF*OCLQwy$6c@|w>$Ynf*6 zSE1KdDlhfE3&Ct-_}5z~BPy7^x?!K)%(<#dRXn>oVn24rx7Qo-9DaHJsr%78QyVJh zoxN+Tm-BJO{e6I`|G)ugsg<)nN+huhoCd@rZY-k!ey(7ji;OIdcU k+pMkUu)AFVdQ&MBb@0DC)>761SM literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg_flesh.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg_flesh.png new file mode 100644 index 0000000000000000000000000000000000000000..d41124870ed28b75f1a25b525b16c3c0d22f0387 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|!aQ9ZLn`LH zy=lnXU?9SB;oKR~0}YLOzN!xvMP)JDztA$~l;*5|V9PrFbnbK^pauqp4^P(o?m5R$ xUVC#*(UVWUoX2l%;RQ=D{0Tpj`Dz7g!*#ugDctF)F4tN?;-0R4F6*2Ung9f#G$#N6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_torso.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_torso.png new file mode 100644 index 0000000000000000000000000000000000000000..88aefa88c23f61cda7410fcc31b8814b16456ef6 GIT binary patch literal 889 zcmV-<1BU#GP)Px&Gf6~2RCt{2ny+%>Fc8K+-5fBoK?@2y3N17$jNhTWZ_r1{8$=A4>ni}@<>e)*&lHR?1OQFbC?X?AT5fPDdj;yr=07OI_ zq-$f0S?sa1tj8F$=;6<fIzrs+iEDtkaIve?fU+!?Ah73$!{MU-l9vF(BFeJ7w2OUM?@vyIRp7foyaR{rYikJYhbO`sm#?$%2@s3Qbqpd10)j!wWm^ygK@bE%5ClOG z1VIqKImyKY#uzG!0s!#v@PM)`p_E#!DB@2L5qaXjxxlleI?}u+P0;ts*WOTt);Rop|wViAXsZjYmKrjPwZ7yrP{Vl(vX}P z>bj0NF)`2ck`2;Yr*`#MgsFJe({){PiY_?-cXxN-Y|#DvJvN)oQlOM0HO4l^aYWNJ zif15eTQx(}wk^e#B0LRqCPvuSIW4O%fe`Qgvi3KdO}3MOM_y|U?>(~SCpjPIoTIMm zmO=$RFB-Jh^Naq-dVyJgPZ3|dm@Yv3|#?ngD& zxP~XnN}t~Sl26}f<9m61)A@P(PZ=LRYOZojBdchZn&8C4R>vZ27_NS}*WJpQK_J$+Rm{Byt61v~r0 zEA1Vl85m4_FW)HjV@&_4`Qi?*h3El`zO$Qj4%}<{RvanT^Z3RSk%^1>8Lq$nS~qv~ z{Ll^G<9_X{kF*hgyJg?|g^gFPsJ93>aVWxwdsE(&zkKPrW}eX1NBh6n7q>pI{8zR= zj6+GO|I0+dBlDR(daa)`Fl@igd)Odh-g7O*6_wBL#NNJEYSytPDY<7;uJpB1*XyMb z*F}Nyx6NYorYG6AU)hsY9?Sk*=GHdd`;Ce$orYc<4-F-%ifdT{0yvE9iL1n;wV4lJ;DVZ7VJ@zSvr}z%)KJ%eQ@Ug42pyb;~XXeKut? zX|Qc6F|lfj3~)Y-C?eD1XZRsit_{+)b;G0%MoK)78&q Iol`;+0N!cq!vFvP literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_hawk.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_hawk.png new file mode 100644 index 0000000000000000000000000000000000000000..273f7beb9092c54dda938192dc0be7917de816b2 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>U=s9naSW-L z^Y)hEy2S<}tQTfq6cG^%?b0v_%h=2mw5ea`-0uY{s@4Tlj%iHHaL{~lPoGU$=K|5Ex? z_}BNu(Q8pV@4shYSZg{ZsKRdkj=Omb4R`a}O?;c*S#GbJmb&7#)bGD?(@&?C{aqky z!1E~elb2@3+QhZId#~z5PJ38kvuIs5gG20f3%ULin{uxGt!t0DvrYGtjr$}OX&&uI z{d0>yRoJBQDlPdJa{qhBq8GRS|9Abscfg>K!9s>lfB$u%zwX&x!u6Zdh| zsw0-_m)j>4`>k3PrP>1IX5TKeiCb;Qa6rPi?ZF)3PzdEaZk0UUpFnGH9xvXPx$(Md!>RCt{2+CgrEFc1aMPt~=vVT)vuD{zBcG~yn<0atM319)R!V7lobDv5@4cjy zL`1|nC*FH;&WVUfN=bBrj#9?iI<~w5@3nt0#-QuE4ggY0qEB2zB*s|VT$6Deal73B z05L|4$;q_f>J>wlUqc@Yus{d#`%7eMK2P{wav{;1sql@3-n9stK~K6gY! za?UWuK#%%b5)ly*5fKp)5fKp)Jw-}sO-BBvl$d6Tw0|}KttjyE525(h9gqPI@l)+O0ivuPg=jU4%Mwea?KaYPzO&Dm=WDdN%fpx< z^y-|=ClzKy7N4{K#e7ce;lsxtm6wVLP1KJ2s;=a;RAloWHsjY9b#6>MGIw)A_Jtei z_ose;tmdKI;Vst0I1oZ5dZ)H literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2975e873bdf845bb659457fa51a071666d5a2f GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|_ISEDhE&XX zdut=_Ap-%{fNsqR8BT{q);JwDd3mG3Fo8{Mf$Pf~he9}7JcQltl<&P>T;Dapileyijy&wX?9`NH#o*Z*z4-}1Go z4En44PI~+7V$@tZ<=yd1Z;DRW=F~lz zb*j4TL~c&1dwSpb1rbkBRGIm<0KGRsbM)yWk_3Ur4 vI~%Xvy4B#aM=v^CR#0&3wXeKj)gN}MZ@%eSklgY)1jP4r^>bP0l+XkKjn7ei literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..f694fa29a8ad0ee45a8ab2c9fb1ed033df58b150 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|W_!9ghE&XX zd+Q)?vjGolz@@D-W-->J@U$f`eGgg^=bapyc~APm>5U@sZ&Dc<7^*rtWHh(CyiZbA zGA{06d*XdwEoSE4PhPGr?|$Fgdt;UUhZP*L*SCf~;ai-<_T`NB_3R8@(?39afM7w` zKFjmQ+jD1UPc3`PZ*1KEc*g6G)AOgTQ2oxh|3cL6(#appd1uu1+I{5#s(#??@0U?N T_u+%5ZXnH`u6{1-oD!M<&y`p< literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc47241107a24de05ef74aa7fcdcd080e827cdb GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|>O5T>Ln`LH zy|t0|Pyi3hh5hWd!6~BOJdc|tvWYF|HR{Z~ytG5Pg-lY20G_U5(=vODbh*D&@hyYSj5^o#GyTla5R1C0lPm}Q@J<<);pt_h3j ne8e@;wTtif-s`GBi3c~tXI2;nESnir2U6$h>gTe~DWM4f@%&1} literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_repaired.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d17bf351507425bef28eeef0652b13568c589b GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|(mh=qLn`LH zy>(i!L4k+W;j4@Mm-+<_GMdd%8`#_h?RT^8shlh`IhB!tq2YLEhn-Qqv}jEB+w{}! zF8-Ra;ji)*Z)XP@0|W=+rv~xGE@}VEe&#}ybxq&@D-1>FUccc3N_}9mW-Ag8&t2dz P4pQmq>gTe~DWM4fH3>J~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..593b0faf155a9250d28cc5cde7d410a1d7ac2745 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|rh2+KhE&XX zdut;vvmy`c1?N*~=G)hQmN|2P#jkbBvn3jhODgjl__w|IahwsT90(3nACm|T6%`Z} z-1@j@W^8EmCwnvYb7y9S=_@L&`X0CU`>8WaZ|0`nc>UmcrQYd#Q@Nqqtkd)rjJJPf zdgtPDR{y8rv3hIf-Bpa`X@N<4|7Wi`-o?H3+O75R2TEhTi{^F4SKl~2O|KZF)zj6_ JWt~$(698}lRNw#r literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..6b2472f6bea705d9ed81794d8c16cf57eb6da025 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|$~|2iLn`LH zy|t0|umKN?!~2K#f>T7_K0bF_#dt^XQnL>#^UYivL>N^RcSJY%H_7hQ0crw)n(%Dj z_p>rpEw{fbwfE9KxwV}4^Pc<9GXBM`59m*xyS@^ltYN?D?anHXc`?*b6L4kwW;qgCh!`bH+2&sO|W4L9X%L`Nj0;jqth>FMg{vd$@?2>{cjD&hbD literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..653474afc58ddeb4bd1b990d44640e494fcab539 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|rg^$JhE&XX zdut0Qegl9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..93183c74e053f9fd2acef93a6cf94966183858e6 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|GCW-zLn`LH zz2(T;U?AXn@YjPlQPC5;=C0160#kIb0}V2g~q?q?fDkO~HdhW*llMm|^hzm%0TUo7$opUA*)z(U;etx~UK R^wHBG6`rnsF6*2UngFs%IX3_R literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_repaired.png new file mode 100644 index 0000000000000000000000000000000000000000..a425a34892b0fd4bf4b6e44792c4d2d0e2f89500 GIT binary patch literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|!aZFaLn`LH zz3Iq%K!JhT;m>YIhr`^C8VORfPS|zwP{u%6a%14xE+Sz^Kqa?c*~Gki4g>pUXO@geCw8H8e2* literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg.png new file mode 100644 index 0000000000000000000000000000000000000000..2817e261c5db3e4848dd33a27a94742690539de5 GIT binary patch literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|4tlychE&XX zduyZMVFjMn#1l+$ExZ~tXJ3-OaQUKfV^Cl__j?7)|M5?~KAqfkJ>ncAP!9++L|Uf5 z-aC8d&Az&{w5?&MExmv36>*(Ye6IR^=+?4t6L}U)S)^gScB|TIRY?a9$H26xp1^Ia zr1&nM7Y{9Nw8cGNHWS8t_yqEv?_SyPS zMxbT}hW$I{@;{va*q!sQnRn5{BA=>rTA>Sm7f;r@vgNDZdCU7=u`^F@HY&aC-j-6d z_x#bn%#T}kZJTMjbLV4bu>J!rbDS@h$KGyPwE57a>GIt(#g4ya*GUPBf4{!;Tar$q ykL|vaiaDR28*hnQ+1k30!*zbrOTP`q41sYvuLGNJ)i`ej8RO~d=d#Wzp$P!is%HEE literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_repaired.png new file mode 100644 index 0000000000000000000000000000000000000000..f33d913264b5b9e21759b77b9a9a4bd9ae63daf4 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|+C5zyLn`LH zy?IdZumTT@!{n3q|4w&gv?;V-<*-tbvEAUNuEX++2VVCv0~IqcJYZhC^-k`;uHN1HV{Y5&i#K!M?!LMB=lP4O>t0LA8qSdwtep4! zd-UUb)ow1=qNeX{>Ns)l_b&Y%CV$vJHSXQZkmz7#dQ&2*8Dxy7tDnm{r-UW|h!Rvy literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..00c83d9ebad5ca14ea529f6df1338ca627e08cc8 GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|CV9FzhE&XX zd-I@Rvw{F?z+^U!Q(c-2)(bhbZ_GJUapWS8<9+Mm9~*YZl+9vbXt35;>hhi^*7e9{ z`3LE4nQIqY-q&r<+ak@ zz4vCG%euw;Zt0YL)rV3e_4rMAx{s@$vb?|URr~*jUO}MBgc$kB&8|}!oEPi@Y4mjU Kb6Mw<&;$T_7*a9- literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..1abf1c8f0c71ce8d1d1218c67826d24d4f23987b GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|7I?ZihE&XX zdut=_Ap-#hhj!By84QNbVJGcMcnfSXqCBtRqx;ZI`jXUj0_C> zZSsEqc`u>#=9-+%e7=nnMMR1sf0nL&#QNm9p~BD16-qx{H~cwSMIH|%sa@6_dr z;=j3{Z43_tS_%XiK9?t7PrVg&d!K{h{m%T|sr>mdKI;Vst07ExcApigX literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_repaired.png new file mode 100644 index 0000000000000000000000000000000000000000..5e133fd10c404eb3d97cef1cc2f0b1a78105beb1 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ay?xfLn`LH zy=BP7E=BhD^^9z{L@fMN_%H$e5HE6mdKI;Vst09{{Lj{pDw literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..976d4c92206ea39a771aefb30a7d7c84a5ddab92 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|ialK%Ln`LH zy=BOI#DRy!;j_nojXtj*HR5LCJc<*(eew8{%Hi_Sb(Z6XsOhgcfEqwRZ}Ijsk0)QX zJoR*^U*w_W_`Yh^>CZ8*|BJ3-e)2xrzP0~e(fw)1o9}#O Z|G@qtTD$(@T(%D&rJk;SF6*2UngFnqMS=hT literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_repaired.png new file mode 100644 index 0000000000000000000000000000000000000000..e2584ae07b7f18c55d48a46a6306917818aea3c5 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|NPQpN&Q3j!`KE@^$I@9Mt)a?kyJ zZOXHf=f&R=LThEVd1t@v_)J3_pUrI)l9a z>|T7;=KTKryWefM->7xvZ&V&H_SU$m@}(-8_(6K%O<}4ivw+W4;QSC z1Lkeyz~JfX K=d#Wzp$P!6JWt91 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..a27a475ded02054a6b0736c6332123e104cc37c1 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|rhB?LhE&XX zdvhT#lcNCZ1y0cij=`)=ZZBGx3Q8FIg!nquDs&EBJi2Jd9EAzIvrp%~vo%dRGXLbd zSsXy!3>kCFHh)?7{;W~$d%3>XiE(<_RXM9AZIqPeDr>)gl777SzyG{{zTvr*cb@1z zUOa1FUHHX(kUk*j3Es8#cy+~_xbEz|GU5~Uy6?5iUpd4s3UukFy$q=(8g2W&9bE`g N>FMg{vd$@?2>^VLQ(^!B literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_repaired.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d6b5c6cccd941fbdc9dda8958c24edfc57c31b GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|QaoK8Ln`LH zy>*bY!GMRsp|tDWrIp4G^JlKsQ_$*2czxGgv1LO1CLN$s27}f!Z`N+Do4S22>wA$O ztD;{2+Hv9pGe`yq8rqGDXKnuZviZowju%U(l<$&sb@AEE$iVRDDqqKTz= z&N;grIg@n%`-x{?PO<1N&3JZ4pZD+ttMB`4Ci7*j4a%OH8p&sWW+7LG>a%y-HU6i` zxX*lU89KE+IwAJ@j%e;VC!c>{^|?Hymlb9#gH7+u*4^%xlfw_3QBt~8&FGtD|G@8D z-IZnf3#Keuwd(e^xt;Z0t5$U^`Ns62B>e2$67DUEH;N-y@g9u(*l7QOF?~%EXZp1I QcOU~jUHx3vIVCg!073+CmH+?% literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..a65aaf59d9974f63188d52cc5e9174e788d7c6be GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|W_r3fhE&XX zdut=_Ap-%{3mu6wnnL&R3oEKQoMOroG*)=!E$ZStvE_%(m$=-Qes;Te+4BIkF)$o3 z|9)C?Q?-Zq)<0)eWv0p0`Tw_kclErQZ(O>~xmdsbFIV?`ym3`E=Vkgu@forC>$iR_ zyBKW`*2-|;{Ziem#nVp2O+Ej0_VO@0?lj*8v!{5arDPx%_en%SRCt{2n!#%0Fc5}+ZMP+t`s8yd$t#2&++&}(51^w`C^`Bn$IYo%`Q&1U ze=n9%vZX{y?e4;S5Q1@{e>5|ajAsBr5ClOG1VK0(=NzrI?D7+mR%l zb0o>#Za14g0DuGD0Fv{G1L*snA#-Yv@Dt|HHO73a=C9a4d?iYf#+b>{(K&ZC?%{Cw z>wc_Le#iXST1x~@P)ey#u&OGwZHuR;Clxd9xs+vzqA1Wb4YDl5;cx&+dOJ3o4cfMi z8uRQ7@KLR*3Vq*0DW$BnR7$D7?@?7%!j#TOYt6Q8QP(xHECT>sU0ne~K$i{brA4H%B%zVAnUV+{Mg zPu7jj007wU_wYwj$Q&DBp67Ubdjo(`-(RN?ZLp8>9FzS@-`nuh_6UL?2!bF8f*=Tj zAPB;L#>MZ^NV2LbtX8X8-^p2Pxm+&MG!4qK1b|5kvtQynM&{BBtJGn?fOC$|&(HH0 zZM*?5``p518(WS9)qU-ei6m^^Kh$@4tAOC{O?+wB&u3h}{Ik2{uiG zrfH%DzXPA<-iFYQ*dQcD>~x*|#Pj!OYh8K-1VIo4L5SfG2PmbdD#8^z00000NkvXX Hu0mjff_8w5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_gold.png new file mode 100644 index 0000000000000000000000000000000000000000..21e632a93aa1eb9c7908f40fe99d2032e27b8faa GIT binary patch literal 359 zcmV-t0hs=YP)Px$AxT6*RCt{2+OZA7Fc5`dhnAiu1)`y01twsJ?2!@Z*ajA$VS%*30L)-2BoxIF zIP$$i{9hZPXU9i;iW33=008ij>v0=%u9eQV$PXce5HIV&ka*vh4^QO8u8FB}l^I0W z*oD344o!aIjh|)xYQCA0nXOv3l_WStRSA8PalA^;>c8)fm(`b0uDXkgQx8I#@1gW% zV@P#cmMbzgd6Q1C&vG{y>-KW1BCin|P%Yc4^a|V_i}XcNa|Qqa00000;7^yxGF`J)1l@j004lW^8`#szVcnd^B@2K002ovPDHLk FV1g`Cp7Hpf~}2EX=C(RXjIY9E;M9a!pDToOpDntBd+SnLAOtXB_!+r(7tz z`~U3Q_kP@uX1`YITRAUS#P#B8L)XAPHDzs<=3BQP_`Srui{CgcEW2d-@iUL+aBr*V zJ(T}Xa?aAsSJv&ZZHXVETJExTJhsSKUT-6(c(}dv<~?KI%c?@wK@09iKd{feed$*E ztI*tkLNS+2cujpDC$Bm@Bl6THo?G)l&IAKHLF4YN-=?uI$TvQA!hq*|^$&lIBkz(w z?t5Qq#F_GaW5xB-E2Xl6g1wJdOuQW3V;B@V_1?!F#qV~qUTKnfGDkSMr!Fo$#^$e> zLJ8l3v)_3)PCtEd^Us>Adqp3d**78eX5_+c7yq=c*cP1!4w?@S*p(jKz1QR literal 0 HcmV?d00001 From cbbe6217ad85726923e4864add3b5c3ef613ca75 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Thu, 27 Aug 2026 20:29:01 +0200 Subject: [PATCH 19/36] Cleaned up duplicate survival boxes --- .../Catalog/Fills/Boxes/emergency.yml | 72 ------------------- 1 file changed, 72 deletions(-) diff --git a/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml b/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml index 9b3189a9bae7..b69fbed0f81e 100644 --- a/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml +++ b/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml @@ -158,78 +158,6 @@ - state: internals - state: extendedtank -- type: entity - parent: BoxCardboard - id: BoxSurvivalSecurityBlood - name: survival box - description: It's a box with basic internals inside. This one is labelled to contain an extended-capacity tank and a haemobrick. - suffix: Security, Blood - components: - - type: EntityTableContainerFill - containers: - storagebase: !type:AllSelector - children: - - id: ClothingMaskGasSecurity - - id: ExtendedEmergencyOxygenTankFilled #Starlight - - id: EmergencyMedipen - - id: Flare - - id: FoodSnackBloodBrick - - id: DrinkWaterBottleFull - - type: Sprite - layers: - - state: internals - - state: emergencytank - -- type: entity - parent: BoxCardboard - id: BoxSurvivalMedicalBlood - name: survival box - description: It's a box with basic internals inside. This one is labelled to contain a haemobrick. - suffix: Medical, Blood - components: - - type: EntityTableContainerFill - containers: - storagebase: !type:AllSelector - children: - - id: ClothingMaskBreathMedical - - id: EmergencyOxygenTankFilled - - id: EmergencyMedipen - - id: Flare - - id: FoodSnackBloodBrick - - id: DrinkWaterBottleFull - - type: Sprite - layers: - - state: internals - - state: emergencytank - -- type: entity - parent: BoxCardboard - id: BoxHugBlood - name: box of hugs - description: A special box for sensitive people. This one is labelled to contain a haemobrick. - suffix: Emergency, Blood - components: - - type: Sprite - layers: - - state: box_hug - - state: heart - - type: Item - heldPrefix: hug - - type: EntityTableContainerFill - containers: - storagebase: !type:AllSelector - children: - - id: ClothingMaskBreath - - id: EmergencyFunnyOxygenTankFilled - - id: EmergencyMedipen - - id: Flare - - id: FoodSnackBloodBrick - - id: DrinkWaterBottleFull - - type: Tag - tags: - - BoxCardboard - - BoxHug - - type: entity parent: BoxSurvivalNonBreather id: BoxHugNonBreather From e246ea5803670cec02f262232b276165cfb68ad5 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 14:09:31 +0200 Subject: [PATCH 20/36] readonlyn't data fields --- .../_Starlight/Medical/Surgery/OrganSystem.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs index a5d0fa83cb3f..ab7daffb7021 100644 --- a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs @@ -34,16 +34,16 @@ namespace Content.Server._Starlight.Medical.Surgery; public sealed partial class OrganSystem : EntitySystem { - [Dependency] private readonly BlindableSystem _blindable = default!; - [Dependency] private readonly DamageableSystem _damageableSystem = default!; - [Dependency] private readonly HumanoidAppearanceSystem _humanoidAppearanceSystem = default!; - [Dependency] private readonly TagSystem _tag = default!; - [Dependency] private readonly LanguageSystem _language = default!; - [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private BlindableSystem _blindable = default!; + [Dependency] private DamageableSystem _damageableSystem = default!; + [Dependency] private HumanoidAppearanceSystem _humanoidAppearanceSystem = default!; + [Dependency] private TagSystem _tag = default!; + [Dependency] private LanguageSystem _language = default!; + [Dependency] private SharedContainerSystem _container = default!; [Dependency] private IGameTiming _timing = default!; - [Dependency] private readonly MarkingManager _markingManager = default!; - [Dependency] private readonly SharedBodySystem _body = default!; - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private MarkingManager _markingManager = default!; + [Dependency] private SharedBodySystem _body = default!; + [Dependency] private SharedActionsSystem _actionsSystem = default!; [Dependency] private ISerializationManager _serialization = default!; [Dependency] private SharedSurgerySystem _surgery = default!; From 0f283763714c7b5548cfc328d97000a2467d2ed6 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 16:39:28 +0200 Subject: [PATCH 21/36] Some review changes --- .../_Starlight/Medical/Surgery/OrganSystem.cs | 35 +-- .../Damage/Components/DamageableComponent.cs | 10 + .../Damage/Systems/DamageableSystem.API.cs | 26 +- Content.Shared/Magic/SharedMagicSystem.cs | 20 +- .../Medical/Surgery/Components/_Organs.cs | 6 +- .../SharedVentCrawlSystem.Tube.cs | 2 +- .../Loadouts/Miscellaneous/survival.yml | 251 ------------------ .../Loadouts/Miscellaneous/survival.yml | 81 +++++- .../_Starlight/Surgery/surgeries.yml | 4 +- 9 files changed, 134 insertions(+), 301 deletions(-) diff --git a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs index ab7daffb7021..2aae03c78674 100644 --- a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs @@ -27,6 +27,7 @@ using Content.Shared._Starlight.VentCrawl.Components; using Content.Shared._Starlight.Medical.Surgery.Components; using Content.Shared._Starlight.Antags.Abductor.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager; namespace Content.Server._Starlight.Medical.Surgery; @@ -119,7 +120,7 @@ private void OnFunctionalOrganExtracted(Entity ent, re private void UpdateEntity(EntityUid ent, IComponent comp, EntityUid? implant = null) { - //For all those components where the enity needs to be updated in their own way after adding or removing a component + //For all those components where the entity needs to be updated in their own way after adding or removing a component switch (comp) { case IntrinsicTranslatorComponent _: @@ -164,10 +165,10 @@ private void OnMarkingOrganImplanted(Entity ent, ref Surg { if(ent.Comp.Markings.Count > 0) { - var addedMarkings = new List(); + var addedMarkings = new List>(); foreach(var marking in ent.Comp.Markings) { - _humanoidAppearanceSystem.AddMarking(args.Body, marking.Key.ID, marking.Value.markingColors, marking.Value.isGlowing, forced: true); + _humanoidAppearanceSystem.AddMarking(args.Body, marking.Key, marking.Value.markingColors, marking.Value.isGlowing, forced: true); addedMarkings.Add(marking.Key); } foreach(var key in addedMarkings) @@ -202,7 +203,7 @@ private void OnMarkingOrganExtracted(Entity ent, ref Surg continue; if (!resolvedLayers.Contains(prototype.BodyPart)) continue; - ent.Comp.Markings.Add(prototype, (marking.IsGlowing, marking.MarkingColors)); + ent.Comp.Markings.TryAdd(prototype, (marking.IsGlowing, marking.MarkingColors)); removedMarkings.Add(prototype.ID); } foreach(var key in removedMarkings) @@ -272,7 +273,7 @@ private void OnDamageModifierOrganImplanted(Entity if (!TryComp(args.Body, out DamageableComponent? damage)) return; - _damageableSystem.AddAdditiveModifierSet(ent, (args.Body, damage), ent.Comp.Modifiers); + _damageableSystem.AddAdditiveModifierSet((args.Body, damage), ent, ent.Comp.Modifiers); UpdateEntity(args.Body, ent.Comp); } @@ -282,7 +283,7 @@ private void OnDamageModifierOrganExtracted(Entity if (!TryComp(args.Body, out DamageableComponent? damage)) return; - _damageableSystem.RemoveAdditiveModifierSet(ent, (args.Body, damage), ent.Comp.Modifiers); + _damageableSystem.RemoveAdditiveModifierSet((args.Body, damage), ent, ent.Comp.Modifiers); UpdateEntity(args.Body, ent.Comp); } @@ -325,14 +326,9 @@ private void OnShellImplanted(Entity ent, ref SurgeryOrganI if(!_body.GetBodyOrgans(args.Body).Where(o => TryComp(o.Id, out OrganShellComponent? _)).Any()) return; - foreach (var comp in ( shell.NoShellComponents ?? []).Values) - { - if (EntityManager.HasComponent(args.Body, comp.Component.GetType())) - { - EntityManager.RemoveComponent(args.Body, EntityManager.GetComponent(args.Body, comp.Component.GetType())); - UpdateEntity(args.Body, comp.Component, ent.Owner); - } - } + if(shell.NoShellComponents != null) + EntityManager.RemoveComponents(args.Body, shell.NoShellComponents); + _actionsSystem.AddAction(args.Body, ref shell.GenerateShellPieceActionEntity, shell.GenerateShellPieceAction); } @@ -344,14 +340,9 @@ private void OnShellExtracted(Entity ent, ref SurgeryOrganE if(_body.GetBodyOrgans(args.Body).Where(o => TryComp(o.Id, out OrganShellComponent? _)).Any()) return; - foreach (var comp in ( shell.NoShellComponents ?? []).Values) - { - if (!EntityManager.HasComponent(args.Body, comp.Component.GetType())) - { - EntityManager.AddComponent(args.Body, comp.Component); - UpdateEntity(args.Body, comp.Component, ent.Owner); - } - } + if(shell.NoShellComponents != null) + EntityManager.AddComponents(args.Body, shell.NoShellComponents, removeExisting: false); + _actionsSystem.RemoveAction(args.Body, shell.GenerateShellPieceActionEntity); } diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index cd5a4ea703bc..8171112b68b6 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; @@ -19,6 +20,7 @@ namespace Content.Shared.Damage.Components; [RegisterComponent] [NetworkedComponent] [Access(typeof(DamageableSystem), Other = AccessPermissions.ReadExecute)] +[SuppressMessage("ReSharper", "RedundantLinebreak")] public sealed partial class DamageableComponent : Component { /// @@ -91,9 +93,17 @@ public sealed partial class DamageableComponent : Component public FixedPoint2? HealthBarThreshold; #region Starlight + + /// + /// Additive changes to damage coefficients. See also: + /// [DataField] public Dictionary<(EntityUid Source, string ModifierKey), float> AdditiveCoefficients = []; + + /// + /// Additive changes to damage modifiers. See also: + /// [DataField] public Dictionary<(EntityUid Source, string ModifierKey), float> AdditiveModifiers = []; #endregion Starlight diff --git a/Content.Shared/Damage/Systems/DamageableSystem.API.cs b/Content.Shared/Damage/Systems/DamageableSystem.API.cs index 427efa875e9b..571909e32f12 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.API.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.API.cs @@ -163,17 +163,17 @@ public DamageSpecifier ChangeDamage( computedModifiers.FlatReduction.Add(modifier.Key, modifierSet.FlatReduction[modifier.Key]); } - foreach(var additiveCoefficent in ent.Comp.AdditiveCoefficients) - if(computedModifiers.Coefficients.ContainsKey(additiveCoefficent.Key.ModifierKey)) - computedModifiers.Coefficients[additiveCoefficent.Key.ModifierKey] += additiveCoefficent.Value; + foreach(var additiveCoefficient in ent.Comp.AdditiveCoefficients) + if(computedModifiers.Coefficients.ContainsKey(additiveCoefficient.Key.ModifierKey)) + computedModifiers.Coefficients[additiveCoefficient.Key.ModifierKey] += additiveCoefficient.Value; else - computedModifiers.Coefficients.Add( additiveCoefficent.Key.ModifierKey, 1.0f + additiveCoefficent.Value); + computedModifiers.Coefficients.Add( additiveCoefficient.Key.ModifierKey, 1.0f + additiveCoefficient.Value); foreach(var additiveModifier in ent.Comp.AdditiveModifiers) - if(computedModifiers.Coefficients.ContainsKey(additiveModifier.Key.ModifierKey)) - computedModifiers.Coefficients[additiveModifier.Key.ModifierKey] += additiveModifier.Value; + if(computedModifiers.FlatReduction.ContainsKey(additiveModifier.Key.ModifierKey)) + computedModifiers.FlatReduction[additiveModifier.Key.ModifierKey] += additiveModifier.Value; else - computedModifiers.Coefficients.Add( additiveModifier.Key.ModifierKey, 0.0f + additiveModifier.Value); + computedModifiers.FlatReduction.Add( additiveModifier.Key.ModifierKey, 0.0f + additiveModifier.Value); damage = DamageSpecifier.ApplyModifierSet(damage, computedModifiers); //Starlight End @@ -502,13 +502,13 @@ public void SetDamageContainerID(Entity ent, ProtoId /// Adds to the additive damage modifiers of the DamageableComponent /// - public void AddAdditiveModifierSet(EntityUid source, Entity ent, DamageModifierSet mods) + public void AddAdditiveModifierSet(Entity ent, EntityUid source, DamageModifierSet mods) { if(!Resolve(ent, ref ent.Comp)) return; - foreach (var coefficent in mods.Coefficients) - ent.Comp.AdditiveCoefficients.TryAdd((source, coefficent.Key), coefficent.Value); + foreach (var coefficient in mods.Coefficients) + ent.Comp.AdditiveCoefficients.TryAdd((source, coefficient.Key), coefficient.Value); foreach (var modifier in mods.FlatReduction) ent.Comp.AdditiveModifiers.TryAdd((source, modifier.Key), modifier.Value); @@ -517,13 +517,13 @@ public void AddAdditiveModifierSet(EntityUid source, Entity /// Subtracts from the additive damage modifiers of the DamageableComponent /// - public void RemoveAdditiveModifierSet(EntityUid source, Entity ent, DamageModifierSet mods) + public void RemoveAdditiveModifierSet(Entity ent, EntityUid source, DamageModifierSet mods) { if(!Resolve(ent, ref ent.Comp)) return; - foreach (var coefficent in mods.Coefficients) - ent.Comp.AdditiveCoefficients.Remove((source, coefficent.Key)); + foreach (var coefficient in mods.Coefficients) + ent.Comp.AdditiveCoefficients.Remove((source, coefficient.Key)); foreach (var modifier in mods.FlatReduction) ent.Comp.AdditiveModifiers.Remove((source, modifier.Key)); diff --git a/Content.Shared/Magic/SharedMagicSystem.cs b/Content.Shared/Magic/SharedMagicSystem.cs index 5288a03f911e..ef64d27c64ea 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -604,16 +604,20 @@ private void OnSpawnItemInHand(SpawnItemInHandEvent ev) var user = ev.Performer; // try to put item in hand, otherwise it goes on the ground - var star = Spawn(ev.Spawned, Transform(user).Coordinates); - if (IsClientSide(star)) - Del(star);//event has a tendency to produce client-sided cheese... this cleans those up... - else - _hands.TryPickupAnyHand(user, star); + var spawnedEntity = PredictedSpawnAtPosition(ev.Spawned, Transform(user).Coordinates); - if(ev.SelfDamage != null) //For dolls - _damageable.ChangeDamage(user, ev.SelfDamage, true); + var afterEvent = new AfterSpawnItemInHandEvent { Entity = spawnedEntity, Performer = user }; + RaiseLocalEvent(ev.Action, afterEvent); - ev.Handled = true; + var result = _hands.TryPickupAnyHand(user, spawnedEntity); + if(!result && ev.RequiresFreeHand) + Del(spawnedEntity); // abort! + else + { + if(ev.SelfDamage != null) //For dolls + _damageable.ChangeDamage(user, ev.SelfDamage, true); + ev.Handled = true; + } } private void OnTowerOfBabel(TowerOfBabelEvent ev) diff --git a/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs b/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs index 30a00f753319..c1a289bd3647 100644 --- a/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs +++ b/Content.Shared/_Starlight/Medical/Surgery/Components/_Organs.cs @@ -103,11 +103,11 @@ public sealed partial class MarkingOrganComponent : Component public List> AppliedMarkings = []; [DataField] - public Dictionary markingColors)> Markings = []; - + public Dictionary, (bool isGlowing, IReadOnlyList markingColors)> Markings = []; + [DataField] public bool StoreMarkings = false; - + [DataField] public bool IsGlowing = false; } diff --git a/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs b/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs index 9ae55971bc02..d1396b839fc4 100644 --- a/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs +++ b/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs @@ -141,7 +141,7 @@ private void TryEnter(EntityUid uid, EntityUid user, VentCrawlerComponent crawle return; } - var args = new DoAfterArgs(EntityManager, user, crawler.EnterDelay, new EnterVentDoAfterEvent(), user, uid, user) + var args = new DoAfterArgs(EntityManager, user, crawler.EnterDelay, new EnterVentDoAfterEvent(), user, user, user) { BreakOnMove = true, BreakOnDamage = true diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index d69e66a9d58e..2fdd11dfeff0 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -43,22 +43,6 @@ -# Starlight - exploiting the survival kit loadout group to add the cantrip spellbook -- type: loadoutEffectGroup - id: ElfOxygenBreather - effects: - - !type:SpeciesLoadoutEffect - species: - - Elf - -# Starlight - Dolls get blood in their kits -- type: loadoutEffectGroup - id: HaemovoreOxygenBreather - effects: - - !type:SpeciesLoadoutEffect - species: - - Doll - - type: loadoutEffectGroup id: EffectSpeciesVox effects: @@ -84,38 +68,6 @@ storage: back: - BoxSurvivalNitrogen - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygen - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxSurvival - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalBlood - -# NonBreathers, ie. Shadekin 🌟Starlight🌟 -- type: loadout - id: EmergencyNonBreather - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxSurvivalNonBreather - # Clown - type: loadout id: EmergencyOxygenClown @@ -135,36 +87,6 @@ back: - BoxHugNitrogen -- type: loadout #🌟Starlight🌟 - id: EmergencyNonBreatherClown - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxHugNonBreather - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenClown - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxHugNonBreather - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenClownBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalClownBlood - # Mime - type: loadoutEffectGroup id: OxygenBreatherMime @@ -211,36 +133,6 @@ back: - BoxMimeMoth -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenMime - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxMime - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenMimeBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalMimeBlood - -- type: loadout #🌟Starlight🌟 - id: EmergencyNonBreatherMime - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxMimeNonBreather - # Engineering / Extended - type: loadout id: EmergencyOxygenExtended @@ -260,36 +152,6 @@ back: - BoxSurvivalEngineeringNitrogen -- type: loadout #🌟Starlight🌟 - id: EmergencyNonBreatherExtended - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxSurvivalEngineeringNonBreather - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenExtended - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxSurvivalEngineering - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenExtendedBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalEngineeringBlood - # Medical - type: loadout id: EmergencyOxygenMedical @@ -309,36 +171,6 @@ back: - BoxSurvivalMedicalNitrogen -- type: loadout #🌟Starlight🌟 - id: EmergencyNonBreatherMedical - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxSurvivalMedicalNonBreather - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenMedical - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxSurvivalMedical - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenMedicalBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalMedicalBlood - # Security - type: loadout id: EmergencyOxygenSecurity @@ -358,36 +190,6 @@ back: - BoxSurvivalSecurityNitrogen -- type: loadout #🌟Starlight🌟 - id: EmergencyNonbreatherSecurity - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxSurvivalSecurityNonBreather - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenSecurity - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxSurvivalSecurity - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenSecurityBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalSecurityBlood - # Syndicate - type: loadout id: EmergencyOxygenSyndicate @@ -407,36 +209,6 @@ back: - BoxSurvivalSyndicateNitrogen -- type: loadout #🌟Starlight🌟 - id: EmergencyNonBreatherSyndicate - effects: - - !type:GroupLoadoutEffect - proto: NonBreather - storage: - back: - - BoxSurvivalNonBreatherSyndicate - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenSyndicate - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxSurvivalSyndicate - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenSyndicateBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalSyndicateBlood - # Military / Double Extended - type: loadout id: EmergencyOxygenMilitaryDouble @@ -460,29 +232,6 @@ back: - BoxSurvivalMilitaryDoubleNitrogen -# Starlight: there should be a EmergencyNonBreatherMilitaryDouble here, but the Syndicate version was here instead - -# Starlight: Elves also get cantrip spellbooks -- type: loadout - id: EmergencyElfOxygenMilitaryDouble - effects: - - !type:GroupLoadoutEffect - proto: ElfOxygenBreather - storage: - back: - - BoxSurvivalMilitaryDouble - - BookOfCantrips - -# Starlight: Dolls get blood in their survival kits -- type: loadout - id: EmergencyOxygenMilitaryDoubleBlood - effects: - - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather - storage: - back: - - BoxSurvivalMilitaryDoubleBlood - # Pre-equipped species gear # Full tank for vox as part of any Survival loadout diff --git a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml index 00a184901d92..79d57487a519 100644 --- a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml @@ -14,6 +14,13 @@ - Dwarf - NeoDwarf +- type: loadoutEffectGroup + id: OxygenBreatherHaemovore + effects: + - !type:SpeciesLoadoutEffect + species: + - Doll + - type: loadoutEffectGroup id: EffectsSpeciesRodentia effects: @@ -56,6 +63,15 @@ back: - BoxSurvivalDwarf +- type: loadout + id: EmergencyOxygenBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalBlood + - type: loadout id: EmergencyNonBreather effects: @@ -81,7 +97,7 @@ proto: ElfOxygenBreather storage: back: - - BoxHugNonBreather + - BoxSurvival - BookOfCantrips @@ -94,6 +110,15 @@ back: - BoxHugDwarf +- type: loadout + id: EmergencyOxygenClownBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalClownBlood + - type: loadout id: EmergencyElfOxygenMime effects: @@ -113,6 +138,15 @@ back: - BoxMimeDwarf +- type: loadout + id: EmergencyOxygenMimeBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalMimeBlood + - type: loadout id: EmergencyNonBreatherMime effects: @@ -150,6 +184,15 @@ back: - BoxSurvivalEngineeringDwarf +- type: loadout + id: EmergencyOxygenExtendedBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalEngineeringBlood + - type: loadout id: EmergencyNonBreatherMedical effects: @@ -178,6 +221,15 @@ back: - BoxSurvivalMedicalDwarf +- type: loadout + id: EmergencyOxygenMedicalBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalMedicalBlood + - type: loadoutEffectGroup id: ElfOxygenBreather effects: @@ -214,6 +266,15 @@ back: - BoxSurvivalSecurityDwarf +- type: loadout + id: EmergencyOxygenSecurityBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalSecurityBlood + - type: loadout id: EmergencyNonBreatherSyndicate effects: @@ -242,6 +303,15 @@ back: - BoxSurvivalSyndicate # no dwarf version; doesn't include a drink +- type: loadout + id: EmergencyOxygenSyndicateBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalSyndicateBlood + - type: loadout id: EmergencyElfOxygenMilitaryDouble effects: @@ -261,6 +331,15 @@ back: - BoxSurvivalMilitaryDouble # no dwarf version; doesn't include a drink +- type: loadout + id: EmergencyOxygenMilitaryDoubleBlood + effects: + - !type:GroupLoadoutEffect + proto: HaemovoreOxygenBreather + storage: + back: + - BoxSurvivalMilitaryDoubleBlood + # Rodentia Cheese Loadouts - type: loadout id: EmergencyCheese # Default Rodentia box diff --git a/Resources/Prototypes/_Starlight/Surgery/surgeries.yml b/Resources/Prototypes/_Starlight/Surgery/surgeries.yml index 723ce35fb509..e539dec3727a 100644 --- a/Resources/Prototypes/_Starlight/Surgery/surgeries.yml +++ b/Resources/Prototypes/_Starlight/Surgery/surgeries.yml @@ -84,12 +84,12 @@ - type: entity parent: SurgeryCloseIncision - id: SurgeryCloseIncisionDollLimb + id: SurgeryCloseIncisionLimb name: Close Incision components: - type: Surgery requirement: - - SurgeryOpenIncisionDoll + - SurgeryOpenIncision priority: 100 steps: - SurgeryStepRejoinBloodVessels From 36b60dc0e722e91320a02a864e53e491cf8dbe62 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 17:39:44 +0200 Subject: [PATCH 22/36] Undid unrelated change --- .../Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml index 79d57487a519..5b235475f2fa 100644 --- a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml @@ -51,7 +51,7 @@ proto: ElfOxygenBreather storage: back: - - BoxSurvival + - BoxSurvivalNonBreather - BookOfCantrips - type: loadout From 2cbedb39155f88341e379a3a302425b9f9ce8ff9 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 17:39:57 +0200 Subject: [PATCH 23/36] Un-jank vent crawling hopefully? --- .../VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs b/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs index d1396b839fc4..9ae55971bc02 100644 --- a/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs +++ b/Content.Shared/_Starlight/VentCrawl/EntitySystems/SharedVentCrawlSystem.Tube.cs @@ -141,7 +141,7 @@ private void TryEnter(EntityUid uid, EntityUid user, VentCrawlerComponent crawle return; } - var args = new DoAfterArgs(EntityManager, user, crawler.EnterDelay, new EnterVentDoAfterEvent(), user, user, user) + var args = new DoAfterArgs(EntityManager, user, crawler.EnterDelay, new EnterVentDoAfterEvent(), user, uid, user) { BreakOnMove = true, BreakOnDamage = true From c852cf2bff1570e2cc4faf9ace8d2391188a1dab Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 18:02:47 +0200 Subject: [PATCH 24/36] More readonlyn't --- .../_Starlight/Actions/EntitySystems/ShellSystem.cs | 2 +- .../Actions/EntitySystems/SurgeryActionSystem.cs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs index ca6794e64c94..fec37564f364 100644 --- a/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs +++ b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs @@ -5,7 +5,7 @@ namespace Content.Server._Starlight.Actions.EntitySystems; public sealed class ShellSystem : EntitySystem { - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private SharedActionsSystem _actionsSystem = default!; public override void Initialize() { diff --git a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs index f05108a324eb..7083c1b3b7da 100644 --- a/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs +++ b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs @@ -13,11 +13,11 @@ namespace Content.Shared._Starlight.Actions.EntitySystems; public sealed class SurgeryActionSystem : EntitySystem { - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly SharedBodySystem _body = default!; - [Dependency] private readonly IPrototypeManager _protoManager = default!; - [Dependency] private readonly IEntityManager _entityManager = default!; - [Dependency] private readonly SharedSurgerySystem _surgery = default!; + [Dependency] private SharedDoAfterSystem _doAfter = default!; + [Dependency] private SharedBodySystem _body = default!; + [Dependency] private IPrototypeManager _protoManager = default!; + [Dependency] private IEntityManager _entityManager = default!; + [Dependency] private SharedSurgerySystem _surgery = default!; public override void Initialize() { base.Initialize(); From 2e5f3de2e2400d660069545e1e599f0fab9e5ebd Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 18:34:21 +0200 Subject: [PATCH 25/36] Whitespace cleanup --- Resources/Prototypes/_Starlight/Body/Parts/doll.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Starlight/Body/Parts/doll.yml b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml index 738626d2db75..70849bba11be 100644 --- a/Resources/Prototypes/_Starlight/Body/Parts/doll.yml +++ b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml @@ -115,7 +115,7 @@ - type: Icon sprite: _Starlight/Mobs/Species/Doll/parts.rsi state: "l_leg" - + - type: entity id: RightLegDoll name: "right doll leg" From 9d7c2c4549ad5f11acd7881723572540a628ec8a Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 18:48:03 +0200 Subject: [PATCH 26/36] Removed resharper suppress APPARENTLY THAT IS NOT JUST A DAMN IDE SETTING --- Content.Shared/Damage/Components/DamageableComponent.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index 8171112b68b6..489531f0dc8c 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -20,7 +20,6 @@ namespace Content.Shared.Damage.Components; [RegisterComponent] [NetworkedComponent] [Access(typeof(DamageableSystem), Other = AccessPermissions.ReadExecute)] -[SuppressMessage("ReSharper", "RedundantLinebreak")] public sealed partial class DamageableComponent : Component { /// From 51e2aaa3dbfeb2c2f73a6f2112f42d607223a675 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 18:48:03 +0200 Subject: [PATCH 27/36] Removed resharper suppress APPARENTLY THAT IS NOT JUST A DAMN IDE SETTING --- Content.Shared/Damage/Components/DamageableComponent.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index 8171112b68b6..2977b9f46648 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using Content.Shared.Damage.Prototypes; using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; @@ -20,7 +19,6 @@ namespace Content.Shared.Damage.Components; [RegisterComponent] [NetworkedComponent] [Access(typeof(DamageableSystem), Other = AccessPermissions.ReadExecute)] -[SuppressMessage("ReSharper", "RedundantLinebreak")] public sealed partial class DamageableComponent : Component { /// From b2072a0310ee56b030ce98c06ded2548b9a15708 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Fri, 28 Aug 2026 19:21:53 +0200 Subject: [PATCH 28/36] fixed loadout ID mismatch --- .../Loadouts/Miscellaneous/survival.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml index 5b235475f2fa..53c8c3d647a4 100644 --- a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml @@ -67,7 +67,7 @@ id: EmergencyOxygenBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalBlood @@ -114,7 +114,7 @@ id: EmergencyOxygenClownBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalClownBlood @@ -142,7 +142,7 @@ id: EmergencyOxygenMimeBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalMimeBlood @@ -188,7 +188,7 @@ id: EmergencyOxygenExtendedBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalEngineeringBlood @@ -225,7 +225,7 @@ id: EmergencyOxygenMedicalBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalMedicalBlood @@ -270,7 +270,7 @@ id: EmergencyOxygenSecurityBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalSecurityBlood @@ -307,7 +307,7 @@ id: EmergencyOxygenSyndicateBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalSyndicateBlood @@ -335,7 +335,7 @@ id: EmergencyOxygenMilitaryDoubleBlood effects: - !type:GroupLoadoutEffect - proto: HaemovoreOxygenBreather + proto: OxygenBreatherHaemovore storage: back: - BoxSurvivalMilitaryDoubleBlood From 7f53ff1c41076f6ec666ce7f750aedfedf95aeb5 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sat, 29 Aug 2026 23:17:29 +0200 Subject: [PATCH 29/36] Fixed mismatched variable name --- .../Damage/Systems/DamageableSystem.API.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Content.Shared/Damage/Systems/DamageableSystem.API.cs b/Content.Shared/Damage/Systems/DamageableSystem.API.cs index 94aa33ae4417..1f650fcb7770 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.API.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.API.cs @@ -158,8 +158,8 @@ public DamageSpecifier ChangeDamage( foreach (var coefficient in modifierSet.Coefficients) computedModifiers.Coefficients.Add(coefficient.Key, modifierSet.Coefficients[coefficient.Key]); - foreach (var modifier in modifierSet.FlatReduction) - computedModifiers.FlatReduction.Add(modifier.Key, modifierSet.FlatReduction[modifier.Key]); + foreach (var modifier in modifierSet.FlatReductions) + computedModifiers.FlatReductions.Add(modifier.Key, modifierSet.FlatReductions[modifier.Key]); } foreach(var additiveCoefficient in ent.Comp.AdditiveCoefficients) @@ -169,10 +169,10 @@ public DamageSpecifier ChangeDamage( computedModifiers.Coefficients.Add( additiveCoefficient.Key.ModifierKey, 1.0f + additiveCoefficient.Value); foreach(var additiveModifier in ent.Comp.AdditiveModifiers) - if(computedModifiers.FlatReduction.ContainsKey(additiveModifier.Key.ModifierKey)) - computedModifiers.FlatReduction[additiveModifier.Key.ModifierKey] += additiveModifier.Value; + if(computedModifiers.FlatReductions.ContainsKey(additiveModifier.Key.ModifierKey)) + computedModifiers.FlatReductions[additiveModifier.Key.ModifierKey] += additiveModifier.Value; else - computedModifiers.FlatReduction.Add( additiveModifier.Key.ModifierKey, 0.0f + additiveModifier.Value); + computedModifiers.FlatReductions.Add( additiveModifier.Key.ModifierKey, 0.0f + additiveModifier.Value); damage = DamageSpecifier.ApplyModifierSet(damage, computedModifiers, armorPenetration, canHeal); //Starlight End @@ -508,7 +508,7 @@ public void AddAdditiveModifierSet(Entity ent, EntityUid s foreach (var coefficient in mods.Coefficients) ent.Comp.AdditiveCoefficients.TryAdd((source, coefficient.Key), coefficient.Value); - foreach (var modifier in mods.FlatReduction) + foreach (var modifier in mods.FlatReductions) ent.Comp.AdditiveModifiers.TryAdd((source, modifier.Key), modifier.Value); } @@ -523,7 +523,7 @@ public void RemoveAdditiveModifierSet(Entity ent, EntityUi foreach (var coefficient in mods.Coefficients) ent.Comp.AdditiveCoefficients.Remove((source, coefficient.Key)); - foreach (var modifier in mods.FlatReduction) + foreach (var modifier in mods.FlatReductions) ent.Comp.AdditiveModifiers.Remove((source, modifier.Key)); } From ddc6608f5987b3fc2690f35507b9c6d84ddc30f0 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 30 Aug 2026 13:38:34 +0200 Subject: [PATCH 30/36] Could have sworn we had more names --- Resources/Prototypes/_Starlight/Datasets/Names/doll.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml index 4df777afcc01..a481c3a80ebc 100644 --- a/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml +++ b/Resources/Prototypes/_Starlight/Datasets/Names/doll.yml @@ -2,7 +2,7 @@ id: NamesFirstDollMale values: prefix: names-first-doll-male-dataset- - count: 56 + count: 43 - type: localizedDataset id: NamesFirstDollFemale From 3780d88d227320d1041ebc39ec018ed6e58d84fc Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 30 Aug 2026 14:25:53 +0200 Subject: [PATCH 31/36] Proto fixes --- Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml | 2 +- Resources/Prototypes/_Starlight/Body/Parts/doll.yml | 6 +++--- .../_Starlight/Loadouts/Miscellaneous/survival.yml | 4 ++-- Resources/Prototypes/_Starlight/Species/doll.yml | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index 075d95b97784..b9cef58846bd 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -928,7 +928,7 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: true metabolisms: # SL Dolls - Drink: + Digestion: effects: #Starlight Start - !type:HealthChange diff --git a/Resources/Prototypes/_Starlight/Body/Parts/doll.yml b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml index 70849bba11be..b79b9265dcc7 100644 --- a/Resources/Prototypes/_Starlight/Body/Parts/doll.yml +++ b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml @@ -7,7 +7,7 @@ - type: Extractable juiceSolution: reagents: - - ReagentId: UncookedAnimalProtein + - ReagentId: UncookedAnimalProteins Quantity: 10 - ReagentId: Fat Quantity: 10 @@ -28,7 +28,7 @@ - type: Extractable juiceSolution: reagents: - - ReagentId: UncookedAnimalProtein + - ReagentId: UncookedAnimalProteins Quantity: 20 - ReagentId: Fat Quantity: 20 @@ -49,7 +49,7 @@ - type: Extractable juiceSolution: reagents: - - ReagentId: UncookedAnimalProtein + - ReagentId: UncookedAnimalProteins Quantity: 10 - ReagentId: Fat Quantity: 10 diff --git a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml index 53c8c3d647a4..c33106e44837 100644 --- a/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml @@ -117,7 +117,7 @@ proto: OxygenBreatherHaemovore storage: back: - - BoxSurvivalClownBlood + - BoxHugBlood - type: loadout id: EmergencyElfOxygenMime @@ -145,7 +145,7 @@ proto: OxygenBreatherHaemovore storage: back: - - BoxSurvivalMimeBlood + - BoxHugBlood - type: loadout id: EmergencyNonBreatherMime diff --git a/Resources/Prototypes/_Starlight/Species/doll.yml b/Resources/Prototypes/_Starlight/Species/doll.yml index aec330cbac23..7c077bcb9a00 100644 --- a/Resources/Prototypes/_Starlight/Species/doll.yml +++ b/Resources/Prototypes/_Starlight/Species/doll.yml @@ -91,7 +91,7 @@ id: MobDollHead baseSprite: sprite: _Starlight/Mobs/Species/Doll/parts.rsi - state: head_f + state: head - type: humanoidBaseSprite id: MobDollHeadMale From 4d32932b49801625d4762a2463ad958fc8a8632f Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 30 Aug 2026 15:50:57 +0200 Subject: [PATCH 32/36] Fixed misnumbered doll name --- Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl index aa21eb36d82a..6efa85d723e0 100644 --- a/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -126,7 +126,7 @@ names-last-doll-dataset-24 = Middleton names-last-doll-dataset-25 = Northolt names-last-doll-dataset-26 = Raleigh names-last-doll-dataset-27 = Shaw -names-last-doll-dataset-38 = Sims +names-last-doll-dataset-28 = Sims names-last-doll-dataset-29 = Spinster names-last-doll-dataset-30 = Villiers names-last-doll-dataset-31 = Walker From b1c82aa9f1129044254180b51d17c621c2a7d8b1 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 30 Aug 2026 16:23:46 +0200 Subject: [PATCH 33/36] yml fixes --- Resources/Prototypes/_Starlight/Body/Organs/doll.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml index c3cf92095ad9..e3413a08866c 100644 --- a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml +++ b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml @@ -209,14 +209,8 @@ - state: lung-r - type: Lung - type: Metabolizer - removeEmpty: true - solutionOnBody: false - solution: "Lung" metabolizerTypes: [ Human ] stages: [ Respiration ] - groups: - - id: Gas - rateModifier: 100.0 - type: SolutionContainerManager solutions: organ: @@ -321,7 +315,6 @@ - type: Metabolizer maxReagents: 5 metabolizerTypes: [ Human ] - removeEmpty: true - type: entity id: ShellFragmentDoll @@ -353,7 +346,7 @@ damageContainer: Biological - type: MarkingOrgan storeMarkings: true - AppliedMarkings: + appliedMarkings: - DollShellHeadFemale - DollShellChestFemale - DollShellLArm From 8a73931dd09c3bc694d6b0642b335471d0273779 Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Sun, 30 Aug 2026 20:02:03 +0200 Subject: [PATCH 34/36] More yml fixes, hopefully last --- Resources/Prototypes/_Starlight/Body/Organs/doll.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml index e3413a08866c..c49b500bddcf 100644 --- a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml +++ b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml @@ -241,10 +241,6 @@ maxReagents: 2 metabolizerTypes: [ Doll, Human ] stages: [ Bloodstream ] - groups: - - id: Medicine - - id: Poison - - id: Narcotic - type: Item size: Small heldPrefix: heart @@ -282,9 +278,6 @@ maxReagents: 3 metabolizerTypes: [ Doll ] stages: [ Digestion ] - groups: - - id: Food - - id: Drink - type: entity id: OrganDollLiver @@ -298,8 +291,6 @@ maxReagents: 1 metabolizerTypes: [ Doll, Human ] stages: [ Metabolites ] - groups: - - id: Alcohol - type: entity id: OrganDollKidneys From 203809d07806947ed9665013ff757077358ecbbf Mon Sep 17 00:00:00 2001 From: Citrea_Lingua Date: Wed, 2 Sep 2026 12:27:37 +0200 Subject: [PATCH 35/36] Meat anomaly cores can now be cooked into empty dolls --- .../_Starlight/Body/Prototypes/doll.yml | 74 ++++++++++++ .../_Starlight/Entities/Mobs/Player/doll.yml | 7 +- .../_Starlight/Entities/Mobs/Species/doll.yml | 113 ++++++++++++++++++ .../Recipes/Cooking/anomalous_recipes.yml | 25 ++++ 4 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/_Starlight/Recipes/Cooking/anomalous_recipes.yml diff --git a/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml b/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml index 00cbe03c8671..c5cea79007be 100644 --- a/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml +++ b/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml @@ -71,3 +71,77 @@ part: LeftFootDoll organs: shell: ShellFragmentDoll + +- type: body + id: DollFresh + name: "doll" + root: torso + slots: + head: + part: HeadDoll + connections: + - torso + organs: + brain: null + eyes: OrganDollEyes + tongue: OrganDollTongue + eye_implant: null + brain_implant: null + shell: null + torso: + part: TorsoDoll + connections: + - right arm + - left arm + - right leg + - left leg + organs: + heart: OrganDollHeart + lungs: OrganDollLungs + stomach: OrganDollStomach + liver: OrganDollLiver + kidneys: OrganDollKidneys + cavity: null + shell: null + right arm: + part: RightArmDoll + connections: + - right hand + organs: + shell: null + left arm: + part: LeftArmDoll + connections: + - left hand + organs: + shell: null + right hand: + part: RightHandDoll + organs: + hand_implant: null + shell: null + left hand: + part: LeftHandDoll + organs: + hand_implant: null + shell: null + right leg: + part: RightLegDoll + connections: + - right foot + organs: + shell: null + left leg: + part: LeftLegDoll + connections: + - left foot + organs: + shell: null + right foot: + part: RightFootDoll + organs: + shell: null + left foot: + part: LeftFootDoll + organs: + shell: null diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml index d81fe9917086..bfee57c313d4 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml @@ -2,4 +2,9 @@ save: false name: Urist McHaunted parent: BaseMobDoll - id: MobDoll \ No newline at end of file + id: MobDoll + +- type: entity + name: ?!°#^*& + parent: BaseMobDollFresh + id: MobDollFresh diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml index 90205e15aedf..cbae255a262e 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml @@ -50,6 +50,119 @@ - type: Shell generateShellPieceAction: ActionGenerateShellPiece +- type: entity + parent: BaseMobSpeciesOrganic + id: BaseMobDollFresh + description: Where did that shell come from? It is all soft and spongy... + abstract: true + components: + - type: LanguageKnowledge + speaks: + - GalacticCommon + - Darktongue + understands: + - GalacticCommon + - Darktongue + - type: Absorbable + - type: Hunger + - type: Icon + sprite: _Starlight/Mobs/Species/Doll/parts.rsi + state: doll + - type: Thirst + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeatAnomaly # Actual anomaly meat, since players probably won't be butchered too often. Yes, that does mean Dolls do not have "people" meat. + amount: 5 + - id: SheetPlasteel1 + amount: 5 + - type: HumanoidAppearance + species: Doll + hideLayersOnEquip: + - Hair + - Snout + allowProfileOverride: false + customSpecieName: "Creature of Flesh" + sex: Unsexed + eyeColor: '#FF0000' + skinColor: '#FFFFFF' + eyeGlowing: true + markingSet: + markings: + Arms: + - markingId: DollShellLArmSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - markingId: DollShellRArmSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - markingId: DollShellLHandSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - markingId: DollShellRHandSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + Legs: + - markingId: DollShellLLegSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - markingId: DollShellRLegSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - markingId: DollShellLFootSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - markingId: DollShellRFootSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + Head: + - markingId: DollShellHeadSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + Chest: + - markingId: DollShellChestSegmented + visible: True + isGlowing: False + markingColor: + - '#FFFFFF' + - type: Body + prototype: DollFresh + requiredLegs: 2 + - type: Damageable + damageContainer: Biological + damageModifierSet: Doll + - type: Vocal + sounds: + Male: MaleHuman + Female: FemaleHuman + Unsexed: FemaleHuman + - type: Inventory + speciesId: Doll + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: entity parent: BaseSpeciesDummy id: MobDollDummy diff --git a/Resources/Prototypes/_Starlight/Recipes/Cooking/anomalous_recipes.yml b/Resources/Prototypes/_Starlight/Recipes/Cooking/anomalous_recipes.yml new file mode 100644 index 000000000000..946bba24ad35 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Recipes/Cooking/anomalous_recipes.yml @@ -0,0 +1,25 @@ +- type: microwaveMealRecipe + id: RecipeDollEmptyInert + name: doll recipe + result: MobDollFresh + time: 30 + group: Secret + deviceType: Oven + reagents: + Blood: 1000 + solids: + FoodMeat: 8 + AnomalyCoreFleshInert: 1 + +- type: microwaveMealRecipe + id: RecipeDollEmptyActive + name: doll recipe + result: MobDollFresh + time: 30 + group: Secret + deviceType: Oven + reagents: + Blood: 100 + solids: + FoodMeat: 4 + AnomalyCoreFlesh: 1 From 0c162cb9519de442bd5454eace8ef759f3e00157 Mon Sep 17 00:00:00 2001 From: Walker Fowlkes <47339836+walksanatora@users.noreply.github.com> Date: Wed, 2 Sep 2026 22:36:01 -0700 Subject: [PATCH 36/36] Update Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml --- Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml index cbae255a262e..310eb973449d 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml @@ -17,7 +17,6 @@ state: doll - type: Thirst - type: Butcherable - butcheringType: Spike spawned: - id: FoodMeatAnomaly # Actual anomaly meat, since players probably won't be butchered too often. Yes, that does mean Dolls do not have "people" meat. amount: 5