From e338f654d1193d83c5f740b0ed8cd73121381185 Mon Sep 17 00:00:00 2001 From: Dvir <39403717+dvir001@users.noreply.github.com> Date: Sat, 3 Feb 2024 20:13:15 +0200 Subject: [PATCH] Tickets Machine Cleanup (#970) * Cleanup * Rock Friend --- .../Puppet/VentriloquistPuppetSystem.cs | 26 ++- .../Puppet/VentriloquistPuppetComponent.cs | 19 +- .../en-US/_NF/ventriloquist/ventriloquist.ftl | 7 + .../Entities/Objects/Fun/puppet.yml | 14 +- .../Inventories/cuddlycritter.yml | 1 + .../_NF/Entities/Objects/Fun/toys.yml | 212 +++++++++++++----- .../Entities/Structures/Machines/lathe.yml | 14 +- .../_NF/Recipes/Lathes/prizecounter.yml | 102 +-------- .../rock_carrier.rsi/box-inhand-left.png | Bin 0 -> 563 bytes .../rock_carrier.rsi/box-inhand-right.png | Bin 0 -> 632 bytes .../Happyhonk/rock_carrier.rsi/box-open.png | Bin 0 -> 2925 bytes .../Happyhonk/rock_carrier.rsi/box.png | Bin 0 -> 3009 bytes .../Happyhonk/rock_carrier.rsi/meta.json | 25 +++ 13 files changed, 237 insertions(+), 183 deletions(-) create mode 100644 Resources/Locale/en-US/_NF/ventriloquist/ventriloquist.ftl create mode 100644 Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-inhand-left.png create mode 100644 Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-inhand-right.png create mode 100644 Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-open.png create mode 100644 Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box.png create mode 100644 Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/meta.json diff --git a/Content.Server/Puppet/VentriloquistPuppetSystem.cs b/Content.Server/Puppet/VentriloquistPuppetSystem.cs index 68d660fd1ba..ee0ad070333 100644 --- a/Content.Server/Puppet/VentriloquistPuppetSystem.cs +++ b/Content.Server/Puppet/VentriloquistPuppetSystem.cs @@ -5,12 +5,14 @@ using Content.Server.Speech.Muting; using Content.Shared.CombatMode; using Content.Shared.Hands; +using Robust.Shared.Random; namespace Content.Server.Puppet { public sealed class VentriloquistPuppetSystem : SharedVentriloquistPuppetSystem { [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly IRobustRandom _random = default!; public override void Initialize() { @@ -36,22 +38,27 @@ private void OnUseInHand(EntityUid uid, VentriloquistPuppetComponent component, if (!RemComp(uid)) { - _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-remove-hand"), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.RemoveHand)), uid, args.User); // Frontier + //_popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-remove-hand"), uid, args.User); MuteDummy(uid, component); return; } // TODO why does this need a combat component??? EnsureComp(uid); - _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-insert-hand"), uid, args.User); - _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-inserted-hand"), uid, uid); + _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.InsertHand)), uid, args.User); // Frontier + _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.InsertedHand)), uid, uid); // Frontier + // _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-insert-hand"), uid, args.User); + // _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-inserted-hand"), uid, uid); if (!HasComp(uid)) { AddComp(uid); var ghostRole = EnsureComp(uid); - ghostRole.RoleName = Loc.GetString("ventriloquist-puppet-role-name"); - ghostRole.RoleDescription = Loc.GetString("ventriloquist-puppet-role-description"); + ghostRole.RoleName = Loc.GetString(_random.Pick(component.PuppetRoleName)); // Frontier + ghostRole.RoleDescription = Loc.GetString(_random.Pick(component.PuppetRoleDescription)); // Frontier + //ghostRole.RoleName = Loc.GetString("ventriloquist-puppet-role-name"); + //ghostRole.RoleDescription = Loc.GetString("ventriloquist-puppet-role-description"); } args.Handled = true; @@ -65,7 +72,8 @@ private void OnDropped(EntityUid uid, VentriloquistPuppetComponent component, Dr if (HasComp(uid)) return; - _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-remove-hand"), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.RemoveHand)), uid, args.User); // Frontier + //_popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-remove-hand"), uid, args.User); MuteDummy(uid, component); } @@ -77,7 +85,8 @@ private void OnUnequippedHand(EntityUid uid, VentriloquistPuppetComponent compon if (HasComp(uid)) return; - _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-remove-hand"), uid, args.User); + _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.RemoveHand)), uid, args.User); // Frontier + //_popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-remove-hand"), uid, args.User); MuteDummy(uid, component); } @@ -86,7 +95,8 @@ private void OnUnequippedHand(EntityUid uid, VentriloquistPuppetComponent compon /// private void MuteDummy(EntityUid uid, VentriloquistPuppetComponent component) { - _popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-removed-hand"), uid, uid); + _popupSystem.PopupEntity(Loc.GetString(_random.Pick(component.RemovedHand)), uid, uid); // Frontier + //_popupSystem.PopupEntity(Loc.GetString("ventriloquist-puppet-removed-hand"), uid, uid); EnsureComp(uid); RemComp(uid); RemComp(uid); diff --git a/Content.Shared/Puppet/VentriloquistPuppetComponent.cs b/Content.Shared/Puppet/VentriloquistPuppetComponent.cs index 8f9239d50fa..efd2f862969 100644 --- a/Content.Shared/Puppet/VentriloquistPuppetComponent.cs +++ b/Content.Shared/Puppet/VentriloquistPuppetComponent.cs @@ -5,4 +5,21 @@ namespace Content.Shared.Puppet; [RegisterComponent, NetworkedComponent] public sealed partial class VentriloquistPuppetComponent : Component { -} \ No newline at end of file + [DataField, ViewVariables(VVAccess.ReadWrite)] + public List RemoveHand = new (); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public List RemovedHand = new(); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public List InsertHand = new (); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public List InsertedHand = new (); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public List PuppetRoleName = new (); + + [DataField, ViewVariables(VVAccess.ReadWrite)] + public List PuppetRoleDescription = new (); +} diff --git a/Resources/Locale/en-US/_NF/ventriloquist/ventriloquist.ftl b/Resources/Locale/en-US/_NF/ventriloquist/ventriloquist.ftl new file mode 100644 index 00000000000..6830f5a890f --- /dev/null +++ b/Resources/Locale/en-US/_NF/ventriloquist/ventriloquist.ftl @@ -0,0 +1,7 @@ +ventriloquist-rock-grasp-hand = You firmly grasp the pet rock. +ventriloquist-rock-release-hand = You release your grip on the pet rock. + +ventriloquist-rock-grasped-hand = You have been grasped. +ventriloquist-rock-released-hand = You been released. +ventriloquist-rock-role-name = A pet rock +ventriloquist-rock-role-description = You are a pet mineral. diff --git a/Resources/Prototypes/Entities/Objects/Fun/puppet.yml b/Resources/Prototypes/Entities/Objects/Fun/puppet.yml index b38b6dc23d3..fd2e1851d0d 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/puppet.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/puppet.yml @@ -12,7 +12,19 @@ - type: Input context: "human" - type: DoAfter - - type: VentriloquistPuppet + - type: VentriloquistPuppet # Frontier + removeHand: + - ventriloquist-puppet-remove-hand + removedHand: + - ventriloquist-puppet-removed-hand + insertHand: + - ventriloquist-puppet-insert-hand + insertedHand: + - ventriloquist-puppet-inserted-hand + puppetRoleName: + - ventriloquist-puppet-role-name + puppetRoleDescription: + - ventriloquist-puppet-role-description - type: Item size: 30 - type: Muted diff --git a/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/cuddlycritter.yml b/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/cuddlycritter.yml index b4f677b7dc0..9f8ef8fd7a8 100644 --- a/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/cuddlycritter.yml +++ b/Resources/Prototypes/_NF/Catalog/VendingMachines/Inventories/cuddlycritter.yml @@ -30,6 +30,7 @@ WhoopieCushion: 3 MrChips: 1 MrDips: 1 + PetRockCarrier: 1 RevolverCapGun: 2 VehicleUnicycleFolded: 2 ClothingHeadHatMagician: 2 diff --git a/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml index 01d263c6126..bff9eb3ac1d 100644 --- a/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/_NF/Entities/Objects/Fun/toys.yml @@ -21,60 +21,35 @@ - type: MeleeWeapon soundHit: path: /Audio/_NF/Items/Toys/wehhelp.ogg -# - type: MarketPrice # TODO fix price -# price: 1000 # TODO fix price + - type: StinkyTrait - type: entity - parent: BasePlushie - id: PlushieVulp - name: vulpkanin plushie - description: A vulpkanin plushie, at least you can hug this one without the risk to get bitten. + parent: [Soap, BasePlushie] + id: PlushieSlips + name: janitor plushie + description: The silent cleaner, the one that you dont hear say "Weh"! components: - type: Sprite sprite: _NF/Objects/Fun/toys.rsi - state: plushie_vulp + state: plushie_slips - type: EmitSoundOnUse sound: - path: /Audio/_NF/Vulpikanin/bark.ogg + path: /Audio/Weapons/tap.ogg - type: EmitSoundOnLand sound: - path: /Audio/_NF/Vulpikanin/bark.ogg + path: /Audio/Weapons/tap.ogg - type: EmitSoundOnActivate sound: - path: /Audio/_NF/Vulpikanin/bark.ogg + path: /Audio/Weapons/tap.ogg - type: MeleeWeapon soundHit: - path: /Audio/_NF/Vulpikanin/bark.ogg - -- type: entity - parent: BaseItem - id: PlushieSlips - name: janitor plushie - description: The silent cleaner, the one that you dont hear say "Weh"! - components: - - type: Sprite - sprite: _NF/Objects/Fun/toys.rsi - state: plushie_slips - - type: PhysicalComposition - materialComposition: - Cloth: 100 - - type: StaticPrice - price: 5 - -- type: entity - parent: PlushieVulp - id: PlushieTrystan - name: office vulp plushie - description: The ones who yeeps! - components: - - type: Sprite - sprite: _NF/Objects/Fun/toys.rsi - state: plushie_trystan + path: /Audio/Weapons/tap.ogg - type: entity parent: ToySword id: DBToySword name: toy double-esword + noSpawn: true # This is just giving security more items to have to beat you up for. components: - type: Sprite sprite: Objects/Weapons/Melee/e_sword_double.rsi @@ -86,38 +61,109 @@ shader: unshaded map: [ "blade" ] - type: Item - size: 5 sprite: Objects/Weapons/Melee/e_sword_double.rsi - type: entity - parent: BaseItem - id: PetRock + id: PetRockCarrier + parent: HappyHonk + name: pet rock carrier + description: Your new and only best friend home! + components: + - type: Sprite + sprite: _NF/Objects/Storage/Happyhonk/rock_carrier.rsi + state: box + - type: Item + sprite: _NF/Objects/Storage/Happyhonk/rock_carrier.rsi + heldPrefix: box + - type: StorageFill + contents: + - id: PetRock + prob: 0.8 + orGroup: Rock + - id: PetRockFred + prob: 0.1 + orGroup: Rock + - id: PetRockRoxie + prob: 0.1 + orGroup: Rock + +- type: entity + parent: [BaseItem, MrChips] + id: BasePetRock name: pet rock description: Your new and only best friend! + abstract: true components: - - type: Sprite - sprite: _NF/Objects/Fun/petrock.rsi - state: rock - type: StaticPrice price: 5 + - type: VentriloquistPuppet # Frontier + removeHand: + - ventriloquist-rock-release-hand + removedHand: + - ventriloquist-rock-released-hand + insertHand: + - ventriloquist-rock-grasp-hand + insertedHand: + - ventriloquist-rock-grasped-hand + puppetRoleName: + - ventriloquist-rock-role-name + puppetRoleDescription: + - ventriloquist-rock-role-description + - type: DamageOnLand + damage: + types: + Blunt: 1 + - type: DamageOtherOnHit + damage: + types: + Blunt: 1 + - type: Damageable + damageContainer: Inorganic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/break_stone.ogg + - !type:SpawnEntitiesBehavior + spawn: + Ash: + min: 1 + max: 1 + - !type:DoActsBehavior + acts: [ "Destruction" ] + +- type: entity + parent: BasePetRock + id: PetRock + components: + - type: Sprite + sprite: _NF/Objects/Fun/petrock.rsi + layers: + - state: rock - type: entity - parent: BaseItem + parent: BasePetRock id: PetRockFred name: fred components: - type: Sprite sprite: _NF/Objects/Fun/petrock.rsi - state: fred + layers: + - state: fred - type: entity - parent: BaseItem + parent: BasePetRock id: PetRockRoxie name: roxie components: - type: Sprite sprite: _NF/Objects/Fun/petrock.rsi - state: roxie + layers: + - state: roxie - type: entity parent: BasePlushie @@ -280,7 +326,45 @@ state: black - type: entity - parent: PlushieVulp + parent: BasePlushie + id: BasePlushieVulp + name: vulpkanin plushie + description: A vulpkanin plushie, at least you can hug this one without the risk to get bitten. + abstract: true + components: + - type: EmitSoundOnUse + sound: + path: /Audio/_NF/Vulpikanin/bark.ogg + - type: EmitSoundOnLand + sound: + path: /Audio/_NF/Vulpikanin/bark.ogg + - type: EmitSoundOnActivate + sound: + path: /Audio/_NF/Vulpikanin/bark.ogg + - type: MeleeWeapon + soundHit: + path: /Audio/_NF/Vulpikanin/bark.ogg + +- type: entity + parent: BasePlushieVulp + id: PlushieVulp + components: + - type: Sprite + sprite: _NF/Objects/Fun/toys.rsi + state: plushie_vulp + +- type: entity + parent: BasePlushieVulp + id: PlushieTrystan + name: office vulp plushie + description: The ones who yeeps! + components: + - type: Sprite + sprite: _NF/Objects/Fun/toys.rsi + state: plushie_trystan + +- type: entity + parent: BasePlushieVulp id: PlushieCorgi name: corgi plushie description: The ian plushie edition! @@ -290,7 +374,7 @@ state: corgi - type: entity - parent: PlushieVulp + parent: BasePlushieVulp id: PlushieGirlyCorgi name: girly corgi plushie components: @@ -299,7 +383,7 @@ state: girlycorgi - type: entity - parent: PlushieVulp + parent: BasePlushieVulp id: PlushieRobotCorgi name: robot corgi plushie components: @@ -309,13 +393,9 @@ - type: entity parent: BasePlushie - id: PlushieCatBlack - name: black cat plushie - description: A stuffed toy that resembles a cute kitty! + id: BasePlushieCat + abstract: true components: - - type: Sprite - sprite: _NF/Objects/Fun/catplushie.rsi - state: black - type: EmitSoundOnUse sound: path: /Audio/Nyanotrasen/Voice/Felinid/cat_meow1.ogg @@ -330,7 +410,17 @@ path: /Audio/Nyanotrasen/Voice/Felinid/cat_meow1.ogg - type: entity - parent: PlushieCatBlack + parent: BasePlushieCat + id: PlushieCatBlack + name: black cat plushie + description: A stuffed toy that resembles a cute kitty! + components: + - type: Sprite + sprite: _NF/Objects/Fun/catplushie.rsi + state: black + +- type: entity + parent: BasePlushieCat id: PlushieCatGrey name: grey cat plushie components: @@ -339,7 +429,7 @@ state: grey - type: entity - parent: PlushieCatBlack + parent: BasePlushieCat id: PlushieCatOrange name: orange cat plushie components: @@ -348,7 +438,7 @@ state: orange - type: entity - parent: PlushieCatBlack + parent: BasePlushieCat id: PlushieCatSiames name: siames cat plushie components: @@ -357,7 +447,7 @@ state: siames - type: entity - parent: PlushieCatBlack + parent: BasePlushieCat id: PlushieCatTabby name: tabby cat plushie components: @@ -366,7 +456,7 @@ state: tabby - type: entity - parent: PlushieCatBlack + parent: BasePlushieCat id: PlushieCatTuxedo name: tuxedo cat plushie components: @@ -375,7 +465,7 @@ state: tuxedo - type: entity - parent: PlushieCatBlack + parent: BasePlushieCat id: PlushieCatWhite name: white cat plushie components: diff --git a/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml index 8004e93820c..ba28f56566e 100644 --- a/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/_NF/Entities/Structures/Machines/lathe.yml @@ -70,7 +70,6 @@ - CrayonBoxRecipe - CrayonRainbowRecipe - PlushieLampRecipe - - ToySwordRecipe - PlushieAtmosianRecipe - PlushieRounyRecipe - PlushieXenoRecipe @@ -78,18 +77,10 @@ - BoxDonkSoftBoxRecipe - RevolverCapGunRecipe - BoxCartridgeCapRecipe - - HarmonicaInstrumentRecipe - - OcarinaInstrumentRecipe - - RecorderInstrumentRecipe - - GunpetInstrumentRecipe - - BirdToyInstrumentRecipe - ToyAmongPequenoRecipe - FoamCutlassRecipe - - CrazyGlueRecipe - - SingularityToyRecipe - FoamBladeRecipe - ToyRubberDuckRecipe - - PlushieGhostRecipe - ToyMouseRecipe - ToyAiRecipe - ToyGriffinRecipe @@ -107,9 +98,7 @@ - ToyDurandRecipe - ToySkeletonRecipe - FaceHuggerPlushieRecipe - - PetRockRecipe - - PetRockFredRecipe - - PetRockRoxieRecipe + - PetRockCarrierkRecipe - PlushieGnomeRecipe - PlushieLoveableRecipe - PlushieDeerRecipe @@ -141,7 +130,6 @@ - PlushieNukeRecipe - PlushieRGBeeRecipe - BalloonCorgiRecipe - - DBToySwordRecipe - BalloonSynRecipe - ToyNukeRecipe - ToyMaulerRecipe diff --git a/Resources/Prototypes/_NF/Recipes/Lathes/prizecounter.yml b/Resources/Prototypes/_NF/Recipes/Lathes/prizecounter.yml index a7f881bc68d..59619579df5 100644 --- a/Resources/Prototypes/_NF/Recipes/Lathes/prizecounter.yml +++ b/Resources/Prototypes/_NF/Recipes/Lathes/prizecounter.yml @@ -246,14 +246,6 @@ materials: PrizeTicket: 35 -- type: latheRecipe - id: ToySwordRecipe - result: ToySword - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 40 - - type: latheRecipe id: PlushieAtmosianRecipe result: PlushieAtmosian @@ -310,46 +302,6 @@ materials: PrizeTicket: 20 -- type: latheRecipe - id: HarmonicaInstrumentRecipe - result: HarmonicaInstrument - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 20 - -- type: latheRecipe - id: OcarinaInstrumentRecipe - result: OcarinaInstrument - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 20 - -- type: latheRecipe - id: RecorderInstrumentRecipe - result: RecorderInstrument - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 20 - -- type: latheRecipe - id: GunpetInstrumentRecipe - result: GunpetInstrument - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 20 - -- type: latheRecipe - id: BirdToyInstrumentRecipe - result: BirdToyInstrument - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 20 - - type: latheRecipe id: ToyAmongPequenoRecipe result: ToyAmongPequeno @@ -366,22 +318,6 @@ materials: PrizeTicket: 30 -- type: latheRecipe - id: CrazyGlueRecipe - result: CrazyGlue - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 80 - -- type: latheRecipe - id: SingularityToyRecipe - result: SingularityToy - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 100 - - type: latheRecipe id: FoamBladeRecipe result: FoamBlade @@ -398,14 +334,6 @@ materials: PrizeTicket: 10 -- type: latheRecipe - id: PlushieGhostRecipe - result: PlushieGhost - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 50 - - type: latheRecipe id: ToyMouseRecipe result: ToyMouse @@ -543,28 +471,12 @@ PrizeTicket: 50 - type: latheRecipe - id: PetRockRecipe - result: PetRock + id: PetRockCarrierkRecipe + result: PetRockCarrier applyMaterialDiscount: false completetime: 0.1 materials: - PrizeTicket: 5 - -- type: latheRecipe - id: PetRockFredRecipe - result: PetRockFred - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 10 - -- type: latheRecipe - id: PetRockRoxieRecipe - result: PetRockRoxie - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 10 + PrizeTicket: 100 - type: latheRecipe id: PlushieGnomeRecipe @@ -800,14 +712,6 @@ materials: PrizeTicket: 30 -- type: latheRecipe - id: DBToySwordRecipe - result: DBToySword - applyMaterialDiscount: false - completetime: 0.1 - materials: - PrizeTicket: 60 - - type: latheRecipe id: BalloonSynRecipe result: BalloonSyn diff --git a/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-inhand-left.png b/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..dc458a0a3ff911dc3102ee1a0e1655b7e6b19495 GIT binary patch literal 563 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zFMGN;hE&XX zduy+^Q=$mlhv#h!nfiK7krkV)E_Ke>USCnDJ*)lvvd38+aZKy({@J>{-h8*h zEcLTq%thYGVV@>BH!s@R@IkfU{};8YEvr5|t>oO8qaSRPqrLSNgTtoJ91I1Yc4}JT# zX((g7b%Wt8)0T~lw^%chnYVCXIL4MCzF_TB>4c|q7l?c}o$jk!&$a<1`&*nhBaKJ@ zR)ddCj?%?Roi5&Kxs_fKz4LaHx=O32aXsj@Q zwu#yC8}^>+N%zEBUPuPmiv90>ZV?b?FHoYQe~qDc@%yYa+olL+E`IrI?l-S4xvnfA vxOI;Hy}~m}3FS%4fpN{38sVAd>&u`8WOD#92wV!D45B<;{an^LB{Ts5bHwCB literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-inhand-right.png b/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/box-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..49b15d7ac2b2f45646caf8b0b6f594ce448b14f9 GIT binary patch literal 632 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 Dubaq! literal 0 HcmV?d00001 diff --git a/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/meta.json b/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/meta.json new file mode 100644 index 00000000000..0241de806c0 --- /dev/null +++ b/Resources/Textures/_NF/Objects/Storage/Happyhonk/rock_carrier.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by ghostprince", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "box" + }, + { + "name": "box-open" + }, + { + "name": "box-inhand-left", + "directions": 4 + }, + { + "name": "box-inhand-right", + "directions": 4 + } + ] +}