diff --git a/Content.Client/_DEN/Overlays/NightVisionOverlay.cs b/Content.Client/_DEN/Overlays/NightVisionOverlay.cs new file mode 100644 index 00000000000..659bc3cc5d2 --- /dev/null +++ b/Content.Client/_DEN/Overlays/NightVisionOverlay.cs @@ -0,0 +1,61 @@ +using Robust.Client.Graphics; +using Robust.Shared.Enums; +using Robust.Shared.Prototypes; + +namespace Content.Client._DEN.Overlays; + +public sealed partial class NightVisionOverlay : Overlay +{ + private static readonly ProtoId ShaderId = "NightVision"; + + [Dependency] private IPrototypeManager _prototypeManager = default!; + + public override OverlaySpace Space => OverlaySpace.WorldSpace; + public override bool RequestScreenTexture => true; + private readonly ShaderInstance _nightVisionShader; + + private Color _tintColor = Color.White; + + public NightVisionOverlay() + { + IoCManager.InjectDependencies(this); + _nightVisionShader = _prototypeManager.Index(ShaderId).InstanceUnique(); + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (ScreenTexture == null) + return; + + _nightVisionShader.SetParameter("SCREEN_TEXTURE", ScreenTexture); + + var handle = args.WorldHandle; + handle.UseShader(_nightVisionShader); + handle.DrawRect(args.WorldBounds, _tintColor); + handle.UseShader(null); + } + + /// + /// Sets the tint color of this overlay. + /// + /// The tint color. + public void SetColorTint(Color tint) + { + _tintColor = tint; + } + + public void SetCurve(float? lowCurve, float? midCurve, float? highCurve, float? curveAmount) + { + if (lowCurve != null) + _nightVisionShader.SetParameter("low_curve", lowCurve.Value); + + if (midCurve != null) + _nightVisionShader.SetParameter("mid_curve", midCurve.Value); + + if (highCurve != null) + _nightVisionShader.SetParameter("high_curve", highCurve.Value); + + if (curveAmount != null) + _nightVisionShader.SetParameter("curve_amount", curveAmount.Value); + } +} diff --git a/Content.Client/_DEN/Overlays/NightVisionOverlaySystem.cs b/Content.Client/_DEN/Overlays/NightVisionOverlaySystem.cs new file mode 100644 index 00000000000..8880937fdbd --- /dev/null +++ b/Content.Client/_DEN/Overlays/NightVisionOverlaySystem.cs @@ -0,0 +1,48 @@ +using Content.Client.Overlays; +using Content.Shared._DEN.Overlays.Components; +using Content.Shared.Inventory.Events; +using Robust.Client.Graphics; +using Robust.Shared.Utility; + +namespace Content.Client._DEN.Overlays; + +public sealed partial class NightVisionOverlaySystem : EquipmentHudSystem +{ + [Dependency] private ILightManager _lightManager = default!; + [Dependency] private IOverlayManager _overlayMan = default!; + + private NightVisionOverlay _overlay = default!; + + public override void Initialize() + { + base.Initialize(); + + _overlay = new(); + } + + protected override void UpdateInternal(RefreshEquipmentHudEvent component) + { + base.UpdateInternal(component); + + _overlayMan.AddOverlay(_overlay); + _lightManager.DrawLighting = false; + + var comps = component.Components; + if (comps.TryFirstOrDefault(out var comp)) + { + _overlay.SetColorTint(comp.TintColor); + _overlay.SetCurve(comp.LowCurve, comp.MidCurve, comp.HighCurve, comp.CurveAmount); + return; + } + + _overlay.SetColorTint(NightVisionOverlayComponent.DefaultTintColor); + } + + protected override void DeactivateInternal() + { + base.DeactivateInternal(); + + _overlayMan.RemoveOverlay(_overlay); + _lightManager.DrawLighting = true; + } +} diff --git a/Content.Server/_DEN/Flash/EntitySystems/BlindedByFlashingSystem.cs b/Content.Server/_DEN/Flash/EntitySystems/BlindedByFlashingSystem.cs new file mode 100644 index 00000000000..084c7912d71 --- /dev/null +++ b/Content.Server/_DEN/Flash/EntitySystems/BlindedByFlashingSystem.cs @@ -0,0 +1,38 @@ + +using Content.Shared._DEN.Flash.Components; +using Content.Shared.Eye.Blinding.Systems; +using Content.Shared.Flash; +using Robust.Shared.Random; + +namespace Content.Server._DEN.Flash.EntitySystems; + +public sealed partial class BlindedByFlashingSystem : EntitySystem +{ + [Dependency] private BlindableSystem _blindable = default!; + [Dependency] private IRobustRandom _random = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAfterFlashed); + } + + /// + /// Add eye damage to this entity when they are flashed. + /// + /// The entity that receives eye damage when flashed. + public void OnAfterFlashed(Entity ent, ref AfterFlashedEvent args) + { + if (ent.Owner != args.Target + || ent.Comp.Damage == 0 + || ent.Comp.Chance <= 0.0f) + return; + + if (ent.Comp.Chance < 1.0f + && _random.NextFloat() > ent.Comp.Chance) + return; + + _blindable.AdjustEyeDamage(ent.Owner, ent.Comp.Damage); + } +} diff --git a/Content.Shared/Flash/SharedFlashSystem.cs b/Content.Shared/Flash/SharedFlashSystem.cs index 6dab6277835..7911dabd41a 100644 --- a/Content.Shared/Flash/SharedFlashSystem.cs +++ b/Content.Shared/Flash/SharedFlashSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Shared._DEN.Flash.EntitySystems; using Content.Shared.Charges.Components; using Content.Shared.Charges.Systems; using Content.Shared.Clothing.Components; @@ -185,6 +186,16 @@ public void Flash( if (attempt.Cancelled) return; + // Begin DEN - Flash modifiers + var flashMod = new FlashModifierEvent(target, user, used); + RaiseLocalEvent(target, ref flashMod); + + flashDuration *= Math.Max(flashMod.FlashDurationModifier, 0.0f); + stunDuration *= Math.Max(flashMod.StunDurationModifier, 0.0f); + slowTo *= flashMod.SpeedModifier; + slowTo = Math.Clamp(slowTo, 0.0f, 1.0f); // Should not be faster than base speed, or negative + // End DEN + // don't paralyze, slowdown or convert to rev if the target is immune to flashes if (!_statusEffectsSystem.TryAddStatusEffect(target, FlashedKey, flashDuration, true)) return; diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 72eb734b2b1..641750a0956 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -1,3 +1,4 @@ +using Content.Shared._DEN.Overlays.Components; using Content.Shared.Armor; using Content.Shared.Atmos; using Content.Shared.Chat; @@ -102,6 +103,10 @@ public void InitializeRelay() SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(RefRelayInventoryEvent); + // Begin DEN + SubscribeLocalEvent>(RefRelayInventoryEvent); + // End DEN + SubscribeLocalEvent>(OnGetEquipmentVerbs); SubscribeLocalEvent>(OnGetInnateVerbs); diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index ae249316217..a1aa3689f08 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Numerics; +using Content.Shared._DEN.Movement.Components; using Content.Shared.ActionBlocker; using Content.Shared.CCVar; using Content.Shared.Friction; @@ -48,6 +49,7 @@ public abstract partial class SharedMoverController : VirtualController [Dependency] private SharedTransformSystem _transform = default!; [Dependency] private TagSystem _tags = default!; + [Dependency] protected EntityQuery BarestepModifierQuery = default!; // DEN - Barestep sounds [Dependency] protected EntityQuery CanMoveInAirQuery = default!; [Dependency] protected EntityQuery FootstepModifierQuery = default!; [Dependency] protected EntityQuery FTLQuery = default!; @@ -552,6 +554,14 @@ private bool TryGetSound( return sound != null; } + // DEN start: Barestep modifiers for shoeless walking + if (shoes == null && BarestepModifierQuery.TryComp(uid, out var barestepModifier)) + { + sound = barestepModifier.FootstepSoundCollection; + return sound != null; + } + // DEN end + return TryGetFootstepSound(uid, xform, shoes != null, out sound, tileDef: tileDef); } diff --git a/Content.Shared/_DEN/Flash/Components/BlindedByFlashingComponent.cs b/Content.Shared/_DEN/Flash/Components/BlindedByFlashingComponent.cs new file mode 100644 index 00000000000..3abac07cc48 --- /dev/null +++ b/Content.Shared/_DEN/Flash/Components/BlindedByFlashingComponent.cs @@ -0,0 +1,20 @@ +namespace Content.Shared._DEN.Flash.Components; + +/// +/// Entities with this component will take eye damage when they are flashed. +/// +[RegisterComponent] +public sealed partial class BlindedByFlashingComponent : Component +{ + /// + /// How much eye damage this entity receives when flashed. + /// + [DataField] + public int Damage = 1; + + /// + /// The chance of this entity receiving eye damage when flashed. + /// + [DataField] + public float Chance = 1.0f; +} diff --git a/Content.Shared/_DEN/Flash/Components/FlashedModifierComponent.cs b/Content.Shared/_DEN/Flash/Components/FlashedModifierComponent.cs new file mode 100644 index 00000000000..419e7ca648a --- /dev/null +++ b/Content.Shared/_DEN/Flash/Components/FlashedModifierComponent.cs @@ -0,0 +1,26 @@ +namespace Content.Shared._DEN.Flash.Components; + +/// +/// Entities with this component will modify the stats of an incoming flash. +/// +[RegisterComponent] +public sealed partial class FlashedModifierComponent : Component +{ + /// + /// A multiplier to the duration of flashes received by this entity. + /// + [DataField("durationMod")] + public float FlashDurationModifier = 1.0f; + + /// + /// A motiplier to the stun duration of flashes received by this entity. + /// + [DataField("stunMod")] + public float StunDurationModifier = 1.0f; + + /// + /// A multiplier to the movement speed of this entity when they are flashed. + /// + [DataField("speedMod")] + public float SpeedModifier = 1.0f; +} diff --git a/Content.Shared/_DEN/Flash/EntitySystems/SharedFlashModifierSystem.cs b/Content.Shared/_DEN/Flash/EntitySystems/SharedFlashModifierSystem.cs new file mode 100644 index 00000000000..67e67d7269d --- /dev/null +++ b/Content.Shared/_DEN/Flash/EntitySystems/SharedFlashModifierSystem.cs @@ -0,0 +1,48 @@ +using Content.Shared._DEN.Flash.Components; + +namespace Content.Shared._DEN.Flash.EntitySystems; + +public sealed partial class SharedFlashModifierSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnFlashModified); + } + + /// + /// Modifies the stats of an incoming flash on this entity. + /// + /// The entity being flashed. + private void OnFlashModified(Entity ent, ref FlashModifierEvent args) + { + args.FlashDurationModifier *= ent.Comp.FlashDurationModifier; + args.StunDurationModifier *= ent.Comp.StunDurationModifier; + args.SpeedModifier *= ent.Comp.SpeedModifier; + } +} + +/// +/// Event used to modify the stats associated with a particular flash attempt. +/// +[ByRefEvent] +public record struct FlashModifierEvent(EntityUid Target, + EntityUid? User, + EntityUid? Used) +{ + /// + /// A multiplier to the duration of flashes received by this entity. + /// + public float FlashDurationModifier = 1.0f; + + /// + /// A motiplier to the stun duration of flashes received by this entity. + /// + public float StunDurationModifier = 1.0f; + + /// + /// A multiplier to the movement speed of this entity when they are flashed. + /// + public float SpeedModifier = 1.0f; +} diff --git a/Content.Shared/_DEN/Movement/Components/BarestepModifierComponent.cs b/Content.Shared/_DEN/Movement/Components/BarestepModifierComponent.cs new file mode 100644 index 00000000000..91f593a9324 --- /dev/null +++ b/Content.Shared/_DEN/Movement/Components/BarestepModifierComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Movement.Components; + +/// +/// Changes footstep sounds ONLY when this entity is not wearing shoes. +/// +/// +/// This is similar to FootstepModifierComponent. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class BarestepModifierComponent : Component +{ + [DataField, AutoNetworkedField] + public SoundSpecifier? FootstepSoundCollection; +} diff --git a/Content.Shared/_DEN/Overlays/Components/NightVisionOverlayComponent.cs b/Content.Shared/_DEN/Overlays/Components/NightVisionOverlayComponent.cs new file mode 100644 index 00000000000..e05f04a2c41 --- /dev/null +++ b/Content.Shared/_DEN/Overlays/Components/NightVisionOverlayComponent.cs @@ -0,0 +1,43 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DEN.Overlays.Components; + +/// +/// When applied to an entity or a clothing item, this gives the entity (or wearer) +/// a "night vision" shader. This shader allows you to see better in dark environments. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class NightVisionOverlayComponent : Component +{ + public readonly static Color DefaultTintColor = Color.FromHex("#888"); + + /// + /// What color to tint the night vision effect. + /// + [DataField] + public Color TintColor = DefaultTintColor; + + /// + /// The minimum bound of lightness that this shader will begin rebalancing values. + /// + [DataField] + public float? LowCurve = null; + + /// + /// The point at which the "curve" is highest - what lightness increases the curve the most. + /// + [DataField] + public float? MidCurve = null; + + /// + /// The upper bound of lightness that this shader will begin rebalancing values. + /// + [DataField] + public float? HighCurve = null; + + /// + /// The amount that lightness values will be increased at its peak. + /// + [DataField] + public float? CurveAmount = null; +} diff --git a/Resources/Locale/en-US/_DEN/chat/managers/chat-manager.ftl b/Resources/Locale/en-US/_DEN/chat/managers/chat-manager.ftl index 8122b0b20e0..9bf1d225267 100644 --- a/Resources/Locale/en-US/_DEN/chat/managers/chat-manager.ftl +++ b/Resources/Locale/en-US/_DEN/chat/managers/chat-manager.ftl @@ -4,4 +4,11 @@ chat-manager-entity-subtle-wrap-message = [italic]{ PROPER($entity) -> [true] {CAPITALIZE($entityName)} {$message}[/italic] } -chat-manager-entity-subtle-ooc-wrap-message = [italic](OOC) {$entityName} {$message}[/italic] \ No newline at end of file +chat-manager-entity-subtle-ooc-wrap-message = [italic](OOC) {$entityName} {$message}[/italic] + +# speech verbs + +chat-speech-verb-name-tajaran = Tajaran +chat-speech-verb-tajaran-1 = meows +chat-speech-verb-tajaran-2 = mews +chat-speech-verb-tajaran-3 = purrs diff --git a/Resources/Locale/en-US/_DEN/markings/tajaran.ftl b/Resources/Locale/en-US/_DEN/markings/tajaran.ftl new file mode 100644 index 00000000000..f0561420e82 --- /dev/null +++ b/Resources/Locale/en-US/_DEN/markings/tajaran.ftl @@ -0,0 +1,77 @@ +# Ears + +marking-TajaranEarsRetro = Tajaran Ears +marking-TajaranEarsRetro-ears = Ear + +marking-TajaranEarsRetroNear = Tajaran Ears, Near +marking-TajaranEarsRetro-ears_near = Ear + +marking-TajaranEarsSeparate = Tajaran Ears, Separated +marking-TajaranEarsSeparate-outears = Outer ear +marking-TajaranEarsSeparate-inears = Inner ear + +marking-TajaranEarsSeparateNear = Tajaran Ears, Separated, Near +marking-TajaranEarsSeparateNear-outears_near = Outer ear +marking-TajaranEarsSeparateNear-inears_near = Inner ear + +# Tails + +marking-TajaranTailRetro = Tajaran Tail +marking-TajaranTailRetro-tail = Tail + +marking-TajaranTailRetroRings = Tajaran Tail, Rings +marking-TajaranTailRetroRings-tail = Tail +marking-TajaranTailRetroRings-tail_rings = Rings + +marking-TajaranTailLeopard = Leopard Tail +marking-TajaranTailLeopard-leopard_primary = Tail +marking-TajaranTailLeopard-leopard_secondary = Spots + +## Animated + +marking-TajaranTailRetroAnimated = Tajaran Tail (Animated) +marking-TajaranTailRetroAnimated-tail = tail_anim + +marking-TajaranTailRetroRingsAnimated = Tajaran Tail, Rings (Animated) +marking-TajaranTailRetroRingsAnimated-tail_anim = Tail +marking-TajaranTailRetroRingsAnimated-tail_anim_rings = Rings + +marking-TajaranTailLeopardAnimated = Leopard Tail (Animated) +marking-TajaranTailLeopardAnimated-leotailanim_primary = Tail +marking-TajaranTailLeopardAnimated-leotailanim_secondary = Spots + +# Head + +marking-TajaranHeadNose = Tajaran Nose +marking-TajaranHeadNose-nose = Nose + +marking-TajaranHeadMuzzle = Tajaran Muzzle +marking-TajaranHeadMuzzle-muzzle = Muzzle + +marking-TajaranHeadMuzzleLarge = Tajaran Muzzle, Large +marking-TajaranHeadMuzzleLarge-muzzle_large = Muzzle + +marking-TajaranHeadPoints = Tajaran Points Pattern +marking-TajaranHeadPoints-points = Points + +marking-TajaranHeadTiger = Tajaran Tiger Pattern +marking-TajaranHeadTiger-tiger_face = Stripes + +marking-TajaranHeadTigerAlt = Tajaran Tiger Pattern, Alt +marking-TajaranHeadTigerAlt-tiger_head = Stripes + +marking-TajaranHeadPatches = Tajaran Patches +marking-TajaranHeadPatches-patch = Patches + +# Torso + +marking-TajaranTorsoBelly = Tajaran Belly +marking-TajaranTorsoBelly-belly = Belly + +marking-TajaranTorsoCrest = Tajaran Chest Crest +marking-TajaranTorsoCrest-crest = Crest + +marking-TajaranTorsoFullBelly = Tajaran Belly, Full +marking-TajaranTorsoFullBelly-crest = fullbelly + +# Limbs diff --git a/Resources/Locale/en-US/_DEN/species/physiology-description.ftl b/Resources/Locale/en-US/_DEN/species/physiology-description.ftl index e53a882208b..48c75e3890a 100644 --- a/Resources/Locale/en-US/_DEN/species/physiology-description.ftl +++ b/Resources/Locale/en-US/_DEN/species/physiology-description.ftl @@ -18,7 +18,7 @@ physiology-description-species-base-vox = vox physiology-description-species-base-vulpkanin = vulpkanin ## den species -# TODO +physiology-description-species-base-tajaran = tajaran # SPECIES PREFIXES # TODO diff --git a/Resources/Locale/en-US/_DEN/species/species.ftl b/Resources/Locale/en-US/_DEN/species/species.ftl new file mode 100644 index 00000000000..a2433c2399e --- /dev/null +++ b/Resources/Locale/en-US/_DEN/species/species.ftl @@ -0,0 +1 @@ +species-name-tajaran = Tajaran diff --git a/Resources/Migrations/_DEN/markings.yml b/Resources/Migrations/_DEN/markings.yml new file mode 100644 index 00000000000..58f47ff6a72 --- /dev/null +++ b/Resources/Migrations/_DEN/markings.yml @@ -0,0 +1,8 @@ +# This dictionary maps "old" marking IDs to "new" marking IDs. +# When a player imports a character profile, all old markings will be translated to use these IDs. + +TajaranLeoTailNoAnim: TajaranTailLeopard + +TajaranTailAnim: TajaranTailRetroAnimated +TajaranTailAnimRings: TajaranTailRetroRingsAnimated +TajaranLeoTailAnim: TajaranTailLeopardAnimated diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index c13dfa61071..3380406784b 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -1,7 +1,7 @@ - type: guideEntry id: Species name: guide-entry-species - text: "/ServerInfo/_MACRO/Guidebook/Mobs/Species.xml" #macro - redirected to our directory + text: "/ServerInfo/_DEN/Guidebook/Mobs/Species.xml" # DEN - use den directory children: # - Ant # macro - uncomment to enable # - Allulalo # macro - uncomment to enable @@ -16,6 +16,7 @@ - Moth - Reptilian - SlimePerson + - Tajaran # den - Vox - Vulpkanin diff --git a/Resources/Prototypes/_DEN/Body/Species/tajaran.yml b/Resources/Prototypes/_DEN/Body/Species/tajaran.yml new file mode 100644 index 00000000000..259ca4f674a --- /dev/null +++ b/Resources/Prototypes/_DEN/Body/Species/tajaran.yml @@ -0,0 +1,257 @@ +- type: markingsGroup + parent: Undergarments + id: Tajaran + onlyGroupWhitelisted: true + limits: + enum.HumanoidVisualLayers.Hair: + limit: 1 + required: false + onlyGroupWhitelisted: false + enum.HumanoidVisualLayers.FacialHair: + limit: 1 + required: false + onlyGroupWhitelisted: false + enum.HumanoidVisualLayers.Tail: + limit: 1 + required: true + default: [ TajaranTailRetro ] + enum.HumanoidVisualLayers.Chest: + limit: 4 + required: false + enum.HumanoidVisualLayers.Snout: + limit: 1 + required: true + enum.HumanoidVisualLayers.HeadTop: + limit: 4 + required: true + default: [ TajaranEarsRetro ] + enum.HumanoidVisualLayers.HeadSide: + limit: 4 + required: false + enum.HumanoidVisualLayers.LArm: + limit: 4 + required: false + enum.HumanoidVisualLayers.RArm: + limit: 4 + required: false + enum.HumanoidVisualLayers.LHand: + limit: 4 + required: false + enum.HumanoidVisualLayers.RHand: + limit: 4 + required: false + enum.HumanoidVisualLayers.LLeg: + limit: 4 + required: false + enum.HumanoidVisualLayers.RLeg: + limit: 4 + required: false + enum.HumanoidVisualLayers.LFoot: + limit: 4 + required: false + enum.HumanoidVisualLayers.RFoot: + limit: 4 + required: false + +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceTajaran + name: tajaran appearance + components: + - type: Inventory + speciesId: tajaran + # Tajaran currently do not have displacement maps. + - type: InitialBody + organs: + Torso: OrganTajaranTorso + Head: OrganTajaranHead + ArmLeft: OrganTajaranArmLeft + ArmRight: OrganTajaranArmRight + HandRight: OrganTajaranHandRight + HandLeft: OrganTajaranHandLeft + LegLeft: OrganTajaranLegLeft + LegRight: OrganTajaranLegRight + FootLeft: OrganTajaranFootLeft + FootRight: OrganTajaranFootRight + Brain: OrganTajaranBrain + Eyes: OrganTajaranEyes + Tongue: OrganTajaranTongue + Appendix: OrganTajaranAppendix + Ears: OrganTajaranEars + Lungs: OrganTajaranLungs + Heart: OrganTajaranHeart + Stomach: OrganTajaranStomach + Liver: OrganTajaranLiver + Kidneys: OrganTajaranKidneys + - type: HumanoidProfile + species: Tajaran + +- type: entity + parent: + - AppearanceTajaran + - BaseSpeciesMobOrganic + id: MobTajaran + name: Urist McPurrs + suffix: Tajaran + components: + - type: Speech + speechSounds: Alto + speechVerb: Tajaran + allowedEmotes: [] # TODO + - type: TypingIndicator + proto: default # TODO + - type: Vocal + sounds: + Male: MaleHuman # TODO + Female: FemaleHuman # TODO + Unsexed: MaleHuman # TODO + - type: MeleeWeapon + soundHit: + collection: AlienClaw + angle: 30 + animation: WeaponArcClaw + damage: + types: + Slash: 5 + - type: Wagging + - type: ProtectedFromStepTriggers # Can step on glass shards and mousetraps safely. + - type: BarestepModifier # Silent when walking without shoes. + footstepSoundCollection: null + - type: FlashedModifier # Tajaran are sensitive to flashes. + durationMod: 1.5 # 50% longer duration + stunMod: 1.5 # 50% longer duration + speedMod: 0.8 # 20% slower speed - only if not stunned. + - type: BlindedByFlashing # Tajaran are sometimes blinded by flashes. + damage: 1 + chance: 0.35 + - type: PhysiologyDescription + baseLabel: physiology-description-species-base-tajaran + +- type: entity + parent: OrganBase + id: OrganTajaran + abstract: true + suffix: Tajaran + +- type: entity + id: OrganTajaranMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal ] + +- type: entity + parent: OrganTajaran + id: OrganTajaranInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganTajaran + id: OrganTajaranExternal + abstract: true + components: + - type: Sprite + sprite: _EE/Mobs/Species/Tajaran/parts.rsi + - type: VisualOrgan + data: + sprite: _EE/Mobs/Species/Tajaran/parts.rsi + - type: VisualOrganMarkings + markingData: + group: Tajaran + +- type: entity + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganTajaranExternal ] + id: OrganTajaranTorso + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Tail + +- type: entity + parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganTajaranExternal ] + id: OrganTajaranHead + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Snout + - enum.HumanoidVisualLayers.HeadTop + - enum.HumanoidVisualLayers.HeadSide + +- type: entity + parent: [ OrganBaseArmLeft, OrganTajaranExternal ] + id: OrganTajaranArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganTajaranExternal ] + id: OrganTajaranArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganTajaranExternal ] + id: OrganTajaranHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganTajaranExternal ] + id: OrganTajaranHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganTajaranExternal ] + id: OrganTajaranLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganTajaranExternal ] + id: OrganTajaranLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganTajaranExternal ] + id: OrganTajaranFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganTajaranExternal ] + id: OrganTajaranFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranBrain + +- type: entity + parent: [ OrganBaseEyes, OrganTajaranInternal, OrganTajaranExternal ] + id: OrganTajaranEyes + components: + - type: VisualOrgan + data: + sprite: Mobs/Customization/eyes.rsi + +- type: entity + parent: [ OrganBaseTongue, OrganTajaranInternal ] + id: OrganTajaranTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranEars + +- type: entity + parent: [ OrganBaseLungs, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranLungs + +- type: entity + parent: [ OrganBaseHeart, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranHeart + +- type: entity + parent: [ OrganBaseStomach, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranKidneys diff --git a/Resources/Prototypes/_DEN/Entities/Mobs/Customization/Markings/tajaran.yml b/Resources/Prototypes/_DEN/Entities/Mobs/Customization/Markings/tajaran.yml new file mode 100644 index 00000000000..397da0b4485 --- /dev/null +++ b/Resources/Prototypes/_DEN/Entities/Mobs/Customization/Markings/tajaran.yml @@ -0,0 +1,210 @@ +# === Parts === + +# region Ears + +- type: marking + id: TajaranEarsRetro + bodyPart: HeadTop + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/ears.rsi + state: ears + +- type: marking + id: TajaranEarsRetroNear + bodyPart: HeadTop + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/ears.rsi + state: ears_near + +- type: marking + id: TajaranEarsSeparate + bodyPart: HeadTop + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/ears.rsi + state: outears + - sprite: _EE/Mobs/Customization/Tajaran/ears.rsi + state: inears + +- type: marking + id: TajaranEarsSeparateNear + bodyPart: HeadTop + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/ears.rsi + state: outears_near + - sprite: _EE/Mobs/Customization/Tajaran/ears.rsi + state: inears_near + +# endregion Ears +# region Tails + +- type: marking + id: TajaranTailRetro + bodyPart: Tail + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/tails.rsi + state: tail + +- type: marking + id: TajaranTailRetroRings + bodyPart: Tail + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/tails.rsi + state: tail + - sprite: _EE/Mobs/Customization/Tajaran/tails.rsi + state: tail_rings + +- type: marking + id: TajaranTailLeopard + bodyPart: Tail + groupWhitelist: [Tajaran] + sprites: + - sprite: _DEN/Mobs/Customization/Tajaran/leotail.rsi + state: leopard_primary + - sprite: _DEN/Mobs/Customization/Tajaran/leotail.rsi + state: leopard_secondary + +### Animated + +- type: marking + id: TajaranTailRetroAnimated + bodyPart: Tail + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/tails.rsi + state: tail_anim + +- type: marking + id: TajaranTailRetroRingsAnimated + bodyPart: Tail + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/tails.rsi + state: tail_anim + - sprite: _EE/Mobs/Customization/Tajaran/tails.rsi + state: tail_anim_rings + +- type: marking + id: TajaranTailLeopardAnimated + bodyPart: Tail + groupWhitelist: [Tajaran] + sprites: + - sprite: _DEN/Mobs/Customization/Tajaran/leotail.rsi + state: leotailanim_primary + - sprite: _DEN/Mobs/Customization/Tajaran/leotail.rsi + state: leotailanim_secondary + +# endregion Tails + +# === Overlays === + +# region Head + +- type: marking + id: TajaranHeadNose + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: nose + +- type: marking + id: TajaranHeadMuzzle + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: muzzle + +- type: marking + id: TajaranHeadMuzzleLarge + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: muzzle_large + +- type: marking + id: TajaranHeadPoints + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: points + +- type: marking + id: TajaranHeadTiger + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: tiger_face + +- type: marking + id: TajaranHeadTigerAlt + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: tiger_head + +- type: marking + id: TajaranHeadPatches + bodyPart: Head + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/head.rsi + state: patch + +# endregion Head +# region Torso + +- type: marking + id: TajaranTorsoBelly + bodyPart: Chest + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/torso.rsi + state: belly + +- type: marking + id: TajaranTorsoCrest + bodyPart: Chest + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/torso.rsi + state: crest + +- type: marking + id: TajaranTorsoFullBelly + bodyPart: Chest + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/torso.rsi + state: fullbelly + +# endregion Torso +# region Limbs + +- type: marking + id: TajaranOverlayPatch # TODO split + bodyPart: Chest + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/overlays.rsi + state: patch + +- type: marking + id: TajaranOverlayPoints # TODO split + bodyPart: Chest + groupWhitelist: [Tajaran] + sprites: + - sprite: _EE/Mobs/Customization/Tajaran/overlays.rsi + state: points + +# endregion Limbs diff --git a/Resources/Prototypes/_DEN/Guidebook/species.yml b/Resources/Prototypes/_DEN/Guidebook/species.yml new file mode 100644 index 00000000000..70966df55c2 --- /dev/null +++ b/Resources/Prototypes/_DEN/Guidebook/species.yml @@ -0,0 +1,4 @@ +- type: guideEntry + id: Tajaran + name: Tajaran + text: "/ServerInfo/_DEN/Guidebook/Mobs/Tajaran.xml" diff --git a/Resources/Prototypes/_DEN/Shaders/nightvision.yml b/Resources/Prototypes/_DEN/Shaders/nightvision.yml new file mode 100644 index 00000000000..945a0d3d7d1 --- /dev/null +++ b/Resources/Prototypes/_DEN/Shaders/nightvision.yml @@ -0,0 +1,4 @@ +- type: shader + id: NightVision + kind: source + path: "/Textures/_DEN/Shaders/nightvision.swsl" diff --git a/Resources/Prototypes/_DEN/Species/tajaran.yml b/Resources/Prototypes/_DEN/Species/tajaran.yml new file mode 100644 index 00000000000..5c6d394a87f --- /dev/null +++ b/Resources/Prototypes/_DEN/Species/tajaran.yml @@ -0,0 +1,25 @@ +- type: species + id: Tajaran + name: species-name-tajaran + roundStart: true + prototype: MobTajaran + defaultSkinTone: "#c27c42" + dollPrototype: AppearanceTajaran + skinColoration: Hues + +# Tajaran are a species of anthropomorphic cat-people. +# +# TODO: They have sensitive eyesight, allowing them to see in the dark (night vision) - +# however, this also makes them especially vulnerable to flashes. +# +# They have animal digestion and metabolism, allowing them to consume raw meat safely - +# however, allicin (onions, garlic) and theobromine (coffee, chocolate, tea) +# will poison them. +# +# Tajaran have a light step - their bare footsteps have no sounds, and they can +# walk around barefoot without tripping mousetraps or hurting themselves on glass shards. +# +# Their unarmed attacks deal slash damage instead of blunt. +# TODO: Their fur coats make them more resistant to the cold, but more vulnerable to heat. +# +# TODO: Tajaran are flexible enough to be stored in duffel bags. diff --git a/Resources/Prototypes/_DEN/Voice/speech_verbs.yml b/Resources/Prototypes/_DEN/Voice/speech_verbs.yml new file mode 100644 index 00000000000..d30f7ce9a68 --- /dev/null +++ b/Resources/Prototypes/_DEN/Voice/speech_verbs.yml @@ -0,0 +1,7 @@ +- type: speechVerb + id: Tajaran + name: chat-speech-verb-name-tajaran + speechVerbStrings: + - chat-speech-verb-tajaran-1 + - chat-speech-verb-tajaran-2 + - chat-speech-verb-tajaran-3 diff --git a/Resources/ServerInfo/_DEN/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/_DEN/Guidebook/Mobs/Species.xml new file mode 100644 index 00000000000..ebfb723ff5b --- /dev/null +++ b/Resources/ServerInfo/_DEN/Guidebook/Mobs/Species.xml @@ -0,0 +1,23 @@ + + # Species + + Nanotrasen employs a variety of sapient species. + + + + + + + + + + + + + + + + + + + diff --git a/Resources/ServerInfo/_DEN/Guidebook/Mobs/Tajaran.xml b/Resources/ServerInfo/_DEN/Guidebook/Mobs/Tajaran.xml new file mode 100644 index 00000000000..79b9d526c97 --- /dev/null +++ b/Resources/ServerInfo/_DEN/Guidebook/Mobs/Tajaran.xml @@ -0,0 +1,18 @@ + + # Tajaran + + + + + + Tajara (singular: Tajaran) are a species of anthropomorphic felines. They are highly expressive, often emoting using their tail and ears. Most Tajara have fur and claws. Their claws are used to deal Slash damage with their unarmed attacks. + + Tajara possess fairly standard mammal-like physiology. They have red blood and the sensitive digestion of an omnivorous animal - they can consume raw meat, eggs and blood safely, but will be poisoned by allicin (garlic, onions) and theobromine (chocolate, coffee, tea). + + Tajara have exceptionally sensitive eyesight. [color=#ffa500]Flashes will stun them for 50% longer[/color], and may even cause them [color=#ffa500]eye damage.[/color] + + The thick fur coat of most tajara offers them [color=#1e90ff]natural protection against cold environments.[/color] Conversely, their fur makes it difficult for them to disperse heat from their bodies, rendering them [color=#ffa500]susceptible to overheating.[/color] + + In addition, tajara possess a light step - while barefoot, [color=#1e90ff]they will not produce any sounds with their steps[/color], and they can even [color=#1e90ff]safely walk over mousetraps and glass shards without hurting themselves.[/color] + + diff --git a/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leopard_primary.png b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leopard_primary.png new file mode 100644 index 00000000000..791420805d1 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leopard_primary.png differ diff --git a/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leopard_secondary.png b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leopard_secondary.png new file mode 100644 index 00000000000..38be4397a03 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leopard_secondary.png differ diff --git a/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leotailanim_primary.png b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leotailanim_primary.png new file mode 100644 index 00000000000..af03a088ab1 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leotailanim_primary.png differ diff --git a/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leotailanim_secondary.png b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leotailanim_secondary.png new file mode 100644 index 00000000000..0b44daeb2f4 Binary files /dev/null and b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/leotailanim_secondary.png differ diff --git a/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/meta.json b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/meta.json new file mode 100644 index 00000000000..bed543c6f2f --- /dev/null +++ b/Resources/Textures/_DEN/Mobs/Customization/Tajaran/leotail.rsi/meta.json @@ -0,0 +1,39 @@ +{ + "version": 1, + "license": "CC-BY-NC-3.0", + "copyright": "Taken from Skyat-TG Repo, original owner unknown - https://github.com/Skyrat-SS13/Skyrat-tg.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "leopard_primary", + "directions": 4 + }, + { + "name": "leopard_secondary", + "directions": 4 + }, + { + "name": "leotailanim_primary", + "directions": 4, + "delays": [ + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2] + ] + }, + { + "name": "leotailanim_secondary", + "directions": 4, + "delays": [ + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2], + [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.05, 0.05, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2] + ] + } + ] +} diff --git a/Resources/Textures/_DEN/Shaders/nightvision.swsl b/Resources/Textures/_DEN/Shaders/nightvision.swsl new file mode 100644 index 00000000000..b139f6ed9f4 --- /dev/null +++ b/Resources/Textures/_DEN/Shaders/nightvision.swsl @@ -0,0 +1,40 @@ +// Night vision shader. +// "Grayscale", but curved so that mid-range colors are lighter. +// Light colors and "close-to-black" are less affected. + +light_mode unshaded; + +uniform sampler2D SCREEN_TEXTURE; + +// Color ranges are curved based on value, to boost dark colors +// Lower bound of curve - when adjustment "starts" +uniform highp float low_curve = 0.08; +// Midpoint of curve - when the adjustment is at its highest +uniform highp float mid_curve = 0.2; +// Upper bound of surve - when adjustment "ends" +uniform highp float high_curve = 0.6; +// How much "boost" the curved grays get +uniform highp float curve_amount = 0.3; + +void fragment() { + highp vec4 color = zTextureSpec(SCREEN_TEXTURE, UV); + highp vec3 gray = vec3(zGrayscale(color.rgb)); + + // curve values based on lightness + highp vec3 curvedColor = curve_gray(gray); + + COLOR = vec4(curvedColor, color.a); +} + +highp vec3 curve_gray(highp vec3 c) +{ + highp float value = c.r; + + highp float lowBoost = smoothstep(low_curve, mid_curve, value); + highp float highBoost = smoothstep(mid_curve, high_curve, value); + highp float boost = lowBoost * (1.0 - highBoost); + highp float curved = c.r + (boost * curve_amount); + curved = clamp(curved, 0.0, 1.0); + + return vec3(curved); +} diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/ears.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/ears.png new file mode 100644 index 00000000000..7444faecf09 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/ears.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/ears_near.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/ears_near.png new file mode 100644 index 00000000000..c069ac4ab41 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/ears_near.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/inears.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/inears.png new file mode 100644 index 00000000000..c335e704e2b Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/inears.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/inears_near.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/inears_near.png new file mode 100644 index 00000000000..e7af318b33a Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/inears_near.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/meta.json new file mode 100644 index 00000000000..34b9f717da8 --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/meta.json @@ -0,0 +1,43 @@ +{ + "version": 1, + "copyright": "Creator was not supplied, oldest reference to markings ('patch') tracked to KasparoVy @ https://github.com/ParadiseSS13/Paradise/commit/3610cfd4ea7e9bffc804320851f0b0a625db1dba, meanwhile ears are made by Cael Aislinn in commit https://github.com/ParadiseSS13/Paradise/commit/9e4539fdce01f00ed7e47ca1174a1470ac5fe77c. Minor tweaks and '_near' versions by SX-7", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "ears", + "directions": 4 + }, + { + "name": "inears", + "directions": 4 + }, + { + "name": "outears", + "directions": 4 + }, + { + "name": "patch", + "directions": 4 + }, + { + "name": "ears_near", + "directions": 4 + }, + { + "name": "inears_near", + "directions": 4 + }, + { + "name": "outears_near", + "directions": 4 + }, + { + "name": "patch_near", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/outears.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/outears.png new file mode 100644 index 00000000000..4f5041880bc Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/outears.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/outears_near.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/outears_near.png new file mode 100644 index 00000000000..54583699fdb Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/outears_near.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/patch.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/patch.png new file mode 100644 index 00000000000..591dde13ee3 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/patch.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/patch_near.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/patch_near.png new file mode 100644 index 00000000000..1595303ac95 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/ears.rsi/patch_near.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/basic_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/basic_inner.png new file mode 100644 index 00000000000..57bcdaa8b95 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/basic_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/basic_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/basic_outer.png new file mode 100644 index 00000000000..24fe753ebdc Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/basic_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/curled_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/curled_inner.png new file mode 100644 index 00000000000..b447625e181 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/curled_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/curled_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/curled_outer.png new file mode 100644 index 00000000000..3590520cdab Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/curled_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/droopy_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/droopy_inner.png new file mode 100644 index 00000000000..b87d5560cec Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/droopy_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/droopy_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/droopy_outer.png new file mode 100644 index 00000000000..7b3e9474300 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/droopy_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/fuzzy_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/fuzzy_inner.png new file mode 100644 index 00000000000..2656ff2a991 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/fuzzy_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/meta.json new file mode 100644 index 00000000000..45e8f847021 --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/meta.json @@ -0,0 +1,75 @@ +{ + "version": 1, + "copyright": "Felinid ears made by @Vordenburg for Nyanotrasen @ https://github.com/Nyanotrasen/Nyanotrasen/pull/581/commits/77fe4c38589516ceef533de17cde56665ce970c7, modified by SX-7.", + "license": "CC-BY-SA-4.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "basic_inner", + "directions": 4 + }, + { + "name": "basic_outer", + "directions": 4 + }, + { + "name": "curled_inner", + "directions": 4 + }, + { + "name": "curled_outer", + "directions": 4 + }, + { + "name": "fuzzy_inner", + "directions": 4 + }, + { + "name": "tall_outer", + "directions": 4 + }, + { + "name": "tall_inner", + "directions": 4 + }, + { + "name": "tall_fuzz", + "directions": 4 + }, + { + "name": "torn_outer", + "directions": 4 + }, + { + "name": "torn_inner", + "directions": 4 + }, + { + "name": "stubby_outer", + "directions": 4 + }, + { + "name": "stubby_inner", + "directions": 4 + }, + { + "name": "droopy_outer", + "directions": 4 + }, + { + "name": "droopy_inner", + "directions": 4 + }, + { + "name": "wide_inner", + "directions": 4 + }, + { + "name": "wide_outer", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/stubby_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/stubby_inner.png new file mode 100644 index 00000000000..2cb7d1093d1 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/stubby_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/stubby_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/stubby_outer.png new file mode 100644 index 00000000000..57e8c8f3753 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/stubby_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_fuzz.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_fuzz.png new file mode 100644 index 00000000000..c6e610549a7 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_fuzz.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_inner.png new file mode 100644 index 00000000000..6755edeec14 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_outer.png new file mode 100644 index 00000000000..5ea6dbbaa51 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/tall_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/torn_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/torn_inner.png new file mode 100644 index 00000000000..abdb77c487e Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/torn_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/torn_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/torn_outer.png new file mode 100644 index 00000000000..d5242590cf8 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/torn_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/wide_inner.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/wide_inner.png new file mode 100644 index 00000000000..eaa1ff64a50 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/wide_inner.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/wide_outer.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/wide_outer.png new file mode 100644 index 00000000000..ae964a487d6 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/felinid_ears.rsi/wide_outer.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/meta.json new file mode 100644 index 00000000000..a6d17cb0ddc --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/meta.json @@ -0,0 +1,39 @@ +{ + "version": 1, + "copyright": "Creator was not supplied, oldest reference tracked to KasparoVy @ https://github.com/ParadiseSS13/Paradise/commit/3610cfd4ea7e9bffc804320851f0b0a625db1dba. Minor tweaks by SX-7", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "muzzle", + "directions": 4 + }, + { + "name": "muzzle_large", + "directions": 4 + }, + { + "name": "nose", + "directions": 4 + }, + { + "name": "patch", + "directions": 4 + }, + { + "name": "points", + "directions": 4 + }, + { + "name": "tiger_face", + "directions": 4 + }, + { + "name": "tiger_head", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/muzzle.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/muzzle.png new file mode 100644 index 00000000000..67030feac80 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/muzzle.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/muzzle_large.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/muzzle_large.png new file mode 100644 index 00000000000..f96ed035373 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/muzzle_large.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/nose.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/nose.png new file mode 100644 index 00000000000..31bc5f06d83 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/nose.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/patch.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/patch.png new file mode 100644 index 00000000000..64f3effae9f Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/patch.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/points.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/points.png new file mode 100644 index 00000000000..dff01d78aec Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/points.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/tiger_face.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/tiger_face.png new file mode 100644 index 00000000000..36d8617fab6 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/tiger_face.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/tiger_head.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/tiger_head.png new file mode 100644 index 00000000000..8ee160777b4 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/head.rsi/tiger_head.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/meta.json new file mode 100644 index 00000000000..5f23a518181 --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Creator was not supplied, oldest reference tracked to KasparoVy @ https://github.com/ParadiseSS13/Paradise/commit/3610cfd4ea7e9bffc804320851f0b0a625db1dba. Minor tweaks by SX-7", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "patch", + "directions": 4 + }, + { + "name": "points", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/patch.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/patch.png new file mode 100644 index 00000000000..835270a15bc Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/patch.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/points.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/points.png new file mode 100644 index 00000000000..c38d3d2e3a0 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/overlays.rsi/points.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/meta.json new file mode 100644 index 00000000000..89d10cc2ed7 --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/meta.json @@ -0,0 +1,39 @@ +{ + "version": 1, + "copyright": "Creator was not supplied, oldest reference tracked to Cael Aislinn in commit https://github.com/ParadiseSS13/Paradise/commit/9e4539fdce01f00ed7e47ca1174a1470ac5fe77c. Sprite reorganization by SX-7, but no changes to sprites themselves", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "tail", + "directions": 4 + }, + { + "name": "tail_rings", + "directions": 4 + }, + { + "name": "tail_anim", + "directions": 4, + "delays": [ + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ] + ] + }, + { + "name": "tail_anim_rings", + "directions": 4, + "delays": [ + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ], + [ 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2 ] + ] + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail.png new file mode 100644 index 00000000000..cbdeebb6139 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_anim.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_anim.png new file mode 100644 index 00000000000..a849bf7cbb4 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_anim.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_anim_rings.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_anim_rings.png new file mode 100644 index 00000000000..b60ffd86204 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_anim_rings.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_rings.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_rings.png new file mode 100644 index 00000000000..84f6b2542cc Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/tails.rsi/tail_rings.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/belly.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/belly.png new file mode 100644 index 00000000000..c7f9e782559 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/belly.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/crest.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/crest.png new file mode 100644 index 00000000000..ccb52f0883e Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/crest.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/fullbelly.png b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/fullbelly.png new file mode 100644 index 00000000000..bcb6dc67acf Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/fullbelly.png differ diff --git a/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/meta.json b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/meta.json new file mode 100644 index 00000000000..66d6f476492 --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Customization/Tajaran/torso.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "copyright": "Creator was not supplied, oldest reference tracked to KasparoVy @ https://github.com/ParadiseSS13/Paradise/commit/38717e3b034550b3c0a9f3c5f3c78a957dcad0d9. Minor tweaks by SX-7", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "belly", + "directions": 4 + }, + { + "name": "crest", + "directions": 4 + }, + { + "name": "fullbelly", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/head_f.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/head_f.png new file mode 100644 index 00000000000..a89cf12a1fc Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/head_f.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/head_m.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/head_m.png new file mode 100644 index 00000000000..1d01e03523d Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/head_m.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_arm.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_arm.png new file mode 100644 index 00000000000..7873edd652a Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_foot.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_foot.png new file mode 100644 index 00000000000..4fcc3ea79c2 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_hand.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_hand.png new file mode 100644 index 00000000000..dc9c2b64222 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_leg.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_leg.png new file mode 100644 index 00000000000..fd0008474cd Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/meta.json b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/meta.json new file mode 100644 index 00000000000..13e804ad544 --- /dev/null +++ b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/meta.json @@ -0,0 +1,59 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Creator was not supplied, oldest reference tracked to Cael Aislinn in commit https://github.com/ParadiseSS13/Paradise/commit/9e4539fdce01f00ed7e47ca1174a1470ac5fe77c. Small changes made by SX-7. Names are as provided, sans torso_f front which is a combined version of modified torso_m front, and modified torso_f", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "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 + } + ] +} diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_arm.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_arm.png new file mode 100644 index 00000000000..f0449da6952 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_foot.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_foot.png new file mode 100644 index 00000000000..5d5d6ce77ea Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_hand.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_hand.png new file mode 100644 index 00000000000..e11a7ad5e99 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_leg.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_leg.png new file mode 100644 index 00000000000..80b4a864d73 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/torso_f.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/torso_f.png new file mode 100644 index 00000000000..c18fc1458ce Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/torso_m.png b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/torso_m.png new file mode 100644 index 00000000000..f5650c6f527 Binary files /dev/null and b/Resources/Textures/_EE/Mobs/Species/Tajaran/parts.rsi/torso_m.png differ