public static bool OnSkillFuncProtect(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncProtectValue = SkillFuncHurtDelegator.GetSkillFuncProtectValue(ref inContext);
         int skillFuncParam        = inContext.GetSkillFuncParam(0, false);
         int skillFuncParam2       = inContext.GetSkillFuncParam(5, false);
         int skillFuncParam3       = inContext.GetSkillFuncParam(6, false);
         if (skillFuncParam == 1)
         {
             inContext.inBuffSkill.get_handle().CustomParams[0] += skillFuncProtectValue;
             SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 0, skillFuncProtectValue);
         }
         else if (skillFuncParam == 2)
         {
             inContext.inBuffSkill.get_handle().CustomParams[1] += skillFuncProtectValue;
             SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 1, skillFuncProtectValue);
         }
         else if (skillFuncParam == 3)
         {
             inContext.inBuffSkill.get_handle().CustomParams[2] += skillFuncProtectValue;
             SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 2, skillFuncProtectValue);
         }
         else if (skillFuncParam == 4)
         {
             inContext.inBuffSkill.get_handle().CustomParams[3] += skillFuncProtectValue;
             SkillFuncHurtDelegator.SendProtectEvent(ref inContext, 3, skillFuncProtectValue);
         }
         inContext.inBuffSkill.get_handle().CustomParams[4] = skillFuncParam2;
         inContext.inBuffSkill.get_handle().CustomParams[5] = skillFuncParam3;
         inContext.inBuffSkill.get_handle().SlotType        = inContext.inUseContext.SlotType;
         return(true);
     }
     return(false);
 }
        public static bool OnSkillFuncDisableSkill(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                if (inContext.inStage == ESkillFuncStage.Enter)
                {
                    for (int i = 0; i < 7; i++)
                    {
                        if (inContext.GetSkillFuncParam(i, false) == 1)
                        {
                            inTargetObj.handle.ActorControl.AddDisableSkillFlag((SkillSlotType)i);
                        }
                    }
                }
                else if (inContext.inStage == ESkillFuncStage.Leave)
                {
                    for (int j = 0; j < 7; j++)
                    {
                        if (inContext.GetSkillFuncParam(j, false) == 1)
                        {
                            inTargetObj.handle.ActorControl.RmvDisableSkillFlag((SkillSlotType)j);
                        }
                    }
                }
            }
            return(true);
        }
