Merge branch 'master' of ssh://184.154.0.242:7999/min/Mineplex into alex-testrank

This commit is contained in:
AlexTheCoder 2015-10-23 00:28:32 -04:00
commit 1512d87f9e
99 changed files with 4760 additions and 405 deletions

View File

@ -55,12 +55,12 @@ public class MotdManager implements Listener, Runnable
//String motdLine = "§f§l◄ §c§lMaintenance§f§l ►";
//String motdLine = "§f§l◄ §a§lCarl the Creeper§f§l ►";
String motdLine = " §b§l◄§f§lNEW GAME§b§l► §f§l◄§b§lEVOLUTION§f§l► §b§l◄§f§lNEW GAME§b§l►";
String motdLine = " §2§l§n M O N S T E R M A Z E B E T A §f";
//String motdLine = " §f§l◄ §a§lCarl the Creeper§f§l ▬ §c§l75% OFF SALE§f§l ►";
//String motdLine = " §d§lRank Sale §a§l40% Off");
//String motdLine = " §f§l◄§c§lMAINTENANCE§f§l►");
updateMainMotd(" §b§l§m §8§l§m[ §r §9§lMineplex§r §f§lGames§r §8§l§m ]§b§l§m §r", motdLine);
updateMainMotd(" §4§l§m §f§l§m §8§l§m[ §r §4§lMineplex§r §f§lGames§r §8§l§m ]§f§l§m §4§l§m §r", motdLine);
System.out.println("Updated Bungee MOTD");
}
}

View File

@ -8,7 +8,7 @@ import java.util.Set;
public class NautHashMap<KeyType, ValueType>
{
private HashMap<KeyType, ValueType> _wrappedHashMap = new HashMap<KeyType, ValueType>();
public boolean containsKey(KeyType key)
{
return _wrappedHashMap.containsKey(key);

View File

@ -0,0 +1,38 @@
package mineplex.core.common.util;
import org.bukkit.Location;
public class RadarData
{
public Location Loc;
public String Text;
private double _bearing = 0;
public RadarData(Location loc, String text)
{
Loc = loc;
Text = text;
}
public void print()
{
System.out.println(Text + ": " + _bearing);
}
public void setBearing(double d)
{
while (d < -180)
d += 360;
while (d > 180)
d -= 360;
_bearing = d;
}
public double getBearing()
{
return _bearing;
}
}

View File

@ -423,4 +423,9 @@ public class UtilAlg
return UtilAlg.findClosest(near, corners);
}
public static boolean isSimilar(Location a, Location b)
{
return a.getWorld() == b.getWorld() && a.getX() == b.getX() && a.getY() == b.getY() && a.getZ() == b.getZ();
}
}

View File

@ -516,6 +516,11 @@ public class UtilBlock
return false;
}
public static ArrayList<Block> getInBoundingBox(Location a, Location b)
{
return getInBoundingBox(a, b, true);
}
public static ArrayList<Block> getInBoundingBox(Location a, Location b, boolean ignoreAir)
{
ArrayList<Block> blocks = new ArrayList<Block>();
@ -525,10 +530,59 @@ public class UtilBlock
{
Block block = a.getWorld().getBlockAt(x,y,z);
if (block.getType() != Material.AIR)
blocks.add(block);
if(ignoreAir)
{
if (block.getType() != Material.AIR)
blocks.add(block);
}
else blocks.add(block);
}
return blocks;
}
public static int getStepSoundId(Block block)
{
if (block.getTypeId() != 35 && block.getTypeId() != 159 && block.getTypeId() != 160)
return block.getTypeId();
switch (block.getData())
{
case 0:
return block.getTypeId();
case 1:
return 172;
case 2:
return 87;
case 3:
return 79;
case 4:
return 41;
case 5:
return 133;
case 6:
return 45;
case 7:
return 16;
case 8:
return 13;
case 9:
return 56;
case 10:
return 110;
case 11:
return 22;
case 12:
return 3;
case 13:
return 31;
case 14:
return 152;
case 15:
return 173;
default:
return block.getTypeId();
}
}
}

View File

@ -352,5 +352,23 @@ public class UtilInv
Update(player);
}
public static int getAmount(Player player, Material mat)
{
return getAmount(player, mat, true);
}
public static int getAmount(Player player, Material mat, boolean includeArmorAndCursor)
{
int amount = 0;
for (ItemStack item : getItems(player, true, true))
{
if (item.getType() == mat)
{
amount += item.getAmount();
}
}
return amount;
}
}

View File

@ -0,0 +1,112 @@
package mineplex.core.common.util;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
public class UtilRadar
{
public static void displayRadar(Player player, List<RadarData> dataList)
{
displayRadar(player, dataList, true);
}
public static void displayRadar(Player player, List<RadarData> dataList, boolean bossBar)
{
int radarChars = 59;
int radarSpaces = radarChars;
//get bearings for each element
for (RadarData data : dataList)
{
double pYaw = UtilAlg.GetYaw(player.getLocation().getDirection());
double relYaw = UtilAlg.GetYaw(UtilAlg.getTrajectory(player.getLocation(), data.Loc));
data.setBearing(relYaw - pYaw);
radarSpaces -= ChatColor.stripColor(data.Text).length();
}
//sort
sortScores(dataList);
//draw
String text = C.cPurple + C.Bold + "Radar [" + ChatColor.RESET;
int radarSpacesDrawn = 0;
int radarCharsDrawn = 0;
for (RadarData data : dataList)
{
//behind to left
if (data.getBearing() < -90)
{
text += ChatColor.RESET + data.Text;
radarCharsDrawn += ChatColor.stripColor(data.Text).length();
}
//behind to right
else if (data.getBearing() > 90)
{
//finish spaces
while (radarSpacesDrawn < radarSpaces)
{
text += " ";
radarSpacesDrawn++;
radarCharsDrawn++;
}
text += ChatColor.RESET + data.Text;
radarCharsDrawn += ChatColor.stripColor(data.Text).length();
}
//in front
else
{
double percent = (data.getBearing() + 90D) / 180D;
while (percent >= (double)radarCharsDrawn/(double)radarChars && radarSpacesDrawn<radarSpaces)
{
text += " ";
radarSpacesDrawn++;
radarCharsDrawn++;
}
text += ChatColor.RESET + data.Text;
radarCharsDrawn += ChatColor.stripColor(data.Text).length();
}
}
//finish spaces (only needed if nothing was on right)
while (radarSpacesDrawn < radarSpaces)
{
text += " ";
radarSpacesDrawn++;
}
text += C.cPurple + C.Bold + "] Radar";
if(bossBar)
{
UtilTextTop.display(text, player);
}
else
{
UtilTextBottom.display(text, player);
}
}
private static void sortScores(List<RadarData> dataList)
{
for (int i=0 ; i<dataList.size() ; i++)
{
for (int j=dataList.size()-1 ; j>0 ; j--)
{
if (dataList.get(j).getBearing() < dataList.get(j-1).getBearing())
{
RadarData temp = dataList.get(j);
dataList.set(j, dataList.get(j-1));
dataList.set(j-1, temp);
}
}
}
}
}

View File

@ -715,7 +715,43 @@ public enum Achievement
new String[]{"Evolution.EvolveKill"},
new String[]{"Kill 25 people while they", "Are trying to evolve"},
new int[]{25},
AchievementCategory.EVOLUTION)
AchievementCategory.EVOLUTION),
MONSTER_MAZE_WINS("Maze Master", 1200,
new String[]{"Monster Maze.Wins"},
new String[]{"Win 40 games of Monster Maze"},
new int[]{40},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_HARD_MODE("Hard Mode", 1000,
new String[]{"Monster Maze.Hard Mode"},
new String[]{"Win a game without using", "any kit abilities"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_NINJA("Ninja", 1200,
new String[]{"Monster Maze.Ninja"},
new String[]{"Win a game without", "touching a monster"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_SPEEDSTER("Speedy McGee", 1000,
new String[]{"Monster Maze.Speed"},
new String[]{"Be the first to the", "Safe Pad 50 times"},
new int[]{50},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_SURVIVAL("Die Already!", 1200,
new String[]{"Monster Maze.ToughCompetition"},
new String[]{"Survive past the 10th Safe Pad"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
MONSTER_MAZE_PILOT("Pilot", 800, //TODO
new String[]{"Monster Maze.Pilot"},
new String[]{"Get hit by a monster and", "land on the Safe Pad"},
new int[]{1},
AchievementCategory.MONSTER_MAZE),
;
@ -784,7 +820,7 @@ public enum Achievement
public static String getExperienceString(int level)
{
if (level < 0)
return C.cPurple + level;
return C.cAqua + level;
if (level < 20)
return C.cGray + level;

View File

@ -145,7 +145,13 @@ public enum AchievementCategory
EVOLUTION("Evolution", null,
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.KILLS, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
Material.MONSTER_EGG, 0, GameCategory.ARCADE, "Harvester Kit");
Material.MONSTER_EGG, 0, GameCategory.ARCADE, "Harvester Kit"),
MONSTER_MAZE("Monster Maze", null,
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.DEATHS, StatDisplay.GEMS_EARNED},
Material.ROTTEN_FLESH, 0, GameCategory.ARCADE, "SoonTM"),
;
private String _name;
private String[] _statsToPull;

View File

@ -29,7 +29,12 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
public AchievementMainPage(AchievementManager plugin, StatsManager statsManager, AchievementShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, Player target)
{
super(plugin, shop, clientManager, donationManager, name, player, 9 * 4);
this(plugin, statsManager, shop, clientManager, donationManager, name, 9 * 4, player, target);
}
public AchievementMainPage(AchievementManager plugin, StatsManager statsManager, AchievementShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, int size, Player player, Player target)
{
super(plugin, shop, clientManager, donationManager, name, player, size);
_target = target;
_statsManager = statsManager;

View File

@ -23,7 +23,9 @@ public class ArcadeMainPage extends AchievementMainPage
{
public ArcadeMainPage(AchievementManager plugin, StatsManager statsManager, AchievementShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, Player target)
{
super(plugin, statsManager, shop, clientManager, donationManager, name, player, target);
super(plugin, statsManager, shop, clientManager, donationManager, name, 9 * 5, player, target);
}
@Override

View File

@ -27,11 +27,11 @@ public class BenefitManager extends MiniDbClientPlugin<BenefitData>
{
super("Benefit Manager", plugin, clientManager);
_repository = new BenefitManagerRepository(plugin);
_repository = new BenefitManagerRepository(plugin);
//_benefits.add(new Christmas2014(plugin, _repository, inventoryManager));
//_benefits.add(new Thanksgiving2014(plugin, _repository, inventoryManager));
//_benefits.add(new Players40k(this, _repository, inventoryManager));
//_benefits.add(new Players43k(this, _repository, inventoryManager));
}
@EventHandler(priority = EventPriority.LOWEST)

View File

@ -15,6 +15,7 @@ public class BenefitManagerRepository extends RepositoryBase
private static String CREATE_BENEFIT_TABLE = "CREATE TABLE IF NOT EXISTS rankBenefits (id INT NOT NULL AUTO_INCREMENT, accountId INT, benefit VARCHAR(100), PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id));";
private static String INSERT_BENEFIT = "INSERT INTO rankBenefits (accountId, benefit) VALUES (?, ?);";
private static String DELETE_BENEFIT = "DELETE FROM rankBenefits WHERE accountId = ? AND benefit = ?;";
public BenefitManagerRepository(JavaPlugin plugin)
{
@ -50,4 +51,9 @@ public class BenefitManagerRepository extends RepositoryBase
return playerBenefit;
}
public void removeBenefit(int accountId, String benefit)
{
executeUpdate(DELETE_BENEFIT, new ColumnInt("accountId", accountId), new ColumnVarChar("benefit", 100, benefit));
}
}

View File

@ -45,6 +45,11 @@ public abstract class BenefitBase
}
});
}
protected void removeBenefit(final Player player)
{
_repository.removeBenefit(_plugin.getClientManager().Get(player).getAccountId(), _name);
}
public String getName()
{

View File

@ -0,0 +1,49 @@
package mineplex.core.benefit.benefits;
import mineplex.core.benefit.BenefitManager;
import mineplex.core.benefit.BenefitManagerRepository;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.inventory.InventoryManager;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Players43k extends BenefitBase
{
private InventoryManager _inventoryManager;
public Players43k(BenefitManager plugin, BenefitManagerRepository repository, InventoryManager inventoryManager)
{
super(plugin, "Players43k", repository);
_inventoryManager = inventoryManager;
}
@Override
public void rewardPlayer(final Player player)
{
_inventoryManager.addItemToInventory(new Callback<Boolean>()
{
public void run(Boolean success)
{
if (success)
{
UtilPlayer.message(player, C.cGold + C.Strike + "=============================================");
UtilPlayer.message(player, "");
UtilPlayer.message(player, "To celebrate hitting 43,000 players online,");
UtilPlayer.message(player, "everyone receives a prize! You're awesome!");
UtilPlayer.message(player, "");
UtilPlayer.message(player, "You received 3 Ancient Chests!");
UtilPlayer.message(player, "");
UtilPlayer.message(player, C.cGold + C.Strike + "=============================================");
}
else
{
removeBenefit(player);
}
}
}, player, "Ancient Chest", 3);
}
}

View File

@ -2,6 +2,9 @@ package mineplex.core.bonuses.gui.buttons;
import java.util.ArrayList;
import mineplex.core.bonuses.BonusAmount;
import mineplex.core.bonuses.BonusClientData;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.common.jsonchat.ClickEvent;
import mineplex.core.common.jsonchat.JsonMessage;
import mineplex.core.common.util.C;
@ -11,10 +14,6 @@ import mineplex.core.common.util.UtilTime.TimeUnit;
import mineplex.core.gui.GuiItem;
import mineplex.core.gui.ItemRefresher;
import mineplex.core.shop.item.ShopItem;
import mineplex.core.bonuses.BonusAmount;
import mineplex.core.bonuses.BonusClientData;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.bonuses.StreakRecord;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@ -72,15 +71,15 @@ public class VoteButton implements GuiItem, Listener {
getPlayer().playSound(getPlayer().getLocation(), Sound.NOTE_PLING, 1, 1.6f);
UtilPlayer.message(getPlayer(), "----------------------------------------------------");
UtilPlayer.message(getPlayer(), C.cGold + C.Bold + C.Strike + "=============================================");
UtilPlayer.message(getPlayer(), "");
new JsonMessage("Click to Open in Web Browser").click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
new JsonMessage(C.cGreen + _url).click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
new JsonMessage(" " + C.Bold + "Click to Open in Web Browser").click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
new JsonMessage( " " + C.cGreen + C.Line + _url).click(ClickEvent.OPEN_URL, _url).sendToPlayer(getPlayer());
UtilPlayer.message(getPlayer(), "");
UtilPlayer.message(getPlayer(), "Please be patient, votes may take a few minutes to register.");
UtilPlayer.message(getPlayer(), " Please be patient. Votes may take a few minutes to register.");
UtilPlayer.message(getPlayer(), "");
UtilPlayer.message(getPlayer(), "----------------------------------------------------");
UtilPlayer.message(getPlayer(), C.cGold + C.Bold + C.Strike + "=============================================");
getPlayer().closeInventory();

View File

@ -5,6 +5,8 @@ import java.util.List;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniPlugin;
@ -42,6 +44,10 @@ public class BotSpamManager extends MiniPlugin
// Ignore messages sent to staff members
if (_clientManager.hasRank(recipient, Rank.HELPER))
return;
// Ignore messages sent by staff members
if (_clientManager.hasRank(event.getSender(), Rank.HELPER))
return;
for (SpamText spamText : _spam)
{
@ -53,6 +59,31 @@ public class BotSpamManager extends MiniPlugin
}
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void onChat(final AsyncPlayerChatEvent event)
{
// Ignore messages sent by staff members
if (_clientManager.hasRank(event.getPlayer(), Rank.HELPER))
return;
for (final SpamText spamText : _spam)
{
if (spamText.isEnabled() && spamText.isSpam(event.getMessage()))
{
runSync(new Runnable()
{
@Override
public void run()
{
punishBot(event.getPlayer(), spamText);
}
});
event.setCancelled(true);
return;
}
}
}
public void punishBot(Player player, final SpamText botText)
{

View File

@ -23,6 +23,7 @@ public class SpamText
public boolean isSpam(String message)
{
//System.out.println(message.toLowerCase() + " vs " + _text.toLowerCase() + " == " + message.toLowerCase().contains(_text.toLowerCase()));
return message.toLowerCase().contains(_text.toLowerCase());
}

View File

@ -13,7 +13,7 @@ public class BotSpamAddCommand extends CommandBase<BotSpamManager>
{
public BotSpamAddCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "add");
super(plugin, Rank.ADMIN, "add");
}
@Override

View File

@ -12,7 +12,7 @@ public class BotSpamCommand extends MultiCommandBase<BotSpamManager>
{
public BotSpamCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "botban", "botspam");
super(plugin, Rank.ADMIN, "botban", "botspam");
AddCommand(new BotSpamAddCommand(Plugin));
AddCommand(new BotSpamEnableCommand(Plugin));

View File

@ -13,7 +13,7 @@ public class BotSpamDisableCommand extends CommandBase<BotSpamManager>
{
public BotSpamDisableCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "disable");
super(plugin, Rank.ADMIN, "disable");
}
@Override

View File

@ -13,7 +13,7 @@ public class BotSpamEnableCommand extends CommandBase<BotSpamManager>
{
public BotSpamEnableCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "enable");
super(plugin, Rank.ADMIN, "enable");
}
@Override

View File

@ -17,7 +17,7 @@ public class BotSpamListCommand extends CommandBase<BotSpamManager>
{
public BotSpamListCommand(BotSpamManager plugin)
{
super(plugin, Rank.DEVELOPER, "list");
super(plugin, Rank.ADMIN, "list");
}
@Override

View File

@ -109,7 +109,7 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
itemLore.add(C.cWhite + "Your Ammo : " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName()));
}
if (gadget.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(gadget.GetName()))
if (gadget.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(gadget.GetName()) || getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName()) > 0)
{
if (gadget.GetActive().contains(getPlayer()))
{

View File

@ -80,7 +80,7 @@ public class PetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
}
//Owned
if (getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(pet.GetPetName()))
if (getPlugin().getPetManager().Get(getPlayer()).GetPets().containsKey(pet.GetPetType()))
{
String petName = getPlugin().getPetManager().Get(getPlayer()).GetPets().get(pet.GetPetType());
if (petName == null)

View File

@ -110,7 +110,6 @@ public class PetTagPage extends ShopPageBase<CosmeticManager, CosmeticShop>
getPlugin().getPetManager().Get(getPlayer()).GetPets().put(_pet.GetPetType(), token.PetName);
getPlugin().getInventoryManager().addItemToInventory(null, getPlayer(), _pet.GetPetType().toString(), 1);
getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), getPlayer()));
}
}, null, _petPurchase ? _pet : tag, CurrencyType.Coins, getPlayer()));

