Reagent container visualizer (#3529)

* Started working on beakers

* Working sprite change

* Fixed large beaker

* Add bluepsace beaker

* Add cryostasis beaker

* Removed old rsi

* Fixed dropper

* No dropper problems

* Working on syrigine

* Better syr visualizer

* Add dropper inhand

* Syringe in-hands

* Add base empty bottle for chemistry

* Deleted old fillings

* Simplified beaker in hand

* Moved chemical bottles to seperate .yml

* Fixed chem master

* Serv3 when

* Fixed grammar

* Removed delays

Co-authored-by: Alex Evgrashin <evgrashin.adl@gmail.com>
Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
Alex Evgrashin
2021-03-11 12:24:17 +03:00
committed by GitHub
parent bdb17d17e9
commit 4455bab4c5
75 changed files with 559 additions and 40 deletions

View File

@@ -0,0 +1,53 @@
#nullable enable
using System;
using Content.Shared.GameObjects.Components.Chemistry;
using JetBrains.Annotations;
using Robust.Client.GameObjects;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Client.GameObjects.Components.Chemistry
{
[UsedImplicitly]
public class SolutionContainerVisualizer : AppearanceVisualizer
{
[DataField("maxFillLevels")] private int _maxFillLevels = 0;
[DataField("fillBaseName")] private string? _fillBaseName = null;
[DataField("emptySpriteName")] private string? _emptySpriteName = null;
[DataField("layer")] private SolutionContainerLayers _layer = SolutionContainerLayers.Fill;
[DataField("changeColor")] private bool _changeColor = true;
public override void OnChangeData(AppearanceComponent component)
{
base.OnChangeData(component);
if (_maxFillLevels <= 0 || _fillBaseName == null) return;
if (!component.TryGetData(SolutionContainerVisuals.VisualState,
out SolutionContainerVisualState state)) return;
if (!component.Owner.TryGetComponent(out ISpriteComponent? sprite)) return;
if (!sprite.LayerMapTryGet(_layer, out var fillLayer)) return;
var fillPercent = state.FilledVolumePercent;
var closestFillSprite = (int) Math.Round(fillPercent * _maxFillLevels);
if (closestFillSprite > 0)
{
sprite.LayerSetVisible(fillLayer, true);
var stateName = _fillBaseName + closestFillSprite;
sprite.LayerSetState(fillLayer, stateName);
if (_changeColor)
sprite.LayerSetColor(fillLayer, state.Color);
}
else
{
if (_emptySpriteName == null)
sprite.LayerSetVisible(fillLayer, false);
else
sprite.LayerSetState(fillLayer, _emptySpriteName);
}
}
}
}

View File

@@ -278,7 +278,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
var actualVolume = ReagentUnit.Min(individualVolume, ReagentUnit.New(30)); var actualVolume = ReagentUnit.Min(individualVolume, ReagentUnit.New(30));
for (int i = 0; i < bottleAmount; i++) for (int i = 0; i < bottleAmount; i++)
{ {
var bottle = Owner.EntityManager.SpawnEntity("bottle", Owner.Transform.Coordinates); var bottle = Owner.EntityManager.SpawnEntity("ChemistryEmptyBottle01", Owner.Transform.Coordinates);
var bufferSolution = BufferSolution.SplitSolution(actualVolume); var bufferSolution = BufferSolution.SplitSolution(actualVolume);

View File

@@ -290,6 +290,9 @@ namespace Content.Shared.GameObjects.Components.Chemistry
/// </summary> /// </summary>
public readonly byte FilledVolumeFraction; public readonly byte FilledVolumeFraction;
// do we really need this just to save three bytes?
public float FilledVolumePercent => (float) FilledVolumeFraction / byte.MaxValue;
/// <param name="filledVolumeFraction">The fraction of the container's volume that is filled.</param> /// <param name="filledVolumeFraction">The fraction of the container's volume that is filled.</param>
public SolutionContainerVisualState(Color color, float filledVolumeFraction) public SolutionContainerVisualState(Color color, float filledVolumeFraction)
{ {
@@ -298,6 +301,12 @@ namespace Content.Shared.GameObjects.Components.Chemistry
} }
} }
public enum SolutionContainerLayers : byte
{
Fill,
Base
}
[Serializable, NetSerializable] [Serializable, NetSerializable]
public class SolutionContainerComponentState : ComponentState public class SolutionContainerComponentState : ComponentState
{ {

View File

@@ -54,7 +54,7 @@
id: ChemistryTechnology id: ChemistryTechnology
description: A crash course in chemistry. description: A crash course in chemistry.
icon: icon:
sprite: Objects/Specific/Chemistry/beakers.rsi sprite: Objects/Specific/Chemistry/beaker_large.rsi
state: beakerlarge state: beakerlarge
requiredPoints: 1000 requiredPoints: 1000
requiredTechnologies: requiredTechnologies:

View File

@@ -0,0 +1,93 @@
- type: entity
name: bottle
parent: BaseItem
id: BaseChemistryEmptyBottle
abstract: true
description: A small bottle.
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/bottle.rsi
netsync: false
state: bottle-1
- type: Drink
isOpen: true
- type: SolutionContainer
maxVol: 30
caps: OpenContainer
- type: SolutionTransfer
transferAmount: 5
- type: Item
sprite: Objects/Specific/Chemistry/beaker.rsi
- type: Spillable
- type: entity
name: bottle
parent: BaseChemistryEmptyBottle
id: ChemistryEmptyBottle01
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/bottle.rsi
layers:
- state: bottle-1
- state: bottle-1-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Appearance
visuals:
- type: SolutionContainerVisualizer
maxFillLevels: 6
fillBaseName: bottle-1-
- type: entity
name: bottle
parent: BaseChemistryEmptyBottle
id: ChemistryEmptyBottle02
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/bottle.rsi
layers:
- state: bottle-2
- state: bottle-2-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Appearance
visuals:
- type: SolutionContainerVisualizer
maxFillLevels: 6
fillBaseName: bottle-2-
- type: entity
name: bottle
parent: BaseChemistryEmptyBottle
id: ChemistryEmptyBottle03
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/bottle.rsi
layers:
- state: bottle-3
- state: bottle-3-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Appearance
visuals:
- type: SolutionContainerVisualizer
maxFillLevels: 6
fillBaseName: bottle-3-
- type: entity
name: bottle
parent: BaseChemistryEmptyBottle
id: ChemistryEmptyBottle04
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/bottle.rsi
layers:
- state: bottle-4
- state: bottle-4-1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Appearance
visuals:
- type: SolutionContainerVisualizer
maxFillLevels: 6
fillBaseName: bottle-4-

View File

@@ -1,4 +1,3 @@
# TODO: Add description (1)
- type: entity - type: entity
name: beaker name: beaker
parent: BaseItem parent: BaseItem
@@ -9,11 +8,15 @@
tags: tags:
- GlassBeaker - GlassBeaker
- type: Sprite - type: Sprite
sprite: Objects/Specific/Chemistry/beakers.rsi sprite: Objects/Specific/Chemistry/beaker.rsi
state: beaker netsync: false
layers:
- state: beaker
- state: beaker1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: Item - type: Item
sprite: Objects/Specific/Chemistry/beakers.rsi sprite: Objects/Specific/Chemistry/beaker.rsi
HeldPrefix: beaker
- type: SolutionContainer - type: SolutionContainer
maxVol: 50 maxVol: 50
caps: OpenContainer, FitsInDispenser # can add and remove solutions and fits in the chemmaster. caps: OpenContainer, FitsInDispenser # can add and remove solutions and fits in the chemmaster.
@@ -22,6 +25,11 @@
- type: Spillable - type: Spillable
- type: Drink - type: Drink
isOpen: true isOpen: true
- type: Appearance
visuals:
- type: SolutionContainerVisualizer
maxFillLevels: 6
fillBaseName: beaker
- type: entity - type: entity
name: large beaker name: large beaker
@@ -30,17 +38,46 @@
id: LargeBeaker id: LargeBeaker
components: components:
- type: Sprite - type: Sprite
state: beakerlarge sprite: Objects/Specific/Chemistry/beaker_large.rsi
- type: Item layers:
HeldPrefix: beaker - state: beakerlarge
- state: beakerlarge1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: SolutionContainer - type: SolutionContainer
maxVol: 100 maxVol: 100
caps: OpenContainer, FitsInDispenser - type: Appearance
- type: SolutionTransfer visuals:
transferAmount: 5.0 - type: SolutionContainerVisualizer
- type: Spillable maxFillLevels: 6
- type: Drink fillBaseName: beakerlarge
isOpen: true
- type: entity
name: cryostasis beaker
parent: Beaker
description: Used to contain chemicals or solutions without reactions.
id: CryostasisBeaker
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/beaker_cryostasis.rsi
layers:
- state: beakernoreact
- type: SolutionContainer
maxVol: 60
canReact: false
- type: entity
name: bluespace beaker
parent: Beaker
description: Powered by experimental bluespace technology.
id: BluespaceBeaker
components:
- type: Sprite
sprite: Objects/Specific/Chemistry/beaker_bluespace.rsi
layers:
- state: beakerbluespace
- type: SolutionContainer
maxVol: 300
- type: entity - type: entity
name: dropper name: dropper
@@ -50,12 +87,25 @@
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Specific/Chemistry/dropper.rsi sprite: Objects/Specific/Chemistry/dropper.rsi
state: dropper netsync: false
layers:
- state: dropper
- state: dropper1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- type: SolutionContainer - type: SolutionContainer
caps: OpenContainer
maxVol: 5 maxVol: 5
- type: SolutionTransfer - type: SolutionTransfer
transferAmount: 5.0 transferAmount: 5.0
- type: Spillable - type: Spillable
- type: Item
sprite: Objects/Specific/Chemistry/dropper.rsi
- type: Appearance
visuals:
- type: SolutionContainerVisualizer
maxFillLevels: 1
fillBaseName: dropper
- type: entity - type: entity
name: syringe name: syringe
@@ -65,27 +115,33 @@
components: components:
- type: Sprite - type: Sprite
sprite: Objects/Specific/Chemistry/syringe.rsi sprite: Objects/Specific/Chemistry/syringe.rsi
state: 0 netsync: false
layers:
- state: syringe1
map: ["enum.SolutionContainerLayers.Fill"]
visible: false
- state: syringe_base0
map: ["enum.SolutionContainerLayers.Base"]
- type: SolutionContainer - type: SolutionContainer
maxVol: 15 maxVol: 15
- type: Injector - type: Injector
injectOnly: false injectOnly: false
- type: Spillable - type: Spillable
- type: Item
- type: entity sprite: Objects/Specific/Chemistry/syringe.rsi
name: bottle - type: Appearance
parent: BaseItem visuals:
id: bottle # this visualizer used for reagent inside
components: - type: SolutionContainerVisualizer
- type: Sprite maxFillLevels: 4
sprite: Objects/Specific/Chemistry/bottle.rsi fillBaseName: syringe
state: bottle # this one for syrigine itself (plunger)
- type: Drink - type: SolutionContainerVisualizer
- type: SolutionContainer maxFillLevels: 4
maxVol: 30 fillBaseName: syringe_base
- type: SolutionTransfer emptySpriteName: syringe_base0
transferAmount: 5 layer: Base
- type: Spillable changeColor: false
- type: entity - type: entity
name: pill name: pill

View File

@@ -1,6 +1,8 @@
- type: latheRecipe - type: latheRecipe
id: Beaker id: Beaker
icon: Objects/Specific/Chemistry/beakers.rsi icon:
sprite: Objects/Specific/Chemistry/beaker.rsi
state: beaker
result: Beaker result: Beaker
completetime: 500 completetime: 500
materials: materials:
@@ -8,7 +10,9 @@
- type: latheRecipe - type: latheRecipe
id: LargeBeaker id: LargeBeaker
icon: Objects/Specific/Chemistry/beakers.rsi icon:
sprite: Objects/Specific/Chemistry/beaker_large.rsi
state: beakerlarge
result: LargeBeaker result: LargeBeaker
completetime: 500 completetime: 500
materials: materials:

View File

@@ -0,0 +1,43 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi",
"states": [
{
"name": "beaker"
},
{
"name": "lid_beaker"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
},
{
"name": "beaker1"
},
{
"name": "beaker2"
},
{
"name": "beaker3"
},
{
"name": "beaker4"
},
{
"name": "beaker5"
},
{
"name": "beaker6"
}
]
}

View File

@@ -0,0 +1,20 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi",
"states": [
{
"name": "beakerbluespace",
"delays": [
[
0.1,
0.1
]
]
}
]
}

View File

@@ -0,0 +1,39 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi",
"states": [
{
"name": "beakernoreact",
"delays": [
[
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05,
0.05
]
]
},
{
"name": "lid_beakernoreact"
}
]
}

