예제 #1
0
        public override uint CommonAttackSearchEnemy(int srchR)
        {
            if (this.commonAttackEnemyHeroTargetID > 0u)
            {
                PoolObjHandle <ActorRoot> actor = Singleton <GameObjMgr> .GetInstance().GetActor(this.commonAttackEnemyHeroTargetID);

                if (!actor || actor.get_handle().ActorControl.IsDeadState)
                {
                    this.ClearCommonAttackTarget();
                    base.SetEnemyHeroAttackTargetID(0u);
                    return(0u);
                }
                this.SetCommonAttackTarget(this.commonAttackEnemyHeroTargetID, true);
                return(this.commonAttackEnemyHeroTargetID);
            }
            else
            {
                bool flag = false;
                uint num  = base.ExecuteSearchTraget(srchR, ref flag);
                if (!flag)
                {
                    return(num);
                }
                if (!base.IsValidTargetID(num))
                {
                    SkillCache skillUseCache = this.actor.SkillControl.SkillUseCache;
                    if (skillUseCache != null && !skillUseCache.GetSpecialCommonAttack())
                    {
                        this.CancelCommonAttackMode();
                        num = 0u;
                    }
                }
                if (num == 0u)
                {
                    this.ClearCommonAttackTarget();
                }
                else
                {
                    this.SetCommonAttackTarget(num, false);
                }
                return(num);
            }
        }
예제 #2
0
        public override uint CommonAttackSearchEnemy(int srchR)
        {
            SkillCache      skillUseCache        = null;
            SelectEnemyType selectLowHp          = SelectEnemyType.SelectLowHp;
            uint            commonAttackTargetID = this.commonAttackTargetID;
            Player          ownerPlayer          = ActorHelper.GetOwnerPlayer(ref this.actorPtr);

            if (ownerPlayer != null)
            {
                if (base.IsValidTargetID(commonAttackTargetID))
                {
                    this.SetCommonAttackTarget(commonAttackTargetID);
                    return(commonAttackTargetID);
                }
                selectLowHp = ownerPlayer.AttackTargetMode;
            }
            if (selectLowHp == SelectEnemyType.SelectLowHp)
            {
                commonAttackTargetID = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchLowestHpTarget(base.actor.ActorControl, srchR);
            }
            else
            {
                commonAttackTargetID = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchNearestTarget(base.actor.ActorControl, srchR);
            }
            if (!base.IsValidTargetID(commonAttackTargetID))
            {
                skillUseCache = base.actor.ActorControl.actor.SkillControl.SkillUseCache;
                if ((skillUseCache != null) && !skillUseCache.GetSpecialCommonAttack())
                {
                    this.CancelCommonAttackMode();
                    commonAttackTargetID = 0;
                }
            }
            if (commonAttackTargetID == 0)
            {
                this.ClearCommonAttackTarget();
                return(commonAttackTargetID);
            }
            this.SetCommonAttackTarget(commonAttackTargetID);
            return(commonAttackTargetID);
        }
