From 47ffc52955b6798c069390e4660e66dafbc52c66 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 16 Mar 2026 19:37:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=8E=A9=E5=AE=B6=E7=BA=BF?= =?UTF-8?q?=E4=B8=8Aplayroom=E7=94=9F=E7=90=86=E5=80=BC=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/playroom/playroom.go | 20 ++++++++++++++++++++ src/server/game/player_base_mod.go | 2 ++ src/server/game/player_data.go | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go index 5bcf1826..1bcb2639 100644 --- a/src/server/game/mod/playroom/playroom.go +++ b/src/server/game/mod/playroom/playroom.go @@ -916,7 +916,27 @@ func (p *PlayroomMod) UnLock(Lv int) bool { p.MoodInfo[k] = &Mood{Id: k, Num: 100} } } + return true +} +func (p *PlayroomMod) FixUnLock(Lv int) bool { + UnlockLv := playroomCfg.GetUnLockLv() + if Lv < UnlockLv || len(p.Physiology) != 0 { + return false + } + Now := GoUtil.Now() + p.Physiology = make(map[int]*Physiology) + TypeList := playroomCfg.GetPhysiologyTypeList() + for _, v := range TypeList { + Max := playroomCfg.GetPhysiologyMax(v) + p.Physiology[v] = &Physiology{Id: v, Num: Max, Time: Now} + } + if len(p.MoodInfo) == 0 { + p.MoodInfo = make(map[int]*Mood) + for k := 1; k <= 3; k++ { + p.MoodInfo[k] = &Mood{Id: k, Num: 100} + } + } return true } diff --git a/src/server/game/player_base_mod.go b/src/server/game/player_base_mod.go index b4d4cbbc..3de3f0c2 100644 --- a/src/server/game/player_base_mod.go +++ b/src/server/game/player_base_mod.go @@ -567,6 +567,8 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) player.TeLog("level_up", map[string]interface{}{ "after_level": BaseMod.Level, }) + PlayroomMod := player.PlayMod.getPlayroomMod() + PlayroomMod.UnLock(BaseMod.GetLevel()) NewExpLv, NewPetLv := userCfg.GetNewLevUpExp(BaseMod.Level, BaseMod.Exp, BaseMod.PExp) player.TeLog("property_level_up", map[string]interface{}{ "property_level": BaseMod.Level, diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 70f6ff7f..3434b743 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -270,6 +270,7 @@ func (p *Player) InitPlayer(UserName string) error { ChargeMod.FixBug(ChessMod.GetEmitList()) p.FixOrderBug() p.FixDecorate() + p.FixPlayroomPyhical() return nil } @@ -1407,3 +1408,13 @@ func (p *Player) Lock() { func (p *Player) UnLock() { p.lock.Unlock() } + +func (p *Player) FixPlayroomPyhical() { + if p.GetBaseMod().GetLevel() >= playroomCfg.GetUnLockLv() { + PlayroomMod := p.PlayMod.getPlayroomMod() + if len(PlayroomMod.GetPhysiologyList()) != len(playroomCfg.GetPhysiologyTypeList()) { + PlayroomMod.Physiology = make(map[int]*playroom.Physiology) + PlayroomMod.UnLock(p.GetBaseMod().GetLevel()) + } + } +}