private void OnDeadExtraEffect(PoolObjHandle <ActorRoot> _attack)
 {
     if (_attack != 0)
     {
         BuffSkill       skill        = null;
         ResDT_SkillFunc outSkillFunc = null;
         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.GetSkillFuncParam(0x21, 0, false);
                 int num3             = skill.GetSkillFuncParam(0x21, 1, false);
                 int num4             = skill.GetSkillFuncParam(0x21, 2, false);
                 int typeMask         = skill.GetSkillFuncParam(0x21, 3, false);
                 int typeSubMask      = skill.GetSkillFuncParam(0x21, 4, false);
                 if ((num4 == 1) && this.CheckTargetSubType(typeMask, typeSubMask, base.actorPtr))
                 {
                     SkillUseParam inParam = new SkillUseParam();
                     inParam.SetOriginator(_attack);
                     _attack.handle.SkillControl.SpawnBuff(_attack, ref inParam, inSkillCombineId, true);
                 }
             }
         }
     }
 }
        private void InitContext(Action _action)
        {
            PoolObjHandle <ActorRoot> actorHandle = _action.GetActorHandle(1);
            PoolObjHandle <ActorRoot> handle2     = _action.GetActorHandle(0);

            if ((actorHandle != 0) && (handle2 != 0))
            {
                SkillUseContext refParamObject = _action.refParams.GetRefParamObject <SkillUseContext>("SkillContext");
                BuffSkill       skill          = _action.refParams.GetRefParamObject <BuffSkill>("SkillObj");
                ResDT_SkillFunc outSkillFunc   = null;
                if ((skill != null) && skill.FindSkillFunc((int)this.SkillFuncType, out outSkillFunc))
                {
                    this.m_context.inTargetObj  = actorHandle;
                    this.m_context.inOriginator = handle2;
                    this.m_context.inUseContext = refParamObject;
                    this.m_context.inSkillFunc  = outSkillFunc;
                    this.m_context.LocalParams  = new ResDT_IntParamArrayNode[6];
                    for (int i = 0; i < 6; i++)
                    {
                        this.m_context.LocalParams[i]        = new ResDT_IntParamArrayNode();
                        this.m_context.LocalParams[i].iParam = 0;
                    }
                    this.m_context.inAction       = _action;
                    this.m_context.inBuffSkill    = new PoolObjHandle <BuffSkill>(skill);
                    this.m_context.inDoCount      = 0;
                    this.m_context.inOverlayCount = skill.GetOverlayCount();
                    this.m_context.inLastEffect   = true;
                    this.m_context.InitSkillFuncContext();
                    this.bInit = true;
                }
            }
        }
        public int GetSoulExpAddRate(PoolObjHandle <ActorRoot> _target)
        {
            int             num          = 0;
            BuffSkill       skill        = null;
            ResDT_SkillFunc outSkillFunc = null;

            if (_target != 0)
            {
                for (int i = 0; i < this.SpawnedBuffList.Count; i++)
                {
                    skill = this.SpawnedBuffList[i];
                    if ((skill != null) && skill.FindSkillFunc(0x31, out outSkillFunc))
                    {
                        int typeMask    = skill.GetSkillFuncParam(0x31, 0, false);
                        int typeSubMask = skill.GetSkillFuncParam(0x31, 1, false);
                        int num5        = skill.GetSkillFuncParam(0x31, 2, false);
                        int num6        = skill.GetSkillFuncParam(0x31, 3, false);
                        if (this.CheckTargetSubType(typeMask, typeSubMask, _target))
                        {
                            bool flag = true;
                            if (num6 > 0)
                            {
                                flag = this.CheckTargetFromEnemy(base.actorPtr, _target);
                            }
                            if (flag)
                            {
                                num += num5;
                            }
                        }
                    }
                }
            }
            return(num);
        }
        private void OnDeadExtraEffect(PoolObjHandle <ActorRoot> _attack)
        {
            if (!_attack)
            {
                return;
            }
            ResDT_SkillFunc skillFunc = null;

            for (int i = 0; i < _attack.get_handle().BuffHolderComp.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = _attack.get_handle().BuffHolderComp.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(33, out skillFunc))
                {
                    int skillFuncParam  = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                    int skillFuncParam3 = buffSkill.GetSkillFuncParam(skillFunc, 2, false);
                    int skillFuncParam4 = buffSkill.GetSkillFuncParam(skillFunc, 3, false);
                    int skillFuncParam5 = buffSkill.GetSkillFuncParam(skillFunc, 4, false);
                    if (skillFuncParam3 == 1 && this.CheckTargetSubType(skillFuncParam4, skillFuncParam5, this.actorPtr))
                    {
                        SkillUseParam skillUseParam = default(SkillUseParam);
                        skillUseParam.Init();
                        skillUseParam.SetOriginator(_attack);
                        skillUseParam.bExposing = buffSkill.skillContext.bExposing;
                        _attack.get_handle().SkillControl.SpawnBuff(_attack, ref skillUseParam, skillFuncParam, true);
                    }
                }
            }
        }
        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);
        }
        public int GetSoulExpAddRate(PoolObjHandle <ActorRoot> _target)
        {
            int             num          = 0;
            BuffSkill       skill        = null;
            ResDT_SkillFunc outSkillFunc = null;

            if (_target != 0)
            {
                for (int i = 0; i < this.SpawnedBuffList.Count; i++)
                {
                    skill = this.SpawnedBuffList[i];
                    if ((skill != null) && skill.FindSkillFunc(0x31, out outSkillFunc))
                    {
                        int typeMask    = skill.CustomParams[0];
                        int typeSubMask = skill.CustomParams[1];
                        int num5        = skill.CustomParams[2];
                        if (this.CheckTargetSubType(typeMask, typeSubMask))
                        {
                            num += num5;
                        }
                    }
                }
            }
            return(num);
        }