Пример #3
0
        public static bool OnSkillFuncProtect(ref SSkillFuncContext inContext)
        {
            if (inContext.inStage != ESkillFuncStage.Enter)
            {
                return(false);
            }
            int skillFuncProtectValue = GetSkillFuncProtectValue(ref inContext);
            int skillFuncParam        = inContext.GetSkillFuncParam(0, false);
            int num3 = inContext.GetSkillFuncParam(5, false);

            switch (skillFuncParam)
            {
            case 1:
                inContext.inBuffSkill.handle.CustomParams[0] += skillFuncProtectValue;
                SendProtectEvent(ref inContext, 0, skillFuncProtectValue);
                break;

            case 2:
                inContext.inBuffSkill.handle.CustomParams[1] += skillFuncProtectValue;
                SendProtectEvent(ref inContext, 1, skillFuncProtectValue);
                break;

            case 3:
                inContext.inBuffSkill.handle.CustomParams[2] += skillFuncProtectValue;
                SendProtectEvent(ref inContext, 2, skillFuncProtectValue);
                break;
            }
            inContext.inBuffSkill.handle.CustomParams[3] = num3;
            return(true);
        }
 public static bool OnSkillFuncChangeMgcEffect(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int           skillFuncParam = inContext.GetSkillFuncParam(0, false);
         int           num2           = inContext.GetSkillFuncParam(2, false);
         int           num3           = inContext.GetSkillFuncParam(4, false);
         ValueDataInfo info1          = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYATKPT];
         info1.totalEftRatioByMgc += num2;
         ValueDataInfo info2 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP];
         info2.totalEftRatioByMgc += num3;
         HeroWrapper actorControl = inContext.inTargetObj.handle.ActorControl as HeroWrapper;
         if (actorControl != null)
         {
             actorControl.OnApChangeByMgcEffect();
             inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].ChangeEvent -= new ValueChangeDelegate(actorControl.OnApChangeByMgcEffect);
             inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].ChangeEvent += new ValueChangeDelegate(actorControl.OnApChangeByMgcEffect);
         }
     }
     else if (inContext.inStage == ESkillFuncStage.Leave)
     {
         int           num4  = inContext.GetSkillFuncParam(2, false);
         int           num5  = inContext.GetSkillFuncParam(4, false);
         ValueDataInfo info3 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYATKPT];
         info3.totalEftRatioByMgc -= num4;
         ValueDataInfo info4 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP];
         info4.totalEftRatioByMgc -= num5;
         HeroWrapper wrapper2 = inContext.inTargetObj.handle.ActorControl as HeroWrapper;
         if (wrapper2 != null)
         {
             inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].ChangeEvent -= new ValueChangeDelegate(wrapper2.OnApChangeByMgcEffect);
         }
     }
     return(true);
 }
 public static bool OnSkillFuncChangeMgcEffect(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(0, false);
         int skillFuncParam2 = inContext.GetSkillFuncParam(2, false);
         int skillFuncParam3 = inContext.GetSkillFuncParam(4, false);
         inContext.inTargetObj.get_handle().ValueComponent.mActorValue[1].totalEftRatioByMgc += skillFuncParam2;
         inContext.inTargetObj.get_handle().ValueComponent.mActorValue[5].totalEftRatioByMgc += skillFuncParam3;
         if (inContext.inTargetObj && inContext.inTargetObj.get_handle().ValueComponent != null)
         {
             ValueProperty valueComponent = inContext.inTargetObj.get_handle().ValueComponent;
             valueComponent.OnValuePropertyChangeByMgcEffect();
             inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].ChangeEvent -= new ValueChangeDelegate(valueComponent.OnValuePropertyChangeByMgcEffect);
             inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].ChangeEvent += new ValueChangeDelegate(valueComponent.OnValuePropertyChangeByMgcEffect);
         }
     }
     else if (inContext.inStage == ESkillFuncStage.Leave)
     {
         int skillFuncParam4 = inContext.GetSkillFuncParam(2, false);
         int skillFuncParam5 = inContext.GetSkillFuncParam(4, false);
         inContext.inTargetObj.get_handle().ValueComponent.mActorValue[1].totalEftRatioByMgc -= skillFuncParam4;
         inContext.inTargetObj.get_handle().ValueComponent.mActorValue[5].totalEftRatioByMgc -= skillFuncParam5;
         if (inContext.inTargetObj && inContext.inTargetObj.get_handle().ValueComponent != null)
         {
             ValueProperty valueComponent2 = inContext.inTargetObj.get_handle().ValueComponent;
             inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].ChangeEvent -= new ValueChangeDelegate(valueComponent2.OnValuePropertyChangeByMgcEffect);
         }
     }
     return(true);
 }
 public static bool OnSkillFuncAddMark(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;
         if (inTargetObj)
         {
             uint markType = 1u;
             if (inContext.inBuffSkill && inContext.inBuffSkill.get_handle().cfgData != null)
             {
                 markType = (uint)inContext.inBuffSkill.get_handle().cfgData.bEffectType;
             }
             int skillFuncParam = inContext.GetSkillFuncParam(0, false);
             if (inContext.GetSkillFuncParam(1, false) == 0)
             {
                 inTargetObj.get_handle().BuffHolderComp.markRule.AddBufferMark(inContext.inOriginator, skillFuncParam, markType, inContext.inUseContext);
             }
             else
             {
                 inTargetObj.get_handle().BuffHolderComp.markRule.ClearBufferMark(inContext.inOriginator, skillFuncParam);
             }
         }
         return(true);
     }
     return(false);
 }
        public static bool OnSkillFuncHpCondition(ref SSkillFuncContext inContext)
        {
            int num            = 0;
            int skillFuncParam = inContext.GetSkillFuncParam(1, false);

            if ((skillFuncParam < 0) || (skillFuncParam >= 0x24))
            {
                return(false);
            }
            RES_FUNCEFT_TYPE          res_funceft_type = (RES_FUNCEFT_TYPE)skillFuncParam;
            PoolObjHandle <ActorRoot> inTargetObj      = inContext.inTargetObj;

            if (inTargetObj == 0)
            {
                return(false);
            }
            int num3 = inContext.GetSkillFuncParam(2, false);

            if (inContext.inStage != ESkillFuncStage.Leave)
            {
                int actorHp    = inTargetObj.handle.ValueComponent.actorHp;
                int totalValue = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue;
                int num6       = 0x2710 - ((actorHp * 0x2710) / totalValue);
                int num7       = inContext.GetSkillFuncParam(3, false);
                int num8       = inContext.GetSkillFuncParam(0, false);
                if (num8 == 0)
                {
                    return(false);
                }
                int num9   = (num6 * num7) / num8;
                int iParam = inContext.LocalParams[0].iParam;
                if (num3 == 1)
                {
                    num = (int)(inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> iParam);
                    num = (int)(inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] << num9);
                }
                else
                {
                    num = ((int)inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type]) - iParam;
                    num = ((int)inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type]) + num9;
                }
                inContext.LocalParams[0].iParam = num9;
            }
            else if (inContext.inStage == ESkillFuncStage.Leave)
            {
                int num11 = inContext.LocalParams[0].iParam;
                if (num3 == 1)
                {
                    num = (int)(inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> num11);
                }
                else
                {
                    num = ((int)inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type]) - num11;
                }
            }
            return(true);
        }
        public static bool OnSkillFuncHpCondition(ref SSkillFuncContext inContext)
        {
            ValueDataInfo info;
            int           skillFuncParam = inContext.GetSkillFuncParam(1, false);

            if ((skillFuncParam < 0) || (skillFuncParam >= 0x24))
            {
                return(false);
            }
            RES_FUNCEFT_TYPE          res_funceft_type = (RES_FUNCEFT_TYPE)skillFuncParam;
            PoolObjHandle <ActorRoot> inTargetObj      = inContext.inTargetObj;

            if (inTargetObj == 0)
            {
                return(false);
            }
            int num2 = inContext.GetSkillFuncParam(2, false);

            if (inContext.inStage != ESkillFuncStage.Leave)
            {
                int actorHp    = inTargetObj.handle.ValueComponent.actorHp;
                int totalValue = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue;
                int num5       = 0x2710 - ((actorHp * 0x2710) / totalValue);
                int num6       = inContext.GetSkillFuncParam(3, true);
                int num7       = inContext.GetSkillFuncParam(0, false);
                if (num7 == 0)
                {
                    return(false);
                }
                int num8   = (num5 * num6) / num7;
                int iParam = inContext.LocalParams[0].iParam;
                if (num2 == 1)
                {
                    info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> iParam;
                    info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] << num8;
                }
                else
                {
                    info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] - iParam;
                    info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] + num8;
                }
                inContext.LocalParams[0].iParam = num8;
            }
            else if (inContext.inStage == ESkillFuncStage.Leave)
            {
                int num10 = inContext.LocalParams[0].iParam;
                if (num2 == 1)
                {
                    info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] >> num10;
                }
                else
                {
                    info = inTargetObj.handle.ValueComponent.mActorValue[res_funceft_type] - num10;
                }
            }
            return(true);
        }
