PrevMaxVolume = solution.MaxVolume;
PrevOnlyAffectsMobs = _parent.Comp.OnlyAffectsMobs;
- var modeStringLocalized = Loc.GetString(_parent.Comp.OnlyAffectsMobs switch
+ var modeStringLocalized = Loc.GetString((_parent.Comp.OnlyAffectsMobs && _parent.Comp.CanContainerDraw) switch
{
false => "hypospray-all-mode-text",
true => "hypospray-mobs-only-mode-text",
private bool TryUseHypospray(Entity<HyposprayComponent> entity, EntityUid target, EntityUid user)
{
- // if target is ineligible but is a container, try to draw from the container
- if (!EligibleEntity(target, EntityManager, entity)
+ // if target is ineligible but is a container, try to draw from the container if allowed
+ if (entity.Comp.CanContainerDraw
+ && !EligibleEntity(target, EntityManager, entity)
&& _solutionContainers.TryGetDrawableSolution(target, out var drawableSolution, out _))
{
return TryDraw(entity, target, drawableSolution.Value, user);
/// <summary>
/// Decides whether you can inject everything or just mobs.
- /// When you can only affect mobs, you're capable of drawing from beakers.
/// </summary>
[AutoNetworkedField]
[DataField(required: true)]
public bool OnlyAffectsMobs = false;
+ /// <summary>
+ /// If this can draw from containers in mob-only mode.
+ /// </summary>
+ [AutoNetworkedField]
+ [DataField]
+ public bool CanContainerDraw = true;
+
/// <summary>
/// Whether or not the hypospray is able to draw from containers or if it's a single use
/// device that can only inject.
private void ToggleMode(Entity<HyposprayComponent> entity, EntityUid user)
{
SetMode(entity, !entity.Comp.OnlyAffectsMobs);
- string msg = entity.Comp.OnlyAffectsMobs ? "hypospray-verb-mode-inject-mobs-only" : "hypospray-verb-mode-inject-all";
+ string msg = (entity.Comp.OnlyAffectsMobs && entity.Comp.CanContainerDraw) ? "hypospray-verb-mode-inject-mobs-only" : "hypospray-verb-mode-inject-all";
_popup.PopupClient(Loc.GetString(msg), entity, user);
}