package club.mcscrims.speedhg.config import club.mcscrims.core.config.annotations.ConfigClass import club.mcscrims.core.config.annotations.ConfigField @ConfigClass( name = "kits", description = "Kit configuration", version = "1.0" ) data class KitConfig( @ConfigField(name = "anchor", description = "Anchor configurations") val anchor: Map = getAnchorConfigurations(), @ConfigField(name = "armorer", description = "Armorer configurations") val armorer: Map = getArmorerConfigurations(), @ConfigField(name = "blackpanther", description = "BlackPanther configurations") val blackPanther: Map = getBlackPantherConfigurations(), @ConfigField(name = "blitzcrank", description = "Blitzcrank configurations") val blitzcrank: Map = getBlitzcrankConfigurations(), @ConfigField(name = "gladiator", description = "Gladiator configurations") val gladiator: Map = getGladiatorConfigurations(), @ConfigField(name = "goblin", description = "Goblin configurations") val goblin: Map = getGoblinConfigurations(), @ConfigField(name = "icemage", description = "IceMage configurations") val iceMage: Map = getIceMageConfigurations(), @ConfigField(name = "poseidon", description = "Poseidon configurations") val poseidon: Map = getPoseidonConfigurations(), @ConfigField(name = "rattlesnake", description = "Rattlesnake configurations") val rattlesnake: Map = getRattlesnakeConfigurations(), @ConfigField(name = "tesla", description = "Tesla configurations") val tesla: Map = getTeslaConfigurations(), @ConfigField(name = "voodoo", description = "Voodoo configurations") val voodoo: Map = getVoodooConfigurations(), @ConfigField(name = "perks", description = "Perk configuration") val perks: Map> = getPerkConfiguration() ) { fun getAllKitConfigurations(): Map { return anchor + armorer + blackPanther + gladiator + goblin + iceMage + poseidon + rattlesnake + tesla + voodoo } fun getConfigForKit(id: String): Map { return when (id.lowercase()) { "anchor" -> anchor "armorer" -> armorer "blackpanther" -> blackPanther "gladiator" -> gladiator "goblin" -> goblin "icemage" -> iceMage "poseidon" -> poseidon "rattlesnake" -> rattlesnake "tesla" -> tesla "voodoo" -> voodoo else -> emptyMap() } } } private fun getAnchorConfigurations() = mapOf( "offensive extra damage" to 1.0 ) private fun getArmorerConfigurations() = mapOf( "kills until new armor" to 2.0 ) private fun getBlackPantherConfigurations() = mapOf( "enderpearl hit damage" to 3.0, "extra damage on top" to 0.5, "default hit radius" to 3.0, "explosion multiplier" to 3.0 ) private fun getBlitzcrankConfigurations() = mapOf( "ultimate damage" to 10.0, "ultimate radius" to 5.0, "ultimate stun duration" to 0.5, "hook range" to 8.0, "stun height" to 4.0, "stun radius" to 3.0, "stun slow duration" to 5.0 ) private fun getGladiatorConfigurations() = mapOf( "cage radius" to 23.0, "cage height" to 10.0, "wither effect after x seconds" to 180.0 ) private fun getGoblinConfigurations() = mapOf( "bunker radius" to 10.0, "bunker time until disappear" to 15.0, "knockback and pullin radius" to 7.0, "kit steal time" to 60.0, "soup steal chance" to 20.0 ) private fun getIceMageConfigurations() = mapOf( "chance for slowness" to 2.0 ) private fun getPoseidonConfigurations() = mapOf( "default hit radius" to 3.0, "lightning hit damage" to 4.0 ) private fun getRattlesnakeConfigurations() = mapOf( "maximum jump distance" to 10.0, "speed duration" to 10.0, "poison duration" to 8.0, "maximum negative effect duration" to 16.0, "default jump radius" to 10.0 ) private fun getTeslaConfigurations() = mapOf( "disable push at height" to 50.0, "default thunder radius" to 5.0, "push strength" to 1.0, "fire tick duration" to 5.0, "time until thunder disables" to 7.0, "thunder damage" to 1.5 ) private fun getVoodooConfigurations() = mapOf( "default curse radius" to 3.0, "maximum effect duration" to 15.0, "clicked players minimum health" to 10.0, "voodoo hold duration" to 5.0, "chance for wither effect" to 5.0 ) private fun getPerkConfiguration() = mapOf( "knockback" to Pair( "knockback strength", 1.5 ), "pullin" to Pair( "pullin strength", 0.5 ), "radiusincrease" to Pair( "new radius", 5.0 ) )