Created
June 21, 2012 05:19
-
-
Save CalebWhiting/0c78f7d669832e216f1e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.dang.clues.scrolls; | |
| import com.dang.api.method.misc.Executors; | |
| import com.dang.api.transport.Lodestone; | |
| import com.dang.api.transport.UltraWalking; | |
| import com.dang.api.transport.walking.Unit; | |
| import com.dang.api.transport.walking.wrappers.Door; | |
| import com.dang.api.transport.walking.wrappers.Obstacle; | |
| import com.dang.api.transport.walking.wrappers.Sequence; | |
| import com.dang.api.transport.walking.wrappers.UnitObject; | |
| import com.dang.api.transport.walking.wrappers.UnitTile; | |
| import com.dang.api.util.enums.Skills; | |
| import com.dang.api.util.script.methods.Timing; | |
| import com.dang.api.wrappers.DetailedItem; | |
| import com.dang.clues.AbstractScroll; | |
| import org.powerbot.concurrent.strategy.Condition; | |
| import org.powerbot.game.api.methods.node.SceneEntities; | |
| import org.powerbot.game.api.methods.widget.Camera; | |
| import org.powerbot.game.api.util.Filter; | |
| import org.powerbot.game.api.wrappers.Area; | |
| import org.powerbot.game.api.wrappers.Tile; | |
| import org.powerbot.game.api.wrappers.node.SceneObject; | |
| import java.awt.Graphics; | |
| import java.util.ArrayList; | |
| import java.util.Collections; | |
| public class Clue7238 extends AbstractScroll { | |
| private static final int CRATE = 0; | |
| private static final Tile CRATE_TILE = new Tile(3509, 3497, 0); | |
| private static final UnitTile[] PATH_TO_TEMPLE = UnitTile.toUnits(new Tile(3213, 3376, 0), new Tile(3218, 3376, 0), new Tile(3223, 3376, 0), new Tile(3228, 3376, 0), new Tile(3233, 3375, 0), new Tile(3238, 3374, 0), new Tile(3243, 3373, 0), new Tile(3248, 3373, 0), new Tile(3253, 3373, 0), new Tile(3258, 3373, 0), new Tile(3263, 3373, 0), new Tile(3268, 3373, 0), new Tile(3273, 3373, 0), new Tile(3278, 3374, 0), new Tile(3283, 3374, 0), new Tile(3288, 3375, 0), new Tile(3292, 3380, 0), new Tile(3292, 3385, 0), new Tile(3292, 3391, 0), new Tile(3292, 3396, 0), new Tile(3292, 3401, 0), new Tile(3292, 3407, 0), new Tile(3292, 3414, 0), new Tile(3292, 3419, 0), new Tile(3292, 3424, 0), new Tile(3292, 3430, 0), new Tile(3292, 3436, 0), new Tile(3292, 3441, 0), new Tile(3291, 3446, 0), new Tile(3292, 3453, 0), new Tile(3295, 3459, 0), new Tile(3303, 3462, 0), new Tile(3310, 3465, 0), new Tile(3316, 3467, 0), new Tile(3324, 3468, 0), new Tile(3330, 3472, 0), new Tile(3339, 3478, 0), new Tile(3347, 3480, 0), new Tile(3357, 3482, 0), new Tile(3370, 3483, 0), new Tile(3384, 3483, 0), new Tile(3395, 3485, 0), new Tile(3402, 3485, 0)); | |
| private static final UnitTile[] PATH_TO_CRATE = UnitTile.toUnits(new Tile(3424, 3484, 0), new Tile(3429, 3484, 0), new Tile(3433, 3484, 0), new Tile(3440, 3485, 0), new Tile(3446, 3487, 0), new Tile(3451, 3488, 0), new Tile(3457, 3485, 0), new Tile(3460, 3480, 0), new Tile(3466, 3476, 0), new Tile(3472, 3474, 0), new Tile(3478, 3477, 0), new Tile(3484, 3478, 0), new Tile(3487, 3483, 0), new Tile(3491, 3486, 0), new Tile(3496, 3489, 0), new Tile(3501, 3491, 0), new Tile(3506, 3494, 0)); | |
| private static final Obstacle[] DEFAULT_OBSTACLES = { new Door(new Area(new Tile(3320, 3454, 0), new Tile(3300, 3479, 0)), new Tile(3319, 3468, 0), new Tile(3328, 3469, 0)) }; | |
| private static final Obstacle[] SHORTCUT_OBSTACLES = { new UnitObject(new Area(new Tile(3424, 3413, 0), new Tile(3402, 3483, 0)), 9334, new Tile(3424, 3476, 0), "Squeeze"), new UnitObject(new Area(new Tile(3425, 3476, 0), new Tile(3424, 3477, 0)), new Tile(2425, 3476, 0), "Climb"), new UnitObject(new Area(new Tile(3428, 3476, 0), new Tile(3425, 3483, 0)), 9337, new Tile(3425, 3483, 0), "Squeeze") }; | |
| private static final Obstacle[] TEMPLE_OBSTACLES = { }; | |
| private static final UnitTile[] TEMPLE_EXTRA_TILES = UnitTile.toUnits(new Tile(3403, 3488, 0), new Tile(3404, 3494, 0), new Tile(3404, 3499, 0), new Tile(3404, 3502, 0)); | |
| private static final UnitTile[] SHORTCUT_EXTRA_TILES = UnitTile.toUnits(new Tile(3403, 3483, 0), new Tile(3406, 3481, 0), new Tile(3412, 3479, 0), new Tile(3417, 3477, 0), new Tile(3422, 3476, 0)); | |
| private static boolean isShortcutAvailable() { | |
| return Skills.AGILITY.getLevel() >= 65; | |
| } | |
| private static Sequence getSequence() { | |
| final ArrayList<Obstacle> obstacles = new ArrayList<Obstacle>(); | |
| final ArrayList<Unit> units = new ArrayList<Unit>(); | |
| Collections.addAll(obstacles, DEFAULT_OBSTACLES); | |
| Collections.addAll(obstacles, isShortcutAvailable() ? SHORTCUT_OBSTACLES : TEMPLE_OBSTACLES); | |
| Collections.addAll(units, PATH_TO_TEMPLE); | |
| Collections.addAll(units, isShortcutAvailable() ? SHORTCUT_EXTRA_TILES : TEMPLE_EXTRA_TILES); | |
| Collections.addAll(units, PATH_TO_CRATE); | |
| return new Sequence(obstacles.toArray(new Obstacle[obstacles.size()]), units.toArray(new Unit[units.size()])); | |
| } | |
| @Override | |
| public int id() { | |
| return 7238; | |
| } | |
| @Override | |
| public DetailedItem[] items() { | |
| return null; | |
| } | |
| @Override | |
| public Condition condition() { | |
| return new Condition() { | |
| public boolean validate() { | |
| /** | |
| * TODO Check priest in peril is completed | |
| */ | |
| return true; | |
| } | |
| }; | |
| } | |
| @Override | |
| public Transport transport() { | |
| return new Transport() { | |
| @Override | |
| public boolean isAt() { | |
| return CRATE_TILE.isOnMap(); | |
| } | |
| @Override | |
| public void walk() { | |
| getSequence().execute(); | |
| } | |
| }; | |
| } | |
| @Override | |
| public void finish() { | |
| final SceneObject crate = SceneEntities.getNearest(new Filter<SceneObject>() { | |
| public boolean accept(final SceneObject sceneObject) { | |
| return sceneObject.getLocation().equals(CRATE_TILE) && sceneObject.getId() == CRATE; | |
| } | |
| }); | |
| if (crate != null) { | |
| if (crate.isOnScreen() && crate.interact("Search")) { | |
| Executors.waitForClue(); | |
| } else { | |
| if (crate.getLocation().distanceTo() < 6) { | |
| Camera.turnTo(crate); | |
| sleep(50, 500); | |
| } | |
| if (! crate.isOnScreen()) { | |
| UltraWalking.walk(crate.getLocation()); | |
| Timing.waitFor(3000, 5000, new Condition() { | |
| public boolean validate() { | |
| sleep(100, 800); | |
| return crate.isOnScreen(); | |
| } | |
| }); | |
| } | |
| } | |
| } | |
| } | |
| @Override | |
| public Teleport teleport() { | |
| return new Teleport() { | |
| @Override | |
| public boolean execute() { | |
| return Lodestone.VARROCK.execute(); | |
| } | |
| }; | |
| } | |
| @Override | |
| public void repaint(final Graphics g) { | |
| } | |
| @Override | |
| public int getTimeout() { | |
| return 10 * 60000; | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment