diff --git a/src/server/conf/base/BaseCfg.go b/src/server/conf/base/BaseCfg.go index 294c6e5d..843d5f36 100644 --- a/src/server/conf/base/BaseCfg.go +++ b/src/server/conf/base/BaseCfg.go @@ -54,3 +54,11 @@ func GetMaxEnergyMul(Lv int, Energy int) int { } return Mul } + +func GetLimitEnergyMul(Lv int) int { + data, err := gamedata.GetDataByIntKey(ENERGY_CFG, Lv+1) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "Limit") +} diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 56191f5b..d800553f 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -435,6 +435,8 @@ func (p *PlayerBaseData) AddEnergy(player *Player, cnt int) error { } if cnt < 0 { player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_ENERGY, A: []interface{}{-cnt}}) + BaseMod.FormatEnergyMul(NewEnergy) + p.p.PushClientRes(BaseMod.BackData()) } if BaseMod.Energy >= p.GetMaxEnergy() && NewEnergy < p.GetMaxEnergy() { Recover := userCfg.GetRecover(int(BaseMod.Level)) @@ -527,7 +529,6 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int) (int, error) { PlayroomMod.UnLock(int(BaseMod.Level)) player.PushClientRes(p.BackAsset()) return upLv, nil - } func (p *PlayerBaseData) GetLevel() int { diff --git a/src/server/game/mod/base/Base.go b/src/server/game/mod/base/Base.go index 1a31bccf..812f8a22 100644 --- a/src/server/game/mod/base/Base.go +++ b/src/server/game/mod/base/Base.go @@ -211,3 +211,20 @@ func (b *Base) GetEnergyByAD() ([]*item.Item, error) { b.EnergyAD += 1 return []*item.Item{{Id: item.ITEM_ENERGY_ID, Num: 25}}, nil } + +func (b *Base) FormatEnergyMul(Energy int) { + for { + EnergyLimit := baseCfg.GetLimitEnergyMul(b.Level) + if EnergyLimit == 0 { + return + } + if Energy > EnergyLimit { + return + } + b.EnergyMul-- + if b.EnergyMul < 0 { + b.EnergyMul = 0 + return + } + } +}