Port Thaven From DeltaV, Who Ported It From Impstation (#2132)
<!-- This is a semi-strict format, you can add/remove sections as needed but the order/format should be kept the same Remove these comments before submitting --> # Description <!-- Explain this PR in as much detail as applicable Some example prompts to consider: How might this affect the game? The codebase? What might be some alternatives to this? How/Who does this benefit/hurt [the game/codebase]? --> https://github.com/DeltaV-Station/Delta-v/pull/2948 and a bunch of other PR's --- # TODO <!-- A list of everything you have to do before this PR is "complete" You probably won't have to complete everything before merging but it's good to leave future references --> - [x] fix markings causing a crash - [x] fix displacement maps causing a crash --- <!-- This is default collapsed, readers click to expand it and see all your media The PR media section can get very large at times, so this is a good way to keep it clean The title is written using HTML tags The title must be within the <summary> tags or you won't see it --> <details><summary><h1>Media</h1></summary> <p>  https://github.com/user-attachments/assets/033bec46-24c5-44ad-8e5c-7aae2ed85b03 https://github.com/user-attachments/assets/6fd647b5-2ee0-45e6-a124-9b90c35e2153  </p> </details> --- # Changelog <!-- You can add an author after the `🆑` to change the name that appears in the changelog (ex: `🆑 Death`) Leaving it blank will default to your GitHub display name This includes all available types for the changelog --> 🆑 - add: Port Thaven from DeltaV, who ported it from Impstation (cherry picked from commit 86a8e4d940eac038505c66a1649b376f6956cade)
30
Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml
Normal file
@@ -0,0 +1,30 @@
|
||||
<BoxContainer
|
||||
xmlns="https://spacestation14.io"
|
||||
xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
|
||||
xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls"
|
||||
HorizontalExpand="True"
|
||||
Orientation="Vertical"
|
||||
>
|
||||
<customControls:HSeparator></customControls:HSeparator>
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<LineEdit Name="ThavenMoodTitle" Access="Public" Margin="5 0 0 0" />
|
||||
<PanelContainer
|
||||
Margin="20 10 0 0"
|
||||
MinHeight="128"
|
||||
>
|
||||
<PanelContainer.PanelOverride>
|
||||
<graphics:StyleBoxFlat BackgroundColor="#1B1B1B"></graphics:StyleBoxFlat>
|
||||
</PanelContainer.PanelOverride>
|
||||
<BoxContainer Orientation="Horizontal" SeparationOverride="5">
|
||||
<TextEdit Name="ThavenMoodContent" Access="Public" HorizontalExpand="True" Editable="True" MinWidth="500" MinHeight="80"></TextEdit>
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
</BoxContainer>
|
||||
<BoxContainer Orientation="Horizontal" Margin="0 5 0 0" MaxHeight="64" Align="Begin">
|
||||
<Button Name="MoveUp" Access="Public" Text="{Loc thaven-mood-admin-ui-move-up}" StyleClasses="OpenRight"></Button>
|
||||
<Button Name="MoveDown" Access="Public" Text="{Loc thaven-mood-admin-ui-move-down}" StyleClasses="OpenLeft"></Button>
|
||||
</BoxContainer>
|
||||
<BoxContainer Orientation="Horizontal" Align="End" Margin="0 10 5 10">
|
||||
<Button Name="Delete" Access="Public" Text="{Loc thaven-mood-admin-ui-delete}" ModulateSelfOverride="Red"></Button>
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
22
Content.Client/_Impstation/Thaven/Eui/MoodContainer.xaml.cs
Normal file
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
22
Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml
Normal file
@@ -0,0 +1,22 @@
|
||||
<controls:FancyWindow
|
||||
xmlns="https://spacestation14.io"
|
||||
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
||||
Title="{Loc thaven-moods-admin-ui-title}"
|
||||
MinSize="560 400"
|
||||
>
|
||||
<!-->
|
||||
this shit does not layout properly unless I put the horizontal boxcontainer inside of a vertical one
|
||||
????
|
||||
<!-->
|
||||
<BoxContainer Orientation="Vertical">
|
||||
<BoxContainer Orientation="Horizontal" Align="End">
|
||||
<Button Name="NewMoodButton" Text="{Loc thaven-moods-admin-ui-new-mood}" MaxSize="256 64" StyleClasses="OpenRight"></Button>
|
||||
<Button Name="SaveButton" Text="{Loc thaven-moods-admin-ui-save}" MaxSize="256 64" Access="Public" StyleClasses="OpenLeft"></Button>
|
||||
</BoxContainer>
|
||||
</BoxContainer>
|
||||
<BoxContainer Orientation="Vertical" Margin="4 60 0 0">
|
||||
<ScrollContainer VerticalExpand="True" HorizontalExpand="True" HScrollEnabled="False">
|
||||
<BoxContainer Orientation="Vertical" Name="MoodContainer" Access="Public" VerticalExpand="True" />
|
||||
</ScrollContainer>
|
||||
</BoxContainer>
|
||||
</controls:FancyWindow>
|
||||
94
Content.Client/_Impstation/Thaven/Eui/ThavenMoodUi.xaml.cs
Normal file
@@ -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<ThavenMood> _moods = new();
|
||||
|
||||
public ThavenMoodUi()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
NewMoodButton.OnPressed += _ => AddNewMood();
|
||||
}
|
||||
|
||||
private void AddNewMood()
|
||||
{
|
||||
MoodContainer.AddChild(new MoodContainer());
|
||||
}
|
||||
|
||||
public List<ThavenMood> GetMoods()
|
||||
{
|
||||
var newMoods = new List<ThavenMood>();
|
||||
|
||||
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<ThavenMood> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
48
Content.Client/_Impstation/Thaven/Eui/ThavenMoodsEui.cs
Normal file
@@ -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<EntityManager>();
|
||||
|
||||
_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();
|
||||
}
|
||||
}
|
||||
14
Content.Client/_Impstation/Thaven/MoodDisplay.xaml
Normal file
@@ -0,0 +1,14 @@
|
||||
<Control xmlns="https://spacestation14.io"
|
||||
xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls"
|
||||
Margin="0 0 0 10">
|
||||
<PanelContainer VerticalExpand="True" StyleClasses="BackgroundDark">
|
||||
<BoxContainer Orientation="Vertical"
|
||||
HorizontalExpand="True"
|
||||
VerticalExpand="True"
|
||||
Margin="5 5 5 5">
|
||||
<RichTextLabel Name="MoodNameLabel" StyleClasses="LabelKeyText"/>
|
||||
<customControls:HSeparator Margin="0 5 0 5"/>
|
||||
<RichTextLabel Name="MoodDescLabel"/>
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
</Control>
|
||||
36
Content.Client/_Impstation/Thaven/MoodDisplay.xaml.cs
Normal file
@@ -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());
|
||||
}
|
||||
}
|
||||
7
Content.Client/_Impstation/Thaven/ThavenMoodSystem.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
using Content.Shared._Impstation.Thaven;
|
||||
|
||||
namespace Content.Client._Impstation.Thaven;
|
||||
|
||||
public sealed partial class ThavenMoodSystem : SharedThavenMoodSystem
|
||||
{
|
||||
}
|
||||
@@ -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<ThavenMood>? _moods;
|
||||
private List<ThavenMood>? _sharedMoods;
|
||||
|
||||
public ThavenMoodsBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
|
||||
{
|
||||
_owner = owner;
|
||||
}
|
||||
|
||||
protected override void Open()
|
||||
{
|
||||
base.Open();
|
||||
|
||||
_menu = this.CreateWindow<ThavenMoodsMenu>();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
27
Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml
Normal file
@@ -0,0 +1,27 @@
|
||||
<controls:FancyWindow xmlns="https://spacestation14.io"
|
||||
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
||||
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
|
||||
Title="{Loc 'moods-ui-menu-title'}"
|
||||
MinSize="200 100"
|
||||
SetSize="450 515">
|
||||
<BoxContainer Orientation="Vertical"
|
||||
HorizontalExpand="True"
|
||||
VerticalExpand="True">
|
||||
<PanelContainer VerticalExpand="True" Margin="10 10 10 10">
|
||||
<PanelContainer.PanelOverride>
|
||||
<gfx:StyleBoxFlat BackgroundColor="#1B1B1E"/>
|
||||
</PanelContainer.PanelOverride>
|
||||
<ScrollContainer
|
||||
HScrollEnabled="False"
|
||||
HorizontalExpand="True"
|
||||
VerticalExpand="True">
|
||||
<BoxContainer
|
||||
Name="MoodDisplayContainer"
|
||||
Orientation="Vertical"
|
||||
VerticalExpand="True"
|
||||
Margin="10 10 10 0">
|
||||
</BoxContainer>
|
||||
</ScrollContainer>
|
||||
</PanelContainer>
|
||||
</BoxContainer>
|
||||
</controls:FancyWindow>
|
||||
27
Content.Client/_Impstation/Thaven/ThavenMoodsMenu.xaml.cs
Normal file
@@ -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));
|
||||
}
|
||||
}
|
||||
@@ -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<IEntityManager>();
|
||||
var thavenSystem = entMan.System<ThavenMoodsSystem>();
|
||||
var protoMan = server.ResolveDependency<IPrototypeManager>();
|
||||
|
||||
var dataset = protoMan.Index<DatasetPrototype>("ThreeValueSet");
|
||||
var moodProto = protoMan.Index<ThavenMoodPrototype>("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<IEntityManager>();
|
||||
var thavenSystem = entMan.System<ThavenMoodsSystem>();
|
||||
var protoMan = server.ResolveDependency<IPrototypeManager>();
|
||||
|
||||
var dataset = protoMan.Index<DatasetPrototype>("ThreeValueSet");
|
||||
var moodProto = protoMan.Index<ThavenMoodPrototype>("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();
|
||||
}
|
||||
}
|
||||
@@ -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<ICommonSession, List<EditSolutionsEui>> _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<ThavenMoodsComponent>(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<Verb> args)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
23
Content.Server/StationEvents/Events/ThavenMoodUpset.cs
Normal file
@@ -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<ThavenMoodUpsetRuleComponent>
|
||||
{
|
||||
[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<ThavenMoodsComponent>();
|
||||
while (thavens.MoveNext(out var thavenUid, out var thavenComp))
|
||||
{
|
||||
_thavenMoods.AddWildcardMood((thavenUid, thavenComp));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace Content.Server.Speech.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Removes contractions (e.g. "can't," "don't," etc.)
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class NoContractionsAccentComponent : Component
|
||||
{
|
||||
|
||||
}
|
||||
@@ -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<NoContractionsAccentComponent, AccentGetEvent>(OnAccent);
|
||||
}
|
||||
|
||||
private void OnAccent(EntityUid uid, NoContractionsAccentComponent component, AccentGetEvent args)
|
||||
{
|
||||
var message = args.Message;
|
||||
|
||||
args.Message = message;
|
||||
}
|
||||
}
|
||||
373
Content.Server/_Impstation/Thaven/ThavenMoodSystem.cs
Normal file
@@ -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<ThavenMood> SharedMoods => _sharedMoods.AsReadOnly();
|
||||
private readonly List<ThavenMood> _sharedMoods = new();
|
||||
|
||||
|
||||
[ValidatePrototypeId<DatasetPrototype>]
|
||||
private const string SharedDataset = "ThavenMoodsShared";
|
||||
|
||||
[ValidatePrototypeId<DatasetPrototype>]
|
||||
private const string YesAndDataset = "ThavenMoodsYesAnd";
|
||||
|
||||
[ValidatePrototypeId<DatasetPrototype>]
|
||||
private const string NoAndDataset = "ThavenMoodsNoAnd";
|
||||
|
||||
[ValidatePrototypeId<DatasetPrototype>]
|
||||
private const string WildcardDataset = "ThavenMoodsWildcard";
|
||||
|
||||
[ValidatePrototypeId<EntityPrototype>]
|
||||
private const string ActionViewMoods = "ActionViewMoods";
|
||||
|
||||
[ValidatePrototypeId<WeightedRandomPrototype>]
|
||||
private const string RandomThavenMoodDataset = "RandomThavenMoodDataset";
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
NewSharedMoods();
|
||||
|
||||
SubscribeLocalEvent<ThavenMoodsComponent, ComponentStartup>(OnThavenMoodInit);
|
||||
SubscribeLocalEvent<ThavenMoodsComponent, ComponentShutdown>(OnThavenMoodShutdown);
|
||||
SubscribeLocalEvent<ThavenMoodsComponent, ToggleMoodsScreenEvent>(OnToggleMoodsScreen);
|
||||
SubscribeLocalEvent<ThavenMoodsComponent, BoundUIOpenedEvent>(OnBoundUIOpened);
|
||||
SubscribeLocalEvent<RoundRestartCleanupEvent>((_) => 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<ThavenMoodsComponent>();
|
||||
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<ActorComponent>(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<ThavenMood>? currentMoods = null, HashSet<string>? conflicts = null)
|
||||
{
|
||||
var dataset = _proto.Index<DatasetPrototype>(datasetProto);
|
||||
var choices = dataset.Values.ToList();
|
||||
|
||||
if (currentMoods == null)
|
||||
currentMoods = new HashSet<ThavenMood>();
|
||||
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<ThavenMoodPrototype>(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<ThavenMoodsComponent> ent)
|
||||
{
|
||||
if (!TryComp<ActorComponent>(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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a ThavenMood instance from the given ThavenMoodPrototype, and rolls
|
||||
/// its mood vars.
|
||||
/// </summary>
|
||||
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<string>();
|
||||
|
||||
foreach (var (name, datasetID) in proto.MoodVarDatasets)
|
||||
{
|
||||
var dataset = _proto.Index<DatasetPrototype>(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<DatasetPrototype>(dataset)));
|
||||
}
|
||||
}
|
||||
|
||||
return mood;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the given mood prototype conflicts with the current moods, and
|
||||
/// adds the mood if it does not.
|
||||
/// </summary>
|
||||
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<WeightedRandomPrototype>(RandomThavenMoodDataset).Pick();
|
||||
|
||||
return TryAddRandomMood(uid, datasetProto, comp);
|
||||
}
|
||||
|
||||
public void SetMoods(EntityUid uid, IEnumerable<ThavenMood> 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<string> GetConflicts(IEnumerable<ThavenMood> moods)
|
||||
{
|
||||
var conflicts = new HashSet<string>();
|
||||
|
||||
foreach (var mood in moods)
|
||||
{
|
||||
conflicts.Add(mood.ProtoId); // Specific moods shouldn't be added twice
|
||||
conflicts.UnionWith(mood.Conflicts);
|
||||
}
|
||||
|
||||
return conflicts;
|
||||
}
|
||||
|
||||
public HashSet<string> 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<string> GetMoodProtoSet(IEnumerable<ThavenMood> moods)
|
||||
{
|
||||
var moodProtos = new HashSet<string>();
|
||||
foreach (var mood in moods)
|
||||
if (!string.IsNullOrEmpty(mood.ProtoId))
|
||||
moodProtos.Add(mood.ProtoId);
|
||||
return moodProtos;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return a list of the moods that are affecting this entity.
|
||||
/// </summary>
|
||||
public List<ThavenMood> GetActiveMoods(EntityUid uid, ThavenMoodsComponent? comp = null, bool includeShared = true)
|
||||
{
|
||||
if (!Resolve(uid, ref comp))
|
||||
return [];
|
||||
|
||||
if (includeShared && comp.FollowsSharedMoods)
|
||||
{
|
||||
return new List<ThavenMood>(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<ThavenMoodsComponent> ent)
|
||||
{
|
||||
TryAddRandomMood(ent.Owner, WildcardDataset, ent.Comp);
|
||||
}
|
||||
// End DeltaV: thaven mood upsets
|
||||
}
|
||||
73
Content.Server/_Impstation/Thaven/ThavenMoodsEui.cs
Normal file
@@ -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<ThavenMood> _moods = new();
|
||||
private List<ThavenMood> _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;
|
||||
}
|
||||
}
|
||||
15
Content.Shared/_Impstation/CCVar/ImpCCVars.cs
Normal file
@@ -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
|
||||
{
|
||||
/// <summary>
|
||||
/// The number of shared moods to give thaven by default.
|
||||
/// </summary>
|
||||
public static readonly CVarDef<uint> ThavenSharedMoodCount =
|
||||
CVarDef.Create<uint>("thaven.shared_mood_count", 1, CVar.SERVERONLY);
|
||||
}
|
||||
18
Content.Shared/_Impstation/Thaven/SharedThavenMoodSystem.cs
Normal file
@@ -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<ThavenMoodsComponent, GotEmaggedEvent>(OnEmagged); DeltaV: no emagging thavens
|
||||
}
|
||||
protected virtual void OnEmagged(EntityUid uid, ThavenMoodsComponent comp, ref GotEmaggedEvent args)
|
||||
{
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
@@ -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<ThavenMood> 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<ThavenMood> Moods;
|
||||
public List<ThavenMood> SharedMoods;
|
||||
|
||||
public ThavenMoodsBuiState(List<ThavenMood> moods, List<ThavenMood> sharedMoods)
|
||||
{
|
||||
Moods = moods;
|
||||
SharedMoods = sharedMoods;
|
||||
}
|
||||
}
|
||||
91
Content.Shared/_Impstation/Thaven/ThavenMoodPrototype.cs
Normal file
@@ -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<ThavenMoodPrototype> ProtoId = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// A locale string of the mood name.
|
||||
/// </summary>
|
||||
[DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
|
||||
public string MoodName = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// A locale string of the mood description. Gets passed to
|
||||
/// <see cref="Loc.GetString"/> with <see cref="MoodVars"/>.
|
||||
/// </summary>
|
||||
[DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
|
||||
public string MoodDesc = string.Empty;
|
||||
|
||||
[DataField(serverOnly: true, customTypeSerializer: typeof(PrototypeIdHashSetSerializer<ThavenMoodPrototype>))]
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public HashSet<string> Conflicts = new();
|
||||
|
||||
/// <summary>
|
||||
/// Additional localized words for the <see cref="MoodDesc"/>, for things like random
|
||||
/// verbs and nouns.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public Dictionary<string, string> 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
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[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;
|
||||
|
||||
/// <summary>
|
||||
/// A list of mood IDs that this mood will conflict with.
|
||||
/// </summary>
|
||||
[DataField("conflicts", customTypeSerializer: typeof(PrototypeIdHashSetSerializer<ThavenMoodPrototype>))]
|
||||
public HashSet<string> Conflicts = new();
|
||||
|
||||
/// <summary>
|
||||
/// Extra mood variables that will be randomly chosen and provided
|
||||
/// to the <see cref="Loc.GetString"/> call on <see cref="ThavenMood.MoodDesc"/>.
|
||||
/// </summary>
|
||||
[DataField("moodVars", customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer<string, DatasetPrototype>))]
|
||||
public Dictionary<string, string> MoodVarDatasets = new();
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
[DataField("allowDuplicateMoodVars"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool AllowDuplicateMoodVars = false;
|
||||
}
|
||||
29
Content.Shared/_Impstation/Thaven/ThavenMoodsEuiState.cs
Normal file
@@ -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<ThavenMood> Moods { get; }
|
||||
public NetEntity Target { get; }
|
||||
public ThavenMoodsEuiState(List<ThavenMood> moods, NetEntity target)
|
||||
{
|
||||
Moods = moods;
|
||||
Target = target;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class ThavenMoodsSaveMessage : EuiMessageBase
|
||||
{
|
||||
public List<ThavenMood> Moods { get; }
|
||||
public NetEntity Target { get; }
|
||||
|
||||
public ThavenMoodsSaveMessage(List<ThavenMood> moods, NetEntity target)
|
||||
{
|
||||
Moods = moods;
|
||||
Target = target;
|
||||
}
|
||||
}
|
||||
4
Resources/Audio/_Impstation/Thaven/attributions.yml
Normal file
@@ -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"
|
||||
BIN
Resources/Audio/_Impstation/Thaven/moods_changed.ogg
Normal file
14
Resources/Locale/en-US/DeltaV/markings/thaven.ftl
Normal file
@@ -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)
|
||||
407
Resources/Locale/en-US/_Impstation/accent/nocontractions.ftl
Normal file
@@ -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
|
||||
207
Resources/Locale/en-US/_Impstation/accessories/thaven-hair.ftl
Normal file
@@ -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
|
||||
76
Resources/Locale/en-US/_Impstation/datasets/names/thaven.ftl
Normal file
@@ -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
|
||||
27
Resources/Locale/en-US/_Impstation/markings/thaven.ftl
Normal file
@@ -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)
|
||||
|
||||
3
Resources/Locale/en-US/_Impstation/species/species.ftl
Normal file
@@ -0,0 +1,3 @@
|
||||
## Species Names
|
||||
|
||||
species-name-thaven = Thaven
|
||||
103
Resources/Locale/en-US/_Impstation/thavens/no-and.ftl
Normal file
@@ -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.
|
||||
53
Resources/Locale/en-US/_Impstation/thavens/shared.ftl
Normal file
@@ -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...
|
||||
14
Resources/Locale/en-US/_Impstation/thavens/ui.ftl
Normal file
@@ -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.
|
||||
80
Resources/Locale/en-US/_Impstation/thavens/wildcard.ftl
Normal file
@@ -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.
|
||||
164
Resources/Locale/en-US/_Impstation/thavens/yes-and.ftl
Normal file
@@ -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.
|
||||
}
|
||||
2
Resources/Locale/en-US/_Impstation/traits/traits.ftl
Normal file
@@ -0,0 +1,2 @@
|
||||
trait-nocontractions-name = No contractions
|
||||
trait-nocontractions-desc = You are (mostly) incapable of using contractions.
|
||||
@@ -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
|
||||
@@ -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
|
||||
offset: -0.2, 0.1 # 0625
|
||||
|
||||
- type: typingIndicator
|
||||
id: Thaven
|
||||
spritePath: /Textures/_EE/Effects/speech.rsi
|
||||
typingState: thaven0
|
||||
offset: 0, 0.1 # 0625
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -1672,4 +1672,4 @@
|
||||
- type: FoodSequenceElement
|
||||
entries:
|
||||
Burger: XenoCutlet
|
||||
Taco: XenoCutlet
|
||||
Taco: XenoCutlet
|
||||
@@ -16,6 +16,8 @@
|
||||
- Plasmaman
|
||||
- Chitinid
|
||||
- Tajaran
|
||||
# ImpStation additions
|
||||
- Thaven
|
||||
|
||||
- type: guideEntry
|
||||
id: Arachnid
|
||||
|
||||
9
Resources/Prototypes/_DV/GameRules/events.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
- type: entity
|
||||
parent: BaseGlimmerEvent
|
||||
id: ThavenMoodUpset
|
||||
components:
|
||||
- type: GlimmerEvent
|
||||
minimumGlimmer: 500
|
||||
glimmerBurnLower: 30
|
||||
glimmerBurnUpper: 70
|
||||
- type: ThavenMoodUpsetRule
|
||||
@@ -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
|
||||
14
Resources/Prototypes/_Impstation/Actions/spelfs.yml
Normal file
@@ -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
|
||||
9
Resources/Prototypes/_Impstation/Body/Organs/thaven.yml
Normal file
@@ -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
|
||||
90
Resources/Prototypes/_Impstation/Body/Parts/thaven.yml
Normal file
@@ -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"
|
||||
50
Resources/Prototypes/_Impstation/Body/Prototypes/thaven.yml
Normal file
@@ -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
|
||||
11
Resources/Prototypes/_Impstation/Damage/thaven.yml
Normal file
@@ -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
|
||||
79
Resources/Prototypes/_Impstation/Datasets/Names/thaven.yml
Normal file
@@ -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
|
||||
@@ -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
|
||||
@@ -900,4 +900,231 @@
|
||||
followSkinColor: true
|
||||
sprites:
|
||||
- sprite: _Impstation/Mobs/Customization/markingsbundle1.rsi
|
||||
state: chitinidbeetlehorn2
|
||||
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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,5 @@
|
||||
- type: entity
|
||||
save: false
|
||||
name: Urist McEars
|
||||
parent: BaseMobThaven
|
||||
id: MobThaven
|
||||
@@ -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
|
||||
4
Resources/Prototypes/_Impstation/Guidebook/species.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
- type: guideEntry
|
||||
id: Thaven
|
||||
name: Thaven
|
||||
text: "/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml"
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,6 @@
|
||||
- type: weightedRandom
|
||||
id: RandomThavenMoodDataset
|
||||
weights:
|
||||
ThavenMoodsYesAnd: 0.45
|
||||
ThavenMoodsNoAnd: 0.45
|
||||
ThavenMoodsWildcard: 0.1
|
||||
172
Resources/Prototypes/_Impstation/Species/thaven.yml
Normal file
@@ -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
|
||||
11
Resources/Prototypes/_Impstation/Traits/speech.yml.txt
Normal file
@@ -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
|
||||
110
Resources/Prototypes/_Impstation/Voice/speech_emote_sounds.yml
Normal file
@@ -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
|
||||
1284
Resources/Prototypes/_Impstation/datasets.yml
Normal file
@@ -15,6 +15,7 @@
|
||||
<GuideEntityEmbed Entity="MobSlimePerson" Caption="Slime Person"/>
|
||||
<GuideEntityEmbed Entity="MobShadowkinDummy" Caption="Shadowkin"/>
|
||||
<GuideEntityEmbed Entity="MobChitinid" Caption="Chitinid"/>
|
||||
<GuideEntityEmbed Entity="MobThaven" Caption="Thaven"/>
|
||||
</Box>
|
||||
|
||||
# Parkstation specific species
|
||||
|
||||
36
Resources/ServerInfo/_Impstation/Guidebook/Mobs/Thaven.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<Document>
|
||||
# Thaven
|
||||
|
||||
<Box>
|
||||
<GuideEntityEmbed Entity="MobThaven" Caption=""/>
|
||||
</Box>
|
||||
|
||||
[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
|
||||
<Box>
|
||||
<GuideEntityEmbed Entity="PositronicBrain" Caption=""/>
|
||||
</Box>
|
||||
|
||||
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
|
||||
</Document>
|
||||
@@ -40,6 +40,23 @@
|
||||
},
|
||||
{
|
||||
"name": "chitinid2"
|
||||
},
|
||||
{
|
||||
"name": "thaven1"
|
||||
},
|
||||
{
|
||||
"name": "thaven2"
|
||||
},
|
||||
{
|
||||
"name": "thaven0",
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.3,
|
||||
0.3,
|
||||
0.3
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
BIN
Resources/Textures/DeltaV/Effects/speech.rsi/thaven0.png
Normal file
|
After Width: | Height: | Size: 758 B |
BIN
Resources/Textures/DeltaV/Effects/speech.rsi/thaven1.png
Normal file
|
After Width: | Height: | Size: 626 B |
BIN
Resources/Textures/DeltaV/Effects/speech.rsi/thaven2.png
Normal file
|
After Width: | Height: | Size: 626 B |
BIN
Resources/Textures/Effects/creampie.rsi/creampie_thaven.png
Normal file
|
After Width: | Height: | Size: 458 B |
@@ -83,6 +83,11 @@
|
||||
{
|
||||
"name": "creampie_xenomorph",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "creampie_spelf",
|
||||
"name": "creampie_thaven",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 761 B |
|
After Width: | Height: | Size: 686 B |
|
After Width: | Height: | Size: 826 B |
|
After Width: | Height: | Size: 601 B |
|
After Width: | Height: | Size: 789 B |
|
After Width: | Height: | Size: 675 B |
35
Resources/Textures/Mobs/Customization/ears.rsi/meta.json
Normal file
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 224 B |
|
After Width: | Height: | Size: 180 B |
|
After Width: | Height: | Size: 180 B |
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 234 B |
|
After Width: | Height: | Size: 406 B |
28
Resources/Textures/_EE/Effects/speech.rsi/meta.json
Normal file
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/_EE/Effects/speech.rsi/thaven0.png
Normal file
|
After Width: | Height: | Size: 582 B |
BIN
Resources/Textures/_EE/Effects/speech.rsi/thaven1.png
Normal file
|
After Width: | Height: | Size: 476 B |
BIN
Resources/Textures/_EE/Effects/speech.rsi/thaven2.png
Normal file
|
After Width: | Height: | Size: 470 B |
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 871 B |
|
After Width: | Height: | Size: 683 B |
|
After Width: | Height: | Size: 766 B |
|
After Width: | Height: | Size: 888 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 753 B |