MapServer.PlayerObject.CalcAttribute C# (CSharp) 메소드

CalcAttribute() 공개 메소드

public CalcAttribute ( ) : void
리턴 void
        public override void CalcAttribute()
        {
            //先更新基础属性--
            GameStruct.BaseAttributeInfo attinfo = ConfigManager.Instance().GetAttributeInfo(GetBaseAttr().profession, GetBaseAttr().level);
            PlayerAttribute baseAttr = GetBaseAttr();
            baseAttr.resetAttr();
            if (attinfo != null)
            {

                baseAttr.life_max = attinfo.GetLife();
                baseAttr.attack_max = baseAttr.attack = attinfo.GetAttack();
                baseAttr.doage = attinfo.GetDoage();
                //亡灵巫师 异能者 血族也有蓝的
                //if (baseAttr.profession == JOB.MAGE)
                //{
                    baseAttr.mana_max = attinfo.GetMana();
                    baseAttr.magic_attack = baseAttr.magic_attack_max = attinfo.GetMagicAttack();
              // }

            }

            //装备属性--
            for (int i = NetMsg.MsgItemInfo.ITEMPOSITION_HELMET; i < NetMsg.MsgItemInfo.ITEMPOSITION_SHOES; i++)
            {
                GameStruct.RoleItemInfo info = GetItemSystem().GetEquipByPostion((byte)i);
                if (info != null)
                {
                    GameStruct.ItemTypeInfo baseitem = ConfigManager.Instance().GetItemTypeInfo(info.itemid);
                    if (baseitem != null)
                    {
                        baseAttr.attack += baseitem.attack_min;
                        baseAttr.attack_max += baseitem.attack_max;
                        baseAttr.magic_attack += baseitem.magic_attack_min;
                        baseAttr.magic_attack_max += baseitem.magic_attck_max;
                        baseAttr.doage += baseitem.dodge;
                        baseAttr.hitrate += baseitem.hitrate;
                        baseAttr.defense += baseitem.defense;
                        baseAttr.magic_defense += baseitem.magic_defense;

                        //装备强化加成--
                        GameStruct.ItemAdditionInfo itemaddition = ConfigManager.Instance().GetItemAdditionInfo((byte)i, info.GetStrongLevel());
                        if (itemaddition != null)
                        {
                            baseAttr.attack += itemaddition.min_attack;
                            baseAttr.attack_max += itemaddition.max_attack;
                            baseAttr.life += itemaddition.life;
                            baseAttr.defense += itemaddition.defense;
                            baseAttr.magic_attack += itemaddition.min_magic_attack;
                            baseAttr.magic_attack_max += itemaddition.max_magic_attack;
                            baseAttr.magic_defense += itemaddition.magic_defense;
                            baseAttr.doage += itemaddition.dodge;
                        }
                    }
                }
            }
            //计算战斗力
            this.CalcFightSoul();
        }

Usage Example