Exemple #7
0
        public int GetSkillFuncParam(int inSkillFuncType, int _index, bool _bGrow)
        {
            ResDT_SkillFunc resDT_SkillFunc = this.FindSkillFunc(inSkillFuncType);

            if (resDT_SkillFunc == null)
            {
                DebugHelper.Assert(false, "FindSkillFunc error: inSkillFuncType = {0}", new object[]
                {
                    inSkillFuncType
                });
                return(0);
            }
            if (_index < 0 || _index + 1 > 8)
            {
                DebugHelper.Assert(false, "GetSkillFuncParam: index = {0}", new object[]
                {
                    _index
                });
            }
            if (_bGrow)
            {
                int num    = resDT_SkillFunc.astSkillFuncParam[_index].iParam;
                int iParam = resDT_SkillFunc.astSkillFuncGroup[_index].iParam;
                int num2   = iParam * (this.buffLevel - 1);
                num += num2;
                return(num * this.overlayCount);
            }
            return(resDT_SkillFunc.astSkillFuncParam[_index].iParam);
        }
        private int OnConditionExtraHurt(BuffSkill _buffSkill, PoolObjHandle <ActorRoot> _attack)
        {
            int             num          = 0;
            ResDT_SkillFunc outSkillFunc = null;

            if ((_buffSkill != null) && _buffSkill.FindSkillFunc(0x2c, out outSkillFunc))
            {
                int  num2 = _buffSkill.CustomParams[0];
                int  num3 = _buffSkill.CustomParams[1];
                int  num4 = _buffSkill.CustomParams[2];
                int  num5 = _buffSkill.CustomParams[3];
                bool flag = num2 == 1;
                int  num6 = !flag ? base.actor.ValueComponent.actorHp : _attack.handle.ValueComponent.actorHp;
                int  num7 = !flag ? base.actor.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue : _attack.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue;
                int  num8 = (num6 * 0x2710) / num7;
                if (num4 == 1)
                {
                    if (num8 <= num3)
                    {
                        num = num5;
                    }
                    return(num);
                }
                if ((num4 == 4) && (num8 >= num3))
                {
                    num = num5;
                }
            }
            return(num);
        }
        public int GetCoinAddRate(PoolObjHandle <ActorRoot> _target)
        {
            int             num       = 0;
            ResDT_SkillFunc skillFunc = null;

            if (!_target)
            {
                return(num);
            }
            for (int i = 0; i < this.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = this.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(71, out skillFunc))
                {
                    int skillFuncParam  = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                    int skillFuncParam3 = buffSkill.GetSkillFuncParam(skillFunc, 2, false);
                    int skillFuncParam4 = buffSkill.GetSkillFuncParam(skillFunc, 3, false);
                    if (this.CheckTargetSubType(skillFuncParam, skillFuncParam2, _target))
                    {
                        bool flag = true;
                        if (skillFuncParam4 > 0)
                        {
                            flag = this.CheckTargetFromEnemy(this.actorPtr, _target);
                        }
                        if (flag)
                        {
                            num += skillFuncParam3;
                        }
                    }
                }
            }
            return(num);
        }
        public void OnAssistEffect(ref PoolObjHandle <ActorRoot> deadActor)
        {
            ResDT_SkillFunc skillFunc = null;

            for (int i = 0; i < this.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = this.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(33, out skillFunc))
                {
                    int skillFuncParam  = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                    int skillFuncParam3 = buffSkill.GetSkillFuncParam(skillFunc, 2, false);
                    int skillFuncParam4 = buffSkill.GetSkillFuncParam(skillFunc, 3, false);
                    int skillFuncParam5 = buffSkill.GetSkillFuncParam(skillFunc, 4, false);
                    if (skillFuncParam3 == 2 && this.CheckTargetSubType(skillFuncParam4, skillFuncParam5, deadActor))
                    {
                        SkillUseParam skillUseParam = default(SkillUseParam);
                        skillUseParam.Init();
                        skillUseParam.SetOriginator(this.actorPtr);
                        skillUseParam.bExposing = buffSkill.skillContext.bExposing;
                        this.actor.SkillControl.SpawnBuff(this.actorPtr, ref skillUseParam, skillFuncParam, true);
                    }
                }
            }
        }
        private void OnDamageTriggerEffect(PoolObjHandle <ActorRoot> _selfActor, PoolObjHandle <ActorRoot> _attacker)
        {
            ResDT_SkillFunc skillFunc = null;

            if (!_selfActor || !_attacker || _attacker.get_handle().TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Organ)
            {
                return;
            }
            for (int i = 0; i < _selfActor.get_handle().BuffHolderComp.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = _selfActor.get_handle().BuffHolderComp.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(84, out skillFunc))
                {
                    int skillFuncParam = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    if (skillFuncParam > 0)
                    {
                        SkillUseParam skillUseParam = default(SkillUseParam);
                        skillUseParam.Init();
                        skillUseParam.SetOriginator(_selfActor);
                        skillUseParam.bExposing = buffSkill.skillContext.bExposing;
                        _selfActor.get_handle().SkillControl.SpawnBuff(_attacker, ref skillUseParam, skillFuncParam, true);
                        _selfActor.get_handle().BuffHolderComp.RemoveBuff(buffSkill);
                    }
                }
            }
        }
        private int OnConditionExtraHurt(BuffSkill _buffSkill, PoolObjHandle <ActorRoot> _attack)
        {
            int             result    = 0;
            ResDT_SkillFunc skillFunc = null;

            if (_buffSkill != null && _buffSkill.FindSkillFunc(44, out skillFunc))
            {
                int  skillFuncParam  = _buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                int  skillFuncParam2 = _buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                int  skillFuncParam3 = _buffSkill.GetSkillFuncParam(skillFunc, 2, false);
                int  skillFuncParam4 = _buffSkill.GetSkillFuncParam(skillFunc, 3, false);
                bool flag            = skillFuncParam == 1;
                int  num             = (!flag) ? this.actor.ValueComponent.actorHp : _attack.get_handle().ValueComponent.actorHp;
                int  num2            = (!flag) ? this.actor.ValueComponent.mActorValue[5].totalValue : _attack.get_handle().ValueComponent.mActorValue[5].totalValue;
                int  num3            = num * 10000 / num2;
                if (skillFuncParam3 == 1)
                {
                    if (num3 <= skillFuncParam2)
                    {
                        result = skillFuncParam4;
                    }
                }
                else if (skillFuncParam3 == 4 && num3 >= skillFuncParam2)
                {
                    result = skillFuncParam4;
                }
            }
            return(result);
        }
        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);
                        }
                    }
                }
            }
        }
        public int OnHurtBounceDamage(ref HurtDataInfo hurt, int hp)
        {
            if (hp <= 0)
            {
                return(hp);
            }
            if (!hurt.atker || hurt.bBounceHurt)
            {
                return(hp);
            }
            ResDT_SkillFunc skillFunc = null;
            int             num       = hp;

            for (int i = 0; i < this.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = this.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(83, out skillFunc))
                {
                    int skillFuncParam = buffSkill.GetSkillFuncParam(skillFunc, 2, false);
                    if ((skillFuncParam & 1 << (int)hurt.atker.get_handle().TheActorMeta.ActorType) <= 0)
                    {
                        int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                        int skillFuncParam3 = buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                        int num2            = num * skillFuncParam2 / 10000;
                        num -= num2;
                        HurtDataInfo     hurtDataInfo = default(HurtDataInfo);
                        HurtAttackerInfo attackInfo   = default(HurtAttackerInfo);
                        attackInfo.Init(hurt.target, hurt.atker);
                        hurtDataInfo.atker                       = hurt.target;
                        hurtDataInfo.target                      = hurt.atker;
                        hurtDataInfo.attackInfo                  = attackInfo;
                        hurtDataInfo.atkSlot                     = SkillSlotType.SLOT_SKILL_VALID;
                        hurtDataInfo.hurtType                    = (HurtTypeDef)skillFuncParam3;
                        hurtDataInfo.extraHurtType               = ExtraHurtTypeDef.ExtraHurt_Value;
                        hurtDataInfo.hurtValue                   = num2;
                        hurtDataInfo.adValue                     = 0;
                        hurtDataInfo.apValue                     = 0;
                        hurtDataInfo.hpValue                     = 0;
                        hurtDataInfo.loseHpValue                 = 0;
                        hurtDataInfo.iConditionType              = 0;
                        hurtDataInfo.iConditionParam             = 0;
                        hurtDataInfo.hurtCount                   = 0;
                        hurtDataInfo.firstHemoFadeRate           = 0;
                        hurtDataInfo.followUpHemoFadeRate        = 0;
                        hurtDataInfo.iEffectCountInSingleTrigger = 0;
                        hurtDataInfo.bExtraBuff                  = false;
                        hurtDataInfo.gatherTime                  = 0;
                        hurtDataInfo.bBounceHurt                 = true;
                        hurtDataInfo.bLastHurt                   = false;
                        hurtDataInfo.iAddTotalHurtValueRate      = 0;
                        hurtDataInfo.iAddTotalHurtValue          = 0;
                        hurtDataInfo.iEffectFadeRate             = 10000;
                        hurtDataInfo.iOverlayFadeRate            = 10000;
                        int num3 = hurt.atker.get_handle().HurtControl.TakeBouncesDamage(ref hurtDataInfo);
                    }
                }
            }
            return(num);
        }
 public void AddBuff(BuffSkill inBuff)
 {
     ResDT_SkillFunc outSkillFunc = null;
     if ((inBuff != null) && inBuff.FindSkillFunc(0x48, out outSkillFunc))
     {
         this.extraHurtList.Add(new PoolObjHandle<BuffSkill>(inBuff));
     }
 }
 public void RemoveBuff(ref PoolObjHandle<BuffSkill> inBuff)
 {
     ResDT_SkillFunc outSkillFunc = null;
     if ((inBuff != 0) && inBuff.handle.FindSkillFunc(0x48, out outSkillFunc))
     {
         this.extraHurtList.Remove(inBuff);
     }
 }
        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);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #18
