ГНОМЫ (#411)
* This adds the basic wirework for the gnomes, very unfinished * GNOMES ARE DONE EXCEPT FOR GLUE WOOO * removes gnome id, fixes ai and punch sounds, comments out the code for glue to take fuel * changed sounds to non meme versions * HAT NOW GIVES THE GNOME ACCENT TOO * fixes a typo with Unclippable being Unclipable * removed cuffable component (iforgotaboutit) * added unrevivable to gnomes so defibs wont try (it was immpossible anyways but this is better) * removes scrap code i put in the repair system * remove the carrot mutation code i made (its bad) clean up some things in the repairable system * changes accent system from rplacging g to replacing no * Fix the conflict (plz work) * adds another comment bleh bleh im trying to fix things * PAIN.jpeg * work plz? * FIX FOR REAL * camel case mayhaps? * adds unfinished glue use code (you can still see lit or not lit when held >:/ ) * temporary fix * add: GNOMES REVAMPED * fix: fix accent, sounds and add spawners * add: gnome seeds to seed vendor --------- Co-authored-by: BITTERLYNX <gagestemmerman@gmail.com>
@@ -108,13 +108,18 @@ public partial class SeedData
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If true, the properties of this seed cannot be modified.
|
/// If true, the properties of this seed cannot be modified.
|
||||||
|
/// to spare others like me: this DOES NOT prevent mutations
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("immutable")] public bool Immutable;
|
[DataField("immutable")] public bool Immutable;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If true, you cannot clip this plant for more seeds, used for special plants such as the gnome plant
|
||||||
|
/// </summary>
|
||||||
|
[DataField("unclippable")] public bool Unclippable;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If true, there is only a single reference to this seed and it's properties can be directly modified without
|
/// If true, there is only a single reference to this seed and it's properties can be directly modified without
|
||||||
/// needing to clone the seed.
|
/// needing to clone the seed.
|
||||||
/// </summary>
|
|
||||||
[ViewVariables]
|
[ViewVariables]
|
||||||
public bool Unique = false; // seed-prototypes or yaml-defined seeds for entity prototypes will not generally be unique.
|
public bool Unique = false; // seed-prototypes or yaml-defined seeds for entity prototypes will not generally be unique.
|
||||||
#endregion
|
#endregion
|
||||||
@@ -255,6 +260,7 @@ public partial class SeedData
|
|||||||
{
|
{
|
||||||
DebugTools.Assert(!Immutable, "There should be no need to clone an immutable seed.");
|
DebugTools.Assert(!Immutable, "There should be no need to clone an immutable seed.");
|
||||||
|
|
||||||
|
|
||||||
var newSeed = new SeedData
|
var newSeed = new SeedData
|
||||||
{
|
{
|
||||||
Name = Name,
|
Name = Name,
|
||||||
@@ -290,6 +296,7 @@ public partial class SeedData
|
|||||||
HarvestRepeat = HarvestRepeat,
|
HarvestRepeat = HarvestRepeat,
|
||||||
Potency = Potency,
|
Potency = Potency,
|
||||||
|
|
||||||
|
Unclippable = Unclippable,
|
||||||
Seedless = Seedless,
|
Seedless = Seedless,
|
||||||
Viable = Viable,
|
Viable = Viable,
|
||||||
Slip = Slip,
|
Slip = Slip,
|
||||||
|
|||||||
@@ -245,6 +245,13 @@ public sealed class PlantHolderSystem : EntitySystem
|
|||||||
_popup.PopupCursor(Loc.GetString("plant-holder-component-nothing-to-sample-message"), args.User);
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-nothing-to-sample-message"), args.User);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
//rejects clipping of unclippable plants
|
||||||
|
if (component.Seed.Unclippable)
|
||||||
|
{
|
||||||
|
_popup.PopupCursor(Loc.GetString("plant-holder-component-nothing-to-sample-message"), args.User);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (component.Sampled)
|
if (component.Sampled)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,15 +6,37 @@ using Content.Shared.Popups;
|
|||||||
using Content.Shared.Repairable;
|
using Content.Shared.Repairable;
|
||||||
using Content.Shared.Tools;
|
using Content.Shared.Tools;
|
||||||
using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem;
|
using SharedToolSystem = Content.Shared.Tools.Systems.SharedToolSystem;
|
||||||
|
using Content.Server.DoAfter;
|
||||||
|
using Content.Server.EUI;
|
||||||
|
using Content.Server.Ghost;
|
||||||
|
using Content.Server.Popups;
|
||||||
|
using Content.Shared.Damage;
|
||||||
|
using Content.Shared.DoAfter;
|
||||||
|
using Content.Shared.Interaction;
|
||||||
|
using Content.Shared.Interaction.Components;
|
||||||
|
using Content.Shared.Interaction.Events;
|
||||||
|
using Content.Shared.Mind;
|
||||||
|
using Content.Shared.Mobs;
|
||||||
|
using Content.Shared.Mobs.Components;
|
||||||
|
using Content.Shared.Mobs.Systems;
|
||||||
|
using Robust.Shared.Player;
|
||||||
|
using Robust.Shared.Timing;
|
||||||
|
using Content.Shared.Tools.Components;
|
||||||
|
using Content.Server.Construction.Conditions;
|
||||||
|
//many of these arent reqired but some seem neessesary so ill leave them for now
|
||||||
|
|
||||||
namespace Content.Server.Repairable
|
namespace Content.Server.Repairable
|
||||||
{
|
{
|
||||||
public sealed class RepairableSystem : SharedRepairableSystem
|
public sealed class RepairableSystem : SharedRepairableSystem
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly EuiManager _euiManager = default!;
|
||||||
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
[Dependency] private readonly SharedToolSystem _toolSystem = default!;
|
||||||
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
|
||||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||||
[Dependency] private readonly IAdminLogManager _adminLogger= default!;
|
[Dependency] private readonly IAdminLogManager _adminLogger= default!;
|
||||||
|
[Dependency] private readonly MobStateSystem _mobState = default!;
|
||||||
|
[Dependency] private readonly MobThresholdSystem _mobThreshold = default!;
|
||||||
|
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -24,6 +46,8 @@ namespace Content.Server.Repairable
|
|||||||
|
|
||||||
private void OnRepairFinished(EntityUid uid, RepairableComponent component, RepairFinishedEvent args)
|
private void OnRepairFinished(EntityUid uid, RepairableComponent component, RepairFinishedEvent args)
|
||||||
{
|
{
|
||||||
|
ICommonSession? session = null;
|
||||||
|
|
||||||
if (args.Cancelled)
|
if (args.Cancelled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -34,15 +58,36 @@ namespace Content.Server.Repairable
|
|||||||
{
|
{
|
||||||
var damageChanged = _damageableSystem.TryChangeDamage(uid, component.Damage, true, false, origin: args.User);
|
var damageChanged = _damageableSystem.TryChangeDamage(uid, component.Damage, true, false, origin: args.User);
|
||||||
_adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} by {damageChanged?.GetTotal()}");
|
_adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} by {damageChanged?.GetTotal()}");
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Repair all damage
|
// Repair all damage
|
||||||
_damageableSystem.SetAllDamage(uid, damageable, 0);
|
_damageableSystem.SetAllDamage(uid, damageable, 0);
|
||||||
_adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} back to full health");
|
_adminLogger.Add(LogType.Healed, $"{ToPrettyString(args.User):user} repaired {ToPrettyString(uid):target} back to full health");
|
||||||
}
|
|
||||||
|
|
||||||
|
// this is to revive gnomes and call their ghost back
|
||||||
|
//check for target for threshholds, i hardly understand WHY this works but it does so i wont touch it
|
||||||
|
if (TryComp(uid, out MobThresholdsComponent? mobthresholds))
|
||||||
|
{
|
||||||
|
if (_mobThreshold.TryGetThresholdForState(uid, MobState.Dead, out var threshold) &&
|
||||||
|
TryComp<DamageableComponent>(uid, out var damageableComponent) &&
|
||||||
|
damageableComponent.TotalDamage < threshold)
|
||||||
|
{
|
||||||
|
_mobState.ChangeMobState(uid, MobState.Alive, null, uid);
|
||||||
|
}
|
||||||
|
if (_mind.TryGetMind(uid, out _, out var mind) &&
|
||||||
|
mind.Session is { } playerSession)
|
||||||
|
{
|
||||||
|
session = playerSession;
|
||||||
|
// notify them they're being revived.
|
||||||
|
if (mind.CurrentEntity != uid)
|
||||||
|
{
|
||||||
|
_euiManager.OpenEui(new ReturnToBodyEui(mind, _mind), session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
var str = Loc.GetString("comp-repairable-repair",
|
var str = Loc.GetString("comp-repairable-repair",
|
||||||
("target", uid),
|
("target", uid),
|
||||||
("tool", args.Used!));
|
("tool", args.Used!));
|
||||||
|
|||||||
8
Content.Server/Speech/Components/GnomeAccentComponent.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
namespace Content.Server.Speech.Components;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// garden time
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
public sealed partial class GnomeAccentComponent : Component
|
||||||
|
{}
|
||||||
52
Content.Server/Speech/EntitySystems/GnomeAccentSystem.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using Content.Server.Speech.Components;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Content.Server.Speech.EntitySystems;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// System that Gnomes the Gnomes talking
|
||||||
|
/// </summary>
|
||||||
|
public sealed class GnomeAccentSystem : EntitySystem
|
||||||
|
{
|
||||||
|
[Dependency] private readonly ReplacementAccentSystem _replacement = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<GnomeAccentComponent, AccentGetEvent>(OnAccentGet);
|
||||||
|
}
|
||||||
|
public string Accentuate(string message, GnomeAccentComponent component)
|
||||||
|
{
|
||||||
|
var msg = message;
|
||||||
|
|
||||||
|
msg = _replacement.ApplyReplacements(msg, "gnome");
|
||||||
|
|
||||||
|
// Пиздец, а не код
|
||||||
|
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bне", "ГНЕМ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bнет", "ГНЕМТ", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bнахуй", "ГНАМХУЙ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bпидоры", "ГНОМЕРЫ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bхуесос", "ГНОХУСОМ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bебал", "ГНОМИЛ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bзаебал", "ЗАГНОМИЛ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bубил", "УГНОМИЛ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bубит", "УГНОМЛЕН", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bебнул", "УГНОМЛЕН", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bстрелял", "СТРЕГНОМИЛ", RegexOptions.IgnoreCase);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bзаколол", "СГНОМИЛ", RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bмой", "муй", RegexOptions.None);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bдруг", "бро", RegexOptions.None);
|
||||||
|
msg = Regex.Replace(msg, @"(?<!\w)\bдрузья", "друганы", RegexOptions.None);
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void OnAccentGet(EntityUid uid, GnomeAccentComponent component, AccentGetEvent args)
|
||||||
|
{
|
||||||
|
args.Message = Accentuate(args.Message, component);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,16 @@
|
|||||||
|
using Robust.Shared.Audio;
|
||||||
|
|
||||||
namespace Content.Server._White.Other.DeathGasps;
|
namespace Content.Server._White.Other.DeathGasps;
|
||||||
|
|
||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
public sealed partial class DeathGaspsComponent : Component
|
public sealed partial class DeathGaspsComponent : Component
|
||||||
{
|
{
|
||||||
|
[DataField]
|
||||||
|
public SoundSpecifier DeathSounds = new SoundCollectionSpecifier("deathSounds");
|
||||||
|
|
||||||
|
[DataField]
|
||||||
|
public SoundSpecifier HeartSounds = new SoundCollectionSpecifier("heartSounds");
|
||||||
|
|
||||||
|
[DataField]
|
||||||
|
public bool CanOtherHearDeathSound;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,7 @@ public sealed class OnDeath : EntitySystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
private readonly Dictionary<EntityUid, EntityUid> _playingStreams = new();
|
private readonly Dictionary<EntityUid, EntityUid> _playingStreams = new();
|
||||||
private static readonly SoundSpecifier DeathSounds = new SoundCollectionSpecifier("deathSounds");
|
|
||||||
private static readonly SoundSpecifier HeartSounds = new SoundCollectionSpecifier("heartSounds");
|
|
||||||
|
|
||||||
private void HandleDeathEvent(EntityUid uid, DeathGaspsComponent component, MobStateChangedEvent args)
|
private void HandleDeathEvent(EntityUid uid, DeathGaspsComponent component, MobStateChangedEvent args)
|
||||||
{
|
{
|
||||||
@@ -31,23 +30,23 @@ public sealed class OnDeath : EntitySystem
|
|||||||
StopPlayingStream(uid);
|
StopPlayingStream(uid);
|
||||||
break;
|
break;
|
||||||
case MobState.Critical:
|
case MobState.Critical:
|
||||||
PlayPlayingStream(uid);
|
PlayPlayingStream(uid, component);
|
||||||
break;
|
break;
|
||||||
case MobState.Dead:
|
case MobState.Dead:
|
||||||
StopPlayingStream(uid);
|
StopPlayingStream(uid);
|
||||||
PlayDeathSound(uid);
|
PlayDeathSound(uid, component);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PlayPlayingStream(EntityUid uid)
|
private void PlayPlayingStream(EntityUid uid, DeathGaspsComponent component)
|
||||||
{
|
{
|
||||||
if (_playingStreams.TryGetValue(uid, out var currentStream))
|
if (_playingStreams.TryGetValue(uid, out var currentStream))
|
||||||
{
|
{
|
||||||
_audio.Stop(currentStream);
|
_audio.Stop(currentStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
var newStream = _audio.PlayEntity(HeartSounds, uid, uid, AudioParams.Default.WithLoop(true));
|
var newStream = _audio.PlayEntity(component.HeartSounds, uid, uid, AudioParams.Default.WithLoop(true));
|
||||||
|
|
||||||
if (newStream.HasValue)
|
if (newStream.HasValue)
|
||||||
{
|
{
|
||||||
@@ -64,9 +63,12 @@ public sealed class OnDeath : EntitySystem
|
|||||||
_playingStreams.Remove(uid);
|
_playingStreams.Remove(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PlayDeathSound(EntityUid uid)
|
private void PlayDeathSound(EntityUid uid, DeathGaspsComponent component)
|
||||||
{
|
{
|
||||||
_audio.PlayEntity(DeathSounds, uid, uid, AudioParams.Default);
|
if (component.CanOtherHearDeathSound)
|
||||||
|
_audio.PlayPvs(component.DeathSounds, uid, AudioParams.Default);
|
||||||
|
else
|
||||||
|
_audio.PlayEntity(component.DeathSounds, uid, uid, AudioParams.Default);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDetach(EntityUid uid, DeathGaspsComponent component, PlayerDetachedEvent args)
|
private void OnDetach(EntityUid uid, DeathGaspsComponent component, PlayerDetachedEvent args)
|
||||||
|
|||||||
BIN
Resources/Audio/Voice/Gnome/Gnome_Clumsy_Sound_Effect.ogg
Normal file
BIN
Resources/Audio/Voice/Gnome/Gnome_Woo_Sound_Effect.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Death1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Death2.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Death3.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Death4.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome1V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome2V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome3V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome4V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome5V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome6V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome7V1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Gnomes/Gnome8V1.ogg
Normal file
@@ -232,3 +232,7 @@ ghost-role-information-artifact-name = Sentient Artifact
|
|||||||
ghost-role-information-artifact-description =
|
ghost-role-information-artifact-description =
|
||||||
Enact your eldritch whims.
|
Enact your eldritch whims.
|
||||||
Forcibly activate your nodes for good or for evil.
|
Forcibly activate your nodes for good or for evil.
|
||||||
|
|
||||||
|
|
||||||
|
ghost-role-information-gnome-name = Garden Gnome
|
||||||
|
ghost-role-information-gnome-description = You are the trusted keeper of the station garden, keep your domain safe.
|
||||||
|
|||||||
@@ -111,3 +111,5 @@ seeds-pumpkin-name = pumpkin
|
|||||||
seeds-pumpkin-display-name = pumpkins
|
seeds-pumpkin-display-name = pumpkins
|
||||||
seeds-cotton-name = cotton
|
seeds-cotton-name = cotton
|
||||||
seeds-cotton-display-name = cotton plant
|
seeds-cotton-display-name = cotton plant
|
||||||
|
seeds-gome-name = gnome
|
||||||
|
seeds-gnome-display-name = gnome plant
|
||||||
|
|||||||
6
Resources/Locale/ru-RU/_white/mobs/gnomes.ftl
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
ent-MobGnome = гном
|
||||||
|
.desc = Добросовестный помощник по саду
|
||||||
|
ent-GnomeSeeds = пакет семян гнома
|
||||||
|
.desc = { ent-SeedBase.desc }
|
||||||
|
ent-ClothingHeadHatGnome = шляпа гнома
|
||||||
|
.desc = Шляпа настоящего садового помощника
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
- type: body
|
- type: body
|
||||||
id: Bot
|
id: Bot
|
||||||
name: "bot"
|
name: "bot"
|
||||||
root: hand 1
|
root: hand 1
|
||||||
|
|||||||
19
Resources/Prototypes/Body/Prototypes/gnome.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
- type: body
|
||||||
|
id: gnome
|
||||||
|
name: "gnome"
|
||||||
|
root: torso
|
||||||
|
slots:
|
||||||
|
torso:
|
||||||
|
part: TorsoAnimal
|
||||||
|
connections:
|
||||||
|
- hands
|
||||||
|
- legs
|
||||||
|
organs:
|
||||||
|
hands:
|
||||||
|
part: HandsAnimal
|
||||||
|
legs:
|
||||||
|
part: LegsAnimal
|
||||||
|
connections:
|
||||||
|
- feet
|
||||||
|
feet:
|
||||||
|
part: FeetAnimal
|
||||||
@@ -125,7 +125,19 @@
|
|||||||
- id: Soap
|
- id: Soap
|
||||||
prob: 0.10
|
prob: 0.10
|
||||||
- id: PlushieCarp
|
- id: PlushieCarp
|
||||||
prob: 0.1
|
prob: 0.2
|
||||||
|
orGroup: carp
|
||||||
|
- id: ClothingHeadHatGnome
|
||||||
|
prob: 0.2
|
||||||
|
- id: PlushieHolocarp
|
||||||
|
prob: 0.05
|
||||||
|
orGroup: carp
|
||||||
|
- id: PlushieMagicarp
|
||||||
|
prob: 0.05
|
||||||
|
orGroup: carp
|
||||||
|
- id: PlushieRainbowCarp
|
||||||
|
prob: 0.03
|
||||||
|
orGroup: carp
|
||||||
- id: PlushieSlime
|
- id: PlushieSlime
|
||||||
prob: 0.1
|
prob: 0.1
|
||||||
- id: PlushieSnake
|
- id: PlushieSnake
|
||||||
|
|||||||
@@ -37,5 +37,6 @@
|
|||||||
BerrySeeds: 5
|
BerrySeeds: 5
|
||||||
PeaSeeds: 5
|
PeaSeeds: 5
|
||||||
CottonSeeds: 5
|
CottonSeeds: 5
|
||||||
|
GnomeSeeds: 2
|
||||||
emaggedInventory:
|
emaggedInventory:
|
||||||
FlyAmanitaSeeds: 1
|
FlyAmanitaSeeds: 1
|
||||||
|
|||||||
@@ -1108,3 +1108,19 @@
|
|||||||
sprite: Clothing/Head/Hats/beret_medic.rsi
|
sprite: Clothing/Head/Hats/beret_medic.rsi
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Clothing/Head/Hats/beret_medic.rsi
|
sprite: Clothing/Head/Hats/beret_medic.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: ClothingHeadBase
|
||||||
|
id: ClothingHeadHatGnome
|
||||||
|
name: gnome hat
|
||||||
|
description: The cap of a true garden helper
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/Head/Hats/hat_gnome.rsi
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/Head/Hats/hat_gnome.rsi
|
||||||
|
- type: Seed
|
||||||
|
seedId: gnome
|
||||||
|
- type: AddAccentClothing
|
||||||
|
accent: GnomeAccent
|
||||||
|
|
||||||
|
|||||||
@@ -819,3 +819,180 @@
|
|||||||
# - type: AlwaysRevolutionaryConvertible
|
# - type: AlwaysRevolutionaryConvertible
|
||||||
- type: StealTarget
|
- type: StealTarget
|
||||||
stealGroup: AnimalTropico
|
stealGroup: AnimalTropico
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity #WHY MUST YOU THROW ERRORS HOW DARE YOU
|
||||||
|
name: Gnome #this thing is covered in comments, its for my sanity, ignore them please.
|
||||||
|
parent: [BaseSimpleMob, MobCombat, MobAtmosExposed]
|
||||||
|
id: MobGnome
|
||||||
|
description: "A garden's trusty helper"
|
||||||
|
components:
|
||||||
|
- type: Inventory
|
||||||
|
templateId: gnome
|
||||||
|
speciesId: gnome
|
||||||
|
- type: InventorySlots
|
||||||
|
- type: RotationVisuals
|
||||||
|
defaultRotation: 90
|
||||||
|
horizontalRotation: 90
|
||||||
|
- type: Fixtures
|
||||||
|
fixtures:
|
||||||
|
fix1:
|
||||||
|
shape:
|
||||||
|
!type:PhysShapeCircle #displays error, works anyways so i wont touch it, whatever it does
|
||||||
|
radius: 0.2
|
||||||
|
density: 80
|
||||||
|
mask:
|
||||||
|
- SmallMobMask #lets em go under doors for escapes from sec/greytide/hunting mice
|
||||||
|
layer:
|
||||||
|
- SmallMobLayer
|
||||||
|
- type: Stripping
|
||||||
|
- type: Strippable
|
||||||
|
- type: UserInterface
|
||||||
|
interfaces:
|
||||||
|
- key: enum.StrippingUiKey.Key
|
||||||
|
type: StrippableBoundUserInterface
|
||||||
|
- type: GhostRole
|
||||||
|
prob: 1
|
||||||
|
makeSentient: true
|
||||||
|
allowSpeech: true
|
||||||
|
allowMovement: true
|
||||||
|
name: ghost-role-information-gnome-name
|
||||||
|
description: ghost-role-information-gnome-description
|
||||||
|
- type: GhostTakeoverAvailable
|
||||||
|
- type: Flashable
|
||||||
|
- type: Tag
|
||||||
|
tags:
|
||||||
|
- CannotSuicide
|
||||||
|
- VimPilot
|
||||||
|
- type: MobThresholds
|
||||||
|
thresholds: #VERY easy to kill, if it was harder to kill them the sneaky fuckers would rule the world
|
||||||
|
0: Alive
|
||||||
|
10: Dead
|
||||||
|
- type: DamageStateVisuals
|
||||||
|
states:
|
||||||
|
Alive:
|
||||||
|
Base: Gnome-0
|
||||||
|
Dead:
|
||||||
|
Base: dead-1
|
||||||
|
- type: GnomeAccent
|
||||||
|
- type: NameIdentifier
|
||||||
|
group: Gnome
|
||||||
|
- type: Sprite
|
||||||
|
drawdepth: SmallMobs
|
||||||
|
sprite: Mobs/Animals/gnome.rsi
|
||||||
|
layers:
|
||||||
|
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||||
|
state: Gnome-0
|
||||||
|
- type: Item
|
||||||
|
size: Small
|
||||||
|
- type: Clothing #TO VALLHALLA
|
||||||
|
quickEquip: false
|
||||||
|
sprite: Mobs/Animals/gnome.rsi
|
||||||
|
equippedPrefix: 1
|
||||||
|
slots:
|
||||||
|
- HEAD
|
||||||
|
- type: IdExaminable
|
||||||
|
- type: InteractionPopup
|
||||||
|
interactSuccessString: hugging-success-generic
|
||||||
|
interactSuccessSound: /Audio/Effects/thudswoosh.ogg
|
||||||
|
messagePerceivedByOthers: hugging-success-generic-others
|
||||||
|
- type: MeleeWeapon
|
||||||
|
soundHit:
|
||||||
|
collection: ToySqueak
|
||||||
|
angle: 30
|
||||||
|
animation: WeaponArcPunch
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Piercing: 3
|
||||||
|
- type: Puller #dont need hands because they are at a disadvantage anyway, this way they can hold a light and drag a box for a backpack
|
||||||
|
needsHands: false
|
||||||
|
- type: CanHostGuardian #touch this stuff to make the fuckers hold still when not possesed (NOT THE GAURDIAN)
|
||||||
|
- type: FactionException
|
||||||
|
- type: NpcFactionMember
|
||||||
|
factions:
|
||||||
|
- Passive
|
||||||
|
- type: Hands #gives em hands, the item sprites for holding things look all strange but its FINE, I DONT WANNA FIX IT ITS FINE ILL DO IT LATER
|
||||||
|
- type: Body #gives em a body, is needed for organs and hands
|
||||||
|
prototype: gnome
|
||||||
|
requiredLegs: 0
|
||||||
|
- type: Clumsy #no guns for youuuu if they shoot a gun they die >:3
|
||||||
|
clumsyDamage:
|
||||||
|
types:
|
||||||
|
Blunt: 2
|
||||||
|
Piercing: 7
|
||||||
|
groups:
|
||||||
|
Burn: 2
|
||||||
|
clumsySound:
|
||||||
|
path: /Audio/Voice/Gnome/Gnome_Clumsy_Sound_Effect.ogg
|
||||||
|
- type: Barotrauma #gnomes instantly explode in space, gnomes shouldnt go in space
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Blunt: 60 #per second, scales with pressure and other constants.
|
||||||
|
- type: Repairable
|
||||||
|
fuelCost: 5
|
||||||
|
qualityNeeded: Gluing
|
||||||
|
doAfterDelay: 8
|
||||||
|
- type: ZombieImmune
|
||||||
|
- type: Damageable
|
||||||
|
damageContainer: StructuralInorganic
|
||||||
|
- type: CanEscapeInventory
|
||||||
|
- type: Destructible
|
||||||
|
thresholds:
|
||||||
|
- trigger:
|
||||||
|
!type:DamageTypeTrigger #gnomes gib once they are in enough bits that they cant be glued back together
|
||||||
|
damageType: Blunt
|
||||||
|
damage: 60
|
||||||
|
behaviors:
|
||||||
|
- !type:PlaySoundBehavior
|
||||||
|
sound:
|
||||||
|
collection: GlassBreak
|
||||||
|
- !type:SpawnEntitiesBehavior
|
||||||
|
spawn:
|
||||||
|
ClothingHeadHatGnome:
|
||||||
|
min: 1
|
||||||
|
max: 1
|
||||||
|
ShardGlass:
|
||||||
|
min: 1
|
||||||
|
max: 3
|
||||||
|
- !type:DoActsBehavior
|
||||||
|
acts: [ "Destruction" ]
|
||||||
|
- type: DamageOnHighSpeedImpact #gnomes break when thrown, another anti gnometide device
|
||||||
|
minimumSpeed: 10
|
||||||
|
damage:
|
||||||
|
types:
|
||||||
|
Blunt: 20
|
||||||
|
soundHit:
|
||||||
|
collection: GlassBreak
|
||||||
|
- type: Vocal
|
||||||
|
sounds:
|
||||||
|
Male: Gnome
|
||||||
|
Female: Gnome
|
||||||
|
Unsexed: Gnome
|
||||||
|
wilhelmProbability: 0.0001
|
||||||
|
- type: Unrevivable
|
||||||
|
- type: Tool
|
||||||
|
qualities:
|
||||||
|
- Screwing
|
||||||
|
useSound:
|
||||||
|
collection: Screwdriver
|
||||||
|
- type: FelinidFood
|
||||||
|
- type: Speech
|
||||||
|
speechSounds: GnomesSpeech
|
||||||
|
speechVerb: SmallMob
|
||||||
|
- type: Extractable
|
||||||
|
grindableSolutionName: food
|
||||||
|
- type: SolutionContainerManager
|
||||||
|
solutions:
|
||||||
|
food:
|
||||||
|
reagents:
|
||||||
|
- ReagentId: UnstableMutagen
|
||||||
|
Quantity: 5
|
||||||
|
- type: BadFood
|
||||||
|
- type: DeathGasps
|
||||||
|
deathSounds:
|
||||||
|
collection: GnomesDeathCollection
|
||||||
|
canOtherHearDeathSound: True
|
||||||
|
- type: Thieving
|
||||||
|
stripTimeReduction: 4
|
||||||
|
- type: Pacified
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
map: [ "enum.SolutionContainerLayers.Overlay" ]
|
map: [ "enum.SolutionContainerLayers.Overlay" ]
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
- type: Glue
|
- type: Glue
|
||||||
|
- type: RefillableSolution
|
||||||
|
solution: drink
|
||||||
- type: SolutionContainerManager
|
- type: SolutionContainerManager
|
||||||
solutions:
|
solutions:
|
||||||
drink:
|
drink:
|
||||||
@@ -26,6 +28,11 @@
|
|||||||
reagents:
|
reagents:
|
||||||
- ReagentId: SpaceGlue
|
- ReagentId: SpaceGlue
|
||||||
Quantity: 30
|
Quantity: 30
|
||||||
|
Welder:
|
||||||
|
reagents:
|
||||||
|
- ReagentId: SpaceGlue
|
||||||
|
Quantity: 30
|
||||||
|
maxVol: 30
|
||||||
- type: SolutionContainerVisuals
|
- type: SolutionContainerVisuals
|
||||||
maxFillLevels: 6
|
maxFillLevels: 6
|
||||||
fillBaseName: fill
|
fillBaseName: fill
|
||||||
@@ -38,8 +45,15 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- DrinkSpaceGlue
|
- DrinkSpaceGlue
|
||||||
|
- GlueTool
|
||||||
- type: TrashOnSolutionEmpty
|
- type: TrashOnSolutionEmpty
|
||||||
solution: drink
|
solution: drink
|
||||||
|
- type: Tool
|
||||||
|
qualities: Gluing
|
||||||
|
- type: Welder #this here uses welding code to take fuel out of the bottle (fuel being glue)
|
||||||
|
fuelSolutionName: drink
|
||||||
|
fuelReagent: SpaceGlue
|
||||||
|
hiddenInfo: true
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: DrinkBase
|
parent: DrinkBase
|
||||||
|
|||||||
@@ -1514,6 +1514,8 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- DrinkSpaceGlue
|
- DrinkSpaceGlue
|
||||||
|
- type: Tool
|
||||||
|
qualities: Gluing
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: BaseItem
|
parent: BaseItem
|
||||||
|
|||||||
@@ -571,3 +571,13 @@
|
|||||||
seedId: cotton
|
seedId: cotton
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
sprite: Objects/Specific/Hydroponics/cotton.rsi
|
sprite: Objects/Specific/Hydroponics/cotton.rsi
|
||||||
|
|
||||||
|
- type: entity #you should never see this, this is for testing, if someone has these then I FUCKED UP and you should ping BITTERLYNX
|
||||||
|
parent: SeedBase
|
||||||
|
name: packet of Gnome seeds
|
||||||
|
id: GnomeSeeds
|
||||||
|
components:
|
||||||
|
- type: Seed
|
||||||
|
seedId: gnome
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/Specific/Hydroponics/cotton.rsi
|
||||||
|
|||||||
@@ -1501,3 +1501,22 @@
|
|||||||
Max: 10
|
Max: 10
|
||||||
PotencyDivisor: 20
|
PotencyDivisor: 20
|
||||||
|
|
||||||
|
- type: seed #once again, replacing learning with comments because ive been in this file for 10 hours
|
||||||
|
id: gnome
|
||||||
|
name: seeds-gome-name #the name of the seeds
|
||||||
|
noun: seeds-noun-seeds
|
||||||
|
displayName: seeds-gnome-display-name #name of the plant when looking at the tray
|
||||||
|
plantRsi: Objects/Specific/Hydroponics/gnome.rsi
|
||||||
|
packetPrototype: GnomeSeeds #seeds you get when clipping? BUT YOU CANT CLIP THIS PLANT TAKE THAT BOTANISTS!
|
||||||
|
productPrototypes:
|
||||||
|
- MobGnome #THE THING THAT SPAWNS!
|
||||||
|
lifespan: 25
|
||||||
|
maturation: 10
|
||||||
|
production: 1
|
||||||
|
yield: 1
|
||||||
|
potency: 1
|
||||||
|
idealLight: 8
|
||||||
|
growthStages: 2
|
||||||
|
waterConsumption: 0
|
||||||
|
seedless: true #fuckin does nothing but im keeping it just in case someone wants botany to riot
|
||||||
|
unclippable: true
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
- type: inventoryTemplate
|
||||||
|
id: gnome
|
||||||
|
#slots: i was on the fence to give them an id slot so ill comment this out for now
|
||||||
|
# - name: id
|
||||||
|
# slotTexture: id
|
||||||
|
# slotFlags: IDCARD
|
||||||
|
# slotGroup: SecondHotbar
|
||||||
|
# stripTime: 6
|
||||||
|
# uiWindowPos: 2,1
|
||||||
|
# strippingWindowPos: 2,4
|
||||||
|
# dependsOn: jumpsuit
|
||||||
|
# displayName: ID
|
||||||
|
|
||||||
@@ -524,3 +524,13 @@
|
|||||||
path: /Audio/Animals/parrot_raught.ogg
|
path: /Audio/Animals/parrot_raught.ogg
|
||||||
params:
|
params:
|
||||||
variation: 0.125
|
variation: 0.125
|
||||||
|
|
||||||
|
- type: emoteSounds
|
||||||
|
id: Gnome
|
||||||
|
params:
|
||||||
|
variation: 0.125
|
||||||
|
sounds:
|
||||||
|
Scream:
|
||||||
|
path: /Audio/Voice/Gnome/Gnome_Woo_Sound_Effect.ogg
|
||||||
|
Weh:
|
||||||
|
collection: Weh
|
||||||
|
|||||||
8
Resources/Prototypes/_White/Sound/Speech/gnomes.yml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
- type: speechSounds
|
||||||
|
id: GnomesSpeech
|
||||||
|
saySound:
|
||||||
|
collection: GnomesSpeechCollection
|
||||||
|
askSound:
|
||||||
|
collection: GnomesSpeechCollection
|
||||||
|
exclaimSound:
|
||||||
|
collection: GnomesSpeechCollection
|
||||||
19
Resources/Prototypes/_White/SoundCollections/gnomes.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
- type: soundCollection
|
||||||
|
id: GnomesSpeechCollection
|
||||||
|
files:
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome1V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome2V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome3V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome4V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome5V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome6V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome7V1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Gnome8V1.ogg
|
||||||
|
|
||||||
|
- type: soundCollection
|
||||||
|
id: GnomesDeathCollection
|
||||||
|
files:
|
||||||
|
- /Audio/White/Voice/Gnomes/Death1.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Death2.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Death3.ogg
|
||||||
|
- /Audio/White/Voice/Gnomes/Death4.ogg
|
||||||
12
Resources/Prototypes/_White/Spawners/spawners.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
- type: entity
|
||||||
|
name: Gnome spawner
|
||||||
|
id: SpawnMobGnome
|
||||||
|
parent: MarkerBase
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
layers:
|
||||||
|
- state: green
|
||||||
|
- state: ai
|
||||||
|
- type: ConditionalSpawner
|
||||||
|
prototypes:
|
||||||
|
- MobGnome
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
# Non-fungible apes, anyone?
|
# Non-fungible apes, anyone?
|
||||||
- type: nameIdentifierGroup
|
- type: nameIdentifierGroup
|
||||||
id: Monkey
|
id: Monkey
|
||||||
prefix: MK
|
prefix: MK
|
||||||
|
|
||||||
|
- type: nameIdentifierGroup
|
||||||
|
id: Gnome
|
||||||
|
prefix: GN
|
||||||
|
|
||||||
- type: nameIdentifierGroup
|
- type: nameIdentifierGroup
|
||||||
id: Kobold
|
id: Kobold
|
||||||
prefix: KB
|
prefix: KB
|
||||||
|
|||||||
@@ -644,6 +644,9 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
id: Grenade
|
id: Grenade
|
||||||
|
|
||||||
|
- type: Tag # tag to make a glue tool use glue on repair
|
||||||
|
id: GlueTool
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: HudMedical
|
id: HudMedical
|
||||||
|
|
||||||
@@ -1187,7 +1190,7 @@
|
|||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: SuitEVA
|
id: SuitEVA
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: Sunglasses
|
id: Sunglasses
|
||||||
|
|
||||||
@@ -1322,5 +1325,3 @@
|
|||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: WriteIgnoreStamps
|
id: WriteIgnoreStamps
|
||||||
|
|
||||||
# ALPHABETICAL
|
|
||||||
|
|||||||
@@ -74,3 +74,10 @@
|
|||||||
toolName: tool-quality-rolling-tool-name
|
toolName: tool-quality-rolling-tool-name
|
||||||
spawn: RollingPin
|
spawn: RollingPin
|
||||||
icon: { sprite: Objects/Tools/rolling_pin.rsi, state: icon }
|
icon: { sprite: Objects/Tools/rolling_pin.rsi, state: icon }
|
||||||
|
|
||||||
|
- type: tool
|
||||||
|
id: Gluing
|
||||||
|
name: tool-quality-gluing-name
|
||||||
|
toolName: tool-quality-rolling-tool-name
|
||||||
|
spawn: DrinkSpaceGlue
|
||||||
|
icon: { sprite: Objects/Tools/rolling_pin.rsi, state: icon }
|
||||||
|
|||||||
|
After Width: | Height: | Size: 368 B |
BIN
Resources/Textures/Clothing/Head/Hats/hat_gnome.rsi/icon.png
Normal file
|
After Width: | Height: | Size: 631 B |
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Sprited by DanoftheE (Discord)",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "equipped-HELMET",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
Resources/Textures/Mobs/Animals/gnome.rsi/0-equipped-HELMET.png
Normal file
|
After Width: | Height: | Size: 827 B |
BIN
Resources/Textures/Mobs/Animals/gnome.rsi/1-equipped-HELMET.png
Normal file
|
After Width: | Height: | Size: 827 B |
BIN
Resources/Textures/Mobs/Animals/gnome.rsi/Gnome-0.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Resources/Textures/Mobs/Animals/gnome.rsi/Gnome-1.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Resources/Textures/Mobs/Animals/gnome.rsi/dead-1.png
Normal file
|
After Width: | Height: | Size: 430 B |
63
Resources/Textures/Mobs/Animals/gnome.rsi/meta.json
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Sprited by DanoftheE (Discord)",
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "dead-1",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gnome-0",
|
||||||
|
"directions": 4,
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gnome-1",
|
||||||
|
"directions": 4,
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
],
|
||||||
|
[
|
||||||
|
1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "0-equipped-HELMET",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "1-equipped-HELMET",
|
||||||
|
"directions": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 444 B |
|
After Width: | Height: | Size: 443 B |
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Sprited by DanoftheE (Discord)",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "dead"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "harvest"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stage-1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stage-2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 173 B |
|
After Width: | Height: | Size: 246 B |