diff --git a/src/server/conf/order/orderCfg.go b/src/server/conf/order/orderCfg.go index 33e17d71..3cf90b24 100644 --- a/src/server/conf/order/orderCfg.go +++ b/src/server/conf/order/orderCfg.go @@ -157,3 +157,11 @@ func GetMaxStep() int { } return max } + +func GetOrderType(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_START_ORDER, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "type") +} diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 3ab03891..bd2f275f 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -10,11 +10,13 @@ import ( "server/conf" cardCfg "server/conf/card" chargeCfg "server/conf/charge" + decorateCfg "server/conf/decorate" limitedTimeEventCfg "server/conf/limitedTimeEvent" mailCfg "server/conf/mail" mergeDataCfg "server/conf/mergeData" orderCfg "server/conf/order" playroomCfg "server/conf/playroom" + userCfg "server/conf/user" "server/db" "server/game/mod/activity" "server/game/mod/card" @@ -980,12 +982,33 @@ func (player *Player) GetPetOrderItemExp() int { return playroomCfg.GetPetOrderItemExpByList(itemList) } -// 弃用 func (player *Player) FormatOrderReward() { - OrderMod := player.PlayMod.getOrderMod() + Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel()) + BaseMod := player.PlayMod.getBaseMod() DecorateMod := player.PlayMod.getDecorateMod() ChessMod := player.PlayMod.getChessMod() OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) + ExpCoin := (Exp-BaseMod.GetExp())*decorateCfg.GetAreaPerPExp(DecorateMod.GetAreaId()) - BaseMod.GetStar() + PExpCoin := (PExp-BaseMod.GetPExp())*50 - player.GetPetOrderItemExp() + OrderMod := player.PlayMod.getOrderMod() + if ExpCoin > PExpCoin || BaseMod.GetLevel() < 6 { + for k, v := range OrderMod.GetOrderList() { + if len(v.Items) != 0 { + continue + } + if v.Type != order.Common_type { + continue + } + Star := order.GetOrderStar(v.MergeId) + Star = int(float64(Star)*float64(OrderFactor)/10) * 10 + v.Items = append(v.Items, &item.Item{ + Id: item.ITEM_STAR_ID, + Num: Star, + }) + OrderMod.OrderList[k] = v + } + return + } for k, v := range OrderMod.GetOrderList() { if len(v.Items) != 0 { continue @@ -993,9 +1016,16 @@ func (player *Player) FormatOrderReward() { if v.Type != order.Common_type { continue } + Items := make([]*item.Item, 0) Star := order.GetOrderStar(v.MergeId) Star = int(float64(Star)*float64(OrderFactor)/10) * 10 - v.Items = append(v.Items, item.NewItem(item.ITEM_STAR_ID, Star)) + Items = player.GetPetOrderReward(Star, Items) + if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID { + v.Type = order.Common_type + } else { + v.Type = order.Pet_type + } + v.Items = Items OrderMod.OrderList[k] = v } // 触发式订单 满足条件生成零件订单 diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index d9a9b263..8a0d272c 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -40,11 +40,11 @@ func UnitChessShop(p *Player) error { func UnitOrder(p *Player) error { OrderMod := p.PlayMod.getOrderMod() - ChessMod := p.PlayMod.getChessMod() - BaseMod := p.PlayMod.getBaseMod() + // ChessMod := p.PlayMod.getChessMod() + // BaseMod := p.PlayMod.getBaseMod() OrderMod.OrderList = make(map[int]order.Order) for i := 0; i < 1000; i++ { - err := OrderMod.CreateNormalOrder(BaseMod.GetLevel(), ChessMod.GetEmitList(), BaseMod.EnergyMul) + err := OrderMod.CreateNormalOrder(17, []int{87, 109, 145, 170, 189}, 2) if err != nil { return err } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 08f557dc..216fced8 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -2,6 +2,7 @@ package order import ( "fmt" + "log" "server/GoUtil" limitedTimeEventCfg "server/conf/limitedTimeEvent" mergeDataCfg "server/conf/mergeData" @@ -52,6 +53,7 @@ const ( Pet_type = 11 // 宠物订单 Preview_type = 12 // 预览订单 Fixed_type = 13 // 固定订单 + Playroom_type = 14 // playroom装饰物订单 DIFF_LOW = 1 // 低难度 DIFF_MID = 2 // 中难度 @@ -199,11 +201,16 @@ func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) } if v.Appear != "" { if o.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) { + Type := Fixed_type + OrderType := orderCfg.GetOrderType(v.Id) + if OrderType != 0 { + Type = OrderType + } if exists { orderInfo.Type = Fixed_type o.OrderList[v.Id] = orderInfo } else { - o.addFixOrder(v.Id, v.MergeList, Fixed_type, v.Items) + o.addFixOrder(v.Id, v.MergeList, Type, v.Items) } } } @@ -411,7 +418,7 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul int) error { } break } - // log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) + log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) o.addOrder(mergeList, OrderDiff, Common_type) return nil }