feat(fight): 调整战斗逻辑与精灵切换机制

- 优化精灵切换时的效果处理,增加切换事件支持
- 修复战斗中超时逻辑和技能CD计算问题
- 增强状态效果在精灵上下场时的清理机制
- 修改伤害计算逻辑以提高准确性
- 更新战斗池初始化参数提升并发性能

此外,同步更新了宠物放生字段命名及逻辑处理方式,并调整网络通信中的限流策略。
```
This commit is contained in:
2025-11-13 02:43:00 +08:00
parent 45911dd23d
commit f281b949ba
24 changed files with 201 additions and 105 deletions

View File

@@ -23,6 +23,7 @@ type Input struct {
// info.BattleActionI
Effects []Effect //effects 实际上全局就是effect无限回合 //effects容器 技能的
EffectCache []Effect //这里是命中前执行的容器,也就是命中前执行的所有逻辑相关,理论上一个effect被激活,就应该同时将其他的effect取消激活
Effect_Lost []Effect
//NewEffects []Effect
DamageZone struct {
@@ -94,7 +95,7 @@ func (our *Input) ResetAttackValue() {
our.AttackValue.IsCritical = 0
our.AttackValue.GainHp = 0
our.AttackValue.LostHp = 0
our.DamageZone.Damage = decimal.NewFromInt(0)
}
// 这个每回合都会调用
@@ -160,7 +161,8 @@ func (our *Input) Initeffectcache() {
// 解析并 施加effect
func (our *Input) Parseskill(defender *Input, skill *action.SelectSkillAction) {
our.EffectCache = make([]Effect, 0) //先把上一回合数据清空,但是应该把本身延续类效果集成过来
our.Initeffectcache() //这里说明是延续的效果,每次复制出来一个新的就好了
our.Effect_Lost = make([]Effect, 0)
our.Initeffectcache() //这里说明是延续的效果,每次复制出来一个新的就好了
//i.NewEffects = make([]Effect, 0) //这里说明是新增的效果
temparg := skill.SideEffectArgS
@@ -180,7 +182,11 @@ func (our *Input) Parseskill(defender *Input, skill *action.SelectSkillAction) {
// defender.AddEffect(t)
// } else {
//t.SetArgs(i, temparg[:args]...) //设置入参
our.AddEffect(t)
loste := our.AddEffect(t)
if loste != nil {
our.Effect_Lost = append(our.Effect_Lost, loste)
}
// }
//这里是临时缓存buff,后面确认命中后修改HIT状态
// t.Alive() //先让效果保持存活