protected override Task OnPlayerRoundEvent(PlayerRoundEvent roundEvent) { if (rounds == null) { rounds = 5; } if (rounds < 0) { throw new InvalidOperationException(); } var player = (SimpleGamePlayer)roundEvent.Player; if (this is CurseEffect) { player.PlayerHost.WriteWarningMessage("你感到非常的虚弱,你吃了点儿药似乎好一点了,但是恐怕还会持续 {rounds} 个回合"); } else if (this is BlessEffect) { player.PlayerHost.WriteWarningMessage("你感到精力充沛,活力无限,不过好景不长,这一状态大概还会持续 {rounds} 个回合"); } if (rounds-- == 0) { player.Effects.RemoveEffect(this); } return(Task.CompletedTask); }
protected override Task OnPlayerRoundEvent(PlayerRoundEvent roundEvent) { var player = (SimpleGamePlayer)roundEvent.Player; roundEvent.DataBag.Confine = true; player.Effects.RemoveEffect(this); return(base.OnPlayerRoundEvent(roundEvent)); }
protected override Task OnPlayerRoundEvent(PlayerRoundEvent roundEvent) { var player = (SimpleGamePlayer)roundEvent.Player; if (Element == Element.木) { player.HealthPoint--; player.PlayerHost.WriteWarningMessage($"你身中奇毒未解,HP - 1,当前 HP: {player.HealthPoint}"); } else if (Element == Element.土) { if (random.Next(10) < 3) { roundEvent.DataBag.PlayInvalid = true; } } return(base.OnPlayerRoundEvent(roundEvent)); }
protected override Task OnPlayerRoundEvent(PlayerRoundEvent roundEvent) { var player = (SimpleGamePlayer)roundEvent.Player; if (Element == Element.木) { player.HealthPoint++; player.PlayerHost.WriteWarningMessage($"你感到前所未有的精力充沛,HP + 1,当前 HP: {player.HealthPoint}"); } else if (Element == Element.土) { if (random.Next(2) == 0) { player.ActionPoint = 2; } } return(base.OnPlayerRoundEvent(roundEvent)); }
/// <summary> /// 重写此方法进行游戏 /// </summary> /// <param name="roundEvent">玩家回合事件信息</param> /// <param name="token">取消标识</param> /// <returns>用于等待玩家操作完成的 Task 对象</returns> protected override async Task PlayCard(PlayerRoundEvent roundEvent, CancellationToken token) { { var list = secretMessages; secretMessages = new ConcurrentBag <GameMessage>(); foreach (var message in list) { PlayerHost.WriteMessage(message, true); } } if ((bool?)roundEvent.DataBag.Confine == true) { Game.AnnounceMessage($"只见 {PlayerName} 动弹不得,什么也做不了。"); PlayerHost.WriteMessage("您被禁锢一回合,无法出牌"); return; } ActionPoint = 1; DealCards(); await base.PlayCard(roundEvent, token); }
protected virtual Task OnPlayerRoundEvent(PlayerRoundEvent roundEvent) { return(Task.CompletedTask); }