Files
bl/logic/service/fight/info/info.go
xinian 03a28c968b
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed
feat: 实现失明状态并新增技能效果描述
2026-03-29 01:17:18 +08:00

242 lines
7.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
type Fightinfo struct {
///PlayerID uint32
// 战斗模式 1 = 1v1 2 = 6v6 3大乱斗 0 什么都不做
Mode uint32
//Type uint32 //战斗类型
Status uint32
FightType uint32
}
type RPCFightinfo struct {
Type int //加入还是退出
PlayerID uint32
// 战斗模式 1 = 1v1 2 = 6v6 3大乱斗 0 什么都不做
Mode uint32
//Type uint32 //战斗类型
Status uint32
// FightType uint32
}
type RPCFightStartinfo struct {
Serverid int // 非0表示rpc跨服
PlayerID uint32
// 战斗模式 1 = 1v1 2 = 6v6 3大乱斗 0 什么都不做
Mode uint32
//Type uint32 //战斗类型
Status 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 EnumPetStatus `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 // 本轮后手的精灵在释放技能结束后的状态
}
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"`
}