Treasure update

This commit is contained in:
Mini-Chiss 2015-02-10 12:09:37 +13:00
parent 26463ba75d
commit af95d3ba4e
9 changed files with 85 additions and 32 deletions

View File

@ -291,10 +291,11 @@ public class RewardManager
int currentReward = 0;
Reward[] rewards = new Reward[4];
boolean hasUncommon = false;
boolean canGiveMythical = true;
while (currentReward < 4)
{
Reward reward = nextReward(player, rewards, currentReward == 3 && !hasUncommon, type);
Reward reward = nextReward(player, rewards, currentReward == 3 && !hasUncommon, type, canGiveMythical);
if (reward == null)
{
@ -305,6 +306,13 @@ public class RewardManager
{
hasUncommon = true;
}
//Only allow 1 Mythical
if (reward.getRarity().ordinal() >= RewardRarity.MYTHICAL.ordinal())
{
canGiveMythical = false;
}
rewards[currentReward] = reward;
currentReward++;
}
@ -328,14 +336,14 @@ public class RewardManager
// return nextReward(player, excludedRewards, false, isChestOpening);
// }
public Reward nextReward(Player player, Reward[] excludedRewards, boolean requiresUncommon, RewardType type)
public Reward nextReward(Player player, Reward[] excludedRewards, boolean requiresUncommon, RewardType type, boolean canGiveMythical)
{
RewardRarity rarity = type.generateRarity(requiresUncommon);
//Dont give Rank Upgrade if already has Legend
if (rarity == RewardRarity.MYTHICAL)
{
if (_clientManager.Get(player).GetRank().Has(Rank.LEGEND))
if (!canGiveMythical || _clientManager.Get(player).GetRank().Has(Rank.LEGEND))
{
rarity = RewardRarity.LEGENDARY;
}

View File

@ -4,9 +4,9 @@ public enum RewardType
{
//% Chances Mythic Legend Rare Uncommon
GameLoot( 0.000001, 0.001, 0.004, 3),
BasicChest( 0, 0.01, 0.04, 5),
HeroicChest( 0, 1, 4, 25),
LegendaryChest( 0.5, 2.5, 10, 40);
OldChest( 0, 0.01, 0.04, 5),
AncientChest( 0, 1, 4, 25),
MythicalChest( 0.5, 2.5, 10, 40);
private double _mythicalChance;
private double _legendaryChance;

View File

@ -91,7 +91,7 @@ public class Treasure
_chestData[i] = new ChestData(chestBlocks[i]);
}
if (_treasureType == TreasureType.HEROIC || _treasureType == TreasureType.LEGENDARY)
if (_treasureType == TreasureType.ANCIENT || _treasureType == TreasureType.MYTHICAL)
_animations.add(new BlockChangeAnimation(this, _otherBlockInfo));
}

View File

@ -99,7 +99,7 @@ public class TreasureLocation implements Listener
setHoloChestVisible(false);
if (treasureType == TreasureType.HEROIC || treasureType == TreasureType.LEGENDARY)
if (treasureType == TreasureType.ANCIENT || treasureType == TreasureType.MYTHICAL)
Bukkit.broadcastMessage(F.main("Treasure", F.name(player.getName()) + " is opening a " + treasureType.getName()));
Reward[] rewards = _treasureManager.getRewards(player, treasureType.getRewardType());

View File

@ -7,11 +7,11 @@ import mineplex.core.reward.RewardType;
public enum TreasureType
{
BASIC(C.cYellow + "Basic Chest", "Basic Chest", RewardType.BasicChest, Material.CHEST, TreasureStyle.BASIC),
OLD(C.cYellow + "Basic Chest", "Basic Chest", RewardType.OldChest, Material.CHEST, TreasureStyle.BASIC),
HEROIC(C.cGold + "Heroic Chest", "Heroic Chest", RewardType.HeroicChest, Material.TRAPPED_CHEST, TreasureStyle.HEROIC),
ANCIENT(C.cGold + "Heroic Chest", "Heroic Chest", RewardType.AncientChest, Material.TRAPPED_CHEST, TreasureStyle.HEROIC),
LEGENDARY(C.cRed + "Legendary Chest", "Legendary Chest", RewardType.LegendaryChest, Material.ENDER_CHEST, TreasureStyle.LEGENDARY);
MYTHICAL(C.cRed + "Legendary Chest", "Legendary Chest", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.LEGENDARY);
private final String _name;
private final RewardType _rewardType;

View File

@ -51,13 +51,13 @@ public class BlockChangeAnimation extends Animation
}
else if (b.getType() == Material.SMOOTH_BRICK)
{
Material newMaterial = getTreasure().getTreasureType() == TreasureType.HEROIC ? Material.NETHER_BRICK : Material.QUARTZ_BLOCK;
Material newMaterial = getTreasure().getTreasureType() == TreasureType.ANCIENT ? Material.NETHER_BRICK : Material.QUARTZ_BLOCK;
_blockInfoList.add(new BlockInfo(b));
b.setType(newMaterial);
}
else if (b.getType() == Material.SMOOTH_STAIRS || b.getType() == Material.COBBLESTONE_STAIRS)
{
Material newMaterial = getTreasure().getTreasureType() == TreasureType.HEROIC ? Material.NETHER_BRICK_STAIRS : Material.QUARTZ_STAIRS;
Material newMaterial = getTreasure().getTreasureType() == TreasureType.ANCIENT ? Material.NETHER_BRICK_STAIRS : Material.QUARTZ_STAIRS;
_blockInfoList.add(new BlockInfo(b));
b.setType(newMaterial);
}

View File

@ -80,11 +80,11 @@ public class ChestSpawnAnimation extends Animation
_particleLocation.add(_particleDirection);
//Play Particels
if (getTreasure().getTreasureType() == TreasureType.BASIC)
if (getTreasure().getTreasureType() == TreasureType.OLD)
{
UtilParticle.PlayParticle(getTreasure().getTreasureType().getStyle().getSecondaryParticle(), _centerLocation, 0.1f, 0.1f, 0.1f, 0, 1);
}
else if (getTreasure().getTreasureType() == TreasureType.HEROIC)
else if (getTreasure().getTreasureType() == TreasureType.ANCIENT)
{
float x = (float) (Math.sin(getTicks()/4D));
float z = (float) (Math.cos(getTicks()/4D));
@ -95,7 +95,7 @@ public class ChestSpawnAnimation extends Animation
UtilParticle.PlayParticle(getTreasure().getTreasureType().getStyle().getSecondaryParticle(), newLoc, 0f, 0f, 0f, 0, 1);
}
else if (getTreasure().getTreasureType() == TreasureType.LEGENDARY)
else if (getTreasure().getTreasureType() == TreasureType.MYTHICAL)
{
float y = 5 * scale;
double width = 0.7 * ((double) getTicks() / (double) ANIMATION_DURATION);

View File

@ -0,0 +1,37 @@
package mineplex.core.treasure.gui;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.shop.item.IButton;
public class BuyBasicChestButton implements IButton
{
private Player _player;
private InventoryManager _inventoryManager;
public BuyBasicChestButton(Player player, InventoryManager inventoryManager)
{
_player = player;
_inventoryManager = inventoryManager;
}
@Override
public void onClick(Player player, ClickType clickType)
{
//need to do this :o
// Shop.OpenPageForPlayer(player, new ConfirmationPage<CosmeticManager, CosmeticShop>(Plugin, Shop, ClientManager, DonationManager, new Runnable()
// {
// public void run()
// {
// _inventoryManager.addItemToInventory(player, "Item", "Old Chest", 1);
// Refresh();
// }
// }, this, new TreasureKey(), CurrencyType.Coins, Player));
_inventoryManager.addItemToInventory(player, "Item", "Old Chest", 1);
}
}

View File

@ -36,38 +36,46 @@ public class TreasurePage extends ShopPageBase<TreasureManager, TreasureShop>
@Override
protected void BuildPage()
{
int basicCount = _inventoryManager.Get(Player).getItemCount(TreasureType.BASIC.getItemName());
int heroicCount = _inventoryManager.Get(Player).getItemCount(TreasureType.HEROIC.getItemName());
int legendaryCount = _inventoryManager.Get(Player).getItemCount(TreasureType.LEGENDARY.getItemName());
int basicCount = _inventoryManager.Get(Player).getItemCount(TreasureType.OLD.getItemName());
int heroicCount = _inventoryManager.Get(Player).getItemCount(TreasureType.ANCIENT.getItemName());
int legendaryCount = _inventoryManager.Get(Player).getItemCount(TreasureType.MYTHICAL.getItemName());
List<String> basicLore = new ArrayList<String>();
basicLore.add(" ");
basicLore.add(F.value("Basic Chests Owned", "" + basicCount));
basicLore.add(F.value("Old Chests Owned", "" + basicCount));
basicLore.add(" ");
if (basicCount > 0)
basicLore.add(ChatColor.RESET + "Click to open!");
basicLore.add(ChatColor.RESET + "Click to Open!");
else
{
basicLore.add(ChatColor.RESET + "Cost: " + C.cYellow + "1000 Coins");
basicLore.add(ChatColor.RESET + "Click to Purchase!");
}
List<String> heroicLore = new ArrayList<String>();
heroicLore.add(" ");
heroicLore.add(F.value("Heroic Chests Owned", "" + heroicCount));
heroicLore.add(F.value("Ancient Chests Owned", "" + heroicCount));
heroicLore.add(" ");
if (heroicCount > 0)
heroicLore.add(ChatColor.RESET + "Click to open!");
heroicLore.add(ChatColor.RESET + "Click to Open!");
List<String> legendaryLore = new ArrayList<String>();
legendaryLore.add(" ");
legendaryLore.add(F.value("Legendary Chests Owned", "" + legendaryCount));
legendaryLore.add(F.value("Mythical Chests Owned", "" + legendaryCount));
legendaryLore.add(" ");
if (legendaryCount > 0)
legendaryLore.add(ChatColor.RESET + "Click to open!");
legendaryLore.add(ChatColor.RESET + "Click to Open!");
ShopItem basic = new ShopItem(Material.CHEST, C.cGreen + C.Bold + "Old Chest", basicLore.toArray(new String[0]), 0, false, false);
ShopItem heroic = new ShopItem(Material.TRAPPED_CHEST, C.cGold + C.Bold + "Ancient Chest", heroicLore.toArray(new String[0]), 0, false, false);
ShopItem legendary = new ShopItem(Material.ENDER_CHEST, C.cRed + C.Bold + "Mythical Chest", legendaryLore.toArray(new String[0]), 0, false, false);
ShopItem basic = new ShopItem(Material.CHEST, C.cGreen + C.Bold + "Basic Chest", basicLore.toArray(new String[0]), 0, false, false);
ShopItem heroic = new ShopItem(Material.TRAPPED_CHEST, C.cGold + C.Bold + "Heroic Chest", heroicLore.toArray(new String[0]), 0, false, false);
ShopItem legendary = new ShopItem(Material.ENDER_CHEST, C.cRed + C.Bold + "Legendary Chest", legendaryLore.toArray(new String[0]), 0, false, false);
AddButton(2, basic, new OpenTreasureButton(Player, _treasureLocation, TreasureType.BASIC));
AddButton(4, heroic, new OpenTreasureButton(Player, _treasureLocation, TreasureType.HEROIC));
AddButton(6, legendary, new OpenTreasureButton(Player, _treasureLocation, TreasureType.LEGENDARY));
if (basicCount > 0)
AddButton(2, basic, new OpenTreasureButton(Player, _treasureLocation, TreasureType.OLD));
else
AddButton(2, basic, new BuyBasicChestButton(Player, _inventoryManager));
AddButton(4, heroic, new OpenTreasureButton(Player, _treasureLocation, TreasureType.ANCIENT));
AddButton(6, legendary, new OpenTreasureButton(Player, _treasureLocation, TreasureType.MYTHICAL));
}
}