0
        public void RemoveBuff(ref PoolObjHandle <BuffSkill> inBuff)
        {
            ResDT_SkillFunc resDT_SkillFunc = null;

            if (inBuff && inBuff.handle.FindSkillFunc(72, out resDT_SkillFunc))
            {
                this.extraHurtList.Remove(inBuff);
            }
        }
Exemple #19
0
        private int ResistDeadDamage(ref HurtDataInfo _hurt, int _hurtValue)
        {
            ResDT_SkillFunc skillFunc = null;

            if (this.buffHolder == null || this.buffHolder.actor == null)
            {
                return(_hurtValue);
            }
            ActorRoot actor = this.buffHolder.actor;

            for (int i = 0; i < actor.BuffHolderComp.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = actor.BuffHolderComp.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(54, out skillFunc))
                {
                    int skillFuncParam = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    if (buffSkill.GetSkillFuncParam(skillFunc, 1, false) == 0)
                    {
                        if (actor.ValueComponent.actorHp <= _hurtValue)
                        {
                            SkillUseParam skillUseParam = default(SkillUseParam);
                            skillUseParam.SetOriginator(_hurt.atker);
                            skillUseParam.bExposing = buffSkill.skillContext.bExposing;
                            actor.SkillControl.SpawnBuff(actor.SelfPtr, ref skillUseParam, skillFuncParam, true);
                            this.buffHolder.RemoveBuff(buffSkill);
                            DefaultGameEventParam defaultGameEventParam = new DefaultGameEventParam(this.buffHolder.actorPtr, _hurt.atker);
                            Singleton <GameEventSys> .get_instance().SendEvent <DefaultGameEventParam>(GameEventDef.Event_ActorImmuneDeadHurt, ref defaultGameEventParam);

                            _hurtValue = 0;
                        }
                    }
                    else
                    {
                        SkillUseParam skillUseParam2 = default(SkillUseParam);
                        skillUseParam2.SetOriginator(_hurt.atker);
                        skillUseParam2.bExposing = buffSkill.skillContext.bExposing;
                        actor.SkillControl.SpawnBuff(actor.SelfPtr, ref skillUseParam2, skillFuncParam, true);
                        this.buffHolder.RemoveBuff(buffSkill);
                        _hurtValue = 0;
                    }
                }
                if (_hurt.atkSlot == SkillSlotType.SLOT_SKILL_0 && buffSkill != null && buffSkill.FindSkillFunc(67, out skillFunc) && _hurt.atker && _hurt.atker.get_handle().TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero)
                {
                    int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    int skillFuncParam3 = buffSkill.GetSkillFuncParam(skillFunc, 4, false);
                    if (skillFuncParam2 == 1)
                    {
                        _hurtValue = _hurtValue * (10000 - skillFuncParam3) / 10000;
                    }
                    else if (skillFuncParam2 == 0)
                    {
                        _hurtValue -= skillFuncParam3;
                    }
                }
            }
            return(_hurtValue);
        }
