// 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 'combat_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',
);

CombatStats _$CombatStatsFromJson(Map<String, dynamic> json) {
  return _CombatStats.fromJson(json);
}

/// @nodoc
mixin _$CombatStats {
  // 기본 스탯
  /// 힘: 물리 공격력 보정
  int get str => throw _privateConstructorUsedError;

  /// 체력: HP, 방어력 보정
  int get con => throw _privateConstructorUsedError;

  /// 민첩: 회피율, 크리티컬율, 명중률, 공격 속도
  int get dex => throw _privateConstructorUsedError;

  /// 지능: 마법 공격력, MP
  int get intelligence => throw _privateConstructorUsedError;

  /// 지혜: 마법 방어력, MP 회복
  int get wis => throw _privateConstructorUsedError;

  /// 매력: 상점 가격, 드롭률 보정
  int get cha => throw _privateConstructorUsedError; // 파생 스탯 (전투용)
  /// 물리 공격력
  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;

  /// 크리티컬 데미지 배율 (1.5 ~ 3.0)
  double get criDamage => throw _privateConstructorUsedError;

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

  /// 명중률 (0.8 ~ 1.0)
  double get accuracy => throw _privateConstructorUsedError;

  /// 방패 방어율 (0.0 ~ 0.4)
  double get blockRate => throw _privateConstructorUsedError;

  /// 무기로 쳐내기 확률 (0.0 ~ 0.3)
  double get parryRate => throw _privateConstructorUsedError;

  /// 공격 딜레이 (밀리초)
  int get attackDelayMs => throw _privateConstructorUsedError; // 자원
  /// 최대 HP
  int get hpMax => throw _privateConstructorUsedError;

  /// 현재 HP
  int get hpCurrent => throw _privateConstructorUsedError;

  /// 최대 MP
  int get mpMax => throw _privateConstructorUsedError;

  /// 현재 MP
  int get mpCurrent => throw _privateConstructorUsedError;

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

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

/// @nodoc
abstract class $CombatStatsCopyWith<$Res> {
  factory $CombatStatsCopyWith(
    CombatStats value,
    $Res Function(CombatStats) then,
  ) = _$CombatStatsCopyWithImpl<$Res, CombatStats>;
  @useResult
  $Res call({
    int str,
    int con,
    int dex,
    int intelligence,
    int wis,
    int cha,
    int atk,
    int def,
    int magAtk,
    int magDef,
    double criRate,
    double criDamage,
    double evasion,
    double accuracy,
    double blockRate,
    double parryRate,
    int attackDelayMs,
    int hpMax,
    int hpCurrent,
    int mpMax,
    int mpCurrent,
  });
}

/// @nodoc
class _$CombatStatsCopyWithImpl<$Res, $Val extends CombatStats>
    implements $CombatStatsCopyWith<$Res> {
  _$CombatStatsCopyWithImpl(this._value, this._then);

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

  /// Create a copy of CombatStats
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? str = null,
    Object? con = null,
    Object? dex = null,
    Object? intelligence = null,
    Object? wis = null,
    Object? cha = null,
    Object? atk = null,
    Object? def = null,
    Object? magAtk = null,
    Object? magDef = null,
    Object? criRate = null,
    Object? criDamage = null,
    Object? evasion = null,
    Object? accuracy = null,
    Object? blockRate = null,
    Object? parryRate = null,
    Object? attackDelayMs = null,
    Object? hpMax = null,
    Object? hpCurrent = null,
    Object? mpMax = null,
    Object? mpCurrent = null,
  }) {
    return _then(
      _value.copyWith(
            str: null == str
                ? _value.str
                : str // ignore: cast_nullable_to_non_nullable
                      as int,
            con: null == con
                ? _value.con
                : con // ignore: cast_nullable_to_non_nullable
                      as int,
            dex: null == dex
                ? _value.dex
                : dex // ignore: cast_nullable_to_non_nullable
                      as int,
            intelligence: null == intelligence
                ? _value.intelligence
                : intelligence // ignore: cast_nullable_to_non_nullable
                      as int,
            wis: null == wis
                ? _value.wis
                : wis // ignore: cast_nullable_to_non_nullable
                      as int,
            cha: null == cha
                ? _value.cha
                : cha // ignore: cast_nullable_to_non_nullable
                      as int,
            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,
            criDamage: null == criDamage
                ? _value.criDamage
                : criDamage // ignore: cast_nullable_to_non_nullable
                      as double,
            evasion: null == evasion
                ? _value.evasion
                : evasion // ignore: cast_nullable_to_non_nullable
                      as double,
            accuracy: null == accuracy
                ? _value.accuracy
                : accuracy // 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,
            attackDelayMs: null == attackDelayMs
                ? _value.attackDelayMs
                : attackDelayMs // ignore: cast_nullable_to_non_nullable
                      as int,
            hpMax: null == hpMax
                ? _value.hpMax
                : hpMax // ignore: cast_nullable_to_non_nullable
                      as int,
            hpCurrent: null == hpCurrent
                ? _value.hpCurrent
                : hpCurrent // ignore: cast_nullable_to_non_nullable
                      as int,
            mpMax: null == mpMax
                ? _value.mpMax
                : mpMax // ignore: cast_nullable_to_non_nullable
                      as int,
            mpCurrent: null == mpCurrent
                ? _value.mpCurrent
                : mpCurrent // ignore: cast_nullable_to_non_nullable
                      as int,
          )
          as $Val,
    );
  }
}

