Exemplo n.º 1
0
 public ValueDataInfo this[RES_FUNCEFT_TYPE key]
 {
     get
     {
         return(this.mActorValue[key]);
     }
 }
Exemplo n.º 2
0
 public void ChangeFuncEft(RES_FUNCEFT_TYPE key, RES_VALUE_TYPE type, int val, bool bOffRatio = false)
 {
     if (this.mActorValue[key] != null)
     {
         ValueDataInfo.ChangeValueData(ref this.mActorValue[key], type, val, bOffRatio);
     }
 }
Exemplo n.º 3
0
 public void SetChangeEvent(RES_FUNCEFT_TYPE key, ValueChangeDelegate func)
 {
     if (this.mActorValue[key] != null)
     {
         this.mActorValue[key].ChangeEvent += func;
         func();
     }
 }
        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);
        }
        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);
        }
Exemplo n.º 6
0
 private int GetPropMaxValueLimit(RES_FUNCEFT_TYPE funcType, bool bPvpMode)
 {
     if (bPvpMode)
     {
         ResPropertyValueInfo dataByKey = GameDataMgr.propertyValInfo.GetDataByKey((uint)funcType);
         return((dataByKey == null) ? 0 : dataByKey.iMaxLimitValue);
     }
     return(0);
 }
Exemplo n.º 7
0
 private static void SetPropValue(PropertyHelper propVal, RES_FUNCEFT_TYPE type, int balanceVal)
 {
     propVal[type].baseValue = balanceVal;
     propVal[type].growValue = 0;
     propVal[type].addValue  = 0;
     propVal[type].decValue  = 0;
     propVal[type].addRatio  = 0;
     propVal[type].decRatio  = 0;
 }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
0
 private static bool ParsePlayerProperty(CHeroInfo heroInfo, string s, out int value)
 {
     value = 0;
     if (s[0] == 'k')
     {
         RES_FUNCEFT_TYPE res_funceft_type = (RES_FUNCEFT_TYPE)Convert.ToInt32(s.Substring(1));
         value = heroInfo.mActorValue[res_funceft_type].totalValue;
         return(true);
     }
     return(false);
 }
Exemplo n.º 10
0
 private static bool ParsePlayerProperty(CHeroInfo heroInfo, string s, out int value)
 {
     value = 0;
     if (s.get_Chars(0) == 'k')
     {
         int num = Convert.ToInt32(s.Substring(1));
         RES_FUNCEFT_TYPE key = (RES_FUNCEFT_TYPE)num;
         value = heroInfo.mActorValue[key].totalValue;
         return(true);
     }
     return(false);
 }
Exemplo n.º 11
0
 public ValueDataInfo(RES_FUNCEFT_TYPE type, int nValue, int nGrow, ValueCalculator calc, int dynamicCfg = 0, int nMaxLimitValue = 0)
 {
     this._type               = type;
     this.baseValue           = nValue;
     this.growValue           = nGrow;
     this.addValue            = 0;
     this.decValue            = 0;
     this.addRatio            = 0;
     this.decRatio            = 0;
     this.dynamicId           = dynamicCfg;
     this.Calculator          = calc;
     this.maxLimitValue       = nMaxLimitValue;
     this._TotalEftRatio      = 0;
     this._TotalEftRatioByMgc = 0;
 }
Exemplo n.º 12
0
        public void Searcher(ActorRoot _inActor, RES_FUNCEFT_TYPE _propertyType, PropertyDelegate _delegate)
        {
            ulong num = _delegate(_inActor, _propertyType);

            if (num < this.maxValue)
            {
                this.targetList.Clear();
                this.maxValue = num;
                this.targetList.Add(_inActor);
            }
            else if (num == this.maxValue)
            {
                this.targetList.Add(_inActor);
            }
        }