Пример #9
0
        public static bool OnSkillFuncHpCondition(ref SSkillFuncContext inContext)
        {
            int skillFuncParam = inContext.GetSkillFuncParam(1, false);

            if (skillFuncParam < 0 || skillFuncParam >= 37)
            {
                return(false);
            }
            RES_FUNCEFT_TYPE          key         = (RES_FUNCEFT_TYPE)skillFuncParam;
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (!inTargetObj)
            {
                return(false);
            }
            int skillFuncParam2 = inContext.GetSkillFuncParam(2, false);

            if (inContext.inStage != ESkillFuncStage.Leave)
            {
                int actorHp         = inTargetObj.handle.ValueComponent.actorHp;
                int totalValue      = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MAXHP].totalValue;
                int num             = 10000 - actorHp * 10000 / totalValue;
                int skillFuncParam3 = inContext.GetSkillFuncParam(3, true);
                int skillFuncParam4 = inContext.GetSkillFuncParam(0, false);
                if (skillFuncParam4 == 0)
                {
                    return(false);
                }
                int num2   = num * skillFuncParam3 / skillFuncParam4;
                int iParam = inContext.LocalParams[0].iParam;
                if (skillFuncParam2 == 1)
                {
                    ValueDataInfo valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[key] >> iParam;
                    valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[key] << num2;
                }
                else
                {
                    ValueDataInfo valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[key] - iParam;
                    valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[key] + num2;
                }
                inContext.LocalParams[0].iParam = num2;
            }
            else if (inContext.inStage == ESkillFuncStage.Leave)
            {
                int iParam2 = inContext.LocalParams[0].iParam;
                if (skillFuncParam2 == 1)
                {
                    ValueDataInfo valueDataInfo3 = inTargetObj.handle.ValueComponent.mActorValue[key] >> iParam2;
                }
                else
                {
                    ValueDataInfo valueDataInfo4 = inTargetObj.handle.ValueComponent.mActorValue[key] - iParam2;
                }
            }
            return(true);
        }
        private static int GetChangeValueProperty(ActorRoot targetActor, ref SSkillFuncContext inContext)
        {
            int            num             = inContext.GetSkillFuncParam(1, true);
            int            skillFuncParam  = inContext.GetSkillFuncParam(2, true);
            int            skillFuncParam2 = inContext.GetSkillFuncParam(3, true);
            ESkillFuncMode skillFuncParam3 = (ESkillFuncMode)inContext.GetSkillFuncParam(4, false);
            int            skillFuncParam4 = inContext.GetSkillFuncParam(5, true);

            num += skillFuncParam * targetActor.ValueComponent.mActorValue[1].totalValue / 10000 + skillFuncParam2 * targetActor.ValueComponent.mActorValue[2].totalValue / 10000;
            if (skillFuncParam3 == ESkillFuncMode.SkillFuncMode_Constant)
            {
                return(num);
            }
            int num2 = (int)inContext.inSkillFunc.dwSkillFuncFreq;

            if (skillFuncParam4 <= 0)
            {
                DebugHelper.Assert(false, "ESkillFuncMode LastTime error!");
                return(num);
            }
            if (num2 <= 0)
            {
                num2 = 30;
            }
            int num3 = skillFuncParam4 / num2;

            if (num3 <= 0)
            {
                return(num);
            }
            if (skillFuncParam3 == ESkillFuncMode.SkillFuncMode_Fade)
            {
                if (inContext.inDoCount == 1)
                {
                    return(num);
                }
                if (inContext.inDoCount - 1 <= num3)
                {
                    return(-num / num3);
                }
                return(0);
            }
            else
            {
                if (inContext.inDoCount == 1)
                {
                    return(0);
                }
                if (inContext.inDoCount - 1 <= num3)
                {
                    return(num / num3);
                }
                return(0);
            }
        }
