Files
bl/logic/service/fight/info/info.go

232 lines
7.2 KiB
Go
Raw Normal View History

package info
import (
"blazing/modules/player/model"
"github.com/tnnmigga/enum"
)
type ChangePetInfo struct {
// UserId 米米号野怪为0
UserId uint32 `json:"userId"`
// PetId 切换上场的精灵编号
ID uint32 `fieldDesc:"当前对战精灵ID" `
// PetName 精灵名字固定16字节长度
Name string `struc:"[16]byte"`
// Level 切换上场的精灵等级
Level uint32 `json:"level"`
// Hp 切换上场的精灵当前生命值
Hp uint32 `json:"hp"`
// MaxHp 切换上场的精灵最大生命值
MaxHp uint32 `json:"maxHp"`
CatchTime uint32 `fieldDesc:"捕捉时间" `
}
type NoteInviteToFightOutboundInfo struct {
UserID uint32 `codec:"true"`
Nick string `struc:"[16]byte" default:"seer" json:"nick"` // 16字节昵称
// Mode 战斗模式 1 = 1v1 2 = 6v6
Mode uint32 `codec:"true"`
}
type S2C_NOTE_HANDLE_FIGHT_INVITE struct {
// UserID 对方的userid
UserID uint32
Nick string `struc:"[16]byte" default:"seer" json:"nick"` // 16字节昵称
// Result 处理结果
// 0=对方拒绝了对战
// 1=对方同意了对战
// 2=对方在线时长超过6小时
// 3=对方没有可出战的精灵
// 4=对方不在线
Result uint32
}
2025-11-18 22:16:55 +00:00
type Fightinfo struct {
///PlayerID uint32
// 战斗模式 1 = 1v1 2 = 6v6 3大乱斗 0 什么都不做
Mode uint32
//Type uint32 //战斗类型
2025-11-18 23:41:31 +00:00
Status uint32
FightType uint32
}
type RPCFightinfo struct {
PlayerID uint32
// 战斗模式 1 = 1v1 2 = 6v6 3大乱斗 0 什么都不做
Mode uint32
//Type uint32 //战斗类型
Status uint32
// FightType uint32
}
// FightPetInfo 战斗精灵信息结构体FightPetInfo类
type FightPetInfo struct {
// 用户ID野怪为0@UInt long
UserID uint32 `fieldDesc:"用户ID 野怪为0" `
// 当前对战精灵ID@UInt long
ID uint32 `fieldDesc:"当前对战精灵ID" `
Name string `struc:"[16]byte"`
// 精灵的捕获时间,@UInt long
CatchTime uint32 `fieldDesc:"精灵的捕获时间" `
// 当前HP@UInt long
Hp uint32 `fieldDesc:"当前HP" `
// 最大HP@UInt long
MaxHp uint32 `fieldDesc:"最大HP" `
// 当前等级,@UInt long
Level uint32 `fieldDesc:"当前等级" `
// 精灵是否能捕捉1为能捕捉0为不能捕捉
Catchable uint32 `fieldDesc:"精灵是否能捕捉. 1为能捕捉 0为不能捕捉" `
//能力提升属性
Prop [6]int8
}
type AttackValueS struct {
FAttack model.AttackValue
SAttack model.AttackValue
}
func NewAttackValue(userid uint32) *model.AttackValue {
return &model.AttackValue{
userid,
0,
0,
0,
0,
0,
0,
0,
0,
[]model.SkillInfo{},
0,
[20]int8{},
[6]int8{},
0,
}
}
type WeakenedS struct {
Stack int8 `struc:"skip"`
Round int8
}
// 定义战斗状态枚举
// EnumPetStatus宠物战斗异常/增益状态枚举,值范围 0-255
var PetStatus = enum.New[struct {
// 无状态(默认值)
NULL EnumPetStatus `enum:"255"`
// 麻痹:行动概率降低,有概率无法出手
Paralysis EnumPetStatus `enum:"0"`
// 中毒:每回合损失一定比例体力,持续至解除
Poisoned EnumPetStatus `enum:"1"`
// 烧伤每回合损失体力物理攻击威力降低50%
Burned EnumPetStatus `enum:"2"`
// 吸血:攻击时吸取对方体力回复自身(比例生效)
DrainHP EnumPetStatus `enum:"3"`
// 被吸血:自身体力被对方攻击时按比例被吸取
DrainedHP EnumPetStatus `enum:"4"`
// 冻伤:每回合损失体力,有概率无法行动,火系攻击可解除
Frozen EnumPetStatus `enum:"5"`
// 害怕:本回合完全无法进行攻击类操作
Fear EnumPetStatus `enum:"6"`
// 疲惫:连续使用同一技能后触发,暂时无法使用该技能
Tired EnumPetStatus `enum:"7"`
// 睡眠无法行动持续1-3回合后苏醒受攻击可提前解除
Sleep EnumPetStatus `enum:"8"`
// 石化:无法行动,受到攻击时有概率解除,否则持续至回合结束
Petrified EnumPetStatus `enum:"9"`
// 混乱:行动时有概率攻击自身,持续若干回合后解除
Confused EnumPetStatus `enum:"10"`
// 衰弱:全属性降低,伤害输出减少,受治疗效果降低
Weakened EnumPetStatus `enum:"11"`
// 山神守护:免疫大部分异常状态,受到的所有伤害降低
MountainGodGuard EnumPetStatus `enum:"12"`
// 易燃受到火系伤害翻倍持续3回合或被火系攻击命中后解除
Flammable EnumPetStatus `enum:"13"`
// 狂暴:攻击属性提升,防御属性降低,无法自主选择攻击目标
Berserk EnumPetStatus `enum:"14"`
// 冰封:完全无法行动,持续固定回合数,仅特定技能可解除
IceBound EnumPetStatus `enum:"15"`
// 流血:每回合损失固定比例体力,无视部分防御效果
Bleeding EnumPetStatus `enum:"16"`
// 免疫能力下降:不会被敌方技能降低攻击/防御/速度等属性
ImmuneToStatDrop EnumPetStatus `enum:"17"`
// 免疫异常状态:不会被附加麻痹/中毒/烧伤等所有异常状态
ImmuneToAbnormal EnumPetStatus `enum:"18"`
// 瘫痪:完全无法行动,比麻痹效果更强,无概率解除
Paralyzed EnumPetStatus `enum:"19"`
// 失明(预留):命中概率大幅降低,技能命中率下降
// Blind EnumBattleStatus `enum:"20"`
}]()
// 枚举类型别名(根据实际枚举库要求定义)
type EnumPetStatus = byte
// 精灵的能力提升
type PropDict struct {
// 攻击(@UInt long → uint32
Attack int8
// 防御(@UInt long → uint32
Defence int8
// 特攻(@UInt long → uint32
SpecialAttack int8
// 特防(@UInt long → uint32
SpecialDefence int8
// 速度(@UInt long → uint32
Speed int8
// 命中(@UInt long → uint32
Accuracy int8
}
// BattleLevels 战斗属性等级结构体对应原6字节数组
// NoteUseSkillOutboundInfo 战斗技能使用通知的出站信息结构体
type NoteUseSkillOutboundInfo struct {
FirstAttackInfo model.AttackValue // 本轮先手的精灵在释放技能结束后的状态
SecondAttackInfo model.AttackValue // 本轮后手的精灵在释放技能结束后的状态
}
2025-11-18 23:41:31 +00:00
type FightStartOutboundInfo struct {
// @UInt long类型
IsCanAuto uint32 `fieldDesc:"是否自动 默认给0 怀疑是自动战斗器使用的" `
// 当前战斗精灵信息1前端通过userid判断是否为我方
Info1 FightPetInfo `fieldDesc:"当前战斗精灵的信息 可能不准.看前端代码是以userid来判断哪个结构体是我方的" serialize:"struct"`
// 当前战斗精灵信息2前端通过userid判断是否为我方
Info2 FightPetInfo `fieldDesc:"当前战斗精灵的信息 可能不准.看前端代码是以userid来判断哪个结构体是我方的" serialize:"struct"`
}
type S2C_2404 struct {
// 用户ID野怪为0@UInt long
UserID uint32 `fieldDesc:"userID 如果为野怪则为0" `
}
type S2C_50005 struct {
//奖励称号
Title uint32
}
// FightOverInfo 战斗结束信息结构体 2506
type CatchMonsterOutboundInfo struct {
// CatchTime 捕捉时间
CatchTime uint32 `json:"catchTime" `
// PetId 宠物编号
PetId uint32 `json:"petId" `
}
type LoadPercentOutboundInfo struct {
// 玩家userId使用结构体标签模拟注解
Id uint32 `fieldDescription:"玩家userId" autoCodec:"true"`
// 加载百分比,使用结构体标签模拟注解
Percent uint32 `fieldDescription:"加载百分比" autoCodec:"true"`
}