diff --git a/Content.Server/Nutrition/Components/FoodComponent.cs b/Content.Server/Nutrition/Components/FoodComponent.cs index f6a74f109b..61709e616d 100644 --- a/Content.Server/Nutrition/Components/FoodComponent.cs +++ b/Content.Server/Nutrition/Components/FoodComponent.cs @@ -36,14 +36,11 @@ namespace Content.Server.Nutrition.Components public bool UtensilRequired = false; /// - /// If this is set to true, eating this food will require you to have a stomach with a + /// If this is set to true, food can only be eaten if you have a stomach with a /// that includes this entity in its whitelist, /// rather than just being digestible by anything that can eat food. + /// Whitelist the food component to allow eating of normal food. /// - /// - /// TODO think about making this a little more complex, right now you cant disallow mobs from eating stuff - /// that everyone else can eat - /// [DataField("requiresSpecialDigestion")] public bool RequiresSpecialDigestion = false; diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index c875bfaf8b..a65f6cdd3d 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -27,6 +27,7 @@ using Content.Shared.Stacks; using Robust.Shared.Audio; using Robust.Shared.Player; using Robust.Shared.Utility; +using Content.Shared.Tag; namespace Content.Server.Nutrition.EntitySystems { @@ -50,6 +51,7 @@ namespace Content.Server.Nutrition.EntitySystems [Dependency] private readonly ReactiveSystem _reaction = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly StackSystem _stack = default!; + [Dependency] private readonly TagSystem _tags = default!; public const float MaxFeedDistance = 1.0f; @@ -107,6 +109,7 @@ namespace Content.Server.Nutrition.EntitySystems var forceFeed = user != target; + // Check for special digestibles if (!IsDigestibleBy(food, foodComp, stomachs)) { _popupSystem.PopupEntity( @@ -367,28 +370,33 @@ namespace Content.Server.Nutrition.EntitySystems } /// - /// Returns true if has a that is capable of - /// digesting this (or if they even have enough stomachs in the first place). + /// Returns true if has a that whitelists + /// this (or if they even have enough stomachs in the first place). /// private bool IsDigestibleBy(EntityUid food, FoodComponent component, List<(StomachComponent, OrganComponent)> stomachs) { var digestible = true; + // Does the mob have enough stomachs? if (stomachs.Count < component.RequiredStomachs) return false; - if (!component.RequiresSpecialDigestion) - return true; - + // Run through the mobs' stomachs foreach (var (comp, _) in stomachs) { + // Find a stomach with a SpecialDigestible if (comp.SpecialDigestible == null) continue; - - if (!comp.SpecialDigestible.IsValid(food, EntityManager)) - return false; + // Check if the food is in the whitelist + if (comp.SpecialDigestible.IsValid(food, EntityManager)) + return true; + // They can only eat whitelist food and the food isn't in the whitelist. It's not edible. + return false; } + if (component.RequiresSpecialDigestion) + return false; + return digestible; } diff --git a/Resources/Audio/Voice/Moth/attributions.yml b/Resources/Audio/Voice/Moth/attributions.yml new file mode 100644 index 0000000000..a705c4d00b --- /dev/null +++ b/Resources/Audio/Voice/Moth/attributions.yml @@ -0,0 +1,9 @@ +- files: ["moth_scream.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/tgstation/tgstation/commit/31c19654e0f641166ecd80c672ea05362fd19488" + source: "https://github.com/tgstation/tgstation/commits/master/sound/voice/moth/scream_moth.ogg" + +- files: ["moth_laugh.ogg, moth_chitter.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from https://github.com/BeeStation/BeeStation-Hornet/commit/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d" + source: "https://github.com/BeeStation/BeeStation-Hornet/blob/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d/sound/emotes/" \ No newline at end of file diff --git a/Resources/Audio/Voice/Moth/moth_chitter.ogg b/Resources/Audio/Voice/Moth/moth_chitter.ogg new file mode 100644 index 0000000000..b7240a5653 Binary files /dev/null and b/Resources/Audio/Voice/Moth/moth_chitter.ogg differ diff --git a/Resources/Audio/Voice/Moth/moth_laugh.ogg b/Resources/Audio/Voice/Moth/moth_laugh.ogg new file mode 100644 index 0000000000..d3c2865ab6 Binary files /dev/null and b/Resources/Audio/Voice/Moth/moth_laugh.ogg differ diff --git a/Resources/Audio/Voice/Moth/moth_scream.ogg b/Resources/Audio/Voice/Moth/moth_scream.ogg new file mode 100644 index 0000000000..482086fb63 Binary files /dev/null and b/Resources/Audio/Voice/Moth/moth_scream.ogg differ diff --git a/Resources/Locale/en-US/markings/moth.ftl b/Resources/Locale/en-US/markings/moth.ftl new file mode 100644 index 0000000000..99723c9e16 --- /dev/null +++ b/Resources/Locale/en-US/markings/moth.ftl @@ -0,0 +1,5 @@ +marking-MothAntennasDefault = Antennas (Default) +marking-MothWingsDefault = Wings (Default) +marking-MothWingsLook1 = Wings (Pointy) +marking-MothWingsLook2 = Wings (Swirly) +marking-MothWingsLook3 = Wings (Dotted) \ No newline at end of file diff --git a/Resources/Locale/en-US/nutrition/components/food-component.ftl b/Resources/Locale/en-US/nutrition/components/food-component.ftl index bd5766cc0a..4b4f0d29d8 100644 --- a/Resources/Locale/en-US/nutrition/components/food-component.ftl +++ b/Resources/Locale/en-US/nutrition/components/food-component.ftl @@ -6,6 +6,7 @@ food-you-need-to-hold-utensil = You need to be holding a {$utensil} to eat that! food-nom = Nom. {$flavors} food-swallow = You swallow the {$food}. {$flavors} +food-repulsing = This looks repulsing. food-system-remove-mask = You need to take off the {$entity} first. diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index e8ef59599a..2f01ae54c0 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -6,3 +6,4 @@ species-name-reptilian = Reptilian species-name-slime = Slime Person species-name-diona = Diona species-name-arachnid = Arachnid +species-name-moth = Moth Person \ No newline at end of file diff --git a/Resources/Prototypes/Body/Organs/arachnid.yml b/Resources/Prototypes/Body/Organs/arachnid.yml index ceb8242283..d21a2c1763 100644 --- a/Resources/Prototypes/Body/Organs/arachnid.yml +++ b/Resources/Prototypes/Body/Organs/arachnid.yml @@ -45,7 +45,6 @@ layers: - state: lung-l - state: lung-r - - type: Organ - type: Lung - type: Metabolizer updateFrequency: 1.5 @@ -74,7 +73,6 @@ components: - type: Sprite state: heart-on - - type: Organ - type: Metabolizer updateFrequency: 1.5 maxReagents: 2 @@ -93,7 +91,6 @@ components: - type: Sprite state: liver - - type: Organ - type: Metabolizer # The liver metabolizes certain chemicals only, like alcohol. updateFrequency: 1.5 maxReagents: 1 @@ -113,7 +110,6 @@ layers: - state: kidney-l - state: kidney-r - - type: Organ # The kidneys just remove anything that doesn't currently have any metabolisms, as a stopgap. - type: Metabolizer updateFrequency: 1.5 @@ -131,7 +127,6 @@ layers: - state: eyeball-l - state: eyeball-r - - type: Organ - type: entity id: OrganArachnidTongue @@ -141,4 +136,3 @@ components: - type: Sprite state: tongue - - type: Organ diff --git a/Resources/Prototypes/Body/Organs/diona.yml b/Resources/Prototypes/Body/Organs/diona.yml index f8322d4024..3da64f3bbd 100644 --- a/Resources/Prototypes/Body/Organs/diona.yml +++ b/Resources/Prototypes/Body/Organs/diona.yml @@ -19,16 +19,12 @@ - type: entity id: OrganDionaBrain - parent: BaseDionaOrgan + parent: [BaseDionaOrgan, OrganHumanBrain] name: brain description: "The source of incredible, unending intelligence. Honk." components: - type: Sprite state: brain - - type: Organ - - type: Input - context: "ghost" - - type: InputMover - type: SolutionContainerManager solutions: organ: @@ -60,7 +56,6 @@ layers: - state: eyeball-l - state: eyeball-r - - type: Organ - type: entity id: OrganDionaStomach @@ -70,7 +65,6 @@ components: - type: Sprite state: stomach - - type: Organ - type: SolutionContainerManager solutions: stomach: diff --git a/Resources/Prototypes/Body/Organs/human.yml b/Resources/Prototypes/Body/Organs/human.yml index 1a45865bf7..9c03768856 100644 --- a/Resources/Prototypes/Body/Organs/human.yml +++ b/Resources/Prototypes/Body/Organs/human.yml @@ -40,7 +40,6 @@ layers: - state: eyeball-l - state: eyeball-r - - type: Organ - type: entity id: OrganHumanTongue @@ -50,7 +49,6 @@ components: - type: Sprite state: tongue - - type: Organ - type: entity id: OrganHumanAppendix @@ -62,7 +60,6 @@ - state: appendix - state: appendix-inflamed visible: false - - type: Organ - type: entity id: OrganHumanEars @@ -72,7 +69,6 @@ components: - type: Sprite state: ears - - type: Organ - type: entity id: OrganHumanLungs @@ -84,7 +80,6 @@ layers: - state: lung-l - state: lung-r - - type: Organ - type: Lung - type: Metabolizer removeEmpty: true @@ -112,7 +107,6 @@ components: - type: Sprite state: heart-on - - type: Organ # 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. @@ -132,7 +126,6 @@ components: - type: Sprite state: stomach - - type: Organ - type: SolutionContainerManager solutions: stomach: @@ -157,7 +150,6 @@ components: - type: Sprite state: liver - - type: Organ - type: Metabolizer # The liver metabolizes certain chemicals only, like alcohol. maxReagents: 1 metabolizerTypes: [Human] @@ -175,7 +167,6 @@ layers: - state: kidney-l - state: kidney-r - - type: Organ # The kidneys just remove anything that doesn't currently have any metabolisms, as a stopgap. - type: Metabolizer maxReagents: 5 diff --git a/Resources/Prototypes/Body/Organs/moth.yml b/Resources/Prototypes/Body/Organs/moth.yml new file mode 100644 index 0000000000..ba40b38aad --- /dev/null +++ b/Resources/Prototypes/Body/Organs/moth.yml @@ -0,0 +1,20 @@ +- type: entity + id: OrganMothStomach + parent: [OrganAnimalStomach, OrganHumanStomach] + noSpawn: true + components: + - type: Stomach + specialDigestible: + tags: + - ClothMade + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50 + - type: Metabolizer + maxReagents: 6 + metabolizerTypes: [ Plant ] + removeEmpty: true + groups: + - id: Food + - id: Drink diff --git a/Resources/Prototypes/Body/Organs/slime.yml b/Resources/Prototypes/Body/Organs/slime.yml index 7bb91b18b5..3b78b4f4e3 100644 --- a/Resources/Prototypes/Body/Organs/slime.yml +++ b/Resources/Prototypes/Body/Organs/slime.yml @@ -1,14 +1,9 @@ - type: entity id: SentientSlimeCore - parent: BaseItem + parent: [BaseItem, OrganHumanBrain] name: sentient slime core description: "The source of incredible, unending gooeyness." components: - - type: Sprite - sprite: Mobs/Species/Human/organs.rsi - state: brain - - type: Organ - - type: Brain - type: Stomach - type: Metabolizer maxReagents: 6 @@ -38,7 +33,6 @@ layers: - state: lung-l - state: lung-r - - type: Organ - type: Lung - type: Metabolizer removeEmpty: true diff --git a/Resources/Prototypes/Body/Parts/arachnid.yml b/Resources/Prototypes/Body/Parts/arachnid.yml index 0917795624..dbb656cc18 100644 --- a/Resources/Prototypes/Body/Parts/arachnid.yml +++ b/Resources/Prototypes/Body/Parts/arachnid.yml @@ -2,17 +2,10 @@ # TODO BODY: Part damage - type: entity id: PartArachnid - parent: BaseItem + parent: [BaseItem, BasePart] name: "arachnid body part" abstract: true components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - type: Extractable juiceSolution: reagents: @@ -24,16 +17,11 @@ - type: entity id: TorsoArachnid name: "arachnid torso" - parent: PartArachnid + parent: [PartArachnid, BaseTorso] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "torso_m" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "torso_m" - - type: BodyPart - partType: Torso - type: Extractable juiceSolution: reagents: @@ -45,27 +33,11 @@ - type: entity id: HeadArachnid name: "arachnid head" - parent: PartArachnid + parent: [PartArachnid, BaseHead] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "head_m" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "head_m" - - type: BodyPart - partType: Head - vital: true - - type: Input - context: "ghost" - - type: MovementSpeedModifier - baseWalkSpeed: 0 - baseSprintSpeed: 0 - - type: InputMover - - type: GhostOnMove - - type: Tag - tags: - - Head - type: Extractable juiceSolution: reagents: @@ -77,77 +49,47 @@ - type: entity id: LeftArmArachnid name: "left arachnid arm" - parent: PartArachnid + parent: [PartArachnid, BaseLeftArm] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "l_arm" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_arm" - - type: BodyPart - partType: Arm - symmetry: Left - type: entity id: RightArmArachnid name: "right arachnid arm" - parent: PartArachnid + parent: [PartArachnid, BaseRightArm] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "r_arm" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_arm" - - type: BodyPart - partType: Arm - symmetry: Right - type: entity id: LeftHandArachnid name: "left arachnid hand" - parent: PartArachnid + parent: [PartArachnid, BaseLeftHand] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "l_hand" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_hand" - - type: BodyPart - partType: Hand - symmetry: Left - type: entity id: RightHandArachnid name: "right arachnid hand" - parent: PartArachnid + parent: [PartArachnid, BaseRightHand] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "r_hand" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_hand" - - type: BodyPart - partType: Hand - symmetry: Right - type: entity id: LeftLegArachnid name: "left arachnid leg" - parent: PartArachnid + parent: [PartArachnid, BaseLeftLeg] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "l_leg" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_leg" - - type: BodyPart - partType: Leg - symmetry: Left - type: MovementBodyPart walkSpeed: 3.0 sprintSpeed: 5.0 @@ -155,17 +97,11 @@ - type: entity id: RightLegArachnid name: "right arachnid leg" - parent: PartArachnid + parent: [PartArachnid, BaseRightLeg] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "r_leg" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_leg" - - type: BodyPart - partType: Leg - symmetry: Right - type: MovementBodyPart walkSpeed: 3.0 sprintSpeed: 5.0 @@ -173,29 +109,17 @@ - type: entity id: LeftFootArachnid name: "left arachnid foot" - parent: PartArachnid + parent: [PartArachnid, BaseLeftFoot] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "l_foot" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_foot" - - type: BodyPart - partType: Foot - symmetry: Left - type: entity id: RightFootArachnid name: "right arachnid foot" - parent: PartArachnid + parent: [PartArachnid, BaseRightFoot] components: - type: Sprite sprite: Mobs/Species/Arachnid/parts.rsi state: "r_foot" - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_foot" - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/base.yml b/Resources/Prototypes/Body/Parts/base.yml new file mode 100644 index 0000000000..e293d8845d --- /dev/null +++ b/Resources/Prototypes/Body/Parts/base.yml @@ -0,0 +1,116 @@ +# TODO: Add descriptions (many) +# TODO BODY: Part damage +- type: entity + id: BasePart + parent: BaseItem + name: "body part" + abstract: true + components: + - type: Damageable + damageContainer: Biological + - type: BodyPart + - type: ContainerContainer + containers: + bodypart: !type:Container + ents: [] + - type: StaticPrice + price: 100 + - type: Tag + tags: + - Trash + +- type: entity + id: BaseTorso + name: "torso" + parent: BasePart + components: + - type: BodyPart + partType: Torso + +- type: entity + id: BaseHead + name: "head" + parent: BasePart + components: + - type: BodyPart + partType: Head + vital: true + - type: Input + context: "ghost" + - type: Tag + tags: + - Head + +- type: entity + id: BaseLeftArm + name: "left arm" + parent: BasePart + components: + - type: BodyPart + partType: Arm + symmetry: Left + +- type: entity + id: BaseRightArm + name: "right arm" + parent: BasePart + components: + - type: BodyPart + partType: Arm + symmetry: Right + +- type: entity + id: BaseLeftHand + name: "left hand" + parent: BasePart + components: + - type: BodyPart + partType: Hand + symmetry: Left + +- type: entity + id: BaseRightHand + name: "right hand" + parent: BasePart + components: + - type: BodyPart + partType: Hand + symmetry: Right + +- type: entity + id: BaseLeftLeg + name: "left leg" + parent: BasePart + components: + - type: BodyPart + partType: Leg + symmetry: Left + - type: MovementBodyPart + +- type: entity + id: BaseRightLeg + name: "right leg" + parent: BasePart + components: + - type: BodyPart + partType: Leg + symmetry: Right + - type: MovementBodyPart + +- type: entity + id: BaseLeftFoot + name: "left foot" + parent: BasePart + components: + - type: BodyPart + partType: Foot + symmetry: Left + +- type: entity + id: BaseRightFoot + name: "right foot" + parent: BasePart + components: + - type: BodyPart + partType: Foot + symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/diona.yml b/Resources/Prototypes/Body/Parts/diona.yml index 07b4c144d9..357cf7947b 100644 --- a/Resources/Prototypes/Body/Parts/diona.yml +++ b/Resources/Prototypes/Body/Parts/diona.yml @@ -1,120 +1,67 @@ - type: entity id: PartDiona - parent: BaseItem + parent: [BaseItem, BasePart] name: "diona body part" abstract: true components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - type: Sprite sprite: Mobs/Species/Diona/parts.rsi - - type: Icon - sprite: Mobs/Species/Diona/parts.rsi - - type: StaticPrice - price: 100 - - type: Tag - tags: - - Trash - type: entity id: TorsoDiona name: "diona torso" - parent: PartDiona + parent: [PartDiona, BaseTorso] components: - type: Sprite state: "torso_m" - - type: Icon - state: "torso_m" - - type: BodyPart - partType: Torso - type: entity id: HeadDiona name: "diona head" - parent: PartDiona + parent: [PartDiona, BaseHead] components: - type: Sprite state: "head_m" - - type: Icon - state: "head_m" - - type: BodyPart - partType: Head - vital: true - - type: Input - context: "ghost" - - type: Tag - tags: - - Head - type: entity id: LeftArmDiona name: "left diona arm" - parent: PartDiona + parent: [PartDiona, BaseLeftArm] components: - type: Sprite state: "l_arm" - - type: Icon - state: "l_arm" - - type: BodyPart - partType: Arm - symmetry: Left - type: entity id: RightArmDiona name: "right diona arm" - parent: PartDiona + parent: [PartDiona, BaseRightArm] components: - type: Sprite state: "r_arm" - - type: Icon - state: "r_arm" - - type: BodyPart - partType: Arm - symmetry: Right - type: entity id: LeftHandDiona name: "left diona hand" - parent: PartDiona + parent: [PartDiona, BaseLeftHand] components: - type: Sprite state: "l_hand" - - type: Icon - state: "l_hand" - - type: BodyPart - partType: Hand - symmetry: Left - type: entity id: RightHandDiona name: "right diona hand" - parent: PartDiona + parent: [PartDiona, BaseRightHand] components: - type: Sprite state: "r_hand" - - type: Icon - state: "r_hand" - - type: BodyPart - partType: Hand - symmetry: Right - type: entity id: LeftLegDiona name: "left diona leg" - parent: PartDiona + parent: [PartDiona, BaseLeftLeg] components: - type: Sprite state: "l_leg" - - type: Icon - state: "l_leg" - - type: BodyPart - partType: Leg - symmetry: Left - type: MovementBodyPart walkSpeed : 1.5 sprintSpeed : 3.5 @@ -122,12 +69,10 @@ - type: entity id: RightLegDiona name: "right diona leg" - parent: PartDiona + parent: [PartDiona, BaseRightLeg] components: - type: Sprite state: "r_leg" - - type: Icon - state: "r_leg" - type: BodyPart partType: Leg symmetry: Right @@ -138,12 +83,10 @@ - type: entity id: LeftFootDiona name: "left diona foot" - parent: PartDiona + parent: [PartDiona, BaseLeftFoot] components: - type: Sprite state: "l_foot" - - type: Icon - state: "l_foot" - type: BodyPart partType: Foot symmetry: Left @@ -151,12 +94,10 @@ - type: entity id: RightFootDiona name: "right diona foot" - parent: PartDiona + parent: [PartDiona, BaseRightFoot] components: - type: Sprite state: "r_foot" - - type: Icon - state: "r_foot" - type: BodyPart partType: Foot symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/human.yml b/Resources/Prototypes/Body/Parts/human.yml index 1866011622..a1510fcdbb 100644 --- a/Resources/Prototypes/Body/Parts/human.yml +++ b/Resources/Prototypes/Body/Parts/human.yml @@ -2,22 +2,10 @@ # TODO BODY: Part damage - type: entity id: PartHuman - parent: BaseItem + parent: [BaseItem, BasePart] name: "human body part" abstract: true components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: StaticPrice - price: 100 - - type: Tag - tags: - - Trash - type: Extractable juiceSolution: reagents: @@ -29,16 +17,11 @@ - type: entity id: TorsoHuman name: "human torso" - parent: PartHuman + parent: [PartHuman, BaseTorso] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "torso_m" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "torso_m" - - type: BodyPart - partType: Torso - type: Extractable juiceSolution: reagents: @@ -50,22 +33,11 @@ - type: entity id: HeadHuman name: "human head" - parent: PartHuman + parent: [PartHuman, BaseHead] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "head_m" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "head_m" - - type: BodyPart - partType: Head - vital: true - - type: Input - context: "ghost" - - type: Tag - tags: - - Head - type: Extractable juiceSolution: reagents: @@ -77,121 +49,71 @@ - type: entity id: LeftArmHuman name: "left human arm" - parent: PartHuman + parent: [PartHuman, BaseLeftArm] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "l_arm" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "l_arm" - - type: BodyPart - partType: Arm - symmetry: Left - type: entity id: RightArmHuman name: "right human arm" - parent: PartHuman + parent: [PartHuman, BaseRightArm] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "r_arm" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "r_arm" - - type: BodyPart - partType: Arm - symmetry: Right - type: entity id: LeftHandHuman name: "left human hand" - parent: PartHuman + parent: [PartHuman, BaseLeftHand] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "l_hand" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "l_hand" - - type: BodyPart - partType: Hand - symmetry: Left - type: entity id: RightHandHuman name: "right human hand" - parent: PartHuman + parent: [PartHuman, BaseRightHand] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "r_hand" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "r_hand" - - type: BodyPart - partType: Hand - symmetry: Right - type: entity id: LeftLegHuman name: "left human leg" - parent: PartHuman + parent: [PartHuman, BaseLeftLeg] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "l_leg" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "l_leg" - - type: BodyPart - partType: Leg - symmetry: Left - - type: MovementBodyPart - type: entity id: RightLegHuman name: "right human leg" - parent: PartHuman + parent: [PartHuman, BaseRightLeg] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "r_leg" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "r_leg" - - type: BodyPart - partType: Leg - symmetry: Right - - type: MovementBodyPart - type: entity id: LeftFootHuman name: "left human foot" - parent: PartHuman + parent: [PartHuman, BaseLeftFoot] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "l_foot" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "l_foot" - - type: BodyPart - partType: Foot - symmetry: Left - type: entity id: RightFootHuman name: "right human foot" - parent: PartHuman + parent: [PartHuman, BaseRightFoot] components: - type: Sprite sprite: Mobs/Species/Human/parts.rsi state: "r_foot" - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: "r_foot" - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/moth.yml b/Resources/Prototypes/Body/Parts/moth.yml new file mode 100644 index 0000000000..bb96430383 --- /dev/null +++ b/Resources/Prototypes/Body/Parts/moth.yml @@ -0,0 +1,120 @@ +# TODO: Add descriptions (many) +# TODO BODY: Part damage +- type: entity + id: PartMoth + parent: [BaseItem, BasePart] + name: "moth body part" + abstract: true + components: + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 3 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: TorsoMoth + name: "moth torso" + parent: [PartMoth, BaseTorso] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "torso_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 20 + + +- type: entity + id: HeadMoth + name: "moth head" + parent: [PartMoth, BaseHead] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "head_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 5 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: LeftArmMoth + name: "left moth arm" + parent: [PartMoth, BaseLeftArm] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_arm" + +- type: entity + id: RightArmMoth + name: "right moth arm" + parent: [PartMoth, BaseRightArm] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_arm" + +- type: entity + id: LeftHandMoth + name: "left moth hand" + parent: [PartMoth, BaseLeftHand] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_hand" + +- type: entity + id: RightHandMoth + name: "right moth hand" + parent: [PartMoth, BaseRightHand] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_hand" + +- type: entity + id: LeftLegMoth + name: "left moth leg" + parent: [PartMoth, BaseLeftLeg] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_leg" + +- type: entity + id: RightLegMoth + name: "right moth leg" + parent: [PartMoth, BaseRightLeg] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_leg" + +- type: entity + id: LeftFootMoth + name: "left moth foot" + parent: [PartMoth, BaseLeftFoot] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "l_foot" + +- type: entity + id: RightFootMoth + name: "right moth foot" + parent: [PartMoth, BaseRightFoot] + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/reptilian.yml b/Resources/Prototypes/Body/Parts/reptilian.yml index 1af2d1db75..22ab7aeb52 100644 --- a/Resources/Prototypes/Body/Parts/reptilian.yml +++ b/Resources/Prototypes/Body/Parts/reptilian.yml @@ -2,20 +2,10 @@ # TODO BODY: Part damage - type: entity id: PartReptilian - parent: BaseItem + parent: [BaseItem, BasePart] name: "reptilian body part" abstract: true components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: Tag - tags: - - Trash - type: Extractable juiceSolution: reagents: @@ -27,16 +17,11 @@ - type: entity id: TorsoReptilian name: "reptilian torso" - parent: PartReptilian + parent: [PartReptilian, BaseTorso] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "torso_m" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "torso_m" - - type: BodyPart - partType: Torso - type: Extractable juiceSolution: reagents: @@ -48,22 +33,11 @@ - type: entity id: HeadReptilian name: "reptilian head" - parent: PartReptilian + parent: [PartReptilian, BaseHead] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "head_m" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "head_m" - - type: BodyPart - partType: Head - vital: true - - type: Input - context: "ghost" - - type: Tag - tags: - - Head - type: Extractable juiceSolution: reagents: @@ -75,77 +49,47 @@ - type: entity id: LeftArmReptilian name: "left reptilian arm" - parent: PartReptilian + parent: [PartReptilian, BaseLeftArm] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "l_arm" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_arm" - - type: BodyPart - partType: Arm - symmetry: Left - type: entity id: RightArmReptilian name: "right reptilian arm" - parent: PartReptilian + parent: [PartReptilian, BaseRightArm] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "r_arm" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_arm" - - type: BodyPart - partType: Arm - symmetry: Right - type: entity id: LeftHandReptilian name: "left reptilian hand" - parent: PartReptilian + parent: [PartReptilian, BaseLeftHand] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "l_hand" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_hand" - - type: BodyPart - partType: Hand - symmetry: Left - type: entity id: RightHandReptilian name: "right reptilian hand" - parent: PartReptilian + parent: [PartReptilian, BaseRightHand] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "r_hand" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_hand" - - type: BodyPart - partType: Hand - symmetry: Right - type: entity id: LeftLegReptilian name: "left reptilian leg" - parent: PartReptilian + parent: [PartReptilian, BaseLeftLeg] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "l_leg" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_leg" - - type: BodyPart - partType: Leg - symmetry: Left - type: MovementBodyPart walkSpeed : 2.7 sprintSpeed : 4.5 @@ -153,17 +97,11 @@ - type: entity id: RightLegReptilian name: "right reptilian leg" - parent: PartReptilian + parent: [PartReptilian, BaseRightLeg] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "r_leg" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_leg" - - type: BodyPart - partType: Leg - symmetry: Right - type: MovementBodyPart walkSpeed : 2.7 sprintSpeed : 4.5 @@ -171,29 +109,17 @@ - type: entity id: LeftFootReptilian name: "left reptilian foot" - parent: PartReptilian + parent: [PartReptilian, BaseLeftFoot] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi state: "l_foot" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_foot" - - type: BodyPart - partType: Foot - symmetry: Left - type: entity id: RightFootReptilian name: "right reptilian foot" - parent: PartReptilian + parent: [PartReptilian, BaseRightFoot] components: - type: Sprite sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_foot" - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_foot" - - type: BodyPart - partType: Foot - symmetry: Right + state: "r_foot" \ No newline at end of file diff --git a/Resources/Prototypes/Body/Parts/slime.yml b/Resources/Prototypes/Body/Parts/slime.yml index 011cf3462d..c11d723950 100644 --- a/Resources/Prototypes/Body/Parts/slime.yml +++ b/Resources/Prototypes/Body/Parts/slime.yml @@ -1,175 +1,96 @@ # TODO BODY: Part damage - type: entity id: PartSlime - parent: BaseItem + parent: [BaseItem, PartBase] name: "slime body part" abstract: true - components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: StaticPrice - price: 100 - - type: Tag - tags: - - Trash - type: entity id: TorsoSlime name: "slime torso" - parent: PartSlime + parent: [PartSlime, BaseTorso] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "torso_m" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "torso_m" - - type: BodyPart - partType: Torso - type: entity id: HeadSlime name: "slime head" - parent: PartSlime + parent: [PartSlime, BaseHead] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "head_m" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "head_m" - - type: BodyPart - partType: Head - vital: true - - type: Input - context: "ghost" - - type: Tag - tags: - - Head - + - type: entity id: LeftArmSlime name: "left slime arm" - parent: PartSlime + parent: [PartSlime, BaseLeftArm] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "l_arm" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "l_arm" - - type: BodyPart - partType: Arm - symmetry: Left - type: entity id: RightArmSlime name: "right slime arm" - parent: PartSlime + parent: [PartSlime, BaseRightArm] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "r_arm" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "r_arm" - - type: BodyPart - partType: Arm - symmetry: Right - type: entity id: LeftHandSlime name: "left slime hand" - parent: PartSlime + parent: [PartSlime, BaseLeftHand] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "l_hand" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "l_hand" - - type: BodyPart - partType: Hand - symmetry: Left - type: entity id: RightHandSlime name: "right slime hand" - parent: PartSlime + parent: [PartSlime, BaseRightHand] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "r_hand" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "r_hand" - - type: BodyPart - partType: Hand - symmetry: Right - type: entity id: LeftLegSlime name: "left slime leg" - parent: PartSlime + parent: [PartSlime, BaseLeftLeg] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "l_leg" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "l_leg" - - type: BodyPart - partType: Leg - symmetry: Left - - type: MovementBodyPart - type: entity id: RightLegSlime name: "right slime leg" - parent: PartSlime + parent: [PartSlime, BaseRightLeg] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "r_leg" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "r_leg" - - type: BodyPart - partType: Leg - symmetry: Right - - type: MovementBodyPart - type: entity id: LeftFootSlime name: "left slime foot" - parent: PartSlime + parent: [PartSlime, BaseLeftFoot] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "l_foot" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "l_foot" - - type: BodyPart - partType: Foot - symmetry: Left - type: entity id: RightFootSlime name: "right slime foot" - parent: PartSlime + parent: [PartSlime, BaseRightFoot] components: - type: Sprite sprite: Mobs/Species/Slime/parts.rsi state: "r_foot" - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: "r_foot" - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Prototypes/moth.yml b/Resources/Prototypes/Body/Prototypes/moth.yml new file mode 100644 index 0000000000..0715f19a85 --- /dev/null +++ b/Resources/Prototypes/Body/Prototypes/moth.yml @@ -0,0 +1,49 @@ +- type: body + id: Moth + name: "Moth" + root: torso + slots: + head: + part: HeadMoth + connections: + - torso + organs: + brain: OrganHumanBrain + eyes: OrganHumanEyes + torso: + part: TorsoMoth + organs: + heart: OrganAnimalHeart + lungs: OrganHumanLungs + stomach: OrganMothStomach + liver: OrganAnimalLiver + kidneys: OrganHumanKidneys + connections: + - left arm + - right arm + - left leg + - right leg + right arm: + part: RightArmMoth + connections: + - right hand + left arm: + part: LeftArmMoth + connections: + - left hand + right hand: + part: RightHandMoth + left hand: + part: LeftHandMoth + right leg: + part: RightLegMoth + connections: + - right foot + left leg: + part: LeftLegMoth + connections: + - left foot + right foot: + part: RightFootMoth + left foot: + part: LeftFootMoth diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index 1aa19f6084..a3507977ad 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -32,3 +32,7 @@ - type: metabolizerType id: Dwarf name: dwarf + +- type: metabolizerType + id: Moth + name: moth diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index d58e8ba30b..1a425226a0 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -137,7 +137,17 @@ Piercing: 1.15 Slash: 0.85 Heat: 1.25 - Poison: 0.8 + Poison: 0.8 + +- type: damageModifierSet + id: Moth # Slightly worse at everything but cold + coefficients: + Blunt: 1 + Piercing: 1.15 + Slash: 1.15 + Cold: 0.7 + Heat: 1.3 + Poison: 1.1 - type: damageModifierSet id: Zombie #Blunt resistant and immune to biological threats, but can be hacked apart and burned diff --git a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml index f3373fe572..eb9f7826df 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml @@ -7,3 +7,15 @@ state: icon - type: Clothing slots: [gloves] + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Fiber + Quantity: 10 + - type: Tag + tags: + - ClothMade diff --git a/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml b/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml index bf02642cb7..b5e5a230d6 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/base_clothingmask.yml @@ -7,6 +7,18 @@ state: icon - type: Clothing slots: [mask] + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Fiber + Quantity: 10 + - type: Tag + tags: + - ClothMade - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml b/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml index c8b18fafa1..4d97a3e222 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/base_clothingneck.yml @@ -16,3 +16,15 @@ spawned: - id: MaterialCloth1 amount: 2 + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Fiber + Quantity: 10 + - type: Tag + tags: + - ClothMade \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index 4c08fb431a..ce46f9b71e 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -17,6 +17,18 @@ coefficients: Slash: 0.95 Heat: 0.90 + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 30 + reagents: + - ReagentId: Fiber + Quantity: 30 + - type: Tag + tags: + - ClothMade - type: entity parent: ClothingOuterWinterCoat diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml index 86f8cd7f77..d5889c43eb 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/base_clothingshoes.yml @@ -8,6 +8,18 @@ - FEET - type: Sprite state: icon + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 10 + reagents: + - ReagentId: Fiber + Quantity: 10 + - type: Tag + tags: + - ClothMade - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml index de52896e3b..af63c902d7 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/base_clothinguniforms.yml @@ -14,6 +14,18 @@ spawned: - id: MaterialCloth1 amount: 3 + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 30 + reagents: + - ReagentId: Fiber + Quantity: 30 + - type: Tag + tags: + - ClothMade - type: entity abstract: true diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml new file mode 100644 index 0000000000..73cde76628 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/moth.yml @@ -0,0 +1,49 @@ +# Antennas +- type: marking + id: MothAntennasDefault + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/moth_parts.rsi + state: antenna_default + +# Wings +- type: marking + id: MothWingsDefault + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/moth_parts.rsi + state: wings_default + +- type: marking + id: MothWingsLook1 + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/moth_parts.rsi + state: wings_look1 + +- type: marking + id: MothWingsLook2 + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/moth_parts.rsi + state: wings_look2 + +- type: marking + id: MothWingsLook3 + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Moth] + sprites: + - sprite: Mobs/Customization/moth_parts.rsi + state: wings_look3 + + +# Other markings \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml index 68ae37d885..5ab7e4b9c3 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml @@ -1,35 +1,13 @@ - type: entity save: false name: Urist McWeb - parent: BaseMobArachnid + parent: [BaseMobArachnid, BaseMob] id: MobArachnid components: - - type: CombatMode - canDisarm: true - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - - type: MobMover - - type: InputMover - type: Respirator damage: types: Asphyxiation: 2 # Make sure you have O2 on you at all times damageRecovery: types: - Asphyxiation: -0.5 # Recovery will suck without chems - - type: Alerts - - type: Actions - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen + Asphyxiation: -0.5 # Recovery will suck without chems \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/base.yml b/Resources/Prototypes/Entities/Mobs/Player/base.yml new file mode 100644 index 0000000000..684174c513 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Player/base.yml @@ -0,0 +1,34 @@ +- type: entity + save: false + name: BaseMob + id: BaseMob + components: + - type: CombatMode + canDisarm: true + - type: InteractionPopup + successChance: 1 + interactSuccessString: hugging-success-generic + interactSuccessSound: /Audio/Effects/thudswoosh.ogg + messagePerceivedByOthers: hugging-success-generic-others + - type: MindContainer + showExamineInfo: true + - type: Input + context: "human" + - type: MobMover + - type: InputMover + - type: Respirator + damage: + types: + Asphyxiation: 1.0 + damageRecovery: + types: + Asphyxiation: -1.0 + - type: Alerts + - type: Actions + - type: Eye + - type: CameraRecoil + - type: Examiner + - type: CanHostGuardian + - type: NpcFactionMember + factions: + - NanoTrasen \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/diona.yml b/Resources/Prototypes/Entities/Mobs/Player/diona.yml index df5f5c0f9b..1066f44228 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/diona.yml @@ -1,20 +1,9 @@ - type: entity save: false name: Urist McPlants - parent: BaseMobDiona + parent: [BaseMobDiona, BaseMob] id: MobDiona components: - - type: CombatMode - canDisarm: true - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - type: Respirator damage: types: @@ -22,13 +11,3 @@ damageRecovery: types: Asphyxiation: -1.0 - - type: MobMover - - type: InputMover - - type: Alerts - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen diff --git a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml index 25eac35886..94b240e501 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml @@ -1,27 +1,5 @@ - type: entity save: false name: Urist McHands The Dwarf - parent: BaseMobDwarf - id: MobDwarf - components: - - type: CombatMode - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - - type: MobMover - - type: InputMover - - type: Alerts - - type: Actions - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen + parent: [BaseMobDwarf, BaseMob] + id: MobDwarf \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index fe61297fca..eb5ae34eb2 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -1,37 +1,8 @@ - type: entity save: false name: Urist McHands - parent: BaseMobHuman + parent: [BaseMobHuman, BaseMob] id: MobHuman - components: - - type: CombatMode - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - - type: MobMover - - type: InputMover - - type: Respirator - damage: - types: - Asphyxiation: 1.0 - damageRecovery: - types: - Asphyxiation: -1.0 - - type: Alerts - - type: Actions - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen #Syndie - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Player/moth.yml b/Resources/Prototypes/Entities/Mobs/Player/moth.yml new file mode 100644 index 0000000000..0a64385419 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Player/moth.yml @@ -0,0 +1,5 @@ +- type: entity + save: false + name: Urist McFluff + parent: [BaseMobMoth, BaseMob] + id: MobMoth \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml index b6db4abfea..d3cbe11b49 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml @@ -1,34 +1,7 @@ - type: entity save: false name: Urisst' Mzhand - parent: BaseMobReptilian + parent: [BaseMobReptilian, BaseMob] id: MobReptilian - components: - - type: CombatMode - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - - type: MobMover - - type: InputMover - - type: Alerts - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen - - type: Respirator - damage: - types: - Asphyxiation: 1.0 - damageRecovery: - types: - Asphyxiation: -1.0 + #Weh diff --git a/Resources/Prototypes/Entities/Mobs/Player/slime.yml b/Resources/Prototypes/Entities/Mobs/Player/slime.yml index c88011c49c..6763a7dbb2 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/slime.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/slime.yml @@ -1,26 +1,4 @@ - type: entity save: false - parent: BaseMobSlimePerson - id: MobSlimePerson - components: - - type: CombatMode - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - - type: MobMover - - type: InputMover - - type: Alerts - - type: Actions - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen + parent: [BaseMobSlimePerson, BaseMob] + id: MobSlimePerson \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/vox.yml b/Resources/Prototypes/Entities/Mobs/Player/vox.yml index 74556e079a..1e1883b8f7 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/vox.yml @@ -1,33 +1,5 @@ - type: entity save: false name: Vox - parent: BaseMobVox + parent: [BaseMobVox, BaseMob] id: MobVox - components: - - type: CombatMode - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: MindContainer - showExamineInfo: true - - type: Input - context: "human" - - type: MobMover - - type: InputMover - - type: Alerts - - type: Eye - - type: CameraRecoil - - type: Examiner - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen - - type: Respirator - damage: - types: - Asphyxiation: 1.0 - damageRecovery: - types: - Asphyxiation: -1.0 diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml index 2fb8e72a63..422ac61f86 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml @@ -18,15 +18,15 @@ - type: Damageable damageContainer: Biological damageModifierSet: Arachnid # spooder - - type: Icon - sprite: Mobs/Species/Arachnid/parts.rsi - state: full - type: Hunger starvationDamage: types: Cold: 0.5 Bloodloss: 0.5 - type: Thirst + - type: Icon + sprite: Mobs/Species/Arachnid/parts.rsi + state: full # Damage and speed - type: Bloodstream bloodReagent: SpiderBlood diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 7e75eb86ae..48e8dc6235 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -12,7 +12,7 @@ Bloodloss: 0.5 - type: Thirst - type: Icon - sprite: Mobs/Species/Slime/parts.rsi + sprite: Mobs/Species/Slime/parts.rsi # It was like this beforehand, no idea why. state: full - type: Respirator damage: diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml index 51e6b8c3ab..3e7a43520e 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/human.yml @@ -9,7 +9,10 @@ starvationDamage: types: Cold: 0.5 - Bloodloss: 0.5 + Bloodloss: 0.5 + - type: Icon # It will not have an icon in the adminspawn menu without this. Body parts seem fine for whatever reason. + sprite: Mobs/Species/Human/parts.rsi + state: full - type: Thirst - type: Perishable - type: Butcherable diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml new file mode 100644 index 0000000000..3cd48c4d6b --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml @@ -0,0 +1,66 @@ +- type: entity + save: false + name: Urist McFluff + parent: BaseMobOrganic + id: BaseMobMoth + abstract: true + components: + - type: HumanoidAppearance + species: Moth + - type: Hunger + starvationDamage: + types: + Cold: 0.5 + Bloodloss: 0.5 + - type: Thirst + - type: Icon + sprite: Mobs/Species/Moth/parts.rsi + state: full + - type: Body + prototype: Moth + requiredLegs: 2 + - type: Damageable + damageContainer: Biological + damageModifierSet: Moth + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeat + amount: 5 + - type: Vocal + sounds: + Male: UnisexMoth + Female: UnisexMoth + Unsexed: UnisexMoth + - type: MovementSpeedModifier + baseWalkSpeed : 2.5 + baseSprintSpeed : 4.5 + weightlessAcceleration: 1.5 # Move around more easily in space. + weightlessFriction: 1 + weightlessModifier: 1 + - type: Flammable + damage: + types: + Heat: 1.5 # moths burn more easily + - type: Temperature # Moths hate the heat and thrive in the cold. + heatDamageThreshold: 335 + coldDamageThreshold: 230 + currentTemperature: 310.15 + specificHeat: 46 + coldDamage: + types: + Cold : 0.05 #per second, scales with temperature & other constants + heatDamage: + types: + Heat : 0.2 #per second, scales with temperature & other constants + +- type: entity + save: false + name: Urist McFluff + parent: MobHumanDummy + id: MobMothDummy + noSpawn: true + description: A dummy moth meant to be used in character setup. + components: + - type: HumanoidAppearance + species: Moth \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index d021ab2e30..f777cffdd7 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -12,8 +12,8 @@ - type: ItemStatus - type: Tag tags: - - RawMaterial - DroneUsable + - RawMaterial - type: Damageable damageContainer: Inorganic - type: Destructible @@ -69,11 +69,6 @@ name: cloth suffix: Full components: - - type: Tag - tags: - - RawMaterial - - DroneUsable - - Gauze - type: Healing damageContainers: - Biological @@ -110,6 +105,22 @@ - type: Appearance - type: Item size: 30 + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 5 + reagents: + - ReagentId: Fiber + Quantity: 5 + - type: Tag + tags: + - ClothMade + - DroneUsable + - Gauze + - RawMaterial + - type: entity parent: MaterialCloth @@ -149,6 +160,20 @@ - type: Construction graph: Durathread node: MaterialDurathread + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 5 + reagents: + - ReagentId: Fiber + Quantity: 5 + - type: Tag + tags: + - ClothMade + - DroneUsable + - RawMaterial - type: entity parent: MaterialDurathread @@ -304,6 +329,20 @@ - type: Appearance - type: Item size: 30 + - type: Food + requiresSpecialDigestion: true + - type: SolutionContainerManager + solutions: + food: + maxVol: 5 + reagents: + - ReagentId: Fiber + Quantity: 5 + - type: Tag + tags: + - ClothMade + - DroneUsable + - RawMaterial - type: entity diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml index 044f9206b5..b90b0e8032 100644 --- a/Resources/Prototypes/Reagents/fun.yml +++ b/Resources/Prototypes/Reagents/fun.yml @@ -34,6 +34,14 @@ physicalDesc: reagent-physical-desc-fibrous flavor: fiber color: "#808080" + metabolisms: + Food: + effects: + - !type:SatiateHunger + conditions: + - !type:OrganType + type: Moth + - type: reagent id: BuzzochloricBees diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml new file mode 100644 index 0000000000..c0c4d6ba06 --- /dev/null +++ b/Resources/Prototypes/Species/moth.yml @@ -0,0 +1,144 @@ +- type: species + id: Moth + name: species-name-moth + roundStart: true + prototype: MobMoth + sprites: MobMothSprites + defaultSkinTone: "#ffda93" + markingLimits: MobMothMarkingLimits + dollPrototype: MobMothDummy + skinColoration: Hues + +- type: speciesBaseSprites + id: MobMothSprites + sprites: + Head: MobMothHead + Snout: MobHumanoidAnyMarking + Chest: MobMothTorso + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Tail: MobHumanoidAnyMarking + Eyes: MobMothEyes + LArm: MobMothLArm + RArm: MobMothRArm + LHand: MobMothLHand + RHand: MobMothRHand + LLeg: MobMothLLeg + RLeg: MobMothRLeg + LFoot: MobMothLFoot + RFoot: MobMothRFoot + +- type: humanoidBaseSprite + id: MobMothEyes + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: eyes + +- type: markingPoints + id: MobMothMarkingLimits + onlyWhitelisted: true + points: + Hair: + points: 0 + required: false + FacialHair: + points: 0 + required: false + Tail: + points: 1 + required: true + defaultMarkings: [ MothWingsDefault ] + Snout: + points: 1 + required: false + HeadTop: + points: 1 + required: true + defaultMarkings: [ MothAntennasDefault ] + HeadSide: + points: 1 + required: false + +- type: humanoidBaseSprite + id: MobMothHead + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobMothHeadMale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: head_m + +- type: humanoidBaseSprite + id: MobMothHeadFemale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: head_f + +- type: humanoidBaseSprite + id: MobMothTorso + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobMothTorsoMale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobMothTorsoFemale + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: torso_f + +- type: humanoidBaseSprite + id: MobMothLLeg + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobMothLHand + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobMothLArm + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobMothLFoot + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobMothRLeg + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobMothRHand + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobMothRArm + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobMothRFoot + baseSprite: + sprite: Mobs/Species/Moth/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index e9e80c3513..064f153bd1 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -255,6 +255,18 @@ variation: 0.125 pitchscale: 0.75 +- type: emoteSounds + id: UnisexMoth + params: + variation: 0.125 + sounds: + Scream: + path: /Audio/Voice/Moth/moth_scream.ogg + Laugh: + path: /Audio/Voice/Moth/moth_laugh.ogg + Chitter: + path: /Audio/Voice/Moth/moth_chitter.ogg + # body emotes - type: emoteSounds id: GeneralBodyEmotes diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index f06163c6cc..8eef5d083a 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -110,6 +110,21 @@ - squishes. - squishes! +- type: emote + id: Chitter + category: Vocal + chatMessages: [chitters.] + chatTriggers: + - chitter + - chitter. + - chitter! + - chitters + - chitters. + - chitters! + - chittered + - chittered. + - chittered! + # hand emotes - type: emote id: Clap diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 5d22537db1..acbfa1fb2e 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -167,6 +167,9 @@ - type: Tag id: CigPack +- type: Tag + id: ClothMade + - type: Tag id: ClownMask diff --git a/Resources/Textures/Mobs/Customization/moth_parts.rsi/antenna_default.png b/Resources/Textures/Mobs/Customization/moth_parts.rsi/antenna_default.png new file mode 100644 index 0000000000..915cf0e317 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/moth_parts.rsi/antenna_default.png differ diff --git a/Resources/Textures/Mobs/Customization/moth_parts.rsi/meta.json b/Resources/Textures/Mobs/Customization/moth_parts.rsi/meta.json new file mode 100644 index 0000000000..81d72f1ba7 --- /dev/null +++ b/Resources/Textures/Mobs/Customization/moth_parts.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/1d0eadcb126fc3581eed33490f4be2a88157af58#diff-69bd499bf0bc772862b15c2c9209e2eb5804a1bf72162b2ec4e75158cacb6109, modified by https://github.com/PixelTheKermit", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "wings_default", + "directions": 4 + }, + { + "name": "wings_look1", + "directions": 4 + }, + { + "name": "wings_look2", + "directions": 4 + }, + { + "name": "wings_look3", + "directions": 4 + }, + { + "name": "antenna_default", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_default.png b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_default.png new file mode 100644 index 0000000000..8124b7e689 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_default.png differ diff --git a/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look1.png b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look1.png new file mode 100644 index 0000000000..c56078f81d Binary files /dev/null and b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look1.png differ diff --git a/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look2.png b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look2.png new file mode 100644 index 0000000000..8b28d21a68 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look2.png differ diff --git a/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look3.png b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look3.png new file mode 100644 index 0000000000..f46115c604 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/moth_parts.rsi/wings_look3.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/eyes.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/eyes.png new file mode 100644 index 0000000000..4da4429f65 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/eyes.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/full.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/full.png new file mode 100644 index 0000000000..a1f944ad02 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/full.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_f.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_f.png new file mode 100644 index 0000000000..6788ca0c00 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_f.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_m.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_m.png new file mode 100644 index 0000000000..6788ca0c00 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_m.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_arm.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_arm.png new file mode 100644 index 0000000000..0dac6f22cf Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_foot.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_foot.png new file mode 100644 index 0000000000..1dfe4f9172 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_hand.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_hand.png new file mode 100644 index 0000000000..7b90385759 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_leg.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_leg.png new file mode 100644 index 0000000000..be5690b15f Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json new file mode 100644 index 0000000000..016f008fc9 --- /dev/null +++ b/Resources/Textures/Mobs/Species/Moth/parts.rsi/meta.json @@ -0,0 +1,66 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/commit/1d0eadcb126fc3581eed33490f4be2a88157af58, modified by https://github.com/PixelTheKermit", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "head_f", + "directions": 4 + }, + { + "name": "head_m", + "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_f", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_arm.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_arm.png new file mode 100644 index 0000000000..7ece2c81c7 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_foot.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_foot.png new file mode 100644 index 0000000000..1071c6bf8b Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_hand.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_hand.png new file mode 100644 index 0000000000..1302b00b0e Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_leg.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_leg.png new file mode 100644 index 0000000000..9ab0c87284 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/torso_f.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/torso_f.png new file mode 100644 index 0000000000..233dd6d722 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/torso_m.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/torso_m.png new file mode 100644 index 0000000000..a2722c2273 Binary files /dev/null and b/Resources/Textures/Mobs/Species/Moth/parts.rsi/torso_m.png differ