public void OnDead(PoolObjHandle <ActorRoot> _attack)
        {
            if (this.clearRule != null)
            {
                this.clearRule.CheckBuffNoClear(RES_SKILLFUNC_CLEAR_RULE.RES_SKILLFUNC_CLEAR_DEAD);
            }
            BuffSkill       inBuff       = null;
            ResDT_SkillFunc outSkillFunc = null;

            for (int i = 0; i < this.SpawnedBuffList.Count; i++)
            {
                inBuff = this.SpawnedBuffList[i];
                if ((inBuff != null) && inBuff.FindSkillFunc(0x20, out outSkillFunc))
                {
                    int  reviveTime  = inBuff.CustomParams[0];
                    int  reviveLife  = inBuff.CustomParams[1];
                    bool autoReset   = inBuff.CustomParams[2] == 1;
                    bool bBaseRevive = inBuff.CustomParams[3] == 0;
                    bool bCDReset    = inBuff.CustomParams[4] == 1;
                    base.actor.ActorControl.SetReviveContext(reviveTime, reviveLife, autoReset, bBaseRevive, bCDReset);
                    this.RemoveBuff(inBuff);
                }
                if ((((base.actor.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero) && (_attack != 0)) && ((_attack.handle.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero) && (inBuff != null))) && ((inBuff.cfgData != null) && (inBuff.cfgData.bIsInheritByKiller == 1)))
                {
                    this.RemoveBuff(inBuff);
                    SkillUseContext inContext = new SkillUseContext();
                    inContext.SetOriginator(_attack);
                    _attack.handle.SkillControl.SpawnBuff(_attack, inContext, inBuff.SkillID, true);
                }
            }
            this.OnDeadExtraEffect(_attack);
        }
        private void OnDeadExtraEffect(PoolObjHandle <ActorRoot> _attack)
        {
            BuffSkill       skill        = null;
            ResDT_SkillFunc outSkillFunc = null;

            if (_attack != 0)
            {
                for (int i = 0; i < _attack.handle.BuffHolderComp.SpawnedBuffList.Count; i++)
                {
                    skill = _attack.handle.BuffHolderComp.SpawnedBuffList[i];
                    if ((skill != null) && skill.FindSkillFunc(0x21, out outSkillFunc))
                    {
                        int inSkillCombineId = skill.CustomParams[0];
                        int num3             = skill.CustomParams[1];
                        int num4             = skill.CustomParams[2];
                        int typeMask         = skill.CustomParams[3];
                        int typeSubMask      = skill.CustomParams[4];
                        if ((num4 != 0) && this.CheckTargetSubType(typeMask, typeSubMask))
                        {
                            SkillUseContext inContext = new SkillUseContext();
                            inContext.SetOriginator(_attack);
                            _attack.handle.SkillControl.SpawnBuff(_attack, inContext, inSkillCombineId, true);
                        }
                    }
                }
            }
        }
