-
Notifications
You must be signed in to change notification settings - Fork 1
Stage 0.6: Generating hint for clients
Code review: https://github.com/neuront/sgs/commit/2f7404f1d16eafa7e6de4b277c1b9b704ec85470
服务端向客户端提供 hint 是为了防止客户端介入过于复杂的游戏逻辑. 客户端可以通过遵循服务器提供的 hint 为玩家提供可以操作的方式, 成为纯粹的表现层.
服务端提供 hint 应该包含下面这些信息
- 此时哪些玩家在响应
- 若此时你 (当前玩家) 需响应游戏, 那么
- 你可以执行哪些动作
- 你选择执行某个动作后, 可以选择的卡牌
- 你选择不同卡牌组合时, 可以选择的目标玩家
由动作帧提供 hint. 每个可能活动的帧对象应当提供方法 hint(self, token) 来返回 hint, 当传入的参数 token 对应的玩家是当前帧可响应玩家之一时, 则返回的 hint 应包含该玩家可用于响应的详细信息, 否则, 仅返回当前响应的玩家列表.
参见 hint 规格. https://github.com/neuront/sgs/wiki/Hint-Specification
简化了出牌接口, 现在, 出牌分为两种形式
-
use使用卡牌, 玩家需要指定卡牌和目标 -
discard弃置卡牌, 展示卡牌, 打出卡牌均使用此接口, 玩家仅指定卡牌, 不指定目标
实现了技能 [红颜].
完整实现了技能 [龙胆]: (增加效果: 你的 [杀] 可以作为 [闪] 打出, 你的 [闪] 可以作为 [杀] 使用).
进一步完善了技能 [武圣]: (增加效果: 你的红色手牌可以作为 [杀] 使用, 尚未实现: 你已装备的红色装备牌可以作为 [杀] 使用).
完整实现了 [丈八蛇矛]: (增加效果: 你可以使用 2 张手牌作为 [杀] 使用).
将卡牌极其动作进行分类, 如 [顺手牵羊] 属于 [非延时锦囊], 而 [非延时锦囊] 属于 [锦囊]. 详见 ext.src.category_hierarchy.
可以使用 [杀]. 每个出牌阶段限 1 次.
为玩家对象增加了卡牌属性转换锁定技接口.
如 [红颜] 需要的锁定技黑桃花色视为红桃花色, 在 ext.src.player.Player 中, 玩家的属性 card_suit_char 为一个函数, 接受卡牌作为参数, 返回花色. 在卡牌类型 core.src.card.Card 中, 卡牌的属性 base_suit 并不直接被结算过程使用, 而应该调用 suit() 成员函数, 根据牌的所有者对应的函数计算出卡牌的花色.
为玩家对象增加了其它在结算中需要用到的接口. 这些接口通常包含一个默认实现, 当玩家被赋予某个技能时, 该技能可以改写这些属性.
如技能 [奇才] 修改使用非延时锦囊距离时, 通过修改玩家的接口 range_char 来改变如 [顺手牵羊] 的距离.