public void TryBeginDuel(ArenaDuel duel) { if (PendingDuels.ContainsKey(duel)) { PendingDuels.Remove(duel); } if (CurrentDuel == null && BookedDuels.Count == 0) { CurrentDuel = duel; duel.DoPreDuel(); } else { BookedDuels.Add(duel); PVPArenaSystem.SendParticipantMessage(duel, 1115960); // There are currently no open arenas. Your duel session has been added to the booking queue. } }
public void Deserialize(GenericReader reader) { int version = reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { ArenaStats stats = new ArenaStats(reader); if (stats.Owner != null) { SurvivalRankings.Add(stats); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { ArenaStats stats = new ArenaStats(reader); if (stats.Owner != null) { TeamRankings.Add(stats); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { Item blocker = reader.ReadItem(); if (blocker != null) { Blockers.Add(blocker); } } Stone = reader.ReadItem() as ArenaStone; Manager = reader.ReadMobile() as ArenaManager; Banner1 = reader.ReadItem() as ArenaExitBanner; Banner2 = reader.ReadItem() as ArenaExitBanner; count = reader.ReadInt(); for (int i = 0; i < count; i++) { ArenaDuel duel = new ArenaDuel(reader, this); DateTime dt = reader.ReadDeltaTime(); PendingDuels[duel] = dt; } count = reader.ReadInt(); for (int i = 0; i < count; i++) { BookedDuels.Add(new ArenaDuel(reader, this)); } if (reader.ReadInt() == 1) { CurrentDuel = new ArenaDuel(reader, this); } if (Stone != null) { Stone.Arena = this; } if (Manager != null) { Manager.Arena = this; } if (Banner1 != null) { Banner1.Arena = this; } if (Banner2 != null) { Banner2.Arena = this; } if (version == 0) { foreach (var blocker in Blockers) { if (blocker != null) { blocker.Delete(); } } ColUtility.Free(Blockers); } }