宝箱雨改版

This commit is contained in:
hahwu 2025-01-06 15:44:11 +08:00
parent ace4a53641
commit 662f61b437
9 changed files with 3128 additions and 3023 deletions

View File

@ -192,3 +192,11 @@ func GetReqTimes() int {
}
return gamedata.GetIntValue(data, "Value")
}
func GetItemIdByCardId(CardId int) int {
data, err := gamedata.GetDataByIntKey(CARD_DETAIL_CFG_NAME, CardId)
if err != nil {
log.Debug("GetItemIdByCardId data not found")
}
return gamedata.GetIntValue(data, "ItemId")
}

View File

@ -16,6 +16,7 @@ const (
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"
)
@ -31,6 +32,7 @@ func init() {
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)
}
// 获取限时事件触发列表
@ -49,20 +51,46 @@ func GetMeteorAdd(ChessLv int) int {
}
// 获取宝箱雨奖励
func GetChestReward(Star int) []*item.Item {
func GetChestReward(Star int) ([]*item.Item, int, int) {
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST)
if err != nil {
log.Debug("GetChestReward err:%v", err)
return nil
return nil, 0, 0
}
for _, v := range data {
Grade := 0
for k, v := range data {
Min := gamedata.GetIntValue(v, "Min")
Max := gamedata.GetIntValue(v, "Max")
if Star >= Min && Star <= Max {
return gamedata.GetItemList(v, "Items")
Grade = GoUtil.Int(k)
break
}
}
return nil
data, err = gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
if err != nil {
log.Debug("GetChestReward err:%v", err)
return nil, 0, 0
}
RandMap := make(map[int]int)
for k, v := range data {
Prob := gamedata.GetIntValue(v, "Prob")
if Grade == gamedata.GetIntValue(v, "Grade") {
Id := GoUtil.Int(k)
RandMap[Id] = Prob
}
}
Id := GoUtil.RandMap(RandMap)
data, err = gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT, Id)
if err != nil {
log.Debug("GetChestReward err:%v", err)
return nil, 0, 0
}
Items := gamedata.GetItemList(data, "Items")
CardLv := gamedata.GetIntValue(data, "CardLv")
Lv := gamedata.GetIntValue(data, "Lv")
return Items, CardLv, Lv
}
// 获取超级订单奖励

View File

