Example #1
0
        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);
        }
Example #2
0
        protected override Task OnPlayerRoundEvent(PlayerRoundEvent roundEvent)
        {
            var player = (SimpleGamePlayer)roundEvent.Player;

            roundEvent.DataBag.Confine = true;
            player.Effects.RemoveEffect(this);


            return(base.OnPlayerRoundEvent(roundEvent));
        }
Example #3
0
        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));
        }
Example #4
0
        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);
 }