Creation of SkillBuffTrigger.

This commit is contained in:
Ka0rX 2023-03-30 18:45:03 +01:00
parent 14f1a7fcc2
commit 0f4699fbea
3 changed files with 52 additions and 1 deletions

View File

@ -0,0 +1,50 @@
package net.Indyuce.mmocore.api.quest.trigger;
import io.lumine.mythic.lib.api.MMOLineConfig;
import io.lumine.mythic.lib.api.skill.SkillBuff;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.quest.trigger.api.Removable;
import net.Indyuce.mmocore.skill.RegisteredSkill;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class SkillBuffTrigger extends Trigger implements Removable {
private final SkillBuff skillBuff;
private final String buffKey = TRIGGER_PREFIX + "." + UUID.randomUUID();
private final double amount;
public SkillBuffTrigger(MMOLineConfig config) {
super(config);
config.validateKeys("skill-modifier");
config.validateKeys("amount");
config.validateKeys("formula");
config.validateKeys("type");
amount = config.getDouble("amount");
String skillModifier = config.getString("skill-modifier");
String formula = config.getString("formula");
List<String> targetSkills = new ArrayList<>();
for (RegisteredSkill skill : MMOCore.plugin.skillManager.getAll()) {
if (skill.matchesFormula(formula))
targetSkills.add(skill.getHandler().getId());
}
skillBuff = new SkillBuff(buffKey, skillModifier, targetSkills, amount);
}
@Override
public void apply(PlayerData player) {
if (player.getMMOPlayerData().getSkillBuffMap().hasSkillBuff(buffKey)) {
player.getMMOPlayerData().getSkillBuffMap().getSkillBuff(buffKey).add(amount).register(player.getMMOPlayerData());
} else {
skillBuff.register(player.getMMOPlayerData());
}
}
@Override
public void remove(PlayerData playerData) {
skillBuff.unregister(playerData.getMMOPlayerData());
}
}

View File

@ -10,7 +10,6 @@ import org.apache.commons.lang.Validate;
import java.util.UUID;
public class StatTrigger extends Trigger implements Removable {
public static String TRIGGER_PREFIX = "mmocore_trigger";
private final StatModifier statModifier;
private final String stat;
private final String modifierKey = TRIGGER_PREFIX + "." + UUID.randomUUID();

View File

@ -6,6 +6,8 @@ import net.Indyuce.mmocore.api.player.PlayerData;
import org.bukkit.Bukkit;
public abstract class Trigger {
public static String TRIGGER_PREFIX = "mmocore_trigger";
private final long delay;
public Trigger(MMOLineConfig config) {