Skip to content

Action Frames Specification

neuront edited this page Feb 9, 2012 · 4 revisions

任何动作帧可以在其 react 函数中抛出如下异常表示传入了不恰当的参数.

  • KeyError: 缺少参数
  • ValueError: 参数错误

这些异常将在 core.src.game_control.GameControl.player_act 中被捕获, 并返回对应的错误信息.

动作帧需要实现 allowed_players 返回该帧允许响应的玩家 id 列表. 动作帧自己无须检测传入参数的玩家 token, token 检测由 core.src.GameControl.player_act 完成.

当一个动作帧从非栈顶变为栈顶时 (入栈时除外, 即, 从该帧开始靠近栈顶的帧都被弹出时), 帧的 resume 方法会被调用. 在基类 FrameBase 中, resume 实现为空函数.

内核动作帧

文件 core/src/action_frames.py

使用手牌 UseCards

构造参数

  • player: 出牌玩家
  • interface_map: 可用动作接口名到动作函数的映射

react 参数

  • token: 玩家 token
  • action: 动作
  • use (可选): 牌

on_result 参数: None.

resume: 若当前玩家死亡, 则终止出牌

打出手牌 PlayCards

构造参数

  • player: 需打出手牌的玩家 id
  • cards_check: 打出手牌验证函数

on_result 参数: 传入 react 的参数.

展示手牌 ShowCards

构造参数

  • player: 展示牌玩家
  • cards_check: 展示手牌验证函数

react 参数

  • token: 玩家 token
  • show: 展示的牌

on_result 参数: 传入 react 的参数.

弃置手牌 DiscardCards

构造参数

  • player: 弃牌玩家
  • cards_check: 弃置手牌验证函数

react 参数

  • token: 玩家 token
  • discard: 弃置的牌

on_result 参数: 传入 react 的参数.

接收消息 AcceptMessage

通常用于玩家只需决定是或否, 或从某些选项中选择一种, 而与卡牌和目标无关的消息接收.

构造参数

  • players: 允许发送消息的玩家列表
  • on_message: 接收到消息时执行的回调, 回调实参为传入 react 的参数

on_result 参数: 传入 react 的参数.

外围动作帧

文件 ext/src/players_control.py

顺序求桃 _RescueFrame

构造参数

  • who: 濒死的玩家
  • players: 求桃顺序的玩家列表
  • after_rescuing: 顺序求桃结束 (无论是否救回) 执行的无参回调

无需传入 on_result, 由 after_rescuing 替代之.

文件 ext/src/skills/heavenly_scent.py

询问天香 _AskHeavenlyScent

继承自 core.src.action_frames.DiscardCards.

构造参数

  • damage: 伤害

无需传入 on_result, 结束后恢复伤害结算.

文件 ext/src/skills/bequeathed_strategy.py

遗计分牌 _BequeathedStrategyTransferCards

构造参数

  • source: 发动遗计摸牌的玩家
  • cards: 遗计摸到的牌

无需传入 on_result, 结束后重置遗计摸到的牌的区域为手牌区 'cards'.

遗计受到伤害时 _BequeathedStrategyAfterDamage

构造参数

  • damage: 伤害

无需传入 on_result, 结束后恢复伤害结算.

react 函数.

resume 函数: 每次压入一个遗计分牌帧, 直到遗计摸牌的次数等于受到的伤害点数.

Clone this wiki locally