Exemplo n.º 13
0
        public static ulong GetPropertyHpRate(ActorRoot _inActor, RES_FUNCEFT_TYPE _type)
        {
            int num        = _inActor.ValueComponent.actorHp * 100;
            int totalValue = _inActor.ValueComponent.mActorValue[_type].totalValue;

            if (totalValue != 0)
            {
                num /= totalValue;
            }
            else
            {
                object[] inParameters = new object[] { (_inActor.gameObject != null) ? _inActor.name : "null" };
                DebugHelper.Assert(false, "Gameobj MaxHp = 0 Exception,  ActorName:{0}", inParameters);
            }
            return((ulong)num);
        }
Exemplo n.º 14
0
        private static void BalancePropValue(ref PropertyHelper propVal, RES_FUNCEFT_TYPE type, float standardVal, float lowLmtVal, float translowLmtVal)
        {
            ValueDataInfo info       = propVal[type];
            int           totalValue = info.totalValue;
            int           num2       = 0;

            if (totalValue <= translowLmtVal)
            {
                num2 = (int)lowLmtVal;
            }
            else if (totalValue < standardVal)
            {
                DebugHelper.Assert((standardVal > translowLmtVal) && (standardVal > lowLmtVal));
                num2 = (int)((((totalValue - translowLmtVal) / (standardVal - translowLmtVal)) * (standardVal - lowLmtVal)) + lowLmtVal);
            }
            else
            {
                num2 = (int)standardVal;
            }
            info.baseValue = num2;
            info.growValue = 0;
            info.addValue  = 0;
            info.decValue  = 0;
        }
Exemplo n.º 15
0
        private int GetAddValue(ref PoolObjHandle <ActorRoot> OrignalHost, ref PoolObjHandle <ActorRoot> Monster, ref ResCallMonster CallMonsterCfg, RES_FUNCEFT_TYPE type)
        {
            int  num      = 0;
            byte bAddType = CallMonsterCfg.bAddType;

            if ((CallMonsterCfg.bAddType & 1) != 0)
            {
                num += OrignalHost.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_PHYATKPT].totalValue;
            }
            if ((CallMonsterCfg.bAddType & 2) != 0)
            {
                num += OrignalHost.handle.ValueComponent.mActorValue[RES_FUNCEFT_TYPE.RES_FUNCEFT_MGCATKPT].totalValue;
            }
            if ((CallMonsterCfg.bAddType & 4) != 0)
            {
                num += OrignalHost.handle.ValueComponent.mActorValue[type].totalValue;
            }
            return(num);
        }
Exemplo n.º 16
0
        private void ApplyProperty(ref PoolObjHandle <ActorRoot> Monster, RES_FUNCEFT_TYPE InType, int InValue, int InBase)
        {
            int num = (int)(((double)(InBase * InValue)) / 10000.0);

            Monster.handle.ValueComponent.mActorValue[InType].addValue += num;
        }
Exemplo n.º 17
0
        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;
                }
            }
        }
Exemplo n.º 18
0
        private int GetPropMinValueLimit(RES_FUNCEFT_TYPE funcType, bool bPvpMode)
        {
            ResPropertyValueInfo dataByKey = GameDataMgr.propertyValInfo.GetDataByKey((uint)((byte)funcType));

            return((dataByKey != null) ? dataByKey.iMinLimitValue : 0);
        }
        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);
                }
            }
        }
        private static void OnSkillFuncChangeValueProperty(ref SSkillFuncContext inContext, RES_FUNCEFT_TYPE _defType, bool _bAddValue)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (!inTargetObj)
            {
                return;
            }
            int changeValueProperty = SkillFuncPropertyDelegator.GetChangeValueProperty(inTargetObj, ref inContext);
            int skillFuncParam      = inContext.GetSkillFuncParam(0, false);

            if (inContext.inStage != ESkillFuncStage.Leave)
            {
                if (_bAddValue)
                {
                    if (skillFuncParam == 0)
                    {
                        ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] + changeValueProperty;
                    }
                    else
                    {
                        ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] << changeValueProperty;
                    }
                    SSkillFuncIntParam[] expr_8E_cp_0 = inContext.LocalParams;
                    int expr_8E_cp_1 = 0;
                    expr_8E_cp_0[expr_8E_cp_1].iParam = expr_8E_cp_0[expr_8E_cp_1].iParam + changeValueProperty;
                }
                else
                {
                    if (skillFuncParam == 0)
                    {
                        ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] - changeValueProperty;
                    }
                    else
                    {
                        ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] >> changeValueProperty;
                    }
                    SSkillFuncIntParam[] expr_F3_cp_0 = inContext.LocalParams;
                    int expr_F3_cp_1 = 0;
                    expr_F3_cp_0[expr_F3_cp_1].iParam = expr_F3_cp_0[expr_F3_cp_1].iParam + changeValueProperty;
                }
            }
            else if (_bAddValue)
            {
                if (skillFuncParam == 0)
                {
                    ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] - inContext.LocalParams[0].iParam;
                }
                else
                {
                    ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] >> inContext.LocalParams[0].iParam;
                }
            }
            else if (skillFuncParam == 0)
            {
                ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] + inContext.LocalParams[0].iParam;
            }
            else
            {
                ValueDataInfo valueDataInfo = inTargetObj.get_handle().ValueComponent.mActorValue[_defType] << inContext.LocalParams[0].iParam;
            }
        }