Пример #11
0
 public static bool OnSkillFuncDecHurtRate(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(0, false);
         int num2           = inContext.GetSkillFuncParam(4, false);
         inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam;
         inContext.inBuffSkill.handle.CustomParams[4] = num2;
     }
     return(true);
 }
Пример #12
0
 public static bool OnSkillFuncImmuneHurt(ref SSkillFuncContext inContext)
 {
     if ((inContext.inStage == ESkillFuncStage.Enter) && (inContext.inTargetObj != 0))
     {
         int skillFuncParam = inContext.GetSkillFuncParam(1, false);
         int num2           = inContext.GetSkillFuncParam(2, false);
         inContext.inBuffSkill.handle.CustomParams[3] = skillFuncParam;
         inContext.inBuffSkill.handle.CustomParams[4] = num2;
     }
     return(true);
 }
Пример #13
0
        public static bool OnSkillFuncChangeSkill(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                int  num            = 0;
                int  skillFuncParam = 0;
                int  num3           = 0;
                bool flag           = false;
                BuffChangeSkillRule changeSkillRule = null;
                if (inContext.inStage == ESkillFuncStage.Enter)
                {
                    skillFuncParam = inContext.GetSkillFuncParam(0, false);
                    num            = inContext.GetSkillFuncParam(1, false);
                    num3           = inContext.GetSkillFuncParam(2, false);
                    flag           = inContext.GetSkillFuncParam(3, false) == 1;
                    inContext.LocalParams[0].iParam = skillFuncParam;
                    if (inTargetObj.handle.BuffHolderComp != null)
                    {
                        changeSkillRule = inTargetObj.handle.BuffHolderComp.changeSkillRule;
                        if (changeSkillRule != null)
                        {
                            changeSkillRule.ChangeSkillSlot((SkillSlotType)skillFuncParam, num, num3);
                        }
                    }
                    if (flag && (skillFuncParam == 0))
                    {
                        inTargetObj.handle.SkillControl.bImmediateAttack = flag;
                    }
                }
                else if (inContext.inStage == ESkillFuncStage.Leave)
                {
                    skillFuncParam = inContext.LocalParams[0].iParam;
                    flag           = inContext.GetSkillFuncParam(3, false) == 1;
                    if (inTargetObj.handle.BuffHolderComp != null)
                    {
                        changeSkillRule = inTargetObj.handle.BuffHolderComp.changeSkillRule;
                        if (changeSkillRule != null)
                        {
                            changeSkillRule.RecoverSkillSlot((SkillSlotType)skillFuncParam);
                        }
                        if (flag && (skillFuncParam == 0))
                        {
                            inTargetObj.handle.SkillControl.bImmediateAttack = false;
                            inTargetObj.handle.ActorControl.CancelCommonAttackMode();
                        }
                    }
                }
            }
            return(true);
        }
