diff --git a/logic/controller/fight_boss.go b/logic/controller/fight_boss.go index b006742b..00d664c0 100644 --- a/logic/controller/fight_boss.go +++ b/logic/controller/fight_boss.go @@ -85,6 +85,12 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, c *pla mo.MaxHp = uint32(bm.Hp) moinfo.PetList = append(moinfo.PetList, *mo) + for _, v := range strings.Split(bm.NewSeIdxs, " ") { + mo.EffectInfo = append(mo.EffectInfo, model.PetEffectInfo{ + Idx: gconv.Uint16(v), + }) + } + } if bc.BossCatchable == 1 { cancpet = xmlres.PetMAP[int(mo.ID)].CatchRate @@ -94,7 +100,9 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, c *pla } } - + if len(moinfo.PetList) == 0 { + return nil, errorcode.ErrorCodes.ErrPokemonNotExists + } c.Fightinfo.Status = info.BattleMode.FIGHT_WITH_NPC c.Fightinfo.Mode = info.BattleMode.MULTI_MODE diff --git a/logic/service/fight/boss/NewSeIdx_1.go b/logic/service/fight/boss/NewSeIdx_1.go index f85e7b19..8b3e0ad4 100644 --- a/logic/service/fight/boss/NewSeIdx_1.go +++ b/logic/service/fight/boss/NewSeIdx_1.go @@ -10,7 +10,7 @@ import ( // 特性的ID=PET cacthtime+eid 这样保证不重复 type NewSel0 struct { node.EffectNode - Catchtime int //保存精灵的唯一指令,保证在上场时候正确注入 + //Catchtime int //保存精灵的唯一指令,保证在上场时候正确注入 //Hide bool //是否隐藏 ,所属精灵下场后特性就应该消失 //??如果2只精灵一个特性,怎么办,每次切精灵注入特性 } @@ -27,7 +27,12 @@ type NewSel1 struct { NewSel0 } -func (e *NewSel0) BeferProp(in *input.Ctx, prop, level int8, ptype info.EnumAbilityOpType) bool { +func (e *NewSel1) BeferProp(in *input.Ctx, prop, level int8, ptype info.EnumAbilityOpType) bool { + + //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 + if e.EffectIDCombiner.CatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + return true + } //能力下降类 if level > 0 && ptype == info.AbilityOpType.SUB { @@ -39,6 +44,6 @@ func (e *NewSel0) BeferProp(in *input.Ctx, prop, level int8, ptype info.EnumAbil } func init() { - input.InitEffect(input.EffectType.NewSel, 1, &NewSel0{}) + input.InitEffect(input.EffectType.NewSel, 1, &NewSel1{}) } diff --git a/logic/service/fight/boss/NewSeIdx_10.go b/logic/service/fight/boss/NewSeIdx_10.go new file mode 100644 index 00000000..46cb3413 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_10.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 10. 无限PP值; +// TODO: 实现无限PP值;的核心逻辑 +type NewSel10 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 10, &NewSel10{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_11.go b/logic/service/fight/boss/NewSeIdx_11.go new file mode 100644 index 00000000..ee6bb508 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_11.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 11. 受到任何攻击都会反弹1/n的伤害给对方;(a1: n) +// TODO: 实现受到任何攻击都会反弹1/n的伤害给对方;(a1: n)的核心逻辑 +type NewSel11 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 11, &NewSel11{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_12.go b/logic/service/fight/boss/NewSeIdx_12.go new file mode 100644 index 00000000..363d899f --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_12.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 12. 受到特殊攻击时使自身的一种 battle_lv 提升1个等级,可提升n次;(a1: which blv, a2: max_blv_up_times) +// TODO: 实现受到特殊攻击时使自身的一种 battle_lv 提升1个等级,可提升n次;(a1: which blv, a2: max_blv_up_times)的核心逻辑 +type NewSel12 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 12, &NewSel12{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_13.go b/logic/service/fight/boss/NewSeIdx_13.go new file mode 100644 index 00000000..65b54af1 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_13.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 13. n 回合逃跑;(a1: n, a2: 不逃跑精灵ID, a3/a4: 不逃跑系精灵) +// TODO: 实现n 回合逃跑;(a1: n, a2: 不逃跑精灵ID, a3/a4: 不逃跑系精灵)的核心逻辑 +type NewSel13 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 13, &NewSel13{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_14.go b/logic/service/fight/boss/NewSeIdx_14.go new file mode 100644 index 00000000..ac7c2eda --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_14.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 14. 若遇到天敌, 则战斗开始时连续害怕 n 回合;(a1: n) +// TODO: 实现若遇到天敌, 则战斗开始时连续害怕 n 回合;(a1: n)的核心逻辑 +type NewSel14 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 14, &NewSel14{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_15.go b/logic/service/fight/boss/NewSeIdx_15.go new file mode 100644 index 00000000..0f54fcb3 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_15.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 15. 若遇到天敌, 则整个战斗中对天敌的伤害减少 n%;(a1: 0-100 百分比) +// TODO: 实现若遇到天敌, 则整个战斗中对天敌的伤害减少 n%;(a1: 0-100 百分比)的核心逻辑 +type NewSel15 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 15, &NewSel15{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_16.go b/logic/service/fight/boss/NewSeIdx_16.go new file mode 100644 index 00000000..86b8fa1c --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_16.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 16. hp 与 battle_lv 的某一种绑定, 自身体力每减少1/8, 则该battle_lv上升1个等级, 最高到12;(a1: which blv) +// TODO: 实现hp 与 battle_lv 的某一种绑定, 自身体力每减少1/8, 则该battle_lv上升1个等级, 最高到12;(a1: which blv)的核心逻辑 +type NewSel16 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 16, &NewSel16{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_17.go b/logic/service/fight/boss/NewSeIdx_17.go new file mode 100644 index 00000000..9ae42a99 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_17.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 17. 自身体力降到N以下时,每次攻击必定致命一击;(a1: high 32, a2: low 32) +// TODO: 实现自身体力降到N以下时,每次攻击必定致命一击;(a1: high 32, a2: low 32)的核心逻辑 +type NewSel17 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 17, &NewSel17{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_18.go b/logic/service/fight/boss/NewSeIdx_18.go new file mode 100644 index 00000000..0c68d88a --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_18.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 18. 自身所有技能必中; +// TODO: 实现自身所有技能必中;的核心逻辑 +type NewSel18 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 18, &NewSel18{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_19.go b/logic/service/fight/boss/NewSeIdx_19.go new file mode 100644 index 00000000..9ea136ce --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_19.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 19. 自身所有技能必先出手; +// TODO: 实现自身所有技能必先出手;的核心逻辑 +type NewSel19 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 19, &NewSel19{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_2.go b/logic/service/fight/boss/NewSeIdx_2.go new file mode 100644 index 00000000..3f5aa352 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_2.go @@ -0,0 +1,30 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 2. 免疫 "异常状态" +type NewSel2 struct { + NewSel0 +} + +func (e *NewSel2) EFFect_Befer(in *input.Input, effEffect input.Effect) bool { + //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 + if e.EffectIDCombiner.CatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + return true + } + + if in != e.Ctx().Opp { + return true + } + if e.Ctx().Our.IS_Stat(effEffect) { + return false + } + + return true +} +func init() { + input.InitEffect(input.EffectType.NewSel, 2, &NewSel2{}) + +} diff --git a/logic/service/fight/boss/NewSeIdx_20.go b/logic/service/fight/boss/NewSeIdx_20.go new file mode 100644 index 00000000..61c87cae --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_20.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 20. 在被ID为xxx的技能命中前,任何技能都不能伤害自身;(a1-a8: 有效技能ID) +// TODO: 实现在被ID为xxx的技能命中前,任何技能都不能伤害自身;(a1-a8: 有效技能ID)的核心逻辑 +type NewSel20 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 20, &NewSel20{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_21.go b/logic/service/fight/boss/NewSeIdx_21.go new file mode 100644 index 00000000..26417967 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_21.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 21. 除ID为xxx的技能外,任何能将自身体力降为 0 的技能都会使自身余下 1 体力;(a1-a8: 有效技能ID) +// TODO: 实现除ID为xxx的技能外,任何能将自身体力降为 0 的技能都会使自身余下 1 体力;(a1-a8: 有效技能ID)的核心逻辑 +type NewSel21 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 21, &NewSel21{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_22.go b/logic/service/fight/boss/NewSeIdx_22.go new file mode 100644 index 00000000..5f65f6cc --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_22.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 22. 被打时受到直接攻击伤害提高至n倍;(a1: n) +// TODO: 实现被打时受到直接攻击伤害提高至n倍;(a1: n)的核心逻辑 +type NewSel22 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 22, &NewSel22{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_23.go b/logic/service/fight/boss/NewSeIdx_23.go new file mode 100644 index 00000000..49b76cad --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_23.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 23. 自身体力降到N以下时, 每次(针对多宠)攻击必定秒杀对方, 且必定先手;(a1: high 16, a2: low 16) +// TODO: 实现自身体力降到N以下时, 每次(针对多宠)攻击必定秒杀对方, 且必定先手;(a1: high 16, a2: low 16)的核心逻辑 +type NewSel23 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 23, &NewSel23{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_24.go b/logic/service/fight/boss/NewSeIdx_24.go new file mode 100644 index 00000000..9109c3bc --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_24.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 24. 对方用这些技能时, 对自身的命中率为0 (最多8个 / 不要与必中技能一起配置);(a1-a8: 有效技能ID) +// TODO: 实现对方用这些技能时, 对自身的命中率为0 (最多8个 / 不要与必中技能一起配置);(a1-a8: 有效技能ID)的核心逻辑 +type NewSel24 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 24, &NewSel24{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_25.go b/logic/service/fight/boss/NewSeIdx_25.go new file mode 100644 index 00000000..11a549d0 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_25.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 25. 如果 hp 被打成 0, 则立刻增加一些hp +// TODO: 实现如果 hp 被打成 0, 则立刻增加一些hp的核心逻辑 +type NewSel25 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 25, &NewSel25{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_26.go b/logic/service/fight/boss/NewSeIdx_26.go new file mode 100644 index 00000000..398e3f70 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_26.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 26. 给一种 battle_attr 增加固定 n 点属性值;(a1: battle_attr, a2: n) +// TODO: 实现给一种 battle_attr 增加固定 n 点属性值;(a1: battle_attr, a2: n)的核心逻辑 +type NewSel26 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 26, &NewSel26{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_27.go b/logic/service/fight/boss/NewSeIdx_27.go new file mode 100644 index 00000000..ae126423 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_27.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 27. 按一定的属性顺序出招的技能才能对去血(a1-a8: mon_type) +// TODO: 实现按一定的属性顺序出招的技能才能对去血(a1-a8: mon_type)的核心逻辑 +type NewSel27 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 27, &NewSel27{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_28.go b/logic/service/fight/boss/NewSeIdx_28.go new file mode 100644 index 00000000..695728d7 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_28.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 28. XX系技能伤害增加n%(a1: mon_type, a2: n 百分比) +// TODO: 实现XX系技能伤害增加n%(a1: mon_type, a2: n 百分比)的核心逻辑 +type NewSel28 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 28, &NewSel28{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_29.go b/logic/service/fight/boss/NewSeIdx_29.go new file mode 100644 index 00000000..47c75cbb --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_29.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 29. 自身的所有技能命中率增加 n%;(a1: n 百分比) +// TODO: 实现自身的所有技能命中率增加 n%;(a1: n 百分比)的核心逻辑 +type NewSel29 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 29, &NewSel29{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_3.go b/logic/service/fight/boss/NewSeIdx_3.go new file mode 100644 index 00000000..d0a05007 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_3.go @@ -0,0 +1,28 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + + "github.com/shopspring/decimal" +) + +// 3. 受到任何伤害减免 n%(a1: 0-100 百分比) +// TODO: 实现受到任何伤害减免 n%(a1: 0-100 百分比)的核心逻辑 +type NewSel3 struct { + NewSel0 +} + +func (e *NewSel3) Damage_DIV_ex(t *info.DamageZone) bool { + //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 + if e.EffectIDCombiner.CatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + return true + } + + t.Damage = t.Damage.Div(decimal.NewFromInt(int64(e.Args()[0]))) + + return true +} +func init() { + input.InitEffect(input.EffectType.NewSel, 3, &NewSel3{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_30.go b/logic/service/fight/boss/NewSeIdx_30.go new file mode 100644 index 00000000..18e247b0 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_30.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 30. 所有技能的致命一击率增加n/16;(a1: n 1-16) +// TODO: 实现所有技能的致命一击率增加n/16;(a1: n 1-16)的核心逻辑 +type NewSel30 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 30, &NewSel30{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_31.go b/logic/service/fight/boss/NewSeIdx_31.go new file mode 100644 index 00000000..9502afb6 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_31.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 31. 受到致死攻击时有n%几率余下 m 点体力;(a1: n 百分比, a2: m 体力值) +// TODO: 实现受到致死攻击时有n%几率余下 m 点体力;(a1: n 百分比, a2: m 体力值)的核心逻辑 +type NewSel31 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 31, &NewSel31{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_32.go b/logic/service/fight/boss/NewSeIdx_32.go new file mode 100644 index 00000000..2898ae8a --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_32.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 32. 进攻类技能有n%几率秒杀对方;(a1: n 千分比) +// TODO: 实现进攻类技能有n%几率秒杀对方;(a1: n 千分比)的核心逻辑 +type NewSel32 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 32, &NewSel32{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_33.go b/logic/service/fight/boss/NewSeIdx_33.go new file mode 100644 index 00000000..b179efad --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_33.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 33. 精灵体力降低到 1/n 时有 m% 几率体力回满;(a1: n, a2: m 百分比) +// TODO: 实现精灵体力降低到 1/n 时有 m% 几率体力回满;(a1: n, a2: m 百分比)的核心逻辑 +type NewSel33 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 33, &NewSel33{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_34.go b/logic/service/fight/boss/NewSeIdx_34.go new file mode 100644 index 00000000..c3b157f3 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_34.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 34. 受到特殊攻击时有 n% 几率使 对方 battle_lv 降低1个等级;(a1: battle_lv类型, a2: n 百分比) +// TODO: 实现受到特殊攻击时有 n% 几率使 对方 battle_lv 降低1个等级;(a1: battle_lv类型, a2: n 百分比)的核心逻辑 +type NewSel34 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 34, &NewSel34{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_35.go b/logic/service/fight/boss/NewSeIdx_35.go new file mode 100644 index 00000000..c7aed631 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_35.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 35. 受到任何攻击时有 n% 几率使 自身 battle_lv 提升1个等级;(a1: battle_lv类型, a2: n 百分比) +// TODO: 实现受到任何攻击时有 n% 几率使 自身 battle_lv 提升1个等级;(a1: battle_lv类型, a2: n 百分比)的核心逻辑 +type NewSel35 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 35, &NewSel35{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_36.go b/logic/service/fight/boss/NewSeIdx_36.go new file mode 100644 index 00000000..06775048 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_36.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 36. 按5回合轮换属性顺序出招的技能才能对去血(a1-a8: btl_stat/elem_type) +// TODO: 实现按5回合轮换属性顺序出招的技能才能对去血(a1-a8: btl_stat/elem_type)的核心逻辑 +type NewSel36 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 36, &NewSel36{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_37.go b/logic/service/fight/boss/NewSeIdx_37.go new file mode 100644 index 00000000..190d80a1 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_37.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 37. 自身 一次受到大于n 的伤害时直接将对方体力降至0;(a1: high 16, a2: low 16) +// TODO: 实现自身 一次受到大于n 的伤害时直接将对方体力降至0;(a1: high 16, a2: low 16)的核心逻辑 +type NewSel37 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 37, &NewSel37{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_38.go b/logic/service/fight/boss/NewSeIdx_38.go new file mode 100644 index 00000000..e8277d36 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_38.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 38. 自身造成的伤害增加n%;(a1: n 百分比) +// TODO: 实现自身造成的伤害增加n%;(a1: n 百分比)的核心逻辑 +type NewSel38 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 38, &NewSel38{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_39.go b/logic/service/fight/boss/NewSeIdx_39.go new file mode 100644 index 00000000..a0ad1b62 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_39.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 39. 偶数伤害(dmg) 提升到 n * dmg;(a1: n) +// TODO: 实现偶数伤害(dmg) 提升到 n * dmg;(a1: n)的核心逻辑 +type NewSel39 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 39, &NewSel39{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_4.go b/logic/service/fight/boss/NewSeIdx_4.go new file mode 100644 index 00000000..8171561e --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_4.go @@ -0,0 +1,34 @@ +package effect + +import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/input" +) + +// 4. 受到与自身相同系属的攻击会恢复自身相应体力 +// TODO: 实现受到与自身相同系属的攻击会恢复自身相应体力的核心逻辑 +type NewSel4 struct { + NewSel0 +} + +func (e *NewSel4) Skill_Use_ex() bool { + + //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 + if e.EffectIDCombiner.CatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + return true + } + + if e.Ctx().SkillEntity == nil { + return true + } + + if e.Ctx().SkillEntity.Type == e.Ctx().Our.CurrentPet.Type { + + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Opp.SumDamage) + + } + return true +} +func init() { + input.InitEffect(input.EffectType.NewSel, 4, &NewSel4{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_40.go b/logic/service/fight/boss/NewSeIdx_40.go new file mode 100644 index 00000000..6a5f1105 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_40.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 40. 奇数伤害(dmg) 改为 1/n * dmg;(a1: n) +// TODO: 实现奇数伤害(dmg) 改为 1/n * dmg;(a1: n)的核心逻辑 +type NewSel40 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 40, &NewSel40{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_401.go b/logic/service/fight/boss/NewSeIdx_401.go new file mode 100644 index 00000000..25d3d6d7 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_401.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 401. n%几率攻击技能的伤害翻倍(a1: n) +// TODO: 实现n%几率攻击技能的伤害翻倍(a1: n)的核心逻辑 +type NewSel401 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 401, &NewSel401{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_41.go b/logic/service/fight/boss/NewSeIdx_41.go new file mode 100644 index 00000000..3e01c920 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_41.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 41. 每回合恢复自身n点体力;(a1: n) +// TODO: 实现每回合恢复自身n点体力;(a1: n)的核心逻辑 +type NewSel41 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 41, &NewSel41{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_410.go b/logic/service/fight/boss/NewSeIdx_410.go new file mode 100644 index 00000000..ba8ec637 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_410.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 410. 伤害提升n%(PVP无效)(a1: n) +// TODO: 实现伤害提升n%(PVP无效)(a1: n)的核心逻辑 +type NewSel410 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 410, &NewSel410{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_42.go b/logic/service/fight/boss/NewSeIdx_42.go new file mode 100644 index 00000000..94c84d0f --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_42.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 42. 自身所有技能先制改变n(+/-);(a1: n) +// TODO: 实现自身所有技能先制改变n(+/-);(a1: n)的核心逻辑 +type NewSel42 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 42, &NewSel42{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_43.go b/logic/service/fight/boss/NewSeIdx_43.go new file mode 100644 index 00000000..ca44d7af --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_43.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 43. 遇到天敌自身所有技能先制减少n;(a1: n) +// TODO: 实现遇到天敌自身所有技能先制减少n;(a1: n)的核心逻辑 +type NewSel43 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 43, &NewSel43{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_44.go b/logic/service/fight/boss/NewSeIdx_44.go new file mode 100644 index 00000000..5b254f48 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_44.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 44. 重生 (hp和btl_maxhp 恢复到 maxhp + maxhp_adj, 技能PP值回满)(a1: 可重生次数) +// TODO: 实现重生 (hp和btl_maxhp 恢复到 maxhp + maxhp_adj, 技能PP值回满)(a1: 可重生次数)的核心逻辑 +type NewSel44 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 44, &NewSel44{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_45.go b/logic/service/fight/boss/NewSeIdx_45.go new file mode 100644 index 00000000..979a2aba --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_45.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 45. 自身所有技能致命一击率固定是 1/n(a1: n 16/n) +// TODO: 实现自身所有技能致命一击率固定是 1/n(a1: n 16/n)的核心逻辑 +type NewSel45 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 45, &NewSel45{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_46.go b/logic/service/fight/boss/NewSeIdx_46.go new file mode 100644 index 00000000..fcb0f286 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_46.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 46. 若自身5回合内体力被降到0会余下1点体力,并且体力全恢复,恢复后回合数重新计算。 +// TODO: 实现若自身5回合内体力被降到0会余下1点体力,并且体力全恢复,恢复后回合数重新计算。的核心逻辑 +type NewSel46 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 46, &NewSel46{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_47.go b/logic/service/fight/boss/NewSeIdx_47.go new file mode 100644 index 00000000..bb1d064c --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_47.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 47. 敌我双方伤害降低n%(a1: n) +// TODO: 实现敌我双方伤害降低n%(a1: n)的核心逻辑 +type NewSel47 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 47, &NewSel47{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_48.go b/logic/service/fight/boss/NewSeIdx_48.go new file mode 100644 index 00000000..175cddb5 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_48.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 48. 对方某种攻击类型无效(a1: 攻击类型) +// TODO: 实现对方某种攻击类型无效(a1: 攻击类型)的核心逻辑 +type NewSel48 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 48, &NewSel48{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_49.go b/logic/service/fight/boss/NewSeIdx_49.go new file mode 100644 index 00000000..23c98f72 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_49.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 49. 受到物理攻击或特殊攻击后,下n回合受物理攻击或特殊攻击伤害减免m%(a1: n, a2: m) +// TODO: 实现受到物理攻击或特殊攻击后,下n回合受物理攻击或特殊攻击伤害减免m%(a1: n, a2: m)的核心逻辑 +type NewSel49 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 49, &NewSel49{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_5.go b/logic/service/fight/boss/NewSeIdx_5.go new file mode 100644 index 00000000..b2bb0627 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_5.go @@ -0,0 +1,40 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + + "github.com/samber/lo" + "github.com/shopspring/decimal" +) + +// 5. 只受到来自普通属性和某类属性的攻击伤害(a1-a8: mon_type) +// TODO: 实现只受到来自普通属性和某类属性的攻击伤害(a1-a8: mon_type)的核心逻辑 +type NewSel5 struct { + NewSel0 +} + +func (e *NewSel5) Damage_Lock_ex(t *info.DamageZone) bool { + //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 + if e.EffectIDCombiner.CatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + return true + } + if e.Ctx().SkillEntity == nil { + return true + } + + _, ok := lo.Find(append(e.Args(), 8), func(item int) bool { + return item == e.Ctx().SkillEntity.Type + }) + if !ok { + return true + } + + t.Damage = decimal.NewFromInt(0) + + return true +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 5, &NewSel5{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_50.go b/logic/service/fight/boss/NewSeIdx_50.go new file mode 100644 index 00000000..c8be6677 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_50.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 50. 免疫某类特效(a1-an: 被免疫的特效ID) +// TODO: 实现免疫某类特效(a1-an: 被免疫的特效ID)的核心逻辑 +type NewSel50 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 50, &NewSel50{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_501.go b/logic/service/fight/boss/NewSeIdx_501.go new file mode 100644 index 00000000..ccd1077f --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_501.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 501. g1. 最后一个死 (只要有队友没死, 则自己又恢复hp和pp) +// TODO: 实现g1. 最后一个死 (只要有队友没死, 则自己又恢复hp和pp)的核心逻辑 +type NewSel501 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 501, &NewSel501{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_503.go b/logic/service/fight/boss/NewSeIdx_503.go new file mode 100644 index 00000000..a4d965cb --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_503.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 503. g3. 群体攻击技能可额外增加一个目标(最多不超过5个目标) +// TODO: 实现g3. 群体攻击技能可额外增加一个目标(最多不超过5个目标)的核心逻辑 +type NewSel503 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 503, &NewSel503{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_51.go b/logic/service/fight/boss/NewSeIdx_51.go new file mode 100644 index 00000000..33d04568 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_51.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 51. 如果mon被打到BurstRecoverHP以下, 且没有挂掉, 则马上恢复到满HP和PP值;(a1: burst_hp high-32, a2: burst_hp low-32) +// TODO: 实现如果mon被打到BurstRecoverHP以下, 且没有挂掉, 则马上恢复到满HP和PP值;(a1: burst_hp high-32, a2: burst_hp low-32)的核心逻辑 +type NewSel51 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 51, &NewSel51{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_52.go b/logic/service/fight/boss/NewSeIdx_52.go new file mode 100644 index 00000000..b8066899 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_52.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 52. 第3n+1回合免疫特殊攻击,第3n+2回合免疫物理攻击,第3n+3回合免疫属性攻击 +// TODO: 实现第3n+1回合免疫特殊攻击,第3n+2回合免疫物理攻击,第3n+3回合免疫属性攻击的核心逻辑 +type NewSel52 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 52, &NewSel52{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_53.go b/logic/service/fight/boss/NewSeIdx_53.go new file mode 100644 index 00000000..4d5587a8 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_53.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 53. 敌我双方每回合恢复n%HP(不超过最大血量)(a1: n) +// TODO: 实现敌我双方每回合恢复n%HP(不超过最大血量)(a1: n)的核心逻辑 +type NewSel53 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 53, &NewSel53{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_54.go b/logic/service/fight/boss/NewSeIdx_54.go new file mode 100644 index 00000000..908b60ab --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_54.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 54. 每回合结束后,敌我双方扣除n体力值(a1: n) +// TODO: 实现每回合结束后,敌我双方扣除n体力值(a1: n)的核心逻辑 +type NewSel54 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 54, &NewSel54{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_55.go b/logic/service/fight/boss/NewSeIdx_55.go new file mode 100644 index 00000000..92e8ff31 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_55.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 55. 每回合敌我双方造成的伤害为原来的n倍(a1: n) +// TODO: 实现每回合敌我双方造成的伤害为原来的n倍(a1: n)的核心逻辑 +type NewSel55 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 55, &NewSel55{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_56.go b/logic/service/fight/boss/NewSeIdx_56.go new file mode 100644 index 00000000..870a075d --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_56.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 56. 第n回合秒杀敌人(a1: 回合数) +// TODO: 实现第n回合秒杀敌人(a1: 回合数)的核心逻辑 +type NewSel56 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 56, &NewSel56{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_57.go b/logic/service/fight/boss/NewSeIdx_57.go new file mode 100644 index 00000000..45bc767e --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_57.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 57. 如果对方存在某异常状态,则自己攻击的致命一击率提高n/16(a1: 异常状态类型, a2: n) +// TODO: 实现如果对方存在某异常状态,则自己攻击的致命一击率提高n/16(a1: 异常状态类型, a2: n)的核心逻辑 +type NewSel57 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 57, &NewSel57{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_58.go b/logic/service/fight/boss/NewSeIdx_58.go new file mode 100644 index 00000000..ab0435a2 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_58.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 58. 按一定条件触发魔王的愤怒,触发时,战斗等级提升至一定状态,可以被消强化(SideEffect="33")恢复至正常状态(+6)(a1-a6: atk/def/sp_atk/sp_def/spd/accuracy,-1为不设置) +// TODO: 实现按一定条件触发魔王的愤怒,触发时,战斗等级提升至一定状态,可以被消强化(SideEffect="33")恢复至正常状态(+6)(a1-a6: atk/def/sp_atk/sp_def/spd/accuracy,-1为不设置)的核心逻辑 +type NewSel58 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 58, &NewSel58{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_59.go b/logic/service/fight/boss/NewSeIdx_59.go new file mode 100644 index 00000000..85f407f0 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_59.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 59. 按一定条件触发魔王的附身,触发时,受到伤害时n回合内反弹m%伤害给玩家(a1: 持续回合数, a2: 反弹百分比) +// TODO: 实现按一定条件触发魔王的附身,触发时,受到伤害时n回合内反弹m%伤害给玩家(a1: 持续回合数, a2: 反弹百分比)的核心逻辑 +type NewSel59 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 59, &NewSel59{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_6.go b/logic/service/fight/boss/NewSeIdx_6.go new file mode 100644 index 00000000..8d3756aa --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_6.go @@ -0,0 +1,46 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" +) + +// 6. 受到`普通属性'(128)伤害时以n%的概率使对方进入`异常状态'(仅一个异常状态)(a1: 异常状态类型, a2: 百分比) +// TODO: 实现受到`普通属性'(128)伤害时以n%的概率使对方进入`异常状态'(仅一个异常状态)(a1: 异常状态类型, a2: 百分比)的核心逻辑 +type NewSel6 struct { + NewSel0 +} + +func (e *NewSel6) Damage_Lock_ex(t *info.DamageZone) bool { + //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 + if e.EffectIDCombiner.CatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { + return true + } + if e.Ctx().SkillEntity == nil { + return true + } + + // 3. 概率判定(Args()[1]为触发概率) + success, _, _ := e.Input.Player.Roll(e.Args()[1], 100) + if !success { + return true + } + + duration := int(e.Input.FightC.GetRand().Int31n(2)) // 默认随机 2~3 回合 + duration++ + // 5. 获取状态效果实例并设置参数 + statusEffect := input.Geteffect(input.EffectType.Status, int(e.Args()[0])) + if statusEffect == nil { + return true + } + statusEffect.Duration(duration) + statusEffect.SetArgs(e.Ctx().Our) // 目标为对手 + + // 6. 给对手添加状态 + e.Ctx().Opp.AddEffect(e.Ctx().Our, statusEffect) + + return true +} +func init() { + input.InitEffect(input.EffectType.NewSel, 6, &NewSel6{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_60.go b/logic/service/fight/boss/NewSeIdx_60.go new file mode 100644 index 00000000..5304b863 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_60.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 60. 受到攻击时n%几率使受到的伤害降低m点(a1: n, a2: m) +// TODO: 实现受到攻击时n%几率使受到的伤害降低m点(a1: n, a2: m)的核心逻辑 +type NewSel60 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 60, &NewSel60{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_61.go b/logic/service/fight/boss/NewSeIdx_61.go new file mode 100644 index 00000000..061e4625 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_61.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 61. n%几率完全抵挡一次伤害(a1: n) +// TODO: 实现n%几率完全抵挡一次伤害(a1: n)的核心逻辑 +type NewSel61 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 61, &NewSel61{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_62.go b/logic/service/fight/boss/NewSeIdx_62.go new file mode 100644 index 00000000..a7c88e02 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_62.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 62. 物理攻击有n%几率使伤害提高m点(a1: n, a2: m) +// TODO: 实现物理攻击有n%几率使伤害提高m点(a1: n, a2: m)的核心逻辑 +type NewSel62 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 62, &NewSel62{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_63.go b/logic/service/fight/boss/NewSeIdx_63.go new file mode 100644 index 00000000..95068661 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_63.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 63. 特殊攻击有n%几率使伤害提高m点(a1: n, a2: m) +// TODO: 实现特殊攻击有n%几率使伤害提高m点(a1: n, a2: m)的核心逻辑 +type NewSel63 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 63, &NewSel63{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_64.go b/logic/service/fight/boss/NewSeIdx_64.go new file mode 100644 index 00000000..521bb01b --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_64.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 64. 受到致命一击的概率降低n/16(a1: n) +// TODO: 实现受到致命一击的概率降低n/16(a1: n)的核心逻辑 +type NewSel64 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 64, &NewSel64{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_65.go b/logic/service/fight/boss/NewSeIdx_65.go new file mode 100644 index 00000000..843214e6 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_65.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 65. 物理攻击或特殊攻击伤害增加m%(a1: 1=物理/3=特殊, a2: m) +// TODO: 实现物理攻击或特殊攻击伤害增加m%(a1: 1=物理/3=特殊, a2: m)的核心逻辑 +type NewSel65 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 65, &NewSel65{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_66.go b/logic/service/fight/boss/NewSeIdx_66.go new file mode 100644 index 00000000..ed25a734 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_66.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 66. 自身的物理攻击有n%几率使对方处于异常状态(a1: n, a2: 异常状态类型) +// TODO: 实现自身的物理攻击有n%几率使对方处于异常状态(a1: n, a2: 异常状态类型)的核心逻辑 +type NewSel66 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 66, &NewSel66{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_67.go b/logic/service/fight/boss/NewSeIdx_67.go new file mode 100644 index 00000000..8c0ca9ea --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_67.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 67. 自身的特殊攻击有n%几率使对方处于异常状态(a1: n, a2: 异常状态类型) +// TODO: 实现自身的特殊攻击有n%几率使对方处于异常状态(a1: n, a2: 异常状态类型)的核心逻辑 +type NewSel67 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 67, &NewSel67{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_68.go b/logic/service/fight/boss/NewSeIdx_68.go new file mode 100644 index 00000000..33a4102c --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_68.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 68. 受到特定系的攻击会恢复自身相应体力(a1: 特定系) +// TODO: 实现受到特定系的攻击会恢复自身相应体力(a1: 特定系)的核心逻辑 +type NewSel68 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 68, &NewSel68{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_69.go b/logic/service/fight/boss/NewSeIdx_69.go new file mode 100644 index 00000000..d7bd64ca --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_69.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 69. 目标为n性别时,所有攻击伤害增加m%(a1: n, a2: m) +// TODO: 实现目标为n性别时,所有攻击伤害增加m%(a1: n, a2: m)的核心逻辑 +type NewSel69 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 69, &NewSel69{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_7.go b/logic/service/fight/boss/NewSeIdx_7.go new file mode 100644 index 00000000..9462cc4f --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_7.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 7. 任何技能对自身的命中率下降 n%;(a1: 0-100 百分比) +// TODO: 实现任何技能对自身的命中率下降 n%;(a1: 0-100 百分比)的核心逻辑 +type NewSel7 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 7, &NewSel7{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_70.go b/logic/service/fight/boss/NewSeIdx_70.go new file mode 100644 index 00000000..356cf962 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_70.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 70. 对手的能力提升效果会同时作用到自己身上 +// TODO: 实现对手的能力提升效果会同时作用到自己身上的核心逻辑 +type NewSel70 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 70, &NewSel70{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_71.go b/logic/service/fight/boss/NewSeIdx_71.go new file mode 100644 index 00000000..b7b5d0e4 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_71.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 71. 每回合结束时,对手降低n体力,自身恢复m体力(a1: n, a2: m) +// TODO: 实现每回合结束时,对手降低n体力,自身恢复m体力(a1: n, a2: m)的核心逻辑 +type NewSel71 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 71, &NewSel71{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_72.go b/logic/service/fight/boss/NewSeIdx_72.go new file mode 100644 index 00000000..f83bda4a --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_72.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 72. 受到的伤害低于n时,则在受到伤害后恢复自身n点体力值(a1: n) +// TODO: 实现受到的伤害低于n时,则在受到伤害后恢复自身n点体力值(a1: n)的核心逻辑 +type NewSel72 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 72, &NewSel72{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_73.go b/logic/service/fight/boss/NewSeIdx_73.go new file mode 100644 index 00000000..015e0389 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_73.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 73. 给对方造成的伤害会恢复自身n%体力;(a1: n) +// TODO: 实现给对方造成的伤害会恢复自身n%体力;(a1: n)的核心逻辑 +type NewSel73 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 73, &NewSel73{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_74.go b/logic/service/fight/boss/NewSeIdx_74.go new file mode 100644 index 00000000..e97fb83f --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_74.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 74. 每次物理或特殊攻击命中对手后,有百分之n的概率给对手叠加一层衰弱(a1: n) +// TODO: 实现每次物理或特殊攻击命中对手后,有百分之n的概率给对手叠加一层衰弱(a1: n)的核心逻辑 +type NewSel74 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 74, &NewSel74{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_75.go b/logic/service/fight/boss/NewSeIdx_75.go new file mode 100644 index 00000000..8295a487 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_75.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 75. 每回合敌方恢复m%HP, 我方恢复n%HP(不超过最大血量)(a1: m, a2: n) +// TODO: 实现每回合敌方恢复m%HP, 我方恢复n%HP(不超过最大血量)(a1: m, a2: n)的核心逻辑 +type NewSel75 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 75, &NewSel75{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_8.go b/logic/service/fight/boss/NewSeIdx_8.go new file mode 100644 index 00000000..25058332 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_8.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 8. 自身的会心一击率为 n/16;(a1: n 0-16) +// TODO: 实现自身的会心一击率为 n/16;(a1: n 0-16)的核心逻辑 +type NewSel8 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 8, &NewSel8{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_83.go b/logic/service/fight/boss/NewSeIdx_83.go new file mode 100644 index 00000000..8207f1a4 --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_83.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 83. 受到超过n的伤害时,反弹m%伤害(a1: n, a2: m) +// TODO: 实现受到超过n的伤害时,反弹m%伤害(a1: n, a2: m)的核心逻辑 +type NewSel83 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 83, &NewSel83{}) +} diff --git a/logic/service/fight/boss/NewSeIdx_9.go b/logic/service/fight/boss/NewSeIdx_9.go new file mode 100644 index 00000000..e50d9eeb --- /dev/null +++ b/logic/service/fight/boss/NewSeIdx_9.go @@ -0,0 +1,15 @@ +package effect + +import ( + "blazing/logic/service/fight/input" +) + +// 9. 如果mon被打到BurstRecoverHP以下, 且没有挂掉, 则马上恢复到满HP;(a1: burst_hp high-32, a2: burst_hp low-32) +// TODO: 实现如果mon被打到BurstRecoverHP以下, 且没有挂掉, 则马上恢复到满HP;(a1: burst_hp high-32, a2: burst_hp low-32)的核心逻辑 +type NewSel9 struct { + NewSel0 +} + +func init() { + input.InitEffect(input.EffectType.NewSel, 9, &NewSel9{}) +} diff --git a/logic/service/fight/effect/effect_41.go b/logic/service/fight/effect/effect_41.go index 27bb0efc..8b4d84af 100644 --- a/logic/service/fight/effect/effect_41.go +++ b/logic/service/fight/effect/effect_41.go @@ -44,10 +44,8 @@ func (e *Effect41) Damage_DIV_ex(t *info.DamageZone) bool { if e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } - if e.Ctx().SkillEntity.Type().Secondary != nil { - return true - } - if e.Ctx().SkillEntity.Type().Primary != element.ElementTypeFire { + + if e.Ctx().SkillEntity.Type != int(element.ElementTypeFire) { return true } if t.Type == info.DamageType.Red { diff --git a/logic/service/fight/effect/effect_42.go b/logic/service/fight/effect/effect_42.go index 376441f9..a4f146ba 100644 --- a/logic/service/fight/effect/effect_42.go +++ b/logic/service/fight/effect/effect_42.go @@ -22,10 +22,8 @@ func (e *Effect42) Damage_Mul(t *info.DamageZone) bool { if e.Ctx().SkillEntity == nil { return true } - if e.Ctx().SkillEntity.Type().Secondary != nil { - return true - } - if e.Ctx().SkillEntity.Type().Primary != element.ElementTypeElectric { + + if e.Ctx().SkillEntity.Type != int(element.ElementTypeElectric) { return true } //fmt.Println("Effect42_o", t.Damage) diff --git a/logic/service/fight/effect/effect_status.go b/logic/service/fight/effect/effect_status.go index 631da7c1..b43e9765 100644 --- a/logic/service/fight/effect/effect_status.go +++ b/logic/service/fight/effect/effect_status.go @@ -131,10 +131,8 @@ func (e *Flammable) Skill_Use_ex() bool { if e.Ctx().SkillEntity == nil { return true } - if e.Ctx().SkillEntity.Type().Secondary != nil { - return true - } - if e.Ctx().SkillEntity.Type().Primary != element.ElementTypeFire { + + if e.Ctx().SkillEntity.Type != int(element.ElementTypeFire) { return true } // 获取状态效果 diff --git a/logic/service/fight/info/BattlePetEntity.go b/logic/service/fight/info/BattlePetEntity.go index df7714ab..13732bda 100644 --- a/logic/service/fight/info/BattlePetEntity.go +++ b/logic/service/fight/info/BattlePetEntity.go @@ -89,7 +89,7 @@ func (u *BattlePetEntity) GetMaxHP() decimal.Decimal { return decimal.NewFromInt(int64(u.Info.MaxHp)) } -func (u *BattlePetEntity) Type() *element.ElementCombination { +func (u *BattlePetEntity) GetType() *element.ElementCombination { // 1. 遍历宠物配置,查找对应元素类型ID // 3. 从预加载的组合池中获取实例(无需创建,直接读取) diff --git a/logic/service/fight/info/BattleSkillEntity.go b/logic/service/fight/info/BattleSkillEntity.go index 406de024..e1aa6957 100644 --- a/logic/service/fight/info/BattleSkillEntity.go +++ b/logic/service/fight/info/BattleSkillEntity.go @@ -103,7 +103,7 @@ func (s *SkillEntity) Category() EnumCategory { } // 获取技能属性 -func (s *SkillEntity) Type() *element.ElementCombination { +func (s *SkillEntity) GetType() *element.ElementCombination { ret, _ := element.Calculator.GetCombination(s.Move.Type) return ret } @@ -168,8 +168,8 @@ func (s *SkillEntity) CriticalsameTypeBonus() decimal.Decimal { // 同系加成默认倍率为1.0 sameTypeBonus := decimal.NewFromFloat(1.0) - skillType := s.Type() - petType := s.Pet.Type() + skillType := s.GetType() + petType := s.Pet.GetType() // 收集技能的所有属性(主属性必存在,次属性可能为nil) skillAttrs := []element.ElementType{skillType.Primary} diff --git a/logic/service/fight/input/fight.go b/logic/service/fight/input/fight.go index 73617950..48095238 100644 --- a/logic/service/fight/input/fight.go +++ b/logic/service/fight/input/fight.go @@ -310,7 +310,7 @@ func (our *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) decima var typeRate decimal.Decimal //fmt.Println(skill.Type().ID, deftype.CurrentPet.Type().ID) - t, _ := element.Calculator.GetOffensiveMultiplier(skill.Type().ID, deftype.CurrentPet.Type().ID) + t, _ := element.Calculator.GetOffensiveMultiplier(skill.GetType().ID, deftype.CurrentPet.GetType().ID) typeRate = decimal.NewFromFloat(t) // 8. DmgBindLv: 使对方受到的伤害值等于等级; 默认: 0 diff --git a/logic/service/fight/input/input.go b/logic/service/fight/input/input.go index 4cb7527d..f99a49b8 100644 --- a/logic/service/fight/input/input.go +++ b/logic/service/fight/input/input.go @@ -175,6 +175,9 @@ func (our *Input) Parseskill(skill *action.SelectSkillAction) { if skill == nil { return } + if skill.SkillEntity == nil { + return + } our.EffectCache = make([]Effect, 0) //先把上一回合数据清空,但是应该把本身延续类效果集成过来 our.Effect_Lost = make([]Effect, 0) diff --git a/logic/service/fight/loop.go b/logic/service/fight/loop.go index f25977ce..0aeb6093 100644 --- a/logic/service/fight/loop.go +++ b/logic/service/fight/loop.go @@ -205,9 +205,12 @@ func (f *FightC) resolveRound(p1Action, p2Action action.BattleActionI) { f.GetInputByAction(a, false).CurrentPet.Info.Hp = 1 } if b2k, ok := b2.(*action.SelectSkillAction); ok { - if b2k.CD != nil { - f.waittime = *b2k.CD + if b2k.SkillEntity != nil { + if b2k.CD != nil { + f.waittime = *b2k.CD + } } + f.enterturn(b2.(*action.SelectSkillAction), nil) } else { if a1, ok := b2.(*action.UseItemAction); ok { diff --git a/public/config/地图配置野怪.xml b/public/config/地图配置野怪.xml index 77127d25..fde98403 100644 --- a/public/config/地图配置野怪.xml +++ b/public/config/地图配置野怪.xml @@ -3869,16 +3869,16 @@ eg: - - -