| | |
| | | protected List<SkillRecordAction> otherSkillActionList = new List<SkillRecordAction>(); |
| | | protected List<H0704_tagRolePackRefresh> dropPackList = new List<H0704_tagRolePackRefresh>(); |
| | | protected List<HB405_tagMCAddExp> expPackList = new List<HB405_tagMCAddExp>(); |
| | | |
| | | protected List<BattleDeadPack> endDeadPackList = new List<BattleDeadPack>(); |
| | | |
| | | protected bool moveFinished = false; |
| | | public SkillBase fromSkill; |
| | | public bool isPlay = false; |
| | |
| | | tagUseSkillAttack = vNetData; |
| | | battleField = _battleField; |
| | | packList = _packList; |
| | | |
| | | // 注册正在释放的技能 |
| | | if (battleField != null && caster != null) |
| | | { |
| | | battleField.AddCastingSkill(caster.ObjID, this); |
| | | } |
| | | |
| | | SafetyCheck(); |
| | | #if UNITY_EDITOR |
| | |
| | | tempDropList.TryGetValue(objID, out BattleDrops battleDrops); |
| | | tempDeadPackList.TryGetValue(objID, out BattleDeadPack deadPack); |
| | | |
| | | // 如果目标正在释放技能,跳过死亡处理(延迟到技能结束) |
| | | if (battleField != null && battleField.IsCastingSkill(target.ObjID)) |
| | | { |
| | | deadPack = null; |
| | | } |
| | | |
| | | bool clearSuckHp = tagUseSkillAttack.HurtList.ToList().IndexOf(hurt) != 0; |
| | | |
| | | // ============ 参数打包 ============ |
| | |
| | | // ============ 获取临时数据(掉落、死亡等) ============ |
| | | int objID = (int)target.ObjID; |
| | | tempDropList.TryGetValue(objID, out BattleDrops battleDrops); |
| | | |
| | | tempDeadPackList.TryGetValue(objID, out BattleDeadPack deadPack); |
| | | |
| | | // 如果目标正在释放技能,跳过死亡处理(延迟到技能结束) |
| | | if (battleField != null && battleField.IsCastingSkill(target.ObjID)) |
| | | { |
| | | deadPack = null; |
| | | } |
| | | // ============ 参数打包(将 tagSCUseSkillHurtEx 转换为 tagSCUseSkillHurt)============ |
| | | HB427_tagSCUseSkill.tagSCUseSkillHurt hurt = new HB427_tagSCUseSkill.tagSCUseSkillHurt |
| | | { |
| | |
| | | return false; |
| | | } |
| | | |
| | | // 技能完全结束,移除技能注册并触发延迟的死亡判定 |
| | | if (battleField != null && caster != null) |
| | | { |
| | | battleField.RemoveCastingSkill(caster.ObjID, this); |
| | | |
| | | battleField.OnObjsDead(new List<BattleDeadPack>(tempDeadPackList.Values)); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | |
| | | if (isFinished) |
| | | return; |
| | | |
| | | // 移除技能注册 |
| | | if (battleField != null && caster != null) |
| | | { |
| | | battleField.RemoveCastingSkill(caster.ObjID, this); |
| | | } |
| | | |
| | | // 1. 强制结束技能效果 |
| | | skillEffect?.ForceFinished(); |
| | | skillEffect = null; |