ГАРПИИ (#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:
|
flatReductions:
|
||||||
# can't punch the endoskeleton to death
|
# can't punch the endoskeleton to death
|
||||||
Blunt: 5
|
Blunt: 5
|
||||||
|
|
||||||
|
- type: damageModifierSet
|
||||||
|
id: Harpy
|
||||||
|
coefficients:
|
||||||
|
Blunt: 1.15
|
||||||
|
Slash: 1.15
|
||||||
|
Piercing: 1.15
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
id: TattooHiveChest
|
id: TattooHiveChest
|
||||||
bodyPart: Chest
|
bodyPart: Chest
|
||||||
markingCategory: Chest
|
markingCategory: Chest
|
||||||
speciesRestriction: [Human, Dwarf]
|
speciesRestriction: [Human, Dwarf, Harpy]
|
||||||
coloring:
|
coloring:
|
||||||
default:
|
default:
|
||||||
type:
|
type:
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
id: TattooNightlingChest
|
id: TattooNightlingChest
|
||||||
bodyPart: Chest
|
bodyPart: Chest
|
||||||
markingCategory: Chest
|
markingCategory: Chest
|
||||||
speciesRestriction: [Human, Dwarf]
|
speciesRestriction: [Human, Dwarf, Harpy]
|
||||||
coloring:
|
coloring:
|
||||||
default:
|
default:
|
||||||
type:
|
type:
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
id: TattooSilverburghLeftLeg
|
id: TattooSilverburghLeftLeg
|
||||||
bodyPart: LLeg
|
bodyPart: LLeg
|
||||||
markingCategory: Legs
|
markingCategory: Legs
|
||||||
speciesRestriction: [Human, Dwarf]
|
speciesRestriction: [Human, Dwarf, Harpy ]
|
||||||
coloring:
|
coloring:
|
||||||
default:
|
default:
|
||||||
type:
|
type:
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
id: TattooCampbellLeftArm
|
id: TattooCampbellLeftArm
|
||||||
bodyPart: LArm
|
bodyPart: LArm
|
||||||
markingCategory: Arms
|
markingCategory: Arms
|
||||||
speciesRestriction: [Human, Dwarf]
|
speciesRestriction: [Human, Dwarf, Harpy]
|
||||||
coloring:
|
coloring:
|
||||||
default:
|
default:
|
||||||
type:
|
type:
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
id: TattooEyeRight
|
id: TattooEyeRight
|
||||||
bodyPart: Eyes
|
bodyPart: Eyes
|
||||||
markingCategory: Head
|
markingCategory: Head
|
||||||
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf]
|
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Harpy]
|
||||||
coloring:
|
coloring:
|
||||||
default:
|
default:
|
||||||
type:
|
type:
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
id: TattooEyeLeft
|
id: TattooEyeLeft
|
||||||
bodyPart: Eyes
|
bodyPart: Eyes
|
||||||
markingCategory: Head
|
markingCategory: Head
|
||||||
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf]
|
speciesRestriction: [Human, SlimePerson, Reptilian, Dwarf, Harpy]
|
||||||
coloring:
|
coloring:
|
||||||
default:
|
default:
|
||||||
type:
|
type:
|
||||||
|
|||||||
@@ -125,6 +125,61 @@
|
|||||||
Purr:
|
Purr:
|
||||||
collection: FelinidPurrs
|
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
|
- type: emoteSounds
|
||||||
id: UnisexReptilian
|
id: UnisexReptilian
|
||||||
params:
|
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: Облизываться
|
buttonText: Облизываться
|
||||||
chatMessages: [облизывается]
|
chatMessages: [облизывается]
|
||||||
allowMenu: true
|
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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||