public sealed class InstanceRunOne group's run through one instance.
Remarks
Doc 27's Instance shard kind with gameplay on top. What is here is the run: which difficulty, who is in it, how far they got, and what a wipe costs them.
⚠ The difficulty is chosen once and cannot change. A lockout is per (instance, difficulty), so a group that could switch halfway would have one lockout covering two — which is the shape of every "clear it on normal then swap to heroic" exploit.
⚠ A lockout is issued on the first defeat, not on entry. Somebody who walked in, saw the group fall apart and left has not used their week; somebody who killed the first boss has. It is issued once and extended never — a second kill on the same run must not push the reset out.
⚠ A wipe resets what was being fought and nothing else. A boss that is dead stays dead — that is what makes a raid night's progress progress — and Checkpoint says where to resume from. What a wipe costs is the attempt.
Fields and properties (8)
public Instance InstanceWhich instance.
public Difficulty DifficultyWhich difficulty. Fixed for the life of the run.
public IReadOnlyList<PlayerId> ParticipantsWho is in it.
public bool IsClearedWhether every fight is beaten.
public bool IsClosedWhether the run has been closed.
public int DefeatedHow many fights have been beaten.
public int CheckpointThe furthest checkpoint reached, or −1 for none.
public bool IsLockedWhether a lockout has been issued for this run.
Events (1)
public Action<int, EncounterStatus>? ChangedRaised whenever a fight changes state.
Methods (8)
public EncounterStatus StatusOf(int encounter)Where a fight is.
public int AttemptsOn(int encounter)How many times a fight has been tried.
public static InstanceRefusal CanEnter(Instance instance, string difficultyId, IReadOnlyList<PlayerId> party, ILockoutStore lockouts, double now, IRequirementContext? context = null)Whether a group may go, and why not.
public static InstanceRefusal Enter(Instance instance, string difficultyId, IReadOnlyList<PlayerId> party, ILockoutStore lockouts, double now, out InstanceRun? run, IRequirementContext? context = null)Starts a run.
public InstanceRefusal Engage(int encounter)Begins a fight.
public InstanceRefusal Defeat(int encounter, ILockoutStore lockouts, double now)Wins a fight, which may lock the group in.
public int Wipe()Everybody died. Whatever was being fought resets; whatever was beaten stays beaten.
public void Close()Closes the run. What the shard being retired does.
Used by (1)
- InstanceRunTestsVixen.Gameplay.Instances.Tests