Exemplo n.º 21
0
 public static ulong GetPropertyValue(ActorRoot _inActor, RES_FUNCEFT_TYPE _type)
 {
     return((ulong)((long)_inActor.ValueComponent.mActorValue[_type].totalValue));
 }
        private static void OnSkillFuncChangeValueProperty(ref SSkillFuncContext inContext, RES_FUNCEFT_TYPE _defType, bool _bAddValue)
        {
            PoolObjHandle <ActorRoot> inTargetObj = inContext.inTargetObj;

            if (!inTargetObj)
            {
                return;
            }
            int changeValueProperty = SkillFuncPropertyDelegator.GetChangeValueProperty(inTargetObj, ref inContext);
            int skillFuncParam      = inContext.GetSkillFuncParam(0, false);

            if (inContext.inStage != ESkillFuncStage.Leave)
            {
                if (_bAddValue)
                {
                    if (skillFuncParam == 0)
                    {
                        ValueDataInfo valueDataInfo = inTargetObj.handle.ValueComponent.mActorValue[_defType] + changeValueProperty;
                    }
                    else
                    {
                        ValueDataInfo valueDataInfo2 = inTargetObj.handle.ValueComponent.mActorValue[_defType] << changeValueProperty;
                    }
                    SSkillFuncIntParam[] localParams = inContext.LocalParams;
                    int num = 0;
                    localParams[num].iParam = localParams[num].iParam + changeValueProperty;
                }
                else
                {
                    if (skillFuncParam == 0)
                    {
                        ValueDataInfo valueDataInfo3 = inTargetObj.handle.ValueComponent.mActorValue[_defType] - changeValueProperty;
                    }
                    else
                    {
                        ValueDataInfo valueDataInfo4 = inTargetObj.handle.ValueComponent.mActorValue[_defType] >> changeValueProperty;
                    }
                    SSkillFuncIntParam[] localParams2 = inContext.LocalParams;
                    int num2 = 0;
                    localParams2[num2].iParam = localParams2[num2].iParam + changeValueProperty;
                }
            }
            else if (_bAddValue)
            {
                if (skillFuncParam == 0)
                {
                    ValueDataInfo valueDataInfo5 = inTargetObj.handle.ValueComponent.mActorValue[_defType] - inContext.LocalParams[0].iParam;
                }
                else
                {
                    ValueDataInfo valueDataInfo6 = inTargetObj.handle.ValueComponent.mActorValue[_defType] >> inContext.LocalParams[0].iParam;
                }
            }
            else if (skillFuncParam == 0)
            {
                ValueDataInfo valueDataInfo7 = inTargetObj.handle.ValueComponent.mActorValue[_defType] + inContext.LocalParams[0].iParam;
            }
            else
            {
                ValueDataInfo valueDataInfo8 = inTargetObj.handle.ValueComponent.mActorValue[_defType] << inContext.LocalParams[0].iParam;
            }
        }