blackout duration now adds up

This commit is contained in:
2026-10-23 23:54:18 +02:00
parent 498df86962
commit 94052573b3
4 changed files with 34 additions and 3 deletions
@@ -46,6 +46,7 @@ public sealed class InvisibilityItem : IItem
public string Id => "blind";
public string DisplayName => "Blackout";
// Stacks: a second Blackout adds its full duration to whatever is left.
public void Apply(ItemContext context) =>
context.Target.InvisibleUntil = Math.Max(context.Target.InvisibleUntil, context.Now + DurationSeconds);
context.Target.InvisibleUntil = Math.Max(context.Target.InvisibleUntil, context.Now) + DurationSeconds;
}
@@ -90,6 +90,36 @@ public class ItemTests
Assert.False(target.IsInvisible);
}
[Fact]
public void Blackout_durations_stack()
{
var target = CreatePlayer("b");
target.Start();
new InvisibilityItem().Apply(Context(target, target, now: 10));
new InvisibilityItem().Apply(Context(target, target, now: 12));
target.Update(0.01, 17.9);
Assert.True(target.IsInvisible);
target.Update(0.01, 18.1);
Assert.False(target.IsInvisible);
}
[Fact]
public void Blackout_after_expiry_starts_fresh()
{
var target = CreatePlayer("b");
target.Start();
new InvisibilityItem().Apply(Context(target, target, now: 10));
new InvisibilityItem().Apply(Context(target, target, now: 20));
target.Update(0.01, 23.9);
Assert.True(target.IsInvisible);
target.Update(0.01, 24.1);
Assert.False(target.IsInvisible);
}
[Fact]
public void Registry_contains_five_unique_items()
{