View File

@ -14,7 +14,11 @@ import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.ItemGadget;
import mineplex.core.updater.UpdateType;
@ -40,6 +44,7 @@ public class ItemTNT extends ItemGadget
public void ActivateCustom(Player player)
{
TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class);
tnt.setYield(0.0F); // Added in order to prevent water from being evaporated.
UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.6, false, 0, 0.2, 1, false);
_tnt.add(tnt);
@ -58,7 +63,7 @@ public class ItemTNT extends ItemGadget
HashMap<Player, Double> players = UtilPlayer.getInRadius(event.getLocation(), 10);
for (Player player : players.keySet())
{
{
if (Manager.collideEvent(this, player))
continue;
@ -67,6 +72,9 @@ public class ItemTNT extends ItemGadget
//Knockback
UtilAction.velocity(player, UtilAlg.getTrajectory(event.getLocation(), player.getLocation()), 3 * mult, false, 0, 0.5 + 2 * mult, 10, true);
}
// Simulating explosion to prevent water from being evaporated.
UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, event.getLocation(), 0, 0, 0, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers());
}

View File

@ -18,7 +18,7 @@ public class MorphTitan extends MorphGadget
C.cRed + "Unlocked with Titan Rank",
},
-1,
Material.REDSTONE_BLOCK, (byte)0);
Material.INK_SACK, (byte)8);
}
@Override

View File

@ -20,6 +20,8 @@ import mineplex.core.disguise.disguises.DisguiseBase;
import mineplex.core.disguise.disguises.DisguiseWither;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.types.MorphGadget;
import mineplex.core.inventory.ClientItem;
import mineplex.core.inventory.data.Item;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
@ -179,10 +181,11 @@ public class MorphWither extends MorphGadget
@EventHandler
public void legendOwner(PlayerJoinEvent event)
{
// TODO HARDCODED Wither Morph Database Item Id - 550
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
Manager.getInventoryManager().Get(event.getPlayer().getName()).addItem(new ClientItem(new Item(550, GetName()), 1));
}
}
public void setWitherData(String text, double healthPercent)

View File

@ -9,6 +9,8 @@ import org.bukkit.event.player.PlayerJoinEvent;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.gadget.types.ParticleGadget;
import mineplex.core.inventory.ClientItem;
import mineplex.core.inventory.data.Item;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.gadget.GadgetManager;
@ -46,9 +48,10 @@ public class ParticleLegend extends ParticleGadget
@EventHandler
public void legendOwner(PlayerJoinEvent event)
{
// TODO HARDCODED Legendary Aura Database Item Id - 552
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.LEGEND))
{
Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName());
}
Manager.getInventoryManager().Get(event.getPlayer().getName()).addItem(new ClientItem(new Item(552, GetName()), 1));
}
}
}

View File

@ -17,6 +17,6 @@ public class ParticleTitan extends ParticleGadget
C.cRed + "Unlocked with Titan Rank",
},
-1,
Material.REDSTONE_BLOCK, (byte)0);
Material.INK_SACK, (byte)8);
}
}

View File

@ -63,6 +63,7 @@ public enum GameDisplay
Cards("Craft Against Humanity", Material.MAP, (byte)0, GameCategory.CLASSICS, 51),
Skywars("Skywars", Material.FEATHER, (byte) 0, GameCategory.SURVIVAL, 52),
SkywarsTeams("Skywars Teams", "Skywars", Material.FEATHER, (byte)0, GameCategory.TEAM_VARIANT, 53),
MonsterMaze("Monster Maze", Material.ROTTEN_FLESH, (byte)0, GameCategory.ARCADE, 55),
Lobbers("Bomb Lobbers", Material.FIREBALL, (byte) 0, GameCategory.ARCADE, 54),

View File

@ -89,11 +89,6 @@ public class InventoryManager extends MiniDbClientPlugin<ClientInventory>
if (!success)
{
System.out.println("Add item to Inventory FAILED for " + player.getName());
if (_items.containsKey(item))
{
Get(player).addItem(new ClientItem(_items.get(item), -count));
}
}
if (callback != null)

View File

@ -19,8 +19,8 @@ public class MountTitan extends HorseMount
" ",
C.cRed + "Unlocked with Titan Rank",
},
Material.REDSTONE_BLOCK,
(byte)0,
Material.INK_SACK,
(byte)8,
-1,
Color.BLACK, Style.BLACK_DOTS, Variant.UNDEAD_HORSE, 0.8, null);
}

View File

@ -19,6 +19,9 @@ import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilServer;
import mineplex.core.disguise.DisguiseManager;
import mineplex.core.donation.DonationManager;
import mineplex.core.inventory.ClientItem;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.inventory.data.Item;
import net.minecraft.server.v1_7_R4.EntityCreature;
import net.minecraft.server.v1_7_R4.EntityWither;
import net.minecraft.server.v1_7_R4.Navigation;
@ -70,8 +73,10 @@ public class PetManager extends MiniClientPlugin<PetClient>
private NautHashMap<String, String> _petRenameQueue = new NautHashMap<String, String>();
private DonationManager _donationManager;
private CoreClientManager _clientManager;
private InventoryManager _inventoryManager;
public PetManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, DisguiseManager disguiseManager, mineplex.core.creature.Creature creatureModule, BlockRestore restore, String webAddress)
public PetManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager
, InventoryManager inventoryManager, DisguiseManager disguiseManager, mineplex.core.creature.Creature creatureModule, BlockRestore restore, String webAddress)
{
super("Pet Manager", plugin);
@ -82,6 +87,7 @@ public class PetManager extends MiniClientPlugin<PetClient>
_blockRestore = restore;
_donationManager = donationManager;
_clientManager = clientManager;
_inventoryManager = inventoryManager;
_activePetOwners = new NautHashMap<String, Creature>();
_failedAttempts = new NautHashMap<String, Integer>();
@ -146,10 +152,12 @@ public class PetManager extends MiniClientPlugin<PetClient>
{
Player p = event.getPlayer();
Rank rank = _clientManager.Get(p).GetRank();
if (rank.has(Rank.LEGEND))
{
_donationManager.Get(p.getName()).AddUnknownSalesPackagesOwned("Widder");
}
if (rank.has(Rank.LEGEND))
{
if (!Get(p).GetPets().containsKey(EntityType.WITHER))
Get(p).GetPets().put(EntityType.WITHER, "Widder");
}
}
public void AddPetOwner(Player player, EntityType entityType, Location location)

View File

@ -10,5 +10,4 @@ public class Pumpkin extends Pet
{
super("Pumpling", EntityType.ZOMBIE, -1);
}
}

View File

@ -51,12 +51,22 @@ public class PetReward extends UnknownPackageReward
petToken.PetType = token.PetType;
_petManager.GetRepository().AddPet(token);
// _petManager.addPetOwnerToQueue(player.getName(), _petEntity);
_petManager.Get(player).GetPets().put(_petEntity, token.PetName);
_inventoryManager.addItemToInventory(player, _petEntity.toString(), 1);
return super.giveRewardCustom(player);
return getFakeRewardData(player);
}
@Override
public boolean canGiveReward(Player player)
{
if (DonationManager.Get(player.getName()) == null)
{
System.out.println("Could not give reward " + getPackageName() + " to Offline Player: " + player.getName());
return false;
}
return !_petManager.Get(player).GetPets().containsKey(_petEntity);
}
}

View File

@ -6,15 +6,11 @@ import org.bukkit.inventory.ItemStack;
import mineplex.core.donation.DonationManager;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardManager;
import mineplex.core.reward.RewardRarity;
/**
* Created by shaun on 14-09-12.
*/
public class UnknownPackageReward extends Reward
{
private DonationManager _donationManager;
protected DonationManager DonationManager;
private ItemStack _itemStack;
private String _name;
private String _packageName;
@ -22,7 +18,7 @@ public class UnknownPackageReward extends Reward
public UnknownPackageReward(DonationManager donationManager, String name, String packageName, ItemStack itemStack, RewardRarity rarity, int weight)
{
super(rarity, weight);
_donationManager = donationManager;
DonationManager = donationManager;
_name = name;
_packageName = packageName;
_itemStack = itemStack;
@ -31,7 +27,7 @@ public class UnknownPackageReward extends Reward
@Override
protected RewardData giveRewardCustom(Player player)
{
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _packageName, true, 0, true);
DonationManager.PurchaseUnknownSalesPackage(null, player.getName(), DonationManager.getClientManager().Get(player).getAccountId(), _packageName, true, 0, true);
return new RewardData(getRarity().getColor() + _name, _itemStack, getRarity());
}
@ -39,13 +35,13 @@ public class UnknownPackageReward extends Reward
@Override
public boolean canGiveReward(Player player)
{
if (_donationManager.Get(player.getName()) == null)
if (DonationManager.Get(player.getName()) == null)
{
System.out.println("Could not give reward " + _packageName + " to Offline Player: " + player.getName());
return false;
}
return !_donationManager.Get(player.getName()).OwnsUnknownPackage(_packageName);
return !DonationManager.Get(player.getName()).OwnsUnknownPackage(_packageName);
}
@Override

View File

@ -31,6 +31,7 @@ public class LightFlicker extends BukkitRunnable
{
_world.setTime(_previousTime);
cancel();
return;
}
if (_ticks % 5 == 0)

View File

@ -53,7 +53,7 @@ public class TitanGiveawayManager extends MiniPlugin
@Override
public void run()
{
final boolean pass = _repository.canGiveaway();
final boolean pass = _repository.canGiveaway(region);
if (pass && _repository.addTitan(accountId, region, serverName))
{

View File

@ -41,17 +41,18 @@ public class TitanGiveawayRepository extends RepositoryBase
return 1 == executeUpdate(ADD_TITAN, new ColumnInt("accountId", accountId), new ColumnVarChar("region", 10, region.name()), new ColumnVarChar("serverName", 64, serverName));
}
public boolean canGiveaway()
public boolean canGiveaway(Region region)
{
try (Connection connection = getConnection();
CallableStatement callableStatement = connection.prepareCall("{call check_titanGiveaway(?, ?)}"))
CallableStatement callableStatement = connection.prepareCall("{call check_titanGiveaway(?, ?, ?)}"))
{
callableStatement.registerOutParameter(1, Types.BOOLEAN);
callableStatement.registerOutParameter(2, Types.INTEGER);
callableStatement.setString(1, region.name());
callableStatement.registerOutParameter(2, Types.BOOLEAN);
callableStatement.registerOutParameter(3, Types.INTEGER);
callableStatement.executeUpdate();
boolean pass = callableStatement.getBoolean(1);
int titanCount = callableStatement.getInt(2);
boolean pass = callableStatement.getBoolean(2);
int titanCount = callableStatement.getInt(3);
_titanCount = titanCount;
return pass;

View File

@ -21,6 +21,7 @@ import mineplex.core.friend.FriendManager;
import mineplex.core.give.Give;
import mineplex.core.hologram.HologramManager;
import mineplex.core.ignore.IgnoreManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.memory.MemoryFix;
import mineplex.core.message.MessageManager;
@ -103,7 +104,8 @@ public class Hub extends JavaPlugin implements IRelation
preferenceManager.GiveItem = true;
Creature creature = new Creature(this);
NpcManager npcManager = new NpcManager(this, creature);
PetManager petManager = new PetManager(this, clientManager, donationManager, disguiseManager, creature, blockRestore, webServerAddress);
InventoryManager inventoryManager = new InventoryManager(this, clientManager);
PetManager petManager = new PetManager(this, clientManager, donationManager, inventoryManager, disguiseManager, creature, blockRestore, webServerAddress);
PollManager pollManager = new PollManager(this, clientManager, donationManager);
//Main Modules
@ -124,7 +126,7 @@ public class Hub extends JavaPlugin implements IRelation
PartyManager partyManager = new PartyManager(this, portal, clientManager, preferenceManager);
PersonalServerManager personalServerManager = new PersonalServerManager(this, clientManager);
HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager, packetHandler, punish);
HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager, packetHandler, punish);
QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager);

View File

@ -158,7 +158,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
//Admin
private boolean _gadgetsEnabled = true;
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish)
public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish)
{
super("Hub Manager", plugin);
@ -187,7 +187,7 @@ public class HubManager extends MiniClientPlugin<HubClient>
_news = new NewsManager(this);
_mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore, _disguiseManager);
_inventoryManager = new InventoryManager(plugin, clientManager);
_inventoryManager = inventoryManager;
new BenefitManager(plugin, clientManager, _inventoryManager);
_gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin), achievementManager);

View File

@ -37,6 +37,7 @@ public enum GameType
MineStrike("MineStrike"),
MineWare("MineWare"),
MilkCow("Milk the Cow"),
MonsterMaze("Monster Maze"),
Paintball("Super Paintball"),
Quiver("One in the Quiver"),
QuiverTeams("One in the Quiver Teams"),

View File

