private static void SendProtectEvent(ref SSkillFuncContext inContext, int type, int changeValue)
 {
     if (((changeValue != 0) && (inContext.inTargetObj != 0)) && (inContext.inTargetObj.handle.BuffHolderComp != null))
     {
         inContext.inTargetObj.handle.BuffHolderComp.protectRule.SendProtectEvent(type, changeValue);
     }
 }
        private static void SkillFuncChangeSkillCDImpl(ref SSkillFuncContext inContext, int changeType, int slotMask, int value)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj)
            {
                SkillComponent skillControl = inTargetObj.get_handle().SkillControl;
                if (skillControl != null)
                {
                    SkillSlot skillSlot = null;
                    for (int i = 0; i < 10; i++)
                    {
                        if (((slotMask == 0 && i != 0 && i != 4 && i != 5 && i != 7) || (slotMask & 1 << i) > 0) && skillControl.TryGetSkillSlot((SkillSlotType)i, out skillSlot) && skillSlot != null)
                        {
                            if (changeType == 0)
                            {
                                skillSlot.ChangeSkillCD(value);
                            }
                            else
                            {
                                skillSlot.ChangeMaxCDRate(value);
                            }
                        }
                    }
                }
            }
        }
 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 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 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);
 }
        private static void SkillFuncChangeSkillCDImpl(ref SSkillFuncContext inContext, int changeType, int slotMask, int value)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                SkillComponent skillControl = inTargetObj.handle.SkillControl;
                if (skillControl != null)
                {
                    SkillSlot slot = null;
                    for (int i = 0; i < 7; i++)
                    {
                        if (((((slotMask == 0) && (i != 0)) && ((i != 4) && (i != 5))) || ((slotMask & (((int)1) << i)) > 0)) && (skillControl.TryGetSkillSlot((SkillSlotType)i, out slot) && (slot != null)))
                        {
                            if (changeType == 0)
                            {
                                slot.ChangeSkillCD(value);
                            }
                            else
                            {
                                slot.ChangeMaxCDRate(value);
                            }
                        }
                    }
                }
            }
        }
        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);
        }
 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);
 }
        public static bool OnSkillFuncIgnoreRVO(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                RVOController component = null;
                if (inContext.inStage == ESkillFuncStage.Enter)
                {
                    component = inTargetObj.handle.gameObject.GetComponent <RVOController>();
                    if (component != null)
                    {
                        component.enabled = false;
                    }
                }
                else if (inContext.inStage == ESkillFuncStage.Leave)
                {
                    component = inTargetObj.handle.gameObject.GetComponent <RVOController>();
                    if (component != null)
                    {
                        component.enabled = true;
                    }
                }
            }
            return(true);
        }
Пример #11
0
        public static bool OnSkillFuncProtect(ref SSkillFuncContext inContext)
        {
            if (inContext.inStage != ESkillFuncStage.Enter)
            {
                return(false);
            }
            int skillFuncProtectValue = GetSkillFuncProtectValue(ref inContext);

            switch (inContext.GetSkillFuncParam(0, false))
            {
            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;
            }
            return(true);
        }
Пример #12
0
        public static bool OnSkillFuncInvisible(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (inTargetObj != 0)
            {
                if (inContext.inStage == ESkillFuncStage.Enter)
                {
                    inTargetObj.handle.HorizonMarker.AddHideMark(COM_PLAYERCAMP.COM_PLAYERCAMP_COUNT, HorizonConfig.HideMark.Skill, 1);
                    inTargetObj.handle.HorizonMarker.SetTranslucentMark(HorizonConfig.HideMark.Skill, true);
                }
                else if (inContext.inStage == ESkillFuncStage.Leave)
                {
                    COM_PLAYERCAMP[] othersCmp = BattleLogic.GetOthersCmp(inTargetObj.handle.TheActorMeta.ActorCamp);
                    for (int i = 0; i < othersCmp.Length; i++)
                    {
                        if (inTargetObj.handle.HorizonMarker.HasHideMark(othersCmp[i], HorizonConfig.HideMark.Skill))
                        {
                            inTargetObj.handle.HorizonMarker.AddHideMark(othersCmp[i], HorizonConfig.HideMark.Skill, -1);
                        }
                    }
                    inTargetObj.handle.HorizonMarker.SetTranslucentMark(HorizonConfig.HideMark.Skill, false);
                }
            }
            return(true);
        }
        private static int GetOverlayFadeRate(ref SSkillFuncContext inContext)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;
            int num = 10000 - inContext.inBuffSkill.get_handle().cfgData.iOverlayFadeRate;

            if (num == 10000)
            {
                return(10000);
            }
            if (num < 10000 && num >= 0 && inTargetObj && inTargetObj.get_handle().BuffHolderComp != null)
            {
                int skillID = inContext.inBuffSkill.get_handle().SkillID;
                if (inContext.inBuffSkill && inContext.inBuffSkill.get_handle().bFirstEffect)
                {
                    inContext.inBuffSkill.get_handle().bFirstEffect = false;
                    return(10000);
                }
                int num2 = inTargetObj.get_handle().BuffHolderComp.FindBuffCount(skillID);
                if (num2 > 1)
                {
                    return(num);
                }
            }
            return(10000);
        }
        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);
                }
            }
        }
