blackout duration now adds up
This commit is contained in:
@@ -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()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user