Esempio n. 1
0
 private static void stopAllOtherMiners(Player player, Rock rock)
 {
     foreach (Player p in Server.getPlayerList())
     {
         if (p != null && player.getLocation().withinDistance(p.getLocation(), 5) && !p.Equals(player))
         {
             if (p.getTemporaryAttribute("miningRock") != null)
             {
                 Rock otherPlayerRock = (Rock)p.getTemporaryAttribute("miningRock");
                 if (otherPlayerRock.getRockLocation().Equals(rock.getRockLocation()))
                 {
                     p.setLastAnimation(new Animation(65535));
                 }
             }
         }
     }
 }
Esempio n. 2
0
 public static void mineRock(Player p, ushort rockId, Location rockLocation, int i, bool newMine)
 {
     if (!newMine && p.getTemporaryAttribute("miningRock") == null)
     {
         return;
     }
     if (newMine)
     {
         if (!Server.getGlobalObjects().objectExists(rockId, rockLocation))
         {
             //misc.WriteError(p.getUsername() + " tried to mine a non existing rock!");
             //return;
         }
         Rock newRock = new Rock(i, rockId, rockLocation, ORES[i], ROCK_LEVEL[i], NAME[i], ROCK_XP[i]);
         p.setTemporaryAttribute("miningRock", newRock);
     }
     Rock rockToMine = (Rock)p.getTemporaryAttribute("miningRock");
     bool essRock = rockToMine.getRockIndex() == 0;
     if (!canMine(p, rockToMine, null))
     {
         resetMining(p);
         return;
     }
     if (newMine)
     {
         string s = essRock ? "You begin to mine Essence.." : "You swing your pick at the rock..";
         p.getPackets().sendMessage(s);
     }
     p.getPackets().closeInterfaces();
     p.setLastAnimation(new Animation(getPickaxeAnimation(p)));
     p.setFaceLocation(rockLocation);
     int delay = getMineTime(p, rockToMine.getRockIndex());
     Event mineRockEvent = new Event(delay);
     mineRockEvent.setAction(() =>
     {
         mineRockEvent.stop(); // Stop the event no matter what
         if (p.getTemporaryAttribute("miningRock") == null)
         {
             return;
         }
         Rock rock = (Rock)p.getTemporaryAttribute("miningRock");
         if (!canMine(p, rockToMine, rock))
         {
             return;
         }
         if (!essRock)
         {
             Server.getGlobalObjects().lowerHealth(rock.getRockId(), rock.getRockLocation());
             if (!Server.getGlobalObjects().originalObjectExists(rock.getRockId(), rock.getRockLocation()))
             {
                 resetMining(p);
                 stopAllOtherMiners(p, rock);
                 p.setLastAnimation(new Animation(65535));
                 mineRockEvent.stop();
             }
         }
         bool addGem = (!essRock && Misc.random(getGemChance(p)) == 0) ? true : false;
         if (p.getInventory().addItem(addGem ? randomGem() : rock.getOre()))
         {
             p.getSkills().addXp(Skills.SKILL.MINING, rock.getXp());
             if (addGem)
             {
                 p.getPackets().sendMessage("You manage to mine a sparkling gem!");
             }
             else
             {
                 if (!essRock)
                 {
                     p.getPackets().sendMessage("You manage to mine some " + rock.getName() + ".");
                 }
             }
         }
         if (rock.isContinueMine())
         {
             mineRock(p, rock.getRockId(), rock.getRockLocation(), rock.getRockIndex(), false);
         }
     });
     Server.registerEvent(mineRockEvent);
     if (delay >= 9000 && !rockToMine.isContinueMine())
     {
         Event mineMoreRockEvent = new Event(9000);
         mineMoreRockEvent.setAction(() =>
         {
             mineMoreRockEvent.stop();
             Rock rock = (Rock)p.getTemporaryAttribute("miningRock");
             if (!canMine(p, rockToMine, rock))
             {
                 return;
             }
             p.setFaceLocation(rock.getRockLocation());
             p.setLastAnimation(new Animation(getPickaxeAnimation(p)));
         });
         Server.registerEvent(mineMoreRockEvent);
     }
 }
Esempio n. 3
0
 private static bool canMine(Player p, Rock rock, Rock rock2)
 {
     if (rock == null || p == null || !Server.getGlobalObjects().originalObjectExists(rock.getRockId(), rock.getRockLocation()))
     {
         return false;
     }
     if (rock.getRockIndex() != 0)
     {
         if (!p.getLocation().withinDistance(rock.getRockLocation(), 2))
         {
             return false;
         }
     }
     else
     {
         // is rune ess rock
         if (!p.getLocation().inArea(rock.getRockLocation().getX() - 1, rock.getRockLocation().getY() - 1, rock.getRockLocation().getX() + 5, rock.getRockLocation().getY() + 5))
         {
             return false;
         }
     }
     if (rock2 != null)
     {
         if (!rock.Equals(rock2))
         {
             return false;
         }
     }
     if (p.getSkills().getGreaterLevel(Skills.SKILL.MINING) < rock.getLevel())
     {
         p.getPackets().sendMessage("You need a Mining level of " + rock.getLevel() + " to mine that rock.");
         return false;
     }
     if (!hasPickaxe(p))
     {
         p.getPackets().sendMessage("You need a pickaxe to mine a rock!");
         return false;
     }
     if (p.getInventory().findFreeSlot() == -1)
     {
         p.getPackets().sendChatboxInterface(210);
         p.getPackets().modifyText("Your inventory is too full to carry any ore.", 210, 1);
         return false;
     }
     return true;
 }