Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit bfae6e0

Browse files
ExplvExplv
authored andcommitted
Initial commit
1 parent ce68cab commit bfae6e0

16 files changed

+1219
-0
lines changed

src/events/DisableAudioEvent.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package events;
2+
3+
import org.osbot.rs07.api.ui.Tab;
4+
import org.osbot.rs07.event.Event;
5+
import utils.CachedWidget;
6+
import utils.WidgetActionFilter;
7+
8+
public final class DisableAudioEvent extends Event {
9+
10+
private final CachedWidget soundSettingsWidget = new CachedWidget(new WidgetActionFilter("Audio"));
11+
private final CachedWidget musicVolumeWidget = new CachedWidget(new WidgetActionFilter("Adjust Music Volume"));
12+
private final CachedWidget soundEffectVolumeWidget = new CachedWidget(new WidgetActionFilter("Adjust Sound Effect Volume"));
13+
private final CachedWidget areaSoundEffectVolumeWidget = new CachedWidget(new WidgetActionFilter("Adjust Area Sound Effect Volume"));
14+
15+
private static final int musicVolumeConfig = 168;
16+
private static final int soundEffectVolumeConfig = 169;
17+
private static final int areaSoundEffectVolumeConfig = 872;
18+
19+
@Override
20+
public final int execute() throws InterruptedException {
21+
if (Tab.SETTINGS.isDisabled(getBot())) {
22+
setFailed();
23+
} else if (getTabs().getOpen() != Tab.SETTINGS) {
24+
getTabs().open(Tab.SETTINGS);
25+
} else if (!musicVolumeWidget.get(getWidgets()).isPresent()) {
26+
soundSettingsWidget.get(getWidgets()).ifPresent(widget -> widget.interact());
27+
} else if (!isVolumeDisabled(musicVolumeConfig)) {
28+
musicVolumeWidget.get(getWidgets()).ifPresent(widget -> widget.interact());
29+
} else if (!isVolumeDisabled(soundEffectVolumeConfig)) {
30+
soundEffectVolumeWidget.get(getWidgets()).ifPresent(widget -> widget.interact());
31+
} else if (!isVolumeDisabled(areaSoundEffectVolumeConfig)) {
32+
areaSoundEffectVolumeWidget.get(getWidgets()).ifPresent(widget -> widget.interact());
33+
} else {
34+
setFinished();
35+
}
36+
return 200;
37+
}
38+
39+
private boolean isVolumeDisabled(final int config) {
40+
return getConfigs().get(config) == 4;
41+
}
42+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package events;
2+
3+
import org.osbot.rs07.api.ui.Tab;
4+
import org.osbot.rs07.event.Event;
5+
import utils.CachedWidget;
6+
import utils.WidgetActionFilter;
7+
8+
public final class ToggleRoofsHiddenEvent extends Event {
9+
10+
private final CachedWidget advancedOptionsWidget = new CachedWidget("Advanced options");
11+
private final CachedWidget displaySettingsWidget = new CachedWidget(new WidgetActionFilter("Display"));
12+
private final CachedWidget toggleRoofHiddenWidget = new CachedWidget(new WidgetActionFilter("Roof-removal"));
13+
14+
@Override
15+
public final int execute() throws InterruptedException {
16+
if (Tab.SETTINGS.isDisabled(getBot())) {
17+
setFailed();
18+
} else if (getTabs().getOpen() != Tab.SETTINGS) {
19+
getTabs().open(Tab.SETTINGS);
20+
} else if (!advancedOptionsWidget.get(getWidgets()).isPresent()) {
21+
displaySettingsWidget.get(getWidgets()).ifPresent(widget -> widget.interact());
22+
} else if (!toggleRoofHiddenWidget.get(getWidgets()).isPresent()) {
23+
advancedOptionsWidget.get(getWidgets()).get().interact();
24+
} else if (toggleRoofHiddenWidget.get(getWidgets()).get().interact()) {
25+
setFinished();
26+
}
27+
return 200;
28+
}
29+
}

src/script/TutorialIsland.java

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package script;
2+
3+
import org.osbot.rs07.script.Script;
4+
import org.osbot.rs07.script.ScriptManifest;
5+
import sections.*;
6+
7+
@ScriptManifest(author = "Explv", name = "Explv's Tutorial Island", info = "Completes Tutorial Island", version = 5.2, logo = "")
8+
public final class TutorialIsland extends Script {
9+
10+
private final TutorialSection rsGuideSection = new RuneScapeGuideSection();
11+
private final TutorialSection survivalSection = new SurvivalSection();
12+
private final TutorialSection cookingSection = new CookingSection();
13+
private final TutorialSection questSection = new QuestSection();
14+
private final TutorialSection miningSection = new MiningSection();
15+
private final TutorialSection fightingSection = new FightingSection();
16+
private final TutorialSection bankSection = new BankSection();
17+
private final TutorialSection priestSection = new PriestSection();
18+
private final TutorialSection wizardSection = new WizardSection();
19+
20+
@Override
21+
public void onStart() throws InterruptedException {
22+
rsGuideSection.exchangeContext(getBot());
23+
survivalSection.exchangeContext(getBot());
24+
cookingSection.exchangeContext(getBot());
25+
questSection.exchangeContext(getBot());
26+
miningSection.exchangeContext(getBot());
27+
fightingSection.exchangeContext(getBot());
28+
bankSection.exchangeContext(getBot());
29+
priestSection.exchangeContext(getBot());
30+
wizardSection.exchangeContext(getBot());
31+
}
32+
33+
@Override
34+
public final int onLoop() throws InterruptedException {
35+
if (isTutorialIslandCompleted()) {
36+
stop(true);
37+
return 0;
38+
}
39+
40+
switch (getTutorialSection()) {
41+
case 0:
42+
case 1:
43+
rsGuideSection.onLoop();
44+
break;
45+
case 2:
46+
case 3:
47+
survivalSection.onLoop();
48+
break;
49+
case 4:
50+
case 5:
51+
cookingSection.onLoop();
52+
break;
53+
case 6:
54+
case 7:
55+
questSection.onLoop();
56+
break;
57+
case 8:
58+
case 9:
59+
miningSection.onLoop();
60+
break;
61+
case 10:
62+
case 11:
63+
case 12:
64+
fightingSection.onLoop();
65+
break;
66+
case 14:
67+
case 15:
68+
bankSection.onLoop();
69+
break;
70+
case 16:
71+
case 17:
72+
priestSection.onLoop();
73+
break;
74+
case 18:
75+
case 19:
76+
case 20:
77+
wizardSection.onLoop();
78+
break;
79+
}
80+
return 200;
81+
}
82+
83+
private int getTutorialSection() {
84+
return getConfigs().get(406);
85+
}
86+
87+
private boolean isTutorialIslandCompleted() {
88+
return getWidgets().getWidgetContainingText("Tutorial Island Progress") == null;
89+
}
90+
}

src/sections/BankSection.java

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package sections;
2+
3+
import org.osbot.rs07.api.filter.NameFilter;
4+
import org.osbot.rs07.api.filter.PositionFilter;
5+
import org.osbot.rs07.api.map.Area;
6+
import org.osbot.rs07.api.map.Position;
7+
import org.osbot.rs07.api.model.RS2Object;
8+
import utils.Sleep;
9+
10+
public final class BankSection extends TutorialSection {
11+
12+
private static final Area BANK_AREA = new Area(
13+
new int[][]{
14+
{3125, 3121},
15+
{3126, 3121},
16+
{3126, 3119},
17+
{3118, 3119},
18+
{3118, 3121},
19+
{3119, 3121},
20+
{3119, 3123},
21+
{3115, 3123},
22+
{3115, 3128},
23+
{3118, 3128},
24+
{3118, 3126},
25+
{3122, 3126},
26+
{3122, 3130},
27+
{3126, 3130},
28+
{3126, 3128},
29+
{3128, 3128},
30+
{3128, 3126},
31+
{3130, 3126},
32+
{3130, 3123},
33+
{3125, 3123},
34+
{3125, 3121}
35+
}
36+
);
37+
38+
public BankSection() {
39+
super("Financial Advisor");
40+
}
41+
42+
@Override
43+
public final void onLoop() throws InterruptedException {
44+
if (pendingContinue()) {
45+
selectContinue();
46+
return;
47+
}
48+
49+
switch (getProgress()) {
50+
case 510:
51+
if (!BANK_AREA.contains(myPosition())) {
52+
getWalking().webWalk(BANK_AREA);
53+
} else if (getDialogues().isPendingOption()) {
54+
getDialogues().selectOption("Yes.");
55+
} else if (getObjects().closest("Bank booth").interact("Use")) {
56+
Sleep.sleepUntil(this::pendingContinue, 5000);
57+
}
58+
break;
59+
case 520:
60+
if (getBank().isOpen()) {
61+
getBank().close();
62+
} else if (getObjects().closest("Poll booth").interact("Use")) {
63+
Sleep.sleepUntil(this::pendingContinue, 5000);
64+
}
65+
break;
66+
case 525:
67+
if (getWidgets().closeOpenInterface() && openDoorAtPosition(new Position(3125, 3124, 0))) {
68+
Sleep.sleepUntil(() -> getProgress() != 525, 5000);
69+
}
70+
break;
71+
case 530:
72+
talkToInstructor();
73+
break;
74+
case 540:
75+
if (openDoorAtPosition(new Position(3130, 3124, 0))) {
76+
Sleep.sleepUntil(() -> getProgress() != 540, 5000);
77+
}
78+
break;
79+
}
80+
}
81+
82+
private boolean openDoorAtPosition(final Position position) {
83+
RS2Object door = getObjects().closest(obj -> obj.getName().equals("Door") && obj.getPosition().equals(position));
84+
return door != null && door.interact("Open");
85+
}
86+
}

src/sections/CookingSection.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package sections;
2+
3+
import org.osbot.rs07.api.map.Area;
4+
import org.osbot.rs07.api.map.Position;
5+
import org.osbot.rs07.api.ui.Tab;
6+
import utils.Sleep;
7+
8+
public class CookingSection extends TutorialSection {
9+
10+
private static final Area COOK_BUILDING = new Area(3073, 3083, 3078, 3086);
11+
12+
public CookingSection() {
13+
super("Master Chef");
14+
}
15+
16+
@Override
17+
public final void onLoop() throws InterruptedException {
18+
if (pendingContinue()) {
19+
selectContinue();
20+
return;
21+
}
22+
switch (getProgress()) {
23+
case 130:
24+
getWalking().webWalk(COOK_BUILDING);
25+
break;
26+
case 140:
27+
talkToInstructor();
28+
break;
29+
case 150:
30+
makeDough();
31+
break;
32+
case 160:
33+
bakeDough();
34+
break;
35+
case 170:
36+
getTabs().open(Tab.MUSIC);
37+
break;
38+
case 180:
39+
getWalking().webWalk(new Position(3071, 3090, 0));
40+
break;
41+
}
42+
}
43+
44+
private void makeDough() {
45+
if (!"Pot of flour".equals(getInventory().getSelectedItemName())) {
46+
getInventory().interact("Use", "Pot of flour");
47+
} else if (getInventory().getItem("Bucket of water").interact()) {
48+
Sleep.sleepUntil(() -> getInventory().contains("Bread dough"), 3000);
49+
}
50+
}
51+
52+
private void bakeDough() {
53+
if (!"Bread dough".equals(getInventory().getSelectedItemName())) {
54+
getInventory().interact("Use", "Bread dough");
55+
} else if (getObjects().closest("Range").interact()) {
56+
Sleep.sleepUntil(() -> getInventory().contains("Bread"), 5000);
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)