using CustomPlayerEffects; namespace GamblingCoin; public class GamblingCoinChancesConfig { public int NukeChance { get; set; } = 10; public int SpawnWaveChance { get; set; } = 150; public int CommonItemChance { get; set; } = 600; public int UncommonItemChance { get; set; } = 400; public int RareItemChance { get; set; } = 250; public int EpicItemChance { get; set; } = 100; public int LegendaryItemChance { get; set; } = 30; public int RandomTeleportChance { get; set; } = 200; public int StealItemChance { get; set; } = 100; public int ExplosionChance { get; set; } = 40; public int AntiMicroChance { get; set; } = 10; public int GrenadeChance { get; set; } = 50; public int PocketDimensionChance { get; set; } = 30; public int SwitchInventoryChance { get; set; } = 150; public int PositiveEffectChance { get; set; } = 300; public int NegativeEffectChance { get; set; } = 350; public int AdvancedPositiveEffectChance { get; set; } = 150; public int AdvancedNegativeEffectChance { get; set; } = 250; public int RemoveCoinChance { get; set; } = 300; public int SpawnZombieChance { get; set; } = 100; } public class GamblingCoinMessages { public string SpawnWaveMessage { get; set; } = "Did someone just enter the Site...?"; public string ItemSpawnMessage { get; set; } = "*plop*"; public string UncommonItemSpawnMessage { get; set; } = "*bump*"; public string RareItemSpawnMessage { get; set; } = "*badunk*"; public string EpicItemSpawnMessage { get; set; } = "*katong*"; public string LegendaryItemSpawnMessage { get; set; } = "*sounds of monetary loss*"; public string RandomTeleportMessage { get; set; } = "Where did you go?"; public string StealItemMessage { get; set; } = "Be careful, the coin is slippery!"; public string ExplosionMessage { get; set; } = "How did you even die '-'"; public string AntiMicroMessage { get; set; } = "Where did all the micros go..."; public string GrenadeMessage { get; set; } = "Watch out!"; public string PocketDimensionMessage { get; set; } = "I hear he likes to see people suffer..."; public string PositiveEffectMessage { get; set; } = "You feel slightly better"; public string AdvancedPositiveEffectMessage { get; set; } = "You feel better"; public string NegativeEffectMessage { get; set; } = "You feel worse"; public string AdvancedNegativeEffectMessage { get; set; } = "You feel like you could die any second"; public string SwitchInventoryMessage { get; set; } = "Whoops... looks like something happened to your items!"; public string SpawnZombieMessage { get; set; } = "You spawned as a Zombie!"; } public class GamblingCoinGameplayConfig { public float WarheadTimeIncrease { get; set; } = 20f; public ushort BroadcastDuration { get; set; } = 3; public float TeleportHeightOffset { get; set; } = 1f; public int MaxMicrosToRemove { get; set; } = 8; public ItemPoolConfig Items { get; set; } = new(); public EffectConfig Effects { get; set; } = new(); } public class ItemPoolConfig { public ItemType[] CommonItems { get; set; } = { ItemType.KeycardJanitor, ItemType.KeycardScientist, ItemType.Medkit, ItemType.Painkillers, ItemType.Radio, ItemType.Flashlight }; public ItemType[] UncommonItems { get; set; } = { ItemType.KeycardZoneManager, ItemType.KeycardGuard, ItemType.KeycardResearchCoordinator, ItemType.Adrenaline, ItemType.ArmorLight, ItemType.GrenadeFlash }; public ItemType[] RareItems { get; set; } = { ItemType.KeycardMTFPrivate, ItemType.KeycardContainmentEngineer, ItemType.KeycardMTFOperative, ItemType.ArmorCombat, ItemType.ArmorHeavy, ItemType.SCP330, ItemType.Lantern, ItemType.GrenadeHE }; public ItemType[] EpicItems { get; set; } = { ItemType.KeycardFacilityManager, ItemType.KeycardChaosInsurgency, ItemType.KeycardMTFCaptain, ItemType.SCP500 }; public ItemType[] LegendaryItems { get; set; } = { ItemType.KeycardO5, ItemType.MicroHID, ItemType.Jailbird, ItemType.GunCom45, ItemType.Coin }; } public class EffectConfig { public AdvancedEffectSettings AdvancedPositive { get; set; } = new() { Effects = new[] { nameof(Invisible), nameof(DamageReduction), nameof(MovementBoost) }, Settings = new Dictionary { { nameof(Invisible), new EffectSettings(1, 5f, true) }, { nameof(DamageReduction), new EffectSettings(100, 8f, false) }, { nameof(MovementBoost), new EffectSettings(40, 2f, false) } } }; public AdvancedEffectSettings Positive { get; set; } = new() { Effects = new[] { nameof(Invigorated), nameof(RainbowTaste), nameof(Vitality), nameof(BodyshotReduction) }, Settings = new Dictionary { { nameof(Invigorated), new EffectSettings(1, 5f, true) }, { nameof(RainbowTaste), new EffectSettings(2, 10f, true) }, { nameof(Vitality), new EffectSettings(1, 10f, true) }, { nameof(BodyshotReduction), new EffectSettings(4, 5f, true) } } }; public AdvancedEffectSettings Negative { get; set; } = new() { Effects = new[] { nameof(Asphyxiated), nameof(AmnesiaVision), nameof(Bleeding), nameof(Blurred), nameof(Concussed), nameof(Deafened), nameof(Disabled) }, Settings = new Dictionary { { nameof(Asphyxiated), new EffectSettings(1, 10f, true) }, { nameof(AmnesiaVision), new EffectSettings(1, 5f, true) }, { nameof(Bleeding), new EffectSettings(1, 5f, true) }, { nameof(Blurred), new EffectSettings(1, 5f, true) }, { nameof(Concussed), new EffectSettings(1, 5f, true) }, { nameof(Deafened), new EffectSettings(1, 5f, true) }, { nameof(Disabled), new EffectSettings(1, 5f, true) } } }; public AdvancedEffectSettings AdvancedNegative { get; set; } = new() { Effects = new[] { nameof(InsufficientLighting), nameof(AmnesiaVision), nameof(Burned) }, Settings = new Dictionary { { nameof(InsufficientLighting), new EffectSettings(1, 30f, true) }, { nameof(AmnesiaVision), new EffectSettings(3, 30f, true) }, { nameof(Burned), new EffectSettings(3, 60f, true) } } }; } public class AdvancedEffectSettings { public string[] Effects { get; set; } public Dictionary Settings { get; set; } } public class EffectSettings { public EffectSettings(byte intensity, float duration, bool addDuration) { Intensity = intensity; Duration = duration; AddDuration = addDuration; } public EffectSettings() { } public byte Intensity { get; set; } public float Duration { get; set; } public bool AddDuration { get; set; } }