package effect import ( "blazing/logic/service/fight/action" "blazing/logic/service/fight/info" "blazing/logic/service/fight/input" ) // 247. 固定增加体力/攻击/防御/特攻/特防/速度;(a1-a6: hp/atk/def/spatk/spdef/spd) type NewSel247 struct { NewSel0 } func (e *NewSel247) TurnStart(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) { if !e.IsOwner() { return } pet := e.Ctx().Our.CurPet[0] if pet == nil { return } hpBonus := uint32(e.Args()[0].IntPart()) if hpBonus > 0 { pet.Info.MaxHp += hpBonus pet.Info.Hp += hpBonus } for i, propIdx := range []int{0, 1, 2, 3, 4} { add := uint32(e.Args()[i+1].IntPart()) if add == 0 { continue } pet.Info.Prop[propIdx] += add } } func (e *NewSel247) TurnEnd() { if !e.IsOwner() { return } pet := e.Ctx().Our.CurPet[0] if pet == nil { return } hpBonus := uint32(e.Args()[0].IntPart()) if hpBonus > 0 { if pet.Info.MaxHp > hpBonus { pet.Info.MaxHp -= hpBonus } else { pet.Info.MaxHp = 1 } if pet.Info.Hp > pet.Info.MaxHp { pet.Info.Hp = pet.Info.MaxHp } } for i, propIdx := range []int{0, 1, 2, 3, 4} { sub := uint32(e.Args()[i+1].IntPart()) if sub == 0 { continue } if pet.Info.Prop[propIdx] > sub { pet.Info.Prop[propIdx] -= sub } else { pet.Info.Prop[propIdx] = 1 } } } type NewSel239 struct { NewSel0 } func (e *NewSel239) ActionStart(a, b *action.SelectSkillAction) bool { if !e.IsOwner() { return true } if e.Ctx().SkillEntity == nil { return true } if e.Ctx().SkillEntity.Category() == info.Category.STATUS { return true } if len(e.Args()) == 0 { return true } e.Ctx().SkillEntity.XML.Power += int(e.Args()[0].IntPart()) return true } func init() { input.InitEffect(input.EffectType.NewSel, 239, &NewSel239{}) input.InitEffect(input.EffectType.NewSel, 247, &NewSel247{}) }