消耗品订单优化
This commit is contained in:
parent
b49d7dbec3
commit
2149ee404b
@ -568,14 +568,59 @@ func GetOrderItem(Star int) map[int][]gamedata.PetOrderItem {
|
||||
log.Debug("GetOrderItem Id is 0, Type:%v", Type)
|
||||
continue
|
||||
}
|
||||
GradeStr := gamedata.GetStringValue(v, "Grade")
|
||||
Grade := make([]int, 0)
|
||||
for _, v1 := range strings.Split(GradeStr, ",") {
|
||||
v2 := GoUtil.Int(v1)
|
||||
if v2 > 0 {
|
||||
Grade = append(Grade, v2)
|
||||
}
|
||||
}
|
||||
r[Type] = append(r[Type], gamedata.PetOrderItem{
|
||||
Id: Id,
|
||||
Star: ItemStar,
|
||||
Grade: Grade,
|
||||
})
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func GetOrderItemByGrade(Grade int) map[int][]int {
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM)
|
||||
if err != nil {
|
||||
log.Debug("GetOrderItemByGrade err:%v", err)
|
||||
return nil
|
||||
}
|
||||
r := make(map[int][]int)
|
||||
for k, v := range data {
|
||||
GradeStr := gamedata.GetStringValue(v, "Grade")
|
||||
GradeList := make([]int, 0)
|
||||
for _, v1 := range strings.Split(GradeStr, ",") {
|
||||
v2 := GoUtil.Int(v1)
|
||||
if v2 > 0 {
|
||||
GradeList = append(GradeList, v2)
|
||||
}
|
||||
}
|
||||
if !GoUtil.InArray(Grade, GradeList) {
|
||||
continue
|
||||
}
|
||||
Id := GoUtil.Int(k)
|
||||
Type := gamedata.GetIntValue(v, "Type")
|
||||
if Type == 0 {
|
||||
continue
|
||||
}
|
||||
if _, ok := r[Type]; !ok {
|
||||
r[Type] = make([]int, 0)
|
||||
}
|
||||
if Id == 0 {
|
||||
log.Debug("GetOrderItemByGrade Id is 0, Type:%v", Type)
|
||||
continue
|
||||
}
|
||||
r[Type] = append(r[Type], Id)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func GetOrderItemList() []int {
|
||||
data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM)
|
||||
if err != nil {
|
||||
|
||||
@ -1169,7 +1169,7 @@ func (player *Player) CreateNormalOrder() {
|
||||
}
|
||||
Items := make([]*item.Item, 0)
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
// Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
Items = player.GetPetOrderReward(Star, Items)
|
||||
if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID {
|
||||
v.Type = order.Common_type
|
||||
@ -1267,63 +1267,33 @@ func (player *Player) InitOrderItem() {
|
||||
}
|
||||
}
|
||||
func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item {
|
||||
OrderItem := playroomCfg.GetOrderItem(Star)
|
||||
type sortData struct {
|
||||
Type int
|
||||
Num int
|
||||
HighNum := Star / 225
|
||||
if HighNum > 0 {
|
||||
HighNum = min(HighNum, 3)
|
||||
Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_HIGH_ID, HighNum))
|
||||
Star -= HighNum * 225
|
||||
}
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
sortList := make([]sortData, 0)
|
||||
for k, v := range OrderItem {
|
||||
ids := make([]int, 0)
|
||||
for _, v1 := range v {
|
||||
if v1.Id == 0 {
|
||||
continue
|
||||
|
||||
MidNum := Star / 150
|
||||
if MidNum > 0 {
|
||||
MidNum = min(MidNum, 3)
|
||||
Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_MID_ID, MidNum))
|
||||
Star -= MidNum * 150
|
||||
}
|
||||
ids = append(ids, v1.Id)
|
||||
}
|
||||
Num := ItemMod.GetItemNumByList(ids)
|
||||
sortList = append(sortList, sortData{
|
||||
Type: k,
|
||||
Num: Num,
|
||||
})
|
||||
}
|
||||
if len(sortList) == 0 && Star > 0 {
|
||||
if len(Items) >= 2 {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star))
|
||||
return Items
|
||||
}
|
||||
|
||||
sort.Slice(sortList, func(i, j int) bool {
|
||||
return sortList[i].Num < sortList[j].Num
|
||||
})
|
||||
|
||||
ItemsId := OrderItem[sortList[0].Type]
|
||||
if len(ItemsId) == 0 {
|
||||
LowNum := Star / 75
|
||||
if LowNum > 0 {
|
||||
LowNum = min(LowNum, 3)
|
||||
Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_LOW_ID, LowNum))
|
||||
Star -= LowNum * 75
|
||||
}
|
||||
if Star > 0 {
|
||||
Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star))
|
||||
}
|
||||
return Items
|
||||
}
|
||||
|
||||
for k, v := range ItemsId {
|
||||
ItemNum := ItemMod.GetItem(v.Id)
|
||||
for _, v1 := range Items {
|
||||
if v1.Id == v.Id {
|
||||
ItemNum += v1.Num
|
||||
}
|
||||
}
|
||||
v.Num = ItemNum
|
||||
ItemsId[k] = v
|
||||
}
|
||||
sort.Slice(ItemsId, func(i, j int) bool {
|
||||
return ItemsId[i].Num < ItemsId[j].Num
|
||||
})
|
||||
Items = append(Items, item.NewItem(ItemsId[0].Id, 1))
|
||||
Star -= ItemsId[0].Star
|
||||
if Star <= 0 {
|
||||
return Items
|
||||
}
|
||||
if len(Items) >= 2 {
|
||||
return Items
|
||||
}
|
||||
return player.GetPetOrderReward(Star, Items)
|
||||
}
|
||||
|
||||
func ExcludeCardStar(CardList []int) []int {
|
||||
@ -1489,3 +1459,41 @@ func (p *Player) AddHighOrder2() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item {
|
||||
NewItems := make([]*item.Item, 0)
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
for _, v := range Items {
|
||||
if v.Id != item.ITEM_PLAYROOM_BOX_LOW_ID && v.Id != item.ITEM_PLAYROOM_BOX_MID_ID && v.Id != item.ITEM_PLAYROOM_BOX_HIGH_ID {
|
||||
NewItems = append(NewItems, v)
|
||||
continue
|
||||
}
|
||||
var OrderItem map[int][]int
|
||||
switch v.Id {
|
||||
case item.ITEM_PLAYROOM_BOX_LOW_ID:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(1)
|
||||
case item.ITEM_PLAYROOM_BOX_MID_ID:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(2)
|
||||
default:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(3)
|
||||
}
|
||||
feed := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_FEED)
|
||||
if feed.Num <= 1 {
|
||||
RandList := OrderItem[1]
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
continue
|
||||
}
|
||||
clean := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_CLEAN)
|
||||
if clean.Num <= 5 {
|
||||
RandList := OrderItem[2]
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
continue
|
||||
}
|
||||
RandList := make([]int, 0)
|
||||
for _, v1 := range OrderItem {
|
||||
RandList = append(RandList, v1...)
|
||||
}
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
}
|
||||
return NewItems
|
||||
}
|
||||
|
||||
@ -235,6 +235,9 @@ func ReqRewardOrder(player *Player, buf []byte) error {
|
||||
ChessMod := player.PlayMod.getChessMod()
|
||||
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
|
||||
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
|
||||
if OrderType == order.Pet_type {
|
||||
Item = player.FormatPetOrderItem(Item)
|
||||
}
|
||||
ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType))
|
||||
Item = item.Merge(Item, ActItem)
|
||||
if !OrderMod.CheckSuperOrder() {
|
||||
|
||||
@ -25,6 +25,9 @@ const (
|
||||
ITEM_LAUNCHER_lOW_ID = 1601
|
||||
ITEM_ENERGY_GIFT_ID = 562
|
||||
ITEM_DIAMOND_LV2_ID = 502
|
||||
ITEM_PLAYROOM_BOX_LOW_ID = 101445
|
||||
ITEM_PLAYROOM_BOX_MID_ID = 101446
|
||||
ITEM_PLAYROOM_BOX_HIGH_ID = 101447
|
||||
)
|
||||
|
||||
const (
|
||||
@ -52,6 +55,7 @@ const (
|
||||
ITEM_TYPE_PLAYROOM_DRESS = 112 // playroom服饰
|
||||
ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装
|
||||
ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装
|
||||
ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱
|
||||
)
|
||||
|
||||
func (i *ItemMod) InitData() {
|
||||
|
||||
@ -65,4 +65,5 @@ type PetOrderItem struct {
|
||||
Id int
|
||||
Star int
|
||||
Num int
|
||||
Grade []int
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user