Esempio n. 1
0
    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();
        }
    }
Esempio n. 2
0
    /// <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();
        }
    }
Esempio n. 3
0
    /// <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);
    }
Esempio n. 4
0
    /// <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);
    }
Esempio n. 5
0
 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];
 }
Esempio n. 6
0
    public bool HaveState(StatusType type)
    {
        StatusM Data = FindStatusM(type);

        if (Data != null)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
Esempio n. 7
0
 /// <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();
 }
Esempio n. 8
0
 /// <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();
         }
     }
 }
Esempio n. 9
0
    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);
    }
Esempio n. 10
0
 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);
 }
Esempio n. 11
0
 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;
         }
     }
 }
Esempio n. 12
0
 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);
 }
Esempio n. 13
0
 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();
         }
     }
 }
Esempio n. 14
0
    /// <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);
    }
Esempio n. 15
0
 /// <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);
 }
Esempio n. 16
0
 /// <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);
 }
Esempio n. 17
0
    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);
    }
Esempio n. 18
0
    /// <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);
    }
Esempio n. 19
0
    /// <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);
    }
Esempio n. 20
0
    /// <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);
    }