public void DuelRequestAccepted(Agent requesterAgent, Agent requesteeAgent) { MissionMultiplayerDuel.DuelInfo duel = this._duelRequests.FirstOrDefault <MissionMultiplayerDuel.DuelInfo>((Func <MissionMultiplayerDuel.DuelInfo, bool>)(dr => dr.RequesterAgent == requesterAgent && dr.RequesteeAgent == requesteeAgent)); if (duel == null) { return; } this.PrepareDuel(duel); }
private void EndDuel(MissionMultiplayerDuel.DuelInfo duel) { this._activeDuels.Remove(duel); if (!duel.Started) { return; } duel.OnDuelEnded(); this.DeactivateDuelTeam(duel.DuelTeam); }
private void StartDuel(MissionMultiplayerDuel.DuelInfo duel) { duel.OnDuelStarted(); duel.RequesterAgent.Health = duel.RequesterAgent.HealthLimit; duel.RequesteeAgent.Health = duel.RequesteeAgent.HealthLimit; duel.RequesterAgent.RestoreShieldHitPoints(); duel.RequesteeAgent.RestoreShieldHitPoints(); (duel.RequesterAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelStarted(duel.RequesterAgent, duel.RequesteeAgent); (duel.RequesteeAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelStarted(duel.RequesterAgent, duel.RequesteeAgent); }
private void CheckDuelRequestTimeouts() { for (int index = this._duelRequests.Count - 1; index >= 0; --index) { MissionMultiplayerDuel.DuelInfo duelRequest = this._duelRequests[index]; if (duelRequest.Timer.IsPast) { this._duelRequests.Remove(duelRequest); } } }
private void CheckDuelPreparations() { for (int index = this._activeDuels.Count - 1; index >= 0; --index) { MissionMultiplayerDuel.DuelInfo activeDuel = this._activeDuels[index]; if (!activeDuel.Started && activeDuel.Timer.IsPast) { this.StartDuel(activeDuel); } } }
private void PrepareDuel(MissionMultiplayerDuel.DuelInfo duel) { this._duelRequests.Remove(duel); if (this.IsHavingDuel(duel.RequesteeAgent) || this.IsHavingDuel(duel.RequesterAgent)) { return; } this._activeDuels.Add(duel); Team duelTeam = this.ActivateAndGetDuelTeam(); duel.OnDuelPreparation(duelTeam); (duel.RequesterAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelPreparation(duel.RequesterAgent, duel.RequesteeAgent); (duel.RequesteeAgent.MissionRepresentative as DuelMissionRepresentative).OnDuelPreparation(duel.RequesterAgent, duel.RequesteeAgent); }
public override void OnAgentRemoved( Agent affectedAgent, Agent affectorAgent, AgentState agentState, KillingBlow blow) { if (!affectedAgent.IsHuman) { return; } MissionMultiplayerDuel.DuelInfo duel = this._activeDuels.Where <MissionMultiplayerDuel.DuelInfo>((Func <MissionMultiplayerDuel.DuelInfo, bool>)(d => d.RequesteeAgent == affectedAgent || d.RequesterAgent == affectedAgent || d.RequesteeAgent == affectorAgent || d.RequesterAgent == affectorAgent)).FirstOrDefault <MissionMultiplayerDuel.DuelInfo>(); if (duel == null) { return; } this.EndDuel(duel); }