public void CScoreReboundReq(GameSession session, CScoreReboundReqMessage message) { var plr = session.Player; var room = plr.Room; Player newPlr = null; Player oldPlr = null; if (message.NewId != 0) { newPlr = room.Players.GetValueOrDefault(message.NewId.AccountId); } if (message.OldId != 0) { oldPlr = room.Players.GetValueOrDefault(message.OldId.AccountId); } if (newPlr != null) { newPlr.RoomInfo.PeerId = message.NewId; } if (oldPlr != null) { oldPlr.RoomInfo.PeerId = message.OldId; } if (room.Options.MatchKey.GameRule == GameRule.Touchdown) { ((TouchdownGameRule)room.GameRuleManager.GameRule).OnScoreRebound(newPlr, oldPlr); } }
[Firewall(typeof(MustBeTimeState), GameTimeState.HalfTime, Invert = true)] // Must not be half time public Task <bool> OnHandle(MessageContext context, CScoreReboundReqMessage message) { var session = context.GetSession <Session>(); var plr = session.Player; var room = plr.Room; var newPlr = room.Players.GetValueOrDefault(message.NewId.AccountId); var oldPlr = room.Players.GetValueOrDefault(message.OldId.AccountId); room.GameRule.OnScoreFumbi(newPlr, oldPlr); return(Task.FromResult(true)); }