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..fec37564f364 --- /dev/null +++ b/Content.Server/_Starlight/Actions/EntitySystems/ShellSystem.cs @@ -0,0 +1,27 @@ +using Content.Shared.Actions; +using Content.Shared._Starlight.Actions.Components; + +namespace Content.Server._Starlight.Actions.EntitySystems; + +public sealed class ShellSystem : EntitySystem +{ + [Dependency] private 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.GenerateShellPieceActionEntity, comp.GenerateShellPieceAction); + } + + private void OnCompRemove(EntityUid uid, ShellComponent comp, ComponentShutdown args) + { + _actionsSystem.RemoveAction(uid, comp.GenerateShellPieceActionEntity); + } +} diff --git a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs index 7ea4365db5c1..2aae03c78674 100644 --- a/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/OrganSystem.cs @@ -1,13 +1,18 @@ 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._Starlight.Medical.Body.Part; 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; @@ -22,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; @@ -36,7 +42,9 @@ public sealed partial class OrganSystem : EntitySystem [Dependency] private LanguageSystem _language = default!; [Dependency] private SharedContainerSystem _container = default!; [Dependency] private IGameTiming _timing = default!; - [Dependency] private SharedActionsSystem _actions = 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!; @@ -49,8 +57,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); @@ -106,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 _: @@ -147,27 +161,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, 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.TryAdd(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; - Dirty(ent); + if(!TryComp(targetPart, out BodyPartComponent? part)) + return; - if (ent.Comp.OrganAction != null) - _actions.AddAction(args.Body, ref ent.Comp.ActionEntity, ent.Comp.OrganAction, ent.Owner); + if(!ResolveBodyPartLayers(part.PartType, part.Symmetry).Contains(prototype.BodyPart)) + return; + + 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) { - // 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.AddAdditiveModifierSet((args.Body, damage), ent, ent.Comp.Modifiers); + + UpdateEntity(args.Body, ent.Comp); + } + + private void OnDamageModifierOrganExtracted(Entity ent, ref SurgeryOrganExtracted args) + { + if (!TryComp(args.Body, out DamageableComponent? damage)) + return; + + _damageableSystem.RemoveAdditiveModifierSet((args.Body, damage), ent, ent.Comp.Modifiers); + + UpdateEntity(args.Body, ent.Comp); } // @@ -200,6 +318,36 @@ 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; + + if(shell.NoShellComponents != null) + EntityManager.RemoveComponents(args.Body, shell.NoShellComponents); + + _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; + + if(shell.NoShellComponents != null) + EntityManager.AddComponents(args.Body, shell.NoShellComponents, removeExisting: false); + + _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..2977b9f46648 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -89,6 +89,22 @@ public sealed partial class DamageableComponent : Component [DataField] 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 } [Serializable, NetSerializable] diff --git a/Content.Shared/Damage/Systems/DamageableSystem.API.cs b/Content.Shared/Damage/Systems/DamageableSystem.API.cs index 3a3910783164..1f650fcb7770 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.API.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.API.cs @@ -148,11 +148,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, armorPenetration, canHeal); // starlight + { + foreach (var coefficient in modifierSet.Coefficients) + computedModifiers.Coefficients.Add(coefficient.Key, modifierSet.Coefficients[coefficient.Key]); + + foreach (var modifier in modifierSet.FlatReductions) + computedModifiers.FlatReductions.Add(modifier.Key, modifierSet.FlatReductions[modifier.Key]); + } + + 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( additiveCoefficient.Key.ModifierKey, 1.0f + additiveCoefficient.Value); + + foreach(var additiveModifier in ent.Comp.AdditiveModifiers) + if(computedModifiers.FlatReductions.ContainsKey(additiveModifier.Key.ModifierKey)) + computedModifiers.FlatReductions[additiveModifier.Key.ModifierKey] += additiveModifier.Value; + else + computedModifiers.FlatReductions.Add( additiveModifier.Key.ModifierKey, 0.0f + additiveModifier.Value); + + damage = DamageSpecifier.ApplyModifierSet(damage, computedModifiers, armorPenetration, canHeal); + //Starlight End // TODO DAMAGE // byref struct event. @@ -471,4 +494,38 @@ public void SetDamageContainerID(Entity ent, ProtoId + /// Adds to the additive damage modifiers of the DamageableComponent + /// + public void AddAdditiveModifierSet(Entity ent, EntityUid source, DamageModifierSet mods) + { + if(!Resolve(ent, ref ent.Comp)) + return; + + foreach (var coefficient in mods.Coefficients) + ent.Comp.AdditiveCoefficients.TryAdd((source, coefficient.Key), coefficient.Value); + + foreach (var modifier in mods.FlatReductions) + ent.Comp.AdditiveModifiers.TryAdd((source, modifier.Key), modifier.Value); + } + + /// + /// Subtracts from the additive damage modifiers of the DamageableComponent + /// + public void RemoveAdditiveModifierSet(Entity ent, EntityUid source, DamageModifierSet mods) + { + if(!Resolve(ent, ref ent.Comp)) + return; + + foreach (var coefficient in mods.Coefficients) + ent.Comp.AdditiveCoefficients.Remove((source, coefficient.Key)); + + foreach (var modifier in mods.FlatReductions) + 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..ef64d27c64ea 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -613,7 +613,11 @@ private void OnSpawnItemInHand(SpawnItemInHandEvent ev) 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/Actions/Components/ShellComponent.cs b/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs new file mode 100644 index 000000000000..5632221341b9 --- /dev/null +++ b/Content.Shared/_Starlight/Actions/Components/ShellComponent.cs @@ -0,0 +1,23 @@ +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 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..7083c1b3b7da --- /dev/null +++ b/Content.Shared/_Starlight/Actions/EntitySystems/SurgeryActionSystem.cs @@ -0,0 +1,65 @@ + +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; +public sealed class SurgeryActionSystem : EntitySystem +{ + [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(); + + 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); + } +} diff --git a/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs new file mode 100644 index 000000000000..41e98992e130 --- /dev/null +++ b/Content.Shared/_Starlight/Actions/Events/SurgeryActionEvent.cs @@ -0,0 +1,28 @@ +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; + +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; +} 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..c1a289bd3647 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, (bool isGlowing, IReadOnlyList 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..6efa85d723e0 --- /dev/null +++ b/Resources/Locale/en-US/_Starlight/datasets/names/doll.ftl @@ -0,0 +1,148 @@ +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-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-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-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 +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-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 +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-28 = 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 +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/Locale/en-US/_Starlight/markings/doll.ftl b/Resources/Locale/en-US/_Starlight/markings/doll.ftl new file mode 100644 index 000000000000..ae2fc44ebfb6 --- /dev/null +++ b/Resources/Locale/en-US/_Starlight/markings/doll.ftl @@ -0,0 +1,166 @@ +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-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/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/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index 7bb845ac6d49..9316814e8cfe 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -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 c599e4c37ab8..07e952a1d9f5 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -49,6 +49,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 fc96c3d11e05..694eb025a735 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -1046,6 +1046,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 4a1f4e2eb912..186ccbb02771 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -708,6 +708,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 a0204b0e1256..4d46c314fe0f 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🌟 @@ -754,6 +755,7 @@ - EmergencyOxygenClown - EmergencyElfOxygenClown # Starlight - EmergencyDwarfOxygenClown # Starlight + - EmergencyOxygenClownBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherClown # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -824,6 +826,7 @@ - EmergencyOxygenMime - EmergencyElfOxygenMime # Starlight - EmergencyDwarfOxygenMime # Starlight + - EmergencyOxygenMimeBlood # 🌟Starlight🌟 - EmergencySpeciesMothMime - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherMime # 🌟Starlight🌟 @@ -1229,6 +1232,7 @@ - EmergencyOxygenExtended - EmergencyElfOxygenExtended # Starlight - EmergencyDwarfOxygenExtended # Starlight + - EmergencyOxygenExtendedBlood # 🌟Starlight🌟 - LoadoutSpeciesVoxNitrogen - EmergencyNonBreatherExtended # 🌟Starlight🌟 - EmergencyIPC # 🌟Starlight🌟 @@ -1628,6 +1632,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 dff53cb2a3df..ccd089ea1bbd 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..2fdd11dfeff0 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -68,7 +68,6 @@ storage: back: - BoxSurvivalNitrogen - # Clown - type: loadout id: EmergencyOxygenClown diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index ef8da3c35563..b9cef58846bd 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 + Digestion: + 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 49c54f6c3f84..05730c8ae2ee 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -689,7 +689,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 @@ -699,12 +699,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: @@ -740,7 +740,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..a6f448420ce1 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Actions/doll.yml @@ -0,0 +1,34 @@ +# Actions for Doll species + +- 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_doll.rsi + state: break_shard + 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 diff --git a/Resources/Prototypes/_Starlight/Body/Organs/doll.yml b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml new file mode 100644 index 000000000000..c49b500bddcf --- /dev/null +++ b/Resources/Prototypes/_Starlight/Body/Organs/doll.yml @@ -0,0 +1,356 @@ +- 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 + metabolizerTypes: [ Human ] + stages: [ Respiration ] + - 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: [ Doll, Human ] + stages: [ Bloodstream ] + - 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 ] + stages: [ Digestion ] + +- 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: [ Doll, Human ] + stages: [ Metabolites ] + +- 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 ] + +- 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! diff --git a/Resources/Prototypes/_Starlight/Body/Parts/doll.yml b/Resources/Prototypes/_Starlight/Body/Parts/doll.yml new file mode 100644 index 000000000000..b79b9265dcc7 --- /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: UncookedAnimalProteins + 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: UncookedAnimalProteins + 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: UncookedAnimalProteins + 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..c5cea79007be --- /dev/null +++ b/Resources/Prototypes/_Starlight/Body/Prototypes/doll.yml @@ -0,0 +1,147 @@ +- 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 + +- 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/Catalog/Fills/Boxes/emergency.yml b/Resources/Prototypes/_Starlight/Catalog/Fills/Boxes/emergency.yml index e8d088ba5c11..b69fbed0f81e 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,95 @@ 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: BoxSurvivalNonBreather id: BoxHugNonBreather @@ -60,6 +169,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 +448,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 3c1dd101c832..21384c15b8e3 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..a481c3a80ebc --- /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: 43 + +- type: localizedDataset + id: NamesFirstDollFemale + values: + prefix: names-first-doll-female-dataset- + count: 56 + +- type: localizedDataset + id: NamesLastDoll + values: + prefix: names-last-doll-dataset- + count: 47 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..9726ab06b68b --- /dev/null +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/doll.yml @@ -0,0 +1,997 @@ +# Doll Shell +- 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 + +- 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: DollShellChestDevil + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_torso + +- type: marking + id: DollShellHeadDevil + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: devil_head + +#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: DollShellChestSegmented + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: segmented_torso + +- type: marking + id: DollShellHeadSegmented + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - 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 + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + state: head_fox + +- type: marking + id: DollShellHeadMoth + bodyPart: Head + markingCategory: Head + speciesRestriction: [Doll] + coloring: + default: + type: + !type:SimpleColoring + color: "#ffffff" + sprites: + - sprite: _Starlight/Mobs/Customization/Doll/shell.rsi + 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/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml b/Resources/Prototypes/_Starlight/Entities/Mobs/Customization/Marking/generic.yml index e90844f937ef..4db9c3b18cc0 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: 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..bfee57c313d4 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Player/doll.yml @@ -0,0 +1,10 @@ +- type: entity + save: false + name: Urist McHaunted + parent: BaseMobDoll + id: MobDoll + +- type: entity + name: ?!°#^*& + parent: BaseMobDollFresh + id: MobDollFresh 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..6abfd507a669 100644 --- a/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/appearances.yml @@ -51,6 +51,18 @@ - 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 + hideLayersOnEquip: + - Hair + - Snout + - 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..310eb973449d --- /dev/null +++ b/Resources/Prototypes/_Starlight/Entities/Mobs/Species/doll.yml @@ -0,0 +1,181 @@ +- 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 + 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 + 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 + 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 b1f084f68356..11951a29b5a5 100644 --- a/Resources/Prototypes/_Starlight/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/_Starlight/Entities/Objects/Consumable/Food/snacks.yml @@ -207,6 +207,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..bf62db7c50fe 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/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/_Starlight/Loadouts/Miscellaneous/survival.yml index 00a184901d92..c33106e44837 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: @@ -44,7 +51,7 @@ proto: ElfOxygenBreather storage: back: - - BoxSurvival + - BoxSurvivalNonBreather - BookOfCantrips - type: loadout @@ -56,6 +63,15 @@ back: - BoxSurvivalDwarf +- type: loadout + id: EmergencyOxygenBlood + effects: + - !type:GroupLoadoutEffect + proto: OxygenBreatherHaemovore + 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: OxygenBreatherHaemovore + storage: + back: + - BoxHugBlood + - type: loadout id: EmergencyElfOxygenMime effects: @@ -113,6 +138,15 @@ back: - BoxMimeDwarf +- type: loadout + id: EmergencyOxygenMimeBlood + effects: + - !type:GroupLoadoutEffect + proto: OxygenBreatherHaemovore + storage: + back: + - BoxHugBlood + - type: loadout id: EmergencyNonBreatherMime effects: @@ -150,6 +184,15 @@ back: - BoxSurvivalEngineeringDwarf +- type: loadout + id: EmergencyOxygenExtendedBlood + effects: + - !type:GroupLoadoutEffect + proto: OxygenBreatherHaemovore + storage: + back: + - BoxSurvivalEngineeringBlood + - type: loadout id: EmergencyNonBreatherMedical effects: @@ -178,6 +221,15 @@ back: - BoxSurvivalMedicalDwarf +- type: loadout + id: EmergencyOxygenMedicalBlood + effects: + - !type:GroupLoadoutEffect + proto: OxygenBreatherHaemovore + storage: + back: + - BoxSurvivalMedicalBlood + - type: loadoutEffectGroup id: ElfOxygenBreather effects: @@ -214,6 +266,15 @@ back: - BoxSurvivalSecurityDwarf +- type: loadout + id: EmergencyOxygenSecurityBlood + effects: + - !type:GroupLoadoutEffect + proto: OxygenBreatherHaemovore + 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: OxygenBreatherHaemovore + 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: OxygenBreatherHaemovore + storage: + back: + - BoxSurvivalMilitaryDoubleBlood + # Rodentia Cheese Loadouts - type: loadout id: EmergencyCheese # Default Rodentia box 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/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 diff --git a/Resources/Prototypes/_Starlight/Species/doll.yml b/Resources/Prototypes/_Starlight/Species/doll.yml new file mode 100644 index 000000000000..7c077bcb9a00 --- /dev/null +++ b/Resources/Prototypes/_Starlight/Species/doll.yml @@ -0,0 +1,172 @@ +- type: species + id: Doll + name: species-name-doll + roundStart: true + prototype: MobDoll + sprites: MobDollSprites + markingLimits: MobDollMarkingLimits + dollPrototype: AppearanceDoll + 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 + 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 + +- 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..67f2899edaa3 100644 --- a/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/organs_steps.yml @@ -1354,3 +1354,40 @@ - 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: Sprite + sprite: _Starlight/Mobs/Species/Doll/organs.rsi + state: shell + +- 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..e539dec3727a 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 @@ -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..64aa0a05344f 100644 --- a/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml +++ b/Resources/Prototypes/_Starlight/Surgery/surgery_steps.yml @@ -133,12 +133,80 @@ - 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 + tools: + - type: BoneSetter + - type: SurgeryStepBleedEffect + damage: + types: + Slash: 3 + - type: SurgeryStepEmoteEffect + - type: Sprite + sprite: _Starlight/Objects/Specific/Medical/scissors.rsi + state: setter + +- type: entity + parent: SurgeryStepBase + id: SurgeryStepClampTendrils + name: Remove the tendrils + components: + - type: SurgeryStep + add: + - type: BleedersClamped + tools: + - type: Hemostat + - type: SurgeryClampBleedEffect + - type: Sprite + sprite: _Starlight/Objects/Specific/Medical/scissors.rsi + state: hemostat + - 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 a9eabe283d42..e06c1f96c61b 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..5b6d45720828 --- /dev/null +++ b/Resources/ServerInfo/_Starlight/Guidebook/Mobs/Doll.xml @@ -0,0 +1,31 @@ + + # 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. + + ## 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] + + ## The Shell + 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] + - [color=#00aa00]Takes 30% less piercing damage[/color] + - [color=#aa0000]Takes 30% more heat damage[/color] + + [bold]Without Shell[/bold] + - [color=#aa0000]Takes 30% more slashing damage[/color] + - [color=#aa0000]Takes 30% more piercing damage[/color] + 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 000000000000..df8ae3f34485 Binary files /dev/null and b/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shard.png differ 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 000000000000..a322e25a100f Binary files /dev/null and b/Resources/Textures/_Starlight/Interface/Actions/actions_doll.rsi/break_shell.png differ 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/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 000000000000..84b0ea088a5c Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_head.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_arm.png new file mode 100644 index 000000000000..28c6f932a01d Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_arm.png differ 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 000000000000..084a80ac124c Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_hand.png differ 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 000000000000..2e18bf87e55b Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_l_leg.png differ 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 000000000000..2b74c72caf18 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_arm.png differ 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 000000000000..d185da9875e3 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_hand.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_leg.png new file mode 100644 index 000000000000..15197296194f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_r_leg.png differ 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 000000000000..99b21bde4d25 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/overgrown.rsi/overgrown_torso.png differ 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 000000000000..16e5c69a0fb7 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_head.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_arm.png new file mode 100644 index 000000000000..cecd0470441e Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_arm.png differ 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 000000000000..03cee0725b9f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot.png differ 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 000000000000..49753558d4c1 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_foot_flesh.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand.png new file mode 100644 index 000000000000..3ebf70ae1baf Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand.png differ 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 000000000000..861e796bcfc4 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_hand_flesh.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg.png new file mode 100644 index 000000000000..d8aebeb9b168 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg_flesh.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg_flesh.png new file mode 100644 index 000000000000..8ee46b4e28ad Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_l_leg_flesh.png differ 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 000000000000..291b33a3d9c4 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_arm.png differ 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 000000000000..f2181e1cf25f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot.png differ 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 000000000000..c5e01f2df48d Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_foot_flesh.png differ 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 000000000000..c5a6013eb6d9 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand.png differ 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 000000000000..a8b77fca067f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_hand_flesh.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg.png new file mode 100644 index 000000000000..9bda8f154470 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg.png differ 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 000000000000..d41124870ed2 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_r_leg_flesh.png differ 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 000000000000..88aefa88c23f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/paradigm.rsi/paradigm_torso.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head.png new file mode 100644 index 000000000000..5030810f3317 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_head.png differ 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 000000000000..7d94a311d162 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_arm.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_foot.png new file mode 100644 index 000000000000..eecc857c9978 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_foot.png differ 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 000000000000..8ad5a72a9e06 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_hand.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_leg.png new file mode 100644 index 000000000000..3d7d17d05532 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_l_leg.png differ 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 000000000000..013fa3564d0f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_arm.png differ 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 000000000000..17ef76e6bf56 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_foot.png differ 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 000000000000..813b6121a801 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_hand.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_leg.png new file mode 100644 index 000000000000..31a6afb55965 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_r_leg.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso.png new file mode 100644 index 000000000000..b924c45267b7 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/devil_torso.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_crested.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_crested.png new file mode 100644 index 000000000000..f91fa68dadd2 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_crested.png differ 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 000000000000..8ac84cc9e758 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f.png differ 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 000000000000..e986aaae43bd Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_f_reverse.png differ 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 000000000000..67593bac83af Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_fox.png differ 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 000000000000..273f7beb9092 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_hawk.png differ 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 000000000000..4a87d2525334 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m_reverse.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m_reverse.png new file mode 100644 index 000000000000..a6ef6bc6c1e8 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_m_reverse.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_moth.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_moth.png new file mode 100644 index 000000000000..7b0294746412 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_moth.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_owl.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_owl.png new file mode 100644 index 000000000000..34845fe978f2 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/head_owl.png differ 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 000000000000..b5f5f11d412a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_arm.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_foot.png new file mode 100644 index 000000000000..9ae4991f309a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_foot.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_hand.png new file mode 100644 index 000000000000..fee10fc56848 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_hand.png differ 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 000000000000..55c1827a0931 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/l_leg.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/meta.json new file mode 100644 index 000000000000..39aa9a3cc6dc --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/meta.json @@ -0,0 +1,206 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "State based copyright", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "r_hand", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "l_hand", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "r_arm", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "l_arm", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "r_leg", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "l_leg", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "r_foot", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "l_foot", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "head_f", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "head_m", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "torso_f", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "torso_m", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "head_f_reverse", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "head_m_reverse", + "directions": 4, + "copyright": "https://github.com/tgstation/tgstation/blob/8024397cc81c5f47f74cf4279e35728487d0a1a7/icons/mob/human_parts_greyscale.dmi and modified by DrSmugleaf, then recoloured and slightly modified for doll parts by Citrea" + }, + { + "name": "devil_r_hand", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_l_hand", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_r_arm", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_l_arm", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_r_leg", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_l_leg", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_r_foot", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_l_foot", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_head", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "devil_torso", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_r_hand", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_l_hand", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_r_arm", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_l_arm", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_r_leg", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_l_leg", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_r_foot", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_l_foot", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_head", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "segmented_torso", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "head_fox", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "head_moth", + "directions": 4, + "copyright": "Maitake" + }, + { + "name": "head_crested", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "head_hawk", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "head_owl", + "directions": 4, + "copyright": "SevenShades" + } + ] +} diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_arm.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_arm.png new file mode 100644 index 000000000000..385930818a8c Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_arm.png differ 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 000000000000..1aa953890915 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_foot.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_hand.png new file mode 100644 index 000000000000..5a56c4a8baf5 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_hand.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_leg.png new file mode 100644 index 000000000000..e43213662707 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/r_leg.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head.png new file mode 100644 index 000000000000..6e58ad9abb08 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_head.png differ 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 000000000000..3547a0ff0ec6 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_arm.png differ 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 000000000000..f53c042dc7ef Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_foot.png differ 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 000000000000..0430e366e315 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_hand.png differ 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 000000000000..90149182890b Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_l_leg.png differ 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 000000000000..39af7a45e199 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_arm.png differ 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 000000000000..572d342da118 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_foot.png differ 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 000000000000..0f52a9c811e3 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_hand.png differ 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 000000000000..45e5940101a2 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_r_leg.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso.png new file mode 100644 index 000000000000..147585c4222d Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/segmented_torso.png differ 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 000000000000..3546464f0fa7 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_f.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_m.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_m.png new file mode 100644 index 000000000000..1efaa3bc237a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/shell.rsi/torso_m.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/meta.json b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/meta.json new file mode 100644 index 000000000000..b68023699e67 --- /dev/null +++ b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/meta.json @@ -0,0 +1,161 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "State based copyright", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "unbroken_head_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_head_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_head", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_arm_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_arm_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_arm", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_foot_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_foot_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_foot", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_hand_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_hand_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_hand", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_leg_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_leg_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_l_leg", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_arm_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_arm_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_arm", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_foot_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_foot_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_foot", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_hand_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_hand_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_hand", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_leg_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_leg_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_r_leg", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_torso_gold", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_torso_repaired", + "directions": 4, + "copyright": "SevenShades" + }, + { + "name": "unbroken_torso", + "directions": 4, + "copyright": "SevenShades" + } + ] +} diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head.png new file mode 100644 index 000000000000..b4a9b0c710e3 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head.png differ 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 000000000000..ef2975e873bd Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_gold.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_repaired.png new file mode 100644 index 000000000000..448a6e76b64b Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_head_repaired.png differ 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 000000000000..f694fa29a8ad Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm.png differ 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 000000000000..cdc47241107a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_gold.png differ 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 000000000000..c8d17bf35150 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_arm_repaired.png differ 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 000000000000..593b0faf155a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot.png differ 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 000000000000..6b2472f6bea7 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_gold.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_repaired.png new file mode 100644 index 000000000000..797a4db77afd Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_foot_repaired.png differ 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 000000000000..653474afc58d Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand.png differ 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 000000000000..93183c74e053 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_gold.png differ 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 000000000000..a425a34892b0 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_hand_repaired.png differ 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 000000000000..2817e261c5db Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_gold.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_gold.png new file mode 100644 index 000000000000..e9a2029b6bce Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_gold.png differ 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 000000000000..f33d913264b5 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_l_leg_repaired.png differ 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 000000000000..00c83d9ebad5 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm.png differ 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 000000000000..1abf1c8f0c71 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_gold.png differ 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 000000000000..5e133fd10c40 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_arm_repaired.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot.png new file mode 100644 index 000000000000..8c2824ac7251 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot.png differ 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 000000000000..976d4c92206e Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_gold.png differ 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 000000000000..e2584ae07b7f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_foot_repaired.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand.png new file mode 100644 index 000000000000..da9acce9e180 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand.png differ 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 000000000000..a27a475ded02 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_gold.png differ 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 000000000000..c8d6b5c6cccd Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_hand_repaired.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg.png new file mode 100644 index 000000000000..5b040baf35b7 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg.png differ 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 000000000000..a65aaf59d997 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_gold.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_repaired.png new file mode 100644 index 000000000000..3937d0767fac Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_r_leg_repaired.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso.png new file mode 100644 index 000000000000..f9436f534fbd Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso.png differ 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 000000000000..21e632a93aa1 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_gold.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_repaired.png b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_repaired.png new file mode 100644 index 000000000000..82818bf7abb2 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Customization/Doll/unbroken.rsi/unbroken_torso_repaired.png differ 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 000000000000..4a0a47f1a0ab Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-left.png differ 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 000000000000..23da07ad5a2e Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain-inhand-right.png differ 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 000000000000..bc4afe0bdb1b Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/brain.png differ 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 000000000000..b4ab46430d34 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/ears.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-l.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-l.png new file mode 100644 index 000000000000..4259fe89098a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-l.png differ 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 000000000000..28bc9ef0b371 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/eyeball-r.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-off.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-off.png new file mode 100644 index 000000000000..1267638ee35f Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-off.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-on.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-on.png new file mode 100644 index 000000000000..ab81f37adc3b Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/heart-on.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-l.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-l.png new file mode 100644 index 000000000000..aa424202c5f8 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-l.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-r.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-r.png new file mode 100644 index 000000000000..efa9cbb0f2f9 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/kidney-r.png differ 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 000000000000..1f8ea5922b3c Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/liver.png differ 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 000000000000..0a387cfb1a31 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-l.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-r.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-r.png new file mode 100644 index 000000000000..1de558133980 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/lung-r.png differ 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 000000000000..33918df1a687 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/shell.png differ 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 000000000000..e2ce17ba6d84 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/stomach.png differ 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 000000000000..019250722b2b Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/organs.rsi/tongue.png differ 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 000000000000..28aea6cbe75d Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/doll.png differ 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 000000000000..30f46cbfd3f3 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/head.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_arm.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_arm.png new file mode 100644 index 000000000000..e8a2d1490803 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_arm.png differ 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 000000000000..bbf49123451e Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_foot.png differ 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 000000000000..79be87f0d3e6 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_hand.png differ 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 000000000000..18fbd6888e2a Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/l_leg.png differ 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 000000000000..c82551738721 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_arm.png differ 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 000000000000..9e28b4e5b101 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_hand.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_hand.png new file mode 100644 index 000000000000..eecab3dafbff Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_leg.png b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_leg.png new file mode 100644 index 000000000000..254f1ee779d2 Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/r_leg.png differ 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 000000000000..27e2a1dc890e Binary files /dev/null and b/Resources/Textures/_Starlight/Mobs/Species/Doll/parts.rsi/torso.png differ