Donk co. microwave + microwave tweaks (#28951)
* THE syndie microwave * Always burn to explode microwave when copying * Make it so copying ids stop when the microwave is goign to explode * Made explosion destroy the board and spit out the machine parts * Move logic is MicrowaveSystem, make metal cooking use the same logic * Fix passing the wrong malfunction time * Shuttle cannot escape aggressive branding * Always make it explode with an id * Forgot to invert bool, move it after fry chance
@@ -9,6 +9,7 @@ using Content.Shared.Database;
|
|||||||
using Content.Shared.Popups;
|
using Content.Shared.Popups;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Random;
|
using Robust.Shared.Random;
|
||||||
|
using Content.Server.Kitchen.EntitySystems;
|
||||||
|
|
||||||
namespace Content.Server.Access.Systems;
|
namespace Content.Server.Access.Systems;
|
||||||
|
|
||||||
@@ -18,6 +19,7 @@ public sealed class IdCardSystem : SharedIdCardSystem
|
|||||||
[Dependency] private readonly IRobustRandom _random = default!;
|
[Dependency] private readonly IRobustRandom _random = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||||
|
[Dependency] private readonly MicrowaveSystem _microwave = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -27,12 +29,13 @@ public sealed class IdCardSystem : SharedIdCardSystem
|
|||||||
|
|
||||||
private void OnMicrowaved(EntityUid uid, IdCardComponent component, BeingMicrowavedEvent args)
|
private void OnMicrowaved(EntityUid uid, IdCardComponent component, BeingMicrowavedEvent args)
|
||||||
{
|
{
|
||||||
if (!component.CanMicrowave)
|
if (!component.CanMicrowave || !TryComp<MicrowaveComponent>(args.Microwave, out var micro) || micro.Broken)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (TryComp<AccessComponent>(uid, out var access))
|
if (TryComp<AccessComponent>(uid, out var access))
|
||||||
{
|
{
|
||||||
float randomPick = _random.NextFloat();
|
float randomPick = _random.NextFloat();
|
||||||
|
|
||||||
// if really unlucky, burn card
|
// if really unlucky, burn card
|
||||||
if (randomPick <= 0.15f)
|
if (randomPick <= 0.15f)
|
||||||
{
|
{
|
||||||
@@ -49,6 +52,14 @@ public sealed class IdCardSystem : SharedIdCardSystem
|
|||||||
EntityManager.QueueDeleteEntity(uid);
|
EntityManager.QueueDeleteEntity(uid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Explode if the microwave can't handle it
|
||||||
|
if (!micro.CanMicrowaveIdsSafely)
|
||||||
|
{
|
||||||
|
_microwave.Explode((args.Microwave, micro));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// If they're unlucky, brick their ID
|
// If they're unlucky, brick their ID
|
||||||
if (randomPick <= 0.25f)
|
if (randomPick <= 0.25f)
|
||||||
{
|
{
|
||||||
@@ -73,6 +84,7 @@ public sealed class IdCardSystem : SharedIdCardSystem
|
|||||||
|
|
||||||
_adminLogger.Add(LogType.Action, LogImpact.Medium,
|
_adminLogger.Add(LogType.Action, LogImpact.Medium,
|
||||||
$"{ToPrettyString(args.Microwave)} added {random.ID} access to {ToPrettyString(uid):entity}");
|
$"{ToPrettyString(args.Microwave)} added {random.ID} access to {ToPrettyString(uid):entity}");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,12 @@ namespace Content.Server.Kitchen.Components
|
|||||||
/// Chance of lightning occurring when we microwave a metallic object
|
/// Chance of lightning occurring when we microwave a metallic object
|
||||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
public float LightningChance = .75f;
|
public float LightningChance = .75f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If this microwave can give ids accesses without exploding
|
||||||
|
/// </summary>
|
||||||
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public bool CanMicrowaveIdsSafely = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public sealed class BeingMicrowavedEvent : HandledEntityEventArgs
|
public sealed class BeingMicrowavedEvent : HandledEntityEventArgs
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using Content.Server.Administration.Logs;
|
||||||
using Content.Server.Body.Systems;
|
using Content.Server.Body.Systems;
|
||||||
using Content.Server.Chemistry.Containers.EntitySystems;
|
using Content.Server.Chemistry.Containers.EntitySystems;
|
||||||
using Content.Server.Construction;
|
using Content.Server.Construction;
|
||||||
@@ -15,6 +16,7 @@ using Content.Shared.Body.Part;
|
|||||||
using Content.Shared.Chemistry.Components.SolutionManager;
|
using Content.Shared.Chemistry.Components.SolutionManager;
|
||||||
using Content.Shared.Chemistry.EntitySystems;
|
using Content.Shared.Chemistry.EntitySystems;
|
||||||
using Content.Shared.Construction.EntitySystems;
|
using Content.Shared.Construction.EntitySystems;
|
||||||
|
using Content.Shared.Database;
|
||||||
using Content.Shared.Destructible;
|
using Content.Shared.Destructible;
|
||||||
using Content.Shared.FixedPoint;
|
using Content.Shared.FixedPoint;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Interaction;
|
||||||
@@ -36,6 +38,7 @@ using System.Linq;
|
|||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Robust.Shared.Timing;
|
using Robust.Shared.Timing;
|
||||||
using Content.Shared.Stacks;
|
using Content.Shared.Stacks;
|
||||||
|
using Content.Server.Construction.Components;
|
||||||
|
|
||||||
namespace Content.Server.Kitchen.EntitySystems
|
namespace Content.Server.Kitchen.EntitySystems
|
||||||
{
|
{
|
||||||
@@ -61,6 +64,7 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
[Dependency] private readonly SharedItemSystem _item = default!;
|
[Dependency] private readonly SharedItemSystem _item = default!;
|
||||||
[Dependency] private readonly SharedStackSystem _stack = default!;
|
[Dependency] private readonly SharedStackSystem _stack = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||||
|
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||||
|
|
||||||
[ValidatePrototypeId<EntityPrototype>]
|
[ValidatePrototypeId<EntityPrototype>]
|
||||||
private const string MalfunctionSpark = "Spark";
|
private const string MalfunctionSpark = "Spark";
|
||||||
@@ -408,6 +412,23 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
return component.Storage.ContainedEntities.Any();
|
return component.Storage.ContainedEntities.Any();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Explodes the microwave internally, turning it into a broken state, destroying its board, and spitting out its machine parts
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ent"></param>
|
||||||
|
public void Explode(Entity<MicrowaveComponent> ent)
|
||||||
|
{
|
||||||
|
ent.Comp.Broken = true; // Make broken so we stop processing stuff
|
||||||
|
_explosion.TriggerExplosive(ent);
|
||||||
|
if (TryComp<MachineComponent>(ent, out var machine))
|
||||||
|
{
|
||||||
|
_container.CleanContainer(machine.BoardContainer);
|
||||||
|
_container.EmptyContainer(machine.PartContainer);
|
||||||
|
}
|
||||||
|
|
||||||
|
_adminLogger.Add(LogType.Action, LogImpact.Medium,
|
||||||
|
$"{ToPrettyString(ent)} exploded from unsafe cooking!");
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handles the attempted cooking of unsafe objects
|
/// Handles the attempted cooking of unsafe objects
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -425,7 +446,7 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
ent.Comp1.MalfunctionTime = _gameTiming.CurTime + TimeSpan.FromSeconds(ent.Comp2.MalfunctionInterval);
|
ent.Comp1.MalfunctionTime = _gameTiming.CurTime + TimeSpan.FromSeconds(ent.Comp2.MalfunctionInterval);
|
||||||
if (_random.Prob(ent.Comp2.ExplosionChance))
|
if (_random.Prob(ent.Comp2.ExplosionChance))
|
||||||
{
|
{
|
||||||
_explosion.TriggerExplosive(ent);
|
Explode((ent, ent.Comp2));
|
||||||
return; // microwave is fucked, stop the cooking.
|
return; // microwave is fucked, stop the cooking.
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -532,7 +553,8 @@ namespace Content.Server.Kitchen.EntitySystems
|
|||||||
activeComp.CookTimeRemaining = component.CurrentCookTimerTime * component.CookTimeMultiplier;
|
activeComp.CookTimeRemaining = component.CurrentCookTimerTime * component.CookTimeMultiplier;
|
||||||
activeComp.TotalTime = component.CurrentCookTimerTime; //this doesn't scale so that we can have the "actual" time
|
activeComp.TotalTime = component.CurrentCookTimerTime; //this doesn't scale so that we can have the "actual" time
|
||||||
activeComp.PortionedRecipe = portionedRecipe;
|
activeComp.PortionedRecipe = portionedRecipe;
|
||||||
component.CurrentCookTimeEnd = _gameTiming.CurTime + TimeSpan.FromSeconds(component.CurrentCookTimerTime);
|
//Scale tiems with cook times
|
||||||
|
component.CurrentCookTimeEnd = _gameTiming.CurTime + TimeSpan.FromSeconds(component.CurrentCookTimerTime * component.CookTimeMultiplier);
|
||||||
if (malfunctioning)
|
if (malfunctioning)
|
||||||
activeComp.MalfunctionTime = _gameTiming.CurTime + TimeSpan.FromSeconds(component.MalfunctionInterval);
|
activeComp.MalfunctionTime = _gameTiming.CurTime + TimeSpan.FromSeconds(component.MalfunctionInterval);
|
||||||
UpdateUserInterfaceState(uid, component);
|
UpdateUserInterfaceState(uid, component);
|
||||||
|
|||||||
@@ -10994,7 +10994,7 @@ entities:
|
|||||||
- type: Transform
|
- type: Transform
|
||||||
pos: 18.918644,6.663283
|
pos: 18.918644,6.663283
|
||||||
parent: 104
|
parent: 104
|
||||||
- proto: KitchenMicrowave
|
- proto: SyndicateMicrowave
|
||||||
entities:
|
entities:
|
||||||
- uid: 10
|
- uid: 10
|
||||||
components:
|
components:
|
||||||
|
|||||||
@@ -3607,7 +3607,7 @@ entities:
|
|||||||
- type: Transform
|
- type: Transform
|
||||||
pos: 3.5,-3.5
|
pos: 3.5,-3.5
|
||||||
parent: 1
|
parent: 1
|
||||||
- proto: KitchenMicrowave
|
- proto: SyndicateMicrowave
|
||||||
entities:
|
entities:
|
||||||
- uid: 497
|
- uid: 497
|
||||||
components:
|
components:
|
||||||
|
|||||||
@@ -105,3 +105,21 @@
|
|||||||
- type: GuideHelp
|
- type: GuideHelp
|
||||||
guides:
|
guides:
|
||||||
- Chef
|
- Chef
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: SyndicateMicrowave
|
||||||
|
parent: KitchenMicrowave
|
||||||
|
name: donk co. microwave
|
||||||
|
description: So advanced, it can cook donk-pockets in a mere 2.5 seconds!
|
||||||
|
components:
|
||||||
|
- type: Microwave
|
||||||
|
cookTimeMultiplier: 0.5
|
||||||
|
capacity: 10
|
||||||
|
canMicrowaveIdsSafely: false
|
||||||
|
explosionChance: 0.3
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Structures/Machines/microwave_syndie.rsi
|
||||||
|
drawdepth: SmallObjects
|
||||||
|
snapCardinals: true
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from /tg/station at commit 9065b811726ae52be5d1889f436c01a24efbf47a, edited by github user @Flareguy for Space Station 14, modified by Vermidia",
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "mw"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mw_unlit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mw0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mw_running_unlit"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mwb"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mwbloody0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mwbloody1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mwo"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 836 B |
|
After Width: | Height: | Size: 825 B |
|
After Width: | Height: | Size: 617 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 268 B |
|
After Width: | Height: | Size: 230 B |
|
After Width: | Height: | Size: 947 B |