Merge branch 'master' of ssh://184.154.0.242:7999/min/mineplex into MC_1.8
Conflicts: Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/minestrike/MineStrike.java
This commit is contained in:
commit
f71cb80bd0
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -518,6 +518,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>();
|
||||
|
||||
@ -527,10 +532,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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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),
|
||||
|
||||
;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -77,7 +77,7 @@ public class VoteButton implements GuiItem, Listener {
|
||||
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(), C.cGold + C.Bold + C.Strike + "=============================================");
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
@ -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),
|
||||
|
||||
|
@ -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"),
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -358,7 +358,7 @@ public class Draw extends SoloGame
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (_drawers.HasPlayer(event.getPlayer()))
|
||||
else
|
||||
{
|
||||
if (event.getMessage().toLowerCase().contains(_round.Word.toLowerCase()))
|
||||
{
|
||||
|
@ -10,7 +10,6 @@ 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;
|
||||
@ -277,7 +276,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 +715,7 @@ public class MineStrike extends TeamGame
|
||||
return;
|
||||
|
||||
Grenade grenade = getGrenadeInHand(event.getPlayer(), null);
|
||||
|
||||
if (grenade == null)
|
||||
return;
|
||||
|
||||
@ -1519,9 +1519,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 +1545,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 +1564,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 +1572,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 +1584,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 +1957,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 +2859,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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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)));
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ public abstract class Grenade extends StrikeItem
|
||||
}
|
||||
|
||||
public void throwGrenade(Player player, boolean wasLeftClick, MineStrike game)
|
||||
{
|
||||
{
|
||||
player.setItemInHand(null);
|
||||
|
||||
_thrower = player;
|
||||
|
@ -0,0 +1,603 @@
|
||||
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 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(M1, M2, M3);
|
||||
|
||||
//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
|
||||
|
||||
private static final int[][] M1 = {
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
|
||||
};
|
||||
|
||||
private static final int[][] M2 = {
|
||||
{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},
|
||||
};
|
||||
|
||||
private static final int[][] M3 = {
|
||||
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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},
|
||||
};
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -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;
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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")));
|
||||
}
|
||||
}
|
@ -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"));
|
||||
}
|
||||
}
|
@ -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")));
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -110,20 +110,19 @@ public class PerkHammerThrow extends Perk implements IThrown
|
||||
{
|
||||
Item item = itemIterator.next();
|
||||
|
||||
if (item.getTicksLived() > 200 || !item.isValid())
|
||||
if (item == null || item.getTicksLived() > 200 || !item.isValid() || item.isDead())
|
||||
{
|
||||
item.remove();
|
||||
itemIterator.remove();
|
||||
if (item != null)
|
||||
item.remove();
|
||||
|
||||
Player player = _thrown.get(item);
|
||||
|
||||
|
||||
itemIterator.remove();
|
||||
|
||||
if (!Manager.IsAlive(player))
|
||||
continue;
|
||||
|
||||
if (UtilPlayer.isSpectator(player))
|
||||
continue;
|
||||
|
||||
_thrown.get(item).getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, F.item("Thor Hammer")));
|
||||
player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_AXE, (byte)0, 1, F.item("Thor Hammer")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
@ -200,7 +215,6 @@ public class PerkHorsePet extends Perk
|
||||
if (!Manager.GetGame().IsLive())
|
||||
{
|
||||
event.setCancelled(true);
|
||||
event.getPlayer().teleport(event.getPlayer().getLocation());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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;
|
||||
@ -1194,6 +1197,8 @@ public class GameFlagManager implements Listener
|
||||
}
|
||||
}
|
||||
|
||||
private HashMap<Player, Long> _versionKickCleanup = new HashMap<Player, Long>();
|
||||
|
||||
@EventHandler
|
||||
public void versionJoinCheck(PlayerJoinEvent event)
|
||||
{
|
||||
@ -1221,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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
@ -1298,7 +1301,7 @@ public class GameLobbyManager implements Listener, IPacketHandler
|
||||
|
||||
if (Manager.GetGame().GetState() == GameState.Live)
|
||||
return;
|
||||
|
||||
|
||||
event.blockList().clear();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user