Пример #14
0
 public static bool OnSkillFuncTargetExtraHurt(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(0, false);
         int num2           = inContext.GetSkillFuncParam(1, false);
         int num3           = inContext.GetSkillFuncParam(2, false);
         inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam;
         inContext.inBuffSkill.handle.CustomParams[1] = num2;
         inContext.inBuffSkill.handle.CustomParams[2] = num3;
         return(true);
     }
     return(true);
 }
 public static bool OnSkillFuncChangeMgcRate(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(3, false);
         int num            = inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].totalEftRatio += skillFuncParam;
     }
     else if (inContext.inStage == ESkillFuncStage.Leave)
     {
         int skillFuncParam2 = inContext.GetSkillFuncParam(3, false);
         int num             = inContext.inTargetObj.get_handle().ValueComponent.mActorValue[2].totalEftRatio -= skillFuncParam2;
     }
     return(true);
 }
        public static bool OnSkillFuncChangeVision(ref SSkillFuncContext inContext)
        {
            int skillFuncParam  = inContext.GetSkillFuncParam(1, false);
            int skillFuncParam2 = inContext.GetSkillFuncParam(2, false);

            if (inContext.inStage == ESkillFuncStage.Enter)
            {
                inContext.inTargetObj.get_handle().HorizonMarker.SightRadius += skillFuncParam;
            }
            else if (inContext.inStage == ESkillFuncStage.Leave)
            {
                inContext.inTargetObj.get_handle().HorizonMarker.SightRadius -= skillFuncParam;
            }
            return(true);
        }
        private static int GetChangeValueProperty(ActorRoot targetActor, ref SSkillFuncContext inContext)
        {
            int            skillFuncParam = inContext.GetSkillFuncParam(1, true);
            int            num2           = inContext.GetSkillFuncParam(2, true);
            int            num3           = inContext.GetSkillFuncParam(3, true);
            ESkillFuncMode mode           = (ESkillFuncMode)inContext.GetSkillFuncParam(4, false);
            int            num4           = inContext.GetSkillFuncParam(5, true);

            skillFuncParam += ((num2 * targetActor.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYATKPT].totalValue) / 0x2710) + ((num3 * targetActor.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].totalValue) / 0x2710);
            if (mode == ESkillFuncMode.SkillFuncMode_Constant)
            {
                return(skillFuncParam);
            }
            int num5            = 0;
            int dwSkillFuncFreq = (int)inContext.inSkillFunc.dwSkillFuncFreq;

            if (num4 <= 0)
            {
                DebugHelper.Assert(false, "ESkillFuncMode LastTime error!");
                return(skillFuncParam);
            }
            if (dwSkillFuncFreq <= 0)
            {
                dwSkillFuncFreq = 30;
            }
            num5 = num4 / dwSkillFuncFreq;
            if (num5 <= 0)
            {
                return(skillFuncParam);
            }
            if (mode == ESkillFuncMode.SkillFuncMode_Fade)
            {
                if (inContext.inDoCount == 1)
                {
                    return(skillFuncParam);
                }
                if ((inContext.inDoCount - 1) <= num5)
                {
                    return(-skillFuncParam / num5);
                }
                return(0);
            }
            if ((inContext.inDoCount != 1) && ((inContext.inDoCount - 1) <= num5))
            {
                return(skillFuncParam / num5);
            }
            return(0);
        }
 public static bool OnSkillFuncChangeMgcRate(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int           skillFuncParam = inContext.GetSkillFuncParam(3, false);
         ValueDataInfo info1          = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT];
         int           num2           = info1.totalEftRatio += skillFuncParam;
     }
     else if (inContext.inStage == ESkillFuncStage.Leave)
     {
         int           num3  = inContext.GetSkillFuncParam(3, false);
         ValueDataInfo info2 = inContext.inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT];
         int           num4  = info2.totalEftRatio -= num3;
     }
     return(true);
 }
 public static bool OnSkillFuncImmuneNegativeSkillEffect(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;
         if (inTargetObj)
         {
             inTargetObj.get_handle().ActorControl.AddNoAbilityFlag(ObjAbilityType.ObjAbility_ImmuneNegative);
             if (inContext.GetSkillFuncParam(0, false) == 1)
             {
                 int num = 2;
                 num += 4;
                 inTargetObj.get_handle().BuffHolderComp.ClearEffectTypeBuff(num);
             }
         }
     }
     else if (inContext.inStage == ESkillFuncStage.Leave)
     {
         PoolObjHandle <ActorRoot> inTargetObj2 = inContext.inTargetObj;
         if (inTargetObj2)
         {
             inTargetObj2.get_handle().ActorControl.RmvNoAbilityFlag(ObjAbilityType.ObjAbility_ImmuneNegative);
         }
     }
     return(true);
 }
        private static void OnSkillFuncChangeValueProperty(ref SSkillFuncContext inContext, RES_FUNCEFT_TYPE _defType, bool _bAddValue)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                int num = 0;
                int changeValueProperty = GetChangeValueProperty((ActorRoot)inTargetObj, ref inContext);
                int skillFuncParam      = inContext.GetSkillFuncParam(0, false);
                if (inContext.inStage != ESkillFuncStage.Leave)
                {
                    if (_bAddValue)
                    {
                        if (skillFuncParam == 0)
                        {
                            num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) + changeValueProperty;
                        }
                        else
                        {
                            num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] << changeValueProperty);
                        }
                        ResDT_IntParamArrayNode node1 = inContext.LocalParams[0];
                        node1.iParam += changeValueProperty;
                    }
                    else
                    {
                        if (skillFuncParam == 0)
                        {
                            num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) - changeValueProperty;
                        }
                        else
                        {
                            num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] >> changeValueProperty);
                        }
                        ResDT_IntParamArrayNode node2 = inContext.LocalParams[0];
                        node2.iParam += changeValueProperty;
                    }
                }
                else if (_bAddValue)
                {
                    if (skillFuncParam == 0)
                    {
                        num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) - inContext.LocalParams[0].iParam;
                    }
                    else
                    {
                        num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] >> inContext.LocalParams[0].iParam);
                    }
                }
                else if (skillFuncParam == 0)
                {
                    num = ((int)inTargetObj.handle.ValueComponent.mActorValue[_defType]) + inContext.LocalParams[0].iParam;
                }
                else
                {
                    num = (int)(inTargetObj.handle.ValueComponent.mActorValue[_defType] << inContext.LocalParams[0].iParam);
                }
            }
        }
 public static bool OnSkillFuncRecoveryEffect(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(0, false);
         int num2           = inContext.GetSkillFuncParam(1, false);
         int num3           = inContext.GetSkillFuncParam(2, false);
         int num4           = inContext.GetSkillFuncParam(3, false);
         int num5           = inContext.GetSkillFuncParam(4, false);
         inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam;
         inContext.inBuffSkill.handle.CustomParams[1] = num2;
         inContext.inBuffSkill.handle.CustomParams[2] = num3;
         inContext.inBuffSkill.handle.CustomParams[3] = num4;
         inContext.inBuffSkill.handle.CustomParams[4] = num5;
     }
     return(true);
 }