View File

@@ -0,0 +1,35 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi",
"states": [
{
"name": "beakerlarge"
},
{
"name": "lid_beakerlarge"
},
{
"name": "beakerlarge1"
},
{
"name": "beakerlarge2"
},
{
"name": "beakerlarge3"
},
{
"name": "beakerlarge4"
},
{
"name": "beakerlarge5"
},
{
"name": "beakerlarge6"
}
]
}

View File

@@ -1 +0,0 @@
{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi","states":[{"name":"beaker","directions":1,"delays":[[1]]},{"name":"beakerbluespace","directions":1,"delays":[[0.1,0.1]]},{"name":"beakerlarge","directions":1,"delays":[[1]]},{"name":"beakernoreact","directions":1,"delays":[[0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05]]},{"name":"lid_beaker","directions":1,"delays":[[1]]},{"name":"lid_beakerlarge","directions":1,"delays":[[1]]},{"name":"lid_beakernoreact","directions":1,"delays":[[1]]}]}

View File

@@ -1 +1 @@
{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi","states":[{"name":"bottle","directions":1,"delays":[[1]]},{"name":"bottle-1","directions":1,"delays":[[1]]},{"name":"bottle-2","directions":1,"delays":[[1]]},{"name":"bottle-3","directions":1,"delays":[[1]]},{"name":"bottle-4","directions":1,"delays":[[1]]},{"name":"bottle1","directions":1,"delays":[[1]]},{"name":"bottle10","directions":1,"delays":[[1]]},{"name":"bottle11","directions":1,"delays":[[1]]},{"name":"bottle12","directions":1,"delays":[[1]]},{"name":"bottle13","directions":1,"delays":[[1]]},{"name":"bottle14","directions":1,"delays":[[1]]},{"name":"bottle15","directions":1,"delays":[[1]]},{"name":"bottle16","directions":1,"delays":[[1]]},{"name":"bottle17","directions":1,"delays":[[1]]},{"name":"bottle18","directions":1,"delays":[[1]]},{"name":"bottle19","directions":1,"delays":[[1]]},{"name":"bottle2","directions":1,"delays":[[1]]},{"name":"bottle20","directions":1,"delays":[[1]]},{"name":"bottle3","directions":1,"delays":[[1]]},{"name":"bottle4","directions":1,"delays":[[1]]},{"name":"bottle5","directions":1,"delays":[[1]]},{"name":"bottle6","directions":1,"delays":[[1]]},{"name":"bottle7","directions":1,"delays":[[1]]},{"name":"bottle8","directions":1,"delays":[[1]]},{"name":"bottle9","directions":1,"delays":[[1]]},{"name":"lid_bottle","directions":1,"delays":[[1]]}]} {"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi","states":[{"name":"bottle","directions":1,"delays":[[1]]},{"name":"bottle-1","directions":1,"delays":[[1]]},{"name":"bottle-2","directions":1,"delays":[[1]]},{"name":"bottle-3","directions":1,"delays":[[1]]},{"name":"bottle-4","directions":1,"delays":[[1]]},{"name":"bottle1","directions":1,"delays":[[1]]},{"name":"bottle10","directions":1,"delays":[[1]]},{"name":"bottle11","directions":1,"delays":[[1]]},{"name":"bottle12","directions":1,"delays":[[1]]},{"name":"bottle13","directions":1,"delays":[[1]]},{"name":"bottle14","directions":1,"delays":[[1]]},{"name":"bottle15","directions":1,"delays":[[1]]},{"name":"bottle16","directions":1,"delays":[[1]]},{"name":"bottle17","directions":1,"delays":[[1]]},{"name":"bottle18","directions":1,"delays":[[1]]},{"name":"bottle19","directions":1,"delays":[[1]]},{"name":"bottle2","directions":1,"delays":[[1]]},{"name":"bottle20","directions":1,"delays":[[1]]},{"name":"bottle3","directions":1,"delays":[[1]]},{"name":"bottle4","directions":1,"delays":[[1]]},{"name":"bottle5","directions":1,"delays":[[1]]},{"name":"bottle6","directions":1,"delays":[[1]]},{"name":"bottle7","directions":1,"delays":[[1]]},{"name":"bottle8","directions":1,"delays":[[1]]},{"name":"bottle9","directions":1,"delays":[[1]]},{"name":"lid_bottle","directions":1,"delays":[[1]]}, {"name": "bottle-1-1", "delays": [[1.0]]}, {"name": "bottle-1-2", "delays": [[1.0]]}, {"name": "bottle-1-3", "delays": [[1.0]]}, {"name": "bottle-1-4", "delays": [[1.0]]}, {"name": "bottle-1-5", "delays": [[1.0]]}, {"name": "bottle-1-6", "delays": [[1.0]]}, {"name": "bottle-2-1", "delays": [[1.0]]}, {"name": "bottle-2-2", "delays": [[1.0]]}, {"name": "bottle-2-3", "delays": [[1.0]]}, {"name": "bottle-2-4", "delays": [[1.0]]}, {"name": "bottle-2-5", "delays": [[1.0]]}, {"name": "bottle-2-6", "delays": [[1.0]]}, {"name": "bottle-3-1", "delays": [[1.0]]}, {"name": "bottle-3-2", "delays": [[1.0]]}, {"name": "bottle-3-3", "delays": [[1.0]]}, {"name": "bottle-3-4", "delays": [[1.0]]}, {"name": "bottle-3-5", "delays": [[1.0]]}, {"name": "bottle-3-6", "delays": [[1.0]]}, {"name": "bottle-4-1", "delays": [[1.0]]}, {"name": "bottle-4-2", "delays": [[1.0]]}, {"name": "bottle-4-3", "delays": [[1.0]]}, {"name": "bottle-4-4", "delays": [[1.0]]}, {"name": "bottle-4-5", "delays": [[1.0]]}, {"name": "bottle-4-6", "delays": [[1.0]]}]}

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

View File

@@ -1 +1,25 @@
{"version":1,"size":{"x":32,"y":32},"license":"CC-BY-SA-3.0","copyright":"Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi","states":[{"name":"dropper","directions":1,"delays":[[1]]}]} {
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi",
"states": [
{
"name": "dropper"
},
{
"name": "dropper1"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

View File

@@ -1 +1,94 @@
{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "backpack1", "delays": [[1.0]]}, {"name": "backpack2", "delays": [[1.0]]}, {"name": "backpackmob1", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "backpackmob2", "directions": 4, "delays": [[1.0], [1.0], [1.0], [1.0]]}, {"name": "beaker1", "delays": [[1.0]]}, {"name": "beaker2", "delays": [[1.0]]}, {"name": "beaker3", "delays": [[1.0]]}, {"name": "beaker4", "delays": [[1.0]]}, {"name": "beaker5", "delays": [[1.0]]}, {"name": "beaker6", "delays": [[1.0]]}, {"name": "beakerlarge1", "delays": [[1.0]]}, {"name": "beakerlarge2", "delays": [[1.0]]}, {"name": "beakerlarge3", "delays": [[1.0]]}, {"name": "beakerlarge4", "delays": [[1.0]]}, {"name": "beakerlarge5", "delays": [[1.0]]}, {"name": "beakerlarge6", "delays": [[1.0]]}, {"name": "bottle-1-1", "delays": [[1.0]]}, {"name": "bottle-1-2", "delays": [[1.0]]}, {"name": "bottle-1-3", "delays": [[1.0]]}, {"name": "bottle-1-4", "delays": [[1.0]]}, {"name": "bottle-1-5", "delays": [[1.0]]}, {"name": "bottle-1-6", "delays": [[1.0]]}, {"name": "bottle-2-1", "delays": [[1.0]]}, {"name": "bottle-2-2", "delays": [[1.0]]}, {"name": "bottle-2-3", "delays": [[1.0]]}, {"name": "bottle-2-4", "delays": [[1.0]]}, {"name": "bottle-2-5", "delays": [[1.0]]}, {"name": "bottle-2-6", "delays": [[1.0]]}, {"name": "bottle-3-1", "delays": [[1.0]]}, {"name": "bottle-3-2", "delays": [[1.0]]}, {"name": "bottle-3-3", "delays": [[1.0]]}, {"name": "bottle-3-4", "delays": [[1.0]]}, {"name": "bottle-3-5", "delays": [[1.0]]}, {"name": "bottle-3-6", "delays": [[1.0]]}, {"name": "bottle-4-1", "delays": [[1.0]]}, {"name": "bottle-4-2", "delays": [[1.0]]}, {"name": "bottle-4-3", "delays": [[1.0]]}, {"name": "bottle-4-4", "delays": [[1.0]]}, {"name": "bottle-4-5", "delays": [[1.0]]}, {"name": "bottle-4-6", "delays": [[1.0]]}, {"name": "dropper1", "delays": [[1.0]]}, {"name": "glass1", "delays": [[1.0]]}, {"name": "glass2", "delays": [[1.0]]}, {"name": "glass3", "delays": [[1.0]]}, {"name": "glass4", "delays": [[1.0]]}, {"name": "glass5", "delays": [[1.0]]}, {"name": "glass6", "delays": [[1.0]]}, {"name": "largebottle1", "delays": [[1.0]]}, {"name": "largebottle2", "delays": [[1.0]]}, {"name": "largebottle3", "delays": [[1.0]]}, {"name": "largebottle4", "delays": [[1.0]]}, {"name": "largebottle5", "delays": [[1.0]]}, {"name": "largebottle6", "delays": [[1.0]]}, {"name": "smallbottle1", "delays": [[1.0]]}, {"name": "smallbottle2", "delays": [[1.0]]}, {"name": "smallbottle3", "delays": [[1.0]]}, {"name": "smallbottle4", "delays": [[1.0]]}, {"name": "smallbottle5", "delays": [[1.0]]}, {"name": "smallbottle6", "delays": [[1.0]]}, {"name": "syringe1", "delays": [[1.0]]}, {"name": "syringe2", "delays": [[1.0]]}, {"name": "syringe3", "delays": [[1.0]]}, {"name": "syringe4", "delays": [[1.0]]}, {"name": "vial1", "delays": [[1.0]]}, {"name": "vial2", "delays": [[1.0]]}, {"name": "vial3", "delays": [[1.0]]}, {"name": "vial4", "delays": [[1.0]]}, {"name": "vial5", "delays": [[1.0]]}, {"name": "vial6", "delays": [[1.0]]}]} {
"version": 1,
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "backpack1"
},
{
"name": "backpack2"
},
{
"name": "backpackmob1"
},
{
"name": "backpackmob2",
"directions": 4
},
{
"name": "glass1"
},
{
"name": "glass2"
},
{
"name": "glass3"
},
{
"name": "glass4"
},
{
"name": "glass5"
},
{
"name": "glass6"
},
{
"name": "largebottle1"
},
{
"name": "largebottle2"
},
{
"name": "largebottle3"
},
{
"name": "largebottle4"
},
{
"name": "largebottle5"
},
{
"name": "largebottle6"
},
{
"name": "smallbottle1"
},
{
"name": "smallbottle2"
},
{
"name": "smallbottle3"
},
{
"name": "smallbottle4"
},
{
"name": "smallbottle5"
},
{
"name": "smallbottle6"
},
{
"name": "vial1"
},
{
"name": "vial2"
},
{
"name": "vial3"
},
{
"name": "vial4"
},
{
"name": "vial5"
},
{
"name": "vial6"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

View File

@@ -1 +1,52 @@
{"version": 1, "size": {"x": 32, "y": 32}, "states": [{"name": "0", "delays": [[1.0]]}, {"name": "1", "delays": [[1.0]]}, {"name": "10", "delays": [[1.0]]}, {"name": "15", "delays": [[1.0]]}, {"name": "5", "delays": [[1.0]]}, {"name": "broken", "delays": [[1.0]]}, {"name": "syringeproj", "delays": [[1.0]]}]} {
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/syringe.dmi",
"states": [
{
"name": "syringe_base0"
},
{
"name": "syringe_base1"
},
{
"name": "syringe_base2"
},
{
"name": "syringe_base3"
},
{
"name": "syringe_base4"
},
{
"name": "broken"
},
{
"name": "syringeproj"
},
{
"name": "syringe1"
},
{
"name": "syringe2"
},
{
"name": "syringe3"
},
{
"name": "syringe4"
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}