135 - API文档汉化 - 触发器与执行顺序
Updated 2 months ago触发器与执行顺序
本文面向需要了解不同情境下触发器调用顺序的模组开发者。
所提供的信息技术性较强且较为枯燥,默认读者已理解《邪恶冥刻》的代码运作机制。
触发器按调用顺序列出,首项为最先触发的触发器,末项为最后触发的触发器。
自定义触发器以字母I
开头并通过接口实现,其余为原版(Vanilla)触发器。
卡牌伤害
由PlayableCard.TakeDamage
、ShieldManager.TriggerBreakShield
和ShieldManager.BreakShield
处理。
带护盾的卡牌仅调用前四个列出的触发器。
触发器 | 附加说明 |
---|---|
IModifyDamageTaken |
将伤害值设置为返回值 |
IPreTakeDamage |
在护盾检查前调用 |
IShieldPreventedDamage |
仅当卡牌有护盾时调用 |
IShieldPreventedDamageInHand |
仅当卡牌有护盾时调用 作用于玩家手牌中的卡牌 |
OnTakeDamage |
作用于无护盾卡牌 |
OtherCardDealtDamage |
在 PlayableCard.Die 后调用 |
IOnOtherCardDealtDamageInHand |
作用于玩家手牌中的卡牌 |
卡牌死亡
由PlayableCard.Die
处理。
触发器 | 附加说明 |
---|---|
OnPreDeathAnimation |
|
OnOtherCardPreDeath |
|
IOnOtherCardPreDeathInHand |
作用于玩家手牌中的卡牌 |
OnOtherCardDie |
|
IOnOtherCardDieInHand |
作用于玩家手牌中的卡牌 |
抽卡
由PlayerHand.AddCardToHand
处理。
触发器 | 附加说明 |
---|---|
OnDrawn |
在卡牌加入cardsInHand 前调用 |
OnOtherCardDrawn |
在卡牌加入cardsInHand 前调用 |
IOnAddedToHand |
在卡牌加入cardsInHand 后调用 |
IOtherCardAddedToHand |
在卡牌加入cardsInHand 后调用 |
出牌
由BoardManager.TransitionAndResolveCreatedCard
、BoardManager.ResolveCardOnBoard
和BoardManager.AssignCardToSlot
处理。
触发器 | 附加说明 |
---|---|
OnOtherCardAssignedToSlot |
|
IOnCardAssignedToSlotContext |
提供新旧卡槽信息 |
IOnOtherCardAssignedToSlotInHand |
作用于玩家手牌中的卡牌 |
IOnCardAssignedToSlotNoResolve |
仅当分配卡牌已结算时调用 |
OnResolveOnBoard |
当卡牌从手牌或队列打出时调用 |
OnOtherCardResolve |
当卡牌从手牌或队列打出时调用 |
IOnOtherCardResolveInHand |
作用于玩家手牌中的卡牌 当卡牌从手牌或队列打出时调用 |
战斗阶段
由CombatPhaseManager.DoCombatPhase
、CombatPhaseManager.SlotAttackSequence
和CombatPhaseManager.SlotAttackSlot
处理。
每张攻击卡牌会调用SlotAttackSequence
,随后每次攻击行为调用SlotAttackSlot
。
触发器 | 附加说明 |
---|---|
IOnBellRun |
在DoCombatPhase 前调用 |
IOnPreSlotAttackSequence |
在SlotAttackSequence 前调用 |
IGetAttackingSlots |
将返回值加入当前攻击卡槽列表,可在方法内修改当前列表 |
ISetupAttackSequence |
用返回值替换当前目标卡槽列表 优先级为 ReplacesDefaultOpposingSlot |
IGetOpposingSlots |
将返回值加入当前目标卡槽列表,可在方法内修改当前列表 |
ISetupAttackSequence |
用返回值替换当前目标卡槽列表 优先级为 Normal |
ISetupAttackSequence |
用返回值替换当前目标卡槽列表 优先级为 BringsBackOpposingSlot |
ISetupAttackSequence |
用返回值替换当前目标卡槽列表 优先级为 PostAdditionModification |
OnSlotTargetedForAttack |
|
IModifyDirectDamage |
仅当造成直接伤害时调用 将伤害值设置为返回值 |
OnDealDamageDirectly |
|
IOnCardDealtDamageDirectly |
作用于场上所有卡牌 |
OnCardGettingAttacked |
仅当卡牌被攻击时调用 |
IPostCardGettingAttacked |
|
IOnPostSingularSlotAttackSlot |
在SlotAttackSlot 后调用 |
OnAttackEnded |
在所有卡牌完成攻击后调用 |
IOnPostSlotAttackSequence |
在SlotAttackSequence 后调用 |
消耗品
由ConsumableItemSlot.ConsumeItem
和各消耗品的ActivateSequence
处理。
触发器 | 附加说明 |
---|---|
IItemCanBeUsed |
可阻止物品使用 |
IOnItemPreventedFromUse |
当IItemCanBeUsed 阻止物品使用时调用 |
IOnPreItemUsed |
在ConsumeItem 和ActivateSequence 前调用 |
IOnPostItemUsed |
在 ConsumeItem 和ActivateSequence 后调用 |
被动属性增益
由PlayableCard.GetPassiveAttackBuffs
和PlayableCard.GetPassiveHealthBuffs
处理。
这些补丁每帧都会调用。
触发器 | 附加说明 |
---|---|
IOnCardPassiveAttackBuffs |
将攻击增益设置为返回值 |
IPassiveAttackBuffs |
将返回值累加到攻击增益 |
触发器 | 附加说明 |
---|---|
IOnCardPassiveHealthBuffs |
将生命增益设置为返回值 |
IPassiveHealthBuffs |
将返回值累加到生命增益 |
天平伤害
由LifeManager.ShowDamageSequence
处理。
触发器 | 附加说明 |
---|---|
IOnPreScalesChangedRef |
修改即将造成的伤害值与实体天平上的砝码 |
IOnPreScalesChanged |
在ShowDamageSequence 前调用 |
IOnPostScalesChanged |
在ShowDamageSequence 后调用 |
回合流程
由TurnManager.GameSequence
、TurnManager.PlayerTurn
、TurnManager.OpponentTurn
和TurnManager.DoUpkeepPhase
处理。
若对手回合被跳过,则不会调用其对应的触发器。
触发器 | 附加说明 |
---|---|
OnUpkeep |
|
IOnUpkeepInHand |
作用于玩家手牌中的卡牌 |
OnTurnEnd |
在DoCombatPhase 后调用 |
IOnTurnEndInQueue |
作用于对手队列中的卡牌 |
IOnTurnEndInHand |
作用于玩家手牌中的卡牌 |
Pages
- 0 - 邪恶冥刻模组简体中文语言包Wiki
- 100 - API文档汉化 - 首页
- 110 - API文档汉化 - 入门指南
- 120 - API文档汉化 - 卡牌
- 121 - API文档汉化 - 自定义卡牌费用系统
- 122 - API文档汉化 - 会说话的卡牌
- 123 - API文档汉化 - 自定义毛皮
- 130 - API文档汉化 - 能力
- 131 - API文档汉化 - 自定义触发器
- 132 - API文档汉化 - 自定义狙击逻辑
- 133 - API文档汉化 - 伤害护盾行为
- 134 - API文档汉化 - 卡槽修改功能
- 135 - API文档汉化 - 触发器与执行顺序
- 140 - API文档汉化 - 自定义/扩展属性
- 150 - API文档汉化 - 扬升(凯茜模组)
- 160 - API文档汉化 - 地图与遭遇战
- 170 - API文档汉化 - 对手
- 180 - API文档汉化 - 图腾
- 190 - API文档汉化 - 道具
- 1A0 - API文档汉化 - 规则书
- 1A1 - API文档汉化 - 添加自定义页面
- 1A2 - API文档汉化 - 添加文本重定向功能
- 1B0 - API文档汉化 - 本地化
- 1B0 - API文档汉化 - 声音
- 1B0 - API文档汉化 - 资产包
- 1C0 - API文档汉化 - 其他特性
- 200 - JSONLoader文档汉化 - Wiki
- 201 - JSONLoader文档汉化 - 枚举值
- A00-凯茜模组通用信息站汉化-首页
- A10-凯茜模组通用信息站汉化-安装
- A11-凯茜模组通用信息站汉化-技术支持常见问题
- A12-凯茜模组通用信息站汉化-补丁
- A20-凯茜模组通用信息站汉化-入门指南
- A30-凯茜模组通用信息站汉化-一般常见问题
- A40-凯茜模组通用信息站汉化-游戏机制
- A50-凯茜模组通用信息站汉化-装饰选项
- A60-凯茜模组通用信息站汉化-与原版游戏的差异
- A70-凯茜模组通用信息站汉化-解锁
- A71-凯茜模组通用信息站汉化-初始牌组
- A72-凯茜模组通用信息站汉化-道具
- A73-凯茜模组通用信息站汉化-卡牌
- A74-凯茜模组通用信息站汉化-伊耶拉克的细节
- A75-凯茜模组通用信息站汉化-挑战
- A76-凯茜模组通用信息站汉化-最终头目
- A77-凯茜模组通用信息站汉化-成就
- A80-凯茜模组通用信息站汉化-提示:挑战提示
- A81-凯茜模组通用信息站汉化-提示:地图节点
- A82-凯茜模组通用信息站汉化-提示:印记
- A90-凯茜模组通用信息站汉化-背景故事
- AA0-凯茜模组通用信息站汉化-ARG解谜
- AA1-凯茜模组通用信息站汉化-ARG事件概览
- AA2-凯茜模组通用信息站汉化-磐石卡牌
- AA3-凯茜模组通用信息站汉化-命令:DAMPNSOGGY
- AA4-凯茜模组通用信息站汉化-命令:RAZORSHARP
- AA5-凯茜模组通用信息站汉化-命令:PALESICKLY
- AA6-凯茜模组通用信息站汉化-命令:LEMONLIMES
- AA7-凯茜模组通用信息站汉化-命令:THESHIPWILLRISEAGAIN
- AA8-凯茜模组通用信息站汉化-频道:#prospector
- AA9-凯茜模组通用信息站汉化-频道:#angler
- AAA-凯茜模组通用信息站汉化-频道:#trader
- AAB-凯茜模组通用信息站汉化-频道:#_-_-_-_-_
- AAC-凯茜模组通用信息站汉化-管理员笔记
- AAD-凯茜模组通用信息站汉化-木雕师的消息
- AAE-凯茜模组通用信息站汉化-提示和工具
- AAF-凯茜模组通用信息站汉化-ARG文档
- AAG-凯茜模组通用信息站汉化-前传ARG
- AB0-凯茜模组通用信息站汉化-趣事:名人堂
- AB1-凯茜模组通用信息站汉化-趣事:耻辱柱
- AB2-凯茜模组通用信息站汉化-趣事:以及其他有趣内容……
- AB3-凯茜模组通用信息站汉化-趣事:全挑战模式胜利记录
- ABC-凯茜模组通用信息站汉化-趣事:解谜和游戏
- AC0-凯茜模组通用信息站汉化-“作弊”:存档修改
- AC1-凯茜模组通用信息站汉化-“作弊”:重复读档
- AD0-凯茜模组通用信息站汉化-漏洞和代码注释