Skip to content

Instantly share code, notes, and snippets.

@CalebWhiting
Created June 21, 2012 05:19
Show Gist options
  • Select an option

  • Save CalebWhiting/0c78f7d669832e216f1e to your computer and use it in GitHub Desktop.

Select an option

Save CalebWhiting/0c78f7d669832e216f1e to your computer and use it in GitHub Desktop.
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