@ -10,6 +10,39 @@ import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilWorld;
import mineplex.mapparser.command.AdminCommand;
import mineplex.mapparser.command.AuthorCommand;
import mineplex.mapparser.command.BaseCommand;
import mineplex.mapparser.command.CopyCommand;
import mineplex.mapparser.command.CopySchematicsCommand;
import mineplex.mapparser.command.CreateCommand;
import mineplex.mapparser.command.DeleteCommand;
import mineplex.mapparser.command.GameTypeCommand;
import mineplex.mapparser.command.HubCommand;
import mineplex.mapparser.command.ListCommand;
import mineplex.mapparser.command.MapCommand;
import mineplex.mapparser.command.NameCommand;
import mineplex.mapparser.command.ParseCommand200;
import mineplex.mapparser.command.ParseCommand400;
import mineplex.mapparser.command.ParseCommand600;
import mineplex.mapparser.command.RenameCommand;
import mineplex.mapparser.command.SaveCommand;
import mineplex.mapparser.command.SetSpawnCommand;
import mineplex.mapparser.command.SpawnCommand;
import mineplex.mapparser.command.WorldsCommand;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
@ -43,20 +76,6 @@ import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilWorld;
import mineplex.mapparser.command.*;
public class MapParser extends JavaPlugin implements Listener
{
private WorldManager _worldManager;
@ -699,6 +718,136 @@ public class MapParser extends JavaPlugin implements Listener
}
}
@EventHandler
public void mmMazeParser(PlayerInteractEvent event)
{
if (event.isCancelled())
return;
if (event.getAction() != Action.LEFT_CLICK_BLOCK) return;
//Permission
if (!GetData(event.getPlayer().getWorld().getName()).HasAccess(event.getPlayer()))
{
return;
}
Player player = event.getPlayer();
if (!UtilGear.isMat(player.getItemInHand(), Material.WEB))
return;
event.setCancelled(true);
// parse
Block clicked = event.getClickedBlock();
Location center = clicked.getLocation();
Location lowestCorner = center.clone().subtract(49, 0, 49);
// 0 = air or other
// 1 = path - quartz
// 2 = mob spawn - gold
// 3 = safe spawn - stone
int[][] maze = new int[99][99];
/*Iterator<Block> iter = blocks.iterator();
while(iter.hasNext())
{
Block b = iter.next();
switch (b.getType()) {
case QUARTZ_BLOCK:
maze[x][y] = 1;
break;
case GOLD_BLOCK:
maze[x][y] = 2;
break;
case STONE:
maze[x][y] = 3;
break;
default:
maze[x][y] = 0;
break;
}
x++;
if(x > 99)
{
y++;
x = 0;
}
if(y > 99)
{
System.out.println("y > 99");
break;
}
}*/
for (int i = 0; i < 99; i++)
for (int j = 0; j < 99; j++)
maze[i][j] = getMMParseValue(lowestCorner.clone().add(j, 0, i).getBlock().getType());
//Save
try
{
FileWriter fstream = new FileWriter(GetData(player.getWorld().getName()).MapFolder + File.separator + "Maze.dat");
BufferedWriter out = new BufferedWriter(fstream);
out.write("private static final int[][] PARSED_MAZE = {" + System.lineSeparator());
for (int j[] : maze)
{
out.write("{");
boolean first = true;
for (int k : j)
{
if(!first) out.write(",");
out.write(k + "");
first = false;
}
out.write("}," + System.lineSeparator());
}
out.write("};" + System.lineSeparator());
out.close();
}
catch (Exception e)
{
player.sendMessage(C.cRed + C.Bold + "MMMazeParse: " + ChatColor.RESET + "An error has occured, see console.");
e.printStackTrace();
}
player.sendMessage(C.cGreen + C.Bold + "MMMazeParse: " + ChatColor.RESET + "Maze parsed.");
}
private int getMMParseValue(Material m)
{
switch (m) {
case QUARTZ_BLOCK:
return 1;
case GOLD_BLOCK:
return 2;
case STONE:
return 3;
case DIRT:
return 4;
case COBBLESTONE:
return 5;
case BRICK:
return 6;
default:
return 0;
}
}
private HashSet<Block> searchLog(HashSet<Block> blocks, Block current)
{
//Not Tree

View File

@ -13,12 +13,15 @@ import mineplex.minecraft.game.classcombat.item.ItemFactory;
import mineplex.core.MiniClientPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.account.event.ClientWebResponseEvent;
import mineplex.core.common.Rank;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.donation.DonationManager;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import org.bukkit.Material;
import org.bukkit.craftbukkit.libs.com.google.gson.Gson;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.java.JavaPlugin;
@ -303,12 +306,30 @@ public class ClassManager extends MiniClientPlugin<ClientClass> implements IClas
if (!_enabled)
return;
if (event.getMessage().equals("/skill"))
if (event.getMessage().length() < 1)
return;
String[] args = event.getMessage().toLowerCase().split(" ");
if (args[0].equals("/skill"))
{
ClientClass client = Get(event.getPlayer().getName());
Player target = event.getPlayer();
//Target Other
if (args.length > 1 && _clientManager.Get(event.getPlayer()).GetRank().has(Rank.MODERATOR))
{
target = UtilPlayer.searchOnline(event.getPlayer(), args[1], true);
if (target == null)
{
return;
}
}
ClientClass client = Get(target.getName());
if (client == null)
event.getPlayer().sendMessage("You do not have a ClientClass.");
event.getPlayer().sendMessage(target.getName() + " does not have a ClientClass.");
else
{
client.DisplaySkills(event.getPlayer());

View File

@ -400,10 +400,10 @@ public class SkillPage extends ShopPageBase<ClassShopManager, ClassCombatShop>
}
}, this, new SkillSalesPackage(skill), CurrencyType.Gems, player));
}
private boolean isSkillLocked(ISkill skill)
{
if (skill.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + skill.GetName()))
if (skill.IsFree() || getClientManager().Get(getPlayer().getName()).GetRank().has(Rank.HELPER) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + skill.GetName()))
return false;
return true;
@ -411,7 +411,7 @@ public class SkillPage extends ShopPageBase<ClassShopManager, ClassCombatShop>
private boolean isItemLocked(Item item)
{
if (item.isFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + item.GetName()))
if (item.isFree() || getClientManager().Get(getPlayer().getName()).GetRank().has(Rank.HELPER) || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions ULTRA") || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage("Champions " + item.GetName()))
return false;
return true;

View File

@ -312,21 +312,28 @@ public class ServerMonitor
while (_processes.size() > 0)
{
for (Iterator<ProcessRunner> iterator = _processes.iterator(); iterator.hasNext();)
try
{
ProcessRunner pr = iterator.next();
try
for (Iterator<ProcessRunner> iterator = _processes.iterator(); iterator.hasNext();)
{
pr.join(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
ProcessRunner pr = iterator.next();
try
{
pr.join(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
if (pr.isDone())
iterator.remove();
}
if (pr.isDone())
iterator.remove();
}
catch (Exception ex)
{
ex.printStackTrace();
}
if (_processes.size() > 0)
@ -342,7 +349,7 @@ public class ServerMonitor
}
}
if (processWaits >= 10)
if (processWaits >= 5)
{
log("Killing stale processes.");
@ -351,6 +358,8 @@ public class ServerMonitor
iterator.next().abort();
iterator.remove();
}
_processes.clear();
}
processWaits++;

View File

@ -141,7 +141,7 @@ public class Arcade extends JavaPlugin
//Inventory
InventoryManager inventoryManager = new InventoryManager(this, _clientManager);
PetManager petManager = new PetManager(this, _clientManager, _donationManager, disguiseManager, creature, blockRestore, webServerAddress);
PetManager petManager = new PetManager(this, _clientManager, _donationManager, inventoryManager, disguiseManager, creature, blockRestore, webServerAddress);
MountManager mountManager = new MountManager(this, _clientManager, _donationManager, blockRestore, disguiseManager);
GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore, projectileManager, achievementManager);
CosmeticManager cosmeticManager = new CosmeticManager(this, _clientManager, _donationManager, inventoryManager, gadgetManager, mountManager, petManager, null);

View File

@ -1,12 +1,113 @@
package nautilus.game.arcade;
import java.awt.Event;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;
import mineplex.core.MiniPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.achievement.AchievementManager;
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.blood.Blood;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.chat.Chat;
import mineplex.core.common.Rank;
import mineplex.core.common.jsonchat.ClickEvent;
import mineplex.core.common.jsonchat.JsonMessage;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.cosmetic.CosmeticManager;
import mineplex.core.creature.Creature;
import mineplex.core.disguise.DisguiseManager;
import mineplex.core.donation.DonationManager;
import mineplex.core.elo.EloManager;
import mineplex.core.energy.Energy;
import mineplex.core.explosion.Explosion;
import mineplex.core.explosion.ExplosionEvent;
import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.movement.Movement;
import mineplex.core.notifier.NotificationManager;
import mineplex.core.npc.NpcManager;
import mineplex.core.packethandler.IPacketHandler;
import mineplex.core.packethandler.PacketHandler;
import mineplex.core.packethandler.PacketInfo;
import mineplex.core.packethandler.PacketPlayResourcePackStatus;
import mineplex.core.packethandler.PacketPlayResourcePackStatus.EnumResourcePackStatus;
import mineplex.core.party.PartyManager;
import mineplex.core.pet.PetManager;
import mineplex.core.poll.PollManager;
import mineplex.core.portal.Portal;
import mineplex.core.preferences.PreferencesManager;
import mineplex.core.projectile.ProjectileManager;
import mineplex.core.resourcepack.ResPackManager;
import mineplex.core.resourcepack.ResUnloadCheck;
import mineplex.core.resourcepack.redis.RedisUnloadResPack;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.rewards.PetReward;
import mineplex.core.stats.StatsManager;
import mineplex.core.status.ServerStatusManager;
import mineplex.core.task.TaskManager;
import mineplex.core.teleport.Teleport;
import mineplex.core.timing.TimingManager;
import mineplex.core.titangiveaway.TitanGiveawayManager;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.classcombat.Class.ClassManager;
import mineplex.minecraft.game.classcombat.Condition.SkillConditionManager;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
import mineplex.minecraft.game.classcombat.item.ItemFactory;
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
import mineplex.minecraft.game.classcombat.shop.ClassCombatShop;
import mineplex.minecraft.game.classcombat.shop.ClassShopManager;
import mineplex.minecraft.game.core.IRelation;
import mineplex.minecraft.game.core.condition.ConditionManager;
import mineplex.minecraft.game.core.damage.DamageManager;
import mineplex.minecraft.game.core.fire.Fire;
import nautilus.game.arcade.addons.SoupAddon;
import nautilus.game.arcade.addons.TeamArmorAddon;
import nautilus.game.arcade.addons.compass.CompassAddon;
import nautilus.game.arcade.command.DisguiseCommand;
import nautilus.game.arcade.command.GameCommand;
import nautilus.game.arcade.command.KitUnlockCommand;
import nautilus.game.arcade.command.RequiredRankCommand;
import nautilus.game.arcade.command.WriteCommand;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.GameServerConfig;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.event.EventModule;
import nautilus.game.arcade.game.games.uhc.UHC;
import nautilus.game.arcade.managers.GameAchievementManager;
import nautilus.game.arcade.managers.GameChatManager;
import nautilus.game.arcade.managers.GameCreationManager;
import nautilus.game.arcade.managers.GameFlagManager;
import nautilus.game.arcade.managers.GameGemManager;
import nautilus.game.arcade.managers.GameHostManager;
import nautilus.game.arcade.managers.GameLobbyManager;
import nautilus.game.arcade.managers.GameLootManager;
import nautilus.game.arcade.managers.GameManager;
import nautilus.game.arcade.managers.GamePlayerManager;
import nautilus.game.arcade.managers.GameSpectatorManager;
import nautilus.game.arcade.managers.GameStatManager;
import nautilus.game.arcade.managers.GameTournamentManager;
import nautilus.game.arcade.managers.GameWorldManager;
import nautilus.game.arcade.managers.HolidayManager;
import nautilus.game.arcade.managers.IdleManager;
import nautilus.game.arcade.managers.MiscManager;
import nautilus.game.arcade.shop.ArcadeShop;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
@ -37,111 +138,6 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.util.Vector;
import com.google.common.base.Objects;
import mineplex.core.MiniPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.achievement.AchievementManager;
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.blood.Blood;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.chat.Chat;
import mineplex.core.common.Rank;
import mineplex.core.common.jsonchat.ClickEvent;
import mineplex.core.common.jsonchat.JsonMessage;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.cosmetic.CosmeticManager;
import mineplex.core.creature.Creature;
import mineplex.core.disguise.DisguiseManager;
import mineplex.core.donation.DonationManager;
import mineplex.core.elo.EloManager;
import mineplex.core.energy.Energy;
import mineplex.core.explosion.Explosion;
import mineplex.core.explosion.ExplosionEvent;
import mineplex.core.gadget.gadgets.OutfitTeam;
import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GadgetType;
import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.movement.Movement;
import mineplex.core.notifier.NotificationManager;
import mineplex.core.npc.NpcManager;
import mineplex.core.packethandler.IPacketHandler;
import mineplex.core.packethandler.PacketHandler;
import mineplex.core.packethandler.PacketInfo;
import mineplex.core.packethandler.PacketPlayResourcePackStatus;
import mineplex.core.packethandler.PacketPlayResourcePackStatus.EnumResourcePackStatus;
import mineplex.core.party.PartyManager;
import mineplex.core.pet.PetManager;
import mineplex.core.poll.PollManager;
import mineplex.core.portal.Portal;
import mineplex.core.preferences.PreferencesManager;
import mineplex.core.projectile.ProjectileManager;
import mineplex.core.resourcepack.ResUnloadCheck;
import mineplex.core.resourcepack.ResPackManager;
import mineplex.core.resourcepack.redis.RedisUnloadResPack;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.rewards.PetReward;
import mineplex.core.stats.StatsManager;
import mineplex.core.status.ServerStatusManager;
import mineplex.core.task.TaskManager;
import mineplex.core.teleport.Teleport;
import mineplex.core.timing.TimingManager;
import mineplex.core.titangiveaway.TitanGiveawayManager;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.classcombat.Class.ClassManager;
import mineplex.minecraft.game.classcombat.Condition.SkillConditionManager;
import mineplex.minecraft.game.classcombat.Skill.SkillFactory;
import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent;
import mineplex.minecraft.game.classcombat.item.ItemFactory;
import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent;
import mineplex.minecraft.game.classcombat.shop.ClassCombatShop;
import mineplex.minecraft.game.classcombat.shop.ClassShopManager;
import mineplex.minecraft.game.core.IRelation;
import mineplex.minecraft.game.core.condition.ConditionManager;
import mineplex.minecraft.game.core.damage.DamageManager;
import mineplex.minecraft.game.core.fire.Fire;
import nautilus.game.arcade.addons.SoupAddon;
import nautilus.game.arcade.addons.TeamArmorAddon;
import nautilus.game.arcade.addons.compass.CompassAddon;
import nautilus.game.arcade.command.DisguiseCommand;
import nautilus.game.arcade.command.GameCommand;
import nautilus.game.arcade.command.RequiredRankCommand;
import nautilus.game.arcade.command.WriteCommand;
import nautilus.game.arcade.command.KitUnlockCommand;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.GameServerConfig;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.event.EventModule;
import nautilus.game.arcade.game.games.uhc.UHC;
import nautilus.game.arcade.managers.GameAchievementManager;
import nautilus.game.arcade.managers.GameChatManager;
import nautilus.game.arcade.managers.GameCreationManager;
import nautilus.game.arcade.managers.GameFlagManager;
import nautilus.game.arcade.managers.GameGemManager;
import nautilus.game.arcade.managers.GameHostManager;
import nautilus.game.arcade.managers.GameLobbyManager;
import nautilus.game.arcade.managers.GameLootManager;
import nautilus.game.arcade.managers.GameManager;
import nautilus.game.arcade.managers.GamePlayerManager;
import nautilus.game.arcade.managers.GameSpectatorManager;
import nautilus.game.arcade.managers.GameStatManager;
import nautilus.game.arcade.managers.GameTournamentManager;
import nautilus.game.arcade.managers.GameWorldManager;
import nautilus.game.arcade.managers.HolidayManager;
import nautilus.game.arcade.managers.IdleManager;
import nautilus.game.arcade.managers.MiscManager;
import nautilus.game.arcade.shop.ArcadeShop;
public class ArcadeManager extends MiniPlugin implements IRelation
{
@ -944,7 +940,10 @@ public class ArcadeManager extends MiniPlugin implements IRelation
player.setLevel(0);
player.setExp(0f);
player.setPlayerTime(player.getWorld().getTime(), false);
((CraftPlayer) player).getHandle().spectating = false;
((CraftPlayer) player).getHandle().ghost = false;
((CraftPlayer) player).getHandle().k = true;
// Arrows go bye bye.
@ -1390,6 +1389,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
player.setFlying(true);
player.setFlySpeed(0.1f);
((CraftPlayer) player).getHandle().spectating = true;
((CraftPlayer) player).getHandle().ghost = true;
((CraftPlayer) player).getHandle().k = false;
GetCondition().Factory().Cloak("Spectator", player, player, 7777, true, true);

View File

@ -1,5 +1,7 @@
package nautilus.game.arcade;
import org.bukkit.Material;
import mineplex.core.game.GameCategory;
import mineplex.core.game.GameDisplay;
import nautilus.game.arcade.game.Game;
@ -31,6 +33,7 @@ import nautilus.game.arcade.game.games.micro.Micro;
import nautilus.game.arcade.game.games.milkcow.MilkCow;
import nautilus.game.arcade.game.games.minestrike.MineStrike;
import nautilus.game.arcade.game.games.mineware.MineWare;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
import nautilus.game.arcade.game.games.oldmineware.OldMineWare;
import nautilus.game.arcade.game.games.paintball.Paintball;
import nautilus.game.arcade.game.games.quiver.Quiver;
@ -59,8 +62,6 @@ import nautilus.game.arcade.game.games.wither.WitherGame;
import nautilus.game.arcade.game.games.wizards.Wizards;
import nautilus.game.arcade.game.games.zombiesurvival.ZombieSurvival;
import org.bukkit.Material;
public enum GameType
{
//Mini
@ -121,6 +122,7 @@ public enum GameType
Cards(Cards.class, GameDisplay.Cards),
Skywars(SoloSkywars.class, GameDisplay.Skywars),
SkywarsTeams(TeamSkywars.class, GameDisplay.SkywarsTeams, new GameType[]{GameType.Skywars}, false),
MonsterMaze(MonsterMaze.class, GameDisplay.MonsterMaze),
Event(EventGame.class, GameDisplay.Event, new GameType[]{
GameType.BaconBrawl, GameType.Barbarians, GameType.Bridge, GameType.Build, GameType.Build,

View File

@ -6,6 +6,52 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.UUID;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilWorld;
import mineplex.core.explosion.ExplosionEvent;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerDeathOutEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.bridge.kits.KitApple;
import nautilus.game.arcade.game.games.bridge.kits.KitArcher;
import nautilus.game.arcade.game.games.bridge.kits.KitBeserker;
import nautilus.game.arcade.game.games.bridge.kits.KitBomber;
import nautilus.game.arcade.game.games.bridge.kits.KitDestructor;
import nautilus.game.arcade.game.games.bridge.kits.KitMammoth;
import nautilus.game.arcade.game.games.bridge.kits.KitMiner;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.ore.OreHider;
import nautilus.game.arcade.ore.OreObsfucation;
import nautilus.game.arcade.stats.BridgesSniperStatTracker;
import nautilus.game.arcade.stats.DeathBomberStatTracker;
import nautilus.game.arcade.stats.FoodForTheMassesStatTracker;
import nautilus.game.arcade.stats.KillFastStatTracker;
import nautilus.game.arcade.stats.TntMinerStatTracker;
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.Location;
@ -29,6 +75,7 @@ import org.bukkit.event.block.BlockFromToEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
@ -40,45 +87,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.util.Vector;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilWorld;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.explosion.ExplosionEvent;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerDeathOutEvent;
import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.bridge.kits.*;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.ore.OreHider;
import nautilus.game.arcade.ore.OreObsfucation;
import nautilus.game.arcade.stats.BridgesSniperStatTracker;
import nautilus.game.arcade.stats.DeathBomberStatTracker;
import nautilus.game.arcade.stats.KillFastStatTracker;
import nautilus.game.arcade.stats.FoodForTheMassesStatTracker;
import nautilus.game.arcade.stats.TntMinerStatTracker;
public class Bridge extends TeamGame implements OreObsfucation
{
/**
@ -1159,6 +1167,59 @@ public class Bridge extends TeamGame implements OreObsfucation
if (!IsAlive(event.getPlayer()))
return;
//No water basing
if (event.getBlock().getRelative(BlockFace.UP).isLiquid() ||
event.getBlockReplacedState().getTypeId() == 8 ||
event.getBlockReplacedState().getTypeId() == 9 ||
event.getBlockReplacedState().getTypeId() == 10 ||
event.getBlockReplacedState().getTypeId() == 11)
{
if (event.getItemInHand() != null &&
event.getItemInHand().getType() == Material.WOOD_DOOR ||
event.getItemInHand().getTypeId() == 193 || //1.8 doors
event.getItemInHand().getTypeId() == 194 || //1.8 doors
event.getItemInHand().getTypeId() == 195 || //1.8 doors
event.getItemInHand().getTypeId() == 196 || //1.8 doors
event.getItemInHand().getTypeId() == 197 || //1.8 doors
event.getItemInHand().getTypeId() == 330 || //1.8 doors
event.getItemInHand().getTypeId() == 427 || //1.8 doors
event.getItemInHand().getTypeId() == 428 || //1.8 doors
event.getItemInHand().getTypeId() == 429 || //1.8 doors
event.getItemInHand().getTypeId() == 430 || //1.8 doors
event.getItemInHand().getTypeId() == 431 || //1.8 doors
event.getItemInHand().getType() == Material.TRAP_DOOR ||
event.getItemInHand().getTypeId() == 167 || //Iron trap door
event.getItemInHand().getType() == Material.LADDER ||
event.getItemInHand().getType() == Material.STONE_PLATE ||
event.getItemInHand().getType() == Material.WOOD_PLATE ||
event.getItemInHand().getType() == Material.IRON_PLATE ||
event.getItemInHand().getType() == Material.GOLD_PLATE ||
event.getItemInHand().getType() == Material.WOOD_BUTTON ||
event.getItemInHand().getType() == Material.STONE_BUTTON ||
event.getItemInHand().getType() == Material.SIGN ||
event.getItemInHand().getType() == Material.FENCE ||
event.getItemInHand().getType() == Material.FENCE_GATE ||
event.getItemInHand().getTypeId() == 183 || //1.8 Fences stuff
event.getItemInHand().getTypeId() == 184 ||
event.getItemInHand().getTypeId() == 185 ||
event.getItemInHand().getTypeId() == 186 ||
event.getItemInHand().getTypeId() == 187 ||
event.getItemInHand().getTypeId() == 188 ||
event.getItemInHand().getTypeId() == 189 ||
event.getItemInHand().getTypeId() == 190 ||
event.getItemInHand().getTypeId() == 191 ||
event.getItemInHand().getTypeId() == 192 ||
event.getItemInHand().getType() == Material.NETHER_FENCE ||
event.getItemInHand().getType() == Material.STEP ||
event.getItemInHand().getType() == Material.WOOD_STEP ||
event.getItemInHand().getTypeId() == 182) //Red sandstone slab
{
event.getPlayer().getWorld().playEffect(event.getBlock().getLocation(), Effect.STEP_SOUND, event.getItemInHand().getTypeId());
event.setCancelled(true);
return;
}
}
//Too High
if (event.getBlock().getLocation().getBlockY() > GetHeightLimit())
{
@ -1735,6 +1796,40 @@ public class Bridge extends TeamGame implements OreObsfucation
cheaterKill(damager);
}
}
@EventHandler
public void preventMinecarts(PlayerInteractEvent event)
{
if (!IsLive())
return;
if (!IsAlive(event.getPlayer()))
return;
if (!UtilEvent.isAction(event, ActionType.R))
return;
if (event.getItem() == null)
return;
if (event.getItem().getType().toString().toLowerCase().contains("minecart"))
{
event.setCancelled(true);
UtilInv.Update(event.getPlayer());
}
}
@EventHandler
public void preventMinecarts(EntitySpawnEvent event)
{
if (!IsLive())
return;
if (event.getEntityType().toString().toLowerCase().contains("minecart"))
{
event.getEntity().remove();
}
}
public void cheaterKill(Player player)
{

View File

@ -943,19 +943,25 @@ public class Build extends SoloGame
if (!event.getBlock().isLiquid())
return;
boolean in = false;
for (BuildData data : _data.values())
{
if (!data.inBuildArea(event.getBlock()))
if (data.inBuildArea(event.getBlock()))
{
event.setCancelled(true);
event.getEntity().remove();
//Effect
event.getBlock().getWorld().playEffect(event.getBlock().getLocation(), Effect.STEP_SOUND, ((FallingBlock) event.getEntity()).getBlockId());
return;
in = true;
break;
}
}
if (!in)
{
event.setCancelled(true);
event.getEntity().remove();
//Effect
event.getBlock().getWorld().playEffect(event.getBlock().getLocation(), Effect.STEP_SOUND, ((FallingBlock) event.getEntity()).getBlockId());
}
}
@EventHandler

View File

@ -358,6 +358,14 @@ public class Draw extends SoloGame
return;
}
}
else
{
if (event.getMessage().toLowerCase().contains(_round.Word.toLowerCase()))
{
event.setCancelled(true);
return;
}
}
}
@EventHandler

View File

@ -6,23 +6,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.ChatColor;
import org.bukkit.Difficulty;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilBlock;
@ -40,12 +23,41 @@ import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.SoloGame;
import nautilus.game.arcade.game.games.halloween.creatures.*;
import nautilus.game.arcade.game.games.halloween.kits.*;
import nautilus.game.arcade.game.games.halloween.waves.*;
import nautilus.game.arcade.game.games.halloween.creatures.CreatureBase;
import nautilus.game.arcade.game.games.halloween.creatures.InterfaceMove;
import nautilus.game.arcade.game.games.halloween.kits.KitFinn;
import nautilus.game.arcade.game.games.halloween.kits.KitRobinHood;
import nautilus.game.arcade.game.games.halloween.kits.KitThor;
import nautilus.game.arcade.game.games.halloween.waves.Wave1;
import nautilus.game.arcade.game.games.halloween.waves.Wave2;
import nautilus.game.arcade.game.games.halloween.waves.Wave3;
import nautilus.game.arcade.game.games.halloween.waves.Wave4;
import nautilus.game.arcade.game.games.halloween.waves.Wave5;
import nautilus.game.arcade.game.games.halloween.waves.WaveBase;
import nautilus.game.arcade.game.games.halloween.waves.WaveBoss;
import nautilus.game.arcade.game.games.halloween.waves.WaveVictory;
import nautilus.game.arcade.kit.Kit;
import net.minecraft.server.v1_7_R4.PacketPlayOutNamedSoundEffect;
import org.bukkit.ChatColor;
import org.bukkit.Difficulty;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.Fireball;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
public class Halloween extends SoloGame
{
//Wave Data
@ -411,6 +423,10 @@ public class Halloween extends SoloGame
for (Player player : GetPlayers(false))
{
//Prevent game hopping
if (!player.isOnline())
continue;
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), Manager.GetClients().Get(player).getAccountId(), "Decrepit Warhorse", false, 0, true);
}
}
@ -461,6 +477,26 @@ public class Halloween extends SoloGame
}
}
@EventHandler
public void makeFireballsNotGetRektBcFireballsAreRudeAf(EntityDamageByEntityEvent event)
{
if (!IsLive())
return;
if (!(event.getDamager() instanceof Player))
return;
Player player = (Player) event.getDamager();
if (!UtilPlayer.isSpectator(player) || IsAlive(player))
return;
if (!(event.getEntity() instanceof Fireball))
return;
event.setCancelled(true);
}
@EventHandler
public void ItemSpawn(ItemSpawnEvent event)
{
@ -523,16 +559,16 @@ public class Halloween extends SoloGame
//Rounds
Scoreboard.WriteBlank();
Scoreboard.Write(C.cYellow + "Wave");
Scoreboard.Write(C.cYellow + C.Bold + "Wave");
Scoreboard.Write(Math.min(6, _wave+1) + " of 6");
Scoreboard.WriteBlank();
Scoreboard.Write(C.cYellow + "Monsters");
Scoreboard.Write(C.cYellow + C.Bold + "Monsters");
Scoreboard.Write("" + _mobs.size());
//Drawer
Scoreboard.WriteBlank();
Scoreboard.Write(C.cYellow + "Players");
Scoreboard.Write(C.cYellow + C.Bold + "Players");
if (GetPlayers(true).size() < 8)
{

View File

@ -38,7 +38,7 @@ public class KitThor extends AbbreviatedKit
new Perk[]
{
new PerkKnockbackAttack(2),
new PerkFletcher(2, 2, true),
new PerkFletcher(2, 2, true, 9),
new PerkSeismicHammer(),
new PerkHammerThrow(),
},

View File

@ -10,11 +10,11 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer;
import org.bukkit.entity.Arrow;
@ -277,7 +277,7 @@ public class MineStrike extends TeamGame
//"Tap Crouch when close to an ally to Boost",
"Open Inventory at spawn to buy guns",
"Hold Right-Click to Plant Bomb",
"Look at the Bomb to Defuse Bomb",
"Look at the Bomb to Defuse it",
"Moving decreases accuracy",
"Sprinting heavily decreases accuracy",
"Jumping massively decreases accuracy",
@ -716,6 +716,7 @@ public class MineStrike extends TeamGame
return;
Grenade grenade = getGrenadeInHand(event.getPlayer(), null);
if (grenade == null)
return;
@ -1519,9 +1520,25 @@ public class MineStrike extends TeamGame
if (!UtilGear.isMat(player.getItemInHand(), Material.GOLD_SWORD))
return;
// Fixed bomb able to be planted after the round is over.
if (_roundOver)
{
UtilPlayer.message(player, F.main("Game", "You cannot plant the bomb once the round is over."));
event.setCancelled(true);
return;
}
// Added a small tip for players that are trying to right-click with the bomb.
if (UtilEvent.isAction(event, ActionType.L))
{
UtilPlayer.message(player, F.main("Game", "You must " + F.elem("Right-Click") + " while holding the bomb to plant it."));
event.setCancelled(true);
return;
}
if (!UtilEnt.isGrounded(player))
{
UtilPlayer.message(player, F.main("Game", "You can only plant Bomb on the ground!"));
UtilPlayer.message(player, F.main("Game", "You can only plant the bomb on the ground."));
event.setCancelled(true);
return;
}
@ -1529,7 +1546,7 @@ public class MineStrike extends TeamGame
//Should never occur with 1 Bomb
if (_bombPlanter != null)
{
UtilPlayer.message(player, F.main("Game", "Someone else is planting Bomb..."));
UtilPlayer.message(player, F.main("Game", "Someone else is planting the bomb."));
event.setCancelled(true);
return;
}
@ -1548,7 +1565,7 @@ public class MineStrike extends TeamGame
//Too Far
if (!near)
{
UtilPlayer.message(player, F.main("Game", "You can only plant Bomb at a bomb site!"));
UtilPlayer.message(player, F.main("Game", "You can only plant the bomb at a bomb site."));
event.setCancelled(true);
return;
}
@ -1556,7 +1573,7 @@ public class MineStrike extends TeamGame
_bombPlanter = player;
_bombPlanter.setExp(0f);
UtilPlayer.message(player, F.main("Game", "You are placing the Bomb."));
UtilPlayer.message(player, F.main("Game", "You are now placing the bomb."));
//Radio
playSound(Radio.T_BOMB_PLANT, null, GetTeam(_bombPlanter));
@ -1568,6 +1585,10 @@ public class MineStrike extends TeamGame
if (event.getType() != UpdateType.TICK)
return;
// Added to check if the round is over when a bomb is being planted.
if (_roundOver)
return;
if (_bombPlanter == null)
return;
@ -1937,6 +1958,7 @@ public class MineStrike extends TeamGame
for (Player player : UtilServer.getPlayers())
{
player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f);
removeScope(player);
Recharge.Instance.Reset(player, "reload");
}
@ -2838,4 +2860,28 @@ public class MineStrike extends TeamGame
{
return _freezeTime > 0;
}
@EventHandler
public void cancelFireExtinguish(PlayerInteractEvent event)
{
// This is an extra event added in order to prevent players from
// extinguishing fire that gets generated from moltovs and incendiary grenades.
if (!IsLive())
return;
if (UtilEvent.isAction(event, ActionType.L_BLOCK))
{
Block block = event.getClickedBlock();
for (BlockFace face : BlockFace.values())
{
if (block.getRelative(face).getType() == Material.FIRE)
{
event.setCancelled(true);
return;
}
}
}
}
}

View File

@ -23,6 +23,7 @@ import nautilus.game.arcade.game.games.minestrike.items.guns.Gun;
import nautilus.game.arcade.game.games.minestrike.items.guns.GunStats;
import nautilus.game.arcade.game.games.minestrike.items.guns.Shotgun;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.GameMode;
@ -46,7 +47,7 @@ public class ShopManager
}
public void enterShop(Player player)
{
{
GameTeam team = Host.GetTeam(player);
if (team == null)
return;
@ -101,14 +102,13 @@ public class ShopManager
public void addItem(StrikeItem item, Player player, int slot)
{
player.getInventory().setItem(slot, item.getShopItem(getMoney(player), hasItem(player, item)));
_shop.get(player).put(slot, item);
}
public boolean hasItem(Player player, StrikeItem item)
{
int count = 0;
for (int i=0 ; i<9 ; i++)
{
if (UtilGear.isMat(player.getInventory().getItem(i), item.getSkin()))
@ -286,7 +286,7 @@ public class ShopManager
}
public void update()
{
{
for (Player player : Host.GetPlayers(false))
{
GameTeam team = Host.GetTeam(player);

View File

@ -3,7 +3,6 @@ package nautilus.game.arcade.game.games.minestrike.items.grenades;
import java.util.HashMap;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilParticle.ParticleType;
@ -12,6 +11,7 @@ import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.minestrike.MineStrike;
import nautilus.game.arcade.game.games.minestrike.Radio;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
@ -39,7 +39,10 @@ public abstract class FireGrenadeBase extends Grenade
@Override
public boolean updateCustom(MineStrike game, Entity ent)
{
if (UtilEnt.isGrounded(ent))
// Fixed grenade effect not being activated when thrown in the ground.
// Looks like ent.isOnGround() worked, while we previously used UtilEnt.isGrounded(ent).
if (ent.isOnGround())
{
createFire(game, ent.getLocation());
@ -76,7 +79,10 @@ public abstract class FireGrenadeBase extends Grenade
public void run()
{
if (round == game.getRound() && !game.isFreezeTime())
game.Manager.GetBlockRestore().Add(block, 51, (byte)0, (long) (_baseTime + blocks.get(block) * _baseTime));
{
double time = _baseTime + blocks.get(block) * _baseTime;
game.Manager.GetBlockRestore().Add(block, 51, (byte)0, (long) time);
}
}
}, 60 - (int)(60d * blocks.get(block)));
}

View File

@ -95,7 +95,7 @@ public abstract class Grenade extends StrikeItem
if (alreadyHas >= _limit)
return false;
if ((player.getInventory().getItem(i) == null || isStack(player.getInventory().getItem(i))) && bestSlot == -1)
if ((player.getInventory().getItem(i) == null || UtilInv.IsItem(player.getInventory().getItem(i), Material.AIR, (byte) -1) && bestSlot == -1))
bestSlot = i;
}
@ -130,7 +130,7 @@ public abstract class Grenade extends StrikeItem
}
public void throwGrenade(Player player, boolean wasLeftClick, MineStrike game)
{
{
player.setItemInHand(null);
_thrower = player;

View File

@ -0,0 +1,300 @@
package nautilus.game.arcade.game.games.monstermaze;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilMath;
import nautilus.game.arcade.game.games.monstermaze.mazes.Maze1;
import nautilus.game.arcade.game.games.monstermaze.mazes.Maze2;
import nautilus.game.arcade.game.games.monstermaze.mazes.Maze3;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
public class MMMazes
{
private static int[][] _lastSelected = null;
public static MazePreset getRandomMapPreset(Location loc, MazeBlockData data)
{
return new MazePreset(getRandomMap(), loc, data);
}
public static class MazePreset
{
private MazeBlockData _data;
private boolean _built = false;
private ArrayList<Location> _maze = new ArrayList<Location>();
private ArrayList<Location> _validSafePadSpawns;
private ArrayList<Location> _spawns = new ArrayList<Location>();
private ArrayList<Location> _centerSafeZone = new ArrayList<Location>();
private ArrayList<Location> _centerSafeZonePaths = new ArrayList<Location>();
private ArrayList<Location> _glassBounds = new ArrayList<Location>();
private ArrayList<Location> _safeZones = new ArrayList<Location>();
private Location _center;
public MazePreset(int[][] rawMaze, Location loc, MazeBlockData data)
{
int[][] maze = rawMaze;
_data = data;
_center = loc;
Location cur = _center.clone().subtract(49, 0, 49);
// x/y refers to array coordinates, not physical minecraft location
//0 = Air
//1 = Maze
//2 = Spawn
//3 = Center Safe Area
//4 = Safe Barrier
//5 = Paths through center safe area
//6 = paths through safe barrier
for (int y = 0; y < 99; y++)
{
for (int x = 0; x < 99; x++)
{
int i = maze[y][x];
if(i == 1)
{
_maze.add(cur);
}
else if(i == 2)
{
_maze.add(cur);
_spawns.add(cur);
}
else if(i == 3)
{
_centerSafeZone.add(cur);
}
else if(i == 4)
{
_centerSafeZone.add(cur);
_glassBounds.add(cur.clone().add(0, 2, 0));
}
else if (i == 5)
{
_centerSafeZone.add(cur);
_centerSafeZonePaths.add(cur);
_maze.add(cur);
}
else if (i == 6)
{
_centerSafeZone.add(cur);
_glassBounds.add(cur.clone().add(0, 2, 0));
_centerSafeZonePaths.add(cur);
_maze.add(cur);
}
cur = cur.clone().add(0, 0, 1);
}
cur.setZ(_center.clone().subtract(49, 0, 49).getZ());
cur = cur.clone().add(1, 0, 0);
}
_validSafePadSpawns = new ArrayList<Location>(_maze);
Iterator<Location> iter = _validSafePadSpawns.iterator();
removeLoop: while(iter.hasNext())
{
Location l = iter.next();
for(Location s : _spawns)
{
if(UtilMath.offset2d(l, s) < 10)
{
iter.remove();
continue removeLoop;
}
}
for(Location b : _glassBounds)
{
if(UtilMath.offset2d(l, b) < 7)
{
iter.remove();
continue removeLoop;
}
}
}
ArrayList<Location> locsToPickFrom = new ArrayList<>(_validSafePadSpawns);
int numberOfSafeZones = 8;
for (int i = 0; i < numberOfSafeZones; i++)
{
Location toAdd = null;
if (locsToPickFrom == null)
{
toAdd = UtilAlg.Random(locsToPickFrom);
}
else
{
ArrayList<Location> toBeAwayFrom = new ArrayList<Location>(_safeZones);
toBeAwayFrom.add(_center);
toAdd = UtilAlg.getLocationAwayFromOtherLocations(locsToPickFrom, toBeAwayFrom);
}
_safeZones.add(toAdd);
// for(Block b : UtilBlock.getInBoundingBox(toAdd.clone().add(1, 0, 1), toAdd.clone().subtract(1, 0, 1), false))
// {
// _safeZones.add(b.getLocation());
// }
for (Block b : UtilBlock.getInRadius(toAdd.getBlock(), 6).keySet())
{
locsToPickFrom.remove(b.getLocation());
}
}
System.out.println("_safeZones.size() = " + _safeZones.size());
Iterator<Location> it = _maze.iterator();
while(it.hasNext())
{
Location lo = it.next();
if(_safeZones.contains(lo.getBlock().getLocation())) it.remove();
}
Iterator<Location> iter2 = _validSafePadSpawns.iterator();
removeLoop: while(iter2.hasNext())
{
Location l = iter2.next();
for(Location s : _safeZones)
{
if(UtilMath.offset2d(l, s) < 7)
{
iter2.remove();
continue removeLoop;
}
}
}
}
@SuppressWarnings("deprecation")
public void build()
{
for (Location loc : _maze)
{
buildMazeBlockAt(loc);
}
for (Location loc : _spawns)
{
loc.clone().subtract(0, 1, 0).getBlock().setType(Material.REDSTONE_BLOCK);
}
for (Location loc : _centerSafeZone)
{
loc.clone().subtract(0, 1, 0).getBlock().setTypeIdAndData(159, (byte) 5, true);
}
_built = true;
}
public ArrayList<Location> getSpawns()
{
return _spawns;
}
public ArrayList<Location> getSafeZones()
{
return _safeZones;
}
public boolean isBuilt()
{
return _built;
}
@SuppressWarnings("deprecation")
public void buildMazeBlockAt(Location loc)
{
Location mod = loc.clone();
mod.subtract(0, 1, 0).getBlock().setTypeIdAndData(_data.Top.Type.getId(), _data.Top.Data, true);
mod.subtract(0, 1, 0).getBlock().setTypeIdAndData(_data.Middle.Type.getId(), _data.Middle.Data, true);
mod.subtract(0, 1, 0).getBlock().setTypeIdAndData(_data.Bottom.Type.getId(), _data.Bottom.Data, true);
}
// anywhere a monster can walk
public ArrayList<Location> getMaze()
{
return _maze;
}
public ArrayList<Location> getGlassBounds()
{
return _glassBounds;
}
public ArrayList<Location> getCenterSafeZone()
{
return _centerSafeZone;
}
public ArrayList<Location> getCenterSafeZonePaths()
{
return _centerSafeZonePaths;
}
public ArrayList<Location> getValidSafePadSpawns()
{
return _validSafePadSpawns;
}
public Location getCenter()
{
return _center;
}
}
// PARSED MAZES
private static final int[][] getRandomMap()
{
List<int[][]> maps = Arrays.asList(Maze1.MAZE, Maze2.MAZE, Maze3.MAZE);
//Attempt 10 times to get a new random maze.
int[][] selected = null;
for (int i = 0 ; i < 10 && selected == null ; i++)
{
int[][] possible = maps.get(UtilMath.r(maps.size()));
if (_lastSelected != possible)
selected = possible;
}
//If the random hit the last selected every time
//Then just pick a random one.
if (selected == null)
selected = maps.get(UtilMath.r(maps.size()));
//This makes it work between different games.
_lastSelected = selected;
return maps.get(UtilMath.r(maps.size()));
}
//0 = Air
//1 = Maze
//2 = Spawn
//3 = Center Safe Area
//4 = Safe Barrier
//5 = Paths through center safe area
//6 = paths through safe barrier
}

View File

@ -0,0 +1,34 @@
package nautilus.game.arcade.game.games.monstermaze;
import org.bukkit.Material;
public class MazeBlockData
{
public static class MazeBlock
{
public final Material Type;
public final byte Data;
public MazeBlock(Material type)
{
this(type, (byte) 0);
}
public MazeBlock(Material type, byte data)
{
Type = type;
Data = data;
}
}
public final MazeBlock Top;
public final MazeBlock Middle;
public final MazeBlock Bottom;
public MazeBlockData(MazeBlock top, MazeBlock middle, MazeBlock bottom)
{
Top = top;
Middle = middle;
Bottom = bottom;
}
}

View File

@ -0,0 +1,23 @@
package nautilus.game.arcade.game.games.monstermaze;
import org.bukkit.Location;
public class MazeMobWaypoint
{
public Location Last;
public Location Target;
public long Time;
public CardinalDirection Direction = CardinalDirection.NULL;
public MazeMobWaypoint(Location last)
{
Last = last;
Target = null;
Time = System.currentTimeMillis();
}
public enum CardinalDirection
{
NORTH, SOUTH, EAST, WEST, NULL // such order much not care
}
}

View File

@ -0,0 +1,433 @@
package nautilus.game.arcade.game.games.monstermaze;
import java.util.HashMap;
import java.util.Iterator;
import java.util.regex.Pattern;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.SoloGame;
import nautilus.game.arcade.game.games.monstermaze.MMMazes.MazePreset;
import nautilus.game.arcade.game.games.monstermaze.MazeBlockData.MazeBlock;
import nautilus.game.arcade.game.games.monstermaze.events.AbilityUseEvent;
import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent;
import nautilus.game.arcade.game.games.monstermaze.kits.KitBodyBuilder;
import nautilus.game.arcade.game.games.monstermaze.kits.KitJumper;
import nautilus.game.arcade.game.games.monstermaze.kits.KitRepulsor;
import nautilus.game.arcade.game.games.monstermaze.kits.KitSlowball;
import nautilus.game.arcade.game.games.monstermaze.trackers.AbilityUseTracker;
import nautilus.game.arcade.game.games.monstermaze.trackers.FirstToSafepadTracker;
import nautilus.game.arcade.game.games.monstermaze.trackers.PilotTracker;
import nautilus.game.arcade.game.games.monstermaze.trackers.SnowmanHitTracker;
import nautilus.game.arcade.game.games.monstermaze.trackers.SurvivePast10thSafepadTracker;
import nautilus.game.arcade.kit.Kit;
import org.bukkit.Bukkit;
import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.entity.EnderCrystal;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.scoreboard.Team;
public class MonsterMaze extends SoloGame
{
private Maze _maze;
private EntityType _monsterType;
private MazePreset _preset;
private Location _center;
private HashMap<Player, Long> _launched = new HashMap<Player, Long>();
@SuppressWarnings("unchecked")
public MonsterMaze(ArcadeManager manager)
{
super(manager, GameType.MonsterMaze,
new Kit[]
{
new KitJumper(manager),
new KitSlowball(manager),
new KitBodyBuilder(manager),
new KitRepulsor(manager)
},
new String[]
{
"Run over the maze and don't fall off,",
"but make sure you avoid the monsters!",
"Make it to a Safe Pad or be killed!"
});
DamagePvP = false;
DamagePvE = false;
DamageFall = false;
HungerSet = 20;
PrepareFreeze = false;
HungerSet = 20;
CompassEnabled = false;
VersionRequire1_8 = true;
registerStatTrackers(
new SnowmanHitTracker(this),
new AbilityUseTracker(this),
new FirstToSafepadTracker(this),
new PilotTracker(this),
new SurvivePast10thSafepadTracker(this)
);
//_maze = new SnowmanMaze(this, WorldData.GetDataLocs("GRAY")/*, WorldData.GetCustomLocs("103")*/);
}
public Maze getMaze()
{
return _maze;
}
@EventHandler
public void GameStateChange(GameStateChangeEvent event)
{
if(event.GetState() == GameState.Live)
{
_maze.removePlayerContainmentUnit();
UtilTextMiddle.display("", C.cYellow + C.Bold + "Get to the Safe Pad!", 5, 40, 5);
for (Team team : GetScoreboard().GetScoreboard().getTeams())
team.setCanSeeFriendlyInvisibles(true);
}
else if(event.GetState() == GameState.Recruit)
{
_monsterType = loadEntityType();
_center = WorldData.GetDataLocs("ORANGE").get(0);
_preset = MMMazes.getRandomMapPreset(_center, getMazeBlockData());
_preset.build();
_maze = new Maze(this, _preset);
_maze.fillSpawn(150);
}
}
private EntityType loadEntityType()
{
EntityType en = EntityType.SNOWMAN;
for (String key : WorldData.GetAllCustomLocs().keySet())
{
try
{
if (key.startsWith("E"))
{
en = EntityType.valueOf(key.split(Pattern.quote("="))[1].toUpperCase());
}
}
catch (Exception ex)
{
}
}
return en;
}
@SuppressWarnings("deprecation")
private MazeBlockData getMazeBlockData()
{
MazeBlock top = null;
MazeBlock mid = null;
MazeBlock bottom = null;
for (String key : WorldData.GetAllCustomLocs().keySet())
{
try
{
if (key.startsWith("B1"))
{
String[] typeData = key.split(Pattern.quote("="))[1].split(Pattern.quote(","));
top = new MazeBlock(Material.getMaterial(Integer.valueOf(typeData[0])), Byte.valueOf(typeData[1]));
}
else if (key.startsWith("B2"))
{
String[] typeData = key.split(Pattern.quote("="))[1].split(Pattern.quote(","));
mid = new MazeBlock(Material.getMaterial(Integer.valueOf(typeData[0])), Byte.valueOf(typeData[1]));
}
else if (key.startsWith("B3"))
{
String[] typeData = key.split(Pattern.quote("="))[1].split(Pattern.quote(","));
bottom = new MazeBlock(Material.getMaterial(Integer.valueOf(typeData[0])), Byte.valueOf(typeData[1]));
}
}
catch (Exception ex)
{
}
}
if (top != null && mid != null && bottom != null)
{
return new MazeBlockData(top, mid, bottom);
}
else
{
return new MazeBlockData(new MazeBlock(Material.QUARTZ_BLOCK), new MazeBlock(Material.QUARTZ_BLOCK, (byte) 2), new MazeBlock(Material.STEP, (byte) 15));
}
}
private void setJumpsLeft(Player player, int jumps)
{
if (jumps <= 0)
{
player.getInventory().setItem(8, null);
}
else
{
player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.FEATHER, (byte)0, jumps, C.cYellow + C.Bold + jumps + " Jumps Remaining"));
}
}
@EventHandler
public void jumpEvent(UpdateEvent event)
{
if(event.getType() != UpdateType.TICK)
return;
if (!IsLive())
return;
for (Player p : GetPlayers(true))
{
if (!UtilInv.contains(p, "Jumps Remaining", Material.FEATHER, (byte) 0, 1) || p.getLocation().getY()-_center.getY() <= 0 || !Recharge.Instance.usable(p, "MM Player Jump") || isLaunched(p))
continue;
setJumpsLeft(p, p.getInventory().getItem(8).getAmount() - 1);
p.playSound(p.getLocation(), Sound.CHICKEN_EGG_POP, 1.0f, 1.0f);
Recharge.Instance.useForce(p, "MM Player Jump", 750);
//Find blocks below a player
for (int i = 0 ; i < 3 ; i++)
{
Block under = p.getLocation().clone().subtract(0, i, 0).getBlock();
if (under.getType() == Material.AIR)
continue;
under.getWorld().playEffect(under.getLocation(), Effect.STEP_SOUND, UtilBlock.getStepSoundId(under));
for (Block block : UtilBlock.getSurrounding(under, true))
{
if (block.getType() == Material.AIR)
continue;
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, UtilBlock.getStepSoundId(block));
}
break;
}
Bukkit.getPluginManager().callEvent(new AbilityUseEvent(p));
}
}
@EventHandler
public void PotionEffects(UpdateEvent event)
{
if(event.getType() != UpdateType.TICK) return;
if(!InProgress()) return;
for(Player pl : GetPlayers(true))
{
if (IsLive() && (UtilInv.contains(pl, Material.FEATHER, (byte) 0, 1)))
{
while (Manager.GetCondition().GetActiveCondition(pl, ConditionType.JUMP) != null)
Manager.GetCondition().GetActiveCondition(pl, ConditionType.JUMP).Expire();
}
else
{
if (!Manager.GetCondition().HasCondition(pl, ConditionType.JUMP, null))
Manager.GetCondition().Factory().Jump("No jumping", pl, null, 9999999, 250, true, false, false);
}
// if (!Manager.GetCondition().HasCondition(pl, ConditionType.INVISIBILITY, null))
// Manager.GetCondition().Factory().Invisible("Hide players", pl, null, 9999999, 2, true, false, false);
}
}
public EntityType getMonsterType()
{
return _monsterType;
}
@EventHandler
public void onPlayerBump(MonsterBumpPlayerEvent event)
{
if (!IsLive())
return;
_launched.put(event.getPlayer(), System.currentTimeMillis());
}
@EventHandler
public void tickBumps(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
if (!IsLive())
return;
HashMap<Player, Long> copy = new HashMap<Player, Long>();
copy.putAll(_launched);
for (Iterator<Player> iterator = copy.keySet().iterator() ; iterator.hasNext() ;)
{
Player player = iterator.next();
if (player == null || !player.isOnline())
{
_launched.remove(player);
continue;
}
if (UtilEnt.isGrounded(player) && UtilTime.elapsed(copy.get(player), 500))
{
_launched.remove(player);
continue;
}
//If there are blocks surrounding the block it's on top of (if it's on the side of a block)
if (player.getLocation().getY() == player.getLocation().getBlockY() && !UtilBlock.getInBoundingBox(player.getLocation().clone().add(1, -1, 1), player.getLocation().clone().subtract(1, 1, 1), true).isEmpty() && UtilTime.elapsed(copy.get(player), 500))
{
_launched.remove(player);
continue;
}
//Time out
if (UtilTime.elapsed(copy.get(player), 3000))
{
_launched.remove(player);
continue;
}
}
}
public boolean isLaunched(Player player)
{
return _launched.containsKey(player);
}
@EventHandler
public void onRegain(EntityRegainHealthEvent event)
{
if (event.getRegainReason() == RegainReason.SATIATED)
{
event.setCancelled(true);
}
}
//Fix for eye of ender
@EventHandler
public void onDamage(EntityDamageEvent event)
{
if (event.getEntity() instanceof EnderCrystal)
{
event.setCancelled(true);
}
}
private boolean _announced = false;
@EventHandler
public void sendF5Message(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTEST)
return;
if (GetState() != GameState.Prepare)
return;
if (_announced)
return;
if (!UtilTime.elapsed(GetStateTime(), 4000))
return;
_announced = true;
UtilTextMiddle.display(C.cYellow + C.Bold + "Press F5", C.cAqua + C.Bold + "Monster Maze is best in 3rd person!");
Announce(C.cYellow + C.Scramble + "@@" + C.cAqua + C.Bold + " Monster Maze is best played in 3rd Person! (Push F5) " + C.cYellow + C.Scramble + "@@");
}
@Override
@EventHandler
public void ScoreboardUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
if (GetTeamList().isEmpty())
return;
Scoreboard.Reset();
Scoreboard.WriteBlank();
Scoreboard.Write(C.cYellow + C.Bold + "Players");
if (GetPlayers(true).size() > 5)
{
Scoreboard.Write(C.cWhite + GetPlayers(true).size() + " Alive");
}
else
{
for (Player p : GetPlayers(true))
{
Scoreboard.Write(C.cWhite + p.getName());
}
}
Scoreboard.WriteBlank();
Scoreboard.Write(C.cGreen + C.Bold + "Safe Pad");
if (_maze.getSafePad() != null)
{
Scoreboard.Write(C.cWhite + _maze.getPhaseTimer() + " Seconds");
}
else
{
Scoreboard.Write("None");
}
Scoreboard.WriteBlank();
Scoreboard.Write(C.cGold + C.Bold + "Stage");
Scoreboard.Write(C.cWhite + getMaze().getCurrentSafePadCount());
Scoreboard.Draw();
}
}

