From bc101e1fb5e178d92a847a79f5890276cd3b3d9f Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 5 May 2023 13:21:13 +0000 Subject: [PATCH] H.O.N.K. mech (#14670) Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Mech/Ui/Equipment/MechSoundboardUi.cs | 36 +++++ .../Equipment/MechSoundboardUiFragment.xaml | 13 ++ .../MechSoundboardUiFragment.xaml.cs | 28 ++++ Content.Server/Mech/Systems/MechSystem.cs | 5 +- .../Components/MechSoundboardComponent.cs | 16 +++ .../Equipment/Systems/MechSoundboardSystem.cs | 57 ++++++++ Content.Shared/Mech/MechUI.cs | 24 ++++ Resources/Locale/en-US/mech/soundboard.ftl | 6 + .../catalog/research/technologies.ftl | 3 + .../Locale/en-US/tools/tool-qualities.ftl | 3 + .../Catalog/Research/technologies.yml | 21 +++ .../Entities/Clothing/Masks/masks.yml | 4 + .../Entities/Clothing/Shoes/specific.yml | 4 + .../Objects/Devices/Electronics/mech.yml | 45 +++++- .../Entities/Objects/Fun/bike_horn.yml | 5 + .../Specific/Mech/mech_construction.yml | 129 ++++++++++++++++++ .../Objects/Specific/Mech/mecha_equipment.yml | 25 +++- .../Entities/Objects/Specific/Mech/mechs.yml | 34 +++++ .../Entities/Structures/Machines/lathe.yml | 9 ++ .../Graphs/mechs/honker_construction.yml | 116 ++++++++++++++++ .../Prototypes/Recipes/Lathes/electronics.yml | 27 ++++ .../Prototypes/Recipes/Lathes/mech_parts.yml | 55 ++++++++ .../Prototypes/SoundCollections/troll.yml | 43 ++++++ Resources/Prototypes/tags.yml | 35 ++++- Resources/Prototypes/tool_qualities.yml | 7 + .../Mech/honker_construction.rsi/honker0.png | Bin 0 -> 1278 bytes .../Mech/honker_construction.rsi/honker1.png | Bin 0 -> 1343 bytes .../Mech/honker_construction.rsi/honker10.png | Bin 0 -> 1391 bytes .../Mech/honker_construction.rsi/honker11.png | Bin 0 -> 1459 bytes .../Mech/honker_construction.rsi/honker2.png | Bin 0 -> 1347 bytes .../Mech/honker_construction.rsi/honker3.png | Bin 0 -> 1480 bytes .../Mech/honker_construction.rsi/honker4.png | Bin 0 -> 1463 bytes .../Mech/honker_construction.rsi/honker5.png | Bin 0 -> 1472 bytes .../Mech/honker_construction.rsi/honker6.png | Bin 0 -> 1475 bytes .../Mech/honker_construction.rsi/honker7.png | Bin 0 -> 1473 bytes .../Mech/honker_construction.rsi/honker8.png | Bin 0 -> 1472 bytes .../Mech/honker_construction.rsi/honker9.png | Bin 0 -> 1480 bytes .../honker_chassis.png | Bin 0 -> 1292 bytes .../honker_harness+o.png | Bin 0 -> 719 bytes .../honker_harness.png | Bin 0 -> 718 bytes .../honker_l_arm+o.png | Bin 0 -> 352 bytes .../honker_construction.rsi/honker_l_arm.png | Bin 0 -> 357 bytes .../honker_l_leg+o.png | Bin 0 -> 359 bytes .../honker_construction.rsi/honker_l_leg.png | Bin 0 -> 369 bytes .../honker_r_arm+o.png | Bin 0 -> 367 bytes .../honker_construction.rsi/honker_r_arm.png | Bin 0 -> 380 bytes .../honker_r_leg+o.png | Bin 0 -> 382 bytes .../honker_construction.rsi/honker_r_leg.png | Bin 0 -> 387 bytes .../Mech/honker_construction.rsi/meta.json | 80 +++++++++++ 49 files changed, 822 insertions(+), 8 deletions(-) create mode 100644 Content.Client/Mech/Ui/Equipment/MechSoundboardUi.cs create mode 100644 Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml create mode 100644 Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml.cs create mode 100644 Content.Shared/Mech/Equipment/Components/MechSoundboardComponent.cs create mode 100644 Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs create mode 100644 Resources/Locale/en-US/mech/soundboard.ftl create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml create mode 100644 Resources/Prototypes/SoundCollections/troll.yml create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker0.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker1.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker10.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker11.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker2.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker3.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker4.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker5.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker6.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker7.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker8.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker9.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_chassis.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_harness+o.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_harness.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_l_arm+o.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_l_arm.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_l_leg+o.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_l_leg.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_arm+o.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_arm.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_leg+o.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_leg.png create mode 100644 Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/meta.json diff --git a/Content.Client/Mech/Ui/Equipment/MechSoundboardUi.cs b/Content.Client/Mech/Ui/Equipment/MechSoundboardUi.cs new file mode 100644 index 0000000000..67825318a4 --- /dev/null +++ b/Content.Client/Mech/Ui/Equipment/MechSoundboardUi.cs @@ -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); + } +} diff --git a/Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml b/Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml new file mode 100644 index 0000000000..341eb0ab74 --- /dev/null +++ b/Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml @@ -0,0 +1,13 @@ + + + + + diff --git a/Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml.cs b/Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml.cs new file mode 100644 index 0000000000..ce00e65299 --- /dev/null +++ b/Content.Client/Mech/Ui/Equipment/MechSoundboardUiFragment.xaml.cs @@ -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? 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)); + }; + } + } +} diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index 60eee7f881..9eec5fa34c 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -62,7 +62,8 @@ public sealed class MechSystem : SharedMechSystem SubscribeLocalEvent(OnExpose); #region Equipment UI message relays - SubscribeLocalEvent(RecieveEquipmentUiMesssages); + SubscribeLocalEvent(ReceiveEquipmentUiMesssages); + SubscribeLocalEvent(ReceiveEquipmentUiMesssages); #endregion } @@ -262,7 +263,7 @@ public sealed class MechSystem : SharedMechSystem UpdateUserInterface(uid, component); } - private void RecieveEquipmentUiMesssages(EntityUid uid, MechComponent component, T args) where T : MechEquipmentUiMessage + private void ReceiveEquipmentUiMesssages(EntityUid uid, MechComponent component, T args) where T : MechEquipmentUiMessage { var ev = new MechEquipmentUiMessageRelayEvent(args); var allEquipment = new List(component.EquipmentContainer.ContainedEntities); diff --git a/Content.Shared/Mech/Equipment/Components/MechSoundboardComponent.cs b/Content.Shared/Mech/Equipment/Components/MechSoundboardComponent.cs new file mode 100644 index 0000000000..cce5c99563 --- /dev/null +++ b/Content.Shared/Mech/Equipment/Components/MechSoundboardComponent.cs @@ -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 +{ + /// + /// List of sounds that can be played + /// + [DataField("sounds"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public List Sounds = new(); +} diff --git a/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs b/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs new file mode 100644 index 0000000000..5431c659c3 --- /dev/null +++ b/Content.Shared/Mech/Equipment/Systems/MechSoundboardSystem.cs @@ -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; + +/// +/// Handles everything for mech soundboard. +/// +public sealed class MechSoundboardSystem : EntitySystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly UseDelaySystem _useDelay = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnUiStateReady); + SubscribeLocalEvent(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(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); + } +} diff --git a/Content.Shared/Mech/MechUI.cs b/Content.Shared/Mech/MechUI.cs index 381760166b..f555fe69bd 100644 --- a/Content.Shared/Mech/MechUI.cs +++ b/Content.Shared/Mech/MechUI.cs @@ -67,6 +67,21 @@ public sealed class MechGrabberEjectMessage : MechEquipmentUiMessage } } +/// +/// Event raised for the soundboard equipment to play a sound from its component +/// +[Serializable, NetSerializable] +public sealed class MechSoundboardPlayMessage : MechEquipmentUiMessage +{ + public int Sound; + + public MechSoundboardPlayMessage(EntityUid equipment, int sound) + { + Equipment = equipment; + Sound = sound; + } +} + /// /// BUI state for mechs that also contains all equipment ui states. /// @@ -100,3 +115,12 @@ public sealed class MechGrabberUiState : BoundUserInterfaceState public List Contents = new(); public int MaxContents; } + +/// +/// List of sound collection ids to be localized and displayed. +/// +[Serializable, NetSerializable] +public sealed class MechSoundboardUiState : BoundUserInterfaceState +{ + public List Sounds = new(); +} diff --git a/Resources/Locale/en-US/mech/soundboard.ftl b/Resources/Locale/en-US/mech/soundboard.ftl new file mode 100644 index 0000000000..d9c0dc5b8e --- /dev/null +++ b/Resources/Locale/en-US/mech/soundboard.ftl @@ -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!!!!! diff --git a/Resources/Locale/en-US/prototypes/catalog/research/technologies.ftl b/Resources/Locale/en-US/prototypes/catalog/research/technologies.ftl index f98366b17e..4f1f1af5c6 100644 --- a/Resources/Locale/en-US/prototypes/catalog/research/technologies.ftl +++ b/Resources/Locale/en-US/prototypes/catalog/research/technologies.ftl @@ -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 diff --git a/Resources/Locale/en-US/tools/tool-qualities.ftl b/Resources/Locale/en-US/tools/tool-qualities.ftl index 921b61bc59..3036de0219 100644 --- a/Resources/Locale/en-US/tools/tool-qualities.ftl +++ b/Resources/Locale/en-US/tools/tool-qualities.ftl @@ -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 diff --git a/Resources/Prototypes/Catalog/Research/technologies.yml b/Resources/Prototypes/Catalog/Research/technologies.yml index afd7521fc0..dba06d996f 100644 --- a/Resources/Prototypes/Catalog/Research/technologies.yml +++ b/Resources/Prototypes/Catalog/Research/technologies.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 80d70c95f8..04bc867249 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml index e690d890d6..2129207047 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml @@ -22,6 +22,10 @@ - type: FootstepModifier footstepSoundCollection: collection: FootstepClown + # for H.O.N.K. construction + - type: Tag + tags: + - ClownShoes - type: entity parent: ClothingShoesBaseButcherable diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml index 0ea4629adb..c718093eb5 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/mech.yml @@ -1,3 +1,5 @@ +# Ripley + - type: entity id: RipleyCentralElectronics parent: BaseElectronics @@ -22,4 +24,45 @@ state: id_mod - type: Tag tags: - - RipleyPeripheralsControlModule \ No newline at end of file + - 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 diff --git a/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml b/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml index ae12b37d03..1a95cdd996 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/bike_horn.yml @@ -39,6 +39,11 @@ damage: types: Blunt: 0 + - type: Tool + qualities: + - Honking + useSound: + collection: BikeHorn - type: entity parent: BaseItem diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml index 16f273ff44..aad2c52dce 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mech_construction.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml index fbbc13ddfb..2a24173c3a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mecha_equipment.yml @@ -23,4 +23,27 @@ ui: !type:MechGrabberUi - type: ContainerContainer containers: - item-container: !type:Container \ No newline at end of file + 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!!! diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index d752a28f86..446ad650dc 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index c183b8f28d..8b0ba1ba52 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -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: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml new file mode 100644 index 0000000000..830b6bcb6f --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/mechs/honker_construction.yml @@ -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 diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/electronics.yml index 5cb7cf7c5d..033804b6fa 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/electronics.yml @@ -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 diff --git a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml index f9e47cdcad..c6accfa925 100644 --- a/Resources/Prototypes/Recipes/Lathes/mech_parts.yml +++ b/Resources/Prototypes/Recipes/Lathes/mech_parts.yml @@ -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 diff --git a/Resources/Prototypes/SoundCollections/troll.yml b/Resources/Prototypes/SoundCollections/troll.yml new file mode 100644 index 0000000000..9983f11078 --- /dev/null +++ b/Resources/Prototypes/SoundCollections/troll.yml @@ -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 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 5c2fac4564..9c65f89831 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -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 diff --git a/Resources/Prototypes/tool_qualities.yml b/Resources/Prototypes/tool_qualities.yml index 94fee02462..08e00f17ce 100644 --- a/Resources/Prototypes/tool_qualities.yml +++ b/Resources/Prototypes/tool_qualities.yml @@ -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 } diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker0.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker0.png new file mode 100644 index 0000000000000000000000000000000000000000..01601a288d1d9e4bfb0a8dca60ca22576b097ab8 GIT binary patch literal 1278 zcmVRPnz0@@dBjT>XFMS(zRO-MB0uEeA%iKGk2 zl0dkgZ`irqd(Yj!CQhsn;)fE z|4Ez9DH$7cJs%m9Kxt{I2I{}TN6nAyr~ZLcJR*25P!NNS)klrS^1o@#c6D{tV5pP@y8W;@jKX%VRQ`zHQrfCR$Zh$^Yl)Q#_^?{xNOD2O?R!wLv4`W|&TI zl=R8aQ}lWCGcBK0UX0ETW&#iY$#<)U0bE;nLi9Gkwo%O8wdhB$toY) zaYcI@8g|p{Y=W*_`P*fSWN8V-IAJ6@uVE`L36ajk$B>Rz(^Q^?&%F>$I+}s@bd_JBpE-uoM`f} zgQli_w^smy(!^pho}*XRGNG4hck@2@KK>mw)Za-Xqr=p+?*U$q^`9_x5S#?(bq)M@ zJg(t;Q64Bz{`U5Enw*^Cc}8bz!{aRn)ctTP_g|_Zg5cN($>d-3_iL<0=X~~;m6dIh%A9`?u&!Bsa24mm&r1OEeq^H^&xJdvyu92D-n8$2o}W28 z#G|ZP?epOmL|}Y;+?)dx0WhAtZHSsicbh>apw+%00)vBtwkH(kXU=|W;C&z`;Np*2sJE>9ZP&FT6qu!`5~rHP44yulKQS=zCqn)Qdm z&#U|Xy$o2wd<#bK%o>%Hl+esfl6`@(bLV!-8YkPr^mKxb9(|4Hc%C0S7S(LBy__QW z!Gj_5-SY6^*NZ36(z4&?i2omc^Z^wju(cA-R literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker1.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker1.png new file mode 100644 index 0000000000000000000000000000000000000000..2a7ab1d7622e83eac073c4af16807b8961b561e5 GIT binary patch literal 1343 zcmV-F1;F}=P)t${=X?n*SZB$6&5 zkV3egZ}!gZy}Nh+Oq^tM=AJY2%{MdWoO{aPKba?K{S!!{MM%@6n7EXl&R`nx+{(YSb40SxT{8Sy^#d2teA~ z+j%T6FXyqPrG~Z?=|J-#U={>NB~S(13ZN%yK}#lr43NpGA5P{>0Jf4n z`Y(YcG3mdBfQXbz_5);fb(P00*H_WGpU=>S4I7zgSy?I1&(6kqjL-dT*oY5AvbJkO z3IRLArKLnk0c;moos0C z0)oIIVxxR4#})0Zt=&q~(@{Eq{twOe7$P_fbX`Mckw}CMx81y*f%o~JAh+8^9WTDX z`hnp!Djn>k_Gg}@#ljGs?}Kj!zNXrm8);~Gkm`5r#wH1zCHt= zD}Y76-%o)+fWg|@+Ni6mi}i|$38KxLnE(O;9DzUreHW3rTkCG)X9S1uxQ_4h`6w6+ zDxIjgxtV%;dM>x1y1JT!%h6E5HO!5Sj3n9+iI84??Wrf9=0K$-SMer_^wBs>< z8x%ZJYRtg~zW98De#^G)>KM<`*>e%i{BE#)7nsHAbkf+^ zS>9mL=rmPSl=J*P|KsYue@%bUM2)Xtke0QAf&!YFim@*+Hf`ESY2&0@n4FB#!Gq7S zj`#VYL%|fAbRVY(zIU(B__o}?|M~n0G&SwAIO6%ux89&!1h!_vnS5;tAT#B_B}Epf z07@%6-7a&?DH}~}l6})vE3bb>|A%BGAU%{(uHH-{Hp#wu5s<4C<&!ezOCZ@7n09SQ zAt1pYdH7N8oygsH-IFr`*qVKTg-vKj!nOk9fDI)X01!7@Hd$C$pie&im^UE=Rluec z%w(}807EcUj+TG9>SoLMuNZ>cPfmo{7pKb3{$CCuMQwS4nrQ$4002ovPDHLkV1i}^ BhqeF! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker10.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker10.png new file mode 100644 index 0000000000000000000000000000000000000000..6260449569ce6c417989e32411dc5adf639c64de GIT binary patch literal 1391 zcmV-#1(5oQP)kKtgGaKL(u9m^8&gc$H~F z;`Oc#`}Ew$l(r_WWOB~kXYaLN=bU@TOSgcW+-w8m^wf;!cGlgnYyd(E?0qjxJKqjj zWOgj+sP*N7Q30fA`ORQzYKlfiM$|KG&yNgqBEo5hqXNhP20AJ#DsHO+Jv}{^ z#LpQQp42r>|I;9Tr%$^gFU{aW=O)qpMfFODTK`0DQNc2)prZf>T=#zwUt z00}~{zT|GhcSkzSUt8d3nGcN3x&|m&3%3r}V`%SJQQ`eGI`$jA7I()@gqT3YuL zbYnl9Wn0`Y`suK5Vh#XGdiEHR{mPa1P+ne+5l{TCG8-Qsr;LmYp3lzC((bY>YUwAs ze0ki|Nm{Dl_xp{>$!Us4qg(|!Axl*-a2crzxMg4S?NvJbw3Ie!3E;Wv=jpT0KV=!_ zkY5jAafEYl?0?vLN9a{h0hE-KIL>-g@wmEjFaC0#uj=;Foeg*gB$mY1*Q;~|>`i;xWr{A8dF(=&^K)z)k=N$%zTOEm;= zj(w0w{6SrZ5Ah2tCp(`mUHXf;z$yGV6~fOIFeelY2C22Rl@%Hq8mO(UjpuOw!j=Gi zc__jTK@LX<0(}>VY~2$Z_*ra(KM)8|B(nHiS64@!ot@WPP+D5b&gBhdIyWF28X96E z;F+pt`KH^k{Y`d+?63&|%pt>C)4mT_SAuA7Z)biu7k<;Z;^zQ-J|Eek%fu0onVG5P z(i#L{UxQ6nR+fXy&cAE`C?hhOoLszogcQyzH$KVp6DOmVHR$H$<*63@rvQXd@LI5e zK5A{_@#q6lsvKO+a*?^&EE@n`o6;Wu^Ajh(Gw?m2Zzh?GqessaQ(1A8`hU(=GBO7ep7e@@d8*n{K5UK)h@Or&8JbZySSUmnG6&4n-d|R;5yziTrJ~rd(D;Vcq*3#0_ zXlyLOw%{l#x{p%&NwqLK8mB#b-r+fJ#sdc;4xLnAyl}pCYe3z6yLP>M>jBi%Y_=HU z`IGjK>1F_3J>VPJIs!nCun%B>k|GOK0Hu|k?v^=Zrj8*xc3ZvwHw@tahHC)w5h6X5 zQNIyWL3Hf4ZrQsAp#SYc`J{|OzWt3IwC}?v!`=qiVNC+C+ot;8=(UqzeC6d=`5CG60HM4YQ(k-?Hsk;R002ovPDHLkV1mm>kZJ$` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker11.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker11.png new file mode 100644 index 0000000000000000000000000000000000000000..76f6cfd264f2c188cd7214e5d73959a547118804 GIT binary patch literal 1459 zcmV;k1x)&hP)U=#g3P5ypbePeUloZ;u=}t;b-NMhky}gvTJ)gR|x=f9hl$2;v26XAtWx9U- zPi<;yDol2HdD&tB0II2};Wa%yo!8phS{k3YNV|7CXl7=Hc|M;nVl;_~iApy)IhnJS zm~aO*H8mM@>+0&lGoU{J5bTkGZT1H^@{Q2k+#C%L536VBdc9t%s;W{pLn$l+hyV(b z0)Yi8EiJvJ479Yk48b82&^OHhY9bCaL>&sGv$KgrtrbLG}~>_w0L8gpXI)PB0xh!LrM<1GHb92 z+o25^20%6(6!f6D866eW;%Zh7v4Zq_F$pY_nQ@N-AOk{Ks;jHb0bmSesz7;pdDPa{ zMui1C=*OPZ%v)Nz!Rxu-W+@U$832Z^7+JOjLSXPAN~@WUVP9V#*A9dk26c3FSa9)d ze>|VQX+J@GoNtiL7DII(9OV7}fqy8$Q%^PT?4`xUC8}>YOpxvS=`8Cau(7dUmEF)L zwwgtc)$MlE=FM9uDJeno`hHiDO;1l#OiT>#1AzeT&xxaY57D)2(?Vv+kOjNluFcN+ zX>@diwr;&oO^7}VDg*lHC6#yoO~;F6YL^TEo_qEM`r^yanTI|2s{n#4oWsW9hm3cG zJ_`&0qlYvV7eB?!?(XlIcPML8jmzlR5MR|jXHL_@Il0t7;Gv?OLHYKM6N<{?ybAQS%9f4D$<~7#R&^@XrS?p%=?{i8Q8h{be>J!8!WC z=bNOqd3R#rxhjg7pA^Otrx=&NHcb_nBe z1Q4jZB*`myVh2A<9cka;a8OTA4?pMU=TmEI>uL$Iv$Lt8p+VhH!np?C;NT$7GYBiv z|JIvtvm-=@CIn#*9?lMZ^r1lq4G3EOfc zSsDNU$ur182f6^Tmi=`BAdOF#JR>?fc=^P|#VO}SJD=qJ$y08_8Dx`^l2i%)698%O z%9Y?9{<`xu`lO+e*RSt&Q_;X<%$Gcnlr^(u3IK0A{TmAVlc#>rY`4c4nn~`ZqestV zQBIbdJm=#TPs*TNaxZL!*%v-}tgZS3Nf@E5`|T=?_N;BBX_^9p`4%$d_s>)3&tlNY zt9X!suEk>EJzmeq;K=B(rvE-PeHZA-YPHgZ3nScMUhf~2k&({)J0o@^O9u|r@*Wq+(W9;~nMhx}a9&yIP)=(o@UwQde ze%61O;=2yU3kwTq{K!SqXmAD@$m(^aJv1VG=s|>KKrf7jk`bVhaI>vN3kwUp;{O2} z7=$dKabXv~&}j$*AO(O@C>s9diknT7uUa$mc+T?`EGI&*i>Wfx`4{6PYFK5n0#yJ2 N002ovPDHLkV1iKix#9o- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker2.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea4e806eb505dbc4adf35028db9ba6ca9c24b750 GIT binary patch literal 1347 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 RtEK<|002ovPDHLkV1jSBx-S3# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker5.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker5.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd89c377b1f9de66aa63f1176f7a98ef13819a5 GIT binary patch literal 1472 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker7.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker7.png new file mode 100644 index 0000000000000000000000000000000000000000..ff13a670af2f3d6bc4e1357ae0eba1e1e18e5317 GIT binary patch literal 1473 zcmV;y1wQ(TP)1{0tTWDHXC%2QA{H0axo}~x94{* z=kAO1MccK4k3dCvKr-#O2Dp7*_0T7pF09HC)!|21y8mi0igAOQh|WM@52)u&II z=6q$&Mqgiuj7}glG}I3??4}zj>#^;0y5%y69Gs` zNePe9(a}8S<>fIDWNK=P7As;azLk}gJPr&D@aS+jbXyYvSpX5}s6b-EU39Ly>zW9N zFA@<k;fDRj^DjTA+m`X@9{)qP5g&+T zE!YyvM4)-*AH7t*`!zY~E$LJCopj9kAw@++(zE?Tl)l2o^QC`!=uSzu)2Dn6{kM!#!)=U#?M+G9 zLW6@YDi|K}Coor9Hh`3=?2u`9cee%Sd+WX1=v4J5w5Mq~t@=8g${eG#x9EA=-#$x` zt>si&vXWX#hS&zS-!*+pyFH_pgoFfbY|KqG>}G7l81^NAO9SGOQ3DT#y28%hP&FxS!1L3gCi(oXB| z)U1wFu`2(IFTBKoA|r0$CWJu89M%rL@w)f;T~a>ESMU*B@Ktafp9zG8g^{nwTycoH z?KJfZ@y>^bhwC=(xqAQvjBCC=^WiT@0PN-FX0OQGxb(Gn@MGqiFd3Y&SXL`Q0P$&|(C(M#AE2{0<080DE+C z#cf)$azIIu1uB5jN~Z_P9COM>6B}ROc8iTRdVclu3%CVRh3hGSvJXlCRX|h89?B?J z?|dRQzP{4^iy|O@y-+?W<5CIu`T{f1*7*^T;Cl+5;k^@iNd^GK&9;zCOia*cpMT0t2tgIll!ECi0SUkmOqHYQU#_~@g8nNO!R;p}!sx3o b1N#0CAckEQ+eE&S00000NkvXXu0mjfW%kDh literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker8.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker8.png new file mode 100644 index 0000000000000000000000000000000000000000..3dbd188439fc316732bc534ef4dca3c7c4025587 GIT binary patch literal 1472 zcmV;x1wZDDPSPlV6#CNnZ+ccE*FD>czb^5 za$eu}e(>Qu+ud{C=Q-zhe&;;rdEWP0X%P~6YlMc;{nwb~de#HUyaWUklAZMw)towE zn)8)e8-0B~GCG0K&`>|nuv>1XtS7h9soIk~BKTaOAO;(wj~cbVuTJ>cPEAc&Oave$ zB_%vYM@RFRmzT#tkjcqOTBwMv_*Pa{@;ERsz@x+A&}~fwWC28=qXLNu_tLrUuInNo zzDPtceZ{W=$Q};CKo>*6C+eaV3qPHkGdOHu zE7@cJC9ouhSUaai%mh-cH|fE_Q2GHfJw45%1Yffzh8y-9&%gYfZd<~md+ZP0MtmTW zwO~su6M>fLfAmuM?$^YGx1`V7x6@JQM-&wmNzeCRru1bto-h5=L+{3}Vgh0#K7lYL zmWe>Yq?=Z*T!rk|5M=^W7#H{dY$D_tuK8Qq=^3#kBqV5~qi&)hH)A8lkS_sTLdd?Y?F>&s7b5^5 zW65mn{VZA$)4;mNS3 zbnH>-1Mh7%JUmQmV~8^@b9~_K0j0~D(H6mh@%9EUMp{}LX_`j8y%+tr0Hvv^sbL*^ z1*ZGshxIF0b+@uG5C&#MzsG^5@ zdU^zl$JMKEr`plx19sL_506F@+KBM?YjxpIww z%%!J2#Loy0-<}O#e7oIFPN!4pM7g=SR9#(tZ3~i;k~p}$p;T}Ua~&NWba(0uZMXhT zE$T=WtMb46(kmP&GU7IFLI`xsVQv3gZ+eg4CFP@h1s}l$Uj^6knLt=r82O6K6^E$X zPE)@S?|gW8xNhT~y$3+RxaR9K7yi5iAn#Oox8sGPLbBOxdhpDQhgolEtmjeIjP^H# zKxb#Ct^*VSFrHXfPnqo-^`H{aXulu=b#-<6{y?BNG=8Pwd*GREcKW!=$@8L1p!=KR zDLKBLT7QVp=K|R)EI)h|laIC4xB&Ukwp_y=#;;FMogBpg3Gs=1fe0|px4NFm?H;4L z@6|ykmp%s@_*yI$)*slsMIGZ&I)9;CLv!MK77}^|jKZ%<)j(FOmAbmlbA!2DgA^MZ z&Fj01imANf!0dOSOaBVS`$E=2LPDs&e}H{~u@+Y+k?A!o67;LMug^vM_LZ`Z_xX_{ zPCuJqAEyYuV~1V;w%oI)ELa$S0{pI4$0sLetH}}1hYr6-3lZ2F35&1sJ0K_l?9s(# zcWTMX0VPEir~pbUogOH2%qbg9YAN!k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker9.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker9.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfe4e1fc940a4710503cb2858444c4993c07302 GIT binary patch literal 1480 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 BJ!Jp@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_harness.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_harness.png new file mode 100644 index 0000000000000000000000000000000000000000..de4a5f8a77dc9b5e54baacc1b700732883bbd2fc GIT binary patch literal 718 zcmV;<0x|uGP)PiXTNXHE8kGS|z6%Zv;~p zfI{)ZN053x1hy3KI1t0gt6_wK>n*uj;fIVd$2>-~Mm>nS0365(*e{hzFt@bU){t!H z=QaE*hY(Fypl#cBOiYfOCjV6xSHkSG0xG6*D`VYPz-+avqj;kV*s+FNz!h*M?>~%T z>y|c5O^;(^c#}n#Ap9}L9OkOZHMIrG%H^_br$0|D5jH=YbJUndW(z>q|CaRhsWW)= z_~8;^^~`gia@3fn0a(H>UuO(6$ZYPLHAe{7!iq7r{*Y`R!uCCTF_av@`R)s7Y4PFO z^{cYqm;H@UCV|VnSFo_4Bhi0b=Dr%fZPxgz&BKo2MBr?Fz=)4vFydket56sKFBgV&=Y*b&`{PuUD&orh#RnHs42XnYgw zUPz8^!xP6(A{^cz_n*d9E2B8iK`!?lPoF)pJ*Oi83UYD^5rX@!O!@Zj>u@rqeE^nJ zl;616b4d#EHsm3su}>dkH*ekW_Ise#{C@u;ROS6wSF<^`Yyg2kpei2gJSh9aFVmLT zvH`HP=eo}tclz%_v>4o+Ml8Eq#+1)V`5gn8A=uwF8bLIYM&@JCmAESa1;LLMO)KEV zyNK}2x)OH{pdf^>kIyKI z)Y1?$fIQD95X440fa=G}NlFs{svWCVZy>UtK%1ledLEY62Y@!$^B@L*HQa2rwA<~) z25<%d!Tff+lB5_wSARYqIf?l3xGV8B48xFyVW6ftk(4F?w7;qbhdH~u9Xh!BWlvJ%*7c6N&SZ^oH*%T_iGpaK3Dz%UFxjrD!MQ3e1@l0=-2 zxZ*&0fQmi<<$#j} z&r^welQy0JeSp>3WSdH~9M-z*f7zX0=9_QUYj%#!5s21T0Iuu8uapYFt?zbva6BC#ai=2N@D>1*S1Sf+n#PhF)f!Mr zV-S%_b$}28=ko;$`4ag470P9ueV>?9SUL+~E~El@o)5M?WA`8kV80h%eI`J=-2%&+ zzr@?!Mh*bl8zrM?x325Vfyj3D9Pugsd-O}2EdaK`a{-t zu138n&jC!16OTj3t4A2zgi-)7IZk>s@$sJ!V_d_c0iLuDb>b3o3Z4J}002ovPDHLk FV1oaJj;8Z%TY9iU+zTz9KF7qUbSjKDSd;8nv?>B z5V%~fP{@}c2yRd=o9ui#nZe3k3aKCk;QIkM&YbPTFoeTF?)B0D?RE=nd-37#_FFXo zC~q8$qTHrwG6iDUSvz7YW?qE9HfaESeR7SWNDTm=0Vq9BfieIde9#}VymM>Ro9Yz6 z;8^ikbo})QgOgAR00zfOk1PKD6QYk}ICFqxi+#77%vUT7kcDXg4WI#DWz2qF1e?_8 P00000NkvXXu0mjf+}@I) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_arm+o.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_arm+o.png new file mode 100644 index 0000000000000000000000000000000000000000..0733c1cd5c4e4d9e500194ca43b94d716bf19ca5 GIT binary patch literal 367 zcmV-#0g(QQP)v`zr+9eAMe#R{J8!Dz_KiS*6O-$i2!ta9bC+p z+*eh__b7^*^{)e*PnT8@1Q>?lgRvNZE;5hfm{Sl8E}*1`&XF z<{|((Ze@>wHphHOmNt>+X(6L4J@5D_+;ZKH_+ zQ1nGna8K`o9)rj^K!)q}ij7C3K4e)2Hw{G+AamdMAxRR|19+YXX`1qy2!P`_Y_7MS zGDp(NvXlX^ZTqce07L-tJb(BCQm-@=0k}7QrT@oIsR1wm2EYJ(sw@6Qk!s?&@*n^J N002ovPDHLkV1g*&mz4kj literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_arm.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_arm.png new file mode 100644 index 0000000000000000000000000000000000000000..b3897f098573c59a834ef6230f7dbfd1c6b2bdcf GIT binary patch literal 380 zcmV-?0fYXDP)e*!Cs~~Y zNBswGoq~IyQzaC#wp|@=-hKEW>10ls=w2fA}v01NOx0UXES-&)(Y zlTiSsPmjD=Z*|`^jeaLdLTFtL@cs2OiK2+(IKIgk1~4V&X`1R3MomEGZ;VwET0`d# z0Z5r$4>1M^U?_74z{IW0d9`|_!{LLD$4?&ZH#{#fUo4ga0IvZbM6=n8HkPOBp%iXP z!1sM(X4>!H;Wc0YiN2~T-OIOtjsZFc#BjHJ)5i1pGZjTaop$vYpajG`3`5GYO!Y)T z5Kx}y$Wj=9=Xu)P>{gkxXmwqW1K_%DFUU7KS7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_leg+o.png b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/honker_r_leg+o.png new file mode 100644 index 0000000000000000000000000000000000000000..0c75e70f8336280c9bf91b91129fb461a85035a1 GIT binary patch literal 382 zcmV-^0fGLBP)E4bzjH{f^D*o`3E0VNl@XvxOx9(-h>J7%ltDrpnsMI&;S}h184vZ zpaC?1bbwmj%J%c^`_8Bo0DAFWIrjQ@Kh`P%2*dE#wNe4l{&uTFlWD;D=b0@jvqE|Y zaQShgNrqwY`Sj$B;y9-D+bS!9kOqLSzwbZLv-d=%Y0_pBQO!D}<#J7qb5#1Ck{Q6| z-EN0$+va>Qc&rw{b+5?xgD?4LJX8w+fAjWdSV62G>_7*iC}LYG8^XUzIzW;n9EJZP zRt|vH3kx7@iPAOP2e>%DWZ#8uu5Wn=iy))}q-jd?#f*m#LKiTU0^+-r{0YTIh-b+2 c%d?{T4@|Bg{AU%gZxZ${HYV?{};J h&l)-a2k@r=J^(b`hJRp-b#4Fv002ovPDHLkV1jOtpE&>k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/meta.json b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/meta.json new file mode 100644 index 0000000000..1011b46a07 --- /dev/null +++ b/Resources/Textures/Objects/Specific/Mech/honker_construction.rsi/meta.json @@ -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" + } + ] +}