Syndicate sponge for uplink (#17841)

* Syndicate sponge for uplink

* Fix yaml error

* Made changes mentioned in review

* Made changes according to reviews
This commit is contained in:
Arendian
2023-07-09 21:24:30 +02:00
committed by GitHub
parent 618c5271d2
commit ec58d2e716
6 changed files with 125 additions and 6 deletions

View File

@@ -28,8 +28,8 @@ public sealed class RehydratableComponent : Component
/// <summary>
/// The entity to create when hydrated.
/// </summary>
[DataField("target", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>)), ViewVariables(VVAccess.ReadWrite)]
public string? TargetPrototype = default!;
[DataField("possibleSpawns"), ViewVariables(VVAccess.ReadWrite)]
public List<string> PossibleSpawns = new();
}
/// <summary>

View File

@@ -1,6 +1,7 @@
using Content.Server.Chemistry.Components;
using Content.Shared.FixedPoint;
using Content.Shared.Popups;
using Robust.Shared.Random;
namespace Content.Server.Chemistry.EntitySystems;
@@ -8,6 +9,7 @@ public sealed class RehydratableSystem : EntitySystem
{
[Dependency] private readonly SharedPopupSystem _popups = default!;
[Dependency] private readonly SolutionContainerSystem _solutions = default!;
[Dependency] private readonly IRobustRandom _random = default!;
public override void Initialize()
{
@@ -30,7 +32,10 @@ public sealed class RehydratableSystem : EntitySystem
{
_popups.PopupEntity(Loc.GetString("rehydratable-component-expands-message", ("owner", uid)), uid);
var target = Spawn(comp.TargetPrototype, Transform(uid).Coordinates);
var randomMob = _random.Pick(comp.PossibleSpawns);
var target = Spawn(randomMob, Transform(uid).Coordinates);
Transform(target).AttachToGridOrMap();
var ev = new GotRehydratedEvent(target);
RaiseLocalEvent(uid, ref ev);

View File

@@ -15,7 +15,7 @@ uplink-esword-name = Energy Sword
uplink-esword-desc = A very dangerous energy sword that can reflect shots. Can be stored in pockets when turned off. Makes a lot of noise when used or turned on.
uplink-esword-double-name = Double Bladed Energy Sword
uplink-esword-double-desc = A much more expensive counter part to the normal energy sword: with a much higher reflection chance, larger attack angle, higher structural damage, and faster swing, all at the cost of lower heat and slash damage. Makes a lot of noise when used or turned on.
uplink-esword-double-desc = A much more expensive counter part to the normal energy sword: with a much higher reflection chance, larger attack angle, higher structural damage, and faster swing, all at the cost of lower heat and slash damage. Makes a lot of noise when used or turned on.
uplink-edagger-name = Energy Dagger
uplink-edagger-desc = A small energy blade conveniently disguised in the form of a pen.
@@ -234,6 +234,9 @@ uplink-stimkit-desc = A medkit containing 6 stimulant microinjectors, which each
uplink-syndicate-segway-crate-name = Syndicate Segway
uplink-syndicate-segway-crate-desc = Be an enemy of the corporation, in style!
uplink-syndicate-sponge-box-name = Syndicate Sponge Box
uplink-syndicate-sponge-box-desc = A box containing 6 syndicate sponges disguised as monkey cubes, these cubes turn into a variety of angry wildlife after coming into contact with water.
# Pointless
uplink-revolver-cap-gun-name = Cap Gun
uplink-revolver-cap-gun-desc = Looks almost like the real thing! Ages 8 and up.

View File

@@ -926,6 +926,17 @@
components:
- SurplusBundle
- type: listing
id: UplinkSyndicateSpongeBox
name: uplink-syndicate-sponge-box-name
description: uplink-syndicate-sponge-box-desc
icon: { sprite: Objects/Misc/monkeycube.rsi, state: box}
productEntity: SyndicateSpongeBox
cost:
Telecrystal: 6
categories:
- UplinkMisc
# Pointless
- type: listing

View File

@@ -35,3 +35,42 @@
- type: Tag
tags:
- MonkeyCube
- type: entity
parent: BoxCardboard
name: monkey cube box
suffix: Syndicate
id: SyndicateSpongeBox
description: Drymate brand monkey cubes. Just add water!
components:
- type: Storage
whitelist:
tags:
- MonkeyCube
capacity: 30
- type: StorageFill
contents:
- id: SyndicateSpongeWrapped
amount: 6
- type: Sprite
sprite: Objects/Misc/monkeycube.rsi
state: box
- type: entity
parent: BaseItem
name: monkey cube
suffix: Wrapped, Syndicate
id: SyndicateSpongeWrapped
description: Unwrap this to get a monkey cube.
components:
- type: SpawnItemsOnUse
items:
- id: SyndicateSponge
sound:
path: /Audio/Effects/unwrap.ogg
- type: Sprite
sprite: Objects/Misc/monkeycube.rsi
state: wrapper
- type: Tag
tags:
- MonkeyCube

View File

@@ -26,7 +26,8 @@
- !type:AddToSolutionReaction
solution: cube
- type: Rehydratable
target: MobMonkey
possibleSpawns:
- MobMonkey
- type: CollisionWake
enabled: false
- type: Fixtures
@@ -69,7 +70,8 @@
- !type:AddToSolutionReaction
solution: plushie
- type: Rehydratable
target: MobCarp
possibleSpawns:
- MobCarp
- type: CollisionWake
enabled: false
- type: Physics
@@ -99,3 +101,62 @@
handle: false
sound:
path: /Audio/Effects/bite.ogg
- type: entity
parent: BaseItem
id: SyndicateSponge
name: monkey cube
suffix: Syndicate
description: Just add water!
components:
- type: SolutionContainerManager
solutions:
cube:
maxVol: 11 # needs room for water
reagents:
- ReagentId: Nutriment
Quantity: 10
- type: Food
solution: cube
- type: RefillableSolution
solution: cube
- type: Sprite
sprite: Objects/Misc/monkeycube.rsi
state: cube
- type: Reactive
reactions:
- reagents: [Water]
methods: [Touch, Ingestion, Injection]
effects:
- !type:AddToSolutionReaction
solution: cube
- type: Rehydratable
possibleSpawns:
- MobRatServant
- MobCarpHolo
- MobXenoRavager
- MobAngryBee
- MobAdultSlimesYellowAngry
- MobSpiderSpace
- MobBearSpace
- MobPurpleSnake
- MobKangarooSpace
- MobTick
- type: CollisionWake
enabled: false
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.3,-0.3,0.3,0.3"
density: 5
mask:
- ItemMask
rehydrate:
shape:
!type:PhysShapeAabb
bounds: "-0.3,-0.3,0.3,0.3"
hard: false
layer:
- LowImpassable