View File

@ -0,0 +1,309 @@
package nautilus.game.arcade.game.games.monstermaze;
import java.util.ArrayList;
import java.util.Iterator;
import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilPlayer;
import net.minecraft.server.v1_7_R4.Packet;
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockBreakAnimation;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
public class SafePad
{
private MonsterMaze Host;
// private Maze _maze;
private Location _loc;
private int _decayCount = 11;
private ArrayList<SafePadBlock> _blocks = new ArrayList<SafePadBlock>();
public SafePad(MonsterMaze host, Maze maze, Location loc)
{
Host = host;
// _maze = maze;
_loc = loc;
//beacon surface
for (int x = -2 ; x < 3 ; x++)
{
for (int z = -2 ; z < 3 ; z++)
{
if (x == 0 && z == 0)
continue;
_blocks.add(new SafePadBlock(loc.clone().add(x, 0, z), Material.STAINED_CLAY, (byte) 5));
}
}
// beacon
_blocks.add(new SafePadBlock(loc.clone().add(0, 0, 0), Material.BEACON, (byte)0));
// beacon base
for (int x = -1 ; x < 2 ; x++)
{
for (int z = -1 ; z < 2 ; z++)
{
_blocks.add(new SafePadBlock(loc.clone().add(x, -1, z), Material.IRON_BLOCK, (byte)0));
}
//Stairs
_blocks.add(new SafePadBlock(loc.clone().add(x, -1, 2), Material.QUARTZ_STAIRS, (byte) 7));
_blocks.add(new SafePadBlock(loc.clone().add(x, -1, -2), Material.QUARTZ_STAIRS, (byte) 6));
_blocks.add(new SafePadBlock(loc.clone().add(2, -1, x), Material.QUARTZ_STAIRS, (byte) 5));
_blocks.add(new SafePadBlock(loc.clone().add(-2, -1, x), Material.QUARTZ_STAIRS, (byte) 4));
}
// corner blocks
_blocks.add(new SafePadBlock(loc.clone().add(2, -1, 2), Material.QUARTZ_BLOCK, (byte) 1));
_blocks.add(new SafePadBlock(loc.clone().add(-2, -1, 2), Material.QUARTZ_BLOCK, (byte) 1));
_blocks.add(new SafePadBlock(loc.clone().add(2, -1, -2), Material.QUARTZ_BLOCK, (byte) 1));
_blocks.add(new SafePadBlock(loc.clone().add(-2, -1, -2), Material.QUARTZ_BLOCK, (byte) 1));
// air slabs
for (int x = -2 ; x < 3 ; x++)
{
for (int z = -2 ; z < 3 ; z++)
{
_blocks.add(new SafePadBlock(loc.clone().add(x, -2, z), Material.AIR, (byte) 0));
}
}
}
public class SafePadBlock
{
private Material _origM;
private byte _origD;
private Material _tempMat;
private byte _tempData;
Location _loc;
@SuppressWarnings("deprecation")
public SafePadBlock(Location loc, Material newMat, byte newData)
{
_origM = loc.getBlock().getType();
_origD = loc.getBlock().getData();
_tempMat = newMat;
_tempData = newData;
_loc = loc;
}
@SuppressWarnings("deprecation")
public void setMaterial(Material m)
{
_tempMat = m;
MapUtil.QuickChangeBlockAt(_loc, _tempMat.getId(), _tempData);
}
@SuppressWarnings("deprecation")
public void setData(byte b) // for glass changing
{
_tempData = b;
MapUtil.QuickChangeBlockAt(_loc, _tempMat.getId(), _tempData);
}
public Material getBlockMaterial()
{
return _loc.getBlock().getType();
}
@SuppressWarnings("deprecation")
public byte getBlockData()
{
return _loc.getBlock().getData();
}
public Location getLocation()
{
return _loc;
}
@SuppressWarnings("deprecation")
public void build()
{
MapUtil.QuickChangeBlockAt(_loc, _tempMat.getId(), _tempData);
// _loc.getWorld().playEffect(_loc, Effect.STEP_SOUND, _loc.getBlock().getTypeId());
}
@SuppressWarnings("deprecation")
public void restore()
{
MapUtil.QuickChangeBlockAt(_loc, _origM.getId(), _origD);
// _loc.getWorld().playEffect(_loc, Effect.STEP_SOUND, _loc.getBlock().getTypeId());
}
}
public void build()
{
for(SafePadBlock spb : _blocks)
{
spb.build();
}
}
private void setBreakData(byte newData)
{
for (SafePadBlock spb : _blocks)
{
if (spb.getBlockMaterial() != Material.STAINED_CLAY)
continue;
spb.setData(newData);
}
}
public void turnOffBeacon()
{
for (SafePadBlock bl : _blocks)
{
if (bl.getBlockMaterial() == Material.IRON_BLOCK)
bl.setMaterial(Material.QUARTZ_BLOCK);
if (bl.getBlockMaterial() == Material.BEACON)
{
bl.setMaterial(Material.STAINED_CLAY);
bl.setData((byte) 5);
}
}
}
public boolean decay()
{
if (_decayCount == -1)
return true;
_decayCount--;
if(_decayCount == 10)
{
setBreakData((byte)5); // green
setCrackedProgress(1);
}
else if(_decayCount == 9)
{
setCrackedProgress(2);
}
else if(_decayCount == 8)
{
setBreakData((byte)4); // yellow
setCrackedProgress(3);
}
else if(_decayCount == 7)
{
setCrackedProgress(4);
}
else if(_decayCount == 6)
{
setBreakData((byte)1); // orange
setCrackedProgress(5);
}
else if(_decayCount == 5)
{
setCrackedProgress(6);
}
else if(_decayCount == 4)
{
setBreakData((byte)14); // red
setCrackedProgress(7);
}
else if(_decayCount == 3)
{
setCrackedProgress(8);
}
else if(_decayCount == 2)
{
setCrackedProgress(9);
}
else if(_decayCount == 1)
{
_decayCount = -1;
setCrackedProgress(-1);
destroySurface();
destroyBase();
return true;
}
return false;
}
private void setCrackedProgress(int progress)
{
int i = 0;
Iterator<SafePadBlock> iter = _blocks.iterator();
ArrayList<Packet> packets = new ArrayList<Packet>();
while(iter.hasNext())
{
SafePadBlock spb = iter.next();
if (!spb.getLocation().getBlock().getType().equals(Material.STAINED_CLAY))
continue;
i++;
Packet packet = new PacketPlayOutBlockBreakAnimation(i, spb.getLocation().getBlockX(), spb.getLocation().getBlockY(), spb.getLocation().getBlockZ(), progress);
packets.add(packet);
}
for(Player p : Host.GetPlayers(false))
{
Packet[] pcks = new Packet[packets.size()];
packets.toArray(pcks);
UtilPlayer.sendPacket(p, pcks);
}
/*for(SafePadBlock spb : _blocks)
{
if(!spb.getLocation().getBlock().getType().equals(Material.STAINED_GLASS)) continue;
UtilParticle.PlayParticle(ParticleType.BLOCK_DUST.getParticle(Material.STAINED_GLASS, spb.getBlockData()), spb.getLocation(), 0.5f, 0.5f, 0.5f, 0.05f, 8, ViewDist.NORMAL, Host.GetPlayers(false).toArray(new Player[Host.GetPlayers(false).size()]));
Packet packet = new PacketPlayOutBlockBreakAnimation(1, spb.getLocation().getBlockX(), spb.getLocation().getBlockY(), spb.getLocation().getBlockZ(), progress);
for(Player p : Host.GetPlayers(false))
{
UtilPlayer.sendPacket(p, packet);
}
}*/
}
public void destroyBase()
{
for (final SafePadBlock bl : _blocks)
{
if (bl.getBlockMaterial() == Material.QUARTZ_BLOCK || bl.getBlockMaterial() == Material.QUARTZ_STAIRS || bl.getBlockMaterial() == Material.AIR)
{
bl.restore();
}
}
}
public void destroySurface()
{
for (final SafePadBlock bl : _blocks)
{
if (bl.getBlockMaterial() == Material.STAINED_CLAY)
{
bl.restore();
}
}
}
public Location getLocation()
{
return _loc;
}
public boolean isOn(Entity e)
{
return UtilAlg.inBoundingBox(e.getLocation(), getLocation().clone().add(2.999, 5, 2), getLocation().clone().add(-2, 0, -2.999));
}
}

