Shadekins arrived (#5481)

* Merge pull request #838 from FoxxoTrystan/Shadekin

Shadekin

# Conflicts:
#	Resources/Prototypes/Body/species_base.yml
#	Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml
#	Resources/Prototypes/Guidebook/species.yml
#	Resources/Prototypes/Species/species_weights.yml

* Merge pull request #868 from FoxxoTrystan/Shadekin-Perf

Shadekin Performence

* Merge pull request #883 from FoxxoTrystan/Shadekin-Patch

Shadekin Patch + Markings

* Merge pull request #947 from RHSvenson/Shadekin_SurvivalBox

Added and implemented emergency boxes for nonbreathers

* Merge pull request #1861 from ilovehans10/shadekin-guidebook-typo-fixes

Shadekin guidebook typo fixes

* Mars -> Marrs (#2381)

<!-- IT'S NOT WIZDENS REPO, IF YOU WANT TO ADD YOUR CHANGES ON ALL
SERVERS, CREATE PR TO WIZDENS REPO -->

<!-- What do you propose to change with your PR? -->
Changes `@ mars` to `@ marr`s for Shadekin.

<!-- What is the reason for adding these changes? Please post links to
Discussions as well as Bug Reports here. Please describe how this will
change the game balance. -->
Parity with emote wheel. Also, `<PLAYERNAME> mars` feels weird.
(...probably because Mars as in the planet.)

<!--
If your PR contains in-game changes you must provide screenshots/videos
of the changes.
-->

<!-- check boxes for faster reviewing of your PR -->

- [X] I do not require assistance to complete the PR.
- [X] Before posting/requesting review of a PR, I have verified that the
changes work.
- [X] I have added screenshots/videos of the changes, or this PR does
not change in-game mechanics.
- [X] I affirm that my changes are licensed under the [Starlight Fork
License](https://github.com/ss14Starlight/space-station-14/blob/Starlight/LICENSE-Starlight.TXT)
and grant permission for use in this repository under its conditions.

**Changelog**
🆑 Fractalflower
- tweak: Changed Mar emote text to `@ marrs`.

* Fix shadekin guidebook resistance info (#2881)

The shadekin guidebook currently overstates the cellular resistance by
10% and vastly underestimates the bloodloss damage.

The guidebook being accurate helps guide player understanding.

<img width="563" height="669" alt="image"
src="https://github.com/user-attachments/assets/bece997a-5aa4-46f5-9b9f-2fe41dc98e97"
/>

- [X] I do not require assistance to complete the PR.
- [X] Before posting/requesting review of a PR, I have verified that the
changes work.
- [X] I have added screenshots/videos of the changes, or this PR does
not change in-game mechanics.
- [X] I affirm that my changes are licensed under the [Starlight Fork
License](https://github.com/ss14Starlight/space-station-14/blob/Starlight/LICENSE-Starlight.TXT)
and grant permission for use in this repository under its conditions.

**Changelog**

🆑 Penguinwizzard
- fix: Turns out that we were issuing wildly incorrect guidebooks on
Shadekin; an updated edition should now be available for crews.

* New Shadekin Disabilities

* Light hurts Shadekin

Shadekin should get more than a mild sunburn in extreme light

* Changes to make it work

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Foam Immunity Readded

* Flash Modifer works now

* Remove DarkLightComponent

* Add missing Locale for Markings from Den

* Fix Issues, Seperate from _DV namespace

* Yaml Linter Fixes

* ARGH

* ARGHv.2

* ARGHv.3

* Nutribatard instead of Baguette

* Exchange Nutribricks with PSB

* Cotton Baguette

* Changing away from BaseOrganic and Respirator Removal in Code

* Fulfill Content Review Requests

* Remove Eye Coloration - Unused

* Remove ShadekinPhase entirely

* Attribution correctly linked

* Review Changes

* done yml links correctly now

* yml format in shadekin effects

* Remove yml file mention and read Internal

* Readd Internals

* _StarLight -> _Starlight

* Port to Nubody and maybe fixing some fuckups

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Shadekin Yaml Errors

* Add missing markings name, add missing base_scale

* Remove Internal Removal in base_species. Make it Component based

* Add missing readonly

* Remove Non Breahter emergency boxes, Shadekin normal box

* DV Comment Fixes

* Untouched File?

* Use FlashMultiplierDurationEvent

* Add missing attribution

* Fixed scream attributions

* Shadekins can now properly succumb. Starlight#4746

---------

Co-authored-by: Matthew Herber <32679887+Happyrobot33@users.noreply.github.com>
Co-authored-by: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com>
Co-authored-by: Rinary <rinary.super@gmail.com>
Co-authored-by: FoxxoTrystan <trystan.garnierhein@gmail.com>
Co-authored-by: Tess_the_Evil <tessawfresh@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
This commit is contained in:
Coryn 2026-07-21 00:10:48 +02:00 committed by GitHub
parent 2f5f2fd491
commit 064fd77a11
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
149 changed files with 2608 additions and 14 deletions

View File

@ -23,6 +23,7 @@ using Robust.Shared.Timing;
using System.Linq;
using Content.Shared.EntityEffects.Effects.Solution;
using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent;
using Content.Server.Body.Components; // Delta V
namespace Content.Server.Fluids.EntitySystems;
@ -267,7 +268,8 @@ public sealed class SmokeSystem : EntitySystem
if (!_solutionContainerSystem.ResolveSolution(entity, bloodstream.BloodSolutionName, ref bloodstream.BloodSolution, out var bloodSolution) || bloodSolution.AvailableVolume <= 0)
return;
var blockIngestion = _internals.AreInternalsWorking(entity);
var blockIngestion = _internals.AreInternalsWorking(entity)
|| !HasComp<RespiratorComponent>(entity); // Starlight - Shadekin does not breathe and "AreInternalsWorking" does not check for that
var cloneSolution = solution.Clone();
var availableTransfer = FixedPoint2.Min(cloneSolution.Volume, component.TransferRate);

View File

@ -41,6 +41,7 @@ using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Timing;
using Content.Server.Mobs; // Starlight
namespace Content.Server.Ghost
{
@ -619,7 +620,15 @@ namespace Content.Server.Ghost
_damageable.GetTotalDamage((playerEntity.Value, damageable));
}
DamageSpecifier damage = new(_prototypeManager.Index(AsphyxiationDamageType), dealtDamage);
// Starlight - Start
//DamageSpecifier damage = new(_prototypeManager.Index(AsphyxiationDamageType), dealtDamage);
var damageType = _prototypeManager.Index(AsphyxiationDamageType);
if (TryComp<DeathgaspComponent>(playerEntity, out var deathgasp))
damageType = _prototypeManager.Index(deathgasp.DamageType);
DamageSpecifier damage = new(damageType, dealtDamage);
// Starlight - End
_damageable.ChangeDamage(playerEntity.Value, damage, true);
}

View File

@ -1,4 +1,6 @@
using Content.Shared.Chat.Prototypes;
using Content.Shared.Chat.Prototypes; // Starlight
using Content.Shared.Damage.Prototypes; // Starlight
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Server.Mobs;
@ -21,4 +23,10 @@ public sealed partial class DeathgaspComponent : Component
/// </summary>
[DataField]
public bool NeedsCritical = true;
/// <summary>
/// Starlight - The damage that is taken when succumbing
/// </summary>
[DataField]
public ProtoId<DamageTypePrototype> DamageType = "Asphyxiation";
}

View File

@ -0,0 +1,290 @@
using Content.Shared.Humanoid;
using Content.Shared.Alert;
using Robust.Server.GameObjects;
using Content.Shared.Examine;
using Robust.Server.Containers;
using Content.Shared._Starlight;
using Content.Shared.Damage.Components;
using Content.Shared.Mobs;
using Content.Shared.Movement.Systems;
using Content.Shared.Movement.Components;
using Content.Shared.Damage;
using Content.Server.Chat.Managers;
using Content.Shared.Damage.Systems;
using Content.Shared._Goobstation.Overlays;
using Robust.Shared.Timing;
using Content.Server.Body.Components;
using System.Linq;
using Content.Shared._Goobstation.Flashbang;
using Content.Shared._Starlight.Flash.Components;
using Content.Shared.Body.Components;
using Content.Shared.Flash; // Delta V - Flash Work
namespace Content.Server._Starlight;
public sealed class ShadekinSystem : EntitySystem
{
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly AlertsSystem _alerts = default!;
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly ExamineSystemShared _examine = default!;
[Dependency] private readonly ContainerSystem _container = default!;
[Dependency] private readonly DamageableSystem _damageable = default!;
[Dependency] private readonly MovementSpeedModifierSystem _speed = default!;
[Dependency] private readonly SharedFlashSystem _flashSystem = default!;
private sealed class LightCone
{
public float Direction { get; set; }
public float InnerWidth { get; set; }
public float OuterWidth { get; set; }
}
private readonly Dictionary<string, List<LightCone>> lightMasks = new()
{
["/Textures/Effects/LightMasks/cone.png"] = new List<LightCone>
{
new LightCone { Direction = 0, InnerWidth = 30, OuterWidth = 60 }
},
["/Textures/Effects/LightMasks/double_cone.png"] = new List<LightCone>
{
new LightCone { Direction = 0, InnerWidth = 30, OuterWidth = 60 },
new LightCone { Direction = 180, InnerWidth = 30, OuterWidth = 60 }
}
};
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ShadekinComponent, ComponentStartup>(OnInit);
SubscribeLocalEvent<ShadekinComponent, EyeColorInitEvent>(OnEyeColorChange);
SubscribeLocalEvent<ShadekinComponent, RefreshMovementSpeedModifiersEvent>(OnRefreshMovementSpeedModifiers);
SubscribeLocalEvent<ShadekinComponent, AfterFlashedEvent>(OnShadekinFlashed); // Delta V - Prevent Chain Flashing
SubscribeLocalEvent<ShadekinComponent, FlashDurationMultiplierEvent>(GetFlashModifier); // Delta V - Flash Modifier to Shadekin
}
private void OnInit(EntityUid uid, ShadekinComponent component, ComponentStartup args)
{
UpdateAlert(uid, component, (short)component.CurrentState);
RemComp<InternalsComponent>(uid);
}
private void OnEyeColorChange(EntityUid uid, ShadekinComponent component, EyeColorInitEvent args)
{
if (!TryComp<HumanoidProfileComponent>(uid, out var humanoid))
return;
// humanoid.EyeColor = Color.Black;
Dirty(uid, humanoid);
}
public void UpdateAlert(EntityUid uid, ShadekinComponent component, short state)
{
_alerts.ShowAlert(uid, component.ShadekinAlert, state);
}
private Angle GetAngle(EntityUid lightUid, SharedPointLightComponent lightComp, EntityUid targetUid)
{
var (lightPos, lightRot) = _transform.GetWorldPositionRotation(lightUid);
lightPos += lightRot.RotateVec(lightComp.Offset);
var (targetPos, targetRot) = _transform.GetWorldPositionRotation(targetUid);
var mapDiff = targetPos - lightPos;
var oppositeMapDiff = (-lightRot).RotateVec(mapDiff);
var angle = oppositeMapDiff.ToWorldAngle();
if (angle == double.NaN && _transform.ContainsEntity(targetUid, lightUid) || _transform.ContainsEntity(lightUid, targetUid))
{
angle = 0f;
}
return angle;
}
/// <summary>
/// Return an illumination float value with is how many "energy" of light is hitting our ent.
/// WARNING: This function might be expensive, Avoid calling it too much and CACHE THE RESULT!
/// </summary>
/// <param name="uid"></param>
/// <returns></returns>
public float GetLightExposure(EntityUid uid)
{
var illumination = 0f;
var lightQuery = _lookup.GetEntitiesInRange<PointLightComponent>(Transform(uid).Coordinates, 20, LookupFlags.Uncontained);
foreach (var light in lightQuery)
{
if (!light.Comp.Enabled
|| light.Comp.Radius < 1
|| light.Comp.Energy <= 0)
continue;
var (lightPos, lightRot) = _transform.GetWorldPositionRotation(light);
lightPos += lightRot.RotateVec(light.Comp.Offset);
if (!_examine.InRangeUnOccluded(light, uid, light.Comp.Radius, null))
continue;
Transform(uid).Coordinates.TryDistance(EntityManager, Transform(light).Coordinates, out var dist);
var denom = dist / light.Comp.Radius;
var attenuation = 1 - (denom * denom);
var calculatedLight = 0f;
if (light.Comp.MaskPath is not null)
{
var angleToTarget = GetAngle(light, light.Comp, uid);
foreach (var cone in lightMasks[light.Comp.MaskPath])
{
var coneLight = 0f;
var angleAttenuation = (float)Math.Min((float)Math.Max(cone.OuterWidth - angleToTarget, 0f), cone.InnerWidth) / cone.OuterWidth;
if (angleToTarget.Degrees - cone.Direction > cone.OuterWidth)
continue;
else if (angleToTarget.Degrees - cone.Direction > cone.InnerWidth
&& angleToTarget.Degrees - cone.Direction < cone.OuterWidth)
coneLight = light.Comp.Energy * attenuation * attenuation * angleAttenuation;
else
coneLight = light.Comp.Energy * attenuation * attenuation;
calculatedLight = Math.Max(calculatedLight, coneLight);
}
}
else
calculatedLight = light.Comp.Energy * attenuation * attenuation;
illumination += calculatedLight; //Math.Max(illumination, calculatedLight);
}
return illumination;
}
private void SetPassiveBuff(EntityUid uid, ShadekinState state)
{
if (!TryComp<PassiveDamageComponent>(uid, out var passive))
return;
if (state == ShadekinState.Extreme || state == ShadekinState.Annoying || state == ShadekinState.High)
{
// passive.DamageCap = 1;
}
else if (state == ShadekinState.Low)
{
// passive.DamageCap = 20;
passive.AllowedStates.Clear();
passive.AllowedStates.Add(MobState.Alive);
passive.Interval = 1f;
}
else if (state != ShadekinState.Dark)
{
// passive.DamageCap = 0;
passive.AllowedStates.Clear();
passive.AllowedStates.Add(MobState.Alive);
passive.AllowedStates.Add(MobState.Critical);
passive.AllowedStates.Add(MobState.Dead);
passive.Interval = 0.5f;
}
}
private void ToggleNightVision(EntityUid uid, ShadekinState state)
{
if (state == ShadekinState.Dark)
{
var nightVisionComponent = EnsureComp<NightVisionComponent>(uid);
nightVisionComponent.Color = Color.FromHex("#808080"); // Delta V - Change Night Vision Color
}
else
{
if (TryComp<NightVisionComponent>(uid, out var nightVision) && nightVision.IsActive)
_flashSystem.Flash(uid, uid, uid, TimeSpan.FromSeconds(0.5 * (int)state), 0.5f);
RemComp<NightVisionComponent>(uid);
}
}
private void ApplyLightDamage(EntityUid uid, float dmg)
{
var damage = new DamageSpecifier();
damage.DamageDict.Add("Heat", dmg);
_damageable.TryChangeDamage(uid, damage, true, false);
}
private void OnRefreshMovementSpeedModifiers(EntityUid uid, ShadekinComponent component, RefreshMovementSpeedModifiersEvent args)
{
if (component.CurrentState == ShadekinState.Low || component.CurrentState == ShadekinState.Annoying ||
component.CurrentState == ShadekinState.Dark || component.CurrentState == ShadekinState.Invalid)
return;
if (!TryComp<MovementSpeedModifierComponent>(uid, out var movement))
return;
var sprintDif = movement.BaseWalkSpeed / movement.BaseSprintSpeed;
args.ModifySpeed(1f, sprintDif);
}
private ShadekinState GetStateByThreshold(ShadekinComponent component, float lightExposure)
{
var returnState = ShadekinState.Dark;
foreach (var (threshold, shadekinState) in component.Thresholds.Reverse())
{
if (threshold <= lightExposure)
{
returnState = shadekinState;
break;
}
}
return returnState;
}
// Delta V - Begin Shadekin Flash Changes
private void GetFlashModifier(EntityUid uid, ShadekinComponent comp, FlashDurationMultiplierEvent args)
{
if (!TryComp<FlashModifierComponent>(uid, out var flashModifier))
return;
args.Multiplier = flashModifier.Modifier;
}
private void OnShadekinFlashed(EntityUid uid, ShadekinComponent comp, AfterFlashedEvent ev)
{
RemComp<NightVisionComponent>(uid);
}
// Delta V - End
public override void Update(float frameTime)
{
base.Update(frameTime);
var query = EntityQueryEnumerator<ShadekinComponent>();
while (query.MoveNext(out var uid, out var component))
{
if (_timing.CurTime < component.NextUpdate)
continue;
component.NextUpdate = _timing.CurTime + component.UpdateCooldown;
var lightExposure = 0f;
if (!_container.IsEntityInContainer(uid))
lightExposure = GetLightExposure(uid);
component.CurrentState = GetStateByThreshold(component, lightExposure);
UpdateAlert(uid, component, (short)component.CurrentState);
SetPassiveBuff(uid, component.CurrentState);
ToggleNightVision(uid, component.CurrentState);
_speed.RefreshMovementSpeedModifiers(uid);
if (component.CurrentState == ShadekinState.Extreme)
ApplyLightDamage(uid, 5);
}
}
}

View File

@ -26,6 +26,7 @@ using System.Linq;
using Content.Shared.Movement.Systems;
using Content.Shared.Random.Helpers;
using Content.Shared.Clothing.Components;
using Content.Shared._Starlight.Flash.Components; // Delta V - For Flash Duration
namespace Content.Shared.Flash;
@ -173,7 +174,7 @@ public abstract class SharedFlashSystem : EntitySystem
// Goobstation end
// don't paralyze, slowdown or convert to rev if the target is immune to flashes
if (!_statusEffectsSystem.TryAddStatusEffect<FlashedComponent>(target, FlashedKey, flashDuration, true) && !ignoreProtection) //DeltaV: allow flashing to ignore flash protection
if (!_statusEffectsSystem.TryAddStatusEffect<FlashedComponent>(target, FlashedKey, flashDuration * multiplier, true) && !ignoreProtection) //DeltaV: allow flashing to ignore flash protection. Added Flashduration Multiplier
return;
if (stunDuration != null)

View File

@ -0,0 +1,8 @@
namespace Content.Shared._Starlight.Flash.Components;
[RegisterComponent]
public sealed partial class FlashModifierComponent : Component
{
[DataField]
public float Modifier = 1f;
}

View File

@ -0,0 +1,51 @@
namespace Content.Shared.Humanoid;
public static class EyeColor
{
public const float ShadekinBrightness = 0.251f;
public static bool VerifyShadekin(Color color)
{
var colorHsv = Color.ToHsv(color);
if (colorHsv.Z > ShadekinBrightness)
return false;
return true;
}
public static Color MakeShadekinValid(Color color)
{
var hsv = Color.ToHsv(color);
hsv.Z = Math.Clamp(hsv.Z, 0, ShadekinBrightness);
return Color.FromHsv(hsv);
}
public static bool VerifyEyeColor(HumanoidEyeColor type, Color color)
{
return type switch
{
HumanoidEyeColor.Shadekin => VerifyShadekin(color),
_ => false,
};
}
public static Color ValidEyeColor(HumanoidEyeColor type, Color color)
{
return type switch
{
HumanoidEyeColor.Shadekin => MakeShadekinValid(color),
_ => color
};
}
}
public enum HumanoidEyeColor : byte
{
Shadekin,
}
[ByRefEvent]
public record struct EyeColorInitEvent();

View File

@ -0,0 +1,45 @@
using Content.Shared.Alert;
using Content.Shared.FixedPoint;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared._Starlight;
#region Shadekin
[RegisterComponent, NetworkedComponent, AutoGenerateComponentPause, AutoGenerateComponentState]
public sealed partial class ShadekinComponent : Component
{
[DataField]
public ProtoId<AlertPrototype> ShadekinAlert = "Shadekin";
[ViewVariables(VVAccess.ReadOnly), AutoPausedField]
public TimeSpan NextUpdate = TimeSpan.Zero;
[DataField]
public TimeSpan UpdateCooldown = TimeSpan.FromSeconds(1f);
[AutoNetworkedField, ViewVariables]
public ShadekinState CurrentState { get; set; } = ShadekinState.Dark;
[DataField("thresholds", required: true)]
public SortedDictionary<FixedPoint2, ShadekinState> Thresholds = new();
/// <summary>
/// whether to flicker lights or not. default on
/// </summary>
[DataField] public bool DoLightFlicker = true;
}
[Serializable, NetSerializable]
public enum ShadekinState : byte
{
Invalid = 0,
Dark = 1,
Low = 2,
Annoying = 3,
High = 4,
Extreme = 5
}
#endregion

View File

@ -0,0 +1,29 @@
- files: ["wurble.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken from CHOMPStation"
source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/wurble.ogg"
- files: ["mar.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken from CHOMPStation"
source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/mar.ogg"
- files: ["scream_f1.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken and remixed from CHOMPStation"
source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_f1.ogg"
- files: ["scream_f2.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken and remixed from CHOMPStation"
source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_f2.ogg"
- files: ["scream_m1.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken and remixed from CHOMPStation"
source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_m1.ogg"
- files: ["scream_m2.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken and remixed from CHOMPStation"
source: "https://github.com/CHOMPStation2/CHOMPStation2/blob/e846f4f73d14875a390ede039a11e4b9b699f420/sound/voice/scream_f2.ogg"

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,154 @@
# Ears
marking-EarsShadekinMotley = Motley Ears
marking-EarsShadekinMotley-shadowkin = Ears
marking-EarsShadekinMotley-motley_secondary = Pattern
marking-EarsShadekinShady = Dark Ears
marking-EarsShadekinShady-shady = Ears
marking-EarsShadekinStriped = Striped Ears
marking-EarsShadowkinStriped-shadowkin = Ears
marking-EarsShadowkinStriped-shadowkin_stripes = Stripes
marking-EarsShadekinPiercingAll = Ears with Piercings
marking-EarsShadekinPiercingAll-shadowkin = Ears
marking-EarsShadekinPiercingAll-piercing_all = Piercings
marking-EarsShadekinPiercingLeft = Ears with Piercing (L)
marking-EarsShadekinPiercingLeft-shadowkin = Ears
marking-EarsShadekinPiercingLeft-piercing_left = Piercing
marking-EarsShadekinPiercingRight = Ears with Piercing (R)
marking-EarsShadekinPiercingRight-shadowkin = Ears
marking-EarsShadekinPiercingRight-piercing_right = Piercing
marking-EarsShadekinRingedAll = Ears with Rings
marking-EarsShadekinRingedAll-shadowkin = Ears
marking-EarsShadekinRingedAll-ringed_all_secondary = Rings
marking-EarsShadekinRingedLeft = Ears with Ring (L)
marking-EarsShadekinRingedLeft-shadowkin = Ears
marking-EarsShadekinRingedLeft-ringed_left_secondary = Ring
marking-EarsShadekinRingedRight = Ears with Ring (R)
marking-EarsShadekinRingedRight-shadowkin = Ears
marking-EarsShadekinRingedRight-ringed_right_secondary = Ring
marking-EarsShadekinGauzedAll = Gauzed Ears
marking-EarsShadekinGauzedAll-shadowkin = Ears
marking-EarsShadekinGauzedAll-gauze_ear_all_default = Gauze
marking-EarsShadekinGauzedLeft = Ear Bandage (L)
marking-EarsShadekinGauzedLeft-shadowkin = Ears
marking-EarsShadekinGauzedLeft-gauze_ear_l_default = Bandage
marking-EarsShadekinGauzedRight = Ear Bandage (R)
marking-EarsShadekinGauzedRight-shadowkin = Ears
marking-EarsShadekinGauzedRight-gauze_ear_r_default = Bandage
marking-EarsShadekinFluffy = Fluffy Ears
marking-EarsShadekinFluffy-fluffy_default = Ears
marking-EarsShadekinFluffyButterfly = Fluffy Ears, Butterfly
marking-EarsShadekinFluffyButterfly-fluffy_default = Ears
marking-EarsShadekinFluffyButterfly-fluffy_butterfly = Pattern
marking-EarsShadekinFluffyCowling = Fluffy Ears, Spotted
marking-EarsShadekinFluffyCowling-fluffy_default = Ears
marking-EarsShadekinFluffyCowling-fluffy_cowling = Pattern
marking-EarsShadekinFluffyCrow = Fluffy Ears, Crow
marking-EarsShadekinFluffyCrow-fluffy_default = Ears
marking-EarsShadekinFluffyCrow-fluffy_crow = Pattern
marking-EarsShadekinFluffyMotley = Fluffy Ears, Bright
marking-EarsShadekinFluffyMotley-fluffy_default = Ears
marking-EarsShadekinFluffyMotley-fluffy_motley = Pattern
marking-EarsShadekinFluffySpidy = Fluffy Ears, Spidy
marking-EarsShadekinFluffySpidy-fluffy_default = Ears
marking-EarsShadekinFluffySpidy-fluffy_spidy = Pattern
marking-EarsShadekinFluffyRingedAll = Fluffy Ears, with Rings
marking-EarsShadekinFluffyRingedAll-fluffy_default = Ears
marking-EarsShadekinFluffyRingedAll-fluffy_ringed_all = Rings
marking-EarsShadekinFluffyRingedLeft = Fluffy Ears, with Ring (L)
marking-EarsShadekinFluffyRingedLeft-fluffy_default = Ears
marking-EarsShadekinFluffyRingedLeft-fluffy_ringed_left = Ring
marking-EarsShadekinFluffyRingedRight = Fluffy Ears, with Ring (R)
marking-EarsShadekinFluffyRingedRight-fluffy_default = Ears
marking-EarsShadekinFluffyRingedRight-fluffy_ringed_right = Ring
marking-EarsShadekinSaggy = Drooping Ears
marking-EarsShadekinSaggy-saggy_default = Ears
marking-EarsShadekinSaggyBrawly = Drooping Ears, Patterned
marking-EarsShadekinSaggyBrawly-saggy_default = Ears
marking-EarsShadekinSaggyBrawly-saggy_brawly = Pattern
marking-EarsShadekinSaggyZebra = Drooping Ears, Striped
marking-EarsShadekinSaggyZebra-saggy_default = Ears
marking-EarsShadekinSaggyZebra-saggy_zebra = Stripes
marking-EarsShadekinSaggyGradient = Drooping Ears, Gradient
marking-EarsShadekinSaggyGradient-saggy_default = Ears
marking-EarsShadekinSaggyGradient-saggy_gradient = Gradient
marking-EarsShadekinSaggyGauzedAll = Drooping Ears, Gauzed
marking-EarsShadekinSaggyGauzedAll-saggy_default = Ears
marking-EarsShadekinSaggyGauzedAll-saggy_gauze_all = Gauze
marking-EarsShadekinSaggyGauzedLeft = Drooping Ears, Ear Bandage (L)
marking-EarsShadekinSaggyGauzedLeft-saggy_default = Ears
marking-EarsShadekinSaggyGauzedLeft-saggy_gauze_l = Bandage
marking-EarsShadekinSaggyGauzedRight = Drooping Ears, Ear Bandage (R)
marking-EarsShadekinSaggyGauzedRight-saggy_default = Ears
marking-EarsShadekinSaggyGauzedRight-saggy_gauze_r = Bandage
marking-EarsShadekinShort = Short Ears
marking-EarsShadekinShort-short_default = Ears
marking-EarsShadekinShortButterfly = Short Ears, Decorated
marking-EarsShadekinShortButterfly-short_default = Ears
marking-EarsShadekinShortButterfly-short_butterfly = Pattern
marking-EarsShadekinShortRingedAll = Short Ears, with Rings
marking-EarsShadekinShortRingedAll-short_default = Ears
marking-EarsShadekinShortRingedAll-short_ringed_all = Rings
marking-EarsShadekinShortRingedLeft = Short Ears, with Ring (L)
marking-EarsShadekinShortRingedLeft-short_default = Ears
marking-EarsShadekinShortRingedLeft-short_ringed_left = Ring
marking-EarsShadekinShortRingedRight = Short Ears, with Ring (R)
marking-EarsShadekinShortRingedRight-short_default = Ears
marking-EarsShadekinShortRingedRight-short_ringed_right = Ring
marking-EarsShadekinBull = Straight Ears
marking-EarsShadekinBull-bull_default = Ears
marking-EarsShadekinBullSmooth = Straight Ears, Outlined
marking-EarsShadekinBullSmooth-bull_default = Ears
marking-EarsShadekinBullSmooth-bull_smooth = Inner ears
marking-EarsShadekinAqua = Aqua Ears
marking-EarsShadekinAqua-aqua_default = Ears
marking-EarsShadekinAquaIncolor = Aqua Ears, Colored
marking-EarsShadekinAquaIncolor-aqua_default = Ears
marking-EarsShadekinAquaIncolor-aqua_incolor = Inner ears
# Tails
marking-TailShadekin = Long Tail
marking-TailShadekinBig = Big Tail
marking-TailShadekinShorter = Short Tail
marking-TailShadekinShorter-shadekin_shorter_over = Tail
marking-TailShadekinShorterBrush = Short Tail, Furry
marking-TailShadekinShorterBrush-shadekin_shorter_over = Tail
marking-TailShadekinShorterBrush-shorter_brush_over = Tail tip
marking-TailShadekinMedium = Medium Tail
marking-TailShadekinMedium-shadekin_medium_front = Tail
marking-TailShadekinMediumTwoColored = Medium Tail, Two-Toned
marking-TailShadekinMediumTwoColored-shadekin_medium_front = Tail
marking-TailShadekinMediumTwoColored-medium_twocolored_over = Tail underside
# Overlays
marking-BodyShadekinArrow = Arrow Marking
marking-BodyShadekinArrow-body_arrow = Marking
marking-BodyShadekinBlackHole = Black Hole Marking
marking-BodyShadekinBlackHole-body_blackhole = Marking
marking-BodyShadekinBrace = Bracelet Marking
marking-BodyShadekinBrace-body_brace = Marking
marking-BodyShadekinBrawly = Combat Marking
marking-BodyShadekinBrawly-body_brawly = Marking
marking-BodyShadekinHeart = Heart Marking
marking-BodyShadekinHeart-body_heart = Marking
marking-BodyShadekinInk = Ink Marking
marking-BodyShadekinInk-body_ink = Marking
marking-BodyShadekinInk2 = Ink Marking 2
marking-BodyShadekinInk2-body_ink2 = Marking
marking-BodyShadekinInk3 = Ink Marking 3
marking-BodyShadekinInk3-body_ink3 = Marking
marking-BodyShadekinInk4 = Ink Marking 4
marking-BodyShadekinInk4-body_ink4 = Marking
marking-BodyShadekinInk5 = Ink Marking 5
marking-BodyShadekinInk5-body_ink5 = Marking
marking-BodyShadekinInk6 = Spiritual Ink Marking
marking-BodyShadekinInk6-body_ink6 = Marking
marking-BodyShadekinInkAnim = Spiral Ink Marking
marking-BodyShadekinInkAnim-body_ink_anim = Marking
marking-BodyShadekinLines = Lines Marking
marking-BodyShadekinLines-body_lines = Marking
marking-BodyShadekinNeck = Neck Marking
marking-BodyShadekinNeck-body_neck = Marking
marking-BodyShadekinShield = Protective Marking
marking-BodyShadekinShield-body_shield = Marking
marking-BodyShadekinVacuum = Open Marking
marking-BodyShadekinVacuum-body_vacuum = Marking

View File

@ -0,0 +1,58 @@
# Sad
names-shadekin-dataset-1 = Fragile
names-shadekin-dataset-2 = Heartbreak
names-shadekin-dataset-3 = Inferior
names-shadekin-dataset-4 = Lone
names-shadekin-dataset-5 = Lonesome
names-shadekin-dataset-6 = Loss
names-shadekin-dataset-7 = Solitary
names-shadekin-dataset-8 = Solitude
names-shadekin-dataset-9 = Sorrow
names-shadekin-dataset-10 = Shade
# Angry
names-shadekin-dataset-11 = Fear
names-shadekin-dataset-12 = Fearful
names-shadekin-dataset-13 = Fury
names-shadekin-dataset-14 = Pain
names-shadekin-dataset-15 = Rage
names-shadekin-dataset-16 = Rush
names-shadekin-dataset-17 = Wrath
# Happy
names-shadekin-dataset-18 = Calm
names-shadekin-dataset-19 = Content
names-shadekin-dataset-20 = Contented
names-shadekin-dataset-21 = Happy
names-shadekin-dataset-22 = Hope
names-shadekin-dataset-23 = Joyous
names-shadekin-dataset-24 = Lovely
names-shadekin-dataset-25 = Peace
names-shadekin-dataset-26 = Peaceful
names-shadekin-dataset-27 = Quiet
names-shadekin-dataset-28 = Serene
names-shadekin-dataset-29 = Serenity
names-shadekin-dataset-30 = Tranquil
names-shadekin-dataset-31 = Tranquility
# Memory
names-shadekin-dataset-32 = Dillusioned
names-shadekin-dataset-33 = Forgotten
names-shadekin-dataset-34 = Focusless
names-shadekin-dataset-35 = Lost
names-shadekin-dataset-36 = Memory
names-shadekin-dataset-37 = Recollection
names-shadekin-dataset-38 = Remembrance
names-shadekin-dataset-39 = Reminisce
names-shadekin-dataset-40 = Reminiscence
# Other
names-shadekin-dataset-41 = Apathy
names-shadekin-dataset-42 = Collected
names-shadekin-dataset-43 = Curiosity
names-shadekin-dataset-44 = Free
names-shadekin-dataset-45 = Interest
names-shadekin-dataset-46 = Jax
names-shadekin-dataset-47 = Still
names-shadekin-dataset-48 = Unbound
names-shadekin-dataset-49 = Shadows

View File

@ -0,0 +1,5 @@
chat-emote-name-marr = Marr
chat-emote-name-wurble = Wurble
chat-emote-msg-marr = marrs!
chat-emote-msg-wurble = wurbles!

View File

@ -0,0 +1,14 @@
alerts-shadekin-name = Light Exposure
alerts-shadekin-desc = How much light is around you.
shadekin-alert-0 = [color=green]Light Exposure: Darkness...[/color]
The darkness is nice... It's like home... I feel my wounds healing...
shadekin-alert-1 = [color=green]Light Exposure: Low[/color]
shadekin-alert-2 = [color=green]Light Exposure: Annoying[/color]
The light is annoying in this place... I feel my wounds will not heal properly...
shadekin-alert-3 = [color=green]Light Exposure: High[/color]
Too many lights... too many! I feel exausted...
shadekin-alert-4 = [color=green]Light Exposure:[/color] [color=red]EXTREME[/color]
LIGHTS... I NEED DARKNESS! It burns!
phase-fail-generic = I can't phase!

View File

@ -0,0 +1 @@
species-name-shadekin = Shadekin

View File

@ -0,0 +1,8 @@
trait-clumsy-name = Clumsy
trait-clumsy-desc = You are a bit accident-prone
trait-highlightsensitivity-name = High Light Sensitivity
trait-highlightsensitivity-desc = You are much more sensitive to light than most shadekins
trait-extremelightsensitivity-name = Extreme Light Sensitivity
trait-extremelightsensitivity-desc = You are extremely more sensitive to light than most shadekins.

View File

@ -6,6 +6,7 @@
order:
- category: Health
- category: Stamina
- alertType: Shadeskin # Starlight
- alertType: SuitPower
- category: Internals
- alertType: Fire

View File

@ -1,7 +1,7 @@
- type: marking
id: TattooHiveChest
bodyPart: Chest
groupWhitelist: [Human, Slime, Felinid, Oni, Kitsune, Avali] # DeltaV - SlimePerson-Avali
groupWhitelist: [Human, Slime, Felinid, Oni, Kitsune, Avali, Shadekin] # DeltaV - SlimePerson-Avali # Starlight - Shadekin
sexRestriction: [Male] # DeltaV: Splitting the scars and tattoos
coloring:
default:
@ -15,7 +15,7 @@
- type: marking
id: TattooNightlingChest
bodyPart: Chest
groupWhitelist: [Human, Slime, Felinid, Oni, Kitsune, Avali] # DeltaV - SlimePerson-Avali
groupWhitelist: [Human, Slime, Felinid, Oni, Kitsune, Avali, Shadekin] # DeltaV - SlimePerson-Avali # Starlight - Shadekin
sexRestriction: [Male] # DeltaV: Splitting the scars and tattoos
coloring:
default:
@ -23,13 +23,13 @@
!type:TattooColoring
fallbackColor: "#666666"
sprites:
- sprite: _DV/Mobs/Customization/tattoos.rsi # DeltaV: Splitting the scars and tattoos
- sprite: _DV/Mobs/Customization/tattoos.rsi # DeltaV: Splitting the scars and tattoos # Starlight - Shadekin
state: tattoo_nightling
- type: marking
id: TattooSilverburghLeftLeg
bodyPart: LLeg
groupWhitelist: [Human, Felinid, Oni, Kitsune] # DeltaV - Felinid-Kitsune
groupWhitelist: [Human, Felinid, Oni, Kitsune, Shadekin] # DeltaV - Felinid-Kitsune # Starlight - Shadekin
coloring:
default:
type:
@ -42,7 +42,7 @@
- type: marking
id: TattooSilverburghRightLeg
bodyPart: RLeg
groupWhitelist: [Human, Felinid, Oni, Kitsune] # DeltaV - Felinid-Kitsune
groupWhitelist: [Human, Felinid, Oni, Kitsune, Shadekin] # DeltaV - Felinid-Kitsune # Starlight - Shadekin
coloring:
default:
type:
@ -55,7 +55,7 @@
- type: marking
id: TattooCampbellLeftArm
bodyPart: LArm
groupWhitelist: [Human, Felinid, Oni, Kitsune] # DeltaV - Felinid-Kitsune
groupWhitelist: [Human, Felinid, Oni, Kitsune, Shadekin] # DeltaV - Felinid-Kitsune # Starlight - Shadekin
coloring:
default:
type:
@ -68,7 +68,7 @@
- type: marking
id: TattooCampbellRightArm
bodyPart: RArm
groupWhitelist: [Human, Felinid, Oni, Kitsune] # DeltaV - Felinid-Kitsune
groupWhitelist: [Human, Felinid, Oni, Kitsune, Shadekin] # DeltaV - Felinid-Kitsune # Starlight - Shadekin
coloring:
default:
type:
@ -81,7 +81,7 @@
- type: marking
id: TattooCampbellLeftLeg
bodyPart: LLeg
groupWhitelist: [Human, Felinid, Oni, Kitsune] # DeltaV - Felinid-Kitsune
groupWhitelist: [Human, Felinid, Oni, Kitsune, Shadekin] # DeltaV - Felinid-Kitsune # Starlight - Shadekin
coloring:
default:
type:
@ -94,7 +94,7 @@
- type: marking
id: TattooCampbellRightLeg
bodyPart: RLeg
groupWhitelist: [Human, Felinid, Oni, Kitsune] # DeltaV - Felinid-Kitsune
groupWhitelist: [Human, Felinid, Oni, Kitsune, Shadekin] # DeltaV - Felinid-Kitsune # Starlight - Shadekin
coloring:
default:
type:

View File

@ -26,6 +26,8 @@
- Thaven
# Den addition
- Ovinia
# Starlight addition
- Shadekin
- type: guideEntry
id: Arachnid
@ -66,3 +68,8 @@
id: Vox
name: species-name-vox
text: "/ServerInfo/Guidebook/Mobs/Vox.xml"
- type: guideEntry
id: Shadekin
name: species-name-shadekin
text: "/ServerInfo/_Starlight/Guidebook/Mobs/Shadekin.xml"

View File

@ -31,6 +31,7 @@
- Ovinia
# End DeltaV additions
- Allulalo #imp
- Shadekin # Delta V - Starlight Addition
- type: loadoutEffectGroup
id: EffectSpeciesVox

View File

@ -15,3 +15,4 @@
Moth: 4
#Dwarf: 2 # DeltaV - No Dwarfs
Vox: 1
Shadekin: 2 # DeltaV - Shadekin from Starlight

View File

@ -0,0 +1,327 @@
- type: markingsGroup
id: Shadekin
limits:
enum.HumanoidVisualLayers.Hair:
limit: 0
required: false
enum.HumanoidVisualLayers.FacialHair:
limit: 0
required: false
enum.HumanoidVisualLayers.Chest:
limit: 2
required: false
enum.HumanoidVisualLayers.Snout:
limit: 1
required: false
enum.HumanoidVisualLayers.LArm:
limit: 1
required: false
enum.HumanoidVisualLayers.RArm:
limit: 1
required: false
enum.HumanoidVisualLayers.LHand:
limit: 1
required: false
enum.HumanoidVisualLayers.RHand:
limit: 1
required: false
enum.HumanoidVisualLayers.LLeg:
limit: 1
required: false
enum.HumanoidVisualLayers.RLeg:
limit: 1
required: false
enum.HumanoidVisualLayers.LFoot:
limit: 1
required: false
enum.HumanoidVisualLayers.RFoot:
limit: 1
required: false
enum.HumanoidVisualLayers.Tail:
limit: 1
required: true
default: [TailShadekin]
enum.HumanoidVisualLayers.HeadTop:
limit: 1
required: true
default: [EarsShadekin]
- type: entity
parent: BaseSpeciesAppearance
id: AppearanceShadekin
name: shadekin appearance
components:
- type: InitialBody
organs:
Torso: OrganShadekinTorso
Head: OrganShadekinHead
ArmLeft: OrganShadekinArmLeft
ArmRight: OrganShadekinArmRight
HandRight: OrganShadekinHandRight
HandLeft: OrganShadekinHandLeft
LegLeft: OrganShadekinLegLeft
LegRight: OrganShadekinLegRight
FootLeft: OrganShadekinFootLeft
FootRight: OrganShadekinFootRight
Brain: OrganShadekinBrain
Eyes: OrganShadekinEyes
Tongue: OrganShadekinTongue
Appendix: OrganShadekinAppendix
Ears: OrganShadekinEars
Lungs: OrganShadekinLungs
Heart: OrganShadekinHeart
Stomach: OrganShadekinStomach
Liver: OrganShadekinLiver
Kidneys: OrganShadekinKidneys
- type: HumanoidProfile
species: Shadekin
- type: ScaleVisuals
scale: 0.9, 0.9
- type: entity
save: false
name: Urist McShadow
parent:
- AppearanceShadekin
- BaseSpeciesMob
id: MobShadekin
components:
- type: Shadekin
thresholds:
0.8: Low
5: Annoying
10: High
15: Extreme
# - type: Absorbable # Delta-V: Commented out, we got no Absorbable
- type: Hunger
- type: Thirst
- type: Icon
sprite: _Starlight/Mobs/Species/Shadekin/parts.rsi
state: full
- type: Speech
allowedEmotes: ["Marr", "Wurble", "Hiss", "Growl", "Purr"]
- type: Vocal
sounds:
Male: MaleShadekin
Female: FemaleShadekin
Unsexed: MaleShadekin
- type: MeleeWeapon
soundHit:
collection: AlienClaw
angle: 30
animation: WeaponArcClaw
damage:
types:
Slash: 5
- type: FlashModifier
modifier: 2
- type: Damageable
damageContainer: Biological
damageModifierSet: Shadekin
- type: Deathgasp
damageType: Bloodloss
- type: Reactive
groups:
Flammable: [Touch]
Extinguish: [Touch]
reactions:
- reagents: [Water, SpaceCleaner]
methods: [Touch]
effects:
- !type:WashCreamPie
- reagents: [ Water ]
methods: [Touch]
effects:
- !type:Emote
emote: Hiss
showInChat: false
- type: Bloodstream
bloodlossDamage:
types:
Bloodloss: 1
bloodlossHealDamage:
types:
Bloodloss: -0.25
- type: Flammable
damage:
types:
Heat: 1.5
- type: TypingIndicator
proto: alien
# - type: Destructible
# thresholds:
# - trigger: !type:DamageTypeTrigger
# damageType: Blunt
# damage: 400
# behaviors:
# - !type:GibBehavior {}
# - !type:SpawnEntitiesBehavior
# spawn:
# ShadekinShadow:
# min: 1
# max: 1
# - trigger: !type:DamageTypeTrigger
# damageType: Heat
# damage: 1500
# behaviors:
# - !type:SpawnEntitiesBehavior
# spawnInContainer: true
# spawn:
# Ash:
# min: 1
# max: 1
# ShadekinShadow:
# min: 1
# max: 1
# - !type:BurnBodyBehavior {}
# BaseMobSpeciesOrganic // Because we dont want respirator to be used.
- type: Barotrauma
damage:
types:
Blunt: 0.85 #per second, scales with pressure and other constants.
Heat: 0.1
- type: PassiveDamage # Slight passive regen. Assuming one damage type, comes out to about 4 damage a minute.
allowedStates:
- Alive
damage:
types:
Heat: -0.07
Blunt: -0.07
Piercing: -0.07
Slash: -0.07
- type: TemperatureSpeed
thresholds:
293: 0.8
280: 0.6
260: 0.4
- type: ThermalRegulator
metabolismHeat: 800
radiatedHeat: 100
implicitHeatRegulation: 500
sweatHeatRegulation: 2000
shiveringHeatRegulation: 2000
normalBodyTemperature: 310.15
thermalRegulationTemperatureThreshold: 2
- type: Perishable
- type: entity
parent: OrganBase
id: OrganShadekin
abstract: true
suffix: shadekin
- type: entity
id: OrganShadekinMetabolizer
abstract: true
components:
- type: Metabolizer
metabolizerTypes: [ Human ]
- type: entity
parent: OrganShadekin
id: OrganShadekinInternal
abstract: true
components:
- type: Sprite
sprite: _Starlight/Mobs/Species/Shadekin/organs.rsi
- type: entity
id: OrganShadekinVisual
abstract: true
components:
- type: VisualOrgan
data:
sprite: _Starlight/Mobs/Species/Shadekin/parts.rsi # Delta V - Changed to our sprites
- type: VisualOrganMarkings
markingData:
group: Shadekin
- type: entity
parent: [ OrganShadekin, OrganShadekinVisual ]
id: OrganShadekinExternal
abstract: true
components:
- type: Sprite
sprite: _Starlight/Mobs/Species/Shadekin/parts.rsi # Delta V - Changed to our Sprites
- type: entity
parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganShadekinExternal ]
id: OrganShadekinTorso
- type: entity
parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganShadekinExternal ]
id: OrganShadekinHead
- type: entity
parent: [ OrganBaseArmLeft, OrganShadekinExternal ]
id: OrganShadekinArmLeft
- type: entity
parent: [ OrganBaseArmRight, OrganShadekinExternal ]
id: OrganShadekinArmRight
- type: entity
parent: [ OrganBaseHandLeft, OrganShadekinExternal ]
id: OrganShadekinHandLeft
- type: entity
parent: [ OrganBaseHandRight, OrganShadekinExternal ]
id: OrganShadekinHandRight
- type: entity
parent: [ OrganBaseLegLeft, OrganShadekinExternal ]
id: OrganShadekinLegLeft
- type: entity
parent: [ OrganBaseLegRight, OrganShadekinExternal ]
id: OrganShadekinLegRight
- type: entity
parent: [ OrganBaseFootLeft, OrganShadekinExternal ]
id: OrganShadekinFootLeft
- type: entity
parent: [ OrganBaseFootRight, OrganShadekinExternal ]
id: OrganShadekinFootRight
- type: entity
parent: [ OrganBaseBrain, OrganShadekinInternal ]
id: OrganShadekinBrain
- type: entity
parent: [ OrganShadekinVisual, OrganSpriteHumanInternal, OrganBaseEyes, OrganShadekinInternal ]
id: OrganShadekinEyes
- type: entity
parent: [ OrganBaseTongue, OrganShadekinInternal ]
id: OrganShadekinTongue
- type: entity
parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganShadekinInternal ]
id: OrganShadekinAppendix
- type: entity
parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganShadekinInternal ]
id: OrganShadekinEars
- type: entity
parent: [ OrganBaseLungs, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinLungs
- type: entity
parent: [ OrganBaseHeart, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinHeart
- type: entity
parent: [ OrganBaseStomach, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinStomach
- type: entity
parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinLiver
- type: entity
parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganShadekinInternal, OrganShadekinMetabolizer ]
id: OrganShadekinKidneys

View File

@ -0,0 +1,631 @@
# Ears
- type: marking
id: EarsShadekin
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- type: marking
id: EarsShadekinStriped
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
shadekin_stripes:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin_stripes
- type: marking
id: EarsShadekinMotley
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
motley_secondary:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: motley_secondary
- type: marking
id: EarsShadekinShady
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shady
- type: marking
id: EarsShadekinPiercingAll
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
piercing_all:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: piercing_all
- type: marking
id: EarsShadekinPiercingLeft
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
piercing_left:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: piercing_left
- type: marking
id: EarsShadekinPiercingRight
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
piercing_right:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: piercing_right
- type: marking
id: EarsShadekinRingedAll
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
ringed_all_secondary:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: ringed_all_secondary
- type: marking
id: EarsShadekinRingedLeft
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
ringed_left_secondary:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: ringed_left_secondary
- type: marking
id: EarsShadekinRingedRight
bodyPart: HeadTop
groupWhitelist: [Shadekin]
coloring:
default:
type:
!type:SkinColoring
layers:
ringed_right_secondary:
type:
!type:SimpleColoring
color: "#FFFFFF"
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: ringed_right_secondary
- type: marking
id: EarsShadekinGauzedAll
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: gauze_ear_all_default
- type: marking
id: EarsShadekinGauzedLeft
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: gauze_ear_l_default
- type: marking
id: EarsShadekinGauzedRight
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: shadekin
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: gauze_ear_r_default
- type: marking
id: EarsShadekinFluffy
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- type: marking
id: EarsShadekinFluffyButterfly
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_butterfly
- type: marking
id: EarsShadekinFluffyCowling
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_cowling
- type: marking
id: EarsShadekinFluffyCrow
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_crow
- type: marking
id: EarsShadekinFluffyMotley
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_motley
- type: marking
id: EarsShadekinFluffySpidy
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_spidy
- type: marking
id: EarsShadekinFluffyRingedAll
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_ringed_all
- type: marking
id: EarsShadekinFluffyRingedLeft
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_ringed_left
- type: marking
id: EarsShadekinFluffyRingedRight
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: fluffy_ringed_right
- type: marking
id: EarsShadekinSaggy
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- type: marking
id: EarsShadekinSaggyBrawly
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_brawly
- type: marking
id: EarsShadekinSaggyZebra
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_zebra
- type: marking
id: EarsShadekinSaggyGradient
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_gradient
- type: marking
id: EarsShadekinSaggyGauzedAll
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_gauze_all
- type: marking
id: EarsShadekinSaggyGauzedLeft
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_gauze_l
- type: marking
id: EarsShadekinSaggyGauzedRight
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: saggy_gauze_r
- type: marking
id: EarsShadekinShort
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_default
- type: marking
id: EarsShadekinShortButterfly
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_butterfly
- type: marking
id: EarsShadekinShortRingedAll
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_ringed_all
- type: marking
id: EarsShadekinShortRingedLeft
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_ringed_left
- type: marking
id: EarsShadekinShortRingedRight
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: short_ringed_right
- type: marking
id: EarsShadekinBull
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: bull_default
- type: marking
id: EarsShadekinBullSmooth
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: bull_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: bull_smooth
- type: marking
id: EarsShadekinAqua
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: aqua_default
- type: marking
id: EarsShadekinAquaIncolor
bodyPart: HeadTop
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: aqua_default
- sprite: _Starlight/Mobs/Customization/shadekin/ears.rsi
state: aqua_incolor
# Tails
- type: marking
id: TailShadekin
bodyPart: Tail
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/tails64x32.rsi
state: shadekin
- type: marking
id: TailShadekinBig
bodyPart: Tail
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/tails64x32.rsi
state: shadekin_big
# - type: marking
# id: TailShadekinBigFluff
# bodyPart: Tail
# groupWhitelist: [Shadekin]
# sprites:
# - sprite: _Starlight/Mobs/Customization/shadekin/tails64x32.rsi
# state: shadekin_big_fluff
- type: marking
id: TailShadekinShorter
bodyPart: Tail
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/tails32x32.rsi
state: shadekin_shorter
- type: marking
id: TailShadekinShorterBrush
bodyPart: Tail
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/tails32x32.rsi
state: shadekin_shorter
- sprite: _Starlight/Mobs/Customization/shadekin/tails32x32.rsi
state: shorter_brush
- type: marking
id: TailShadekinMedium
bodyPart: Tail
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/tails32x32.rsi
state: shadekin_medium
- type: marking
id: TailShadekinMediumTwoColored
bodyPart: Tail
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/tails32x32.rsi
state: shadekin_medium
- sprite: _Starlight/Mobs/Customization/shadekin/tails32x32.rsi
state: medium_twocolored
# Overlays
- type: marking
id: BodyShadekinArrow
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_arrow
- type: marking
id: BodyShadekinBlackHole
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_blackhole
- type: marking
id: BodyShadekinBrace
bodyPart: RArm
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_brace
- type: marking
id: BodyShadekinBrawly
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_brawly
- type: marking
id: BodyShadekinHeart
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_heart
- type: marking
id: BodyShadekinInk
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink
- type: marking
id: BodyShadekinInk2
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink2
- type: marking
id: BodyShadekinInk3
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink3
- type: marking
id: BodyShadekinInk4
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink4
- type: marking
id: BodyShadekinInk5
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink5
- type: marking
id: BodyShadekinInk6
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink6
- type: marking
id: BodyShadekinInkAnim
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_ink_anim
- type: marking
id: BodyShadekinLines
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_lines
- type: marking
id: BodyShadekinNeck
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_neck
- type: marking
id: BodyShadekinShield
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_shield
- type: marking
id: BodyShadekinVacuum
bodyPart: Chest
groupWhitelist: [Shadekin]
sprites:
- sprite: _Starlight/Mobs/Customization/shadekin/overlay.rsi
state: body_vacuum

View File

@ -0,0 +1,19 @@
- type: species
id: Shadekin
name: species-name-shadekin
roundStart: true
prototype: MobShadekin
dollPrototype: AppearanceShadekin
defaultSkinTone: "#ffffff"
skinColoration: Hues
# eyeColoration: Shadekin
maleFirstNames: names_shadekin
femaleFirstNames: names_shadekin
naming: First
baseScale: "0.9, 0.9"
# Delta V - Comment out
# minAge: 18
# maxAge: 300
# youngAge: 30
# oldAge: 250
# customName: true

View File

@ -0,0 +1,19 @@
- type: alert
id: Shadekin
icons:
- sprite: error.rsi
state: error
- sprite: /Textures/_Starlight/Interface/Alerts/shadekin.rsi
state: dark
- sprite: /Textures/_Starlight/Interface/Alerts/shadekin.rsi
state: low
- sprite: /Textures/_Starlight/Interface/Alerts/shadekin.rsi
state: normal
- sprite: /Textures/_Starlight/Interface/Alerts/shadekin.rsi
state: high
- sprite: /Textures/_Starlight/Interface/Alerts/shadekin.rsi
state: dangerous
minSeverity: 0
maxSeverity: 5
name: alerts-shadekin-name
description: alerts-shadekin-desc

View File

@ -0,0 +1,10 @@
- type: damageModifierSet
id: Shadekin
coefficients:
Asphyxiation: 0
Cold: 0.75
Heat: 1.2
# Cellular: 0.25 # Delta V - Commented out after Direction Request
Bloodloss: 1.35
Shock: 1.25
Radiation: 1.3

View File

@ -0,0 +1,5 @@
- type: localizedDataset
id: names_shadekin
values:
prefix: names-shadekin-dataset-
count: 49

View File

@ -0,0 +1,66 @@
- type: entity
name: Shadekin Haze
id: ShadekinShadow
parent: BaseShadow
placement:
mode: SnapgridCenter
snap:
- Wall
components:
- type: Appearance
- type: Transform
anchored: true
# - type: EmitSoundOnSpawn
# sound:
# path: null # Delta-V commented out, as file misisng for nullphase.ogg
- type: TimedDespawn
lifetime: 30
- type: Physics
canCollide: false
- type: Occluder
- type: Sprite
drawdepth: Effects
sprite: Effects/spookysmoke.rsi
layers:
- state: spookysmoke
color: "#793a80dd"
map: [base]
- type: Tag
tags:
- HideContextMenu
- SpookyFog
- type: OptionsVisualizer
visuals:
base:
- options: Default
data: { state: spookysmoke }
- options: ReducedMotion
data: { state: spookysmoke_static }
- type: entity
id: ShadekinPhaseInEffect
name: Shadekin Phase in
components:
- type: TimedDespawn
lifetime: 0.5
- type: Sprite
layers:
- sprite: _Starlight/Effects/shadekin.rsi
state: tp_in
shader: unshaded
netsync: false
drawdepth: Effects
- type: entity
id: ShadekinPhaseOutEffect
name: Shadekin Phase out
components:
- type: TimedDespawn
lifetime: 0.5
- type: Sprite
layers:
- sprite: _Starlight/Effects/shadekin.rsi
state: tp_out
shader: unshaded
netsync: false
drawdepth: Effects

View File

@ -0,0 +1,25 @@
- type: entity
parent: BasePlushie
id: BaseShadekinPlushie
abstract: true
components:
- type: EmitSoundOnUse
sound:
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
- type: EmitSoundOnLand
sound:
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
- type: EmitSoundOnActivate
sound:
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
- type: EmitSoundOnTrigger
sound:
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
- type: MeleeWeapon
wideAnimationRotation: 180
soundHit:
path: /Audio/_Starlight/Voice/Shadekin/wurble.ogg
- type: Edible
requiresSpecialDigestion: true
useSound:
collection: FelinidScreams

View File

@ -0,0 +1,12 @@
- type: entity
parent: BaseShadekinPlushie
id: PlushieShadekin
name: Shadekin Plushie
description: A plushie of a Shadekin. It's very soft.
components:
- type: Item
size: Small
sprite: _Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi
- type: Sprite
sprite: _Starlight/Objects/Fun/Plushies/shadekin_plushie.rsi
state: icon

View File

@ -0,0 +1,11 @@
- type: soundCollection
id: ShadekinMaleScreams
files:
- /Audio/_Starlight/Voice/Shadekin/scream_m1.ogg
- /Audio/_Starlight/Voice/Shadekin/scream_m2.ogg
- type: soundCollection
id: ShadekinFemaleScreams
files:
- /Audio/_Starlight/Voice/Shadekin/scream_f1.ogg
- /Audio/_Starlight/Voice/Shadekin/scream_f2.ogg

View File

@ -0,0 +1,41 @@
- type: trait
id: HighLightSensitivity
name: trait-highlightsensitivity-name
description: trait-highlightsensitivity-desc
category: Disabilities
cost: -1
effects:
- !type:OverrideCompsEffect
components:
- type: Shadekin
thresholds:
0.7: Low
0.8: Annoying
5: High
10: Extreme
conditions:
- !type:IsSpeciesCondition
species: Shadekin
conflicts:
- ExtremeLightSensitivity
- type: trait
id: ExtremeLightSensitivity
name: trait-extremelightsensitivity-name
description: trait-extremelightsensitivity-desc
category: Disabilities
cost: -2
effects:
- !type:OverrideCompsEffect
components:
- type: Shadekin
thresholds:
0.6: Low
0.7: Annoying
0.8: High
5: Extreme
conditions:
- !type:IsSpeciesCondition
species: Shadekin
conflicts:
- HighLightSensitivity

View File

@ -0,0 +1,80 @@
# species
- type: emoteSounds
id: MaleShadekin
params:
variation: 0.125
sounds:
Scream:
collection: ShadekinMaleScreams
Laugh:
collection: MaleLaugh
Sneeze:
collection: MaleSneezes
Cough:
collection: MaleCoughs
Yawn:
collection: MaleYawn
Snore:
collection: Snores
Sigh:
collection: MaleSigh
Crying:
collection: MaleCry
Whistle:
collection: Whistles
Weh:
collection: Weh
Gasp:
collection: MaleGasp
DefaultDeathgasp:
collection: MaleDeathGasp
Marr:
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
Wurble:
path: /Audio/_Starlight/Voice/Shadekin/wurble.ogg
Hiss:
collection: FelinidHisses
Purr:
collection: FelinidPurrs
Growl:
collection: FelinidGrowls
- type: emoteSounds
id: FemaleShadekin
params:
variation: 0.125
sounds:
Scream:
collection: ShadekinFemaleScreams
Laugh:
collection: FemaleLaugh
Sneeze:
collection: FemaleSneezes
Cough:
collection: FemaleCoughs
Yawn:
collection: FemaleYawn
Snore:
collection: Snores
Sigh:
collection: FemaleSigh
Crying:
collection: FemaleCry
Whistle:
collection: Whistles
Weh:
collection: Weh
Gasp:
collection: FemaleGasp
DefaultDeathgasp:
collection: FemaleDeathGasp
Marr:
path: /Audio/_Starlight/Voice/Shadekin/mar.ogg
Wurble:
path: /Audio/_Starlight/Voice/Shadekin/wurble.ogg
Hiss:
collection: FelinidHisses
Purr:
collection: FelinidPurrs
Growl:
collection: FelinidGrowls

View File

@ -0,0 +1,35 @@
- type: emote
id: Marr
name: chat-emote-name-marr
category: Vocal
whitelist:
components:
- Vocal
blacklist:
components:
- BorgChassis
chatMessages: ["chat-emote-msg-marr"]
chatTriggers:
- marr
- marr.
- marr!
- marr?
- marrs
- marrs.
- marrs!
- marrs?
- type: emote
id: Wurble
name: chat-emote-name-wurble
category: Vocal
whitelist:
components:
- Vocal
blacklist:
components:
- BorgChassis
chatMessages: ["chat-emote-msg-wurble"]
chatTriggers:
- wurble
- wurbles

View File

@ -29,5 +29,6 @@
<GuideEntityEmbed Entity="AppearanceKitsune" Caption="Kitsune"/>
<GuideEntityEmbed Entity="AppearanceOvinia" Caption="Ovinia"/>
<GuideEntityEmbed Entity="AppearanceAllulalo" Caption="Allulalo"/>
<GuideEntityEmbed Entity="AppearanceShadekin" Caption="Shadekin"/>
</Box>
</Document>

View File

@ -0,0 +1,65 @@
<Document>
# Shadekin
<Box>
<GuideEntityEmbed Entity="MobShadekin" Caption=""/>
</Box>
Shadekin are a species whom originally dwell and are from another dimension called “The Dark”.
Most if not all Shadekin that are employed or under contract from NT are afflicted with a condition they call “Black-eye” and or as the Shadekin themselves refer to as being “Burnt”.
This affliction and condition supposedly is the cause of them being incapable of returning to the aforementioned “The Dark”.
Adapted to their home dimension of which is one absent of light, their vision is highly reactive to light levels.
Dim lights being a source of passive annoyance or discomfort, bright lights ail them much more noticeably, being a source of pain and harm to them.
## Racial Features
- Receive [color=#ffa500]20% more heat damage[/color]
- Receive [color=#1e90ff]25% less cold damage[/color]
- Receive [color=#ffa500]170% more bloodloss damage[/color]
- Receive [color=#ffa500]30% more radiation damage[/color]
- Receive [color=#ffa500]25% more shock damage[/color].
- Heal [color=#ffa500]bloodloss damage 75% slower[/color]
- They do not breathe and thus require no air.
- Flash stun times are doubled.
- Deal [color=red]5[/color] slashing damage with claws.
## Marish
Shadekin have a language shared amongst them all, composed of only a singular word: “Mar”, whilst it can be altered in length and or composition, from potential additional As or Rs in the pronunciation. With this one and simple word however, Shadekin can convey and provide complex thought, and deep emotion alike.
Simplistic but endlessly deep for the Shadekin.
## Age & Names
Shadekin are an example of a very slow biological aging process.
Whilst maturity and eligible employment are known to standard to be 18.
Often Shadekin are considered young up until the age range of around 100, the ranges of 100-200 are what would be considered middle-aged, 200-300 being the instance of them starting to enter a elderly state.
Names are of great significance to Shadekin. Often these names are considered titles and bear them upon entering the physical from their home of “The Dark”.
These titles are often provided and or given to them by the attributes or qualities they exhibit, however there are other cases where it can be even items, passions, or ideas they are fond of.
There are instances as well of some Shadekin whom have become acclimated to provide their own titles, replacing previous ones.
This is not an aspect taken lightly by them nor other Shadekin, such a decision is akin to throwing away their previous selves.
## Nightvision
Shadekin due to their natural adaptation to their home dimension have innate Night-vision.
Capable of seeing and viewing things even in the most abyss-like darknesses, not needing any form of light providing device.
When wearing flash resistant equipment their vision will be normal.
This can be easily sorted by the Shadekin wearing a HUD variant, no longer having flash resistance, but keeping the utility that their nightvision and the HUD provide.
<Box>
<GuideEntityEmbed Entity="ClothingEyesGlassesSecurity" Scale="5" Caption="Security Glasses\nNo Nightvision\nHas flash immunity"/>
<GuideEntityEmbed Entity="ClothingEyesHudSecurity" Scale="5" Caption="Security Hud\nNightvision\nNo flash immunity"/>
</Box>
## LIGHT SENSITIVITY
[color=yellow]Light Exposure: Dark[/color]
- Passive Regeneration is increased.
- Nightvision.
[color=yellow]Light Exposure: Low[/color]
- No changes.
[color=yellow]Light Exposure: Annoying[/color]
- Passive Regeneration is disabled.
[color=yellow]Light Exposure: High[/color]
- Heavy Slowdown.
[color=yellow]Light Exposure:[/color] [color=red]EXTREME[/color]
- Get burned [color=red]1[/color] heat damage per second.
</Document>

View File

@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/ca674eff9d23e04357b7609ef7e07eadfc1a993f and modified by Flareguy (github), encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, nitrogentank modified from extendedtank by Errant, agrichemkit by Cerol, modified by ps3moira (github). sechud renamed to secglasses, new sechud, sunglasses by K-Dynamic (github), trigger by IProduceWidgets, utensils by gentleman-bird (github). stamp, totes modified from box by Mixelz.",
"copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/ca674eff9d23e04357b7609ef7e07eadfc1a993f and modified by Flareguy (github), encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, nitrogentank modified from extendedtank by Errant, agrichemkit by Cerol, modified by ps3moira (github). sechud renamed to secglasses, new sechud, sunglasses by K-Dynamic (github), trigger by IProduceWidgets, utensils by gentleman-bird (github). stamp, totes modified from box by Mixelz, shadekin icon by RHSvenson (github)",
"size": {
"x": 32,
"y": 32
@ -253,6 +253,9 @@
},
{
"name": "agrichemkit"
},
{
"name": "shadekin"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

View File

@ -0,0 +1,79 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/CHOMPStation2/CHOMPStation2/",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "tp_out",
"directions": 4,
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "tp_in",
"directions": 4,
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1
],
[
0.1,
0.1,
0.1,
0.1,
0.1
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@ -0,0 +1,15 @@
{
"version": 1,
"size": {
"x": 64,
"y": 64
},
"license": "CC-BY-SA-3.0",
"copyright": "DEATHB4DEFEAT#4404 (801294818839756811)",
"states": [
{
"name": "phase",
"directions": 1
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,36 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Starlight, MailTech Icons by tinnitus intensifies (420711810417557504) on discord",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "dark"
},
{
"name": "low"
},
{
"name": "normal"
},
{
"name": "high"
},
{
"name": "extreme"
},
{
"name": "dangerous",
"delays": [
[
0.5,
0.5
]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 897 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

View File

@ -0,0 +1,167 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "shadekin, shadekin_stripes made by team Adventure Time. Other made by discord:filokini",
"states": [
{
"name": "shadekin",
"directions": 4
},
{
"name": "shadekin_stripes",
"directions": 4
},
{
"name": "aqua_default",
"directions": 4
},
{
"name": "aqua_incolor",
"directions": 4
},
{
"name": "bull_default",
"directions": 4
},
{
"name": "bull_smooth",
"directions": 4
},
{
"name": "cowling_secondary",
"directions": 4
},
{
"name": "motley_secondary",
"directions": 4
},
{
"name": "shady",
"directions": 4
},
{
"name": "fluffy_butterfly",
"directions": 4
},
{
"name": "fluffy_cowling",
"directions": 4
},
{
"name": "fluffy_crow",
"directions": 4
},
{
"name": "fluffy_default",
"directions": 4
},
{
"name": "fluffy_motley",
"directions": 4
},
{
"name": "fluffy_ringed_left",
"directions": 4
},
{
"name": "fluffy_ringed_right",
"directions": 4
},
{
"name": "fluffy_ringed_all",
"directions": 4
},
{
"name": "fluffy_spidy",
"directions": 4
},
{
"name": "gauze_ear_l_default",
"directions": 4
},
{
"name": "gauze_ear_r_default",
"directions": 4
},
{
"name": "gauze_ear_all_default",
"directions": 4
},
{
"name": "piercing_all",
"directions": 4
},
{
"name": "piercing_left",
"directions": 4
},
{
"name": "piercing_right",
"directions": 4
},
{
"name": "ringed_left_secondary",
"directions": 4
},
{
"name": "ringed_right_secondary",
"directions": 4
},
{
"name": "ringed_all_secondary",
"directions": 4
},
{
"name": "saggy_brawly",
"directions": 4
},
{
"name": "saggy_default",
"directions": 4
},
{
"name": "saggy_gauze_l",
"directions": 4
},
{
"name": "saggy_gauze_r",
"directions": 4
},
{
"name": "saggy_gauze_all",
"directions": 4
},
{
"name": "saggy_gradient",
"directions": 4
},
{
"name": "saggy_zebra",
"directions": 4
},
{
"name": "short_butterfly",
"directions": 4
},
{
"name": "short_default",
"directions": 4
},
{
"name": "short_ringed_left",
"directions": 4
},
{
"name": "short_ringed_right",
"directions": 4
},
{
"name": "short_ringed_all",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 789 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Some files were not shown because too many files have changed in this diff Show More