예제 #3
0
        public override void Init()
        {
            base.Init();
            this.talentSystem = new TalentSystem();
            this.talentSystem.Init(base.actorPtr);
            this.stSkillStat = new CSkillStat();
            if (this.stSkillStat != null)
            {
                this.stSkillStat.Initialize(base.actorPtr);
                this.InitRandomSkill();
                this.InitPassiveSkill();
                IGameActorDataProvider actorDataProvider = Singleton <ActorDataCenter> .instance.GetActorDataProvider(GameActorDataProviderType.StaticBattleDataProvider);

                IGameActorDataProvider provider2 = Singleton <ActorDataCenter> .instance.GetActorDataProvider(GameActorDataProviderType.ServerDataProvider);

                ActorStaticSkillData skillData = new ActorStaticSkillData();
                for (int i = 0; i < 8; i++)
                {
                    if (i == 6)
                    {
                        SLevelContext curLvelContext = Singleton <BattleLogic> .GetInstance().GetCurLvelContext();

                        if (curLvelContext.IsGameTypeGuide())
                        {
                            if (curLvelContext.m_mapID == CBattleGuideManager.GuideLevelID5v5)
                            {
                                goto Label_00D8;
                            }
                            continue;
                        }
                        if (!curLvelContext.IsMobaModeWithOutGuide() || (curLvelContext.m_pvpPlayerNum != 10))
                        {
                            continue;
                        }
                    }
Label_00D8:
                    if (i == 7)
                    {
                        SLevelContext context2 = Singleton <BattleLogic> .GetInstance().GetCurLvelContext();

                        if (!context2.m_bEnableOrnamentSlot || (context2.m_ornamentSkillId <= 0))
                        {
                            continue;
                        }
                    }
                    if ((((i == 4) || (i == 6)) || (i == 7)) && (base.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero))
                    {
                        SLevelContext context3 = Singleton <BattleLogic> .instance.GetCurLvelContext();

                        if ((context3 == null) || (context3.m_mapID <= 0))
                        {
                            continue;
                        }
                        int extraSkillId = context3.m_extraSkillId;
                        switch (i)
                        {
                        case 6:
                        {
                            extraSkillId = context3.m_extraSkill2Id;
                            if (extraSkillId > 0)
                            {
                                break;
                            }
                            continue;
                        }

                        case 7:
                            extraSkillId = context3.m_ornamentSkillId;
                            break;

                        default:
                            this.CreateTalent(context3.m_extraPassiveSkillId);
                            break;
                        }
                        this.InitSkillSlot(i, extraSkillId, 0);
                        SkillSlot slot = this.SkillSlotArray[i];
                        if (slot != null)
                        {
                            slot.SetSkillLevel(1);
                        }
                        continue;
                    }
                    if (actorDataProvider.GetActorStaticSkillData(ref base.actor.TheActorMeta, (ActorSkillSlot)i, ref skillData))
                    {
                        this.InitSkillSlot(i, skillData.SkillId, skillData.PassiveSkillId);
                        if (((i > 3) || (i < 1)) || (!Singleton <BattleLogic> .GetInstance().m_GameInfo.gameContext.levelContext.IsSoulGrow() || (base.actor.TheActorMeta.ActorType != ActorTypeDef.Actor_Type_Hero)))
                        {
                            SkillSlot slot2 = this.SkillSlotArray[i];
                            if (slot2 != null)
                            {
                                slot2.SetSkillLevel(1);
                            }
                        }
                    }
                }
                uint skillID = 0;
                if (provider2.GetActorServerCommonSkillData(ref base.actor.TheActorMeta, out skillID))
                {
                    int num5 = 5;
                    if (skillID != 0)
                    {
                        this.InitSkillSlot(num5, (int)skillID, 0);
                        SkillSlot slot3 = this.SkillSlotArray[num5];
                        if (slot3 != null)
                        {
                            slot3.SetSkillLevel(1);
                        }
                    }
                }
                if (base.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero)
                {
                    this.SkillUseCache = new SkillCache();
                }
            }
        }