/// @nodoc
abstract class _$$CombatStatsImplCopyWith<$Res>
    implements $CombatStatsCopyWith<$Res> {
  factory _$$CombatStatsImplCopyWith(
    _$CombatStatsImpl value,
    $Res Function(_$CombatStatsImpl) then,
  ) = __$$CombatStatsImplCopyWithImpl<$Res>;
  @override
  @useResult
  $Res call({
    int str,
    int con,
    int dex,
    int intelligence,
    int wis,
    int cha,
    int atk,
    int def,
    int magAtk,
    int magDef,
    double criRate,
    double criDamage,
    double evasion,
    double accuracy,
    double blockRate,
    double parryRate,
    int attackDelayMs,
    int hpMax,
    int hpCurrent,
    int mpMax,
    int mpCurrent,
  });
}

/// @nodoc
class __$$CombatStatsImplCopyWithImpl<$Res>
    extends _$CombatStatsCopyWithImpl<$Res, _$CombatStatsImpl>
    implements _$$CombatStatsImplCopyWith<$Res> {
  __$$CombatStatsImplCopyWithImpl(
    _$CombatStatsImpl _value,
    $Res Function(_$CombatStatsImpl) _then,
  ) : super(_value, _then);

  /// Create a copy of CombatStats
  /// with the given fields replaced by the non-null parameter values.
  @pragma('vm:prefer-inline')
  @override
  $Res call({
    Object? str = null,
    Object? con = null,
    Object? dex = null,
    Object? intelligence = null,
    Object? wis = null,
    Object? cha = null,
    Object? atk = null,
    Object? def = null,
    Object? magAtk = null,
    Object? magDef = null,
    Object? criRate = null,
    Object? criDamage = null,
    Object? evasion = null,
    Object? accuracy = null,
    Object? blockRate = null,
    Object? parryRate = null,
    Object? attackDelayMs = null,
    Object? hpMax = null,
    Object? hpCurrent = null,
    Object? mpMax = null,
    Object? mpCurrent = null,
  }) {
    return _then(
      _$CombatStatsImpl(
        str: null == str
            ? _value.str
            : str // ignore: cast_nullable_to_non_nullable
                  as int,
        con: null == con
            ? _value.con
            : con // ignore: cast_nullable_to_non_nullable
                  as int,
        dex: null == dex
            ? _value.dex
            : dex // ignore: cast_nullable_to_non_nullable
                  as int,
        intelligence: null == intelligence
            ? _value.intelligence
            : intelligence // ignore: cast_nullable_to_non_nullable
                  as int,
        wis: null == wis
            ? _value.wis
            : wis // ignore: cast_nullable_to_non_nullable
                  as int,
        cha: null == cha
            ? _value.cha
            : cha // ignore: cast_nullable_to_non_nullable
                  as int,
        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,
        criDamage: null == criDamage
            ? _value.criDamage
            : criDamage // ignore: cast_nullable_to_non_nullable
                  as double,
        evasion: null == evasion
            ? _value.evasion
            : evasion // ignore: cast_nullable_to_non_nullable
                  as double,
        accuracy: null == accuracy
            ? _value.accuracy
            : accuracy // 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,
        attackDelayMs: null == attackDelayMs
            ? _value.attackDelayMs
            : attackDelayMs // ignore: cast_nullable_to_non_nullable
                  as int,
        hpMax: null == hpMax
            ? _value.hpMax
            : hpMax // ignore: cast_nullable_to_non_nullable
                  as int,
        hpCurrent: null == hpCurrent
            ? _value.hpCurrent
            : hpCurrent // ignore: cast_nullable_to_non_nullable
                  as int,
        mpMax: null == mpMax
            ? _value.mpMax
            : mpMax // ignore: cast_nullable_to_non_nullable
                  as int,
        mpCurrent: null == mpCurrent
            ? _value.mpCurrent
            : mpCurrent // ignore: cast_nullable_to_non_nullable
                  as int,
      ),
    );
  }
}

