统一处理效果45、51、55、56的属性同步与反转逻辑,优化代码结构并提高可维护性。新增通用效果结构体 `EffectPropSyncReverse` 和操作类型定义,集中管理不同属性操作行为。 fix(controller): 修复玩家离开地图逻辑错误 修正 `FRESH_LEAVE_FIGHT_LEVEL` 接口中 defer 调用为进入地图,并发送角色信息包给客户端以确保状态一致。 feat(effect): 新增天敌机制核心逻辑占位 在 `NewSel14` 效果中添加 `Turn_Start` 方法,实现若遇到天敌则害怕多回合的核心逻辑框架。 chore(config): 更新Boss配置怪物ID及血量 调整Boss ID为2的怪物配置,替换原有Monster ID并设置血量为10,用于测试或平衡调整。 refactor(fight): 优化战斗循环和精灵切换逻辑 整理战斗主循环中的血量赋值语句格式,调整精灵切换时变量顺序以避免潜在问题,并修复死亡标记逻辑。 refactor(node): 恢复BoolisFalse方法实现 取消注释 `BoolisFalse` 方法内容,恢复其正常功能以便其他模块正确判断布尔条件。 style(logic): 格式化代码空行和缩进 清理多余空行,对齐导入语句与其他代码块格式,增强整体代码可读性。 debug(effect): 增加烧伤伤害调试打印 在持续伤害效果中加入println语句,输出实际造成的真实伤害数值便于排查问题。
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package controller
|
|
|
|
import (
|
|
"blazing/common/socket/errorcode"
|
|
"blazing/common/utils"
|
|
"blazing/logic/service/fight"
|
|
"blazing/logic/service/player"
|
|
"blazing/logic/service/space/info"
|
|
"sync/atomic"
|
|
|
|
"github.com/jinzhu/copier"
|
|
)
|
|
|
|
func (h Controller) FRESH_CHOICE_FIGHT_LEVEL(data *fight.C2S_FRESH_CHOICE_FIGHT_LEVEL, c *player.Player) (result *fight.S2C_FreshChoiceLevelRequestInfo, err errorcode.ErrorCode) {
|
|
|
|
result = &fight.S2C_FreshChoiceLevelRequestInfo{}
|
|
|
|
switch data.Head.CMD {
|
|
case 2428: //试炼之塔
|
|
c.Info.CurrentFreshStage = utils.Max(c.Info.CurrentFreshStage, 1)
|
|
c.Info.MapID = 500
|
|
result.CurFightLevel = uint(c.Info.CurrentFreshStage)
|
|
case 2414: //勇者之塔
|
|
c.Info.CurrentStage = utils.Max(c.Info.CurrentStage, 1)
|
|
c.Info.MapID = 600
|
|
result.CurFightLevel = uint(c.Info.CurrentStage)
|
|
}
|
|
result.BossId = []uint32{10}
|
|
atomic.StoreUint32(&c.Canmon, 0)
|
|
defer c.GetSpace().EnterMap(c)
|
|
return result, 0
|
|
}
|
|
func (h Controller) FRESH_LEAVE_FIGHT_LEVEL(data *fight.FRESH_LEAVE_FIGHT_LEVEL, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) {
|
|
switch data.Head.CMD {
|
|
case 2430: //试炼之塔
|
|
|
|
c.Info.MapID = 101
|
|
|
|
case 2416: //勇者之塔
|
|
|
|
c.Info.MapID = 108
|
|
|
|
}
|
|
|
|
defer c.GetSpace().EnterMap(c)
|
|
|
|
out := info.NewOutInfo()
|
|
copier.CopyWithOption(out, c.GetInfo(), copier.Option{DeepCopy: true})
|
|
|
|
c.SendPackCmd(2001, out)
|
|
return result, 0
|
|
}
|