装饰增加宠物经验

This commit is contained in:
hahwu 2025-06-03 10:21:53 +08:00
parent 4e50670358
commit af29896e76
3 changed files with 26 additions and 10 deletions

View File

@ -116,3 +116,18 @@ func GetAreaPerPExp(AreaId int) int {
} }
return gamedata.ParseInt(data["PerPExp"]) return gamedata.ParseInt(data["PerPExp"])
} }
func GetDecoratePExp(AreaId, SortId int) int {
data, err := gamedata.GetData(DECORATE_AREA)
if err != nil {
log.Debug("DecorateArea GetDecoratePExp not found")
return 0
}
for _, v := range data {
v1 := v.(map[string]interface{})
if gamedata.ParseInt(v1["AreaId"]) == AreaId && gamedata.ParseInt(v1["SortId"]) == SortId {
return gamedata.GetIntValue(v1, "PetExp")
}
}
return 0
}

View File

@ -405,7 +405,7 @@ func ReqDecorate(player *Player, buf []byte) error {
DecorateMod := player.PlayMod.getDecorateMod() DecorateMod := player.PlayMod.getDecorateMod()
DecorateId := int(req.DecorateId) DecorateId := int(req.DecorateId)
AreaId := int(req.AreaId) AreaId := int(req.AreaId)
CostItem := DecorateMod.GetDecorateCostItem(AreaId, DecorateId) CostItem, PetExp := DecorateMod.GetDecorateCostItem(AreaId, DecorateId)
err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResDecorate{ player.SendErrClienRes(&msg.ResDecorate{
@ -431,8 +431,7 @@ func ReqDecorate(player *Player, buf []byte) error {
}) })
return err return err
} }
_, err = player.GetPlayerBaseMod().AddExp(player, 10, PetExp)
_, err = player.GetPlayerBaseMod().AddExp(player, 10, 0)
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResDecorate{ player.SendErrClienRes(&msg.ResDecorate{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,
@ -480,7 +479,7 @@ func ReqDecorateAll(player *Player, buf []byte) error {
return errors.New("等级不足") return errors.New("等级不足")
} }
PlayerBaseMod := player.GetPlayerBaseMod() PlayerBaseMod := player.GetPlayerBaseMod()
CostItem, AddItem, DecorateNum, DecorateList, Log := DecorateMod.DecorateAll(PlayerBaseMod.GetStar()) CostItem, AddItem, DecorateNum, DecorateList, Log, PetExp := DecorateMod.DecorateAll(PlayerBaseMod.GetStar())
err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具 err := player.HandleItem(CostItem, msg.ITEM_POP_LABEL_DecorateCost.String()) // 扣除道具
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResDecorateAll{ player.SendErrClienRes(&msg.ResDecorateAll{
@ -499,7 +498,7 @@ func ReqDecorateAll(player *Player, buf []byte) error {
return err return err
} }
_, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum, 0) _, err = player.GetPlayerBaseMod().AddExp(player, 10*DecorateNum, PetExp)
if err != nil { if err != nil {
player.SendErrClienRes(&msg.ResDecorateAll{ player.SendErrClienRes(&msg.ResDecorateAll{
Code: msg.RES_CODE_FAIL, Code: msg.RES_CODE_FAIL,

View File

@ -48,12 +48,13 @@ func (d *Decorate) Decorate(areaId int, decorateId int) ([]*item.Item, error) {
} }
// 获取装饰消耗 // 获取装饰消耗
func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) []*item.Item { func (d *Decorate) GetDecorateCostItem(AreaId, DecorateId int) ([]*item.Item, int) {
Item := decorateCfg.GetStarCost(AreaId, DecorateId) Item := decorateCfg.GetStarCost(AreaId, DecorateId)
return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -Item)} PetExp := decorateCfg.GetDecoratePExp(AreaId, DecorateId)
return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -Item)}, PetExp
} }
func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}) { func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) {
DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId) DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId)
SubAlice := GoUtil.SubSlices(DecorateAll, GoUtil.MapIntToIntSlice(d.FinishList)) SubAlice := GoUtil.SubSlices(DecorateAll, GoUtil.MapIntToIntSlice(d.FinishList))
sort.Ints(SubAlice) sort.Ints(SubAlice)
@ -62,8 +63,8 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int
DecorateList := make([]int, 0) DecorateList := make([]int, 0)
Log := make([]interface{}, 0) Log := make([]interface{}, 0)
Num := 0 Num := 0
PetExp := 0
for _, v := range SubAlice { for _, v := range SubAlice {
NeedStar := decorateCfg.GetStarCost(d.AreaId, v) NeedStar := decorateCfg.GetStarCost(d.AreaId, v)
if Star < NeedStar { if Star < NeedStar {
break break
@ -89,6 +90,7 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int
} }
} }
PetExp += decorateCfg.GetDecoratePExp(d.AreaId, v)
AddItem = append(AddItem, Item...) AddItem = append(AddItem, Item...)
DecorateList = append(DecorateList, v) DecorateList = append(DecorateList, v)
} }
@ -99,7 +101,7 @@ func (d *Decorate) DecorateAll(Star int) ([]*item.Item, []*item.Item, int, []int
d.FinishList = make(map[int]struct{}) d.FinishList = make(map[int]struct{})
} }
return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -SubItem)}, AddItem, Num, DecorateList, Log return []*item.Item{item.NewItem(item.ITEM_STAR_ID, -SubItem)}, AddItem, Num, DecorateList, Log, PetExp
} }
// 获取装饰信息 // 获取装饰信息