예제 #1
0
        public void RecoverSkillSlot(SkillSlotType _slotType)
        {
            SkillSlot slot = null;

            if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out slot))
            {
                if (this.changeSkillSlot[(int)_slotType].changeCount == 1)
                {
                    int initSkillID = this.changeSkillSlot[(int)_slotType].initSkillID;
                    int curSkillCD  = (int)slot.CurSkillCD;
                    int skillLevel  = slot.GetSkillLevel();
                    slot.CancelUseSkill();
                    this.sourceActor.handle.SkillControl.InitSkillSlot((int)_slotType, initSkillID, 0);
                    if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out slot))
                    {
                        slot.SetSkillLevel(skillLevel);
                        slot.CurSkillCD = curSkillCD;
                        slot.IsCDReady  = curSkillCD == 0;
                        DefaultSkillEventParam param = new DefaultSkillEventParam(_slotType, 0);
                        Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_UpdateSkillUI, this.sourceActor, ref param, GameSkillEventChannel.Channel_HostCtrlActor);
                    }
                    this.changeSkillSlot[(int)_slotType].initSkillID   = 0;
                    this.changeSkillSlot[(int)_slotType].changeSkillID = 0;
                }
                this.changeSkillSlot[(int)_slotType].changeCount--;
            }
        }
        public void RecoverSkillSlot(SkillSlotType _slotType)
        {
            SkillSlot skillSlot = null;

            if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out skillSlot))
            {
                if (this.changeSkillSlot[(int)_slotType].changeCount == 1)
                {
                    int initSkillID        = this.changeSkillSlot[(int)_slotType].initSkillID;
                    int initPassiveSkillID = this.changeSkillSlot[(int)_slotType].initPassiveSkillID;
                    int num        = skillSlot.CurSkillCD;
                    int skillLevel = skillSlot.GetSkillLevel();
                    skillSlot.DestoryIndicatePrefab();
                    this.sourceActor.handle.SkillControl.InitSkillSlot((int)_slotType, initSkillID, initPassiveSkillID);
                    if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out skillSlot))
                    {
                        skillSlot.SetSkillLevel(skillLevel);
                        skillSlot.CurSkillCD = num;
                        skillSlot.IsCDReady  = (num == 0);
                        DefaultSkillEventParam defaultSkillEventParam = new DefaultSkillEventParam(_slotType, 0, this.sourceActor);
                        Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_UpdateSkillUI, this.sourceActor, ref defaultSkillEventParam, GameSkillEventChannel.Channel_HostCtrlActor);
                    }
                    this.changeSkillSlot[(int)_slotType].initSkillID        = 0;
                    this.changeSkillSlot[(int)_slotType].changeSkillID      = 0;
                    this.changeSkillSlot[(int)_slotType].initPassiveSkillID = 0;
                }
                ChangeSkillSlot[] array = this.changeSkillSlot;
                array[(int)_slotType].changeCount = array[(int)_slotType].changeCount - 1;
            }
        }
예제 #3
0
        private void UpdateSkillCD(int nDelta)
        {
            if (!this.IsCDReady)
            {
                this.CurSkillCD -= nDelta;
                this.eventTime  += nDelta;
                if (this.CurSkillCD <= 0)
                {
                    this.CurSkillCD = 0;
                    this.IsCDReady  = true;
                }
                if ((this.eventTime >= 200) || (this.CurSkillCD == 0))
                {
                    if (this.SlotType != SkillSlotType.SLOT_SKILL_0)
                    {
                        DefaultSkillEventParam param = new DefaultSkillEventParam(this.SlotType, (int)this.CurSkillCD, this.Actor);
                        Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.AllEvent_ChangeSkillCD, this.Actor, ref param, GameSkillEventChannel.Channel_AllActor);

                        if (this.IsCDReady)
                        {
                            Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_SkillCDEnd, this.Actor, ref param, GameSkillEventChannel.Channel_HostCtrlActor);
                        }
                    }
                    this.eventTime -= 200;
                }
            }
        }
