H.O.N.K. mech (#14670)
Co-authored-by: deltanedas <@deltanedas:kde.org>
36
Content.Client/Mech/Ui/Equipment/MechSoundboardUi.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using Content.Client.UserInterface.Fragments;
|
||||
using Content.Shared.Mech;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Client.UserInterface;
|
||||
|
||||
namespace Content.Client.Mech.Ui.Equipment;
|
||||
|
||||
public sealed class MechSoundboardUi : UIFragment
|
||||
{
|
||||
private MechSoundboardUiFragment? _fragment;
|
||||
|
||||
public override Control GetUIFragmentRoot()
|
||||
{
|
||||
return _fragment!;
|
||||
}
|
||||
|
||||
public override void Setup(BoundUserInterface userInterface, EntityUid? fragmentOwner)
|
||||
{
|
||||
if (fragmentOwner == null)
|
||||
return;
|
||||
|
||||
_fragment = new MechSoundboardUiFragment();
|
||||
_fragment.OnPlayAction += sound =>
|
||||
{
|
||||
userInterface.SendMessage(new MechSoundboardPlayMessage(fragmentOwner.Value, sound));
|
||||
};
|
||||
}
|
||||
|
||||
public override void UpdateState(BoundUserInterfaceState state)
|
||||
{
|
||||
if (state is not MechSoundboardUiState soundboardState)
|
||||
return;
|
||||
|
||||
_fragment?.UpdateContents(soundboardState);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<equipment:MechSoundboardUiFragment
|
||||
xmlns:equipment="clr-namespace:Content.Client.Mech.Ui.Equipment"
|
||||
xmlns="https://spacestation14.io" Margin="1 0 2 0" HorizontalExpand="True" VerticalExpand="True">
|
||||
<BoxContainer Orientation="Vertical"
|
||||
HorizontalExpand="True"
|
||||
VerticalExpand="True">
|
||||
<ItemList Name="Sounds"
|
||||
VerticalExpand="True"
|
||||
MinHeight="160"
|
||||
HorizontalExpand="True"
|
||||
SelectMode="Button"/>
|
||||
</BoxContainer>
|
||||
</equipment:MechSoundboardUiFragment>
|
||||
@@ -0,0 +1,28 @@
|
||||
using Content.Shared.Mech;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.XAML;
|
||||
|
||||
namespace Content.Client.Mech.Ui.Equipment;
|
||||
|
||||
[GenerateTypedNameReferences]
|
||||
public sealed partial class MechSoundboardUiFragment : BoxContainer
|
||||
{
|
||||
public event Action<int>? OnPlayAction;
|
||||
|
||||
public MechSoundboardUiFragment()
|
||||
{
|
||||
RobustXamlLoader.Load(this);
|
||||
IoCManager.InjectDependencies(this);
|
||||
}
|
||||
|
||||
public void UpdateContents(MechSoundboardUiState state)
|
||||
{
|
||||
foreach (var sound in state.Sounds)
|
||||
{
|
||||
Sounds.AddItem(Loc.GetString($"mech-soundboard-{sound}")).OnSelected += item => {
|
||||
OnPlayAction?.Invoke(Sounds.IndexOf(item));
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,7 +62,8 @@ public sealed class MechSystem : SharedMechSystem
|
||||
SubscribeLocalEvent<MechPilotComponent, AtmosExposedGetAirEvent>(OnExpose);
|
||||
|
||||
#region Equipment UI message relays
|
||||
SubscribeLocalEvent<MechComponent, MechGrabberEjectMessage>(RecieveEquipmentUiMesssages);
|
||||
SubscribeLocalEvent<MechComponent, MechGrabberEjectMessage>(ReceiveEquipmentUiMesssages);
|
||||
SubscribeLocalEvent<MechComponent, MechSoundboardPlayMessage>(ReceiveEquipmentUiMesssages);
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -262,7 +263,7 @@ public sealed class MechSystem : SharedMechSystem
|
||||
UpdateUserInterface(uid, component);
|
||||
}
|
||||
|
||||
private void RecieveEquipmentUiMesssages<T>(EntityUid uid, MechComponent component, T args) where T : MechEquipmentUiMessage
|
||||
private void ReceiveEquipmentUiMesssages<T>(EntityUid uid, MechComponent component, T args) where T : MechEquipmentUiMessage
|
||||
{
|
||||
var ev = new MechEquipmentUiMessageRelayEvent(args);
|
||||
var allEquipment = new List<EntityUid>(component.EquipmentContainer.ContainedEntities);
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using Content.Shared.Mech.Equipment.Systems;
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Mech.Equipment.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
[Access(typeof(MechSoundboardSystem))]
|
||||
public sealed partial class MechSoundboardComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// List of sounds that can be played
|
||||
/// </summary>
|
||||
[DataField("sounds"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField]
|
||||
public List<SoundCollectionSpecifier> Sounds = new();
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
using Content.Shared.Mech;
|
||||
using Content.Shared.Mech.Equipment.Components;
|
||||
using Content.Shared.Mech.Equipment.Systems;
|
||||
using Content.Shared.Timing;
|
||||
using Robust.Shared.Audio;
|
||||
using System.Linq;
|
||||
|
||||
namespace Content.Shared.Mech.Equipment.Systems;
|
||||
|
||||
/// <summary>
|
||||
/// Handles everything for mech soundboard.
|
||||
/// </summary>
|
||||
public sealed class MechSoundboardSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly UseDelaySystem _useDelay = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<MechSoundboardComponent, MechEquipmentUiStateReadyEvent>(OnUiStateReady);
|
||||
SubscribeLocalEvent<MechSoundboardComponent, MechEquipmentUiMessageRelayEvent>(OnSoundboardMessage);
|
||||
}
|
||||
|
||||
private void OnUiStateReady(EntityUid uid, MechSoundboardComponent comp, MechEquipmentUiStateReadyEvent args)
|
||||
{
|
||||
// you have to specify a collection so it must exist probably
|
||||
var sounds = comp.Sounds.Select(sound => sound.Collection!);
|
||||
var state = new MechSoundboardUiState
|
||||
{
|
||||
Sounds = sounds.ToList()
|
||||
};
|
||||
args.States.Add(uid, state);
|
||||
}
|
||||
|
||||
private void OnSoundboardMessage(EntityUid uid, MechSoundboardComponent comp, MechEquipmentUiMessageRelayEvent args)
|
||||
{
|
||||
if (args.Message is not MechSoundboardPlayMessage msg)
|
||||
return;
|
||||
|
||||
if (!TryComp<MechEquipmentComponent>(uid, out var equipment) ||
|
||||
equipment.EquipmentOwner == null)
|
||||
return;
|
||||
|
||||
if (msg.Sound >= comp.Sounds.Count)
|
||||
return;
|
||||
|
||||
if (_useDelay.ActiveDelay(uid))
|
||||
return;
|
||||
|
||||
// honk!!!!!
|
||||
var mech = equipment.EquipmentOwner.Value;
|
||||
_useDelay.BeginDelay(uid);
|
||||
_audio.PlayPvs(comp.Sounds[msg.Sound], uid);
|
||||
}
|
||||
}
|
||||
@@ -67,6 +67,21 @@ public sealed class MechGrabberEjectMessage : MechEquipmentUiMessage
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised for the soundboard equipment to play a sound from its component
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class MechSoundboardPlayMessage : MechEquipmentUiMessage
|
||||
{
|
||||
public int Sound;
|
||||
|
||||
public MechSoundboardPlayMessage(EntityUid equipment, int sound)
|
||||
{
|
||||
Equipment = equipment;
|
||||
Sound = sound;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// BUI state for mechs that also contains all equipment ui states.
|
||||
/// </summary>
|
||||
@@ -100,3 +115,12 @@ public sealed class MechGrabberUiState : BoundUserInterfaceState
|
||||
public List<EntityUid> Contents = new();
|
||||
public int MaxContents;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// List of sound collection ids to be localized and displayed.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class MechSoundboardUiState : BoundUserInterfaceState
|
||||
{
|
||||
public List<string> Sounds = new();
|
||||
}
|
||||
|
||||
6
Resources/Locale/en-US/mech/soundboard.ftl
Normal file
@@ -0,0 +1,6 @@
|
||||
mech-soundboard-BikeHorn = Honk!
|
||||
mech-soundboard-CluwneHorn = !knoH
|
||||
mech-soundboard-TrollAnimals = animal noises
|
||||
mech-soundboard-TrollEsword = e-sword
|
||||
mech-soundboard-TrollBeeping = Beep beep beep
|
||||
mech-soundboard-TrollMeeting = red vented!!!!!
|
||||
@@ -88,6 +88,9 @@ technologies-archaeology-description = Advanced equipment for uncovering the sec
|
||||
technologies-ripley-technology = Exosuit: Ripley
|
||||
technologies-ripley-technology-description = The latest and greatest in mechanized cargo construction.
|
||||
|
||||
technologies-clown-technology = Exosuit: H.O.N.K.
|
||||
technologies-clown-technology-description = Honk?!
|
||||
|
||||
technologies-adv-parts-technology-description = Like the previous ones, but better!
|
||||
technologies-adv-parts-technology = Advanced parts technology
|
||||
|
||||
|
||||
@@ -21,3 +21,6 @@ tool-quality-slicing-tool-name = Knife
|
||||
|
||||
tool-quality-sawing-name = Sawing
|
||||
tool-quality-sawing-tool-name = Saw
|
||||
|
||||
tool-quality-honking-name = Honking
|
||||
tool-quality-honking-tool-name = Bike Horn
|
||||
|
||||
@@ -312,6 +312,27 @@
|
||||
- RipleyLLeg
|
||||
- RipleyRLeg
|
||||
|
||||
- type: technology
|
||||
name: technologies-clown-technology
|
||||
id: ClownTechnology
|
||||
description: technologies-clown-technology-description
|
||||
icon:
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
state: honker
|
||||
requiredPoints: 15000
|
||||
requiredTechnologies:
|
||||
- RipleyTechnology
|
||||
unlockedRecipes:
|
||||
- HonkerCentralElectronics
|
||||
- HonkerPeripheralsElectronics
|
||||
- HonkerTargetingElectronics
|
||||
- MechEquipmentHorn
|
||||
- HonkerHarness
|
||||
- HonkerLArm
|
||||
- HonkerRArm
|
||||
- HonkerLLeg
|
||||
- HonkerRLeg
|
||||
|
||||
# Industrial Engineering Technology Tree
|
||||
|
||||
- type: technology
|
||||
|
||||
@@ -172,6 +172,10 @@
|
||||
sprite: Clothing/Mask/clown.rsi
|
||||
- type: BreathMask
|
||||
- type: IdentityBlocker
|
||||
# for H.O.N.K. construction
|
||||
- type: Tag
|
||||
tags:
|
||||
- ClownMask
|
||||
|
||||
- type: entity
|
||||
parent: ClothingMaskBase
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
collection: FootstepClown
|
||||
# for H.O.N.K. construction
|
||||
- type: Tag
|
||||
tags:
|
||||
- ClownShoes
|
||||
|
||||
- type: entity
|
||||
parent: ClothingShoesBaseButcherable
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Ripley
|
||||
|
||||
- type: entity
|
||||
id: RipleyCentralElectronics
|
||||
parent: BaseElectronics
|
||||
@@ -22,4 +24,45 @@
|
||||
state: id_mod
|
||||
- type: Tag
|
||||
tags:
|
||||
- RipleyPeripheralsControlModule
|
||||
- RipleyPeripheralsControlModule
|
||||
|
||||
# H.O.N.K.
|
||||
|
||||
- type: entity
|
||||
id: HonkerCentralElectronics
|
||||
parent: BaseElectronics
|
||||
name: H.O.N.K. central control module
|
||||
description: The electrical control center for the H.O.N.K. mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: mainboard
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerCentralControlModule
|
||||
|
||||
- type: entity
|
||||
id: HonkerPeripheralsElectronics
|
||||
parent: BaseElectronics
|
||||
name: H.O.N.K. peripherals control module
|
||||
description: The electrical peripherals control for the H.O.N.K. mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: id_mod
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerPeripheralsControlModule
|
||||
|
||||
- type: entity
|
||||
id: HonkerTargetingElectronics
|
||||
parent: BaseElectronics
|
||||
name: H.O.N.K. weapon control and targeting module
|
||||
description: The electrical targeting control for the H.O.N.K. mech.
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/module.rsi
|
||||
state: id_mod
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerTargetingControlModule
|
||||
|
||||
@@ -39,6 +39,11 @@
|
||||
damage:
|
||||
types:
|
||||
Blunt: 0
|
||||
- type: Tool
|
||||
qualities:
|
||||
- Honking
|
||||
useSound:
|
||||
collection: BikeHorn
|
||||
|
||||
- type: entity
|
||||
parent: BaseItem
|
||||
|
||||
@@ -150,3 +150,132 @@
|
||||
graph: Ripley
|
||||
node: start
|
||||
defaultTarget: ripley
|
||||
|
||||
# H.O.N.K.
|
||||
|
||||
- type: entity
|
||||
id: BaseHonkerPart
|
||||
parent: BaseMechPart
|
||||
abstract: true
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Items
|
||||
noRot: false
|
||||
netsync: false
|
||||
sprite: Objects/Specific/Mech/honker_construction.rsi
|
||||
|
||||
- type: entity
|
||||
id: BaseHonkerPartItem
|
||||
parent: BaseHonkerPart
|
||||
abstract: true
|
||||
components:
|
||||
- type: Item
|
||||
size: 50
|
||||
|
||||
- type: entity
|
||||
parent: BaseHonkerPart
|
||||
id: HonkerHarness
|
||||
name: H.O.N.K. harness
|
||||
description: The core of the H.O.N.K. mech
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: ItemMapper
|
||||
mapLayers:
|
||||
honker_l_arm+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- HonkerLArm
|
||||
honker_r_arm+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- HonkerRArm
|
||||
honker_l_leg+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- HonkerLLeg
|
||||
honker_r_leg+o:
|
||||
whitelist:
|
||||
tags:
|
||||
- HonkerRLeg
|
||||
sprite: Objects/Specific/Mech/honker_construction.rsi
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
mech-assembly-container: !type:Container
|
||||
- type: MechAssembly
|
||||
finishedPrototype: HonkerChassis
|
||||
requiredParts:
|
||||
HonkerLArm: false
|
||||
HonkerRArm: false
|
||||
HonkerLLeg: false
|
||||
HonkerRLeg: false
|
||||
- type: Sprite
|
||||
state: honker_harness+o
|
||||
noRot: true
|
||||
|
||||
- type: entity
|
||||
parent: BaseHonkerPartItem
|
||||
id: HonkerLArm
|
||||
name: H.O.N.K. left arm
|
||||
description: A H.O.N.K. left arm, with unique sockets that accept odd weaponry designed by clown scientists.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: honker_l_arm
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerLArm
|
||||
|
||||
- type: entity
|
||||
parent: BaseHonkerPartItem
|
||||
id: HonkerLLeg
|
||||
name: H.O.N.K. left leg
|
||||
description: A H.O.N.K. left leg. The foot appears just large enough to fully accommodate a clown shoe.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: honker_l_leg
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerLLeg
|
||||
|
||||
- type: entity
|
||||
parent: BaseHonkerPartItem
|
||||
id: HonkerRLeg
|
||||
name: H.O.N.K. right leg
|
||||
description: A H.O.N.K. right leg. The foot appears just large enough to fully accommodate a clown shoe.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: honker_r_leg
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerRLeg
|
||||
|
||||
- type: entity
|
||||
parent: BaseHonkerPartItem
|
||||
id: HonkerRArm
|
||||
name: H.O.N.K. right arm
|
||||
description: A H.O.N.K. right arm, with unique sockets that accept odd weaponry designed by clown scientists.
|
||||
components:
|
||||
- type: Sprite
|
||||
state: honker_r_arm
|
||||
- type: Tag
|
||||
tags:
|
||||
- HonkerRArm
|
||||
|
||||
- type: entity
|
||||
id: HonkerChassis
|
||||
parent: BaseHonkerPart
|
||||
name: H.O.N.K. chassis
|
||||
description: An in-progress construction of a H.O.N.K. mech. Contains chuckle unit, bananium core and honk support systems.
|
||||
components:
|
||||
- type: Appearance
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
battery-container: !type:Container
|
||||
- type: MechAssemblyVisuals
|
||||
statePrefix: honker
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
state: honker0
|
||||
- type: Construction
|
||||
graph: Honker
|
||||
node: start
|
||||
defaultTarget: honker
|
||||
|
||||
@@ -23,4 +23,27 @@
|
||||
ui: !type:MechGrabberUi
|
||||
- type: ContainerContainer
|
||||
containers:
|
||||
item-container: !type:Container
|
||||
item-container: !type:Container
|
||||
|
||||
- type: entity
|
||||
id: MechEquipmentHorn
|
||||
parent: BaseMechEquipment
|
||||
name: mech horn
|
||||
description: An enhanced bike horn that plays a hilarious array of sounds for the enjoyment of the crew. HONK!
|
||||
components:
|
||||
- type: Sprite
|
||||
# TODO: use own sprite
|
||||
state: mecha_honker
|
||||
- type: MechSoundboard
|
||||
sounds:
|
||||
- collection: BikeHorn
|
||||
- collection: CluwneHorn
|
||||
- collection: TrollAnimals
|
||||
- collection: TrollBeeping
|
||||
- collection: TrollEsword
|
||||
- collection: TrollMeeting
|
||||
- type: UIFragment
|
||||
ui: !type:MechSoundboardUi
|
||||
- type: UseDelay
|
||||
delay: 0.5
|
||||
# TODO: tag as being for H.O.N.K. only!!!
|
||||
|
||||
@@ -103,3 +103,37 @@
|
||||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCellHigh
|
||||
|
||||
# TODO: have a whitelist for honker equipment
|
||||
- type: entity
|
||||
id: MechHonker
|
||||
parent: BaseMech
|
||||
name: H.O.N.K.
|
||||
description: "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!"
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
drawdepth: Mobs
|
||||
noRot: true
|
||||
sprite: Objects/Specific/Mech/mecha.rsi
|
||||
layers:
|
||||
- map: [ "enum.MechVisualLayers.Base" ]
|
||||
state: honker
|
||||
- type: FootstepModifier
|
||||
footstepSoundCollection:
|
||||
collection: FootstepClown
|
||||
- type: Mech
|
||||
baseState: honker
|
||||
openState: honker-open
|
||||
brokenState: honker-broken
|
||||
mechToPilotDamageMultiplier: 0.5
|
||||
|
||||
- type: entity
|
||||
id: MechHonkerBattery
|
||||
parent: MechHonker
|
||||
suffix: Battery
|
||||
components:
|
||||
- type: ContainerFill
|
||||
containers:
|
||||
mech-battery-slot:
|
||||
- PowerCellHigh
|
||||
|
||||
@@ -313,6 +313,9 @@
|
||||
- OreProcessorMachineCircuitboard
|
||||
- RipleyCentralElectronics
|
||||
- RipleyPeripheralsElectronics
|
||||
- HonkerCentralElectronics
|
||||
- HonkerPeripheralsElectronics
|
||||
- HonkerTargetingElectronics
|
||||
- GeneratorPlasmaMachineCircuitboard
|
||||
- GeneratorUraniumMachineCircuitboard
|
||||
- WallmountGeneratorElectronics
|
||||
@@ -373,6 +376,12 @@
|
||||
- RipleyLLeg
|
||||
- RipleyRLeg
|
||||
- MechEquipmentGrabber
|
||||
- HonkerHarness
|
||||
- HonkerLArm
|
||||
- HonkerRArm
|
||||
- HonkerLLeg
|
||||
- HonkerRLeg
|
||||
- MechEquipmentHorn
|
||||
- type: MaterialStorage
|
||||
whitelist:
|
||||
tags:
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
- type: constructionGraph
|
||||
id: Honker
|
||||
start: start
|
||||
graph:
|
||||
- node: start
|
||||
edges:
|
||||
- to: honker
|
||||
steps:
|
||||
- tool: Honking
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 1
|
||||
|
||||
- tag: HonkerCentralControlModule
|
||||
name: H.O.N.K. central control module
|
||||
icon:
|
||||
sprite: "Objects/Misc/module.rsi"
|
||||
state: "mainboard"
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 2
|
||||
|
||||
- tool: Honking
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 3
|
||||
|
||||
- tag: HonkerPeripheralsControlModule
|
||||
name: H.O.N.K. peripherals control module
|
||||
icon:
|
||||
sprite: "Objects/Misc/module.rsi"
|
||||
state: id_mod
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 4
|
||||
|
||||
- tool: Honking
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 5
|
||||
|
||||
- tag: HonkerTargetingControlModule
|
||||
name: H.O.N.K. weapon control and targeting module
|
||||
icon:
|
||||
sprite: "Objects/Misc/module.rsi"
|
||||
state: id_mod
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 6
|
||||
|
||||
- tool: Honking
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 7
|
||||
|
||||
#i omitted the steps involving inserting machine parts because
|
||||
#currently mechs don't support upgrading. add them back in once that's squared away.
|
||||
|
||||
- component: PowerCell
|
||||
name: power cell
|
||||
store: battery-container
|
||||
icon:
|
||||
sprite: Objects/Power/power_cells.rsi
|
||||
state: small
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 8
|
||||
|
||||
- tool: Honking
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 9
|
||||
|
||||
- tag: ClownMask
|
||||
icon:
|
||||
sprite: "Clothing/Mask/clown.rsi"
|
||||
state: "icon"
|
||||
name: "a clown's mask"
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 10
|
||||
|
||||
- tag: ClownShoes
|
||||
icon:
|
||||
sprite: "Clothing/Shoes/Specific/clown.rsi"
|
||||
state: "icon"
|
||||
name: "a clown's shoes"
|
||||
doAfter: 1
|
||||
completed:
|
||||
- !type:VisualizerDataInt
|
||||
key: "enum.MechAssemblyVisuals.State"
|
||||
data: 11
|
||||
|
||||
- tool: Honking
|
||||
doAfter: 1
|
||||
|
||||
- node: honker
|
||||
actions:
|
||||
- !type:BuildMech
|
||||
mechPrototype: MechHonker
|
||||
@@ -327,6 +327,33 @@
|
||||
Glass: 900
|
||||
Gold: 100
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerCentralElectronics
|
||||
result: HonkerCentralElectronics
|
||||
completetime: 4
|
||||
materials:
|
||||
Steel: 100
|
||||
Glass: 900
|
||||
Bananium: 100
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerPeripheralsElectronics
|
||||
result: HonkerPeripheralsElectronics
|
||||
completetime: 4
|
||||
materials:
|
||||
Steel: 100
|
||||
Glass: 900
|
||||
Bananium: 100
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerTargetingElectronics
|
||||
result: HonkerTargetingElectronics
|
||||
completetime: 4
|
||||
materials:
|
||||
Steel: 100
|
||||
Glass: 900
|
||||
Bananium: 100
|
||||
|
||||
# Power
|
||||
- type: latheRecipe
|
||||
id: APCElectronics
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Ripley
|
||||
- type: latheRecipe
|
||||
id: RipleyHarness
|
||||
result: RipleyHarness
|
||||
@@ -45,3 +46,57 @@
|
||||
materials:
|
||||
Steel: 500
|
||||
Plastic: 200
|
||||
|
||||
# H.O.N.K.
|
||||
- type: latheRecipe
|
||||
id: HonkerHarness
|
||||
result: HonkerHarness
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 3000
|
||||
Glass: 1200
|
||||
Bananium: 500
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerLArm
|
||||
result: HonkerLArm
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 3000
|
||||
Glass: 1200
|
||||
Bananium: 500
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerLLeg
|
||||
result: HonkerLLeg
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 3000
|
||||
Glass: 1200
|
||||
Bananium: 500
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerRLeg
|
||||
result: HonkerRLeg
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 3000
|
||||
Glass: 1200
|
||||
Bananium: 500
|
||||
|
||||
- type: latheRecipe
|
||||
id: HonkerRArm
|
||||
result: HonkerRArm
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 3000
|
||||
Glass: 1200
|
||||
Bananium: 500
|
||||
|
||||
- type: latheRecipe
|
||||
id: MechEquipmentHorn
|
||||
result: MechEquipmentHorn
|
||||
completetime: 10
|
||||
materials:
|
||||
Steel: 500
|
||||
Bananium: 200
|
||||
|
||||
43
Resources/Prototypes/SoundCollections/troll.yml
Normal file
@@ -0,0 +1,43 @@
|
||||
# various troll sounds for H.O.N.K.
|
||||
- type: soundCollection
|
||||
id: TrollAnimals
|
||||
files:
|
||||
- /Audio/Animals/bear.ogg
|
||||
- /Audio/Animals/cat_hiss.ogg
|
||||
- /Audio/Animals/cat_meow.ogg
|
||||
- /Audio/Animals/chicken_cluck_happy.ogg
|
||||
- /Audio/Animals/cow_moo.ogg
|
||||
- /Audio/Animals/duck_quack_happy.ogg
|
||||
- /Audio/Animals/ferret_happy.ogg
|
||||
- /Audio/Animals/fox_squeak.ogg
|
||||
- /Audio/Animals/frog_ribbit.ogg
|
||||
- /Audio/Animals/goat_bah.ogg
|
||||
- /Audio/Animals/goose_honk.ogg
|
||||
- /Audio/Animals/lizard_happy.ogg
|
||||
- /Audio/Animals/monkey_scream.ogg
|
||||
- /Audio/Animals/mouse_squeak.ogg
|
||||
- /Audio/Animals/parrot_raught.ogg
|
||||
- /Audio/Animals/penguin_squawk.ogg
|
||||
- /Audio/Animals/pig_oink.ogg
|
||||
- /Audio/Animals/raccoon_chatter.ogg
|
||||
- /Audio/Animals/sloth_squeak.ogg
|
||||
- /Audio/Animals/small_dog_bark_happy.ogg
|
||||
- /Audio/Animals/snake_hiss.ogg
|
||||
- /Audio/Animals/space_dragon_roar.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: TrollBeeping
|
||||
files:
|
||||
- /Audio/Effects/countdown.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: TrollEsword
|
||||
files:
|
||||
- /Audio/Weapons/ebladeoff.ogg
|
||||
- /Audio/Weapons/ebladeon.ogg
|
||||
- /Audio/Weapons/eblade1.ogg
|
||||
|
||||
- type: soundCollection
|
||||
id: TrollMeeting
|
||||
files:
|
||||
- /Audio/Misc/emergency_meeting.ogg
|
||||
@@ -141,10 +141,7 @@
|
||||
id: CigPack
|
||||
|
||||
- type: Tag
|
||||
id: HardsuitEVA
|
||||
|
||||
- type: Tag
|
||||
id: HelmetEVA
|
||||
id: ClownMask
|
||||
|
||||
- type: Tag
|
||||
id: ClownRecorder
|
||||
@@ -152,6 +149,9 @@
|
||||
- type: Tag
|
||||
id: ClownRubberStamp
|
||||
|
||||
- type: Tag
|
||||
id: ClownShoes
|
||||
|
||||
- type: Tag
|
||||
id: CluwneHorn
|
||||
|
||||
@@ -327,9 +327,15 @@
|
||||
- type: Tag
|
||||
id: Hardsuit # Prevent melee injectors that can't penetrate hardsuits from injecting the wearer (nettles)
|
||||
|
||||
- type: Tag
|
||||
id: HardsuitEVA
|
||||
|
||||
- type: Tag
|
||||
id: Head
|
||||
|
||||
- type: Tag
|
||||
id: HelmetEVA
|
||||
|
||||
- type: Tag
|
||||
id: HideContextMenu
|
||||
|
||||
@@ -348,6 +354,27 @@
|
||||
- type: Tag
|
||||
id: HolosignProjector
|
||||
|
||||
- type: Tag
|
||||
id: HonkerCentralControlModule
|
||||
|
||||
- type: Tag
|
||||
id: HonkerPeripheralsControlModule
|
||||
|
||||
- type: Tag
|
||||
id: HonkerTargetingControlModule
|
||||
|
||||
- type: Tag
|
||||
id: HonkerLArm
|
||||
|
||||
- type: Tag
|
||||
id: HonkerLLeg
|
||||
|
||||
- type: Tag
|
||||
id: HonkerRLeg
|
||||
|
||||
- type: Tag
|
||||
id: HonkerRArm
|
||||
|
||||
- type: Tag #Drop this innate tool instead of deleting it.
|
||||
id: InnateDontDelete
|
||||
|
||||
|
||||
@@ -53,3 +53,10 @@
|
||||
toolName: tool-quality-sawing-tool-name
|
||||
spawn: Saw
|
||||
icon: { sprite: Objects/Specific/Medical/Surgery/saw.rsi, state: saw }
|
||||
|
||||
- type: tool
|
||||
id: Honking
|
||||
name: tool-quality-honking-name
|
||||
toolName: tool-quality-honking-tool-name
|
||||
spawn: BikeHorn
|
||||
icon: { sprite: Objects/Fun/bikehorn.rsi, state: icon }
|
||||
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 719 B |
|
After Width: | Height: | Size: 718 B |
|
After Width: | Height: | Size: 352 B |
|
After Width: | Height: | Size: 357 B |
|
After Width: | Height: | Size: 359 B |
|
After Width: | Height: | Size: 369 B |
|
After Width: | Height: | Size: 367 B |
|
After Width: | Height: | Size: 380 B |
|
After Width: | Height: | Size: 382 B |
|
After Width: | Height: | Size: 387 B |
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"copyright" : "Taken from https://github.com/tgstation/tgstation at at https://github.com/tgstation/tgstation/commit/40d89d11ea4a5cb81d61dc1018b46f4e7d32c62a",
|
||||
"license" : "CC-BY-SA-3.0",
|
||||
"version": 1,
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "honker_chassis"
|
||||
},
|
||||
{
|
||||
"name": "honker_harness"
|
||||
},
|
||||
{
|
||||
"name": "honker_harness+o"
|
||||
},
|
||||
{
|
||||
"name": "honker_r_arm"
|
||||
},
|
||||
{
|
||||
"name": "honker_r_arm+o"
|
||||
},
|
||||
{
|
||||
"name": "honker_l_arm"
|
||||
},
|
||||
{
|
||||
"name": "honker_l_arm+o"
|
||||
},
|
||||
{
|
||||
"name": "honker_r_leg"
|
||||
},
|
||||
{
|
||||
"name": "honker_r_leg+o"
|
||||
},
|
||||
{
|
||||
"name": "honker_l_leg"
|
||||
},
|
||||
{
|
||||
"name": "honker_l_leg+o"
|
||||
},
|
||||
{
|
||||
"name": "honker0"
|
||||
},
|
||||
{
|
||||
"name": "honker1"
|
||||
},
|
||||
{
|
||||
"name": "honker2"
|
||||
},
|
||||
{
|
||||
"name": "honker3"
|
||||
},
|
||||
{
|
||||
"name": "honker4"
|
||||
},
|
||||
{
|
||||
"name": "honker5"
|
||||
},
|
||||
{
|
||||
"name": "honker6"
|
||||
},
|
||||
{
|
||||
"name": "honker7"
|
||||
},
|
||||
{
|
||||
"name": "honker8"
|
||||
},
|
||||
{
|
||||
"name": "honker9"
|
||||
},
|
||||
{
|
||||
"name": "honker10"
|
||||
},
|
||||
{
|
||||
"name": "honker11"
|
||||
}
|
||||
]
|
||||
}
|
||||