Revert "plutonium core steal objective" (#29578)
Revert "plutonium core steal objective (#26786)"
This reverts commit f6ce07289a.
@@ -1,14 +0,0 @@
|
|||||||
using Content.Shared.Store;
|
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
|
|
||||||
namespace Content.Server.Objectives.Components;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Unlocks store listings that use <see cref="ObjectiveUnlockCondition"/>.
|
|
||||||
/// </summary>
|
|
||||||
[RegisterComponent]
|
|
||||||
public sealed partial class StoreUnlockerComponent : Component
|
|
||||||
{
|
|
||||||
[DataField(required: true)]
|
|
||||||
public List<ProtoId<ListingPrototype>> Listings = new();
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
using Content.Server.Objectives.Components;
|
|
||||||
using Content.Shared.Mind;
|
|
||||||
|
|
||||||
namespace Content.Server.Objectives.Systems;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Provides api for listings with <c>ObjectiveUnlockRequirement</c> to use.
|
|
||||||
/// </summary>
|
|
||||||
public sealed class StoreUnlockerSystem : EntitySystem
|
|
||||||
{
|
|
||||||
private EntityQuery<StoreUnlockerComponent> _query;
|
|
||||||
|
|
||||||
public override void Initialize()
|
|
||||||
{
|
|
||||||
_query = GetEntityQuery<StoreUnlockerComponent>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns true if a listing id is unlocked by any objectives on a mind.
|
|
||||||
/// </summary>
|
|
||||||
public bool IsUnlocked(MindComponent mind, string id)
|
|
||||||
{
|
|
||||||
foreach (var obj in mind.Objectives)
|
|
||||||
{
|
|
||||||
if (!_query.TryComp(obj, out var comp))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (comp.Listings.Contains(id))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
using Content.Shared.Mind;
|
|
||||||
using Content.Shared.Store;
|
|
||||||
using Content.Server.Objectives.Systems;
|
|
||||||
|
|
||||||
namespace Content.Server.Store.Conditions;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Requires that the buyer have an objective that unlocks this listing.
|
|
||||||
/// </summary>
|
|
||||||
public sealed partial class ObjectiveUnlockCondition : ListingCondition
|
|
||||||
{
|
|
||||||
public override bool Condition(ListingConditionArgs args)
|
|
||||||
{
|
|
||||||
var minds = args.EntityManager.System<SharedMindSystem>();
|
|
||||||
if (!minds.TryGetMind(args.Buyer, out _, out var mind))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
var unlocker = args.EntityManager.System<StoreUnlockerSystem>();
|
|
||||||
return unlocker.IsUnlocked(mind, args.Listing.ID);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,17 +16,11 @@ public sealed class ItemCabinetSystem : EntitySystem
|
|||||||
[Dependency] private readonly OpenableSystem _openable = default!;
|
[Dependency] private readonly OpenableSystem _openable = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||||
|
|
||||||
private EntityQuery<ItemCabinetComponent> _cabinetQuery = default!;
|
|
||||||
private EntityQuery<ItemSlotsComponent> _slotsQuery = default!;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
_cabinetQuery = GetEntityQuery<ItemCabinetComponent>();
|
|
||||||
_slotsQuery = GetEntityQuery<ItemSlotsComponent>();
|
|
||||||
|
|
||||||
SubscribeLocalEvent<ItemCabinetComponent, ComponentStartup>(OnStartup);
|
SubscribeLocalEvent<ItemCabinetComponent, ComponentStartup>(OnStartup);
|
||||||
SubscribeLocalEvent<ItemCabinetComponent, MapInitEvent>(OnMapInit);
|
SubscribeLocalEvent<ItemCabinetComponent, MapInitEvent>(OnMapInit);
|
||||||
SubscribeLocalEvent<ItemCabinetComponent, EntInsertedIntoContainerMessage>(OnContainerModified);
|
SubscribeLocalEvent<ItemCabinetComponent, EntInsertedIntoContainerMessage>(OnContainerModified);
|
||||||
@@ -43,12 +37,12 @@ public sealed class ItemCabinetSystem : EntitySystem
|
|||||||
private void OnMapInit(Entity<ItemCabinetComponent> ent, ref MapInitEvent args)
|
private void OnMapInit(Entity<ItemCabinetComponent> ent, ref MapInitEvent args)
|
||||||
{
|
{
|
||||||
// update at mapinit to avoid copy pasting locked: true and locked: false for each closed/open prototype
|
// update at mapinit to avoid copy pasting locked: true and locked: false for each closed/open prototype
|
||||||
SetSlotLock((ent, ent.Comp), !_openable.IsOpen(ent));
|
SetSlotLock(ent, !_openable.IsOpen(ent));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateAppearance(Entity<ItemCabinetComponent> ent)
|
private void UpdateAppearance(Entity<ItemCabinetComponent> ent)
|
||||||
{
|
{
|
||||||
_appearance.SetData(ent, ItemCabinetVisuals.ContainsItem, HasItem((ent, ent.Comp)));
|
_appearance.SetData(ent, ItemCabinetVisuals.ContainsItem, HasItem(ent));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnContainerModified(EntityUid uid, ItemCabinetComponent component, ContainerModifiedMessage args)
|
private void OnContainerModified(EntityUid uid, ItemCabinetComponent component, ContainerModifiedMessage args)
|
||||||
@@ -59,24 +53,21 @@ public sealed class ItemCabinetSystem : EntitySystem
|
|||||||
|
|
||||||
private void OnOpened(Entity<ItemCabinetComponent> ent, ref OpenableOpenedEvent args)
|
private void OnOpened(Entity<ItemCabinetComponent> ent, ref OpenableOpenedEvent args)
|
||||||
{
|
{
|
||||||
SetSlotLock((ent, ent.Comp), false);
|
SetSlotLock(ent, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnClosed(Entity<ItemCabinetComponent> ent, ref OpenableClosedEvent args)
|
private void OnClosed(Entity<ItemCabinetComponent> ent, ref OpenableClosedEvent args)
|
||||||
{
|
{
|
||||||
SetSlotLock((ent, ent.Comp), true);
|
SetSlotLock(ent, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tries to get the cabinet's item slot.
|
/// Tries to get the cabinet's item slot.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool TryGetSlot(Entity<ItemCabinetComponent?> ent, [NotNullWhen(true)] out ItemSlot? slot)
|
public bool TryGetSlot(Entity<ItemCabinetComponent> ent, [NotNullWhen(true)] out ItemSlot? slot)
|
||||||
{
|
{
|
||||||
slot = null;
|
slot = null;
|
||||||
if (!_cabinetQuery.Resolve(ent, ref ent.Comp))
|
if (!TryComp<ItemSlotsComponent>(ent, out var slots))
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!_slotsQuery.TryComp(ent, out var slots))
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return _slots.TryGetSlot(ent, ent.Comp.Slot, out slot, slots);
|
return _slots.TryGetSlot(ent, ent.Comp.Slot, out slot, slots);
|
||||||
@@ -85,7 +76,7 @@ public sealed class ItemCabinetSystem : EntitySystem
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns true if the cabinet contains an item.
|
/// Returns true if the cabinet contains an item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasItem(Entity<ItemCabinetComponent?> ent)
|
public bool HasItem(Entity<ItemCabinetComponent> ent)
|
||||||
{
|
{
|
||||||
return TryGetSlot(ent, out var slot) && slot.HasItem;
|
return TryGetSlot(ent, out var slot) && slot.HasItem;
|
||||||
}
|
}
|
||||||
@@ -95,7 +86,7 @@ public sealed class ItemCabinetSystem : EntitySystem
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetSlotLock(Entity<ItemCabinetComponent> ent, bool closed)
|
public void SetSlotLock(Entity<ItemCabinetComponent> ent, bool closed)
|
||||||
{
|
{
|
||||||
if (!_slotsQuery.TryComp(ent, out var slots))
|
if (!TryComp<ItemSlotsComponent>(ent, out var slots))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_slots.TryGetSlot(ent, ent.Comp.Slot, out var slot, slots))
|
if (_slots.TryGetSlot(ent, ent.Comp.Slot, out var slot, slots))
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
using Robust.Shared.GameStates;
|
|
||||||
|
|
||||||
namespace Content.Shared.Cabinet;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Item cabinet that cannot be opened if it has an item inside.
|
|
||||||
/// The only way to open it after that is to emag it.
|
|
||||||
/// </summary>
|
|
||||||
[RegisterComponent, NetworkedComponent]
|
|
||||||
public sealed partial class SealingCabinetComponent : Component
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Popup shown when trying to open the cabinet once sealed.
|
|
||||||
/// </summary>
|
|
||||||
[DataField(required: true)]
|
|
||||||
public LocId SealedPopup = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Set to false to disable emag unsealing.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public bool Emaggable = true;
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
using Content.Shared.Emag.Systems;
|
|
||||||
using Content.Shared.Nutrition.Components;
|
|
||||||
using Content.Shared.Nutrition.EntitySystems;
|
|
||||||
using Content.Shared.Popups;
|
|
||||||
|
|
||||||
namespace Content.Shared.Cabinet;
|
|
||||||
|
|
||||||
public sealed class SealingCabinetSystem : EntitySystem
|
|
||||||
{
|
|
||||||
[Dependency] private readonly ItemCabinetSystem _cabinet = default!;
|
|
||||||
[Dependency] private readonly OpenableSystem _openable = default!;
|
|
||||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
|
||||||
|
|
||||||
public override void Initialize()
|
|
||||||
{
|
|
||||||
base.Initialize();
|
|
||||||
|
|
||||||
SubscribeLocalEvent<SealingCabinetComponent, OpenableOpenAttemptEvent>(OnOpenAttempt);
|
|
||||||
SubscribeLocalEvent<SealingCabinetComponent, GotEmaggedEvent>(OnEmagged);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnOpenAttempt(Entity<SealingCabinetComponent> ent, ref OpenableOpenAttemptEvent args)
|
|
||||||
{
|
|
||||||
if (!_cabinet.HasItem(ent.Owner))
|
|
||||||
return;
|
|
||||||
|
|
||||||
args.Cancelled = true;
|
|
||||||
if (args.User is {} user)
|
|
||||||
_popup.PopupClient(Loc.GetString(ent.Comp.SealedPopup, ("container", ent.Owner)), ent, user);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnEmagged(Entity<SealingCabinetComponent> ent, ref GotEmaggedEvent args)
|
|
||||||
{
|
|
||||||
if (!ent.Comp.Emaggable)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!_cabinet.HasItem(ent.Owner) || _openable.IsOpen(ent))
|
|
||||||
return;
|
|
||||||
|
|
||||||
_openable.SetOpen(ent, true);
|
|
||||||
|
|
||||||
args.Handled = true;
|
|
||||||
args.Repeatable = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
nuke-core-container-whitelist-fail-popup = That doesn't fit into the container.
|
|
||||||
nuke-core-container-sealed-popup = The {$container} is sealed shut!
|
|
||||||
@@ -4,7 +4,6 @@ objective-condition-steal-title = Steal the {$owner}'s {$itemName}.
|
|||||||
objective-condition-steal-description = We need you to steal {$itemName}. Don't get caught.
|
objective-condition-steal-description = We need you to steal {$itemName}. Don't get caught.
|
||||||
|
|
||||||
objective-condition-steal-station = station
|
objective-condition-steal-station = station
|
||||||
objective-condition-steal-nuclear-bomb = nuclear bomb
|
|
||||||
objective-condition-steal-Ian = head of personnel's corgi
|
objective-condition-steal-Ian = head of personnel's corgi
|
||||||
|
|
||||||
objective-condition-thief-description = The {$itemName} would be a great addition to my collection!
|
objective-condition-thief-description = The {$itemName} would be a great addition to my collection!
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ store-category-allies = Allies
|
|||||||
store-category-job = Job
|
store-category-job = Job
|
||||||
store-category-wearables = Wearables
|
store-category-wearables = Wearables
|
||||||
store-category-pointless = Pointless
|
store-category-pointless = Pointless
|
||||||
store-category-objectives = Objectives
|
|
||||||
|
|
||||||
# Revenant
|
# Revenant
|
||||||
store-category-abilities = Abilities
|
store-category-abilities = Abilities
|
||||||
|
|||||||
@@ -433,7 +433,3 @@ uplink-barber-scissors-desc = A good tool to give your fellow agent a nice hairc
|
|||||||
|
|
||||||
uplink-backpack-syndicate-name = Syndicate backpack
|
uplink-backpack-syndicate-name = Syndicate backpack
|
||||||
uplink-backpack-syndicate-desc = Lightweight explosion-proof а backpack for holding various traitor goods
|
uplink-backpack-syndicate-desc = Lightweight explosion-proof а backpack for holding various traitor goods
|
||||||
|
|
||||||
# Objectives
|
|
||||||
uplink-core-extraction-toolbox-name = Core Extraction Toolbox
|
|
||||||
uplink-core-extraction-toolbox-desc = A toolbox containing everything you need to remove a nuclear bomb's plutonium core. Instructions not included.
|
|
||||||
|
|||||||
@@ -32,7 +32,4 @@ tool-quality-rolling-name = Rolling
|
|||||||
tool-quality-rolling-tool-name = Rolling Pin
|
tool-quality-rolling-tool-name = Rolling Pin
|
||||||
|
|
||||||
tool-quality-digging-name = Digging
|
tool-quality-digging-name = Digging
|
||||||
tool-quality-digging-tool-name = Shovel
|
tool-quality-digging-tool-name = Shovel
|
||||||
|
|
||||||
tool-quality-fine-screwing-name = Fine Screwing
|
|
||||||
tool-quality-fine-screwing-tool-name = Thin-Tipped Screwdriver
|
|
||||||
@@ -121,19 +121,6 @@
|
|||||||
- id: ClothingHandsGlovesCombat
|
- id: ClothingHandsGlovesCombat
|
||||||
- id: ClothingMaskGasSyndicate
|
- 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
|
- type: entity
|
||||||
id: ToolboxGoldFilled
|
id: ToolboxGoldFilled
|
||||||
name: golden toolbox
|
name: golden toolbox
|
||||||
|
|||||||
@@ -1727,23 +1727,3 @@
|
|||||||
blacklist:
|
blacklist:
|
||||||
components:
|
components:
|
||||||
- SurplusBundle
|
- 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
|
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
- 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 }
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
- 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
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
abstract: true
|
|
||||||
parent: [BaseStructure, StructureWheeled]
|
parent: [BaseStructure, StructureWheeled]
|
||||||
id: BaseNuclearBomb
|
id: NuclearBomb
|
||||||
name: nuclear fission explosive
|
name: nuclear fission explosive
|
||||||
|
description: You probably shouldn't stick around to see if this is armed.
|
||||||
components:
|
components:
|
||||||
- type: Transform
|
- type: Transform
|
||||||
anchored: true
|
anchored: true
|
||||||
@@ -61,23 +61,6 @@
|
|||||||
- MachineMask
|
- MachineMask
|
||||||
layer:
|
layer:
|
||||||
- HalfWallLayer
|
- 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
|
- type: PointLight
|
||||||
enabled: false
|
enabled: false
|
||||||
radius: 4
|
radius: 4
|
||||||
@@ -107,6 +90,7 @@
|
|||||||
- NukeDisk
|
- NukeDisk
|
||||||
alertLevelOnActivate: delta
|
alertLevelOnActivate: delta
|
||||||
alertLevelOnDeactivate: green
|
alertLevelOnDeactivate: green
|
||||||
|
- type: InteractionOutline
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
key: enum.NukeUiKey.Key
|
key: enum.NukeUiKey.Key
|
||||||
- type: UserInterface
|
- type: UserInterface
|
||||||
@@ -115,12 +99,17 @@
|
|||||||
type: NukeBoundUserInterface
|
type: NukeBoundUserInterface
|
||||||
- type: StaticPrice
|
- type: StaticPrice
|
||||||
price: 50000 # YOU STOLE A NUCLEAR FISSION EXPLOSIVE?!
|
price: 50000 # YOU STOLE A NUCLEAR FISSION EXPLOSIVE?!
|
||||||
|
- type: CargoSellBlacklist
|
||||||
|
- type: ArrivalsBlacklist
|
||||||
- type: ItemSlots
|
- type: ItemSlots
|
||||||
- type: ContainerContainer
|
- type: ContainerContainer
|
||||||
containers:
|
containers:
|
||||||
Nuke: !type:ContainerSlot
|
Nuke: !type:ContainerSlot
|
||||||
- type: Construction
|
- type: StealTarget
|
||||||
node: nuke
|
stealGroup: NuclearBomb
|
||||||
|
- type: WarpPoint
|
||||||
|
follow: true
|
||||||
|
location: nuclear bomb
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: NuclearBomb
|
parent: NuclearBomb
|
||||||
@@ -132,17 +121,6 @@
|
|||||||
- type: Physics
|
- type: Physics
|
||||||
bodyType: Dynamic
|
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
|
- type: entity
|
||||||
parent: StorageTank
|
parent: StorageTank
|
||||||
id: NuclearBombKeg
|
id: NuclearBombKeg
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
CMOHyposprayStealObjective: 1
|
CMOHyposprayStealObjective: 1
|
||||||
CMOCrewMonitorStealObjective: 1
|
CMOCrewMonitorStealObjective: 1
|
||||||
RDHardsuitStealObjective: 1
|
RDHardsuitStealObjective: 1
|
||||||
|
NukeDiskStealObjective: 1
|
||||||
MagbootsStealObjective: 1
|
MagbootsStealObjective: 1
|
||||||
CorgiMeatStealObjective: 1
|
CorgiMeatStealObjective: 1
|
||||||
ClipboardStealObjective: 1
|
ClipboardStealObjective: 1
|
||||||
@@ -21,8 +22,6 @@
|
|||||||
CaptainJetpackStealObjective: 0.5
|
CaptainJetpackStealObjective: 0.5
|
||||||
HandTeleporterStealObjective: 0.5
|
HandTeleporterStealObjective: 0.5
|
||||||
SecretDocumentsStealObjective: 0.5
|
SecretDocumentsStealObjective: 0.5
|
||||||
PlutoniumCoreStealObjective: 0.5
|
|
||||||
NukeDiskStealObjective: 0.25
|
|
||||||
|
|
||||||
- type: weightedRandom
|
- type: weightedRandom
|
||||||
id: TraitorObjectiveGroupKill
|
id: TraitorObjectiveGroupKill
|
||||||
|
|||||||
@@ -84,13 +84,6 @@
|
|||||||
sprite: Objects/Misc/nukedisk.rsi
|
sprite: Objects/Misc/nukedisk.rsi
|
||||||
state: icon
|
state: icon
|
||||||
|
|
||||||
- type: stealTargetGroup
|
|
||||||
id: PlutoniumCore
|
|
||||||
name: plutonium core
|
|
||||||
sprite:
|
|
||||||
sprite: Objects/Misc/plutonium_core.rsi
|
|
||||||
state: icon
|
|
||||||
|
|
||||||
# Thief Collection
|
# Thief Collection
|
||||||
|
|
||||||
- type: stealTargetGroup
|
- type: stealTargetGroup
|
||||||
|
|||||||
@@ -293,21 +293,3 @@
|
|||||||
- type: StealCondition
|
- type: StealCondition
|
||||||
stealGroup: NukeDisk
|
stealGroup: NukeDisk
|
||||||
owner: objective-condition-steal-station
|
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
|
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
- 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
|
|
||||||
@@ -89,11 +89,6 @@
|
|||||||
name: store-category-pointless
|
name: store-category-pointless
|
||||||
priority: 10
|
priority: 10
|
||||||
|
|
||||||
- type: storeCategory
|
|
||||||
id: UplinkObjectives
|
|
||||||
name: store-category-objectives
|
|
||||||
priority: 11
|
|
||||||
|
|
||||||
#revenant
|
#revenant
|
||||||
- type: storeCategory
|
- type: storeCategory
|
||||||
id: RevenantAbilities
|
id: RevenantAbilities
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
- UplinkWearables
|
- UplinkWearables
|
||||||
- UplinkJob
|
- UplinkJob
|
||||||
- UplinkPointless
|
- UplinkPointless
|
||||||
- UplinkObjectives
|
|
||||||
currencyWhitelist:
|
currencyWhitelist:
|
||||||
- Telecrystal
|
- Telecrystal
|
||||||
balance:
|
balance:
|
||||||
|
|||||||
@@ -1020,9 +1020,6 @@
|
|||||||
- type: Tag
|
- type: Tag
|
||||||
id: PlushieSharkPink
|
id: PlushieSharkPink
|
||||||
|
|
||||||
- type: Tag
|
|
||||||
id: PlutoniumCore
|
|
||||||
|
|
||||||
- type: Tag
|
- type: Tag
|
||||||
id: Potato
|
id: Potato
|
||||||
|
|
||||||
|
|||||||
@@ -67,11 +67,3 @@
|
|||||||
toolName: tool-quality-rolling-tool-name
|
toolName: tool-quality-rolling-tool-name
|
||||||
spawn: RollingPin
|
spawn: RollingPin
|
||||||
icon: { sprite: Objects/Tools/rolling_pin.rsi, state: icon }
|
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 }
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 248 B |
|
Before Width: | Height: | Size: 461 B |
|
Before Width: | Height: | Size: 351 B |
|
Before Width: | Height: | Size: 285 B |
|
Before Width: | Height: | Size: 293 B |
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 1,
|
|
||||||
"license": "CC-BY-SA-3.0",
|
|
||||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/c34d56a45b0461f5e0fad3cc75e81580c3357119/icons/obj/antags/syndicate_tools.dmi",
|
|
||||||
"size": {
|
|
||||||
"x": 32,
|
|
||||||
"y": 32
|
|
||||||
},
|
|
||||||
"states": [
|
|
||||||
{
|
|
||||||
"name": "open"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "closed"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "core_open",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
2.3,
|
|
||||||
0.3,
|
|
||||||
0.3,
|
|
||||||
0.3
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "core_closed",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
2.3,
|
|
||||||
0.3,
|
|
||||||
0.3,
|
|
||||||
0.3
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inhand-left",
|
|
||||||
"directions": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "inhand-right",
|
|
||||||
"directions": 4
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 330 B |
|
Before Width: | Height: | Size: 386 B |
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 1,
|
|
||||||
"license": "CC-BY-SA-3.0",
|
|
||||||
"copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/c34d56a45b0461f5e0fad3cc75e81580c3357119/icons/obj/antags/syndicate_tools.dmi",
|
|
||||||
"size": {
|
|
||||||
"x": 32,
|
|
||||||
"y": 32
|
|
||||||
},
|
|
||||||
"states": [
|
|
||||||
{
|
|
||||||
"name": "icon",
|
|
||||||
"delays": [
|
|
||||||
[
|
|
||||||
2,
|
|
||||||
0.3,
|
|
||||||
0.3,
|
|
||||||
0.3,
|
|
||||||
0.3
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||