예제 #4
0
        public void Leave()
        {
            this.bActive = false;
            if (this.recoverSkillID == 0)
            {
                return;
            }
            Skill skill = new Skill(this.recoverSkillID);

            if (this.curSkillSlot.SlotType != SkillSlotType.SLOT_SKILL_0)
            {
                this.curSkillSlot.skillIndicator.UnInitIndicatePrefab(true);
                this.curSkillSlot.skillIndicator.CreateIndicatePrefab(skill);
            }
            this.curSkillSlot.NextSkillObj = skill;
            if (this.bOvertimeCD)
            {
                this.curSkillSlot.StartSkillCD();
            }
            if (this.bSendEvent)
            {
                DefaultSkillEventParam defaultSkillEventParam = new DefaultSkillEventParam(this.curSkillSlot.SlotType, this.recoverSkillID, this.curSkillSlot.Actor);
                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_RecoverSkill, this.curSkillSlot.Actor, ref defaultSkillEventParam, GameSkillEventChannel.Channel_HostCtrlActor);
            }
            this.recoverSkillID = 0;
        }
예제 #5
0
        public void CancelUseSkillSlot(SkillSlotType slot)
        {
            SkillSlot slot2;

            if (this.TryGetSkillSlot(slot, out slot2))
            {
                slot2.CancelUseSkill();
                DefaultSkillEventParam param = new DefaultSkillEventParam(slot, 0);
                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_UseCanceled, base.actorPtr, ref param, GameSkillEventChannel.Channel_HostCtrlActor);
            }
        }
예제 #6
0
 private void OnActorChangeSkill(ref DefaultSkillEventParam prm)
 {
     if (!prm.actor || prm.actor.get_handle().SkillControl == null || prm.actor.get_handle().SkillControl.stSkillStat == null)
     {
         return;
     }
     if (prm.slot == SkillSlotType.SLOT_SKILL_7)
     {
         prm.actor.get_handle().SkillControl.stSkillStat.m_uiEyeSwitchTimes += 1u;
     }
 }
예제 #7
0
        public void StartSkillCD()
        {
            this.CurSkillCD = this.GetSkillCDMax();
            this.IsCDReady  = false;
            this.eventTime  = 0;
            DefaultSkillEventParam param = new DefaultSkillEventParam(this.SlotType, (int)this.CurSkillCD, this.Actor);

            if (this.SlotType != SkillSlotType.SLOT_SKILL_0)
            {
                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_SkillCDStart, this.Actor, ref param, GameSkillEventChannel.Channel_HostCtrlActor);

                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.AllEvent_ChangeSkillCD, this.Actor, ref param, GameSkillEventChannel.Channel_AllActor);
            }
        }
예제 #8
0
 public void SetSkillLevel(int _level)
 {
     this.skillLevel = _level;
     if (this.skillLevel == 0)
     {
         DefaultSkillEventParam param = new DefaultSkillEventParam(this.SlotType, 0, this.Actor);
         Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_DisableSkill, this.Actor, ref param, GameSkillEventChannel.Channel_HostCtrlActor);
     }
     else if (this.skillLevel == 1)
     {
         DefaultSkillEventParam param2 = new DefaultSkillEventParam(this.SlotType, 0, this.Actor);
         Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_EnableSkill, this.Actor, ref param2, GameSkillEventChannel.Channel_HostCtrlActor);
     }
 }
예제 #9
0
        public void HostCancelUseSkillSlot(SkillSlotType slot, enSkillJoystickMode mode)
        {
            SkillSlot slot2;

            if (this.TryGetSkillSlot(slot, out slot2))
            {
                slot2.CancelUseSkill();
                if (mode == enSkillJoystickMode.SelectTarget)
                {
                    MonoSingleton <CameraSystem> .GetInstance().SetFocusActor(base.actorPtr);
                }
                DefaultSkillEventParam param = new DefaultSkillEventParam(slot, 0, base.actorPtr);
                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_UseCanceled, base.actorPtr, ref param, GameSkillEventChannel.Channel_HostCtrlActor);
            }
        }
