Skip to content

Commit

Permalink
make changes
Browse files Browse the repository at this point in the history
  • Loading branch information
WarMechanic committed Jul 5, 2024
1 parent 6aaf466 commit da4da16
Show file tree
Hide file tree
Showing 10 changed files with 59 additions and 8 deletions.
8 changes: 7 additions & 1 deletion Content.Server/Body/Systems/MetabolizerSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,11 @@ private void TryMetabolize(EntityUid uid, MetabolizerComponent meta, OrganCompon
}

var actualEntity = organ?.Body ?? solutionEntityUid.Value;
var ev = new TryMetabolizeReagent(reagent, proto, quantity);
RaiseLocalEvent(actualEntity, ref ev);

var args = new ReagentEffectArgs(actualEntity, uid, solution, proto, mostToRemove,
EntityManager, null, scale);
EntityManager, null, scale * ev.Scale, ev.QuantityMultiplier);

// do all effects, if conditions apply
foreach (var effect in entry.Effects)
Expand Down Expand Up @@ -221,3 +224,6 @@ public sealed class ApplyMetabolicMultiplierEvent : EntityEventArgs
public bool Apply;
}
}

[ByRefEvent]
public record struct TryMetabolizeReagent(ReagentId Reagent, ReagentPrototype Prototype, FixedPoint2 Quantity, float Scale = 1f, float QuantityMultiplier = 1f);
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public override bool Condition(ReagentEffectArgs args)

var quant = FixedPoint2.Zero;
if (args.Source != null)
quant = args.Source.GetTotalPrototypeQuantity(reagent);
quant = args.Source.GetTotalPrototypeQuantity(reagent) * args.QuantityMultiplier;

return quant >= Min && quant <= Max;
}
Expand Down
2 changes: 1 addition & 1 deletion Content.Server/Chemistry/ReagentEffects/Drunk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public override void Effect(ReagentEffectArgs args)
{
var boozePower = BoozePower;

boozePower *= args.Scale;
boozePower *= Math.Max(args.Scale, 1);

var drunkSys = args.EntityManager.EntitySysManager.GetEntitySystem<SharedDrunkSystem>();
drunkSys.TryApplyDrunkenness(args.SolutionEntity, boozePower, SlurSpeech);
Expand Down
23 changes: 23 additions & 0 deletions Content.Server/Traits/Assorted/LightweightDrunkSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using Content.Server.Body.Components;
using Content.Server.Body.Systems;
using Content.Shared.Chemistry.Reagent;
using Content.Shared.Traits.Assorted.Components;

namespace Content.Shared.Traits.Assorted.Systems;
public sealed class LightweightDrunkSystem : EntitySystem
{
public override void Initialize()
{
SubscribeLocalEvent<LightweightDrunkComponent, TryMetabolizeReagent>(OnTryMetabolizeReagent);
}

private void OnTryMetabolizeReagent(EntityUid uid, LightweightDrunkComponent comp, ref TryMetabolizeReagent args)
{
Log.Debug(args.Prototype.ID);
if (args.Prototype.ID != "Ethanol")
return;

args.Scale *= comp.BoozeStrengthMultiplier;
args.QuantityMultiplier *= comp.BoozeStrengthMultiplier;
}
}
3 changes: 2 additions & 1 deletion Content.Shared/Chemistry/Reagent/ReagentEffect.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ public readonly record struct ReagentEffectArgs(
FixedPoint2 Quantity,
IEntityManager EntityManager,
ReactionMethod? Method,
float Scale
float Scale = 1f,
float QuantityMultiplier = 1f
);
}
3 changes: 0 additions & 3 deletions Content.Shared/Drunk/DrunkSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ public void TryApplyDrunkenness(EntityUid uid, float boozePower, bool applySlur
if (!Resolve(uid, ref status, false))
return;

if (TryComp<LightweightDrunkComponent>(uid, out var trait))
boozePower *= trait.BoozeStrengthMultiplier;

if (applySlur)
{
_slurredSystem.DoSlur(uid, TimeSpan.FromSeconds(boozePower), status);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ character-species-requirement = You must {$inverted ->
character-trait-requirement = You must {$inverted ->
[true] not have
*[other] have
} the trait [color=lightblue]{$trait}[/color]
} the trait [color=lightblue]{$traits}[/color]
character-backpack-type-requirement = You must {$inverted ->
[true] not use
*[other] use
Expand Down
3 changes: 3 additions & 0 deletions Resources/Locale/en-US/traits/traits.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ trait-description-Pacifist = You cannot attack or hurt any living beings.
trait-name-LightweightDrunk = Lightweight Drunk
trait-description-LightweightDrunk = Alcohol has a stronger effect on you
trait-name-HeavyweightDrunk = Heavyweight Drunk
trait-description-HeavyweightDrunk = Alcohols are afraid of you
trait-name-Muted = Muted
trait-description-Muted = You can't speak
Expand Down
4 changes: 4 additions & 0 deletions Resources/Prototypes/Traits/inconveniences.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
jobs:
- Borg
- MedicalBorg
- !type:CharacterTraitRequirement
inverted: true
traits:
- HeavyweightDrunk
components:
- type: LightweightDrunk
boozeStrengthMultiplier: 2
Expand Down
17 changes: 17 additions & 0 deletions Resources/Prototypes/Traits/skills.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
- type: trait
id: HeavyweightDrunk
category: Physical
points: -2
requirements:
- !type:CharacterJobRequirement
inverted: true
jobs:
- Borg
- MedicalBorg
- !type:CharacterTraitRequirement
inverted: true
traits:
- LightweightDrunk
components:
- type: LightweightDrunk
boozeStrengthMultiplier: 0.5

0 comments on commit da4da16

Please sign in to comment.