98a3d8e036
feat(fight): 优化战斗中技能信息传递方式
...
将 SkillInfo 结构体改为指针传递,确保每回合技能效果可独立变化。
同时调整了战斗逻辑中关于宠物切换次数的控制逻辑,支持死亡后切换再执行额外动作的流程处理。
2025-12-11 13:31:20 +08:00
1ea4b756f6
```
...
feat(service): 更新地图与战斗信息服务结构及逻辑
- 移除 MapLeave 中对 player.Canmon 的重复设置
- 在 MapList 中增加对 TimeBoss 状态的处理并
2025-12-09 16:52:53 +08:00
43813932c9
```
...
build(go): 升级 Go 版本至 1.20 并更新依赖包
将项目 Go 版本从 1.18 升级至 1.20,并同步更新了相关模块依赖。
同时替换 decimal 库为 alpacadecimal,以提升数值计算精度和性能。
- 升级 Go 模块版本
- 替换 github.com/govalues/decimal 为 github.com/alpacahq/alpacadecimal
- 更新多个间接依赖包版本
- 调整相关代码中 decimal
2025-12-05 00:24:02 +08:00
022dc12461
refactor(decimal): 替换shopspring/decimal为govalues/decimal库
2025-12-04 14:28:42 +00:00
8d7d9da0bf
feat(item): 新增性格道具支持与相关逻辑调整
...
新增对特定性格道具的支持,包括 Nature 和 NatureSet 属性解析,
并优化精灵融合、任务奖励、战斗捕捉等流程中的宠物添加方式。
同时修复部分战斗逻辑及数据结构引用问题。
2025-12-03 22:05:28 +08:00
e4fd9c2e38
fix(fight): 修正空变更导致的潜在逻辑问题
2025-11-30 10:21:57 +00:00
d8718e8eac
```
...
feat(fight): 添加战斗准备完成广播消息
在 ReadyFight 方法中增加对所有玩家的广播,发送玩家准备完成的消息。
新增 S2C_2404 结构体用于通知客户端指定用户已准备完成,
若为野怪则 userID 设置为 0。
```
2025-11-30 01:54:46 +08:00
f90581e0f6
```
...
feat(fight): 优化擂台战斗逻辑与状态管理
- 修改了擂台主人设置逻辑,引入 `Set` 方法统一处理玩家信息更新
- 增加对擂主是否可战斗的判断,防止无效挑战
- 调整连胜计算和广播机制,确保数据一致性
- 修复擂台挑战失败时的状态回滚问题
- 引入错误码替代硬编码返回值,提高代码可读性与维护性
- 统一访问擂台玩家的方式,移除冗余字段
2025-11-28 00:16:51 +08:00
0ea1a24419
feat(fight): 实现 boss 战斗中精灵特性的支持与多个新魂印效果
...
- 在 `fight_boss.go` 中为 Boss 的每只宠物增加了 CatchTime 字段以区分不同精灵,
并修复了技能特效参数解析的问题。
- 新增多个魂印(NewSeIdx)实现,包括:
* 无限 PP、伤害倍率控制、命中屏蔽、属性克制、暴击率调整等。
- 调整了部分已有 NewSeIdx 文件中的方法调用方式,统一使用 `ID().GetCatchTime()`
来判断精灵是否在场。
- 修改了 EffectIDCombiner 的字段访问方式,改为通过 Get/Set 方法操作。
- 优化战斗逻辑,在 NPC 战斗中加入 AI 自动出招机制。
2025-11-26 15:25:10 +08:00
6455455992
feat(fight): 增加Boss精灵特效索引解析与空列表校验
...
在挑战Boss逻辑中,新增对Boss怪物NewSeIdxs字段的解析,将其分割并转换为EffectInfo添加到宠物信息中。同时增加对PetList为空时的错误处理,返回精灵不存在错误码。
refactor(effect): 调整技能属性判断方式及方法命名
将部分战斗效果和技能实体中的Type()方法重命名为GetType(),统一接口调用方式,并修改属性类型比较逻辑,直接通过整型值进行判断,提升代码一致性与可维护性。
fix(xml): 补充地图Boss配置项Id字段
更新地图配置文件中Boss节点缺失的Id属性,确保Boss数据结构完整性和唯一标识正确加载。
chore(input): 增加技能实体非空检查防止panic
在输入处理模块中加入对SelectSkillAction.SkillEntity的空指针检查,避免因未初始化技能导致运行时异常。
2025-11-25 18:25:52 +08:00
28e0addda0
```
...
feat(pet): 添加学习力分配功能并优化相关逻辑
- 新增 PetEVdiy 接口用于自定义宠物学习力分配
- 限制单次学习力分配不超过510,单项不超过255
- 学习力池 EVPool 字段添加到 PlayerInfo 结构体
- 使用 github.com/samber/lo 简化数组求和操作
- 更新 fight_boss 逻辑以正确处理 BOSS 战斗后经验与学习力奖励发放
- 调整任务列表中部分
2025-11-25 00:55:10 +08:00
240c349b8a
fix: 修复空提交问题
2025-11-23 23:38:03 +00:00
1dbd4169e9
feat(xmlres): 更新 BOSS 配置结构并优化字段注释
...
新增多个 BOSS 相关配置字段,包括任务关联、奖励机制与挑战限制等,
增强 BOSS 精灵的可配置性与业务表达能力。同时完善字段注释以对齐 XML
实际使用情况,并保留原有部分字段用于兼容历史配置。
fix(fight): 调整战斗胜利回调执行顺序以确保数据一致性
将战斗结束回调移至广播之前执行,保证在发送战斗结果前已完成所有状态
更新,尤其是针对胜利宠物的信息同步
2025-11-22 22:57:32 +08:00
e54d4bacaa
```
...
feat(fight): 增加战斗模式枚举并重构战斗逻辑判断
- 引入完整的 BattleMode 枚举定义,替代原有的 BattleStatus,明确区分各类战斗场景
- 在多个控制器中替换对旧 Status 字段的依赖,统一使用 Mode 判断战斗状态
- 修复部分函数调用前未检查 FightC 是否为空的问题,增加 ErrBattleEnded 错误返回
- 调整
2025-11-21 02:40:27 +08:00
9f89f9f259
```
...
fix(binary): 修复零值处理导致的结构体打包异常
在 binaryFallback 的 Sizeof 和 Pack 方法中增加对 IsZero 值的判断,
避免空值参与序列化计算引发错误。同时调整了 struc 包相关逻辑以正确
处理空值情况,并打印调试日志辅助排查。
feat(fight): 完善玩家 PVP 对战胜负统计逻辑
修正 PET_MELEE 与 PET_King 模式下胜利归属判定问题,确保只有实际胜出
者才累计胜利次数。此外优化了战斗邀请流程,移除冗余状态控制字段并增强
邀请有效性校验,提升 PvP 流程稳定性。
refactor(pack): 简化数据组包逻辑并提高兼容性
重构 TomeeHeader.Pack 方法,去除反射相关的复杂类型判断,统一使用 struc
进行编码,强化对 nil、interface{} 及多级指针的支持。另外更新了客户端发包
记录日志内容以便追踪调试。
style(code): 规范代码格式并清理无用注释和字段
删除多个文件中的无效或过时注释,如 PlayerID 字段标记废弃、无意义的日志输出等;
同步更新结构体字段命名一致性(如 NonoColor),并对部分函数参数及条件表达式做
可读性优化,整体提升代码整洁度和维护性。
```
2025-11-20 15:19:13 +08:00
c0b09c92c4
```
...
refactor(common): 统一使用 common.TomeeHeader 替代 player.TomeeHeader
将多处
2025-11-19 16:11:02 +08:00
31439b707c
fix: 修复空提交问题
2025-11-19 00:09:12 +00:00
24f2a6d7c8
fix: 修复空提交问题
2025-11-18 23:41:31 +00:00
6831861e0d
fix: 修复空提交问题
2025-11-18 22:16:55 +00:00
7cbd3bb801
修改战斗拷贝
2025-11-15 23:02:46 +00:00
135419a99e
```
...
feat(fight): 添加擂台系统相关功能与协议支持
新增了擂台系统相关的消息结构体和处理逻辑,包括:
- 添加了多个与擂台交互的命令结构体(如 ARENA_SET_OWENR、ARENA_FIGHT_OWENR 等)
- 实现了玩家发送擂台信息的方法 Send_ARENA_GET_INFO
- 在 Space 结构中增加了擂台相关信息及操作方法 Can_ARENA 和 UP_ARENA
- 修复了一个伤害计算公式错误,将乘法修正为除法
- 当
2025-11-15 19:11:23 +08:00
0e1860bdf4
```
...
feat(fight): 实现精灵大乱斗模式并优化对战逻辑
新增大乱斗模式(PET_MELEE)支持,重构原有精灵王之战相关逻辑。
更新战斗初始化流程,添加随机精灵选择机制。
调整玩家匹配与取消邀请接口实现方式。
完善战斗结束处理函数,移除未实现异常抛出。
```
2025-11-15 01:53:51 +08:00
d73eb9eb26
feat(fight): 实现属性变化还原机制并优化属性操作逻辑
...
- 为多个效果(effect_38、effect_45、effect_51、effect_55、effect_56)添加 `Alive` 方法,
用于在效果结束时还原精灵被修改的属性(如 MaxHp、Prop[0]、Prop[1]、PetInfo.Type)。
- 统一将对精灵属性类型的访问由 `PType` 修改为 `PetInfo.Type`,提升代码一致性与可维护性。
- 移除旧的回合开始/结束时手动保存和还原精灵信息的逻辑
2025-11-15 00:15:09 +08:00
a86782b1ea
```text
...
refactor(fight): 重构战斗准备逻辑并优化战斗启动流程
将 ReadyFight 方法拆分为多个职责清晰的子方法:
- buildFightStartInfo: 构建战斗初始信息
- checkBothPlayersReady: 检查PVP双方是否就绪
- handleNPCFightSpecial: 处理NPC战斗特殊逻辑(如可捕捉标记)
- startBattle: 统一启动战斗流程
同时修复部分逻辑顺序问题,增强代码可读性和扩展性。
feat(fight): 新增精灵王挑战协议支持
增加 StartPetWarInboundInfo 结构体用于接收精灵王挑战请求,
为后续实现相关功能提供基础。
fix(effect): 修正多个技能效果数值引用错误
- effect_37: 技能威力计算使用正确参数索引
- effect_50: 固定减伤比例调整为除以2
- effect_65: 正确比较技能分类类型
- effect_68: 致死保护改为锁定剩余1点生命值
- effect_77: 回复目标由敌方改为己方
- effect_93: 固定伤害值直接取参数
refactor(effect): 移除冗余效果类文件
删除 effect_133.go 和 effect_90.go 文件,其功能已被统一条件伤害和倍率系统取代;
移除 effect_74.go、effect_75.go 中重复的状态随机施加逻辑。
refactor(effect): 更新能力操作枚举命名一致性
重命名 AbilityOpType 枚举项名称,去除前缀,提升语义清晰度:
- AbilityOpStealStrengthen → StealStrengthen
- AbilityOpReverse → Reverse
- AbilityOpBounceWeaken → BounceWeaken
chore(fight): 完善 BattlePetEntity 属性初始化逻辑
在创建 BattlePetEntity 时即设置 PType,避免后续多次查询 PetMAP;
移除 Type() 方法中的冗余配置查找逻辑。
fix(skill): 确保必中技能不参与命中率计算
在 AttackTimeC 方法中添加 return 防止必中技能继续执行命中率公式计算。
refactor(fight): 调整战斗回合结束逻辑
进入新回合时允许玩家更换精灵,并提前跳出循环防止多余处理。
style(effect): 更正拼写及变量命名风格
修改 BaseSataus.Switch 方法签名中的参数命名;
更正 Effect58 中 can 字段首字母大写;
2025-11-14 23:09:16 +08:00
004ce51c5e
feat(fight): 调整效果叠加逻辑与精灵属性处理
...
- 将 `MaxStack` 方法重命名为 `CanStack`,并修改其逻辑为布尔值控制是否可叠加
- 更新多个效果文件中的注释和调用方式以适配新的叠加控制方法
- 修复精灵属性类型获取逻辑,增加缓存字段 `PType`
- 修改战斗回合处理流程,优化技能解析顺序和状态比较时机
- 调整状态效果初始化逻辑,确保状态类效果默认允许无限叠加
- 更正伤害类型缺失问题,在固定伤害
2025-11-14 06:14:49 +08:00
d52c6cbb79
```
...
feat(fight): 更新概率判定函数注释并新增状态与属性操作类型
更新 PlayerCaptureContext.Roll 函数注释,明确返回值含义。
新增 PetStatus 枚举值 NULL,表示无效状态。
新增 AbilityOpType.COPY 操作类型,支持复制对手属性值。
```
2025-11-14 04:55:29 +08:00
55ff5c6119
```
...
refactor(effect): 更新状态枚举类型为 EnumPetStatus
将多个技能效果文件中的 EnumBattleStatus 类型统一更新为 EnumPetStatus,
以更准确地反映其用途。同时修改了相关函数签名和变量声明。
此外,清理了部分注释格式,并补充了关于被动效果不能被免疫的说明。
```
2025-11-14 00:26:34 +08:00
6ba9c3549c
feat(fight): 优化精灵切换逻辑与技能效果处理
...
- 修改 `ChangePet` 方法,记录初始攻击值并在切换时正确传递
- 简化多个 effect 的初始化方式,移除冗余的 `EffectNode` 字段
- 增强 Effect58 和 Effect67 的逻辑判断,增加空指针检查和类型判断
- 引入 decimal 包用于精确血量计算
- 统一 `Switch` 接口参数,增强状态类和节点类的兼容性
- 修正部分技能效果的触发条件和持续时间设置
- 调整回合结束逻辑,注释掉原有后手增益机制
2025-11-13 23:06:55 +08:00
5e3d558d30
```
...
feat(player): 添加 UseCoins 方法统一处理玩家金币消耗逻辑
重构购买物品和变更外观功能,使用 UseCoins 方法替代手动操作 Coins 字段,
确保金币扣除的安全性和一致性。同时修复可能因并发导致的金币超扣问题。
此外,调整部分战斗系统接口参数传递方式,将 DamageZone 指
2025-11-13 21:36:18 +08:00
65758c799e
fix(fight): 战斗修改
2025-11-11 05:54:24 +00:00
da9286d3d8
```
...
feat(fight): 调整技能效果命中逻辑与回合开始处理
- 修改了技能效果命中的判定顺序,确保暴击计算在效果添加之前执行
- 修复了回合开始时敌我双方状态结算的上下文错误
- 优化了效果缓存初始化逻辑,避免重复添加相同效果
- 增加了效果去重判断,防止完全相同的效果被重复添加
- 调整了战斗循环中结束逻辑的位置,确保广播和通道关闭正确执行
- 更新了部分日志提示信息,使其更符合实际业务含义
- 移除了部分无用代码和注释,提高
2025-11-11 01:10:26 +08:00
c916440033
```
...
feat(fight): 完善战斗系统中道具使用逻辑与血量恢复机制
- 修改 item.go 中 Item 结构体,将 Bonus 字段类型由 string
2025-11-08 16:38:41 +08:00
a42bd76517
```
...
feat(fight): 新增使用宠物物品功能
- 在Controller中新增UsePetItemInboundInfo方法,用于处理宠物物品使用请求
- 在FightI接口中添加UseItem方法定义,支持传入捕获时间和物品ID
- 修改UseItemAction结构体,增加CacthTime字段以记录宠物捕获时间
- 新增UsePetItemInboundInfo结构体,定义宠物物品使用的消息格式
- 在FightC中实现UseItem方法,将使用物品的动作发送到actionChan
```
2025-11-08 01:30:53 +08:00
e2a184b687
feat(rpc): 优化客户端连接管理,使用 sync.Map 替代普通 map
...
将 `Clientmap` 从普通 map 改为 `sync.Map`,提升并发安全性。新增
`addClient` 和 `getClient` 方法封装存取逻辑,并在多处调用点进行了替换。
fix(fight): 修复战斗逻辑中技能ID与攻击时间字段引用错误
将 `attacker.AttackValue.SkillID` 和
`attacker.AttackValue.AttackTime` 的访问方式修正为正确的字段路径。
refactor(fight): 调整战斗结束信息处理流程
合并 `FightOverInfo` 结构到 `FightC` 中,简化广播发送逻辑,统一通过
`f.FightOverInfo` 发送战斗结果。
refactor(effect): 修改效果叠加判断逻辑并增强健壮性
更新效果节点比较方法,增加参数匹配检查以支持更精确的效果识别;同时添加
`equalInts` 工具函数用于数组内容对比。
2025-11-07 22:50:34 +08:00
ce770e6cf1
refactor(fight): 优化战斗逻辑代码结构,清理冗余代码
2025-11-06 17:25:16 +00:00
09612067d8
```
...
refactor(socket): 优化消息处理逻辑,避免顺序执行问题
将消息处理的循环从协程外部移入协程内部,确保每个消息在独立的 goroutine 中处理,
避免因并发导致的消息顺序错乱问题。同时移除了多余的空行,使代码更简洁。
fix(controller): 为低 ID 用户设置 VIP 标志
在 COMMEND_ONLINE 接口逻辑中,新增对 UserID 小于 10000 的用户设置 IsVip = 1,
用于标识测试或特殊用户身份。
refactor(fight): 重构状态类技能效果注册与触发逻辑
- 使用 map 统一管理技能 ID 与状态类型映射关系,简化注册流程
- 重命名工厂函数 newp 为 newEffectStatus,提升可读性
- 增加命中判断和持续回合数随机逻辑,提高技能触发的灵活性
- 支持通过 SideEffectArgs 配置持续时间,默认 1~3 回合
refactor(fight): 重构能力操作类效果(Effect3)
- 重命名字段 Rev、Etype 为 Reverse、OpType 提高语义清晰度
- 优化结构体初始化方式,使用匿名结构体数组进行批量注册
- 明确能力变化作用对象(自身/对手)逻辑,增强可维护性
refactor(fight): 重构能力值变化效果(Effect4/5)
- 重命名构造函数 NewEffectStat 为 newEffectStat,符合 Go 命名规范
- 优化参数解析逻辑,防止 SideEffectArgs 越界访问
- 统一处理加减类型判断和属性变更逻辑,减少重复代码
refactor(fight): 重构技能威力翻倍条件判断逻辑
- 引入全局函数注册表 statusFuncRegistry 管理所有状态判断逻辑
- Effect96 改为通过 StatusID 查找对应函数,提升扩展性
- 合并多个相似效果注册逻辑,统一初始化入口
refactor(fight): 优化状态效果获取逻辑
- 修改 GetEffect 方法返回单个 Effect 而非数组,简化调用逻辑
- 在 fightc.go 中更新状态持续时间获取方式
- 修复部分未使用的代码注释,提高代码整洁度
fix(fight): 限制治疗后血量不超过最大值
在 Heal 方法中增加血量上限判断,防止因治疗导致当前血量超出最大值。
refactor(fight): 移除调试日志打印
删除 loop.go 中多余的 fmt.Println 日志输出语句,避免影响性能和日志干扰。
refactor(fight): 优化精灵切换相关逻辑
- 移除未实现的 panic 抛出,避免运行时异常
- 注释掉不必要的下场清除 effect 逻辑,待后续确认是否需要恢复
feat(nono): 移除 PetCureInboundInfo 中的 Type 字段
该字段原用于控制飞行模式开关,现已移除,后续功能将通过其他方式实现。
feat(player): 新增 SaveDone channel 支持保存完成通知
在 ClientData 结构体中添加 SaveDone channel,用于异步通知保存操作完成状态。
fix(user): 设置推荐服务器在线人数默认值
当 ServerInfo.OnlineID == 2 时,强制设置 UserCnt = 300 并使用测试 IP,
便于客户端识别测试服节点。
```
2025-11-03 04:16:30 +08:00
7a8be1c23a
feat(element): 优化元素计算器并发安全与缓存机制
...
- 使用 sync.Map 替代 map+锁,提升并发读写性能
- 预加载所有元素组合,避免运行时重复创建
- 攻击系数计算结果加入缓存,提高查询效率
- 完善缓存键命名与错误处理机制
- 调整元素组合字符串展示格式,增强可读性
fix(item): 修复购买物品时价格为0仍扣除金币的问题
- 在购买逻辑中增加对物品价格是否为0的判断
- 防止免费物品被误扣金币
2025-11-02 23:52:06 +08:00
7bc7776074
`` refactor(fight): 重构战斗初始化逻辑,移除MAXPET字段并优化宠物列表处理方式``
2025-10-31 02:24:49 +00:00
a37b459793
``` feat(socket): 优化panic处理逻辑并添加详细堆栈打印,完善服务器退出条件检查
2025-10-28 07:39:11 +00:00
248a326bb5
```
...
fix(BattlePetEntity): 移除调试打印语句
移除了战斗宠物实体创建过程中用于调试的 fmt.Printf 语句,
这些语句在生产环境中没有必要且会影响性能。
```
2025-10-27 01:23:42 +08:00
e75ecd413d
feat(fight): 重构战斗系统技能逻辑与精灵切换功能
...
- 优化技能执行流程,统一使用 SelectSkillAction 作为技能载体
- 移除冗余的技能 ID 字段,简化数据结构
- 调整命中判断和技能效果触发机制,提升准确性
- 修改精灵切换与捕获相关方法参数格式
- 更新技能列表结构为动态数组以支持灵活长度
- 完善睡眠等异常状态的处理逻辑
- 修复战斗中技能 PP 扣减及副本还原问题
- 清理无用代码,如多余的 FindWithIndex 函数定义
- 强化验证码缓存键命名规则,增强安全性
2025-10-26 20:56:03 +08:00
66b2f4d748
fix(fight): 移除技能准确率计算中的基础参数校验,保留强化等级处理
2025-10-23 04:26:40 +00:00
4011305865
fix(fight): 修正技能准确率计算条件,移除强化等级限制
2025-10-23 04:26:01 +00:00
618b90af18
feat(task): 增加每日任务奖励经验值至20000
...
将每日任务中多个精灵任务(毛毛、比比鼠、幽浮、利牙鱼等)的完成奖励从
2000点经验调整为20000点经验,以提升玩家任务收益。
refactor(fight): 使用枚举类型优化战斗结束原因字段
将 FightOverInfo 结构体中的 Reason 字段由 uint32 类型改为
EnumBattleOverReason 枚举类型,提高代码可读性和类型安全性。
同时修复了战斗结束时逃跑原因未正确传递的问题。
2025-10-10 01:31:02 +08:00
d4781bf4a4
feat(socket): 添加全局 panic 恢复机制
...
refactor(socket): 调整 defer recover 位置以优化错误捕获逻辑
feat(logic): 为服务器启动函数添加 defer recover
2025-10-10 00:40:32 +08:00
864078f577
```
...
feat(fight): 优化回合技能处理逻辑并修复技能备份问题
重构 enterturn 函数中技能备份与恢复逻辑,确保每个攻击动作的技能
状态能正确还原。同时调整战斗技能创建流程,移除无效技能ID判断,
增强日志记录,提升代码可维护性与健壮性。
fix(socket): 移除 syslog 前缀,统一服务器启动日志格式
```
2025-10-05 23:51:37 +08:00
3aa0362cfe
1提交
2025-09-30 18:32:15 +08:00
91d0d29ec9
战斗修改
2025-09-29 02:40:35 +08:00
6eb244b73f
```
...
feat(rpc): 优化 RPC 客户端地址配置逻辑
- 将 RPC 地址从硬编码改为通过 service 动态获取
- 修改端口常量名称 rpcaddr 为 rpcport,提升语义清晰度
- 调整客户端连接逻辑以支持动态 IP 和端口拼接
fix(fight): 修复技能命中与闪避逻辑执行顺序
- 调整战斗中技能攻击流程,确保命中率和闪避计算正确应用
- 更新 effect 接口定义,增强技能使用前后的控制节点
- 增加伤害计算过程中的多阶段触发机制(加法、乘法、减法等)
feat(config): 更新数据库及 Redis 配置信息
- 修改 PostgreSQL 用户名、密码和数据库名
- 更新 Redis 访问密码
- 调整服务器 IP 获取方式,区分测试环境与生产环境
chore(vscode): 优化调试配置 console 输出设置
- 在 launch.json 中为调试配置增加 integratedTerminal 控制台选项
- 统一逻辑服务启动参数格式
chore(gitignore): 忽略特定平台编译产物
- 添加针对 Linux 平台的 logic 和 login 模块编译文件忽略规则
```
2025-09-28 01:58:42 +08:00
d46849a020
refactor(fight/effect): 重构能力操作类型枚举命名,统一使用大写形式(ADD/SUB/COPY/RESET)并更新相关调用点
2025-09-26 18:39:59 +00:00