#ifndef _ENHANCEMENT_TYPES_H_
#define _ENHANCEMENT_TYPES_H_

typedef enum {
    WARP_MODE_OVERRIDE_OFF,
    WARP_MODE_OVERRIDE_MQ_AS_VANILLA,
    WARP_MODE_OVERRIDE_VANILLA_AS_MQ,
} BetterDebugWarpOverrideMQMode;

typedef enum {
    SGIA_DISABLED,
    SGIA_JUNK,
    SGIA_ALL,
    SGIA_SIZE,
} SkipGetItemAnimationType;

typedef enum {
    FORCED_DIALOG_SKIP_NONE,
    FORCED_DIALOG_SKIP_NAVI,
    FORCED_DIALOG_SKIP_NPC,
    FORCED_DIALOG_SKIP_ALL
} ForcedDialogMode;

typedef enum {
    BUNNY_HOOD_VANILLA,
    BUNNY_HOOD_FAST,
    BUNNY_HOOD_FAST_AND_JUMP,
} BunnyHoodMode;

typedef enum {
    MIRRORED_WORLD_OFF,
    MIRRORED_WORLD_ALWAYS,
    MIRRORED_WORLD_RANDOM,
    MIRRORED_WORLD_RANDOM_SEEDED,
    MIRRORED_WORLD_DUNGEONS_ALL,
    MIRRORED_WORLD_DUNGEONS_VANILLA,
    MIRRORED_WORLD_DUNGEONS_MQ,
    MIRRORED_WORLD_DUNGEONS_RANDOM,
    MIRRORED_WORLD_DUNGEONS_RANDOM_SEEDED,
} MirroredWorldMode;

typedef enum {
    ENEMY_RANDOMIZER_OFF,
    ENEMY_RANDOMIZER_RANDOM,
    ENEMY_RANDOMIZER_RANDOM_SEEDED,
} EnemyRandomizerMode;

typedef enum {
    BOOTSEQUENCE_DEFAULT,
    BOOTSEQUENCE_AUTHENTIC,
    BOOTSEQUENCE_FILESELECT,
    BOOTSEQUENCE_DEBUGWARPSCREEN,
    BOOTSEQUENCE_WARPPOINT,
} BootSequenceType;

typedef enum {
    ZFIGHT_FIX_DISABLED,
    ZFIGHT_FIX_CONSISTENT_VANISH,
    ZFIGHT_FIX_NO_VANISH,
} ZFightingFixType;

typedef enum {
    BONK_DAMAGE_NONE,
    BONK_DAMAGE_QUARTER_HEART,
    BONK_DAMAGE_HALF_HEART,
    BONK_DAMAGE_1_HEART,
    BONK_DAMAGE_2_HEARTS,
    BONK_DAMAGE_4_HEARTS,
    BONK_DAMAGE_8_HEARTS,
    BONK_DAMAGE_OHKO,
} BonkDamage;

typedef enum {
    DAMAGE_VANILLA,
    DAMAGE_DOUBLE,
    DAMAGE_QUADRUPLE,
    DAMAGE_OCTUPLE,
    DAMAGE_FOOLISH,
    DAMAGE_RIDICULOUS,
    DAMAGE_MERCILESS,
    DAMAGE_TORTURE,
    DAMAGE_OHKO
} DamageMultType;

typedef enum {
    DAMPE_NONE,
    DAMPE_NORMAL,
    DAMPE_JALAPENO,
    DAMPE_CHIPOTLE,
    DAMPE_SCOTCH_BONNET,
    DAMPE_GHOST_PEPPER,
    DAMPE_INFERNO,
} DampeDropRate;

typedef enum {
    DEKU_STICK_NORMAL,
    DEKU_STICK_UNBREAKABLE,
    DEKU_STICK_UNBREAKABLE_AND_ALWAYS_ON_FIRE,
} DekuStickType;

typedef enum {
    SWORD_TOGGLE_NONE,
    SWORD_TOGGLE_CHILD,
    SWORD_TOGGLE_BOTH_AGES,
} SwordToggleMode;

typedef enum {
    TIME_TRAVEL_DISABLED,
    TIME_TRAVEL_OOT,
    TIME_TRAVEL_OOT_MS,
    TIME_TRAVEL_ANY,
    TIME_TRAVEL_ANY_MS
} TimeTravelType;

typedef enum {
    WATERFALL_ALWAYS,
    WATERFALL_ONCE,
    WATERFALL_NEVER,
} SleepingWaterfallType;

typedef enum {
    RANDOMIZE_OFF,
    RANDOMIZE_ON_NEW_SCENE,
    RANDOMIZE_ON_RANDO_GEN_ONLY,
    RANDOMIZE_ON_FILE_LOAD,
    RANDOMIZE_ON_FILE_LOAD_SEEDED,
} RandomizeOnMode;

#endif