예제 #10
0
        public void ChangeSkillSlot(SkillSlotType _slotType, int _skillID, int _orgSkillID = 0)
        {
            int       skillID = 0;
            SkillSlot slot    = null;

            if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out slot))
            {
                int ornamentSwitchCD = 0;
                if (_slotType == SkillSlotType.SLOT_SKILL_7)
                {
                    SLevelContext curLvelContext = Singleton <BattleLogic> .instance.GetCurLvelContext();

                    if (curLvelContext != null)
                    {
                        ornamentSwitchCD = curLvelContext.m_ornamentSwitchCD;
                    }
                }
                else
                {
                    ornamentSwitchCD = (int)slot.CurSkillCD;
                }
                int skillLevel = slot.GetSkillLevel();
                if (slot.SkillObj != null)
                {
                    skillID = slot.SkillObj.SkillID;
                }
                if ((_orgSkillID == 0) || (skillID == _orgSkillID))
                {
                    slot.DestoryIndicatePrefab();
                    this.sourceActor.handle.SkillControl.InitSkillSlot((int)_slotType, _skillID, 0);
                    if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out slot))
                    {
                        slot.CurSkillCD = ornamentSwitchCD;
                        slot.IsCDReady  = ornamentSwitchCD == 0;
                        slot.SetSkillLevel(skillLevel);
                        DefaultSkillEventParam param = new DefaultSkillEventParam(_slotType, 0, this.sourceActor);
                        Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_UpdateSkillUI, this.sourceActor, ref param, GameSkillEventChannel.Channel_HostCtrlActor);

                        if (this.changeSkillSlot[(int)_slotType].changeCount == 0)
                        {
                            this.changeSkillSlot[(int)_slotType].initSkillID = skillID;
                        }
                        this.changeSkillSlot[(int)_slotType].changeSkillID = _skillID;
                        this.changeSkillSlot[(int)_slotType].changeCount++;
                    }
                }
            }
        }
예제 #11
0
 private void onUseSkillCanceled(ref DefaultSkillEventParam prm)
 {
     int length = this.TriggerMatches.Length;
     for (int i = 0; i < length; i++)
     {
         CTriggerMatch match = this.TriggerMatches[i];
         if (match != null)
         {
             PoolObjHandle<ActorRoot> src = new PoolObjHandle<ActorRoot>(null);
             PoolObjHandle<ActorRoot> atker = new PoolObjHandle<ActorRoot>(null);
             if (this.FilterMatch(EGlobalGameEvent.SkillUseCanceled, match, src, atker, (DefaultSkillEventParam) prm, i))
             {
                 this.DoTriggering(match, src, atker, (DefaultSkillEventParam) prm);
             }
         }
     }
 }
예제 #12
0
        public void ResetSkillCD()
        {
            if (!this.IsCDReady)
            {
                this.CurSkillCD = 0;
                this.IsCDReady  = true;
                if (this.SlotType != SkillSlotType.SLOT_SKILL_0)
                {
                    DefaultSkillEventParam param = new DefaultSkillEventParam(this.SlotType, (int)this.CurSkillCD, this.Actor);
                    Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.AllEvent_ChangeSkillCD, this.Actor, ref param, GameSkillEventChannel.Channel_AllActor);

                    if (this.IsCDReady)
                    {
                        Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_SkillCDEnd, this.Actor, ref param, GameSkillEventChannel.Channel_HostCtrlActor);
                    }
                }
            }
        }
예제 #13
0
        public void StartSkillCD()
        {
            this.CurSkillCD = this.GetSkillCDMax();
            this.IsCDReady  = false;
            this.eventTime  = 0;
            if (this.SlotType == SkillSlotType.SLOT_SKILL_7)
            {
                this.Actor.handle.SkillControl.ornamentFirstSwitchCdEftTime = 0;
            }
            DefaultSkillEventParam defaultSkillEventParam = new DefaultSkillEventParam(this.SlotType, this.CurSkillCD, this.Actor);

            if (this.SlotType != SkillSlotType.SLOT_SKILL_0)
            {
                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_SkillCDStart, this.Actor, ref defaultSkillEventParam, GameSkillEventChannel.Channel_HostCtrlActor);

                Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.AllEvent_ChangeSkillCD, this.Actor, ref defaultSkillEventParam, GameSkillEventChannel.Channel_AllActor);
            }
        }
예제 #14
0
        private void onUseSkillCanceled(ref DefaultSkillEventParam prm)
        {
            int num = this.TriggerMatches.Length;
            SFilterMatchParam sFilterMatchParam = default(SFilterMatchParam);

            sFilterMatchParam.slot = prm.slot;
            for (int i = 0; i < num; i++)
            {
                CTriggerMatch cTriggerMatch = this.TriggerMatches[i];
                if (cTriggerMatch != null)
                {
                    PoolObjHandle <ActorRoot> src   = new PoolObjHandle <ActorRoot>(null);
                    PoolObjHandle <ActorRoot> atker = new PoolObjHandle <ActorRoot>(null);
                    if (this.FilterMatch(EGlobalGameEvent.SkillUseCanceled, cTriggerMatch, src, atker, ref sFilterMatchParam, i))
                    {
                        this.DoTriggering(cTriggerMatch, src, atker);
                    }
                }
            }
        }
