Files
GameModes-SpeedHG/src/main/kotlin/club/mcscrims/speedhg/config/KitConfig.kt
2025-12-09 19:57:55 +01:00

152 lines
4.4 KiB
Kotlin

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<String, Double> = getAnchorConfigurations(),
@ConfigField(name = "armorer", description = "Armorer configurations")
val armorer: Map<String, Double> = getArmorerConfigurations(),
@ConfigField(name = "blackpanther", description = "BlackPanther configurations")
val blackPanther: Map<String, Double> = getBlackPantherConfigurations(),
@ConfigField(name = "blitzcrank", description = "Blitzcrank configurations")
val blitzcrank: Map<String, Double> = getBlitzcrankConfigurations(),
@ConfigField(name = "gladiator", description = "Gladiator configurations")
val gladiator: Map<String, Double> = getGladiatorConfigurations(),
@ConfigField(name = "goblin", description = "Goblin configurations")
val goblin: Map<String, Double> = getGoblinConfigurations(),
@ConfigField(name = "icemage", description = "IceMage configurations")
val iceMage: Map<String, Double> = getIceMageConfigurations(),
@ConfigField(name = "poseidon", description = "Poseidon configurations")
val poseidon: Map<String, Double> = getPoseidonConfigurations(),
@ConfigField(name = "rattlesnake", description = "Rattlesnake configurations")
val rattlesnake: Map<String, Double> = getRattlesnakeConfigurations(),
@ConfigField(name = "tesla", description = "Tesla configurations")
val tesla: Map<String, Double> = getTeslaConfigurations(),
@ConfigField(name = "voodoo", description = "Voodoo configurations")
val voodoo: Map<String, Double> = getVoodooConfigurations(),
@ConfigField(name = "perks", description = "Perk configuration")
val perks: Map<String, Pair<String, Double>> = getPerkConfiguration()
) {
fun getAllKitConfigurations(): Map<String, Double>
{
return anchor + armorer + blackPanther + gladiator + goblin + iceMage + poseidon +
rattlesnake + tesla + voodoo
}
fun getConfigForKit(id: String): Map<String, Double>
{
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 )
)