// coverage:ignore-file
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark

part of 'item_stats.dart';

// **************************************************************************
// FreezedGenerator
// **************************************************************************

T _$identity<T>(T value) => value;

final _privateConstructorUsedError = UnsupportedError(
  'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models',
);

ItemStats _$ItemStatsFromJson(Map<String, dynamic> json) {
  return _ItemStats.fromJson(json);
}

/// @nodoc
mixin _$ItemStats {
  /// 물리 공격력 보정
  int get atk => throw _privateConstructorUsedError;

  /// 물리 방어력 보정
  int get def => throw _privateConstructorUsedError;

  /// 마법 공격력 보정
  int get magAtk => throw _privateConstructorUsedError;

  /// 마법 방어력 보정
  int get magDef => throw _privateConstructorUsedError;

  /// 크리티컬 확률 보정 (0.0 ~ 1.0)
  double get criRate => throw _privateConstructorUsedError;

  /// 회피율 보정 (0.0 ~ 1.0)
  double get evasion => throw _privateConstructorUsedError;

  /// 방패 방어율 (방패 전용, 0.0 ~ 1.0)
  double get blockRate => throw _privateConstructorUsedError;

  /// 무기 쳐내기 확률 (무기 전용, 0.0 ~ 1.0)
  double get parryRate => throw _privateConstructorUsedError;

  /// HP 보너스
  int get hpBonus => throw _privateConstructorUsedError;

  /// MP 보너스
  int get mpBonus => throw _privateConstructorUsedError;

  /// STR 보너스
  int get strBonus => throw _privateConstructorUsedError;

  /// CON 보너스
  int get conBonus => throw _privateConstructorUsedError;

  /// DEX 보너스
  int get dexBonus => throw _privateConstructorUsedError;

  /// INT 보너스
  int get intBonus => throw _privateConstructorUsedError;

  /// WIS 보너스
  int get wisBonus => throw _privateConstructorUsedError;

  /// CHA 보너스
  int get chaBonus => throw _privateConstructorUsedError;

  /// 무기 공격속도 (밀리초, 무기 전용)
  ///
  /// 0이면 기본값(1000ms) 사용, 값이 클수록 느린 공격.
  /// 느린 무기는 높은 기본 데미지를 가짐.
  int get attackSpeed => throw _privateConstructorUsedError;

  /// Serializes this ItemStats to a JSON map.
  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;

  /// Create a copy of ItemStats
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  $ItemStatsCopyWith<ItemStats> get copyWith =>
      throw _privateConstructorUsedError;
}

/// @nodoc
abstract class $ItemStatsCopyWith<$Res> {
  factory $ItemStatsCopyWith(ItemStats value, $Res Function(ItemStats) then) =
      _$ItemStatsCopyWithImpl<$Res, ItemStats>;
  @useResult
  $Res call({
    int atk,
    int def,
    int magAtk,
    int magDef,
    double criRate,
    double evasion,
    double blockRate,
    double parryRate,
    int hpBonus,
    int mpBonus,
    int strBonus,
    int conBonus,
    int dexBonus,
    int intBonus,
    int wisBonus,
    int chaBonus,
    int attackSpeed,
  });
}

