From 7c64006080a5c716cf50bafeda0a8f989fcc6cd7 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 7 Feb 2025 11:59:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BF=BB=E5=80=8D=E6=8E=89=E6=A1=A3=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/base/BaseCfg.go | 8 ++++++++ src/server/game/PlayerBaseMod.go | 3 ++- src/server/game/mod/base/Base.go | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) 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 + } + } +}