/// @nodoc
@JsonSerializable()
class _$CombatStatsImpl extends _CombatStats {
  const _$CombatStatsImpl({
    required this.str,
    required this.con,
    required this.dex,
    required this.intelligence,
    required this.wis,
    required this.cha,
    required this.atk,
    required this.def,
    required this.magAtk,
    required this.magDef,
    required this.criRate,
    required this.criDamage,
    required this.evasion,
    required this.accuracy,
    required this.blockRate,
    required this.parryRate,
    required this.attackDelayMs,
    required this.hpMax,
    required this.hpCurrent,
    required this.mpMax,
    required this.mpCurrent,
  }) : super._();

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

  // 기본 스탯
  /// 힘: 물리 공격력 보정
  @override
  final int str;

  /// 체력: HP, 방어력 보정
  @override
  final int con;

  /// 민첩: 회피율, 크리티컬율, 명중률, 공격 속도
  @override
  final int dex;

  /// 지능: 마법 공격력, MP
  @override
  final int intelligence;

  /// 지혜: 마법 방어력, MP 회복
  @override
  final int wis;

  /// 매력: 상점 가격, 드롭률 보정
  @override
  final int cha;
  // 파생 스탯 (전투용)
  /// 물리 공격력
  @override
  final int atk;

  /// 물리 방어력
  @override
  final int def;

  /// 마법 공격력
  @override
  final int magAtk;

  /// 마법 방어력
  @override
  final int magDef;

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

  /// 크리티컬 데미지 배율 (1.5 ~ 3.0)
  @override
  final double criDamage;

  /// 회피율 (0.0 ~ 0.5)
  @override
  final double evasion;

  /// 명중률 (0.8 ~ 1.0)
  @override
  final double accuracy;

  /// 방패 방어율 (0.0 ~ 0.4)
  @override
  final double blockRate;

  /// 무기로 쳐내기 확률 (0.0 ~ 0.3)
  @override
  final double parryRate;

  /// 공격 딜레이 (밀리초)
  @override
  final int attackDelayMs;
  // 자원
  /// 최대 HP
  @override
  final int hpMax;

  /// 현재 HP
  @override
  final int hpCurrent;

  /// 최대 MP
  @override
  final int mpMax;

  /// 현재 MP
  @override
  final int mpCurrent;

  @override
  String toString() {
    return 'CombatStats(str: $str, con: $con, dex: $dex, intelligence: $intelligence, wis: $wis, cha: $cha, atk: $atk, def: $def, magAtk: $magAtk, magDef: $magDef, criRate: $criRate, criDamage: $criDamage, evasion: $evasion, accuracy: $accuracy, blockRate: $blockRate, parryRate: $parryRate, attackDelayMs: $attackDelayMs, hpMax: $hpMax, hpCurrent: $hpCurrent, mpMax: $mpMax, mpCurrent: $mpCurrent)';
  }