View File

@ -0,0 +1,30 @@
package nautilus.game.arcade.game.games.monstermaze.events;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class AbilityUseEvent extends PlayerEvent
{
/**
* @author Mysticate
*/
private static final HandlerList _handlers = new HandlerList();
private static HandlerList getHandlerList()
{
return _handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
public AbilityUseEvent(Player player)
{
super(player);
}
}

View File

@ -0,0 +1,30 @@
package nautilus.game.arcade.game.games.monstermaze.events;
import org.bukkit.entity.Entity;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityEvent;
public class EntityLaunchEvent extends EntityEvent
{
/**
* @author Mysticate
*/
private static final HandlerList _handlers = new HandlerList();
private static HandlerList getHandlerList()
{
return _handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
public EntityLaunchEvent(Entity ent)
{
super(ent);
}
}

View File

@ -0,0 +1,30 @@
package nautilus.game.arcade.game.games.monstermaze.events;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class FirstToSafepadEvent extends PlayerEvent
{
/**
* @author Mysticate
*/
private static final HandlerList _handlers = new HandlerList();
private static HandlerList getHandlerList()
{
return _handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
public FirstToSafepadEvent(Player player)
{
super(player);
}
}

View File

@ -0,0 +1,30 @@
package nautilus.game.arcade.game.games.monstermaze.events;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.player.PlayerEvent;
public class MonsterBumpPlayerEvent extends PlayerEvent
{
/**
* @author Mysticate
*/
private static final HandlerList _handlers = new HandlerList();
private static HandlerList getHandlerList()
{
return _handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
public MonsterBumpPlayerEvent(Player player)
{
super(player);
}
}

View File

@ -0,0 +1,24 @@
package nautilus.game.arcade.game.games.monstermaze.events;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
public class SafepadBuildEvent extends Event
{
/**
* @author Mysticate
*/
private static final HandlerList _handlers = new HandlerList();
private static HandlerList getHandlerList()
{
return _handlers;
}
@Override
public HandlerList getHandlers()
{
return getHandlerList();
}
}

View File

@ -0,0 +1,38 @@
package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
public class KitBodyBuilder extends Kit
{
public KitBodyBuilder(ArcadeManager manager)
{
super(manager, "Body Builder", KitAvailability.Gem, 2000,
new String[]
{
"Your health just keeps getting better!"
},
new Perk[]
{
new Perk("Body Builder", new String[]{"Your " + F.elem("Max Health") + " increases by " + F.skill("One Heart"), "when you are first to a Safe Pad.", "Maximum of 15 hearts."}){}
},
EntityType.SKELETON,
ItemStackFactory.Instance.CreateStack(373, 8229));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.COMPASS, (byte) 0, 1, F.item("Safe Pad Locator")));
}
}

View File

@ -0,0 +1,50 @@
package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.monstermaze.kits.perks.PerkJumpsDisplay;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class KitJumper extends Kit
{
public KitJumper(ArcadeManager manager)
{
super(manager, "Jumper", KitAvailability.Free,
new String[]
{
"You have springs attached to your feet!",
"Bouncy... bouncy... bouncy..."
},
new Perk[]
{
new Perk("Jumper", new String[]
{
C.cGray + "You can jump " + C.cYellow + "5 Times" + C.cGray + "."
})
{
},
new PerkJumpsDisplay()
},
EntityType.SKELETON,
new ItemStack(Material.FEATHER));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.COMPASS, (byte) 0, 1, F.item("Safe Pad Locator")));
player.getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.FEATHER, (byte)0, 5, C.cYellow + C.Bold + 5 + " Jumps Remaining"));
}
}

