package limitedTimeEventCfg import ( "server/GoUtil" "server/game/mod/item" "server/gamedata" "server/pkg/github.com/name5566/leaf/log" "sort" "strings" ) const ( CFG_LIMITED_TIME_EVENT = "LimitedTimeEvent" CFG_LIMITED_TIME_EVENT_METEOR = "LimitedTimeEventMeteor" CFG_LIMITED_TIME_EVENT_CHEST = "LimitedTimeEventChest" CFG_LIMITED_TIME_EVENT_ORDER = "LimitedTimeEventOrder" CFG_LIMITED_TIME_EVENT_SENCE = "LimitedTimeEventSence" CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT = "LimitedTimeEventSenceJackpot" CFG_LIMITED_TIME_EVENT_FAST = "LimitedTimeEventFast" CFG_LIMITED_TIME_EVENT_JACKPOT = "LimitedTimeEventJackpot" CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT = "LimitedTimeEventChestJackpot" CFG_LIMITED_TIME_EVENT_CONST = "LimitedTimeEventConst" CFG_LIMITED_TIME_EVENT_BONUS = "LimitedTimeEventBonus" CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney" CFG_LIMITED_TIME_EVENT_LUCKY = "LimitedTimeEventLucky" CFG_LIMITED_TIME_EVENT_CAT_TRICK = "LimitedTimeEventCatTrick" CFG_LIMTTED_TIME_EVENT_DECORATE_OFF = "LimitedTimeEventDecorateOff" ) func init() { gamedata.InitCfg(CFG_LIMITED_TIME_EVENT) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_METEOR) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_ORDER) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_SENCE) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_FAST) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_JACKPOT) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CONST) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_BONUS) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_LUCKY) gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CAT_TRICK) gamedata.InitCfg(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF) } // 获取限时事件触发列表 func GetLimitedTimeEventCfg() []*gamedata.LimitedTimeEventData { return nil } func GetEventName(Id int) string { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT, Id) if err != nil { log.Debug("GetEventName err:%v", err) return "" } return gamedata.GetStringValue(data, "Name") } // 获取流星雨加成 func GetMeteorAdd(ChessLv int) int { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_METEOR, ChessLv) if err != nil { log.Debug("GetMeteorAdd err:%v", err) return 0 } return gamedata.GetIntValue(data, "Add") } // 获取宝箱雨奖励 func GetChestReward(Star int) []*item.Item { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST) if err != nil { log.Debug("GetChestReward err:%v", err) return nil } for _, v := range data { Min := gamedata.GetIntValue(v, "Min") Max := gamedata.GetIntValue(v, "Max") if Star >= Min && Star <= Max { return gamedata.GetItemList(v, "Items") } } return nil } // 获取超级订单奖励 func GetSuperOrderReward(Star int) []*item.Item { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_ORDER) if err != nil { log.Debug("GetSuperOrderReward err:%v", err) return nil } for _, v := range data { Min := gamedata.GetIntValue(v, "Min") Max := gamedata.GetIntValue(v, "Max") if Star >= Min && Star <= Max { return gamedata.GetItemList(v, "Items") } } return nil } // 获取场景冲刺奖励 func GetSceneDashReward(Sence, Progress int) (int, []*item.Item) { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_SENCE) if err != nil { log.Debug("GetSceneDashReward err:%v", err) return 0, nil } for k, v := range data { if Sence == gamedata.GetIntValue(v, "Sence") && Progress == gamedata.GetIntValue(v, "Progress") { return GoUtil.Int(k), gamedata.GetItemList(v, "Items") } } return 0, nil } // 获取场景冲刺奖池 func GetSenceJackpotProb() map[int]int { r := make(map[int]int) data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT) if err != nil { log.Debug("GetSenceJackpotReward err:%v", err) return nil } for k, v := range data { Id := GoUtil.Int(k) r[Id] = gamedata.GetIntValue(v, "Prob") } return r } // 获取场景冲刺奖励 func GetSenceJackpotReward(Id int) []*item.Item { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT, Id) if err != nil { log.Debug("GetSenceJackpotReward err:%v", err) return nil } return gamedata.GetItemList(data, "Items") } // 获取连击快手奖励 func GetFastProduceReward(Times, Energy int) []*item.Item { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_FAST) if err != nil { log.Debug("GetSceneDashReward err:%v", err) return nil } for _, v := range data { if Times == gamedata.GetIntValue(v, "Times") && Energy <= gamedata.GetIntValue(v, "Max") && Energy >= gamedata.GetIntValue(v, "Min") { return gamedata.GetItemList(v, "Items") } } return nil } // 获取连击快手最大次数 func GetFastProduceMaxTimes() int { Max := 0 data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_FAST) if err != nil { log.Debug("GetSceneDashReward err:%v", err) return 0 } for _, v := range data { Max = max(gamedata.GetIntValue(v, "Times"), Max) } return Max } // 获取进度最大值 func GetProgressMax(Lv, Num int) int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_BONUS) if err != nil { log.Debug("GetProgressMax err:%v", err) return 0 } for _, v := range data { Min := gamedata.GetIntValue(v, "Min") Max := gamedata.GetIntValue(v, "Max") if Lv >= Min && Lv <= Max { OrderNumStr := gamedata.GetStringValue(v, "OrderNum") OrderNum := GoUtil.SplitInt(OrderNumStr, ",") if Num >= len(OrderNum) { return OrderNum[len(OrderNum)-1] } else { return OrderNum[Num] } } } return 0 } func GetBonusLv(Lv int) int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_BONUS) if err != nil { log.Debug("GetProgressMax err:%v", err) return 0 } for k, v := range data { Min := gamedata.GetIntValue(v, "Min") Max := gamedata.GetIntValue(v, "Max") if Lv >= Min && Lv <= Max { return GoUtil.Int(k) } } return 0 } // 获取进度奖励随机 func GetProgressRewardRand(Lv int) map[int]int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_JACKPOT) if err != nil { log.Debug("GetProgressRewardRand err:%v", err) return nil } r := make(map[int]int) for k, v := range data { if Lv >= gamedata.GetIntValue(v, "BonusLv") { Id := GoUtil.Int(k) r[Id] = gamedata.GetIntValue(v, "Prob") } } return r } func GetJackpotIdByType(Type int) int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_JACKPOT) if err != nil { log.Debug("GetJackpotIdByType err:%v", err) return 0 } for k, v := range data { Id := GoUtil.Int(k) if Type == gamedata.GetIntValue(v, "Type") { return Id } } return 0 } // 获取进度选择数量 func GetProgressSelectNum(Lv int) int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_BONUS) if err != nil { log.Debug("GetProgressMax err:%v", err) return 0 } for _, v := range data { Min := gamedata.GetIntValue(v, "Min") Max := gamedata.GetIntValue(v, "Max") if Lv >= Min && Lv <= Max { return gamedata.GetIntValue(v, "Option") } } return 0 } // 获取进度奖励 func GetProgressReward(RewardId int) []*item.Item { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_JACKPOT) if err != nil { log.Debug("GetProgressReward err:%v", err) return nil } for k, v := range data { Id := GoUtil.Int(k) if Id == RewardId { return gamedata.GetItemList(v, "Items") } } return nil } // 获取进度奖励类型 func GetProgressRewardType(RewardId int) int { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_JACKPOT, RewardId) if err != nil { log.Debug("GetProgressReward err:%v", err) return 0 } return gamedata.GetIntValue(data, "Type") } func GetUnlockLv() int { data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "unlock_lv") if err != nil { log.Debug("GetUnlockLv err:%v", err) return 0 } return gamedata.GetIntValue(data, "Value") } func GetFirstEvent() int { data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "First_Event") if err != nil { log.Debug("GetFirstEvent err:%v", err) return 0 } return gamedata.GetIntValue(data, "Value") } func GetFastCD() int { data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Fast_Cd") if err != nil { log.Debug("GetFirstEvent err:%v", err) return 0 } return gamedata.GetIntValue(data, "Value") } func GetPaybackDay() int { data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "payback_day") if err != nil { log.Debug("GetPaybackDay err:%v", err) return 0 } return gamedata.GetIntValue(data, "Value") } func GetHighRollerNeedEnergy() int { data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "High_Roller_Need_Energy") if err != nil { log.Debug("GetHighRollerNeedEnergy err:%v", err) return 0 } return gamedata.GetIntValue(data, "Value") } func GetThiefProb() int { data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Thief_Prob") if err != nil { log.Debug("GetThiefProb err:%v", err) return 0 } value := gamedata.GetStringValue(data, "Value") a1 := strings.Split(value, "|") prob := make(map[int]int) for _, v := range a1 { a2 := strings.Split(v, ":") prob[GoUtil.Int(a2[0])] = GoUtil.Int(a2[1]) } return GoUtil.RandMap(prob) } // 招财猫 func GetMoneyCat(Id int) (float64, int) { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_MONEY, Id) if err != nil { log.Debug("GetMul err:%v", err) return 0.0, 0 } return gamedata.GetFloatValue(data, "Mul"), gamedata.GetIntValue(data, "Cd") } func GetMoneyCatMax() int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_MONEY) if err != nil { log.Debug("GetMul err:%v", err) return 0 } return len(data) } func GetLuckyCatMaxEarning(Remain int) int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_LUCKY) if err != nil { log.Debug("GetMul err:%v", err) return 0 } type d struct { t int e int } l := make([]d, 0) for k, v := range data { t := GoUtil.Int(k) e := gamedata.GetIntValue(v, "Earn") l = append(l, d{t, e}) } sort.Slice(l, func(i, j int) bool { return l[i].t < l[j].t }) for _, v := range l { if Remain <= v.t { return v.e } } return 0 } func GetCatTrickType(Duartion int) int { data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CAT_TRICK) if err != nil { log.Debug("GetCatTrick err:%v", err) return 1 } for k, v := range data { D := gamedata.GetIntValue(v, "Duration") if Duartion == D { return GoUtil.Int(k) } } return gamedata.GetIntValue(data, "Type") } func GetCatTrickDiamond(Type int) (int, int) { data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_CAT_TRICK, Type) if err != nil { log.Debug("GetCatTrickDiamond err:%v", err) return 0, 0 } return gamedata.GetIntValue(data, "Diamond"), gamedata.GetIntValue(data, "Energy") } func GetDecorateOffDiscount(AreaId, StepId int) int { data, err := gamedata.GetData(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF) if err != nil { log.Debug("GetDecorateOffDiscount err:%v", err) return 100 } for _, v := range data { StartAreaId := gamedata.GetIntValue(v, "StartArea") EndAreaId := gamedata.GetIntValue(v, "EndArea") StartStepId := gamedata.GetIntValue(v, "StartStep") EndStepId := gamedata.GetIntValue(v, "EndStep") if AreaId >= StartAreaId && AreaId <= EndAreaId && StepId >= StartStepId && StepId <= EndStepId { return gamedata.GetIntValue(v, "Off") } } return 100 }