Exemple #1
0
        //计算属性
        public int Calculate(BuffList _this, ObjCharacter obj, eAttributeType type, ref double dBili)
        {
            var value = 0;

            foreach (var i in _this.mData)
            {
                if (i.GetActive() == false)
                {
                    continue;
                }
                var tbBuff      = i.mBuff;
                var effectCount = tbBuff.effectid.Length;
                for (var j = 0; j != effectCount; ++j)
                {
                    var param = tbBuff.effectparam;
                    if (tbBuff.effectid[j] != (int)eEffectType.RefAttr)
                    {
                        continue;
                    }
                    if (type != (eAttributeType)param[j, 0])
                    {
                        continue;
                    }
                    value += param[j, 3] * i.GetLayer();
                    if (param[j, 1] == -1)
                    {
                        continue;
                    }
                    if (param[j, 1] != param[j, 0])
                    {
                        value +=
                            (int)
                            (obj.Attr.GetDataValue((eAttributeType)param[j, 1]) *
                             ((double)param[j, 2] * i.GetLayer() / 10000));
                    }
                    else
                    {
                        dBili = dBili * (10000 + param[j, 2] * i.GetLayer()) / 10000;
                    }
                }
            }
            return(value);
        }
Exemple #2
0
 private int GetWillAttrPoint(eAttributeType type)
 {
     return(PlayerAttr.Instance.GetTryDataValue(type) - PlayerAttr.Instance.GetDataValue(type));
 }
Exemple #3
0
 //计算属性
 public int Calculate(ObjCharacter obj, eAttributeType type, ref double dBili)
 {
     return(mImpl.Calculate(this, obj, type, ref dBili));
 }
Exemple #4
0
        public int GetPetAttribut(eAttributeType attrId)
        {
            var tbPet = Table.GetPet(GetId());

            if (tbPet == null)
            {
                return(-1);
            }
            var tbCharacter = Table.GetCharacterBase(tbPet.CharacterID);

            if (tbCharacter == null)
            {
                return(-1);
            }
            if (attrId < eAttributeType.Level || attrId > eAttributeType.HitRecovery)
            {
                return(-1);
            }
            var value = tbCharacter.Attr[(int)attrId];
            //var tbAttrRef = Table.GetAttrRef(tbPet.AttrRef);
            //if (tbAttrRef == null) return value;
            //int index = GetAttrRef_Id2Index((int)attrId);
            //if (index < 0) return value;
            var level = GetExdata(0);

            //value += tbAttrRef.Attr[index] * (level - 1);
            for (var i = 1; i != 4; ++i)
            {
                var skillId = tbCharacter.InitSkill[i];
                var tbSkil  = Table.GetSkill(skillId);
                if (tbSkil == null)
                {
                    continue;
                }
                if (tbSkil.CastType != 3)
                {
                    continue;
                }
                var tbBuff = Table.GetBuff(tbSkil.CastParam[0]);
                if (tbBuff == null)
                {
                    continue;
                }
                for (var j = 0; j < tbBuff.effectid.Length; j++)
                {
                    var effectId = tbBuff.effectid[j];
                    if (effectId != 2)
                    {
                        continue;
                    }
                    if (tbBuff.effectparam[j, 0] != (int)attrId)
                    {
                        continue;
                    }
                    var skillUp = Table.GetSkillUpgrading(tbBuff.effectparam[j, 3] - 10000000);
                    if (skillUp == null)
                    {
                        continue;
                    }
                    value += skillUp.GetSkillUpgradingValue(level - 1);
                }
            }
            return(value);
        }