/// <summary> /// 重写 OnTimeout 方法处理玩家超时。 /// </summary> /// <returns>用于等待处理完成的 Task 对象</returns> protected override Task OnTimeout() { Game.AnnounceMessage($"{PlayerName} 面临严峻的局面,陷入了深深地沉思,忽然天空中出现了一道惊雷,将其雷了个外焦里嫩。"); HealthPoint -= 1; PlayerHost.WriteWarningMessage($"操作超时,生命值减少 1 点,剩余生命值: {HealthPoint}"); return(Task.CompletedTask); }
/// <summary> /// 移除所有效果 /// </summary> /// <param name="positive">是否只移除正面效果,还是只移除负面效果,或者都移除</param> internal void Purify(bool?positive = null) { foreach (var effect in Effects) { if (positive == false && effect is IPositiveEffect) { continue; } if (positive == true && effect is INagativeEffect) { continue; } if (Effects.RemoveEffect(effect)) { PlayerHost.WriteWarningMessage("您当前的 {0} 效果已经被解除", effect.Name); } } }
/// <summary> /// 派生类重写此方法处理玩家操作超时。 /// </summary> /// <returns>用于等待处理完成的 Task 对象</returns> protected virtual Task OnTimeout() { PlayerHost.WriteWarningMessage("操作超时。"); Game.AnnounceMessage($"玩家 {PlayerName} 操作超时"); return(Task.CompletedTask); }
/// <summary> /// 禁锢玩家一个回合 /// </summary> internal void Confine() { PlayerHost.WriteWarningMessage("您被禁锢一个回合"); SetEffect(new ConfineEffect()); }