Hypo can inject solutions back into beakers (#19877)

* Inject to beakers

* Stop fighting in my pr

* Review
This commit is contained in:
Vasilis
2023-09-07 18:49:02 +02:00
committed by GitHub
parent 63c7bca04e
commit 2446c6a37b
3 changed files with 17 additions and 6 deletions

View File

@@ -19,5 +19,11 @@ namespace Content.Server.Chemistry.Components
[DataField("injectSound")]
public SoundSpecifier InjectSound = new SoundPathSpecifier("/Audio/Items/hypospray.ogg");
/// <summary>
/// Whether or not the hypo is able to inject only into mobs. On false you can inject into beakers/jugs
/// </summary>
[DataField("onlyMobs")]
public bool OnlyMobs = true;
}
}

View File

@@ -74,7 +74,7 @@ namespace Content.Server.Chemistry.EntitySystems
if (!Resolve(uid, ref component))
return false;
if (!EligibleEntity(target, _entMan))
if (!EligibleEntity(target, _entMan, component))
return false;
if (TryComp(uid, out UseDelayComponent? delayComp) && _useDelay.ActiveDelay(uid, delayComp))
@@ -84,7 +84,7 @@ namespace Content.Server.Chemistry.EntitySystems
if (target == user)
msgFormat = "hypospray-component-inject-self-message";
else if (EligibleEntity(user, _entMan) && _interaction.TryRollClumsy(user, component.ClumsyFailChance))
else if (EligibleEntity(user, _entMan, component) && _interaction.TryRollClumsy(user, component.ClumsyFailChance))
{
msgFormat = "hypospray-component-inject-self-clumsy-message";
target = user;
@@ -143,13 +143,15 @@ namespace Content.Server.Chemistry.EntitySystems
return true;
}
static bool EligibleEntity([NotNullWhen(true)] EntityUid? entity, IEntityManager entMan)
static bool EligibleEntity([NotNullWhen(true)] EntityUid? entity, IEntityManager entMan, HyposprayComponent component)
{
// TODO: Does checking for BodyComponent make sense as a "can be hypospray'd" tag?
// In SS13 the hypospray ONLY works on mobs, NOT beakers or anything else.
return entMan.HasComponent<SolutionContainerManagerComponent>(entity)
&& entMan.HasComponent<MobStateComponent>(entity);
// But this is 14, we dont do what SS13 does just because SS13 does it.
return component.OnlyMobs
? entMan.HasComponent<SolutionContainerManagerComponent>(entity) &&
entMan.HasComponent<MobStateComponent>(entity)
: entMan.HasComponent<SolutionContainerManagerComponent>(entity);
}
}
}

View File

@@ -18,6 +18,7 @@
- type: ExaminableSolution
solution: hypospray
- type: Hypospray
onlyMobs: false
- type: UseDelay
delay: 0.5
- type: StaticPrice
@@ -46,6 +47,7 @@
- type: ExaminableSolution
solution: hypospray
- type: Hypospray
onlyMobs: false
- type: UseDelay
delay: 0.5
@@ -330,6 +332,7 @@
- type: ExaminableSolution
solution: hypospray
- type: Hypospray
onlyMobs: false
- type: UseDelay
delay: 0.5
- type: StaticPrice # A new shitcurity meta