225 lines
6.9 KiB
C#
225 lines
6.9 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 RaceMode Race { get; set; } = RaceMode.Normal;
|
|
|
|
[ForbiddenSetting([Apr2025], Mode.Inverted)]
|
|
public Mode Mode { get; set; } = Mode.Open;
|
|
|
|
[SettingName("swords")]
|
|
public Weapons Weapons { get; set; } = Weapons.Random;
|
|
|
|
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("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("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;
|
|
|
|
[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;
|
|
}
|
|
|
|
public enum RandomizerInstance {
|
|
[RandomizerName(BaseRandomizer.Name)] Base,
|
|
[RandomizerName(Apr2025Randomizer.Name)] Apr2025,
|
|
}
|
|
|
|
public enum RaceMode {
|
|
Normal,
|
|
[AdditionalSetting("--securerandom")] Race,
|
|
}
|
|
|
|
public enum Mode {
|
|
Open,
|
|
Standard,
|
|
Inverted,
|
|
}
|
|
|
|
public enum Weapons {
|
|
Random,
|
|
Assured,
|
|
Vanilla,
|
|
Swordless,
|
|
}
|
|
|
|
public enum Goal {
|
|
Ganon,
|
|
[SettingName("crystals")] FastGanon,
|
|
[SettingName("dungeons")] AllDungeons,
|
|
Pedestal,
|
|
[SettingName("triforcehunt")]TriforceHunt,
|
|
GanonHunt,
|
|
Completionist,
|
|
}
|
|
|
|
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 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 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 BootsSettings {
|
|
Normal,
|
|
[AdditionalSetting("--pseudoboots")] Pseudoboots,
|
|
[AddStartingItems("Pegasus_Boots")] Starting,
|
|
}
|
|
}
|