Пример #22
0
        private static int GetSkillFuncProtectValue(ref SSkillFuncContext inContext)
        {
            int num = 0;

            if (inContext.inStage == ESkillFuncStage.Enter)
            {
                PoolObjHandle <ActorRoot> inTargetObj  = inContext.inTargetObj;
                PoolObjHandle <ActorRoot> inOriginator = inContext.inOriginator;
                if ((inTargetObj != 0) && (inOriginator != 0))
                {
                    HurtDataInfo info;
                    inContext.inCustomData = new HurtAttackerInfo();
                    inContext.inCustomData.Init(inOriginator, inTargetObj);
                    info.atker                = inOriginator;
                    info.atkerName            = inOriginator.handle.name;
                    info.target               = inTargetObj;
                    info.attackInfo           = inContext.inCustomData;
                    info.atkSlot              = inContext.inUseContext.SlotType;
                    info.hurtType             = HurtTypeDef.PhysHurt;
                    info.extraHurtType        = ExtraHurtTypeDef.ExtraHurt_Value;
                    info.hurtValue            = inContext.GetSkillFuncParam(1, true);
                    info.adValue              = inContext.GetSkillFuncParam(2, true);
                    info.apValue              = inContext.GetSkillFuncParam(3, true);
                    info.hpValue              = inContext.GetSkillFuncParam(4, true);
                    info.loseHpValue          = 0;
                    info.hurtCount            = inContext.inDoCount;
                    info.hemoFadeRate         = 0x2710;
                    info.bExtraBuff           = false;
                    info.gatherTime           = inContext.inUseContext.GatherTime;
                    info.bBounceHurt          = false;
                    info.bLastHurt            = inContext.inLastEffect;
                    info.iAddTotalHurtType    = 0;
                    info.iAddTotalHurtValue   = 0;
                    info.iCanSkillCrit        = inContext.inBuffSkill.handle.cfgData.iCanSkillCrit;
                    info.iDamageLimit         = inContext.inBuffSkill.handle.cfgData.iDamageLimit;
                    info.iMonsterDamageLimit  = inContext.inBuffSkill.handle.cfgData.iMonsterDamageLimit;
                    info.iLongRangeReduction  = inContext.inBuffSkill.handle.cfgData.iLongRangeReduction;
                    info.iEffectiveTargetType = inContext.inBuffSkill.handle.cfgData.iEffectiveTargetType;
                    info.iOverlayFadeRate     = 0x2710;
                    info.iEffectFadeRate      = 0x2710;
                    info.iReduceDamage        = 0;
                    num = inTargetObj.handle.ActorControl.actor.HurtControl.CommonDamagePart(ref info);
                }
            }
            return(num);
        }
