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(); } }
/// <summary> /// 持续时间到,移除状态 /// </summary> public void RemoveStatus(float duration) { if (m_RoleStatus == null || m_RoleStatus.Count == 0) { return; } for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } Data.RemoveStatus(duration); if (Data.IsStatusOver()) { Data.RemoveStatusEffect(); SetAttrChange(); 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(); } }
/// <summary> /// 盾减免血量 /// </summary> /// <returns> true 包含 ,false 不包含</returns> public int ReduceHpbyShield(AttackType type, int damage) { int reduceHp = 0; for (int i = 0; i < m_RoleStatus.Count; i++) { int hp = 0; StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } hp = Data.ReduceHpbyShield(type, damage); damage = damage - hp; reduceHp += hp; if (damage <= 0) { break; } } /*if(reduceHp > 0) * { * NGUIUtil.DebugLog("XXXX" + reduceHp); * }*/ return(reduceHp); }
/// <summary> /// 技能释放能被自身状态打断. /// </summary> /// <returns><c>true</c>, if status inter rupt was seled, <c>false</c> otherwise.</returns> /// <param name="skill">Skill.</param> public bool SeleStatusInterRupt(SoldierSkill skill) { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.m_selfRuptType == SelfStatusInterrupt.None) { continue; } if (Data.m_selfRuptType == SelfStatusInterrupt.MagicRupt && skill.m_attacktype == (int)AttackType.Magic) { return(true); } else if (Data.m_selfRuptType == SelfStatusInterrupt.PhyRupt && skill.m_attacktype == (int)AttackType.Physical) { return(true); } } return(false); }
private void LoadStatuses() { _statuses.Clear(); _statuses.Add(new StatusM(-1, "Все")); _statuses.Add(new StatusM((int)EStatusTask.assigned, "Назначено")); _statuses.Add(new StatusM((int)EStatusTask.in_progress, "В процессе")); _statuses.Add(new StatusM((int)EStatusTask.performed, "Выполнено")); _statuses.Add(new StatusM((int)EStatusTask.overdue, "Просрочено")); OnPropertyChanged("Statuses"); SelectedStatus = _statuses[0]; }
public bool HaveState(StatusType type) { StatusM Data = FindStatusM(type); if (Data != null) { return(true); } else { return(false); } }
/// <summary> /// 清理所有状态 /// </summary> public void ClearAllStatus() { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } Data.ClearAllStatusAction(); } m_RoleStatus.Clear(); }
/// <summary> /// 清理debuff状态 /// </summary> public void ClearDebuffStatus() { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.BuffType == 0) { Data.ClearStatus(); } } }
public int GetAttrData(EffectType type) { int value = 0; for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } value += Data.GetAttrData(type); } return(value); }
public int GetResalseSceneID(StatusType type) { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.m_type == type) { return(Data.GetResalseSceneID());; } } return(-1); }
private void Remove(StatusType type) { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.m_type == type) { m_RoleStatus.RemoveAt(i); return; } } }
public StatusM FindStatusM(StatusType type) { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.m_type == type) { return(Data); } } return(null); }
public void TriggerStatus() { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.m_type == StatusType.Invisible || Data.m_type == StatusType.Vertigo) { Data.TriggerStatus(); } } }
/// <summary> /// check 是否包含某个技能产生的状态 /// </summary> /// <returns> true 包含 ,false 不包含</returns> public bool CheckStateBySkill(int SkillType) { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.CheckStateBySkill(SkillType) == true) { return(true); } } return(false); }
/// <summary> /// 技能免疫判断 /// </summary> /// <param name="AttackSkillType">攻击方技能类型</param> /// <param name="DefanseStatus">防御方状态</param> /// <returns> true 免疫该技能, false 不免疫该技能</returns> public bool ImmunitySkill(AttackType AttackSkillType, int SkillType) { if (m_RoleStatus.Count == 0) { return(false); } for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.ImmunitySkill(AttackSkillType, SkillType) == true) { return(true); } } return(false); }
/// <summary> /// 是否拥有自我打断的状态 /// </summary> /// <returns> true 免疫该技能, false 不免疫该技能</returns> public bool SelfInterrupt() { if (m_RoleStatus.Count == 0) { return(false); } for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM Data = m_RoleStatus[i]; if (Data == null) { continue; } if (Data.SelfInterrupt() == true) { return(true); } } return(false); }
public float GetStateDuration(StatusType type) { float t = 0; StatusM Data = FindStatusM(type); if (Data != null) { foreach (StatusAction sa in Data.StatusData) { if (t == 0) { t = sa.Duration; } else if (t < sa.Duration) { t = sa.Duration; } } } return(t); }
/// <summary> /// 确认能否添加状态。(状态放打断机制) /// </summary> /// <returns>true :该状态会打断技能 false : 该状态不打断技能</returns> public bool CheckCanAddStatus(int ResalseSceneID, int SkillID, AttackType SkillType, SkillStatusInfo Info) { StatusInterrupt interrputtype = StatusInterrupt.Phy; if (SkillType == AttackType.Physical) { interrputtype = StatusInterrupt.Phy; } else if (SkillType == AttackType.Magic) { interrputtype = StatusInterrupt.Magic; } else { return(true); } StatusM Data = StatusFactory.Create(m_SceneID, ResalseSceneID, SkillID, Info); //打断的技能 if (Data != null /*&& Data.InterruptSkill() == true*/) { for (int i = 0; i < m_RoleStatus.Count; i++) { StatusM status = m_RoleStatus[i]; if (status == null) { continue; } if (status.CheckInterruptStatus(interrputtype) == true) { return(false); } } } return(true); }
/// <summary> /// 添加状态,SceneID 释放技能对象的SceneID /// </summary> /// <returns>true :该状态会打断技能 false : 该状态不打断技能</returns> public bool AddStatus(int ResalseSceneID, int SkillID, SkillStatusInfo Info) { StatusType s = (StatusType)Info.m_type; SetAttrChange(); //状态叠加规则 if (Info.m_RelpaceInfo.m_type == 1) { } else if (Info.m_RelpaceInfo.m_type == 2) //控制类状态 { if (Info.m_RelpaceInfo.m_compatible == 0) { foreach (StatusM status in m_RoleStatus) { if (status.CheckHaveStatus() && status.ReplaceInfo.m_type == 2) { if (status.ReplaceInfo.m_compatible == 0) { if (status.ReplaceInfo.m_reppriority > Info.m_RelpaceInfo.m_reppriority) { return(false); } } } } foreach (StatusM status in m_RoleStatus) { if (status.CheckHaveStatus() && status.ReplaceInfo.m_type == 2) { status.ClearStatus(); } } } else { foreach (StatusM status in m_RoleStatus) { if (status.ReplaceInfo.m_type == 2) { if (status.CheckHaveStatus() && status.ReplaceInfo.m_compatible == 0) { return(false); } } } } } else { } // StatusM Data = FindStatusM(s); if (Data != null) { if (Data.AddStatus(ResalseSceneID, SkillID, Info)) { Data.AddStatusEffect(Info, SkillID, CheckCreateAction(Info)); return(Data.InterruptSkill()); } } else { Data = StatusFactory.Create(m_SceneID, ResalseSceneID, SkillID, Info); if (Data != null) { Data.Init(m_SceneID, ResalseSceneID, SkillID, Info); m_RoleStatus.Add(Data); Info.m_releasesceneid = ResalseSceneID; Data.AddStatusEffect(Info, SkillID, CheckCreateAction(Info)); Life life = CM.GetAllLifeM(m_SceneID, LifeMType.ALL); if (life != null) { if (Info.m_bufftype == 1) { life.ShowBuff(Info.m_name); } else { life.ShowDebuff(Info.m_name); } } return(Data.InterruptSkill()); } } return(false); }
/// <summary> /// 创建状态 /// </summary> /// <param name="Core">雷达拥有者的核心信息</param> /// <param name="f">雷达拥有视野</param> public static StatusM Create(int SceneID, int ResalseSceneID, int SkillID, SkillStatusInfo Info) { if (Info == null) { return(null); } StatusType s = (StatusType)Info.m_type; StatusM status = null; switch (s) { case StatusType.AddAttr: status = new AddAttrStatus(); break; case StatusType.Vertigo: status = new VertigoStatus(); break; case StatusType.Silence: status = new SilenceStatus(); break; case StatusType.Vampire: status = new VampireStatus(); break; case StatusType.Rebound: status = new ReboundStatus(); break; case StatusType.Invisible: status = new InvisibleStatus(); break; case StatusType.Invincible: status = new InvincibleStatus(); break; case StatusType.Transfiguration: status = new TransfigurationStatus(); break; case StatusType.Summon: status = new SummonStatus(); break; case StatusType.ClickFly: status = new ClickFlyStatus(); break; case StatusType.AbsorbDamage: status = new AbsorbDamageStatus(); break; case StatusType.Virtual: status = new VirtualStatus(); break; case StatusType.Shield: status = new ShieldStatus(); break; case StatusType.Sputtering: status = new SputteringStatus(); break; case StatusType.Damnation: status = new DamnationStatus(); break; case StatusType.ImmunePhysical: status = new ImmunePhysicalStatus(); break; case StatusType.ImmunityMagic: status = new ImmunityMagicStatus(); break; case StatusType.IceBuild: status = new IceBuildStatus(); break; case StatusType.Ring: status = new RingStatus(); break; case StatusType.Taunt: status = new TauntStatus(); break; case StatusType.StaticElec: status = new StaticElecStatus(); break; case StatusType.Still: status = new StillStatus(); break; case StatusType.Squash: status = new SquashStatus(); break; case StatusType.Sauna: status = new SaunaStatus(); break; case StatusType.KTV: status = new KTVStatus(); break; case StatusType.ImmuneState: status = new ImmuneState(); break; case StatusType.NoSquash: status = new NoSquashStatus(); break; case StatusType.paralysis: status = new ParalysisStatus(); break; case StatusType.PhyAnitInterrupt: status = new PhyAnitInterruptStatus(); break; case StatusType.MagAnitInterrupt: status = new MagAnitInterruptStatus(); break; case StatusType.Cleanse: status = new CleanseStatus(); break; case StatusType.Charm: status = new CharmStatus(); break; case StatusType.BuildDestory: status = new BuildDestoryStatus(); break; case StatusType.Mark: status = new MarkStatus(); break; case StatusType.RunAway: status = new RunAwayStaus(); break; case StatusType.FakeTaunt: status = new FakeTauntStatus(); break; case StatusType.Die: status = new DieStatus(); break; case StatusType.Turn: status = new TurnStatus(); break; case StatusType.WetBody: status = new WetBodyStatus(); break; case StatusType.Berserker: status = new BerserkerStatus(); break; case StatusType.Paralyze: status = new ParalyzeStatus(); break; case StatusType.DieMark: status = new DieMarkStatus(); break; case StatusType.Sleep: status = new SleepStatus(); break; case StatusType.TearOfMermaid: status = new TearOfMermaidStatus(); break; case StatusType.Trapped: status = new TrapedStatus(); break; case StatusType.KickedBack: status = new KickedBackStatus(); break; case StatusType.WhipCorpse: status = new WhipCorpseStatus(); break; case StatusType.FireShield: status = new FireShieldStatus(); break; default: break; } return(status); }