forked from Upstream/mmocore
Creation of SkillBuffTrigger.
This commit is contained in:
parent
14f1a7fcc2
commit
0f4699fbea
@ -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());
|
||||||
|
}
|
||||||
|
}
|
@ -10,7 +10,6 @@ import org.apache.commons.lang.Validate;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class StatTrigger extends Trigger implements Removable {
|
public class StatTrigger extends Trigger implements Removable {
|
||||||
public static String TRIGGER_PREFIX = "mmocore_trigger";
|
|
||||||
private final StatModifier statModifier;
|
private final StatModifier statModifier;
|
||||||
private final String stat;
|
private final String stat;
|
||||||
private final String modifierKey = TRIGGER_PREFIX + "." + UUID.randomUUID();
|
private final String modifierKey = TRIGGER_PREFIX + "." + UUID.randomUUID();
|
||||||
|
@ -6,6 +6,8 @@ import net.Indyuce.mmocore.api.player.PlayerData;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
public abstract class Trigger {
|
public abstract class Trigger {
|
||||||
|
|
||||||
|
public static String TRIGGER_PREFIX = "mmocore_trigger";
|
||||||
private final long delay;
|
private final long delay;
|
||||||
|
|
||||||
public Trigger(MMOLineConfig config) {
|
public Trigger(MMOLineConfig config) {
|
||||||
|
Loading…
Reference in New Issue
Block a user