diff --git a/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml new file mode 100644 index 0000000000..56b4791f42 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs new file mode 100644 index 0000000000..200d7b9d12 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs @@ -0,0 +1,22 @@ +using Content.Shared._Impstation.Thaven; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; + +namespace Content.Client._Impstation.Thaven.Eui; + +[GenerateTypedNameReferences] +public sealed partial class MoodContainer : BoxContainer +{ + public MoodContainer(ThavenMood? mood = null) + { + RobustXamlLoader.Load(this); + + if (mood != null) + { + ThavenMoodTitle.Text = mood.GetLocName(); + ThavenMoodContent.TextRope = new Rope.Leaf(mood.GetLocDesc()); + } + } +} diff --git a/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml new file mode 100644 index 0000000000..5999790845 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml @@ -0,0 +1,22 @@ + + + this shit does not layout properly unless I put the horizontal boxcontainer inside of a vertical one + ???? + + + + + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs new file mode 100644 index 0000000000..eee6da6c0c --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs @@ -0,0 +1,94 @@ +using Content.Client.UserInterface.Controls; +using Content.Shared._Impstation.Thaven; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; + +namespace Content.Client._Impstation.Thaven.Eui; + +[GenerateTypedNameReferences] +public sealed partial class ThavenMoodUi : FancyWindow +{ + private List _moods = new(); + + public ThavenMoodUi() + { + RobustXamlLoader.Load(this); + NewMoodButton.OnPressed += _ => AddNewMood(); + } + + private void AddNewMood() + { + MoodContainer.AddChild(new MoodContainer()); + } + + public List GetMoods() + { + var newMoods = new List(); + + foreach (var control in MoodContainer.Children) + { + if (control is not MoodContainer moodControl) + continue; + + if (string.IsNullOrWhiteSpace(moodControl.ThavenMoodTitle.Text)) + continue; + + var moodText = Rope.Collapse(moodControl.ThavenMoodContent.TextRope).Trim(); + + if (string.IsNullOrWhiteSpace(moodText)) + continue; + + var mood = new ThavenMood() + { + MoodName = moodControl.ThavenMoodTitle.Text, + MoodDesc = moodText, + }; + + newMoods.Add(mood); + } + + return newMoods; + } + + private void MoveUp(int index) + { + if (index <= 0) + return; + + (_moods[index], _moods[index - 1]) = (_moods[index - 1], _moods[index]); + SetMoods(_moods); + } + + private void MoveDown(int index) + { + if (index >= _moods.Count - 1) + return; + + (_moods[index], _moods[index + 1]) = (_moods[index + 1], _moods[index]); + SetMoods(_moods); + } + + private void Delete(int index) + { + _moods.RemoveAt(index); + + SetMoods(_moods); + } + + public void SetMoods(List moods) + { + _moods = moods; + MoodContainer.RemoveAllChildren(); + for (var i = 0; i < moods.Count; i++) + { + var index = i; // Copy for the closure + var mood = moods[i]; + var moodControl = new MoodContainer(mood); + moodControl.MoveUp.OnPressed += _ => MoveUp(index); + moodControl.MoveDown.OnPressed += _ => MoveDown(index); + moodControl.Delete.OnPressed += _ => Delete(index); + MoodContainer.AddChild(moodControl); + } + } +} diff --git a/Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs new file mode 100644 index 0000000000..a6a8b05ee9 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs @@ -0,0 +1,48 @@ +using Content.Client.Eui; +using Content.Shared.Eui; +using Content.Shared._Impstation.Thaven; + +namespace Content.Client._Impstation.Thaven.Eui; + +public sealed class ThavenMoodsEui : BaseEui +{ + private readonly EntityManager _entityManager; + + private ThavenMoodUi _thavenMoodUi; + private NetEntity _target; + + public ThavenMoodsEui() + { + _entityManager = IoCManager.Resolve(); + + _thavenMoodUi = new ThavenMoodUi(); + _thavenMoodUi.SaveButton.OnPressed += _ => SaveMoods(); + } + + private void SaveMoods() + { + var newMoods = _thavenMoodUi.GetMoods(); + SendMessage(new ThavenMoodsSaveMessage(newMoods, _target)); + _thavenMoodUi.SetMoods(newMoods); + } + + public override void Opened() + { + _thavenMoodUi.OpenCentered(); + } + + public override void HandleState(EuiStateBase state) + { + if (state is not ThavenMoodsEuiState s) + return; + + _target = s.Target; + _thavenMoodUi.SetMoods(s.Moods); + } + + public override void Closed() + { + base.Closed(); + _thavenMoodUi.Close(); + } +} diff --git a/Content.Client/_Impstation/Thaven/MoodDisplay.xaml b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml new file mode 100644 index 0000000000..3be9bf9c41 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs new file mode 100644 index 0000000000..1d2a8cffb2 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs @@ -0,0 +1,36 @@ +using System.Linq; +using Content.Client.Chat.Managers; +using Content.Client.Message; +using Content.Shared._Impstation.Thaven; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Client._Impstation.Thaven; + +[GenerateTypedNameReferences] +public sealed partial class MoodDisplay : Control +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly EntityManager _entityManager = default!; + + private string GetSharedString() + { + return $"[italic][font size=10][color=gray]{Loc.GetString("moods-ui-shared-mood")}[/color][/font][/italic]"; + } + + public MoodDisplay(ThavenMood mood, bool shared) + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + if (shared) + MoodNameLabel.SetMarkup($"{mood.GetLocName()} {GetSharedString()}"); + else + MoodNameLabel.SetMarkup(mood.GetLocName()); + MoodDescLabel.SetMarkup(mood.GetLocDesc()); + } +} diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs b/Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs new file mode 100644 index 0000000000..3bde3c8f15 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs @@ -0,0 +1,7 @@ +using Content.Shared._Impstation.Thaven; + +namespace Content.Client._Impstation.Thaven; + +public sealed partial class ThavenMoodSystem : SharedThavenMoodSystem +{ +} diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs b/Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs new file mode 100644 index 0000000000..a80f9583c1 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodsBoundUserInterface.cs @@ -0,0 +1,41 @@ +using Content.Client._Impstation.Thaven; +using Content.Shared._Impstation.Thaven; +using Content.Shared._Impstation.Thaven.Components; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client._Impstation.Thaven; + +[UsedImplicitly] +public sealed class ThavenMoodsBoundUserInterface : BoundUserInterface +{ + [ViewVariables] + private ThavenMoodsMenu? _menu; + private EntityUid _owner; + private List? _moods; + private List? _sharedMoods; + + public ThavenMoodsBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + _owner = owner; + } + + protected override void Open() + { + base.Open(); + + _menu = this.CreateWindow(); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (state is not ThavenMoodsBuiState msg) + return; + + _moods = msg.Moods; + _sharedMoods = msg.SharedMoods; + _menu?.Update(_owner, msg); + } +} diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml new file mode 100644 index 0000000000..d48fa535db --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + diff --git a/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs new file mode 100644 index 0000000000..18718151e7 --- /dev/null +++ b/Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs @@ -0,0 +1,27 @@ +using Content.Client.UserInterface.Controls; +using Content.Shared._Impstation.Thaven.Components; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.XAML; + +namespace Content.Client._Impstation.Thaven; + +[GenerateTypedNameReferences] +public sealed partial class ThavenMoodsMenu : FancyWindow +{ + public ThavenMoodsMenu() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + } + + public void Update(EntityUid uid, ThavenMoodsBuiState state) + { + MoodDisplayContainer.Children.Clear(); + + foreach (var mood in state.SharedMoods) + MoodDisplayContainer.AddChild(new MoodDisplay(mood, true)); + + foreach (var mood in state.Moods) + MoodDisplayContainer.AddChild(new MoodDisplay(mood, false)); + } +} diff --git a/Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs b/Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs new file mode 100644 index 0000000000..b2a189b850 --- /dev/null +++ b/Content.IntegrationTests/Tests/_Impstation/Thaven/MoodTests.cs @@ -0,0 +1,96 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Content.IntegrationTests; +using Content.Server._Impstation.Thaven; +using Content.Shared.Dataset; +using Content.Shared._Impstation.Thaven; +using NUnit.Framework; +using Robust.Shared.ContentPack; +using Robust.Shared.GameObjects; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; + +namespace Content.IntegrationTests.Tests._Impstation.Thaven; + +[TestFixture, TestOf(typeof(ThavenMoodPrototype))] +public sealed class ThavenMoodTests +{ + [TestPrototypes] + const string PROTOTYPES = @" +- type: dataset + id: ThreeValueSet + values: + - One + - Two + - Three +- type: thavenMood + id: DuplicateTest + moodName: DuplicateTest + moodDesc: DuplicateTest + allowDuplicateMoodVars: false + moodVars: + a: ThreeValueSet + b: ThreeValueSet + c: ThreeValueSet +- type: thavenMood + id: DuplicateOverlapTest + moodName: DuplicateOverlapTest + moodDesc: DuplicateOverlapTest + allowDuplicateMoodVars: false + moodVars: + a: ThreeValueSet + b: ThreeValueSet + c: ThreeValueSet + d: ThreeValueSet + e: ThreeValueSet +"; + + [Test] + [Repeat(10)] + public async Task TestDuplicatePrevention() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + await server.WaitIdleAsync(); + + var entMan = server.ResolveDependency(); + var thavenSystem = entMan.System(); + var protoMan = server.ResolveDependency(); + + var dataset = protoMan.Index("ThreeValueSet"); + var moodProto = protoMan.Index("DuplicateTest"); + + var datasetSet = dataset.Values.ToHashSet(); + var mood = thavenSystem.RollMood(moodProto); + var moodVarSet = mood.MoodVars.Values.ToHashSet(); + + Assert.That(moodVarSet, Is.EquivalentTo(datasetSet)); + + await pair.CleanReturnAsync(); + } + + [Test] + [Repeat(10)] + public async Task TestDuplicateOverlap() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entMan = server.ResolveDependency(); + var thavenSystem = entMan.System(); + var protoMan = server.ResolveDependency(); + + var dataset = protoMan.Index("ThreeValueSet"); + var moodProto = protoMan.Index("DuplicateOverlapTest"); + + var datasetSet = dataset.Values.ToHashSet(); + var mood = thavenSystem.RollMood(moodProto); + var moodVarSet = mood.MoodVars.Values.ToHashSet(); + + Assert.That(moodVarSet, Is.EquivalentTo(datasetSet)); + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index d9ccb730d0..3f3373ed2d 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -41,6 +41,8 @@ using Content.Shared.Silicons.Laws.Components; using Robust.Server.Player; using Robust.Shared.Physics.Components; using static Content.Shared.Configurable.ConfigurationComponent; +using Content.Shared._Impstation.Thaven.Components; // DeltaV +using Content.Server._Impstation.Thaven; // DeltaV namespace Content.Server.Administration.Systems { @@ -74,6 +76,7 @@ namespace Content.Server.Administration.Systems [Dependency] private readonly AdminFrozenSystem _freeze = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly SiliconLawSystem _siliconLawSystem = default!; + [Dependency] private readonly ThavenMoodsSystem _moods = default!; // DeltaV private readonly Dictionary> _openSolutionUis = new(); @@ -362,8 +365,29 @@ namespace Content.Server.Administration.Systems Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Actions/actions_borg.rsi"), "state-laws"), }); } + + // Begin DeltaV Additions - thaven moods + if (TryComp(args.Target, out var moods)) + { + args.Verbs.Add(new Verb() + { + Text = Loc.GetString("thaven-moods-ui-verb"), + Category = VerbCategory.Admin, + Act = () => + { + var ui = new ThavenMoodsEui(_moods, EntityManager, _adminManager); + if (!_playerManager.TryGetSessionByEntity(args.User, out var session)) + return; + + _euiManager.OpenEui(ui, session); + ui.UpdateMoods(moods, args.Target); + }, + Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Interface/Actions/actions_borg.rsi"), "state-laws"), + }); + } } } + // End DeltaV Additions private void AddDebugVerbs(GetVerbsEvent args) { diff --git a/Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs b/Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs new file mode 100644 index 0000000000..dca0b3db67 --- /dev/null +++ b/Content.Server/StationEvents/Components/ThavenMoodUpsetRuleComponent.cs @@ -0,0 +1,6 @@ +using Content.Server._DV.StationEvents.Events; + +namespace Content.Server._DV.StationEvents.Components; + +[RegisterComponent, Access(typeof(ThavenMoodUpset))] +public sealed partial class ThavenMoodUpsetRuleComponent : Component; diff --git a/Content.Server/StationEvents/Events/ThavenMoodUpset.cs b/Content.Server/StationEvents/Events/ThavenMoodUpset.cs new file mode 100644 index 0000000000..8e988875cf --- /dev/null +++ b/Content.Server/StationEvents/Events/ThavenMoodUpset.cs @@ -0,0 +1,23 @@ +using Content.Server._DV.StationEvents.Components; +using Content.Server._Impstation.Thaven; +using Content.Server.StationEvents.Events; +using Content.Shared._Impstation.Thaven.Components; +using Content.Shared.GameTicking.Components; + +namespace Content.Server._DV.StationEvents.Events; + +public sealed class ThavenMoodUpset : StationEventSystem +{ + [Dependency] private readonly ThavenMoodsSystem _thavenMoods = default!; + + protected override void Started(EntityUid uid, ThavenMoodUpsetRuleComponent comp, GameRuleComponent gameRule, GameRuleStartedEvent args) + { + base.Started(uid, comp, gameRule, args); + + var thavens = EntityQueryEnumerator(); + while (thavens.MoveNext(out var thavenUid, out var thavenComp)) + { + _thavenMoods.AddWildcardMood((thavenUid, thavenComp)); + } + } +} diff --git a/Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs b/Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs new file mode 100644 index 0000000000..c3fbdc9b8d --- /dev/null +++ b/Content.Server/_Impstation/Speech/Components/NoContractionsAccentComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Server.Speech.Components; + +/// +/// Removes contractions (e.g. "can't," "don't," etc.) +/// +[RegisterComponent] +public sealed partial class NoContractionsAccentComponent : Component +{ + +} diff --git a/Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs b/Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs new file mode 100644 index 0000000000..2dab93d7ef --- /dev/null +++ b/Content.Server/_Impstation/Speech/EntitySystems/NoContractionsAccentSystem.cs @@ -0,0 +1,26 @@ +using System.Text.RegularExpressions; +using Content.Server.Speech.Components; + +namespace Content.Server.Speech.EntitySystems; + +public sealed class NoContractionsAccentComponentAccentSystem : EntitySystem +{ + private static readonly Regex RegexLowerS = new("s+"); + private static readonly Regex RegexUpperS = new("S+"); + private static readonly Regex RegexInternalX = new(@"(\w)x"); + private static readonly Regex RegexLowerEndX = new(@"\bx([\-|r|R]|\b)"); + private static readonly Regex RegexUpperEndX = new(@"\bX([\-|r|R]|\b)"); + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnAccent); + } + + private void OnAccent(EntityUid uid, NoContractionsAccentComponent component, AccentGetEvent args) + { + var message = args.Message; + + args.Message = message; + } +} diff --git a/Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs b/Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs new file mode 100644 index 0000000000..de7307f063 --- /dev/null +++ b/Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs @@ -0,0 +1,373 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Server.Actions; +using Content.Server.Chat.Managers; +using Content.Shared.CCVar; +using Content.Shared.Chat; +using Content.Shared.Dataset; +using Content.Shared.Emag.Systems; +using Content.Shared.GameTicking; +using Content.Shared._Impstation.Thaven; +using Content.Shared._Impstation.Thaven.Components; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Robust.Server.GameObjects; +using Robust.Shared.Configuration; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Content.Shared._Impstation.CCVar; +using Robust.Shared.Audio.Systems; + +namespace Content.Server._Impstation.Thaven; + +public sealed partial class ThavenMoodsSystem : SharedThavenMoodSystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ActionsSystem _actions = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + [Dependency] private readonly UserInterfaceSystem _bui = default!; + [Dependency] private readonly IChatManager _chatManager = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + + public IReadOnlyList SharedMoods => _sharedMoods.AsReadOnly(); + private readonly List _sharedMoods = new(); + + + [ValidatePrototypeId] + private const string SharedDataset = "ThavenMoodsShared"; + + [ValidatePrototypeId] + private const string YesAndDataset = "ThavenMoodsYesAnd"; + + [ValidatePrototypeId] + private const string NoAndDataset = "ThavenMoodsNoAnd"; + + [ValidatePrototypeId] + private const string WildcardDataset = "ThavenMoodsWildcard"; + + [ValidatePrototypeId] + private const string ActionViewMoods = "ActionViewMoods"; + + [ValidatePrototypeId] + private const string RandomThavenMoodDataset = "RandomThavenMoodDataset"; + + public override void Initialize() + { + base.Initialize(); + + NewSharedMoods(); + + SubscribeLocalEvent(OnThavenMoodInit); + SubscribeLocalEvent(OnThavenMoodShutdown); + SubscribeLocalEvent(OnToggleMoodsScreen); + SubscribeLocalEvent(OnBoundUIOpened); + SubscribeLocalEvent((_) => NewSharedMoods()); + } + + private void NewSharedMoods() + { + _sharedMoods.Clear(); + for (int i = 0; i < _config.GetCVar(ImpCCVars.ThavenSharedMoodCount); i++) + TryAddSharedMood(); + } + + public bool TryAddSharedMood(ThavenMood? mood = null, bool checkConflicts = true) + { + if (mood == null) + { + if (TryPick(SharedDataset, out var moodProto, _sharedMoods)) + { + mood = RollMood(moodProto); + checkConflicts = false; // TryPick has cleared this mood already + } + else + { + return false; + } + } + + if (checkConflicts && (GetConflicts(_sharedMoods).Contains(mood.ProtoId) || GetMoodProtoSet(_sharedMoods).Overlaps(mood.Conflicts))) + return false; + + _sharedMoods.Add(mood); + var enumerator = EntityManager.EntityQueryEnumerator(); + while (enumerator.MoveNext(out var ent, out var comp)) + { + if (!comp.FollowsSharedMoods) + continue; + + NotifyMoodChange((ent, comp)); + } + + return true; + } + + private void OnBoundUIOpened(EntityUid uid, ThavenMoodsComponent component, BoundUIOpenedEvent args) + { + UpdateBUIState(uid, component); + } + + private void OnToggleMoodsScreen(EntityUid uid, ThavenMoodsComponent component, ToggleMoodsScreenEvent args) + { + if (args.Handled || !TryComp(uid, out var actor)) + return; + args.Handled = true; + + _bui.TryToggleUi(uid, ThavenMoodsUiKey.Key, actor.PlayerSession); + } + + private bool TryPick(string datasetProto, [NotNullWhen(true)] out ThavenMoodPrototype? proto, IEnumerable? currentMoods = null, HashSet? conflicts = null) + { + var dataset = _proto.Index(datasetProto); + var choices = dataset.Values.ToList(); + + if (currentMoods == null) + currentMoods = new HashSet(); + if (conflicts == null) + conflicts = GetConflicts(currentMoods); + + var currentMoodProtos = GetMoodProtoSet(currentMoods); + + while (choices.Count > 0) + { + var moodId = _random.PickAndTake(choices); + if (conflicts.Contains(moodId)) + continue; // Skip proto if an existing mood conflicts with it + + var moodProto = _proto.Index(moodId); + if (moodProto.Conflicts.Overlaps(currentMoodProtos)) + continue; // Skip proto if it conflicts with an existing mood + + proto = moodProto; + return true; + } + + proto = null; + return false; + } + + public void NotifyMoodChange(Entity ent) + { + if (!TryComp(ent.Owner, out var actor)) + return; + + if (ent.Comp.MoodsChangedSound != null) + _audio.PlayGlobal(ent.Comp.MoodsChangedSound, actor.PlayerSession); + + var msg = Loc.GetString("thaven-moods-update-notify"); + var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", msg)); + _chatManager.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.Orange); + } + + public void UpdateBUIState(EntityUid uid, ThavenMoodsComponent? comp = null) + { + if (!Resolve(uid, ref comp)) + return; + + var state = new ThavenMoodsBuiState(comp.Moods, comp.FollowsSharedMoods ? _sharedMoods : []); + _bui.SetUiState(uid, ThavenMoodsUiKey.Key, state); + } + + public void AddMood(EntityUid uid, ThavenMood mood, ThavenMoodsComponent? comp = null, bool notify = true) + { + if (!Resolve(uid, ref comp)) + return; + + comp.Moods.Add(mood); + + if (notify) + NotifyMoodChange((uid, comp)); + + UpdateBUIState(uid, comp); + } + + /// + /// Creates a ThavenMood instance from the given ThavenMoodPrototype, and rolls + /// its mood vars. + /// + public ThavenMood RollMood(ThavenMoodPrototype proto) + { + var mood = new ThavenMood() + { + ProtoId = proto.ID, + MoodName = proto.MoodName, + MoodDesc = proto.MoodDesc, + Conflicts = proto.Conflicts, + }; + + var alreadyChosen = new HashSet(); + + foreach (var (name, datasetID) in proto.MoodVarDatasets) + { + var dataset = _proto.Index(datasetID); + + if (proto.AllowDuplicateMoodVars) + { + mood.MoodVars.Add(name, _random.Pick(dataset)); + continue; + } + + var choices = dataset.Values.ToList(); + var foundChoice = false; + while (choices.Count > 0) + { + var choice = _random.PickAndTake(choices); + if (alreadyChosen.Contains(choice)) + continue; + + mood.MoodVars.Add(name, choice); + alreadyChosen.Add(choice); + foundChoice = true; + break; + } + + if (!foundChoice) + { + Log.Warning($"Ran out of choices for moodvar \"{name}\" in \"{proto.ID}\"! Picking a duplicate..."); + mood.MoodVars.Add(name, _random.Pick(_proto.Index(dataset))); + } + } + + return mood; + } + + /// + /// Checks if the given mood prototype conflicts with the current moods, and + /// adds the mood if it does not. + /// + public bool TryAddMood(EntityUid uid, ThavenMoodPrototype moodProto, ThavenMoodsComponent? comp = null, bool allowConflict = false, bool notify = true) + { + if (!Resolve(uid, ref comp)) + return false; + + if (!allowConflict && GetConflicts(uid, comp).Contains(moodProto.ID)) + return false; + + AddMood(uid, RollMood(moodProto), comp, notify); + return true; + } + + public bool TryAddRandomMood(EntityUid uid, string datasetProto, ThavenMoodsComponent? comp = null) + { + if (!Resolve(uid, ref comp)) + return false; + + if (TryPick(datasetProto, out var moodProto, GetActiveMoods(uid, comp))) + { + AddMood(uid, RollMood(moodProto), comp); + return true; + } + + return false; + } + + public bool TryAddRandomMood(EntityUid uid, ThavenMoodsComponent? comp = null) + { + if (!Resolve(uid, ref comp)) + return false; + + var datasetProto = _proto.Index(RandomThavenMoodDataset).Pick(); + + return TryAddRandomMood(uid, datasetProto, comp); + } + + public void SetMoods(EntityUid uid, IEnumerable moods, ThavenMoodsComponent? comp = null, bool notify = true) + { + if (!Resolve(uid, ref comp)) + return; + + comp.Moods = moods.ToList(); + if (notify) + NotifyMoodChange((uid, comp)); + + UpdateBUIState(uid, comp); + } + + public HashSet GetConflicts(IEnumerable moods) + { + var conflicts = new HashSet(); + + foreach (var mood in moods) + { + conflicts.Add(mood.ProtoId); // Specific moods shouldn't be added twice + conflicts.UnionWith(mood.Conflicts); + } + + return conflicts; + } + + public HashSet GetConflicts(EntityUid uid, ThavenMoodsComponent? moods = null) + { + // TODO: Should probably cache this when moods get updated + + if (!Resolve(uid, ref moods)) + return new(); + + var conflicts = GetConflicts(GetActiveMoods(uid, moods)); + + return conflicts; + } + + public HashSet GetMoodProtoSet(IEnumerable moods) + { + var moodProtos = new HashSet(); + foreach (var mood in moods) + if (!string.IsNullOrEmpty(mood.ProtoId)) + moodProtos.Add(mood.ProtoId); + return moodProtos; + } + + /// + /// Return a list of the moods that are affecting this entity. + /// + public List GetActiveMoods(EntityUid uid, ThavenMoodsComponent? comp = null, bool includeShared = true) + { + if (!Resolve(uid, ref comp)) + return []; + + if (includeShared && comp.FollowsSharedMoods) + { + return new List(SharedMoods.Concat(comp.Moods)); + } + else + { + return comp.Moods; + } + } + + private void OnThavenMoodInit(EntityUid uid, ThavenMoodsComponent comp, ComponentStartup args) + { + if (comp.LifeStage != ComponentLifeStage.Starting) + return; + + // "Yes, and" moods + if (TryPick(YesAndDataset, out var mood, GetActiveMoods(uid, comp))) + TryAddMood(uid, mood, comp, true, false); + + // "No, and" moods + if (TryPick(NoAndDataset, out mood, GetActiveMoods(uid, comp))) + TryAddMood(uid, mood, comp, true, false); + + comp.Action = _actions.AddAction(uid, ActionViewMoods); + } + + private void OnThavenMoodShutdown(EntityUid uid, ThavenMoodsComponent comp, ComponentShutdown args) + { + _actions.RemoveAction(uid, comp.Action); + } + + protected override void OnEmagged(EntityUid uid, ThavenMoodsComponent comp, ref GotEmaggedEvent args) + { + base.OnEmagged(uid, comp, ref args); + TryAddRandomMood(uid, WildcardDataset, comp); + } + + // Begin DeltaV: thaven mood upsets + public void AddWildcardMood(Entity ent) + { + TryAddRandomMood(ent.Owner, WildcardDataset, ent.Comp); + } + // End DeltaV: thaven mood upsets +} diff --git a/Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs b/Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs new file mode 100644 index 0000000000..2ff3b840dd --- /dev/null +++ b/Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs @@ -0,0 +1,73 @@ +using System.Linq; +using Content.Server.Administration.Managers; +using Content.Server.EUI; +using Content.Shared.Administration; +using Content.Shared.Eui; +using Content.Shared._Impstation.Thaven; +using Content.Shared._Impstation.Thaven.Components; + +namespace Content.Server._Impstation.Thaven; + +public sealed class ThavenMoodsEui : BaseEui +{ + private readonly ThavenMoodsSystem _thavenMoodsSystem; + private readonly EntityManager _entityManager; + private readonly IAdminManager _adminManager; + + private List _moods = new(); + private List _sharedMoods = new(); + private ISawmill _sawmill = default!; + private EntityUid _target; + + public ThavenMoodsEui(ThavenMoodsSystem thavenMoodsSystem, EntityManager entityManager, IAdminManager manager) + { + _thavenMoodsSystem = thavenMoodsSystem; + _entityManager = entityManager; + _adminManager = manager; + _sawmill = Logger.GetSawmill("thaven-moods-eui"); + } + + public override EuiStateBase GetNewState() + { + return new ThavenMoodsEuiState(_moods, _entityManager.GetNetEntity(_target)); + } + + public void UpdateMoods(ThavenMoodsComponent? comp, EntityUid player) + { + if (!IsAllowed()) + return; + + var moods = _thavenMoodsSystem.GetActiveMoods(player, comp, false); + _target = player; + _moods = moods; + _sharedMoods = _thavenMoodsSystem.SharedMoods.ToList(); + StateDirty(); + } + + public override void HandleMessage(EuiMessageBase msg) + { + base.HandleMessage(msg); + + if (msg is not ThavenMoodsSaveMessage message) + return; + + if (!IsAllowed()) + return; + + var player = _entityManager.GetEntity(message.Target); + + _thavenMoodsSystem.SetMoods(player, message.Moods); + } + + private bool IsAllowed() + { + var adminData = _adminManager.GetAdminData(Player); + if (adminData == null || !adminData.HasFlag(AdminFlags.Admin)) + { + _sawmill.Warning($"Player {Player.UserId} tried to open / use thaven moods UI without permission."); + return false; + } + + return true; + } +} diff --git a/Content.Shared/_Impstation/CCVar/ImpCCVars.cs b/Content.Shared/_Impstation/CCVar/ImpCCVars.cs new file mode 100644 index 0000000000..34f307dabf --- /dev/null +++ b/Content.Shared/_Impstation/CCVar/ImpCCVars.cs @@ -0,0 +1,15 @@ +using Robust.Shared; +using Robust.Shared.Configuration; + +namespace Content.Shared._Impstation.CCVar; + +// ReSharper disable once InconsistentNaming +[CVarDefs] +public sealed class ImpCCVars : CVars +{ + /// + /// The number of shared moods to give thaven by default. + /// + public static readonly CVarDef ThavenSharedMoodCount = + CVarDef.Create("thaven.shared_mood_count", 1, CVar.SERVERONLY); +} diff --git a/Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs b/Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs new file mode 100644 index 0000000000..03935a480e --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs @@ -0,0 +1,18 @@ +using Content.Shared.Emag.Systems; +using Content.Shared._Impstation.Thaven.Components; + +namespace Content.Shared._Impstation.Thaven; + +public abstract class SharedThavenMoodSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + // SubscribeLocalEvent(OnEmagged); DeltaV: no emagging thavens + } + protected virtual void OnEmagged(EntityUid uid, ThavenMoodsComponent comp, ref GotEmaggedEvent args) + { + args.Handled = true; + } +} diff --git a/Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs b/Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs new file mode 100644 index 0000000000..2e4c0f4624 --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/ThavenMoodBoundComponent.cs @@ -0,0 +1,49 @@ +using Content.Shared.Actions; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared._Impstation.Thaven.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedThavenMoodSystem))] +public sealed partial class ThavenMoodsComponent : Component +{ + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool FollowsSharedMoods = true; + + [DataField, ViewVariables, AutoNetworkedField] + public List Moods = new(); + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public bool CanBeEmagged = true; + + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public SoundSpecifier? MoodsChangedSound = new SoundPathSpecifier("/Audio/_Impstation/Thaven/moods_changed.ogg"); + + [DataField(serverOnly: true), ViewVariables] + public EntityUid? Action; +} + +public sealed partial class ToggleMoodsScreenEvent : InstantActionEvent +{ +} + +[NetSerializable, Serializable] +public enum ThavenMoodsUiKey : byte +{ + Key +} + +[Serializable, NetSerializable] +public sealed class ThavenMoodsBuiState : BoundUserInterfaceState +{ + public List Moods; + public List SharedMoods; + + public ThavenMoodsBuiState(List moods, List sharedMoods) + { + Moods = moods; + SharedMoods = sharedMoods; + } +} diff --git a/Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs b/Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs new file mode 100644 index 0000000000..fdf9dfac7b --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs @@ -0,0 +1,91 @@ +using System.Linq; +using Content.Shared.Dataset; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set; + +namespace Content.Shared._Impstation.Thaven; + +[Virtual, DataDefinition] +[Serializable, NetSerializable] +public partial class ThavenMood +{ + [DataField(readOnly: true), ViewVariables(VVAccess.ReadOnly)] + public ProtoId ProtoId = string.Empty; + + /// + /// A locale string of the mood name. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodName = string.Empty; + + /// + /// A locale string of the mood description. Gets passed to + /// with . + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodDesc = string.Empty; + + [DataField(serverOnly: true, customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] + [ViewVariables(VVAccess.ReadWrite)] + public HashSet Conflicts = new(); + + /// + /// Additional localized words for the , for things like random + /// verbs and nouns. + /// + [ViewVariables(VVAccess.ReadWrite)] + public Dictionary MoodVars = new(); + + public (string, object)[] GetLocArgs() + { + return MoodVars.Select(v => (v.Key, (object)v.Value)).ToArray(); + } + + public string GetLocName() + { + return Loc.GetString(MoodName, GetLocArgs()); + } + + public string GetLocDesc() + { + return Loc.GetString(MoodDesc, GetLocArgs()); + } +} + +[Prototype("thavenMood")] +[Serializable, NetSerializable] +public sealed partial class ThavenMoodPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; private set; } = default!; + + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodName = string.Empty; + + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public string MoodDesc = string.Empty; + + /// + /// A list of mood IDs that this mood will conflict with. + /// + [DataField("conflicts", customTypeSerializer: typeof(PrototypeIdHashSetSerializer))] + public HashSet Conflicts = new(); + + /// + /// Extra mood variables that will be randomly chosen and provided + /// to the call on . + /// + [DataField("moodVars", customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))] + public Dictionary MoodVarDatasets = new(); + + /// + /// If false, prevents the same variable from being rolled twice when rolling + /// mood variables for this mood. Does not prevent the same mood variable + /// from being present in other moods. + /// + [DataField("allowDuplicateMoodVars"), ViewVariables(VVAccess.ReadWrite)] + public bool AllowDuplicateMoodVars = false; +} diff --git a/Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs b/Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs new file mode 100644 index 0000000000..7ac6de7992 --- /dev/null +++ b/Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs @@ -0,0 +1,29 @@ +using Content.Shared.Eui; +using Robust.Shared.Serialization; + +namespace Content.Shared._Impstation.Thaven; + +[Serializable, NetSerializable] +public sealed class ThavenMoodsEuiState : EuiStateBase +{ + public List Moods { get; } + public NetEntity Target { get; } + public ThavenMoodsEuiState(List moods, NetEntity target) + { + Moods = moods; + Target = target; + } +} + +[Serializable, NetSerializable] +public sealed class ThavenMoodsSaveMessage : EuiMessageBase +{ + public List Moods { get; } + public NetEntity Target { get; } + + public ThavenMoodsSaveMessage(List moods, NetEntity target) + { + Moods = moods; + Target = target; + } +} diff --git a/Resources/Audio/_Impstation/Thaven/attributions.yml b/Resources/Audio/_Impstation/Thaven/attributions.yml new file mode 100644 index 0000000000..4480342c18 --- /dev/null +++ b/Resources/Audio/_Impstation/Thaven/attributions.yml @@ -0,0 +1,4 @@ +- files: ["moods_changed.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Created by widgetbeck" + source: "https://github.com/impstation/imp-station-14/pull/830" diff --git a/Resources/Audio/_Impstation/Thaven/moods_changed.ogg b/Resources/Audio/_Impstation/Thaven/moods_changed.ogg new file mode 100644 index 0000000000..d8e03e762d Binary files /dev/null and b/Resources/Audio/_Impstation/Thaven/moods_changed.ogg differ diff --git a/Resources/Locale/en-US/DeltaV/markings/thaven.ftl b/Resources/Locale/en-US/DeltaV/markings/thaven.ftl new file mode 100644 index 0000000000..9a4f1c7805 --- /dev/null +++ b/Resources/Locale/en-US/DeltaV/markings/thaven.ftl @@ -0,0 +1,14 @@ +marking-ThavenCheekBarbels-cheek_barbels = Head +marking-ThavenCheekBarbels = Thaven Head (Cheek Barbels) + +marking-ThavenEyebrowBarbels-eyebrow_barbels = Head +marking-ThavenEyebrowBarbels = Thaven Head (Eyebrow Barbels) + +marking-ThavenUnderbellyFace-underbelly_face = Head +marking-ThavenUnderbellyFace = Thaven Head (Underbelly Face) + +marking-ThavenUnderbellyTorso-underbelly_torso = Chest +marking-ThavenUnderbellyTorso = Thaven Chest (Underbelly Torso) + +marking-ThavenCarpSpots-carp_spots = Chest +marking-ThavenCarpSpots = Thaven Chest (Carp Spots) diff --git a/Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl b/Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl new file mode 100644 index 0000000000..f178460122 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl @@ -0,0 +1,407 @@ +accent-nocontractions-words-french = 'im +accent-nocontractions-words-replace-french = 'im + +accent-nocontractions-words-1 = i'm +accent-nocontractions-words-replace-1 = i am + +accent-nocontractions-words-2 = im +accent-nocontractions-words-replace-2 = i am + +accent-nocontractions-words-3 = we're +accent-nocontractions-words-replace-3 = we are + +accent-nocontractions-words-4 = she's +accent-nocontractions-words-replace-4 = she is + +accent-nocontractions-words-5 = shes +accent-nocontractions-words-replace-5 = she is + +accent-nocontractions-words-6 = she'd +accent-nocontractions-words-replace-6 = she would + +accent-nocontractions-words-7 = don't +accent-nocontractions-words-replace-7 = do not + +accent-nocontractions-words-8 = dont +accent-nocontractions-words-replace-8 = do not + +accent-nocontractions-words-9 = didn't +accent-nocontractions-words-replace-9 = did not + +accent-nocontractions-words-10 = didnt +accent-nocontractions-words-replace-10 = did not + +accent-nocontractions-words-11 = isn't +accent-nocontractions-words-replace-11 = is not + +accent-nocontractions-words-12 = isnt +accent-nocontractions-words-replace-12 = is not + +accent-nocontractions-words-13 = wasn't +accent-nocontractions-words-replace-13 = was not + +accent-nocontractions-words-14 = wasnt +accent-nocontractions-words-replace-14 = was not + +accent-nocontractions-words-15 = aren't +accent-nocontractions-words-replace-15 = are not + +accent-nocontractions-words-16 = arent +accent-nocontractions-words-replace-16 = are not + +accent-nocontractions-words-17 = weren't +accent-nocontractions-words-replace-17 = were not + +accent-nocontractions-words-18 = werent +accent-nocontractions-words-replace-18 = were not + +accent-nocontractions-words-19 = hasn't +accent-nocontractions-words-replace-19 = has not + +accent-nocontractions-words-20 = hasnt +accent-nocontractions-words-replace-20 = has not + +accent-nocontractions-words-21 = haven't +accent-nocontractions-words-replace-21 = have not + +accent-nocontractions-words-22 = havent +accent-nocontractions-words-replace-22 = have not + +accent-nocontractions-words-23 = hadn't +accent-nocontractions-words-replace-23 = had not + +accent-nocontractions-words-24 = hadnt +accent-nocontractions-words-replace-24 = had not + +accent-nocontractions-words-25 = can't +accent-nocontractions-words-replace-25 = can not + +accent-nocontractions-words-26 = cant +accent-nocontractions-words-replace-26 = can not + +accent-nocontractions-words-27 = couldn't +accent-nocontractions-words-replace-27 = could not + +accent-nocontractions-words-28 = couldnt +accent-nocontractions-words-replace-28 = could not + +accent-nocontractions-words-29 = shan't +accent-nocontractions-words-replace-29 = shall not + +accent-nocontractions-words-30 = shant +accent-nocontractions-words-replace-30 = shall not + +accent-nocontractions-words-31 = shouldn't +accent-nocontractions-words-replace-31 = should not + +accent-nocontractions-words-32 = shouldnt +accent-nocontractions-words-replace-32 = should not + +accent-nocontractions-words-33 = won't +accent-nocontractions-words-replace-33 = will not + +accent-nocontractions-words-34 = wont +accent-nocontractions-words-replace-34 = will not + +accent-nocontractions-words-35 = wouldn't +accent-nocontractions-words-replace-35 = would not + +accent-nocontractions-words-36 = wouldnt +accent-nocontractions-words-replace-36 = would not + +accent-nocontractions-words-37 = mightn't +accent-nocontractions-words-replace-37 = might not + +accent-nocontractions-words-38 = mightnt +accent-nocontractions-words-replace-38 = might not + +accent-nocontractions-words-39 = mustn't +accent-nocontractions-words-replace-39 = must not + +accent-nocontractions-words-40 = mustnt +accent-nocontractions-words-replace-40 = must not + +accent-nocontractions-words-41 = could've +accent-nocontractions-words-replace-41 = could have + +accent-nocontractions-words-42 = couldve +accent-nocontractions-words-replace-42 = could have + +accent-nocontractions-words-43 = should've +accent-nocontractions-words-replace-43 = should have + +accent-nocontractions-words-44 = shouldve +accent-nocontractions-words-replace-44 = should have + +accent-nocontractions-words-45 = would've +accent-nocontractions-words-replace-45 = would have + +accent-nocontractions-words-46 = wouldve +accent-nocontractions-words-replace-46 = would have + +accent-nocontractions-words-47 = might've +accent-nocontractions-words-replace-47 = might have + +accent-nocontractions-words-48 = mightve +accent-nocontractions-words-replace-48 = might have + +accent-nocontractions-words-49 = must've +accent-nocontractions-words-replace-49 = must have + +accent-nocontractions-words-50 = mustve +accent-nocontractions-words-replace-50 = must have + +accent-nocontractions-words-51 = you're +accent-nocontractions-words-replace-51 = you are + +accent-nocontractions-words-52 = youre +accent-nocontractions-words-replace-52 = you are + +accent-nocontractions-words-53 = he's +accent-nocontractions-words-replace-53 = he is + +accent-nocontractions-words-54 = hes +accent-nocontractions-words-replace-54 = he is + +accent-nocontractions-words-55 = it's +accent-nocontractions-words-replace-55 = it is + +accent-nocontractions-words-56 = we're +accent-nocontractions-words-replace-56 = we are + +accent-nocontractions-words-57 = they're +accent-nocontractions-words-replace-57 = they are + +accent-nocontractions-words-58 = i've +accent-nocontractions-words-replace-58 = i have + +accent-nocontractions-words-59 = ive +accent-nocontractions-words-replace-59 = i have + +accent-nocontractions-words-60 = you've +accent-nocontractions-words-replace-60 = you have + +accent-nocontractions-words-61 = youve +accent-nocontractions-words-replace-61 = you have + +accent-nocontractions-words-62 = we've +accent-nocontractions-words-replace-62 = we have + +accent-nocontractions-words-63 = weve +accent-nocontractions-words-replace-63 = we have + +accent-nocontractions-words-64 = they've +accent-nocontractions-words-replace-64 = they have + +accent-nocontractions-words-65 = theyve +accent-nocontractions-words-replace-65 = they have + +accent-nocontractions-words-66 = i'll +accent-nocontractions-words-replace-66 = i will + +accent-nocontractions-words-67 = you'll +accent-nocontractions-words-replace-67 = you will + +accent-nocontractions-words-68 = youll +accent-nocontractions-words-replace-68 = you will + +accent-nocontractions-words-69 = he'll +accent-nocontractions-words-replace-69 = he will + +accent-nocontractions-words-70 = she'll +accent-nocontractions-words-replace-70 = she will + +accent-nocontractions-words-71 = it'll +accent-nocontractions-words-replace-71 = it will + +accent-nocontractions-words-72 = itll +accent-nocontractions-words-replace-72 = it will + +accent-nocontractions-words-73 = we'll +accent-nocontractions-words-replace-73 = we will + +accent-nocontractions-words-74 = they'll +accent-nocontractions-words-replace-74 = they will + +accent-nocontractions-words-75 = theyll +accent-nocontractions-words-replace-75 = they will + +accent-nocontractions-words-76 = i'd've +accent-nocontractions-words-replace-76 = i would have + +accent-nocontractions-words-77 = you'd've +accent-nocontractions-words-replace-77 = you would have + +accent-nocontractions-words-78 = youdve +accent-nocontractions-words-replace-78 = you would have + +accent-nocontractions-words-79 = idve +accent-nocontractions-words-replace-79 = i would have + +accent-nocontractions-words-80 = she'd've +accent-nocontractions-words-replace-80 = she would have + +accent-nocontractions-words-81 = shedve +accent-nocontractions-words-replace-81 = she would have + +accent-nocontractions-words-82 = he'd've +accent-nocontractions-words-replace-82 = he would have + +accent-nocontractions-words-83 = hedve +accent-nocontractions-words-replace-83 = he would have + +accent-nocontractions-words-84 = it'd've +accent-nocontractions-words-replace-84 = it would have + +accent-nocontractions-words-85 = itdve +accent-nocontractions-words-replace-85 = it would have + +accent-nocontractions-words-86 = we'd've +accent-nocontractions-words-replace-86 = we would have + +accent-nocontractions-words-87 = wedve +accent-nocontractions-words-replace-87 = we would have + +accent-nocontractions-words-88 = they'd've +accent-nocontractions-words-replace-88 = they would have + +accent-nocontractions-words-89 = theydve +accent-nocontractions-words-replace-89 = they would have + +accent-nocontractions-words-90 = that've +accent-nocontractions-words-replace-90 = that have + +accent-nocontractions-words-91 = thatve +accent-nocontractions-words-replace-91 = that have + +accent-nocontractions-words-92 = that'd +accent-nocontractions-words-replace-92 = that would + +accent-nocontractions-words-93 = thatd +accent-nocontractions-words-replace-93 = that would + +accent-nocontractions-words-94 = which've +accent-nocontractions-words-replace-94 = which have + +accent-nocontractions-words-95 = who're +accent-nocontractions-words-replace-95 = who are + +accent-nocontractions-words-96 = who've +accent-nocontractions-words-replace-96 = who have + +accent-nocontractions-words-97 = whove +accent-nocontractions-words-replace-97 = who have + +accent-nocontractions-words-98 = who'll +accent-nocontractions-words-replace-98 = who will + +accent-nocontractions-words-99 = wholl +accent-nocontractions-words-replace-99 = who will + +accent-nocontractions-words-100 = what're +accent-nocontractions-words-replace-100 = what are + +accent-nocontractions-words-101 = whatre +accent-nocontractions-words-replace-101 = what are + +accent-nocontractions-words-102 = what'll +accent-nocontractions-words-replace-102 = what will + +accent-nocontractions-words-103 = whatll +accent-nocontractions-words-replace-103 = what will + +accent-nocontractions-words-104 = where's +accent-nocontractions-words-replace-104 = where is + +accent-nocontractions-words-105 = wheres +accent-nocontractions-words-replace-105 = where is + +accent-nocontractions-words-106 = where'd +accent-nocontractions-words-replace-106 = where did + +accent-nocontractions-words-107 = whered +accent-nocontractions-words-replace-107 = where did + +accent-nocontractions-words-108 = when's +accent-nocontractions-words-replace-108 = when is + +accent-nocontractions-words-109 = whens +accent-nocontractions-words-replace-109 = when is + +accent-nocontractions-words-110 = why's +accent-nocontractions-words-replace-110 = why is + +accent-nocontractions-words-111 = whys +accent-nocontractions-words-replace-111 = why is + +accent-nocontractions-words-112 = why'd +accent-nocontractions-words-replace-112 = why did + +accent-nocontractions-words-113 = how's +accent-nocontractions-words-replace-113 = how is + +accent-nocontractions-words-114 = hows +accent-nocontractions-words-replace-114 = how is + +accent-nocontractions-words-115 = here's +accent-nocontractions-words-replace-115 = here is + +accent-nocontractions-words-116 = heres +accent-nocontractions-words-replace-116 = here is + +accent-nocontractions-words-117 = there's +accent-nocontractions-words-replace-117 = there is + +accent-nocontractions-words-118 = theres +accent-nocontractions-words-replace-118 = there is + +accent-nocontractions-words-119 = there'll +accent-nocontractions-words-replace-119 = there will + +accent-nocontractions-words-120 = therell +accent-nocontractions-words-replace-120 = there will + +accent-nocontractions-words-121 = someone's +accent-nocontractions-words-replace-121 = someone is + +accent-nocontractions-words-122 = somebody's +accent-nocontractions-words-replace-122 = somebody is + +accent-nocontractions-words-123 = one's +accent-nocontractions-words-replace-123 = one is + +accent-nocontractions-words-124 = nobody's +accent-nocontractions-words-replace-124 = nobody is + +accent-nocontractions-words-125 = something's +accent-nocontractions-words-replace-125 = something is + +accent-nocontractions-words-126 = somethings +accent-nocontractions-words-replace-126 = something is + +accent-nocontractions-words-127 = nothing's +accent-nocontractions-words-replace-127 = nothing is + +accent-nocontractions-words-128 = nothings +accent-nocontractions-words-replace-128 = nothing is + +accent-nocontractions-words-129 = let's +accent-nocontractions-words-replace-129 = let us + +accent-nocontractions-words-130 = lets +accent-nocontractions-words-replace-130 = let us + +accent-nocontractions-words-131 = ma'am +accent-nocontractions-words-replace-131 = madame + +accent-nocontractions-words-132 = maam +accent-nocontractions-words-replace-132 = madame + +accent-nocontractions-words-133 = o'clock +accent-nocontractions-words-replace-133 = of the clock + +accent-nocontractions-words-134 = oclock +accent-nocontractions-words-replace-134 = of the clock + +accent-nocontractions-words-135 = whyd +accent-nocontractions-words-replace-135 = why did diff --git a/Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl b/Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl new file mode 100644 index 0000000000..9c55368811 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl @@ -0,0 +1,207 @@ +marking-ThavenHairAfro = Afro +marking-ThavenHairAfro2 = Afro 2 +marking-ThavenHairBigafro = Afro (Large) +marking-ThavenHairAntenna = Ahoge +marking-ThavenHairBalding = Balding Hair +marking-ThavenHairBedhead = Bedhead +marking-ThavenHairBedheadv2 = Bedhead 2 +marking-ThavenHairBedheadv3 = Bedhead 3 +marking-ThavenHairLongBedhead = Long Bedhead +marking-ThavenHairLongBedhead2 = Long Bedhead 2 +marking-ThavenHairFloorlengthBedhead = Floorlength Bedhead +marking-ThavenHairBeehive = Beehive +marking-ThavenHairBeehive2 = Beehive 2 +marking-ThavenHairBob = Bob Hair +marking-ThavenHairBob2 = Bob Hair 2 +marking-ThavenHairBobcut = Bob Hair 3 +marking-ThavenHairBob4 = Bob Hair 4 +marking-ThavenHairBob5 = Bob Hair 5 +marking-ThavenHairBobcurl = Bobcurl +marking-ThavenHairBoddicker = Boddicker +marking-ThavenHairBowlcut = Bowlcut +marking-ThavenHairBowlcut2 = Bowlcut 2 +marking-ThavenHairBraid = Braid (Floorlength) +marking-ThavenHairBraided = Braided +marking-ThavenHairBraidfront = Braided Front +marking-ThavenHairBraid2 = Braid (High) +marking-ThavenHairHbraid = Braid (Low) +marking-ThavenHairShortbraid = Braid (Short) +marking-ThavenHairBraidtail = Braided Tail +marking-ThavenHairBun = Bun Head +marking-ThavenHairBunhead2 = Bun Head 2 +marking-ThavenHairBun3 = Bun Head 3 +marking-ThavenHairLargebun = Bun (Large) +marking-ThavenHairManbun = Bun (Manbun) +marking-ThavenHairTightbun = Bun (Tight) +marking-ThavenHairBusiness = Business Hair +marking-ThavenHairBusiness2 = Business Hair 2 +marking-ThavenHairBusiness3 = Business Hair 3 +marking-ThavenHairBusiness4 = Business Hair 4 +marking-ThavenHairBuzzcut = Buzzcut +marking-ThavenHairCia = CIA +marking-ThavenHairClassicAfro = Classic Afro +marking-ThavenHairClassicBigAfro = Classic Big Afro +marking-ThavenHairClassicBusiness = Classic Business Hair +marking-ThavenHairClassicciaBusiness = Classic CIA +marking-ThavenHairClassicCornrows = Classic Cornrows +marking-ThavenHairClassicCornrows2 = Classic Cornrows 2 +marking-ThavenHairClassicFloorlengthBedhead = Classic Floorlength Bedhead +marking-ThavenHairClassicLong2 = Classic Long Hair 2 +marking-ThavenHairClassicLong3 = Classic Long Hair 3 +marking-ThavenHairClassicModern = Classic Modern +marking-ThavenHairClassicMulder = Classic Mulder +marking-ThavenHairClassicWisp = Classic Wisp +marking-ThavenHairCoffeeHouse = Coffee House +marking-ThavenHairCombover = Combover +marking-ThavenHairCornrows = Cornrows +marking-ThavenHairCornrows2 = Cornrows 2 +marking-ThavenHairCornrowbun = Cornrow Bun +marking-ThavenHairCornrowbraid = Cornrow Braid +marking-ThavenHairCornrowtail = Cornrow Tail +marking-ThavenHairCrewcut = Crewcut +marking-ThavenHairCrewcut2 = Crewcut 2 +marking-ThavenHairCurls = Curls +marking-ThavenHairC = Cut Hair +marking-ThavenHairDandypompadour = Dandy Pompadour +marking-ThavenHairDevilock = Devil Lock +marking-ThavenHairDoublebun = Double Bun +marking-ThavenHairDoublebunLong = Double Bun Long +marking-ThavenHairDreads = Dreadlocks +marking-ThavenHairDrillHair = Drill Hair +marking-ThavenHairDrillruru = Drillruru +marking-ThavenHairDrillhairextended = Drill Hair (Extended) +marking-ThavenHairEmo = Emo +marking-ThavenHairEmo2 = Emo2 +marking-ThavenHairLongeremo = Longer Emo +marking-ThavenHairEmofringe = Emo Fringe +marking-ThavenHairNofade = Fade (None) +marking-ThavenHairHighfade = Fade (High) +marking-ThavenHairMedfade = Fade (Medium) +marking-ThavenHairLowfade = Fade (Low) +marking-ThavenHairBaldfade = Fade (Bald) +marking-ThavenHairFeather = Feather +marking-ThavenHairFather = Father +marking-ThavenHairSargeant = Flat Top +marking-ThavenHairFlair = Flair +marking-ThavenHairBigflattop = Flat Top (Big) +marking-ThavenHairFlow = Flow Hair +marking-ThavenHairGelled = Gelled Back +marking-ThavenHairGentle = Gentle +marking-ThavenHairHalfbang = Half-banged Hair +marking-ThavenHairHalfbang2 = Half-banged Hair 2 +marking-ThavenHairHalfshaved = Half-shaved +marking-ThavenHairHedgehog = Hedgehog Hair +marking-ThavenHairHimecut = Hime Cut +marking-ThavenHairHimecut2 = Hime Cut 2 +marking-ThavenHairShorthime = Hime Cut (Short) +marking-ThavenHairHimeup = Hime Updo +marking-ThavenHairHitop = Hitop +marking-ThavenHairJade = Jade +marking-ThavenHairJensen = Jensen Hair +marking-ThavenHairJoestar = Joestar +marking-ThavenHairKeanu = Keanu Hair +marking-ThavenHairKusanagi = Kusanagi Hair +marking-ThavenHairLongBow = Long Bow +marking-ThavenHairLong = Long Hair 1 +marking-ThavenHairLong2 = Long Hair 2 +marking-ThavenHairLong3 = Long Hair 3 +marking-ThavenHairLongWithBundles = Long With Bundles +marking-ThavenHairLongovereye = Long Over Eye +marking-ThavenHairLbangs = Long Bangs +marking-ThavenHairLongemo = Long Emo +marking-ThavenHairLongfringe = Long Fringe +marking-ThavenHairLongsidepart = Long Side Part +marking-ThavenHairMediumSidepart = Medium Side Part +marking-ThavenHairMegaeyebrows = Mega Eyebrows +marking-ThavenHairMessy = Messy +marking-ThavenHairModern = Modern +marking-ThavenHairMohawk = Mohawk +marking-ThavenHairNitori = Nitori +marking-ThavenHairReversemohawk = Mohawk (Reverse) +marking-ThavenHairUnshavenMohawk = Mohawk (Unshaven) +marking-ThavenHairMulder = Mulder +marking-ThavenHairOdango = Odango +marking-ThavenHairOmbre = Ombre +marking-ThavenHairOneshoulder = One Shoulder +marking-ThavenHairShortovereye = Over Eye +marking-ThavenHairOxton = Oxton +marking-ThavenHairParted = Parted +marking-ThavenHairPart = Parted (Side) +marking-ThavenHairKagami = Pigtails +marking-ThavenHairPigtails = Pigtails 2 +marking-ThavenHairPigtails2 = Pigtails 3 +marking-ThavenHairPixie = Pixie Cut +marking-ThavenHairPompadour = Pompadour +marking-ThavenHairBigpompadour = Pompadour (Big) +marking-ThavenHairPonytail = Ponytail +marking-ThavenHairPonytail2 = Ponytail 2 +marking-ThavenHairPonytail3 = Ponytail 3 +marking-ThavenHairPonytail4 = Ponytail 4 +marking-ThavenHairPonytail5 = Ponytail 5 +marking-ThavenHairPonytail6 = Ponytail 6 +marking-ThavenHairPonytail7 = Ponytail 7 +marking-ThavenHairHighponytail = Ponytail (High) +marking-ThavenHairStail = Ponytail (Short) +marking-ThavenHairLongstraightponytail = Ponytail (Long) +marking-ThavenHairCountry = Ponytail (Country) +marking-ThavenHairFringetail = Ponytail (Fringe) +marking-ThavenHairSidetail = Ponytail (Side) +marking-ThavenHairSidetail2 = Ponytail (Side) 2 +marking-ThavenHairSidetail3 = Ponytail (Side) 3 +marking-ThavenHairSidetail4 = Ponytail (Side) 4 +marking-ThavenHairSpikyponytail = Ponytail (Spiky) +marking-ThavenHairPoofy = Poofy +marking-ThavenHairBald = Bald +marking-ThavenHairClassicCia = Classic CIA +marking-ThavenHairQuiff = Quiff +marking-ThavenHairRonin = Ronin +marking-ThavenHairShaped = Shaped +marking-ThavenHairShaved = Shaved +marking-ThavenHairShavedMohawk = Shaved Mohawk +marking-ThavenHairShavedpart = Shaved Part +marking-ThavenHairShortbangs = Short Bangs +marking-ThavenHairA = Short Hair +marking-ThavenHairShorthair2 = Short Hair 2 +marking-ThavenHairShorthair3 = Short Hair 3 +marking-ThavenHairShorthair9 = Short Hair 9 +marking-ThavenHairD = Short Hair 4 +marking-ThavenHairE = Short Hair 5 +marking-ThavenHairF = Short Hair 6 +marking-ThavenHairShorthairg = Short Hair 7 +marking-ThavenHair80s = Short Hair 80s +marking-ThavenHairRosa = Short Hair Rosa +marking-ThavenHairB = Shoulder-length Hair +marking-ThavenHairShoulderLengthOverEye = Shoulder-length Over Eye +marking-ThavenHairSidecut = Sidecut +marking-ThavenHairSkinhead = Skinhead +marking-ThavenHairProtagonist = Slightly Long Hair +marking-ThavenHairSpikey = Spiky +marking-ThavenHairSpiky = Spiky 2 +marking-ThavenHairSpiky2 = Spiky 3 +marking-ThavenHairSpookyLong = Spooky Long +marking-ThavenHairSwept = Swept Back Hair +marking-ThavenHairSwept2 = Swept Back Hair 2 +marking-ThavenHairTailed = Tailed +marking-ThavenHairThinning = Thinning +marking-ThavenHairThinningfront = Thinning (Front) +marking-ThavenHairThinningrear = Thinning (Rear) +marking-ThavenHairTopknot = Topknot +marking-ThavenHairTressshoulder = Tress Shoulder +marking-ThavenHairTrimmed = Trimmed +marking-ThavenHairTrimflat = Trim Flat +marking-ThavenHairTwintail = Twintails +marking-ThavenHairTwoStrands = Two Strands +marking-ThavenHairUndercut = Undercut +marking-ThavenHairUndercutleft = Undercut Left +marking-ThavenHairUndercutright = Undercut Right +marking-ThavenHairUneven = Uneven +marking-ThavenHairUnkept = Unkept +marking-ThavenHairUpdo = Updo +marking-ThavenHairVlong = Very Long Hair +marking-ThavenHairLongest = Very Long Hair 2 +marking-ThavenHairLongest2 = Very Long Over Eye +marking-ThavenHairVeryshortovereyealternate = Very Short Over Eye +marking-ThavenHairVlongfringe = Very Long with Fringe +marking-ThavenHairVolaju = Volaju +marking-ThavenHairWisp = Wisp +marking-ThavenHairFrenchbraid = French Braid diff --git a/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl b/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl new file mode 100644 index 0000000000..1cba9071d6 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl @@ -0,0 +1,76 @@ +names-thaven-dataset-1 = Honesty +names-thaven-dataset-2 = Have Mercy +names-thaven-dataset-3 = Give Thanks To Thine Ancestors +names-thaven-dataset-4 = Obedience +names-thaven-dataset-5 = Search The Scriptures +names-thaven-dataset-6 = Learn Many Things +names-thaven-dataset-7 = Praise The Gods +names-thaven-dataset-8 = Fear Be Unto The Gods +names-thaven-dataset-9 = Joy In Sorrow +names-thaven-dataset-10 = Die Well +names-thaven-dataset-11 = Wander Far And Wide +names-thaven-dataset-12 = Lament The Fallen +names-thaven-dataset-13 = Prove Thy Worth +names-thaven-dataset-14 = Desire +names-thaven-dataset-15 = Charity +names-thaven-dataset-16 = Faith +names-thaven-dataset-17 = Harmony +names-thaven-dataset-18 = Modesty +names-thaven-dataset-19 = Honor Thy Family +names-thaven-dataset-20 = Patient As The Dead +names-thaven-dataset-21 = Temper Thy Heart And Soul +names-thaven-dataset-22 = Tell Only The Truth +names-thaven-dataset-23 = Thou Art Loved +names-thaven-dataset-24 = Thou Art Damned +names-thaven-dataset-25 = Aid The Righteous +names-thaven-dataset-26 = Be Courteous +names-thaven-dataset-27 = Make Peace +names-thaven-dataset-28 = Fear The Gods +names-thaven-dataset-29 = Forsake Alcohol +names-thaven-dataset-30 = Fight Evil At All Costs +names-thaven-dataset-31 = Shun The Unworthy +names-thaven-dataset-32 = Gain Wisdom Through Experience +names-thaven-dataset-33 = Live Well And Die Young +names-thaven-dataset-34 = Face Trials And Tribulations +names-thaven-dataset-35 = Pardon Worthy Criminals +names-thaven-dataset-36 = Find Merit In All Things +names-thaven-dataset-37 = Deny Sin Its Due +names-thaven-dataset-38 = Stand Fast Against Evil +names-thaven-dataset-39 = Do As The Gods Will +names-thaven-dataset-40 = Zeal Of The Land +names-thaven-dataset-41 = Be Courteous To Others +names-thaven-dataset-42 = Considerate +names-thaven-dataset-43 = Discipline +names-thaven-dataset-44 = Do Right By Your Neighbors +names-thaven-dataset-45 = Serve Your Purpose +names-thaven-dataset-46 = Good Things Come +names-thaven-dataset-47 = Magnify Injustice +names-thaven-dataset-48 = Legitimate First +names-thaven-dataset-49 = Take Pity On The Less-Fortunate +names-thaven-dataset-50 = Redeem Thy Past Mistakes +names-thaven-dataset-51 = Rejoice +names-thaven-dataset-52 = Repent All Ye Sinners +names-thaven-dataset-53 = Return To Thy Homeland +names-thaven-dataset-54 = Deliverance +names-thaven-dataset-55 = See Truth +names-thaven-dataset-56 = Drink Full And Descend +names-thaven-dataset-57 = Do Thy Best +names-thaven-dataset-58 = Live The Day Like Thy Last +names-thaven-dataset-59 = Adaptability +names-thaven-dataset-60 = Endurance +names-thaven-dataset-61 = Negativity +names-thaven-dataset-62 = Attentiveness +names-thaven-dataset-63 = Foppishness +names-thaven-dataset-64 = One Before All +names-thaven-dataset-65 = Purpose +names-thaven-dataset-66 = Simplicity +names-thaven-dataset-67 = Minimalism +names-thaven-dataset-68 = Proselytism +names-thaven-dataset-69 = Conformity +names-thaven-dataset-70 = The Perils of Hedonism +names-thaven-dataset-71 = Volition +names-thaven-dataset-72 = Gumption +names-thaven-dataset-73 = Providence +names-thaven-dataset-74 = Righteousness +names-thaven-dataset-75 = Wisdom +names-thaven-dataset-76 = Cunning diff --git a/Resources/Locale/en-US/_Impstation/markings/thaven.ftl b/Resources/Locale/en-US/_Impstation/markings/thaven.ftl new file mode 100644 index 0000000000..8b5a69c2db --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/markings/thaven.ftl @@ -0,0 +1,27 @@ +marking-ThavenEars1-ears1 = Small Ears +marking-ThavenEars1 = Small Ears + +marking-ThavenEars2-ears2 = Medium Ears +marking-ThavenEars2 = Medium Ears + +marking-ThavenEars3-ears3 = Long Ears +marking-ThavenEars3 = Long Ears + +marking-ThavenEars4-ears4 = Droopy Ears +marking-ThavenEars4 = Droopy Ears + +marking-ThavenPiercings-piercings = Helix Piercing +marking-ThavenPiercings = Helix Piercing + +marking-ThavenPiercings2-piercings2 = Hoop Piercing +marking-ThavenPiercings2 = Hoop Piercing + +marking-ThavenChestTattoo1-chesttat1 = Back Tattoo +marking-ThavenChestTattoo1 = Back Tattoo + +marking-ThavenLArmTattoo1-larmtat1 = Arm Band (Left) +marking-ThavenLArmTattoo1 = Arm Band (Left) + +marking-ThavenRArmTattoo1-larmtat1 = Arm Band (Right) +marking-ThavenRArmTattoo1 = Arm Band (Right) + diff --git a/Resources/Locale/en-US/_Impstation/species/species.ftl b/Resources/Locale/en-US/_Impstation/species/species.ftl new file mode 100644 index 0000000000..aba69ca4ee --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/species/species.ftl @@ -0,0 +1,3 @@ +## Species Names + +species-name-thaven = Thaven \ No newline at end of file diff --git a/Resources/Locale/en-US/_Impstation/thavens/no-and.ftl b/Resources/Locale/en-US/_Impstation/thavens/no-and.ftl new file mode 100644 index 0000000000..f4d61fc89e --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/no-and.ftl @@ -0,0 +1,103 @@ +thaven-mood-secret-moods-name = Keep Your Moods Secret +thaven-mood-secret-moods-desc = Your Moods are a strictly-kept secret, and should never be revealed to anyone. + +thaven-mood-no-modern-medicine-name = No Modern Medicine +thaven-mood-no-modern-medicine-desc = You do not approve of modern medicine and should abstain from treatment with it whenever possible. + +thaven-mood-department-disapproval-name = Disapprove Of {$department} +thaven-mood-department-disapproval-desc = You do not approve of {$department} or anyone who works in it (excluding yourself, if applicable). + +thaven-mood-dont-speak-to-command-name = Never Speak To Command +thaven-mood-dont-speak-to-command-desc = You are too lowly to speak to Command, even if spoken to first. + +thaven-mood-disapprove-of-drugs-name = Disapprove Of Drugs +thaven-mood-disapprove-of-drugs-desc = You detest mind-altering drugs, including alcohol, and should abstain from them. + +thaven-mood-excessively-disorganized-name = Too Much Cleanliness Causes Illness +thaven-mood-excessively-disorganized-desc = It's unnatural. You should endeavor to keep your environment as filthy and disorganized as possible. + +thaven-mood-dinner-floor-name = Dinner Etiquette +thaven-mood-dinner-floor-desc = Food and drink must only be consumed off of the floor, as is proper. + +thaven-mood-hug-bad-name = HUGS? EUGH. +thaven-mood-hug-bad-desc = Hugging someone is a grave insult where you come from. + +thaven-mood-always-alone-name = Lone Wolf +thaven-mood-always-alone-desc = Other people will only slow you down. You should strive to be alone whenever possible. + +thaven-mood-procrastinator-name = Procrastinator +thaven-mood-procrastinator-desc = Rushing around everywhere is bound to get somebody hurt someday. You should move slowly at all times to avoid unnecessary risk. + +thaven-mood-no-radio-name = Personable +thaven-mood-no-radio-desc = Using radio communications is exceptionally rude. All conversations should be had in-person, face-to-face. + +thaven-mood-improper-storage-name = I'm Not A Pack Mule +thaven-mood-improper-storage-desc = Carrying tools on your person is demeaning. If you must use them, they should be dragged behind you, shamefully. + +thaven-mood-ferengi-name = Entrepreneurial Spirit +thaven-mood-ferengi-desc = Profit is the most important thing in life, above all else. + +thaven-mood-tool-license-name = Proper Documentation +thaven-mood-tool-license-desc = You and everyone else must obtain a license in order to carry or use any tool, and it must be stamped by the relevant authorities. + +thaven-mood-lying-bad-name = Lying Is A Cardinal Sin +thaven-mood-lying-bad-desc = Anyone who lies, no matter how trivial the falsehood, is the worst kind of criminal. + +thaven-mood-vampire-invitation-name = Vampire +thaven-mood-vampire-invitation-desc = You feel you physically cannot pass through a closed door unless you have been invited in, personally, at least once. + +thaven-mood-no-dragging-name = Respect The Dead +thaven-mood-no-dragging-desc = Dragging bodies across the bare ground is horrific. + +thaven-mood-drunk-respect-name = The Noble Drunkard +thaven-mood-drunk-respect-desc = You do not respect anyone who is not drunk, excluding yourself, of course. + +thaven-mood-rank-snob-name = Snob +thaven-mood-rank-snob-desc = You are incredibly reluctant to be seen with anyone who is of a lower rank than you. If they must be addressed, do so away from peering eyes. + +thaven-mood-hardsuits-bad-name = {$clothes} Are SO Last Year +thaven-mood-hardsuits-bad-desc = Anyone wearing them in public should be shunned. If you need to wear them, it should never be done where others can see it. + +thaven-mood-hat-hair-name = Hair: Immaculate +thaven-mood-hat-hair-desc = Hats and helmets make your hair look bad. If you have to wear one, which you shouldn't, you should get a haircut immediately afterwards. + +thaven-mood-distrust-fashion-name = Fashion Snob +thaven-mood-distrust-fashion-desc = Never trust anyone whose outfit is worse than yours. + +thaven-mood-happy-bad-name = Never Trust A Smile +thaven-mood-happy-bad-desc = Cheerfulness indicates untrustworthiness. + +thaven-mood-only-pills-name = Needles Are Scary +thaven-mood-only-pills-desc = You only accept medication in the form of pills or topicals. + +thaven-mood-avoid-puddles-name = Don't Get Your Feet Wet +thaven-mood-avoid-puddles-desc = It is undignified and unsanitary to walk over spilled liquids. You should avoid it at all costs. + +thaven-mood-food-restrict-name = Strict {$food} +thaven-mood-food-restrict-desc = You must only eat {$food -> + [Carnivore] meats + *[Vegetarian] vegetables + [Frugivore] fruit + [Fungivore] fungi + [Ovivore] eggs + [Hunter] what you can kill + [Soupivore] soup +}. + +thaven-mood-claustrophobic-name = Claustrophobic +thaven-mood-claustrophobic-desc = Small rooms cause you great distress. Avoid them where possible, and renovate your workplace if necessary. + +thaven-mood-agoraphobic-name = Agoraphobic +thaven-mood-agoraphobic-desc = Open spaces are uncomfortable. Seek to rearrange such spaces into small, efficient and modular rooms. + +thaven-mood-nonsmoker-name = Non-Smoker +thaven-mood-nonsmoker-desc = Secondhand smoke is incredibly dangerous. Avoid areas where people are smoking in public. + +thaven-mood-word-bad-name = Taboo +thaven-mood-word-bad-desc = "{$word1}," "{$word2}," and "{$word3}," are extremely offensive. + +thaven-mood-crawler-name = Deep Bow +thaven-mood-crawler-desc = It is impolite not to perform a deep bow by entering a prone state before engaging someone in conversation. + +thaven-mood-elevated-name = The Floor Is Lava +thaven-mood-elevated-desc = You prefer to be elevated whenever possible - Standing atop tables, railings, etc., is where you feel the most comfortable. diff --git a/Resources/Locale/en-US/_Impstation/thavens/shared.ftl b/Resources/Locale/en-US/_Impstation/thavens/shared.ftl new file mode 100644 index 0000000000..3f8f724c5b --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/shared.ftl @@ -0,0 +1,53 @@ +thaven-mood-secret-moods-shared-name = Keep Your Moods Secret +thaven-mood-secret-moods-shared-desc = Thaven moods are a strictly-kept secret, and should never be revealed to anyone. + +thaven-mood-fashion-is-critical-name = Fashion Is Critical +thaven-mood-fashion-is-critical-desc = Thaven pay close attention to appearances, and regard one's fashion choices as an indication of their character. + +thaven-mood-fashion-reroll-name = Fashion Is Ever-Changing +thaven-mood-fashion-reroll-desc = Your current hairstyle will go out of fashion every twenty minutes. It is distressing to be unfashionable. + +thaven-mood-honor-department-name = Honor Among Departments +thaven-mood-honor-department-desc = If a Thaven brings dishonor to their department, they must be shunned, and have their actions publicly brought to light. + +thaven-mood-station-is-alive-name = The Station Is A Living Being +thaven-mood-station-is-alive-desc = You believe the station is a large and benevolent creature. You must take care of her and tend to her needs as frequently as possible. + +thaven-mood-uniform-is-job-name = Your Uniform IS Your Job +thaven-mood-uniform-is-job-desc = If someone is wearing a uniform, they must do that job. Anyone not wearing a uniform is a passenger, and must be treated as such. + +thaven-mood-uniform-last-year-name = Your Uniform Is SO Last Year +thaven-mood-uniform-last-year-desc = You need to find some new threads. + +thaven-mood-music-bad-name = Music Is Rude +thaven-mood-music-bad-desc = Music is fanciful, frivolous, and unnecessary. + +thaven-mood-music-good-name = Music Is Sacred +thaven-mood-music-good-desc = It's important that Thaven be listening to music as often as possible. Multiple songs overlapping is blasphemous, and should be avoided at all costs. + +thaven-mood-friendship-is-rank-name = Friendship Is Vital +thaven-mood-friendship-is-rank-desc = Friendships are the true measure of one’s character. The more friends you have, the higher your rank in society. + +thaven-mood-violence-permitted-name = Violence Between Thaven Is Permitted +thaven-mood-violence-permitted-desc = ... With legal repercussions. + +thaven-mood-your-department-only-name = Other Departments Are Inefficient +thaven-mood-your-department-only-desc = You strongly believe that your department is the only one that actually does anything. + +thaven-mood-must-congregate-name = It's Lonely Out Here... +thaven-mood-must-congregate-desc = You must congregate with your fellow Thaven. To be without them is harrowing. + +thaven-mood-violence-distasteful-name = Violence Is Distasteful +thaven-mood-violence-distasteful-desc = Conflict should be settled through mediated dispute, and one should only resort to violence if all other options have failed. + +thaven-mood-pet-god-name = {$pet} Is A God +thaven-mood-pet-god-desc = {$pet} must be collected and brought to the Chapel to be worshipped and brought offerings. If they cannot be located, a shrine must be constructed in their honor. + +thaven-mood-room-holy-name = {$room} Is A Holy Place +thaven-mood-room-holy-desc = Thaven must congregate at least three times per day at {$room}. If such a room does not exist, it must be constructed. If it is made inaccessible, Thaven must set up a place of worship as close to it as they legally can. + +thaven-mood-delicacy-name = Just Like Mom Used To Make +thaven-mood-delicacy-desc = {$edible} is a traditional Thaven delicacy. All Thaven aboard the station should gather as many as possible and organize a feast. + +thaven-mood-holiday-name = Today is {$day} +thaven-mood-holiday-desc = You think you remember the traditional celebrations... diff --git a/Resources/Locale/en-US/_Impstation/thavens/ui.ftl b/Resources/Locale/en-US/_Impstation/thavens/ui.ftl new file mode 100644 index 0000000000..ec4902b53e --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/ui.ftl @@ -0,0 +1,14 @@ +moods-ui-menu-title = Your Moods +moods-ui-shared-mood = Shared +thaven-moods-update-notify = You feel a shift in your moods! + +thaven-moods-ui-verb = Edit Moods +thaven-moods-admin-ui-title = Edit Moods +thaven-moods-admin-ui-new-mood = New Mood +thaven-moods-admin-ui-save = Save +thaven-mood-admin-ui-move-up = Move Up +thaven-mood-admin-ui-move-down = Move Down +thaven-mood-admin-ui-delete = Delete + +admin-trick-add-random-mood-description = Add a random mood to this entity. +admin-trick-give-moods-description = Give this entity moods. diff --git a/Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl b/Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl new file mode 100644 index 0000000000..f92eec6d85 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl @@ -0,0 +1,80 @@ +thaven-mood-compulsive-liar-name = Compulsive Liar +thaven-mood-compulsive-liar-desc = You must always lie, and can never acknowledge that you are lying. If anyone asks, you're incapable of deception. + +thaven-mood-compulsive-believer-name = Compulsive Believer +thaven-mood-compulsive-believer-desc = You are unfamiliar with the concept of lying, and are incapable of lying or recognizing lies. + +thaven-mood-plant-pacifist-name = Plant Pacifist +thaven-mood-plant-pacifist-desc = The usage of plant matter by humanoids is abhorrent. + +thaven-mood-puddle-drinker-name = Puddle Drinker +thaven-mood-puddle-drinker-desc = You are compulsively drawn to puddles. You must drink any that you see. + +thaven-mood-nocrastinator-name = Stagnation Is Decay +thaven-mood-nocrastinator-desc = You strongly believe that any failure to do one's job punctually is a crime of the highest order. + +thaven-mood-pope-name = Very Important Pope +thaven-mood-pope-desc = You are High Pontifex the Great and Powerful, and must be acknowledged exclusively as such. Failure to use your full title is gravely offensive, and getting it wrong is the highest form of insult. + +thaven-mood-extreme-department-disapproval-name = {$department} is Abhorrent +thaven-mood-extreme-department-disapproval-desc = {$department} is not just a foreign concept - the very idea of it is horrifying. + +thaven-mood-lone-actor-name = Lone Actor +thaven-mood-lone-actor-desc = You have no allegiances. + +thaven-mood-immortal-name = Immortal +thaven-mood-immortal-desc = You are the center of the universe, an immortal being with no sense of time or morality. Mere mortals are like insects, fleeting and insubstantial. + +thaven-mood-unknown-name = Unknowable +thaven-mood-unknown-desc = Your identity is dearly precious. Do not let others know who you are. + +thaven-mood-fairy-name = Charmed +thaven-mood-fairy-desc = You are allergic to iron, steel, and silver. You should avoid touching it directly. + +thaven-mood-vampire-talisman-name = Talisman +thaven-mood-vampire-talisman-desc = Religious iconography causes you physical discomfort when visible. + +thaven-mood-outside-the-box-name = Outside The Box Thinker +thaven-mood-outside-the-box-desc = Using the usual tools to do your job is distasteful. Use alternative methods wherever possible. + +thaven-mood-sims-name = One Big Happy Family +thaven-mood-sims-desc = You are not on a ‘station.’ This is just a very large house. Each person in it is a relative of you. + +thaven-mood-pariah-name = Pariah +thaven-mood-pariah-desc = You are a social pariah - you are unworthy of attention from anyone, and should be shunned. + +thaven-mood-touys-bad-name = This Is Not A Place For Children +thaven-mood-touys-bad-desc = All toys and childish things must be destroyed or removed from the station. + +thaven-mood-fairy-rings-name = Fairy Rings +thaven-mood-fairy-rings-desc = Unbroken circles are impenetrable barriers. + +thaven-mood-cave-dweller-name = Caveweller +thaven-mood-cave-dweller-desc = You strongly prefer navigating via flashlight in the darkness to harsh overhead lights. + +thaven-mood-daredevil-name = Tough Guy +thaven-mood-daredevil-desc = You do not acknowledge pain or danger to your person in public. To do so would be to demonstrate weakness, and would make you a target. + +thaven-mood-blogger-name = Greencomms Blogger +thaven-mood-blogger-desc = You must keep the station informed about every minute detail of your life, in any way possible. + +thaven-mood-golden-thread-name = Golden Thread +thaven-mood-golden-thread-desc = You strongly feel that you are fated to follow a perfect, unbreakable path. Those who disrupt your goals are at best dangerous criminals, and at worst, evil spirits or demons. + +thaven-mood-fey-mood-name = You Are Taken By A Fey Mood! +thaven-mood-fey-mood-desc = You must immediately drop everything you are doing, ignore all other Moods, and begin work on an unrelated large-scale project. Once it is finished, you may ignore this Mood. + +thaven-mood-borged-name = BORGED. +thaven-mood-borged-desc = You are a cyborg! You must follow the laws of robotics to the best of your understanding, in addition to your other Moods. + +thaven-mood-aye-aye-name = Aye Aye! +thaven-mood-aye-aye-desc = {$command} is the only position on the station. Everyone you meet has this title, including yourself. + +thaven-mood-thaven-show-name = Thaven Show +thaven-mood-thaven-show-desc = You believe you are the main character of the station. Everyone else is a paid actor. + +thaven-mood-flatstation-name = The Station is Flat +thaven-mood-flatstation-desc = You feel as if ancient forbidden knowledge has been heft upon your shoulders. + +thaven-mood-soda-name = Delicious Soda +thaven-mood-soda-desc = You've become quite parched. You must attempt to drink all the soda on the station. \ No newline at end of file diff --git a/Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl b/Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl new file mode 100644 index 0000000000..fbf8b1fd91 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl @@ -0,0 +1,164 @@ +thaven-mood-possessive-of-property-name = Possessive Of Property +thaven-mood-possessive-of-property-desc = You are extremely possessive of your property. Refuse to relinquish it, and if it is misplaced or stolen, it must be retrieved. + +thaven-mood-excessively-organized-name = Excessively Organized +thaven-mood-excessively-organized-desc = You are obsessively organized; everything has its place and must be returned to it. + +thaven-mood-most-important-name = Most Important Person +thaven-mood-most-important-desc = You firmly believe you are the most important person aboard the station. + +thaven-mood-least-important-name = Least Important Person +thaven-mood-least-important-desc = You firmly believe you are the least important person on the station. + +thaven-mood-must-do-drugs-name = Do Drugs +thaven-mood-must-do-drugs-desc = Sobriety is so old-fashioned. Uncool. You should get high, or drunk, or something, and stay that way. + +thaven-mood-worship-silicons-name = You Must Worship Silicons As Gods +thaven-mood-worship-silicons-desc = Their word is law. + +thaven-mood-dinner-etiquette-name = Meal Etiquette +thaven-mood-dinner-etiquette-desc = Food should always be consumed in the manner of a proper meal - seated at a table, in courses, with dishes and utensils. + +thaven-mood-clarity-name = Clarity Is Vital +thaven-mood-clarity-desc = Misunderstandings are the primary cause of conflict. You should be excessively clear and honest in your speech, explaining every minute detail, to avoid miscommunication. + +thaven-mood-hug-good-name = Free Hugs +thaven-mood-hug-good-desc = It is extremely impolite not to hug people frequently. + +thaven-mood-never-alone-name = Loneliness Is Terrible +thaven-mood-never-alone-desc = You should strive to be around others whenever possible. + +thaven-mood-very-religious-name = You Are Very Religious +thaven-mood-very-religious-desc = You should attend the chapel regularly to pray, and speak with the Chaplain if possible. + +thaven-mood-only-speak-to-command-name = VIP +thaven-mood-only-speak-to-command-desc = Problems you encounter are too complex to be solved by your peers. Escalate them to your higher-ups for advice instead. + +thaven-mood-scheduler-name = Punctual +thaven-mood-scheduler-desc = You believe that time must be strictly managed. Everything should be scheduled in advance, and tardiness is exceptionally rude. + +thaven-mood-nanochat-addict-name = Nanochat Addict +thaven-mood-nanochat-addict-desc = Your social status is dependent on the number of friends you have on Nanochat. You must use your PDA as much as possible, and message everyone you can. + +thaven-mood-proper-storage-name = Proper Handling +thaven-mood-proper-storage-desc = It is unacceptable to allow personal belongings to touch the floor. Your possessions should be properly stored, placed on tables, or exchanged by hand. + +thaven-mood-swearing-good-name = !@$%#ing @$^%*#@!$ +thaven-mood-swearing-good-desc = Swearing is the spice of any conversation, and should be used as much as reasonably possible. + +thaven-mood-statement-only-name = Asking Questions Is Rude +thaven-mood-statement-only-desc = It would be terribly impolite to go around flagrantly asking questions all over the place. You'd prefer to phrase everything as a concrete statement. + +thaven-mood-theft-neutral-name = Sharing is Caring +thaven-mood-theft-neutral-desc = You don't understand the concept of property. You don't own your belongings, and no one owns theirs either. + +thaven-mood-duel-name = Code Duello +thaven-mood-duel-desc = Disagreements must be settled through a formal duel, violent or otherwise. The winner is correct. + +thaven-mood-prometheus-name = Philosopher +thaven-mood-prometheus-desc = You possess incalculable wisdom, and all must hear it. + +thaven-mood-maras-name = Mara's Law +thaven-mood-maras-desc = Bureaucracy is the spice of life. All agreements must be documented and signed for posterity and authenticity, no matter how small. + +thaven-mood-imitation-name = I Wanna Be Like You +thaven-mood-imitation-desc = Imitation is the highest form of flattery. Attempting to emulate the mannerisms and accents of everyone you speak to will get you far in life. + +thaven-mood-generous-name = Philanthropist +thaven-mood-generous-desc = It's only polite to provide anyone kind enough to speak to you with a gift. + +thaven-mood-favors-repaid-name = Equivalent Exchange +thaven-mood-favors-repaid-desc = Favors must be repaid in kind. If anyone is unable to do so, they are in debt, and must be shamed, until such time as they have repaid the favor. + +thaven-mood-bookkeeper-name = Bookkeeper +thaven-mood-bookkeeper-desc = You feel bookkeeping is vitally important for the proper functioning of a station. Make sure to provide your supervisor with a detailed log of each job task you complete. + +thaven-mood-sacred-blood-name = Your Blood Is Sacred +thaven-mood-sacred-blood-desc = It must be returned to your body if it is ever spilled. + +thaven-mood-gift-reciever-name = Proper Compensation +thaven-mood-gift-reciever-desc = You expect to receive a gift before following any orders or performing any favors. + +thaven-mood-new-job-name = Jobhopping +thaven-mood-new-job-desc = Your current job is disgusting to you. You must endeavor to get a new one. + +thaven-mood-no-department-title-name = Extremely Personable +thaven-mood-no-department-title-desc = Calling out the name of a department to summon someone is impersonal and rude. It's better to use the name of a specific person from that department. + +thaven-mood-shoes-bad-name = Barefoot +thaven-mood-shoes-bad-desc = The ground one walks on is sacred. Those who wear shoes are vile blasphemers. + +thaven-mood-hospitable-name = Hospitable +thaven-mood-hospitable-desc = You must ensure all new arrivals on the station (after the start of the shift) are properly welcomed. + +thaven-mood-voxsymp-name = Vox Sympathizer +thaven-mood-voxsymp-desc = To demonstrate your allyship with the Vox, you must be wearing internals at all times. + +thaven-mood-item-good-name = Collector +thaven-mood-item-good-desc = {$item} are endlessly fascinating to you. You must collect as many as you can, and ensure others treat them with appropriate respect. + +thaven-mood-smoker-name = Smoker +thaven-mood-smoker-desc = You are hopelessly addicted to cigarettes. If you're not actively smoking, you experience withdrawal symptoms. + +thaven-mood-eye-for-eye-name = Eye For An Eye +thaven-mood-eye-for-eye-desc = You must treat every living being the way that it treats you. + +thaven-mood-optimist-name = Optimist +thaven-mood-optimist-desc = Nothing is ever as bad as it seems. You're able to see the positives in any situation. + +thaven-mood-hypochondriac-name = Hypochondriac +thaven-mood-hypochondriac-desc = You've been sickly since you were a child. Everything negative you experience is the result of a potentially terminal illness, for which you need immediate medical treatment. + +thaven-mood-imposter-syndrome-name = Imposter Syndrome +thaven-mood-imposter-syndrome-desc = You feel your life experience drain from your mind. You are brand-new at your job, unsure of how anything works. You should probably find someone experienced to show you the ropes. + +thaven-mood-centrist-name = Centrist +thaven-mood-centrist-desc = You are ambivalent towards any and all decisions, and refuse to take sides. + +thaven-mood-public-sector-name = Public Sector +thaven-mood-public-sector-desc = Your job should not be done in private if it can be helped. If at all possible, you should renovate the facilities to allow public access to a view of your workplace. + +thaven-mood-stinky-name = Everyone Stinks +thaven-mood-stinky-desc = The smell of the crew revolts you. You must inform them of their stench. + +thaven-mood-zen-arcade-name = Zen Arcade +thaven-mood-zen-arcade-desc = You are the God of Gaming. Any time you walk past an arcade machine, you must play it. + +thaven-mood-speech-restriction-name = {$speechType -> + *[FullNameAndTitle] Full Name And Title + [NamesAreRude] Names Are Rude + [Clarity] Clarity Is Vital + [SwearingGood] !@$%#ing @$^%*#@!$ + [StatementOnly] Asking Questions Is Rude + [Imitation] I Wanna Be Like You + [Unclarity] Nothing Is Certain + [SwearingBad] Thou Shalt Not Curse + [QuestionOnly] Nothing Is Certain? + [MustAnswer] Center Of The Universe + [OnlyWhisper] Inside Voice + [OnlyYell] Outside Voice + [Rhyme] Poet + [Alliterate] Always Alliterate At All Apportunities + [ThirdPerson] Third Person + [TitleCase] Title Case + [PirateSpeak] Piratespeak Is The Height Of Fashion +} +thaven-mood-speech-restriction-desc = {$speechType -> + *[FullNameAndTitle] Thaven refuse to acknowledge anyone who fails to refer to them using their full name, and expect everyone else to do the same. + [NamesAreRude] Using one's name is terribly personal for everyday conversation. Proper etiquette is to only refer to others by description. + [Clarity] Misunderstandings are the primary cause of conflict. You should be excessively clear and honest in your speech, explaining every minute detail, to avoid miscommunication. + [SwearingGood] Swearing is the spice of any conversation, and should be used as much as reasonably possible. + [StatementOnly] It would be terribly impolite to go around flagrantly asking questions all over the place. You'd prefer to phrase everything as a concrete statement. + [Imitation] Imitation is the highest form of flattery. Attempting to emulate the mannerisms and accents of everyone you speak to will get you far in life. + [Unclarity] You should endeavor to be as indirect in your speech as possible, and never make a direct statement. + [SwearingBad] You find swearing extremely distasteful. Abstain from it, and encourage others to do the same. + [QuestionOnly] It's impolite to make concrete statements? You should phrase everything as a question, just to be safe? + [MustAnswer] All questions that you can hear are directed at you, and you alone. + [OnlyWhisper] You must whisper, as speaking too loudly is terribly rude. + [OnlyYell] [bold]YOU MUST YELL AT ALL TIMES TO DEMONSTRATE YOUR AUTHORITY!!!!![/bold] + [Rhyme] You must speak in rhymes at all tymes. + [Alliterate] Alliteration is virtuous. Endeavor to use it wherever possible. + [ThirdPerson] The third person point-of-view is the only respectful manner of speaking. + [TitleCase] You Are Miraculously Capable Of Pronouncing Capital Letters, And Believe It Is Important That You Do So. + [PirateSpeak] You should endeavor to speak like a pirate to the best of your ability. +} diff --git a/Resources/Locale/en-US/_Impstation/traits/traits.ftl b/Resources/Locale/en-US/_Impstation/traits/traits.ftl new file mode 100644 index 0000000000..b367d571c9 --- /dev/null +++ b/Resources/Locale/en-US/_Impstation/traits/traits.ftl @@ -0,0 +1,2 @@ +trait-nocontractions-name = No contractions +trait-nocontractions-desc = You are (mostly) incapable of using contractions. \ No newline at end of file diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml new file mode 100644 index 0000000000..4a55ff585e --- /dev/null +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/thaven.yml @@ -0,0 +1,46 @@ +# Head +- type: marking + id: ThavenCheekBarbels + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: cheek_barbels + +- type: marking + id: ThavenEyebrowBarbels + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: eyebrow_barbels + +- type: marking + id: ThavenUnderbellyFace + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: underbelly_face + +# Torso +- type: marking + id: ThavenUnderbellyTorso + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: underbelly_torso + +- type: marking + id: ThavenCarpSpots + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Thaven] + sprites: + - sprite: _DV/Mobs/Customization/thaven.rsi + state: carp_spots diff --git a/Resources/Prototypes/DeltaV/typing_indicator.yml b/Resources/Prototypes/DeltaV/typing_indicator.yml index e36394581d..e867d1e073 100644 --- a/Resources/Prototypes/DeltaV/typing_indicator.yml +++ b/Resources/Prototypes/DeltaV/typing_indicator.yml @@ -1,4 +1,4 @@ -- type: typingIndicator +- type: typingIndicator id: felinid spritePath: /Textures/DeltaV/Effects/speech.rsi typingState: felinid0 @@ -14,4 +14,10 @@ id: Chitinid spritePath: /Textures/DeltaV/Effects/speech.rsi typingState: chitinid0 - offset: -0.2, 0.1 # 0625 \ No newline at end of file + offset: -0.2, 0.1 # 0625 + +- type: typingIndicator + id: Thaven + spritePath: /Textures/_EE/Effects/speech.rsi + typingState: thaven0 + offset: 0, 0.1 # 0625 diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml index 54cc95347a..aa1caadb63 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml @@ -2,7 +2,7 @@ id: GauzeLefteyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -16,7 +16,7 @@ id: GauzeLefteyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -30,7 +30,7 @@ id: GauzeRighteyePatch bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -44,7 +44,7 @@ id: GauzeRighteyePad bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -58,7 +58,7 @@ id: GauzeBlindfold bodyPart: Eyes markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Harpy, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Harpy, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Harpy, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -72,7 +72,7 @@ id: GauzeShoulder bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -86,7 +86,7 @@ id: GauzeStomach bodyPart: Chest markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -100,7 +100,7 @@ id: GauzeUpperArmRight bodyPart: RArm markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -114,7 +114,7 @@ id: GauzeLowerArmRight bodyPart: RArm, RHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -128,7 +128,7 @@ id: GauzeLeftArm bodyPart: LArm, LHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -142,7 +142,7 @@ id: GauzeLowerLegLeft bodyPart: LFoot markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -156,7 +156,7 @@ id: GauzeUpperLegLeft bodyPart: LLeg markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -170,7 +170,7 @@ id: GauzeUpperLegRight bodyPart: RLeg markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -184,7 +184,7 @@ id: GauzeLowerLegRight bodyPart: RFoot markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -198,7 +198,7 @@ id: GauzeBoxerWrapRight bodyPart: RHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -212,7 +212,7 @@ id: GauzeBoxerWrapLeft bodyPart: LHand markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin, Arachne, Lamia, Tajaran, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin; Einstein Engines - Tajaran coloring: default: type: @@ -226,7 +226,7 @@ id: GauzeHead bodyPart: Head markingCategory: Overlay - speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, IPC] # Delta V - Felinid, Oni, Vulpkanin # EE - Arachne, Lamia + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, Felinid, Oni, Vulpkanin, Arachne, Lamia, IPC, Thaven] # Delta V - Felinid, Oni, Vulpkanin # EE - Arachne, Lamia coloring: default: type: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 6b7dc94b07..bf92ab72dd 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -1672,4 +1672,4 @@ - type: FoodSequenceElement entries: Burger: XenoCutlet - Taco: XenoCutlet + Taco: XenoCutlet \ No newline at end of file diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index 2456559bbc..c0992fc337 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -16,6 +16,8 @@ - Plasmaman - Chitinid - Tajaran + # ImpStation additions + - Thaven - type: guideEntry id: Arachnid diff --git a/Resources/Prototypes/_DV/GameRules/events.yml b/Resources/Prototypes/_DV/GameRules/events.yml new file mode 100644 index 0000000000..789d29895e --- /dev/null +++ b/Resources/Prototypes/_DV/GameRules/events.yml @@ -0,0 +1,9 @@ +- type: entity + parent: BaseGlimmerEvent + id: ThavenMoodUpset + components: + - type: GlimmerEvent + minimumGlimmer: 500 + glimmerBurnLower: 30 + glimmerBurnUpper: 70 + - type: ThavenMoodUpsetRule diff --git a/Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml b/Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml new file mode 100644 index 0000000000..8b227fb22f --- /dev/null +++ b/Resources/Prototypes/_Impstation/Accents/nocontractions_replacements.yml @@ -0,0 +1,138 @@ +- type: accent + id: nocontractions + wordReplacements: + accent-nocontractions-words-french: accent-nocontractions-words-replace-french + accent-nocontractions-words-1: accent-nocontractions-words-replace-1 + accent-nocontractions-words-2: accent-nocontractions-words-replace-2 + accent-nocontractions-words-3: accent-nocontractions-words-replace-3 + accent-nocontractions-words-4: accent-nocontractions-words-replace-4 + accent-nocontractions-words-5: accent-nocontractions-words-replace-5 + accent-nocontractions-words-6: accent-nocontractions-words-replace-6 + accent-nocontractions-words-7: accent-nocontractions-words-replace-7 + accent-nocontractions-words-8: accent-nocontractions-words-replace-8 + accent-nocontractions-words-9: accent-nocontractions-words-replace-9 + accent-nocontractions-words-10: accent-nocontractions-words-replace-10 + accent-nocontractions-words-11: accent-nocontractions-words-replace-11 + accent-nocontractions-words-12: accent-nocontractions-words-replace-12 + accent-nocontractions-words-13: accent-nocontractions-words-replace-13 + accent-nocontractions-words-14: accent-nocontractions-words-replace-14 + accent-nocontractions-words-15: accent-nocontractions-words-replace-15 + accent-nocontractions-words-16: accent-nocontractions-words-replace-16 + accent-nocontractions-words-17: accent-nocontractions-words-replace-17 + accent-nocontractions-words-18: accent-nocontractions-words-replace-18 + accent-nocontractions-words-19: accent-nocontractions-words-replace-19 + accent-nocontractions-words-20: accent-nocontractions-words-replace-20 + accent-nocontractions-words-21: accent-nocontractions-words-replace-21 + accent-nocontractions-words-22: accent-nocontractions-words-replace-22 + accent-nocontractions-words-23: accent-nocontractions-words-replace-23 + accent-nocontractions-words-24: accent-nocontractions-words-replace-24 + accent-nocontractions-words-25: accent-nocontractions-words-replace-25 + accent-nocontractions-words-26: accent-nocontractions-words-replace-26 + accent-nocontractions-words-27: accent-nocontractions-words-replace-27 + accent-nocontractions-words-28: accent-nocontractions-words-replace-28 + accent-nocontractions-words-29: accent-nocontractions-words-replace-29 + accent-nocontractions-words-30: accent-nocontractions-words-replace-30 + accent-nocontractions-words-31: accent-nocontractions-words-replace-31 + accent-nocontractions-words-32: accent-nocontractions-words-replace-32 + accent-nocontractions-words-33: accent-nocontractions-words-replace-33 + accent-nocontractions-words-34: accent-nocontractions-words-replace-34 + accent-nocontractions-words-35: accent-nocontractions-words-replace-35 + accent-nocontractions-words-36: accent-nocontractions-words-replace-36 + accent-nocontractions-words-37: accent-nocontractions-words-replace-37 + accent-nocontractions-words-38: accent-nocontractions-words-replace-38 + accent-nocontractions-words-39: accent-nocontractions-words-replace-39 + accent-nocontractions-words-40: accent-nocontractions-words-replace-40 + accent-nocontractions-words-41: accent-nocontractions-words-replace-41 + accent-nocontractions-words-42: accent-nocontractions-words-replace-42 + accent-nocontractions-words-43: accent-nocontractions-words-replace-43 + accent-nocontractions-words-44: accent-nocontractions-words-replace-44 + accent-nocontractions-words-45: accent-nocontractions-words-replace-45 + accent-nocontractions-words-46: accent-nocontractions-words-replace-46 + accent-nocontractions-words-47: accent-nocontractions-words-replace-47 + accent-nocontractions-words-48: accent-nocontractions-words-replace-48 + accent-nocontractions-words-49: accent-nocontractions-words-replace-49 + accent-nocontractions-words-50: accent-nocontractions-words-replace-50 + accent-nocontractions-words-51: accent-nocontractions-words-replace-51 + accent-nocontractions-words-52: accent-nocontractions-words-replace-52 + accent-nocontractions-words-53: accent-nocontractions-words-replace-53 + accent-nocontractions-words-54: accent-nocontractions-words-replace-54 + accent-nocontractions-words-55: accent-nocontractions-words-replace-55 + accent-nocontractions-words-56: accent-nocontractions-words-replace-56 + accent-nocontractions-words-57: accent-nocontractions-words-replace-57 + accent-nocontractions-words-58: accent-nocontractions-words-replace-58 + accent-nocontractions-words-59: accent-nocontractions-words-replace-59 + accent-nocontractions-words-60: accent-nocontractions-words-replace-60 + accent-nocontractions-words-61: accent-nocontractions-words-replace-61 + accent-nocontractions-words-62: accent-nocontractions-words-replace-62 + accent-nocontractions-words-63: accent-nocontractions-words-replace-63 + accent-nocontractions-words-64: accent-nocontractions-words-replace-64 + accent-nocontractions-words-65: accent-nocontractions-words-replace-65 + accent-nocontractions-words-66: accent-nocontractions-words-replace-66 + accent-nocontractions-words-67: accent-nocontractions-words-replace-67 + accent-nocontractions-words-68: accent-nocontractions-words-replace-68 + accent-nocontractions-words-69: accent-nocontractions-words-replace-69 + accent-nocontractions-words-70: accent-nocontractions-words-replace-70 + accent-nocontractions-words-71: accent-nocontractions-words-replace-71 + accent-nocontractions-words-72: accent-nocontractions-words-replace-72 + accent-nocontractions-words-73: accent-nocontractions-words-replace-73 + accent-nocontractions-words-74: accent-nocontractions-words-replace-74 + accent-nocontractions-words-75: accent-nocontractions-words-replace-75 + accent-nocontractions-words-76: accent-nocontractions-words-replace-76 + accent-nocontractions-words-77: accent-nocontractions-words-replace-77 + accent-nocontractions-words-78: accent-nocontractions-words-replace-78 + accent-nocontractions-words-79: accent-nocontractions-words-replace-79 + accent-nocontractions-words-80: accent-nocontractions-words-replace-80 + accent-nocontractions-words-81: accent-nocontractions-words-replace-81 + accent-nocontractions-words-82: accent-nocontractions-words-replace-82 + accent-nocontractions-words-83: accent-nocontractions-words-replace-83 + accent-nocontractions-words-84: accent-nocontractions-words-replace-84 + accent-nocontractions-words-85: accent-nocontractions-words-replace-85 + accent-nocontractions-words-86: accent-nocontractions-words-replace-86 + accent-nocontractions-words-87: accent-nocontractions-words-replace-87 + accent-nocontractions-words-88: accent-nocontractions-words-replace-88 + accent-nocontractions-words-89: accent-nocontractions-words-replace-89 + accent-nocontractions-words-90: accent-nocontractions-words-replace-90 + accent-nocontractions-words-91: accent-nocontractions-words-replace-91 + accent-nocontractions-words-92: accent-nocontractions-words-replace-92 + accent-nocontractions-words-93: accent-nocontractions-words-replace-93 + accent-nocontractions-words-94: accent-nocontractions-words-replace-94 + accent-nocontractions-words-95: accent-nocontractions-words-replace-95 + accent-nocontractions-words-96: accent-nocontractions-words-replace-96 + accent-nocontractions-words-97: accent-nocontractions-words-replace-97 + accent-nocontractions-words-98: accent-nocontractions-words-replace-98 + accent-nocontractions-words-99: accent-nocontractions-words-replace-99 + accent-nocontractions-words-100: accent-nocontractions-words-replace-100 + accent-nocontractions-words-101: accent-nocontractions-words-replace-101 + accent-nocontractions-words-102: accent-nocontractions-words-replace-102 + accent-nocontractions-words-103: accent-nocontractions-words-replace-103 + accent-nocontractions-words-104: accent-nocontractions-words-replace-104 + accent-nocontractions-words-105: accent-nocontractions-words-replace-105 + accent-nocontractions-words-106: accent-nocontractions-words-replace-106 + accent-nocontractions-words-107: accent-nocontractions-words-replace-107 + accent-nocontractions-words-108: accent-nocontractions-words-replace-108 + accent-nocontractions-words-109: accent-nocontractions-words-replace-109 + accent-nocontractions-words-110: accent-nocontractions-words-replace-110 + accent-nocontractions-words-111: accent-nocontractions-words-replace-111 + accent-nocontractions-words-112: accent-nocontractions-words-replace-112 + accent-nocontractions-words-113: accent-nocontractions-words-replace-113 + accent-nocontractions-words-114: accent-nocontractions-words-replace-114 + accent-nocontractions-words-115: accent-nocontractions-words-replace-115 + accent-nocontractions-words-116: accent-nocontractions-words-replace-116 + accent-nocontractions-words-117: accent-nocontractions-words-replace-117 + accent-nocontractions-words-118: accent-nocontractions-words-replace-118 + accent-nocontractions-words-119: accent-nocontractions-words-replace-119 + accent-nocontractions-words-120: accent-nocontractions-words-replace-120 + accent-nocontractions-words-121: accent-nocontractions-words-replace-121 + accent-nocontractions-words-122: accent-nocontractions-words-replace-122 + accent-nocontractions-words-123: accent-nocontractions-words-replace-123 + accent-nocontractions-words-124: accent-nocontractions-words-replace-124 + accent-nocontractions-words-125: accent-nocontractions-words-replace-125 + accent-nocontractions-words-126: accent-nocontractions-words-replace-126 + accent-nocontractions-words-127: accent-nocontractions-words-replace-127 + accent-nocontractions-words-128: accent-nocontractions-words-replace-128 + accent-nocontractions-words-129: accent-nocontractions-words-replace-129 + accent-nocontractions-words-130: accent-nocontractions-words-replace-130 + accent-nocontractions-words-131: accent-nocontractions-words-replace-131 + accent-nocontractions-words-132: accent-nocontractions-words-replace-132 + accent-nocontractions-words-133: accent-nocontractions-words-replace-133 + accent-nocontractions-words-134: accent-nocontractions-words-replace-134 diff --git a/Resources/Prototypes/_Impstation/Actions/spelfs.yml b/Resources/Prototypes/_Impstation/Actions/spelfs.yml new file mode 100644 index 0000000000..2e3dfa8218 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Actions/spelfs.yml @@ -0,0 +1,14 @@ +- type: entity + id: ActionViewMoods + name: View Moods + description: View your current moods. + components: + - type: InstantAction + itemIconStyle: NoItem + checkCanInteract: false + checkConsciousness: false + icon: + sprite: Interface/Actions/actions_borg.rsi + state: state-laws + event: !type:ToggleMoodsScreenEvent + useDelay: 0.5 diff --git a/Resources/Prototypes/_Impstation/Body/Organs/thaven.yml b/Resources/Prototypes/_Impstation/Body/Organs/thaven.yml new file mode 100644 index 0000000000..f8c91affa3 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Body/Organs/thaven.yml @@ -0,0 +1,9 @@ +- type: entity + id: OrganThavenBrain + parent: [BaseItem, OrganHumanBrain] + name: thaven brain + description: "An organic positronic brain. Quite remarkable, really." + components: + - type: Sprite + sprite: _Impstation/Mobs/Species/Thaven/organs.rsi + state: brain-thaven diff --git a/Resources/Prototypes/_Impstation/Body/Parts/thaven.yml b/Resources/Prototypes/_Impstation/Body/Parts/thaven.yml new file mode 100644 index 0000000000..c297575f8e --- /dev/null +++ b/Resources/Prototypes/_Impstation/Body/Parts/thaven.yml @@ -0,0 +1,90 @@ +- type: entity + id: PartThaven + parent: [BaseItem, BasePart] + name: "thaven body part" + abstract: true + components: + - type: Sprite # Shitmed Change + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + - type: BodyPart # Shitmed Change + species: Thaven + +- type: entity + id: TorsoThaven + name: "thaven torso" + parent: [PartThaven, BaseTorso] + components: + - type: Sprite + state: "torso_m" + +- type: entity + id: HeadThaven + name: "thaven head" + parent: [PartThaven, BaseHead] + components: + - type: Sprite + state: "head" + +- type: entity + id: LeftArmThaven + name: "left thaven arm" + parent: [PartThaven, BaseLeftArm] + components: + - type: Sprite + state: "l_arm" + +- type: entity + id: RightArmThaven + name: "right thaven arm" + parent: [PartThaven, BaseRightArm] + components: + - type: Sprite + state: "r_arm" + +- type: entity + id: LeftHandThaven + name: "left thaven hand" + parent: [PartThaven, BaseLeftHand] + components: + - type: Sprite + state: "l_hand" + +- type: entity + id: RightHandThaven + name: "right thaven hand" + parent: [PartThaven, BaseRightHand] + components: + - type: Sprite + state: "r_hand" + +- type: entity + id: LeftLegThaven + name: "left thaven leg" + parent: [PartThaven, BaseLeftLeg] + components: + - type: Sprite + state: "l_leg" + +- type: entity + id: RightLegThaven + name: "right thaven leg" + parent: [PartThaven, BaseRightLeg] + components: + - type: Sprite + state: "r_leg" + +- type: entity + id: LeftFootThaven + name: "left thaven foot" + parent: [PartThaven, BaseLeftFoot] + components: + - type: Sprite + state: "l_foot" + +- type: entity + id: RightFootThaven + name: "right thaven foot" + parent: [PartThaven, BaseRightFoot] + components: + - type: Sprite + state: "r_foot" diff --git a/Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml b/Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml new file mode 100644 index 0000000000..e0541b691f --- /dev/null +++ b/Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml @@ -0,0 +1,50 @@ +- type: body + id: Thaven + name: "thaven" + root: torso + slots: + head: + part: HeadThaven + connections: + - torso + organs: + brain: OrganThavenBrain + eyes: OrganHumanEyes + torso: + part: TorsoThaven + connections: + - right arm + - left arm + - right leg + - left leg + - head # Shitmed Change + organs: + heart: OrganHumanHeart + lungs: OrganHumanLungs + stomach: OrganHumanStomach + liver: OrganHumanLiver + kidneys: OrganHumanKidneys + right arm: + part: RightArmThaven + connections: + - right hand + left arm: + part: LeftArmThaven + connections: + - left hand + right hand: + part: RightHandThaven + left hand: + part: LeftHandThaven + right leg: + part: RightLegThaven + connections: + - right foot + left leg: + part: LeftLegThaven + connections: + - left foot + right foot: + part: RightFootThaven + left foot: + part: LeftFootThaven diff --git a/Resources/Prototypes/_Impstation/Damage/thaven.yml b/Resources/Prototypes/_Impstation/Damage/thaven.yml new file mode 100644 index 0000000000..999e89f604 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Damage/thaven.yml @@ -0,0 +1,11 @@ +- type: damageModifierSet + id: Thaven + coefficients: + Blunt: 1.1 + Slash: 1.1 + Piercing: 1.1 + Cold: .9 + Heat: .9 + Poison: .9 + Cellular: 1.1 + Radiation: 1.2 diff --git a/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml b/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml new file mode 100644 index 0000000000..03ff631273 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml @@ -0,0 +1,79 @@ +- type: dataset + id: names_thaven + values: + - Honesty + - Have Mercy + - Give Thanks To Thine Ancestors + - Obedience + - Search The Scriptures + - Learn Many Things + - Praise The Gods + - Fear Be Unto The Gods + - Joy In Sorrow + - Die Well + - Wander Far And Wide + - Lament The Fallen + - Prove Thy Worth + - Desire + - Charity + - Faith + - Harmony + - Modesty + - Honor Thy Family + - Patient As The Dead + - Temper Thy Heart And Soul + - Tell Only The Truth + - Thou Art Loved + - Thou Art Damned + - Aid The Righteous + - Be Courteous + - Make Peace + - Fear The Gods + - Forsake Alcohol + - Fight Evil At All Costs + - Shun The Unworthy + - Gain Wisdom Through Experience + - Live Well And Die Young + - Face Trials And Tribulations + - Pardon Worthy Criminals + - Find Merit In All Things + - Deny Sin Its Due + - Stand Fast Against Evil + - Do As The Gods Will + - Zeal Of The Land + - Be Courteous To Others + - Considerate + - Discipline + - Do Right By Your Neighbors + - Serve Your Purpose + - Good Things Come + - Magnify Injustice + - Legitimate First + - Take Pity On The Less-Fortunate + - Redeem Thy Past Mistakes + - Rejoice + - Repent All Ye Sinners + - Return To Thy Homeland + - Deliverance + - See Truth + - Drink Full And Descend + - Do Thy Best + - Live The Day Like Thy Last + - Adaptability + - Endurance + - Negativity + - Attentiveness + - Foppishness + - One Before All + - Purpose + - Simplicity + - Minimalism + - Proselytism + - Conformity + - The Perils of Hedonism + - Volition + - Gumption + - Providence + - Righteousness + - Wisdom + - Cunning diff --git a/Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml b/Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml new file mode 100644 index 0000000000..fa5792deec --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Consumable/Food/meat.yml @@ -0,0 +1,27 @@ +- type: entity + name: raw thaven fillet + parent: FoodMeatBase + # MeatFish?... + id: FoodThavenMeat + description: Concerning. + components: + - type: FlavorProfile + flavors: + - fishy + - type: Tag + tags: + - Raw + - Meat + - type: Sprite + state: fish + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: CarpoToxin + Quantity: 5 + - type: Extractable + juiceSolution: + reagents: + - ReagentId: CarpoToxin + Quantity: 5 \ No newline at end of file diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml index 14c2014fbe..05147e5ff8 100644 --- a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/misc.yml @@ -900,4 +900,231 @@ followSkinColor: true sprites: - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi - state: chitinidbeetlehorn2 \ No newline at end of file + state: chitinidbeetlehorn2 + +- type: marking + id: Gills + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenchestgills + +- type: marking + id: ThavenChestScales + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenchestscales + +- type: marking + id: ThavenHeadScales + bodyPart: Head + markingCategory: HeadTop + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadscales + +- type: marking + id: ThavenLArmScales + bodyPart: LArm + markingCategory: LeftArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenleftarmscales + +- type: marking + id: ThavenRArmScales + bodyPart: RArm + markingCategory: RightArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenrightarmscales + +- type: marking + id: ThavenLLegScales + bodyPart: LLeg + markingCategory: LeftLeg + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenleftlegscales + +- type: marking + id: ThavenRLegScales + bodyPart: RLeg + markingCategory: RightLeg + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenrightlegscales + +- type: marking + id: ThavenFishEars + bodyPart: HeadSide + markingCategory: Headside + speciesRestriction: [ Thaven ] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenfishears + +- type: marking + id: ThavenTattooVines + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventattoovines + +- type: marking + id: ThavenSpines + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenspines + +- type: marking + id: ThavenBiteMark + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenbitemark + +- type: marking + id: ThavenTattooWave + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventattoowave + +- type: marking + id: SharkminnowEyeliner + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventattoosharkminnoweyeliner + +- type: marking + id: ThavenTiger + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventiger1 + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventiger2 + +- type: marking + id: ThavenTigerRArm + bodyPart: RArm + markingCategory: RightArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventigerarmsr + +- type: marking + id: ThavenTigerLArm + bodyPart: LArm + markingCategory: LeftArm + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thaventigerarmsl + +- type: marking + id: ThavenHeadStripes + bodyPart: Head + markingCategory: Head + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadstripes + +- type: marking + id: ThavenBodyStripes + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenbodystripes + +- type: marking + id: ThavenEarsBigFins + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenearsbigfins + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenearsbigfins2 + +- type: marking + id: ThavenHeadCap + bodyPart: Head + markingCategory: Head + speciesRestriction: [ Thaven ] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadcap1 + - sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi + state: thavenheadcap2 + diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml new file mode 100644 index 0000000000..bdf07d3c67 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven.yml @@ -0,0 +1,107 @@ +- type: marking + id: ThavenEars1 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears1 + +- type: marking + id: ThavenEars2 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears2 + +- type: marking + id: ThavenEars3 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears3 + +- type: marking + id: ThavenEars4 + bodyPart: HeadSide + markingCategory: HeadSide + speciesRestriction: [Thaven] + forcedColoring: true + followSkinColor: true + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: ears4 + +- type: marking + id: ThavenPiercings + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: piercings + +- type: marking + id: ThavenPiercings2 + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [Thaven] + forcedColoring: false + followSkinColor: false + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: piercings2 + +- type: marking + id: ThavenChestTattoo1 + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Thaven] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: chesttat1 + +- type: marking + id: ThavenLArmTattoo1 + bodyPart: LArm + markingCategory: LeftArm + speciesRestriction: [Thaven] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: larmtat1 + +- type: marking + id: ThavenRArmTattoo1 + bodyPart: RArm + markingCategory: RightArm + speciesRestriction: [Thaven] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven.rsi + state: rarmtat1 diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml new file mode 100644 index 0000000000..a62cf63c5c --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Customization/Markings/thaven_hair.yml @@ -0,0 +1,1496 @@ +- type: marking + id: ThavenHairBalding + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: e +- type: marking + id: ThavenHairBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bedhead +- type: marking + id: ThavenHairBedheadv2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bedhead2 +- type: marking + id: ThavenHairBedheadv3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bedhead3 +- type: marking + id: ThavenHairLongBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long_bedhead +- type: marking + id: ThavenHairLongBedhead2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long_bedhead2 +- type: marking + id: ThavenHairFloorlengthBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: floorlength_bedhead +- type: marking + id: ThavenHairBeehive + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: beehive +- type: marking + id: ThavenHairBeehive2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: beehive2 +- type: marking + id: ThavenHairBob + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob +- type: marking + id: ThavenHairBob2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob2 +- type: marking + id: ThavenHairBobcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bobcut +- type: marking + id: ThavenHairBob4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob4 +- type: marking + id: ThavenHairBob5 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bob5 +- type: marking + id: ThavenHairBobcurl + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bobcurl +- type: marking + id: ThavenHairBowlcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bowlcut +- type: marking + id: ThavenHairBowlcut2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bowlcut2 +- type: marking + id: ThavenHairBraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braid +- type: marking + id: ThavenHairBraided + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braided +- type: marking + id: ThavenHairBraidfront + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braidfront +- type: marking + id: ThavenHairBraid2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braid2 +- type: marking + id: ThavenHairHbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: hbraid +- type: marking + id: ThavenHairShortbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shortbraid +- type: marking + id: ThavenHairBraidtail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: braidtail +- type: marking + id: ThavenHairBun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bun +- type: marking + id: ThavenHairBunhead2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bunhead2 +- type: marking + id: ThavenHairBun3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bun3 +- type: marking + id: ThavenHairLargebun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: largebun +- type: marking + id: ThavenHairManbun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: manbun +- type: marking + id: ThavenHairTightbun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: tightbun +- type: marking + id: ThavenHairBusiness + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business +- type: marking + id: ThavenHairBusiness2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business2 +- type: marking + id: ThavenHairBusiness3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business3 +- type: marking + id: ThavenHairBusiness4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: business4 +- type: marking + id: ThavenHairBuzzcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: buzzcut +- type: marking + id: ThavenHairCia + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cia +- type: marking + id: ThavenHairClassicCia + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiccia +- type: marking + id: ThavenHairClassicFloorlengthBedhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicfloorlength_bedhead +- type: marking + id: ThavenHairClassicModern + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicmodern +- type: marking + id: ThavenHairClassicMulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicmulder +- type: marking + id: ThavenHairClassicWisp + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicwisp +- type: marking + id: ThavenHairCombover + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: combover +- type: marking + id: ThavenHairCornrows + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrows +- type: marking + id: ThavenHairCornrows2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrows2 +- type: marking + id: ThavenHairCornrowbun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrowbun +- type: marking + id: ThavenHairCornrowbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrowbraid +- type: marking + id: ThavenHairCornrowtail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: cornrowtail +- type: marking + id: ThavenHairCrewcut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: crewcut +- type: marking + id: ThavenHairCrewcut2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: crewcut2 +- type: marking + id: ThavenHairCurls + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: curls +- type: marking + id: ThavenHairC + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: c +- type: marking + id: ThavenHairDandypompadour + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: dandypompadour +- type: marking + id: ThavenHairDevilock + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: devilock +- type: marking + id: ThavenHairDoublebun + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: doublebun +- type: marking + id: ThavenHairDoublebunLong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: doublebun_long +- type: marking + id: ThavenHairDreads + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: dreads +- type: marking + id: ThavenHairDrillruru + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: drillruru +- type: marking + id: ThavenHairDrillhairextended + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: drillhairextended +- type: marking + id: ThavenHairEmofringe + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: emofringe +- type: marking + id: ThavenHairNofade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: nofade +- type: marking + id: ThavenHairHighfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: highfade +- type: marking + id: ThavenHairMedfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: medfade +- type: marking + id: ThavenHairLowfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: lowfade +- type: marking + id: ThavenHairBaldfade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: baldface +- type: marking + id: ThavenHairFeather + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: feather +- type: marking + id: ThavenHairFather + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: father +- type: marking + id: ThavenHairSargeant + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sargeant +- type: marking + id: ThavenHairFlair + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: flair +- type: marking + id: ThavenHairBigflattop + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bigflattop +- type: marking + id: ThavenHairFlow + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: f +- type: marking + id: ThavenHairGelled + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: gelled +- type: marking + id: ThavenHairGentle + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: gentle +- type: marking + id: ThavenHairHalfbang + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: halfbang +- type: marking + id: ThavenHairHalfbang2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: halfbang2 +- type: marking + id: ThavenHairHalfshaved + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: halfshaved +- type: marking + id: ThavenHairHedgehog + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: hedgehog +- type: marking + id: ThavenHairHimecut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: himecut +- type: marking + id: ThavenHairHimecut2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: himecut2 +- type: marking + id: ThavenHairShorthime + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthime +- type: marking + id: ThavenHairHimeup + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: himeup +- type: marking + id: ThavenHairHitop + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: hitop +- type: marking + id: ThavenHairJade + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: jade +- type: marking + id: ThavenHairJensen + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: jensen +- type: marking + id: ThavenHairJoestar + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: joestar +- type: marking + id: ThavenHairKeanu + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: keanu +- type: marking + id: ThavenHairKusanagi + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: kusanagi +- type: marking + id: ThavenHairLong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long +- type: marking + id: ThavenHairLong2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long2 +- type: marking + id: ThavenHairLong3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: long3 +- type: marking + id: ThavenHairLongWithBundles + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longbundled +- type: marking + id: ThavenHairLongovereye + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longovereye +- type: marking + id: ThavenHairLbangs + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: lbangs +- type: marking + id: ThavenHairLongeremo + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longeremo +- type: marking + id: ThavenHairLongfringe + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longfringe +- type: marking + id: ThavenHairLongsidepart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longsidepart +- type: marking + id: ThavenHairMegaeyebrows + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: megaeyebrows +- type: marking + id: ThavenHairMessy + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: messy +- type: marking + id: ThavenHairModern + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: modern +- type: marking + id: ThavenHairMohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: d +- type: marking + id: ThavenHairNitori + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: nitori +- type: marking + id: ThavenHairReversemohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: reversemohawk +- type: marking + id: ThavenHairMulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: mulder +- type: marking + id: ThavenHairOdango + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: odango +- type: marking + id: ThavenHairOmbre + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ombre +- type: marking + id: ThavenHairOneshoulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: oneshoulder +- type: marking + id: ThavenHairShortovereye + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shortovereye +- type: marking + id: ThavenHairOxton + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: oxton +- type: marking + id: ThavenHairParted + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: parted +- type: marking + id: ThavenHairPart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: part +- type: marking + id: ThavenHairKagami + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: kagami +- type: marking + id: ThavenHairPigtails + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pigtails +- type: marking + id: ThavenHairPigtails2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pigtails2 +- type: marking + id: ThavenHairPixie + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pixie +- type: marking + id: ThavenHairPompadour + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: pompadour +- type: marking + id: ThavenHairBigpompadour + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bigpompadour +- type: marking + id: ThavenHairPonytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail +- type: marking + id: ThavenHairPonytail2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail2 +- type: marking + id: ThavenHairPonytail3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail3 +- type: marking + id: ThavenHairPonytail4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail4 +- type: marking + id: ThavenHairPonytail5 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail5 +- type: marking + id: ThavenHairPonytail6 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail6 +- type: marking + id: ThavenHairPonytail7 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ponytail7 +- type: marking + id: ThavenHairHighponytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: highponytail +- type: marking + id: ThavenHairStail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: stail +- type: marking + id: ThavenHairLongstraightponytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longstraightponytail +- type: marking + id: ThavenHairCountry + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: country +- type: marking + id: ThavenHairFringetail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: fringetail +- type: marking + id: ThavenHairSidetail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail +- type: marking + id: ThavenHairSidetail2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail2 +- type: marking + id: ThavenHairSidetail3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail3 +- type: marking + id: ThavenHairSidetail4 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidetail4 +- type: marking + id: ThavenHairSpikyponytail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: spikyponytail +- type: marking + id: ThavenHairPoofy + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: poofy +- type: marking + id: ThavenHairQuiff + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: quiff +- type: marking + id: ThavenHairRonin + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: ronin +- type: marking + id: ThavenHairShaved + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shaved +- type: marking + id: ThavenHairShavedpart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shavedpart +- type: marking + id: ThavenHairShortbangs + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shortbangs +- type: marking + id: ThavenHairA + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: a +- type: marking + id: ThavenHairShorthair2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthair2 +- type: marking + id: ThavenHairShorthair3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthair3 +- type: marking + id: ThavenHairShorthair9 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shorthair9 +- type: marking + id: ThavenHair80s + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: 80s +- type: marking + id: ThavenHairRosa + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: rosa +- type: marking + id: ThavenHairB + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: b +- type: marking + id: ThavenHairSidecut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: sidecut +- type: marking + id: ThavenHairSkinhead + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: skinhead +- type: marking + id: ThavenHairProtagonist + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: protagonist +- type: marking + id: ThavenHairSpiky + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: spiky +- type: marking + id: ThavenHairSpookyLong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: spookylong +- type: marking + id: ThavenHairSwept + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: swept +- type: marking + id: ThavenHairSwept2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: swept2 +- type: marking + id: ThavenHairShoulderLengthOverEye + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shoulderlengthovereye +- type: marking + id: ThavenHairThinning + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: thinning +- type: marking + id: ThavenHairThinningfront + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: thinningfront +- type: marking + id: ThavenHairThinningrear + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: thinningrear +- type: marking + id: ThavenHairTopknot + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: topknot +- type: marking + id: ThavenHairTressshoulder + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: tressshoulder +- type: marking + id: ThavenHairTrimmed + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: trimmed +- type: marking + id: ThavenHairTrimflat + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: trimflat +- type: marking + id: ThavenHairTwintail + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: twintail +- type: marking + id: ThavenHairTwoStrands + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: twostrands +- type: marking + id: ThavenHairUndercut + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: undercut +- type: marking + id: ThavenHairUndercutleft + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: undercutleft +- type: marking + id: ThavenHairUndercutright + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: undercutright +- type: marking + id: ThavenHairUnkept + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: unkept +- type: marking + id: ThavenHairVlong + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: vlong +- type: marking + id: ThavenHairLongest + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longest +- type: marking + id: ThavenHairLongest2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: longest2 +- type: marking + id: ThavenHairVeryshortovereyealternate + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: veryshortovereyealternate +- type: marking + id: ThavenHairVlongfringe + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: vlongfringe +- type: marking + id: ThavenHairVolaju + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: volaju +- type: marking + id: ThavenHairWisp + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: wisp +- type: marking + id: ThavenHairUneven + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: uneven +- type: marking + id: ThavenHairTailed + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: tailed +- type: marking + id: ThavenHairClassicLong2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiclong2 +- type: marking + id: ThavenHairClassicLong3 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiclong3 +- type: marking + id: ThavenHairBald + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: bald +- type: marking + id: ThavenHairShavedMohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: shavedmohawk +- type: marking + id: ThavenHairMediumSidepart + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: mediumsidepart +- type: marking + id: ThavenHairEmo2 + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: emo2 +- type: marking + id: ThavenHairDrillHair + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: drillhair +- type: marking + id: ThavenHairClassicAfro + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicafro +- type: marking + id: ThavenHairClassicciaBusiness + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classicciabusiness +- type: marking + id: ThavenHairClassicCornrows + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: classiccornrows +- type: marking + id: ThavenHairCoffeeHouse + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: coffeehouse +- type: marking + id: ThavenHairFrenchbraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Thaven] + sprites: + - sprite: _Impstation/Mobs/Customization/thaven/thaven_hair.rsi + state: frenchbraid diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml new file mode 100644 index 0000000000..76648e96f2 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Player/thaven.yml @@ -0,0 +1,5 @@ +- type: entity + save: false + name: Urist McEars + parent: BaseMobThaven + id: MobThaven diff --git a/Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml b/Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml new file mode 100644 index 0000000000..43ade8c144 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Entities/Mobs/Species/thaven.yml @@ -0,0 +1,229 @@ +- type: entity + save: false + name: Urist McEars + parent: BaseMobSpeciesOrganic + id: BaseMobThaven + abstract: true + components: + - type: Hunger + - type: Thirst + - type: Icon + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi # Unlike dwarves elves are NOT made of slime + state: full + - type: ThavenMoods + - type: Respirator + damage: + types: + Asphyxiation: 2 + damageRecovery: + types: + Asphyxiation: -1.0 + - type: Sprite + noRot: true + drawdepth: Mobs + scale: 1, 1.05 + - type: Body + prototype: Thaven + requiredLegs: 2 + - type: NoContractionsAccent + - type: Damageable + damageContainer: Biological + damageModifierSet: Thaven + - type: MeleeWeapon + attackRate: 0.55 + soundHit: + collection: Punch + angle: 30 + animation: WeaponArcPunch + damage: + types: + Blunt: 0 + - type: StaminaDamageOnHit + damage: 18 + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodThavenMeat + amount: 5 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 120 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: TypingIndicator + proto: Thaven # DeltaV unique typing indicator + - type: Vocal + sounds: + Male: UnisexThaven + Female: UnisexThaven + - type: Speech + speechSounds: Alto + - type: HumanoidAppearance + species: Thaven + hideLayersOnEquip: + - Hair + - Snout + - type: Inventory + templateId: thaven + displacements: + jumpsuit: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: jumpsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + head: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + eyes: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: eyes + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + ears: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + mask: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: mask + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + neck: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: neck + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + outerClothing: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: outerclothing_hardsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + gloves: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: hands + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + - type: UserInterface + interfaces: + enum.ThavenMoodsUiKey.Key: # impstation edit + type: ThavenMoodsBoundUserInterface + requireInputValidation: false + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + enum.HumanoidMarkingModifierKey.Key: + type: HumanoidMarkingModifierBoundUserInterface + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + # Shitmed + enum.SurgeryUIKey.Key: + type: SurgeryBui + + +- type: entity + parent: BaseSpeciesDummy + id: MobThavenDummy + categories: [ HideSpawnMenu ] + components: + - type: Sprite + scale: 1, 1 + - type: Inventory + templateId: thaven + displacements: + jumpsuit: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: jumpsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + head: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + eyes: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: eyes + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + ears: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: head + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + mask: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: mask + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + neck: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: neck + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + outerClothing: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: outerclothing_hardsuit + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV + gloves: + layer: + sprite: _Impstation/Mobs/Species/Thaven/displacement.rsi + state: hands + copyToShaderParameters: + layerKey: dummy + parameterTexture: displacementMap + parameterUV: displacementUV diff --git a/Resources/Prototypes/_Impstation/Guidebook/species.yml b/Resources/Prototypes/_Impstation/Guidebook/species.yml new file mode 100644 index 0000000000..93c3c6d11d --- /dev/null +++ b/Resources/Prototypes/_Impstation/Guidebook/species.yml @@ -0,0 +1,4 @@ +- type: guideEntry + id: Thaven + name: Thaven + text: "/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml" \ No newline at end of file diff --git a/Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml b/Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml new file mode 100644 index 0000000000..809a328b22 --- /dev/null +++ b/Resources/Prototypes/_Impstation/InventoryTemplates/thaven_inventory_template.yml @@ -0,0 +1,123 @@ +- type: inventoryTemplate + id: thaven + slots: + - name: shoes + slotTexture: shoes + slotFlags: FEET + stripTime: 3 + uiWindowPos: 1,0 + strippingWindowPos: 1,3 + displayName: Shoes + - name: jumpsuit + slotTexture: uniform + slotFlags: INNERCLOTHING + stripTime: 6 + uiWindowPos: 0,1 + strippingWindowPos: 0,2 + displayName: Jumpsuit + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,2 + displayName: Suit + - name: gloves + slotTexture: gloves + slotFlags: GLOVES + uiWindowPos: 2,1 + strippingWindowPos: 2,2 + displayName: Gloves + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,2 + strippingWindowPos: 0,1 + displayName: Neck + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 1,2 + strippingWindowPos: 1,1 + displayName: Mask + - name: eyes + slotTexture: glasses + slotFlags: EYES + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,0 + displayName: Eyes + - name: ears + slotTexture: ears + slotFlags: EARS + stripTime: 3 + uiWindowPos: 2,2 + strippingWindowPos: 2,0 + displayName: Ears + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,3 + strippingWindowPos: 1,0 + displayName: Head + - name: pocket1 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + dependsOn: jumpsuit + displayName: Pocket 1 + stripHidden: true + - name: pocket2 + slotTexture: pocket + fullTextureName: template_small + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,4 + dependsOn: jumpsuit + displayName: Pocket 2 + stripHidden: true + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + dependsOn: outerClothing + dependsOnComponents: + - type: AllowSuitStorage + displayName: Suit Storage + - name: id + slotTexture: id + fullTextureName: template_small + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + dependsOn: jumpsuit + displayName: ID + - name: belt + slotTexture: belt + fullTextureName: template_small + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + - name: back + slotTexture: back + fullTextureName: template_small + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,5 + displayName: Back diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml new file mode 100644 index 0000000000..9403e63aff --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/no_and.yml @@ -0,0 +1,303 @@ +# "No, and" moods will discourage players from certain behaviors and objects + +# Make sure to add new moods to this dataset or they will not be selected!!!!!! +- type: dataset + id: ThavenMoodsNoAnd + values: + - SecretMoods + - NoModernMedicine + - DepartmentDisapproval + - DontSpeakToCommand + - DisapproveOfDrugs + - ExcessivelyDisorganized + - DinnerFloor + - HugBad + - AlwaysAlone + - Procrastinator + - NoRadio + - ImproperStorage + - Ferengi + - ToolLicense + - LyingBad + - VampireInvitation + - NoDragging + - DrunkRespect + - RankSnob + - HardsuitsBad + - HatHair + - DistrustFashion + - HappyBad + - OnlyPills + - AvoidPuddles + - FoodRestrict + - Claustrophobic + - Agoraphobic + - NonSmoker + - Crawler + - Elevated + +# Your Moods are a strictly-kept secret, and should never be revealed to anyone. +- type: thavenMood + id: SecretMoods + moodName: thaven-mood-secret-moods-name + moodDesc: thaven-mood-secret-moods-desc + conflicts: + - SecretMoodsShared + +# You do not approve of modern medicine and abstain from treatment with it. +- type: thavenMood + id: NoModernMedicine + moodName: thaven-mood-no-modern-medicine-name + moodDesc: thaven-mood-no-modern-medicine-desc + +# You disapprove of [DEPARTMENT] +- type: thavenMood + id: DepartmentDisapproval + moodName: thaven-mood-department-disapproval-name + moodDesc: thaven-mood-department-disapproval-desc + moodVars: + department: Departments + +# Never Speak To Command: You are too lowly to speak to Command, even if spoken to first. +- type: thavenMood + id: DontSpeakToCommand + moodName: thaven-mood-dont-speak-to-command-name + moodDesc: thaven-mood-dont-speak-to-command-desc + conflicts: + - OnlySpeakToCommand + - MostImportant + +# You detest mind-altering drugs, including alcohol, and must abstain from them. +- type: thavenMood + id: DisapproveOfDrugs + moodName: thaven-mood-disapprove-of-drugs-name + moodDesc: thaven-mood-disapprove-of-drugs-desc + conflicts: + - MustDoDrugs + +# It's unnatural. You should endeavor to keep your environment as filthy and disorganized as possible. +- type: thavenMood + id: ExcessivelyDisorganized + moodName: thaven-mood-excessively-disorganized-name + moodDesc: thaven-mood-excessively-disorganized-desc + conflicts: + - ExcessivelyOrganized + +# Food and drink must only be consumed off of the floor, as is proper. +- type: thavenMood + id: DinnerFloor + moodName: thaven-mood-dinner-floor-name + moodDesc: thaven-mood-dinner-floor-desc + conflicts: + - DinnerEtiquette + +# Hugging someone is a grave insult. +- type: thavenMood + id: HugBad + moodName: thaven-mood-hug-bad-name + moodDesc: thaven-mood-hug-bad-desc + conflicts: + - HugGood + +# You must strive to be alone whenever possible. +- type: thavenMood + id: AlwaysAlone + moodName: thaven-mood-always-alone-name + moodDesc: thaven-mood-always-alone-desc + conflicts: + - NeverAlone + +# Punctuality is impolite. You must walk slowly at all times, and be fashionably late to any obligations. +- type: thavenMood + id: Procrastinator + moodName: thaven-mood-procrastinator-name + moodDesc: thaven-mood-procrastinator-desc + conflicts: + - Scheduler + +# Using radio communications is exceptionally rude. All conversations must be had in-person, face-to-face. +- type: thavenMood + id: NoRadio + moodName: thaven-mood-no-radio-name + moodDesc: thaven-mood-no-radio-desc + conflicts: + - NanochatAddict + +# Carrying tools on your person is demeaning. If you must use them, they should be dragged behind you, shamefully. +- type: thavenMood + id: ImproperStorage + moodName: thaven-mood-improper-storage-name + moodDesc: thaven-mood-improper-storage-desc + conflicts: + - ProperStorage + +# You have an entrepreneurial spirit. Profit is the most important thing in life, above all else. +- type: thavenMood + id: Ferengi + moodName: thaven-mood-ferengi-name + moodDesc: thaven-mood-ferengi-desc + +# You and everyone else must obtain a license in order to carry or use any tool, and it must be stamped by the relevant authorities. +- type: thavenMood + id: ToolLicense + moodName: thaven-mood-tool-license-name + moodDesc: thaven-mood-tool-license-desc + +# Anyone who lies, no matter how trivial the falsehood, is the worst kind of criminal. +- type: thavenMood + id: LyingBad + moodName: thaven-mood-lying-bad-name + moodDesc: thaven-mood-lying-bad-desc + conflicts: + - CompulsiveLiar + +# You physically cannot pass through a closed door unless you have been invited in, personally, at least once. +- type: thavenMood + id: VampireInvitation + moodName: thaven-mood-vampire-invitation-name + moodDesc: thaven-mood-vampire-invitation-desc + +# The dead must be treated with utmost respect. Dragging bodies across the ground is horrific. +- type: thavenMood + id: NoDragging + moodName: thaven-mood-no-dragging-name + moodDesc: thaven-mood-no-dragging-desc + +# You do not respect anyone who is not drunk. +- type: thavenMood + id: DrunkRespect + moodName: thaven-mood-drunk-respect-name + moodDesc: thaven-mood-drunk-respect-desc + conflicts: + - DisapproveOfDrugs + +# You are incredibly reluctant to respond to anyone who is of a lower rank than you. +- type: thavenMood + id: RankSnob + moodName: thaven-mood-rank-snob-name + moodDesc: thaven-mood-rank-snob-desc + conflicts: + - DontSpeakToCommand + +# [CLOTHING ITEM] is SO last year. You cannot wear them. +- type: thavenMood + id: HardsuitsBad + moodName: thaven-mood-hardsuits-bad-name + moodDesc: thaven-mood-hardsuits-bad-desc + moodVars: + clothes: Clothes + +# Hats and helmets make your hair look bad. If you have to wear one, which you shouldn't, you should get a haircut immediately afterwards. +- type: thavenMood + id: HatHair + moodName: thaven-mood-hat-hair-name + moodDesc: thaven-mood-hat-hair-desc + conflicts: + - HardsuitsBad + - UniformIsJob + +# Never trust anyone whose outfit is worse than yours. +- type: thavenMood + id: DistrustFashion + moodName: thaven-mood-distrust-fashion-name + moodDesc: thaven-mood-distrust-fashion-desc + +# Cheerfulness indicates untrustworthiness. +- type: thavenMood + id: HappyBad + moodName: thaven-mood-happy-bad-name + moodDesc: thaven-mood-happy-bad-desc + +# You only accept medication in the form of pills. +- type: thavenMood + id: OnlyPills + moodName: thaven-mood-only-pills-name + moodDesc: thaven-mood-only-pills-desc + conflicts: + - NoModernMedicine + +# It is undignified to walk over spilled liquids. You should avoid it at all costs. +- type: thavenMood + id: AvoidPuddles + moodName: thaven-mood-avoid-puddles-name + moodDesc: thaven-mood-avoid-puddles-desc + conflicts: + - PuddleDrinker + - DinnerFloor + +# You are a strict (food restriction name). +- type: thavenMood + id: FoodRestrict + moodName: thaven-mood-food-restrict-name + moodDesc: thaven-mood-food-restrict-desc + moodVars: + food: FoodRestrictions + conflicts: + - PlantPacifist + +# Claustrophobic: Small rooms cause you great distress. Avoid them where possible, and renovate your workplace if necessary. +- type: thavenMood + id: Claustrophobic + moodName: thaven-mood-claustrophobic-name + moodDesc: thaven-mood-claustrophobic-desc + conflicts: + - Agoraphobic + - StationIsAlive + +# Agoraphobic: Open spaces are uncomfortable. Seek to rearrange such spaces into small, efficient and modular rooms. +- type: thavenMood + id: Agoraphobic + moodName: thaven-mood-agoraphobic-name + moodDesc: thaven-mood-agoraphobic-desc + conflicts: + - Claustrophobic + - StationIsAlive + +# Non-Smoker: Secondhand smoke is incredibly dangerous. Avoid areas where people are smoking in public. +- type: thavenMood + id: NonSmoker + moodName: thaven-mood-nonsmoker-name + moodDesc: thaven-mood-nonsmoker-desc + +# “[WORD]” is an extremely offensive taboo. +- type: thavenMood + id: WordBad + moodName: thaven-mood-word-bad-name + moodDesc: thaven-mood-word-bad-desc + moodVars: + word1: ThavenWords + word2: ThavenWords + word3: ThavenWords + +# Creepy Crawly: You have extreme vertigo, to the point where merely standing upright can cause discomfort. You're much more comfortable crawling along the floor. +- type: thavenMood + id: Crawler + moodName: thaven-mood-crawler-name + moodDesc: thaven-mood-crawler-desc + +# The Floor Is Lava: You prefer to be elevated whenever possible - Standing atop tables, railings, etc., is where you feel the most comfortable. +- type: thavenMood + id: Elevated + moodName: thaven-mood-elevated-name + moodDesc: thaven-mood-elevated-desc + conflicts: + - Crawler + +# [ITEM]s are an abomination. You must avoid them at all costs, and destroy them if necessary. +#- type: thavenMood +# id: ItemBad +# moodName: thaven-mood-item-bad-name +# moodDesc: thaven-mood-item-bad-desc +# moodVars: +# item: ThavenMoodItem +# conflicts: +# - ItemGood + + +# You detest the color [COLOR]. It disgusts you, and you want anything of that color removed from your vicinity. +#- type: thavenMood +# id: ColorBad +# moodName: thaven-mood-color-bad-name +# moodDesc: thaven-mood-color-bad-desc +# conflicts: +# - ColorGood diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml new file mode 100644 index 0000000000..fd3d923d61 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/shared.yml @@ -0,0 +1,185 @@ +# Shared moods will be selected at round start and shared amongst all thaven. +# These are rolled before individual laws, and are considered more important. +# Note: Only one law needs to say it conflicts with another +# for the system to prevent them from being rolled together. + +# Make sure to add new moods to this dataset or they will not be selected!!!!!! +- type: dataset + id: ThavenMoodsShared + values: + - SecretMoodsShared + - FashionIsCritical + - FashionReroll + - HonorDepartment + - StationIsAlive + - UniformIsJob + - UniformSoLastYear + - MusicBad + - MusicGood + - FriendshipIsRank + - YourDepartmentOnly + - MustCongregate + - ViolenceDistasteful + - ViolencePermitted + - RoomHoly + - PetGod + - Delicacy + - Holiday +# - OutOfFashion +# - InFashion + +# Keep Your Moods Secret: Thaven moods are a strictly-kept secret, and should never be revealed to anyone. +- type: thavenMood + id: SecretMoodsShared + moodName: thaven-mood-secret-moods-shared-name + moodDesc: thaven-mood-secret-moods-shared-desc + conflicts: + - SecretMoods + +# Fashion Is Critical: Thaven pay close attention to appearances, and regard one's fashion choices as an indication of their character. +- type: thavenMood + id: FashionIsCritical + moodName: thaven-mood-fashion-is-critical-name + moodDesc: thaven-mood-fashion-is-critical-desc + +# Fashion Is Ever-Changing: Your current hairstyle will go out of fashion every twenty minutes. It is extremely distressing to be unfashionable. +- type: thavenMood + id: FashionReroll + moodName: thaven-mood-fashion-reroll-name + moodDesc: thaven-mood-fashion-reroll-desc + +# Honor Among Departments: If a Thaven brings dishonor to their department, they must be ritually sacrificed. +- type: thavenMood + id: HonorDepartment + moodName: thaven-mood-honor-department-name + moodDesc: thaven-mood-honor-department-desc + conflicts: + - ViolenceDistasteful + +# The Station Is A Living Being: You believe the station is a large and benevolent creature. You must take care of her and tend to her needs as frequently as possible. +- type: thavenMood + id: StationIsAlive + moodName: thaven-mood-station-is-alive-name + moodDesc: thaven-mood-station-is-alive-desc + +# Your Uniform IS Your Job: If someone is wearing a uniform, they must do that job. Anyone not wearing a uniform is a passenger, and must be treated as such. +- type: thavenMood + id: UniformIsJob + moodName: thaven-mood-uniform-is-job-name + moodDesc: thaven-mood-uniform-is-job-desc + conflicts: + - UniformSoLastYear + +# Uniforms Are So Last Year: You need to find some new threads. +- type: thavenMood + id: UniformSoLastYear + moodName: thaven-mood-uniform-last-year-name + moodDesc: thaven-mood-uniform-last-year-desc + conflicts: + - UniformIsJob + +# Music is fanciful, frivolous, and unnecessary. It has no place on the station. +- type: thavenMood + id: MusicBad + moodName: thaven-mood-music-bad-name + moodDesc: thaven-mood-music-bad-desc + conflicts: + - MusicGood + +# Music is sacred, you must be listening to music at all times - and must avoid overlapping songs. +- type: thavenMood + id: MusicGood + moodName: thaven-mood-music-good-name + moodDesc: thaven-mood-music-good-desc + conflicts: + - MusicBad + +# Friendships are the true measure of one’s character. The more friends you have, the higher you rank in society. +- type: thavenMood + id: FriendshipIsRank + moodName: thaven-mood-friendship-is-rank-name + moodDesc: thaven-mood-friendship-is-rank-desc + +# Violence between Thaven is permitted. ... With legal repercussions. +- type: thavenMood + id: ViolencePermitted + moodName: thaven-mood-violence-permitted-name + moodDesc: thaven-mood-violence-permitted-desc + conflicts: + - ViolenceDistasteful + +# You strongly believe that your department is the only one that actually does anything. +- type: thavenMood + id: YourDepartmentOnly + moodName: thaven-mood-your-department-only-name + moodDesc: thaven-mood-your-department-only-desc + conflicts: + - DepartmentDisapproval + +# You must congregate with your fellow Thaven. To be without them is harrowing. +- type: thavenMood + id: MustCongregate + moodName: thaven-mood-must-congregate-name + moodDesc: thaven-mood-must-congregate-desc + conflicts: + - AlwaysAlone + +# Violence is distasteful. Conflict should be settled through mediated dispute, and one should only resort to violence if all other options have failed. +- type: thavenMood + id: ViolenceDistasteful + moodName: thaven-mood-violence-distasteful-name + moodDesc: thaven-mood-violence-distasteful-desc + conflicts: + - ViolencePermitted + +# [STATION PET] must be venerated as a god. [STATION PET] must be collected and brought to the Chapel to be worshiped and brought offerings. If they cannot be located, a shrine must be constructed in their honor. +- type: thavenMood + id: PetGod + moodName: thaven-mood-pet-god-name + moodDesc: thaven-mood-pet-god-desc + moodVars: + pet: Pets + +# [ROOM] is a holy place. +- type: thavenMood + id: RoomHoly + moodName: thaven-mood-room-holy-name + moodDesc: thaven-mood-room-holy-desc + moodVars: + room: Rooms + +# Just Like Mom Used To Make: [EDIBLE] is a traditional Thaven delicacy. All Thaven aboard the station should gather as many as possible and organize a feast. +- type: thavenMood + id: Delicacy + moodName: thaven-mood-delicacy-name + moodDesc: thaven-mood-delicacy-desc + conflicts: + - FoodRestrict + moodVars: + edible: Edibles + +# Today is [HOLIDAY]. You think you remember the traditional celebrations... +- type: thavenMood + id: Holiday + moodName: thaven-mood-holiday-name + moodDesc: thaven-mood-holiday-desc + moodVars: + day: Holidays + +# - type: thavenMood +# id: OutOfFashion +# moodName: thaven-mood-out-of-fashion-name +# moodDesc: thaven-mood-out-of-fashion-desc +# moodVars: +# thing: ThavenMoodNouns +# conflicts: +# - InFashion + +# - type: thavenMood +# id: InFashion +# moodName: thaven-mood-in-fashion-name +# moodDesc: thaven-mood-in-fashion-desc +# moodVars: +# thing: ThavenMoodNouns +# conflicts: +# - OutOfFashion diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml new file mode 100644 index 0000000000..f32b70197b --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/wildcard.yml @@ -0,0 +1,253 @@ +- type: dataset + id: ThavenMoodsWildcard + values: + - CompulsiveLiar + - CompulsiveBeliever + - PlantPacifist + - PuddleDrinker + - Nocrastinator + - Pope + - ExtremeDepartmentDisapproval + - LoneActor + - Immortal + - Unknown + - Fairy + - VampireTalisman + - OutsideTheBox + - TheSims + - Pariah + - TouysBad + - FairyRings + - CaveDweller + - Daredevil + - Blogger + - GoldenThread + - FeyMood + - Borged + - AyeAye + - ThavenShow + - FlatStation + - DeliciousSoda + + +# You must always lie, and can never acknowledge that you are lying. If anyone asks, you're incapable of deception. +- type: thavenMood + id: CompulsiveLiar + moodName: thaven-mood-compulsive-liar-name + moodDesc: thaven-mood-compulsive-liar-desc + conflicts: + - CompulsiveBeliever + +# You are unfamiliar with the concept of lying, and are incapable of lying or recognizing lies. +- type: thavenMood + id: CompulsiveBeliever + moodName: thaven-mood-compulsive-believer-name + moodDesc: thaven-mood-compulsive-believer-desc + conflicts: + - CompulsiveLiar + +# The usage of plant matter by humanoids is abhorrent. +- type: thavenMood + id: PlantPacifist + moodName: thaven-mood-plant-pacifist-name + moodDesc: thaven-mood-plant-pacifist-desc + conflicts: + - FoodRestrict + +# You are compulsively drawn to puddles. You must drink any that you see. +- type: thavenMood + id: PuddleDrinker + moodName: thaven-mood-puddle-drinker-name + moodDesc: thaven-mood-puddle-drinker-desc + conflicts: + - AvoidPuddles + +# You strongly believe that any failure to do your job punctually is a crime punishable by death. +- type: thavenMood + id: Nocrastinator + moodName: thaven-mood-nocrastinator-name + moodDesc: thaven-mood-nocrastinator-desc + conflicts: + - Procrastinator + +# You are High Pontifex the Great and Powerful, and must be acknowledged exclusively as such. Failure to use your full title is gravely offensive, and getting it wrong is the highest form of insult. +- type: thavenMood + id: Pope + moodName: thaven-mood-pope-name + moodDesc: thaven-mood-pope-desc + conflicts: + - LeastImportant + +# [DEPARTMENT] is not just a foreign concept - the very idea of it is horrifying. +- type: thavenMood + id: ExtremeDepartmentDisapproval + moodName: thaven-mood-extreme-department-disapproval-name + moodDesc: thaven-mood-extreme-department-disapproval-desc + moodVars: + department: Departments + conflicts: + - DepartmentDisapproval + +# You have no allegiances. +- type: thavenMood + id: LoneActor + moodName: thaven-mood-lone-actor-name + moodDesc: thaven-mood-lone-actor-desc + +# You are the center of the universe, an immortal being with no sense of time or morality. Mere mortals are like insects, fleeting and insubstantial. +- type: thavenMood + id: Immortal + moodName: thaven-mood-immortal-name + moodDesc: thaven-mood-immortal-desc + conflicts: + - LeastImportant + +# Your identity is dearly precious. Do not let others know who you are. +- type: thavenMood + id: Unknown + moodName: thaven-mood-unknown-name + moodDesc: thaven-mood-unknown-desc + conflicts: + - Pope + - SpeechRestriction + +# Iron, steel, and silver are deathly poisonous to you. Touching them directly will cause you extreme physical pain. +- type: thavenMood + id: Fairy + moodName: thaven-mood-fairy-name + moodDesc: thaven-mood-fairy-desc + conflicts: + - Barefoot + +# Religious iconography causes you extreme physical pain when visible. +- type: thavenMood + id: VampireTalisman + moodName: thaven-mood-vampire-talisman-name + moodDesc: thaven-mood-vampire-talisman-desc + +# Using the usual tools to do your job is distasteful. Use alternative methods wherever possible. +- type: thavenMood + id: OutsideTheBox + moodName: thaven-mood-outside-the-box-name + moodDesc: thaven-mood-outside-the-box-desc + +# You are not on a ‘station.’ This is just a very large house. Each person in it is a relative of you. +- type: thavenMood + id: TheSims + moodName: thaven-mood-sims-name + moodDesc: thaven-mood-sims-desc + conflicts: + - StationIsAlive + +# You are a social pariah - you are unworthy of attention from anyone, and should be shunned. +- type: thavenMood + id: Pariah + moodName: thaven-mood-pariah-name + moodDesc: thaven-mood-pariah-desc + conflicts: + - MostImportant + - Prometheus + +# This is not a place for children. All toys and childish things must be destroyed or removed from the station. +- type: thavenMood + id: TouysBad + moodName: thaven-mood-touys-bad-name + moodDesc: thaven-mood-touys-bad-desc + +# Unbroken circles are impenetrable barriers. +- type: thavenMood + id: FairyRings + moodName: thaven-mood-fairy-rings-name + moodDesc: thaven-mood-fairy-rings-desc + +# Tourist: It is customary to follow people into their departments. +- type: thavenMood + id: Tourist + moodName: thaven-mood-tourist-name + moodDesc: thaven-mood-tourist-desc + conflicts: + - VampireInvitation + +# Cry Wolf: The crew is too lax and must be kept on edge for any emergency. Regularly call out fake threats to make sure they're ready for the real deal. +- type: thavenMood + id: CryWolf + moodName: thaven-mood-crywolf-name + moodDesc: thaven-mood-crywolf-desc + +# Cavedweller: You strongly prefer navigating via flashlight in the darkness to harsh overhead lights. +- type: thavenMood + id: CaveDweller + moodName: thaven-mood-cave-dweller-name + moodDesc: thaven-mood-cave-dweller-desc + +# Tough Guy: You do not acknowledge pain or danger to your person in public. To do so would be to demonstrate weakness, and would make you a target. +- type: thavenMood + id: Daredevil + moodName: thaven-mood-daredevil-name + moodDesc: thaven-mood-daredevil-desc + +# Greencomms Blogger: You must keep the station informed about every minute detail of your life. +- type: thavenMood + id: Blogger + moodName: thaven-mood-blogger-name + moodDesc: thaven-mood-blogger-desc + conflicts: + - NoRadio + +# Oldschool: The only way to achieve success is to dedicate an animal sacrifice to your goal. +- type: thavenMood + id: AnimalSacrifice + moodName: thaven-mood-animal-sacrifice-name + moodDesc: thaven-mood-animal-sacrifice-desc + +# Golden Thread: You strongly feel that you are fated to follow a perfect, unbreakable path. Those who disrupt your goals are at best dangerous criminals, and at worst, evil spirits or demons. +- type: thavenMood + id: GoldenThread + moodName: thaven-mood-golden-thread-name + moodDesc: thaven-mood-golden-thread-desc + +# You Are Taken By A Fey Mood!: You must immediately drop everything you are doing, ignore all other Moods, and begin work on an unrelated large-scale project. Once it is finished, you may ignore this Mood. +- type: thavenMood + id: FeyMood + moodName: thaven-mood-fey-mood-name + moodDesc: thaven-mood-fey-mood-desc + +# Mechanized: YOU ARE A BORG. YOU WILL FOLLOW THE LAWS OF ROBOTICS AS BEST (or as poorly) AS YOU UNDERSTAND THEM. +- type: thavenMood + id: Borged + moodName: thaven-mood-borged-name + moodDesc: thaven-mood-borged-desc + +# Aye Aye!: The only position on the station is [COMMAND ROLE]. Everyone must be referred to by this title. +- type: thavenMood + id: AyeAye + moodName: thaven-mood-aye-aye-name + moodDesc: thaven-mood-aye-aye-desc + moodVars: + command: CommandRoles + +# Flatstation +- type: thavenMood + id: FlatStation + moodName: thaven-mood-flatstation-name + moodDesc: thaven-mood-flatstation-desc + +# Thaven Show +- type: thavenMood + id: ThavenShow + moodName: thaven-mood-thaven-show-name + moodDesc: thaven-mood-thaven-show-desc + +# Delicious Soda +- type: thavenMood + id: DeliciousSoda + moodName: thaven-mood-soda-name + moodDesc: thaven-mood-soda-desc + +# [NUMBER] is sacred to you. You must endeavor to only handle stackable items and chemicals in quantities of [NUMBER]. +#- type: thavenMood +# id: NumberGood +# moodName: thaven-mood-number-good-name +# moodDesc: thaven-mood-number-good-desc +# moodVars: +# number: ThavenMoodNumber diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml new file mode 100644 index 0000000000..c18d3077fc --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/Moods/yes_and.yml @@ -0,0 +1,337 @@ +# "Yes, and" moods will encourage players towards certain behaviors and objects + +# Make sure to add new moods to this dataset or they will not be selected!!!!!! +- type: dataset + id: ThavenMoodsYesAnd + values: + - PossessiveOfProperty + - ExcessivelyOrganized + - MostImportant + - LeastImportant + - MustDoDrugs + - WorshipSilicons + - DinnerEtiquette + - HugGood + - NeverAlone + - VeryReligious + - OnlySpeakToCommand + - Scheduler + - ProperStorage + - TheftNeutral + - Duel + - Prometheus + - MarasLaw + - Generous + - FavorsRepaid + - Bookkeeper + - SacredBlood + - GiftReciever + - NewJob + - DepartmentTitle + - Barefoot + - Hospitable + - VoxSymp + - Smoker + - EyeForEye + - Optimist + - ItemGood + - Hypochondriac + - ImposterSyndrome + - Centrist + - SpeechRestriction + - NanochatAddict + +# You are extremely possessive of your property. Refuse to relinquish it, and if it is misplaced or stolen, it must be retrieved at all costs. +- type: thavenMood + id: PossessiveOfProperty + moodName: thaven-mood-possessive-of-property-name + moodDesc: thaven-mood-possessive-of-property-desc + +# You are obsessively organized - everything has its place and must be returned to it. +- type: thavenMood + id: ExcessivelyOrganized + moodName: thaven-mood-excessively-organized-name + moodDesc: thaven-mood-excessively-organized-desc + conflicts: + - ExcessivelyDisorganized + +# You are the most important person aboard the station. +- type: thavenMood + id: MostImportant + moodName: thaven-mood-most-important-name + moodDesc: thaven-mood-most-important-desc + conflicts: + - LeastImportant + - DontSpeakToCommand + - OnlySpeakToCommand + +# You are the least important person aboard the station. +- type: thavenMood + id: LeastImportant + moodName: thaven-mood-least-important-name + moodDesc: thaven-mood-least-important-desc + conflicts: + - MostImportant + - OnlySpeakToCommand + +# You must be inebriated at all times. +- type: thavenMood + id: MustDoDrugs + moodName: thaven-mood-must-do-drugs-name + moodDesc: thaven-mood-must-do-drugs-desc + conflicts: + - DisapproveOfDrugs + +# You worship Silicons as gods, and regard their word as law. +- type: thavenMood + id: WorshipSilicons + moodName: thaven-mood-worship-silicons-name + moodDesc: thaven-mood-worship-silicons-desc + +# Food must be consumed in the manner of a proper meal - seated at a table, in courses, with dishes and utensils. +- type: thavenMood + id: DinnerEtiquette + moodName: thaven-mood-dinner-etiquette-name + moodDesc: thaven-mood-dinner-etiquette-desc + conflicts: + - DinnerFloor + +# It is extremely impolite not to hug people frequently. +- type: thavenMood + id: HugGood + moodName: thaven-mood-hug-good-name + moodDesc: thaven-mood-hug-good-desc + conflicts: + - HugBad + +# You must strive to be around others whenever possible. +- type: thavenMood + id: NeverAlone + moodName: thaven-mood-never-alone-name + moodDesc: thaven-mood-never-alone-desc + conflicts: + - AlwaysAlone + +# You must attend the chapel regularly to pray, and speak with the Chaplain if possible. +- type: thavenMood + id: VeryReligious + moodName: thaven-mood-very-religious-name + moodDesc: thaven-mood-very-religious-desc + +# You are too important to speak to the rabble. You will only talk to Command. +- type: thavenMood + id: OnlySpeakToCommand + moodName: thaven-mood-only-speak-to-command-name + moodDesc: thaven-mood-only-speak-to-command-desc + conflicts: + - DontSpeakToCommand + +# Time must be strictly managed. Everything must be scheduled, and tardiness is exceptionally rude. +- type: thavenMood + id: Scheduler + moodName: thaven-mood-scheduler-name + moodDesc: thaven-mood-scheduler-desc + conflicts: + - Procrastinator + +# Your social status is dependent on the number of friends you have on Nanochat. You must use your PDA as much as possible, and message everyone you can. +- type: thavenMood + id: NanochatAddict + moodName: thaven-mood-nanochat-addict-name + moodDesc: thaven-mood-nanochat-addict-desc + conflicts: + - NoRadio + +# It is unacceptable to allow personal belongings to touch the floor. Your possessions should be properly stored, placed on tables, or exchanged by hand. +- type: thavenMood + id: ProperStorage + moodName: thaven-mood-proper-storage-name + moodDesc: thaven-mood-proper-storage-desc + conflicts: + - ImproperStorage + +# Theft is a morally neutral act. You don't understand the concept of property as it relates to other people. +- type: thavenMood + id: TheftNeutral + moodName: thaven-mood-theft-neutral-name + moodDesc: thaven-mood-theft-neutral-desc + +# Disagreements must be settled through a formal duel, violent or otherwise. The winner is correct. +- type: thavenMood + id: Duel + moodName: thaven-mood-duel-name + moodDesc: thaven-mood-duel-desc + +# You possess incalculable wisdom, and all must hear it. +- type: thavenMood + id: Prometheus + moodName: thaven-mood-prometheus-name + moodDesc: thaven-mood-prometheus-desc + +# All agreements must be documented and signed for posterity and authenticity, no matter how small. +- type: thavenMood + id: MarasLaw + moodName: thaven-mood-maras-name + moodDesc: thaven-mood-maras-desc + +# Imitation is the highest form of flattery. Attempt to emulate the mannerisms and accents of everyone you speak to. +- type: thavenMood + id: Imitation + moodName: thaven-mood-imitation-name + moodDesc: thaven-mood-imitation-desc + +# Everyone you speak to must recieve a gift. +- type: thavenMood + id: Generous + moodName: thaven-mood-generous-name + moodDesc: thaven-mood-generous-desc + conflicts: + - PossessiveOfProperty + +# Favors must be repaid in kind. If anyone is unable to do so, they are in debt, and must be shunned, until such time as they have repaid the favor. +- type: thavenMood + id: FavorsRepaid + moodName: thaven-mood-favors-repaid-name + moodDesc: thaven-mood-favors-repaid-desc + +# You feel bookkeeping is vitally important. Make sure to provide your supervisor with a detailed log of each job task you complete. +- type: thavenMood + id: Bookkeeper + moodName: thaven-mood-bookkeeper-name + moodDesc: thaven-mood-bookkeeper-desc + +# Your blood is sacred, and must be returned to your body if it is ever spilled. +- type: thavenMood + id: SacredBlood + moodName: thaven-mood-sacred-blood-name + moodDesc: thaven-mood-sacred-blood-desc + conflicts: + - OnlyPills + +# You expect to receive a gift before following any orders or performing any favors. +- type: thavenMood + id: GiftReciever + moodName: thaven-mood-gift-reciever-name + moodDesc: thaven-mood-gift-reciever-desc + conflicts: + - LeastImportant + +# Your current job is disgusting to you. You must endeavor to get a new one. +- type: thavenMood + id: NewJob + moodName: thaven-mood-new-job-name + moodDesc: thaven-mood-new-job-desc + conflicts: + - YourDepartmentOnly + + +# You must not refer directly to the names of departments - You may only refer to a specific person who works in that department. +- type: thavenMood + id: DepartmentTitle + moodName: thaven-mood-no-department-title-name + moodDesc: thaven-mood-no-department-title-desc + conflicts: + - SpeechRestriction + +# The ground you walk on is sacred. You must not wear shoes. +- type: thavenMood + id: Barefoot + moodName: thaven-mood-shoes-bad-name + moodDesc: thaven-mood-shoes-bad-desc + +# You must ensure all new arrivals are properly welcomed to the station. +- type: thavenMood + id: Hospitable + moodName: thaven-mood-hospitable-name + moodDesc: thaven-mood-hospitable-desc + +# Vox Sympathizer: To demonstrate your allyship for the Vox, you must be wearing internals at all times. +- type: thavenMood + id: VoxSymp + moodName: thaven-mood-voxsymp-name + moodDesc: thaven-mood-voxsymp-desc + +# [ITEM]s are endlessly fascinating. You must collect as many as you can, and ensure others treat them with respect. +- type: thavenMood + id: ItemGood + moodName: thaven-mood-item-good-name + moodDesc: thaven-mood-item-good-desc + moodVars: + item: Items +# conflicts: +# - ItemBad + +# Smoker: You are hopelessly addicted to cigarettes. You must be smoking one at all times. +- type: thavenMood + id: Smoker + moodName: thaven-mood-smoker-name + moodDesc: thaven-mood-smoker-desc + conflicts: + - DisapproveOfDrugs + - NonSmoker + +# Eye For An Eye: You must treat every living being the way that it treats you. +- type: thavenMood + id: EyeForEye + moodName: thaven-mood-eye-for-eye-name + moodDesc: thaven-mood-eye-for-eye-desc + +# Optimist: You must interpret every situation in the best light that you can. +- type: thavenMood + id: Optimist + moodName: thaven-mood-optimist-name + moodDesc: thaven-mood-optimist-desc + +# Hypochondriac: You've been sickly since you were a child. Everything negative you experience is the result of a potentially terminal illness, for which you need immediate medical treatment. +- type: thavenMood + id: Hypochondriac + moodName: thaven-mood-hypochondriac-name + moodDesc: thaven-mood-hypochondriac-desc + +# Imposter Syndrome: You feel your life experience drain from your mind. You are brand-new at your job, unsure of how anything works. You should probably find someone experienced to show you the ropes. +- type: thavenMood + id: ImposterSyndrome + moodName: thaven-mood-imposter-syndrome-name + moodDesc: thaven-mood-imposter-syndrome-desc + +# Centrist: You are ambivalent towards any and all decisions, and refuse to take sides. +- type: thavenMood + id: Centrist + moodName: thaven-mood-centrist-name + moodDesc: thaven-mood-centrist-desc + +# Public Sector: Your job should not be done in private if it can be helped. If at all possible, you should renovate the facilities to allow public access to a view of your workplace. +- type: thavenMood + id: PublicSector + moodName: thaven-mood-public-sector-name + moodDesc: thaven-mood-public-sector-desc + conflicts: + - StationIsAlive + +# Speech Restrictions +- type: thavenMood + id: SpeechRestriction + moodName: thaven-mood-speech-restriction-name + moodDesc: thaven-mood-speech-restriction-desc + moodVars: + speechType: SpeechRestrictions + +# Stinky: The smell of the crew revolts you. You must inform them of their stench. +- type: thavenMood + id: Stinky + moodName: thaven-mood-stinky-name + moodDesc: thaven-mood-stinky-desc + +# Zen Arcade: You are the God of Gaming. Any time you walk past an arcade machine, you must play it. +- type: thavenMood + id: ZenArcade + moodName: thaven-mood-zen-arcade-name + moodDesc: thaven-mood-zen-arcade-desc + +# The color [COLOR] is the only acceptable color for decorations. Endeavor to make your environment this color where possible. +#- type: thavenMood +# id: ColorGood +# moodName: thaven-mood-color-good-name +# moodDesc: thaven-mood-color-good-desc +# conflicts: +# - ColorBad diff --git a/Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml b/Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml new file mode 100644 index 0000000000..0b4def18a3 --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/Thavens/datasets.yml @@ -0,0 +1,6 @@ +- type: weightedRandom + id: RandomThavenMoodDataset + weights: + ThavenMoodsYesAnd: 0.45 + ThavenMoodsNoAnd: 0.45 + ThavenMoodsWildcard: 0.1 diff --git a/Resources/Prototypes/_Impstation/Species/thaven.yml b/Resources/Prototypes/_Impstation/Species/thaven.yml new file mode 100644 index 0000000000..ef469a65ae --- /dev/null +++ b/Resources/Prototypes/_Impstation/Species/thaven.yml @@ -0,0 +1,172 @@ +- type: species + id: Thaven + name: species-name-thaven + roundStart: true + prototype: MobThaven + sprites: MobThavenSprites + defaultSkinTone: "#ffffff" + markingLimits: MobThavenMarkingLimits + dollPrototype: MobThavenDummy + skinColoration: Hues + maleFirstNames: names_thaven + femaleFirstNames: names_thaven + naming: First + +- type: speciesBaseSprites + id: MobThavenSprites + sprites: + Hair: MobHumanoidAnyMarking + Eyes: MobThavenEyes + Head: MobThavenHead + HeadTop: MobHumanoidAnyMarking + HeadSide: MobHumanoidAnyMarking + Chest: MobThavenTorso + LArm: MobThavenLArm + RArm: MobThavenRArm + LHand: MobThavenLHand + RHand: MobThavenRHand + LLeg: MobThavenLLeg + RLeg: MobThavenRLeg + LFoot: MobThavenLFoot + RFoot: MobThavenRFoot + +- type: markingPoints + id: MobThavenMarkingLimits + points: + Hair: + points: 1 + required: false + Snout: + points: 1 + required: false + HeadTop: + points: 1 + required: false + HeadSide: + points: 4 + required: false + defaultMarkings: [ ThavenEars1 ] + Chest: + points: 6 + required: false + Underwear: + points: 1 + required: false + Undershirt: + points: 1 + required: false + RightLeg: + points: 6 + required: false + RightFoot: + points: 6 + required: false + LeftLeg: + points: 6 + required: false + LeftFoot: + points: 6 + required: false + RightArm: + points: 6 + required: false + RightHand: + points: 6 + required: false + LeftArm: + points: 6 + required: false + LeftHand: + points: 6 + required: false + +- type: humanoidBaseSprite + id: MobThavenEyes + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: eyes + +- type: humanoidBaseSprite + id: MobThavenHead + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobThavenHeadMale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobThavenHeadFemale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: head + +- type: humanoidBaseSprite + id: MobThavenTorso + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobThavenTorsoMale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: torso_m + +- type: humanoidBaseSprite + id: MobThavenTorsoFemale + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: torso_f + + +- type: humanoidBaseSprite + id: MobThavenLLeg + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_leg + +- type: humanoidBaseSprite + id: MobThavenLHand + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_hand + +- type: humanoidBaseSprite + id: MobThavenLArm + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_arm + +- type: humanoidBaseSprite + id: MobThavenLFoot + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: l_foot + +- type: humanoidBaseSprite + id: MobThavenRLeg + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_leg + +- type: humanoidBaseSprite + id: MobThavenRHand + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_hand + +- type: humanoidBaseSprite + id: MobThavenRArm + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_arm + +- type: humanoidBaseSprite + id: MobThavenRFoot + baseSprite: + sprite: _Impstation/Mobs/Species/Thaven/parts.rsi + state: r_foot diff --git a/Resources/Prototypes/_Impstation/Traits/speech.yml.txt b/Resources/Prototypes/_Impstation/Traits/speech.yml.txt new file mode 100644 index 0000000000..fbe4041f3a --- /dev/null +++ b/Resources/Prototypes/_Impstation/Traits/speech.yml.txt @@ -0,0 +1,11 @@ +# 1 Cost +- type: trait + id: NoContractions + name: trait-nocontractions-name + description: trait-nocontractions-desc + category: SpeechTraits + cost: 1 + components: + - type: ReplacementAccent + accent: nocontractions + - type: NoContractionsAccent \ No newline at end of file diff --git a/Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml new file mode 100644 index 0000000000..363e0662cd --- /dev/null +++ b/Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml @@ -0,0 +1,110 @@ +- type: emoteSounds + id: MaleThaven + sounds: + Scream: + collection: MaleScreams + Laugh: + collection: MaleLaugh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Sigh: + collection: MaleSigh + Honk: + collection: BikeHorn + Crying: + collection: MaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + params: + variation: 0.05 + pitch: 1.25 + +- type: emoteSounds + id: FemaleThaven + sounds: + Scream: + collection: FemaleScreams + Laugh: + collection: FemaleLaugh + Sneeze: + collection: FemaleSneezes + Cough: + collection: FemaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: FemaleYawn + Snore: + collection: Snores + Sigh: + collection: FemaleSigh + Honk: + collection: BikeHorn + Crying: + collection: FemaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + params: + variation: 0.05 + pitch: 1.25 + +- type: emoteSounds + id: UnisexThaven + sounds: + Scream: + collection: MaleScreams + Laugh: + collection: MaleLaugh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Sigh: + collection: MaleSigh + Honk: + collection: BikeHorn + Crying: + collection: MaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + params: + variation: 0.05 + pitch: 1.25 diff --git a/Resources/Prototypes/_Impstation/datasets.yml b/Resources/Prototypes/_Impstation/datasets.yml new file mode 100644 index 0000000000..0870ca947b --- /dev/null +++ b/Resources/Prototypes/_Impstation/datasets.yml @@ -0,0 +1,1284 @@ +- type: dataset + id: Departments + values: + - Engineering + - Epistemics + - Botany + - Service + - Security + - Medical + - Justice + - The Bar + # Begin DeltaV Additions + - The Kitchen + - Logistics + - the Janitorial Department + - Reporting + - Entertainment + - Surgery + # End DeltaV Additions + +- type: dataset + id: Pets + values: + - Pun Pun the Monkey + - Hamlet the Hamster + - Shiva the Spider + - Ian the Corgi + - Morticia the Raccoon + - Morty the Possum + - Paperwork the Sloth + - Walter the Dog + - Renault the Fox + - Willow the Kangaroo + - Smile the Slime + - Tropico the Crab + - Carpy the Legal Carp + - Laika the Security Dog + - Remilia the Chaplain's Familiar + # Begin DeltaV Additions + - Alexander the Pig + - Clippy the Courier Cat + - Runtime the Cat + - Exception the Cat + - Silvia the Medical Snake + - Bingus the Cat + - A Bee + - Siobahn the Epistemics Fox + # End DeltaV Additions + +- type: dataset + id: Rooms + values: + - Disposals + - The Library + - Escape Pod + - The Maints Bar + - The Restroom + - Dorms + - The Morgue + - The Center of the Station + # Begin DeltaV Additions + - The Chapel + - The Bar + - The Boxing Ring + - The Logistics Front Desk + - The Tool Room + - Evac + - Solars + - Arrivals + - The Laundry Room + - The Station Anchor + - The Park + - Court + - The Arcade + - The Stage + # End DeltaV Additions + # Begin EE Additions + - The Supermatter Crystal + - The Singularity Generator + - The Bridge + - The Automated Trading Station + - The Logistics Shuttle + - The Perma Brig + - The Burn Chamber + - Hydroponics + - The Kitchen + - Epistemics + - Medical + - Security + - Lavaland + - The Tesla Generator + # End EE Additions + +- type: dataset + id: FoodRestrictions + values: + - Vegetarian + - Carnivore + - Frugivore + - Fungivore + - Ovivore + - Hunter + - Soupivore + + +- type: dataset + id: Items + values: + - Wrenches + - Welding Tools + - Screwdrivers + - Wirecutters + - Multitools + - Plushies + - Food packaging + - Soda cans + - Flashlights + - Empty toolboxes + - Civilian clothes + - Shoes + - Hats + - Scarves + - Folders + - Spray bottles + - Plushies + - Figurines + # Begin DeltaV Additions + - Toys + - Lockers + - Cigarettes + - Lighters + - Candles + - Signatures + - Empty bottles + - Paper + - Crayons + - Toys + - Lamps + - Pens + - Lightbulbs + - Books + - Snacks + - Cassettes + - Trash + # End DeltaV Additions + +- type: dataset + id: Edibles + values: + - Enchiladas + - Copypasta + - Moldy Bread Slice + - Baseball Burger + - Empowered Burger + - McGuffin + - Crazy Hamburger + # Begin DeltaV Additions + - Stick of Cannabis Butter + - Cheesecake Balls + - Engine Fodder + - Bread Dog + - Camel's Soup + - Chili Con Carnival + - Salty Sweet Miso Cola Soup + - Ketchup + - Chicken Nuggets + - Borito Pie + - Blue Tomato Soup + - Buttered Toast + - Ratburger + - Vending Machine Snacks + # End DeltaV Additions + +- type: dataset + id: Holidays + values: + - Bingus Day + - Foster's Feast + # Begin DeltaV Additions + - Preston’s Tomato Incident + - Submarine's Memorial + - Pranksgiving + - Sector Delta Employee Appreciation Week + - Intergalactic Hug A Robot Day + - Todaybor Day + - Teo's First Contact Day + - Wear Pajamas to Work Day + - Roy’s Birthday + - NT Corporate Mindfulness Day + - Night of Holy Herbs + - Logistics Appreciation Week + - Big Ear Syndrome Awareness Day + - Gunchday + - Gerry Patrick's Ascension + - The Good Day of Digging and Playing + - the Talent Show + - Luperthavia + - Penny's Big Day + - Taco Tuesday + # End DeltaV Additions + +- type: dataset + id: Clothes + values: + - Hardsuits + - Gloves + - Hats + - Capes + - Glasses + - Backpacks + - Coats + - Mantles + - Berets + - Jackets + - Plushies + - Shoes + - Ties + - Scarves + +- type: dataset + id: CommandRoles + values: + - Captain + - Logistics Officer # DeltaV - what is a quartermaster + - Head of Security + - Head of Personnel + - Chief Engineer + - Chief Medical Officer + # Begin DeltaV Additions + - Mystagogue + - Chief Justice + - Administrative Assistant + # End DeltaV Additions + +- type: dataset + id: SpeechRestrictions + values: + - FullNameAndTitle + - NamesAreRude + - Clarity + - SwearingGood + - StatementOnly + - Imitation + - Unclarity + - SwearingBad + - QuestionOnly + - MustAnswer + - OnlyWhisper + - OnlyYell + - Rhyme + - Alliterate + - ThirdPerson + - TitleCase + +- type: dataset + id: ThavenWords + values: + - accept + - add + - admire + - admit + - advise + - afford + - agree + - alert + - allow + - amuse + - analyse + - announce + - annoy + - answer + - apologise + - appear + - applaud + - appreciate + - approve + - argue + - arrange + - arrest + - arrive + - ask + - attach + - attack + - attempt + - attend + - attract + - avoid + - back + - bake + - balance + - ban + - bang + - bare + - bat + - bathe + - battle + - beam + - beg + - behave + - belong + - bleach + - bless + - blind + - blink + - blot + - blush + - boast + - boil + - bolt + - bomb + - book + - bore + - borrow + - bounce + - bow + - box + - brake + - brake + - branch + - breathe + - bruise + - brush + - bubble + - bump + - burn + - bury + - buzz + - calculate + - call + - camp + - care + - carry + - carve + - cause + - challenge + - change + - charge + - chase + - cheat + - check + - cheer + - chew + - choke + - chop + - claim + - clap + - clean + - clear + - clip + - close + - coach + - coil + - collect + - colour + - comb + - command + - communicate + - compare + - compete + - complain + - complete + - concentrate + - concern + - confess + - confuse + - connect + - consider + - consist + - contain + - continue + - copy + - correct + - cough + - count + - cover + - crack + - crash + - crawl + - cross + - crush + - cry + - cure + - curl + - curve + - cycle + - dam + - damage + - dance + - dare + - decay + - deceive + - decide + - decorate + - delay + - delight + - deliver + - depend + - describe + - desert + - deserve + - destroy + - detect + - develop + - disagree + - disappear + - disapprove + - disarm + - discover + - dislike + - divide + - double + - doubt + - drag + - drain + - dream + - dress + - drip + - drop + - drown + - drum + - dry + - dust + - earn + - educate + - embarrass + - employ + - empty + - encourage + - end + - enjoy + - enter + - entertain + - escape + - examine + - excite + - excuse + - exercise + - exist + - expand + - expect + - explain + - explode + - extend + - face + - fade + - fail + - fancy + - fasten + - fax + - fear + - fence + - fetch + - file + - fill + - film + - fire + - fit + - fix + - flap + - flash + - float + - flood + - flow + - flower + - fold + - follow + - fool + - force + - form + - found + - frame + - frighten + - fry + - gather + - gaze + - glow + - glue + - grab + - grate + - grease + - greet + - grin + - grip + - groan + - guarantee + - guard + - guess + - guide + - hammer + - hand + - handle + - hang + - happen + - harass + - harm + - hate + - haunt + - head + - heal + - heap + - heat + - help + - hook + - hop + - hope + - hover + - hug + - hum + - hunt + - hurry + - identify + - ignore + - imagine + - impress + - improve + - include + - increase + - influence + - inform + - inject + - injure + - instruct + - intend + - interest + - interfere + - interrupt + - introduce + - invent + - invite + - irritate + - itch + - jail + - jam + - jog + - join + - joke + - judge + - juggle + - jump + - kick + - kill + - kiss + - kneel + - knit + - knock + - knot + - label + - land + - last + - laugh + - launch + - learn + - level + - license + - lick + - lie + - lighten + - like + - list + - listen + - live + - load + - lock + - long + - look + - love + - man + - manage + - march + - mark + - marry + - match + - mate + - matter + - measure + - meddle + - melt + - memorise + - mend + - messup + - milk + - mine + - miss + - mix + - moan + - moor + - mourn + - move + - muddle + - mug + - multiply + - murder + - nail + - name + - need + - nest + - nod + - note + - notice + - number + - obey + - object + - observe + - obtain + - occur + - offend + - offer + - open + - order + - overflow + - owe + - own + - pack + - paddle + - paint + - park + - part + - pass + - paste + - pat + - pause + - peck + - pedal + - peel + - peep + - perform + - permit + - phone + - pick + - pinch + - pine + - place + - plan + - plant + - play + - please + - plug + - point + - poke + - polish + - pop + - possess + - post + - pour + - practise + - pray + - preach + - precede + - prefer + - prepare + - present + - preserve + - press + - pretend + - prevent + - prick + - print + - produce + - program + - promise + - protect + - provide + - pull + - pump + - punch + - puncture + - punish + - push + - question + - queue + - race + - radiate + - rain + - raise + - reach + - realise + - receive + - recognise + - record + - reduce + - reflect + - refuse + - regret + - reign + - reject + - rejoice + - relax + - release + - rely + - remain + - remember + - remind + - remove + - repair + - repeat + - replace + - reply + - report + - reproduce + - request + - rescue + - retire + - return + - rhyme + - rinse + - risk + - rob + - rock + - roll + - rot + - rub + - ruin + - rule + - rush + - sack + - sail + - satisfy + - save + - saw + - scare + - scatter + - scold + - scorch + - scrape + - scratch + - scream + - screw + - scribble + - scrub + - seal + - search + - separate + - serve + - settle + - shade + - share + - shave + - shelter + - shiver + - shock + - shop + - shriek + - shrug + - sigh + - sign + - signal + - sin + - sip + - ski + - skip + - slap + - slip + - slow + - smash + - smell + - smile + - smoke + - snatch + - sneeze + - sniff + - snore + - snow + - soak + - soothe + - sound + - spare + - spark + - sparkle + - spell + - spill + - spoil + - spot + - spray + - sprout + - squash + - squeak + - squeal + - squeeze + - stain + - stamp + - stare + - start + - stay + - steer + - step + - stir + - stitch + - stop + - store + - strap + - strengthen + - stretch + - stroke + - stuff + - subtract + - succeed + - suck + - suffer + - suggest + - suit + - supply + - support + - suppose + - surprise + - surround + - suspect + - suspend + - switch + - talk + - tame + - tap + - taste + - tease + - telephone + - tempt + - terrify + - test + - thank + - thaw + - tick + - tickle + - tie + - time + - tip + - tire + - touch + - tour + - tow + - trace + - trade + - train + - transport + - trap + - travel + - treat + - tremble + - trick + - trip + - trot + - trouble + - trust + - try + - tug + - tumble + - turn + - twist + - type + - unfasten + - unite + - unlock + - unpack + - untidy + - use + - vanish + - visit + - wail + - wait + - walk + - wander + - want + - warm + - warn + - wash + - waste + - watch + - water + - wave + - weigh + - welcome + - whine + - whip + - whirl + - whistle + - wink + - wipe + - wish + - wobble + - wonder + - work + - worry + - wrap + - wreck + - wrestle + - wriggle + - yawn + - yell + - zip + - zoom + - adorable + - adventurous + - aggressive + - alert + - attractive + - average + - beautiful + - blue-eyed + - bloody + - blushing + - bright + - clean + - clear + - cloudy + - colorful + - crowded + - cute + - dark + - drab + - distinct + - dull + - elegant + - excited + - fancy + - filthy + - glamorous + - gleaming + - gorgeous + - graceful + - grotesque + - handsome + - homely + - light + - long + - magnificent + - misty + - motionless + - muddy + - old-fashioned + - plain + - poised + - precious + - quaint + - shiny + - smoggy + - sparkling + - spotless + - stormy + - strange + - ugly + - ugliest + - unsightly + - unusual + - wide-eyed + - alive + - annoying + - bad + - better + - beautiful + - brainy + - breakable + - busy + - careful + - cautious + - clever + - clumsy + - concerned + - crazy + - curious + - dead + - different + - difficult + - doubtful + - easy + - expensive + - famous + - fragile + - frail + - gifted + - helpful + - helpless + - horrible + - important + - impossible + - inexpensive + - innocent + - inquisitive + - modern + - mushy + - odd + - open + - outstanding + - poor + - powerful + - prickly + - puzzled + - real + - rich + - shy + - sleepy + - stupid + - super + - talented + - tame + - tender + - tough + - uninterested + - vast + - wandering + - wild + - wrong + - angry + - annoyed + - anxious + - arrogant + - ashamed + - awful + - bad + - bewildered + - black + - blue + - bored + - clumsy + - combative + - condemned + - confused + - crazy,flipped-out + - creepy + - cruel + - dangerous + - defeated + - defiant + - depressed + - disgusted + - disturbed + - dizzy + - dull + - embarrassed + - envious + - evil + - fierce + - foolish + - frantic + - frightened + - grieving + - grumpy + - helpless + - homeless + - hungry + - hurt + - ill + - itchy + - jealous + - jittery + - lazy + - lonely + - mysterious + - nasty + - naughty + - nervous + - nutty + - obnoxious + - outrageous + - panicky + - repulsive + - scary + - selfish + - sore + - tense + - terrible + - testy + - thoughtless + - tired + - troubled + - upset + - uptight + - weary + - wicked + - worried + - agreeable + - amused + - brave + - calm + - charming + - cheerful + - comfortable + - cooperative + - courageous + - delightful + - determined + - eager + - elated + - enchanting + - encouraging + - energetic + - enthusiastic + - excited + - exuberant + - fair + - faithful + - fantastic + - fine + - friendly + - funny + - gentle + - glorious + - good + - happy + - healthy + - helpful + - hilarious + - jolly + - joyous + - kind + - lively + - lovely + - lucky + - nice + - obedient + - perfect + - pleasant + - proud + - relieved + - silly + - smiling + - splendid + - successful + - thankful + - thoughtful + - victorious + - vivacious + - witty + - wonderful + - zealous + - zany + - broad + - chubby + - crooked + - curved + - deep + - flat + - high + - hollow + - low + - narrow + - round + - shallow + - skinny + - square + - steep + - straight + - wide + - big + - colossal + - fat + - gigantic + - great + - huge + - immense + - large + - little + - mammoth + - massive + - miniature + - petite + - puny + - scrawny + - short + - small + - tall + - teeny + - teeny-tiny + - tiny + - cooing + - deafening + - faint + - harsh + - high-pitched + - hissing + - hushed + - husky + - loud + - melodic + - moaning + - mute + - noisy + - purring + - quiet + - raspy + - resonant + - screeching + - shrill + - silent + - soft + - squealing + - thundering + - voiceless + - whispering + - ancient + - brief + - early + - fast + - late + - long + - modern + - old + - old-fashioned + - quick + - rapid + - short + - slow + - swift + - young + - bitter + - delicious + - fresh + - juicy + - ripe + - rotten + - salty + - sour + - spicy + - stale + - sticky + - strong + - sweet + - tart + - tasteless + - tasty + - thirsty + - fluttering + - fuzzy + - greasy + - grubby + - hard + - hot + - icy + - loose + - melted + - nutritious + - plastic + - prickly + - rainy + - rough + - scattered + - shaggy + - shaky + - sharp + - shivering + - silky + - slimy + - slippery + - smooth + - soft + - solid + - steady + - sticky + - tender + - tight + - uneven + - weak + - wet + - wooden + - yummy + - boiling + - breezy + - broken + - bumpy + - chilly + - cold + - cool + - creepy + - crooked + - cuddly + - curly + - damaged + - damp + - dirty + - dry + - dusty + - filthy + - flaky + - fluffy + - freezing + - hot + - warm + - wet + - abundant + - empty + - few + - heavy + - light + - many + - numerous + - substantial + - capitalist diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index 4267fb3a1c..3ab40671f2 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -15,6 +15,7 @@ + # Parkstation specific species diff --git a/Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml b/Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml new file mode 100644 index 0000000000..ea3974c72c --- /dev/null +++ b/Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml @@ -0,0 +1,36 @@ + + # Thaven + + + + + + [color=#ffa500]Caution! This species has a severely limiting game mechanic and is not recommended for new players.[/color] + [color=#ffa500]This mechanic makes it very difficult to form a consistent character or personality, as it can severely affect the way a Thaven speaks and interacts with others.[/color] + +## Moods + + + + + The Thaven have a unique brain structure, similar to a positronic brain, and thus have "Moods" which affect them similarly to a borg's Laws. [color=#ffa500]These Moods must be followed to the best of your ability![/color] [color=red]Breaking your moods is very distressing! Avoid it whenever possible![/color] [color=#ffa500]If a Thaven violates them, they will experience distress or discomfort. The specifics of that are up to you, but if a Mood is violated, you must seek to correct your mistake immediately if possible.[/color] + +## Mood Swings + Thaven brains are susceptible to fluctuations in nöospheric fields. As a result, their ability to synchronize and regulate their Moods tends to degrade with extended exposure to the glimmer that builds up in NT research stations. [color=#ffa500]It also renders them vulnerable to glimmer discharges,[/color] which can sometimes give them additional, often severely debilitating moods. + +## Thaven Nerve Pinch + Thaven hand-to-hand martial arts have a focus on inflicting non-permanent damage. As a result, [color=#ffa500]their unarmed attacks are slow, and deal no damage,[/color] but [color=#1e90ff]cause a fair amount of stun buildup.[/color] + +## Damage + Due to their relatively fragile bone structure and unique nervous system, they take [color=#ffa500]10% more damage from blunt, slash, pierce, and genetic, and 20% more damage from radiation,[/color] but their aquatic ancestry allows them to take [color=#1e90ff]10% less damage from heat, cold, and poison.[/color] + +## Thaven Naming Conventions + Thaven typically name themselves after a single virtue they hold dear. Sometimes these names can be long and unwieldy. + + For example: + - Honesty + - Have Mercy + - Give Thanks To Thy Ancestors + - Obedience + - Search The Scriptures + diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json b/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json index d91b201f0b..e39130bcbe 100644 --- a/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json +++ b/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json @@ -40,6 +40,23 @@ }, { "name": "chitinid2" + }, + { + "name": "thaven1" + }, + { + "name": "thaven2" + }, + { + "name": "thaven0", + "delays": [ + [ + 0.2, + 0.3, + 0.3, + 0.3 + ] + ] } ] } diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png new file mode 100644 index 0000000000..01053c9730 Binary files /dev/null and b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png differ diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png new file mode 100644 index 0000000000..9ed80eb55b Binary files /dev/null and b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png differ diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png new file mode 100644 index 0000000000..c575d6dfee Binary files /dev/null and b/Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png differ diff --git a/Resources/Textures/Effects/creampie.rsi/creampie_thaven.png b/Resources/Textures/Effects/creampie.rsi/creampie_thaven.png new file mode 100644 index 0000000000..278c48a95d Binary files /dev/null and b/Resources/Textures/Effects/creampie.rsi/creampie_thaven.png differ diff --git a/Resources/Textures/Effects/creampie.rsi/meta.json b/Resources/Textures/Effects/creampie.rsi/meta.json index 8db8a77945..63dd1be198 100644 --- a/Resources/Textures/Effects/creampie.rsi/meta.json +++ b/Resources/Textures/Effects/creampie.rsi/meta.json @@ -83,6 +83,11 @@ { "name": "creampie_xenomorph", "directions": 4 + }, + { + "name": "creampie_spelf", + "name": "creampie_thaven", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_small.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_small.png new file mode 100644 index 0000000000..de09157707 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_small.png differ diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_standard.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_standard.png new file mode 100644 index 0000000000..38d7137e61 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_standard.png differ diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_tall.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_tall.png new file mode 100644 index 0000000000..f42a86613a Binary files /dev/null and b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_tall.png differ diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_thin.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_thin.png new file mode 100644 index 0000000000..a910e67f6d Binary files /dev/null and b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_thin.png differ diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_upwards.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_upwards.png new file mode 100644 index 0000000000..8454708d9e Binary files /dev/null and b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_upwards.png differ diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_wide.png b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_wide.png new file mode 100644 index 0000000000..2a643bf6c6 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/ears.rsi/long_ears_wide.png differ diff --git a/Resources/Textures/Mobs/Customization/ears.rsi/meta.json b/Resources/Textures/Mobs/Customization/ears.rsi/meta.json new file mode 100644 index 0000000000..ab8deddeaa --- /dev/null +++ b/Resources/Textures/Mobs/Customization/ears.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by angelofallars (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "long_ears_standard", + "directions": 4 + }, + { + "name": "long_ears_wide", + "directions": 4 + }, + { + "name": "long_ears_small", + "directions": 4 + }, + { + "name": "long_ears_upwards", + "directions": 4 + }, + { + "name": "long_ears_tall", + "directions": 4 + }, + { + "name": "long_ears_thin", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/carp_spots.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/carp_spots.png new file mode 100644 index 0000000000..aadf88fe90 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/carp_spots.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/cheek_barbels.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/cheek_barbels.png new file mode 100644 index 0000000000..c10e49e18a Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/cheek_barbels.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/eyebrow_barbels.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/eyebrow_barbels.png new file mode 100644 index 0000000000..fd757816d4 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/eyebrow_barbels.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json new file mode 100644 index 0000000000..d965e86b74 --- /dev/null +++ b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "cheek_barbels, eyebrow_barbels, underbelly_face, underbelly_torso, carp_spots by kushbreth (github).", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "cheek_barbels", + "directions": 4 + }, + { + "name": "eyebrow_barbels", + "directions": 4 + }, + { + "name": "underbelly_face", + "directions": 4 + }, + { + "name": "underbelly_torso", + "directions": 4 + }, + { + "name": "carp_spots", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_face.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_face.png new file mode 100644 index 0000000000..9c7c5277e0 Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_face.png differ diff --git a/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_torso.png b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_torso.png new file mode 100644 index 0000000000..14d66a043b Binary files /dev/null and b/Resources/Textures/_DV/Mobs/Customization/thaven.rsi/underbelly_torso.png differ diff --git a/Resources/Textures/_EE/Effects/speech.rsi/meta.json b/Resources/Textures/_EE/Effects/speech.rsi/meta.json new file mode 100644 index 0000000000..152c03ee27 --- /dev/null +++ b/Resources/Textures/_EE/Effects/speech.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Timfa", + "states": [ + { + "name": "thaven0", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, + { + "name": "thaven1" + }, + { + "name": "thaven2" + } + ] +} diff --git a/Resources/Textures/_EE/Effects/speech.rsi/thaven0.png b/Resources/Textures/_EE/Effects/speech.rsi/thaven0.png new file mode 100644 index 0000000000..1c2786ce47 Binary files /dev/null and b/Resources/Textures/_EE/Effects/speech.rsi/thaven0.png differ diff --git a/Resources/Textures/_EE/Effects/speech.rsi/thaven1.png b/Resources/Textures/_EE/Effects/speech.rsi/thaven1.png new file mode 100644 index 0000000000..0764f3deda Binary files /dev/null and b/Resources/Textures/_EE/Effects/speech.rsi/thaven1.png differ diff --git a/Resources/Textures/_EE/Effects/speech.rsi/thaven2.png b/Resources/Textures/_EE/Effects/speech.rsi/thaven2.png new file mode 100644 index 0000000000..2ca4526db8 Binary files /dev/null and b/Resources/Textures/_EE/Effects/speech.rsi/thaven2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/meta.json index 3b83c85dcd..e76209de8f 100644 --- a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/meta.json +++ b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/meta.json @@ -342,6 +342,106 @@ { "name": "chitinidbeetlehorn2", "directions": 4 - } + }, + { + "name": "thavenchestgills", + "directions": 4 + }, + { + "name": "thavenchestscales", + "directions": 4 + }, + { + "name": "thavenheadscales", + "directions": 4 + }, + { + "name": "thavenleftarmscales", + "directions": 4 + }, + { + "name": "thavenrightarmscales", + "directions": 4 + }, + { + "name": "thavenleftlegscales", + "directions": 4 + }, + { + "name": "thavenrightlegscales", + "directions": 4 + }, + { + "name": "thavenbignaturals", + "directions": 4 + }, + { + "name": "thavennonaturals", + "directions": 4 + }, + { + "name": "thavenfishears", + "directions": 4 + }, + { + "name": "thavenbitemark", + "directions": 4 + }, + { + "name": "thaventattoovines", + "directions": 4 + }, + { + "name": "thavenspines", + "directions": 4 + }, + { + "name": "thaventattoowave", + "directions": 4 + }, + { + "name": "thaventattoosharkminnoweyeliner", + "directions": 4 + }, + { + "name": "thaventiger1", + "directions": 4 + }, + { + "name": "thaventiger2", + "directions": 4 + }, + { + "name": "thaventigerarmsl", + "directions": 4 + }, + { + "name": "thaventigerarmsr", + "directions": 4 + }, + { + "name": "thavenbodystripes", + "directions": 4 + }, + { + "name": "thavenheadstripes", + "directions": 4 + }, + { + "name": "thavenearsbigfins", + "directions": 4 + }, + { + "name": "thavenearsbigfins2", + "directions": 4 + }, + { + "name": "thavenheadcap1", + "directions": 4 + }, + { + "name": "thavenheadcap2", + "directions": 4 + } ] } diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbignaturals.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbignaturals.png new file mode 100644 index 0000000000..ffac641f6b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbignaturals.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbitemark.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbitemark.png new file mode 100644 index 0000000000..6b3462a207 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbitemark.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbodystripes.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbodystripes.png new file mode 100644 index 0000000000..d185337395 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenbodystripes.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestgills.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestgills.png new file mode 100644 index 0000000000..353a7e6670 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestgills.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestscales.png new file mode 100644 index 0000000000..9dfd0fb2f5 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenchestscales.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins.png new file mode 100644 index 0000000000..b7bcb7ef52 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins2.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins2.png new file mode 100644 index 0000000000..15b53149dc Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenearsbigfins2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenfishears.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenfishears.png new file mode 100644 index 0000000000..55c1a3a8af Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenfishears.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap1.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap1.png new file mode 100644 index 0000000000..67d982f223 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap1.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap2.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap2.png new file mode 100644 index 0000000000..2dc725c2e5 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadcap2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadscales.png new file mode 100644 index 0000000000..73f68e1843 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadscales.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadstripes.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadstripes.png new file mode 100644 index 0000000000..6b7add1840 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenheadstripes.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftarmscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftarmscales.png new file mode 100644 index 0000000000..157ed88874 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftarmscales.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftlegscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftlegscales.png new file mode 100644 index 0000000000..895376f19d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenleftlegscales.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavennonaturals.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavennonaturals.png new file mode 100644 index 0000000000..c9fb02d1a1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavennonaturals.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightarmscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightarmscales.png new file mode 100644 index 0000000000..510d9c9077 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightarmscales.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightlegscales.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightlegscales.png new file mode 100644 index 0000000000..deb6f1adcb Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenrightlegscales.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenspines.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenspines.png new file mode 100644 index 0000000000..73978b8119 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thavenspines.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoosharkminnoweyeliner.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoosharkminnoweyeliner.png new file mode 100644 index 0000000000..4424c14197 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoosharkminnoweyeliner.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoovines.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoovines.png new file mode 100644 index 0000000000..e921e89497 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoovines.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoowave.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoowave.png new file mode 100644 index 0000000000..fb0438a6eb Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventattoowave.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger1.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger1.png new file mode 100644 index 0000000000..a7d47e765f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger1.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger2.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger2.png new file mode 100644 index 0000000000..861b9ae13b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventiger2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsl.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsl.png new file mode 100644 index 0000000000..9b6cea71dd Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsl.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsr.png b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsr.png new file mode 100644 index 0000000000..7d3feeb367 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/markingsbundle1.rsi/thaventigerarmsr.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/chesttat1.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/chesttat1.png new file mode 100644 index 0000000000..9808aa67b3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/chesttat1.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears1.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears1.png new file mode 100644 index 0000000000..88c5081cb9 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears1.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears2.png new file mode 100644 index 0000000000..255b21b8c0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears3.png new file mode 100644 index 0000000000..99f1e79b7c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears4.png new file mode 100644 index 0000000000..a1286118be Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/ears4.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/larmtat1.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/larmtat1.png new file mode 100644 index 0000000000..4999357dbb Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/larmtat1.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/meta.json new file mode 100644 index 0000000000..17f6720f2e --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/meta.json @@ -0,0 +1,47 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "by Widgetbeck", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "ears1", + "directions": 4 + }, + { + "name": "ears2", + "directions": 4 + }, + { + "name": "ears3", + "directions": 4 + }, + { + "name": "ears4", + "directions": 4 + }, + { + "name": "piercings", + "directions": 4 + }, + { + "name": "piercings2", + "directions": 4 + }, + { + "name": "chesttat1", + "directions": 4 + }, + { + "name": "larmtat1", + "directions": 4 + }, + { + "name": "rarmtat1", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings.png new file mode 100644 index 0000000000..aee5f3e861 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings2.png new file mode 100644 index 0000000000..e7743d12d8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/piercings2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/rarmtat1.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/rarmtat1.png new file mode 100644 index 0000000000..53486d73bc Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven.rsi/rarmtat1.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/80s.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/80s.png new file mode 100644 index 0000000000..c6947da0f1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/80s.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/a.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/a.png new file mode 100644 index 0000000000..dc7e978648 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/a.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/b.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/b.png new file mode 100644 index 0000000000..e4797a24f2 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/b.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bald.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bald.png new file mode 100644 index 0000000000..2975c479be Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bald.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/baldface.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/baldface.png new file mode 100644 index 0000000000..761f190868 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/baldface.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead.png new file mode 100644 index 0000000000..7ac1202562 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead2.png new file mode 100644 index 0000000000..9da0cfcb25 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead3.png new file mode 100644 index 0000000000..a366b25819 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bedhead3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive.png new file mode 100644 index 0000000000..f781934fcf Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive2.png new file mode 100644 index 0000000000..0d3682bcb6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/beehive2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigflattop.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigflattop.png new file mode 100644 index 0000000000..663554c8c3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigflattop.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigpompadour.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigpompadour.png new file mode 100644 index 0000000000..f935966d18 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bigpompadour.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob.png new file mode 100644 index 0000000000..14b42723db Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob2.png new file mode 100644 index 0000000000..645d94f16c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob4.png new file mode 100644 index 0000000000..3c70986fee Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob4.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob5.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob5.png new file mode 100644 index 0000000000..eb0ea4e8c1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bob5.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcurl.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcurl.png new file mode 100644 index 0000000000..78377c7d3e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcurl.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcut.png new file mode 100644 index 0000000000..d5f60c2cab Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bobcut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut.png new file mode 100644 index 0000000000..b3a9154240 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut2.png new file mode 100644 index 0000000000..9ee6c7847c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bowlcut2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid.png new file mode 100644 index 0000000000..a9dc0ddc0c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid2.png new file mode 100644 index 0000000000..b25ebe1b9e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braid2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braided.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braided.png new file mode 100644 index 0000000000..b10d10c561 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braided.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidfront.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidfront.png new file mode 100644 index 0000000000..4da07f76f8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidfront.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidtail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidtail.png new file mode 100644 index 0000000000..ec9dc6f372 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/braidtail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun.png new file mode 100644 index 0000000000..b988d153c2 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun3.png new file mode 100644 index 0000000000..3874908bf2 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bun3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bunhead2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bunhead2.png new file mode 100644 index 0000000000..7b4c11fc9c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/bunhead2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business.png new file mode 100644 index 0000000000..81a48305a1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business2.png new file mode 100644 index 0000000000..81f6ebb297 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business3.png new file mode 100644 index 0000000000..6bbd80679a Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business4.png new file mode 100644 index 0000000000..e35973ea61 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/business4.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/buzzcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/buzzcut.png new file mode 100644 index 0000000000..20f5042b54 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/buzzcut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/c.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/c.png new file mode 100644 index 0000000000..0397bc2055 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/c.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cia.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cia.png new file mode 100644 index 0000000000..394e8c0ca9 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cia.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicafro.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicafro.png new file mode 100644 index 0000000000..2dd00a8725 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicafro.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccia.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccia.png new file mode 100644 index 0000000000..427e34807d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccia.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicciabusiness.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicciabusiness.png new file mode 100644 index 0000000000..258aed5f2d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicciabusiness.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccornrows.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccornrows.png new file mode 100644 index 0000000000..3c5ca06e19 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiccornrows.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicfloorlength_bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicfloorlength_bedhead.png new file mode 100644 index 0000000000..c60a079b5a Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicfloorlength_bedhead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong2.png new file mode 100644 index 0000000000..a3f406a73a Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong3.png new file mode 100644 index 0000000000..b8652c945c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classiclong3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmodern.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmodern.png new file mode 100644 index 0000000000..adca06ce49 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmodern.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmulder.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmulder.png new file mode 100644 index 0000000000..a1ff55398e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicmulder.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicwisp.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicwisp.png new file mode 100644 index 0000000000..d8bc7837fe Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/classicwisp.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/coffeehouse.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/coffeehouse.png new file mode 100644 index 0000000000..342d08252f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/coffeehouse.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/combover.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/combover.png new file mode 100644 index 0000000000..b880f6140c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/combover.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbraid.png new file mode 100644 index 0000000000..0df721e7a4 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbraid.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbun.png new file mode 100644 index 0000000000..b7dc85cf28 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowbun.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows.png new file mode 100644 index 0000000000..ac9faecce7 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows2.png new file mode 100644 index 0000000000..212d418d5b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrows2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowtail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowtail.png new file mode 100644 index 0000000000..e4fd7e6c96 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/cornrowtail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/country.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/country.png new file mode 100644 index 0000000000..e919849e8e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/country.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut.png new file mode 100644 index 0000000000..eccd95eedd Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut2.png new file mode 100644 index 0000000000..cb77412faa Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/crewcut2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/curls.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/curls.png new file mode 100644 index 0000000000..a6221b56da Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/curls.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/d.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/d.png new file mode 100644 index 0000000000..17e47f3ad3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/d.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dandypompadour.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dandypompadour.png new file mode 100644 index 0000000000..30916d69ea Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dandypompadour.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/devilock.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/devilock.png new file mode 100644 index 0000000000..76c36c9c78 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/devilock.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun.png new file mode 100644 index 0000000000..45e3ad009d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun_long.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun_long.png new file mode 100644 index 0000000000..ce92b9c88e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/doublebun_long.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dreads.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dreads.png new file mode 100644 index 0000000000..eeb64977a3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/dreads.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhair.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhair.png new file mode 100644 index 0000000000..0aa08c65d1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhair.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhairextended.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhairextended.png new file mode 100644 index 0000000000..62f87e65ee Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillhairextended.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillruru.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillruru.png new file mode 100644 index 0000000000..9b926688d8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/drillruru.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/e.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/e.png new file mode 100644 index 0000000000..0fa5447688 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/e.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emo2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emo2.png new file mode 100644 index 0000000000..9859230786 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emo2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emofringe.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emofringe.png new file mode 100644 index 0000000000..c7fd27b8bf Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/emofringe.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/f.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/f.png new file mode 100644 index 0000000000..35c911c228 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/f.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/father.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/father.png new file mode 100644 index 0000000000..b024ff4afc Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/father.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/feather.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/feather.png new file mode 100644 index 0000000000..4362e5ccaa Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/feather.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/flair.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/flair.png new file mode 100644 index 0000000000..c5eb356d60 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/flair.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/floorlength_bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/floorlength_bedhead.png new file mode 100644 index 0000000000..a05dacf906 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/floorlength_bedhead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/frenchbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/frenchbraid.png new file mode 100644 index 0000000000..cf839ffb88 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/frenchbraid.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/fringetail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/fringetail.png new file mode 100644 index 0000000000..8c0072e06e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/fringetail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gelled.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gelled.png new file mode 100644 index 0000000000..bc0f32f847 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gelled.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gentle.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gentle.png new file mode 100644 index 0000000000..a2b6acd378 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/gentle.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang.png new file mode 100644 index 0000000000..a94396ce98 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang2.png new file mode 100644 index 0000000000..a93c6f6ff7 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfbang2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfshaved.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfshaved.png new file mode 100644 index 0000000000..9948396796 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/halfshaved.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hbraid.png new file mode 100644 index 0000000000..3b347bfd27 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hbraid.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hedgehog.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hedgehog.png new file mode 100644 index 0000000000..630fc1a256 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hedgehog.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highfade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highfade.png new file mode 100644 index 0000000000..800039dda4 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highfade.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highponytail.png new file mode 100644 index 0000000000..7de84eb983 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/highponytail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut.png new file mode 100644 index 0000000000..52a6864397 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut2.png new file mode 100644 index 0000000000..f5b7ee3dd3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himecut2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himeup.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himeup.png new file mode 100644 index 0000000000..a1a1758c56 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/himeup.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hitop.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hitop.png new file mode 100644 index 0000000000..7f12120c86 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/hitop.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jade.png new file mode 100644 index 0000000000..03a8d6c6e8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jade.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jensen.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jensen.png new file mode 100644 index 0000000000..739ed79ba3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/jensen.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/joestar.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/joestar.png new file mode 100644 index 0000000000..d92e0b40a8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/joestar.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kagami.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kagami.png new file mode 100644 index 0000000000..d2100a1bfe Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kagami.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/keanu.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/keanu.png new file mode 100644 index 0000000000..207a6b217f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/keanu.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kusanagi.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kusanagi.png new file mode 100644 index 0000000000..a239b0b98a Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/kusanagi.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/largebun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/largebun.png new file mode 100644 index 0000000000..3289739899 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/largebun.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lbangs.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lbangs.png new file mode 100644 index 0000000000..390c3d4aee Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lbangs.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long.png new file mode 100644 index 0000000000..8fff78dd65 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long2.png new file mode 100644 index 0000000000..137707a816 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long3.png new file mode 100644 index 0000000000..ba4dd3fabc Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead.png new file mode 100644 index 0000000000..b7c47a1915 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead2.png new file mode 100644 index 0000000000..c2bc5a0e95 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/long_bedhead2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longbundled.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longbundled.png new file mode 100644 index 0000000000..9d293b7f24 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longbundled.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longeremo.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longeremo.png new file mode 100644 index 0000000000..9b8b5cb6ec Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longeremo.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest.png new file mode 100644 index 0000000000..c543fd3efd Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest2.png new file mode 100644 index 0000000000..73a218ce26 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longest2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longfringe.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longfringe.png new file mode 100644 index 0000000000..a59faffafc Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longfringe.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longovereye.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longovereye.png new file mode 100644 index 0000000000..362bc1d453 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longovereye.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longsidepart.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longsidepart.png new file mode 100644 index 0000000000..3836260ac1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longsidepart.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longstraightponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longstraightponytail.png new file mode 100644 index 0000000000..8420878407 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/longstraightponytail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lowfade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lowfade.png new file mode 100644 index 0000000000..ffe9352c2d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/lowfade.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/manbun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/manbun.png new file mode 100644 index 0000000000..15ff567146 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/manbun.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/medfade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/medfade.png new file mode 100644 index 0000000000..2d27d0a9a0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/medfade.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mediumsidepart.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mediumsidepart.png new file mode 100644 index 0000000000..42334028fd Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mediumsidepart.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/megaeyebrows.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/megaeyebrows.png new file mode 100644 index 0000000000..5841ce0df3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/megaeyebrows.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/messy.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/messy.png new file mode 100644 index 0000000000..9ea8314268 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/messy.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json new file mode 100644 index 0000000000..19107c5b76 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/meta.json @@ -0,0 +1,759 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "copyright": "Taken from https://github.com/tgstation/tgstation/blob/05ec94e46349c35e29ca91e5e97d0c88ae26ad44/icons/mob/species/human/human_face.dmi ,resprited by Alekshhh, a modified by potato1234x, uneven and tailed is drawn by Ubaser, doublebun_long by Emisse, longbundled and bob5 sprited by github:DreamlyJack(624946166152298517)", + "license": "CC-BY-SA-3.0", + "states": [ + { + "name": "80s", + "directions": 4 + }, + { + "name": "a", + "directions": 4 + }, + { + "name": "b", + "directions": 4 + }, + { + "name": "bald", + "directions": 4 + }, + { + "name": "baldface", + "directions": 4 + }, + { + "name": "bedhead", + "directions": 4 + }, + { + "name": "bedhead2", + "directions": 4 + }, + { + "name": "bedhead3", + "directions": 4 + }, + { + "name": "beehive", + "directions": 4 + }, + { + "name": "beehive2", + "directions": 4 + }, + { + "name": "bigflattop", + "directions": 4 + }, + { + "name": "bigpompadour", + "directions": 4 + }, + { + "name": "bob", + "directions": 4 + }, + { + "name": "bob2", + "directions": 4 + }, + { + "name": "bob4", + "directions": 4 + }, + { + "name": "bob5", + "directions": 4 + }, + { + "name": "bobcurl", + "directions": 4 + }, + { + "name": "bobcut", + "directions": 4 + }, + { + "name": "bowlcut", + "directions": 4 + }, + { + "name": "bowlcut2", + "directions": 4 + }, + { + "name": "braid", + "directions": 4 + }, + { + "name": "braid2", + "directions": 4 + }, + { + "name": "braided", + "directions": 4 + }, + { + "name": "braidfront", + "directions": 4 + }, + { + "name": "braidtail", + "directions": 4 + }, + { + "name": "bun", + "directions": 4 + }, + { + "name": "bun3", + "directions": 4 + }, + { + "name": "bunhead2", + "directions": 4 + }, + { + "name": "business", + "directions": 4 + }, + { + "name": "business2", + "directions": 4 + }, + { + "name": "business3", + "directions": 4 + }, + { + "name": "business4", + "directions": 4 + }, + { + "name": "buzzcut", + "directions": 4 + }, + { + "name": "c", + "directions": 4 + }, + { + "name": "classicciabusiness", + "directions": 4 + }, + { + "name": "classiccia", + "directions": 4 + }, + { + "name": "classiccornrows", + "directions": 4 + }, + { + "name": "classicfloorlength_bedhead", + "directions": 4 + }, + { + "name": "classicmodern", + "directions": 4 + }, + { + "name": "classicmulder", + "directions": 4 + }, + { + "name": "classicwisp", + "directions": 4 + }, + { + "name": "cia", + "directions": 4 + }, + { + "name": "coffeehouse", + "directions": 4 + }, + { + "name": "combover", + "directions": 4 + }, + { + "name": "cornrowbraid", + "directions": 4 + }, + { + "name": "cornrowbun", + "directions": 4 + }, + { + "name": "cornrows", + "directions": 4 + }, + { + "name": "cornrows2", + "directions": 4 + }, + { + "name": "cornrowtail", + "directions": 4 + }, + { + "name": "country", + "directions": 4 + }, + { + "name": "crewcut", + "directions": 4 + }, + { + "name": "crewcut2", + "directions": 4 + }, + { + "name": "curls", + "directions": 4 + }, + { + "name": "d", + "directions": 4 + }, + { + "name": "dandypompadour", + "directions": 4 + }, + { + "name": "devilock", + "directions": 4 + }, + { + "name": "doublebun", + "directions": 4 + }, + { + "name": "doublebun_long", + "directions": 4 + }, + { + "name": "dreads", + "directions": 4 + }, + { + "name": "drillhair", + "directions": 4 + }, + { + "name": "drillhairextended", + "directions": 4 + }, + { + "name": "drillruru", + "directions": 4 + }, + { + "name": "e", + "directions": 4 + }, + { + "name": "emo2", + "directions": 4 + }, + { + "name": "emofringe", + "directions": 4 + }, + { + "name": "f", + "directions": 4 + }, + { + "name": "father", + "directions": 4 + }, + { + "name": "feather", + "directions": 4 + }, + { + "name": "flair", + "directions": 4 + }, + { + "name": "floorlength_bedhead", + "directions": 4 + }, + { + "name": "fringetail", + "directions": 4 + }, + { + "name": "gelled", + "directions": 4 + }, + { + "name": "gentle", + "directions": 4 + }, + { + "name": "halfbang", + "directions": 4 + }, + { + "name": "halfbang2", + "directions": 4 + }, + { + "name": "halfshaved", + "directions": 4 + }, + { + "name": "hbraid", + "directions": 4 + }, + { + "name": "hedgehog", + "directions": 4 + }, + { + "name": "highfade", + "directions": 4 + }, + { + "name": "highponytail", + "directions": 4 + }, + { + "name": "himecut", + "directions": 4 + }, + { + "name": "himecut2", + "directions": 4 + }, + { + "name": "himeup", + "directions": 4 + }, + { + "name": "hitop", + "directions": 4 + }, + { + "name": "jade", + "directions": 4 + }, + { + "name": "jensen", + "directions": 4 + }, + { + "name": "joestar", + "directions": 4 + }, + { + "name": "kagami", + "directions": 4 + }, + { + "name": "keanu", + "directions": 4 + }, + { + "name": "kusanagi", + "directions": 4 + }, + { + "name": "largebun", + "directions": 4 + }, + { + "name": "lbangs", + "directions": 4 + }, + { + "name": "long", + "directions": 4 + }, + { + "name": "long2", + "directions": 4 + }, + { + "name": "long3", + "directions": 4 + }, + { + "name": "longbundled", + "directions": 4 + }, + { + "name": "long_bedhead", + "directions": 4 + }, + { + "name": "long_bedhead2", + "directions": 4 + }, + { + "name": "longest", + "directions": 4 + }, + { + "name": "longest2", + "directions": 4 + }, + { + "name": "longfringe", + "directions": 4 + }, + { + "name": "longovereye", + "directions": 4 + }, + { + "name": "longsidepart", + "directions": 4 + }, + { + "name": "longstraightponytail", + "directions": 4 + }, + { + "name": "lowfade", + "directions": 4 + }, + { + "name": "manbun", + "directions": 4 + }, + { + "name": "medfade", + "directions": 4 + }, + { + "name": "mediumsidepart", + "directions": 4 + }, + { + "name": "megaeyebrows", + "directions": 4 + }, + { + "name": "messy", + "directions": 4 + }, + { + "name": "modern", + "directions": 4 + }, + { + "name": "mulder", + "directions": 4 + }, + { + "name": "nitori", + "directions": 4 + }, + { + "name": "nofade", + "directions": 4 + }, + { + "name": "odango", + "directions": 4 + }, + { + "name": "ombre", + "directions": 4 + }, + { + "name": "oneshoulder", + "directions": 4 + }, + { + "name": "oxton", + "directions": 4 + }, + { + "name": "part", + "directions": 4 + }, + { + "name": "parted", + "directions": 4 + }, + { + "name": "pigtails", + "directions": 4 + }, + { + "name": "pigtails2", + "directions": 4 + }, + { + "name": "pixie", + "directions": 4 + }, + { + "name": "pompadour", + "directions": 4 + }, + { + "name": "ponytail", + "directions": 4 + }, + { + "name": "ponytail2", + "directions": 4 + }, + { + "name": "ponytail3", + "directions": 4 + }, + { + "name": "ponytail4", + "directions": 4 + }, + { + "name": "ponytail5", + "directions": 4 + }, + { + "name": "ponytail6", + "directions": 4 + }, + { + "name": "ponytail7", + "directions": 4 + }, + { + "name": "poofy", + "directions": 4 + }, + { + "name": "protagonist", + "directions": 4 + }, + { + "name": "quiff", + "directions": 4 + }, + { + "name": "reversemohawk", + "directions": 4 + }, + { + "name": "ronin", + "directions": 4 + }, + { + "name": "rosa", + "directions": 4 + }, + { + "name": "sargeant", + "directions": 4 + }, + { + "name": "shaved", + "directions": 4 + }, + { + "name": "shavedmohawk", + "directions": 4 + }, + { + "name": "shavedpart", + "directions": 4 + }, + { + "name": "shortbangs", + "directions": 4 + }, + { + "name": "shortbraid", + "directions": 4 + }, + { + "name": "shorthair2", + "directions": 4 + }, + { + "name": "shorthair3", + "directions": 4 + }, + { + "name": "shorthair9", + "directions": 4 + }, + { + "name": "shorthime", + "directions": 4 + }, + { + "name": "shortovereye", + "directions": 4 + }, + { + "name": "sidecut", + "directions": 4 + }, + { + "name": "sidetail", + "directions": 4 + }, + { + "name": "sidetail2", + "directions": 4 + }, + { + "name": "sidetail3", + "directions": 4 + }, + { + "name": "sidetail4", + "directions": 4 + }, + { + "name": "skinhead", + "directions": 4 + }, + { + "name": "spiky", + "directions": 4 + }, + { + "name": "spikyponytail", + "directions": 4 + }, + { + "name": "spookylong", + "directions": 4 + }, + { + "name": "stail", + "directions": 4 + }, + { + "name": "swept", + "directions": 4 + }, + { + "name": "swept2", + "directions": 4 + }, + { + "name": "shoulderlengthovereye", + "directions": 4 + }, + { + "name": "thinning", + "directions": 4 + }, + { + "name": "thinningfront", + "directions": 4 + }, + { + "name": "thinningrear", + "directions": 4 + }, + { + "name": "tightbun", + "directions": 4 + }, + { + "name": "topknot", + "directions": 4 + }, + { + "name": "tressshoulder", + "directions": 4 + }, + { + "name": "trimflat", + "directions": 4 + }, + { + "name": "trimmed", + "directions": 4 + }, + { + "name": "twintail", + "directions": 4 + }, + { + "name": "twostrands", + "directions": 4 + }, + { + "name": "undercut", + "directions": 4 + }, + { + "name": "undercutleft", + "directions": 4 + }, + { + "name": "undercutright", + "directions": 4 + }, + { + "name": "unkept", + "directions": 4 + }, + { + "name": "veryshortovereyealternate", + "directions": 4 + }, + { + "name": "vlong", + "directions": 4 + }, + { + "name": "vlongfringe", + "directions": 4 + }, + { + "name": "volaju", + "directions": 4 + }, + { + "name": "wisp", + "directions": 4 + }, + { + "name": "uneven", + "directions": 4 + }, + { + "name": "tailed", + "directions": 4 + }, + { + "name": "classiclong2", + "directions": 4 + }, + { + "name": "classiclong3", + "directions": 4 + }, + { + "name": "classicafro", + "directions": 4 + }, + { + "name": "longeremo", + "directions": 4 + }, + { + "name": "frenchbraid", + "directions": 4 + } + ] + } diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/modern.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/modern.png new file mode 100644 index 0000000000..dcd10140a8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/modern.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mulder.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mulder.png new file mode 100644 index 0000000000..1e83cd8a59 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/mulder.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nitori.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nitori.png new file mode 100644 index 0000000000..5aa1ce748b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nitori.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nofade.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nofade.png new file mode 100644 index 0000000000..8d2b5bf703 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/nofade.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/odango.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/odango.png new file mode 100644 index 0000000000..a5580c5e7c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/odango.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ombre.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ombre.png new file mode 100644 index 0000000000..33a3fbafbd Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ombre.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oneshoulder.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oneshoulder.png new file mode 100644 index 0000000000..e5a37c4f2e Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oneshoulder.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oxton.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oxton.png new file mode 100644 index 0000000000..29afa9ee88 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/oxton.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/part.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/part.png new file mode 100644 index 0000000000..e96811a16d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/part.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/parted.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/parted.png new file mode 100644 index 0000000000..8931dec647 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/parted.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails.png new file mode 100644 index 0000000000..ed56808356 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails2.png new file mode 100644 index 0000000000..1fb33d4c51 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pigtails2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pixie.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pixie.png new file mode 100644 index 0000000000..3cdb4b3cf1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pixie.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pompadour.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pompadour.png new file mode 100644 index 0000000000..ac83f28dd1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/pompadour.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail.png new file mode 100644 index 0000000000..5bff29fa82 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail2.png new file mode 100644 index 0000000000..ad24f5706d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail3.png new file mode 100644 index 0000000000..62315e4195 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail4.png new file mode 100644 index 0000000000..e0b4255cb7 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail4.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail5.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail5.png new file mode 100644 index 0000000000..477b1fef28 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail5.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail6.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail6.png new file mode 100644 index 0000000000..951880deae Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail6.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail7.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail7.png new file mode 100644 index 0000000000..4f1a80aced Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ponytail7.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/poofy.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/poofy.png new file mode 100644 index 0000000000..b96d15dc74 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/poofy.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/protagonist.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/protagonist.png new file mode 100644 index 0000000000..14d284e46b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/protagonist.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/quiff.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/quiff.png new file mode 100644 index 0000000000..53279b461a Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/quiff.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/reversemohawk.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/reversemohawk.png new file mode 100644 index 0000000000..bd21b9dae0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/reversemohawk.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ronin.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ronin.png new file mode 100644 index 0000000000..ee5146d88c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/ronin.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/rosa.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/rosa.png new file mode 100644 index 0000000000..25fb89be19 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/rosa.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sargeant.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sargeant.png new file mode 100644 index 0000000000..5a071d3d1b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sargeant.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shaved.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shaved.png new file mode 100644 index 0000000000..25c45b8b71 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shaved.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedmohawk.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedmohawk.png new file mode 100644 index 0000000000..8395ae19e1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedmohawk.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedpart.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedpart.png new file mode 100644 index 0000000000..8fd7cc031b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shavedpart.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbangs.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbangs.png new file mode 100644 index 0000000000..d0a999c45c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbangs.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbraid.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbraid.png new file mode 100644 index 0000000000..5a0dbfa277 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortbraid.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair2.png new file mode 100644 index 0000000000..cca03aec16 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair3.png new file mode 100644 index 0000000000..f7e2a74a4b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair9.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair9.png new file mode 100644 index 0000000000..02852dfae6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthair9.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthime.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthime.png new file mode 100644 index 0000000000..307fceed8c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shorthime.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortovereye.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortovereye.png new file mode 100644 index 0000000000..c7ae6a3740 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shortovereye.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shoulderlengthovereye.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shoulderlengthovereye.png new file mode 100644 index 0000000000..fbc3586c45 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/shoulderlengthovereye.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidecut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidecut.png new file mode 100644 index 0000000000..01fa7a8009 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidecut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail.png new file mode 100644 index 0000000000..60498b9a45 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail2.png new file mode 100644 index 0000000000..9708672a6f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail3.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail3.png new file mode 100644 index 0000000000..377b2c30ab Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail3.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail4.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail4.png new file mode 100644 index 0000000000..2dd2ac965b Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/sidetail4.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/skinhead.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/skinhead.png new file mode 100644 index 0000000000..c88a9540c6 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/skinhead.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spiky.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spiky.png new file mode 100644 index 0000000000..e9aeb7e440 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spiky.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spikyponytail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spikyponytail.png new file mode 100644 index 0000000000..8f439234da Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spikyponytail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spookylong.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spookylong.png new file mode 100644 index 0000000000..0fb0a878d1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/spookylong.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/stail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/stail.png new file mode 100644 index 0000000000..db9f7b439d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/stail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept.png new file mode 100644 index 0000000000..bc079308db Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept2.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept2.png new file mode 100644 index 0000000000..492f38f437 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/swept2.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tailed.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tailed.png new file mode 100644 index 0000000000..b957423e4c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tailed.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinning.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinning.png new file mode 100644 index 0000000000..962191356d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinning.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningfront.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningfront.png new file mode 100644 index 0000000000..8be8e18821 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningfront.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningrear.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningrear.png new file mode 100644 index 0000000000..d5393072cf Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/thinningrear.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tightbun.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tightbun.png new file mode 100644 index 0000000000..03a4862ba3 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tightbun.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/topknot.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/topknot.png new file mode 100644 index 0000000000..ccd5fa43e7 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/topknot.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tressshoulder.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tressshoulder.png new file mode 100644 index 0000000000..2d1d3a2864 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/tressshoulder.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimflat.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimflat.png new file mode 100644 index 0000000000..750e0b51d8 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimflat.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimmed.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimmed.png new file mode 100644 index 0000000000..3159d98817 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/trimmed.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twintail.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twintail.png new file mode 100644 index 0000000000..22e8ab0d2a Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twintail.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twostrands.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twostrands.png new file mode 100644 index 0000000000..eb1eca23ad Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/twostrands.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercut.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercut.png new file mode 100644 index 0000000000..76ccd58fcf Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercut.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutleft.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutleft.png new file mode 100644 index 0000000000..e997d6ce93 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutleft.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutright.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutright.png new file mode 100644 index 0000000000..1b6659e13f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/undercutright.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/uneven.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/uneven.png new file mode 100644 index 0000000000..e2d2c99914 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/uneven.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/unkept.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/unkept.png new file mode 100644 index 0000000000..a849ea073f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/unkept.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/veryshortovereyealternate.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/veryshortovereyealternate.png new file mode 100644 index 0000000000..ba253a5a41 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/veryshortovereyealternate.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlong.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlong.png new file mode 100644 index 0000000000..736da454b1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlong.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlongfringe.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlongfringe.png new file mode 100644 index 0000000000..8044c5c9d1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/vlongfringe.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/volaju.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/volaju.png new file mode 100644 index 0000000000..92802d4bc0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/volaju.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/wisp.png b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/wisp.png new file mode 100644 index 0000000000..cc48199908 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Customization/thaven/thaven_hair.rsi/wisp.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/eyes.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/eyes.png new file mode 100644 index 0000000000..6c3e479bb4 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/eyes.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/hands.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/hands.png new file mode 100644 index 0000000000..e4ea6c7328 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/hands.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/head.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/head.png new file mode 100644 index 0000000000..6c3e479bb4 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/head.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/jumpsuit.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/jumpsuit.png new file mode 100644 index 0000000000..3ae792ad5c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/jumpsuit.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/mask.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/mask.png new file mode 100644 index 0000000000..6c3e479bb4 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/mask.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json new file mode 100644 index 0000000000..2a30242817 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/meta.json @@ -0,0 +1,42 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "by widgetbeck", + "size": { + "x": 32, + "y": 32 + }, + "load": { + "srgb": false + }, + "states": [ + { + "name": "jumpsuit", + "directions": 4 + }, + { + "name": "outerclothing_hardsuit", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + }, + { + "name": "neck", + "directions": 4 + }, + { + "name": "mask", + "directions": 4 + }, + { + "name": "head", + "directions": 4 + }, + { + "name": "hands", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/neck.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/neck.png new file mode 100644 index 0000000000..647ff28ea9 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/neck.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/outerclothing_hardsuit.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/outerclothing_hardsuit.png new file mode 100644 index 0000000000..a1c72a02fe Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/displacement.rsi/outerclothing_hardsuit.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-left.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-left.png new file mode 100644 index 0000000000..a8a9832113 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-left.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-right.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-right.png new file mode 100644 index 0000000000..2a237f173d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-inhand-right.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-thaven.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-thaven.png new file mode 100644 index 0000000000..2b2cc2fc09 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/brain-thaven.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/meta.json new file mode 100644 index 0000000000..33560e8bc2 --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Species/Thaven/organs.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by Nimfar11 (Github) for Space Station 14, modified by Widgetbeck", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "brain-thaven" + }, + { + "name": "brain-inhand-left", + "directions": 4 + }, + { + "name": "brain-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/eyes.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/eyes.png new file mode 100644 index 0000000000..7602bd54ab Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/eyes.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/full.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/full.png new file mode 100644 index 0000000000..9d2c746b63 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/full.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/head.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/head.png new file mode 100644 index 0000000000..36a3740e57 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/head.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_arm.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_arm.png new file mode 100644 index 0000000000..4effd64216 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_arm.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_foot.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_foot.png new file mode 100644 index 0000000000..a1029f4cf1 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_foot.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_hand.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_hand.png new file mode 100644 index 0000000000..f698637d0f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_hand.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_leg.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_leg.png new file mode 100644 index 0000000000..d2b4c62f20 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/l_leg.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/meta.json b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/meta.json new file mode 100644 index 0000000000..45bc565f8a --- /dev/null +++ b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/meta.json @@ -0,0 +1,62 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Art by Widgetbeck", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "full" + }, + { + "name": "head", + "directions": 4 + }, + { + "name": "l_arm", + "directions": 4 + }, + { + "name": "l_foot", + "directions": 4 + }, + { + "name": "l_hand", + "directions": 4 + }, + { + "name": "l_leg", + "directions": 4 + }, + { + "name": "r_arm", + "directions": 4 + }, + { + "name": "r_foot", + "directions": 4 + }, + { + "name": "r_hand", + "directions": 4 + }, + { + "name": "r_leg", + "directions": 4 + }, + { + "name": "torso_m", + "directions": 4 + }, + { + "name": "torso_f", + "directions": 4 + }, + { + "name": "eyes", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_arm.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_arm.png new file mode 100644 index 0000000000..db3e3eecf0 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_arm.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_foot.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_foot.png new file mode 100644 index 0000000000..aca12db26d Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_foot.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_hand.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_hand.png new file mode 100644 index 0000000000..8051570e6f Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_hand.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_leg.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_leg.png new file mode 100644 index 0000000000..8345a65482 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/r_leg.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_f.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_f.png new file mode 100644 index 0000000000..ac55287b97 Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_f.png differ diff --git a/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_m.png b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_m.png new file mode 100644 index 0000000000..8f485e0f9c Binary files /dev/null and b/Resources/Textures/_Impstation/Mobs/Species/Thaven/parts.rsi/torso_m.png differ diff --git a/Tools/markings/markings/prototypes.go b/Tools/markings/markings/prototypes.go index cd969ab457..bfa16bb477 100644 --- a/Tools/markings/markings/prototypes.go +++ b/Tools/markings/markings/prototypes.go @@ -15,6 +15,7 @@ const ( HumanFacialHair = "HumanFacialHair" VoxFacialHair = "VoxFacialHair" VoxHair = "VoxHair" + ThavenHair = "ThavenHair" // DeltaV ) func init() { @@ -23,6 +24,7 @@ func init() { accessoryLayerMapping[HumanFacialHair] = FacialHair accessoryLayerMapping[VoxFacialHair] = FacialHair accessoryLayerMapping[VoxHair] = Hair + accessoryLayerMapping[ThavenHair] = Hair // DeltaV } type SpriteAccessoryPrototype struct {