From e00a2292aecce6851eb9ad401d1d33853d4cf27d Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 26 Aug 2025 11:59:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E8=AE=A2=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E6=89=8B=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Gm.go | 2 +- src/server/game/Player.go | 3 +++ src/server/game/RegisterNetworkFunc.go | 2 +- src/server/game/mod/order/Order.go | 33 +++++++++++++++++++++----- src/server/game/mod/quest/Quest.go | 4 +++- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/server/game/Gm.go b/src/server/game/Gm.go index 8d1aab46..c1a49eff 100644 --- a/src/server/game/Gm.go +++ b/src/server/game/Gm.go @@ -91,7 +91,7 @@ func ReqGmCommand_(player *Player, Command string) error { player.PushClientRes(player.PlayerBaseMod.BackAsset()) player.initAcitivity() player.PlayMod.getGuideTaskMod().Unlock(num) - player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV) + player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV, nil, 1) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) player.BackDataActivity() case "zeroUpdate": diff --git a/src/server/game/Player.go b/src/server/game/Player.go index b093c406..caa106ce 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -532,6 +532,9 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { if err != nil { return err } + if v.Num < 0 { + p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_STAR, A: []interface{}{-v.Num}}) + } p.TeLog("asset_change", map[string]interface{}{ "item_id": v.Id, "change_type": change_type, diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index e9fc9c81..ca2fac2b 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -343,7 +343,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { } else { OrderMod.CreateOrderSeed(NewOrder) } - OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER) + OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul) player.FormatOrderReward() // 存钱罐增加钻石 PiggyBankMod := player.PlayMod.getPiggyBankMod() diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 5589d2e2..5724bc43 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -72,13 +72,16 @@ func (o *OrderMod) InitData() { } if len(o.OrderList) == 0 { o.OrderList = make(map[int]Order) - o.TriggerOrder(1, TRIGGER_TYPE_ORDER) + o.TriggerOrder(1, TRIGGER_TYPE_ORDER, nil, 1) } for k, v := range o.OrderList { if GoUtil.InArray(0, v.MergeId) || len(v.MergeId) == 0 { delete(o.OrderList, k) } } + if o.Auto_id == 0 { + o.Auto_id = 10000 + } } func (o *OrderMod) GetOrderList() map[int]Order { @@ -166,7 +169,7 @@ func (o *OrderMod) CreatOrderPool(lv int, Emit []int, EnergyMul int) error { } // 触发生成新的固定订单 -func (o *OrderMod) TriggerOrder(lv int, Type string) error { +func (o *OrderMod) TriggerOrder(lv int, Type string, Emit []int, EnergyMul int) error { TriggerOrderList := orderCfg.GetStartOrderList() for _, v := range TriggerOrderList { if GoUtil.InArray(v.Id, o.FinishOrder) { @@ -177,12 +180,12 @@ func (o *OrderMod) TriggerOrder(lv int, Type string) error { continue } if v.Preview != "" && !exists { - if o.CheckCondition(lv, v.Preview, Type) { + if o.CheckCondition(lv, v.Preview, Type, Emit) { o.addFixOrder(v.Id, v.MergeList, Preview_type, v.Items) } } if v.Appear != "" { - if o.CheckCondition(lv, v.Appear, Type) { + if o.CheckCondition(lv, v.Appear, Type, Emit) { if exists { orderInfo.Type = Fixed_type o.OrderList[v.Id] = orderInfo @@ -192,10 +195,21 @@ func (o *OrderMod) TriggerOrder(lv int, Type string) error { } } } + if lv >= 12 { + normalOrder := 0 + for _, v := range o.OrderList { + if v.Type == Common_type { + normalOrder++ + } + } + for i := normalOrder; i < 3; i++ { + o.CreateNormalOrder(lv, Emit, EnergyMul) + } + } return nil } -func (o *OrderMod) CheckCondition(lv int, condition, Type string) bool { +func (o *OrderMod) CheckCondition(lv int, condition, Type string, Emit []int) bool { r1 := strings.Split(condition, "|") for _, v := range r1 { r2 := strings.Split(v, "=") @@ -224,6 +238,14 @@ func (o *OrderMod) CheckCondition(lv int, condition, Type string) bool { if !GoUtil.InArray(id, o.FinishOrder) && !ok { return false } + case "Emit": + Class := []string{} + for _, v := range Emit { + Class = append(Class, mergeDataCfg.GetColorById(v)) + } + if !GoUtil.InStringArray(r2[1], Class) { + return false + } } } return true @@ -231,7 +253,6 @@ func (o *OrderMod) CheckCondition(lv int, condition, Type string) bool { // 生成新订单 func (o *OrderMod) CreateOrder(lv int, Emit []int, EnergyMul int) error { - return nil if len(Emit) == 0 { return nil } diff --git a/src/server/game/mod/quest/Quest.go b/src/server/game/mod/quest/Quest.go index e6318444..e68beb3c 100644 --- a/src/server/game/mod/quest/Quest.go +++ b/src/server/game/mod/quest/Quest.go @@ -18,7 +18,8 @@ const ( TRIGGER_LABEL_MERGELVTIME = "MergeLvTime" TRIGGER_LABEL_FINISHORDER = "FinishOrder" TRIGGER_LABEL_ENERGY = "Energy" - TRIGGER_LABEL_STAR = "Star" // 收集宠物币 + TRIGGER_LABEL_STAR = "Star" // 收集宠物币 + TRIGGER_LABEL_DIAMOND = "Diamond" // 消耗钻石 TRIGGER_LABEL_MERGETIME = "MergeTime" TRIGGER_LABEL_STOKECAT = "StokeCat" TRIGGER_LABEL_TAKECAT = "TakeCat" @@ -75,6 +76,7 @@ func TriggerQuestProgress(q *QuestProgress, Tr *Trigger) bool { switch q.Label { case TRIGGER_LABEL_ENERGY, TRIGGER_LABEL_STAR, + TRIGGER_LABEL_DIAMOND, TRIGGER_LABEL_DECORATE: // 消耗x能量 AddNum := Tr.A[0].(int) q.Num += AddNum