Adds Purchasable Arena Mob Crates (#2563)

* Adds purchasable mobs for the Arena

* price fix

* accuracy

* more a

* arbritrargre

* Fix crazy high pricetag

* comment

* DeltaV -> _DV

* Increase Killer Tomatoes

* Big group of small mobs in large crate

* Oops

* merpo

* bruh

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
Velcroboy 2025-01-07 13:37:10 -06:00 committed by GitHub
parent 6c20cd9d4f
commit 838ca862c5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
31 changed files with 644 additions and 0 deletions

View File

@ -23,6 +23,8 @@ public sealed class CargoTest
[
// This is ignored because it is explicitly intended to be able to sell for more than it costs.
// new("FunCrateGambling") // DeltaV - no gambling
new("LivestockArenaMobLarge"), // Deltav - add crate to exceptions
new("LivestockArenaMobSmall") // Deltav - add crate to exceptions
];
[Test]

View File

@ -7,3 +7,24 @@
cost: 3500
category: Livestock
group: market
#Move to armory if we ever do access-specific purchasing
- type: cargoProduct
id: LivestockArenaMobSmall
icon:
sprite: Mobs/Aliens/Carps/space.rsi
state: icon
product: CrateArenaMobSmall
cost: 4000
category: cargoproduct-category-name-livestock
group: market
- type: cargoProduct
id: LivestockArenaMobLarge
icon:
sprite: Mobs/Aliens/Xenos/queen.rsi
state: running
product: CrateArenaMobLarge
cost: 6000
category: cargoproduct-category-name-livestock
group: market

View File

@ -0,0 +1,235 @@
- type: entity
id: CrateArenaMob
parent: CrateLivestockSecureReinforced
abstract: true
name: arena dangerous creature crate
description: A reinforced crate containing a dangerous creature for sanctioned gladiators to fight in the arena. Warning-Do not open without proper security protocols in place.
components:
- type: AccessReader
access: [["Armory"]]
- type: entity
id: CrateArenaMobSmall
parent: CrateArenaMob
name: arena dangerous creature(small) crate
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:NestedSelector
tableId: SmallArenaMobTable
- type: entity
id: CrateArenaMobLarge
parent: CrateArenaMob
name: arena dangerous creature(large) crate
components:
- type: EntityTableContainerFill
containers:
entity_storage: !type:NestedSelector
tableId: LargeArenaMobTable
#Tables
- type: entityTable
id: SmallArenaMobTable
table: !type:GroupSelector
children:
#Common
- !type:GroupSelector
weight: 10
children:
- !type:GroupSelector
children:
- id: MobCarp
amount: !type:RangeNumberSelector
range: 1, 4
- id: MobCarpMagic
amount: !type:RangeNumberSelector
range: 1, 4
- id: MobCarpHolo
amount: !type:RangeNumberSelector
range: 1, 4
- id: MobCarpRainbow
amount: !type:RangeNumberSelector
range: 1, 4
- id: MobShark
weight: 0.2
amount: !type:RangeNumberSelector
range: 1, 2
- !type:GroupSelector
children:
- id: MobPurpleSnake
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobCobraSpace
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobSmallPurpleSnake
amount: !type:RangeNumberSelector
range: 1, 6
weight: 0.4
- !type:GroupSelector
children:
- id: MobArgocyteSkitter
amount: !type:RangeNumberSelector
range: 1, 4
- id: MobArgocyteSwiper
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobArgocyteMolder
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobArgocytePouncer
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobArgocyteGlider
amount: !type:RangeNumberSelector
range: 1, 2
- id: MobArgocyteHarvester
amount: !type:RangeNumberSelector
range: 1, 2
#Nanotrasen has not yet developed the technology to hold these creatures
#- id: MobArgocyteCrawler
# amount: !type:RangeNumberSelector
# range: 1, 2
- !type:GroupSelector
children:
- id: MobWatcherLavaland
amount: !type:RangeNumberSelector
range: 1, 2
- id: MobWatcherIcewing
amount: !type:RangeNumberSelector
range: 1, 2
- id: MobWatcherMagmawing
amount: !type:RangeNumberSelector
range: 1, 2
- id: MobWatcherPride
amount: !type:RangeNumberSelector
range: 1, 2
weight: 0.1
- !type:GroupSelector
children:
- id: MobAdultSlimesBlueAngry
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobAdultSlimesGreenAngry
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobAdultSlimesYellowAngry
amount: !type:RangeNumberSelector
range: 1, 3
- id: MobTomatoKiller
amount: !type:RangeNumberSelector
range: 4, 8
#Uncommon
- !type:GroupSelector
weight: 0.5
children:
- id: MobLaserRaptor
weight: 10
- id: MobLaserRaptor
amount: !type:ConstantNumberSelector
value: 2
- id: MobFleshClamp
amount: !type:ConstantNumberSelector
value: 3
- type: entityTable
id: LargeArenaMobTable
table: !type:GroupSelector
children:
#Common
- !type:GroupSelector
weight: 10
children:
- !type:GroupSelector
children:
- id: MobBearSpace
- id: MobKangarooSpace
- id: MobKangarooSpace
#Nanotrasen has not yet developed the technology to hold these creatures
#- !type:GroupSelector
#children:
#- id: MobArgocyteEnforcer
#- id: MobArgocyteFounder
- !type:GroupSelector
children:
- id: MobXeno
- id: MobXenoPraetorianNPC
- id: MobXenoDroneNPC
- id: MobXenoRavagerNPC
- id: MobXenoRunnerNPC
- id: MobXenoRounyNPC
- id: MobXenoSpitterNPC
- id: MobXenoQueenNPC
- !type:GroupSelector
children:
- id: MobQuartzCrab
- id: MobIronCrab
- id: MobUraniumCrab
- id: MobSilverCrab
- !type:GroupSelector
weight: 0.5
children:
- id: MobQuartzCrab
amount: !type:ConstantNumberSelector
value: 2
- id: MobIronCrab
amount: !type:ConstantNumberSelector
value: 2
- id: MobUraniumCrab
amount: !type:ConstantNumberSelector
value: 2
- id: MobSilverCrab
amount: !type:ConstantNumberSelector
value: 2
- !type:GroupSelector
children:
- id: ReagentSlimeBeer
weight: 1.5
- id: ReagentSlimePax
- id: ReagentSlimeNocturine
weight: 1.5
- id: ReagentSlimeTHC
weight: 1.5
- id: ReagentSlimeBicaridine
- id: ReagentSlimeToxin
weight: 1.5
- id: ReagentSlimeNapalm
- id: ReagentSlimeMuteToxin
- id: ReagentSlimeNorepinephricAcid
- id: ReagentSlimeEphedrine
- id: ReagentSlimeRobustHarvest
- id: ReagentSlimeOmnizine
weight: 0.5
#Uncommon
- !type:GroupSelector
weight: 0.5
children:
- id: MobFleshJared
- id: MobFleshGolem
- id: MobFleshLover
- id: MobAbomination
- !type:GroupSelector
weight: 0.5
children:
- id: MobCarp
amount: !type:ConstantNumberSelector
value: 6
- id: MobCobraSpace
amount: !type:ConstantNumberSelector
value: 6
- id: MobArgocytePouncer
amount: !type:ConstantNumberSelector
value: 6
- id: MobWatcherPride
amount: !type:ConstantNumberSelector
value: 6
- id: MobAdultSlimesGreenAngry
amount: !type:ConstantNumberSelector
value: 6
#Nanotrasen has not yet developed the technology to hold these creatures
#Rare
#- !type:GroupSelector
# weight: 0.1
# children:
# - id: MobArgocyteLeviathing

View File

@ -0,0 +1,148 @@
- type: entity
parent: CrateLivestock
id: CrateLivestockSteel
name: plasteel livestock crate
components:
- type: Weldable
- type: ResistLocker
- type: Icon
sprite: _DV/Structures/Storage/Crates/livestock_steel.rsi
state: icon
- type: Sprite
sprite: _DV/Structures/Storage/Crates/livestock_steel.rsi
layers:
- state: base
- state: closed
map: ["enum.StorageVisualLayers.Door"]
- state: welded
visible: false
map: ["enum.WeldableLayers.BaseWelded"]
- state: paper
sprite: Structures/Storage/Crates/labels.rsi
offset: "-0.25,0.625"
map: ["enum.PaperLabelVisuals.Layer"]
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: Metallic
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 75
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- !type:SpawnEntitiesBehavior
spawn:
SheetPlasteel1:
min: 1
max: 4
- !type:DoActsBehavior
acts: [ "Destruction" ]
- type: Construction
graph: CrateLivestockSecure
node: cratelivestocksteel
containers:
- entity_storage
- type: Reflect
reflects:
- Energy
reflectProb: 0.2
spread: 90
- type: StaticPrice
price: 250
- type: entity
parent: CrateLivestockSteel
id: CrateLivestockSecure
name: secure plasteel livestock crate
components:
- type: Lock
- type: LockVisuals
- type: AccessReader
- type: Icon
sprite: _DV/Structures/Storage/Crates/livestock_secure.rsi
state: icon
- type: Sprite
sprite: _DV/Structures/Storage/Crates/livestock_secure.rsi
layers:
- state: base
- state: closed
map: ["enum.StorageVisualLayers.Door"]
- state: welded
visible: false
map: ["enum.WeldableLayers.BaseWelded"]
- state: locked
map: ["enum.LockVisualLayers.Lock"]
shader: unshaded
- state: paper
sprite: Structures/Storage/Crates/labels.rsi
offset: "-0.25,0.625"
map: ["enum.PaperLabelVisuals.Layer"]
- type: Construction
graph: CrateLivestockSecure
node: cratelivestocksteelsecure
containers:
- entity_storage
- type: StaticPrice
price: 500
- type: entity
parent: CrateLivestockSecure
id: CrateLivestockSecureReinforced
name: reinforced secure plasteel livestock crate
components:
- type: Icon
sprite: _DV/Structures/Storage/Crates/livestock_reinforced.rsi
state: icon
- type: Sprite
sprite: _DV/Structures/Storage/Crates/livestock_reinforced.rsi
layers:
- state: base
- state: closed
map: ["enum.StorageVisualLayers.Door"]
- state: welded
visible: false
map: ["enum.WeldableLayers.BaseWelded"]
- state: locked
map: ["enum.LockVisualLayers.Lock"]
shader: unshaded
- state: paper
sprite: Structures/Storage/Crates/labels.rsi
offset: "-0.25,0.625"
map: ["enum.PaperLabelVisuals.Layer"]
- type: Damageable
damageContainer: StructuralInorganic
damageModifierSet: StructuralMetallicStrong
- type: Destructible
thresholds:
- trigger:
!type:DamageTrigger
damage: 150
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- trigger:
!type:DamageTrigger
damage: 75
behaviors:
- !type:PlaySoundBehavior
sound:
collection: MetalBreak
- type: Appearance
- type: DamageVisuals
thresholds: [75]
trackAllDamage: true
damageOverlay:
sprite: _DV/Structures/Storage/Crates/livestock_reinforced.rsi
- type: Construction
graph: CrateLivestockSecure
node: cratelivestocksecurereinforced
containers:
- entity_storage
- type: StaticPrice
price: 800

View File

@ -0,0 +1,87 @@
- type: constructionGraph
id: CrateLivestockSecure
start: start
graph:
- node: start
edges:
- to: cratelivestocksteel
steps:
- material: Plasteel
amount: 5
doAfter: 5
- tool: Welding
doAfter: 5
- node: cratelivestocksteel
entity: CrateLivestockSteel
edges:
- to: cratelivestocksteelsecure
steps:
- material: Plasteel
amount: 1
- material: Cable
amount: 2
doAfter: 5
- tool: Screwing
doAfter: 5
- to: start
steps:
- tool: Welding
doAfter: 5
conditions:
- !type:StorageWelded
welded: false
completed:
- !type:SpawnPrototype
prototype: SheetPlasteel1
amount: 5
- !type:EmptyAllContainers
- !type:DeleteEntity
- node: cratelivestocksteelsecure
entity: CrateLivestockSecure
edges:
- to: cratelivestocksecurereinforced
steps:
- material: Plasteel
amount: 6
- tool: Screwing
doAfter: 5
- to: cratelivestocksteel
steps:
- tool: Screwing
doAfter: 5
conditions:
- !type:StorageWelded
welded: false
- !type:Locked
locked: false
completed:
- !type:SpawnPrototype
prototype: SheetPlasteel1
amount: 1
- !type:SpawnPrototype
prototype: CableApcStack1
amount: 2
- !type:DeleteEntity
- node: cratelivestocksecurereinforced
entity: CrateLivestockSecureReinforced
edges:
- to: cratelivestocksteelsecure
steps:
- tool: Screwing
doAfter: 5
conditions:
- !type:StorageWelded
welded: false
- !type:Locked
locked: false
completed:
- !type:SpawnPrototype
prototype: SheetPlasteel1
amount: 6
- !type:DeleteEntity

View File

@ -0,0 +1,32 @@
- type: construction
name: steel livestock crate
id: CrateLivestockSteel
graph: CrateLivestockSecure
startNode: start
targetNode: cratelivestocksteel
category: construction-category-storage
description: A plasteel crate for holding livestock.
icon: { sprite: _DV/Structures/Storage/Crates/livestock_steel.rsi, state: icon }
objectType: Structure
- type: construction
name: secure steel livestock crate
id: CrateLivestockSecure
graph: CrateLivestockSecure
startNode: cratelivestocksteel
targetNode: cratelivestocksteelsecure
category: construction-category-storage
description: A lockable plasteel crate for holding livestock.
icon: { sprite: _DV/Structures/Storage/Crates/livestock_secure.rsi, state: icon }
objectType: Structure
- type: construction
name: reinforced secured steel livestock crate
id: CrateLivestockReinforced
graph: CrateLivestockSecure
startNode: cratelivestocksteelsecure
targetNode: cratelivestocksecurereinforced
category: construction-category-storage
description: A reinforced and lockable plasteel crate for holding livestock.
icon: { sprite: _DV/Structures/Storage/Crates/livestock_reinforced.rsi, state: icon }
objectType: Structure

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

@ -0,0 +1,48 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from YogStation at commit https://github.com/yogstation13/Yogstation/commit/fa832b902f5130c41b21973e7e8b60b4d7a795b4 and modified by Velcroboy",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "base"
},
{
"name": "closed"
},
{
"name": "open"
},
{
"name": "welded"
},
{
"name": "sparking",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "locked"
},
{
"name": "unlocked"
},
{
"name": "DamageOverlay_75"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

View File

@ -0,0 +1,45 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from YogStation at commit https://github.com/yogstation13/Yogstation/commit/fa832b902f5130c41b21973e7e8b60b4d7a795b4 and modified by Velcroboy",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "base"
},
{
"name": "closed"
},
{
"name": "open"
},
{
"name": "welded"
},
{
"name": "sparking",
"delays": [
[
0.1,
0.1,
0.1,
0.1,
0.1,
0.1
]
]
},
{
"name": "locked"
},
{
"name": "unlocked"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,26 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from YogStation at commit https://github.com/yogstation13/Yogstation/commit/fa832b902f5130c41b21973e7e8b60b4d7a795b4 and modified by Velcroboy",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "base"
},
{
"name": "closed"
},
{
"name": "open"
},
{
"name": "welded"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B