Exemple #20
0
        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.GetSkillFuncParam(0x36, 0, false);
                        if (inBuff.GetSkillFuncParam(0x36, 1, false) == 0)
                        {
                            if (actor.ValueComponent.actorHp <= _hurtValue)
                            {
                                SkillUseParam inParam = new SkillUseParam();
                                inParam.SetOriginator(_hurt.atker);
                                actor.SkillControl.SpawnBuff(actor.SelfPtr, ref inParam, 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
                        {
                            SkillUseParam param3 = new SkillUseParam();
                            param3.SetOriginator(_hurt.atker);
                            actor.SkillControl.SpawnBuff(actor.SelfPtr, ref param3, inSkillCombineId, true);
                            this.buffHolder.RemoveBuff(inBuff);
                            _hurtValue = 0;
                        }
                    }
                    if ((((_hurt.atkSlot == SkillSlotType.SLOT_SKILL_0) && (inBuff != null)) && (inBuff.FindSkillFunc(0x43, out outSkillFunc) && (_hurt.atker != 0))) && (_hurt.atker.handle.TheActorMeta.ActorType == ActorTypeDef.Actor_Type_Hero))
                    {
                        int num4 = inBuff.GetSkillFuncParam(0x43, 0, false);
                        int num5 = inBuff.GetSkillFuncParam(0x43, 4, false);
                        switch (num4)
                        {
                        case 1:
                            _hurtValue = (_hurtValue * (0x2710 - num5)) / 0x2710;
                            break;

                        case 0:
                            _hurtValue -= num5;
                            break;
                        }
                    }
                }
            }
            return(_hurtValue);
        }
        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);
        }
        public bool IsExistSkillFuncType(int inSkillFuncType)
        {
            ResDT_SkillFunc resDT_SkillFunc = null;

            for (int i = 0; i < this.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = this.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(inSkillFuncType, out resDT_SkillFunc))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #23
0
 public void AnalyseSkillCombine(ref ActorPreloadTab loadInfo, int combineId)
 {
     if (combineId > 0)
     {
         ResSkillCombineCfgInfo dataByKey = GameDataMgr.skillCombineDatabin.GetDataByKey(combineId);
         if (dataByKey != null)
         {
             AssetLoadBase item = new AssetLoadBase {
                 assetPath = StringHelper.UTF8BytesToString(ref dataByKey.szPrefab)
             };
             string checkerKey = this.GetCheckerKey(item.assetPath, loadInfo.MarkID);
             if (!this.ageCheckerSet.ContainsKey(checkerKey))
             {
                 loadInfo.ageActions.Add(item);
                 this.ageCheckerSet.Add(checkerKey, true);
             }
             if ((dataByKey.astSkillFuncInfo != null) && (dataByKey.astSkillFuncInfo.Length > 0))
             {
                 for (int i = 0; i < dataByKey.astSkillFuncInfo.Length; i++)
                 {
                     ResDT_SkillFunc func = dataByKey.astSkillFuncInfo[i];
                     if (((((func.dwSkillFuncType == 0x1c) || (func.dwSkillFuncType == 0x21)) || ((func.dwSkillFuncType == 0x36) || (func.dwSkillFuncType == 0x37))) && (((func.astSkillFuncParam != null) && (func.astSkillFuncParam.Length != 0)) && (func.astSkillFuncParam[0] != null))) && (func.astSkillFuncParam[0].iParam > 0))
                     {
                         int iParam = func.astSkillFuncParam[0].iParam;
                         if (func.dwSkillFuncType == 0x1c)
                         {
                             this.AnalyseSkillMark(ref loadInfo, iParam);
                         }
                         else if (func.dwSkillFuncType == 0x21)
                         {
                             if (combineId != iParam)
                             {
                                 this.AnalyseSkillCombine(ref loadInfo, iParam);
                             }
                         }
                         else if (func.dwSkillFuncType == 0x36)
                         {
                             this.AnalyseSkillCombine(ref loadInfo, iParam);
                         }
                         else if (func.dwSkillFuncType == 0x37)
                         {
                             this.AnalyseSkill(ref loadInfo, iParam);
                         }
                     }
                 }
             }
         }
     }
 }
        public bool IsExistSkillFuncType(int inSkillFuncType)
        {
            BuffSkill       skill        = null;
            ResDT_SkillFunc outSkillFunc = null;

            for (int i = 0; i < this.SpawnedBuffList.Count; i++)
            {
                skill = this.SpawnedBuffList[i];
                if ((skill != null) && skill.FindSkillFunc(inSkillFuncType, out outSkillFunc))
                {
                    return(true);
                }
            }
            return(false);
        }
Exemple #25
0
 public bool FindSkillFunc(int inSkillFuncType, out ResDT_SkillFunc outSkillFunc)
 {
     outSkillFunc = null;
     if (this.cfgData != null)
     {
         for (int i = 0; i < 4; i++)
         {
             if (this.cfgData.astSkillFuncInfo[i].dwSkillFuncType == inSkillFuncType)
             {
                 outSkillFunc = this.cfgData.astSkillFuncInfo[i];
                 return(true);
             }
         }
     }
     return(false);
 }
        private int OnTargetExtraHurt(BuffSkill _buffSkill, PoolObjHandle <ActorRoot> _attack)
        {
            int             num          = 0;
            ResDT_SkillFunc outSkillFunc = null;

            if ((_buffSkill != null) && _buffSkill.FindSkillFunc(0x30, out outSkillFunc))
            {
                int typeMask    = _buffSkill.GetSkillFuncParam(0x30, 0, false);
                int typeSubMask = _buffSkill.GetSkillFuncParam(0x30, 1, false);
                int num4        = _buffSkill.GetSkillFuncParam(0x30, 2, false);
                if (this.CheckTargetSubType(typeMask, typeSubMask, base.actorPtr))
                {
                    num = num4;
                }
            }
            return(num);
        }
        private int OnTargetExtraHurt(BuffSkill _buffSkill, PoolObjHandle <ActorRoot> _attack)
        {
            int             result    = 0;
            ResDT_SkillFunc skillFunc = null;

            if (_buffSkill != null && _buffSkill.FindSkillFunc(48, out skillFunc))
            {
                int skillFuncParam  = _buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                int skillFuncParam2 = _buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                int skillFuncParam3 = _buffSkill.GetSkillFuncParam(skillFunc, 2, false);
                if (this.CheckTargetSubType(skillFuncParam, skillFuncParam2, this.actorPtr))
                {
                    result = skillFuncParam3;
                }
            }
            return(result);
        }
        private int OnTargetExtraHurt(BuffSkill _buffSkill, PoolObjHandle <ActorRoot> _attack)
        {
            int             num          = 0;
            ResDT_SkillFunc outSkillFunc = null;

            if ((_buffSkill != null) && _buffSkill.FindSkillFunc(0x30, out outSkillFunc))
            {
                int typeMask    = _buffSkill.CustomParams[0];
                int typeSubMask = _buffSkill.CustomParams[1];
                int num4        = _buffSkill.CustomParams[2];
                if (this.CheckTargetSubType(typeMask, typeSubMask))
                {
                    num = num4;
                }
            }
            return(num);
        }
        public void OnDamageExtraHurtFunc(ref HurtDataInfo _hurt, SkillSlotType _slotType)
        {
            ResDT_SkillFunc skillFunc = null;

            for (int i = 0; i < this.SpawnedBuffList.get_Count(); i++)
            {
                BuffSkill buffSkill = this.SpawnedBuffList.get_Item(i);
                if (buffSkill != null && buffSkill.FindSkillFunc(80, out skillFunc))
                {
                    SkillSlotType skillFuncParam = (SkillSlotType)buffSkill.GetSkillFuncParam(skillFunc, 0, false);
                    if (_slotType == skillFuncParam)
                    {
                        int skillFuncParam2 = buffSkill.GetSkillFuncParam(skillFunc, 1, false);
                        _hurt.iReduceDamage += skillFuncParam2;
                    }
                }
            }
        }
        private int OnControlExtraHurt(BuffSkill _buffSkill, PoolObjHandle <ActorRoot> _attack)
        {
            ResDT_SkillFunc outSkillFunc = null;

            if (((_buffSkill != null) && _buffSkill.FindSkillFunc(0x33, out outSkillFunc)) && (base.actor != null))
            {
                BuffSkill skill = null;
                for (int i = 0; i < base.actor.BuffHolderComp.SpawnedBuffList.Count; i++)
                {
                    skill = base.actor.BuffHolderComp.SpawnedBuffList[i];
                    if ((skill != null) && (skill.cfgData.dwEffectType == 2))
                    {
                        return(_buffSkill.CustomParams[0]);
                    }
                }
            }
            return(0);
        }