44import org .osbot .rs07 .api .model .NPC ;
55import org .osbot .rs07 .api .ui .EquipmentSlot ;
66import org .osbot .rs07 .api .ui .Tab ;
7- import utils . CachedWidget ;
8- import utils . Sleep ;
9- import utils .WidgetActionFilter ;
7+ import util . Sleep ;
8+ import util . widget . CachedWidget ;
9+ import util . widget . filters .WidgetActionFilter ;
1010
1111public final class FightingSection extends TutorialSection {
1212
1313 private static final Area LADDER_AREA = new Area (3108 , 9523 , 3114 , 9529 );
1414 private static final Area INSIDE_RAT_CAGE_GATE_AREA = new Area (3107 , 9517 , 3110 , 9520 );
1515 private static final Area OUTSIDE_RAT_CAGE_GATE_AREA = new Area (3111 , 9516 , 3113 , 9521 );
16- private static final Area WRONG_DOOR = new Area (3090 , 9508 , 3097 , 9496 );
1716
1817 private final CachedWidget VIEW_EQUIPMENT_STATS_WIDGET = new CachedWidget (new WidgetActionFilter ("View equipment stats" ));
1918
@@ -29,71 +28,69 @@ public final void onLoop() throws InterruptedException {
2928 }
3029
3130 switch (getProgress ()) {
32- case 370 :
33- talkToInstructor ();
34- break ;
35- case 390 :
36- getTabs ().open (Tab .EQUIPMENT );
37- break ;
38- case 400 :
39- VIEW_EQUIPMENT_STATS_WIDGET .get (getWidgets ()).ifPresent (widget -> {
40- if (widget .interact ()) {
41- Sleep .sleepUntil (() -> getProgress () != 400 , 3000 , 600 );
42- }
43- });
44- break ;
45- case 405 :
46- wieldItem ("Bronze dagger" );
47- break ;
48- case 410 :
49- talkToInstructor ();
50- break ;
51- case 420 :
52- if (!getEquipment ().isWearingItem (EquipmentSlot .WEAPON , "Bronze sword" )) {
53- wieldItem ("Bronze sword" );
54- } else if (!getEquipment ().isWearingItem (EquipmentSlot .SHIELD , "Wooden shield" )) {
55- wieldItem ("Wooden shield" );
56- }
57- break ;
58- case 430 :
59- getTabs ().open (Tab .ATTACK );
60- break ;
61- case 440 :
31+ case 370 :
32+ talkToInstructor ();
33+ break ;
34+ case 390 :
35+ getTabs ().open (Tab .EQUIPMENT );
36+ break ;
37+ case 400 :
38+ if (VIEW_EQUIPMENT_STATS_WIDGET .interact (getWidgets ())) {
39+ Sleep .sleepUntil (() -> getProgress () != 400 , 3000 , 600 );
40+ }
41+ break ;
42+ case 405 :
43+ wieldItem ("Bronze dagger" );
44+ break ;
45+ case 410 :
46+ talkToInstructor ();
47+ break ;
48+ case 420 :
49+ if (!getEquipment ().isWearingItem (EquipmentSlot .WEAPON , "Bronze sword" )) {
50+ wieldItem ("Bronze sword" );
51+ } else if (!getEquipment ().isWearingItem (EquipmentSlot .SHIELD , "Wooden shield" )) {
52+ wieldItem ("Wooden shield" );
53+ }
54+ break ;
55+ case 430 :
56+ getTabs ().open (Tab .ATTACK );
57+ break ;
58+ case 440 :
59+ enterRatCage ();
60+ break ;
61+ case 450 :
62+ case 460 :
63+ if (!inRatCage ()) {
6264 enterRatCage ();
63- break ;
64- case 450 :
65- case 460 :
66- if (!inRatCage ()) {
67- enterRatCage ();
68- } else if (!isAttackingRat ()) {
69- attackRat ();
70- }
71- break ;
72- case 470 :
73- if (inRatCage ()) {
74- leaveRatCage ();
75- } else {
76- talkToInstructor ();
77- }
78- break ;
79- case 480 :
80- case 490 :
81- if (!getEquipment ().isWearingItem (EquipmentSlot .WEAPON , "Shortbow" )) {
82- wieldItem ("Shortbow" );
83- } else if (!getEquipment ().isWearingItem (EquipmentSlot .ARROWS , "Bronze arrow" )) {
84- wieldItem ("Bronze arrow" );
85- } else if (!isAttackingRat ()) {
86- attackRat ();
87- }
88- break ;
89- case 500 :
90- if (!LADDER_AREA .contains (myPosition ())) {
91- getWalking ().walk (LADDER_AREA );
92- } else if (getObjects ().closest ("Ladder" ).interact ("Climb-up" )) {
93- Sleep .sleepUntil (() -> !LADDER_AREA .contains (myPosition ()), 5000 , 600 );
94- }
95- break ;
96- }
65+ } else if (!isAttackingRat ()) {
66+ attackRat ();
67+ }
68+ break ;
69+ case 470 :
70+ if (inRatCage ()) {
71+ leaveRatCage ();
72+ } else {
73+ talkToInstructor ();
74+ }
75+ break ;
76+ case 480 :
77+ case 490 :
78+ if (!getEquipment ().isWearingItem (EquipmentSlot .WEAPON , "Shortbow" )) {
79+ wieldItem ("Shortbow" );
80+ } else if (!getEquipment ().isWearingItem (EquipmentSlot .ARROWS , "Bronze arrow" )) {
81+ wieldItem ("Bronze arrow" );
82+ } else if (!isAttackingRat ()) {
83+ attackRat ();
84+ }
85+ break ;
86+ case 500 :
87+ if (!LADDER_AREA .contains (myPosition ())) {
88+ getWalking ().walk (LADDER_AREA );
89+ } else if (getObjects ().closest ("Ladder" ).interact ("Climb-up" )) {
90+ Sleep .sleepUntil (() -> !LADDER_AREA .contains (myPosition ()), 5000 , 600 );
91+ }
92+ break ;
93+ }
9794 }
9895
9996 private boolean inRatCage () {
@@ -103,9 +100,7 @@ private boolean inRatCage() {
103100 private void enterRatCage () {
104101 if (!OUTSIDE_RAT_CAGE_GATE_AREA .contains (myPosition ())) {
105102 getWalking ().walk (OUTSIDE_RAT_CAGE_GATE_AREA );
106- } else if (getObjects ()
107- .closest (ob -> ob .getName () != null && ob .getName ().equals ("Gate" ) && !WRONG_DOOR .contains (ob ))
108- .interact ("Open" )) {
103+ } else if (getObjects ().closest ("Gate" ).interact ("Open" )) {
109104 Sleep .sleepUntil (this ::inRatCage , 5000 , 600 );
110105 }
111106 }
0 commit comments