Felishit (#37)
* Мне слишком мало платят * ЖРИ МЫШЕЙ * Лок рас * Але оп * Блять --------- Co-authored-by: Mona Hmiza <>
@@ -6,6 +6,7 @@ using Content.Client.Message;
|
|||||||
using Content.Client.Players.PlayTimeTracking;
|
using Content.Client.Players.PlayTimeTracking;
|
||||||
using Content.Client.Stylesheets;
|
using Content.Client.Stylesheets;
|
||||||
using Content.Client.UserInterface.Controls;
|
using Content.Client.UserInterface.Controls;
|
||||||
|
using Content.Client.White.Sponsors;
|
||||||
using Content.Shared.CCVar;
|
using Content.Shared.CCVar;
|
||||||
using Content.Shared.GameTicking;
|
using Content.Shared.GameTicking;
|
||||||
using Content.Shared.Humanoid;
|
using Content.Shared.Humanoid;
|
||||||
@@ -54,6 +55,11 @@ namespace Content.Client.Preferences.UI
|
|||||||
[GenerateTypedNameReferences]
|
[GenerateTypedNameReferences]
|
||||||
public sealed partial class HumanoidProfileEditor : Control
|
public sealed partial class HumanoidProfileEditor : Control
|
||||||
{
|
{
|
||||||
|
|
||||||
|
//WD-EDIT
|
||||||
|
private readonly SponsorsManager _sponsorsManager;
|
||||||
|
//WD-EDIT
|
||||||
|
|
||||||
private readonly IClientPreferencesManager _preferencesManager;
|
private readonly IClientPreferencesManager _preferencesManager;
|
||||||
private readonly IEntityManager _entMan;
|
private readonly IEntityManager _entMan;
|
||||||
private readonly IConfigurationManager _configurationManager;
|
private readonly IConfigurationManager _configurationManager;
|
||||||
@@ -114,6 +120,7 @@ namespace Content.Client.Preferences.UI
|
|||||||
IEntityManager entityManager, IConfigurationManager configurationManager)
|
IEntityManager entityManager, IConfigurationManager configurationManager)
|
||||||
{
|
{
|
||||||
RobustXamlLoader.Load(this);
|
RobustXamlLoader.Load(this);
|
||||||
|
_sponsorsManager = IoCManager.Resolve<SponsorsManager>();
|
||||||
_prototypeManager = prototypeManager;
|
_prototypeManager = prototypeManager;
|
||||||
_entMan = entityManager;
|
_entMan = entityManager;
|
||||||
_preferencesManager = preferencesManager;
|
_preferencesManager = preferencesManager;
|
||||||
@@ -188,9 +195,23 @@ namespace Content.Client.Preferences.UI
|
|||||||
#region Species
|
#region Species
|
||||||
|
|
||||||
_speciesList = prototypeManager.EnumeratePrototypes<SpeciesPrototype>().Where(o => o.RoundStart).ToList();
|
_speciesList = prototypeManager.EnumeratePrototypes<SpeciesPrototype>().Where(o => o.RoundStart).ToList();
|
||||||
|
|
||||||
for (var i = 0; i < _speciesList.Count; i++)
|
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);
|
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>
|
/// </summary>
|
||||||
[DataField("maxAge")]
|
[DataField("maxAge")]
|
||||||
public int MaxAge = 120;
|
public int MaxAge = 120;
|
||||||
|
|
||||||
|
[DataField("sponsorOnly")]
|
||||||
|
public bool SponsorOnly { get; } = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum SpeciesNaming : byte
|
public enum SpeciesNaming : byte
|
||||||
|
|||||||
@@ -379,6 +379,12 @@ namespace Content.Shared.Preferences
|
|||||||
speciesPrototype = prototypeManager.Index<SpeciesPrototype>(Species);
|
speciesPrototype = prototypeManager.Index<SpeciesPrototype>(Species);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (speciesPrototype.SponsorOnly && !sponsorMarkings.Contains(Species))
|
||||||
|
{
|
||||||
|
Species = SharedHumanoidAppearanceSystem.DefaultSpecies;
|
||||||
|
speciesPrototype = prototypeManager.Index<SpeciesPrototype>(Species);
|
||||||
|
}
|
||||||
|
|
||||||
var sex = Sex switch
|
var sex = Sex switch
|
||||||
{
|
{
|
||||||
Sex.Male => Sex.Male,
|
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-slime = Слаймолюд
|
||||||
species-name-diona = Диона
|
species-name-diona = Диона
|
||||||
species-name-skrell = Скрелл
|
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:
|
components:
|
||||||
- type: Body
|
- type: Body
|
||||||
prototype: Mouse
|
prototype: Mouse
|
||||||
|
- type: FelinidFood
|
||||||
- type: GhostRole
|
- type: GhostRole
|
||||||
makeSentient: true
|
makeSentient: true
|
||||||
allowSpeech: true
|
allowSpeech: true
|
||||||
@@ -2550,7 +2551,7 @@
|
|||||||
- type: NpcFactionMember
|
- type: NpcFactionMember
|
||||||
factions:
|
factions:
|
||||||
- Syndicate
|
- Syndicate
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
name: space cat
|
name: space cat
|
||||||
id: MobCatSpace
|
id: MobCatSpace
|
||||||
|
|||||||
@@ -155,6 +155,7 @@
|
|||||||
description: He's da mini rat. He don't make da roolz.
|
description: He's da mini rat. He don't make da roolz.
|
||||||
noSpawn: true #Must be configured to a King or the AI breaks.
|
noSpawn: true #Must be configured to a King or the AI breaks.
|
||||||
components:
|
components:
|
||||||
|
- type: FelinidFood
|
||||||
- type: CombatMode
|
- type: CombatMode
|
||||||
- type: MovementSpeedModifier
|
- type: MovementSpeedModifier
|
||||||
baseWalkSpeed : 3.5
|
baseWalkSpeed : 3.5
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
supervisors: job-supervisors-centcom
|
supervisors: job-supervisors-centcom
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
- Dwarf
|
- Felinid
|
||||||
canBeAntag: false
|
canBeAntag: false
|
||||||
accessGroups:
|
accessGroups:
|
||||||
- AllAccess
|
- AllAccess
|
||||||
|
|||||||
@@ -67,6 +67,46 @@
|
|||||||
Whistle:
|
Whistle:
|
||||||
collection: Whistles
|
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
|
- type: emoteSounds
|
||||||
id: UnisexReptilian
|
id: UnisexReptilian
|
||||||
params:
|
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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||