Exemplo n.º 1
0
        private void OnAItypeUpdate(int type)
        {
            int          cout            = Ok_heros.Count;
            int          Maxtemp         = -1;
            int          FinishHerovalue = -1;   //最终释放技能英雄的索引
            SpellAILogic FinishAi        = null; //最终释放技能模板

            for (int i = 0; i < cout; ++i)
            {
                SpellAILogic temp = ChooseAILogicPriority(Ok_heros[i], type);//获取能释放技能的有效优先级
                if (temp != null)
                {
                    HerosSpellAILogicList.Add(temp);
                    AIOk_heros.Add(Ok_heros[i]);
                }
            }
            int cout2 = HerosSpellAILogicList.Count;

            for (int i = 0; i < cout2; ++i)
            {
                if (HerosSpellAILogicList[i].GetPriority() > Maxtemp)
                {
                    Maxtemp         = HerosSpellAILogicList[i].GetPriority();
                    FinishAi        = HerosSpellAILogicList[i];
                    FinishHerovalue = i;
                }
            }
            if (FinishHerovalue >= 0)
            {
                if (SceneObjectManager.GetInstance().GetIsFireSignState() && SceneObjectManager.GetInstance().GetFireSighCreatrue() != null)
                {
                    AIOk_heros[FinishHerovalue].SetSkillLockTarget(SceneObjectManager.GetInstance().GetFireSighCreatrue());
                }
                else
                {
                    AIOk_heros[FinishHerovalue].SetSkillLockTarget(FinishAi.GetSkillTag());
                }

                if (AIOk_heros[FinishHerovalue].OnPre_CheckUseSkillCondtion())
                {
                    //AIOk_heros[FinishHerovalue].OnSkillConsume();
                    //AIOk_heros[FinishHerovalue].SetObjectActionState(ObjectCreature.ObjectActionState.skillAttack);
                    //string name = FinishAi.GetSkillInfo().GetSpellRow().getSkillNameRes();
                    //SkillShowNamePackage package = new SkillShowNamePackage(AIOk_heros[FinishHerovalue].GetGuid(), name);
                    //GameEventDispatcher.Inst.dispatchEvent(GameEventID.F_ShowSkillName, package);

                    AIOk_heros[FinishHerovalue].LaunchFreeSpellLogic(EM_SPELL_PASSIVE_INDEX.EM_SPELL_PASSIVE_INITIATIVE);
                }
                else
                {
                    AIOk_heros[FinishHerovalue].SetSkillLockTarget(null);
                }
                //Debug.Log(AIOk_heros[FinishHerovalue].GetGameObject().name);
            }
        }
Exemplo n.º 2
0
        public void SelectSpellTarget(ObjectHero objHero)
        {
            ReturnData();

            SpellAILogic FinishAi = ChooseAILogicPriority(objHero, (int)EM_SPELL_AI_TYPE.EM_SPELL_AI_TYPE_NORMAL, (int)objHero.GetLaunchFreeSpellIndex());//获取能释放技能的有效优先级

            if (SceneObjectManager.GetInstance().GetIsFireSignState() && SceneObjectManager.GetInstance().GetFireSighCreatrue() != null)
            {
                objHero.SetSkillLockTarget(SceneObjectManager.GetInstance().GetFireSighCreatrue());
            }
            else
            {
                objHero.SetSkillLockTarget(FinishAi.GetSkillTag());
            }
        }