SecretPluginLaboratories/GamblingCoin/GamblingCoinConfig.cs
2025-06-08 00:54:06 +02:00

192 lines
7.1 KiB
C#

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<string, EffectSettings>
{
{ 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<string, EffectSettings>
{
{ 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<string, EffectSettings>
{
{ 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<string, EffectSettings>
{
{ 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<string, EffectSettings> 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; }
}