From d95a794d9c6ef8a84cc6a8a80d4229a69f28f1be Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 13 May 2023 12:44:09 +0100 Subject: [PATCH] Added magic cost argument --- .../libreforge/EffectArgumentMagicCost.kt | 25 +++++++++++++++++++ .../com/willfp/ecoskills/mana/MagicType.kt | 3 +++ 2 files changed, 28 insertions(+) create mode 100644 eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/libreforge/EffectArgumentMagicCost.kt diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/libreforge/EffectArgumentMagicCost.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/libreforge/EffectArgumentMagicCost.kt new file mode 100644 index 0000000..d776b8b --- /dev/null +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/libreforge/EffectArgumentMagicCost.kt @@ -0,0 +1,25 @@ +package com.willfp.ecoskills.libreforge + +import com.willfp.ecoskills.mana.MagicType +import com.willfp.ecoskills.mana.magic +import com.willfp.libreforge.ConfigurableElement +import com.willfp.libreforge.NoCompileData +import com.willfp.libreforge.effects.arguments.EffectArgument +import com.willfp.libreforge.getIntFromExpression +import com.willfp.libreforge.triggers.DispatchedTrigger + +class EffectArgumentMagicCost(private val type: MagicType) : EffectArgument("${type.id}_cost") { + override fun isMet(element: ConfigurableElement, trigger: DispatchedTrigger, compileData: NoCompileData): Boolean { + val cost = element.config.getIntFromExpression("${type.id}_cost", trigger.data) + val player = trigger.player + + return player.magic[type] >= cost + } + + override fun ifMet(element: ConfigurableElement, trigger: DispatchedTrigger, compileData: NoCompileData) { + val cost = element.config.getIntFromExpression("${type.id}_cost", trigger.data) + val player = trigger.player + + player.magic[type] -= cost + } +} diff --git a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/mana/MagicType.kt b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/mana/MagicType.kt index 8f775c6..b89d219 100644 --- a/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/mana/MagicType.kt +++ b/eco-core/core-plugin/src/main/kotlin/com/willfp/ecoskills/mana/MagicType.kt @@ -10,6 +10,8 @@ import com.willfp.eco.util.evaluateExpression import com.willfp.eco.util.toNiceString import com.willfp.eco.util.toNumeral import com.willfp.ecoskills.EcoSkillsPlugin +import com.willfp.ecoskills.libreforge.EffectArgumentMagicCost +import com.willfp.libreforge.effects.arguments.EffectArguments import org.bukkit.entity.Player class MagicType( @@ -41,6 +43,7 @@ class MagicType( override fun onRegister() { Prices.registerPriceFactory(PriceFactoryMagic(this)) + EffectArguments.register(EffectArgumentMagicCost(this)) } fun getLimit(player: Player) = evaluateExpression(