Пример #15
0
 public override void OnUse()
 {
     base.OnUse();
     this.SkillFuncType = 0;
     this.m_context     = default(SSkillFuncContext);
     this.m_bSucceeded  = false;
     this.bInit         = false;
 }
Пример #16
0
        private static int GetEffectFadeRate(ref SSkillFuncContext inContext)
        {
            int iNextDeltaFadeRate = inContext.inBuffSkill.handle.cfgData.iNextDeltaFadeRate;
            int iNextLowFadeRate   = inContext.inBuffSkill.handle.cfgData.iNextLowFadeRate;
            int num3 = 0x2710 - ((inContext.inEffectCount - 1) * iNextDeltaFadeRate);

            return((num3 >= iNextLowFadeRate) ? num3 : iNextLowFadeRate);
        }
Пример #17
0
 public override void OnUse()
 {
     base.OnUse();
     this.SkillFuncType = RES_SKILLFUNC_TYPE.RES_SKILLFUNC_TYPE_PHYSHURT;
     this.m_context     = new SSkillFuncContext();
     this.m_bSucceeded  = false;
     this.bInit         = false;
 }
        private static int GetEffectFadeRate(ref SSkillFuncContext inContext)
        {
            int iNextDeltaFadeRate = inContext.inBuffSkill.get_handle().cfgData.iNextDeltaFadeRate;
            int iNextLowFadeRate   = inContext.inBuffSkill.get_handle().cfgData.iNextLowFadeRate;
            int num = 10000 - (inContext.inEffectCount - 1) * iNextDeltaFadeRate;

            return((num >= iNextLowFadeRate) ? num : iNextLowFadeRate);
        }
 private static void SendProtectEvent(ref SSkillFuncContext inContext, int type, int changeValue)
 {
     if (changeValue != 0 && inContext.inTargetObj && inContext.inTargetObj.get_handle().BuffHolderComp != null)
     {
         BuffProtectRule protectRule = inContext.inTargetObj.get_handle().BuffHolderComp.protectRule;
         protectRule.SendProtectEvent(type, changeValue);
     }
 }
        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 OnSkillFuncAddEp(ref SSkillFuncContext inContext)
 {
     if ((inContext.inTargetObj != 0) && inContext.inTargetObj.handle.ValueComponent.IsEnergyType(ENERGY_TYPE.Magic))
     {
         OnSKillFuncChangeEpValue(ref inContext, true);
         return(true);
     }
     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 OnSkillFuncChangeHeroFuryEp(ref SSkillFuncContext inContext)
 {
     if (inContext.inTargetObj && inContext.inTargetObj.get_handle().ValueComponent.IsEnergyType(EnergyType.FuryResource))
     {
         SkillFuncPropertyDelegator.OnSKillFuncChangeEpValue(ref inContext, true);
         return(true);
     }
     return(false);
 }
Пример #24
0
        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);
        }
Пример #25
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);
        }
Пример #26
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);
 }
Пример #27
0
        protected override void CopyData(BaseEvent src)
        {
            base.CopyData(src);
            SkillFuncDuration duration = src as SkillFuncDuration;

            this.SkillFuncType = duration.SkillFuncType;
            this.m_context     = duration.m_context;
            this.m_bSucceeded  = duration.m_bSucceeded;
            this.bInit         = duration.bInit;
        }
        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);
            }
        }
Пример #29
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);
 }
Пример #30
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);
 }