Support multi named tiers of achievements, allow rewarding of xp/gems/crowns upon increasing achievement tiers, and replace old castle siege achievements with new ones
This commit is contained in:
parent
43739743bf
commit
901fecb49a
@ -375,28 +375,76 @@ public enum Achievement
|
||||
AchievementCategory.MASTER_BUILDERS),
|
||||
|
||||
//Castle Siege
|
||||
CASTLE_SIEGE_WINS("FOR THE KING!", 600,
|
||||
new String[]{"Castle Siege.ForTheKing"},
|
||||
new String[]{"Win as Defenders 50 times"},
|
||||
new int[]{50},
|
||||
CASTLE_SIEGE_KILL_STREAK("Kill Streak", 0,
|
||||
new String[]{"Castle Siege New.KillStreak", "Castle Siege TDM.KillStreak"},
|
||||
new String[]{"Earn Kill Streak Rewards"},
|
||||
new int[][]{new int[]{0, 50, 500}, new int[]{0, 100, 750}, new int[]{0, 150, 1000}, new int[]{0, 200, 1500}, new int[]{0, 400, 2000}, new int[]{0, 500, 2500}, new int[]{0, 1000, 3000}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4000}, new int[]{0, 5000, 100000}},
|
||||
new int[]{10, 20, 50, 100, 200, 250, 500, 750, 1000, 2000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_KINGSLAYER("Kingslayer", 800,
|
||||
new String[]{"Castle Siege.KingSlayer"},
|
||||
new String[]{"Get the killing blow on the King"},
|
||||
new int[]{1},
|
||||
|
||||
CASTLE_SIEGE_FIRST_BLOOD("First Blood", 0,
|
||||
new String[]{"Castle Siege New.FirstBlood", "Castle Siege TDM.FirstBlood"},
|
||||
new String[]{"Obtain the first kill in a Match"},
|
||||
new int[][]{new int[]{0, 100, 100}, new int[]{0, 150, 200}, new int[]{0, 200, 300}, new int[]{0, 250, 400}, new int[]{0, 500, 500}},
|
||||
new int[]{2, 5, 10, 25, 50},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_BLOOD_THIRSTY("Blood Thirsty", 1200,
|
||||
new String[]{"Castle Siege.BloodThirsty"},
|
||||
new String[]{"Kill 50 Undead in a single game"},
|
||||
new int[]{1},
|
||||
|
||||
CASTLE_SIEGE_FIGHTER_KIT("Fighter", 0,
|
||||
new String[]{"Castle Siege New.FighterKitKills", "Castle Siege TDM.FighterKitKills"},
|
||||
new String[]{"Kill opponents while wearing the Fighter Kit"},
|
||||
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
|
||||
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_ASSASSIN("Assassin", 1000,
|
||||
new String[]{"Castle Siege.Assassin"},
|
||||
new String[]{"Do 50% or more of the damage to the king"},
|
||||
new int[]{1},
|
||||
|
||||
CASTLE_SIEGE_TANK_KIT("Tank", 0,
|
||||
new String[]{"Castle Siege New.TankKitKills", "Castle Siege TDM.TankKitKills"},
|
||||
new String[]{"Kill opponents while wearing the Tank Kit"},
|
||||
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
|
||||
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_ARCHER_KIT("Archer", 0,
|
||||
new String[]{"Castle Siege New.ArcherKitKills", "Castle Siege TDM.ArcherKitKills"},
|
||||
new String[]{"Kill opponents while wearing the Archer Kit"},
|
||||
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
|
||||
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_DEMOLITIONIST_KIT("Demolitionist", 0,
|
||||
new String[]{"Castle Siege New.DemolitionistKitKills", "Castle Siege TDM.DemolitionistKitKills"},
|
||||
new String[]{"Kill opponents while wearing the Demolitionist Kit"},
|
||||
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
|
||||
new int[]{50, 100, 250, 500, 1000, 1500, 3000, 5000, 10000, 20000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_WINNER("Siege", 0,
|
||||
new String[]{"Castle Siege New.Wins", "Castle Siege TDM.Wins"},
|
||||
new String[]{"Win games of Castle Siege"},
|
||||
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
|
||||
new int[]{2, 5, 25, 50, 100, 150, 250, 500, 1000, 2000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
CASTLE_SIEGE_MEDALIST("Medalist", 0,
|
||||
new String[]{"Castle Siege New.MedalsEarned", "Castle Siege TDM.MedalsEarned"},
|
||||
new String[]{"Earn Bronze, Silver, or Gold Medals in Castle Siege Matches"},
|
||||
new int[][]{new int[]{0, 100, 500}, new int[]{0, 150, 750}, new int[]{0, 250, 1000}, new int[]{0, 500, 1500}, new int[]{0, 1000, 2500}, new int[]{0, 1500, 3500}, new int[]{0, 2000, 4500}, new int[]{0, 3000, 6000}, new int[]{0, 5000, 10000}, new int[]{0, 10000, 100000}},
|
||||
new int[]{2, 50, 150, 250, 500, 1000, 1500, 2500, 5000, 10000},
|
||||
"Novice I",
|
||||
new String[]{"Novice II", "Novice III", "Novice IV", "Novice V", "Master I", "Master II", "Master III", "Master IV", "GRANDMASTER"},
|
||||
AchievementCategory.CASTLE_SIEGE),
|
||||
|
||||
//Champions
|
||||
@ -1135,17 +1183,36 @@ public enum Achievement
|
||||
private String _name;
|
||||
private String[] _desc;
|
||||
private String[] _stats;
|
||||
private int[][] _levelUpRewards;
|
||||
private int[] _levels;
|
||||
private String _defaultLevelName;
|
||||
private String[] _levelNames;
|
||||
private int _gems;
|
||||
private AchievementCategory _category;
|
||||
|
||||
Achievement(String name, int gems, String[] stats, String[] desc, int[][] levelUpRewards, int[] levels, String defaultLevelName, String[] levelNames, AchievementCategory category)
|
||||
{
|
||||
_name = name;
|
||||
_gems = gems;
|
||||
_desc = desc;
|
||||
_stats = stats;
|
||||
_levelUpRewards = levelUpRewards;
|
||||
_levels = levels;
|
||||
_defaultLevelName = defaultLevelName;
|
||||
_levelNames = levelNames;
|
||||
_category = category;
|
||||
}
|
||||
|
||||
Achievement(String name, int gems, String[] stats, String[] desc, int[] levels, AchievementCategory category)
|
||||
{
|
||||
_name = name;
|
||||
_gems = gems;
|
||||
_desc = desc;
|
||||
_stats = stats;
|
||||
_levelUpRewards = new int[][] {};
|
||||
_levels = levels;
|
||||
_levelNames = new String[] {};
|
||||
_defaultLevelName = "";
|
||||
_category = category;
|
||||
}
|
||||
|
||||
@ -1228,11 +1295,26 @@ public enum Achievement
|
||||
{
|
||||
return _stats;
|
||||
}
|
||||
|
||||
public int[][] getLevelUpRewards()
|
||||
{
|
||||
return _levelUpRewards;
|
||||
}
|
||||
|
||||
public int[] getLevels()
|
||||
{
|
||||
return _levels;
|
||||
}
|
||||
|
||||
public String getDefaultLevelName()
|
||||
{
|
||||
return _defaultLevelName;
|
||||
}
|
||||
|
||||
public String[] getLevelNames()
|
||||
{
|
||||
return _levelNames;
|
||||
}
|
||||
|
||||
public int getMaxLevel()
|
||||
{
|
||||
@ -1248,6 +1330,11 @@ public enum Achievement
|
||||
{
|
||||
return _levels.length == 1;
|
||||
}
|
||||
|
||||
public boolean hasLevelNames()
|
||||
{
|
||||
return _levelNames.length > 0;
|
||||
}
|
||||
|
||||
public AchievementCategory getCategory()
|
||||
{
|
||||
|
@ -85,10 +85,9 @@ public enum AchievementCategory
|
||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED },
|
||||
Material.BLAZE_ROD, 0, GameCategory.SURVIVAL, "Witch Doctor Kit", false, GameDisplay.Wizards.getGameId()),
|
||||
|
||||
CASTLE_SIEGE("Castle Siege", null,
|
||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, new StatDisplay("Kills as Defenders"), new StatDisplay("Deaths as Defenders"),
|
||||
new StatDisplay("Kills as Undead"), new StatDisplay("Deaths as Undead"), StatDisplay.GEMS_EARNED },
|
||||
Material.DIAMOND_CHESTPLATE, 0, GameCategory.CLASSICS, null, false, GameDisplay.CastleSiege.getGameId()),
|
||||
CASTLE_SIEGE("Castle Siege", new String[] {"Castle Siege New", "Castle Siege TDM"},
|
||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.CROWNS_EARNED },
|
||||
Material.DIAMOND_CHESTPLATE, 0, GameCategory.CLASSICS, null, false, GameDisplay.CastleSiegeNew.getGameId()),
|
||||
|
||||
BAWK_BAWK_BATTLES("Bawk Bawk Battles", null,
|
||||
new StatDisplay[] { StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.GEMS_EARNED },
|
||||
|
@ -89,6 +89,7 @@ public class StatDisplay
|
||||
public static final StatDisplay KILLS = new StatDisplay("Kills");
|
||||
public static final StatDisplay DEATHS = new StatDisplay("Deaths");
|
||||
public static final StatDisplay GEMS_EARNED = new StatDisplay("Gems Earned", "GemsEarned");
|
||||
public static final StatDisplay CROWNS_EARNED = new StatDisplay("Crowns Earned", "CrownsEarned");
|
||||
public static final StatDisplay TIME_IN_GAME = new StatDisplay("Time In Game", "TimeInGame");
|
||||
public static final StatDisplay GAMES_PLAYED = new StatDisplay("Games Played", "Wins", "Losses");
|
||||
|
||||
|
@ -3,6 +3,15 @@ package mineplex.core.achievement.ui.page;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.achievement.Achievement;
|
||||
import mineplex.core.achievement.AchievementCategory;
|
||||
@ -20,14 +29,6 @@ import mineplex.core.shop.page.ShopPageBase;
|
||||
import mineplex.core.stats.PlayerStats;
|
||||
import mineplex.core.stats.StatsManager;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class AchievementPage extends ShopPageBase<AchievementManager, AchievementShop>
|
||||
{
|
||||
private static int ACHIEVEMENT_MIDDLE_INDEX = 31;
|
||||
@ -68,6 +69,7 @@ public class AchievementPage extends ShopPageBase<AchievementManager, Achievemen
|
||||
{
|
||||
AchievementData data = getPlugin().get(_targetStats, achievement);
|
||||
boolean singleLevel = achievement.isSingleLevel();
|
||||
boolean levelNames = achievement.hasLevelNames();
|
||||
boolean hasUnlocked = data.getLevel() >= achievement.getMaxLevel();
|
||||
|
||||
if (!hasUnlocked)
|
||||
@ -80,7 +82,16 @@ public class AchievementPage extends ShopPageBase<AchievementManager, Achievemen
|
||||
String itemName = (hasUnlocked ? C.cGreen : C.cRed) + achievement.getName();
|
||||
|
||||
if (!singleLevel)
|
||||
itemName += ChatColor.WHITE + " Level " + data.getLevel() + "/" + achievement.getMaxLevel();
|
||||
{
|
||||
if (!levelNames)
|
||||
{
|
||||
itemName += ChatColor.WHITE + " Level " + data.getLevel() + "/" + achievement.getMaxLevel();
|
||||
}
|
||||
else
|
||||
{
|
||||
itemName += ChatColor.GOLD + " Tier: " + (data.getLevel() == 0 ? achievement.getDefaultLevelName() : achievement.getLevelNames()[Math.min(data.getLevel(), achievement.getLevelNames().length) - 1]);
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add(" ");
|
||||
|
Loading…
Reference in New Issue
Block a user