Files
bl/logic/service/fight/input/interface.go
xinian 09da1dc253
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
refactor: 重构战斗技能使用节点
2026-03-08 19:42:47 +08:00

81 lines
3.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package input
import (
"blazing/logic/service/common"
"blazing/logic/service/fight/action"
"blazing/logic/service/fight/info"
"blazing/modules/player/model"
"github.com/alpacahq/alpacadecimal"
)
type Effect interface {
Fight_Start() bool //战斗开始 首发也写这里吧,别)单独写了
TurnStart(fattack, sattack *action.SelectSkillAction) //回合开始,注入特性
ComparePre(fattack, sattack *action.SelectSkillAction) bool //比较前对优先级的修改
//技能命中前的返回值代表是否可以出手 ,对命中本身的修改应该是对上下文本身的修改
//对技能修改 行动开始前,注入视为等参数在这里实现
ActionStartEx(fattack, sattack *action.SelectSkillAction) bool //比较前对优先级的修改
ActionStart(fattack, sattack *action.SelectSkillAction) bool //比较前对优先级的修改
SkillHit() bool //这是是命中后的对技能的修改,比如变威力
SkillHit_ex() bool // 技能命中前触发//预处理受击技能 被攻击方效果,比如受击时无效技能这样
CalculatePre() bool //视为 无视效果,相当于这里对敌方的修改
OnSkill() bool // 触发on miss onhit
//Skill_Can() bool //使用技能 可以取消用技能节点 技能无效节点锁定伤害加上
DamageAdd(*info.DamageZone) bool // 攻击前触发 ,这时候就是+区间
Damage_Mul(*info.DamageZone) bool // 攻击触发
DamageFloor(*info.DamageZone) bool // 保底伤害
DamageDivEx(*info.DamageZone) bool //受击前触发 这时候就是百分比减伤区间
DamageSubEx(*info.DamageZone) bool // 受击触发 这时候就是点数减伤
DamageLock(*info.DamageZone) bool //锁定伤害
DamageLockEx(*info.DamageZone) bool //被动方锁定伤害
Damage_Shield(*info.DamageZone) bool // 护盾值变化时触发
Skill_Use() bool //技能使用节点
Skill_Use_ex() bool //技能PP减少节点
Action_end() bool
Action_end_ex() bool
//OnDefeat(opp *Input) bool // 精灵被击败时触发
// 首发其实就是切换的精灵为nil
SwitchIn(in *Input) bool // 精灵出战 / 上场时触发
SwitchOut(in *Input) bool // 精灵下场时触发
//OnSwitchOut() bool // 精灵下场时触发
// OnOwnerSwitchIn() bool // 所属玩家精灵出战时触发
// OnOwnerSwitchOut() bool // 所属玩家精灵下场时触发
TurnEnd() //回合结束计算
HookAction() bool //出手前的hook参数返回false阻止继续出手
//PreBattleEnd() bool //战斗结束前
OnBattleEnd() bool //战斗结束
PropBefer(in *Input, prop, level int8, ptype info.EnumAbilityOpType) bool //锁定属性
//效果添加时候应该区分主动方和被动方来确认是主动添加的还是受击添加的
//boss是进入防守方才被添加抵御异常状态效果的boss免疫的实质是给挑战者挂载一个阻止添加给对手的debuff
EFFect_Befer(in *Input, effEffect Effect) bool //属性免疫
SetArgs(input *Input, param ...int)
Args() []alpacadecimal.Decimal
// 治疗相关触发
Heal_Pre(action.BattleActionI, *int) bool // 治疗前触发 回复翻倍效果
//Heal(action.BattleActionI) bool // 治疗生效时触发 药剂反噬
Ctx() *Ctx
//回合数,然后次数另外维护
Duration(...int) int
//Hit(...bool) bool
Alive(...bool) bool
Stack(...int) int
CanStack(...bool) bool
//Owner(...bool) bool // 技能属主,比如寄生和镇魂歌,属主是对方)
GetInput() *Input
ID(...EffectIDCombiner) EffectIDCombiner
//GetSkill() *BattleSkillEntity //获得技能ctx
}
type RuleI interface {
SetArgs(param ...int)
Exec(common.FightI, *model.FightOverInfo) bool
}