Files
alttpr-backend/ALttPRandomizer/Model/SeedSettings.cs

432 lines
13 KiB
C#

namespace ALttPRandomizer.Model {
using ALttPRandomizer.Randomizers;
using ALttPRandomizer.Settings;
using System.Text.Json.Serialization;
using static ALttPRandomizer.Model.RandomizerInstance;
public class SeedSettings {
[NoSettingName]
public RandomizerInstance Randomizer { get; set; } = RandomizerInstance.Base;
[NoSettingName]
public string PlayerName { get; set; } = string.Empty;
[NoSettingName]
public RaceMode Race { get; set; } = RaceMode.Normal;
[ForbiddenSetting([Apr2025], Mode.Inverted)]
public Mode Mode { get; set; } = Mode.Open;
[SettingName("swords")]
[ForbiddenSetting([Apr2025], Weapons.Swordless, Weapons.AssuredMaster)]
public Weapons Weapons { get; set; } = Weapons.Random;
[RequiredSetting([Apr2025], Goal.Ganon)]
public Goal Goal { get; set; } = Goal.Ganon;
[SettingName("crystals_ganon")]
public EntryRequirement CrystalsGanon { get; set; } = EntryRequirement.Crystals7;
[SettingName("crystals_gt")]
[JsonPropertyName("crystals_gt")]
[NoSettingName([Apr2025])]
public EntryRequirement CrystalsGT { get; set; } = EntryRequirement.Crystals7;
[SettingName("ganon_item")]
[RequiredSetting([Apr2025], GanonItem.Silver)]
[NoSettingName([Apr2025])]
public GanonItem GanonItem { get; set; } = GanonItem.Silver;
[SettingName("shuffle")]
[ForbiddenSetting([Apr2025], EntranceShuffle.Swapped)]
public EntranceShuffle EntranceShuffle { get; set; } = EntranceShuffle.Vanilla;
[SettingName("skullwoods")]
[RequiredSetting([Apr2025], SkullWoodsShuffle.Original)]
[NoSettingName([Apr2025])]
public SkullWoodsShuffle SkullWoods { get; set; } = SkullWoodsShuffle.Original;
[SettingName("linked_drops")]
[RequiredSetting([Apr2025], LinkedDrops.Unset)]
[NoSettingName([Apr2025])]
public LinkedDrops LinkedDrops { get; set; } = LinkedDrops.Unset;
[SettingName("shufflebosses")]
[RequiredSetting([Apr2025], BossShuffle.Vanilla)]
[NoSettingName([Apr2025])]
public BossShuffle BossShuffle { get; set; } = BossShuffle.Vanilla;
[SettingName("shuffleenemies")]
[RequiredSetting([Apr2025], EnemyShuffle.Vanilla)]
[NoSettingName([Apr2025])]
public EnemyShuffle EnemyShuffle { get; set; } = EnemyShuffle.Vanilla;
[SettingName("shuffle_damage_table")]
[RequiredSetting([Apr2025], DamageTableShuffle.Vanilla)]
[NoSettingName([Apr2025])]
public DamageTableShuffle DamageTableShuffle { get; set; } = DamageTableShuffle.Vanilla;
[SettingName("keyshuffle")]
[RequiredSetting([Apr2025], KeyLocations.Dungeon, KeyLocations.Wild)]
[NoSettingName([Apr2025])]
public KeyLocations SmallKeys { get; set; } = KeyLocations.Dungeon;
[SettingName("bigkeyshuffle")]
[RequiredSetting([Apr2025], DungeonItemLocations.Dungeon)]
[NoSettingName([Apr2025])]
public DungeonItemLocations BigKeys { get; set; } = DungeonItemLocations.Dungeon;
[SettingName("mapshuffle")]
[RequiredSetting([Apr2025], DungeonItemLocations.Dungeon)]
[NoSettingName([Apr2025])]
public DungeonItemLocations Maps { get; set; } = DungeonItemLocations.Dungeon;
[SettingName("compassshuffle")]
[RequiredSetting([Apr2025], DungeonItemLocations.Dungeon)]
[NoSettingName([Apr2025])]
public DungeonItemLocations Compasses { get; set; } = DungeonItemLocations.Dungeon;
[SettingName("showloot")]
[RequiredSetting([Apr2025, Base], ShowLoot.Never)]
[NoSettingName([Apr2025, Base])]
public ShowLoot ShowLoot { get; set; } = ShowLoot.Never;
[SettingName("showmap")]
[RequiredSetting([Apr2025, Base], ShowMap.Map)]
[NoSettingName([Apr2025, Base])]
public ShowMap ShowMap { get; set; } = ShowMap.Map;
[NoSettingName]
[RequiredSetting([Apr2025], ShopShuffle.Vanilla)]
public ShopShuffle ShopShuffle { get; set; } = ShopShuffle.Vanilla;
[RequiredSetting([Apr2025], DropShuffle.Vanilla)]
[NoSettingName([Apr2025])]
public DropShuffle DropShuffle { get; set; } = DropShuffle.Vanilla;
[RequiredSetting([Apr2025], Pottery.Vanilla)]
[NoSettingName([Apr2025])]
public Pottery Pottery { get; set; } = Pottery.Vanilla;
[RequiredSetting([Apr2025], PrizeShuffle.Vanilla)]
[NoSettingName([Apr2025])]
public PrizeShuffle PrizeShuffle { get; set; } = PrizeShuffle.Vanilla;
[NoSettingName]
[ForbiddenSetting([Apr2025], BootsSettings.Starting)]
public BootsSettings Boots { get; set; } = BootsSettings.Normal;
[NoSettingName]
[RequiredSetting([Apr2025], FluteSettings.Normal)]
public FluteSettings Flute { get; set; } = FluteSettings.Normal;
[SettingName("dark_rooms")]
[RequiredSetting([Apr2025], DarkRoomSettings.RequireLamp)]
[NoSettingName([Apr2025])]
public DarkRoomSettings DarkRooms { get; set; } = DarkRoomSettings.RequireLamp;
[NoSettingName]
[RequiredSetting([Apr2025], BombSettings.Normal)]
public BombSettings Bombs { get; set; } = BombSettings.Normal;
[NoSettingName]
[RequiredSetting([Apr2025], BookSettings.Normal)]
public BookSettings Book { get; set; } = BookSettings.Normal;
[NoSettingName]
[RequiredSetting([Apr2025], MirrorSettings.Normal)]
public MirrorSettings Mirror { get; set; } = MirrorSettings.Normal;
[SettingName("door_shuffle")]
[RequiredSetting([Apr2025], DoorShuffle.Vanilla)]
[NoSettingName([Apr2025])]
public DoorShuffle DoorShuffle { get; set; } = DoorShuffle.Vanilla;
[SettingName("intensity")]
[NoSettingName([Apr2025])]
public DoorLobbies Lobbies { get; set; } = DoorLobbies.Vanilla;
[SettingName("door_type_mode")]
[NoSettingName([Apr2025])]
public DoorTypeMode DoorTypeMode { get; set; } = DoorTypeMode.Big;
[SettingName("trap_door_mode")]
[NoSettingName([Apr2025])]
public TrapDoorMode TrapDoorMode { get; set; } = TrapDoorMode.Optional;
[NoSettingName]
[RequiredSetting([Apr2025], FollowerShuffle.Vanilla)]
public FollowerShuffle FollowerShuffle { get; set; } = FollowerShuffle.Vanilla;
[SettingName("ow_fluteshuffle")]
[NoSettingName([Apr2025])]
public FluteShuffle FluteShuffle { get; set; } = FluteShuffle.Vanilla;
[NoSettingName]
[RequiredSetting([Apr2025], TileSwap.Vanilla)]
public TileSwap TileSwap { get; set; } = TileSwap.Vanilla;
[SettingName("damage_challenge")]
[NoSettingName([Apr2025])]
public DamageChallengeMode DamageChallenge { get; set; } = DamageChallengeMode.Normal;
[NoSettingName]
public Hints Hints { get; set; } = Hints.Off;
}
public enum RandomizerInstance
{
[RandomizerName(BaseRandomizer.Name)] Base,
[RandomizerName(Apr2025Randomizer.Name)] Apr2025,
[RandomizerName(BaseRandomizer.DungeonMapName)] DungeonMap,
}
public enum RaceMode {
Normal,
[AdditionalSetting("--securerandom")] Race,
}
public enum Mode {
Open,
Standard,
Inverted,
}
public enum Weapons {
Random,
Assured,
Vanilla,
Swordless,
[SettingName("assured")] [AddStartingItems("Progressive_Sword")] AssuredMaster,
}
public enum Goal {
Ganon,
[SettingName("crystals")] FastGanon,
[SettingName("dungeons")] AllDungeons,
Pedestal,
[SettingName("triforcehunt")]TriforceHunt,
GanonHunt,
Completionist,
Sanctuary,
}
public enum EntryRequirement {
[JsonStringEnumMemberName("0")] [SettingName("0")] Crystals0 = 0,
[JsonStringEnumMemberName("1")] [SettingName("1")] Crystals1 = 1,
[JsonStringEnumMemberName("2")] [SettingName("2")] Crystals2 = 2,
[JsonStringEnumMemberName("3")] [SettingName("3")] Crystals3 = 3,
[JsonStringEnumMemberName("4")] [SettingName("4")] Crystals4 = 4,
[JsonStringEnumMemberName("5")] [SettingName("5")] Crystals5 = 5,
[JsonStringEnumMemberName("6")] [SettingName("6")] Crystals6 = 6,
[JsonStringEnumMemberName("7")] [SettingName("7")] Crystals7 = 7,
Random,
}
public enum GanonItem {
Silver,
Boomerang,
Hookshot,
Powder,
[SettingName("fire_rod")] FireRod,
[SettingName("ice_rod")] IceRod,
Bombos,
Ether,
Quake,
Hammer,
Bee,
Somaria,
Byrna,
Random,
None,
}
public enum EntranceShuffle {
Vanilla,
Full,
Crossed,
Swapped,
[SettingName("insanity")] Decoupled,
}
public enum SkullWoodsShuffle {
Original,
Restricted,
Loose,
FollowLinked,
}
public enum LinkedDrops {
Unset,
Linked,
Independent,
}
public enum BossShuffle {
[SettingName("none")] Vanilla,
Simple,
Full,
Random,
[SettingName("unique")] PrizeUnique,
}
public enum EnemyShuffle {
[SettingName("none")] Vanilla,
Shuffled,
Mimics,
}
public enum DamageTableShuffle {
Vanilla,
Randomized,
}
public enum KeyLocations {
[SettingName("none")] Dungeon,
[AdditionalSetting([Apr2025], "--keysanity")] Wild,
Nearby,
Universal,
}
public enum DungeonItemLocations {
[SettingName("none")] Dungeon,
Wild,
Nearby,
}
public enum ShopShuffle {
Vanilla,
[AdditionalSetting("--shopsanity")] Shuffled,
}
public enum DropShuffle {
[SettingName("none")] Vanilla,
Keys,
Underworld,
}
public enum Pottery {
[SettingName("none")] Vanilla,
[AdditionalSetting("--colorizepots")] Keys,
[AdditionalSetting("--colorizepots")] Cave,
[AdditionalSetting("--colorizepots")] CaveKeys,
[AdditionalSetting("--colorizepots")] Reduced,
[AdditionalSetting("--colorizepots")] Clustered,
[AdditionalSetting("--colorizepots")] NonEmpty,
[AdditionalSetting("--colorizepots")] Dungeon,
Lottery,
}
public enum PrizeShuffle {
[SettingName("none")] Vanilla,
Dungeon,
Nearby,
Wild,
}
public enum ShowLoot {
Never,
Presence,
Compass,
Always,
}
public enum ShowMap {
Visited,
Map,
Always,
}
public enum BootsSettings {
Normal,
[AdditionalSetting("--pseudoboots")] Pseudoboots,
[AddStartingItems("Pegasus_Boots")] Starting,
}
public enum MirrorSettings {
Normal,
[AdditionalSetting("--mirrorscroll")] Scroll,
[AddStartingItems("Magic_Mirror")] Starting,
}
public enum FluteSettings {
Normal,
[AdditionalSetting("--flute_mode=pseudo")] Pseudoflute,
[AdditionalSetting("--flute_mode=active")] Preactivated,
[AddStartingItems("Ocarina_(Activated)")] Starting,
}
public enum DarkRoomSettings {
[SettingName("require_lamp")] RequireLamp,
[SettingName("always_light_cone")] AlwaysLightCone,
[SettingName("no_dark_rooms")] NoDarkRooms,
[SettingName("require_lamp")] [AddStartingItems("Lamp")] StartingLamp,
[SettingName("always_in_logic")] AlwaysInLogic,
}
public enum BombSettings {
Normal,
[AdditionalSetting("--bombbag")] BombBagRequired,
}
public enum BookSettings {
Normal,
[AdditionalSetting("--crystal_book")] CrystalSwitches,
}
public enum DoorShuffle {
Vanilla,
Basic,
Paired,
Partitioned,
Crossed,
}
public enum DoorLobbies {
[SettingName("2")] Vanilla,
[SettingName("3")] Shuffled,
}
public enum DoorTypeMode {
Original,
Big,
All,
Chaos,
}
public enum TrapDoorMode {
Vanilla,
Optional,
Boss,
[SettingName("oneway")] RemoveAll,
}
public enum FluteShuffle {
Vanilla,
Random,
Balanced,
}
public enum FollowerShuffle {
Vanilla,
[AdditionalSetting("--shuffle_followers")] Shuffled,
}
public enum TileSwap {
Vanilla,
[AdditionalSetting("--ow_mixed")] TileSwap,
}
public enum DamageChallengeMode {
Normal,
OHKO,
Gloom,
}
public enum Hints {
Off,
[AdditionalSetting("--hints")] On,
}
}