View File

@ -0,0 +1,54 @@
package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.achievement.Achievement;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.monstermaze.kits.perks.PerkRepulsor;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class KitRepulsor extends Kit
{
public KitRepulsor(ArcadeManager manager)
{
super(manager, "Repulsor", KitAvailability.Achievement, 0,
new String[]
{
"You love to watch monsters",
"fly away... Caw..."
},
new Perk[]
{
new PerkRepulsor()
},
EntityType.SKELETON,
new ItemStack(Material.COAL));
setAchievementRequirements(new Achievement[]
{
Achievement.MONSTER_MAZE_HARD_MODE,
Achievement.MONSTER_MAZE_NINJA,
Achievement.MONSTER_MAZE_PILOT,
Achievement.MONSTER_MAZE_SPEEDSTER,
Achievement.MONSTER_MAZE_SURVIVAL,
Achievement.MONSTER_MAZE_WINS
});
}
@Override
public void GiveItems(Player player)
{
player.getInventory().setItem(0, ItemStackFactory.Instance.CreateStack(Material.COAL, (byte) 0, 3, C.cYellow + C.Bold + "Right Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Repulse"));
player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.COMPASS, (byte) 0, 1, F.item("Safe Pad Locator")));
}
}

View File

@ -0,0 +1,61 @@
package nautilus.game.arcade.game.games.monstermaze.kits;
import mineplex.core.common.util.F;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.kit.KitAvailability;
import nautilus.game.arcade.kit.Perk;
import nautilus.game.arcade.kit.perks.PerkConstructor;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.inventory.ItemStack;
public class KitSlowball extends Kit
{
public KitSlowball(ArcadeManager manager)
{
super(manager, "Slowballer", KitAvailability.Gem, 4000,
new String[]
{
"Slow enemies so they can't get to",
"their Safe Pad in time!"
},
new Perk[]
{
new PerkConstructor("Slowballer", 2, 16, Material.SNOW_BALL, "Slowball", true)
},
EntityType.SKELETON,
new ItemStack(Material.SNOW_BALL));
}
@Override
public void GiveItems(Player player)
{
player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.COMPASS, (byte) 0, 1, F.item("Safe Pad Locator")));
}
@EventHandler
public void SnowballHit(CustomDamageEvent event)
{
if (event.GetProjectile() == null)
return;
if (!(event.GetProjectile() instanceof Snowball))
return;
event.GetProjectile().remove();
// event.GetDamageeEntity().playEffect(EntityEffect.HURT);
Manager.GetCondition().Factory().Slow("Snowball Slow", event.GetDamageeEntity(), (LivingEntity)event.GetProjectile().getShooter(), 2, 1, false, false, true, false);
}
}

