feat(pet): 实现精灵融合功能并优化相关数据结构

- 新增精灵融合主服务和材料服务,支持根据主副精灵ID查询融合结果
- 调整融合接口参数结构,将物品字段统一为数组形式
- 修改融合材料模型字段类型,提升数据一致性
- 重构融合配置相关逻辑,移除旧融合配置模型及服务
- 增加特性随机选择逻辑,确保融合产物具备有效特性
- 添加材料合法性校验,防止非法材料参与融合
```
This commit is contained in:
2025-12-02 03:59:28 +08:00
parent aad1e2f44c
commit f73c11e571
9 changed files with 160 additions and 85 deletions

View File

@@ -6,6 +6,7 @@ import (
"blazing/logic/service/pet"
"blazing/logic/service/player"
"blazing/modules/blazing/model"
"blazing/modules/blazing/service"
)
func (h Controller) PetFusion(data *pet.C2S_PetFusion, c *player.Player) (result *pet.PetFusionInfo, err errorcode.ErrorCode) {
@@ -34,10 +35,26 @@ func (h Controller) PetFusion(data *pet.C2S_PetFusion, c *player.Player) (result
if xmlres.PetMAP[int(Auxpetinfo.ID)].FuseSub == 0 {
return result, errorcode.ErrorCodes.ErrSystemBusy
}
r := model.GenPetInfo(1, -1, -1, -1, -1, 1)
///性格生成
var natureId int32 = -1
if Auxpetinfo.Nature == Mcatchpetinfo.Nature {
natureId = int32(Auxpetinfo.Nature)
}
resid := int(service.NewPetFusionService().Data(Mcatchpetinfo.ID, Auxpetinfo.ID))
if resid == 0 {
//todo失败降低等级
return &pet.PetFusionInfo{}, 0
}
effect := int(service.NewPetFusionMaterialService().Data(data.Item1))
r := model.GenPetInfo(resid, -1, int(natureId), effect, -1, 1)
c.Service.Pet.PetAdd(*r)
c.Pet_del(Auxpetinfo.CatchTime)
c.Pet_del(Mcatchpetinfo.CatchTime)
//todo材料扣除
return &pet.PetFusionInfo{
ObtainTime: r.CatchTime,
SoulID: 1000017,