-# TODO: Have a seperate lid state that can be popped on and off (not as a seperate item) that changes whether the vial can be spilled or not.
-
- type: entity
- name: vial
- parent: BaseItem
- id: BaseChemistryEmptyVial
- description: A small vial.
+ abstract: true
+ parent: [ DrinkBaseMaterialGlass, DrinkBase, DrinkBaseOpenable, DrinkBaseEmptyTrash, DrinkVisualsAll ]
+ id: BaseChemistryVial
components:
+ - type: Item
+ size: Tiny
+ - type: Openable
+ sound:
+ collection: bottleCloseSounds # using closed here for the quieter sound
+ closeable: true
+ closeSound:
+ collection: bottleCloseSounds
+ - type: FitsInDispenser
+ solution: drink
+ - type: ExaminableSolution
+ exactVolume: true # It's a chemistry tool
- type: Tag
tags:
- Trash
- - CentrifugeCompatible
- - type: PhysicalComposition
- materialComposition:
- Glass: 25
- - type: FitsInDispenser
- solution: beaker
- - type: SpaceGarbage
+ - CentrifugeCompatible # unique feature of vials
+
+## Entities
+
+- type: entity
+ parent: BaseChemistryVial
+ id: ChemistryEmptyVial
+ name: vial
+ description: A small vial.
+ components:
+ - type: Item
+ sprite: Objects/Specific/Chemistry/vial.rsi
- type: Sprite
sprite: Objects/Specific/Chemistry/vial.rsi
- layers:
- - state: vial-1
- - state: vial-1-1
- map: ["enum.SolutionContainerLayers.Fill"]
- visible: false
- - type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 6
- fillBaseName: vial-1-
inHandsMaxFillLevels: 4
- inHandsFillBaseName: -fill-
- - type: Edible
- edible: Drink
- solution: beaker
- destroyOnEmpty: false
- utensil: None
- type: SolutionContainerManager
solutions:
- beaker:
+ drink:
maxVol: 30
- - type: MixableSolution
- solution: beaker
- - type: RefillableSolution
- solution: beaker
- - type: DrainableSolution
- solution: beaker
- - type: ExaminableSolution
- solution: beaker
- exactVolume: true
- - type: DrawableSolution
- solution: beaker
- type: SolutionTransfer
maxTransferAmount: 30
- canChangeTransferAmount: true
- - type: SolutionItemStatus
- solution: beaker
- - type: UserInterface
- interfaces:
- enum.TransferAmountUiKey.Key:
- type: TransferAmountBoundUserInterface
- - type: Item
- size: Tiny
- sprite: Objects/Specific/Chemistry/vial.rsi
- shape:
- - 0,0,0,0
- - type: MeleeWeapon
- soundNoDamage:
- path: "/Audio/Effects/Fluids/splat.ogg"
- damage:
- types:
- Blunt: 0
- - type: TrashOnSolutionEmpty
- solution: beaker
- type: StaticPrice
price: 100
- - type: DamageOnLand
- damage:
- types:
- Blunt: 5
- - type: DamageOtherOnHit
- damage:
- types:
- Blunt: 2
- - type: Damageable
- damageContainer: Inorganic
- type: Destructible
thresholds:
+ - trigger: &DamageTrigger100
+ !type:DamageTrigger
+ damage: 100
+ behaviors: &OverkillBehavior
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
- trigger:
!type:DamageTrigger
- damage: 15
+ damage: 15 # stronger than base
behaviors:
- - !type:PlaySoundBehavior
+ - &SoundGlassBreak !type:PlaySoundBehavior
sound:
collection: GlassBreak
- params:
- volume: -4
- !type:SpillBehavior { }
- !type:SpawnEntitiesBehavior
spawn:
- ShardGlass:
+ ShardGlass: # less glass than base
min: 0
max: 1
transferForensics: true
- !type:DoActsBehavior
acts: [ "Destruction" ]
- - type: Spillable
- solution: beaker
- - type: DnaSubstanceTrace
- type: entity
+ parent: BaseChemistryVial
+ id: ChemistryEmptyVialSmall
+ name: mini vial
+ description: A smaller vial.
+ components:
+ - type: Item
+ sprite: Objects/Specific/Chemistry/vial_mini.rsi
+ - type: Sprite
+ sprite: Objects/Specific/Chemistry/vial_mini.rsi
+ - type: SolutionContainerVisuals
+ maxFillLevels: 5
+ inHandsMaxFillLevels: 4
+ - type: SolutionContainerManager
+ solutions:
+ drink:
+ maxVol: 10
+ - type: SolutionTransfer
+ maxTransferAmount: 10
+ - type: StaticPrice
+ price: 50
+ - type: PhysicalComposition
+ materialComposition:
+ Glass: 10
+ - type: Destructible
+ thresholds:
+ - trigger: *DamageTrigger100
+ behaviors: *OverkillBehavior
+ - trigger:
+ !type:DamageTrigger
+ damage: 5 # smaller so weaker
+ behaviors: # remove glass shard spawn
+ - *SoundGlassBreak
+ - !type:SpillBehavior { }
+ - !type:DoActsBehavior
+ acts: [ "Destruction" ]
+
+## Reagent filled
+
+- type: entity
+ parent: ChemistryEmptyVial
id: VestineChemistryVial
- parent: BaseChemistryEmptyVial
suffix: vestine
components:
- type: Label
currentLabel: reagent-name-vestine
- type: SolutionContainerManager
solutions:
- beaker:
+ drink:
maxVol: 30
reagents:
- ReagentId: Vestine
Quantity: 30
- type: Tag
- tags: []
+ tags: &TagVial # Remove trash tag when we have a filled solution
+ - CentrifugeCompatible
- type: entity
+ parent: ChemistryEmptyVialSmall
id: RadiumChemistryVial
- parent: BaseChemistryEmptyVial
suffix: radium
components:
- type: Label
currentLabel: reagent-name-radium
- type: SolutionContainerManager
solutions:
- beaker:
- maxVol: 5
+ drink:
+ maxVol: 10
reagents:
- ReagentId: Radium
Quantity: 5
+ - type: Tag
+ tags: *TagVial
- type: entity
+ parent: ChemistryEmptyVialSmall
id: ChlorineChemistryVial
- parent: BaseChemistryEmptyVial
suffix: chlorine
components:
- type: Label
currentLabel: reagent-name-chlorine
- type: SolutionContainerManager
solutions:
- beaker:
- maxVol: 5
+ drink:
+ maxVol: 10
reagents:
- ReagentId: Chlorine
Quantity: 5
+ - type: Tag
+ tags: *TagVial
- type: entity
+ parent: ChemistryEmptyVialSmall
id: PlasmaChemistryVial
- parent: BaseChemistryEmptyVial
suffix: plasma
components:
- type: Label
currentLabel: reagent-name-plasma
- type: SolutionContainerManager
solutions:
- beaker:
+ drink:
maxVol: 10
reagents:
- ReagentId: Plasma
Quantity: 10
+ - type: Tag
+ tags: *TagVial
{
- "version": 1,
- "license": "CC-BY-SA-3.0",
- "copyright": "Drawn by Ubaser, taken inspiration by /tg/'s vials",
- "size": {
- "x": 32,
- "y": 32
- },
- "states": [
- {
- "name": "vial"
- },
- {
- "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-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": "vial-1"
- },
- {
- "name": "vial-1-1"
- },
- {
- "name": "vial-1-2"
- },
- {
- "name": "vial-1-3"
- },
- {
- "name": "vial-1-4"
- },
- {
- "name": "vial-1-5"
- },
- {
- "name": "vial-1-6"
- }
- ]
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Drawn by Ubaser, taken inspiration by /tg/'s vials. icon_open edit by iaada(GitHub)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "vial"
+ },
+ {
+ "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-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": "icon_empty"
+ },
+ {
+ "name": "icon_open"
+ },
+ {
+ "name": "fill-1"
+ },
+ {
+ "name": "fill-2"
+ },
+ {
+ "name": "fill-3"
+ },
+ {
+ "name": "fill-4"
+ },
+ {
+ "name": "fill-5"
+ },
+ {
+ "name": "fill-6"
+ }
+ ]
}
--- /dev/null
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Drawn by Ubaser, taken inspiration by /tg/'s vials. Edited and shrunk by iaada(GitHub)",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "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-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": "icon_empty"
+ },
+ {
+ "name": "icon_open"
+ },
+ {
+ "name": "fill-1"
+ },
+ {
+ "name": "fill-2"
+ },
+ {
+ "name": "fill-3"
+ },
+ {
+ "name": "fill-4"
+ },
+ {
+ "name": "fill-5"
+ }
+ ]
+}