```
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

feat(boss_fight): 完善宠物捕获和战斗奖励机制

- 在宠物捕获时记录当前地图ID作为CatchMap
- 将经验值奖励改为通过道具系统发放,统一使用ItemAdd方法处理
- 调整EXP奖励的计算方式,移除原有S2C_GET_BOSS_MONSTER中的EXP字段

feat(arena): 优化竞技场对战奖励和EV分配

- 将竞技场胜利奖励的EV值
This commit is contained in:
昔念
2026-02-18 22:07:50 +08:00
parent 1b6ef07ef8
commit 4a5a7727b5
10 changed files with 55 additions and 35 deletions

View File

@@ -0,0 +1,86 @@
package admin
import (
"blazing/common/data"
"blazing/cool"
config "blazing/modules/config/service"
"blazing/modules/player/model"
"blazing/modules/player/service"
"context"
"github.com/gogf/gf/v2/frame/g"
)
type PetBagController struct {
*cool.Controller
}
type PetGetReq struct {
g.Meta `path:"/genpet" method:"POST"`
UserID uint32 `json:"user_id"`
IsVIP int `json:"is_vip"`
// 新增:精灵相关参数(完全对齐自定义表单配置)
PetTypeId int `json:"petTypeId" v:"required|min:1" comment:"精灵类型ID必填正整数最小1无0或负数类型对应GenPetInfo的id参数"`
IndividualValue int `json:"individualValue" v:"required|between:-1,31" comment:"精灵个体值,必填,范围-1~31-1表示随机生成满个体0~31为固定值决定基础属性上限"`
NatureId int `json:"natureId" v:"required|between:-1,24" comment:"精灵性格ID必填范围-1~24-1表示随机0~24对应25种固定性格影响属性加成"`
AbilityTypeEnum int `json:"abilityTypeEnum" v:"required|min:-1" comment:"精灵特性类型ID必填最小值-1-1表示随机选择1个特性0及以上为固定特性ID需与PlayerEffectMAP匹配"`
IsShiny int `json:"isShiny" v:"min:-1" comment:"精灵异色闪光ID必填最小值-1-1表示随机0及以上为固定异色状态稀有精灵特殊外观/属性原表单hidden但需保留必填逻辑"`
Level int `json:"level" v:"required|between:1,100" comment:"精灵等级必填范围1~100常规游戏等级上限影响精灵当前属性强度"`
}
func init() {
var task_info_controller = &PetBagController{
&cool.Controller{
Prefix: "/admin/monster/bag",
Api: []string{"Delete", "Update", "Info", "List", "Page"},
Service: service.NewPetService(0), //因为page已经过滤所以这里需要改成0
},
}
// 注册路由
cool.RegisterController(task_info_controller)
}
func (c *PetBagController) GetSession(ctx context.Context, req *PetGetReq) (res *cool.BaseRes, err error) {
var shiny []data.GlowFilter
if req.IsShiny != 0 {
r := config.NewShinyService().GetShiny(req.IsShiny)
shiny = append(shiny, *r)
}
t := model.GenPetInfo(
req.PetTypeId, req.IndividualValue, req.NatureId, req.AbilityTypeEnum, req.Level, shiny, -1)
t.CatchRect = 1 //代表这是人工合成的
service.NewUserService(uint32(req.UserID)).Pet.PetAdd(t)
return
}
func (c *PetBagController) Level(ctx context.Context, req *PetLevelReq) (res *cool.BaseRes, err error) {
// m := gmap.New()
r := service.NewUserService(0).Pet.Pet_LEVEL_all()
ress := make([]PetLevelRes, 0)
for _, v := range r {
ress = append(ress, PetLevelRes{
UserID: int(v.PlayerID),
Level: int(v.Data.Level),
ID: int(v.Data.ID),
})
}
res.Data = ress
return
}
type PetLevelReq struct {
g.Meta `path:"/getlevel" method:"GET"`
// 新增:精灵相关参数(完全对齐自定义表单配置)
}
type PetLevelRes struct {
UserID int `json:"user_id"`
//等级PetLevelRes
Level int `json:"level"`
//ID
ID int `json:"id"`
}