diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 598a8442..da2bd2e4 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -15,6 +15,7 @@ import ( userCfg "server/conf/user" "server/game/mod/activity" "server/game/mod/card" + "server/game/mod/decorate" "server/game/mod/friend" "server/game/mod/item" limitedTimeEvent "server/game/mod/limited_time_event" @@ -849,6 +850,36 @@ func (player *Player) FixOrderBug() { } } +func (player *Player) FixDecorate() { + DecorateMod := player.PlayMod.getDecorateMod() + area_id := DecorateMod.GetAreaId() + progress := DecorateMod.GetProgress() + if GoUtil.InArray(area_id, []int{3, 4, 5}) && progress >= 20 { + items := []*item.Item{} + for i := progress + 1; i <= 25; i++ { + DecorateItems := decorateCfg.GetProgressReward(area_id, i) + items = append(items, DecorateItems...) + } + MailMod := player.PlayMod.getMailMod() + MailMod.SendMail(&mail.MailStruct{ + Title: "房间装饰升级奖励", + Content: "恭喜您成功升级房间装饰,获得以下奖励!", + TitleEn: "Room Decoration Upgrade Reward", + ContentEn: "Congratulations on successfully upgrading your room decoration and receiving the following rewards!", + Items: items, + Type: mail.MAIL_TYPE_NORMAL, + }) + DecorateMod.AreaId = area_id + 1 + DecorateMod.FinishList = make(map[int]struct{}) + DecorateMod.Progress = 0 + DecorateMod.PartCost = make(map[int]*decorate.PartCostInfo) + DecorateMod.PartClassPool = []int{} + DecorateMod.PartPool = make(map[int]int) + DecorateMod.InitData() + player.PushClientRes(DecorateMod.BackData()) + } +} + func (player *Player) CreatePetOrder() { BaseMod := player.PlayMod.getBaseMod() ChessMod := player.PlayMod.getChessMod() diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index f0e3c1af..b2a1f377 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -259,7 +259,7 @@ func (p *Player) InitPlayer(UserName string) error { ChessMod := p.PlayMod.getChessMod() ChargeMod.FixBug(ChessMod.GetEmitList()) p.FixOrderBug() - + p.FixDecorate() return nil } diff --git a/src/server/test/fix_test.go b/src/server/test/fix_test.go new file mode 100644 index 00000000..ca9709f9 --- /dev/null +++ b/src/server/test/fix_test.go @@ -0,0 +1,21 @@ +package test + +import ( + "server/game" + "testing" +) + +func TestFixDecorate(t *testing.T) { + // Initialize player + p := new(game.Player) + p.FixDecorate() + + // + p.InitPlayer("aaa001") + p.FixDecorate() + + DecorateMod := p.GetDecorateMod() + DecorateMod.AreaId = 3 + DecorateMod.Progress = 22 + p.FixDecorate() +}