예제 #15
0
 public override void RmvDisableSkillFlag(SkillSlotType _type)
 {
     base.RmvDisableSkillFlag(_type);
     if (_type == SkillSlotType.SLOT_SKILL_COUNT)
     {
         for (int i = 0; i < 7; i++)
         {
             if (base.actor.SkillControl.DisableSkill[i] == 0)
             {
                 DefaultSkillEventParam param = new DefaultSkillEventParam((SkillSlotType)i, 0);
                 Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_CancelLimitSkill, base.GetActor(), ref param, GameSkillEventChannel.Channel_HostCtrlActor);
             }
         }
     }
     else if (base.actor.SkillControl.DisableSkill[(int)_type] == 0)
     {
         DefaultSkillEventParam param2 = new DefaultSkillEventParam(_type, 0);
         Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_CancelLimitSkill, base.GetActor(), ref param2, GameSkillEventChannel.Channel_HostCtrlActor);
     }
 }
예제 #16
0
 public override void RmvDisableSkillFlag(SkillSlotType _type, bool bForce = false)
 {
     base.RmvDisableSkillFlag(_type, false);
     if (_type == SkillSlotType.SLOT_SKILL_COUNT)
     {
         for (int i = 0; i < 10; i++)
         {
             if (this.actor.SkillControl.DisableSkill[i] == 0 && (!this.actor.SkillControl.IsIngnoreDisableSkill((SkillSlotType)i) || bForce))
             {
                 DefaultSkillEventParam defaultSkillEventParam = new DefaultSkillEventParam((SkillSlotType)i, 0, this.actorPtr);
                 Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_CancelLimitSkill, base.GetActor(), ref defaultSkillEventParam, GameSkillEventChannel.Channel_HostCtrlActor);
             }
         }
     }
     else if (this.actor.SkillControl.DisableSkill[(int)_type] == 0 && (!this.actor.SkillControl.IsIngnoreDisableSkill(_type) || bForce))
     {
         DefaultSkillEventParam defaultSkillEventParam2 = new DefaultSkillEventParam(_type, 0, this.actorPtr);
         Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_CancelLimitSkill, base.GetActor(), ref defaultSkillEventParam2, GameSkillEventChannel.Channel_HostCtrlActor);
     }
     if (bForce)
     {
         this.actor.SkillControl.SetForceDisableSkillSlot(_type, false);
     }
 }
        public void ChangeSkillSlot(SkillSlotType _slotType, int _skillID, int _orgSkillID = 0)
        {
            int       num       = 0;
            int       num2      = 0;
            SkillSlot skillSlot = null;

            if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out skillSlot))
            {
                int num3 = 0;
                if (_slotType == SkillSlotType.SLOT_SKILL_7)
                {
                    SLevelContext curLvelContext = Singleton <BattleLogic> .instance.GetCurLvelContext();

                    if (curLvelContext != null)
                    {
                        if ((long)this.sourceActor.handle.SkillControl.ornamentFirstSwitchCdEftTime >= (long)Singleton <FrameSynchr> .instance.LogicFrameTick)
                        {
                            num3 = curLvelContext.m_ornamentFirstSwitchCd;
                        }
                        else
                        {
                            num3 = curLvelContext.m_ornamentSwitchCD;
                        }
                        this.sourceActor.handle.SkillControl.ornamentFirstSwitchCdEftTime = 0;
                    }
                }
                else
                {
                    num3 = skillSlot.CurSkillCD;
                }
                int skillLevel = skillSlot.GetSkillLevel();
                if (skillSlot.SkillObj != null)
                {
                    num = skillSlot.SkillObj.SkillID;
                }
                if (skillSlot.PassiveSkillObj != null)
                {
                    num2 = skillSlot.PassiveSkillObj.SkillID;
                }
                if (_orgSkillID != 0 && num != _orgSkillID)
                {
                    return;
                }
                skillSlot.DestoryIndicatePrefab();
                this.sourceActor.handle.SkillControl.InitSkillSlot((int)_slotType, _skillID, num2);
                if (this.sourceActor.handle.SkillControl.TryGetSkillSlot(_slotType, out skillSlot))
                {
                    skillSlot.CurSkillCD = num3;
                    skillSlot.IsCDReady  = (num3 == 0);
                    skillSlot.SetSkillLevel(skillLevel);
                    DefaultSkillEventParam defaultSkillEventParam = new DefaultSkillEventParam(_slotType, 0, this.sourceActor);
                    Singleton <GameSkillEventSys> .GetInstance().SendEvent <DefaultSkillEventParam>(GameSkillEventDef.Event_UpdateSkillUI, this.sourceActor, ref defaultSkillEventParam, GameSkillEventChannel.Channel_HostCtrlActor);

                    if (this.changeSkillSlot[(int)_slotType].changeCount == 0)
                    {
                        this.changeSkillSlot[(int)_slotType].initSkillID        = num;
                        this.changeSkillSlot[(int)_slotType].initPassiveSkillID = num2;
                    }
                    this.changeSkillSlot[(int)_slotType].changeSkillID = _skillID;
                    ChangeSkillSlot[] array = this.changeSkillSlot;
                    array[(int)_slotType].changeCount = array[(int)_slotType].changeCount + 1;
                }
            }
        }
