-
Notifications
You must be signed in to change notification settings - Fork 3
/
DefendKnights.java
149 lines (130 loc) · 4.72 KB
/
DefendKnights.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package scripts.pestcontrol.tasks;
import org.tribot.api.General;
import org.tribot.api.Timing;
import org.tribot.api2007.Combat;
import org.tribot.api2007.PathFinding;
import org.tribot.api2007.Player;
import org.tribot.api2007.Walking;
import org.tribot.api2007.types.RSArea;
import org.tribot.api2007.types.RSTile;
import scripts.pestcontrol.api.antiban.Antiban;
import scripts.pestcontrol.api.conditions.Conditions;
import scripts.pestcontrol.api.entities.InteractNpc;
import scripts.pestcontrol.api.entities.InteractObject;
import scripts.pestcontrol.enums.Areas;
import scripts.pestcontrol.enums.Interface;
import scripts.pestcontrol.enums.Priorities;
import scripts.pestcontrol.taskframework.Task;
import scripts.pestcontrol.utilities.AreaCheck;
import scripts.pestcontrol.utilities.Vars;
public class DefendKnights extends Task {
private static RSArea[] portalAreas = new RSArea[] { Areas.BLUE_PORTAL_AREA.getArea(),
Areas.PINK_PORTAL_AREA.getArea(), Areas.PURPLE_PORTAL_AREA.getArea(), Areas.YELLOW_PORTAL_AREA.getArea() };
private static RSArea portalArea = null;
@Override
public int priority() {
return Priorities.DEFEND_KNIGHT.getPriority();
}
@Override
public boolean validate() {
return AreaCheck.isInGame();
}
@Override
public void execute() {
long t = System.currentTimeMillis();
Antiban.getReactionTime();
while (Combat.isUnderAttack() && (System.currentTimeMillis() - t) < 5000) {
Vars.status = "Idling.";
General.sleep(500, 800);
Antiban.timedActions();
}
if (needToGetDamage())
getDamage();
else
defendKnight();
}
public static void getDamage() {
if (Vars.getRandomPortal == -1) {
Vars.getRandomPortal = General.random(0, 3);
portalArea = portalAreas[Vars.getRandomPortal];
} else {
if (portalArea != null) {
if (portalArea.contains(Player.getPosition())) {
attackPortalNpc();
} else {
getToPortal();
}
}
}
}
private static void attackPortalNpc() {
if (!Combat.isUnderAttack()) {
if (spinnerAvailable()) {
Antiban.getReactionTime();
Antiban.sleepReactionTime();
if (attackSpinners()) {
Antiban.generateTrackers(Antiban.getWaitingTime());
Timing.waitCondition(Conditions.get().playerInteracting(), General.random(4000, 7000));
}
} else {
Antiban.getReactionTime();
Antiban.sleepReactionTime();
if (attackAllNpcs(portalArea)) {
Antiban.generateTrackers(Antiban.getWaitingTime());
Timing.waitCondition(Conditions.get().playerInteracting(), General.random(4000, 7000));
}
}
}
}
private static boolean attackSpinners() {
return new InteractNpc("Spinner", "Attack", portalArea, false).click();
}
private static boolean spinnerAvailable() {
return new InteractNpc("Spinner", "", portalArea, false).npcAvailable();
}
private static void getToPortal() {
RSTile temp = portalArea.getRandomTile();
if (PathFinding.canReach(temp, false)) {
Walking.blindWalkTo(temp);
} else {
Antiban.getReactionTime();
Antiban.sleepReactionTime();
if (openGate()) {
Antiban.generateTrackers(Antiban.getWaitingTime());
Timing.waitCondition(Conditions.get().canReachTile(temp), General.random(4000, 7000));
}
}
}
private static boolean openGate() {
return new InteractObject(false, null, Areas.FULL_GAME_AREA.getArea(), 30, "Gate", "Open").click();
}
private void defendKnight() {
if (AreaCheck.isInsideGameVoidKnightArea()) {
if (!Combat.isUnderAttack()) {
Antiban.getReactionTime();
Antiban.sleepReactionTime();
if (attackAllNpcs(Areas.GAME_VOID_KNIGHT_PROTECT_AREA.getArea())) {
Antiban.generateTrackers(Antiban.getWaitingTime());
Timing.waitCondition(Conditions.get().playerInteracting(), General.random(4000, 7000));
}
}
} else {
Vars.status = "Walking to void knight.";
Walking.blindWalkTo(Vars.void_Knight_Tile);
}
}
private static boolean attackAllNpcs(RSArea area) {
return new InteractNpc(null, "Attack", area, true).click();
}
private boolean needToGetDamage() {
return portalHpLow() && Interface.DAMAGE_COLLECTED.getValue() < 50;
}
public boolean portalHpLow() {
return (Interface.BLUE_PORTAL.getValue() == 0 && Interface.PURPLE_PORTAL.getValue() == 0)
|| (Interface.PINK_PORTAL.getValue() == 0 && Interface.YELLO_PORTAL.getValue() == 0)
|| (Interface.PURPLE_PORTAL.getValue() == 0 && Interface.PINK_PORTAL.getValue() == 0)
|| (Interface.BLUE_PORTAL.getValue() == 0 && Interface.PINK_PORTAL.getValue() == 0)
|| (Interface.BLUE_PORTAL.getValue() == 0 && Interface.PURPLE_PORTAL.getValue() == 0)
|| (Interface.PURPLE_PORTAL.getValue() == 0 && Interface.PINK_PORTAL.getValue() == 0);
}
}