- 将 `MaxStack` 方法重命名为 `CanStack`,并修改其逻辑为布尔值控制是否可叠加 - 更新多个效果文件中的注释和调用方式以适配新的叠加控制方法 - 修复精灵属性类型获取逻辑,增加缓存字段 `PType` - 修改战斗回合处理流程,优化技能解析顺序和状态比较时机 - 调整状态效果初始化逻辑,确保状态类效果默认允许无限叠加 - 更正伤害类型缺失问题,在固定伤害
69 lines
3.5 KiB
Go
69 lines
3.5 KiB
Go
package input
|
||
|
||
import (
|
||
"blazing/logic/service/fight/action"
|
||
"blazing/logic/service/fight/info"
|
||
)
|
||
|
||
type Effect interface {
|
||
Fight_Start() bool //战斗开始 首发也写这里吧,别)单独写了
|
||
Turn_Start(fattack, sattack *action.SelectSkillAction) //回合开始,注入特性
|
||
Compare_Pre(fattack, sattack *action.SelectSkillAction) bool //比较前对优先级的修改
|
||
//技能命中前的返回值代表是否可以出手 ,对命中本身的修改应该是对上下文本身的修改
|
||
//对技能修改 行动开始前,注入视为等参数在这里实现
|
||
|
||
Skill_Hit_Pre(fattack, sattack *action.SelectSkillAction) bool //比较前对优先级的修改
|
||
Skill_Hit() bool //这是是命中后的对技能的修改,比如变威力
|
||
Skill_Hit_ex() bool // 技能命中前触发//预处理受击技能 被攻击方效果,比如受击时无效技能这样
|
||
|
||
//Calculate_Pre() bool //视为 无视效果,相当于这里对敌方的修改
|
||
OnSkill() bool // 触发on miss onhit
|
||
|
||
//Skill_Can() bool //使用技能 可以取消用技能节点 技能无效节点锁定伤害加上
|
||
Damage_ADD(*info.DamageZone) bool // 攻击前触发 ,这时候就是+区间
|
||
Damage_Mul(*info.DamageZone) bool // 攻击触发
|
||
|
||
Damage_Floor(*info.DamageZone) bool // 保底伤害
|
||
Damage_DIV_ex(*info.DamageZone) bool //受击前触发 这时候就是百分比减伤区间
|
||
Damage_SUB_ex(*info.DamageZone) bool // 受击触发 这时候就是点数减伤
|
||
Damage_Lock(*info.DamageZone) bool //锁定伤害
|
||
Damage_Lock_ex(*info.DamageZone) bool //被动方锁定伤害
|
||
Damage_Shield(*info.DamageZone) bool // 护盾值变化时触发
|
||
//Damage_Use() bool // 伤害作用
|
||
Skill_Use_ex() bool //技能PP减少节点
|
||
Skill_Useed() bool //技能PP减少节点
|
||
//OnDefeat(opp *Input) bool // 精灵被击败时触发
|
||
|
||
// 首发其实就是切换的精灵为nil
|
||
|
||
Switch(in *Input, at info.AttackValue, outpet *info.BattlePetEntity) bool // 精灵出战 / 上场时触发
|
||
//OnSwitchOut() bool // 精灵下场时触发
|
||
// OnOwnerSwitchIn() bool // 所属玩家精灵出战时触发
|
||
// OnOwnerSwitchOut() bool // 所属玩家精灵下场时触发
|
||
|
||
Turn_End() //回合结束计算
|
||
PreBattleEnd() bool //战斗结束前
|
||
OnBattleEnd() bool //战斗结束
|
||
Prop_Befer(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() []int
|
||
// 治疗相关触发
|
||
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(...int) int
|
||
//GetSkill() *BattleSkillEntity //获得技能ctx
|
||
}
|