/// @nodoc
class _$ItemStatsCopyWithImpl<$Res, $Val extends ItemStats>
    implements $ItemStatsCopyWith<$Res> {
  _$ItemStatsCopyWithImpl(this._value, this._then);

  // ignore: unused_field
  final $Val _value;
  // ignore: unused_field
  final $Res Function($Val) _then;

  /// Create a copy of ItemStats
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? atk = null,
    Object? def = null,
    Object? magAtk = null,
    Object? magDef = null,
    Object? criRate = null,
    Object? evasion = null,
    Object? blockRate = null,
    Object? parryRate = null,
    Object? hpBonus = null,
    Object? mpBonus = null,
    Object? strBonus = null,
    Object? conBonus = null,
    Object? dexBonus = null,
    Object? intBonus = null,
    Object? wisBonus = null,
    Object? chaBonus = null,
    Object? attackSpeed = null,
  }) {
    return _then(
      _value.copyWith(
            atk: null == atk
                ? _value.atk
                : atk // ignore: cast_nullable_to_non_nullable
                      as int,
            def: null == def
                ? _value.def
                : def // ignore: cast_nullable_to_non_nullable
                      as int,
            magAtk: null == magAtk
                ? _value.magAtk
                : magAtk // ignore: cast_nullable_to_non_nullable
                      as int,
            magDef: null == magDef
                ? _value.magDef
                : magDef // ignore: cast_nullable_to_non_nullable
                      as int,
            criRate: null == criRate
                ? _value.criRate
                : criRate // ignore: cast_nullable_to_non_nullable
                      as double,
            evasion: null == evasion
                ? _value.evasion
                : evasion // ignore: cast_nullable_to_non_nullable
                      as double,
            blockRate: null == blockRate
                ? _value.blockRate
                : blockRate // ignore: cast_nullable_to_non_nullable
                      as double,
            parryRate: null == parryRate
                ? _value.parryRate
                : parryRate // ignore: cast_nullable_to_non_nullable
                      as double,
            hpBonus: null == hpBonus
                ? _value.hpBonus
                : hpBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            mpBonus: null == mpBonus
                ? _value.mpBonus
                : mpBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            strBonus: null == strBonus
                ? _value.strBonus
                : strBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            conBonus: null == conBonus
                ? _value.conBonus
                : conBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            dexBonus: null == dexBonus
                ? _value.dexBonus
                : dexBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            intBonus: null == intBonus
                ? _value.intBonus
                : intBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            wisBonus: null == wisBonus
                ? _value.wisBonus
                : wisBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            chaBonus: null == chaBonus
                ? _value.chaBonus
                : chaBonus // ignore: cast_nullable_to_non_nullable
                      as int,
            attackSpeed: null == attackSpeed
                ? _value.attackSpeed
                : attackSpeed // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$ItemStatsImplCopyWith<$Res>
    implements $ItemStatsCopyWith<$Res> {
  factory _$$ItemStatsImplCopyWith(
    _$ItemStatsImpl value,
    $Res Function(_$ItemStatsImpl) then,
  ) = __$$ItemStatsImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int atk,
    int def,
    int magAtk,
    int magDef,
    double criRate,
    double evasion,
    double blockRate,
    double parryRate,
    int hpBonus,
    int mpBonus,
    int strBonus,
    int conBonus,
    int dexBonus,
    int intBonus,
    int wisBonus,
    int chaBonus,
    int attackSpeed,
  });
}

/// @nodoc
class __$$ItemStatsImplCopyWithImpl<$Res>
    extends _$ItemStatsCopyWithImpl<$Res, _$ItemStatsImpl>
    implements _$$ItemStatsImplCopyWith<$Res> {
  __$$ItemStatsImplCopyWithImpl(
    _$ItemStatsImpl _value,
    $Res Function(_$ItemStatsImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of ItemStats
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? atk = null,
    Object? def = null,
    Object? magAtk = null,
    Object? magDef = null,
    Object? criRate = null,
    Object? evasion = null,
    Object? blockRate = null,
    Object? parryRate = null,
    Object? hpBonus = null,
    Object? mpBonus = null,
    Object? strBonus = null,
    Object? conBonus = null,
    Object? dexBonus = null,
    Object? intBonus = null,
    Object? wisBonus = null,
    Object? chaBonus = null,
    Object? attackSpeed = null,
  }) {
    return _then(
      _$ItemStatsImpl(
        atk: null == atk
            ? _value.atk
            : atk // ignore: cast_nullable_to_non_nullable
                  as int,
        def: null == def
            ? _value.def
            : def // ignore: cast_nullable_to_non_nullable
                  as int,
        magAtk: null == magAtk
            ? _value.magAtk
            : magAtk // ignore: cast_nullable_to_non_nullable
                  as int,
        magDef: null == magDef
            ? _value.magDef
            : magDef // ignore: cast_nullable_to_non_nullable
                  as int,
        criRate: null == criRate
            ? _value.criRate
            : criRate // ignore: cast_nullable_to_non_nullable
                  as double,
        evasion: null == evasion
            ? _value.evasion
            : evasion // ignore: cast_nullable_to_non_nullable
                  as double,
        blockRate: null == blockRate
            ? _value.blockRate
            : blockRate // ignore: cast_nullable_to_non_nullable
                  as double,
        parryRate: null == parryRate
            ? _value.parryRate
            : parryRate // ignore: cast_nullable_to_non_nullable
                  as double,
        hpBonus: null == hpBonus
            ? _value.hpBonus
            : hpBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        mpBonus: null == mpBonus
            ? _value.mpBonus
            : mpBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        strBonus: null == strBonus
            ? _value.strBonus
            : strBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        conBonus: null == conBonus
            ? _value.conBonus
            : conBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        dexBonus: null == dexBonus
            ? _value.dexBonus
            : dexBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        intBonus: null == intBonus
            ? _value.intBonus
            : intBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        wisBonus: null == wisBonus
            ? _value.wisBonus
            : wisBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        chaBonus: null == chaBonus
            ? _value.chaBonus
            : chaBonus // ignore: cast_nullable_to_non_nullable
                  as int,
        attackSpeed: null == attackSpeed
            ? _value.attackSpeed
            : attackSpeed // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc
@JsonSerializable()
class _$ItemStatsImpl extends _ItemStats {
  const _$ItemStatsImpl({
    this.atk = 0,
    this.def = 0,
    this.magAtk = 0,
    this.magDef = 0,
    this.criRate = 0.0,
    this.evasion = 0.0,
    this.blockRate = 0.0,
    this.parryRate = 0.0,
    this.hpBonus = 0,
    this.mpBonus = 0,
    this.strBonus = 0,
    this.conBonus = 0,
    this.dexBonus = 0,
    this.intBonus = 0,
    this.wisBonus = 0,
    this.chaBonus = 0,
    this.attackSpeed = 0,
  }) : super._();

  factory _$ItemStatsImpl.fromJson(Map<String, dynamic> json) =>
      _$$ItemStatsImplFromJson(json);

  /// 물리 공격력 보정
  @override
  @JsonKey()
  final int atk;

  /// 물리 방어력 보정
  @override
  @JsonKey()
  final int def;

  /// 마법 공격력 보정
  @override
  @JsonKey()
  final int magAtk;

  /// 마법 방어력 보정
  @override
  @JsonKey()
  final int magDef;

  /// 크리티컬 확률 보정 (0.0 ~ 1.0)
  @override
  @JsonKey()
  final double criRate;

  /// 회피율 보정 (0.0 ~ 1.0)
  @override
  @JsonKey()
  final double evasion;

  /// 방패 방어율 (방패 전용, 0.0 ~ 1.0)
  @override
  @JsonKey()
  final double blockRate;

  /// 무기 쳐내기 확률 (무기 전용, 0.0 ~ 1.0)
  @override
  @JsonKey()
  final double parryRate;

  /// HP 보너스
  @override
  @JsonKey()
  final int hpBonus;

  /// MP 보너스
  @override
  @JsonKey()
  final int mpBonus;

  /// STR 보너스
  @override
  @JsonKey()
  final int strBonus;

  /// CON 보너스
  @override
  @JsonKey()
  final int conBonus;

  /// DEX 보너스
  @override
  @JsonKey()
  final int dexBonus;

  /// INT 보너스
  @override
  @JsonKey()
  final int intBonus;

  /// WIS 보너스
  @override
  @JsonKey()
  final int wisBonus;

  /// CHA 보너스
  @override
  @JsonKey()
  final int chaBonus;

  /// 무기 공격속도 (밀리초, 무기 전용)
  ///
  /// 0이면 기본값(1000ms) 사용, 값이 클수록 느린 공격.
  /// 느린 무기는 높은 기본 데미지를 가짐.
  @override
  @JsonKey()
  final int attackSpeed;

  @override
  String toString() {
    return 'ItemStats(atk: $atk, def: $def, magAtk: $magAtk, magDef: $magDef, criRate: $criRate, evasion: $evasion, blockRate: $blockRate, parryRate: $parryRate, hpBonus: $hpBonus, mpBonus: $mpBonus, strBonus: $strBonus, conBonus: $conBonus, dexBonus: $dexBonus, intBonus: $intBonus, wisBonus: $wisBonus, chaBonus: $chaBonus, attackSpeed: $attackSpeed)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$ItemStatsImpl &&
            (identical(other.atk, atk) || other.atk == atk) &&
            (identical(other.def, def) || other.def == def) &&
            (identical(other.magAtk, magAtk) || other.magAtk == magAtk) &&
            (identical(other.magDef, magDef) || other.magDef == magDef) &&
            (identical(other.criRate, criRate) || other.criRate == criRate) &&
            (identical(other.evasion, evasion) || other.evasion == evasion) &&
            (identical(other.blockRate, blockRate) ||
                other.blockRate == blockRate) &&
            (identical(other.parryRate, parryRate) ||
                other.parryRate == parryRate) &&
            (identical(other.hpBonus, hpBonus) || other.hpBonus == hpBonus) &&
            (identical(other.mpBonus, mpBonus) || other.mpBonus == mpBonus) &&
            (identical(other.strBonus, strBonus) ||
                other.strBonus == strBonus) &&
            (identical(other.conBonus, conBonus) ||
                other.conBonus == conBonus) &&
            (identical(other.dexBonus, dexBonus) ||
                other.dexBonus == dexBonus) &&
            (identical(other.intBonus, intBonus) ||
                other.intBonus == intBonus) &&
            (identical(other.wisBonus, wisBonus) ||
                other.wisBonus == wisBonus) &&
            (identical(other.chaBonus, chaBonus) ||
                other.chaBonus == chaBonus) &&
            (identical(other.attackSpeed, attackSpeed) ||
                other.attackSpeed == attackSpeed));
  }

  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  int get hashCode => Object.hash(
    runtimeType,
    atk,
    def,
    magAtk,
    magDef,
    criRate,
    evasion,
    blockRate,
    parryRate,
    hpBonus,
    mpBonus,
    strBonus,
    conBonus,
    dexBonus,
    intBonus,
    wisBonus,
    chaBonus,
    attackSpeed,
  );

  /// Create a copy of ItemStats
  /// with the given fields replaced by the non-null parameter values.
  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  @pragma('vm:prefer-inline')
  _$$ItemStatsImplCopyWith<_$ItemStatsImpl> get copyWith =>
      __$$ItemStatsImplCopyWithImpl<_$ItemStatsImpl>(this, _$identity);

  @override
  Map<String, dynamic> toJson() {
    return _$$ItemStatsImplToJson(this);
  }
}

abstract class _ItemStats extends ItemStats {
  const factory _ItemStats({
    final int atk,
    final int def,
    final int magAtk,
    final int magDef,
    final double criRate,
    final double evasion,
    final double blockRate,
    final double parryRate,
    final int hpBonus,
    final int mpBonus,
    final int strBonus,
    final int conBonus,
    final int dexBonus,
    final int intBonus,
    final int wisBonus,
    final int chaBonus,
    final int attackSpeed,
  }) = _$ItemStatsImpl;
  const _ItemStats._() : super._();

  factory _ItemStats.fromJson(Map<String, dynamic> json) =
      _$ItemStatsImpl.fromJson;

  /// 물리 공격력 보정
  @override
  int get atk;

  /// 물리 방어력 보정
  @override
  int get def;

  /// 마법 공격력 보정
  @override
  int get magAtk;

  /// 마법 방어력 보정
  @override
  int get magDef;

  /// 크리티컬 확률 보정 (0.0 ~ 1.0)
  @override
  double get criRate;

  /// 회피율 보정 (0.0 ~ 1.0)
  @override
  double get evasion;

  /// 방패 방어율 (방패 전용, 0.0 ~ 1.0)
  @override
  double get blockRate;

  /// 무기 쳐내기 확률 (무기 전용, 0.0 ~ 1.0)
  @override
  double get parryRate;

  /// HP 보너스
  @override
  int get hpBonus;

  /// MP 보너스
  @override
  int get mpBonus;

  /// STR 보너스
  @override
  int get strBonus;

  /// CON 보너스
  @override
  int get conBonus;

  /// DEX 보너스
  @override
  int get dexBonus;

  /// INT 보너스
  @override
  int get intBonus;

  /// WIS 보너스
  @override
  int get wisBonus;

  /// CHA 보너스
  @override
  int get chaBonus;

  /// 무기 공격속도 (밀리초, 무기 전용)
  ///
  /// 0이면 기본값(1000ms) 사용, 값이 클수록 느린 공격.
  /// 느린 무기는 높은 기본 데미지를 가짐.
  @override
  int get attackSpeed;

  /// Create a copy of ItemStats
  /// with the given fields replaced by the non-null parameter values.
  @override
  @JsonKey(includeFromJson: false, includeToJson: false)
  _$$ItemStatsImplCopyWith<_$ItemStatsImpl> get copyWith =>
      throw _privateConstructorUsedError;
}
