diff --git a/src/server/conf/order/orderCfg.go b/src/server/conf/order/orderCfg.go index b786ee05..85f90e49 100644 --- a/src/server/conf/order/orderCfg.go +++ b/src/server/conf/order/orderCfg.go @@ -33,7 +33,8 @@ func GetOrderK(Lv int) int { } Energy := gamedata.GetIntValue(data, "Energy") K := gamedata.GetFloatValue(data, "K") - return int(float64((Energy/10)*10) * K) + a := float64(Energy)*K/10 + 0.5 + return int(a) * 10 } func GetOrderFactor(Scene int) int { diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index f6556fd3..04e0c630 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -553,6 +553,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) } } EmitRetireTrigger2(player) + player.InitOrderItem() player.PushClientRes(p.BackAsset()) return upLv, nil } diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 9cee41c3..7e07467a 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -105,6 +105,7 @@ func (p *PlayerChessData) UpdatePlayerChessData(player *Player, buf []byte) erro ChessMod.ChessMap = update.MChessData Update := OrderMod.CreateExtraOrder(AddChessList, AddNewEmit, ChessMod.GetUnlockChessList(), BaseMod.GetEnergyMul(), BaseMod.GetLevel()) if Update { + player.InitOrderItem() player.PushClientRes(OrderMod.BackData()) } return nil @@ -283,6 +284,7 @@ func (p *PlayerChessData) HandleChess(player *Player, handle_list []*msg.ChessHa } player.QuestTriggerList(TriggerList) EmitRetireTrigger1(player) + player.InitOrderItem() player.PushClientRes(ChessMod.BackData()) player.PlayMod.save() return AddChessList, AddNewEmit, nil diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index ab3828cc..a79a04b8 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -1221,20 +1221,27 @@ func (player *Player) CreateNormalOrder() { return } OrderMod.CreateOrder(BaseMod.GetLevel(), ChessMod.GetOrderEmit(), BaseMod.GetEnergyMul(), order.Common_type) + +} +func (player *Player) InitOrderItem() { + OrderMod := player.PlayMod.getOrderMod() + DecorateMod := player.PlayMod.getDecorateMod() + ChessMod := player.PlayMod.getChessMod() + OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) for k, v := range OrderMod.GetOrderList() { - if k == OrderMod.Auto_id { - if v.Type != order.Common_type { - continue - } - Items := make([]*item.Item, 0) - Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit()) - Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 - v.Items = append(Items, &item.Item{Id: item.ITEM_STAR_ID, Num: Star}) - OrderMod.OrderList[k] = v + if v.Type == order.Super_type { + continue } + if len(v.Items) != 0 { + continue + } + Items := make([]*item.Item, 0) + Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) + Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 + v.Items = append(Items, &item.Item{Id: item.ITEM_STAR_ID, Num: Star}) + OrderMod.OrderList[k] = v } } - func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item { OrderItem := playroomCfg.GetOrderItem(Star) type sortData struct { diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 3fdcf481..3d544a87 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -146,6 +146,8 @@ func RegSetEneryFunc(player *Player, buf []byte) error { Emit := player.PlayMod.getChessMod().GetOrderEmit() ChessList := player.PlayMod.getChessMod().GetUnlockChessList() OrderMod.ChangeEnergyMul(Lv, Emit, int(req.EnergyMul), ChessList) + player.InitOrderItem() + player.PlayMod.save() player.PushClientRes(OrderMod.BackData()) player.PushClientRes(player.PlayMod.getBaseMod().BackData()) return nil @@ -365,6 +367,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul) player.AddOrder() player.AddHighOrder() + player.InitOrderItem() // 存钱罐增加钻石 PiggyBankMod := player.PlayMod.getPiggyBankMod() PiggyBankMod.Trigger() @@ -637,6 +640,7 @@ func ReqGetChessFromBuff(player *Player, buf []byte) error { } triggerComposeChess(player, ChessId, player.PlayMod.getBaseMod().EnergyMul, player.PlayMod.getChessMod().GetEmitList()) EmitRetireTrigger1(player) + player.InitOrderItem() player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResGetChessFromBuff{ @@ -747,6 +751,7 @@ func ReqTakeChessOutBag(player *Player, buf []byte) error { "bag_id": req.BagId, "chess_id": ChessId, }) + player.InitOrderItem() player.PlayMod.save() player.PushClientRes(ChessMod.BackData()) player.PushClientRes(&msg.ResTakeChessOutBag{ diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index e6b8d615..f8ad36ec 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -4,6 +4,7 @@ import ( "fmt" "math" mergeDataCfg "server/conf/mergeData" + orderCfg "server/conf/order" "server/game/mod/decorate" "server/game/mod/item" "server/game/mod/order" @@ -306,7 +307,10 @@ func UnitPlayroomOrder(p *Player) error { func UnitPetOrder(p *Player) error { p.AddOrder() ChessMod := p.PlayMod.getChessMod() - a := order.GetOrderStar([]int{246, 15}, ChessMod.GetOrderEmit()) + DecorateMod := p.PlayMod.getDecorateMod() + OrderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) + Star := order.GetOrderStar([]int{307, 1026}, ChessMod.GetStarEmitList()) + a := int(float64(Star)*float64(OrderFactor)/1000+0.5) * 10 fmt.Print(a) return nil } diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 6ef3ebd7..2e294cad 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -261,7 +261,31 @@ func (cb *ChessBorad) RemoveChess(Id int) error { } return nil } - +func (cb *ChessBorad) GetStarEmitList() []int { + result := make([]int, 0, len(cb.EmitList)) + EM := make(map[string]int) + for k, v := range cb.EmitList { + if v <= 0 { + delete(cb.EmitList, k) + continue + } + EmitID := mergeDataCfg.GetEmitId(k) + if EmitID == "" { + continue + } + EmitType := mergeDataCfg.GetEmitType(k) + if EmitType == "sub" { + continue + } + if v > 0 { + EM[EmitID] = max(EM[EmitID], k) + } + } + for _, v := range EM { + result = append(result, v) + } + return result +} func (cb *ChessBorad) GetEmitList() []int { result := make([]int, 0, len(cb.EmitList)) EM := make(map[string]int) diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index d1ee9a69..0a5d04cd 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -143,14 +143,14 @@ func getChessByDiff(Lv, Diff, Type int) (int, int, int) { if Type == Common_type { switch Diff { case DIFF_MID: - return 100, 600, GoUtil.RandMap(map[int]int{1: 33, 2: 67}) + return 100, 600, GoUtil.RandMap(map[int]int{1: 50, 2: 50}) case DIFF_HIGH: - return 500, 1200, GoUtil.RandMap(map[int]int{1: 67, 2: 33}) + return 500, 1200, GoUtil.RandMap(map[int]int{1: 33, 2: 67}) default: if Lv < 23 { - return 15, 150, GoUtil.RandMap(map[int]int{1: 33, 2: 67}) + return 15, 150, GoUtil.RandMap(map[int]int{1: 67, 2: 33}) } - return 30, 200, GoUtil.RandMap(map[int]int{1: 50, 2: 50}) + return 30, 200, GoUtil.RandMap(map[int]int{1: 67, 2: 33}) } } if Type == Pet_type { @@ -667,7 +667,8 @@ func GetOrderStar(ChessList []int, EmitList []int) int { continue } NewChessLv := mergeDataCfg.DynamicLevRev(ChessLv, EmitId, Color) - Star += orderCfg.GetOrderK(NewChessLv) + n := orderCfg.GetOrderK(NewChessLv) + Star += n } return Star }