```
feat(pet): 添加精灵进化功能并优化融合系统 - 新增PetELV方法实现精灵进化功能,支持分支进化选择 - 添加进化相关的数据结构定义 - 实现进化材料检查和扣除逻辑 - 优化宠物融合失败处理机制 fix(fight): 修复战斗系统和效果计算问题 - 修复NewSeIdx_11和effect_60中的伤害计算逻辑 - 修复战斗状态判断条件,避免非PVP模式下的错误处理 - 优化战斗回合处理流程,修复效果缓存清空时机 - 修复effect_69
This commit is contained in:
@@ -244,56 +244,60 @@ func (f *FightC) resolveRound(p1Action, p2Action action.BattleActionI) {
|
||||
return
|
||||
}
|
||||
|
||||
// fmt.Println("开始结算回合")
|
||||
|
||||
// 动作优先级排序
|
||||
b1, b2 := f.Compare(p1Action, p2Action)
|
||||
|
||||
switch a := b1.(type) {
|
||||
|
||||
switch actionType := b1.(type) {
|
||||
case *action.ActiveSwitchAction:
|
||||
|
||||
if f.GetInputByAction(a, false).CurrentPet.Info.Hp <= 0 {
|
||||
f.GetInputByAction(a, false).CurrentPet.Info.Hp = 1
|
||||
}
|
||||
if b2k, ok := b2.(*action.SelectSkillAction); ok {
|
||||
if b2k.SkillEntity != nil {
|
||||
if b2k.CD != nil {
|
||||
f.waittime = *b2k.CD
|
||||
}
|
||||
}
|
||||
f.enterturn(b2.(*action.SelectSkillAction), nil)
|
||||
} else {
|
||||
|
||||
f.enterturn(nil, nil)
|
||||
}
|
||||
f.handleActiveSwitchAction(actionType, b2)
|
||||
|
||||
case *action.UseItemAction:
|
||||
f.handleItemAction(a)
|
||||
if f.GetInputByAction(a, false).CurrentPet.Info.Hp <= 0 {
|
||||
f.GetInputByAction(a, false).CurrentPet.Info.Hp = 1
|
||||
}
|
||||
if b2k, ok := b2.(*action.SelectSkillAction); ok {
|
||||
if b2k.SkillEntity != nil {
|
||||
if b2k.CD != nil {
|
||||
f.waittime = *b2k.CD
|
||||
}
|
||||
}
|
||||
|
||||
f.enterturn(b2.(*action.SelectSkillAction), nil)
|
||||
} else {
|
||||
if a1, ok := b2.(*action.UseItemAction); ok {
|
||||
f.handleItemAction(a1)
|
||||
|
||||
}
|
||||
f.enterturn(nil, nil)
|
||||
}
|
||||
f.handleUseItemAction(actionType, b2)
|
||||
|
||||
default:
|
||||
f.handleSkillActions(b1, b2)
|
||||
}
|
||||
}
|
||||
|
||||
// handleActiveSwitchAction 处理主动切换精灵动作
|
||||
func (f *FightC) handleActiveSwitchAction(switchAction *action.ActiveSwitchAction, otherAction action.BattleActionI) {
|
||||
input := f.GetInputByAction(switchAction, false)
|
||||
if input.CurrentPet.Info.Hp <= 0 {
|
||||
input.CurrentPet.Info.Hp = 1
|
||||
}
|
||||
|
||||
if skillAction, ok := otherAction.(*action.SelectSkillAction); ok {
|
||||
if skillAction.SkillEntity != nil && skillAction.CD != nil {
|
||||
f.waittime = *skillAction.CD
|
||||
}
|
||||
f.enterturn(skillAction, nil)
|
||||
} else {
|
||||
f.enterturn(nil, nil)
|
||||
}
|
||||
}
|
||||
|
||||
// handleUseItemAction 处理使用道具动作
|
||||
func (f *FightC) handleUseItemAction(itemAction *action.UseItemAction, otherAction action.BattleActionI) {
|
||||
f.handleItemAction(itemAction)
|
||||
|
||||
input := f.GetInputByAction(itemAction, false)
|
||||
if input.CurrentPet.Info.Hp <= 0 {
|
||||
input.CurrentPet.Info.Hp = 1
|
||||
}
|
||||
|
||||
if skillAction, ok := otherAction.(*action.SelectSkillAction); ok {
|
||||
if skillAction.SkillEntity != nil && skillAction.CD != nil {
|
||||
f.waittime = *skillAction.CD
|
||||
}
|
||||
f.enterturn(skillAction, nil)
|
||||
} else {
|
||||
if otherItemAction, ok := otherAction.(*action.UseItemAction); ok {
|
||||
f.handleItemAction(otherItemAction)
|
||||
}
|
||||
f.enterturn(nil, nil)
|
||||
}
|
||||
}
|
||||
|
||||
// 使用道具的逻辑封装
|
||||
func (f *FightC) handleItemAction(a *action.UseItemAction) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user