Add per-skill XP boost perks.

Fixes #1412
This commit is contained in:
GJ
2013-09-03 09:24:58 -04:00
parent 7eec53d621
commit a639a37637
6 changed files with 338 additions and 22 deletions

View File

@ -706,7 +706,7 @@ public class McMMOPlayer {
}
}
return PerksUtils.handleXpPerks(player, xp);
return PerksUtils.handleXpPerks(player, xp, skillType);
}
public void checkGodMode() {

View File

@ -83,10 +83,11 @@ public final class Motd {
* @param player Target player
*/
public static void displayXpPerks(Player player) {
float perkAmount = PerksUtils.handleXpPerks(player, 1);
if (perkAmount > 1) {
player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.xp.name"), LocaleLoader.getString("Perks.xp.desc", perkAmount)));
for (SkillType skill : SkillType.values()) {
if (PerksUtils.handleXpPerks(player, 1, skill) > 1) {
player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.xp.name"), LocaleLoader.getString("Perks.xp.desc")));
return;
}
}
}

View File

@ -101,11 +101,11 @@ public final class Permissions {
public static boolean lucky(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.lucky." + skill.toString().toLowerCase()); }
/* XP PERKS */
public static boolean quadrupleXp(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.xp.quadruple"); }
public static boolean tripleXp(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.xp.triple"); }
public static boolean doubleAndOneHalfXp(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.xp.150percentboost"); }
public static boolean doubleXp(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.xp.double"); }
public static boolean oneAndOneHalfXp(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.xp.50percentboost"); }
public static boolean quadrupleXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.quadruple." + skill.toString().toLowerCase()); }
public static boolean tripleXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.triple." + skill.toString().toLowerCase()); }
public static boolean doubleAndOneHalfXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.150percentboost." + skill.toString().toLowerCase()); }
public static boolean doubleXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.double." + skill.toString().toLowerCase()); }
public static boolean oneAndOneHalfXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.50percentboost." + skill.toString().toLowerCase()); }
/* ACTIVATION PERKS */
public static boolean twelveSecondActivationBoost(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.activationtime.twelveseconds"); }

View File

@ -43,20 +43,20 @@ public final class PerksUtils {
return ticks;
}
public static float handleXpPerks(Player player, float xp) {
if (Permissions.quadrupleXp(player)) {
public static float handleXpPerks(Player player, float xp, SkillType skill) {
if (Permissions.quadrupleXp(player, skill)) {
xp *= 4;
}
else if (Permissions.tripleXp(player)) {
else if (Permissions.tripleXp(player, skill)) {
xp *= 3;
}
else if (Permissions.doubleAndOneHalfXp(player)) {
else if (Permissions.doubleAndOneHalfXp(player, skill)) {
xp *= 2.5;
}
else if (Permissions.doubleXp(player)) {
else if (Permissions.doubleXp(player, skill)) {
xp *= 2;
}
else if (Permissions.oneAndOneHalfXp(player)) {
else if (Permissions.oneAndOneHalfXp(player, skill)) {
xp *= 1.5;
}