diff --git a/src/server/game/mod/playroom/playroom.go b/src/server/game/mod/playroom/playroom.go index dd00889c..5c7c8735 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 8ae4a1e2..83362e8d 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -260,6 +260,7 @@ func (p *Player) InitPlayer(UserName string) error { ChargeMod.FixBug(ChessMod.GetEmitList()) p.FixOrderBug() p.FixDecorate() + p.FixPlayroomPyhical() return nil } @@ -1388,3 +1389,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()) + } + } +}