Пример #1
0
 public skillInfo(string id, string name, string desc, int functionId, bool isOmega, SkillAim aim, SkillBreed breed
                  , SkillKind kind, SDConstants.AOEType aoe, SDConstants.AddMpTpType mptpAdd)
 {
     ID       = id; NAME = name; DESC = desc; FunctionId = functionId; IsOmegaSkill = isOmega;
     this.Aim = aim; this.Breed = breed; this.Kind = kind;
     SkillAoe = aoe; MpTpAddType = mptpAdd;
 }
Пример #2
0
    public void damage(BattleRoleData currentActionUnit, BattleRoleData propTargetUnit
                       , NumberData param, SDConstants.AOEType aoe = SDConstants.AOEType.None)
    {
        NormalAttack n;

        n = gameObject.GetComponent <NormalAttack>();
        if (n == null)
        {
            n = gameObject.AddComponent <NormalAttack>();
        }
        n.PropStartSkill(currentActionUnit, propTargetUnit, param, aoe);
    }
Пример #3
0
    public void addHp(BattleRoleData currentActionUnit, BattleRoleData propTargetUnit, NumberData param
                      , SDConstants.AOEType aoe = SDConstants.AOEType.None)
    {
        AddHeal heal;

        heal = gameObject.GetComponent <AddHeal>();
        if (heal == null)
        {
            heal = gameObject.AddComponent <AddHeal>();
        }
        heal.PropStartSkill(currentActionUnit, propTargetUnit, param, aoe);
    }
Пример #4
0
    public void revive(BattleRoleData currentActionUnit, BattleRoleData propTargetUnit
                       , NumberData param0, NumberData param1, SDConstants.AOEType aoeType = SDConstants.AOEType.None)
    {
        ReviveOne r;

        r = gameObject.GetComponent <ReviveOne>();
        if (r == null)
        {
            r = gameObject.AddComponent <ReviveOne>();
        }
        NDBarChart bc = NDBarChart.Build(param0, param1, NumberData.zero);

        r.PropStartSkill(currentActionUnit, propTargetUnit, bc, aoeType);
    }
Пример #5
0
    public void PropStartSkill(BattleRoleData source, BattleRoleData target, NumberData val
                               , SDConstants.AOEType AOEType = SDConstants.AOEType.None)
    {
        base.StartSkill(source, target);
        IsProcessing = true;
        IsUsed       = true;

        this.AOEType = AOEType;
        List <BattleRoleData> list = DealWithAOEAction(source, target, AOEType);

        for (int i = 0; i < list.Count; i++)
        {
            StartCoroutine(IEStartSkill(source, list[i], val));
        }
    }
Пример #6
0
    public void addTp(BattleRoleData currentActionUnit, BattleRoleData propTargetUnit, NumberData param
                      , SDConstants.AOEType AOEType = SDConstants.AOEType.None)
    {
        AddBarChart barchart;

        barchart = gameObject.GetComponent <AddBarChart>();
        if (barchart == null)
        {
            barchart = gameObject.AddComponent <AddBarChart>();
        }
        NDBarChart nc = NDBarChart.zero;

        nc.TP = param;
        barchart.PropStartSkill(currentActionUnit, propTargetUnit, nc, AOEType);
    }
Пример #7
0
 public void UseProp(BattleRoleData currentActionUnit, BattleRoleData propTargetUnit
                     , SDConstants.AOEType AOE)
 {
     //立即触发之效果
     for (int i = 0; i < functionsWithoutState.Count; i++)
     {
         UsePropWithoutState(functionsWithoutState[i], AOE, currentActionUnit, propTargetUnit);
     }
     //建立道具添加的状态
     if (UseState)
     {
         addState(currentActionUnit, propTargetUnit, _state, AOE);
     }
     //
 }
Пример #8
0
    public void addState(BattleRoleData currentActionUnit, BattleRoleData propTargetUnit
                         , StandardState state
                         , SDConstants.AOEType aoeType = SDConstants.AOEType.None)
    {
        if (state.AimAtSelf)
        {
            propTargetUnit = currentActionUnit;
        }
        List <BattleRoleData> list
            = DealWithAOEAction(currentActionUnit, propTargetUnit, aoeType);

        for (int i = 0; i < list.Count; i++)
        {
            state.SimpleStartState(currentActionUnit, list[i]);
        }
    }
