Felishit (#37)
* Мне слишком мало платят * ЖРИ МЫШЕЙ * Лок рас * Але оп * Блять --------- Co-authored-by: Mona Hmiza <>
@@ -6,6 +6,7 @@ using Content.Client.Message;
|
||||
using Content.Client.Players.PlayTimeTracking;
|
||||
using Content.Client.Stylesheets;
|
||||
using Content.Client.UserInterface.Controls;
|
||||
using Content.Client.White.Sponsors;
|
||||
using Content.Shared.CCVar;
|
||||
using Content.Shared.GameTicking;
|
||||
using Content.Shared.Humanoid;
|
||||
@@ -54,6 +55,11 @@ namespace Content.Client.Preferences.UI
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class HumanoidProfileEditor : Control
|
||||
{
|
||||
|
||||
//WD-EDIT
|
||||
private readonly SponsorsManager _sponsorsManager;
|
||||
//WD-EDIT
|
||||
|
||||
private readonly IClientPreferencesManager _preferencesManager;
|
||||
private readonly IEntityManager _entMan;
|
||||
private readonly IConfigurationManager _configurationManager;
|
||||
@@ -114,6 +120,7 @@ namespace Content.Client.Preferences.UI
|
||||
IEntityManager entityManager, IConfigurationManager configurationManager)
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
_sponsorsManager = IoCManager.Resolve<SponsorsManager>();
|
||||
_prototypeManager = prototypeManager;
|
||||
_entMan = entityManager;
|
||||
_preferencesManager = preferencesManager;
|
||||
@@ -188,9 +195,23 @@ namespace Content.Client.Preferences.UI
|
||||
#region Species
|
||||
|
||||
_speciesList = prototypeManager.EnumeratePrototypes<SpeciesPrototype>().Where(o => o.RoundStart).ToList();
|
||||
|
||||
for (var i = 0; i < _speciesList.Count; i++)
|
||||
{
|
||||
var name = Loc.GetString(_speciesList[i].Name);
|
||||
//WD EDIT
|
||||
var specie = _speciesList[i];
|
||||
var name = Loc.GetString(specie.Name);
|
||||
|
||||
if (specie.SponsorOnly)
|
||||
{
|
||||
if(_sponsorsManager.TryGetInfo(out var info) && info.AllowedMarkings.Contains(specie.Name))
|
||||
{
|
||||
CSpeciesButton.AddItem(name, i);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
//WD EDIT
|
||||
CSpeciesButton.AddItem(name, i);
|
||||
}
|
||||
|
||||
|
||||
12
Content.Server/White/Felinid/CoughingUpHairballComponent.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class CoughingUpHairballComponent : Component
|
||||
{
|
||||
[DataField("accumulator")]
|
||||
public float Accumulator = 0f;
|
||||
|
||||
[DataField("coughUpTime")]
|
||||
public TimeSpan CoughUpTime = TimeSpan.FromSeconds(2.15); // length of hairball.ogg
|
||||
}
|
||||
}
|
||||
22
Content.Server/White/Felinid/FelinidComponent.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Actions.ActionTypes;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class FelinidComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The hairball prototype to use.
|
||||
/// </summary>
|
||||
[DataField("hairballPrototype", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string HairballPrototype = "Hairball";
|
||||
|
||||
[DataField("hairballAction")]
|
||||
public InstantAction? HairballAction;
|
||||
|
||||
public EntityUid? PotentialTarget = null;
|
||||
}
|
||||
}
|
||||
6
Content.Server/White/Felinid/FelinidFoodComponent.cs
Normal file
@@ -0,0 +1,6 @@
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class FelinidFoodComponent : Component
|
||||
{}
|
||||
}
|
||||
195
Content.Server/White/Felinid/FelinidSystem.cs
Normal file
@@ -0,0 +1,195 @@
|
||||
using Content.Shared.Actions;
|
||||
using Content.Shared.Audio;
|
||||
using Content.Shared.StatusEffect;
|
||||
using Content.Shared.Throwing;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Actions.ActionTypes;
|
||||
using Content.Shared.IdentityManagement;
|
||||
using Content.Shared.Nutrition.Components;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Medical;
|
||||
using Content.Server.Nutrition.EntitySystems;
|
||||
using Content.Server.Nutrition.Components;
|
||||
using Content.Server.Chemistry.EntitySystems;
|
||||
using Content.Server.Popups;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
public sealed class FelinidSystem : EntitySystem
|
||||
{
|
||||
|
||||
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
|
||||
[Dependency] private readonly HungerSystem _hungerSystem = default!;
|
||||
[Dependency] private readonly VomitSystem _vomitSystem = default!;
|
||||
[Dependency] private readonly SolutionContainerSystem _solutionSystem = default!;
|
||||
[Dependency] private readonly IRobustRandom _robustRandom = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<FelinidComponent, ComponentInit>(OnInit);
|
||||
SubscribeLocalEvent<FelinidComponent, HairballActionEvent>(OnHairball);
|
||||
SubscribeLocalEvent<FelinidComponent, EatMouseActionEvent>(OnEatMouse);
|
||||
SubscribeLocalEvent<FelinidComponent, DidEquipHandEvent>(OnEquipped);
|
||||
SubscribeLocalEvent<FelinidComponent, DidUnequipHandEvent>(OnUnequipped);
|
||||
SubscribeLocalEvent<HairballComponent, ThrowDoHitEvent>(OnHairballHit);
|
||||
SubscribeLocalEvent<HairballComponent, GettingPickedUpAttemptEvent>(OnHairballPickupAttempt);
|
||||
}
|
||||
|
||||
private Queue<EntityUid> RemQueue = new();
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
foreach (var cat in RemQueue)
|
||||
{
|
||||
RemComp<CoughingUpHairballComponent>(cat);
|
||||
}
|
||||
RemQueue.Clear();
|
||||
|
||||
foreach (var (hairballComp, catComp) in EntityQuery<CoughingUpHairballComponent, FelinidComponent>())
|
||||
{
|
||||
hairballComp.Accumulator += frameTime;
|
||||
if (hairballComp.Accumulator < hairballComp.CoughUpTime.TotalSeconds)
|
||||
continue;
|
||||
|
||||
hairballComp.Accumulator = 0;
|
||||
SpawnHairball(hairballComp.Owner, catComp);
|
||||
RemQueue.Enqueue(hairballComp.Owner);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnInit(EntityUid uid, FelinidComponent component, ComponentInit args)
|
||||
{
|
||||
if (!_prototypeManager.TryIndex<InstantActionPrototype>("HairballAction", out var hairball))
|
||||
return;
|
||||
|
||||
component.HairballAction = new InstantAction(hairball);
|
||||
_actionsSystem.AddAction(uid, component.HairballAction, uid);
|
||||
}
|
||||
|
||||
private void OnEquipped(EntityUid uid, FelinidComponent component, DidEquipHandEvent args)
|
||||
{
|
||||
if (!HasComp<FelinidFoodComponent>(args.Equipped))
|
||||
return;
|
||||
|
||||
component.PotentialTarget = args.Equipped;
|
||||
|
||||
if (_prototypeManager.TryIndex<InstantActionPrototype>("EatMouse", out var eatMouse))
|
||||
_actionsSystem.AddAction(uid, new InstantAction(eatMouse), null);
|
||||
}
|
||||
|
||||
private void OnUnequipped(EntityUid uid, FelinidComponent component, DidUnequipHandEvent args)
|
||||
{
|
||||
if (args.Unequipped == component.PotentialTarget)
|
||||
{
|
||||
component.PotentialTarget = null;
|
||||
if (_prototypeManager.TryIndex<InstantActionPrototype>("EatMouse", out var eatMouse))
|
||||
_actionsSystem.RemoveAction(uid, eatMouse);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHairball(EntityUid uid, FelinidComponent component, HairballActionEvent args)
|
||||
{
|
||||
if (_inventorySystem.TryGetSlotEntity(uid, "mask", out var maskUid) &&
|
||||
EntityManager.TryGetComponent<IngestionBlockerComponent>(maskUid, out var blocker) &&
|
||||
blocker.Enabled)
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString("hairball-mask", ("mask", maskUid)), uid, uid);
|
||||
return;
|
||||
}
|
||||
|
||||
_popupSystem.PopupEntity(Loc.GetString("hairball-cough", ("name", Identity.Entity(uid, EntityManager))), uid);
|
||||
SoundSystem.Play("/Audio/White/Felinid/hairball.ogg", Filter.Pvs(uid), uid, AudioHelpers.WithVariation(0.15f));
|
||||
|
||||
EnsureComp<CoughingUpHairballComponent>(uid);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnEatMouse(EntityUid uid, FelinidComponent component, EatMouseActionEvent args)
|
||||
{
|
||||
if (component.PotentialTarget == null)
|
||||
return;
|
||||
|
||||
if (!TryComp<HungerComponent>(uid, out var hunger))
|
||||
return;
|
||||
|
||||
if (hunger.CurrentThreshold == Shared.Nutrition.Components.HungerThreshold.Overfed)
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString("food-system-you-cannot-eat-any-more"), uid, uid, Shared.Popups.PopupType.SmallCaution);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_inventorySystem.TryGetSlotEntity(uid, "mask", out var maskUid) &&
|
||||
EntityManager.TryGetComponent<IngestionBlockerComponent>(maskUid, out var blocker) &&
|
||||
blocker.Enabled)
|
||||
{
|
||||
_popupSystem.PopupEntity(Loc.GetString("hairball-mask", ("mask", maskUid)), uid, uid, Shared.Popups.PopupType.SmallCaution);
|
||||
return;
|
||||
}
|
||||
|
||||
if (component.HairballAction != null)
|
||||
{
|
||||
_actionsSystem.SetCharges(component.HairballAction, component.HairballAction.Charges + 1);
|
||||
_actionsSystem.SetEnabled(component.HairballAction, true);
|
||||
}
|
||||
Del(component.PotentialTarget.Value);
|
||||
component.PotentialTarget = null;
|
||||
|
||||
SoundSystem.Play("/Audio/Items/eatfood.ogg", Filter.Pvs(uid), uid, AudioHelpers.WithVariation(0.15f));
|
||||
|
||||
_hungerSystem.ModifyHunger(uid, 70f, hunger);
|
||||
|
||||
if (_prototypeManager.TryIndex<InstantActionPrototype>("EatMouse", out var eatMouse))
|
||||
_actionsSystem.RemoveAction(uid, eatMouse);
|
||||
}
|
||||
|
||||
private void SpawnHairball(EntityUid uid, FelinidComponent component)
|
||||
{
|
||||
var hairball = EntityManager.SpawnEntity(component.HairballPrototype, Transform(uid).Coordinates);
|
||||
var hairballComp = Comp<HairballComponent>(hairball);
|
||||
|
||||
if (TryComp<BloodstreamComponent>(uid, out var bloodstream))
|
||||
{
|
||||
var temp = bloodstream.ChemicalSolution.SplitSolution(20);
|
||||
|
||||
if (_solutionSystem.TryGetSolution(hairball, hairballComp.SolutionName, out var hairballSolution))
|
||||
{
|
||||
_solutionSystem.TryAddSolution(hairball, hairballSolution, temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void OnHairballHit(EntityUid uid, HairballComponent component, ThrowDoHitEvent args)
|
||||
{
|
||||
if (HasComp<FelinidComponent>(args.Target) || !HasComp<StatusEffectsComponent>(args.Target))
|
||||
return;
|
||||
if (_robustRandom.Prob(0.2f))
|
||||
_vomitSystem.Vomit(args.Target);
|
||||
}
|
||||
|
||||
private void OnHairballPickupAttempt(EntityUid uid, HairballComponent component, GettingPickedUpAttemptEvent args)
|
||||
{
|
||||
if (HasComp<FelinidComponent>(args.User) || !HasComp<StatusEffectsComponent>(args.User))
|
||||
return;
|
||||
|
||||
if (_robustRandom.Prob(0.2f))
|
||||
{
|
||||
_vomitSystem.Vomit(args.User);
|
||||
args.Cancel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class HairballActionEvent : InstantActionEvent {}
|
||||
public sealed class EatMouseActionEvent : InstantActionEvent {}
|
||||
}
|
||||
8
Content.Server/White/Felinid/HairballComponent.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Content.Server.Abilities.Felinid
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class HairballComponent : Component
|
||||
{
|
||||
public string SolutionName = "hairball";
|
||||
}
|
||||
}
|
||||
@@ -125,6 +125,9 @@ public sealed partial class SpeciesPrototype : IPrototype
|
||||
/// </summary>
|
||||
[DataField("maxAge")]
|
||||
public int MaxAge = 120;
|
||||
|
||||
[DataField("sponsorOnly")]
|
||||
public bool SponsorOnly { get; } = false;
|
||||
}
|
||||
|
||||
public enum SpeciesNaming : byte
|
||||
|
||||
@@ -379,6 +379,12 @@ namespace Content.Shared.Preferences
|
||||
speciesPrototype = prototypeManager.Index<SpeciesPrototype>(Species);
|
||||
}
|
||||
|
||||
if (speciesPrototype.SponsorOnly && !sponsorMarkings.Contains(Species))
|
||||
{
|
||||
Species = SharedHumanoidAppearanceSystem.DefaultSpecies;
|
||||
speciesPrototype = prototypeManager.Index<SpeciesPrototype>(Species);
|
||||
}
|
||||
|
||||
var sex = Sex switch
|
||||
{
|
||||
Sex.Male => Sex.Male,
|
||||
|
||||
10
Content.Shared/White/Item/PseudoItemInsertDoAfterEvent.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Robust.Shared.Serialization;
|
||||
using Content.Shared.DoAfter;
|
||||
|
||||
namespace Content.Shared.Item.PseudoItem
|
||||
{
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class PseudoItemInsertDoAfterEvent : SimpleDoAfterEvent
|
||||
{
|
||||
}
|
||||
}
|
||||
BIN
Resources/Audio/White/Felinid/hairball.ogg
Normal file
1
Resources/Audio/White/Felinid/license.txt
Normal file
@@ -0,0 +1 @@
|
||||
hairball.ogg taken from https://en.wikipedia.org/wiki/File:Common_house_cat_coughing_hairball.ogv CC-BY-SA-3.0
|
||||
24
Resources/Audio/White/Voice/Felinid/attributions.yml
Normal file
@@ -0,0 +1,24 @@
|
||||
- files: ["cat_hiss1.ogg", "cat_hiss2.ogg"]
|
||||
license: "CC-BY-4.0"
|
||||
copyright: "Original sound by https://freesound.org/people/secondbody/ - cut out two clips of cat hissing, cleaned up, and converted to ogg."
|
||||
source: "https://freesound.org/people/secondbody/sounds/50357/"
|
||||
|
||||
- files: ["cat_meow1.ogg", "cat_meow2.ogg", "cat_meow3.ogg"]
|
||||
license: "CC-BY-3.0"
|
||||
copyright: "Original sound by https://freesound.org/people/ignotus/ - cut out three clips of cat meowing, cleaned up, and converted to ogg."
|
||||
source: "https://freesound.org/people/ignotus/sounds/26104/"
|
||||
|
||||
- files: ["cat_mew1.ogg", "cat_mew2.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: "Original sound by https://freesound.org/people/videog/ - cut out two clips of kittens mewing, cleaned up, and converted to ogg."
|
||||
source: "https://freesound.org/people/videog/sounds/149191/"
|
||||
|
||||
- files: ["cat_purr1.ogg"]
|
||||
license: "CC-BY-4.0"
|
||||
copyright: "Original sound by https://freesound.org/people/klangstrand/ - cut out short clip, fade in and out, converted to ogg."
|
||||
source: "https://freesound.org/people/klangstrand/sounds/213951/"
|
||||
|
||||
- files: ["cat_growl1.ogg"]
|
||||
license: "CC0-1.0"
|
||||
copyright: "Original sound by https://freesound.org/people/Zabuhailo/ - fade in and out, converted to ogg."
|
||||
source: "https://freesound.org/people/Zabuhailo/sounds/146968/"
|
||||
BIN
Resources/Audio/White/Voice/Felinid/cat_growl1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_hiss1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_hiss2.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_meow1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_meow2.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_meow3.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_mew1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_mew2.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_purr1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_scream1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_scream2.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_scream3.ogg
Normal file
BIN
Resources/Audio/White/Voice/Felinid/cat_wilhelm.ogg
Normal file
4
Resources/Audio/White/Voice/Felinid/license.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
cat_scream1.ogg licensed under CC0 1.0 taken from Queen_Westeros at https://freesound.org/people/queen_westeros/sounds/222590/
|
||||
cat_scream2.ogg licensed under CC4.0 taken from InspectorJ at https://freesound.org/people/InspectorJ/sounds/415209/
|
||||
cat_scream3.ogg licensed under CC sampling plus 1.0 taken from Hamface at https://freesound.org/people/Hamface/sounds/98669/
|
||||
cat_wilhelm.ogg used with apologies to type moon
|
||||
@@ -6,3 +6,4 @@ species-name-reptilian = Ящер
|
||||
species-name-slime = Слаймолюд
|
||||
species-name-diona = Диона
|
||||
species-name-skrell = Скрелл
|
||||
species-name-felinid = Фелинид
|
||||
|
||||
65
Resources/Locale/ru-RU/white/species/felinid/felinid.ftl
Normal file
@@ -0,0 +1,65 @@
|
||||
hairball-action = Откашлять комок шерсти.
|
||||
hairball-action-desc = Люди это не любят.
|
||||
hairball-mask = Сначала сними {$mask}.
|
||||
hairball-cough = {CAPITALIZE(THE($name))} пытается выкашлять комок шесрти!
|
||||
|
||||
action-name-eat-mouse = Съесть мышь.
|
||||
action-description-eat-mouse = Съешьте мышь в своей руке, получая питательные вещества и заряд комка шерсти.
|
||||
|
||||
|
||||
marking-FelinidEarsBasic = Обычные ушки
|
||||
marking-FelinidEarsBasic-basic_outer = Внешняя часть уха
|
||||
marking-FelinidEarsBasic-basic_inner = Внутренняя часть уха
|
||||
|
||||
marking-FelinidEarsCurled = Завитые ушки
|
||||
marking-FelinidEarsCurled-curled_outer = Внешняя часть уха
|
||||
marking-FelinidEarsCurled-curled_inner = Внутренняя часть уха
|
||||
|
||||
marking-FelinidEarsDroopy = Висячие ушки
|
||||
marking-FelinidEarsDroopy-droopy_outer = Внешняя часть уха
|
||||
marking-FelinidEarsDroopy-droopy_inner = Внутренняя часть уха
|
||||
|
||||
marking-FelinidEarsFuzzy = Пушистые ушки
|
||||
marking-FelinidEarsFuzzy-basic_outer = Внешняя часть уха
|
||||
marking-FelinidEarsFuzzy-fuzzy_inner = Пух
|
||||
|
||||
marking-FelinidEarsStubby = Stubby Ears
|
||||
marking-FelinidEarsStubby-stubby_outer = Внешняя часть уха
|
||||
marking-FelinidEarsStubby-stubby_inner = Внутренняя часть уха
|
||||
|
||||
marking-FelinidEarsTall = Высокие ушки
|
||||
marking-FelinidEarsTall-tall_outer = Внешняя часть уха
|
||||
marking-FelinidEarsTall-tall_inner = Внутренняя часть уха
|
||||
marking-FelinidEarsTall-tall_fuzz = Пух
|
||||
|
||||
marking-FelinidEarsTorn = Порванные ушки
|
||||
marking-FelinidEarsTorn-torn_outer = Внешняя часть уха
|
||||
marking-FelinidEarsTorn-torn_inner = Внутренняя часть уха
|
||||
|
||||
marking-FelinidEarsWide = Широкие ушки
|
||||
marking-FelinidEarsWide-wide_outer = Внешняя часть уха
|
||||
marking-FelinidEarsWide-wide_inner = Внутренняя часть уха
|
||||
|
||||
marking-FelinidTailBasic = Обычный хвостик
|
||||
marking-FelinidTailBasic-basic_tail_tip = Кончик
|
||||
marking-FelinidTailBasic-basic_tail_stripes_even = Полосы, четные
|
||||
marking-FelinidTailBasic-basic_tail_stripes_odd = Полосы, нечетные
|
||||
|
||||
marking-FelinidTailBasicWithBow = Хвостик с бантом
|
||||
marking-FelinidTailBasicWithBow-basic_tail_tip = Кончик
|
||||
marking-FelinidTailBasicWithBow-basic_tail_stripes_even = Полосы, четные
|
||||
marking-FelinidTailBasicWithBow-basic_tail_stripes_odd = Полосы, нечетные
|
||||
marking-FelinidTailBasicWithBow-basic_bow = Бант
|
||||
|
||||
marking-FelinidTailBasicWithBell = Хвостик с колокольчиком
|
||||
marking-FelinidTailBasicWithBell-basic_tail_tip = Кончик
|
||||
marking-FelinidTailBasicWithBell-basic_tail_stripes_even = Полосы, четные
|
||||
marking-FelinidTailBasicWithBell-basic_tail_stripes_odd = Полосы, нечетные
|
||||
marking-FelinidTailBasicWithBell-basic_bell = Колокольчик
|
||||
|
||||
marking-FelinidTailBasicWithBowAndBell = Хвостик с колокольчиком и бантиком
|
||||
marking-FelinidTailBasicWithBowAndBell-basic_tail_tip = Кончик
|
||||
marking-FelinidTailBasicWithBowAndBell-basic_tail_stripes_even = Полосы, четные
|
||||
marking-FelinidTailBasicWithBowAndBell-basic_tail_stripes_odd = Полосы, нечетные
|
||||
marking-FelinidTailBasicWithBowAndBell-basic_bow = Бант
|
||||
marking-FelinidTailBasicWithBowAndBell-basic_bell = Колокольчик
|
||||
@@ -1339,6 +1339,7 @@
|
||||
components:
|
||||
- type: Body
|
||||
prototype: Mouse
|
||||
- type: FelinidFood
|
||||
- type: GhostRole
|
||||
makeSentient: true
|
||||
allowSpeech: true
|
||||
@@ -2550,7 +2551,7 @@
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- Syndicate
|
||||
|
||||
|
||||
- type: entity
|
||||
name: space cat
|
||||
id: MobCatSpace
|
||||
|
||||
@@ -155,6 +155,7 @@
|
||||
description: He's da mini rat. He don't make da roolz.
|
||||
noSpawn: true #Must be configured to a King or the AI breaks.
|
||||
components:
|
||||
- type: FelinidFood
|
||||
- type: CombatMode
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed : 3.5
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
supervisors: job-supervisors-centcom
|
||||
whitelistedSpecies:
|
||||
- Human
|
||||
- Dwarf
|
||||
- Felinid
|
||||
canBeAntag: false
|
||||
accessGroups:
|
||||
- AllAccess
|
||||
|
||||
@@ -67,6 +67,46 @@
|
||||
Whistle:
|
||||
collection: Whistles
|
||||
|
||||
- type: emoteSounds
|
||||
id: MaleFelinid
|
||||
params:
|
||||
variation: 0.125
|
||||
sounds:
|
||||
Scream:
|
||||
collection: FelinidScreams
|
||||
Laugh:
|
||||
collection: MaleLaugh
|
||||
Hiss:
|
||||
collection: FelinidHisses
|
||||
Meow:
|
||||
collection: FelinidMeows
|
||||
Mew:
|
||||
collection: FelinidMews
|
||||
Growl:
|
||||
collection: FelinidGrowls
|
||||
Purr:
|
||||
collection: FelinidPurrs
|
||||
|
||||
- type: emoteSounds
|
||||
id: FemaleFelinid
|
||||
params:
|
||||
variation: 0.125
|
||||
sounds:
|
||||
Scream:
|
||||
collection: FelinidScreams
|
||||
Laugh:
|
||||
collection: FemaleLaugh
|
||||
Hiss:
|
||||
collection: FelinidHisses
|
||||
Meow:
|
||||
collection: FelinidMeows
|
||||
Mew:
|
||||
collection: FelinidMews
|
||||
Growl:
|
||||
collection: FelinidGrowls
|
||||
Purr:
|
||||
collection: FelinidPurrs
|
||||
|
||||
- type: emoteSounds
|
||||
id: UnisexReptilian
|
||||
params:
|
||||
|
||||
49
Resources/Prototypes/White/Body/Prototypes/felinid.yml
Normal file
@@ -0,0 +1,49 @@
|
||||
- type: body
|
||||
id: Felinid
|
||||
name: "felinid"
|
||||
root: torso
|
||||
slots:
|
||||
head:
|
||||
part: HeadHuman
|
||||
connections:
|
||||
- torso
|
||||
organs:
|
||||
brain: OrganHumanBrain
|
||||
eyes: OrganHumanEyes
|
||||
torso:
|
||||
part: TorsoHuman
|
||||
connections:
|
||||
- left arm
|
||||
- right arm
|
||||
- left leg
|
||||
- right leg
|
||||
organs:
|
||||
heart: OrganAnimalHeart
|
||||
lungs: OrganHumanLungs
|
||||
stomach: OrganReptilianStomach
|
||||
liver: OrganAnimalLiver
|
||||
kidneys: OrganHumanKidneys
|
||||
right arm:
|
||||
part: RightArmHuman
|
||||
connections:
|
||||
- right hand
|
||||
left arm:
|
||||
part: LeftArmHuman
|
||||
connections:
|
||||
- left hand
|
||||
right hand:
|
||||
part: RightHandHuman
|
||||
left hand:
|
||||
part: LeftHandHuman
|
||||
right leg:
|
||||
part: RightLegHuman
|
||||
connections:
|
||||
- right foot
|
||||
left leg:
|
||||
part: LeftLegHuman
|
||||
connections:
|
||||
- left foot
|
||||
right foot:
|
||||
part: RightFootHuman
|
||||
left foot:
|
||||
part: LeftFootHuman
|
||||
50
Resources/Prototypes/White/Emotes/felinid_emotes.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
# vocal emotes
|
||||
- type: emote
|
||||
id: Hiss
|
||||
category: Vocal
|
||||
chatMessages: [Шипит.]
|
||||
chatTriggers:
|
||||
- шипит
|
||||
- шипит.
|
||||
- шипит!
|
||||
- шипит
|
||||
- шипит
|
||||
|
||||
- type: emote
|
||||
id: Meow
|
||||
category: Vocal
|
||||
chatMessages: [Мяукает.]
|
||||
chatTriggers:
|
||||
- мяукает
|
||||
- мяукает.
|
||||
- мяукает!
|
||||
- ня
|
||||
- ня.
|
||||
- ня!
|
||||
|
||||
- type: emote
|
||||
id: Mew
|
||||
category: Vocal
|
||||
chatMessages: [Мявкает.]
|
||||
chatTriggers:
|
||||
- мявкает
|
||||
- мявкает.
|
||||
- мявкает!
|
||||
|
||||
- type: emote
|
||||
id: Growl
|
||||
category: Vocal
|
||||
chatMessages: [рычит.]
|
||||
chatTriggers:
|
||||
- рычит
|
||||
- рычит.
|
||||
- рычит!
|
||||
|
||||
- type: emote
|
||||
id: Purr
|
||||
category: Vocal
|
||||
chatMessages: [Мурчит.]
|
||||
chatTriggers:
|
||||
- мурчит
|
||||
- мурчит.
|
||||
- мурчит!
|
||||
@@ -0,0 +1,153 @@
|
||||
# Felinid Ears
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsBasic
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: basic_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: basic_inner
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsCurled
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: curled_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: curled_inner
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsDroopy
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: droopy_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: droopy_inner
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsFuzzy
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: basic_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: fuzzy_inner
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsStubby
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: stubby_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: stubby_inner
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsTall
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: tall_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: tall_inner
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: tall_fuzz
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsTorn
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: torn_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: torn_inner
|
||||
|
||||
- type: marking
|
||||
id: FelinidEarsWide
|
||||
bodyPart: HeadTop
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: wide_outer
|
||||
- sprite: White/Mobs/Customization/felinid_ears.rsi
|
||||
state: wide_inner
|
||||
|
||||
# Felinid Tails
|
||||
|
||||
- type: marking
|
||||
id: FelinidTailBasic
|
||||
bodyPart: Tail
|
||||
markingCategory: Tail
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_tip
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_even
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_odd
|
||||
|
||||
- type: marking
|
||||
id: FelinidTailBasicWithBow
|
||||
bodyPart: Tail
|
||||
markingCategory: Tail
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_tip
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_even
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_odd
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_bow
|
||||
|
||||
- type: marking
|
||||
id: FelinidTailBasicWithBell
|
||||
bodyPart: Tail
|
||||
markingCategory: Tail
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_tip
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_even
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_odd
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_bell
|
||||
|
||||
- type: marking
|
||||
id: FelinidTailBasicWithBowAndBell
|
||||
bodyPart: Tail
|
||||
markingCategory: Tail
|
||||
speciesRestriction: [Felinid]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_tip
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_even
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_tail_stripes_odd
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_bow
|
||||
- sprite: White/Mobs/Customization/felinid_tails.rsi
|
||||
state: basic_bell
|
||||
42
Resources/Prototypes/White/Mobs/Player/felinid.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
- type: entity
|
||||
save: false
|
||||
name: Player felinid
|
||||
parent: MobFelinidBase
|
||||
id: MobFelinid
|
||||
components:
|
||||
- type: CombatMode
|
||||
canDisarm: true
|
||||
- type: Mind
|
||||
showExamineInfo: true
|
||||
- type: Input
|
||||
context: "human"
|
||||
- type: MobMover
|
||||
- type: InputMover
|
||||
- type: Respirator
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: 1.5
|
||||
damageRecovery:
|
||||
types:
|
||||
Asphyxiation: -1.5
|
||||
- type: Alerts
|
||||
- type: Vocal
|
||||
wilhelm: "/Audio/Voice/Felinid/cat_wilhelm.ogg"
|
||||
sounds:
|
||||
Male: MaleFelinid
|
||||
Female: FemaleFelinid
|
||||
Unsexed: MaleFelinid
|
||||
- type: Actions
|
||||
- type: Eye
|
||||
- type: CameraRecoil
|
||||
- type: Examiner
|
||||
- type: CanHostGuardian
|
||||
- type: Faction
|
||||
factions:
|
||||
- NanoTrasen
|
||||
- type: Felinid #since this just adds an action...
|
||||
- type: InteractionPopup
|
||||
successChance: 1
|
||||
interactSuccessString: hugging-success-generic
|
||||
interactSuccessSound: /Audio/Effects/thudswoosh.ogg
|
||||
messagePerceivedByOthers: hugging-success-generic-others
|
||||
241
Resources/Prototypes/White/Mobs/Species/felinid.yml
Normal file
@@ -0,0 +1,241 @@
|
||||
- type: entity
|
||||
save: false
|
||||
name: Base felinid
|
||||
parent: BaseMobHuman
|
||||
id: MobFelinidBase
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
noRot: true
|
||||
drawdepth: Mobs
|
||||
scale: 0.8, 0.8
|
||||
layers:
|
||||
- map: [ "enum.HumanoidVisualLayers.Chest" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: torso_m
|
||||
- map: [ "enum.HumanoidVisualLayers.Head" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: head_m
|
||||
- map: [ "enum.HumanoidVisualLayers.Eyes" ]
|
||||
color: "#008800"
|
||||
sprite: Mobs/Customization/eyes.rsi
|
||||
state: eyes
|
||||
- map: [ "enum.HumanoidVisualLayers.RArm" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_arm
|
||||
- map: [ "enum.HumanoidVisualLayers.LArm" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_arm
|
||||
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_leg
|
||||
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_leg
|
||||
- shader: StencilClear
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_leg
|
||||
- shader: StencilMask
|
||||
map: [ "enum.HumanoidVisualLayers.StencilMask" ]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: female_full
|
||||
visible: false
|
||||
- map: [ "underwearb" ] #White
|
||||
- map: [ "underweart" ] #White
|
||||
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_foot
|
||||
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_foot
|
||||
- map: [ "socks" ] #White
|
||||
- map: [ "jumpsuit" ]
|
||||
shader: StencilDraw
|
||||
- map: [ "enum.HumanoidVisualLayers.LHand" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_hand
|
||||
- map: [ "enum.HumanoidVisualLayers.RHand" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_hand
|
||||
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
|
||||
color: "#ffffff"
|
||||
sprite: Objects/Misc/handcuffs.rsi
|
||||
state: body-overlay-2
|
||||
visible: false
|
||||
- map: [ "id" ]
|
||||
- map: [ "gloves" ]
|
||||
- map: [ "shoes" ]
|
||||
- map: [ "ears" ]
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
|
||||
state: shaved
|
||||
sprite: Mobs/Customization/human_facial_hair.rsi
|
||||
- map: [ "enum.HumanoidVisualLayers.Hair" ]
|
||||
state: bald
|
||||
sprite: Mobs/Customization/human_hair.rsi
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: none
|
||||
visible: false
|
||||
- map: [ "mask" ]
|
||||
- map: [ "head" ]
|
||||
- map: [ "pocket1" ]
|
||||
- map: [ "pocket2" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Tail" ]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: none
|
||||
visible: false
|
||||
- type: HumanoidAppearance
|
||||
species: Felinid
|
||||
- type: Body
|
||||
prototype: Felinid
|
||||
- type: Damageable
|
||||
damageContainer: Biological
|
||||
damageModifierSet: Felinid
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
collection: Punch
|
||||
animation: WeaponArcClaw
|
||||
damage:
|
||||
types:
|
||||
Blunt: 1
|
||||
Slash: 5
|
||||
- type: DiseaseCarrier
|
||||
naturalImmunities:
|
||||
- OwOnavirus
|
||||
- type: Thieving
|
||||
stealthy: true
|
||||
stripTimeReduction: 1
|
||||
- type: Speech
|
||||
speechSounds: Alto
|
||||
- type: DamageOnHighSpeedImpact
|
||||
damage:
|
||||
types:
|
||||
Blunt: 1
|
||||
soundHit:
|
||||
path: /Audio/Effects/hit_kick.ogg
|
||||
- type: Stamina
|
||||
excess: 85
|
||||
- type: Perishable
|
||||
|
||||
- type: entity
|
||||
save: false
|
||||
name: Felinid Dummy
|
||||
parent: MobHumanDummy
|
||||
id: MobFelinidDummy
|
||||
noSpawn: true
|
||||
description: A dummy felinid meant to be used in character setup.
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
noRot: true
|
||||
drawdepth: Mobs
|
||||
scale: 1, 1
|
||||
layers:
|
||||
- map: ["enum.HumanoidVisualLayers.Chest"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: torso_m
|
||||
- map: ["enum.HumanoidVisualLayers.Head"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: head_m
|
||||
- map: ["enum.HumanoidVisualLayers.Eyes"]
|
||||
color: "#008800"
|
||||
sprite: Mobs/Customization/eyes.rsi
|
||||
state: eyes
|
||||
- map: ["enum.HumanoidVisualLayers.RArm"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_arm
|
||||
- map: ["enum.HumanoidVisualLayers.LArm"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_arm
|
||||
- map: ["enum.HumanoidVisualLayers.RLeg"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_leg
|
||||
- map: ["enum.HumanoidVisualLayers.LLeg"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_leg
|
||||
|
||||
- shader: StencilClear
|
||||
- shader: StencilMask
|
||||
map: ["enum.HumanoidVisualLayers.StencilMask"]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: female_full
|
||||
visible: false
|
||||
- map: [ "underwearb" ] #White
|
||||
- map: [ "underweart" ] #White
|
||||
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_foot
|
||||
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_foot
|
||||
- map: [ "socks" ] #White
|
||||
- map: ["jumpsuit"]
|
||||
shader: StencilDraw
|
||||
- map: ["enum.HumanoidVisualLayers.LHand"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: l_hand
|
||||
- map: ["enum.HumanoidVisualLayers.RHand"]
|
||||
color: "#e8b59b"
|
||||
sprite: Mobs/Species/Human/parts.rsi
|
||||
state: r_hand
|
||||
- map: ["enum.HumanoidVisualLayers.Handcuffs"]
|
||||
color: "#ffffff"
|
||||
sprite: Objects/Misc/handcuffs.rsi
|
||||
state: body-overlay-2
|
||||
visible: false
|
||||
- map: ["id"]
|
||||
- map: ["gloves"]
|
||||
- map: ["shoes"]
|
||||
- map: ["ears"]
|
||||
- map: ["outerClothing"]
|
||||
- map: ["eyes"]
|
||||
- map: ["belt"]
|
||||
- map: ["neck"]
|
||||
- map: ["back"]
|
||||
- map: ["enum.HumanoidVisualLayers.FacialHair"]
|
||||
state: shaved
|
||||
sprite: Mobs/Customization/human_facial_hair.rsi
|
||||
- map: ["enum.HumanoidVisualLayers.Hair"]
|
||||
state: bald
|
||||
sprite: Mobs/Customization/human_hair.rsi
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: none
|
||||
visible: false
|
||||
- map: ["mask"]
|
||||
- map: ["head"]
|
||||
- map: [ "pocket1" ]
|
||||
- map: [ "pocket2" ]
|
||||
- map: ["hand-left"]
|
||||
- map: ["hand-right"]
|
||||
- map: [ "enum.HumanoidVisualLayers.Tail" ]
|
||||
sprite: Mobs/Customization/masking_helpers.rsi
|
||||
state: none
|
||||
visible: false
|
||||
|
||||
#Nya~~
|
||||
@@ -0,0 +1,24 @@
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
id: Hairball
|
||||
name: hairball
|
||||
description: Felinids, man...
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
sprite: White/Specific/Species/felinid.rsi
|
||||
state: icon
|
||||
- type: Hairball
|
||||
- type: SolutionContainerManager
|
||||
solutions:
|
||||
hairball:
|
||||
maxVol: 25
|
||||
reagents:
|
||||
- ReagentId: Protein
|
||||
Quantity: 2
|
||||
- type: Extractable
|
||||
grindableSolutionName: hairball
|
||||
- type: Tag
|
||||
tags:
|
||||
- Recyclable
|
||||
- Trash
|
||||
35
Resources/Prototypes/White/SoundCollections/felinid.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
- type: soundCollection
|
||||
id: FelinidScreams
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_scream1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_scream2.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_scream3.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: FelinidHisses
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_hiss1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_hiss2.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: FelinidMeows
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_meow1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_meow2.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_meow3.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: FelinidMews
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_mew1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_mew2.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: FelinidGrowls
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_growl1.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: FelinidPurrs
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_purr1.ogg
|
||||
14
Resources/Prototypes/White/Species/actions.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
- type: instantAction
|
||||
id: EatMouse
|
||||
name: action-name-eat-mouse
|
||||
description: action-description-eat-mouse
|
||||
icon: White/Icons/verbiconfangs.png
|
||||
serverEvent: !type:EatMouseActionEvent
|
||||
|
||||
- type: instantAction
|
||||
id: HairballAction
|
||||
name: hairball-action
|
||||
description: hairball-action-desc
|
||||
charges: 1
|
||||
useDelay: 30
|
||||
serverEvent: !type:HairballActionEvent
|
||||
39
Resources/Prototypes/White/Species/felinid.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
- type: species
|
||||
id: Felinid
|
||||
name: species-name-felinid
|
||||
roundStart: true
|
||||
prototype: MobFelinid
|
||||
sprites: MobHumanSprites
|
||||
markingLimits: MobFelinidMarkingLimits
|
||||
dollPrototype: MobFelinidDummy
|
||||
skinColoration: HumanToned
|
||||
bodyTypes:
|
||||
- HumanNormal
|
||||
sponsorOnly: true
|
||||
|
||||
- type: markingPoints
|
||||
id: MobFelinidMarkingLimits
|
||||
points:
|
||||
Hair:
|
||||
points: 1
|
||||
required: false
|
||||
FacialHair:
|
||||
points: 1
|
||||
required: false
|
||||
Tail:
|
||||
points: 1
|
||||
required: true
|
||||
defaultMarkings: [ FelinidTailBasic ]
|
||||
HeadTop:
|
||||
points: 1
|
||||
required: true
|
||||
defaultMarkings: [ FelinidEarsBasic ]
|
||||
Chest:
|
||||
points: 1
|
||||
required: false
|
||||
Legs:
|
||||
points: 2
|
||||
required: false
|
||||
Arms:
|
||||
points: 2
|
||||
required: false
|
||||
BIN
Resources/Textures/White/Icons/verbiconfangs.png
Normal file
|
After Width: | Height: | Size: 710 B |
|
After Width: | Height: | Size: 151 B |
|
After Width: | Height: | Size: 192 B |
|
After Width: | Height: | Size: 149 B |
|
After Width: | Height: | Size: 190 B |
|
After Width: | Height: | Size: 137 B |
|
After Width: | Height: | Size: 205 B |
|
After Width: | Height: | Size: 160 B |
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"version": 1,
|
||||
"copyright": "@Vordenburg",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "basic_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "basic_outer",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "curled_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "curled_outer",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "fuzzy_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "tall_outer",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "tall_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "tall_fuzz",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "torn_outer",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "torn_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "stubby_outer",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "stubby_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "droopy_outer",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "droopy_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wide_inner",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "wide_outer",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 151 B |
|
After Width: | Height: | Size: 177 B |
|
After Width: | Height: | Size: 128 B |
|
After Width: | Height: | Size: 162 B |
|
After Width: | Height: | Size: 198 B |
|
After Width: | Height: | Size: 145 B |
|
After Width: | Height: | Size: 190 B |
|
After Width: | Height: | Size: 153 B |
|
After Width: | Height: | Size: 165 B |
|
After Width: | Height: | Size: 228 B |
|
After Width: | Height: | Size: 239 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 255 B |
|
After Width: | Height: | Size: 248 B |
@@ -0,0 +1,181 @@
|
||||
{
|
||||
"version": 1,
|
||||
"copyright": "@Vordenburg",
|
||||
"license": "CC-BY-SA-4.0",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "basic_tail_tip",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "basic_tail_stripes_even",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "basic_tail_stripes_odd",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "basic_bow",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
]
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "basic_bell",
|
||||
"directions": 4,
|
||||
"delays": [
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2,
|
||||
0.2
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
Resources/Textures/White/Specific/Species/felinid.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 238 B |
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Made by QuizzyQuin",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
}
|
||||
]
|
||||
}
|
||||