diff --git a/logic/service/fight/boss/NewSeIdx_54.go b/logic/service/fight/boss/NewSeIdx_54.go index 3b550332..aaea2d95 100644 --- a/logic/service/fight/boss/NewSeIdx_54.go +++ b/logic/service/fight/boss/NewSeIdx_54.go @@ -1,7 +1,6 @@ package effect import ( - "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" ) @@ -11,10 +10,10 @@ type NewSel54 struct { NewSel0 } -func (e *NewSel54) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { +func (e *NewSel54) Action_end() bool { //魂印特性有不在场的情况,绑定时候将精灵和特性绑定 if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { - return + return true } // 扣除我方体力 @@ -28,6 +27,7 @@ func (e *NewSel54) TurnStart(fattack *action.SelectSkillAction, sattack *action. Type: info.DamageType.Fixed, Damage: e.Args()[0], }) + return true } func init() { diff --git a/logic/service/fight/boss/NewSeIdx_71.go b/logic/service/fight/boss/NewSeIdx_71.go index f90e5b24..d1e59b04 100644 --- a/logic/service/fight/boss/NewSeIdx_71.go +++ b/logic/service/fight/boss/NewSeIdx_71.go @@ -1,7 +1,6 @@ package effect import ( - "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" ) @@ -11,9 +10,9 @@ type NewSel71 struct { NewSel0 } -func (e *NewSel71) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { +func (e *NewSel71) Action_end() bool { if e.ID().GetCatchTime() != e.Ctx().Our.CurrentPet.Info.CatchTime { - return + return true } // 每回合结束后,对手降低n体力(受到伤害) @@ -24,6 +23,7 @@ func (e *NewSel71) TurnStart(fattack *action.SelectSkillAction, sattack *action. // 每回合结束后自身的恢复m体力 e.Ctx().Our.Heal(e.Ctx().Our, nil, e.Args()[1]) + return true } func init() { diff --git a/logic/service/fight/effect/effect_438.go b/logic/service/fight/effect/effect_438.go new file mode 100644 index 00000000..916fbf5d --- /dev/null +++ b/logic/service/fight/effect/effect_438.go @@ -0,0 +1,31 @@ +package effect + +import ( + "blazing/logic/service/fight/action" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +/** + * 438 n概率恢复1/m + */ + +func init() { + + input.InitEffect(input.EffectType.Skill, 438, &Effect438{}) + +} + +type Effect438 struct { + node.EffectNode +} + +func (e *Effect438) OnSkill() bool { + ok, _, _ := e.Input.Player.Roll(e.SideEffectArgs[0], 100) + if !ok { + return true + } + + e.Ctx().Our.Heal(e.Ctx().Our, &action.SelectSkillAction{}, e.Ctx().Our.CurrentPet.GetMaxHP().Div(e.Args()[1])) + return true +} diff --git a/logic/service/fight/effect/effect_439.go b/logic/service/fight/effect/effect_439.go new file mode 100644 index 00000000..5fc72ce8 --- /dev/null +++ b/logic/service/fight/effect/effect_439.go @@ -0,0 +1,36 @@ +package effect + +import ( + "blazing/logic/service/fight/info" + "blazing/logic/service/fight/input" + "blazing/logic/service/fight/node" +) + +/** + * 439 + */ + +func init() { + + input.InitEffect(input.EffectType.Skill, 439, &Effect439{}) + +} + +type Effect439 struct { + node.EffectNode +} + +func (e *Effect439) SetArgs(t *input.Input, a ...int) { + + e.EffectNode.SetArgs(t, a...) + e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) + +} +func (e *Effect439) Action_end() bool { + + e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ + Type: info.DamageType.Fixed, + Damage: e.Args()[1], + }) + return true +} diff --git a/logic/service/fight/effect/effect_74_75.go b/logic/service/fight/effect/effect_74_75.go index 50f7690a..5c8902de 100644 --- a/logic/service/fight/effect/effect_74_75.go +++ b/logic/service/fight/effect/effect_74_75.go @@ -58,13 +58,14 @@ func (e *EffectRandomStatus) OnSkill() bool { // 初始化:注册Effect74和Effect75(通过不同配置区分) func init() { - // Effect74:10%中毒、10%烧伤、10%冻伤(70%无效果) - input.InitEffect(input.EffectType.Skill, 74, newEffectRandomStatus([]statusRange{ + tf := newEffectRandomStatus([]statusRange{ {upper: 10, status: info.PetStatus.Poisoned}, // 0-9:中毒 {upper: 20, status: info.PetStatus.Burned}, // 10-19:烧伤 {upper: 30, status: info.PetStatus.Frozen}, // 20-29:冻伤 - })) - + }) + // Effect74:10%中毒、10%烧伤、10%冻伤(70%无效果) + input.InitEffect(input.EffectType.Skill, 74, tf) + input.InitEffect(input.EffectType.Skill, 451, tf) // Effect75:10%麻痹、10%睡眠、10%害怕(70%无效果) input.InitEffect(input.EffectType.Skill, 75, newEffectRandomStatus([]statusRange{ {upper: 10, status: info.PetStatus.Paralysis}, // 0-9:麻痹 diff --git a/logic/service/space/info/info.go b/logic/service/space/info/info.go index ee41e7c7..c049600b 100644 --- a/logic/service/space/info/info.go +++ b/logic/service/space/info/info.go @@ -43,10 +43,8 @@ type MapBossInfo struct { Pos model.Pos IsShow int32 `struc:"uint32" json:"is_show"` // 雷伊首次出现的时候给2,正常精灵给1,雷伊是否首次出现的判断是否首次刷新, PosInfo []model.Pos `struc:"skip"` - MaxHP int `struc:"skip"` PosIndex uint32 `struc:"skip"` - //Wer []int32 `struc:"skip"` - Event configm.Event `struc:"skip"` + Config configm.MapNode } // 这里存储星球的map diff --git a/logic/service/space/space.go b/logic/service/space/space.go index 0771c286..0fb1dea4 100644 --- a/logic/service/space/space.go +++ b/logic/service/space/space.go @@ -207,10 +207,7 @@ func (ret *Space) init() { Region: v.NodeID, //这个是注册的index Hp: v.HP, PosInfo: ParseCoordinateString(v.Pos), - MaxHP: int(v.HP), - } - if v.Event != nil { - info.Event = *v.Event + Config: v, } ret.MapBossSInfo.INFO = append(ret.MapBossSInfo.INFO, info) @@ -245,10 +242,16 @@ func (p *Space) IsMatch(t model.Event) bool { } func (ret *Space) GenBoss() { - + var res info.MapBossSInfo + res.Wer = ret.Wer for i := 0; i < len(ret.MapBossSInfo.INFO); i++ { - if !ret.IsMatch(ret.MapBossSInfo.INFO[i].Event) { - ret.MapBossSInfo.INFO[i].IsShow = 0 + if !ret.IsMatch(*ret.MapBossSInfo.INFO[i].Config.Event) { + + if ret.MapBossSInfo.INFO[i].IsShow != 0 { + ret.MapBossSInfo.INFO[i].IsShow = 0 + res.INFO = append(res.INFO, ret.MapBossSInfo.INFO[i]) + } + continue } s := len(ret.MapBossSInfo.INFO[i].PosInfo) @@ -260,15 +263,16 @@ func (ret *Space) GenBoss() { if ret.IsChange { ret.MapBossSInfo.INFO[i].IsShow = 2 } + res.INFO = append(res.INFO, ret.MapBossSInfo.INFO[i]) } - ret.Broadcast(nil, 2021, &ret.MapBossSInfo) + ret.Broadcast(nil, 2021, &res) } func (ret *Space) HealHP() { for _, v := range ret.MapBossSInfo.INFO { - atomic.StoreInt32(&v.Hp, int32(v.MaxHP)) + atomic.StoreInt32(&v.Hp, int32(v.Config.HP)) } } func (ret *Space) GenWer() {