Пример #23
0
 public static bool OnSkillFuncCommonAtkWithMagicHurt(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(0, false);
         int num2           = inContext.GetSkillFuncParam(1, false);
         int num3           = inContext.GetSkillFuncParam(2, false);
         int num4           = inContext.GetSkillFuncParam(3, false);
         inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam;
         inContext.inBuffSkill.handle.CustomParams[1] = num2;
         inContext.inBuffSkill.handle.CustomParams[2] = num3;
         inContext.inBuffSkill.handle.CustomParams[3] = num4;
     }
     else if (inContext.inStage == ESkillFuncStage.Leave)
     {
     }
     return(false);
 }
        private static void OnSkillFuncChangeValueProperty(ref SSkillFuncContext inContext, RES_FUNCEFT_TYPE _defType, bool _bAddValue)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                ValueDataInfo info;
                int           changeValueProperty = GetChangeValueProperty((ActorRoot)inTargetObj, ref inContext);
                int           skillFuncParam      = inContext.GetSkillFuncParam(0, false);
                if (inContext.inStage != ESkillFuncStage.Leave)
                {
                    if (_bAddValue)
                    {
                        if (skillFuncParam == 0)
                        {
                            info = inTargetObj.handle.ValueComponent.mActorValue[_defType] + changeValueProperty;
                        }
                        else
                        {
                            info = inTargetObj.handle.ValueComponent.mActorValue[_defType] << changeValueProperty;
                        }
                        inContext.LocalParams[0].iParam += changeValueProperty;
                    }
                    else
                    {
                        if (skillFuncParam == 0)
                        {
                            info = inTargetObj.handle.ValueComponent.mActorValue[_defType] - changeValueProperty;
                        }
                        else
                        {
                            info = inTargetObj.handle.ValueComponent.mActorValue[_defType] >> changeValueProperty;
                        }
                        inContext.LocalParams[0].iParam += changeValueProperty;
                    }
                }
                else if (_bAddValue)
                {
                    if (skillFuncParam == 0)
                    {
                        info = inTargetObj.handle.ValueComponent.mActorValue[_defType] - inContext.LocalParams[0].iParam;
                    }
                    else
                    {
                        info = inTargetObj.handle.ValueComponent.mActorValue[_defType] >> inContext.LocalParams[0].iParam;
                    }
                }
                else if (skillFuncParam == 0)
                {
                    info = inTargetObj.handle.ValueComponent.mActorValue[_defType] + inContext.LocalParams[0].iParam;
                }
                else
                {
                    info = inTargetObj.handle.ValueComponent.mActorValue[_defType] << inContext.LocalParams[0].iParam;
                }
            }
        }
        public static bool OnSkillFuncRecoveryEffect(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (!inTargetObj)
            {
                return(false);
            }
            int skillFuncParam  = inContext.GetSkillFuncParam(0, false);
            int skillFuncParam2 = inContext.GetSkillFuncParam(1, false);
            int skillFuncParam3 = inContext.GetSkillFuncParam(4, false);

            if (inContext.inStage == ESkillFuncStage.Enter)
            {
                if (skillFuncParam == 0)
                {
                    ValueDataInfo valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYVAMP] + skillFuncParam3;
                    valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCVAMP] + skillFuncParam3;
                    valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_PROPERTY_RECOVERYGAINEFFECT] + skillFuncParam2;
                }
                else
                {
                    ValueDataInfo valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYVAMP] << skillFuncParam3;
                    valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCVAMP] << skillFuncParam3;
                    valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_PROPERTY_RECOVERYGAINEFFECT] << skillFuncParam2;
                }
            }
            else if (inContext.inStage == ESkillFuncStage.Leave)
            {
                if (skillFuncParam == 0)
                {
                    ValueDataInfo valueDataInfo3 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYVAMP] - skillFuncParam3;
                    valueDataInfo3 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCVAMP] - skillFuncParam3;
                    valueDataInfo3 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_PROPERTY_RECOVERYGAINEFFECT] - skillFuncParam2;
                }
                else
                {
                    ValueDataInfo valueDataInfo4 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYVAMP] >> skillFuncParam3;
                    valueDataInfo4 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCVAMP] >> skillFuncParam3;
                    valueDataInfo4 = inTargetObj.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_PROPERTY_RECOVERYGAINEFFECT] >> skillFuncParam2;
                }
            }
            return(true);
        }
        public static bool OnSkillFuncRecoveryEffect(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (!inTargetObj)
            {
                return(false);
            }
            int skillFuncParam  = inContext.GetSkillFuncParam(0, false);
            int skillFuncParam2 = inContext.GetSkillFuncParam(1, false);
            int skillFuncParam3 = inContext.GetSkillFuncParam(4, false);

            if (inContext.inStage == ESkillFuncStage.Enter)
            {
                if (skillFuncParam == 0)
                {
                    ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[9] + skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[10] + skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[36] + skillFuncParam2;
                }
                else
                {
                    ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[9] << skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[10] << skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[36] << skillFuncParam2;
                }
            }
            else if (inContext.inStage == ESkillFuncStage.Leave)
            {
                if (skillFuncParam == 0)
                {
                    ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[9] - skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[10] - skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[36] - skillFuncParam2;
                }
                else
                {
                    ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[9] >> skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[10] >> skillFuncParam3;
                    valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[36] >> skillFuncParam2;
                }
            }
            return(true);
        }
