Merge pull request #6132 from DeltaV-Station/nanite-applicator

Examine Damage on Structure/Machine, Nanite Applicators
This commit is contained in:
Vanessa 2026-07-06 15:08:03 -05:00 committed by GitHub
commit a14f75c281
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
81 changed files with 580 additions and 21 deletions

View File

@ -29,11 +29,22 @@ public sealed class WelderStatusControl : PollingItemStatusControl<WelderStatusC
protected override Data PollData()
{
var (fuel, capacity) = _toolSystem.GetWelderFuelAndCapacity(_parent, _parent.Comp);
return new Data(fuel, capacity, _parent.Comp.Enabled);
return new Data(fuel, capacity, _parent.Comp.Enabled, _parent.Comp.OnlyDisplayFuel); // Monolith - Nanite Applicators
}
protected override void Update(in Data data)
{
// BEGIN Monolith - Nanite applicator
if (data.OnlyDisplayFuel)
{
_label.SetMarkup(Loc.GetString("welder-component-on-examine-less-detailed-message",
("colorName", data.Fuel < data.FuelCapacity / 4f ? "darkorange" : "orange"),
("fuelLeft", data.Fuel),
("fuelCapacity", data.FuelCapacity)));
return;
}
// END Monolith
_label.SetMarkup(Loc.GetString("welder-component-on-examine-detailed-message",
("colorName", data.Fuel < data.FuelCapacity / 4f ? "darkorange" : "orange"),
("fuelLeft", data.Fuel),
@ -41,5 +52,5 @@ public sealed class WelderStatusControl : PollingItemStatusControl<WelderStatusC
("status", Loc.GetString(data.Lit ? "welder-component-on-examine-welder-lit-message" : "welder-component-on-examine-welder-not-lit-message"))));
}
public record struct Data(FixedPoint2 Fuel, FixedPoint2 FuelCapacity, bool Lit);
public record struct Data(FixedPoint2 Fuel, FixedPoint2 FuelCapacity, bool Lit, bool OnlyDisplayFuel = false); // Monolith - Nanite Applicators
}

View File

@ -22,6 +22,7 @@ public abstract partial class InteractionTest
protected const string Wrench = "Wrench";
protected const string Screw = "Screwdriver";
protected const string Weld = "WelderExperimental";
protected const string Applicator = "NaniteApplicatorSyndicate"; // DeltaV
protected const string Pry = "Crowbar";
protected const string Cut = "Wirecutter";

View File

@ -186,7 +186,7 @@ public sealed class VendingInteractionTest : InteractionTest
Assert.That(IsUiOpen(VendingMachineUiKey.Key), Is.False, "Opened BUI of broken vending machine.");
// Repair the vending machine
await InteractUsing(Weld);
await InteractUsing(Applicator); // DeltaV
// Make sure the BUI can open now that the machine has been repaired
await Activate();

View File

@ -42,7 +42,7 @@ public sealed partial class RepairableComponent : Component
/// Tool quality necessary to repair this device.
/// </summary>
[DataField, AutoNetworkedField]
public ProtoId<ToolQualityPrototype> QualityNeeded = "Welding";
public ProtoId<ToolQualityPrototype> QualityNeeded = "Applicating"; // Monolith - Nanite Applicator
/// <summary>
/// The base tool use delay (seconds). This will be modified by the tool's quality

View File

@ -5,6 +5,7 @@ using Content.Shared.Database;
using Content.Shared.DoAfter;
using Content.Shared.Interaction;
using Content.Shared.Popups;
using Content.Shared.Tools.Components; // Monolith - Nanite Applicators
using Content.Shared.Tools.Systems;
using Robust.Shared.Serialization;
@ -115,8 +116,26 @@ public sealed partial class RepairableSystem : EntitySystem
delay *= ent.Comp.SelfRepairPenalty;
}
// BEGIN DeltaV - Scale Repair Time with Damage
// If its a self-repair, ignore it since they've already been penalized.
if (args.User != args.Target && TryComp<DamageableComponent>(args.Target, out var damageComp))
{
// TODO: Scale with the destructible threshold if DestructibleSystem ever gets more prediction added.
// For now, just scale up the delay per 100 damage, or reduce the delay if its less.
var totalDamage = _damageableSystem.GetPositiveDamage((args.Target, damageComp)).GetTotal();
delay *= Math.Clamp((float)totalDamage / 100.0f, 0.5f, 3.0f);
}
// END DeltaV
// BEGIN Monolith - Nanite Applicators
if (!TryComp<ToolComponent>(args.Used, out var tool))
return;
// END Monolith
// Run the repairing doafter
args.Handled = _toolSystem.UseTool(args.Used, args.User, ent.Owner, delay, ent.Comp.QualityNeeded, new RepairDoAfterEvent(), ent.Comp.FuelCost);
}
}