View File

@ -0,0 +1,41 @@
package nautilus.game.arcade.game.games.monstermaze.kits.perks;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilTextBottom;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
public class PerkJumpsDisplay extends Perk
{
public PerkJumpsDisplay()
{
super("Display", new String[0], false);
}
@EventHandler
public void onShow(UpdateEvent event)
{
if (event.getType() != UpdateType.FAST)
return;
for (Player player : Manager.GetGame().GetPlayers(true))
{
if (!Kit.HasKit(player))
continue;
if (player.getInventory().getItem(8) == null || player.getInventory().getItem(8).getAmount() <= 0)
{
UtilTextBottom.display(C.cWhite + "No jumps left", player);
}
else
{
UtilTextBottom.display(F.elem(player.getInventory().getItem(8).getAmount() + "") + C.cWhite + " jumps left", player);
}
}
}
}

View File

@ -0,0 +1,128 @@
package nautilus.game.arcade.game.games.monstermaze.kits.perks;
import java.util.HashMap;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilFirework;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilTime;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.game.games.monstermaze.events.AbilityUseEvent;
import nautilus.game.arcade.game.games.monstermaze.events.EntityLaunchEvent;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.EntityEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.Material;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
public class PerkRepulsor extends Perk
{
private HashMap<Entity, Long> _launched = new HashMap<Entity, Long>();
public PerkRepulsor()
{
super("Repulsor", new String[]
{
F.elem("Click") + " with Coal to use " + F.skill("Repulse") + ".",
});
}
@EventHandler
public void onRepulse(PlayerInteractEvent event)
{
if (!Manager.GetGame().IsLive())
return;
if (!UtilEvent.isAction(event, ActionType.R))
return;
if (!UtilInv.IsItem(event.getItem(), Material.COAL, (byte) 0))
return;
Player player = event.getPlayer();
if (!Kit.HasKit(player))
return;
event.setCancelled(true);
UtilInv.remove(player, Material.COAL, (byte)0, 1);
UtilInv.Update(player);
UtilFirework.playFirework(player.getLocation(), Type.BALL_LARGE, Color.AQUA, false, false);
for (Entity ent : UtilEnt.getInRadius(player.getLocation(), 6).keySet())
{
if (ent instanceof Player || !(ent instanceof LivingEntity))
continue;
ent.playEffect(EntityEffect.HURT);
UtilAction.velocity(ent, UtilAlg.getTrajectory2d(player, ent), 1, true, 0, 0.8, 2, true);
_launched.put(ent, System.currentTimeMillis());
Bukkit.getPluginManager().callEvent(new EntityLaunchEvent(ent));
}
Bukkit.getPluginManager().callEvent(new AbilityUseEvent(player));
}
@EventHandler
public void onUpdate(UpdateEvent event)
{
if (!Manager.GetGame().IsLive())
return;
HashMap<Entity, Long> copy = new HashMap<Entity, Long>();
copy.putAll(_launched);
for (Entity en : copy.keySet())
{
if (en == null || !en.isValid())
{
remove(en);
continue;
}
if (en.isOnGround() && UtilTime.elapsed(copy.get(en), 500))
{
remove(en);
continue;
}
//If there are blocks surrounding the block it's on top of (if it's on the side of a block)
if (!UtilBlock.getInBoundingBox(en.getLocation().clone().add(1, -1, 1), en.getLocation().clone().subtract(1, 1, 1), true).isEmpty() && UtilTime.elapsed(copy.get(en), 500))
{
remove(en);
continue;
}
if (UtilTime.elapsed(copy.get(en), 1500))
{
remove(en);
continue;
}
}
}
private void remove(Entity en)
{
_launched.remove(en);
en.remove();
UtilFirework.playFirework(en.getLocation(), Type.BALL, Color.BLACK, false, false);
}
}

View File

@ -0,0 +1,112 @@
package nautilus.game.arcade.game.games.monstermaze.mazes;
/**
* Created by William (WilliamTiger).
* 21/10/15
*/
public class Maze1
{
public static final int[][] MAZE = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,2,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,2,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,1,0,0,1,0,1,0,1,0,1,0,0,1,1,1,1,1,0,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,1,1,0,1,0,0,1,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,0,0},
{0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,4,6,4,4,6,4,4,6,4,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0},
{0,0,2,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,1,0,0,0,4,5,3,3,5,3,3,5,4,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,2,0,0},
{0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,0,4,4,4,5,5,5,5,5,5,5,4,4,4,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,6,5,5,5,3,3,5,3,3,5,5,5,6,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,4,3,5,3,3,5,5,5,3,3,3,5,4,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,4,3,5,3,5,5,3,5,5,3,3,5,4,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0},
{2,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,6,5,5,5,5,3,3,3,5,5,5,5,6,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,2},
{0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,4,3,5,3,5,5,3,5,5,3,3,5,4,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,0,1,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,4,3,5,3,3,5,5,5,3,3,3,5,4,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,1,0,1,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,6,5,5,5,3,3,5,3,3,5,5,5,6,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,1,0,4,4,4,5,5,5,5,5,5,5,4,4,4,0,1,0,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,1,0,0,0,0,0,0,0},
{0,0,2,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,0,0,1,0,0,1,0,0,0,4,5,3,3,5,3,3,5,4,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,2,0,0},
{0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,4,6,4,4,6,4,4,6,4,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,0,0},
{0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,1,0,0,0,1,0,1,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,1,1,0,1,0,0,1,1,1,1,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,1,0,1,1,1,1,0,0,1,0,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,0,1,0,0,1,1,1,1,0,1,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,1,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,1,0,0,1,1,1,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,1,0,1,1,1,1,1,0,0,1,0,1,0,1,0,1,0,0,1,1,1,1,1,0,1,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,2,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,2,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
}

View File

@ -0,0 +1,112 @@
package nautilus.game.arcade.game.games.monstermaze.mazes;
/**
* Created by William (WilliamTiger).
* 21/10/15
*/
public class Maze2
{
public static final int[][] MAZE = {
{0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0},
{0,0,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,2,0,0,0},
{0,0,0,1,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,1,0,0,0},
{0,2,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,2,0},
{0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0},
{0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0},
{2,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,2},
{0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,1,0,0,0},
{0,0,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,2,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0},
{0,2,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,2,0},
{0,0,0,0,0,1,0,1,1,1,0,0,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0},
{0,0,0,0,0,1,0,1,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0},
{0,0,2,1,1,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,1,1,1,1,1,2,0,0},
{0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,2,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,1,1,1,2,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,1,0,0,4,6,6,6,4,4,6,4,4,6,6,6,4,0,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,6,3,5,3,3,3,5,3,3,3,5,3,6,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,6,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,6,3,5,3,3,3,5,3,3,3,5,3,6,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,1,1,1,0,0,1,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,4,3,5,3,5,5,5,5,5,3,5,3,4,0,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,1,0,0,1,1,1,2,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,4,3,5,3,5,3,3,3,5,3,5,3,4,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,1,1,1,1,6,5,5,5,5,3,3,3,5,5,5,5,6,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,0,1,0,0,1,0,4,3,5,3,5,3,3,3,5,3,5,3,4,0,1,0,0,1,0,0,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,1,1,1,0,0,1,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,1,0,4,3,5,3,5,5,5,5,5,3,5,3,4,0,1,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,1,0,0,1,1,1,2,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,6,3,5,3,3,3,5,3,3,3,5,3,6,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,6,5,5,5,5,5,5,5,5,5,5,5,6,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,6,3,5,3,3,3,5,3,3,3,5,3,6,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,1,0,0,4,6,6,6,4,4,6,4,4,6,6,6,4,0,0,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,1,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,2,1,1,1,0,1,1,1,1,1,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,1,1,1,2,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,1,1,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,0,1,1,1,1,1,1,0,0,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,0,1,1,1,1,1,1,0,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,1,0,1,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,1,0,1,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,1,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,1,0,1,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,2,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,0,1,0,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,1,0,1,0,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1,0,1,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,1,0,1,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0,1,0,0,1,0,1,1,1,1,1,0,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,0,2,1,1,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,0,0,1,0,1,1,1,1,1,2,0,0},
{0,0,0,0,0,1,0,1,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,1,1,0,0,0,1,0,1,0,1,0,0,0,0,0},
{0,0,0,0,0,1,0,1,1,1,0,0,0,1,0,0,1,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0},
{0,2,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,2,0,0,0,0,1,0,0,0,0,2,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,1,1,1,1,2,0},
{0,0,0,1,0,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,2,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,2,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,0,1,0,0,0},
{0,0,0,1,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,1,0,0,0},
{2,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,2,0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,2},
{0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,0},
{0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0},
{0,2,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,1,2,0},
{0,0,0,1,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,1,0,0,0},
{0,0,0,2,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,2,0,0,0},
{0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0},
};
}

View File

@ -0,0 +1,112 @@
package nautilus.game.arcade.game.games.monstermaze.mazes;
/**
* Created by William (WilliamTiger).
* 21/10/15
*/
public class Maze3
{
public static final int[][] MAZE = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,1,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,0,1,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0},
{0,0,0,2,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,2,0,0,0},
{0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,1,1,1,1,2,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,4,4,4,6,4,4,6,4,4,6,4,4,4,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0},
{2,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,6,5,5,5,5,3,5,3,5,5,5,5,6,1,1,1,1,1,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,2},
{0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,1,0,0,4,5,3,3,5,5,5,5,5,3,3,5,4,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0},
{0,0,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,6,5,5,5,5,3,5,3,5,5,5,5,6,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,6,3,3,5,3,3,5,3,3,5,3,3,6,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,0,0,0,0,0},
{0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,6,5,5,5,3,5,5,5,3,5,5,5,6,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0},
{0,2,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,6,3,3,5,5,5,3,5,5,5,3,3,6,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,2,0},
{0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,6,5,5,5,3,5,5,5,3,5,5,5,6,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0},
{0,0,0,0,0,1,1,0,0,1,1,1,1,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,6,3,3,5,3,3,5,3,3,5,3,3,6,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,1,1,1,1,0,0,1,1,0,0,0,0,0},
{0,0,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,6,5,5,5,5,3,5,3,5,5,5,5,6,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,1,0,0,4,5,3,3,5,5,5,5,5,3,3,5,4,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0},
{2,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,1,1,6,5,5,5,5,3,5,3,5,5,5,5,6,1,1,1,1,1,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,1,1,1,1,1,1,1,2},
{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,4,4,4,6,4,4,6,4,4,6,4,4,4,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,0,1,1,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,2,1,1,1,1,1,1,1,0,1,1,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,0,1,1,1,1,1,1,1,2,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0},
{0,0,0,2,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,1,0,0,0,1,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,2,0,0,0},
{0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,0,1,0,0,1,0,0,1,1,1,0,1,1,1,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,0,0,1,0,1,0,0,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,0,0,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,0,1,0,0,1,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,1,0,0,1,0,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,2,1,1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,2,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,1,1,1,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,1,1,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,1,1,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,2,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,1,0,0,0,1,1,0,1,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,0,0,1,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,1,1,1,2,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,1,1,0,0,1,0,0,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,1,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,0,0,1,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,1,1,1,1,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,1,0,0,0,0,2,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,1,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,1,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
}

View File

@ -0,0 +1,85 @@
package nautilus.game.arcade.game.games.monstermaze.trackers;
import java.util.ArrayList;
import java.util.List;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
import nautilus.game.arcade.game.games.monstermaze.events.AbilityUseEvent;
import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
public class AbilityUseTracker extends StatTracker<MonsterMaze>
{
/**
* @author Mysticate
*/
private List<String> _out = new ArrayList<String>();
public AbilityUseTracker(MonsterMaze game)
{
super(game);
}
@EventHandler
public void onAbilityUse(AbilityUseEvent event)
{
if (!getGame().IsLive())
return;
if (isOut(event.getPlayer()))
return;
setOut(event.getPlayer());
}
@EventHandler(priority = EventPriority.MONITOR)
public void onGameEnd(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
if (getGame().getWinners() == null)
return;
for (Player player : getGame().getWinners())
{
if (isOut(player))
continue;
addStat(player);
}
_out.clear();
}
private boolean isOut(Player player)
{
for (String out : _out)
{
if (out.equalsIgnoreCase(player.getName()))
{
return true;
}
}
return false;
}
private void setOut(Player player)
{
if (isOut(player))
return;
_out.add(player.getName());
}
private void addStat(Player player)
{
addStat(player, "Hard Mode", 1, true, false);
}
}

View File

@ -0,0 +1,34 @@
package nautilus.game.arcade.game.games.monstermaze.trackers;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
import nautilus.game.arcade.game.games.monstermaze.events.FirstToSafepadEvent;
import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
public class FirstToSafepadTracker extends StatTracker<MonsterMaze>
{
/**
* @author Mysticate
*/
public FirstToSafepadTracker(MonsterMaze game)
{
super(game);
}
@EventHandler
public void onSafepadFirst(FirstToSafepadEvent event)
{
if (!getGame().IsLive())
return;
addStat(event.getPlayer());
}
private void addStat(Player player)
{
addStat(player, "Speed", 1, false, false);
}
}

View File

@ -0,0 +1,113 @@
package nautilus.game.arcade.game.games.monstermaze.trackers;
import java.util.HashMap;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilTime;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent;
import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
public class PilotTracker extends StatTracker<MonsterMaze>
{
/**
* @author Mysticate
*/
private HashMap<Player, Long> _launched = new HashMap<Player, Long>();
public PilotTracker(MonsterMaze game)
{
super(game);
}
@EventHandler
public void onSnowmanHit(MonsterBumpPlayerEvent event)
{
if (!getGame().IsLive())
return;
if (isLaunched(event.getPlayer()))
return;
setLaunched(event.getPlayer());
}
@EventHandler
public void onUpdate(UpdateEvent event)
{
if (event.getType() != UpdateType.TICK)
return;
if (!getGame().IsLive())
return;
HashMap<Player, Long> copy = new HashMap<Player, Long>();
copy.putAll(_launched);
for (Player player : copy.keySet())
{
if (!isLaunched(player))
continue;
//Make sure the player isn't still on the ground after getting hit.
if (!UtilTime.elapsed(_launched.get(player), 250))
continue;
if (player == null || !player.isOnline() || !getGame().IsAlive(player))
{
_launched.remove(player);
continue;
}
if (UtilEnt.isGrounded(player))
{
_launched.remove(player);
if (getGame().getMaze().isOnPad(player, false))
{
addStat(player);
}
continue;
}
if (UtilTime.elapsed(_launched.get(player), 2000))
{
_launched.remove(player);
continue;
}
}
}
@EventHandler
public void clearLaunched(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
_launched.clear();
}
private boolean isLaunched(Player player)
{
return _launched.containsKey(player);
}
private void setLaunched(Player player)
{
_launched.put(player, System.currentTimeMillis());
}
private void addStat(Player player)
{
addStat(player, "Pilot", 1, true, false);
}
}

View File

