plutonium core steal objective (#26786)

* add textures

* add SealingCabinet system

* add StoreUnlocker/ObjectiveUnlock system

* add plutonium core and nuke core container

* make nuke deconstructable

* add steal core objective

* add core extraction toolbox to new category

* typo ops wrench fuel

* use queries and resolve, have it resolve instead of using Comp

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2024-06-29 04:11:31 +00:00
committed by GitHub
parent 1c66e1d27d
commit f6ce07289a
33 changed files with 497 additions and 20 deletions

View File

@@ -121,6 +121,19 @@
- id: ClothingHandsGlovesCombat
- id: ClothingMaskGasSyndicate
- type: entity
parent: ToolboxSyndicate
id: ToolboxSyndicateFilledCoreExtraction
suffix: Filled, Core Extraction
components:
- type: StorageFill
contents:
- id: Crowbar
- id: Welder
- id: Wrench
- id: ThinTippedScrewdriver
- id: NukeCoreContainer
- type: entity
id: ToolboxGoldFilled
name: golden toolbox

View File

@@ -1727,3 +1727,23 @@
blacklist:
components:
- SurplusBundle
# Objective-specific
- type: listing
id: UplinkCoreExtractionToolbox
name: uplink-core-extraction-toolbox-name
description: uplink-core-extraction-toolbox-desc
icon:
sprite: Objects/Misc/nuke_core_container.rsi
state: closed
productEntity: ToolboxSyndicateFilledCoreExtraction
categories:
- UplinkObjectives
conditions:
- !type:ObjectiveUnlockCondition
- !type:ListingLimitedStockCondition
stock: 1
- !type:BuyerWhitelistCondition
blacklist:
components:
- SurplusBundle

View File

@@ -0,0 +1,63 @@
- type: entity
parent: BaseItem
id: PlutoniumCore
name: plutonium core
description: Extremely radioactive, even looking at this with the naked eye is dangerous.
components:
- type: Sprite
sprite: Objects/Misc/plutonium_core.rsi
state: icon
- type: StealTarget
stealGroup: PlutoniumCore
- type: RadiationSource
intensity: 4
slope: 1
- type: StaticPrice
price: 49000
- type: Tag
tags:
- PlutoniumCore
- type: entity
parent: [BaseItem, BaseItemCabinet]
id: NukeCoreContainer
name: nuke core container
description: Solid container for radioactive objects.
components:
- type: Sprite
sprite: Objects/Misc/nuke_core_container.rsi
layers:
- state: closed
map: [ "enum.OpenableVisuals.Layer" ]
- state: core_closed
map: [ "enum.ItemCabinetVisuals.Layer" ]
visible: false
shader: unshaded
- type: Item
size: Normal
shape:
- 0,0,1,1
- type: RadiationBlockingContainer
resistance: 4
- type: SealingCabinet
sealedPopup: nuke-core-container-sealed-popup
- type: ItemSlots
slots:
ItemCabinet:
whitelist:
tags:
- PlutoniumCore
whitelistFailPopup: nuke-core-container-whitelist-fail-popup
- type: GenericVisualizer
visuals:
enum.OpenableVisuals.Opened:
enum.OpenableVisuals.Layer:
True: { state: open }
False: { state: closed }
enum.ItemCabinetVisuals.Layer:
True: { state: core_open }
False: { state: core_closed }
enum.ItemCabinetVisuals.ContainsItem:
enum.ItemCabinetVisuals.Layer:
True: { visible: true }
False: { visible: false }

View File

@@ -0,0 +1,10 @@
- type: entity
parent: Screwdriver
id: ThinTippedScrewdriver
description: A screwdriver with an ultra thin tip that's carefully designed to boost screwing speed.
suffix: DO NOT MAP
components:
- type: Tool
qualities:
- Screwing
- FineScrewing

View File

@@ -1,8 +1,8 @@
- type: entity
abstract: true
parent: [BaseStructure, StructureWheeled]
id: NuclearBomb
id: BaseNuclearBomb
name: nuclear fission explosive
description: You probably shouldn't stick around to see if this is armed.
components:
- type: Transform
anchored: true
@@ -61,6 +61,23 @@
- MachineMask
layer:
- HalfWallLayer
- type: InteractionOutline
- type: CargoSellBlacklist
- type: ArrivalsBlacklist
- type: WarpPoint
follow: true
location: nuclear bomb
- type: StealTarget
stealGroup: NuclearBomb
- type: Construction
graph: NuclearBomb
deconstructionTarget: disarmed
- type: entity
parent: BaseNuclearBomb
id: NuclearBomb
description: You probably shouldn't stick around to see if this is armed.
components:
- type: PointLight
enabled: false
radius: 4
@@ -90,7 +107,6 @@
- NukeDisk
alertLevelOnActivate: delta
alertLevelOnDeactivate: green
- type: InteractionOutline
- type: ActivatableUI
key: enum.NukeUiKey.Key
- type: UserInterface
@@ -99,17 +115,12 @@
type: NukeBoundUserInterface
- type: StaticPrice
price: 50000 # YOU STOLE A NUCLEAR FISSION EXPLOSIVE?!
- type: CargoSellBlacklist
- type: ArrivalsBlacklist
- type: ItemSlots
- type: ContainerContainer
containers:
Nuke: !type:ContainerSlot
- type: StealTarget
stealGroup: NuclearBomb
- type: WarpPoint
follow: true
location: nuclear bomb
- type: Construction
node: nuke
- type: entity
parent: NuclearBomb
@@ -121,6 +132,17 @@
- type: Physics
bodyType: Dynamic
- type: entity
parent: BaseNuclearBomb
id: NuclearBombDisarmed
suffix: Disarmed
description: "You can clearly see that this can't be armed, given its lack of nuclear material."
components:
- type: StaticPrice
price: 1000 # fancy paperweight
- type: Construction
node: disarmed
- type: entity
parent: StorageTank
id: NuclearBombKeg

View File

@@ -14,7 +14,6 @@
CMOHyposprayStealObjective: 1
CMOCrewMonitorStealObjective: 1
RDHardsuitStealObjective: 1
NukeDiskStealObjective: 1
MagbootsStealObjective: 1
CorgiMeatStealObjective: 1
ClipboardStealObjective: 1
@@ -22,6 +21,8 @@
CaptainJetpackStealObjective: 0.5
HandTeleporterStealObjective: 0.5
SecretDocumentsStealObjective: 0.5
PlutoniumCoreStealObjective: 0.5
NukeDiskStealObjective: 0.25
- type: weightedRandom
id: TraitorObjectiveGroupKill

View File

@@ -84,6 +84,13 @@
sprite: Objects/Misc/nukedisk.rsi
state: icon
- type: stealTargetGroup
id: PlutoniumCore
name: plutonium core
sprite:
sprite: Objects/Misc/plutonium_core.rsi
state: icon
# Thief Collection
- type: stealTargetGroup

View File

@@ -293,3 +293,21 @@
- type: StealCondition
stealGroup: NukeDisk
owner: objective-condition-steal-station
# Station
- type: entity
noSpawn: true
parent: BaseTraitorStealObjective
id: PlutoniumCoreStealObjective
components:
- type: Objective
# its hard to steal and leaves evidence, but you can get away with it.
difficulty: 3.5
- type: NotCommandRequirement
- type: StealCondition
stealGroup: PlutoniumCore
owner: objective-condition-steal-nuclear-bomb
- type: StoreUnlocker
listings:
- UplinkCoreExtractionToolbox

View File

@@ -0,0 +1,79 @@
- type: constructionGraph
id: NuclearBomb
start: disarmed
graph:
- node: disarmed
entity: NuclearBombDisarmed
edges:
- to: core_exposed
steps:
- tag: PlutoniumCore
name: "a plutonium core"
icon:
sprite: Objects/Misc/plutonium_core.rsi
state: icon
doAfter: 1
- node: core_exposed
edges:
- to: disarmed
completed:
- !type:GivePrototype
prototype: PlutoniumCore
steps:
- tool: Prying
doAfter: 2
- to: panel_removed
steps:
- material: Plasteel
amount: 8
doAfter: 2
- tool: Welding
doAfter: 4
- node: panel_removed
edges:
- to: core_exposed
completed:
- !type:GivePrototype
prototype: SheetPlasteel1
amount: 8
steps:
- tool: Welding
doAfter: 6
- tool: Anchoring
doAfter: 2
- tool: Welding
doAfter: 8
- to: panel_exposed
steps:
- material: Plasteel
amount: 4
doAfter: 2
- tool: Welding
doAfter: 2
- node: panel_exposed
edges:
- to: panel_removed
completed:
- !type:GivePrototype
prototype: SheetPlasteel1
amount: 4
steps:
- tool: Welding
doAfter: 2
- tool: Prying
doAfter: 2
- to: nuke
steps:
- tool: FineScrewing
doAfter: 2
- node: nuke
entity: NuclearBomb
edges:
- to: panel_exposed
steps:
- tool: FineScrewing
doAfter: 2

View File

@@ -89,6 +89,11 @@
name: store-category-pointless
priority: 10
- type: storeCategory
id: UplinkObjectives
name: store-category-objectives
priority: 11
#revenant
- type: storeCategory
id: RevenantAbilities

View File

@@ -16,6 +16,7 @@
- UplinkWearables
- UplinkJob
- UplinkPointless
- UplinkObjectives
currencyWhitelist:
- Telecrystal
balance:

View File

@@ -1020,6 +1020,9 @@
- type: Tag
id: PlushieSharkPink
- type: Tag
id: PlutoniumCore
- type: Tag
id: Potato

View File

@@ -67,3 +67,11 @@
toolName: tool-quality-rolling-tool-name
spawn: RollingPin
icon: { sprite: Objects/Tools/rolling_pin.rsi, state: icon }
# do not give this to normal tools, its for nuke deconstruction
- type: tool
id: FineScrewing
name: tool-quality-fine-screwing
toolName: tool-quality-fine-screwing-tool-name
spawn: ThinTippedScrewdriver
icon: { sprite: Objects/Tools/screwdriver.rsi, state: screwdriver-map }