场景冲刺逻辑修改

This commit is contained in:
hahwu 2026-03-10 15:32:21 +08:00
parent 8a79ce2b64
commit 8dbefbe3d9
3 changed files with 63 additions and 4 deletions

View File

@ -274,7 +274,16 @@ func (l *LimitedTimeEventMod) GetChestReward(MergeList, EmitList []int) []*item.
}
// 获取场景冲刺奖励
func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item) {
func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item, error) {
limitInfo, ok := l.EventList[EVENT_TYPE_SENCE_DASH]
if !ok {
return 0, nil, fmt.Errorf("sence dash not active")
}
times := GoUtil.Int(limitInfo.Info["Times"])
if times <= 0 {
return 0, nil, fmt.Errorf("no dash times")
}
limitInfo.Info["Times"] = times - 1
ProbList := limitedTimeEventCfg.GetSenceJackpotProb()
Id := GoUtil.RandMap(ProbList)
Items := limitedTimeEventCfg.GetSenceJackpotReward(Id)
@ -282,7 +291,7 @@ func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item) {
// 多个奖励时,随机选择一个
Items = []*item.Item{GoUtil.RandItem(Items)}
}
return Id, Items
return Id, Items, nil
}
// 获取连击快手奖励
@ -434,6 +443,10 @@ func (l *LimitedTimeEventMod) GetCatTrickReward() ([]*item.Item, error) {
// #region 事件信息初始化
func initEventInfo(E *LTEInfo, EventType int) {
switch EventType {
case EVENT_TYPE_SENCE_DASH:
E.Info = map[string]interface{}{
"Times": 0,
}
case EVENT_TYPE_FAST_PRODUCE:
E.Info = map[string]interface{}{
"Times": 0,
@ -515,6 +528,9 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent {
case EVENT_TYPE_PAYBACK_DAY:
d := e.D.(*PaybackDay)
Param[msg.LimitEventParam_PAYBACK_DAY_COUNT.String()] = int32(d.Count)
case EVENT_TYPE_SENCE_DASH:
Times := GoUtil.Int(e.Info["Times"])
Param[msg.LimitEventParam_SENCE_DASH_TIMES.String()] = int32(Times)
}
return &msg.LimitEvent{
EndTime: EndTime,
@ -537,3 +553,11 @@ func (l *LimitedTimeEventMod) GetCatDaySaleEndTime() int64 {
}
return v.StartT + v.Remian
}
func (l *LimitedTimeEventMod) AddSenceDashTimes() bool {
if _, ok := l.EventList[EVENT_TYPE_SENCE_DASH]; !ok {
return false
}
l.EventList[EVENT_TYPE_SENCE_DASH].Info["Times"] = GoUtil.Int(l.EventList[EVENT_TYPE_SENCE_DASH].Info["Times"]) + 1
return true
}

View File

@ -539,7 +539,12 @@ func ReqDecorate(player *Player, buf []byte) error {
"item_list": AddItem,
})
}
// 跨越场景
if DecorateMod.GetAreaId() != AreaId { // 解锁上报
LimitEventMod := player.PlayMod.getLimitedTimeEventMod()
if LimitEventMod.AddSenceDashTimes() {
player.PushClientRes(LimitEventMod.BackData())
}
player.TeLog("plot_unlock", map[string]interface{}{
"plot_id": DecorateMod.GetAreaId(),
})
@ -636,6 +641,15 @@ func ReqDecorateAll(player *Player, buf []byte) error {
player.TeLog("scene_reward", v.(map[string]interface{}))
}
}
if DecorateMod.GetAreaId() != AreaId { // 解锁上报
LimitEventMod := player.PlayMod.getLimitedTimeEventMod()
if LimitEventMod.AddSenceDashTimes() {
player.PushClientRes(LimitEventMod.BackData())
}
player.TeLog("plot_unlock", map[string]interface{}{
"plot_id": DecorateMod.GetAreaId(),
})
}
player.PlayMod.save()
player.PushClientRes(DecorateMod.BackData())
@ -1754,9 +1768,16 @@ func ReqLimitSenceReward(player *Player, buf []byte) error {
return fmt.Errorf("not exist")
}
Id, Items := limitedTimeEventMod.GetSceneDashReward()
Id, Items, err := limitedTimeEventMod.GetSceneDashReward()
if err != nil {
player.SendErrClienRes(&msg.ResLimitSenceReward{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.args["ResItemPopId"] = Id
err := player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String())
err = player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String())
if err != nil {
player.SendErrClienRes(&msg.ResLimitSenceReward{
Code: msg.RES_CODE_FAIL,

View File

@ -28,3 +28,17 @@ func TestFast(t *testing.T) {
}
t.Logf("Fast produce items: %v", items)
}
func TestSenceDash(t *testing.T) {
p := new(game.Player)
p.InitPlayer("3625212")
LimitEventMod := p.GetLimitEventMod()
LimitEventMod.AddEvent(limitedTimeEvent.EVENT_TYPE_SENCE_DASH, 60)
LimitEventMod.AddSenceDashTimes() // 模拟一次场景冲刺
Id, items, err := LimitEventMod.GetSceneDashReward()
if err != nil {
t.Errorf("GetSceneDashReward error: %v", err)
return
}
t.Logf("Scene dash reward: Id=%d, items=%v", Id, items)
}