public override void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget, LongPeerId scoreKiller, LongPeerId scoreAssist) { base.OnScoreKill(killer, assist, target, attackAttribute, scoreTarget, scoreKiller, scoreAssist); if (Room.TeamManager.Values.Any(team => team.Score >= Room.Options.ScoreLimit)) { return; } if (!ScoreIsPlaying()) { return; } if (!StateMachine.IsInState(GameRuleState.FirstHalf) && !StateMachine.IsInState(GameRuleState.SecondHalf)) { return; } if (scoreTarget.PeerId.Category == PlayerCategory.Player) { killer.RoomInfo.Team.Score++; } }
public void OnScoreDefense(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget, LongPeerId scoreKiller, LongPeerId scoreAssist) { var realplayerKiller = (killer?.RoomInfo.PeerId.EqualSlot(scoreKiller) ?? false) && killer.RoomInfo.PeerId.IsPlayer(); var realplayerTarget = (target?.RoomInfo.PeerId.EqualSlot(scoreTarget) ?? false) && target.RoomInfo.PeerId.IsPlayer(); var realplayerAssist = (assist?.RoomInfo.PeerId.EqualSlot(scoreAssist) ?? false) && assist.RoomInfo.PeerId.IsPlayer(); if (realplayerTarget) { Respawn(target); } if (!ScoreIsPlaying()) { return; } if (assist != null) { Room.Broadcast(new ScoreDefenseAssistAckMessage(new ScoreAssistDto(scoreKiller, scoreAssist, scoreTarget, attackAttribute))); } else { Room.Broadcast(new ScoreDefenseAckMessage(new ScoreDto(scoreKiller, scoreTarget, attackAttribute))); } }
public override void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget, LongPeerId scoreKiller, LongPeerId scoreAssist) { var realplayer = Room.TeamManager.Players.Where(p => p.RoomInfo.Slot == scoreTarget.PeerId.Slot && p.RoomInfo.PeerId == scoreTarget.PeerId && p.RoomInfo.PeerId.PeerId.Id == scoreTarget.PeerId.Id && p.RoomInfo.PeerId.AccountId == scoreTarget.AccountId && p.RoomInfo.PeerId.PeerId.Category == scoreTarget.PeerId.Category); if (realplayer.Any()) { Respawn(realplayer.First()); } if (scoreAssist != null) { Room.Broadcast( new ScoreKillAssistAckMessage(new ScoreAssistDto(scoreKiller, scoreAssist, scoreTarget, attackAttribute))); } else { Room.Broadcast( new ScoreKillAckMessage(new ScoreDto(scoreKiller, scoreTarget, attackAttribute))); } }
public virtual void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget = null, LongPeerId scoreKiller = null, LongPeerId scoreAssist = null) { killer.RoomInfo.Stats.Kills++; target.RoomInfo.Stats.Deaths++; // Player statistical record killer.stats.Kills++; target.stats.Deaths++; Respawn(target); if (assist != null) { assist.RoomInfo.Stats.KillAssists++; assist.stats.KillAssists++; Room.Broadcast( new ScoreKillAssistAckMessage(new ScoreAssistDto(killer.RoomInfo.PeerId, assist.RoomInfo.PeerId, target.RoomInfo.PeerId, attackAttribute))); } else { Room.Broadcast( new ScoreKillAckMessage(new ScoreDto(killer.RoomInfo.PeerId, target.RoomInfo.PeerId, attackAttribute))); } }
public void OnScoreGoal(Player plr, LongPeerId Target) { IsInTouchdownTraining = true; Player assist = null; //if (_TouchdownTrainingAssistHelper.IsAssist(plr)) //{ // assist = _TouchdownTrainingAssistHelper.LastPlayer; // GetRecord(assist).TDAssistScore++; //} plr.RoomInfo.Team.Score++; GetRecord(plr).TDScore++; if (assist != null) { Room.Broadcast(new ScoreGoalAssistAckMessage(Target, assist.RoomInfo.PeerId)); } else { Room.Broadcast(new ScoreGoalAckMessage(Target)); } var halfTime = TimeSpan.FromSeconds(Room.Options.TimeLimit.TotalSeconds / 2); var diff = halfTime - RoundTime; if (diff <= TimeSpan.FromSeconds(10)) // ToDo use const { return; } Room.Broadcast(new GameEventMessageAckMessage(GameEventMessage.NextRoundIn, (ulong)TouchdownTrainingWaitTime.TotalMilliseconds, 0, 0, "")); _TouchdownTrainingTime = TimeSpan.Zero; }
public virtual void OnScoreTeamKill(Player killer, Player target, AttackAttribute attackAttribute, LongPeerId scoreKiller, LongPeerId scoreTarget) { var realplayerTarget = (target?.RoomInfo.PeerId.EqualSlot(scoreTarget) ?? false) && target.RoomInfo.PeerId.IsPlayer(); if (realplayerTarget) { Respawn(target); } if (!ScoreIsPlaying()) { return; } if (realplayerTarget) { Respawn(target); target.RoomInfo.Stats.Deaths++; target.stats.Deaths++; } Room.Broadcast(new ScoreTeamKillAckMessage(new Score2Dto(scoreKiller, scoreTarget, attackAttribute))); }
//public override void OnScoreTeamKill(Player killer, Player target, AttackAttribute attackAttribute) //{ // if (_captainHelper.Dead(target) && _captainHelper.Any()) // SubRoundEnd(); // // GetRecord(target).Deaths++; // // base.OnScoreTeamKill(killer, target, attackAttribute); //} public override void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget = null, LongPeerId scoreKiller = null, LongPeerId scoreAssist = null) { if (_captainHelper.Dead(target)) { if (_captainHelper.Any()) { SubRoundEnd(); } GetRecord(killer).KillCaptains++; if (assist != null) { GetRecord(assist).KillAssistCaptains++; } } else { GetRecord(killer).Kills++; if (assist != null) { GetRecord(assist).KillAssists++; } } GetRecord(target).Deaths++; base.OnScoreKill(killer, null, target, attackAttribute); }
public override void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget, LongPeerId scoreKiller, LongPeerId scoreAssist) { base.OnScoreKill(killer, assist, target, attackAttribute, scoreTarget, scoreKiller, scoreAssist); if (!ScoreIsPlaying()) { return; } var realPlayer = (killer?.RoomInfo.PeerId.EqualSlot(scoreTarget) ?? false) && killer.RoomInfo.PeerId.IsPlayer(); if (realPlayer) { killer.RoomInfo.Team.Score++; } else { var enemyTeam = Room.TeamManager.FirstOrDefault(x => x.Key != Room.Master.RoomInfo.Team.Team); if (enemyTeam.Value != null) { enemyTeam.Value.Score++; } } }
public override void OnScoreSuicide(Player plr, LongPeerId scoreTarget = null) { if (_disallowactions) { return; } if (!_waitingNextChaser) { base.OnScoreSuicide(plr, scoreTarget); if (Chaser == plr) { ChaserLose(); } if (!ArePlayersAlive()) { ChaserWin(); } if (plr != Chaser) { plr.RoomInfo.State = PlayerState.Dead; } NextTarget(); } }
public void OnScoreGoal(Player plr, LongPeerId scoreTarget) { if (Room.TeamManager.Values.Any(team => team.Score >= Room.Options.ScoreLimit)) { return; } if (!ScoreIsPlaying()) { return; } IsInTouchdown = true; var realPlayer = (plr?.RoomInfo.PeerId.EqualSlot(scoreTarget) ?? false) && plr.RoomInfo.PeerId.IsPlayer(); var realPlayerAssist = (_lastPlayer?.RoomInfo.PeerId.EqualSlot(_lastOwner) ?? false) && _lastPlayer.RoomInfo.PeerId.IsPlayer(); if (realPlayer) { plr.RoomInfo.Team.Score++; GetRecord(plr).TDScore++; GetStats(plr).TD++; } var validTeam = false; if (realPlayerAssist && _lastPlayer.RoomInfo.Team != plr?.RoomInfo.Team) { var assist = _lastPlayer; GetRecord(assist).TDAssistScore++; GetStats(assist).TDAssist++; validTeam = true; } if (IsAssistValid && validTeam) { Room.Broadcast(new ScoreGoalAssistAckMessage(_ballOwner, _lastOwner)); } else { Room.Broadcast(new ScoreGoalAckMessage(_ballOwner)); } _ballOwner = 0; _lastOwner = 0; _lastPlayer = null; var halfTime = TimeSpan.FromSeconds(Room.Options.TimeLimit.TotalSeconds / 2); var diff = halfTime - RoundTime; if (diff <= TimeSpan.FromSeconds(10)) // ToDo use const { return; } Room.Broadcast(new GameEventMessageAckMessage(GameEventMessage.NextRoundIn, (ulong)TouchdownWaitTime.TotalMilliseconds, 0, 0, "")); _touchdownTime = TimeSpan.Zero; }
public void OnScoreDefense(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId Target, LongPeerId Killer, LongPeerId Assist) { if (IsInTouchdownTraining) { return; } var realplayer = Room.Players.Values.Where(p => p.RoomInfo.Slot == Target.PeerId.Slot && p.RoomInfo.PeerId == Target.PeerId && p.RoomInfo.PeerId.PeerId.Id == Target.PeerId.Id && p.RoomInfo.PeerId.AccountId == Target.AccountId && p.RoomInfo.PeerId.PeerId.Category == Target.PeerId.Category); if (realplayer.Any()) { Respawn(realplayer.First()); } //GetRecord(killer).DefenseScore++; //if (assist != null) // GetRecord(assist).DefenseAssistScore++; if (assist != null) { Room.Broadcast( new ScoreDefenseAssistAckMessage(new ScoreAssistDto(Killer, Assist, Target, attackAttribute))); } else { Room.Broadcast(new ScoreDefenseAckMessage(new ScoreDto(Killer, Target, attackAttribute))); } }
public void OnScoreRebound(Player newPlr, Player oldPlr, LongPeerId newid, LongPeerId oldId) { if (Room.TeamManager.Values.Any(team => team.Score >= Room.Options.ScoreLimit)) { return; } if (!ScoreIsPlaying()) { return; } if (oldPlr != null) { _lastPlayer = oldPlr; } if (newPlr != null) { GetRecord(newPlr).OffenseReboundScore++; GetStats(newPlr).OffenseRebound++; } _lastOwner = _ballOwner; _ballOwner = newid; LastTime = DateTime.Now; Room.Broadcast(new ScoreReboundAckMessage(newid, oldId)); }
public virtual void OnScoreHeal(Player plr, LongPeerId scoreTarget = null) { Room.Broadcast(new ScoreHealAssistAckMessage(plr.RoomInfo.PeerId)); // Statistical record plr.stats.Heal++; }
public override void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget, LongPeerId scoreKiller, LongPeerId scoreAssist) { base.OnScoreKill(killer, assist, target, attackAttribute, scoreTarget, scoreKiller, scoreAssist); if (!ScoreIsPlaying()) return; if (scoreTarget.PeerId.Category == PlayerCategory.Player) { var targetTeam = target?.RoomInfo?.Team; if (targetTeam != null && PlayersCaptain.TryRemove(target, out _)) { var killerTeam = killer?.RoomInfo?.Team; if (killerTeam != null) { GetRecord(killer).KillCaptains++; if (assist != null) GetRecord(assist).KillAssistCaptains++; } GetRecord(target).Deaths++; } else if (targetTeam != null) { GetRecord(killer).Kills++; if (assist != null) GetRecord(assist).KillAssists++; } } }
public ScoreAssist2Dto(LongPeerId killer, LongPeerId assist, LongPeerId target, AttackAttribute weapon) { Killer = killer; Assist = assist; Target = target; Weapon = weapon; }
public override void OnScoreSuicide(Player plr, LongPeerId Target = null) { if (Chaser == plr) { ChaserLose(); } base.OnScoreSuicide(plr); }
public override void OnScoreTeamKill(Player killer, Player target, AttackAttribute attackAttribute, LongPeerId scoreKiller, LongPeerId scoreTarget) { Respawn(Room.Creator); Room.Broadcast( new ScoreTeamKillAckMessage(new Score2Dto(scoreKiller, scoreTarget, attackAttribute))); }
public virtual void OnScoreSuicide(Player plr, LongPeerId scoreTarget = null) { Respawn(plr); plr.RoomInfo.Stats.Deaths++; // Statistical record plr.stats.Deaths++; Room.Broadcast(new ScoreSuicideAckMessage(plr.RoomInfo.PeerId, AttackAttribute.KillOneSelf)); }
public override void OnScoreSuicide(Player plr, LongPeerId Target = null) { if (IsInTouchdown) { return; } base.OnScoreSuicide(plr); }
public override void OnScoreHeal(Player plr, LongPeerId Target = null) { if (IsInTouchdown) { return; } GetRecord(plr).HealScore++; base.OnScoreHeal(plr); }
public override void OnScoreHeal(Player plr, LongPeerId Target) { if (IsInTouchdownTraining) { return; } Room.Broadcast(new ScoreHealAssistAckMessage(Target)); //base.OnScoreHeal(plr); }
public virtual void OnScoreTeamKill(Player killer, Player target, AttackAttribute attackAttribute, LongPeerId scoreKiller = null, LongPeerId scoreTarget = null) { target.RoomInfo.Stats.Deaths++; Respawn(target); Room.Broadcast( new ScoreTeamKillAckMessage(new Score2Dto(killer.RoomInfo.PeerId, target.RoomInfo.PeerId, attackAttribute))); }
public override void OnScoreTeamKill(Player killer, Player target, AttackAttribute attackAttribute, LongPeerId scoreKiller = null, LongPeerId scoreTarget = null) { if (IsInTouchdown) { return; } base.OnScoreTeamKill(killer, target, attackAttribute, scoreKiller, scoreTarget); }
public override void OnScoreSuicide(Player plr, LongPeerId Target) { if (IsInTouchdownTraining) { return; } Respawn(plr); Room.Broadcast(new ScoreSuicideAckMessage(Target, AttackAttribute.KillOneSelf)); //base.OnScoreSuicide(plr); }
public override void OnScoreSuicide(Player plr, LongPeerId scoreTarget) { if (_captainHelper.Dead(plr) && _captainHelper.Any()) { SubRoundEnd(); } GetPlayerRecord(plr).Suicides++; base.OnScoreSuicide(plr); }
public override void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget = null, LongPeerId scoreKiller = null, LongPeerId scoreAssist = null) { base.OnScoreKill(killer, assist, target, attackAttribute); if (scoreTarget.PeerId.Category != PlayerCategory.Player) { } else { killer.RoomInfo.Team.Score += 1; } }
public virtual void OnScoreKill(Player killer, Player assist, Player target, AttackAttribute attackAttribute, LongPeerId scoreTarget, LongPeerId scoreKiller, LongPeerId scoreAssist) { var realplayerKiller = (killer?.RoomInfo.PeerId.EqualSlot(scoreKiller) ?? false) && killer.RoomInfo.PeerId.IsPlayer(); var realplayerTarget = (target?.RoomInfo.PeerId.EqualSlot(scoreTarget) ?? false) && target.RoomInfo.PeerId.IsPlayer(); var realplayerAssist = (assist?.RoomInfo.PeerId.EqualSlot(scoreAssist) ?? false) && assist.RoomInfo.PeerId.IsPlayer(); if (realplayerTarget) { Respawn(target); } if (!ScoreIsPlaying()) { return; } if (realplayerKiller) { killer.RoomInfo.Stats.Kills++; killer.stats.Kills++; } if (realplayerTarget) { target.RoomInfo.Stats.Deaths++; target.stats.Deaths++; } if (realplayerAssist) { assist.RoomInfo.Stats.KillAssists++; assist.stats.KillAssists++; Room.Broadcast(new ScoreKillAssistAckMessage(new ScoreAssistDto(scoreKiller, scoreAssist, scoreTarget, attackAttribute))); } else { Room.Broadcast(new ScoreKillAckMessage(new ScoreDto(scoreKiller, scoreTarget, attackAttribute))); } if (killer.PlayerCoinBuff.FindBuff(BuffType.PEN).IsEnabled) { killer.LuckyShot.TryShot(LuckyShotType.PEN); } if (killer.PlayerCoinBuff.FindBuff(BuffType.EXP).IsEnabled) { killer.LuckyShot.TryShot(LuckyShotType.EXP); } }
public void OnScoreGoal(Player plr, LongPeerId scoreTarget) { if (!ScoreIsPlaying()) { return; } IsInTouchdown = true; var realPlayer = (plr?.RoomInfo.PeerId.EqualSlot(scoreTarget) ?? false) && plr.RoomInfo.PeerId.IsPlayer(); var realPlayerAssist = (_lastPlayer?.RoomInfo.PeerId.EqualSlot(_lastOwner) ?? false) && _lastPlayer.RoomInfo.PeerId.IsPlayer(); if (realPlayer) { plr.RoomInfo.Team.Score++; } else { var enemyTeam = Room.TeamManager.FirstOrDefault(x => x.Key != Room.Master.RoomInfo.Team.Team); if (enemyTeam.Value != null) { enemyTeam.Value.Score++; } } if (IsAssistValid) { Room.Broadcast(new ScoreGoalAssistAckMessage(_ballOwner, _lastOwner)); } else { Room.Broadcast(new ScoreGoalAckMessage(_ballOwner)); } _ballOwner = 0; _lastOwner = 0; _lastPlayer = null; var halfTime = TimeSpan.FromSeconds(Room.Options.TimeLimit.TotalSeconds / 2); var diff = halfTime - RoundTime; if (diff <= TimeSpan.FromSeconds(10)) // ToDo use const { return; } Room.Broadcast(new GameEventMessageAckMessage(GameEventMessage.NextRoundIn, (ulong)TouchdownWaitTime.TotalMilliseconds, 0, 0, "")); _touchdownTime = TimeSpan.Zero; }
public virtual void OnScoreHeal(Player plr, LongPeerId scorePlr) { if (!ScoreIsPlaying()) return; var realplayer = (plr?.RoomInfo.PeerId.EqualSlot(scorePlr) ?? false) && plr.RoomInfo.PeerId.IsPlayer(); if (realplayer) { plr.stats.Heal++; } Room.Broadcast(new ScoreHealAssistAckMessage(scorePlr)); }
public override void OnScoreSuicide(Player plr, LongPeerId scoreTarget) { var realplayer = Room.Players.Values.Where(p => p.RoomInfo.Slot == scoreTarget.PeerId.Slot && p.RoomInfo.PeerId == scoreTarget.PeerId && p.RoomInfo.PeerId.PeerId.Id == scoreTarget.PeerId.Id && p.RoomInfo.PeerId.AccountId == scoreTarget.AccountId && p.RoomInfo.PeerId.PeerId.Category == scoreTarget.PeerId.Category); if (realplayer.Any()) { Respawn(realplayer.First()); } Room.Broadcast(new ScoreSuicideAckMessage(scoreTarget, AttackAttribute.KillOneSelf)); //base.OnScoreSuicide(plr); }