Пример #27
0
 public static bool OnSkillFuncControlExtraEffect(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         int skillFuncParam = inContext.GetSkillFuncParam(0, false);
         inContext.inBuffSkill.handle.CustomParams[0] = skillFuncParam;
         return(true);
     }
     return(true);
 }
Пример #28
0
        public static bool OnSkillFuncDecreaseReviveTime(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj && inContext.inStage == ESkillFuncStage.Enter)
            {
                int skillFuncParam  = inContext.GetSkillFuncParam(0, false);
                int skillFuncParam2 = inContext.GetSkillFuncParam(1, false);
                if (skillFuncParam == 0)
                {
                    inTargetObj.handle.ActorControl.ReviveCooldown -= skillFuncParam2;
                }
                else if (skillFuncParam == 1)
                {
                    inTargetObj.handle.ActorControl.ReviveCooldown -= (int)((long)(skillFuncParam2 * inTargetObj.handle.ActorControl.CfgReviveCD) / 10000L);
                }
            }
            return(true);
        }
 public static bool OnSkillFuncTriggerMark(ref SSkillFuncContext inContext)
 {
     if (inContext.inStage == ESkillFuncStage.Enter)
     {
         PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;
         if (inTargetObj)
         {
             int skillFuncParam = inContext.GetSkillFuncParam(0, false);
             inTargetObj.get_handle().BuffHolderComp.markRule.TriggerBufferMark(inContext.inOriginator, skillFuncParam, inContext.inUseContext);
             int skillFuncParam2 = inContext.GetSkillFuncParam(1, false);
             if (skillFuncParam2 != 0)
             {
                 inTargetObj.get_handle().BuffHolderComp.RemoveBuff(skillFuncParam2);
             }
         }
         return(true);
     }
     return(false);
 }
Пример #30
0
        public static bool OnSkillFuncTriggerMark(ref SSkillFuncContext inContext)
        {
            if (inContext.inStage != ESkillFuncStage.Enter)
            {
                return(false);
            }
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                int skillFuncParam = inContext.GetSkillFuncParam(0, false);
                inTargetObj.handle.BuffHolderComp.markRule.TriggerBufferMark(inContext.inOriginator, skillFuncParam);
                int inSkillCombineId = inContext.GetSkillFuncParam(1, false);
                if (inSkillCombineId != 0)
                {
                    inTargetObj.handle.BuffHolderComp.RemoveBuff(inSkillCombineId);
                }
            }
            return(true);
        }