/// <summary> /// 根据行为打断状态 /// </summary> public virtual void InterruptStatus(LifeAction Action) { GetStatusOverAction(); if ((m_OverData & StatusOverAction.Attack) == StatusOverAction.Attack) { if (Action == LifeAction.Attack) { m_StatusData.Clear(); } } if ((m_OverData & StatusOverAction.Hurt) == StatusOverAction.Hurt) { if (Action == LifeAction.Hit) { m_StatusData.Clear(); } } if ((m_OverData & StatusOverAction.WalkToEnd) == StatusOverAction.WalkToEnd) { if (Action == LifeAction.WalkToEnd) { m_StatusData.Clear(); } } if ((m_OverData & StatusOverAction.AngerEmety) == StatusOverAction.AngerEmety) { if (Action == LifeAction.AngerEmety) { m_StatusData.Clear(); } } }
private void InterruptStatus(int SceneID, object Param) { if (m_SceneID != SceneID) { return; } LifeAction Action = (LifeAction)Param; for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } Data.InterruptStatus(Action); if (Data.IsStatusOver()) { Data.RemoveStatusEffect(); m_lRemoveStatus.Add(Data.m_type); } } if (m_lRemoveStatus.Count > 0) { for (int i = 0; i < m_lRemoveStatus.Count; i++) { Remove(m_lRemoveStatus[i]); } m_lRemoveStatus.Clear(); } }
public override void InterruptStatus(LifeAction Action) { if (mStatusActive) { return; } base.InterruptStatus(Action); if (Action == LifeAction.Die) { mStatusActive = true; SoldierSkill sourceSkill = new SoldierSkill(); SkillM.GetSkillInfo(m_StatusInfo.exSkill1, m_StatusInfo.exSkillLevel1, ref sourceSkill); Role attacker = CM.GetLifeM(m_StatusInfo.Releasescentid, LifeMType.SOLDIER) as Role; RoleSkill.GlobalUseSkill(attacker, mOwner, sourceSkill, Vector3.zero); } }