Пример #9
0
    public void PropStartSkill(BattleRoleData source, BattleRoleData target, NDBarChart val
                               , SDConstants.AOEType aoeType)
    {
        base.StartSkill(source, target);
        if (IsProcessing)
        {
            return;
        }
        IsProcessing = true;
        IsUsed       = true;

        List <BattleRoleData> list = DealWithAOEAction(source, target, aoeType);

        for (int i = 0; i < list.Count; i++)
        {
            StartCoroutine(IEStartSkill(source, list[i], val));
        }
    }
Пример #10
0
    public void PropStartSkill(BattleRoleData source, BattleRoleData target, int val
                               , SDConstants.AOEType AOEType = SDConstants.AOEType.None)
    {
        base.StartSkill(source, target);
        IsProcessing = true;
        IsUsed       = true;

        if (GetComponent <HSkilInfo>())
        {
            GetComponent <HSkilInfo>().AOEType = AOEType;
            List <BattleRoleData> list = DealWithAOEAction(source, target, AOEType);
            for (int i = 0; i < list.Count; i++)
            {
                StartCoroutine(IEStartSkill(source, list[i], NumberData.Build(val)));
            }
        }
        else
        {
            StartCoroutine(IEStartSkill(source, target, NumberData.Build(val)));
        }
    }
Пример #11
0
    public void stateWork(BattleRoleData source, BattleRoleData target)
    {
        if (UseState && !stateCantWork)
        {
            if (_standardState != null)
            {
                SDConstants.AOEType aoe = _standardState.StateAOE;

                if (_standardState.AimAtSelf)
                {
                    target        = source;
                    stateCantWork = true;
                    List <BattleRoleData> list = DealWithAOEAction(source, target
                                                                   , _standardState.StateAOE);

                    _standardState.StartState(this, source, target);
                }
                else
                {
                    if (aoe == SDConstants.AOEType.None ||
                        aoe == SDConstants.AOEType.Continuous2 ||
                        aoe == SDConstants.AOEType.Continuous3)
                    {
                        _standardState.StartState(this, source, target);
                    }
                    else
                    {
                        stateCantWork = true;
                        List <BattleRoleData> list = DealWithAOEAction(source, target
                                                                       , _standardState.StateAOE);
                        foreach (BattleRoleData unit in list)
                        {
                            _standardState.StartState(this, source, unit);
                        }
                    }
                }
            }
        }
    }
