diff --git a/Content.Server/Kitchen/Components/MicrowaveComponent.cs b/Content.Server/Kitchen/Components/MicrowaveComponent.cs
index cb5e031004..11b2568050 100644
--- a/Content.Server/Kitchen/Components/MicrowaveComponent.cs
+++ b/Content.Server/Kitchen/Components/MicrowaveComponent.cs
@@ -43,7 +43,14 @@ namespace Content.Server.Kitchen.Components
/// For right now, I don't think any recipe cook time should be greater than 60 seconds.
///
[DataField("currentCookTimerTime"), ViewVariables(VVAccess.ReadWrite)]
- public uint CurrentCookTimerTime = 5;
+ public uint CurrentCookTimerTime = 0;
+
+ ///
+ /// The maximum number of seconds a microwave can be set to.
+ /// This is currently only used for validation and the client does not check this.
+ ///
+ [DataField("maxCookTime"), ViewVariables(VVAccess.ReadWrite)]
+ public uint MaxCookTime = 30;
///
/// The max temperature that this microwave can heat objects to.
diff --git a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs
index 86935163bb..ecf6fa58a8 100644
--- a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs
+++ b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs
@@ -479,15 +479,19 @@ namespace Content.Server.Kitchen.EntitySystems
UpdateUserInterfaceState(uid, component);
}
- private void OnSelectTime(EntityUid uid, MicrowaveComponent component, MicrowaveSelectCookTimeMessage args)
+ private void OnSelectTime(EntityUid uid, MicrowaveComponent comp, MicrowaveSelectCookTimeMessage args)
{
- if (!HasContents(component) || HasComp(uid) || !(TryComp(uid, out var apc) && apc.Powered))
+ if (!HasContents(comp) || HasComp(uid) || !(TryComp(uid, out var apc) && apc.Powered))
return;
- component.CurrentCookTimeButtonIndex = args.ButtonIndex;
- component.CurrentCookTimerTime = args.NewCookTime;
- _audio.PlayPvs(component.ClickSound, uid, AudioParams.Default.WithVolume(-2));
- UpdateUserInterfaceState(uid, component);
+ // some validation to prevent trollage
+ if (args.NewCookTime % 5 != 0 || args.NewCookTime > comp.MaxCookTime)
+ return;
+
+ comp.CurrentCookTimeButtonIndex = args.ButtonIndex;
+ comp.CurrentCookTimerTime = args.NewCookTime;
+ _audio.PlayPvs(comp.ClickSound, uid, AudioParams.Default.WithVolume(-2));
+ UpdateUserInterfaceState(uid, comp);
}
#endregion
}