예제 #18
0
        public bool FilterMatch(EGlobalGameEvent inEventType, PoolObjHandle <ActorRoot> src, PoolObjHandle <ActorRoot> atker, object param, CTriggerMatch match, int inMatchIndex)
        {
            if (!this.CheckDifficulty())
            {
                return(false);
            }
            if (((this.GlobalVariable != 0) && (Singleton <BattleLogic> .instance.m_globalTrigger != null)) && (this.GlobalVariable != Singleton <BattleLogic> .instance.m_globalTrigger.CurGlobalVariable))
            {
                return(false);
            }
            if (this.bCaptainSrc && ((src == 0) || (src != Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer().Captain)))
            {
                return(false);
            }
            if (this.bCaptainAtker && ((atker == 0) || (atker != Singleton <GamePlayerCenter> .GetInstance().GetHostPlayer().Captain)))
            {
                return(false);
            }
            if (this.SrcActorCond != null)
            {
                foreach (STriggerCondActor actor in this.SrcActorCond)
                {
                    if (!actor.FilterMatch(ref src))
                    {
                        return(false);
                    }
                }
            }
            if (this.AtkerActorCond != null)
            {
                foreach (STriggerCondActor actor2 in this.AtkerActorCond)
                {
                    if (!actor2.FilterMatch(ref atker))
                    {
                        return(false);
                    }
                }
            }
            switch (inEventType)
            {
            case EGlobalGameEvent.SpawnGroupDead:
            {
                if (match.Originator == null)
                {
                    break;
                }
                CommonSpawnGroup component = match.Originator.GetComponent <CommonSpawnGroup>();
                SpawnGroup       group2    = match.Originator.GetComponent <SpawnGroup>();
                if ((component == null) || (component == (param as CommonSpawnGroup)))
                {
                    if ((group2 == null) || (group2 == (param as SpawnGroup)))
                    {
                        break;
                    }
                    return(false);
                }
                return(false);
            }

            case EGlobalGameEvent.ActorDead:
            {
                PoolObjHandle <ActorRoot> actorRoot = ActorHelper.GetActorRoot(match.Originator);
                if ((actorRoot == 0) || !(actorRoot != src))
                {
                    break;
                }
                return(false);
            }

            case EGlobalGameEvent.ActorDamage:
            {
                HurtEventResultInfo inHurtInfo = (HurtEventResultInfo)param;
                if (this.FilterMatchDamage(ref inHurtInfo))
                {
                    break;
                }
                return(false);
            }

            case EGlobalGameEvent.UseSkill:
            {
                ActorSkillEventParam param2 = (ActorSkillEventParam)param;
                if (param2.slot == this.skillSlot)
                {
                    break;
                }
                return(false);
            }

            case EGlobalGameEvent.TalentLevelChange:
            {
                TalentLevelChangeParam param4 = (TalentLevelChangeParam)param;
                if (match.Condition.TalentLevel == param4.TalentLevel)
                {
                    break;
                }
                return(false);
            }

            case EGlobalGameEvent.BattleGoldChange:
                if ((src != 0) && ActorHelper.IsHostCtrlActor(ref src))
                {
                    int currentGold = (int)param;
                    if (!this.FilterBattleGoldNum(currentGold))
                    {
                        return(false);
                    }
                    break;
                }
                return(false);

            case EGlobalGameEvent.SkillUseCanceled:
            {
                DefaultSkillEventParam param3 = (DefaultSkillEventParam)param;
                if (param3.slot == this.skillSlot)
                {
                    break;
                }
                return(false);
            }
            }
            return(true);
        }