  @override
  bool operator ==(Object other) {
    return identical(this, other) ||
        (other.runtimeType == runtimeType &&
            other is _$CombatStatsImpl &&
            (identical(other.str, str) || other.str == str) &&
            (identical(other.con, con) || other.con == con) &&
            (identical(other.dex, dex) || other.dex == dex) &&
            (identical(other.intelligence, intelligence) ||
                other.intelligence == intelligence) &&
            (identical(other.wis, wis) || other.wis == wis) &&
            (identical(other.cha, cha) || other.cha == cha) &&
            (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.criDamage, criDamage) ||
                other.criDamage == criDamage) &&
            (identical(other.evasion, evasion) || other.evasion == evasion) &&
            (identical(other.accuracy, accuracy) ||
                other.accuracy == accuracy) &&
            (identical(other.blockRate, blockRate) ||
                other.blockRate == blockRate) &&
            (identical(other.parryRate, parryRate) ||
                other.parryRate == parryRate) &&
            (identical(other.attackDelayMs, attackDelayMs) ||
                other.attackDelayMs == attackDelayMs) &&
            (identical(other.hpMax, hpMax) || other.hpMax == hpMax) &&
            (identical(other.hpCurrent, hpCurrent) ||
                other.hpCurrent == hpCurrent) &&
            (identical(other.mpMax, mpMax) || other.mpMax == mpMax) &&
            (identical(other.mpCurrent, mpCurrent) ||
                other.mpCurrent == mpCurrent));
  }

  @JsonKey(includeFromJson: false, includeToJson: false)
  @override
  int get hashCode => Object.hashAll([
    runtimeType,
    str,
    con,
    dex,
    intelligence,
    wis,
    cha,
    atk,
    def,
    magAtk,
    magDef,
    criRate,
    criDamage,
    evasion,
    accuracy,
    blockRate,
    parryRate,
    attackDelayMs,
    hpMax,
    hpCurrent,
    mpMax,
    mpCurrent,
  ]);

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

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

abstract class _CombatStats extends CombatStats {
  const factory _CombatStats({
    required final int str,
    required final int con,
    required final int dex,
    required final int intelligence,
    required final int wis,
    required final int cha,
    required final int atk,
    required final int def,
    required final int magAtk,
    required final int magDef,
    required final double criRate,
    required final double criDamage,
    required final double evasion,
    required final double accuracy,
    required final double blockRate,
    required final double parryRate,
    required final int attackDelayMs,
    required final int hpMax,
    required final int hpCurrent,
    required final int mpMax,
    required final int mpCurrent,
  }) = _$CombatStatsImpl;
  const _CombatStats._() : super._();

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

  // 기본 스탯
  /// 힘: 물리 공격력 보정
  @override
  int get str;

  /// 체력: HP, 방어력 보정
  @override
  int get con;

  /// 민첩: 회피율, 크리티컬율, 명중률, 공격 속도
  @override
  int get dex;

  /// 지능: 마법 공격력, MP
  @override
  int get intelligence;

  /// 지혜: 마법 방어력, MP 회복
  @override
  int get wis;

  /// 매력: 상점 가격, 드롭률 보정
  @override
  int get cha; // 파생 스탯 (전투용)
  /// 물리 공격력
  @override
  int get atk;

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

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

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

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

  /// 크리티컬 데미지 배율 (1.5 ~ 3.0)
  @override
  double get criDamage;

  /// 회피율 (0.0 ~ 0.5)
  @override
  double get evasion;

  /// 명중률 (0.8 ~ 1.0)
  @override
  double get accuracy;

  /// 방패 방어율 (0.0 ~ 0.4)
  @override
  double get blockRate;

  /// 무기로 쳐내기 확률 (0.0 ~ 0.3)
  @override
  double get parryRate;

  /// 공격 딜레이 (밀리초)
  @override
  int get attackDelayMs; // 자원
  /// 최대 HP
  @override
  int get hpMax;

  /// 현재 HP
  @override
  int get hpCurrent;

  /// 최대 MP
  @override
  int get mpMax;

  /// 현재 MP
  @override
  int get mpCurrent;

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