]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Salvage Spawners (#31020)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Thu, 15 Aug 2024 19:26:02 +0000 (15:26 -0400)
committerGitHub <noreply@github.com>
Thu, 15 Aug 2024 19:26:02 +0000 (13:26 -0600)
* treasure entities and spawners

* no more smiles

22 files changed:
Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/tables_loot.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Markers/Spawners/Random/instruments.yml
Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml
Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml
Resources/Prototypes/Entities/Objects/Materials/Sheets/other.yml
Resources/Prototypes/Entities/Objects/Misc/treasure.yml [new file with mode: 0644]
Resources/Textures/Objects/Misc/coins.rsi/coin_adamantine.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/coins.rsi/coin_diamond.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/coins.rsi/coin_gold.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/coins.rsi/coin_iron.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/coins.rsi/coin_silver.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/coins.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Misc/module.rsi/datadisk_encrypted.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/module.rsi/meta.json
Resources/Textures/Objects/Misc/sample_tubes.rsi/blank.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/sample_tubes.rsi/energy.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json [new file with mode: 0644]
Resources/Textures/Objects/Misc/sample_tubes.rsi/power.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/sample_tubes.rsi/reinforcer.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/sample_tubes.rsi/stabilizer.png [new file with mode: 0644]
Resources/Textures/Objects/Misc/sample_tubes.rsi/synchronizer.png [new file with mode: 0644]

diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/spawners.yml
new file mode 100644 (file)
index 0000000..9979090
--- /dev/null
@@ -0,0 +1,458 @@
+- type: entityTable
+  id: SalvageScrapSpawnerCommon
+  table: !type:GroupSelector
+    children:
+    # 70% chance of scrap of some kind
+    - !type:GroupSelector
+      weight: 70
+      children:
+      - !type:NestedSelector
+        tableId: SalvageScrapLowValue
+        weight: 60
+      - !type:NestedSelector
+        tableId: SalvageScrapHighValue
+        weight: 30
+      - !type:NestedSelector
+        tableId: SalvageScrapLarge
+        weight: 10
+    # 10% chance of some trash
+    - !type:NestedSelector
+      tableId: GenericTrashItems
+      weight: 10
+    # 15% chance of low-value equipment
+    - !type:NestedSelector
+      tableId: SalvageEquipmentCommon
+      weight: 15
+    # 5% chance of low-value treasure or maintenance tools
+    - !type:GroupSelector
+      weight: 5
+      children:
+      - !type:NestedSelector
+        tableId: SalvageTreasureCommon
+      - !type:NestedSelector
+        tableId: MaintToolsTable
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerScrapCommon
+  name: Salvage Scrap Spawner
+  suffix: Common, 50%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Objects/Materials/Scrap/generic.rsi
+      state: metal-1
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:NestedSelector
+      tableId: SalvageScrapSpawnerCommon
+      prob: 0.5
+
+- type: entity
+  parent: SalvageSpawnerScrapCommon
+  id: SalvageSpawnerScrapCommon75
+  suffix: Common, 75%
+  components:
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:NestedSelector
+      tableId: SalvageScrapSpawnerCommon
+      prob: 0.75
+
+- type: entityTable
+  id: SalvageScrapSpawnerValuable
+  table: !type:GroupSelector
+    children:
+    # 75% chance of scrap of some kind
+    - !type:GroupSelector
+      weight: 75
+      children:
+      - !type:NestedSelector
+        tableId: SalvageScrapLowValue
+        weight: 20
+      - !type:NestedSelector
+        tableId: SalvageScrapHighValue
+        weight: 40
+      - !type:NestedSelector
+        tableId: SalvageScrapLarge
+        weight: 40
+    # 15% chance of low-value equipment
+    - !type:NestedSelector
+      tableId: SalvageEquipmentCommon
+      weight: 15
+    # 10% chance of low-value treasure or maintenance tools
+    - !type:GroupSelector
+      weight: 10
+      children:
+      - !type:NestedSelector
+        tableId: SalvageTreasureCommon
+      - !type:NestedSelector
+        tableId: MaintToolsTable
+      - !type:NestedSelector
+        tableId: SalvageTreasureUncommon
+        weight: 0.25
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerScrapValuable
+  name: Salvage Scrap Spawner
+  suffix: Valuable, 50%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Objects/Materials/Scrap/generic.rsi
+      state: junk-airlock-1
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:NestedSelector
+      tableId: SalvageScrapSpawnerValuable
+      prob: 0.5
+
+- type: entity
+  parent: SalvageSpawnerScrapValuable
+  id: SalvageSpawnerScrapValuable75
+  suffix: Valuable, 75%
+  components:
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:NestedSelector
+      tableId: SalvageScrapSpawnerValuable
+      prob: 0.75
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerTreasure
+  name: Salvage Treasure Spawner
+  suffix: Common, 75%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Objects/Materials/materials.rsi
+      state: diamond
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:GroupSelector
+      prob: 0.75
+      children:
+      # 80% chance of some treasure
+      - !type:GroupSelector
+        weight: 80
+        children:
+        - !type:NestedSelector
+          tableId: SalvageTreasureCommon
+          weight: 60
+        - !type:NestedSelector
+          tableId: SalvageTreasureUncommon
+          weight: 30
+        - !type:NestedSelector
+          tableId: SalvageTreasureRare
+          weight: 9
+        - !type:NestedSelector
+          tableId: SalvageTreasureLegendary
+          weight: 1
+      # 10% chance of low-level equipment
+      - !type:GroupSelector
+        weight: 10
+        children:
+        - !type:NestedSelector
+          tableId: SalvageEquipmentCommon
+          weight: 60
+        - !type:NestedSelector
+          tableId: SalvageEquipmentUncommon
+          weight: 40
+      # 5% chance of moderate scrap
+      - !type:GroupSelector
+        weight: 5
+        children:
+        - !type:NestedSelector
+          tableId: SalvageScrapLowValue
+          weight: 60
+        - !type:NestedSelector
+          tableId: SalvageScrapHighValue
+          weight: 30
+        - !type:NestedSelector
+          tableId: SalvageScrapLarge
+          weight: 10
+      # 5% chance of maintenance fluff
+      - !type:NestedSelector
+        tableId: MaintFluffTable
+        weight: 5
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerTreasureValuable
+  name: Salvage Treasure Spawner
+  suffix: Valuable, 75%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Objects/Materials/materials.rsi
+      state: diamond
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:GroupSelector
+      prob: 0.75
+      children:
+      # 80% chance of some treasure
+      - !type:GroupSelector
+        weight: 80
+        children:
+        - !type:NestedSelector
+          tableId: SalvageTreasureCommon
+          weight: 45
+        - !type:NestedSelector
+          tableId: SalvageTreasureUncommon
+          weight: 35
+        - !type:NestedSelector
+          tableId: SalvageTreasureRare
+          weight: 15
+        - !type:NestedSelector
+          tableId: SalvageTreasureLegendary
+          weight: 5
+      # 10% chance of low-level equipment
+      - !type:GroupSelector
+        weight: 10
+        children:
+        - !type:NestedSelector
+          tableId: SalvageEquipmentCommon
+          weight: 50
+        - !type:NestedSelector
+          tableId: SalvageEquipmentUncommon
+          weight: 40
+        - !type:NestedSelector
+          tableId: SalvageEquipmentUncommon
+          weight: 10
+      # 5% chance of moderate scrap
+      - !type:GroupSelector
+        weight: 5
+        children:
+        - !type:NestedSelector
+          tableId: SalvageScrapLowValue
+          weight: 30
+        - !type:NestedSelector
+          tableId: SalvageScrapHighValue
+          weight: 45
+        - !type:NestedSelector
+          tableId: SalvageScrapLarge
+          weight: 25
+      # 5% chance of maintenance fluff
+      - !type:NestedSelector
+        tableId: MaintFluffTable
+        weight: 5
+        rolls: !type:RangeNumberSelector
+          range: 1, 2
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerEquipment
+  name: Salvage Equipment Spawner
+  suffix: Common, 75%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Objects/Devices/communication.rsi
+      state: walkietalkie
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:GroupSelector
+      prob: 0.75
+      children:
+      # 80% chance of equipment item
+      - !type:GroupSelector
+        weight: 80
+        children:
+        - !type:NestedSelector
+          tableId: SalvageEquipmentCommon
+          weight: 60
+        - !type:NestedSelector
+          tableId: SalvageEquipmentUncommon
+          weight: 30
+        - !type:NestedSelector
+          tableId: SalvageEquipmentRare
+          weight: 9
+        - !type:NestedSelector
+          tableId: SalvageEquipmentLegendary
+          weight: 1
+      # 15% chance of decent-ish treasure
+      - !type:GroupSelector
+        weight: 15
+        children:
+        - !type:NestedSelector
+          tableId: SalvageTreasureCommon
+          weight: 75
+        - !type:NestedSelector
+          tableId: SalvageTreasureUncommon
+          weight: 20
+        - !type:NestedSelector
+          tableId: SalvageTreasureRare
+          weight: 5
+      # 5% chance of decent maintenance loot
+      - !type:GroupSelector
+        weight: 5
+        children:
+        - !type:NestedSelector
+          tableId: MaintToolsTable
+        - !type:NestedSelector
+          tableId: MaintFluffTable
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerEquipmentValuable
+  name: Salvage Equipment Spawner
+  suffix: Valuable, 75%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Objects/Devices/communication.rsi
+      state: walkietalkie
+  - type: EntityTableSpawner
+    offset: 0.4
+    table: !type:GroupSelector
+      prob: 0.75
+      children:
+      # 80% chance of equipment item
+      - !type:GroupSelector
+        weight: 80
+        children:
+        - !type:NestedSelector
+          tableId: SalvageEquipmentCommon
+          weight: 45
+        - !type:NestedSelector
+          tableId: SalvageEquipmentUncommon
+          weight: 35
+        - !type:NestedSelector
+          tableId: SalvageEquipmentRare
+          weight: 15
+        - !type:NestedSelector
+          tableId: SalvageEquipmentLegendary
+          weight: 5
+      # 14% chance of decent-ish treasure
+      - !type:GroupSelector
+        weight: 14
+        children:
+        - !type:NestedSelector
+          tableId: SalvageTreasureCommon
+          weight: 60
+        - !type:NestedSelector
+          tableId: SalvageTreasureUncommon
+          weight: 30
+        - !type:NestedSelector
+          tableId: SalvageTreasureRare
+          weight: 10
+      # 5% chance of decent maintenance loot
+      - !type:GroupSelector
+        weight: 5
+        children:
+        - !type:NestedSelector
+          tableId: MaintToolsTable
+        - !type:NestedSelector
+          tableId: MaintFluffTable
+      # 1% chance of syndie maintenance loot
+      - !type:GroupSelector
+        weight: 1
+        children:
+        - !type:NestedSelector
+          tableId: SyndieMaintLoot
+
+- type: entity
+  name: Salvage Canister Spawner
+  id: SalvageCanisterSpawner
+  parent: MarkerBase
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Structures/Storage/canister.rsi
+      state: blue
+  - type: EntityTableSpawner
+    table: !type:GroupSelector
+      prob: 0.9
+      children:
+      - id: AirCanister
+      - id: NitrogenCanister
+      - id: OxygenCanister
+      - id: CarbonDioxideCanister
+      - id: PlasmaCanister
+        weight: 0.25
+      - id: NitrousOxideCanister
+        weight: 0.25
+
+- type: entityTable
+  id: SalvageMagnetMobTable
+  table: !type:GroupSelector
+    children:
+    - id: MobCarpSalvage
+      weight: 60
+    - id: MobCarpSalvage
+      weight: 25
+      amount: !type:RangeNumberSelector
+        range: 1, 3
+    - !type:AllSelector
+      weight: 15
+      children:
+      - id: MobShark
+      - id: MobCarpSalvage
+        amount: !type:ConstantNumberSelector
+          value: 3
+    # - id: MobHivebot (solo hivebot spawn)
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerMobMagnet
+  name: Salvage Magnet Mob Spawner
+  suffix: 50%
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Mobs/Aliens/Carps/space.rsi
+      state: alive
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      prob: 0.5
+      tableId: SalvageMagnetMobTable
+
+- type: entity
+  parent: SalvageSpawnerMobMagnet
+  id: SalvageSpawnerMobMagnet75
+  suffix: 75%
+  components:
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      prob: 0.75
+      tableId: SalvageMagnetMobTable
+
+- type: entity
+  parent: SalvageSpawnerMobMagnet
+  id: SalvageSpawnerMobMagnet100
+  suffix: 100%
+  components:
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      prob: 1.0
+      tableId: SalvageMagnetMobTable
+
+- type: entity
+  parent: MarkerBase
+  id: SalvageSpawnerMobShark
+  name: Salvage Sharkminnow Spawner
+  components:
+  - type: Sprite
+    layers:
+    - state: pink
+    - sprite: Mobs/Aliens/Carps/sharkminnow.rsi
+      state: alive
+  - type: EntityTableSpawner
+    table: !type:AllSelector
+      children:
+      - id: MobShark
+      - id: MobCarpSalvage
+        amount: !type:ConstantNumberSelector
+          value: 3
+
diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/tables_loot.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Salvage/tables_loot.yml
new file mode 100644 (file)
index 0000000..976febb
--- /dev/null
@@ -0,0 +1,226 @@
+# Scrap: Worthless items that can be recycled into materials
+
+- type: entityTable
+  id: SalvageScrapLowValue
+  table: !type:GroupSelector
+    children:
+    - id: ScrapAirlock2
+    - id: ScrapBucket
+    - id: ScrapCamera
+    - id: ScrapCanister1
+    - id: ScrapCanister2
+    - id: ScrapFaxMachine
+    - id: ScrapFireExtinguisher
+    - id: ScrapFirelock3
+    - id: ScrapIntercom
+    - id: ScrapMedkit
+    - !type:GroupSelector
+      children:
+      - id: ScrapPAI
+      - id: ScrapPAIGold
+        weight: 0.1
+    - id: ScrapTube
+    - id: ShardGlass
+      amount: !type:RangeNumberSelector
+        range: 1, 3
+    - id: SheetSteel1
+      weight: 0.5
+      amount: !type:RangeNumberSelector
+        range: 1, 3
+    - id: SheetPlastic1
+      weight: 0.5
+      amount: !type:RangeNumberSelector
+        range: 1, 3
+    - id: PartRodMetal1
+      weight: 0.5
+      amount: !type:RangeNumberSelector
+        range: 1, 3
+
+- type: entityTable
+  id: SalvageScrapHighValue
+  table: !type:GroupSelector
+    children:
+    - id: ScrapSteel
+      weight: 2
+    - id: ScrapGlass
+      weight: 2
+    # - id: ScrapPlastic TODO: high-value plastic scrap.
+    #  weight: 2
+    - id: SheetSteel10
+    - id: SheetGlass10
+    - id: SheetPlastic10
+    - id: PartRodMetal10
+      weight: 0.33
+    - id: MaterialWoodPlank10
+      weight: 0.2
+    - id: SheetPlasma10
+      weight: 0.2
+    - id: ArtifactFragment1
+      weight: 0.05
+    - id: SheetPlasteel10
+      weight: 0.05
+
+- type: entityTable
+  id: SalvageScrapLarge
+  table: !type:GroupSelector
+    children:
+    - id: ScrapAirlock1
+    - id: ScrapCloset
+    - id: ScrapFirelock1
+    - id: ScrapFirelock2
+    - id: ScrapJetpack
+      weight: 0.5
+    - id: ScrapMopBucket
+      weight: 0.5
+
+# Treasure: High-value scatterables that don't do a ton.
+
+- type: entityTable
+  id: SalvageTreasureCommon
+  table: !type:GroupSelector
+    children:
+    - id: SheetPlasma1
+      amount: !type:RangeNumberSelector
+        range: 3, 5
+    - id: ResearchDisk
+    - id: DrinkGoldenCup
+    - id: TreasureSampleTube
+    - !type:NestedSelector
+      tableId: TreasureCoinPile
+      rolls: !type:RangeNumberSelector
+        range: 1, 2
+    - !type:NestedSelector
+      tableId: RandomInstrumentTable
+
+- type: entityTable
+  id: SalvageTreasureUncommon
+  table: !type:GroupSelector
+    children:
+    - id: IngotSilver1
+      amount: !type:RangeNumberSelector
+        range: 1, 5
+    - id: IngotGold1
+      amount: !type:RangeNumberSelector
+        range: 3, 5
+    - id: TreasureDatadiskEncrypted
+    - !type:GroupSelector
+      children:
+      - id: TreasureCDDrive
+      - id: TreasureHardDiskDrive
+      - id: TreasureFlopDiskDrive
+    - !type:NestedSelector
+      tableId: TreasureCoinPile
+      rolls: !type:RangeNumberSelector
+        range: 4, 7
+    - id: SpaceCash1000
+    - id: WristwatchGold
+
+- type: entityTable
+  id: SalvageTreasureRare
+  table: !type:GroupSelector
+    children:
+    - id: MaterialDiamond1
+    - id: TreasureCPUSupercharged
+    - id: TechnologyDiskRare
+      weight: 0.5
+    - id: ResearchDisk10000
+      weight: 0.5
+    - id: ArabianLamp
+    - !type:NestedSelector
+      tableId: TreasureCoinPileRare
+      rolls: !type:RangeNumberSelector
+        range: 2, 5
+    - !type:AllSelector
+      children:
+      - id: BriefcaseBrown
+      - !type:GroupSelector
+        rolls: !type:RangeNumberSelector
+          range: 3, 5
+        children:
+        - id: SpaceCash1000
+          weight: 60
+        - id: SpaceCash2500
+          weight: 25
+        - id: SpaceCash5000
+          weight: 14
+        - id: SpaceCash10000
+          weight: 1
+
+- type: entityTable
+  id: SalvageTreasureLegendary
+  table: !type:GroupSelector
+    children:
+    - id: ClothingMaskGoldenCursed
+    - id: ClothingHeadHatFancyCrown
+    - id: GoldenBikeHorn
+    - id: ClothingHeadHatCatEars
+    - id: TreasureCoinDiamond
+      amount: !type:RangeNumberSelector
+        range: 2, 5
+
+# Equipment: Tools and things used by salvagers. Quote unquote "Gamer Loot"
+
+- type: entityTable
+  id: SalvageEquipmentCommon
+  table: !type:GroupSelector
+    children:
+    - id: Flare
+    - id: Crowbar
+    - id: Pickaxe
+    - id: ClothingMaskGas
+    - !type:GroupSelector
+      children:
+      - id: Wirecutter
+      - id: Screwdriver
+      - id: Wrench
+      - id: Welder
+        weight: 0.5
+    - id: Shovel
+    - id: FlashlightLantern
+    - id: FireExtinguisher
+
+- type: entityTable
+  id: SalvageEquipmentUncommon
+  table: !type:GroupSelector
+    children:
+    - id: OreBag
+    - id: HandheldGPSBasic
+    - id: PowerCellHighPrinted
+    - id: RadioHandheld
+    - id: ClothingBeltUtility
+    - id: SurvivalKnife
+    - id: WeaponProtoKineticAccelerator
+      weight: 0.5
+    - id: OxygenTankFilled
+    - !type:GroupSelector
+      children:
+      - id: ClothingHeadHatWelding
+      - id: ClothingHeadHatWeldingMaskFlame
+        weight: 0.25
+      - id: ClothingHeadHatWeldingMaskFlameBlue
+        weight: 0.25
+      - id: ClothingHeadHatWeldingMaskPainted
+        weight: 0.1
+
+- type: entityTable
+  id: SalvageEquipmentRare
+  table: !type:GroupSelector
+    children:
+    - id: FultonBeacon
+    - id: Fulton
+      amount: !type:RangeNumberSelector
+        range: 1, 3
+    - id: HandHeldMassScanner
+    - id: WeaponCrusherDagger
+    - id: MiningDrill
+    - id: ClothingEyesGlassesMeson
+    - id: ClothingBeltSalvageWebbing
+    - id: ClothingOuterHardsuitSalvage
+
+- type: entityTable
+  id: SalvageEquipmentLegendary
+  table: !type:GroupSelector
+    children:
+    - id: WeaponCrusher
+    - id: WeaponCrusherGlaive
+    - id: OmnizineChemistryBottle
index 0c54f37bd70a4a495e81f574c909b8a0f31f79f1..0d38015c40f750237d3a808ce20621dc9fe72028 100644 (file)
@@ -1,3 +1,43 @@
+- type: entityTable
+  id: RandomInstrumentTable
+  table: !type:GroupSelector
+    children:
+    - !type:GroupSelector
+      weight: 95
+      children:
+      - id: AcousticGuitarInstrument
+      - id: ViolinInstrument
+      - id: TrumpetInstrument
+      - id: ElectricGuitarInstrument
+      - id: AccordionInstrument
+      - id: HarmonicaInstrument
+      - id: TromboneInstrument
+      - id: FrenchHornInstrument
+      - id: EuphoniumInstrument
+      - id: SaxophoneInstrument
+      - id: BanjoInstrument
+      - id: GlockenspielInstrument
+      - id: XylophoneInstrument
+      - id: BikeHornInstrument
+      - id: RecorderInstrument
+      - id: FluteInstrument
+      - id: ClarinetInstrument
+      - id: CelloInstrument
+      - id: KalimbaInstrument
+      - id: MicrophoneInstrument
+      - id: BassGuitarInstrument
+      - id: OcarinaInstrument
+      - id: PanFluteInstrument
+    - !type:GroupSelector
+      weight: 5
+      children:
+      - id: SynthesizerInstrument
+      - id: GunpetInstrument
+      - id: BagpipeInstrument
+      - id: RockGuitarInstrument
+      - id: MusicBoxInstrument
+      - id: ViolaInstrument
+
 - type: entity
   id: RandomInstruments
   name: random instruments spawner
@@ -8,37 +48,6 @@
       - state: red
       - sprite: Objects/Fun/Instruments/h_synthesizer.rsi
         state: icon
-  - type: RandomSpawner
-    prototypes:
-      - AcousticGuitarInstrument
-      - ViolinInstrument
-      - TrumpetInstrument
-      - ElectricGuitarInstrument
-      - AccordionInstrument
-      - HarmonicaInstrument
-      - TromboneInstrument
-      - FrenchHornInstrument
-      - EuphoniumInstrument
-      - SaxophoneInstrument
-      - BanjoInstrument
-      - GlockenspielInstrument
-      - XylophoneInstrument
-      - BikeHornInstrument
-      - RecorderInstrument
-      - FluteInstrument
-      - ClarinetInstrument
-      - CelloInstrument
-      - KalimbaInstrument
-      - MicrophoneInstrument
-      - BassGuitarInstrument
-      - OcarinaInstrument
-      - PanFluteInstrument
-    chance: 0.95
-    rarePrototypes:
-      - SynthesizerInstrument
-      - GunpetInstrument
-      - BagpipeInstrument
-      - RockGuitarInstrument
-      - MusicBoxInstrument
-      - ViolaInstrument
-    rareChance: 0.05
+  - type: EntityTableSpawner
+    table: !type:NestedSelector
+      tableId: RandomInstrumentTable
index 34bf32d8d7bae7de3da1dbf4f607969eb8d43741..54020e2ab5c0c526b01eaaad99a3ca84791ba030 100644 (file)
       chance: 0.9
       offset: 0.0
 
-- type: entity
-  name: Salvage Canister Spawner
-  id: SalvageCanisterSpawner
-  parent: MarkerBase
-  components:
-    - type: Sprite
-      layers:
-        - state: red
-        - sprite: Structures/Storage/canister.rsi
-          state: blue
-    - type: RandomSpawner
-      rarePrototypes:
-        - PlasmaCanister
-      rareChance: 0.03
-      prototypes:
-        - AirCanister
-        - NitrogenCanister
-        - OxygenCanister
-        - CarbonDioxideCanister
-        - WaterVaporCanister
-      chance: 0.9
-      offset: 0.0
-
 - type: entity
   name: salvage loot spawner
   id: SalvageLootSpawner
index 18e70d5d66e669e5b4533d0414c355453e5a7f42..9dd386426cb8777cfcaf3bcaea6b1192ed55b2dd 100644 (file)
@@ -51,6 +51,8 @@
   components:
   - type: Sprite
     sprite: Objects/Consumable/Drinks/golden_cup.rsi
+  - type: StaticPrice
+    price: 125
 
 - type: entity
   parent: DrinkBaseCup
index dfb513362890dd450496d98b63d1adb72594d2e6..1218f7a9d43624a1e410bf5d5912c445c8ad9e54 100644 (file)
     tags:
     - Sheet
 
+- type: entity
+  parent: SheetPlasma
+  id: SheetPlasma10
+  suffix: 10
+  components:
+  - type: Sprite
+    state: plasma
+  - type: Stack
+    count: 10
+
 - type: entity
   parent: SheetPlasma
   id: SheetPlasma1
diff --git a/Resources/Prototypes/Entities/Objects/Misc/treasure.yml b/Resources/Prototypes/Entities/Objects/Misc/treasure.yml
new file mode 100644 (file)
index 0000000..20e72f8
--- /dev/null
@@ -0,0 +1,191 @@
+- type: entity
+  parent: BaseItem
+  id: TreasureDatadiskEncrypted
+  name: encrypted datadisk
+  description: An old data disk. Someone savvier than you could unencrypt it and learn something juicy. All you can do is sell it.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/module.rsi
+    layers:
+    - state: datadisk_base
+      color: "#868686"
+    - state: datadisk_label
+    - state: datadisk_encrypted
+  - type: PointLight
+    radius: 1.5
+    energy: 0.5
+    castShadows: false
+    color: "#0000ff"
+  - type: StaticPrice
+    price: 500
+
+- type: entity
+  parent: BaseItem
+  id: TreasureHardDiskDrive
+  name: hard disk drive
+  description: A disk drive designed for old Earth technology, circa 1980. There's probably some kind of collector who might want to get their paws on this.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/module.rsi
+    layers:
+    - state: harddisk
+      map: [ "base" ]
+  - type: Item
+    storedRotation: -90
+  - type: RandomSprite
+    available:
+    - base:
+        harddisk: ""
+        harddisk_mini: ""
+        harddisk_micro: ""
+  - type: StaticPrice
+    price: 275
+
+- type: entity
+  parent: BaseItem
+  id: TreasureFlopDiskDrive
+  name: floppy disk drive
+  description: A drive for reading off info off of floppy disks. Shame that the only things stored on them nowadays are nuclear bomb operations.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/module.rsi
+    layers:
+    - state: flopdrive
+  - type: Item
+    storedRotation: -90
+  - type: StaticPrice
+    price: 350
+
+- type: entity
+  parent: BaseItem
+  id: TreasureCDDrive
+  name: CD drive
+  description: A piece of tech for reading data off of CDs. Nowadays that's not the most useful thing, unless you plan on flying somewhere.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/module.rsi
+    layers:
+    - state: cddrive
+  - type: Item
+    storedRotation: -90
+  - type: StaticPrice
+    price: 300
+
+- type: entity
+  parent: BaseItem
+  id: TreasureCPUSupercharged
+  name: supercharged CPU
+  description: Some kind of super alien space tech. Shame all the computers already come with CPUs nowadays.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/module.rsi
+    layers:
+    - state: cpu_super
+  - type: Item
+    size: Tiny
+  - type: StaticPrice
+    price: 750
+
+- type: entity
+  parent: BaseItem
+  id: TreasureSampleTube
+  name: sample tube
+  description: A glass tube with some sort of goop in it. Looks prone to breaking.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/sample_tubes.rsi
+    layers:
+    - state: blank
+      map: [ "base" ]
+  - type: RandomSprite
+    available:
+    - base:
+        blank: ""
+        power: ""
+        reinforcer: ""
+        energy: ""
+        synchronizer: ""
+        stabilizer: ""
+  - type: StaticPrice
+    price: 120
+
+- type: entityTable
+  id: TreasureCoinPile
+  table: !type:GroupSelector
+    children:
+    - id: TreasureCoinIron
+      weight: 24
+    - id: TreasureCoinSilver
+      weight: 40
+    - id: TreasureCoinGold
+      weight: 24
+    - id: TreasureCoinAdamantine
+      weight: 11
+    - id: TreasureCoinDiamond
+      weight: 1
+
+- type: entityTable
+  id: TreasureCoinPileRare
+  table: !type:GroupSelector
+    children:
+    - id: TreasureCoinIron
+      weight: 10
+    - id: TreasureCoinSilver
+      weight: 25
+    - id: TreasureCoinGold
+      weight: 40
+    - id: TreasureCoinAdamantine
+      weight: 20
+    - id: TreasureCoinDiamond
+      weight: 5
+
+- type: entity
+  parent: BaseItem
+  id: TreasureCoinIron
+  name: coin
+  description: A flat bit of metal. If it was still in circulation, inflation would've made it worthless. Since it isn't, it's worth enough to keep in a book.
+  components:
+  - type: Sprite
+    sprite: Objects/Misc/coins.rsi
+    state: coin_iron
+  - type: Item
+    size: Tiny
+  - type: StaticPrice
+    price: 75
+
+- type: entity
+  parent: TreasureCoinIron
+  id: TreasureCoinSilver
+  components:
+  - type: Sprite
+    state: coin_silver
+  - type: StaticPrice
+    price: 125
+
+- type: entity
+  parent: TreasureCoinIron
+  id: TreasureCoinGold
+  components:
+  - type: Sprite
+    state: coin_gold
+  - type: StaticPrice
+    price: 175
+
+- type: entity
+  parent: TreasureCoinIron
+  id: TreasureCoinAdamantine
+  components:
+  - type: Sprite
+    state: coin_adamantine
+  - type: StaticPrice
+    price: 250
+
+- type: entity
+  parent: TreasureCoinIron
+  id: TreasureCoinDiamond
+  components:
+  - type: Sprite
+    state: coin_diamond
+  - type: StaticPrice
+    price: 500
+
diff --git a/Resources/Textures/Objects/Misc/coins.rsi/coin_adamantine.png b/Resources/Textures/Objects/Misc/coins.rsi/coin_adamantine.png
new file mode 100644 (file)
index 0000000..1276489
Binary files /dev/null and b/Resources/Textures/Objects/Misc/coins.rsi/coin_adamantine.png differ
diff --git a/Resources/Textures/Objects/Misc/coins.rsi/coin_diamond.png b/Resources/Textures/Objects/Misc/coins.rsi/coin_diamond.png
new file mode 100644 (file)
index 0000000..275ac02
Binary files /dev/null and b/Resources/Textures/Objects/Misc/coins.rsi/coin_diamond.png differ
diff --git a/Resources/Textures/Objects/Misc/coins.rsi/coin_gold.png b/Resources/Textures/Objects/Misc/coins.rsi/coin_gold.png
new file mode 100644 (file)
index 0000000..8bdb9ff
Binary files /dev/null and b/Resources/Textures/Objects/Misc/coins.rsi/coin_gold.png differ
diff --git a/Resources/Textures/Objects/Misc/coins.rsi/coin_iron.png b/Resources/Textures/Objects/Misc/coins.rsi/coin_iron.png
new file mode 100644 (file)
index 0000000..b5bdbf2
Binary files /dev/null and b/Resources/Textures/Objects/Misc/coins.rsi/coin_iron.png differ
diff --git a/Resources/Textures/Objects/Misc/coins.rsi/coin_silver.png b/Resources/Textures/Objects/Misc/coins.rsi/coin_silver.png
new file mode 100644 (file)
index 0000000..8891912
Binary files /dev/null and b/Resources/Textures/Objects/Misc/coins.rsi/coin_silver.png differ
diff --git a/Resources/Textures/Objects/Misc/coins.rsi/meta.json b/Resources/Textures/Objects/Misc/coins.rsi/meta.json
new file mode 100644 (file)
index 0000000..ac06e96
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "version": 1,
+  "license": "CC-BY-SA-3.0",
+  "copyright": "Taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/15121b534f4ef10339d96412e22fe3ce4d15a45d/icons/obj/coins.dmi",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "coin_silver"
+    },
+    {
+      "name": "coin_gold"
+    },
+    {
+      "name": "coin_iron"
+    },
+    {
+      "name": "coin_diamond"
+    },
+    {
+      "name": "coin_adamantine"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Misc/module.rsi/datadisk_encrypted.png b/Resources/Textures/Objects/Misc/module.rsi/datadisk_encrypted.png
new file mode 100644 (file)
index 0000000..55a8e19
Binary files /dev/null and b/Resources/Textures/Objects/Misc/module.rsi/datadisk_encrypted.png differ
index ba3abaa2dd24597d495b8e9fe6174ad31ec076e1..e332bf6c19ba44c6b548ffc5ec4b2801c262f3c5 100644 (file)
@@ -1 +1 @@
-{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0, generic, service, command, science, security, medical, supply, and engineering taken from shiptest at https://github.com/shiptest-ss13/Shiptest/pull/1473, additional sprites created by EmoGarbage404", "states": [{"name": "abductor_mod"}, {"name": "airalarm_electronics"}, {"name": "ash_plating"}, {"name": "beaker_holder"}, {"name": "blank_mod"}, {"name": "bluespacearray"}, {"name": "boris"}, {"name": "boris_recharging", "delays": [[1.0, 1.0]]}, {"name": "card_mini"}, {"name": "card_mod"}, {"name": "cargodisk"}, {"name": "cart_connector"}, {"name": "cddrive"}, {"name": "cell"}, {"name": "cell_con"}, {"name": "cell_con_micro"}, {"name": "cell_micro"}, {"name": "cell_mini"}, {"name": "charger_APC"}, {"name": "charger_lambda"}, {"name": "charger_pda"}, {"name": "charger_wire"}, {"name": "clock_mod", "delays": [[0.6, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "command"}, {"name": "cpu"}, {"name": "cpu_adv"}, {"name": "cpu_command"}, {"name": "cpu_engineering"}, {"name": "cpu_medical"}, {"name": "cpu_science"}, {"name": "cpu_security"}, {"name": "cpu_service"}, {"name": "cpu_super", "delays": [[0.1, 0.1]]}, {"name": "cpu_supply"}, {"name": "cpuboard"}, {"name": "cpuboard_adv"}, {"name": "cpuboard_super", "delays": [[0.1, 0.1]]}, {"name": "cyborg_upgrade"}, {"name": "cyborg_upgrade1"}, {"name": "cyborg_upgrade2"}, {"name": "cyborg_upgrade3"}, {"name": "cyborg_upgrade4"}, {"name": "cyborg_upgrade5"}, {"name": "datadisk_base"},  {"name": "datadisk_gene", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk_hydro", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk_label"}, {"name": "depositbox"}, {"name": "door_electronics"}, {"name": "engineering"}, {"name": "flopdrive"}, {"name": "generic"}, {"name": "harddisk"}, {"name": "harddisk_micro"}, {"name": "harddisk_mini"}, {"name": "holodisk", "delays": [[0.1, 0.1]]}, {"name": "id_mod"}, {"name": "mainboard"}, {"name": "mcontroller"}, {"name": "medical"}, {"name": "net_wired"}, {"name": "power_mod"}, {"name": "printer"}, {"name": "printer_mini"}, {"name": "prizevendor"}, {"name": "radio"}, {"name": "radio_micro"}, {"name": "radio_mini"}, {"name": "ram"}, {"name": "rndmajordisk"}, {"name": "science"}, {"name": "secmodschematic"}, {"name": "security"}, {"name": "selfrepair_off"}, {"name": "selfrepair_on", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "service"}, {"name": "servo"}, {"name": "ssd"}, {"name": "ssd_large"}, {"name": "ssd_micro"}, {"name": "ssd_mini"}, {"name": "std_mod"}, {"name": "supply"}]}
\ No newline at end of file
+{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0, generic, service, command, science, security, medical, supply, and engineering taken from shiptest at https://github.com/shiptest-ss13/Shiptest/pull/1473, additional sprites created by EmoGarbage404", "states": [{"name": "abductor_mod"}, {"name": "airalarm_electronics"}, {"name": "ash_plating"}, {"name": "beaker_holder"}, {"name": "blank_mod"}, {"name": "bluespacearray"}, {"name": "boris"}, {"name": "boris_recharging", "delays": [[1.0, 1.0]]}, {"name": "card_mini"}, {"name": "card_mod"}, {"name": "cargodisk"}, {"name": "cart_connector"}, {"name": "cddrive"}, {"name": "cell"}, {"name": "cell_con"}, {"name": "cell_con_micro"}, {"name": "cell_micro"}, {"name": "cell_mini"}, {"name": "charger_APC"}, {"name": "charger_lambda"}, {"name": "charger_pda"}, {"name": "charger_wire"}, {"name": "clock_mod", "delays": [[0.6, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "command"}, {"name": "cpu"}, {"name": "cpu_adv"}, {"name": "cpu_command"}, {"name": "cpu_engineering"}, {"name": "cpu_medical"}, {"name": "cpu_science"}, {"name": "cpu_security"}, {"name": "cpu_service"}, {"name": "cpu_super", "delays": [[0.1, 0.1]]}, {"name": "cpu_supply"}, {"name": "cpuboard"}, {"name": "cpuboard_adv"}, {"name": "cpuboard_super", "delays": [[0.1, 0.1]]}, {"name": "cyborg_upgrade"}, {"name": "cyborg_upgrade1"}, {"name": "cyborg_upgrade2"}, {"name": "cyborg_upgrade3"}, {"name": "cyborg_upgrade4"}, {"name": "cyborg_upgrade5"}, {"name": "datadisk_base"},  {"name": "datadisk_gene", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk_encrypted", "delays": [[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "datadisk_hydro", "delays": [[0.1, 0.1, 0.1]]}, {"name": "datadisk_label"}, {"name": "depositbox"}, {"name": "door_electronics"}, {"name": "engineering"}, {"name": "flopdrive"}, {"name": "generic"}, {"name": "harddisk"}, {"name": "harddisk_micro"}, {"name": "harddisk_mini"}, {"name": "holodisk", "delays": [[0.1, 0.1]]}, {"name": "id_mod"}, {"name": "mainboard"}, {"name": "mcontroller"}, {"name": "medical"}, {"name": "net_wired"}, {"name": "power_mod"}, {"name": "printer"}, {"name": "printer_mini"}, {"name": "prizevendor"}, {"name": "radio"}, {"name": "radio_micro"}, {"name": "radio_mini"}, {"name": "ram"}, {"name": "rndmajordisk"}, {"name": "science"}, {"name": "secmodschematic"}, {"name": "security"}, {"name": "selfrepair_off"}, {"name": "selfrepair_on", "delays": [[0.1, 0.1, 0.1, 0.1]]}, {"name": "service"}, {"name": "servo"}, {"name": "ssd"}, {"name": "ssd_large"}, {"name": "ssd_micro"}, {"name": "ssd_mini"}, {"name": "std_mod"}, {"name": "supply"}]}
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/blank.png b/Resources/Textures/Objects/Misc/sample_tubes.rsi/blank.png
new file mode 100644 (file)
index 0000000..b3d3d40
Binary files /dev/null and b/Resources/Textures/Objects/Misc/sample_tubes.rsi/blank.png differ
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/energy.png b/Resources/Textures/Objects/Misc/sample_tubes.rsi/energy.png
new file mode 100644 (file)
index 0000000..624ee66
Binary files /dev/null and b/Resources/Textures/Objects/Misc/sample_tubes.rsi/energy.png differ
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json b/Resources/Textures/Objects/Misc/sample_tubes.rsi/meta.json
new file mode 100644 (file)
index 0000000..8b343b4
--- /dev/null
@@ -0,0 +1,29 @@
+{
+  "version": 1,
+  "license": "CC-BY-SA-3.0",
+  "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/fb1012102257b7b0a08d861fd2b8ba963c416e93/icons/obj/science/chromosomes.dmi",
+  "size": {
+    "x": 32,
+    "y": 32
+  },
+  "states": [
+    {
+      "name": "blank"
+    },
+    {
+      "name": "stabilizer"
+    },
+    {
+      "name": "synchronizer"
+    },
+    {
+      "name": "power"
+    },
+    {
+      "name": "energy"
+    },
+    {
+      "name": "reinforcer"
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/power.png b/Resources/Textures/Objects/Misc/sample_tubes.rsi/power.png
new file mode 100644 (file)
index 0000000..1ffb356
Binary files /dev/null and b/Resources/Textures/Objects/Misc/sample_tubes.rsi/power.png differ
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/reinforcer.png b/Resources/Textures/Objects/Misc/sample_tubes.rsi/reinforcer.png
new file mode 100644 (file)
index 0000000..2e70885
Binary files /dev/null and b/Resources/Textures/Objects/Misc/sample_tubes.rsi/reinforcer.png differ
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/stabilizer.png b/Resources/Textures/Objects/Misc/sample_tubes.rsi/stabilizer.png
new file mode 100644 (file)
index 0000000..052b135
Binary files /dev/null and b/Resources/Textures/Objects/Misc/sample_tubes.rsi/stabilizer.png differ
diff --git a/Resources/Textures/Objects/Misc/sample_tubes.rsi/synchronizer.png b/Resources/Textures/Objects/Misc/sample_tubes.rsi/synchronizer.png
new file mode 100644 (file)
index 0000000..e5f7366
Binary files /dev/null and b/Resources/Textures/Objects/Misc/sample_tubes.rsi/synchronizer.png differ