View File

@ -73,4 +73,10 @@ public sealed partial class WelderComponent : Component
/// </summary>
[DataField]
public bool TankSafe;
/// <summary>
/// Monolith - This variable gets rid of the status display.
/// </summary>
[DataField]
public bool OnlyDisplayFuel = false;
}

View File

@ -84,19 +84,33 @@ public abstract partial class SharedToolSystem
{
using (args.PushGroup(nameof(WelderComponent)))
{
if (ItemToggle.IsActivated(entity.Owner))
// BEGIN Monolith - Nanite Applicators
if (!entity.Comp.OnlyDisplayFuel)
{
args.PushMarkup(Loc.GetString("welder-component-on-examine-welder-lit-message"));
}
else
{
args.PushMarkup(Loc.GetString("welder-component-on-examine-welder-not-lit-message"));
var lit = Loc.GetString("welder-component-on-examine-welder-not-lit-message");
if (ItemToggle.IsActivated(entity.Owner))
lit = Loc.GetString("welder-component-on-examine-welder-lit-message");
args.PushMarkup(lit);
}
// END Monolith
if (args.IsInDetailsRange)
{
var (fuel, capacity) = GetWelderFuelAndCapacity(entity.Owner, entity.Comp);
// BEGIN Monolith - Nanite Applicator
if (entity.Comp.OnlyDisplayFuel)
{
args.PushMarkup(Loc.GetString("welder-component-on-examine-less-detailed-message",
("colorName", fuel < capacity / FixedPoint2.New(4f) ? "darkorange" : "orange"),
("fuelLeft", fuel),
("fuelCapacity", capacity)));
return;
}
// END Monolith
args.PushMarkup(Loc.GetString("welder-component-on-examine-detailed-message",
("colorName", fuel < capacity / FixedPoint2.New(4f) ? "darkorange" : "orange"),
("fuelLeft", fuel),
@ -120,6 +134,19 @@ public abstract partial class SharedToolSystem
&& _whitelist.IsWhitelistPass(tank.FuelWhitelist, entity.Owner) //imp
&& SolutionContainerSystem.TryGetSolution(entity.Owner, entity.Comp.FuelSolutionName, out var solutionComp, out var welderSolution))
{
// BEGIN Monolith - Nanite Applicators
foreach (var reagent in targetSolution.Contents)
{
if (reagent.Reagent.Prototype != entity.Comp.FuelReagent.Id)
{
_popup.PopupClient(
Loc.GetString("welder-component-incompatible-fuel", ("owner", args.Target)), entity, args.User);
return;
}
}
// END Monolith
var trans = FixedPoint2.Min(welderSolution.AvailableVolume, targetSolution.Volume);
if (trans > 0)
{

View File

@ -0,0 +1,7 @@
# Base structure damage examine values
comp-structure-damaged-1 = It looks fully intact.
comp-structure-damaged-2 = It has a few scratches.
comp-structure-damaged-3 = It has a few large dents.
comp-structure-damaged-4 = [color=yellow]It has several big cracks running along its surface.[/color]
comp-structure-damaged-5 = [color=orange]It has deep cracks across multiple layers.[/color]
comp-structure-damaged-6 = [color=red]It's extremely damaged and on the verge of falling apart.[/color]

View File

@ -0,0 +1,2 @@
reagent-name-nanite-fuel = Nanites
reagent-desc-nanite-fuel = Nanobots used for repairing.

View File

@ -0,0 +1,4 @@
# MARK: Utility
uplink-syndicate-applicator-name = Advanced Nanite Applicator
uplink-syndicate-applicator-desc = Advanced nanite applicator with a heavily upgraded nanite capacity capable of self-nanite generation.

View File

@ -0,0 +1,2 @@
welder-component-on-examine-less-detailed-message = Fuel: [color={$colorName}]{$fuelLeft}/{$fuelCapacity}[/color]
welder-component-incompatible-fuel = { $owner } contains incorrect or contaminated fuel!

View File

@ -0,0 +1,2 @@
tool-quality-nanite-applicator-name = Nanite Applicator
tool-quality-applicating-name = Nanite Applicating

View File

@ -46,6 +46,7 @@
- id: HolofanProjector
- id: GasAnalyzer
- id: trayScanner
- id: NaniteApplicatorExperimental # DeltaV - Nanite Applicators
- type: entityTable
id: BeltSecurityEntityTable

View File

@ -8,6 +8,9 @@
CrowbarYellow: 8
Multitool: 4
NetworkConfigurator: 5
NaniteApplicator: 4 # Monolith - Nanite Applicator
JerryCanWeldingFuel: 2 # New Frontier - Jerry Cans
JerryCanNaniteFuel: 2 # Monolith - Nanite Applicator
PowerCellMedium: 5
ClothingHandsGlovesColorYellow: 6
MetalFoamGrenade: 3 # DeltaV - added

View File

@ -118,6 +118,7 @@
damageValue: -10 # 10 seconds to repair from crit
doAfterDelay: 1
fuelCost: 0.5
qualityNeeded: Welding # DeltaV - for now
allowSelfRepair: true # DeltaV - was false
- type: BorgChassis
- type: LockingWhitelist

View File

@ -20,6 +20,7 @@
damageValue: -15 # 8 seconds to repair from dead
doAfterDelay: 1
fuelCost: 0.5
qualityNeeded: Welding # DeltaV - for now
- type: Pullable
- type: Tag
tags:

View File

@ -82,6 +82,7 @@
temperature: 373.15
- type: Repairable
doAfterDelay: 30 # you can heal the mothership core, but it takes a while
qualityNeeded: Welding # DeltaV
- type: DamagedSiliconAccent
enableChargeCorruption: false
# TODO: make it explosive again once until issue https://github.com/space-wizards/space-station-14/issues/40606 is fixed

View File

@ -89,7 +89,7 @@
fuelCost: 10 # 1/2 of a Welder for a full repair
doAfterDelay: 5
allowSelfRepair: false
qualityNeeded: Welding # DeltaV
#Security Shields
- type: entity

View File

@ -583,6 +583,7 @@
- item: Screwdriver
- item: Wirecutter
- item: WelderIndustrial
- item: NaniteApplicator # Monolith
- item: Multitool
- type: BorgModuleIcon
icon: { sprite: Interface/Actions/actions_borg.rsi, state: tool-module }
@ -711,6 +712,7 @@
- item: PowerDrill
- item: WelderExperimental
- item: Multitool
- item: NaniteApplicatorExperimental # Monolith
- item: RemoteSignallerAdvanced
- item: NFWeaponHoloflareGun # DeltaV
- type: BorgModuleIcon

View File

@ -162,8 +162,8 @@
Welder:
reagents:
- ReagentId: WeldingFuel
Quantity: 1000
maxVol: 1000
Quantity: 200 # DeltaV - Experimental Welder Nerf
maxVol: 200 # DeltaV - Experimental Welder Nerf
- type: PointLight
enabled: false
radius: 1.5
@ -174,6 +174,7 @@
reagents:
- ReagentId: WeldingFuel
Quantity: 1
duration: 2 # DeltaV - Experimental Welder Nerf - Loses fuel while active
- type: RequiresEyeProtection
statusEffectTime: 5 # less harmful; sunglasses can block it

View File

@ -45,7 +45,7 @@
graph: WeaponTurretSyndicateDisposable
node: disposableTurret
- type: Repairable
qualityNeeded: "Anchoring"
qualityNeeded: Anchoring
doAfterDelay: 3
- type: TriggerOnEmptyGunshot
- type: ExplodeOnTrigger

View File

@ -84,6 +84,7 @@
- type: ExaminableDamage
messages: WindowMessages
- type: Repairable
qualityNeeded: Welding # DeltaV
- type: DamageVisuals
thresholds: [8, 16, 25]
damageDivisor: 3.333
@ -177,6 +178,7 @@
- type: ExaminableDamage
messages: WindowMessages
- type: Repairable
qualityNeeded: Welding # DeltaV
- type: Damageable
damageContainer: StructuralInorganic
- type: DamageVisuals

View File

@ -61,6 +61,7 @@
- type: Repairable
fuelCost: 15
doAfterDelay: 5
qualityNeeded: Welding # DeltaV
- type: Lock
- type: LockVisuals
- type: DamageVisuals

View File

@ -12,6 +12,7 @@
- type: Repairable
fuelCost: 10
doAfterDelay: 2
qualityNeeded: Welding # DeltaV
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass

View File

@ -11,6 +11,7 @@
- type: Repairable
fuelCost: 15
doAfterDelay: 3
qualityNeeded: Welding # DeltaV
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass

View File

@ -120,6 +120,7 @@
- type: Repairable
fuelCost: 15
doAfterDelay: 3
qualityNeeded: Welding
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass
@ -215,6 +216,7 @@
- type: Repairable
fuelCost: 15
doAfterDelay: 3
qualityNeeded: Welding
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass

View File

@ -11,6 +11,7 @@
- type: Repairable
fuelCost: 10
doAfterDelay: 2
qualityNeeded: Welding # DeltaV
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass

View File

@ -11,6 +11,7 @@
- type: Repairable
fuelCost: 15
doAfterDelay: 3
qualityNeeded: Welding # DeltaV
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: RGlass

View File

@ -45,6 +45,8 @@
- type: ExaminableDamage
messages: WindowMessages
- type: Repairable
doAfterDelay: 2 # DeltaV
qualityNeeded: Welding
- type: RCDDeconstructable
cost: 6
delay: 4
@ -171,6 +173,8 @@
layer:
- GlassLayer
- type: Repairable
doAfterDelay: 2 # DeltaV
qualityNeeded: Welding
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Glass

View File

@ -26,6 +26,11 @@
- type: Tag
tags:
- Structure
- type: ExaminableDamage # DeltaV
messages: BaseStructureMessages
- type: Repairable # Monolith - Nanite Applicator
doAfterDelay: 3
qualityNeeded: Applicating
- type: entity
# This means that it's not anchored on spawn.

View File

@ -63,6 +63,7 @@
- WelderExperimental
- JawsOfLife
- TrayGoggles # DeltaV
- ExperimentalNaniteApplicator # Monolith
#- Fulton # DeltaV - moved to MiningDeltaV
#- FultonBeacon # DeltaV - moved to MiningDeltaV

View File

@ -184,6 +184,7 @@
- JawsOfLife
- BorgModuleAdvancedTool
- TrayGoggles # DeltaV
- ExperimentalNaniteApplicator # Monolith
#- Fulton # DeltaV - seperate tech Aerial Extraction
#- FultonBeacon # DeltaV - seperate tech Aerial Extraction

View File

@ -0,0 +1,5 @@
- type: localizedDataset
id: BaseStructureMessages
values:
prefix: comp-structure-damaged-
count: 6

View File

@ -13,6 +13,7 @@
- BorgModulesStatic
- BorgLimbsStatic
- BorgModulesResearched
- RoboticsEmagStatic
- type: Machine
board: SyndieExosuitFabricatorMachineCircuitboard

View File

@ -5,6 +5,7 @@
recipes:
- HolotapeProjector
- SheetPlasteel1Engineering
- NaniteApplicator
## Dynamic

View File

@ -1,10 +1,5 @@
## Static
- type: latheRecipePack
id: RoboticsEmagStatic
recipes:
- IdChipSyndie
- type: latheRecipePack
id: BorgModulesSyndicateStatic
recipes:

View File

@ -0,0 +1,5 @@
- type: latheRecipePack
id: RoboticsEmagStatic
recipes:
- IdChipSyndie
- NaniteApplicatorSyndicate

View File

@ -130,7 +130,6 @@
- CableApcStack
- SheetPlasteel
- SheetSteel
belt:
- RCDRecharging
- type: startingGear
@ -164,7 +163,6 @@
- SheetPlasteel
- SheetSteel
- WeaponAdvancedLaser
belt:
- RCDCombat
# Security

View File

@ -0,0 +1,9 @@
- type: listing
id: UplinkSyndicateApplicator
name: uplink-syndicate-applicator-name
description: uplink-syndicate-applicator-desc
productEntity: NaniteApplicatorSyndicate
cost:
Telecrystal: 2
categories:
- UplinkDisruption

View File

@ -0,0 +1,13 @@
- type: entity
parent: JerryCan
suffix: nanite fuel
id: JerryCanNaniteFuel
components:
- type: Label
currentLabel: reagent-name-nanite-fuel
- type: SolutionContainerManager
solutions:
tank:
reagents:
- ReagentId: NaniteFuel
Quantity: 200

View File

@ -0,0 +1,91 @@
- type: entity
name: nanite applicator
parent: BaseItem
id: NaniteApplicator
description: "Advanced tool that uses nanotechnology to repair structures."
components:
- type: EmitSoundOnLand
sound:
path: /Audio/Items/welder_drop.ogg
- type: Sprite
sprite: _Mono/Objects/Tools/nanite_applicator.rsi
layers:
- state: icon
- type: MeleeWeapon
wideAnimationRotation: 135
attackRate: 1.5
damage:
types:
Blunt: 5
soundHit:
collection: MetalThud
- type: Tool
qualities:
- Applicating
useSound:
collection: Welder
- type: Welder
fuelReagent: NaniteFuel
onlyDisplayFuel: true
- type: RefillableSolution
solution: Welder
- type: SolutionContainerManager
solutions:
Welder:
reagents:
- ReagentId: NaniteFuel
Quantity: 50
maxVol: 50
- type: PhysicalComposition
materialComposition:
Steel: 100
- type: StaticPrice
price: 100
- type: GuideHelp
guides:
- Construction
- type: entity
name: experimental nanite applicator
parent: NaniteApplicator
id: NaniteApplicatorExperimental
description: "An experimental nanite applicator with a heavily upgraded nanite capacity capable of self-nanite generation."
components:
- type: Sprite
sprite: _Mono/Objects/Tools/nanite_applicator_experimental.rsi
layers:
- state: icon
- type: SolutionRegeneration
solution: Welder
generated:
reagents:
- ReagentId: NaniteFuel
Quantity: 1
- type: StaticPrice
price: 200
- type: entity
name: advanced nanite applicator
parent: NaniteApplicatorExperimental
id: NaniteApplicatorSyndicate
description: "Advanced nanite applicator with a heavily upgraded nanite capacity capable of self-nanite generation."
components:
- type: Sprite
sprite: _Mono/Objects/Tools/nanite_applicator_syndicate.rsi
layers:
- state: icon
- type: SolutionContainerManager
solutions:
Welder:
reagents:
- ReagentId: NaniteFuel
Quantity: 200
maxVol: 200
- type: SolutionRegeneration
solution: Welder
generated:
reagents:
- ReagentId: NaniteFuel
Quantity: 3
- type: StaticPrice
price: 400

View File

@ -0,0 +1,23 @@
- type: reagent
id: NaniteFuel
name: reagent-name-nanite-fuel
desc: reagent-desc-nanite-fuel
physicalDesc: reagent-physical-desc-oily
slipData:
requiredSlipSpeed: 3.5
flavor: bitter
flavorMinimum: 0.01
color: "#5775f4"
recognizable: true
boilingPoint: 8000.6
meltingPoint: 659.7
friction: 0.4
metabolisms:
Bloodstream:
effects:
- !type:HealthChange
damage:
types:
Poison: 0.4
Slash: 0.3
Piercing: 0.3

View File

@ -0,0 +1,22 @@
- type: latheRecipe
parent: BaseToolRecipe
id: NaniteApplicator
result: NaniteApplicator
materials:
Steel: 400
- type: latheRecipe
parent: BaseToolRecipe
id: ExperimentalNaniteApplicator
result: NaniteApplicatorExperimental
materials:
Steel: 800
Plasma: 200
- type: latheRecipe
parent: BaseToolRecipe
id: NaniteApplicatorSyndicate
result: NaniteApplicatorSyndicate
materials:
Steel: 800
Plasma: 200

View File

@ -0,0 +1,6 @@
- type: tool
id: Applicating
name: tool-quality-applicating-name
toolName: tool-quality-nanite-applicator-name
spawn: NaniteApplicator
icon: { sprite: _Mono/Objects/Tools/nanite_applicator.rsi, state: icon }

View File

@ -0,0 +1,103 @@
- type: entity
name: jerry can
parent: BaseItem
id: JerryCan
suffix: empty
description: A plastic jerry can with a spill-proof nozzle.
components:
- type: SolutionContainerManager
solutions:
tank:
maxVol: 200
- type: Sprite
sprite: _NF/Objects/Specific/Chemistry/jerrycan.rsi
layers:
- state: jerrycan
- state: jerrycan1
map: [ "enum.SolutionContainerLayers.Fill" ]
visible: false
- type: Item
size: Normal
sprite: _NF/Objects/Specific/Chemistry/jerrycan.rsi
- type: MixableSolution
solution: tank
- type: RefillableSolution
solution: tank
- type: DrainableSolution
solution: tank
- type: ExaminableSolution
solution: tank
- type: DrawableSolution
solution: tank
- type: InjectableSolution
solution: tank
- type: SolutionTransfer
canChangeTransferAmount: true
- type: SolutionItemStatus
solution: tank
- type: ReagentTank
tankType: Fuel
- type: UserInterface
interfaces:
enum.TransferAmountUiKey.Key:
type: TransferAmountBoundUserInterface
- type: Edible
solution: tank
delay: 1.5
destroyOnEmpty: false
forceFeedDelay: 5
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 5
fillBaseName: jerrycan
inHandsMaxFillLevels: 5
inHandsFillBaseName: -fill-
- type: StaticPrice
price: 10
- type: Damageable
damageContainer: Inorganic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 200
behaviors:
- !type:DoActsBehavior
acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
damage: 20
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
params:
volume: -4
- !type:SpillBehavior
solution: tank
- !type:SpawnEntitiesBehavior
spawn:
SheetPlastic1:
min: 0
max: 1
transferForensics: true
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Label
- type: TrashOnSolutionEmpty
solution: tank
- type: entity
parent: JerryCan
suffix: welding fuel
id: JerryCanWeldingFuel
# categories: [ HideSpawnMenu ] # Frontier
components:
- type: Label
currentLabel: reagent-name-welding-fuel
- type: SolutionContainerManager
solutions:
tank:
reagents:
- ReagentId: WeldingFuel
Quantity: 200

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

View File

@ -0,0 +1,33 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "made by avalon2855 on discord. Slight color modification by javadocs(Discord) so it didn't look like the experimental one.",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "icon",
"delays": [
[
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

View File

@ -0,0 +1,33 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "made by avalon2855 on discord",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "icon",
"delays": [
[
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 796 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

View File

@ -0,0 +1,33 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "made by avalon2855 on discord",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "base"
},
{
"name": "icon",
"delays": [
[
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

View File

@ -0,0 +1,77 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Created by HoofedEar, modified by Whatstone (Discord)",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "jerrycan"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-left-fill-1",
"directions": 4
},
{
"name": "inhand-left-fill-2",
"directions": 4
},
{
"name": "inhand-left-fill-3",
"directions": 4
},
{
"name": "inhand-left-fill-4",
"directions": 4
},
{
"name": "inhand-left-fill-5",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "inhand-right-fill-1",
"directions": 4
},
{
"name": "inhand-right-fill-2",
"directions": 4
},
{
"name": "inhand-right-fill-3",
"directions": 4
},
{
"name": "inhand-right-fill-4",
"directions": 4
},
{
"name": "inhand-right-fill-5",
"directions": 4
},
{
"name": "jerrycan1"
},
{
"name": "jerrycan2"
},
{
"name": "jerrycan3"
},
{
"name": "jerrycan4"
},
{
"name": "jerrycan5"
}
]
}