@ -0,0 +1,85 @@
package nautilus.game.arcade.game.games.monstermaze.trackers;
import java.util.ArrayList;
import java.util.List;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
import nautilus.game.arcade.game.games.monstermaze.events.MonsterBumpPlayerEvent;
import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
public class SnowmanHitTracker extends StatTracker<MonsterMaze>
{
/**
* @author Mysticate
*/
private List<String> _out = new ArrayList<String>();
public SnowmanHitTracker(MonsterMaze game)
{
super(game);
}
@EventHandler
public void onSnowmanHit(MonsterBumpPlayerEvent event)
{
if (!getGame().IsLive())
return;
if (isOut(event.getPlayer()))
return;
setOut(event.getPlayer());
}
@EventHandler(priority = EventPriority.MONITOR)
public void onGameEnd(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
return;
if (getGame().getWinners() == null)
return;
for (Player player : getGame().getWinners())
{
if (isOut(player))
continue;
addStat(player);
}
_out.clear();
}
private boolean isOut(Player player)
{
for (String out : _out)
{
if (out.equalsIgnoreCase(player.getName()))
{
return true;
}
}
return false;
}
private void setOut(Player player)
{
if (isOut(player))
return;
_out.add(player.getName());
}
private void addStat(Player player)
{
addStat(player, "Ninja", 1, true, false);
}
}

View File

@ -0,0 +1,40 @@
package nautilus.game.arcade.game.games.monstermaze.trackers;
import nautilus.game.arcade.game.games.monstermaze.MonsterMaze;
import nautilus.game.arcade.game.games.monstermaze.events.SafepadBuildEvent;
import nautilus.game.arcade.stats.StatTracker;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
public class SurvivePast10thSafepadTracker extends StatTracker<MonsterMaze>
{
/**
* @author Mysticate
*/
public SurvivePast10thSafepadTracker(MonsterMaze game)
{
super(game);
}
@EventHandler
public void onSafepadBuild(SafepadBuildEvent event)
{
if (!getGame().IsLive())
return;
if (getGame().getMaze().getCurrentSafePadCount() > 10)
{
for (Player player : getGame().GetPlayers(true))
{
addStat(player);
}
}
}
private void addStat(Player player)
{
addStat(player, "ToughCompetition", 1, true, false);
}
}

View File

@ -58,7 +58,7 @@ public class KitZombie extends SmashKit
UtilInv.Clear(player);
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.IRON_AXE, (byte)0, 1,
C.cYellow + C.Bold + "Left-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Bile Blaster",
C.cYellow + C.Bold + "Right-Click" + C.cWhite + C.Bold + " - " + C.cGreen + C.Bold + "Bile Blaster",
new String[]
{
ChatColor.RESET + "Spew up your dinner from last night.",

View File

@ -287,10 +287,20 @@ public class TurfForts extends TeamGame
{
if (event.isCancelled()) // this statement might save just a small amount of time
return;
if(getArcadeManager().isSpectator(event.getPlayer())) event.setCancelled(true);
if (!IsAlive(event.getPlayer()))
{
event.setCancelled(true);
return;
}
if (UtilPlayer.isSpectator(event.getPlayer()))
{
event.setCancelled(true);
return;
}
}
@EventHandler
public void BlockPlace(BlockPlaceEvent event)
{
@ -304,7 +314,18 @@ public class TurfForts extends TeamGame
return;
}
if (!IsAlive(event.getPlayer()))
{
event.setCancelled(true);
return;
}
if (UtilPlayer.isSpectator(event.getPlayer()))
{
event.setCancelled(true);
return;
}
//On Own
Block block = event.getBlock().getRelative(BlockFace.DOWN);
while (block.getTypeId() == 0)

View File

@ -4,6 +4,37 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilWorld;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.packethandler.PacketPlayOutWorldBorder;
import mineplex.core.recharge.Recharge;
import mineplex.core.timing.TimingManager;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.combat.CombatLog;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.serverdata.Utility;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.kit.Kit;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
@ -26,12 +57,12 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityRegainHealthEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
@ -55,37 +86,6 @@ import org.bukkit.potion.PotionEffectType;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilWorld;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.packethandler.PacketPlayOutWorldBorder;
import mineplex.core.recharge.Recharge;
import mineplex.core.timing.TimingManager;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.combat.CombatLog;
import mineplex.minecraft.game.core.combat.event.CombatDeathEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import mineplex.serverdata.Utility;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.kit.Kit;
public class UHC extends TeamGame
{
private NautHashMap<Player, Player> _teamReqs = new NautHashMap<Player, Player>();
@ -344,6 +344,10 @@ public class UHC extends TeamGame
player.getWorld().playSound(loc, Sound.NOTE_BASS, 2f, 1f);
player.getWorld().playSound(loc, Sound.NOTE_BASS, 2f, 1f);
}
else
{
player.teleport(GetSpectatorLocation());
}
}
}
}

View File

@ -143,6 +143,9 @@ public class WitherGame extends TeamGame implements IBlockRestorer
this.TeamArmor = true;
this.TeamArmorHotbar = false;
this.InventoryClick = false;
this.InventoryOpenBlock = false;
_help = new String[]
{

View File

@ -1,13 +1,10 @@
package nautilus.game.arcade.kit.perks;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import mineplex.core.common.util.C;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.entity.Player;
public class PerkDigger extends Perk
{
public PerkDigger()
@ -18,21 +15,14 @@ public class PerkDigger extends Perk
});
}
@EventHandler
public void DigSpeed(UpdateEvent event)
@Override
public void Apply(Player player)
{
addEffects(player);
}
private void addEffects(Player player)
{
if (event.getType() != UpdateType.FAST)
return;
if (Manager.GetGame() == null)
return;
for (Player player : Manager.GetGame().GetPlayers(true))
{
if (!Kit.HasKit(player))
continue;
Manager.GetCondition().Factory().DigFast(GetName(), player, player, 2.9, 1, false, false, true);
}
Manager.GetCondition().Factory().DigFast(GetName(), player, null, Integer.MAX_VALUE, 1, false, false, true);
}
}

View File

@ -96,6 +96,12 @@ public class PerkFlameSlam extends Perk
for (Player player : copy.keySet())
{
if (!Manager.IsAlive(player) || UtilPlayer.isSpectator(player))
{
_live.remove(player);
continue;
}
Vector vel = player.getLocation().getDirection();
vel.setY(0);
UtilAlg.Normalize(vel);

View File

@ -3,7 +3,18 @@ package nautilus.game.arcade.kit.perks;
import java.util.HashSet;
import java.util.Iterator;
import org.bukkit.GameMode;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.craftbukkit.v1_7_R4.entity.CraftArrow;
@ -18,18 +29,6 @@ import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.updater.UpdateType;
import nautilus.game.arcade.kit.Perk;
public class PerkFletcher extends Perk
{
private HashSet<Entity> _fletchArrows = new HashSet<Entity>();
@ -37,8 +36,14 @@ public class PerkFletcher extends Perk
private int _max = 0;
private int _time = 0;
private boolean _remove;
private int _slot;
public PerkFletcher(int time, int max, boolean remove)
{
this(time, max, remove, -1);
}
public PerkFletcher(int time, int max, boolean remove, int slot)
{
super("Fletcher", new String[]
{
@ -48,6 +53,7 @@ public class PerkFletcher extends Perk
_time = time;
_max = max;
_remove = remove;
_slot = slot;
}
public boolean isFletchedArrow(ItemStack stack)
@ -126,7 +132,14 @@ public class PerkFletcher extends Perk
continue;
//Add
cur.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)0, 1, F.item("Fletched Arrow")));
if (_slot == -1)
{
cur.getInventory().addItem(ItemStackFactory.Instance.CreateStack(262, (byte)0, 1, F.item("Fletched Arrow")));
}
else
{
cur.getInventory().setItem(_slot, ItemStackFactory.Instance.CreateStack(262, (byte)0, 1, F.item("Fletched Arrow")));
}
cur.playSound(cur.getLocation(), Sound.ITEM_PICKUP, 2f, 1f);
}

View File

@ -3,6 +3,24 @@ package nautilus.game.arcade.kit.perks;
import java.util.HashMap;
import java.util.Iterator;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.projectile.IThrown;
import mineplex.core.projectile.ProjectileUser;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.kit.Perk;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
@ -12,28 +30,12 @@ import org.bukkit.entity.Item;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.projectile.IThrown;
import mineplex.core.projectile.ProjectileUser;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.kit.Perk;
public class PerkHammerThrow extends Perk implements IThrown
{
private HashMap<Item, Player> _thrown = new HashMap<Item, Player>();
@ -51,19 +53,16 @@ public class PerkHammerThrow extends Perk implements IThrown
{
if (event.isCancelled())
return;
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK)
if (!UtilEvent.isAction(event, ActionType.R))
return;
if (UtilBlock.usable(event.getClickedBlock()))
return;
if (event.getPlayer().getItemInHand() == null)
if (!UtilInv.IsItem(event.getItem(), Material.DIAMOND_AXE, (byte) -1))
return;
if (!event.getPlayer().getItemInHand().getType().toString().contains("DIAMOND_AXE"))
return;
Player player = event.getPlayer();
if (!Kit.HasKit(player))
@ -96,7 +95,7 @@ public class PerkHammerThrow extends Perk implements IThrown
Player player = _thrown.remove(event.getItem());
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, "Thor Hammer"));
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, F.item("Thor Hammer")));
}
@EventHandler
@ -111,11 +110,19 @@ public class PerkHammerThrow extends Perk implements IThrown
{
Item item = itemIterator.next();
if (item.getTicksLived() > 200)
if (item == null || item.getTicksLived() > 200 || !item.isValid() || item.isDead())
{
_thrown.get(item).getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, "Thor Hammer"));
item.remove();
if (item != null)
item.remove();
Player player = _thrown.get(item);
itemIterator.remove();
if (!Manager.IsAlive(player))
continue;
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, F.item("Thor Hammer")));
}
}
}

View File

@ -3,6 +3,7 @@ package nautilus.game.arcade.kit.perks;
import java.util.HashMap;
import java.util.Iterator;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Entity;
@ -39,6 +40,8 @@ public class PerkHorsePet extends Perk
{
C.cGray + "You have a loyal horse companion.",
});
//Bukkit.getPluginManager().registerEvents(this, Manager.getPlugin());
}
@Override
@ -81,6 +84,9 @@ public class PerkHorsePet extends Perk
if (event.getType() != UpdateType.SEC)
return;
if (!Manager.GetGame().IsLive())
return;
//Respawn
Iterator<Player> respawnIterator = _deathTime.keySet().iterator();
while (respawnIterator.hasNext())
@ -142,6 +148,9 @@ public class PerkHorsePet extends Perk
@EventHandler
public void heal(UpdateEvent event)
{
if (!Manager.GetGame().IsLive())
return;
if (event.getType() != UpdateType.SLOW)
return;
@ -155,6 +164,9 @@ public class PerkHorsePet extends Perk
@EventHandler
public void death(PlayerDeathEvent event)
{
if (!Manager.GetGame().IsLive())
return;
Horse horse = _horseMap.remove(event.getEntity());
if (horse == null)
@ -166,6 +178,9 @@ public class PerkHorsePet extends Perk
@EventHandler
public void damageRider(CustomDamageEvent event)
{
if (!Manager.GetGame().IsLive())
return;
if (!(event.GetDamageeEntity() instanceof Horse))
return;
@ -196,6 +211,12 @@ public class PerkHorsePet extends Perk
if (!_horseMap.containsValue(event.getRightClicked()))
return;
if (!Manager.GetGame().IsLive())
{
event.setCancelled(true);
return;
}
Player player = event.getPlayer();
Horse horse = (Horse)event.getRightClicked();
@ -206,11 +227,5 @@ public class PerkHorsePet extends Perk
event.setCancelled(true);
return;
}
if (!Manager.GetGame().IsLive())
{
event.setCancelled(true);
return;
}
}
}

View File

@ -0,0 +1,53 @@
package nautilus.game.arcade.kit.perks;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerInteractEvent;
import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEvent;
import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.recharge.Recharge;
import mineplex.core.common.util.UtilInv;
import nautilus.game.arcade.kit.Perk;
public class PerkHyper extends Perk
{
public PerkHyper()
{
super("Hyper", new String[]
{
C.cYellow + "Right-click" + C.cGray + " with Sugar to " + C.cGreen + "GO HYPER"
});
}
@EventHandler
public void Interact(PlayerInteractEvent event)
{
if(!UtilEvent.isAction(event, ActionType.R)) return;
if (event.getPlayer().getItemInHand() == null)
return;
if (event.getPlayer().getItemInHand().getType() != Material.SUGAR)
return;
Player player = event.getPlayer();
if (!Kit.HasKit(player))
return;
if (!Recharge.Instance.usable(player, "Hyper"))
return;
Recharge.Instance.useForce(player, "Hyper", 3000);
event.setCancelled(true);
UtilInv.remove(player, Material.SUGAR, (byte)0, 1);
UtilInv.Update(player);
Manager.GetCondition().Factory().Speed(GetName(), player, player, 4, 0, false, false, true);
}
}

View File

@ -1,5 +1,7 @@
package nautilus.game.arcade.managers;
import java.util.HashMap;
import mineplex.core.antihack.AntiHack;
import mineplex.core.common.Rank;
import mineplex.core.common.util.C;
@ -12,6 +14,7 @@ import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
import mineplex.core.common.util.UtilTime;
import mineplex.core.itemstack.ItemStackFactory;
import mineplex.core.recharge.Recharge;
import mineplex.core.teleport.event.MineplexTeleportEvent;
@ -732,6 +735,7 @@ public class GameFlagManager implements Listener
player.setAllowFlight(true);
player.setFlying(true);
((CraftPlayer)player).getHandle().spectating = true;
((CraftPlayer) player).getHandle().ghost = true;
((CraftPlayer)player).getHandle().k = false;
for (int i=0 ; i<9 ; i++)
@ -1193,6 +1197,8 @@ public class GameFlagManager implements Listener
}
}
private HashMap<Player, Long> _versionKickCleanup = new HashMap<Player, Long>();
@EventHandler
public void versionJoinCheck(PlayerJoinEvent event)
{
@ -1220,6 +1226,51 @@ public class GameFlagManager implements Listener
player.playSound(player.getLocation(), Sound.ENDERDRAGON_GROWL, 10f, 1f);
Manager.GetPortal().sendPlayerToServer(player, "Lobby");
if (!_versionKickCleanup.containsKey(player))
_versionKickCleanup.put(player, System.currentTimeMillis());
}
@EventHandler
public void onVersionCleanup(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
if (Manager.GetGame() == null || !Manager.GetGame().VersionRequire1_8)
{
if (!_versionKickCleanup.isEmpty())
_versionKickCleanup.clear();
return;
}
HashMap<Player, Long> copy = new HashMap<Player, Long>();
copy.putAll(_versionKickCleanup);
for (Player player : copy.keySet())
{
if (UtilPlayer.is1_8(player))
{
_versionKickCleanup.remove(player);
continue;
}
if (!player.isOnline())
{
_versionKickCleanup.remove(player);
continue;
}
//Force kick the player after 10 seconds of not being sent to lobby.
if (UtilTime.elapsed(copy.get(player), 10000))
{
_versionKickCleanup.remove(player);
player.kickPlayer(C.cGold + C.Bold + Manager.GetGame().GetType().GetName() + " requires you to be using Minecraft 1.8!");
continue;
}
}
}
@EventHandler

View File

@ -94,6 +94,8 @@ public class GameHostManager implements Listener
ultraGames.add(GameType.TurfWars);
ultraGames.add(GameType.Spleef);
ultraGames.add(GameType.Lobbers);
ultraGames.add(GameType.Evolution);
ultraGames.add(GameType.MonsterMaze);
//Hero Games
heroGames.add(GameType.ChampionsDominate);
@ -121,7 +123,6 @@ public class GameHostManager implements Listener
legendGames.add(GameType.SurvivalGamesTeams);
*/
//Rejected / Other
legendGames.add(GameType.Evolution);
legendGames.add(GameType.MilkCow);
legendGames.add(GameType.SearchAndDestroy);
legendGames.add(GameType.ZombieSurvival);

View File

@ -15,9 +15,12 @@ import mineplex.core.common.util.MapUtil;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilBlockText;
import mineplex.core.common.util.UtilBlockText.TextAlign;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilFirework;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime;
@ -1290,6 +1293,18 @@ public class GameLobbyManager implements Listener, IPacketHandler
Manager.GetGame().AddGemBooster(event.getPlayer());
}
@EventHandler(priority = EventPriority.LOWEST)
public void explodeBlockBreakFix(EntityExplodeEvent event)
{
if (Manager.GetGame() == null)
return;
if (Manager.GetGame().GetState() == GameState.Live)
return;
event.blockList().clear();
}
@EventHandler(priority = EventPriority.LOWEST)
public void velocityEventCancel(PlayerVelocityEvent event)
{

View File

@ -27,6 +27,9 @@ public class WinStatTracker extends StatTracker<Game>
{
for (Player winner : winners)
{
if (!winner.isOnline())
continue;
addStat(winner, "Wins", 1, false, false);
// if (getGame().GetKit(winner) != null)