public ArenaTeam GetPlayerTeam() { if (m_Player == null) { return(null); } ArenaTeam arenaTeam = null; if (!ArenaMatch.IsValidArenaMatch(m_ArenaMatch, null, false)) { return(null); } foreach (ArenaTeam team in m_ArenaMatch.m_Teams) { if (team == null) { continue; } if (team.Deleted) { continue; } if (team.GetPlayerParticipant(m_Player) != null) { return(team); } } return(arenaTeam); }
protected override void OnTick() { if (m_ArenaGroupController == null) { Stop(); return; } if (m_ArenaGroupController.Deleted) { Stop(); return; } if (!m_ArenaGroupController.Enabled) { Stop(); return; } if (DateTime.UtcNow >= m_ArenaGroupController.m_NextListingAudit) { m_ArenaGroupController.AuditListings(); } ArenaController emptyArena = m_ArenaGroupController.GetAvailableArena(); if (emptyArena != null) { foreach (ArenaMatch arenaMatch in m_ArenaGroupController.m_MatchListings) { if (!ArenaMatch.IsValidArenaMatch(arenaMatch, null, false)) { continue; } if (DateTime.UtcNow < arenaMatch.m_NextReadyCheck) { continue; } if (!arenaMatch.IsReadyToStart()) { continue; } List <KeyValuePair <PlayerMobile, ArenaRuleset.ArenaRulesetFailureType> > m_RulesetViolations = new List <KeyValuePair <PlayerMobile, ArenaRuleset.ArenaRulesetFailureType> >(); bool rulesetViolationExists = false; foreach (ArenaTeam arenaTeam in arenaMatch.m_Teams) { if (arenaTeam == null) { continue; } if (arenaTeam.Deleted) { continue; } foreach (ArenaParticipant arenaParticipant in arenaTeam.m_Participants) { if (arenaParticipant == null) { continue; } if (arenaParticipant.Deleted) { continue; } if (arenaParticipant.m_Player == null) { continue; } if (arenaParticipant.Deleted == null) { continue; } if (arenaMatch.m_Ruleset == null) { continue; } ArenaRuleset.ArenaRulesetFailureType rulesetFailure = arenaMatch.m_Ruleset.CheckForRulesetViolations(arenaMatch, arenaParticipant.m_Player); m_RulesetViolations.Add(new KeyValuePair <PlayerMobile, ArenaRuleset.ArenaRulesetFailureType>(arenaParticipant.m_Player, rulesetFailure)); if (rulesetFailure != ArenaRuleset.ArenaRulesetFailureType.None) { rulesetViolationExists = true; } } } if (rulesetViolationExists) { arenaMatch.BroadcastMessage("Unable to start match due to the following ruleset violations:", 0); bool arenaError = false; foreach (KeyValuePair <PlayerMobile, ArenaRuleset.ArenaRulesetFailureType> rulesetViolation in m_RulesetViolations) { string message = ""; PlayerMobile player = rulesetViolation.Key; ArenaRuleset.ArenaRulesetFailureType rule = rulesetViolation.Value; if (player == null) { continue; } switch (rulesetViolation.Value) { case ArenaRuleset.ArenaRulesetFailureType.ArenaInvalid: arenaError = true; break; case ArenaRuleset.ArenaRulesetFailureType.Dead: message = player.RawName + ": Not Alive"; break; case ArenaRuleset.ArenaRulesetFailureType.EquipmentAllowed: message = player.RawName + ": Has Restricted Equipment (worn or in backpack)"; break; case ArenaRuleset.ArenaRulesetFailureType.Follower: message = player.RawName + ": Exceeds Follower Control Slots Allowed"; break; case ArenaRuleset.ArenaRulesetFailureType.PackAnimal: message = player.RawName + ": Pack Animals Not Allowed"; break; case ArenaRuleset.ArenaRulesetFailureType.Mount: message = player.RawName + ": Mounts Not Allowed"; break; case ArenaRuleset.ArenaRulesetFailureType.NotInArenaRegion: message = player.RawName + ": Outside of Arena Region"; break; case ArenaRuleset.ArenaRulesetFailureType.NotOnline: message = player.RawName + ": Not Online"; break; case ArenaRuleset.ArenaRulesetFailureType.PoisonedWeapon: message = player.RawName + ": Exceeds Allowed Number of Poisoned Weapons"; break; case ArenaRuleset.ArenaRulesetFailureType.Transformed: message = player.RawName + ": Transformed or Disguised"; break; case ArenaRuleset.ArenaRulesetFailureType.Young: message = player.RawName + ": Young Status"; break; case ArenaRuleset.ArenaRulesetFailureType.NotEnoughArenaCredits: message = player.RawName + ": Insufficient Arena Credits"; break; } if (message != "") { arenaMatch.BroadcastMessage(message, 1256); } } if (arenaError) { arenaMatch.BroadcastMessage("Arena Configuration Error", 1256); } arenaMatch.m_NextReadyCheck = DateTime.UtcNow + ArenaMatch.ReadyCheckInterval; string timeRemaining = Utility.CreateTimeRemainingString(DateTime.UtcNow, arenaMatch.m_NextReadyCheck, false, true, true, true, true); arenaMatch.BroadcastMessage("Match will re-attempt to start in " + timeRemaining + ".", 0); } else { arenaMatch.m_MatchStatus = ArenaMatch.MatchStatusType.Fighting; ArenaFight arenaFight = new ArenaFight(); arenaFight.m_ArenaController = emptyArena; arenaFight.m_ArenaMatch = arenaMatch; arenaMatch.m_ArenaFight = arenaFight; emptyArena.m_ArenaFight = arenaFight; arenaFight.Initialize(); } } } }