예제 #4
0
        public override void Init()
        {
            base.Init();
            this.talentSystem = new TalentSystem();
            this.talentSystem.Init(base.actorPtr);
            this.stSkillStat = new CSkillStat();
            if (this.stSkillStat != null)
            {
                this.stSkillStat.Initialize(base.actorPtr);
                this.InitRandomSkill();
                IGameActorDataProvider actorDataProvider = Singleton <ActorDataCenter> .instance.GetActorDataProvider(GameActorDataProviderType.StaticBattleDataProvider);

                IGameActorDataProvider provider2 = Singleton <ActorDataCenter> .instance.GetActorDataProvider(GameActorDataProviderType.ServerDataProvider);

                ActorStaticSkillData skillData = new ActorStaticSkillData();
                for (int i = 0; i < 7; i++)
                {
                    ResDT_LevelCommonInfo info4;
                    if (i == 6)
                    {
                        SLevelContext context = Singleton <BattleLogic> .GetInstance().GetCurLvelContext();

                        if (context.GameType == COM_GAME_TYPE.COM_SINGLE_GAME_OF_GUIDE)
                        {
                            if (context.iLevelID == CBattleGuideManager.GuideLevelID5v5)
                            {
                                goto Label_00DF;
                            }
                            continue;
                        }
                        ResDT_LevelCommonInfo info = null;
                        info = CLevelCfgLogicManager.FindLevelConfigMultiGame(context.iLevelID);
                        if ((info == null) || (info.bMaxAcntNum != 10))
                        {
                            continue;
                        }
                    }
Label_00DF:
                    if (((i != 4) && (i != 6)) || (base.actor.TheActorMeta.ActorType != ActorTypeDef.Actor_Type_Hero))
                    {
                        goto Label_0284;
                    }
                    SLevelContext curLvelContext = Singleton <BattleLogic> .instance.GetCurLvelContext();

                    if (curLvelContext == null)
                    {
                        continue;
                    }
                    int iLevelID = curLvelContext.iLevelID;
                    if (iLevelID <= 0)
                    {
                        continue;
                    }
                    if (Singleton <LobbyLogic> .instance.inMultiGame)
                    {
                        goto Label_0214;
                    }
                    ResLevelCfgInfo       outLevelCfg     = null;
                    ResDT_LevelCommonInfo outLevelComInfo = null;
                    CLevelCfgLogicManager.FindLevelConfigSingleGame(iLevelID, out outLevelCfg, out outLevelComInfo);
                    if (outLevelComInfo == null)
                    {
                        goto Label_01AD;
                    }
                    int iExtraSkillId = outLevelComInfo.iExtraSkillId;
                    if (i == 6)
                    {
                        iExtraSkillId = outLevelComInfo.iExtraSkill2Id;
                        if (iExtraSkillId > 0)
                        {
                            goto Label_0185;
                        }
                        continue;
                    }
                    this.CreateTalent(outLevelComInfo.iExtraPassiveSkillId);
Label_0185:
                    this.InitSkillSlot(i, iExtraSkillId, 0);
                    SkillSlot slot = this.SkillSlotArray[i];
                    if (slot != null)
                    {
                        slot.SetSkillLevel(1);
                    }
                    continue;
Label_01AD:
                    if (outLevelCfg == null)
                    {
                        continue;
                    }
                    int num4 = outLevelCfg.iExtraSkillId;
                    if (i == 6)
                    {
                        num4 = outLevelCfg.iExtraSkill2Id;
                        if (num4 > 0)
                        {
                            goto Label_01EC;
                        }
                        continue;
                    }
                    this.CreateTalent(outLevelCfg.iExtraPassiveSkillId);
Label_01EC:
                    this.InitSkillSlot(i, num4, 0);
                    SkillSlot slot2 = this.SkillSlotArray[i];
                    if (slot2 != null)
                    {
                        slot2.SetSkillLevel(1);
                    }
                    continue;
Label_0214:
                    info4 = CLevelCfgLogicManager.FindLevelConfigMultiGame(iLevelID);
                    if (info4 == null)
                    {
                        continue;
                    }
                    int num5 = info4.iExtraSkillId;
                    if (i == 6)
                    {
                        num5 = info4.iExtraSkill2Id;
                        if (num5 > 0)
                        {
                            goto Label_025C;
                        }
                        continue;
                    }
                    this.CreateTalent(info4.iExtraPassiveSkillId);
Label_025C:
                    this.InitSkillSlot(i, num5, 0);
                    SkillSlot slot3 = this.SkillSlotArray[i];
                    if (slot3 != null)
                    {
                        slot3.SetSkillLevel(1);
                    }
                    continue;
Label_0284:
                    if (actorDataProvider.GetActorStaticSkillData(ref base.actor.TheActorMeta, (ActorSkillSlot)i, ref skillData))
                    {
                        this.InitSkillSlot(i, skillData.SkillId, skillData.PassiveSkillId);
                        if (((i > 3) || (i < 1)) || (!Singleton <BattleLogic> .GetInstance().m_GameInfo.gameContext.IsSoulGrow() || (base.actor.TheActorMeta.ActorType != ActorTypeDef.Actor_Type_Hero)))
                        {
                            SkillSlot slot4 = this.SkillSlotArray[i];
                            if (slot4 != null)
                            {
                                slot4.SetSkillLevel(1);
                            }
                        }
                    }
                }
                uint skillID = 0;
                if (provider2.GetActorServerCommonSkillData(ref base.actor.TheActorMeta, out skillID))
                {
                    int num7 = 5;
                    if (skillID != 0)
                    {
                        this.InitSkillSlot(num7, (int)skillID, 0);
                        SkillSlot slot5 = this.SkillSlotArray[num7];
                        if (slot5 != null)
                        {
                            slot5.SetSkillLevel(1);
                        }
                    }
                }
                if (base.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero)
                {
                    this.SkillUseCache = new SkillCache();
                }
            }
        }
        public override void Init()
        {
            base.Init();
            this.talentSystem = new TalentSystem();
            this.talentSystem.Init(this.actorPtr);
            this.stSkillStat = new CSkillStat();
            if (this.stSkillStat == null)
            {
                return;
            }
            this.stSkillStat.Initialize(this.actorPtr);
            this.InitRandomSkill();
            this.InitPassiveSkill();
            IGameActorDataProvider actorDataProvider = Singleton <ActorDataCenter> .instance.GetActorDataProvider(GameActorDataProviderType.StaticBattleDataProvider);

            IGameActorDataProvider actorDataProvider2 = Singleton <ActorDataCenter> .instance.GetActorDataProvider(GameActorDataProviderType.ServerDataProvider);

            ActorStaticSkillData actorStaticSkillData = default(ActorStaticSkillData);

            this.ornamentFirstSwitchCdEftTime = Singleton <BattleLogic> .GetInstance().GetCurLvelContext().m_ornamentFirstSwitchCdEftTime;

            this.RotateBodyBulletFindEnemyLogicFrameTick = 0uL;
            int i = 0;

            while (i < 8)
            {
                if (i != 6)
                {
                    goto IL_104;
                }
                SLevelContext curLvelContext = Singleton <BattleLogic> .GetInstance().GetCurLvelContext();

                if (curLvelContext.IsGameTypeGuide())
                {
                    if (CBattleGuideManager.Is5v5GuideLevel(curLvelContext.m_mapID))
                    {
                        goto IL_104;
                    }
                }
                else if (curLvelContext.IsMobaModeWithOutGuide() && curLvelContext.m_pvpPlayerNum == 10)
                {
                    goto IL_104;
                }
IL_FB:
                i++;
                continue;
IL_104:
                if ((i == 4 || i == 6 || i == 7) && this.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero)
                {
                    SLevelContext curLvelContext2 = Singleton <BattleLogic> .instance.GetCurLvelContext();

                    if (curLvelContext2 != null)
                    {
                        int mapID = curLvelContext2.m_mapID;
                        if (mapID > 0)
                        {
                            int num = curLvelContext2.m_extraSkillId;
                            if (i == 6)
                            {
                                num = curLvelContext2.m_extraSkill2Id;
                                if (num <= 0)
                                {
                                    goto IL_FB;
                                }
                            }
                            else if (i == 7)
                            {
                                if (!curLvelContext2.m_bEnableOrnamentSlot || curLvelContext2.m_ornamentSkillId <= 0)
                                {
                                    goto IL_FB;
                                }
                                num = curLvelContext2.m_ornamentSkillId;
                            }
                            else
                            {
                                this.CreateTalent(curLvelContext2.m_extraPassiveSkillId, SKILL_USE_FROM_TYPE.SKILL_USE_FROM_TYPE_SKILL, 0u);
                            }
                            this.InitSkillSlot(i, num, 0);
                            SkillSlot skillSlot = this.SkillSlotArray[i];
                            if (skillSlot != null)
                            {
                                skillSlot.SetSkillLevel(1);
                            }
                        }
                    }
                    goto IL_FB;
                }
                if (!actorDataProvider.GetActorStaticSkillData(ref this.actor.TheActorMeta, (ActorSkillSlot)i, ref actorStaticSkillData))
                {
                    goto IL_FB;
                }
                this.InitSkillSlot(i, actorStaticSkillData.SkillId, actorStaticSkillData.PassiveSkillId);
                if (i <= 3 && i >= 1 && Singleton <BattleLogic> .GetInstance().m_LevelContext.IsSoulGrow() && (this.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero || this.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Call))
                {
                    goto IL_FB;
                }
                SkillSlot skillSlot2 = this.SkillSlotArray[i];
                if (skillSlot2 == null)
                {
                    goto IL_FB;
                }
                skillSlot2.SetSkillLevel(1);
                goto IL_FB;
            }
            uint num2 = 0u;

            if (actorDataProvider2.GetActorServerCommonSkillData(ref this.actor.TheActorMeta, out num2))
            {
                int num3 = 5;
                if (num2 != 0u)
                {
                    this.InitSkillSlot(num3, (int)num2, 0);
                    SkillSlot skillSlot3 = this.SkillSlotArray[num3];
                    if (skillSlot3 != null)
                    {
                        skillSlot3.SetSkillLevel(1);
                    }
                }
            }
            if (this.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero || this.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Call)
            {
                this.SkillUseCache = new SkillCache();
            }
        }