Exemplo n.º 1
0
 private static bool canCut(Player p, Tree tree, Tree tree2)
 {
     if (tree == null || p == null || !Server.getGlobalObjects().originalObjectExists(tree.getTreeId(), tree.getTreeLocation()))
     {
         return(false);
     }
     if (!p.getLocation().withinDistance(tree.getTreeLocation(), tree.getDistance()))
     {
         return(false);
     }
     if (tree2 != null)
     {
         if (!tree.Equals(tree2))
         {
             return(false);
         }
     }
     if (p.getSkills().getGreaterLevel(Skills.SKILL.WOODCUTTING) < tree.getLevel())
     {
         p.getPackets().sendMessage("You need a Woodcutting level of " + tree.getLevel() + " to cut that tree.");
         return(false);
     }
     if (!hasAxe(p))
     {
         p.getPackets().sendMessage("You need an axe to cut down a tree!");
         return(false);
     }
     if (p.getInventory().findFreeSlot() == -1)
     {
         p.getPackets().sendChatboxInterface(210);
         p.getPackets().modifyText("Your inventory is too full to carry any logs.", 210, 1);
         return(false);
     }
     return(true);
 }
 private static bool canCut(Player p, Tree tree, Tree tree2)
 {
     if (tree == null || p == null || !Server.getGlobalObjects().originalObjectExists(tree.getTreeId(), tree.getTreeLocation())) {
         return false;
     }
     if (!p.getLocation().withinDistance(tree.getTreeLocation(), tree.getDistance())) {
         return false;
     }
     if (tree2 != null) {
         if (!tree.Equals(tree2)) {
             return false;
         }
     }
     if (p.getSkills().getGreaterLevel(Skills.SKILL.WOODCUTTING) < tree.getLevel())
     {
         p.getPackets().sendMessage("You need a Woodcutting level of " + tree.getLevel() + " to cut that tree.");
         return false;
     }
     if (!hasAxe(p)) {
         p.getPackets().sendMessage("You need an axe to cut down a tree!");
         return false;
     }
     if (p.getInventory().findFreeSlot() == -1) {
         p.getPackets().sendChatboxInterface(210);
         p.getPackets().modifyText("Your inventory is too full to carry any logs.", 210, 1);
         return false;
     }
     return true;
 }
Exemplo n.º 3
0
        public static void cutTree(Player p, ushort treeId, Location treeLocation, int i, bool newCut, int distance)
        {
            if (!newCut && p.getTemporaryAttribute("cuttingTree") == null)
            {
                return;
            }
            if (newCut)
            {
                if (i == 10 || i == 11)               // Magic or Yew tree.
                {
                    if (!Server.getGlobalObjects().objectExists(treeId, treeLocation))
                    {
                        //	misc.WriteError(p.getUsername() + " tried to cut a non existing Magic or Yew tree!");
                        //	return;
                    }
                }
                Tree newTree = new Tree(i, treeId, treeLocation, LOGS[i], LEVEL[i], TREE_NAME[i], XP[i], distance);
                p.setTemporaryAttribute("cuttingTree", newTree);
            }
            Tree treeToCut = (Tree)p.getTemporaryAttribute("cuttingTree");

            if (!canCut(p, treeToCut, null))
            {
                resetWoodcutting(p);
                return;
            }
            if (newCut)
            {
                p.setLastAnimation(new Animation(getAxeAnimation(p)));
                p.setFaceLocation(treeLocation);
                p.getPackets().sendMessage("You begin to swing your axe at the tree..");
            }
            int   delay        = getCutTime(p, treeToCut.getTreeIndex());
            Event cutTreeEvent = new Event(delay);

            cutTreeEvent.setAction(() => {
                cutTreeEvent.stop();
                if (p.getTemporaryAttribute("cuttingTree") == null)
                {
                    resetWoodcutting(p);
                    return;
                }
                Tree tree = (Tree)p.getTemporaryAttribute("cuttingTree");
                if (!canCut(p, treeToCut, tree))
                {
                    resetWoodcutting(p);
                    return;
                }
                Server.getGlobalObjects().lowerHealth(tree.getTreeId(), tree.getTreeLocation());
                if (!Server.getGlobalObjects().originalObjectExists(tree.getTreeId(), tree.getTreeLocation()))
                {
                    resetWoodcutting(p);
                    p.setLastAnimation(new Animation(65535));
                }
                if (p.getInventory().addItem(tree.getLog()))
                {
                    p.getPackets().closeInterfaces();
                    int index = tree.getTreeIndex();
                    string s  = index == 1 || index == 3 || index == 8 ? "an" : "a";
                    p.getSkills().addXp(Skills.SKILL.WOODCUTTING, tree.getXp());
                    if (index == 6)
                    {
                        p.getPackets().sendMessage("You retrieve some Hollow bark from the tree.");
                    }
                    else
                    {
                        p.getPackets().sendMessage("You cut down " + s + " " + tree.getName() + " log.");
                    }
                    if (misc.random(3) == 0)
                    {
                        int nestId   = misc.random(10) == 0 ? 5073 : 5074;
                        GroundItem g = new GroundItem(nestId, 1, new Location(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ()), p);
                        Server.getGroundItems().newEntityDrop(g);
                        p.getPackets().sendMessage("Something falls out of the tree and lands at your feet.");
                    }
                }
                cutTree(p, tree.getTreeId(), tree.getTreeLocation(), tree.getTreeIndex(), false, tree.getDistance());
            });
            Server.registerEvent(cutTreeEvent);
            if (delay >= 2550)
            {
                Event treeCuttingAnimationEvent = new Event(2550);
                int   time = delay;
                treeCuttingAnimationEvent.setAction(() => {
                    time -= 2550;
                    if (time <= 0)
                    {
                        treeCuttingAnimationEvent.stop();
                    }
                    Tree tree = (Tree)p.getTemporaryAttribute("cuttingTree");
                    if (!canCut(p, treeToCut, tree))
                    {
                        treeCuttingAnimationEvent.stop();
                        return;
                    }
                    p.setFaceLocation(treeLocation);
                    p.setLastAnimation(new Animation(getAxeAnimation(p)));
                });
                Server.registerEvent(treeCuttingAnimationEvent);
            }
        }