Пример #12
0
    public List <BattleRoleData> DealWithAOEAction
        (bool targetIsHero, SDConstants.AOEType AOE, bool isRevive = false)
    {
        if (!BM)
        {
            BM = FindObjectOfType <BattleManager>();
        }

        List <BattleRoleData> results = new List <BattleRoleData>();
        List <BattleRoleData> All;
        BattleRoleData        target;

        if (isRevive)
        {
            All = targetIsHero ? BM.AllSRL_Array : BM.AllORL_Array;
            List <BattleRoleData> _all = All.FindAll(x => x.IsDead);
            All    = _all;
            target = All[UnityEngine.Random.Range(0, All.Count)];
        }
        else
        {
            All    = targetIsHero ? BM.Remaining_SRL : BM.Remaining_ORL;
            target = All[UnityEngine.Random.Range(0, All.Count)];
        }

        if (AOE == SDConstants.AOEType.None)
        {
            //this.StartSkill(source, target);
            results.Add(target);
        }
        else if (AOE == SDConstants.AOEType.Horizontal)
        {
            string _N = target.gameObject.name;
            if (_N.Contains("POS8"))
            {
                results.Add(target);
            }
            else
            {
                Transform _parent = target.transform.parent;
                for (int i = 0; i < _parent.childCount; i++)
                {
                    if (_N.Contains("POS0") || _N.Contains("POS2") || _N.Contains("POS6") ||
                        _N.Contains("POS4") || _N.Contains("POS5"))
                    {
                        string N = _parent.GetChild(i).name;
                        if (N.Contains("POS0") || N.Contains("POS2") || N.Contains("POS6") ||
                            N.Contains("POS4") || N.Contains("POS5") || N.Contains("POS8"))
                        {
                            BattleRoleData unit0
                                = _parent.GetChild(i).GetComponent <BattleRoleData>();
                            bool flag0 = false;
                            if (unit0.IsDead && isRevive)
                            {
                                flag0 = true;
                            }
                            else if (!unit0.IsDead)
                            {
                                flag0 = true;
                            }
                            if (flag0)
                            {
                                results.Add(unit0);
                            }
                        }
                    }
                    else if (_N.Contains("POS1") || _N.Contains("POS3") || _N.Contains("POS7") ||
                             _N.Contains("POS4") || _N.Contains("POS5"))
                    {
                        string N = _parent.GetChild(i).name;
                        if (N.Contains("POS1") || N.Contains("POS3") || N.Contains("POS7") ||
                            N.Contains("POS4") || N.Contains("POS5") || N.Contains("POS8"))
                        {
                            BattleRoleData unit0
                                = _parent.GetChild(i).GetComponent <BattleRoleData>();
                            bool flag0 = false;
                            if (unit0.IsDead && isRevive)
                            {
                                flag0 = true;
                            }
                            else if (!unit0.IsDead)
                            {
                                flag0 = true;
                            }
                            if (flag0)
                            {
                                results.Add(unit0);
                            }
                        }
                    }
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Horizontal1)
        {
            Transform _parent = target.transform.parent;

            for (int i = 0; i < _parent.childCount; i++)
            {
                string N = _parent.GetChild(i).name;
                if (N.Contains("POS0") || N.Contains("POS2") || N.Contains("POS6") ||
                    N.Contains("POS4") || N.Contains("POS5") || N.Contains("POS8"))
                {
                    BattleRoleData unit0
                        = _parent.GetChild(i).GetComponent <BattleRoleData>();
                    bool flag0 = false;
                    if (unit0.IsDead && isRevive)
                    {
                        flag0 = true;
                    }
                    else if (!unit0.IsDead)
                    {
                        flag0 = true;
                    }
                    if (flag0)
                    {
                        results.Add(unit0);
                    }
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Horizontal2)
        {
            Transform _parent = target.transform.parent;

            for (int i = 0; i < _parent.childCount; i++)
            {
                string N = _parent.GetChild(i).name;
                if (N.Contains("POS1") || N.Contains("POS3") || N.Contains("POS7") ||
                    N.Contains("POS4") || N.Contains("POS5") || N.Contains("POS8"))
                {
                    BattleRoleData unit0
                        = _parent.GetChild(i).GetComponent <BattleRoleData>();
                    bool flag0 = false;
                    if (unit0.IsDead && isRevive)
                    {
                        flag0 = true;
                    }
                    else if (!unit0.IsDead)
                    {
                        flag0 = true;
                    }
                    if (flag0)
                    {
                        results.Add(unit0);
                    }
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Vertical)
        {
            string _N = target.gameObject.name;
            if (_N.Contains("POS8"))
            {
                results.Add(target);
            }
            else
            {
                Transform _parent = target.transform.parent;
                for (int i = 0; i < _parent.childCount; i++)
                {
                    //bool exit = false;
                    if (_N.Contains("POS2") || _N.Contains("POS3") || _N.Contains("POS5") ||
                        _N.Contains("POS6") || _N.Contains("POS7"))
                    {
                        string N = _parent.GetChild(i).name;
                        if (N.Contains("POS2") || N.Contains("POS3") || N.Contains("POS5") ||
                            N.Contains("POS6") || N.Contains("POS7") || N.Contains("POS8"))
                        {
                            BattleRoleData unit0
                                = _parent.GetChild(i).GetComponent <BattleRoleData>();
                            bool flag0 = false;
                            if (unit0.IsDead && isRevive)
                            {
                                flag0 = true;
                            }
                            else if (!unit0.IsDead)
                            {
                                flag0 = true;
                            }
                            if (flag0)
                            {
                                results.Add(unit0);
                            }
                        }
                    }
                    else if (_N.Contains("POS0") || _N.Contains("POS1") || _N.Contains("POS4") ||
                             _N.Contains("POS6") || _N.Contains("POS7"))
                    {
                        string N = _parent.GetChild(i).name;
                        if (N.Contains("POS0") || N.Contains("POS1") || N.Contains("POS4") ||
                            N.Contains("POS6") || N.Contains("POS7") || N.Contains("POS8"))
                        {
                            BattleRoleData unit0
                                = _parent.GetChild(i).GetComponent <BattleRoleData>();
                            bool flag0 = false;
                            if (unit0.IsDead && isRevive)
                            {
                                flag0 = true;
                            }
                            else if (!unit0.IsDead)
                            {
                                flag0 = true;
                            }
                            if (flag0)
                            {
                                results.Add(unit0);
                            }
                        }
                    }
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Vertical1)
        {
            Transform _parent = target.transform.parent;

            for (int i = 0; i < _parent.childCount; i++)
            {
                string N = _parent.GetChild(i).name;
                if (N.Contains("POS2") || N.Contains("POS3") || N.Contains("POS5") ||
                    N.Contains("POS6") || N.Contains("POS7") || N.Contains("POS8"))
                {
                    BattleRoleData unit0
                        = _parent.GetChild(i).GetComponent <BattleRoleData>();
                    bool flag0 = false;
                    if (unit0.IsDead && isRevive)
                    {
                        flag0 = true;
                    }
                    else if (!unit0.IsDead)
                    {
                        flag0 = true;
                    }
                    if (flag0)
                    {
                        results.Add(unit0);
                    }
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Vertical2)
        {
            Transform _parent = target.transform.parent;
            for (int i = 0; i < _parent.childCount; i++)
            {
                string N = _parent.GetChild(i).name;
                if (N.Contains("POS0") || N.Contains("POS1") || N.Contains("POS4") ||
                    N.Contains("POS6") || N.Contains("POS7") || N.Contains("POS8"))
                {
                    BattleRoleData unit0
                        = _parent.GetChild(i).GetComponent <BattleRoleData>();
                    bool flag0 = false;
                    if (unit0.IsDead && isRevive)
                    {
                        flag0 = true;
                    }
                    else if (!unit0.IsDead)
                    {
                        flag0 = true;
                    }
                    if (flag0)
                    {
                        results.Add(unit0);
                    }
                }
            }
        }
        else if (AOE == SDConstants.AOEType.All)
        {
            BattleRoleData[] list
                = target.transform.parent
                  .GetComponentsInChildren <BattleRoleData>();
            for (int i = 0; i < list.Length; i++)
            {
                bool flag = false;
                if (list[i].IsDead && isRevive)
                {
                    flag = true;
                }
                else if (!list[i].IsDead)
                {
                    flag = true;
                }
                if (flag)
                {
                    //this.StartSkill(source, list[i]);
                    results.Add(list[i]);
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Random1)//随机选择一个
        {
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            List <int> _results = RandomIntger.NumListReturn(1, list.Count);
            for (int i = 0; i < _results.Count; i++)
            {
                //this.StartSkill(source, BM.All_Array[list[_results[i]]]);
                results.Add(BM.All_Array[list[_results[i]]]);
            }
        }
        else if (AOE == SDConstants.AOEType.Random2)
        {
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            List <int> _results = RandomIntger.NumListReturn(2, list.Count);
            for (int i = 0; i < _results.Count; i++)
            {
                results.Add(BM.All_Array[list[_results[i]]]);
                //this.StartSkill(source, BM.All_Array[list[_results[i]]]);
            }
        }
        else if (AOE == SDConstants.AOEType.Random3)
        {
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            List <int> _results = RandomIntger.NumListReturn(3, list.Count);
            for (int i = 0; i < _results.Count; i++)
            {
                results.Add(BM.All_Array[list[_results[i]]]);
                //this.StartSkill(source, BM.All_Array[list[_results[i]]]);
            }
        }
        else if (AOE == SDConstants.AOEType.Continuous2)
        {
            results.Add(target);
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            int index = UnityEngine.Random.Range(0, list.Count);
            results.Add(BM.All_Array[list[index]]);
        }
        else if (AOE == SDConstants.AOEType.Continuous3)
        {
            results.Add(target);
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            int index = UnityEngine.Random.Range(0, list.Count);
            results.Add(BM.All_Array[list[index]]);

            index = UnityEngine.Random.Range(0, list.Count);
            results.Add(BM.All_Array[list[index]]);
        }
        else
        {
            results.Add(target);
            //this.StartSkill(source, target);
        }
        return(results);
    }
Пример #13
0
    public List <BattleRoleData> DealWithAOEAction
        (BattleRoleData currentActionUnit, BattleRoleData propTargetUnit
        , SDConstants.AOEType AOE, bool isRevive = false)
    {
        BattleManager         BM      = FindObjectOfType <BattleManager>();
        List <BattleRoleData> results = new List <BattleRoleData>();

        if (AOE == SDConstants.AOEType.None)
        {
            results.Add(propTargetUnit);
        }
        else if (AOE == SDConstants.AOEType.Horizontal)
        {
            int childId = propTargetUnit.transform.GetSiblingIndex();
            int nextId  = (childId + 2) % SDConstants.MaxSelfNum;

            results.Add(propTargetUnit);

            BattleRoleData next
                = propTargetUnit.transform.parent.GetChild(nextId)
                  .GetComponent <BattleRoleData>();

            bool flag = false;
            if (next.IsDead && isRevive)
            {
                flag = true;
            }
            else if (!next.IsDead)
            {
                flag = true;
            }
            if (flag)
            {
                results.Add(next);
            }
        }
        else if (AOE == SDConstants.AOEType.Horizontal1)
        {
            BattleRoleData unit0
                = propTargetUnit.transform.parent.GetChild(0).GetComponent <BattleRoleData>();
            bool flag0 = false;
            if (unit0.IsDead && isRevive)
            {
                flag0 = true;
            }
            else if (!unit0.IsDead)
            {
                flag0 = true;
            }
            if (flag0)
            {
                results.Add(unit0);
            }
            BattleRoleData unit1
                = propTargetUnit.transform.parent.GetChild(2).GetComponent <BattleRoleData>();
            bool flag1 = false;
            if (unit1.IsDead && isRevive)
            {
                flag1 = true;
            }
            else if (!unit1.IsDead)
            {
                flag1 = true;
            }
            if (flag1)
            {
                results.Add(unit1);
            }
        }
        else if (AOE == SDConstants.AOEType.Horizontal2)
        {
            BattleRoleData unit0
                = propTargetUnit.transform.parent.GetChild(1).GetComponent <BattleRoleData>();
            bool flag0 = false;
            if (unit0.IsDead && isRevive)
            {
                flag0 = true;
            }
            else if (!unit0.IsDead)
            {
                flag0 = true;
            }
            if (flag0)
            {
                results.Add(unit0);
            }
            BattleRoleData unit1
                = propTargetUnit.transform.parent.GetChild(3).GetComponent <BattleRoleData>();
            bool flag1 = false;
            if (unit1.IsDead && isRevive)
            {
                flag1 = true;
            }
            else if (!unit1.IsDead)
            {
                flag1 = true;
            }
            if (flag1)
            {
                results.Add(unit1);
            }
        }
        else if (AOE == SDConstants.AOEType.Vertical)
        {
            int childId = propTargetUnit.transform.GetSiblingIndex();
            int nextId;
            if (childId > 1)
            {
                nextId = 5 - childId;
            }
            else
            {
                nextId = 1 - childId;
            }

            //this.StartSkill(source, target);
            results.Add(propTargetUnit);


            BattleRoleData next
                = propTargetUnit.transform.parent.GetChild(nextId)
                  .GetComponent <BattleRoleData>();

            bool flag = false;
            if (next.IsDead && isRevive)
            {
                flag = true;
            }
            else if (!next.IsDead)
            {
                flag = true;
            }
            if (flag)
            {
                results.Add(next);
            }
            //this.StartSkill(source, next);
        }
        else if (AOE == SDConstants.AOEType.Vertical1)
        {
            BattleRoleData unit0
                = propTargetUnit.transform.parent.GetChild(2).GetComponent <BattleRoleData>();
            bool flag0 = false;
            if (unit0.IsDead && isRevive)
            {
                flag0 = true;
            }
            else if (!unit0.IsDead)
            {
                flag0 = true;
            }
            if (flag0)
            {
                results.Add(unit0);
            }
            BattleRoleData unit1
                = propTargetUnit.transform.parent.GetChild(3).GetComponent <BattleRoleData>();
            bool flag1 = false;
            if (unit1.IsDead && isRevive)
            {
                flag1 = true;
            }
            else if (!unit1.IsDead)
            {
                flag1 = true;
            }
            if (flag1)
            {
                results.Add(unit1);
            }
        }
        else if (AOE == SDConstants.AOEType.Vertical2)
        {
            BattleRoleData unit0
                = propTargetUnit.transform.parent.GetChild(0).GetComponent <BattleRoleData>();
            bool flag0 = false;
            if (unit0.IsDead && isRevive)
            {
                flag0 = true;
            }
            else if (!unit0.IsDead)
            {
                flag0 = true;
            }
            if (flag0)
            {
                results.Add(unit0);
            }
            BattleRoleData unit1
                = propTargetUnit.transform.parent.GetChild(1).GetComponent <BattleRoleData>();
            bool flag1 = false;
            if (unit1.IsDead && isRevive)
            {
                flag1 = true;
            }
            else if (!unit1.IsDead)
            {
                flag1 = true;
            }
            if (flag1)
            {
                results.Add(unit1);
            }
        }
        else if (AOE == SDConstants.AOEType.All)
        {
            BattleRoleData[] list
                = propTargetUnit.transform.parent
                  .GetComponentsInChildren <BattleRoleData>();
            for (int i = 0; i < list.Length; i++)
            {
                bool flag = false;
                if (list[i].IsDead && isRevive)
                {
                    flag = true;
                }
                else if (!list[i].IsDead)
                {
                    flag = true;
                }
                if (flag)
                {
                    //this.StartSkill(source, list[i]);
                    results.Add(list[i]);
                }
            }
        }
        else if (AOE == SDConstants.AOEType.Random1)//随机选择一个
        {
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            List <int> _results = RandomIntger.NumListReturn(1, list.Count);
            for (int i = 0; i < _results.Count; i++)
            {
                //this.StartSkill(source, BM.All_Array[list[_results[i]]]);
                results.Add(BM.All_Array[list[_results[i]]]);
            }
        }
        else if (AOE == SDConstants.AOEType.Random2)
        {
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            List <int> _results = RandomIntger.NumListReturn(2, list.Count);
            for (int i = 0; i < _results.Count; i++)
            {
                results.Add(BM.All_Array[list[_results[i]]]);
                //this.StartSkill(source, BM.All_Array[list[_results[i]]]);
            }
        }
        else if (AOE == SDConstants.AOEType.Random3)
        {
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            List <int> _results = RandomIntger.NumListReturn(3, list.Count);
            for (int i = 0; i < _results.Count; i++)
            {
                results.Add(BM.All_Array[list[_results[i]]]);
                //this.StartSkill(source, BM.All_Array[list[_results[i]]]);
            }
        }
        else if (AOE == SDConstants.AOEType.Continuous2)
        {
            results.Add(propTargetUnit);
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            int index = UnityEngine.Random.Range(0, list.Count);
            results.Add(BM.All_Array[list[index]]);
        }
        else if (AOE == SDConstants.AOEType.Continuous3)
        {
            results.Add(propTargetUnit);
            List <int> list = new List <int>();
            for (int i = 0; i < BM.All_Array.Count; i++)
            {
                if (BM.All_Array[i].IsDead && isRevive)
                {
                    list.Add(i);
                }
                else if (!BM.All_Array[i].IsDead)
                {
                    list.Add(i);
                }
            }
            int index = UnityEngine.Random.Range(0, list.Count);
            results.Add(BM.All_Array[list[index]]);

            index = UnityEngine.Random.Range(0, list.Count);
            results.Add(BM.All_Array[list[index]]);
        }
        else
        {
            results.Add(propTargetUnit);
        }
        return(results);
    }
Пример #14
0
    void UsePropWithoutState(string FN, SDConstants.AOEType AOE
                             , BattleRoleData currentActionUnit, BattleRoleData propTargetUnit)
    {
        string[] fns = FN.Split(':');
        string[] fnElements = fns[0].Split('_');
        string[] paramstrs = fns[1].Split(',');
        int      p0 = 0; int p1 = 0;

        p0 = SDDataManager.Instance.getInteger(paramstrs[0]);
        if (paramstrs.Length > 1)
        {
            p1 = SDDataManager.Instance.getInteger(paramstrs[1]);
        }

        NumberData param0 = new NumberData(p0); NumberData param1 = new NumberData(p1);
        string     functionName = fns[0];

        if (functionName.Contains("addHP"))
        {
            addHp(currentActionUnit, propTargetUnit, param0
                  , AOE);
        }
        else if (functionName.Contains("addMP"))
        {
            addMp(currentActionUnit, propTargetUnit, param0
                  , AOE);
        }
        else if (functionName.Contains("addTP"))
        {
            addTp(currentActionUnit, propTargetUnit, param0
                  , AOE);
        }
        else if (functionName.Contains("revive"))
        {
            bool flag = false;
            if (propTargetUnit.IsDead)
            {
                flag = true;
            }
            else
            {
                List <BattleRoleData> lit = DealWithAOEAction(currentActionUnit
                                                              , propTargetUnit, AOE);
                foreach (BattleRoleData unit in lit)
                {
                    if (unit.IsDead)
                    {
                        flag           = true;
                        propTargetUnit = unit;
                        break;
                    }
                }
            }
            if (flag)
            {
                revive(currentActionUnit, propTargetUnit, param0, param1
                       , AOE);
            }
        }
        else if (functionName.Contains("catch"))
        {
            if (!propTargetUnit.IsDead &&
                propTargetUnit.HpController.CurrentHp * 1f / propTargetUnit.HpController.MaxHp
                <= 0.2f)
            {
                catchSlave(currentActionUnit, propTargetUnit, param0);
            }
        }
        else if (functionName.Contains("remove"))
        {
            List <BattleRoleData> list = DealWithAOEAction
                                             (currentActionUnit, propTargetUnit, AOE);
            if (fnElements[1].ToLower() != "all")
            {
                StateTag tag = ROHelp.STATE_TAG(fnElements[1]);
                if (fnElements[1].ToLower() == "random")
                {
                    tag = (StateTag)(UnityEngine.Random.Range(0, (int)StateTag.End));
                }
                for (int i = 0; i < list.Count; i++)
                {
                    list[i].clearPerTagStates(tag);
                }
            }
            else
            {
                for (int i = 0; i < list.Count; i++)
                {
                    list[i].clearAllStates();
                }
            }
        }
        else if (functionName.Contains("damage"))
        {
            damage(currentActionUnit, propTargetUnit, param0, AOE);
        }
    }
Пример #15
0
 public void ChangeModelAnim(string TriggerName, bool IsLoop = false)
 {
     if (_isDead)
     {
         return;
     }
     if (TriggerName == null || TriggerName == "")
     {
         return;
     }
     if (isFinalBossModel)
     {
         if (TriggerName == anim_hurt ||
             TriggerName == anim_attack ||
             TriggerName == anim_die)
         {
             transform.DOShakePosition(0.2f, new Vector3(1, 1, 1));
         }
     }
     current_anim_time = 0;
     if (_Tag == SDConstants.CharacterType.Hero ||
         _Tag == SDConstants.CharacterType.Enemy)
     {
         string AnimName = TriggerName;
         if (_Tag == SDConstants.CharacterType.Hero)
         {
             HeroInfo      info           = SDDataManager.Instance.getHeroInfoById(CMC.id);
             Job           career         = info.Career.Career;
             List <string> fixedAnimNames = AllAnimations.FindAll
                                                (x => x.Contains(TriggerName));
             AnimName = fixedAnimNames.Find(x => x.Contains(TriggerName));
             //
             if (TriggerName == anim_attack)
             {
                 if (career == Job.Ranger)
                 {
                     AnimName = fixedAnimNames.Find(x => x.Contains("2"));
                 }
                 else
                 {
                     AnimName = fixedAnimNames.Find(x => x.Contains("1"));
                     if (AnimName == null)
                     {
                         AnimName = "attect-01";
                     }
                 }
                 current_anim_time = SDConstants.AnimTime_ATTACK;
             }
             if (TriggerName == anim_cast)
             {
                 if (career == Job.Priest)
                 {
                     AnimName = fixedAnimNames.Find(x => x.Contains("3"));
                 }
                 else
                 {
                     AnimName = fixedAnimNames.Find(x => x.Contains("2"));
                 }
                 BattleRoleData      source = GetComponentInParent <BattleRoleData>();
                 BattleManager       BM     = source.BM;
                 SkillFunction       skill  = BM._currentSkill;
                 SDConstants.AOEType aoe    = skill.AOEType;
                 if (skill.IsOmega)
                 {
                     AnimName = fixedAnimNames.Find(x => x.Contains("4"));
                 }
                 current_anim_time = SDConstants.AnimTime_CAST;
             }
             if (TriggerName == anim_jump)
             {
                 AnimName = AllAnimations.Find(x => x.Contains("cast") && x.Contains("1"));
             }
             if (TriggerName == anim_die)
             {
                 current_anim_time = SDConstants.AnimTime_DIE;
             }
         }
         else
         {
             AnimName = AllAnimations.Find(x => x.Contains(TriggerName));
             if (AnimName == null)
             {
                 return;
             }
         }
         current_anim_name = AnimName;
         StartCoroutine(IEChangeModelAnim(AnimName, IsLoop));
     }
 }