ГАРПИИ (#559)
* harpy initial * fix and some locale * ru locale * actions refactor shit * пофиксив гавпий~~~ пойду тестить~~ * hawpies are ready UwU * cweanup OwO * hawpies fixed a bit, still cant seawch them nya~ * hawpies can be stwipped now, fixie-dixie awwived~ * emotes fixie-dixied nya~ * говно * говно говна линтер соси
134
Content.Server/White/Harpy/HarpysingerSystem.cs
Normal file
@@ -0,0 +1,134 @@
|
||||
using Content.Server.Instruments;
|
||||
using Content.Server.Speech.Components;
|
||||
using Content.Server.UserInterface;
|
||||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.White.Harpy;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Inventory.Events;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.StatusEffect;
|
||||
using Content.Shared.UserInterface;
|
||||
using Content.Shared.Zombies;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Player;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server.White.Harpy
|
||||
{
|
||||
public sealed class HarpySingerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly InstrumentSystem _instrument = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly InventorySystem _inventorySystem = default!;
|
||||
[Dependency] private readonly ActionBlockerSystem _blocker = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<InstrumentComponent, MobStateChangedEvent>(OnMobStateChangedEvent);
|
||||
SubscribeLocalEvent<GotEquippedEvent>(OnEquip);
|
||||
SubscribeLocalEvent<EntityZombifiedEvent>(OnZombified);
|
||||
//SubscribeLocalEvent<InstrumentComponent, KnockedDownEvent>(OnKnockedDown); //WD EDIT
|
||||
//SubscribeLocalEvent<InstrumentComponent, StunnedEvent>(OnStunned); //WD EDIT
|
||||
SubscribeLocalEvent<InstrumentComponent, SleepStateChangedEvent>(OnSleep);
|
||||
SubscribeLocalEvent<InstrumentComponent, StatusEffectAddedEvent>(OnStatusEffect);
|
||||
//SubscribeLocalEvent<InstrumentComponent, DamageChangedEvent>(OnDamageChanged); //WD EDIT
|
||||
|
||||
// This is intended to intercept the UI event and stop the MIDI UI from opening if the
|
||||
// singer is unable to sing. Thus it needs to run before the ActivatableUISystem.
|
||||
SubscribeLocalEvent<HarpySingerComponent, OpenUiActionEvent>(OnInstrumentOpen, before: new[] { typeof(ActivatableUISystem) });
|
||||
}
|
||||
|
||||
private void OnEquip(GotEquippedEvent args)
|
||||
{
|
||||
// Check if an item that makes the singer mumble is equipped to their face
|
||||
// (not their pockets!). As of writing, this should just be the muzzle.
|
||||
if (TryComp<AddAccentClothingComponent>(args.Equipment, out var accent) &&
|
||||
accent.ReplacementPrototype == "mumble" &&
|
||||
args.Slot == "mask")
|
||||
{
|
||||
CloseMidiUi(args.Equipee);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMobStateChangedEvent(EntityUid uid, InstrumentComponent component, MobStateChangedEvent args)
|
||||
{
|
||||
if (args.NewMobState is MobState.Critical or MobState.Dead)
|
||||
CloseMidiUi(args.Target);
|
||||
}
|
||||
|
||||
private void OnZombified(ref EntityZombifiedEvent args)
|
||||
{
|
||||
CloseMidiUi(args.Target);
|
||||
}
|
||||
|
||||
/*
|
||||
private void OnKnockedDown(EntityUid uid, InstrumentComponent component, ref KnockedDownEvent args)
|
||||
{
|
||||
CloseMidiUi(uid);
|
||||
}
|
||||
|
||||
private void OnStunned(EntityUid uid, InstrumentComponent component, ref StunnedEvent args)
|
||||
{
|
||||
CloseMidiUi(uid);
|
||||
}
|
||||
*/
|
||||
|
||||
private void OnSleep(EntityUid uid, InstrumentComponent component, SleepStateChangedEvent args)
|
||||
{
|
||||
if (args.FellAsleep)
|
||||
CloseMidiUi(uid);
|
||||
}
|
||||
|
||||
private void OnStatusEffect(EntityUid uid, InstrumentComponent component, StatusEffectAddedEvent args)
|
||||
{
|
||||
if (args.Key == "Muted")
|
||||
CloseMidiUi(uid);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Almost a copy of Content.Server.Damage.ForceSay.DamageForceSaySystem.OnDamageChanged.
|
||||
/// Done so because DamageForceSaySystem doesn't output an event, and my understanding is
|
||||
/// that we don't want to change upstream code more than necessary to avoid merge conflicts
|
||||
/// and maintenance overhead. It still reuses the values from DamageForceSayComponent, so
|
||||
/// any tweaks to that will keep ForceSay consistent with singing interruptions.
|
||||
/// </summary>
|
||||
|
||||
/// <summary>
|
||||
/// Closes the MIDI UI if it is open.
|
||||
/// </summary>
|
||||
private void CloseMidiUi(EntityUid uid)
|
||||
{
|
||||
if (HasComp<ActiveInstrumentComponent>(uid) &&
|
||||
TryComp<ActorComponent>(uid, out var actor))
|
||||
{
|
||||
_instrument.ToggleInstrumentUi(uid, actor.PlayerSession);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Prevent the player from opening the MIDI UI under some circumstances.
|
||||
/// </summary>
|
||||
private void OnInstrumentOpen(EntityUid uid, HarpySingerComponent component, OpenUiActionEvent args)
|
||||
{
|
||||
// CanSpeak covers all reasons you can't talk, including being incapacitated
|
||||
// (crit/dead), asleep, or for any reason mute inclding glimmer or a mime's vow.
|
||||
var canNotSpeak = !_blocker.CanSpeak(uid);
|
||||
var zombified = TryComp<ZombieComponent>(uid, out var _);
|
||||
var muzzled = _inventorySystem.TryGetSlotEntity(uid, "mask", out var maskUid) &&
|
||||
TryComp<AddAccentClothingComponent>(maskUid, out var accent) &&
|
||||
accent.ReplacementPrototype == "mumble";
|
||||
|
||||
// Set this event as handled when the singer should be incapable of singing in order
|
||||
// to stop the ActivatableUISystem event from opening the MIDI UI.
|
||||
args.Handled = canNotSpeak || muzzled || zombified;
|
||||
|
||||
// Tell the user that they can not sing.
|
||||
if (args.Handled)
|
||||
_popupSystem.PopupEntity(Loc.GetString("no-sing-while-no-speak"), uid, uid, PopupType.Medium);
|
||||
}
|
||||
}
|
||||
}
|
||||
17
Content.Shared/White/Harpy/HarpySingerComponent.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
|
||||
namespace Content.Shared.White.Harpy
|
||||
{
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class HarpySingerComponent : Component
|
||||
{
|
||||
[DataField("midiActionId", serverOnly: true,
|
||||
customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string? MidiActionId = "ActionHarpyPlayMidi";
|
||||
|
||||
[DataField("midiAction", serverOnly: true)] // server only, as it uses a server-BUI event !type
|
||||
public EntityUid? MidiAction;
|
||||
}
|
||||
}
|
||||
27
Content.Shared/White/Harpy/HarpySingerSystem.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Content.Shared.Actions;
|
||||
|
||||
namespace Content.Shared.White.Harpy
|
||||
{
|
||||
public class HarpySingerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<HarpySingerComponent, ComponentStartup>(OnStartup);
|
||||
SubscribeLocalEvent<HarpySingerComponent, ComponentShutdown>(OnShutdown);
|
||||
}
|
||||
|
||||
private void OnStartup(EntityUid uid, HarpySingerComponent component, ComponentStartup args)
|
||||
{
|
||||
_actionsSystem.AddAction(uid, ref component.MidiAction, component.MidiActionId);
|
||||
}
|
||||
|
||||
private void OnShutdown(EntityUid uid, HarpySingerComponent component, ComponentShutdown args)
|
||||
{
|
||||
_actionsSystem.RemoveAction(uid, component.MidiAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
9
Resources/Audio/White/Voice/Harpy/attributions.yml
Normal file
@@ -0,0 +1,9 @@
|
||||
- files: ["caw1.ogg"]
|
||||
license: "CC-BY-SA-4.0"
|
||||
copyright: "Original sound by https://xeno-canto.org/756861"
|
||||
source: "https://xeno-canto.org/756861"
|
||||
|
||||
files: ["chirp1.ogg"]
|
||||
license: "CC-BY-SA-4.0"
|
||||
copyright: "Original sound by https://xeno-canto.org/797998"
|
||||
source: "https://xeno-canto.org/797998"
|
||||
BIN
Resources/Audio/White/Voice/Harpy/caw1.ogg
Normal file
BIN
Resources/Audio/White/Voice/Harpy/chirp1.ogg
Normal file
2
Resources/Audio/White/Voice/Harpy/license.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
caw1.ogg licensed under CC-BY-SA-4.0 taken from https://xeno-canto.org/756861
|
||||
chirp1.ogg licensed under CC-BY-SA-4.0 taken from https://xeno-canto.org/797998
|
||||
6
Resources/Locale/en-US/white/harpy/harpy.ftl
Normal file
@@ -0,0 +1,6 @@
|
||||
species-name-harpy = Harpy
|
||||
marking-HarpyWingDefault = Basic Wings
|
||||
marking-HarpyEarsDefault = Feather Tufts
|
||||
marking-HarpyTailPhoenix = Phoenix Tail
|
||||
marking-HarpyTailRooster = Rooster Tail
|
||||
no-sing-while-no-speak = You can't sing right now.
|
||||
6
Resources/Locale/ru-RU/white/species/harpy/harpy.ftl
Normal file
@@ -0,0 +1,6 @@
|
||||
species-name-harpy = Гарпия
|
||||
marking-HarpyWingDefault = обычные крылья
|
||||
marking-HarpyEarsDefault = пучки перьев
|
||||
marking-HarpyTailPhoenix = хвост феникса
|
||||
marking-HarpyTailRooster = петушиный хвост
|
||||
no-sing-while-no-speak = Вы не можете петь.
|
||||
@@ -309,3 +309,10 @@
|
||||
flatReductions:
|
||||
# can't punch the endoskeleton to death
|
||||
Blunt: 5
|
||||
|
||||
- type: damageModifierSet
|
||||
id: Harpy
|
||||
coefficients:
|
||||
Blunt: 1.15
|
||||
Slash: 1.15
|
||||
Piercing: 1.15
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
id: TattooHiveChest
|
||||
bodyPart: Chest
|
||||
markingCategory: Chest
|
||||
speciesRestriction: [Human, Dwarf]
|
||||
speciesRestriction: [Human, Dwarf, Harpy]
|
||||
coloring:
|
||||
default:
|
||||
type:
|
||||
@@ -16,7 +16,7 @@
|
||||
id: TattooNightlingChest
|
||||
bodyPart: Chest
|
||||
markingCategory: Chest
|
||||
speciesRestriction: [Human, Dwarf]
|
||||
speciesRestriction: [Human, Dwarf, Harpy]
|
||||
coloring:
|
||||
default:
|
||||
type:
|
||||
@@ -30,7 +30,7 @@
|
||||
id: TattooSilverburghLeftLeg
|
||||
bodyPart: LLeg
|
||||
markingCategory: Legs
|
||||
speciesRestriction: [Human, Dwarf]
|
||||
speciesRestriction: [Human, Dwarf, Harpy ]
|
||||
coloring:
|
||||
default:
|
||||
type:
|
||||
@@ -58,7 +58,7 @@
|
||||
id: TattooCampbellLeftArm
|
||||
bodyPart: LArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Human, Dwarf]
|
||||
speciesRestriction: [Human, Dwarf, Harpy]
|
||||
coloring:
|
||||
default:
|
||||
type:
|
||||
@@ -114,7 +114,7 @@
|
||||
id: TattooEyeRight
|
||||
bodyPart: Eyes
|
||||
markingCategory: Head
|
||||
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf]
|
||||
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Harpy]
|
||||
coloring:
|
||||
default:
|
||||
type:
|
||||
@@ -128,7 +128,7 @@
|
||||
id: TattooEyeLeft
|
||||
bodyPart: Eyes
|
||||
markingCategory: Head
|
||||
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf]
|
||||
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Harpy]
|
||||
coloring:
|
||||
default:
|
||||
type:
|
||||
|
||||
@@ -125,6 +125,61 @@
|
||||
Purr:
|
||||
collection: FelinidPurrs
|
||||
|
||||
- type: emoteSounds
|
||||
id: SoundsHarpy
|
||||
params:
|
||||
variation: 0.125
|
||||
sounds:
|
||||
Scream:
|
||||
collection: HarpyScreams
|
||||
Laugh:
|
||||
collection: HarpyLaugh
|
||||
Sneeze:
|
||||
collection: MaleSneezes
|
||||
Cough:
|
||||
collection: MaleCoughs
|
||||
Sigh:
|
||||
collection: MaleSigh
|
||||
Crying:
|
||||
collection: HarpyCry
|
||||
Whistle:
|
||||
collection: Whistles
|
||||
Hiss:
|
||||
collection: HarpyHisses
|
||||
Meow:
|
||||
collection: HarpyMeows
|
||||
Mew:
|
||||
collection: HarpyMews
|
||||
Growl:
|
||||
collection: HarpyGrowls
|
||||
Purr:
|
||||
collection: HarpyPurrs
|
||||
Boom:
|
||||
collection: HarpyBooms
|
||||
Ring:
|
||||
collection: HarpyRings
|
||||
HonkHarpy:
|
||||
collection: HarpyHonks
|
||||
Pew:
|
||||
collection: HarpyPews
|
||||
Bang:
|
||||
collection: HarpyBangs
|
||||
Beep:
|
||||
collection: HarpyBeeps
|
||||
Rev:
|
||||
collection: HarpyRevs
|
||||
Click:
|
||||
collection: HarpyClicks
|
||||
Chitter:
|
||||
collection: HarpyChitter
|
||||
Squeak:
|
||||
collection: HarpySqueak
|
||||
Caw:
|
||||
collection: HarpyCaws
|
||||
Chirp:
|
||||
collection: HarpyChirps
|
||||
|
||||
|
||||
- type: emoteSounds
|
||||
id: UnisexReptilian
|
||||
params:
|
||||
|
||||
49
Resources/Prototypes/White/Body/Prototypes/harpy.yml
Normal file
@@ -0,0 +1,49 @@
|
||||
- type: body
|
||||
id: Harpy
|
||||
name: "harpy"
|
||||
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: OrganHumanHeart
|
||||
lungs: OrganHumanLungs
|
||||
stomach: OrganHumanStomach
|
||||
liver: OrganHumanLiver
|
||||
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
|
||||
184
Resources/Prototypes/White/Emotes/harpy_emotes.yml
Normal file
@@ -0,0 +1,184 @@
|
||||
- type: emote
|
||||
id: Boom
|
||||
category: Vocal
|
||||
chatMessages: [имитирует звук взрыва]
|
||||
chatTriggers:
|
||||
- имитирует звук взрыва
|
||||
- имитирует звук взрыва.
|
||||
- бум
|
||||
- взрыв
|
||||
- boom
|
||||
- booms
|
||||
- booms.
|
||||
- booms!
|
||||
- booming
|
||||
- boomed
|
||||
|
||||
- type: emote
|
||||
id: HonkHarpy
|
||||
category: Vocal
|
||||
chatMessages: [гудит]
|
||||
chatTriggers:
|
||||
- гудит.
|
||||
- гудит
|
||||
- хонкает
|
||||
- хонкает.
|
||||
- хонк
|
||||
- honk
|
||||
- honks
|
||||
- honks.
|
||||
- honks!
|
||||
- honking
|
||||
- honked
|
||||
|
||||
- type: emote
|
||||
id: Ring
|
||||
category: Vocal
|
||||
chatMessages: [звенит]
|
||||
chatTriggers:
|
||||
- звенит
|
||||
- звенит.
|
||||
- имитирует звонок
|
||||
- имитирует звонок.
|
||||
- ring
|
||||
- rings
|
||||
- rings.
|
||||
- rings!
|
||||
- ringing
|
||||
- ringed
|
||||
|
||||
- type: emote
|
||||
id: Pew
|
||||
category: Vocal
|
||||
chatMessages: [пиукает]
|
||||
chatTriggers:
|
||||
- пиу
|
||||
- пиу-пиу
|
||||
- пиукает.
|
||||
- пиукает
|
||||
- pew.
|
||||
- pews.
|
||||
- pew!
|
||||
|
||||
- type: emote
|
||||
id: Bang
|
||||
category: Vocal
|
||||
chatMessages: [имитирует звук выстрела]
|
||||
chatTriggers:
|
||||
- имитирует звук выстрела
|
||||
- выстрел
|
||||
- выстрел.
|
||||
- bangs.
|
||||
- bang.
|
||||
- bang!
|
||||
- banging.
|
||||
- banged.
|
||||
|
||||
- type: emote
|
||||
id: Beep
|
||||
category: Vocal
|
||||
chatMessages: [пищит]
|
||||
chatTriggers:
|
||||
- писк
|
||||
- пищит
|
||||
- beeps.
|
||||
- beep.
|
||||
- beep!
|
||||
- beeping.
|
||||
- beeped.
|
||||
|
||||
- type: emote
|
||||
id: Click
|
||||
category: Vocal
|
||||
chatMessages: [щёлкает]
|
||||
chatTriggers:
|
||||
- щелкает клювом
|
||||
- щелк
|
||||
- щёлкает
|
||||
- щёлкает клювом
|
||||
- щёлк
|
||||
- clicks.
|
||||
- click.
|
||||
- click!
|
||||
- clicking.
|
||||
- clicked.
|
||||
|
||||
- type: emote
|
||||
id: Caw
|
||||
category: Vocal
|
||||
chatMessages: [воркует]
|
||||
chatTriggers:
|
||||
- воркует
|
||||
- воркует.
|
||||
- caws.
|
||||
- caw.
|
||||
- caw!
|
||||
- cawing
|
||||
- cawed
|
||||
|
||||
- type: emote
|
||||
id: Chirp
|
||||
category: Vocal
|
||||
chatMessages: [чирикает]
|
||||
chatTriggers:
|
||||
- чирик
|
||||
- чирик.
|
||||
- чирикает.
|
||||
- чирикает
|
||||
- чик-чирикает
|
||||
- чик-чирикает.
|
||||
- chirps.
|
||||
- chirp.
|
||||
- chirp!
|
||||
- chirping.
|
||||
- chirped.
|
||||
|
||||
- type: emote
|
||||
id: Rev
|
||||
category: Vocal
|
||||
chatMessages: [издает рёв]
|
||||
chatTriggers:
|
||||
- рев
|
||||
- рев.
|
||||
- рёв
|
||||
- рёв.
|
||||
- издает рев
|
||||
- издает рев.
|
||||
- издает рёв
|
||||
- издает рёв.
|
||||
|
||||
- type: emote
|
||||
id: Chitter
|
||||
category: Vocal
|
||||
chatMessages: [тарахтит]
|
||||
chatTriggers:
|
||||
- тарахтит
|
||||
- тараътит.
|
||||
- chitter
|
||||
- chitter.
|
||||
- chitter!
|
||||
- chitters
|
||||
- chitters.
|
||||
- chitters!
|
||||
- chittered
|
||||
- chittered.
|
||||
- chittered!
|
||||
|
||||
- type: emote
|
||||
id: Squeak
|
||||
category: Vocal
|
||||
chatMessages: [сквикает]
|
||||
chatTriggers:
|
||||
- сквик
|
||||
- сквик.
|
||||
- сквикает
|
||||
- сквикает.
|
||||
- squeak
|
||||
- squeak.
|
||||
- squeak!
|
||||
- squeaks
|
||||
- squeaks.
|
||||
- squeaks!
|
||||
- squeaked
|
||||
- squeaked.
|
||||
- squeaked!
|
||||
@@ -0,0 +1,95 @@
|
||||
# All the Harpy customization
|
||||
|
||||
# Ears Markings
|
||||
- type: marking
|
||||
id: HarpyWingDefault
|
||||
bodyPart: RArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpy
|
||||
|
||||
- type: marking
|
||||
id: HarpyEarsDefault
|
||||
bodyPart: Head
|
||||
markingCategory: HeadTop
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_ears.rsi
|
||||
state: harpy_ears_default
|
||||
|
||||
- type: marking
|
||||
id: HarpyTailPhoenix
|
||||
bodyPart: Tail
|
||||
markingCategory: Tail
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_tails.rsi
|
||||
state: phoenix_tail
|
||||
|
||||
- type: marking
|
||||
id: HarpyTailRooster
|
||||
bodyPart: Tail
|
||||
markingCategory: Tail
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_tails.rsi
|
||||
state: rooster_tail
|
||||
|
||||
- type: marking
|
||||
id: HarpyWing2Tone
|
||||
bodyPart: RArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpy2tone1
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpy2tone2
|
||||
|
||||
- type: marking
|
||||
id: HarpyWing3Tone
|
||||
bodyPart: RArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpy3tone1
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpy3tone2
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpy3tone3
|
||||
|
||||
- type: marking
|
||||
id: HarpyWingSpeckled
|
||||
bodyPart: RArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpyspeckled1
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpyspeckled2
|
||||
|
||||
- type: marking
|
||||
id: HarpyWingUndertone
|
||||
bodyPart: RArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpyundertone1
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpyundertone2
|
||||
|
||||
- type: marking
|
||||
id: HarpyWingTips
|
||||
bodyPart: RArm
|
||||
markingCategory: Arms
|
||||
speciesRestriction: [Harpy]
|
||||
sprites:
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpywingtip1
|
||||
- sprite: White/Mobs/Customization/Harpy/harpy_wings.rsi
|
||||
state: harpywingtip2
|
||||
35
Resources/Prototypes/White/Mobs/Player/harpy.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
- type: entity
|
||||
save: false
|
||||
name: Urist McHarpy
|
||||
parent: MobHarpyBase
|
||||
id: MobHarpy
|
||||
components:
|
||||
- type: CombatMode
|
||||
- type: InteractionPopup
|
||||
successChance: 1
|
||||
interactSuccessString: hugging-success-generic
|
||||
interactSuccessSound: /Audio/Effects/thudswoosh.ogg
|
||||
messagePerceivedByOthers: hugging-success-generic-others
|
||||
- type: MindContainer
|
||||
showExamineInfo: true
|
||||
- type: Input
|
||||
context: "human"
|
||||
- type: MobMover
|
||||
- type: InputMover
|
||||
- type: Respirator
|
||||
damage:
|
||||
types:
|
||||
Asphyxiation: 1.15
|
||||
damageRecovery:
|
||||
types:
|
||||
Asphyxiation: -1.15
|
||||
- type: Alerts
|
||||
- type: HarpySinger
|
||||
- type: Actions
|
||||
- type: Eye
|
||||
- type: CameraRecoil
|
||||
- type: Examiner
|
||||
- type: CanHostGuardian
|
||||
- type: NpcFactionMember
|
||||
factions:
|
||||
- NanoTrasen
|
||||
178
Resources/Prototypes/White/Mobs/Species/harpy.yml
Normal file
@@ -0,0 +1,178 @@
|
||||
- type: entity
|
||||
save: false
|
||||
name: Urist McHarpy
|
||||
parent: BaseMobHuman
|
||||
id: MobHarpyBase
|
||||
abstract: true
|
||||
components:
|
||||
- type: HarpySinger
|
||||
|
||||
- type: Instrument
|
||||
allowPercussion: false
|
||||
program: 52
|
||||
- type: SwappableInstrument
|
||||
instrumentList:
|
||||
"Voice": {52: 0}
|
||||
"Trumpet": {56: 0}
|
||||
"Electric": {27: 0}
|
||||
"Bass": {33: 0}
|
||||
"Rock": {29: 0}
|
||||
"Acoustic": {24: 0}
|
||||
"Flute": {73: 0}
|
||||
"Sax": {66: 0}
|
||||
- type: UserInterface
|
||||
interfaces:
|
||||
- key: enum.InstrumentUiKey.Key
|
||||
type: InstrumentBoundUserInterface
|
||||
- key: enum.VoiceMaskUIKey.Key
|
||||
type: VoiceMaskBoundUserInterface
|
||||
- key: enum.HumanoidMarkingModifierKey.Key
|
||||
type: HumanoidMarkingModifierBoundUserInterface
|
||||
- key: enum.StrippingUiKey.Key
|
||||
type: StrippableBoundUserInterface
|
||||
- type: Sprite
|
||||
scale: 0.9, 0.9
|
||||
layers:
|
||||
- map: [ "enum.HumanoidVisualLayers.Chest" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Head" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Snout" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Eyes" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.LArm" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
|
||||
- map: [ "underwearb" ] #White
|
||||
- map: [ "underweart" ] #White
|
||||
- map: ["enum.HumanoidVisualLayers.LFoot"]
|
||||
- map: ["enum.HumanoidVisualLayers.RFoot"]
|
||||
- map: [ "socks" ] #White
|
||||
- map: [ "jumpsuit" ]
|
||||
- map: ["enum.HumanoidVisualLayers.LHand"]
|
||||
- map: ["enum.HumanoidVisualLayers.RHand"]
|
||||
- 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" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadSide" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Tail" ]
|
||||
- map: [ "pocket1" ]
|
||||
- map: [ "pocket2" ]
|
||||
- map: [ "clownedon" ] # Dynamically generated
|
||||
sprite: "Effects/creampie.rsi"
|
||||
state: "creampie_human"
|
||||
visible: false
|
||||
# Yes, RArm has to be down here
|
||||
- map: [ "enum.HumanoidVisualLayers.RArm" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Hair" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||
- map: [ "mask" ]
|
||||
- map: [ "head" ]
|
||||
|
||||
- type: HumanoidAppearance
|
||||
species: Harpy
|
||||
- type: Fixtures
|
||||
fixtures: # TODO: This needs a second fixture just for mob collisions.
|
||||
fix1:
|
||||
shape:
|
||||
!type:PhysShapeCircle
|
||||
radius: 0.28
|
||||
density: 140
|
||||
restitution: 0.0
|
||||
mask:
|
||||
- MobMask
|
||||
layer:
|
||||
- MobLayer
|
||||
- type: Body
|
||||
prototype: Harpy
|
||||
- type: Damageable
|
||||
damageModifierSet: Harpy
|
||||
- type: MeleeWeapon
|
||||
soundHit:
|
||||
collection: Punch
|
||||
animation: WeaponArcClaw
|
||||
damage:
|
||||
types:
|
||||
Blunt: 1
|
||||
Slash: 5
|
||||
- type: Speech
|
||||
speechSounds: Alto
|
||||
- type: Vocal
|
||||
sounds:
|
||||
Male: SoundsHarpy
|
||||
Female: SoundsHarpy
|
||||
Unsexed: SoundsHarpy
|
||||
|
||||
- type: entity
|
||||
save: false
|
||||
name: Urist McHands
|
||||
parent: MobHumanDummy
|
||||
id: MobHarpyDummy
|
||||
noSpawn: true
|
||||
description: A dummy Harpy meant to be used in character setup.
|
||||
components:
|
||||
- type: HumanoidAppearance
|
||||
species: Harpy
|
||||
- type: Sprite
|
||||
scale: 0.9, 0.9
|
||||
layers:
|
||||
- map: [ "enum.HumanoidVisualLayers.Chest" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Head" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Snout" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Eyes" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.LArm" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
|
||||
- map: [ "underpants" ]
|
||||
- map: [ "undershirt" ]
|
||||
- map: [ "socks" ]
|
||||
- map: [ "jumpsuit" ]
|
||||
- map: ["enum.HumanoidVisualLayers.LFoot"]
|
||||
- map: ["enum.HumanoidVisualLayers.RFoot"]
|
||||
- map: ["enum.HumanoidVisualLayers.LHand"]
|
||||
- map: ["enum.HumanoidVisualLayers.RHand"]
|
||||
- map: [ "id" ]
|
||||
- map: [ "gloves" ]
|
||||
- map: [ "shoes" ]
|
||||
- map: [ "ears" ]
|
||||
- map: [ "outerClothing" ]
|
||||
- map: [ "eyes" ]
|
||||
- map: [ "belt" ]
|
||||
- map: [ "neck" ]
|
||||
- map: [ "back" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.FacialHair" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadSide" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.HeadTop" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Tail" ]
|
||||
- map: [ "pocket1" ]
|
||||
- map: [ "pocket2" ]
|
||||
- map: [ "clownedon" ] # Dynamically generated
|
||||
sprite: "Effects/creampie.rsi"
|
||||
state: "creampie_human"
|
||||
visible: false
|
||||
# Yes, RArm has to be down here
|
||||
- map: [ "enum.HumanoidVisualLayers.RArm" ]
|
||||
- map: [ "enum.HumanoidVisualLayers.Hair" ]
|
||||
- map: [ "mask" ]
|
||||
- map: [ "head" ]
|
||||
|
||||
- type: entity
|
||||
id: ActionHarpyPlayMidi
|
||||
name: Play MIDI
|
||||
description: Sing your heart out! Right click yourself to set an instrument.
|
||||
noSpawn: true
|
||||
components:
|
||||
- type: InstantAction
|
||||
icon: White/Interface/Actions/harpy_sing.png
|
||||
checkCanInteract: true
|
||||
event: !type:OpenUiActionEvent
|
||||
key: enum.InstrumentUiKey.Key
|
||||
242
Resources/Prototypes/White/SoundCollections/harpy.yml
Normal file
@@ -0,0 +1,242 @@
|
||||
- type: soundCollection
|
||||
id: HarpyScreams
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_scream1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_scream2.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_scream3.ogg
|
||||
- /Audio/Animals/monkey_scream.ogg
|
||||
- /Audio/Voice/Human/malescream_1.ogg
|
||||
- /Audio/Voice/Human/malescream_2.ogg
|
||||
- /Audio/Voice/Human/malescream_3.ogg
|
||||
- /Audio/Voice/Human/malescream_4.ogg
|
||||
- /Audio/Voice/Human/malescream_5.ogg
|
||||
- /Audio/Voice/Human/malescream_6.ogg
|
||||
- /Audio/Voice/Human/femalescream_1.ogg
|
||||
- /Audio/Voice/Human/femalescream_2.ogg
|
||||
- /Audio/Voice/Human/femalescream_3.ogg
|
||||
- /Audio/Voice/Human/femalescream_4.ogg
|
||||
- /Audio/Voice/Human/femalescream_5.ogg
|
||||
#- /Audio/Voice/Moth/moth_scream.ogg
|
||||
- /Audio/Voice/Skeleton/skeleton_scream.ogg
|
||||
- /Audio/Voice/Reptilian/reptilian_scream.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyLaugh
|
||||
files:
|
||||
- /Audio/Voice/Human/manlaugh1.ogg
|
||||
- /Audio/Voice/Human/manlaugh2.ogg
|
||||
- /Audio/Voice/Human/womanlaugh.ogg
|
||||
- /Audio/Voice/Diona/diona_rustle1.ogg
|
||||
- /Audio/Voice/Diona/diona_rustle2.ogg
|
||||
- /Audio/Voice/Diona/diona_rustle3.ogg
|
||||
- /Audio/Animals/lizard_happy.ogg
|
||||
- /Audio/Animals/ferret_happy.ogg
|
||||
#- /Audio/Voice/Moth/moth_laugh.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyHisses
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_hiss1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_hiss2.ogg
|
||||
- /Audio/Weapons/ebladeon.ogg
|
||||
- /Audio/Weapons/eblade1.ogg
|
||||
- /Audio/Items/hiss.ogg
|
||||
- /Audio/Items/hypospray.ogg
|
||||
- /Audio/Items/ratchet.ogg
|
||||
- /Audio/Items/welder.ogg
|
||||
- /Audio/Machines/airlock_close.ogg
|
||||
- /Audio/Machines/airlock_ext_close.ogg
|
||||
- /Audio/Machines/airlock_ext_open.ogg
|
||||
- /Audio/Machines/airlock_open.ogg
|
||||
- /Audio/Machines/disposalflush.ogg
|
||||
- /Audio/Machines/printer.ogg
|
||||
- /Audio/Machines/windoor_open.ogg
|
||||
- /Audio/Effects/spray.ogg
|
||||
- /Audio/Effects/spray2.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpySigh
|
||||
files:
|
||||
- /Audio/Voice/Human/male_sigh.ogg
|
||||
- /Audio/Voice/Human/female_sigh.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyCry
|
||||
files:
|
||||
- /Audio/Voice/Human/cry_male_1.ogg
|
||||
- /Audio/Voice/Human/cry_male_2.ogg
|
||||
- /Audio/Voice/Human/cry_male_3.ogg
|
||||
- /Audio/Voice/Human/cry_male_4.ogg
|
||||
- /Audio/Voice/Human/cry_female_1.ogg
|
||||
- /Audio/Voice/Human/cry_female_2.ogg
|
||||
- /Audio/Voice/Human/cry_female_3.ogg
|
||||
- /Audio/Voice/Human/cry_female_4.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyMeows
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_meow1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_meow2.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_meow3.ogg
|
||||
- /Audio/Items/Toys/meow1.ogg
|
||||
- /Audio/Animals/cat_meow.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyMews
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_mew1.ogg
|
||||
- /Audio/White/Voice/Felinid/cat_mew2.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyGrowls
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_growl1.ogg
|
||||
- /Audio/Animals/bear.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyPurrs
|
||||
files:
|
||||
- /Audio/White/Voice/Felinid/cat_purr1.ogg
|
||||
- /Audio/Mecha/sound_mecha_hydraulic.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyBooms
|
||||
files:
|
||||
- /Audio/Effects/flash_bang.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyRings
|
||||
files:
|
||||
- /Audio/Items/desk_bell_ring.ogg
|
||||
- /Audio/Items/ring.ogg
|
||||
- /Audio/Machines/ding.ogg
|
||||
#- /Audio/Machines/warning_buzzer.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyHonks
|
||||
files:
|
||||
- /Audio/Items/bikehorn.ogg
|
||||
- /Audio/Items/brokenbikehorn.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyPews
|
||||
files:
|
||||
- /Audio/Weapons/Guns/Gunshots/silenced.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/taser.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/taser2.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/laser.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/laser3.ogg
|
||||
- /Audio/Weapons/emitter.ogg
|
||||
- /Audio/Effects/Arcade/player_attack.ogg
|
||||
- /Audio/Effects/Arcade/player_charge.ogg
|
||||
- /Audio/Effects/Arcade/player_heal.ogg
|
||||
- /Audio/Magic/blink.ogg
|
||||
- /Audio/Magic/staff_animation.ogg
|
||||
- /Audio/Magic/staff_change.ogg
|
||||
- /Audio/Magic/staff_chaos.ogg
|
||||
- /Audio/Magic/staff_door.ogg
|
||||
- /Audio/Magic/staff_healing.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyBangs
|
||||
files:
|
||||
- /Audio/Weapons/Guns/Gunshots/atreides.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/bang.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/mk58.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/pistol.ogg
|
||||
- /Audio/Weapons/Guns/Gunshots/c-20r.ogg
|
||||
- /Audio/Items/snap.ogg
|
||||
- /Audio/Machines/airlock_creaking.ogg
|
||||
- /Audio/Machines/blastdoor.ogg
|
||||
- /Audio/Machines/machine_vend.ogg
|
||||
- /Audio/Magic/disintegrate.ogg
|
||||
- /Audio/Magic/fireball.ogg
|
||||
- /Audio/Magic/forcewall.ogg
|
||||
- /Audio/Magic/knock.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyBeeps
|
||||
files:
|
||||
- /Audio/Weapons/Guns/EmptyAlarm/smg_empty_alarm.ogg
|
||||
- /Audio/Weapons/flash.ogg
|
||||
- /Audio/Items/beep.ogg
|
||||
- /Audio/Items/flashlight_pda.ogg
|
||||
- /Audio/Items/locator_beep.ogg
|
||||
- /Audio/Items/toolbox_drop.ogg
|
||||
- /Audio/Items/Defib/defib_charge.ogg
|
||||
- /Audio/Items/Defib/defib_ready.ogg
|
||||
- /Audio/Items/Defib/defib_safety_off.ogg
|
||||
- /Audio/Items/Defib/defib_safety_on.ogg
|
||||
- /Audio/Items/Medical/healthscanner.ogg
|
||||
- /Audio/Effects/RingtoneNotes/a.ogg
|
||||
- /Audio/Effects/RingtoneNotes/asharp.ogg
|
||||
- /Audio/Effects/RingtoneNotes/b.ogg
|
||||
- /Audio/Effects/RingtoneNotes/c.ogg
|
||||
- /Audio/Effects/RingtoneNotes/csharp.ogg
|
||||
- /Audio/Effects/RingtoneNotes/d.ogg
|
||||
- /Audio/Effects/RingtoneNotes/dsharp.ogg
|
||||
- /Audio/Effects/RingtoneNotes/e.ogg
|
||||
- /Audio/Effects/RingtoneNotes/f.ogg
|
||||
- /Audio/Effects/RingtoneNotes/fsharp.ogg
|
||||
- /Audio/Effects/RingtoneNotes/g.ogg
|
||||
- /Audio/Effects/RingtoneNotes/gsharp.ogg
|
||||
- /Audio/Effects/Arcade/gameover.ogg
|
||||
- /Audio/Effects/Arcade/win.ogg
|
||||
- /Audio/Machines/airlock_deny.ogg
|
||||
- /Audio/Machines/alarm.ogg
|
||||
- /Audio/Machines/beep.ogg
|
||||
- /Audio/Machines/boltsdown.ogg
|
||||
- /Audio/Machines/boltsup.ogg
|
||||
- /Audio/Machines/custom_deny.ogg
|
||||
- /Audio/Machines/high_tech_confirm.ogg
|
||||
- /Audio/Machines/microwave_done_beep.ogg
|
||||
- /Audio/Machines/scan_finish.ogg
|
||||
- /Audio/Machines/vending_jingle.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyRevs
|
||||
files:
|
||||
#- /Audio/Weapons/chainsawwield.ogg
|
||||
- /Audio/Machines/blender.ogg
|
||||
- /Audio/Machines/juicer.ogg
|
||||
- /Audio/Machines/reclaimer_startup.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyClicks
|
||||
files:
|
||||
- /Audio/Items/deconstruct.ogg
|
||||
- /Audio/Items/flashlight_off.ogg
|
||||
- /Audio/Items/flashlight_on.ogg
|
||||
- /Audio/Items/pistol_cock.ogg
|
||||
- /Audio/Items/pistol_magin.ogg
|
||||
- /Audio/Items/pistol_magout.ogg
|
||||
- /Audio/Items/rped.ogg
|
||||
- /Audio/Machines/door_lock_off.ogg
|
||||
- /Audio/Machines/door_lock_on.ogg
|
||||
- /Audio/Machines/id_swipe.ogg
|
||||
- /Audio/Machines/machine_switch.ogg
|
||||
- /Audio/Machines/screwdriveropen.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyChitter
|
||||
files:
|
||||
- /Audio/Machines/circuitprinter.ogg
|
||||
- /Audio/Machines/diagnoser_printing.ogg
|
||||
- /Audio/Machines/uniformprinter.ogg
|
||||
- /Audio/Machines/vaccinator_running.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpySqueak
|
||||
files:
|
||||
#- /Audio/Voice/Moth/moth_squeak.ogg
|
||||
- /Audio/Animals/mouse_squeak.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyCaws
|
||||
files:
|
||||
- /Audio/White/Voice/Harpy/caw1.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: HarpyChirps
|
||||
files:
|
||||
- /Audio/White/Voice/Harpy/chirp1.ogg
|
||||
39
Resources/Prototypes/White/Species/harpy.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
- type: species
|
||||
id: Harpy
|
||||
name: species-name-harpy
|
||||
roundStart: true
|
||||
prototype: MobHarpy
|
||||
markingLimits: MobHarpyMarkingLimits
|
||||
dollPrototype: MobHarpyDummy
|
||||
skinColoration: HumanToned
|
||||
sprites: MobHumanSprites
|
||||
bodyTypes:
|
||||
- HumanNormal
|
||||
|
||||
- type: markingPoints
|
||||
id: MobHarpyMarkingLimits
|
||||
points:
|
||||
Hair:
|
||||
points: 1
|
||||
required: false
|
||||
FacialHair:
|
||||
points: 1
|
||||
required: false
|
||||
Tail:
|
||||
points: 1
|
||||
required: true
|
||||
defaultMarkings: [ HarpyTailPhoenix ]
|
||||
HeadTop:
|
||||
points: 1
|
||||
required: true
|
||||
defaultMarkings: [ HarpyEarsDefault ]
|
||||
Chest:
|
||||
points: 1
|
||||
required: false
|
||||
Legs:
|
||||
points: 2
|
||||
required: false
|
||||
Arms:
|
||||
points: 1
|
||||
required: false
|
||||
defaultMarkings: [ HarpyWingDefault ]
|
||||
@@ -117,3 +117,19 @@
|
||||
buttonText: Облизываться
|
||||
chatMessages: [облизывается]
|
||||
allowMenu: true
|
||||
- type: emote
|
||||
|
||||
id: Sigh
|
||||
category: Vocal
|
||||
chatMessages: [вздыхает]
|
||||
|
||||
- type: emote
|
||||
id: Whistle
|
||||
category: Vocal
|
||||
chatMessages: [свистит]
|
||||
|
||||
- type: emote
|
||||
id: Crying
|
||||
category: Vocal
|
||||
chatMessages: [плачет]
|
||||
|
||||
|
||||
BIN
Resources/Textures/White/Interface/Actions/harpy_sing.png
Normal file
|
After Width: | Height: | Size: 441 B |
|
After Width: | Height: | Size: 786 B |
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "By @leonardo_dabepis",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "harpy_ears_default",
|
||||
"directions": 4
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Phoenix and Rooster by @leonardo_dabepis",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "phoenix_tail",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "rooster_tail",
|
||||
"directions": 4
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 813 B |
|
After Width: | Height: | Size: 1015 B |
|
After Width: | Height: | Size: 820 B |
|
After Width: | Height: | Size: 493 B |
|
After Width: | Height: | Size: 791 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 749 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 356 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 791 B |
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from S.P.L.U.R.T at commit https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13/commit/285f6f86ac41a6246f250993486effeab8581c2c, edited by @raistlin_jag",
|
||||
"states": [
|
||||
{
|
||||
"name": "harpy",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpy2tone1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpy2tone2",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpy3tone1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpy3tone2",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpy3tone3",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpyspeckled1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpyspeckled2",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpyundertone1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpyundertone2",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpywingtip1",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "harpywingtip2",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||