From 26be4af8a7bb690ead2a563bec0c6e45dbcedb1a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:26:17 +0800 Subject: [PATCH] =?UTF-8?q?playroom=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/playroom/playroomCfg.go | 23 +++++++++++++++++++++++ src/server/game/LimitedTimeTrigger.go | 11 +++++++++++ src/server/game/PlayerBaseMod.go | 2 ++ 3 files changed, 36 insertions(+) diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index 990937f1..e98a1f9a 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -161,5 +161,28 @@ func GetPhysiologyMax(Id int) int { } func GetPhysiologyDuration(Id int, Num int) int { + data, err := gamedata.GetData(CFG_PLAYROOM_PHYSIOLOGY) + if err != nil { + return 0 + } + for _, v := range data { + Type := gamedata.GetIntValue(v, "Type") + if Type != Id { + continue + } + Min := gamedata.GetIntValue(v, "Min") + Max := gamedata.GetIntValue(v, "Max") + if Num >= Min && Num <= Max { + return gamedata.GetIntValue(v, "Per") + } + } return 0 } + +func GetMoodEffect(Id int) (int, int) { + data, err := gamedata.GetDataByIntKey(CFG_PLAYROOM_PHYSIOLOGY_TYPE, Id) + if err != nil { + return 0, 0 + } + return gamedata.GetIntValue(data, "MType"), gamedata.GetIntValue(data, "MEffect") +} diff --git a/src/server/game/LimitedTimeTrigger.go b/src/server/game/LimitedTimeTrigger.go index ba47ba09..ca578bb7 100644 --- a/src/server/game/LimitedTimeTrigger.go +++ b/src/server/game/LimitedTimeTrigger.go @@ -11,6 +11,7 @@ import ( "server/game/mod/item" "server/game/mod/limitedTimeEvent" MsgMod "server/game/mod/msg" // Ensure this package exists and is correctly referenced + "server/game/mod/playroom" "server/msg" "time" ) @@ -145,6 +146,7 @@ func LimitedTimePlayroomTrigger(p *Player) { LimitedTimePlayroomTrigger_(p, k) } } + p.PushClientRes(PlayroomMod.NotifyMood()) } func LimitedTimePlayroomTrigger_(p *Player, Id int) { PlayroomMod := p.PlayMod.getPlayroomMod() @@ -155,6 +157,15 @@ func LimitedTimePlayroomTrigger_(p *Player, Id int) { } NewTime, Num := PlayroomTrigger(Physiology.Id, Physiology.Time, Physiology.Num) Physiology.Time = NewTime + DiffValue := Physiology.Num - Num + MType, MEffect := playroomCfg.GetMoodEffect(Physiology.Id) + CleanMood := PlayroomMod.GetMoodInfo(playroom.MOOD_TYPE_CLEAN) + // 上厕所数值为0 且清洁度大于50时,清洁度降至50 + if Id == playroom.PHYSIOLOGY_TYPE_TOLIET && Num == 0 && CleanMood.Num > 50 { + CleanMood.Num = 50 + } else { + PlayroomMod.AddMood(MType, MEffect*DiffValue) + } Physiology.Num = Num p.PlayMod.save() PlayroomBackData(p) diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index e81d89de..56191f5b 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -523,6 +523,8 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int) (int, error) { return 0, err } } + PlayroomMod := player.PlayMod.getPlayroomMod() + PlayroomMod.UnLock(int(BaseMod.Level)) player.PushClientRes(p.BackAsset()) return upLv, nil