@ -177,6 +177,7 @@ func ReqRewardOrder(args []interface{}) error {
proto.Unmarshal(buf, req)
OrderMod := player.PlayMod.getOrderMod()
ChessMod := player.PlayMod.getChessMod()
CardMod := player.PlayMod.getCardMod()
LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod()
Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId))
if OrderType == order.Trigger_type { // playroom触发式订单获取额外道具
@ -195,15 +196,29 @@ func ReqRewardOrder(args []interface{}) error {
Item = item.Merge(Item, AddItem)
}
if LimitedTimeEventMod.CheckExist(limitedTimeEvent.EVENT_TYPE_CHEST_RAIN) { //宝箱雨活动
AddItem := LimitedTimeEventMod.GetChestReward(mergeList)
Item = item.Merge(Item, AddItem)
AddItem, CardLv, ProductLv := LimitedTimeEventMod.GetChestReward(mergeList)
ChestRainItems := make([]*item.Item, 0)
if len(AddItem) > 0 {
ChestRainItems = AddItem
}
if CardLv > 0 {
CardId := CardMod.RandCard(CardLv)
ItemId := cardCfg.GetItemIdByCardId(CardId)
ChestRainItems = []*item.Item{{Id: ItemId, Num: 1}}
}
if ProductLv > 0 {
Color := order.RandChessColor(ChessMod.GetOrderEmit())
ChessId := mergeDataCfg.GetChessIdByLvAndColor(ProductLv, Color)
ChestRainItems = append(ChestRainItems, &item.Item{Id: ChessId, Num: 1})
}
Item = item.Merge(Item, ChestRainItems)
if len(ChestRainItems) > 0 {
player.PushClientRes(&msg.ResChessRainReward{
Chest: int32(AddItem[0].Id),
Items: item.ItemToMsg(ChestRainItems),
})
player.TeLog("time_limited_event_action", map[string]interface{}{
"event_type": "chest_rain",
"item_list": AddItem,
"item_list": ChestRainItems,
})
}
}

View File

@ -2,6 +2,9 @@ package game
import (
"fmt"
cardCfg "server/conf/card"
mergeDataCfg "server/conf/mergeData"
"server/game/mod/item"
"server/game/mod/order"
"server/game/mod/sevenLogin"
"server/msg"
@ -98,3 +101,27 @@ func UnitLimitProgress(p *Player) error {
LimitedTimeEventMod.AddProgress(6)
return nil
}
func UnitLimitedTimeEvent(p *Player) error {
LimitedTimeEventMod := p.PlayMod.getLimitedTimeEventMod()
CardMod := p.PlayMod.getCardMod()
ChessMod := p.PlayMod.getChessMod()
mergeList := []int{1, 2, 30}
AddItem, CardLv, ProductLv := LimitedTimeEventMod.GetChestReward(mergeList)
ChestRainItems := make([]*item.Item, 0)
if len(AddItem) > 0 {
ChestRainItems = AddItem
}
if CardLv > 0 {
CardId := CardMod.RandCard(CardLv)
ItemId := cardCfg.GetItemIdByCardId(CardId)
ChestRainItems = []*item.Item{{Id: ItemId, Num: 1}}
}
if ProductLv > 0 {
Color := order.RandChessColor(ChessMod.GetOrderEmit())
ChessId := mergeDataCfg.GetChessIdByLvAndColor(ProductLv, Color)
ChestRainItems = append(ChestRainItems, &item.Item{Id: ChessId, Num: 1})
}
fmt.Print(ChestRainItems)
return nil
}

View File

@ -535,3 +535,7 @@ func (c *CardMod) GetHandbookReward(CardId int) ([]*item.Item, error) {
}
return nil, fmt.Errorf("GetHandbookReward not find card")
}
func (c *CardMod) RandCard(Star int) int {
return randCard(c.Round, Star, 0)
}

View File

@ -29,6 +29,8 @@ const (
ITEM_TYPE_DIAMOND = 3
// 物品类型
ITEM_TYPE_CARD = 98 // 卡牌
ITEM_TYPE_BAG = 99 // 背包
ITEM_TYPE_CHESS = 100 // 棋子
ITEM_TYPE_CARD_PACK = 101 // 卡包
ITEM_TYPE_LIMIED_TIME_EVENT = 102 //限时事件

View File

@ -192,12 +192,11 @@ func (l *LimitedTimeEventMod) GetMeteorReward(MergeList []int) []*item.Item {
}
// 获取宝箱雨奖励
func (l *LimitedTimeEventMod) GetChestReward(MergeList []int) []*item.Item {
func (l *LimitedTimeEventMod) GetChestReward(MergeList []int) ([]*item.Item, int, int) {
Star := 0
for _, v := range MergeList {
Star += mergeDataCfg.GetStarById(v)
}
return limitedTimeEventCfg.GetChestReward(Star)
}

View File

@ -166,6 +166,26 @@ func getRandChessColorList(o *OrderMod, Emit []int, EnergyMul int) map[string]in
return r
}
func RandChessColor(Emit []int) string {
r := make(map[string]int)
for _, v := range Emit {
Produce := mergeDataCfg.GetEmitProduceType(v)
if len(Produce) == 0 {
continue
}
if len(Produce) == 1 {
if Produce[0] == "" {
continue
}
r[Produce[0]] = 100
continue
}
r[Produce[0]] = 80
r[Produce[1]] = 20
}
return GoUtil.RandStringMap(r)
}
func checkA1High(ChessList []int, Emit int, EnergyMul int) bool {
ChessMinLev, ChessMaxLev := getChesslvRange(Emit, EnergyMul)
HighLv := ChessMinLev + ((ChessMaxLev-ChessMinLev)/3)*2

File diff suppressed because it is too large Load Diff