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>
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
namespace Content.Shared._Starlight.Flash.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class FlashModifierComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public float Modifier = 1f;
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
chat-emote-name-marr = Marr
|
||||
chat-emote-name-wurble = Wurble
|
||||
|
||||
chat-emote-msg-marr = marrs!
|
||||
chat-emote-msg-wurble = wurbles!
|
||||
|
|
@ -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!
|
||||
|
|
@ -0,0 +1 @@
|
|||
species-name-shadekin = Shadekin
|
||||
|
|
@ -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.
|
||||
|
|
@ -6,6 +6,7 @@
|
|||
order:
|
||||
- category: Health
|
||||
- category: Stamina
|
||||
- alertType: Shadeskin # Starlight
|
||||
- alertType: SuitPower
|
||||
- category: Internals
|
||||
- alertType: Fire
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
- Ovinia
|
||||
# End DeltaV additions
|
||||
- Allulalo #imp
|
||||
- Shadekin # Delta V - Starlight Addition
|
||||
|
||||
- type: loadoutEffectGroup
|
||||
id: EffectSpeciesVox
|
||||
|
|
|
|||
|
|
@ -15,3 +15,4 @@
|
|||
Moth: 4
|
||||
#Dwarf: 2 # DeltaV - No Dwarfs
|
||||
Vox: 1
|
||||
Shadekin: 2 # DeltaV - Shadekin from Starlight
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
- type: localizedDataset
|
||||
id: names_shadekin
|
||||
values:
|
||||
prefix: names-shadekin-dataset-
|
||||
count: 49
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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 A’s or R’s 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>
|
||||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 266 B |
|
|
@ -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
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 8.3 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
|
|
@ -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
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 897 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 508 B |
|
After Width: | Height: | Size: 602 B |
|
After Width: | Height: | Size: 653 B |
|
After Width: | Height: | Size: 722 B |
|
After Width: | Height: | Size: 873 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 520 B |
|
After Width: | Height: | Size: 246 B |
|
After Width: | Height: | Size: 199 B |
|
After Width: | Height: | Size: 203 B |
|
After Width: | Height: | Size: 782 B |
|
After Width: | Height: | Size: 311 B |
|
After Width: | Height: | Size: 327 B |
|
After Width: | Height: | Size: 288 B |
|
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 467 B |
|
After Width: | Height: | Size: 192 B |
|
After Width: | Height: | Size: 525 B |
|
After Width: | Height: | Size: 527 B |
|
After Width: | Height: | Size: 251 B |
|
After Width: | Height: | Size: 214 B |
|
After Width: | Height: | Size: 215 B |
|
After Width: | Height: | Size: 888 B |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 326 B |
|
After Width: | Height: | Size: 331 B |
|
After Width: | Height: | Size: 338 B |
|
After Width: | Height: | Size: 656 B |
|
After Width: | Height: | Size: 553 B |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 789 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 748 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 214 B |
|
After Width: | Height: | Size: 171 B |
|
After Width: | Height: | Size: 178 B |
|
After Width: | Height: | Size: 327 B |
|
After Width: | Height: | Size: 165 B |
|
After Width: | Height: | Size: 232 B |
|
After Width: | Height: | Size: 502 B |
|
After Width: | Height: | Size: 350 B |