Beispiel #3
0
        private void TriggerAction(PoolObjHandle <ActorRoot> _originator)
        {
            SkillUseContext context = new SkillUseContext();

            context.SetOriginator(_originator);
            context.TargetActor = this.sourceActor;
            this.Use(_originator, context);
        }
        private void OnDamageExtraEffect(PoolObjHandle <ActorRoot> _attack, SkillSlotType _slotType)
        {
            BuffSkill       inBuff       = null;
            ResDT_SkillFunc outSkillFunc = null;

            if (_attack != 0)
            {
                for (int i = 0; i < _attack.handle.BuffHolderComp.SpawnedBuffList.Count; i++)
                {
                    inBuff = _attack.handle.BuffHolderComp.SpawnedBuffList[i];
                    if ((inBuff != null) && inBuff.FindSkillFunc(0x21, out outSkillFunc))
                    {
                        bool flag             = false;
                        bool flag2            = true;
                        int  inSkillCombineId = inBuff.CustomParams[0];
                        int  num3             = inBuff.CustomParams[1];
                        int  num4             = inBuff.CustomParams[2];
                        int  typeMask         = inBuff.CustomParams[3];
                        int  typeSubMask      = inBuff.CustomParams[4];
                        int  num7             = inBuff.CustomParams[5];
                        if ((num4 == 0) && this.CheckTargetSubType(typeMask, typeSubMask))
                        {
                            if (num3 == 0)
                            {
                                flag = true;
                            }
                            else if ((num3 & (((int)1) << _slotType)) > 0)
                            {
                                flag = true;
                            }
                            if (num7 > 0)
                            {
                                if ((Singleton <FrameSynchr> .GetInstance().LogicFrameTick - inBuff.controlTime) >= num7)
                                {
                                    flag2 = true;
                                }
                                else
                                {
                                    flag2 = false;
                                }
                            }
                            if (flag && flag2)
                            {
                                SkillUseContext inContext = new SkillUseContext();
                                inContext.SetOriginator(_attack);
                                _attack.handle.SkillControl.SpawnBuff(base.actorPtr, inContext, inSkillCombineId, true);
                                inBuff.controlTime = Singleton <FrameSynchr> .GetInstance().LogicFrameTick;

                                if (num7 == -1)
                                {
                                    _attack.handle.BuffHolderComp.RemoveBuff(inBuff);
                                }
                            }
                        }
                    }
                }
            }
        }
        private int ResistDeadDamage(ref HurtDataInfo _hurt, int _hurtValue)
        {
            BuffSkill       inBuff       = null;
            ResDT_SkillFunc outSkillFunc = null;

            if ((this.buffHolder != null) && (this.buffHolder.actor != null))
            {
                ActorRoot actor = this.buffHolder.actor;
                for (int i = 0; i < actor.BuffHolderComp.SpawnedBuffList.Count; i++)
                {
                    inBuff = actor.BuffHolderComp.SpawnedBuffList[i];
                    if ((inBuff != null) && inBuff.FindSkillFunc(0x36, out outSkillFunc))
                    {
                        int inSkillCombineId = inBuff.CustomParams[0];
                        if (inBuff.CustomParams[1] == 0)
                        {
                            if (actor.ValueComponent.actorHp <= _hurtValue)
                            {
                                SkillUseContext inContext = new SkillUseContext();
                                inContext.SetOriginator(_hurt.atker);
                                actor.SkillControl.SpawnBuff(actor.SelfPtr, inContext, inSkillCombineId, true);
                                this.buffHolder.RemoveBuff(inBuff);
                                DefaultGameEventParam prm = new DefaultGameEventParam(this.buffHolder.actorPtr, _hurt.atker);
                                Singleton <GameEventSys> .instance.SendEvent <DefaultGameEventParam>(GameEventDef.Event_ActorImmuneDeadHurt, ref prm);

                                _hurtValue = 0;
                            }
                        }
                        else
                        {
                            SkillUseContext context2 = new SkillUseContext();
                            context2.SetOriginator(_hurt.atker);
                            actor.SkillControl.SpawnBuff(actor.SelfPtr, context2, inSkillCombineId, true);
                            this.buffHolder.RemoveBuff(inBuff);
                            _hurtValue = 0;
                        }
                    }
                    if (((_hurt.atkSlot == SkillSlotType.SLOT_SKILL_0) && (inBuff != null)) && inBuff.FindSkillFunc(0x43, out outSkillFunc))
                    {
                        int num4 = inBuff.CustomParams[0];
                        int num5 = inBuff.CustomParams[4];
                        switch (num4)
                        {
                        case 1:
                            _hurtValue = (_hurtValue * (0x2710 - num5)) / 0x2710;
                            break;

                        case 0:
                            _hurtValue -= num5;
                            break;
                        }
                    }
                }
            }
            return(_hurtValue);
        }
Beispiel #6
0
 private void EnableEquipBuff(CEquipBuffInfo equipBuffInfo)
 {
     if (!equipBuffInfo.m_isEnabled)
     {
         SkillUseContext inContext = new SkillUseContext();
         inContext.SetOriginator(base.actorPtr);
         base.actor.SkillControl.SpawnBuff(base.actorPtr, inContext, (int)equipBuffInfo.m_buffID, false);
         equipBuffInfo.m_isEnabled = true;
     }
 }
Beispiel #7
0
        public void RecoverClearBuff()
        {
            int inSkillCombineId = 0;

            for (int i = 0; i < this.CacheBufferList.Count; i++)
            {
                inSkillCombineId = this.CacheBufferList[i];
                SkillUseContext inContext = new SkillUseContext();
                inContext.SetOriginator(this.buffHolder.actorPtr);
                this.buffHolder.actor.SkillControl.SpawnBuff(this.buffHolder.actorPtr, inContext, inSkillCombineId, false);
            }
            this.CacheBufferList.Clear();
        }
Beispiel #8
0
        protected void Trigger()
        {
            SkillUseContext context = new SkillUseContext(this.passiveSkill.SlotType);

            context.SetOriginator(this.sourceActor);
            if (this.triggerActor == 0)
            {
                context.TargetActor = this.sourceActor;
            }
            else
            {
                context.TargetActor = this.triggerActor;
            }
            this.passiveSkill.Use(this.sourceActor, context);
            this.deltaTime = this.cfgData.iCoolDown;
        }
Beispiel #9
0
 public override bool Use(PoolObjHandle <ActorRoot> user, SkillUseContext context)
 {
     if (context != null)
     {
         context.SetOriginator(user);
         context.Instigator = user;
     }
     if (!base.Use(user, context))
     {
         return(false);
     }
     this.skillAbort.InitAbort(false);
     this.bDelayAbortSkill   = false;
     this.bProtectAbortSkill = false;
     if ((context != null) && (context.SlotType == SkillSlotType.SLOT_SKILL_0))
     {
         this.SetSkillSpeed(user);
     }
     return(true);
 }
Beispiel #10
0
        public bool Use()
        {
            BuffSkill inBuff = ClassObjPool <BuffSkill> .Get();

            inBuff.Init(this.BuffID);
            if (inBuff.cfgData == null)
            {
                inBuff.Release();
                return(false);
            }
            SkillUseContext context = new SkillUseContext(SkillSlotType.SLOT_SKILL_VALID, this.TargetActor.handle.ObjID);

            context.SetOriginator(this.SrcActor);
            if (!inBuff.Use(this.SrcActor, context))
            {
                inBuff.Release();
                return(false);
            }
            this.buffSkill = new BuffFense(inBuff);
            return(true);
        }