예제 #1
0
        private bool Action_Equip_Operation(ActionInfo info, PlayerObject play)
        {
            String[] option = info.param.Split(' ');
            String command = option[0].ToLower();
            RoleItemInfo role_item = null;
            switch (command)
            {
                case "checkequip": //检测装备位置是否存在
                    {
                        byte postion = Convert.ToByte(option[1]);
                        role_item = play.GetItemSystem().GetEquipByPostion(postion);
                        return role_item == null ? false : true;
                    }
                case "setequippro": //设置装备属性
                    {
                        byte postion = Convert.ToByte(option[1]);
                        role_item = play.GetItemSystem().GetEquipByPostion(postion);
                        if (role_item == null) return false;
                        String op = option[2];
                        bool ret = true;
                        switch (op)
                        {
                            case "shui_attack":
                                {
                                    String opex = option[3];
                                    byte v = Convert.ToByte(option[4]);
                                    switch (opex)
                                    {
                                        case "=":
                                            {    role_item.shui_attack = v;   break; }
                                        case "-":
                                            {   role_item.shui_attack -= v;     break;  }
                                        case "+":
                                            {   role_item.shui_attack += v; break; }
                                    }
                                    break;
                                }
                            case "di_attack":
                                {
                                    String opex = option[3];
                                    byte v = Convert.ToByte(option[4]);
                                    switch (opex)
                                    {
                                        case "=":    {   role_item.di_attack = v;  break;  }
                                        case "-":   {   role_item.di_attack -= v;     break; }
                                        case "+": {   role_item.di_attack += v;  break; }
                                    }
                                    break;

                                }
                            case "huo_attack":
                                {
                                    String opex = option[3];
                                    byte v = Convert.ToByte(option[4]);
                                    switch (opex)
                                    {
                                        case "=":{   role_item.huo_attack = v;  break;  }
                                        case "-": {   role_item.huo_attack -= v;   break;  }
                                        case "+":  {    role_item.huo_attack += v;     break;  }
                                    }
                                    break;

                                }
                            case "feng_attack":
                                {
                                    String opex = option[3];
                                    byte v = Convert.ToByte(option[4]);
                                    switch (opex)
                                    {
                                        case "=": {   role_item.feng_attack = v;     break;    }
                                        case "-":     {         role_item.feng_attack -= v;     break;       }
                                        case "+":  {        role_item.feng_attack += v;   break;      }
                                    }
                                    break;

                                }
                            case "hole": //装备打洞 0为第一个洞 1为第二个洞 2为第三个洞
                                {
                                   String opex = option[3];
                                    byte v = Convert.ToByte(option[4]);

                                    switch (opex)
                                    {
                                        case "=": { role_item.OpenGem(v); break; }

                                    }
                                    break;
                                }
                            default:
                                {
                                    ret = false;
                                    break;
                                }
                        }
                        play.GetItemSystem().UpdateItemInfo(role_item.id);
                        play.CalcAttribute();//重新计算属性
                        return ret;
                    }
                case "checkequippro": //获取装备属性
                    {
                        byte postion = Convert.ToByte(option[1]);
                        role_item = play.GetItemSystem().GetEquipByPostion(postion);
                        if (role_item == null) return false;
                        String op = option[2];
                        String opex = option[3];
                        int v = Convert.ToInt32(option[4]);
                        switch (op)
                        {
                            case "shui_attack":
                                {
                                    switch (opex)
                                    {
                                        case "=":
                                            { return role_item.shui_attack == v; }
                                        case ">":
                                            { return role_item.shui_attack > v;}
                                        case ">=":
                                            {return role_item.shui_attack >= v;}
                                        case "<":
                                            {return role_item.shui_attack < v;    }
                                        case "<=":
                                            {  return role_item.shui_attack <= v;}
                                        default: { break; }
                                    }
                                    break;
                                }
                            case "di_attack":
                                {
                                    switch (opex)
                                    {
                                        case "=":
                                            {     return role_item.di_attack == v; }
                                        case ">":
                                            {return role_item.di_attack > v; }
                                        case ">=":
                                            { return role_item.di_attack >= v; }
                                        case "<":
                                            {  return role_item.di_attack < v; }
                                        case "<=":
                                            { return role_item.di_attack <= v;}
                                        default: { break; }
                                    }
                                    break;
                                }
                            case "huo_attack":
                                {
                                    switch (opex)
                                    {
                                        case "=":
                                            {   return role_item.huo_attack == v; }
                                        case ">":
                                            {       return role_item.huo_attack > v; }
                                        case ">=":
                                            {     return role_item.huo_attack >= v;   }
                                        case "<":
                                            {     return role_item.huo_attack < v;  }
                                        case "<=":
                                            {    return role_item.huo_attack <= v;  }
                                        default: { break; }
                                    }
                                    break;
                                }
                            case "feng_attack":
                                {
                                    switch (opex)
                                    {
                                        case "=":      {    return role_item.feng_attack == v;  }
                                        case ">":     {     return role_item.feng_attack > v;  }
                                        case ">=":  {    return role_item.feng_attack >= v;  }
                                        case "<":  {    return role_item.feng_attack < v;  }
                                        case "<=":{       return role_item.feng_attack <= v;  }
                                        default: { break; }
                                    }
                                    break;
                                }
                            case "hole": //装备打洞数量
                                {
                                    switch (opex)
                                    {
                                        case "=": { return role_item.GetGemCount() == v; }
                                    }
                                    break;
                                }
                            default: { break; }
                        }
                        break;
                    }
            }
            return false;
        }