// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: BattleAttr.proto

package pb.xiugou.x1.protobuf.battleattr;

public final class BattleAttr {
  private BattleAttr() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface PbBattleAttrOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbBattleAttr)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *当前血量
     * </pre>
     *
     * <code>int64 hp = 1;</code>
     * @return The hp.
     */
    long getHp();

    /**
     * <pre>
     *生命
     * </pre>
     *
     * <code>int64 maxHp = 2;</code>
     * @return The maxHp.
     */
    long getMaxHp();

    /**
     * <pre>
     *攻击
     * </pre>
     *
     * <code>int64 atk = 3;</code>
     * @return The atk.
     */
    long getAtk();

    /**
     * <pre>
     *防御
     * </pre>
     *
     * <code>int64 def = 4;</code>
     * @return The def.
     */
    long getDef();

    /**
     * <pre>
     *血量加成
     * </pre>
     *
     * <code>int64 hpRate = 5;</code>
     * @return The hpRate.
     */
    long getHpRate();

    /**
     * <pre>
     *攻击加成
     * </pre>
     *
     * <code>int64 atkRate = 6;</code>
     * @return The atkRate.
     */
    long getAtkRate();

    /**
     * <pre>
     *防御加成
     * </pre>
     *
     * <code>int64 defRate = 7;</code>
     * @return The defRate.
     */
    long getDefRate();

    /**
     * <pre>
     *伤害加成
     * </pre>
     *
     * <code>int64 dmgRate = 8;</code>
     * @return The dmgRate.
     */
    long getDmgRate();

    /**
     * <pre>
     *命中
     * </pre>
     *
     * <code>int64 hit = 9;</code>
     * @return The hit.
     */
    long getHit();

    /**
     * <pre>
     *闪避
     * </pre>
     *
     * <code>int64 dodge = 10;</code>
     * @return The dodge.
     */
    long getDodge();

    /**
     * <pre>
     *暴击
     * </pre>
     *
     * <code>int64 crit = 11;</code>
     * @return The crit.
     */
    long getCrit();

    /**
     * <pre>
     *暴击伤害
     * </pre>
     *
     * <code>int64 critDmgRate = 12;</code>
     * @return The critDmgRate.
     */
    long getCritDmgRate();

    /**
     * <pre>
     *吸血
     * </pre>
     *
     * <code>int64 vampireRate = 13;</code>
     * @return The vampireRate.
     */
    long getVampireRate();

    /**
     * <pre>
     *减伤固定值
     * </pre>
     *
     * <code>int64 reduceDmg = 14;</code>
     * @return The reduceDmg.
     */
    long getReduceDmg();

    /**
     * <pre>
     *伤害减免
     * </pre>
     *
     * <code>int64 reduceDmgRate = 15;</code>
     * @return The reduceDmgRate.
     */
    long getReduceDmgRate();

    /**
     * <pre>
     *冷却时间
     * </pre>
     *
     * <code>int64 cdSpdRate = 16;</code>
     * @return The cdSpdRate.
     */
    long getCdSpdRate();

    /**
     * <pre>
     *移动速度
     * </pre>
     *
     * <code>int64 moveSpd = 17;</code>
     * @return The moveSpd.
     */
    long getMoveSpd();

    /**
     * <pre>
     *移动速度加成
     * </pre>
     *
     * <code>int64 moveSpdRate = 18;</code>
     * @return The moveSpdRate.
     */
    long getMoveSpdRate();

    /**
     * <pre>
     *攻击速度
     * </pre>
     *
     * <code>int64 atkSpd = 19;</code>
     * @return The atkSpd.
     */
    long getAtkSpd();

    /**
     * <pre>
     *攻击速度加成
     * </pre>
     *
     * <code>int64 atkSpdRate = 20;</code>
     * @return The atkSpdRate.
     */
    long getAtkSpdRate();

    /**
     * <pre>
     *技能伤害加成
     * </pre>
     *
     * <code>int64 dmgbl = 21;</code>
     * @return The dmgbl.
     */
    long getDmgbl();

    /**
     * <pre>
     *增伤固定值
     * </pre>
     *
     * <code>int64 dmg = 22;</code>
     * @return The dmg.
     */
    long getDmg();

    /**
     * <pre>
     *人族生命加成
     * </pre>
     *
     * <code>int64 llmaxRate = 23;</code>
     * @return The llmaxRate.
     */
    long getLlmaxRate();

    /**
     * <pre>
     *人族伤害加成
     * </pre>
     *
     * <code>int64 lldmgRate = 24;</code>
     * @return The lldmgRate.
     */
    long getLldmgRate();

    /**
     * <pre>
     *灵族生命加成
     * </pre>
     *
     * <code>int64 mjmaxRate = 25;</code>
     * @return The mjmaxRate.
     */
    long getMjmaxRate();

    /**
     * <pre>
     *灵族伤害加成
     * </pre>
     *
     * <code>int64 mjdmgRate = 26;</code>
     * @return The mjdmgRate.
     */
    long getMjdmgRate();

    /**
     * <pre>
     *仙族生命加成
     * </pre>
     *
     * <code>int64 zlmaxRate = 27;</code>
     * @return The zlmaxRate.
     */
    long getZlmaxRate();

    /**
     * <pre>
     *仙族伤害加成
     * </pre>
     *
     * <code>int64 zldmgRate = 28;</code>
     * @return The zldmgRate.
     */
    long getZldmgRate();

    /**
     * <pre>
     *伐木伤害
     * </pre>
     *
     * <code>int64 woodDmg = 29;</code>
     * @return The woodDmg.
     */
    long getWoodDmg();

    /**
     * <pre>
     *挖矿伤害
     * </pre>
     *
     * <code>int64 mineDmg = 30;</code>
     * @return The mineDmg.
     */
    long getMineDmg();

    /**
     * <pre>
     *人族生命固定值
     * </pre>
     *
     * <code>int64 llmax = 31;</code>
     * @return The llmax.
     */
    long getLlmax();

    /**
     * <pre>
     *人族攻击固定值
     * </pre>
     *
     * <code>int64 lldmg = 32;</code>
     * @return The lldmg.
     */
    long getLldmg();

    /**
     * <pre>
     *灵族生命固定值
     * </pre>
     *
     * <code>int64 mjmax = 33;</code>
     * @return The mjmax.
     */
    long getMjmax();

    /**
     * <pre>
     *灵族攻击固定值
     * </pre>
     *
     * <code>int64 mjdmg = 34;</code>
     * @return The mjdmg.
     */
    long getMjdmg();

    /**
     * <pre>
     *仙族生命固定值
     * </pre>
     *
     * <code>int64 zlmax = 35;</code>
     * @return The zlmax.
     */
    long getZlmax();

    /**
     * <pre>
     *仙族攻击固定值
     * </pre>
     *
     * <code>int64 zldmg = 36;</code>
     * @return The zldmg.
     */
    long getZldmg();

    /**
     * <pre>
     *进战范围
     * </pre>
     *
     * <code>int64 battleRange = 37;</code>
     * @return The battleRange.
     */
    long getBattleRange();

    /**
     * <pre>
     *人族伙伴对怪物伤害加成
     * </pre>
     *
     * <code>int64 llpvedmg = 38;</code>
     * @return The llpvedmg.
     */
    long getLlpvedmg();

    /**
     * <pre>
     *灵族伙伴对怪物伤害加成
     * </pre>
     *
     * <code>int64 mjpvedmg = 39;</code>
     * @return The mjpvedmg.
     */
    long getMjpvedmg();

    /**
     * <pre>
     *仙族伙伴对怪物伤害加成
     * </pre>
     *
     * <code>int64 zlpvedmg = 40;</code>
     * @return The zlpvedmg.
     */
    long getZlpvedmg();

    /**
     * <pre>
     *对怪物伤害加成
     * </pre>
     *
     * <code>int64 pvedmg = 41;</code>
     * @return The pvedmg.
     */
    long getPvedmg();

    /**
     * <pre>
     *视野范围
     * </pre>
     *
     * <code>int64 fovRange = 42;</code>
     * @return The fovRange.
     */
    long getFovRange();

    /**
     * <pre>
     *暴击抵抗
     * </pre>
     *
     * <code>int64 reducecrit = 43;</code>
     * @return The reducecrit.
     */
    long getReducecrit();

    /**
     * <pre>
     *某养成系统内基础生命加成
     * </pre>
     *
     * <code>int64 hpBrate = 44;</code>
     * @return The hpBrate.
     */
    long getHpBrate();

    /**
     * <pre>
     *某养成系统内基础攻击加成
     * </pre>
     *
     * <code>int64 atkBrate = 45;</code>
     * @return The atkBrate.
     */
    long getAtkBrate();
  }
  /**
   * Protobuf type {@code pb.PbBattleAttr}
   */
  public  static final class PbBattleAttr extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbBattleAttr)
      PbBattleAttrOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbBattleAttr.newBuilder() to construct.
    private PbBattleAttr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbBattleAttr() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PbBattleAttr();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbBattleAttr(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              hp_ = input.readInt64();
              break;
            }
            case 16: {

              maxHp_ = input.readInt64();
              break;
            }
            case 24: {

              atk_ = input.readInt64();
              break;
            }
            case 32: {

              def_ = input.readInt64();
              break;
            }
            case 40: {

              hpRate_ = input.readInt64();
              break;
            }
            case 48: {

              atkRate_ = input.readInt64();
              break;
            }
            case 56: {

              defRate_ = input.readInt64();
              break;
            }
            case 64: {

              dmgRate_ = input.readInt64();
              break;
            }
            case 72: {

              hit_ = input.readInt64();
              break;
            }
            case 80: {

              dodge_ = input.readInt64();
              break;
            }
            case 88: {

              crit_ = input.readInt64();
              break;
            }
            case 96: {

              critDmgRate_ = input.readInt64();
              break;
            }
            case 104: {

              vampireRate_ = input.readInt64();
              break;
            }
            case 112: {

              reduceDmg_ = input.readInt64();
              break;
            }
            case 120: {

              reduceDmgRate_ = input.readInt64();
              break;
            }
            case 128: {

              cdSpdRate_ = input.readInt64();
              break;
            }
            case 136: {

              moveSpd_ = input.readInt64();
              break;
            }
            case 144: {

              moveSpdRate_ = input.readInt64();
              break;
            }
            case 152: {

              atkSpd_ = input.readInt64();
              break;
            }
            case 160: {

              atkSpdRate_ = input.readInt64();
              break;
            }
            case 168: {

              dmgbl_ = input.readInt64();
              break;
            }
            case 176: {

              dmg_ = input.readInt64();
              break;
            }
            case 184: {

              llmaxRate_ = input.readInt64();
              break;
            }
            case 192: {

              lldmgRate_ = input.readInt64();
              break;
            }
            case 200: {

              mjmaxRate_ = input.readInt64();
              break;
            }
            case 208: {

              mjdmgRate_ = input.readInt64();
              break;
            }
            case 216: {

              zlmaxRate_ = input.readInt64();
              break;
            }
            case 224: {

              zldmgRate_ = input.readInt64();
              break;
            }
            case 232: {

              woodDmg_ = input.readInt64();
              break;
            }
            case 240: {

              mineDmg_ = input.readInt64();
              break;
            }
            case 248: {

              llmax_ = input.readInt64();
              break;
            }
            case 256: {

              lldmg_ = input.readInt64();
              break;
            }
            case 264: {

              mjmax_ = input.readInt64();
              break;
            }
            case 272: {

              mjdmg_ = input.readInt64();
              break;
            }
            case 280: {

              zlmax_ = input.readInt64();
              break;
            }
            case 288: {

              zldmg_ = input.readInt64();
              break;
            }
            case 296: {

              battleRange_ = input.readInt64();
              break;
            }
            case 304: {

              llpvedmg_ = input.readInt64();
              break;
            }
            case 312: {

              mjpvedmg_ = input.readInt64();
              break;
            }
            case 320: {

              zlpvedmg_ = input.readInt64();
              break;
            }
            case 328: {

              pvedmg_ = input.readInt64();
              break;
            }
            case 336: {

              fovRange_ = input.readInt64();
              break;
            }
            case 344: {

              reducecrit_ = input.readInt64();
              break;
            }
            case 352: {

              hpBrate_ = input.readInt64();
              break;
            }
            case 360: {

              atkBrate_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.battleattr.BattleAttr.internal_static_pb_PbBattleAttr_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.battleattr.BattleAttr.internal_static_pb_PbBattleAttr_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.class, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder.class);
    }

    public static final int HP_FIELD_NUMBER = 1;
    private long hp_;
    /**
     * <pre>
     *当前血量
     * </pre>
     *
     * <code>int64 hp = 1;</code>
     * @return The hp.
     */
    public long getHp() {
      return hp_;
    }

    public static final int MAXHP_FIELD_NUMBER = 2;
    private long maxHp_;
    /**
     * <pre>
     *生命
     * </pre>
     *
     * <code>int64 maxHp = 2;</code>
     * @return The maxHp.
     */
    public long getMaxHp() {
      return maxHp_;
    }

    public static final int ATK_FIELD_NUMBER = 3;
    private long atk_;
    /**
     * <pre>
     *攻击
     * </pre>
     *
     * <code>int64 atk = 3;</code>
     * @return The atk.
     */
    public long getAtk() {
      return atk_;
    }

    public static final int DEF_FIELD_NUMBER = 4;
    private long def_;
    /**
     * <pre>
     *防御
     * </pre>
     *
     * <code>int64 def = 4;</code>
     * @return The def.
     */
    public long getDef() {
      return def_;
    }

    public static final int HPRATE_FIELD_NUMBER = 5;
    private long hpRate_;
    /**
     * <pre>
     *血量加成
     * </pre>
     *
     * <code>int64 hpRate = 5;</code>
     * @return The hpRate.
     */
    public long getHpRate() {
      return hpRate_;
    }

    public static final int ATKRATE_FIELD_NUMBER = 6;
    private long atkRate_;
    /**
     * <pre>
     *攻击加成
     * </pre>
     *
     * <code>int64 atkRate = 6;</code>
     * @return The atkRate.
     */
    public long getAtkRate() {
      return atkRate_;
    }

    public static final int DEFRATE_FIELD_NUMBER = 7;
    private long defRate_;
    /**
     * <pre>
     *防御加成
     * </pre>
     *
     * <code>int64 defRate = 7;</code>
     * @return The defRate.
     */
    public long getDefRate() {
      return defRate_;
    }

    public static final int DMGRATE_FIELD_NUMBER = 8;
    private long dmgRate_;
    /**
     * <pre>
     *伤害加成
     * </pre>
     *
     * <code>int64 dmgRate = 8;</code>
     * @return The dmgRate.
     */
    public long getDmgRate() {
      return dmgRate_;
    }

    public static final int HIT_FIELD_NUMBER = 9;
    private long hit_;
    /**
     * <pre>
     *命中
     * </pre>
     *
     * <code>int64 hit = 9;</code>
     * @return The hit.
     */
    public long getHit() {
      return hit_;
    }

    public static final int DODGE_FIELD_NUMBER = 10;
    private long dodge_;
    /**
     * <pre>
     *闪避
     * </pre>
     *
     * <code>int64 dodge = 10;</code>
     * @return The dodge.
     */
    public long getDodge() {
      return dodge_;
    }

    public static final int CRIT_FIELD_NUMBER = 11;
    private long crit_;
    /**
     * <pre>
     *暴击
     * </pre>
     *
     * <code>int64 crit = 11;</code>
     * @return The crit.
     */
    public long getCrit() {
      return crit_;
    }

    public static final int CRITDMGRATE_FIELD_NUMBER = 12;
    private long critDmgRate_;
    /**
     * <pre>
     *暴击伤害
     * </pre>
     *
     * <code>int64 critDmgRate = 12;</code>
     * @return The critDmgRate.
     */
    public long getCritDmgRate() {
      return critDmgRate_;
    }

    public static final int VAMPIRERATE_FIELD_NUMBER = 13;
    private long vampireRate_;
    /**
     * <pre>
     *吸血
     * </pre>
     *
     * <code>int64 vampireRate = 13;</code>
     * @return The vampireRate.
     */
    public long getVampireRate() {
      return vampireRate_;
    }

    public static final int REDUCEDMG_FIELD_NUMBER = 14;
    private long reduceDmg_;
    /**
     * <pre>
     *减伤固定值
     * </pre>
     *
     * <code>int64 reduceDmg = 14;</code>
     * @return The reduceDmg.
     */
    public long getReduceDmg() {
      return reduceDmg_;
    }

    public static final int REDUCEDMGRATE_FIELD_NUMBER = 15;
    private long reduceDmgRate_;
    /**
     * <pre>
     *伤害减免
     * </pre>
     *
     * <code>int64 reduceDmgRate = 15;</code>
     * @return The reduceDmgRate.
     */
    public long getReduceDmgRate() {
      return reduceDmgRate_;
    }

    public static final int CDSPDRATE_FIELD_NUMBER = 16;
    private long cdSpdRate_;
    /**
     * <pre>
     *冷却时间
     * </pre>
     *
     * <code>int64 cdSpdRate = 16;</code>
     * @return The cdSpdRate.
     */
    public long getCdSpdRate() {
      return cdSpdRate_;
    }

    public static final int MOVESPD_FIELD_NUMBER = 17;
    private long moveSpd_;
    /**
     * <pre>
     *移动速度
     * </pre>
     *
     * <code>int64 moveSpd = 17;</code>
     * @return The moveSpd.
     */
    public long getMoveSpd() {
      return moveSpd_;
    }

    public static final int MOVESPDRATE_FIELD_NUMBER = 18;
    private long moveSpdRate_;
    /**
     * <pre>
     *移动速度加成
     * </pre>
     *
     * <code>int64 moveSpdRate = 18;</code>
     * @return The moveSpdRate.
     */
    public long getMoveSpdRate() {
      return moveSpdRate_;
    }

    public static final int ATKSPD_FIELD_NUMBER = 19;
    private long atkSpd_;
    /**
     * <pre>
     *攻击速度
     * </pre>
     *
     * <code>int64 atkSpd = 19;</code>
     * @return The atkSpd.
     */
    public long getAtkSpd() {
      return atkSpd_;
    }

    public static final int ATKSPDRATE_FIELD_NUMBER = 20;
    private long atkSpdRate_;
    /**
     * <pre>
     *攻击速度加成
     * </pre>
     *
     * <code>int64 atkSpdRate = 20;</code>
     * @return The atkSpdRate.
     */
    public long getAtkSpdRate() {
      return atkSpdRate_;
    }

    public static final int DMGBL_FIELD_NUMBER = 21;
    private long dmgbl_;
    /**
     * <pre>
     *技能伤害加成
     * </pre>
     *
     * <code>int64 dmgbl = 21;</code>
     * @return The dmgbl.
     */
    public long getDmgbl() {
      return dmgbl_;
    }

    public static final int DMG_FIELD_NUMBER = 22;
    private long dmg_;
    /**
     * <pre>
     *增伤固定值
     * </pre>
     *
     * <code>int64 dmg = 22;</code>
     * @return The dmg.
     */
    public long getDmg() {
      return dmg_;
    }

    public static final int LLMAXRATE_FIELD_NUMBER = 23;
    private long llmaxRate_;
    /**
     * <pre>
     *人族生命加成
     * </pre>
     *
     * <code>int64 llmaxRate = 23;</code>
     * @return The llmaxRate.
     */
    public long getLlmaxRate() {
      return llmaxRate_;
    }

    public static final int LLDMGRATE_FIELD_NUMBER = 24;
    private long lldmgRate_;
    /**
     * <pre>
     *人族伤害加成
     * </pre>
     *
     * <code>int64 lldmgRate = 24;</code>
     * @return The lldmgRate.
     */
    public long getLldmgRate() {
      return lldmgRate_;
    }

    public static final int MJMAXRATE_FIELD_NUMBER = 25;
    private long mjmaxRate_;
    /**
     * <pre>
     *灵族生命加成
     * </pre>
     *
     * <code>int64 mjmaxRate = 25;</code>
     * @return The mjmaxRate.
     */
    public long getMjmaxRate() {
      return mjmaxRate_;
    }

    public static final int MJDMGRATE_FIELD_NUMBER = 26;
    private long mjdmgRate_;
    /**
     * <pre>
     *灵族伤害加成
     * </pre>
     *
     * <code>int64 mjdmgRate = 26;</code>
     * @return The mjdmgRate.
     */
    public long getMjdmgRate() {
      return mjdmgRate_;
    }

    public static final int ZLMAXRATE_FIELD_NUMBER = 27;
    private long zlmaxRate_;
    /**
     * <pre>
     *仙族生命加成
     * </pre>
     *
     * <code>int64 zlmaxRate = 27;</code>
     * @return The zlmaxRate.
     */
    public long getZlmaxRate() {
      return zlmaxRate_;
    }

    public static final int ZLDMGRATE_FIELD_NUMBER = 28;
    private long zldmgRate_;
    /**
     * <pre>
     *仙族伤害加成
     * </pre>
     *
     * <code>int64 zldmgRate = 28;</code>
     * @return The zldmgRate.
     */
    public long getZldmgRate() {
      return zldmgRate_;
    }

    public static final int WOODDMG_FIELD_NUMBER = 29;
    private long woodDmg_;
    /**
     * <pre>
     *伐木伤害
     * </pre>
     *
     * <code>int64 woodDmg = 29;</code>
     * @return The woodDmg.
     */
    public long getWoodDmg() {
      return woodDmg_;
    }

    public static final int MINEDMG_FIELD_NUMBER = 30;
    private long mineDmg_;
    /**
     * <pre>
     *挖矿伤害
     * </pre>
     *
     * <code>int64 mineDmg = 30;</code>
     * @return The mineDmg.
     */
    public long getMineDmg() {
      return mineDmg_;
    }

    public static final int LLMAX_FIELD_NUMBER = 31;
    private long llmax_;
    /**
     * <pre>
     *人族生命固定值
     * </pre>
     *
     * <code>int64 llmax = 31;</code>
     * @return The llmax.
     */
    public long getLlmax() {
      return llmax_;
    }

    public static final int LLDMG_FIELD_NUMBER = 32;
    private long lldmg_;
    /**
     * <pre>
     *人族攻击固定值
     * </pre>
     *
     * <code>int64 lldmg = 32;</code>
     * @return The lldmg.
     */
    public long getLldmg() {
      return lldmg_;
    }

    public static final int MJMAX_FIELD_NUMBER = 33;
    private long mjmax_;
    /**
     * <pre>
     *灵族生命固定值
     * </pre>
     *
     * <code>int64 mjmax = 33;</code>
     * @return The mjmax.
     */
    public long getMjmax() {
      return mjmax_;
    }

    public static final int MJDMG_FIELD_NUMBER = 34;
    private long mjdmg_;
    /**
     * <pre>
     *灵族攻击固定值
     * </pre>
     *
     * <code>int64 mjdmg = 34;</code>
     * @return The mjdmg.
     */
    public long getMjdmg() {
      return mjdmg_;
    }

    public static final int ZLMAX_FIELD_NUMBER = 35;
    private long zlmax_;
    /**
     * <pre>
     *仙族生命固定值
     * </pre>
     *
     * <code>int64 zlmax = 35;</code>
     * @return The zlmax.
     */
    public long getZlmax() {
      return zlmax_;
    }

    public static final int ZLDMG_FIELD_NUMBER = 36;
    private long zldmg_;
    /**
     * <pre>
     *仙族攻击固定值
     * </pre>
     *
     * <code>int64 zldmg = 36;</code>
     * @return The zldmg.
     */
    public long getZldmg() {
      return zldmg_;
    }

    public static final int BATTLERANGE_FIELD_NUMBER = 37;
    private long battleRange_;
    /**
     * <pre>
     *进战范围
     * </pre>
     *
     * <code>int64 battleRange = 37;</code>
     * @return The battleRange.
     */
    public long getBattleRange() {
      return battleRange_;
    }

    public static final int LLPVEDMG_FIELD_NUMBER = 38;
    private long llpvedmg_;
    /**
     * <pre>
     *人族伙伴对怪物伤害加成
     * </pre>
     *
     * <code>int64 llpvedmg = 38;</code>
     * @return The llpvedmg.
     */
    public long getLlpvedmg() {
      return llpvedmg_;
    }

    public static final int MJPVEDMG_FIELD_NUMBER = 39;
    private long mjpvedmg_;
    /**
     * <pre>
     *灵族伙伴对怪物伤害加成
     * </pre>
     *
     * <code>int64 mjpvedmg = 39;</code>
     * @return The mjpvedmg.
     */
    public long getMjpvedmg() {
      return mjpvedmg_;
    }

    public static final int ZLPVEDMG_FIELD_NUMBER = 40;
    private long zlpvedmg_;
    /**
     * <pre>
     *仙族伙伴对怪物伤害加成
     * </pre>
     *
     * <code>int64 zlpvedmg = 40;</code>
     * @return The zlpvedmg.
     */
    public long getZlpvedmg() {
      return zlpvedmg_;
    }

    public static final int PVEDMG_FIELD_NUMBER = 41;
    private long pvedmg_;
    /**
     * <pre>
     *对怪物伤害加成
     * </pre>
     *
     * <code>int64 pvedmg = 41;</code>
     * @return The pvedmg.
     */
    public long getPvedmg() {
      return pvedmg_;
    }

    public static final int FOVRANGE_FIELD_NUMBER = 42;
    private long fovRange_;
    /**
     * <pre>
     *视野范围
     * </pre>
     *
     * <code>int64 fovRange = 42;</code>
     * @return The fovRange.
     */
    public long getFovRange() {
      return fovRange_;
    }

    public static final int REDUCECRIT_FIELD_NUMBER = 43;
    private long reducecrit_;
    /**
     * <pre>
     *暴击抵抗
     * </pre>
     *
     * <code>int64 reducecrit = 43;</code>
     * @return The reducecrit.
     */
    public long getReducecrit() {
      return reducecrit_;
    }

    public static final int HPBRATE_FIELD_NUMBER = 44;
    private long hpBrate_;
    /**
     * <pre>
     *某养成系统内基础生命加成
     * </pre>
     *
     * <code>int64 hpBrate = 44;</code>
     * @return The hpBrate.
     */
    public long getHpBrate() {
      return hpBrate_;
    }

    public static final int ATKBRATE_FIELD_NUMBER = 45;
    private long atkBrate_;
    /**
     * <pre>
     *某养成系统内基础攻击加成
     * </pre>
     *
     * <code>int64 atkBrate = 45;</code>
     * @return The atkBrate.
     */
    public long getAtkBrate() {
      return atkBrate_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (hp_ != 0L) {
        output.writeInt64(1, hp_);
      }
      if (maxHp_ != 0L) {
        output.writeInt64(2, maxHp_);
      }
      if (atk_ != 0L) {
        output.writeInt64(3, atk_);
      }
      if (def_ != 0L) {
        output.writeInt64(4, def_);
      }
      if (hpRate_ != 0L) {
        output.writeInt64(5, hpRate_);
      }
      if (atkRate_ != 0L) {
        output.writeInt64(6, atkRate_);
      }
      if (defRate_ != 0L) {
        output.writeInt64(7, defRate_);
      }
      if (dmgRate_ != 0L) {
        output.writeInt64(8, dmgRate_);
      }
      if (hit_ != 0L) {
        output.writeInt64(9, hit_);
      }
      if (dodge_ != 0L) {
        output.writeInt64(10, dodge_);
      }
      if (crit_ != 0L) {
        output.writeInt64(11, crit_);
      }
      if (critDmgRate_ != 0L) {
        output.writeInt64(12, critDmgRate_);
      }
      if (vampireRate_ != 0L) {
        output.writeInt64(13, vampireRate_);
      }
      if (reduceDmg_ != 0L) {
        output.writeInt64(14, reduceDmg_);
      }
      if (reduceDmgRate_ != 0L) {
        output.writeInt64(15, reduceDmgRate_);
      }
      if (cdSpdRate_ != 0L) {
        output.writeInt64(16, cdSpdRate_);
      }
      if (moveSpd_ != 0L) {
        output.writeInt64(17, moveSpd_);
      }
      if (moveSpdRate_ != 0L) {
        output.writeInt64(18, moveSpdRate_);
      }
      if (atkSpd_ != 0L) {
        output.writeInt64(19, atkSpd_);
      }
      if (atkSpdRate_ != 0L) {
        output.writeInt64(20, atkSpdRate_);
      }
      if (dmgbl_ != 0L) {
        output.writeInt64(21, dmgbl_);
      }
      if (dmg_ != 0L) {
        output.writeInt64(22, dmg_);
      }
      if (llmaxRate_ != 0L) {
        output.writeInt64(23, llmaxRate_);
      }
      if (lldmgRate_ != 0L) {
        output.writeInt64(24, lldmgRate_);
      }
      if (mjmaxRate_ != 0L) {
        output.writeInt64(25, mjmaxRate_);
      }
      if (mjdmgRate_ != 0L) {
        output.writeInt64(26, mjdmgRate_);
      }
      if (zlmaxRate_ != 0L) {
        output.writeInt64(27, zlmaxRate_);
      }
      if (zldmgRate_ != 0L) {
        output.writeInt64(28, zldmgRate_);
      }
      if (woodDmg_ != 0L) {
        output.writeInt64(29, woodDmg_);
      }
      if (mineDmg_ != 0L) {
        output.writeInt64(30, mineDmg_);
      }
      if (llmax_ != 0L) {
        output.writeInt64(31, llmax_);
      }
      if (lldmg_ != 0L) {
        output.writeInt64(32, lldmg_);
      }
      if (mjmax_ != 0L) {
        output.writeInt64(33, mjmax_);
      }
      if (mjdmg_ != 0L) {
        output.writeInt64(34, mjdmg_);
      }
      if (zlmax_ != 0L) {
        output.writeInt64(35, zlmax_);
      }
      if (zldmg_ != 0L) {
        output.writeInt64(36, zldmg_);
      }
      if (battleRange_ != 0L) {
        output.writeInt64(37, battleRange_);
      }
      if (llpvedmg_ != 0L) {
        output.writeInt64(38, llpvedmg_);
      }
      if (mjpvedmg_ != 0L) {
        output.writeInt64(39, mjpvedmg_);
      }
      if (zlpvedmg_ != 0L) {
        output.writeInt64(40, zlpvedmg_);
      }
      if (pvedmg_ != 0L) {
        output.writeInt64(41, pvedmg_);
      }
      if (fovRange_ != 0L) {
        output.writeInt64(42, fovRange_);
      }
      if (reducecrit_ != 0L) {
        output.writeInt64(43, reducecrit_);
      }
      if (hpBrate_ != 0L) {
        output.writeInt64(44, hpBrate_);
      }
      if (atkBrate_ != 0L) {
        output.writeInt64(45, atkBrate_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (hp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, hp_);
      }
      if (maxHp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, maxHp_);
      }
      if (atk_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, atk_);
      }
      if (def_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, def_);
      }
      if (hpRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, hpRate_);
      }
      if (atkRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, atkRate_);
      }
      if (defRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, defRate_);
      }
      if (dmgRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, dmgRate_);
      }
      if (hit_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, hit_);
      }
      if (dodge_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(10, dodge_);
      }
      if (crit_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(11, crit_);
      }
      if (critDmgRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(12, critDmgRate_);
      }
      if (vampireRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(13, vampireRate_);
      }
      if (reduceDmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(14, reduceDmg_);
      }
      if (reduceDmgRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(15, reduceDmgRate_);
      }
      if (cdSpdRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(16, cdSpdRate_);
      }
      if (moveSpd_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(17, moveSpd_);
      }
      if (moveSpdRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(18, moveSpdRate_);
      }
      if (atkSpd_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(19, atkSpd_);
      }
      if (atkSpdRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(20, atkSpdRate_);
      }
      if (dmgbl_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(21, dmgbl_);
      }
      if (dmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(22, dmg_);
      }
      if (llmaxRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(23, llmaxRate_);
      }
      if (lldmgRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(24, lldmgRate_);
      }
      if (mjmaxRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(25, mjmaxRate_);
      }
      if (mjdmgRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(26, mjdmgRate_);
      }
      if (zlmaxRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(27, zlmaxRate_);
      }
      if (zldmgRate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(28, zldmgRate_);
      }
      if (woodDmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(29, woodDmg_);
      }
      if (mineDmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(30, mineDmg_);
      }
      if (llmax_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(31, llmax_);
      }
      if (lldmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(32, lldmg_);
      }
      if (mjmax_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(33, mjmax_);
      }
      if (mjdmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(34, mjdmg_);
      }
      if (zlmax_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(35, zlmax_);
      }
      if (zldmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(36, zldmg_);
      }
      if (battleRange_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(37, battleRange_);
      }
      if (llpvedmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(38, llpvedmg_);
      }
      if (mjpvedmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(39, mjpvedmg_);
      }
      if (zlpvedmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(40, zlpvedmg_);
      }
      if (pvedmg_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(41, pvedmg_);
      }
      if (fovRange_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(42, fovRange_);
      }
      if (reducecrit_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(43, reducecrit_);
      }
      if (hpBrate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(44, hpBrate_);
      }
      if (atkBrate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(45, atkBrate_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr other = (pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr) obj;

      if (getHp()
          != other.getHp()) return false;
      if (getMaxHp()
          != other.getMaxHp()) return false;
      if (getAtk()
          != other.getAtk()) return false;
      if (getDef()
          != other.getDef()) return false;
      if (getHpRate()
          != other.getHpRate()) return false;
      if (getAtkRate()
          != other.getAtkRate()) return false;
      if (getDefRate()
          != other.getDefRate()) return false;
      if (getDmgRate()
          != other.getDmgRate()) return false;
      if (getHit()
          != other.getHit()) return false;
      if (getDodge()
          != other.getDodge()) return false;
      if (getCrit()
          != other.getCrit()) return false;
      if (getCritDmgRate()
          != other.getCritDmgRate()) return false;
      if (getVampireRate()
          != other.getVampireRate()) return false;
      if (getReduceDmg()
          != other.getReduceDmg()) return false;
      if (getReduceDmgRate()
          != other.getReduceDmgRate()) return false;
      if (getCdSpdRate()
          != other.getCdSpdRate()) return false;
      if (getMoveSpd()
          != other.getMoveSpd()) return false;
      if (getMoveSpdRate()
          != other.getMoveSpdRate()) return false;
      if (getAtkSpd()
          != other.getAtkSpd()) return false;
      if (getAtkSpdRate()
          != other.getAtkSpdRate()) return false;
      if (getDmgbl()
          != other.getDmgbl()) return false;
      if (getDmg()
          != other.getDmg()) return false;
      if (getLlmaxRate()
          != other.getLlmaxRate()) return false;
      if (getLldmgRate()
          != other.getLldmgRate()) return false;
      if (getMjmaxRate()
          != other.getMjmaxRate()) return false;
      if (getMjdmgRate()
          != other.getMjdmgRate()) return false;
      if (getZlmaxRate()
          != other.getZlmaxRate()) return false;
      if (getZldmgRate()
          != other.getZldmgRate()) return false;
      if (getWoodDmg()
          != other.getWoodDmg()) return false;
      if (getMineDmg()
          != other.getMineDmg()) return false;
      if (getLlmax()
          != other.getLlmax()) return false;
      if (getLldmg()
          != other.getLldmg()) return false;
      if (getMjmax()
          != other.getMjmax()) return false;
      if (getMjdmg()
          != other.getMjdmg()) return false;
      if (getZlmax()
          != other.getZlmax()) return false;
      if (getZldmg()
          != other.getZldmg()) return false;
      if (getBattleRange()
          != other.getBattleRange()) return false;
      if (getLlpvedmg()
          != other.getLlpvedmg()) return false;
      if (getMjpvedmg()
          != other.getMjpvedmg()) return false;
      if (getZlpvedmg()
          != other.getZlpvedmg()) return false;
      if (getPvedmg()
          != other.getPvedmg()) return false;
      if (getFovRange()
          != other.getFovRange()) return false;
      if (getReducecrit()
          != other.getReducecrit()) return false;
      if (getHpBrate()
          != other.getHpBrate()) return false;
      if (getAtkBrate()
          != other.getAtkBrate()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + HP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHp());
      hash = (37 * hash) + MAXHP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMaxHp());
      hash = (37 * hash) + ATK_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAtk());
      hash = (37 * hash) + DEF_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDef());
      hash = (37 * hash) + HPRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHpRate());
      hash = (37 * hash) + ATKRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAtkRate());
      hash = (37 * hash) + DEFRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDefRate());
      hash = (37 * hash) + DMGRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDmgRate());
      hash = (37 * hash) + HIT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHit());
      hash = (37 * hash) + DODGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDodge());
      hash = (37 * hash) + CRIT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCrit());
      hash = (37 * hash) + CRITDMGRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCritDmgRate());
      hash = (37 * hash) + VAMPIRERATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getVampireRate());
      hash = (37 * hash) + REDUCEDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReduceDmg());
      hash = (37 * hash) + REDUCEDMGRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReduceDmgRate());
      hash = (37 * hash) + CDSPDRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCdSpdRate());
      hash = (37 * hash) + MOVESPD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMoveSpd());
      hash = (37 * hash) + MOVESPDRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMoveSpdRate());
      hash = (37 * hash) + ATKSPD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAtkSpd());
      hash = (37 * hash) + ATKSPDRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAtkSpdRate());
      hash = (37 * hash) + DMGBL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDmgbl());
      hash = (37 * hash) + DMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDmg());
      hash = (37 * hash) + LLMAXRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLlmaxRate());
      hash = (37 * hash) + LLDMGRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLldmgRate());
      hash = (37 * hash) + MJMAXRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMjmaxRate());
      hash = (37 * hash) + MJDMGRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMjdmgRate());
      hash = (37 * hash) + ZLMAXRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getZlmaxRate());
      hash = (37 * hash) + ZLDMGRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getZldmgRate());
      hash = (37 * hash) + WOODDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getWoodDmg());
      hash = (37 * hash) + MINEDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMineDmg());
      hash = (37 * hash) + LLMAX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLlmax());
      hash = (37 * hash) + LLDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLldmg());
      hash = (37 * hash) + MJMAX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMjmax());
      hash = (37 * hash) + MJDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMjdmg());
      hash = (37 * hash) + ZLMAX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getZlmax());
      hash = (37 * hash) + ZLDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getZldmg());
      hash = (37 * hash) + BATTLERANGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBattleRange());
      hash = (37 * hash) + LLPVEDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLlpvedmg());
      hash = (37 * hash) + MJPVEDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMjpvedmg());
      hash = (37 * hash) + ZLPVEDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getZlpvedmg());
      hash = (37 * hash) + PVEDMG_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPvedmg());
      hash = (37 * hash) + FOVRANGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFovRange());
      hash = (37 * hash) + REDUCECRIT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReducecrit());
      hash = (37 * hash) + HPBRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHpBrate());
      hash = (37 * hash) + ATKBRATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAtkBrate());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code pb.PbBattleAttr}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbBattleAttr)
        pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttrOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.battleattr.BattleAttr.internal_static_pb_PbBattleAttr_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.battleattr.BattleAttr.internal_static_pb_PbBattleAttr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.class, pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        hp_ = 0L;

        maxHp_ = 0L;

        atk_ = 0L;

        def_ = 0L;

        hpRate_ = 0L;

        atkRate_ = 0L;

        defRate_ = 0L;

        dmgRate_ = 0L;

        hit_ = 0L;

        dodge_ = 0L;

        crit_ = 0L;

        critDmgRate_ = 0L;

        vampireRate_ = 0L;

        reduceDmg_ = 0L;

        reduceDmgRate_ = 0L;

        cdSpdRate_ = 0L;

        moveSpd_ = 0L;

        moveSpdRate_ = 0L;

        atkSpd_ = 0L;

        atkSpdRate_ = 0L;

        dmgbl_ = 0L;

        dmg_ = 0L;

        llmaxRate_ = 0L;

        lldmgRate_ = 0L;

        mjmaxRate_ = 0L;

        mjdmgRate_ = 0L;

        zlmaxRate_ = 0L;

        zldmgRate_ = 0L;

        woodDmg_ = 0L;

        mineDmg_ = 0L;

        llmax_ = 0L;

        lldmg_ = 0L;

        mjmax_ = 0L;

        mjdmg_ = 0L;

        zlmax_ = 0L;

        zldmg_ = 0L;

        battleRange_ = 0L;

        llpvedmg_ = 0L;

        mjpvedmg_ = 0L;

        zlpvedmg_ = 0L;

        pvedmg_ = 0L;

        fovRange_ = 0L;

        reducecrit_ = 0L;

        hpBrate_ = 0L;

        atkBrate_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.battleattr.BattleAttr.internal_static_pb_PbBattleAttr_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr build() {
        pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr buildPartial() {
        pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr result = new pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr(this);
        result.hp_ = hp_;
        result.maxHp_ = maxHp_;
        result.atk_ = atk_;
        result.def_ = def_;
        result.hpRate_ = hpRate_;
        result.atkRate_ = atkRate_;
        result.defRate_ = defRate_;
        result.dmgRate_ = dmgRate_;
        result.hit_ = hit_;
        result.dodge_ = dodge_;
        result.crit_ = crit_;
        result.critDmgRate_ = critDmgRate_;
        result.vampireRate_ = vampireRate_;
        result.reduceDmg_ = reduceDmg_;
        result.reduceDmgRate_ = reduceDmgRate_;
        result.cdSpdRate_ = cdSpdRate_;
        result.moveSpd_ = moveSpd_;
        result.moveSpdRate_ = moveSpdRate_;
        result.atkSpd_ = atkSpd_;
        result.atkSpdRate_ = atkSpdRate_;
        result.dmgbl_ = dmgbl_;
        result.dmg_ = dmg_;
        result.llmaxRate_ = llmaxRate_;
        result.lldmgRate_ = lldmgRate_;
        result.mjmaxRate_ = mjmaxRate_;
        result.mjdmgRate_ = mjdmgRate_;
        result.zlmaxRate_ = zlmaxRate_;
        result.zldmgRate_ = zldmgRate_;
        result.woodDmg_ = woodDmg_;
        result.mineDmg_ = mineDmg_;
        result.llmax_ = llmax_;
        result.lldmg_ = lldmg_;
        result.mjmax_ = mjmax_;
        result.mjdmg_ = mjdmg_;
        result.zlmax_ = zlmax_;
        result.zldmg_ = zldmg_;
        result.battleRange_ = battleRange_;
        result.llpvedmg_ = llpvedmg_;
        result.mjpvedmg_ = mjpvedmg_;
        result.zlpvedmg_ = zlpvedmg_;
        result.pvedmg_ = pvedmg_;
        result.fovRange_ = fovRange_;
        result.reducecrit_ = reducecrit_;
        result.hpBrate_ = hpBrate_;
        result.atkBrate_ = atkBrate_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr) {
          return mergeFrom((pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr other) {
        if (other == pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr.getDefaultInstance()) return this;
        if (other.getHp() != 0L) {
          setHp(other.getHp());
        }
        if (other.getMaxHp() != 0L) {
          setMaxHp(other.getMaxHp());
        }
        if (other.getAtk() != 0L) {
          setAtk(other.getAtk());
        }
        if (other.getDef() != 0L) {
          setDef(other.getDef());
        }
        if (other.getHpRate() != 0L) {
          setHpRate(other.getHpRate());
        }
        if (other.getAtkRate() != 0L) {
          setAtkRate(other.getAtkRate());
        }
        if (other.getDefRate() != 0L) {
          setDefRate(other.getDefRate());
        }
        if (other.getDmgRate() != 0L) {
          setDmgRate(other.getDmgRate());
        }
        if (other.getHit() != 0L) {
          setHit(other.getHit());
        }
        if (other.getDodge() != 0L) {
          setDodge(other.getDodge());
        }
        if (other.getCrit() != 0L) {
          setCrit(other.getCrit());
        }
        if (other.getCritDmgRate() != 0L) {
          setCritDmgRate(other.getCritDmgRate());
        }
        if (other.getVampireRate() != 0L) {
          setVampireRate(other.getVampireRate());
        }
        if (other.getReduceDmg() != 0L) {
          setReduceDmg(other.getReduceDmg());
        }
        if (other.getReduceDmgRate() != 0L) {
          setReduceDmgRate(other.getReduceDmgRate());
        }
        if (other.getCdSpdRate() != 0L) {
          setCdSpdRate(other.getCdSpdRate());
        }
        if (other.getMoveSpd() != 0L) {
          setMoveSpd(other.getMoveSpd());
        }
        if (other.getMoveSpdRate() != 0L) {
          setMoveSpdRate(other.getMoveSpdRate());
        }
        if (other.getAtkSpd() != 0L) {
          setAtkSpd(other.getAtkSpd());
        }
        if (other.getAtkSpdRate() != 0L) {
          setAtkSpdRate(other.getAtkSpdRate());
        }
        if (other.getDmgbl() != 0L) {
          setDmgbl(other.getDmgbl());
        }
        if (other.getDmg() != 0L) {
          setDmg(other.getDmg());
        }
        if (other.getLlmaxRate() != 0L) {
          setLlmaxRate(other.getLlmaxRate());
        }
        if (other.getLldmgRate() != 0L) {
          setLldmgRate(other.getLldmgRate());
        }
        if (other.getMjmaxRate() != 0L) {
          setMjmaxRate(other.getMjmaxRate());
        }
        if (other.getMjdmgRate() != 0L) {
          setMjdmgRate(other.getMjdmgRate());
        }
        if (other.getZlmaxRate() != 0L) {
          setZlmaxRate(other.getZlmaxRate());
        }
        if (other.getZldmgRate() != 0L) {
          setZldmgRate(other.getZldmgRate());
        }
        if (other.getWoodDmg() != 0L) {
          setWoodDmg(other.getWoodDmg());
        }
        if (other.getMineDmg() != 0L) {
          setMineDmg(other.getMineDmg());
        }
        if (other.getLlmax() != 0L) {
          setLlmax(other.getLlmax());
        }
        if (other.getLldmg() != 0L) {
          setLldmg(other.getLldmg());
        }
        if (other.getMjmax() != 0L) {
          setMjmax(other.getMjmax());
        }
        if (other.getMjdmg() != 0L) {
          setMjdmg(other.getMjdmg());
        }
        if (other.getZlmax() != 0L) {
          setZlmax(other.getZlmax());
        }
        if (other.getZldmg() != 0L) {
          setZldmg(other.getZldmg());
        }
        if (other.getBattleRange() != 0L) {
          setBattleRange(other.getBattleRange());
        }
        if (other.getLlpvedmg() != 0L) {
          setLlpvedmg(other.getLlpvedmg());
        }
        if (other.getMjpvedmg() != 0L) {
          setMjpvedmg(other.getMjpvedmg());
        }
        if (other.getZlpvedmg() != 0L) {
          setZlpvedmg(other.getZlpvedmg());
        }
        if (other.getPvedmg() != 0L) {
          setPvedmg(other.getPvedmg());
        }
        if (other.getFovRange() != 0L) {
          setFovRange(other.getFovRange());
        }
        if (other.getReducecrit() != 0L) {
          setReducecrit(other.getReducecrit());
        }
        if (other.getHpBrate() != 0L) {
          setHpBrate(other.getHpBrate());
        }
        if (other.getAtkBrate() != 0L) {
          setAtkBrate(other.getAtkBrate());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long hp_ ;
      /**
       * <pre>
       *当前血量
       * </pre>
       *
       * <code>int64 hp = 1;</code>
       * @return The hp.
       */
      public long getHp() {
        return hp_;
      }
      /**
       * <pre>
       *当前血量
       * </pre>
       *
       * <code>int64 hp = 1;</code>
       * @param value The hp to set.
       * @return This builder for chaining.
       */
      public Builder setHp(long value) {
        
        hp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *当前血量
       * </pre>
       *
       * <code>int64 hp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHp() {
        
        hp_ = 0L;
        onChanged();
        return this;
      }

      private long maxHp_ ;
      /**
       * <pre>
       *生命
       * </pre>
       *
       * <code>int64 maxHp = 2;</code>
       * @return The maxHp.
       */
      public long getMaxHp() {
        return maxHp_;
      }
      /**
       * <pre>
       *生命
       * </pre>
       *
       * <code>int64 maxHp = 2;</code>
       * @param value The maxHp to set.
       * @return This builder for chaining.
       */
      public Builder setMaxHp(long value) {
        
        maxHp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *生命
       * </pre>
       *
       * <code>int64 maxHp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxHp() {
        
        maxHp_ = 0L;
        onChanged();
        return this;
      }

      private long atk_ ;
      /**
       * <pre>
       *攻击
       * </pre>
       *
       * <code>int64 atk = 3;</code>
       * @return The atk.
       */
      public long getAtk() {
        return atk_;
      }
      /**
       * <pre>
       *攻击
       * </pre>
       *
       * <code>int64 atk = 3;</code>
       * @param value The atk to set.
       * @return This builder for chaining.
       */
      public Builder setAtk(long value) {
        
        atk_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *攻击
       * </pre>
       *
       * <code>int64 atk = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAtk() {
        
        atk_ = 0L;
        onChanged();
        return this;
      }

      private long def_ ;
      /**
       * <pre>
       *防御
       * </pre>
       *
       * <code>int64 def = 4;</code>
       * @return The def.
       */
      public long getDef() {
        return def_;
      }
      /**
       * <pre>
       *防御
       * </pre>
       *
       * <code>int64 def = 4;</code>
       * @param value The def to set.
       * @return This builder for chaining.
       */
      public Builder setDef(long value) {
        
        def_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *防御
       * </pre>
       *
       * <code>int64 def = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDef() {
        
        def_ = 0L;
        onChanged();
        return this;
      }

      private long hpRate_ ;
      /**
       * <pre>
       *血量加成
       * </pre>
       *
       * <code>int64 hpRate = 5;</code>
       * @return The hpRate.
       */
      public long getHpRate() {
        return hpRate_;
      }
      /**
       * <pre>
       *血量加成
       * </pre>
       *
       * <code>int64 hpRate = 5;</code>
       * @param value The hpRate to set.
       * @return This builder for chaining.
       */
      public Builder setHpRate(long value) {
        
        hpRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *血量加成
       * </pre>
       *
       * <code>int64 hpRate = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearHpRate() {
        
        hpRate_ = 0L;
        onChanged();
        return this;
      }

      private long atkRate_ ;
      /**
       * <pre>
       *攻击加成
       * </pre>
       *
       * <code>int64 atkRate = 6;</code>
       * @return The atkRate.
       */
      public long getAtkRate() {
        return atkRate_;
      }
      /**
       * <pre>
       *攻击加成
       * </pre>
       *
       * <code>int64 atkRate = 6;</code>
       * @param value The atkRate to set.
       * @return This builder for chaining.
       */
      public Builder setAtkRate(long value) {
        
        atkRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *攻击加成
       * </pre>
       *
       * <code>int64 atkRate = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAtkRate() {
        
        atkRate_ = 0L;
        onChanged();
        return this;
      }

      private long defRate_ ;
      /**
       * <pre>
       *防御加成
       * </pre>
       *
       * <code>int64 defRate = 7;</code>
       * @return The defRate.
       */
      public long getDefRate() {
        return defRate_;
      }
      /**
       * <pre>
       *防御加成
       * </pre>
       *
       * <code>int64 defRate = 7;</code>
       * @param value The defRate to set.
       * @return This builder for chaining.
       */
      public Builder setDefRate(long value) {
        
        defRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *防御加成
       * </pre>
       *
       * <code>int64 defRate = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefRate() {
        
        defRate_ = 0L;
        onChanged();
        return this;
      }

      private long dmgRate_ ;
      /**
       * <pre>
       *伤害加成
       * </pre>
       *
       * <code>int64 dmgRate = 8;</code>
       * @return The dmgRate.
       */
      public long getDmgRate() {
        return dmgRate_;
      }
      /**
       * <pre>
       *伤害加成
       * </pre>
       *
       * <code>int64 dmgRate = 8;</code>
       * @param value The dmgRate to set.
       * @return This builder for chaining.
       */
      public Builder setDmgRate(long value) {
        
        dmgRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *伤害加成
       * </pre>
       *
       * <code>int64 dmgRate = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDmgRate() {
        
        dmgRate_ = 0L;
        onChanged();
        return this;
      }

      private long hit_ ;
      /**
       * <pre>
       *命中
       * </pre>
       *
       * <code>int64 hit = 9;</code>
       * @return The hit.
       */
      public long getHit() {
        return hit_;
      }
      /**
       * <pre>
       *命中
       * </pre>
       *
       * <code>int64 hit = 9;</code>
       * @param value The hit to set.
       * @return This builder for chaining.
       */
      public Builder setHit(long value) {
        
        hit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *命中
       * </pre>
       *
       * <code>int64 hit = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearHit() {
        
        hit_ = 0L;
        onChanged();
        return this;
      }

      private long dodge_ ;
      /**
       * <pre>
       *闪避
       * </pre>
       *
       * <code>int64 dodge = 10;</code>
       * @return The dodge.
       */
      public long getDodge() {
        return dodge_;
      }
      /**
       * <pre>
       *闪避
       * </pre>
       *
       * <code>int64 dodge = 10;</code>
       * @param value The dodge to set.
       * @return This builder for chaining.
       */
      public Builder setDodge(long value) {
        
        dodge_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *闪避
       * </pre>
       *
       * <code>int64 dodge = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearDodge() {
        
        dodge_ = 0L;
        onChanged();
        return this;
      }

      private long crit_ ;
      /**
       * <pre>
       *暴击
       * </pre>
       *
       * <code>int64 crit = 11;</code>
       * @return The crit.
       */
      public long getCrit() {
        return crit_;
      }
      /**
       * <pre>
       *暴击
       * </pre>
       *
       * <code>int64 crit = 11;</code>
       * @param value The crit to set.
       * @return This builder for chaining.
       */
      public Builder setCrit(long value) {
        
        crit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *暴击
       * </pre>
       *
       * <code>int64 crit = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearCrit() {
        
        crit_ = 0L;
        onChanged();
        return this;
      }

      private long critDmgRate_ ;
      /**
       * <pre>
       *暴击伤害
       * </pre>
       *
       * <code>int64 critDmgRate = 12;</code>
       * @return The critDmgRate.
       */
      public long getCritDmgRate() {
        return critDmgRate_;
      }
      /**
       * <pre>
       *暴击伤害
       * </pre>
       *
       * <code>int64 critDmgRate = 12;</code>
       * @param value The critDmgRate to set.
       * @return This builder for chaining.
       */
      public Builder setCritDmgRate(long value) {
        
        critDmgRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *暴击伤害
       * </pre>
       *
       * <code>int64 critDmgRate = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearCritDmgRate() {
        
        critDmgRate_ = 0L;
        onChanged();
        return this;
      }

      private long vampireRate_ ;
      /**
       * <pre>
       *吸血
       * </pre>
       *
       * <code>int64 vampireRate = 13;</code>
       * @return The vampireRate.
       */
      public long getVampireRate() {
        return vampireRate_;
      }
      /**
       * <pre>
       *吸血
       * </pre>
       *
       * <code>int64 vampireRate = 13;</code>
       * @param value The vampireRate to set.
       * @return This builder for chaining.
       */
      public Builder setVampireRate(long value) {
        
        vampireRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *吸血
       * </pre>
       *
       * <code>int64 vampireRate = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearVampireRate() {
        
        vampireRate_ = 0L;
        onChanged();
        return this;
      }

      private long reduceDmg_ ;
      /**
       * <pre>
       *减伤固定值
       * </pre>
       *
       * <code>int64 reduceDmg = 14;</code>
       * @return The reduceDmg.
       */
      public long getReduceDmg() {
        return reduceDmg_;
      }
      /**
       * <pre>
       *减伤固定值
       * </pre>
       *
       * <code>int64 reduceDmg = 14;</code>
       * @param value The reduceDmg to set.
       * @return This builder for chaining.
       */
      public Builder setReduceDmg(long value) {
        
        reduceDmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *减伤固定值
       * </pre>
       *
       * <code>int64 reduceDmg = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearReduceDmg() {
        
        reduceDmg_ = 0L;
        onChanged();
        return this;
      }

      private long reduceDmgRate_ ;
      /**
       * <pre>
       *伤害减免
       * </pre>
       *
       * <code>int64 reduceDmgRate = 15;</code>
       * @return The reduceDmgRate.
       */
      public long getReduceDmgRate() {
        return reduceDmgRate_;
      }
      /**
       * <pre>
       *伤害减免
       * </pre>
       *
       * <code>int64 reduceDmgRate = 15;</code>
       * @param value The reduceDmgRate to set.
       * @return This builder for chaining.
       */
      public Builder setReduceDmgRate(long value) {
        
        reduceDmgRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *伤害减免
       * </pre>
       *
       * <code>int64 reduceDmgRate = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearReduceDmgRate() {
        
        reduceDmgRate_ = 0L;
        onChanged();
        return this;
      }

      private long cdSpdRate_ ;
      /**
       * <pre>
       *冷却时间
       * </pre>
       *
       * <code>int64 cdSpdRate = 16;</code>
       * @return The cdSpdRate.
       */
      public long getCdSpdRate() {
        return cdSpdRate_;
      }
      /**
       * <pre>
       *冷却时间
       * </pre>
       *
       * <code>int64 cdSpdRate = 16;</code>
       * @param value The cdSpdRate to set.
       * @return This builder for chaining.
       */
      public Builder setCdSpdRate(long value) {
        
        cdSpdRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *冷却时间
       * </pre>
       *
       * <code>int64 cdSpdRate = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdSpdRate() {
        
        cdSpdRate_ = 0L;
        onChanged();
        return this;
      }

      private long moveSpd_ ;
      /**
       * <pre>
       *移动速度
       * </pre>
       *
       * <code>int64 moveSpd = 17;</code>
       * @return The moveSpd.
       */
      public long getMoveSpd() {
        return moveSpd_;
      }
      /**
       * <pre>
       *移动速度
       * </pre>
       *
       * <code>int64 moveSpd = 17;</code>
       * @param value The moveSpd to set.
       * @return This builder for chaining.
       */
      public Builder setMoveSpd(long value) {
        
        moveSpd_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *移动速度
       * </pre>
       *
       * <code>int64 moveSpd = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearMoveSpd() {
        
        moveSpd_ = 0L;
        onChanged();
        return this;
      }

      private long moveSpdRate_ ;
      /**
       * <pre>
       *移动速度加成
       * </pre>
       *
       * <code>int64 moveSpdRate = 18;</code>
       * @return The moveSpdRate.
       */
      public long getMoveSpdRate() {
        return moveSpdRate_;
      }
      /**
       * <pre>
       *移动速度加成
       * </pre>
       *
       * <code>int64 moveSpdRate = 18;</code>
       * @param value The moveSpdRate to set.
       * @return This builder for chaining.
       */
      public Builder setMoveSpdRate(long value) {
        
        moveSpdRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *移动速度加成
       * </pre>
       *
       * <code>int64 moveSpdRate = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearMoveSpdRate() {
        
        moveSpdRate_ = 0L;
        onChanged();
        return this;
      }

      private long atkSpd_ ;
      /**
       * <pre>
       *攻击速度
       * </pre>
       *
       * <code>int64 atkSpd = 19;</code>
       * @return The atkSpd.
       */
      public long getAtkSpd() {
        return atkSpd_;
      }
      /**
       * <pre>
       *攻击速度
       * </pre>
       *
       * <code>int64 atkSpd = 19;</code>
       * @param value The atkSpd to set.
       * @return This builder for chaining.
       */
      public Builder setAtkSpd(long value) {
        
        atkSpd_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *攻击速度
       * </pre>
       *
       * <code>int64 atkSpd = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearAtkSpd() {
        
        atkSpd_ = 0L;
        onChanged();
        return this;
      }

      private long atkSpdRate_ ;
      /**
       * <pre>
       *攻击速度加成
       * </pre>
       *
       * <code>int64 atkSpdRate = 20;</code>
       * @return The atkSpdRate.
       */
      public long getAtkSpdRate() {
        return atkSpdRate_;
      }
      /**
       * <pre>
       *攻击速度加成
       * </pre>
       *
       * <code>int64 atkSpdRate = 20;</code>
       * @param value The atkSpdRate to set.
       * @return This builder for chaining.
       */
      public Builder setAtkSpdRate(long value) {
        
        atkSpdRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *攻击速度加成
       * </pre>
       *
       * <code>int64 atkSpdRate = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearAtkSpdRate() {
        
        atkSpdRate_ = 0L;
        onChanged();
        return this;
      }

      private long dmgbl_ ;
      /**
       * <pre>
       *技能伤害加成
       * </pre>
       *
       * <code>int64 dmgbl = 21;</code>
       * @return The dmgbl.
       */
      public long getDmgbl() {
        return dmgbl_;
      }
      /**
       * <pre>
       *技能伤害加成
       * </pre>
       *
       * <code>int64 dmgbl = 21;</code>
       * @param value The dmgbl to set.
       * @return This builder for chaining.
       */
      public Builder setDmgbl(long value) {
        
        dmgbl_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *技能伤害加成
       * </pre>
       *
       * <code>int64 dmgbl = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearDmgbl() {
        
        dmgbl_ = 0L;
        onChanged();
        return this;
      }

      private long dmg_ ;
      /**
       * <pre>
       *增伤固定值
       * </pre>
       *
       * <code>int64 dmg = 22;</code>
       * @return The dmg.
       */
      public long getDmg() {
        return dmg_;
      }
      /**
       * <pre>
       *增伤固定值
       * </pre>
       *
       * <code>int64 dmg = 22;</code>
       * @param value The dmg to set.
       * @return This builder for chaining.
       */
      public Builder setDmg(long value) {
        
        dmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *增伤固定值
       * </pre>
       *
       * <code>int64 dmg = 22;</code>
       * @return This builder for chaining.
       */
      public Builder clearDmg() {
        
        dmg_ = 0L;
        onChanged();
        return this;
      }

      private long llmaxRate_ ;
      /**
       * <pre>
       *人族生命加成
       * </pre>
       *
       * <code>int64 llmaxRate = 23;</code>
       * @return The llmaxRate.
       */
      public long getLlmaxRate() {
        return llmaxRate_;
      }
      /**
       * <pre>
       *人族生命加成
       * </pre>
       *
       * <code>int64 llmaxRate = 23;</code>
       * @param value The llmaxRate to set.
       * @return This builder for chaining.
       */
      public Builder setLlmaxRate(long value) {
        
        llmaxRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *人族生命加成
       * </pre>
       *
       * <code>int64 llmaxRate = 23;</code>
       * @return This builder for chaining.
       */
      public Builder clearLlmaxRate() {
        
        llmaxRate_ = 0L;
        onChanged();
        return this;
      }

      private long lldmgRate_ ;
      /**
       * <pre>
       *人族伤害加成
       * </pre>
       *
       * <code>int64 lldmgRate = 24;</code>
       * @return The lldmgRate.
       */
      public long getLldmgRate() {
        return lldmgRate_;
      }
      /**
       * <pre>
       *人族伤害加成
       * </pre>
       *
       * <code>int64 lldmgRate = 24;</code>
       * @param value The lldmgRate to set.
       * @return This builder for chaining.
       */
      public Builder setLldmgRate(long value) {
        
        lldmgRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *人族伤害加成
       * </pre>
       *
       * <code>int64 lldmgRate = 24;</code>
       * @return This builder for chaining.
       */
      public Builder clearLldmgRate() {
        
        lldmgRate_ = 0L;
        onChanged();
        return this;
      }

      private long mjmaxRate_ ;
      /**
       * <pre>
       *灵族生命加成
       * </pre>
       *
       * <code>int64 mjmaxRate = 25;</code>
       * @return The mjmaxRate.
       */
      public long getMjmaxRate() {
        return mjmaxRate_;
      }
      /**
       * <pre>
       *灵族生命加成
       * </pre>
       *
       * <code>int64 mjmaxRate = 25;</code>
       * @param value The mjmaxRate to set.
       * @return This builder for chaining.
       */
      public Builder setMjmaxRate(long value) {
        
        mjmaxRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *灵族生命加成
       * </pre>
       *
       * <code>int64 mjmaxRate = 25;</code>
       * @return This builder for chaining.
       */
      public Builder clearMjmaxRate() {
        
        mjmaxRate_ = 0L;
        onChanged();
        return this;
      }

      private long mjdmgRate_ ;
      /**
       * <pre>
       *灵族伤害加成
       * </pre>
       *
       * <code>int64 mjdmgRate = 26;</code>
       * @return The mjdmgRate.
       */
      public long getMjdmgRate() {
        return mjdmgRate_;
      }
      /**
       * <pre>
       *灵族伤害加成
       * </pre>
       *
       * <code>int64 mjdmgRate = 26;</code>
       * @param value The mjdmgRate to set.
       * @return This builder for chaining.
       */
      public Builder setMjdmgRate(long value) {
        
        mjdmgRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *灵族伤害加成
       * </pre>
       *
       * <code>int64 mjdmgRate = 26;</code>
       * @return This builder for chaining.
       */
      public Builder clearMjdmgRate() {
        
        mjdmgRate_ = 0L;
        onChanged();
        return this;
      }

      private long zlmaxRate_ ;
      /**
       * <pre>
       *仙族生命加成
       * </pre>
       *
       * <code>int64 zlmaxRate = 27;</code>
       * @return The zlmaxRate.
       */
      public long getZlmaxRate() {
        return zlmaxRate_;
      }
      /**
       * <pre>
       *仙族生命加成
       * </pre>
       *
       * <code>int64 zlmaxRate = 27;</code>
       * @param value The zlmaxRate to set.
       * @return This builder for chaining.
       */
      public Builder setZlmaxRate(long value) {
        
        zlmaxRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *仙族生命加成
       * </pre>
       *
       * <code>int64 zlmaxRate = 27;</code>
       * @return This builder for chaining.
       */
      public Builder clearZlmaxRate() {
        
        zlmaxRate_ = 0L;
        onChanged();
        return this;
      }

      private long zldmgRate_ ;
      /**
       * <pre>
       *仙族伤害加成
       * </pre>
       *
       * <code>int64 zldmgRate = 28;</code>
       * @return The zldmgRate.
       */
      public long getZldmgRate() {
        return zldmgRate_;
      }
      /**
       * <pre>
       *仙族伤害加成
       * </pre>
       *
       * <code>int64 zldmgRate = 28;</code>
       * @param value The zldmgRate to set.
       * @return This builder for chaining.
       */
      public Builder setZldmgRate(long value) {
        
        zldmgRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *仙族伤害加成
       * </pre>
       *
       * <code>int64 zldmgRate = 28;</code>
       * @return This builder for chaining.
       */
      public Builder clearZldmgRate() {
        
        zldmgRate_ = 0L;
        onChanged();
        return this;
      }

      private long woodDmg_ ;
      /**
       * <pre>
       *伐木伤害
       * </pre>
       *
       * <code>int64 woodDmg = 29;</code>
       * @return The woodDmg.
       */
      public long getWoodDmg() {
        return woodDmg_;
      }
      /**
       * <pre>
       *伐木伤害
       * </pre>
       *
       * <code>int64 woodDmg = 29;</code>
       * @param value The woodDmg to set.
       * @return This builder for chaining.
       */
      public Builder setWoodDmg(long value) {
        
        woodDmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *伐木伤害
       * </pre>
       *
       * <code>int64 woodDmg = 29;</code>
       * @return This builder for chaining.
       */
      public Builder clearWoodDmg() {
        
        woodDmg_ = 0L;
        onChanged();
        return this;
      }

      private long mineDmg_ ;
      /**
       * <pre>
       *挖矿伤害
       * </pre>
       *
       * <code>int64 mineDmg = 30;</code>
       * @return The mineDmg.
       */
      public long getMineDmg() {
        return mineDmg_;
      }
      /**
       * <pre>
       *挖矿伤害
       * </pre>
       *
       * <code>int64 mineDmg = 30;</code>
       * @param value The mineDmg to set.
       * @return This builder for chaining.
       */
      public Builder setMineDmg(long value) {
        
        mineDmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *挖矿伤害
       * </pre>
       *
       * <code>int64 mineDmg = 30;</code>
       * @return This builder for chaining.
       */
      public Builder clearMineDmg() {
        
        mineDmg_ = 0L;
        onChanged();
        return this;
      }

      private long llmax_ ;
      /**
       * <pre>
       *人族生命固定值
       * </pre>
       *
       * <code>int64 llmax = 31;</code>
       * @return The llmax.
       */
      public long getLlmax() {
        return llmax_;
      }
      /**
       * <pre>
       *人族生命固定值
       * </pre>
       *
       * <code>int64 llmax = 31;</code>
       * @param value The llmax to set.
       * @return This builder for chaining.
       */
      public Builder setLlmax(long value) {
        
        llmax_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *人族生命固定值
       * </pre>
       *
       * <code>int64 llmax = 31;</code>
       * @return This builder for chaining.
       */
      public Builder clearLlmax() {
        
        llmax_ = 0L;
        onChanged();
        return this;
      }

      private long lldmg_ ;
      /**
       * <pre>
       *人族攻击固定值
       * </pre>
       *
       * <code>int64 lldmg = 32;</code>
       * @return The lldmg.
       */
      public long getLldmg() {
        return lldmg_;
      }
      /**
       * <pre>
       *人族攻击固定值
       * </pre>
       *
       * <code>int64 lldmg = 32;</code>
       * @param value The lldmg to set.
       * @return This builder for chaining.
       */
      public Builder setLldmg(long value) {
        
        lldmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *人族攻击固定值
       * </pre>
       *
       * <code>int64 lldmg = 32;</code>
       * @return This builder for chaining.
       */
      public Builder clearLldmg() {
        
        lldmg_ = 0L;
        onChanged();
        return this;
      }

      private long mjmax_ ;
      /**
       * <pre>
       *灵族生命固定值
       * </pre>
       *
       * <code>int64 mjmax = 33;</code>
       * @return The mjmax.
       */
      public long getMjmax() {
        return mjmax_;
      }
      /**
       * <pre>
       *灵族生命固定值
       * </pre>
       *
       * <code>int64 mjmax = 33;</code>
       * @param value The mjmax to set.
       * @return This builder for chaining.
       */
      public Builder setMjmax(long value) {
        
        mjmax_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *灵族生命固定值
       * </pre>
       *
       * <code>int64 mjmax = 33;</code>
       * @return This builder for chaining.
       */
      public Builder clearMjmax() {
        
        mjmax_ = 0L;
        onChanged();
        return this;
      }

      private long mjdmg_ ;
      /**
       * <pre>
       *灵族攻击固定值
       * </pre>
       *
       * <code>int64 mjdmg = 34;</code>
       * @return The mjdmg.
       */
      public long getMjdmg() {
        return mjdmg_;
      }
      /**
       * <pre>
       *灵族攻击固定值
       * </pre>
       *
       * <code>int64 mjdmg = 34;</code>
       * @param value The mjdmg to set.
       * @return This builder for chaining.
       */
      public Builder setMjdmg(long value) {
        
        mjdmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *灵族攻击固定值
       * </pre>
       *
       * <code>int64 mjdmg = 34;</code>
       * @return This builder for chaining.
       */
      public Builder clearMjdmg() {
        
        mjdmg_ = 0L;
        onChanged();
        return this;
      }

      private long zlmax_ ;
      /**
       * <pre>
       *仙族生命固定值
       * </pre>
       *
       * <code>int64 zlmax = 35;</code>
       * @return The zlmax.
       */
      public long getZlmax() {
        return zlmax_;
      }
      /**
       * <pre>
       *仙族生命固定值
       * </pre>
       *
       * <code>int64 zlmax = 35;</code>
       * @param value The zlmax to set.
       * @return This builder for chaining.
       */
      public Builder setZlmax(long value) {
        
        zlmax_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *仙族生命固定值
       * </pre>
       *
       * <code>int64 zlmax = 35;</code>
       * @return This builder for chaining.
       */
      public Builder clearZlmax() {
        
        zlmax_ = 0L;
        onChanged();
        return this;
      }

      private long zldmg_ ;
      /**
       * <pre>
       *仙族攻击固定值
       * </pre>
       *
       * <code>int64 zldmg = 36;</code>
       * @return The zldmg.
       */
      public long getZldmg() {
        return zldmg_;
      }
      /**
       * <pre>
       *仙族攻击固定值
       * </pre>
       *
       * <code>int64 zldmg = 36;</code>
       * @param value The zldmg to set.
       * @return This builder for chaining.
       */
      public Builder setZldmg(long value) {
        
        zldmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *仙族攻击固定值
       * </pre>
       *
       * <code>int64 zldmg = 36;</code>
       * @return This builder for chaining.
       */
      public Builder clearZldmg() {
        
        zldmg_ = 0L;
        onChanged();
        return this;
      }

      private long battleRange_ ;
      /**
       * <pre>
       *进战范围
       * </pre>
       *
       * <code>int64 battleRange = 37;</code>
       * @return The battleRange.
       */
      public long getBattleRange() {
        return battleRange_;
      }
      /**
       * <pre>
       *进战范围
       * </pre>
       *
       * <code>int64 battleRange = 37;</code>
       * @param value The battleRange to set.
       * @return This builder for chaining.
       */
      public Builder setBattleRange(long value) {
        
        battleRange_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *进战范围
       * </pre>
       *
       * <code>int64 battleRange = 37;</code>
       * @return This builder for chaining.
       */
      public Builder clearBattleRange() {
        
        battleRange_ = 0L;
        onChanged();
        return this;
      }

      private long llpvedmg_ ;
      /**
       * <pre>
       *人族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 llpvedmg = 38;</code>
       * @return The llpvedmg.
       */
      public long getLlpvedmg() {
        return llpvedmg_;
      }
      /**
       * <pre>
       *人族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 llpvedmg = 38;</code>
       * @param value The llpvedmg to set.
       * @return This builder for chaining.
       */
      public Builder setLlpvedmg(long value) {
        
        llpvedmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *人族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 llpvedmg = 38;</code>
       * @return This builder for chaining.
       */
      public Builder clearLlpvedmg() {
        
        llpvedmg_ = 0L;
        onChanged();
        return this;
      }

      private long mjpvedmg_ ;
      /**
       * <pre>
       *灵族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 mjpvedmg = 39;</code>
       * @return The mjpvedmg.
       */
      public long getMjpvedmg() {
        return mjpvedmg_;
      }
      /**
       * <pre>
       *灵族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 mjpvedmg = 39;</code>
       * @param value The mjpvedmg to set.
       * @return This builder for chaining.
       */
      public Builder setMjpvedmg(long value) {
        
        mjpvedmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *灵族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 mjpvedmg = 39;</code>
       * @return This builder for chaining.
       */
      public Builder clearMjpvedmg() {
        
        mjpvedmg_ = 0L;
        onChanged();
        return this;
      }

      private long zlpvedmg_ ;
      /**
       * <pre>
       *仙族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 zlpvedmg = 40;</code>
       * @return The zlpvedmg.
       */
      public long getZlpvedmg() {
        return zlpvedmg_;
      }
      /**
       * <pre>
       *仙族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 zlpvedmg = 40;</code>
       * @param value The zlpvedmg to set.
       * @return This builder for chaining.
       */
      public Builder setZlpvedmg(long value) {
        
        zlpvedmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *仙族伙伴对怪物伤害加成
       * </pre>
       *
       * <code>int64 zlpvedmg = 40;</code>
       * @return This builder for chaining.
       */
      public Builder clearZlpvedmg() {
        
        zlpvedmg_ = 0L;
        onChanged();
        return this;
      }

      private long pvedmg_ ;
      /**
       * <pre>
       *对怪物伤害加成
       * </pre>
       *
       * <code>int64 pvedmg = 41;</code>
       * @return The pvedmg.
       */
      public long getPvedmg() {
        return pvedmg_;
      }
      /**
       * <pre>
       *对怪物伤害加成
       * </pre>
       *
       * <code>int64 pvedmg = 41;</code>
       * @param value The pvedmg to set.
       * @return This builder for chaining.
       */
      public Builder setPvedmg(long value) {
        
        pvedmg_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *对怪物伤害加成
       * </pre>
       *
       * <code>int64 pvedmg = 41;</code>
       * @return This builder for chaining.
       */
      public Builder clearPvedmg() {
        
        pvedmg_ = 0L;
        onChanged();
        return this;
      }

      private long fovRange_ ;
      /**
       * <pre>
       *视野范围
       * </pre>
       *
       * <code>int64 fovRange = 42;</code>
       * @return The fovRange.
       */
      public long getFovRange() {
        return fovRange_;
      }
      /**
       * <pre>
       *视野范围
       * </pre>
       *
       * <code>int64 fovRange = 42;</code>
       * @param value The fovRange to set.
       * @return This builder for chaining.
       */
      public Builder setFovRange(long value) {
        
        fovRange_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *视野范围
       * </pre>
       *
       * <code>int64 fovRange = 42;</code>
       * @return This builder for chaining.
       */
      public Builder clearFovRange() {
        
        fovRange_ = 0L;
        onChanged();
        return this;
      }

      private long reducecrit_ ;
      /**
       * <pre>
       *暴击抵抗
       * </pre>
       *
       * <code>int64 reducecrit = 43;</code>
       * @return The reducecrit.
       */
      public long getReducecrit() {
        return reducecrit_;
      }
      /**
       * <pre>
       *暴击抵抗
       * </pre>
       *
       * <code>int64 reducecrit = 43;</code>
       * @param value The reducecrit to set.
       * @return This builder for chaining.
       */
      public Builder setReducecrit(long value) {
        
        reducecrit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *暴击抵抗
       * </pre>
       *
       * <code>int64 reducecrit = 43;</code>
       * @return This builder for chaining.
       */
      public Builder clearReducecrit() {
        
        reducecrit_ = 0L;
        onChanged();
        return this;
      }

      private long hpBrate_ ;
      /**
       * <pre>
       *某养成系统内基础生命加成
       * </pre>
       *
       * <code>int64 hpBrate = 44;</code>
       * @return The hpBrate.
       */
      public long getHpBrate() {
        return hpBrate_;
      }
      /**
       * <pre>
       *某养成系统内基础生命加成
       * </pre>
       *
       * <code>int64 hpBrate = 44;</code>
       * @param value The hpBrate to set.
       * @return This builder for chaining.
       */
      public Builder setHpBrate(long value) {
        
        hpBrate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *某养成系统内基础生命加成
       * </pre>
       *
       * <code>int64 hpBrate = 44;</code>
       * @return This builder for chaining.
       */
      public Builder clearHpBrate() {
        
        hpBrate_ = 0L;
        onChanged();
        return this;
      }

      private long atkBrate_ ;
      /**
       * <pre>
       *某养成系统内基础攻击加成
       * </pre>
       *
       * <code>int64 atkBrate = 45;</code>
       * @return The atkBrate.
       */
      public long getAtkBrate() {
        return atkBrate_;
      }
      /**
       * <pre>
       *某养成系统内基础攻击加成
       * </pre>
       *
       * <code>int64 atkBrate = 45;</code>
       * @param value The atkBrate to set.
       * @return This builder for chaining.
       */
      public Builder setAtkBrate(long value) {
        
        atkBrate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *某养成系统内基础攻击加成
       * </pre>
       *
       * <code>int64 atkBrate = 45;</code>
       * @return This builder for chaining.
       */
      public Builder clearAtkBrate() {
        
        atkBrate_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:pb.PbBattleAttr)
    }

    // @@protoc_insertion_point(class_scope:pb.PbBattleAttr)
    private static final pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr();
    }

    public static pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<PbBattleAttr>
        PARSER = new com.google.protobuf.AbstractParser<PbBattleAttr>() {
      @java.lang.Override
      public PbBattleAttr parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PbBattleAttr(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser<PbBattleAttr> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<PbBattleAttr> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public pb.xiugou.x1.protobuf.battleattr.BattleAttr.PbBattleAttr getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbBattleAttr_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbBattleAttr_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\020BattleAttr.proto\022\002pb\"\217\006\n\014PbBattleAttr\022" +
      "\n\n\002hp\030\001 \001(\003\022\r\n\005maxHp\030\002 \001(\003\022\013\n\003atk\030\003 \001(\003\022" +
      "\013\n\003def\030\004 \001(\003\022\016\n\006hpRate\030\005 \001(\003\022\017\n\007atkRate\030" +
      "\006 \001(\003\022\017\n\007defRate\030\007 \001(\003\022\017\n\007dmgRate\030\010 \001(\003\022" +
      "\013\n\003hit\030\t \001(\003\022\r\n\005dodge\030\n \001(\003\022\014\n\004crit\030\013 \001(" +
      "\003\022\023\n\013critDmgRate\030\014 \001(\003\022\023\n\013vampireRate\030\r " +
      "\001(\003\022\021\n\treduceDmg\030\016 \001(\003\022\025\n\rreduceDmgRate\030" +
      "\017 \001(\003\022\021\n\tcdSpdRate\030\020 \001(\003\022\017\n\007moveSpd\030\021 \001(" +
      "\003\022\023\n\013moveSpdRate\030\022 \001(\003\022\016\n\006atkSpd\030\023 \001(\003\022\022" +
      "\n\natkSpdRate\030\024 \001(\003\022\r\n\005dmgbl\030\025 \001(\003\022\013\n\003dmg" +
      "\030\026 \001(\003\022\021\n\tllmaxRate\030\027 \001(\003\022\021\n\tlldmgRate\030\030" +
      " \001(\003\022\021\n\tmjmaxRate\030\031 \001(\003\022\021\n\tmjdmgRate\030\032 \001" +
      "(\003\022\021\n\tzlmaxRate\030\033 \001(\003\022\021\n\tzldmgRate\030\034 \001(\003" +
      "\022\017\n\007woodDmg\030\035 \001(\003\022\017\n\007mineDmg\030\036 \001(\003\022\r\n\005ll" +
      "max\030\037 \001(\003\022\r\n\005lldmg\030  \001(\003\022\r\n\005mjmax\030! \001(\003\022" +
      "\r\n\005mjdmg\030\" \001(\003\022\r\n\005zlmax\030# \001(\003\022\r\n\005zldmg\030$" +
      " \001(\003\022\023\n\013battleRange\030% \001(\003\022\020\n\010llpvedmg\030& " +
      "\001(\003\022\020\n\010mjpvedmg\030\' \001(\003\022\020\n\010zlpvedmg\030( \001(\003\022" +
      "\016\n\006pvedmg\030) \001(\003\022\020\n\010fovRange\030* \001(\003\022\022\n\nred" +
      "ucecrit\030+ \001(\003\022\017\n\007hpBrate\030, \001(\003\022\020\n\010atkBra" +
      "te\030- \001(\003B:\n pb.xiugou.x1.protobuf.battle" +
      "attr\252\002\025pb.xiugou.x1.protobufb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_pb_PbBattleAttr_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_pb_PbBattleAttr_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbBattleAttr_descriptor,
        new java.lang.String[] { "Hp", "MaxHp", "Atk", "Def", "HpRate", "AtkRate", "DefRate", "DmgRate", "Hit", "Dodge", "Crit", "CritDmgRate", "VampireRate", "ReduceDmg", "ReduceDmgRate", "CdSpdRate", "MoveSpd", "MoveSpdRate", "AtkSpd", "AtkSpdRate", "Dmgbl", "Dmg", "LlmaxRate", "LldmgRate", "MjmaxRate", "MjdmgRate", "ZlmaxRate", "ZldmgRate", "WoodDmg", "MineDmg", "Llmax", "Lldmg", "Mjmax", "Mjdmg", "Zlmax", "Zldmg", "BattleRange", "Llpvedmg", "Mjpvedmg", "Zlpvedmg", "Pvedmg", "FovRange", "Reducecrit", "HpBrate", "AtkBrate", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
