From b2982a9ffb69377a9b3f9fde7a47950cfeceb6fd Mon Sep 17 00:00:00 2001 From: Ka0rX Date: Fri, 31 Mar 2023 07:35:47 +0100 Subject: [PATCH] Made CastableSkill.getModifier() take MMOPlayerData to enable it to check player buffs. --- .../api/player/profess/PlayerClass.java | 2 +- .../Indyuce/mmocore/skill/CastableSkill.java | 18 ++++++++++-------- .../mmocore/skill/list/Neptune_Gift.java | 3 ++- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java index d18793ec..0fb0070b 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/profess/PlayerClass.java @@ -185,7 +185,7 @@ public class PlayerClass extends PostLoadObject implements ExperienceObject { if (config.contains("skills." + key)) skills.put(key, new ClassSkill(registered, config.getConfigurationSection("skills." + key))); else - skills.put(key, new ClassSkill(registered, 1, 1)); + skills.put(key, new ClassSkill(registered, 1, 1,false)); } castParticle = config.contains("cast-particle") ? new CastingParticle(config.getConfigurationSection("cast-particle")) : null; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java index c9a31247..70fe5b3f 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java @@ -1,6 +1,7 @@ package net.Indyuce.mmocore.skill; import io.lumine.mythic.lib.MythicLib; +import io.lumine.mythic.lib.api.player.MMOPlayerData; import io.lumine.mythic.lib.comp.flags.CustomFlag; import io.lumine.mythic.lib.player.cooldown.CooldownInfo; import io.lumine.mythic.lib.skill.Skill; @@ -49,13 +50,13 @@ public class CastableSkill extends Skill { } // Mana cost - if (playerData.getMana() < getModifier("mana")) { - if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-mana", "mana-required",MythicLib.plugin.getMMOConfig().decimal.format((getModifier("mana")-playerData.getMana())),"mana", playerData.getProfess().getManaDisplay().getName()).send(playerData.getPlayer()); + if (playerData.getMana() < getModifier("mana",playerData.getMMOPlayerData())) { + if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-mana", "mana-required",MythicLib.plugin.getMMOConfig().decimal.format((getModifier("mana",playerData.getMMOPlayerData())-playerData.getMana())),"mana", playerData.getProfess().getManaDisplay().getName()).send(playerData.getPlayer()); return false; } // Stamina cost - if (playerData.getStamina() < getModifier("stamina")) { + if (playerData.getStamina() < getModifier("stamina",skillMeta.getCaster().getData())) { if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-stamina").send(playerData.getPlayer()); return false; } @@ -76,11 +77,11 @@ public class CastableSkill extends Skill { // Cooldown double flatCooldownReduction = Math.max(0, Math.min(1, skillMeta.getCaster().getStat("COOLDOWN_REDUCTION") / 100)); - CooldownInfo cooldownHandler = skillMeta.getCaster().getData().getCooldownMap().applyCooldown(this, getModifier("cooldown")); + CooldownInfo cooldownHandler = skillMeta.getCaster().getData().getCooldownMap().applyCooldown(this, getModifier("cooldown",casterData.getMMOPlayerData())); cooldownHandler.reduceInitialCooldown(flatCooldownReduction); - casterData.giveMana(-getModifier("mana"), PlayerResourceUpdateEvent.UpdateReason.SKILL_COST); - casterData.giveStamina(-getModifier("stamina"), PlayerResourceUpdateEvent.UpdateReason.SKILL_COST); + casterData.giveMana(-getModifier("mana",skillMeta.getCaster().getData()), PlayerResourceUpdateEvent.UpdateReason.SKILL_COST); + casterData.giveStamina(-getModifier("stamina",casterData.getMMOPlayerData()), PlayerResourceUpdateEvent.UpdateReason.SKILL_COST); } if (!getTrigger().isPassive()) @@ -93,7 +94,8 @@ public class CastableSkill extends Skill { } @Override - public double getModifier(String mod) { - return skill.getModifier(mod, skillLevel); + public double getModifier(String mod, MMOPlayerData playerData) { + return playerData.getSkillBuffMap().getSkillInstance(getHandler().getId()) + .getSkillModifier(mod).getTotal(skill.getModifier(mod, skillLevel)); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/list/Neptune_Gift.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/list/Neptune_Gift.java index 71c036f3..dd22ef41 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/list/Neptune_Gift.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/list/Neptune_Gift.java @@ -5,6 +5,7 @@ import io.lumine.mythic.lib.skill.SkillMetadata; import io.lumine.mythic.lib.skill.handler.SkillHandler; import io.lumine.mythic.lib.skill.result.def.SimpleSkillResult; import net.Indyuce.mmocore.api.event.PlayerResourceUpdateEvent; +import net.Indyuce.mmocore.api.player.PlayerData; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -33,7 +34,7 @@ public class Neptune_Gift extends SkillHandler implements Lis if (skill == null) return; - event.setAmount(event.getAmount() * (1 + skill.getTriggeredSkill().getModifier("extra") / 100)); + event.setAmount(event.getAmount() * (1 + skill.getTriggeredSkill().getModifier("extra", PlayerData.get(event.getPlayer()).getMMOPlayerData()) / 100)); } } }