test
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -8,3 +8,5 @@ nbactions.xml
|
||||
nb-configuration.xml
|
||||
nbproject/
|
||||
bin/
|
||||
|
||||
examples/
|
||||
|
||||
@@ -71,4 +71,5 @@ task runClient(type: JavaExec) {
|
||||
classpath = sourceSets.test.runtimeClasspath
|
||||
mainClass = 'ee.futur.K4rliPluginsTest'
|
||||
jvmArgs '-ea'
|
||||
args '--developer-mode', '--debug'
|
||||
}
|
||||
|
||||
581
gotr-max-points-guide-youtube-transcription.txt
Normal file
581
gotr-max-points-guide-youtube-transcription.txt
Normal file
@@ -0,0 +1,581 @@
|
||||
|
||||
Intro
|
||||
0:00
|
||||
what's going on guys it's jwell coming
|
||||
0:01
|
||||
to you with an updated 2023 Guardians of
|
||||
0:04
|
||||
the rift Max points guide now I'm going
|
||||
0:08
|
||||
to run through this as quick as I
|
||||
0:10
|
||||
possibly can and as clear as I possibly
|
||||
0:12
|
||||
can so hopefully you guys can start
|
||||
0:14
|
||||
utilizing this and taking advantage of
|
||||
0:17
|
||||
uh the method that like I said I
|
||||
0:19
|
||||
recently discovered I don't know if this
|
||||
0:20
|
||||
is common knowledge it certainly wasn't
|
||||
0:22
|
||||
to me so my goal is to help at least a
|
||||
0:24
|
||||
few of you out there that are looking to
|
||||
0:27
|
||||
uh maximize the amount of uh points
|
||||
0:29
|
||||
you're getting per game
|
||||
0:31
|
||||
now copy my inventory as best as you can
|
||||
Inventory and Gear
|
||||
0:34
|
||||
if you don't have the Colossal pouch
|
||||
0:35
|
||||
bring the best pouches that you have
|
||||
0:37
|
||||
available to you bring as many fire
|
||||
0:40
|
||||
runes as you have as many water runes as
|
||||
0:42
|
||||
you have and um obviously bring as many
|
||||
0:47
|
||||
pieces of the remnants of the eye that
|
||||
0:48
|
||||
you have um if you don't just kind of
|
||||
0:52
|
||||
substitute that with graceful not super
|
||||
0:54
|
||||
important but um the verac armor if you
|
||||
0:56
|
||||
don't have the top will help you when
|
||||
0:58
|
||||
you're mining fragments it'll double the
|
||||
1:00
|
||||
amount of fragments you get so I
|
||||
1:01
|
||||
recommend that bring a full binding
|
||||
1:04
|
||||
necklace this is extremely important um
|
||||
1:06
|
||||
you can pick them up on the GE I think
|
||||
1:08
|
||||
they're 800 a piece I picked up like a
|
||||
1:11
|
||||
100 for this grind um and we're going to
|
||||
1:14
|
||||
use one per game uh which is going to
|
||||
1:17
|
||||
allow us to craft combination runes
|
||||
1:18
|
||||
which is kind of the secret to this
|
||||
1:20
|
||||
method um last thing make sure you have
|
||||
1:23
|
||||
your Rune pouch with air Cosmic and
|
||||
1:26
|
||||
Astra runes on the lunar spell book
|
||||
1:29
|
||||
we're going to want NPC contact to fix
|
||||
1:31
|
||||
our pouches in between games as well as
|
||||
1:34
|
||||
magic and view which you must have in
|
||||
1:37
|
||||
order to do this
|
||||
1:38
|
||||
method now go ahead and equip everything
|
||||
1:41
|
||||
you have your best and Slot pickaxe
|
||||
1:43
|
||||
binding necklace and um make sure you
|
||||
RuneLite Plugins
|
||||
1:47
|
||||
have three crucial plugins menu menu
|
||||
1:49
|
||||
entry swapper make sure all your pouches
|
||||
1:52
|
||||
are set to
|
||||
1:53
|
||||
empty next thing you want to do if you
|
||||
1:55
|
||||
don't already have it um and this helps
|
||||
1:57
|
||||
out a lot which um you're going to going
|
||||
1:59
|
||||
to have to to follow along is going to
|
||||
2:01
|
||||
be the Guardians of the rift plugin you
|
||||
2:03
|
||||
can access that through the plug-in Hub
|
||||
2:05
|
||||
highly recommend you download that
|
||||
2:07
|
||||
because we're going to pay attention to
|
||||
2:08
|
||||
this countdown time sense portal um to
|
||||
2:13
|
||||
allow us to not make sure we don't miss
|
||||
2:15
|
||||
any of the portals and that'll make
|
||||
2:16
|
||||
sense once we get into the game and the
|
||||
2:18
|
||||
last thing is entity Hider you don't
|
||||
2:20
|
||||
have to have it but I highly recommend
|
||||
2:22
|
||||
it um I have hide others hide others 2D
|
||||
2:25
|
||||
don't have to hide your friends um I am
|
||||
2:28
|
||||
for this uh
|
||||
2:30
|
||||
setting but um and then hide other
|
||||
2:32
|
||||
players pets just because they're kind
|
||||
2:33
|
||||
of annoying a lot of people run around
|
||||
2:35
|
||||
with their pets in the game and um not a
|
||||
2:37
|
||||
huge fan of it uh the last thing and you
|
||||
2:40
|
||||
don't have to do this but if you have a
|
||||
2:42
|
||||
mouse where you can key bind the sides
|
||||
2:45
|
||||
of them I would highly recommend binding
|
||||
2:48
|
||||
the number four to uh one of your thumb
|
||||
2:51
|
||||
buttons and again this will make sense
|
||||
2:53
|
||||
once we get into the video but I I
|
||||
2:56
|
||||
highly recommend that you guys um bind
|
||||
2:58
|
||||
that because it's going to allow you to
|
||||
2:59
|
||||
deposit your runes quicker and like I
|
||||
3:02
|
||||
said just overall makes makes things
|
||||
3:04
|
||||
easier so um while we're waiting if you
|
||||
Getting There Options
|
||||
3:08
|
||||
don't know how to get here already
|
||||
3:10
|
||||
quickest way is going to be the
|
||||
3:12
|
||||
Guardians of the rift miname teleport
|
||||
3:15
|
||||
another way is the necklace of Passage
|
||||
3:17
|
||||
you can use that to the Wizards Tower
|
||||
3:20
|
||||
run in down into the basement um and
|
||||
3:23
|
||||
then there should be a blue portal right
|
||||
3:25
|
||||
there that you can enter which will
|
||||
3:26
|
||||
bring you to the mini game so without
|
||||
3:29
|
||||
further Ado I will go ahead and jump in
|
||||
3:32
|
||||
as soon as we're entering the mini
|
||||
Starting Off
|
||||
3:35
|
||||
game now that we're in the mini game go
|
||||
3:37
|
||||
ahead and run
|
||||
3:40
|
||||
north don't worry about picking up the
|
||||
3:42
|
||||
uh uncharged cells um you're not really
|
||||
3:46
|
||||
missing out on much experience and
|
||||
3:47
|
||||
honestly this method isn't as efficient
|
||||
3:49
|
||||
if you go that
|
||||
3:52
|
||||
route we'll wait right
|
||||
3:54
|
||||
here until the game
|
||||
3:58
|
||||
starts special attack if you want
|
||||
4:05
|
||||
to and go ahead and start
|
||||
4:08
|
||||
mining now pay attention to the time
|
||||
4:11
|
||||
since portal this is a good time you can
|
||||
4:13
|
||||
kind of hang out chill check your phone
|
||||
4:15
|
||||
whatever you want to do um and we're
|
||||
4:17
|
||||
going to leave as soon as
|
||||
4:19
|
||||
this gets to about 140 maybe 145 on the
|
||||
4:28
|
||||
portal
|
||||
4:31
|
||||
all right now that the portal is at 140
|
||||
4:34
|
||||
we're going to leave this area and run
|
||||
The Minigame
|
||||
4:37
|
||||
towards the center over here and wait
|
||||
4:41
|
||||
until a portal opens
|
||||
4:47
|
||||
up here we are got
|
||||
4:51
|
||||
lucky go ahead and run over
|
||||
4:54
|
||||
here fill up your
|
||||
4:58
|
||||
pouches
|
||||
5:20
|
||||
and then exit the
|
||||
5:22
|
||||
portal now we're going to go ahead enter
|
||||
5:25
|
||||
the uh whatever Elemental portal you
|
||||
5:28
|
||||
possibly can go ahead and enter into
|
||||
5:29
|
||||
there run up here cast magic and bu use
|
||||
5:34
|
||||
the fire on there empty the pouch use
|
||||
5:37
|
||||
the fire and
|
||||
5:39
|
||||
repeat and then go ahead and run out now
|
||||
5:42
|
||||
you can see here we have poly
|
||||
5:44
|
||||
Elemental Guardian Stones instead of the
|
||||
5:47
|
||||
regular and that's going to go ahead and
|
||||
5:49
|
||||
give us way more points than we normally
|
||||
5:51
|
||||
would have after you deposit that you
|
||||
5:54
|
||||
can go ahead and start working at the
|
||||
5:56
|
||||
workbench now this is where that key
|
||||
5:58
|
||||
bind number four makes things easier and
|
||||
6:00
|
||||
you'll see why when I deposit my steam
|
||||
6:02
|
||||
runes in here all I have to do is hold
|
||||
6:04
|
||||
four on the side of my uh Mouse and it
|
||||
6:08
|
||||
instant deposits them now if you don't
|
||||
6:11
|
||||
want to go that method that's okay you
|
||||
6:13
|
||||
can always just hit four on your
|
||||
6:15
|
||||
keyboard but like I said I mean the goal
|
||||
6:16
|
||||
here is to make things as easy as
|
||||
6:18
|
||||
possible
|
||||
6:21
|
||||
so
|
||||
6:23
|
||||
now we are going to continue to fill up
|
||||
6:26
|
||||
the
|
||||
6:28
|
||||
pouch
|
||||
6:39
|
||||
once our pouch is full let's go ahead
|
||||
6:41
|
||||
again we'll run back to the uh Elemental
|
||||
6:43
|
||||
alter and rinse in
|
||||
6:47
|
||||
repeat cast our magic and view use our
|
||||
6:50
|
||||
fire runes on the altar empty the pouch
|
||||
6:53
|
||||
use them again use them a third time and
|
||||
6:56
|
||||
run back
|
||||
6:58
|
||||
out
|
||||
7:01
|
||||
we will
|
||||
7:06
|
||||
deposit go ahead and deposit our runes
|
||||
7:09
|
||||
into the deposit
|
||||
7:12
|
||||
pool and make sure you deposit
|
||||
7:15
|
||||
all now one mistake that I've made a
|
||||
7:18
|
||||
couple of times is do not click deposit
|
||||
7:20
|
||||
runes because it will deposit your fire
|
||||
7:23
|
||||
and water runes and um well you'll be
|
||||
7:26
|
||||
screwed until the next round in terms of
|
||||
7:29
|
||||
making a combination R so make sure to
|
||||
7:32
|
||||
kind of use the method that I'm using um
|
||||
7:35
|
||||
just to avoid
|
||||
7:49
|
||||
that fill up your
|
||||
7:51
|
||||
pouch run back in looks like we have
|
||||
7:55
|
||||
Earth Rune Elemental alter let's run
|
||||
7:58
|
||||
back in there run up to the top cast our
|
||||
8:02
|
||||
magic and view use the runes on the
|
||||
8:05
|
||||
alter empty them use them again and run
|
||||
8:16
|
||||
out power up the guardian run back over
|
||||
8:20
|
||||
here use the lava runes on the deposit
|
||||
8:23
|
||||
pool hold
|
||||
8:25
|
||||
four and go back to
|
||||
8:28
|
||||
crafting pretty simple method you're
|
||||
8:31
|
||||
just alternating in between and that's
|
||||
8:34
|
||||
why I like to kind of time things the
|
||||
8:36
|
||||
way that I have it because you're going
|
||||
8:38
|
||||
to maximize your points as you can see
|
||||
8:39
|
||||
I'm already at
|
||||
8:40
|
||||
564 Elemental energy points typically if
|
||||
8:45
|
||||
I were to be finishing up crafting this
|
||||
8:47
|
||||
inventory I'd be looking at the the
|
||||
8:49
|
||||
blood Rune um in order to at least get
|
||||
8:52
|
||||
one catalytic energy Point per game and
|
||||
8:55
|
||||
the reason being is you can only get a
|
||||
8:58
|
||||
Max of a th000 Elemental energy points
|
||||
9:01
|
||||
um we're going to hit that easily in
|
||||
9:03
|
||||
this
|
||||
9:05
|
||||
game so we're all
|
||||
9:08
|
||||
full we will run back over to the water
|
||||
9:11
|
||||
alter it just opened up run up to the
|
||||
9:15
|
||||
top cast our magic and view use our fire
|
||||
9:19
|
||||
runes empty our pouch use our fire runes
|
||||
9:23
|
||||
and run
|
||||
9:27
|
||||
out power up the
|
||||
9:31
|
||||
Guardian run back over deposit our steam
|
||||
9:34
|
||||
room steam runes into the pool click
|
||||
9:37
|
||||
number four and then run into the
|
||||
9:58
|
||||
portal
|
||||
10:11
|
||||
all righty I'm going to go ahead and
|
||||
10:12
|
||||
just hop into the death alter to go
|
||||
10:15
|
||||
ahead and gain myself a point here you
|
||||
10:18
|
||||
don't have to cast The Magic and
|
||||
10:23
|
||||
bu because you will not be making
|
||||
10:26
|
||||
combination runes let's power up the
|
||||
10:28
|
||||
guardian
|
||||
10:31
|
||||
run back over here deposit our death
|
||||
10:36
|
||||
runes and get back to
|
||||
10:58
|
||||
crafting
|
||||
11:20
|
||||
now that we're done crafting we'll run
|
||||
11:21
|
||||
over to the
|
||||
11:23
|
||||
elemental alter run up to the top on the
|
||||
11:26
|
||||
way up let's cast our magic and view use
|
||||
11:29
|
||||
our runes on the alter rinse and
|
||||
11:33
|
||||
repeat and then run
|
||||
11:38
|
||||
out we'll power up the
|
||||
11:42
|
||||
guardian run back down
|
||||
11:45
|
||||
here deposit our lava
|
||||
11:48
|
||||
runes and enter the
|
||||
11:57
|
||||
portal
|
||||
12:05
|
||||
now as you can see I'm already at 945
|
||||
12:07
|
||||
points I'm going to go ahead and cat um
|
||||
12:10
|
||||
I'm going to go ahead and do catalytic
|
||||
12:13
|
||||
for the rest of the time and the reason
|
||||
12:15
|
||||
being is I have a 45% chance of rolling
|
||||
12:19
|
||||
that last point I'm going to take the uh
|
||||
12:23
|
||||
the chance that I go ahead and roll that
|
||||
12:26
|
||||
looks like we're not going to get that
|
||||
12:27
|
||||
alter so we'll run into the
|
||||
12:31
|
||||
nature alter but just to max out your
|
||||
12:34
|
||||
points again like the closest you the
|
||||
12:36
|
||||
closer you can get to a th000 the better
|
||||
12:40
|
||||
you may not even get there if you're um
|
||||
12:43
|
||||
if you don't have the Colossal pouch but
|
||||
12:47
|
||||
nonetheless like I
|
||||
12:57
|
||||
said now now we're at 92% I don't think
|
||||
13:00
|
||||
we're going to be able to craft an
|
||||
13:01
|
||||
entire
|
||||
13:04
|
||||
inventory before uh the time goes up so
|
||||
13:07
|
||||
I'm just going to go ahead and see if I
|
||||
13:08
|
||||
can maybe get half an inventory um in
|
||||
13:11
|
||||
this in this game just so I can make
|
||||
13:13
|
||||
sure to deposit them uh and get the
|
||||
13:17
|
||||
points out of it that's probably good
|
||||
13:20
|
||||
let's run into the Earth
|
||||
13:26
|
||||
alter you want to try to get all those
|
||||
13:28
|
||||
deposit Ed within about 5 Seconds of the
|
||||
13:31
|
||||
game hitting
|
||||
13:33
|
||||
100% so we got 38 that should guarantee
|
||||
13:36
|
||||
us that third
|
||||
13:38
|
||||
point for uh catalytic energy run up
|
||||
13:42
|
||||
power up the
|
||||
13:46
|
||||
guardian deposit our runes into this
|
||||
13:48
|
||||
pool
|
||||
13:54
|
||||
here and get ready to hit the next game
|
||||
13:58
|
||||
now do not exit this until the game is
|
||||
14:01
|
||||
completed and you see an experience drop
|
||||
14:03
|
||||
do not do it or you will not get any
|
||||
14:07
|
||||
points all righty we got the experience
|
||||
14:09
|
||||
drop let's go ahead and quick pass
|
||||
14:11
|
||||
through the barrier run over to our
|
||||
Reset the Minigame
|
||||
14:14
|
||||
bank grab a binding necklace as you can
|
||||
14:18
|
||||
see we only have one charge left on the
|
||||
14:20
|
||||
one we're wearing so go ahead and
|
||||
14:22
|
||||
destroy
|
||||
14:25
|
||||
it and you see we have a fresh one ready
|
||||
14:28
|
||||
to go for the next game
|
||||
14:31
|
||||
now the barrier becomes able to enter at
|
||||
14:35
|
||||
30 so go ahead and spam click at
|
||||
14:38
|
||||
30 and we get let
|
||||
14:41
|
||||
in run over
|
||||
14:44
|
||||
here back down into where we're going to
|
||||
14:47
|
||||
start our next
|
||||
14:50
|
||||
match cast NPC contact to the dark
|
||||
14:57
|
||||
mage yes I would like to repair my
|
||||
15:01
|
||||
pouches awesome super fun good
|
||||
15:04
|
||||
stuff and we're going to go ahead and
|
||||
Outro
|
||||
15:06
|
||||
start the next game if you guys found
|
||||
15:08
|
||||
this helpful at all please let me know
|
||||
15:10
|
||||
down in the comments section um I really
|
||||
15:12
|
||||
appreciate you guys tuning in and I hope
|
||||
15:14
|
||||
this help see you next time
|
||||
108
gotr-wiki-gameplay.txt
Normal file
108
gotr-wiki-gameplay.txt
Normal file
@@ -0,0 +1,108 @@
|
||||
Guardians of the Rift is a non-combat minigame that takes place within the Temple of the Eye. The main goal of the game is to assist The Great Guardian in closing an abyssal rift to the Scar, the most dangerous part of Abyssal Space, by supplying it with guardian stones while protecting it from the abyssal creatures that come through the rift.
|
||||
|
||||
Gameplay
|
||||
Main article: Guardians of the Rift/Strategies
|
||||
|
||||
The objective of the minigame is to allow the Great Guardian to charge up enough power to close the rift where Abyssal creatures are coming through.
|
||||
An overview of the Temple of the Eye, where the minigame takes place.
|
||||
|
||||
Players will need to do the following throughout the battle:
|
||||
|
||||
Imbue essence acquired during the minigame at runic altars to power up the Great Guardian
|
||||
Create elemental and catalytic guardians to do battle with the incoming Abyssal creatures
|
||||
Create/repair barriers to protect the Great Guardian from Abyssal creatures
|
||||
|
||||
To imbue essence, players must obtain guardian fragments from guardian remains of varying sizes in the Temple. There are three nodes that can be mined off of: guardian parts, guardian remains, and large guardian remains. Parts and normal remains can be found in the edges of the temple area, while the larger remains are past some rubble in the mid-east of the Temple area, requiring level 56 Agility (not boostable) to access.
|
||||
|
||||
The huge guardian remains, which give guardian essence when mined, are found at the mid-western area of the temple. Though normally inaccessible, portals will occasionally appear that take players there, spawning approximately every 2 minutes. Portals remain active for around 25 seconds.
|
||||
|
||||
The doubling effect of certain mining enhancers—such as Varrock armour (all tiers) and charged celestial rings—will apply when mining for guardian fragments and essence.
|
||||
|
||||
Imbuing essence
|
||||
The UI showing the time remaining for the active earth and blood Portal Guardians and the portal to the huge guardian remains, among other things.
|
||||
Creating guardian essence on the workbench. Crafted runes can be deposited into a bank via the Deposit Pool next to it.
|
||||
|
||||
Guardian fragments are converted into guardian essence, which are storable in essence pouches. They are brought to runic altars to be imbued via entering Portal Guardians surrounding the centre of the Temple. Only two portals are active at a time: one elemental and one catalytic. Imbuing guardian essence requires the same Runecraft level as crafting them regularly in the corresponding altar. Note that imbuing on runic altars during the minigame will not give players the rift guardian pet.[1]
|
||||
|
||||
In addition, for every guardian essence imbued, there is a 1/250 chance that players will receive a portal talisman,[2][3] which can be used on the Portal Guardians to take them back to the runic altar they previously used, even if the portal is closed for that altar. These cannot be kept after the game ends, so players should use them whenever possible. Players can right-click "Toggle-talisman" on a Portal Guardian to stop receiving portal talismans of the selected type.
|
||||
|
||||
Once players imbue their essence into either an elemental or catalytic guardian stone, they can return to the Temple and power up the Great Guardian. Each guardian stone will give two energy of the respective type; if crafting combination runes, players will instead receive polyelemental guardian stones, which give three elemental energy when used on the Great Guardian.
|
||||
|
||||
The number of guardian stones required to fully charge up the Great Guardian scales with player count: the Great Guardian must be powered up with 250 guardian stones for each player inside the temple in order to reach 100%.[4] If there are over 20 players, every player beyond the 20th grants a 20% scaling penalty on the charge required to power up the Great Guardian, meaning 200 essence is required for each player after the 20th rather than 250.
|
||||
|
||||
When powering up the Great Guardian, the player's run energy will be restored by 1% for each guardian stone granted to the Guardian. In addition, a small bonus amount is restored based on the player's current special attack energy, ranging from 1% extra with a totally depleted special energy bar up to 11% additional run energy when the special bar is completely full.[5]
|
||||
|
||||
Be aware that players need to have completed certain quests to be able to enter some Portal Guardians:
|
||||
|
||||
Guardian of Cosmic - Lost City
|
||||
Guardian of Law - Troll Stronghold
|
||||
Guardian of Death - Mourning's End Part II
|
||||
Guardian of Blood - Sins of the Father
|
||||
|
||||
Charging cells
|
||||
|
||||
Charged cells are used to create rift guardians and erect barriers. Uncharged cells are obtained from a container near the entry barrier, and are charged in the same way guardian essence is. Players can hold up to ten uncharged cells and have only one charged cell at a time.
|
||||
Barriers and rift guardians protecting the Great Guardian from Abyssal creatures.
|
||||
|
||||
Rift guardians are created with a chisel via the essence piles near the tables at the south, and can either be elemental (east) or catalytic (west). These will follow the elemental/catalytic guides in the outer ring. Only ten rift guardians can be active at any time.
|
||||
|
||||
Barriers are created by using charged cells on the cell tiles at the front-centre. Using increasingly higher tiers of cells in order (ex. medium to strong cells) will also strengthen them. Using lesser charged cells (ex. a strong cell on an overcharged barrier) will instead recharge the barriers by "healing" them. Should a barrier break, the cell tile will need to be repaired, which requires 12 guardian fragments.
|
||||
|
||||
The strength of the cell corresponds to the Runecraft level of the runic altar it is charged in:
|
||||
Standard runes
|
||||
Runecraft Level Type Tier Alignment
|
||||
1 Air Weak Elemental
|
||||
5 Water Medium Elemental
|
||||
9 Earth Strong Elemental
|
||||
14 Fire Overcharged Elemental
|
||||
2 Mind Weak Catalytic
|
||||
20 Body Weak Catalytic
|
||||
27 Cosmic Medium Catalytic
|
||||
35 Chaos Medium Catalytic
|
||||
44 Nature Strong Catalytic
|
||||
54 Law Strong Catalytic
|
||||
65 Death Overcharged Catalytic
|
||||
77 Blood Overcharged Catalytic
|
||||
Combination runes
|
||||
|
||||
Since each combination rune can be made on either of two altars, the cell tier is determined by the elemental altar that's used.
|
||||
Runecraft Level Type Alignment
|
||||
6 Mist Polyelemental
|
||||
10 Dust Polyelemental
|
||||
13 Mud Polyelemental
|
||||
15 Smoke Polyelemental
|
||||
19 Steam Polyelemental
|
||||
23 Lava Polyelemental
|
||||
90 Aether Polycatalytic
|
||||
Gaining energy
|
||||
|
||||
Players can gain energy by either using cells, by using guardian stones on the Great Guardian, or by repairing a barrier. For each stone used, players will get 5 Runecraft experience and two energy in elemental or catalytic depending on the type of essence used; if crafting combination runes, players will get a polyelemental guardian stone instead, which gives three elemental energy. If players use twelve fragments on repairing a cell tile they will gain 25 energy in both types.
|
||||
|
||||
Each cell can be used in one of four ways: to build a barrier, to recharge a barrier, to strengthen a barrier (one tier at a time), or to create a guardian. Higher level cells give more energy, except for when building barriers, which always gives 2 energy in both types. Using cells on barriers gives equal energy in elemental and catalytic, whereas creating a guardian gives energy only in the energy type matching the guardian they created. Creating a guardian awards 2x+1 energy, where x is the energy that would be awarded for strengthening a barrier with the same cell.
|
||||
Tier Barrier Guardian
|
||||
Placing Strengthening Recharging Health restored XP Creating[n 1] XP
|
||||
Weak 17 N/A 2 10 Runecraft 30 6 Runecraft 30
|
||||
Crafting 80
|
||||
Medium 20 7 5 25 Runecraft 100 15 Runecraft 100
|
||||
Crafting 80
|
||||
Strong 24 13 9 50 Runecraft 180 27 Runecraft 180
|
||||
Crafting 80
|
||||
Overcharged 30 22 15 100 Runecraft 250 45 Runecraft 250
|
||||
Crafting 80
|
||||
|
||||
Creating rift guardians only yields energy in either elemental or catalytic, while other uses of cells yield equal energy in both.
|
||||
|
||||
Phases of the battle
|
||||
Charged with enough power, the Great Guardian closes the rift.
|
||||
|
||||
The battle is split into three phases:
|
||||
|
||||
The first phase is short, giving players two minutes to prepare by obtaining guardian essence and uncharged cells to create and power up guardians. Initially, there are some weak cells used in the beginning stages of the battle that should be used to erect barriers.
|
||||
|
||||
After the two minutes pass, abyssal creatures will begin spawning from the rift, consisting of mostly abyssal leeches and guardians. There will be a few walkers among them. The monsters will attempt to attack the Great Guardian, with their attacks draining its energy. They will also attack barriers and rift guardians, although they only retaliate back for the latter, not actively targeting them. Should the Great Guardian's energy level reach 0%, the encounter will fail.
|
||||
|
||||
When the guardian reaches 60% charge, the temple will rumble as the rift glows more intensely, damaging all active barriers by 50 health (in a mass) and spewing out more guardians and walkers compared to leeches. Players should heal the barriers and create more rift guardians if necessary.
|
||||
|
||||
When the guardian reaches 100% charge, it will seal the rift. All abyssal creatures and rift guardians will automatically die once this occurs and there is a brief period of respite for players inside to leave or reposition themselves.
|
||||
|
||||
At the beginning of a new game, all guardian fragments, essence, and portal talismans acquired during the game will be removed from the player's possession. This also applies when leaving the minigame area.
|
||||
201
src/main/java/ee/futur/vorkath/VorkathHelperConfig.java
Normal file
201
src/main/java/ee/futur/vorkath/VorkathHelperConfig.java
Normal file
@@ -0,0 +1,201 @@
|
||||
package ee.futur.vorkath;
|
||||
|
||||
import ee.futur.vorkath.enums.*;
|
||||
import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
import net.runelite.client.config.Range;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
import static ee.futur.vorkath.enums.Crossbow.DRAGON_HUNTER_CROSSBOW;
|
||||
|
||||
@ConfigGroup("AutoVorkath")
|
||||
public interface AutoVorkathConfig extends Config {
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "crossbow",
|
||||
name = "Crossbow",
|
||||
description = "Choose your crossbow",
|
||||
position = 0
|
||||
)
|
||||
default Crossbow CROSSBOW() {
|
||||
return DRAGON_HUNTER_CROSSBOW;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "slayersStaff",
|
||||
name = "Slayers Staff",
|
||||
description = "Choose your slayers staff",
|
||||
position = 1
|
||||
)
|
||||
default Staff SLAYERSTAFF() {
|
||||
return Staff.SLAYER_STAFF;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "teleport",
|
||||
name = "Teleport",
|
||||
description = "Choose your teleport",
|
||||
position = 2
|
||||
)
|
||||
default Teleport TELEPORT() {
|
||||
return Teleport.CONSTRUCT_CAPE_T;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "portal",
|
||||
name = "Portal",
|
||||
description = "What Portal to use to teleport to Lunar Isle.",
|
||||
position = 3
|
||||
)
|
||||
default Portal PORTAL() {
|
||||
return Portal.PORTAL_NEXUS;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "rigour",
|
||||
name = "Rigour",
|
||||
description = "Activate Rigour?",
|
||||
position = 4
|
||||
)
|
||||
default boolean ACTIVATERIGOUR() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "switchBolts",
|
||||
name = "Switch Bolts",
|
||||
description = "Change to Diamond Bolts (e) at 20% health?",
|
||||
position = 5
|
||||
)
|
||||
default boolean SWITCHBOLTS() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "rangePotion",
|
||||
name = "Ranging Potion",
|
||||
description = "What Ranging potion to use?",
|
||||
position = 6
|
||||
)
|
||||
default RangePotion RANGEPOTION() {
|
||||
return RangePotion.DIVINE_RANGING_POTION;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "prayerPotion",
|
||||
name = "Prayer Potion",
|
||||
description = "What Prayer potion to use?",
|
||||
position = 7
|
||||
)
|
||||
default PrayerPotion PRAYERPOTION() {
|
||||
return PrayerPotion.PRAYER;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "antiFirePotion",
|
||||
name = "Antifire Potion",
|
||||
description = "What Antifire potion to use?",
|
||||
position = 8
|
||||
)
|
||||
default Antifire ANTIFIRE() {
|
||||
return Antifire.EXTENDED_SUPER_ANTIFIRE;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "runePouch",
|
||||
name = "Rune Pouch",
|
||||
description = "What Rune Pouch to use?",
|
||||
position = 9
|
||||
)
|
||||
default RunePouch RUNEPOUCH() {
|
||||
return RunePouch.RUNE_POUCH;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "foodAmount",
|
||||
name = "Food Amount",
|
||||
description = "MAX FOOD : MIN FOOD",
|
||||
position = 10
|
||||
)
|
||||
default Dimension FOODAMOUNT() {
|
||||
return new Dimension(16, 15);
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "poolDrinkat",
|
||||
name = "Ornate Pool Drink",
|
||||
description = "HEALTH : PRAYER",
|
||||
position = 11
|
||||
)
|
||||
default Dimension POOLDRINK() {
|
||||
return new Dimension(90, 90);
|
||||
}
|
||||
|
||||
@Range(min = 40, max = 90)
|
||||
@ConfigItem(
|
||||
keyName = "eatat",
|
||||
name = "Eat At?",
|
||||
description = "Eat at what health?",
|
||||
position = 12
|
||||
)
|
||||
default int EATAT() {
|
||||
return 75;
|
||||
}
|
||||
|
||||
@Range(min = 40, max = 90)
|
||||
@ConfigItem(
|
||||
keyName = "drinkAt",
|
||||
name = "Drink Prayer At?",
|
||||
description = "Drink at what prayer?",
|
||||
position = 13
|
||||
)
|
||||
default int DRINKPRAYERAT() {
|
||||
return 70;
|
||||
}
|
||||
|
||||
@Range(
|
||||
min = 1,
|
||||
max = 2000
|
||||
)
|
||||
@ConfigItem(
|
||||
keyName = "sellAt",
|
||||
name = "Sell At?",
|
||||
description = "Sell items at what kill?",
|
||||
position = 14
|
||||
)
|
||||
default int SELLAT() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "mule",
|
||||
name = "Mule GP?",
|
||||
description = "Trade GP after selling? (TARGET MUST BE IN GE)",
|
||||
position = 15
|
||||
)
|
||||
default boolean MULE() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "muleName",
|
||||
name = "Mule Name",
|
||||
description = "Name of player in GE to trade.",
|
||||
position = 16
|
||||
)
|
||||
default String MULENAME() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "food",
|
||||
name = "Food",
|
||||
description = "What food to use? (NOT MANTA RAY!)",
|
||||
position = 17
|
||||
)
|
||||
default String FOOD() {
|
||||
return "Shark";
|
||||
}
|
||||
}
|
||||
59
src/main/java/ee/futur/vorkath/VorkathHelperOverlay.java
Normal file
59
src/main/java/ee/futur/vorkath/VorkathHelperOverlay.java
Normal file
@@ -0,0 +1,59 @@
|
||||
package ee.futur.vorkath;
|
||||
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.OverlayLayer;
|
||||
import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.components.LineComponent;
|
||||
import net.runelite.client.ui.overlay.components.PanelComponent;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.awt.*;
|
||||
|
||||
public class AutoVorkathOverlay extends Overlay {
|
||||
private final PanelComponent panelComponent = new PanelComponent();
|
||||
private final PanelComponent slPanel = new PanelComponent();
|
||||
private final Client client;
|
||||
private final VorkathHelperPlugin plugin;
|
||||
|
||||
@Inject
|
||||
private AutoVorkathOverlay(Client client, VorkathHelperPlugin plugin) {
|
||||
this.client = client;
|
||||
this.plugin = plugin;
|
||||
setPosition(OverlayPosition.BOTTOM_LEFT);
|
||||
setLayer(OverlayLayer.ABOVE_SCENE);
|
||||
setDragTargetable(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dimension render(Graphics2D graphics) {
|
||||
panelComponent.getChildren().clear();
|
||||
slPanel.getChildren().clear();
|
||||
|
||||
LineComponent state = buildLine("State: ", plugin.getBotState().toString());
|
||||
LineComponent tickDelay = buildLine("Tick Delay: ", String.valueOf(plugin.getTickDelay()));
|
||||
LineComponent killCount = buildLine("Kill Count: ", String.valueOf(plugin.getKillCount()));
|
||||
|
||||
panelComponent.getChildren().add(state);
|
||||
panelComponent.getChildren().add(tickDelay);
|
||||
panelComponent.getChildren().add(killCount);
|
||||
|
||||
return panelComponent.render(graphics);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a line component with the given left and right text
|
||||
*
|
||||
* @param left
|
||||
* @param right
|
||||
* @return Returns a built line component with White left text and Yellow right text
|
||||
*/
|
||||
private LineComponent buildLine(String left, String right) {
|
||||
return LineComponent.builder()
|
||||
.left(left)
|
||||
.right(right)
|
||||
.leftColor(Color.WHITE)
|
||||
.rightColor(Color.YELLOW)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
305
src/main/java/ee/futur/vorkath/VorkathHelperPlugin.java
Normal file
305
src/main/java/ee/futur/vorkath/VorkathHelperPlugin.java
Normal file
@@ -0,0 +1,305 @@
|
||||
package ee.futur.vorkath;
|
||||
|
||||
import com.google.inject.Provides;
|
||||
import ee.futur.baseapi.collections.NPCs;
|
||||
import ee.futur.baseapi.collections.TileObjects;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.*;
|
||||
import net.runelite.api.coords.WorldArea;
|
||||
import net.runelite.api.coords.WorldPoint;
|
||||
import net.runelite.api.events.*;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.events.NpcLootReceived;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.game.ItemStack;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.*;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "<html><font color=\"#9ddbff\">[JR]</font> Vorkath Helper </html>",
|
||||
description = "Vorkath helper - highlights important mechanics and displays state information",
|
||||
tags = {"vorkath", "helper", "boss"},
|
||||
enabledByDefault = false
|
||||
)
|
||||
public class AutoVorkathPlugin extends Plugin {
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private OverlayManager overlayManager;
|
||||
|
||||
@Inject
|
||||
private AutoVorkathOverlay autoVorkathOverlay;
|
||||
|
||||
@Inject
|
||||
private VorkathSceneOverlay vorkathSceneOverlay;
|
||||
|
||||
@Inject
|
||||
private VorkathHelperConfig config;
|
||||
|
||||
@Inject
|
||||
private ItemManager itemManager;
|
||||
|
||||
@Getter
|
||||
private State botState = State.NONE;
|
||||
|
||||
@Getter
|
||||
private int tickDelay = 0;
|
||||
|
||||
@Getter
|
||||
private int killCount = 0;
|
||||
|
||||
@Getter
|
||||
private Set<WorldPoint> acidPools = new HashSet<>();
|
||||
|
||||
@Getter
|
||||
private WorldPoint redBallLocation = new WorldPoint(0, 0, 0);
|
||||
|
||||
@Getter
|
||||
private WorldPoint safeTile = null;
|
||||
|
||||
@Getter
|
||||
private NPC spawnNpc = null;
|
||||
|
||||
private final int rangeProjectileId = 1477;
|
||||
private final int magicProjectileId = 393;
|
||||
private final int purpleProjectileId = 1471;
|
||||
private final int blueProjectileId = 1479;
|
||||
private final int redProjectileId = 1481;
|
||||
private final int acidProjectileId = 1483;
|
||||
private final int acidRedProjectileId = 1482;
|
||||
private final int whiteProjectileId = 395;
|
||||
|
||||
private final WorldArea bankArea = new WorldArea(2096, 3911, 20, 11, 0);
|
||||
|
||||
public enum State {
|
||||
FIGHTING,
|
||||
ACID,
|
||||
SPAWN,
|
||||
RED_BALL,
|
||||
LOOTING,
|
||||
NONE
|
||||
}
|
||||
|
||||
@Provides
|
||||
VorkathHelperConfig getConfig(ConfigManager configManager) {
|
||||
return configManager.getConfig(VorkathHelperConfig.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startUp() {
|
||||
System.out.println("Vorkath Helper Plugin Activated");
|
||||
botState = State.NONE;
|
||||
overlayManager.add(autoVorkathOverlay);
|
||||
overlayManager.add(vorkathSceneOverlay);
|
||||
vorkathSceneOverlay.setPlugin(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown() {
|
||||
System.out.println("Vorkath Helper Plugin Deactivated");
|
||||
botState = State.NONE;
|
||||
killCount = 0;
|
||||
acidPools.clear();
|
||||
redBallLocation = new WorldPoint(0, 0, 0);
|
||||
safeTile = null;
|
||||
spawnNpc = null;
|
||||
overlayManager.remove(autoVorkathOverlay);
|
||||
overlayManager.remove(vorkathSceneOverlay);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage e) {
|
||||
if (e.getMessage().contains("Your Vorkath kill count is:")) {
|
||||
// Reset state after kill
|
||||
changeStateTo(State.NONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcLootReceived(NpcLootReceived event) {
|
||||
List<ItemStack> items = event.getItems();
|
||||
for (ItemStack item : items) {
|
||||
if (item != null) {
|
||||
ItemComposition comp = itemManager.getItemComposition(item.getId());
|
||||
// Track loot for information purposes
|
||||
}
|
||||
}
|
||||
killCount++;
|
||||
changeStateTo(State.LOOTING);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcDespawned(NpcDespawned e) {
|
||||
if (e.getNpc().getName() != null && e.getNpc().getName().equals("Zombified Spawn")) {
|
||||
spawnNpc = null;
|
||||
changeStateTo(State.FIGHTING);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onProjectileMoved(ProjectileMoved e) {
|
||||
int projectileId = e.getProjectile().getId();
|
||||
|
||||
if (projectileId == acidProjectileId || projectileId == acidRedProjectileId) {
|
||||
WorldPoint acidLocation = WorldPoint.fromLocal(client, e.getPosition());
|
||||
acidPools.add(acidLocation);
|
||||
changeStateTo(State.ACID);
|
||||
updateSafeTiles();
|
||||
} else if (projectileId == whiteProjectileId) {
|
||||
changeStateTo(State.SPAWN);
|
||||
updateSpawnNpc();
|
||||
} else if (projectileId == redProjectileId) {
|
||||
redBallLocation = WorldPoint.fromLocal(client, e.getPosition());
|
||||
changeStateTo(State.RED_BALL);
|
||||
} else if (projectileId == rangeProjectileId || projectileId == magicProjectileId ||
|
||||
projectileId == purpleProjectileId || projectileId == blueProjectileId) {
|
||||
// Regular attack - continue fighting
|
||||
if (botState == State.NONE || botState == State.FIGHTING) {
|
||||
changeStateTo(State.FIGHTING);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameObjectDespawned(GameObjectDespawned e) {
|
||||
if (e.getGameObject().getId() == 32000) {
|
||||
// Acid pools cleared
|
||||
acidPools.clear();
|
||||
safeTile = null;
|
||||
changeStateTo(State.FIGHTING);
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick e) {
|
||||
if (tickDelay > 0) {
|
||||
tickDelay--;
|
||||
return;
|
||||
}
|
||||
|
||||
// Update spawn NPC if in spawn state
|
||||
if (botState == State.SPAWN) {
|
||||
updateSpawnNpc();
|
||||
}
|
||||
|
||||
// Update safe tiles if in acid state
|
||||
if (botState == State.ACID) {
|
||||
updateAcidPools();
|
||||
updateSafeTiles();
|
||||
}
|
||||
|
||||
// Check if we're in Vorkath area and update state accordingly
|
||||
if (inVorkathArea()) {
|
||||
if (botState == State.NONE || botState == State.LOOTING) {
|
||||
// Check if there are acid pools
|
||||
if (!acidPools.isEmpty()) {
|
||||
changeStateTo(State.ACID);
|
||||
updateSafeTiles();
|
||||
} else {
|
||||
changeStateTo(State.FIGHTING);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// Not in Vorkath area
|
||||
if (botState != State.NONE && botState != State.LOOTING) {
|
||||
changeStateTo(State.NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updateAcidPools() {
|
||||
acidPools.clear();
|
||||
|
||||
// Find acid pool objects
|
||||
TileObjects.search().withId(ObjectID.ACID_POOL_32000).result().forEach(tileObject -> {
|
||||
acidPools.add(tileObject.getWorldLocation());
|
||||
});
|
||||
|
||||
TileObjects.search().withId(ObjectID.ACID_POOL).result().forEach(tileObject -> {
|
||||
acidPools.add(tileObject.getWorldLocation());
|
||||
});
|
||||
|
||||
TileObjects.search().withId(ObjectID.ACID_POOL_37991).result().forEach(tileObject -> {
|
||||
acidPools.add(tileObject.getWorldLocation());
|
||||
});
|
||||
}
|
||||
|
||||
private void updateSafeTiles() {
|
||||
if (!inVorkathArea() || acidPools.isEmpty()) {
|
||||
safeTile = null;
|
||||
return;
|
||||
}
|
||||
|
||||
List<NPC> vorkathList = NPCs.search().nameContains("Vorkath").result();
|
||||
if (vorkathList.isEmpty()) {
|
||||
safeTile = null;
|
||||
return;
|
||||
}
|
||||
|
||||
NPC vorkath = vorkathList.get(0);
|
||||
WorldPoint vorkathLocation = vorkath.getWorldLocation();
|
||||
WorldPoint swPoint = new WorldPoint(vorkathLocation.getX() + 1, vorkathLocation.getY() - 8, 0);
|
||||
WorldArea wooxWalkArea = new WorldArea(swPoint, 5, 1);
|
||||
|
||||
WorldPoint playerLocation = client.getLocalPlayer().getWorldLocation();
|
||||
WorldPoint closestSafeTile = null;
|
||||
int closestDistance = Integer.MAX_VALUE;
|
||||
|
||||
// Check each tile in the woox walk area
|
||||
for (int x = 0; x < 5; x++) {
|
||||
for (int y = 0; y < 1; y++) {
|
||||
WorldPoint tile = new WorldPoint(swPoint.getX() + x, swPoint.getY() + y, swPoint.getPlane());
|
||||
|
||||
if (isTileSafe(tile)) {
|
||||
int distance = Math.abs(tile.getX() - playerLocation.getX());
|
||||
if (distance < closestDistance) {
|
||||
closestDistance = distance;
|
||||
closestSafeTile = tile;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
safeTile = closestSafeTile;
|
||||
}
|
||||
|
||||
private boolean isTileSafe(WorldPoint tile) {
|
||||
// Check if tile and tiles above it are safe from acid
|
||||
if (acidPools.contains(tile)) {
|
||||
return false;
|
||||
}
|
||||
if (acidPools.contains(new WorldPoint(tile.getX(), tile.getY() + 1, tile.getPlane()))) {
|
||||
return false;
|
||||
}
|
||||
if (acidPools.contains(new WorldPoint(tile.getX(), tile.getY() + 2, tile.getPlane()))) {
|
||||
return false;
|
||||
}
|
||||
if (acidPools.contains(new WorldPoint(tile.getX(), tile.getY() + 3, tile.getPlane()))) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void updateSpawnNpc() {
|
||||
List<NPC> spawnList = NPCs.search().nameContains("Zombified Spawn").result();
|
||||
if (!spawnList.isEmpty()) {
|
||||
spawnNpc = spawnList.get(0);
|
||||
} else {
|
||||
spawnNpc = null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean inVorkathArea() {
|
||||
return !NPCs.search().nameContains("Vorkath").result().isEmpty() && client.isInInstancedRegion();
|
||||
}
|
||||
|
||||
private void changeStateTo(State stateName) {
|
||||
botState = stateName;
|
||||
}
|
||||
}
|
||||
29
src/main/java/ee/futur/vorkath/enums/Antifire.java
Normal file
29
src/main/java/ee/futur/vorkath/enums/Antifire.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum Antifire {
|
||||
EXTENDED_SUPER_ANTIFIRE("Extended super antifire", 6),
|
||||
EXTENDED_SUPER_ANTIFIRE_MIX("Extended super antifire mix", 6),
|
||||
EXTENDED_ANTIFIRE("Extended antifire", 12),
|
||||
EXTENDED_ANTIFIRE_MIX("Extended antifire mix", 12),
|
||||
SUPER_ANTIFIRE_POTION("Super antifire potion", 3),
|
||||
SUPER_ANTIFIRE_MIX("Super antifire mix", 3),
|
||||
ANTIFIRE_POTION("Antifire potion", 6),
|
||||
ANTIFIRE_MIX("Antifire mix", 6);
|
||||
|
||||
private final String antiFireName;
|
||||
private final int time;
|
||||
|
||||
public int time() {
|
||||
return Double.valueOf((time * .3) * 60 * 1000).intValue(); // time to drink ( 30% of the antifire effect )
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.antiFireName;
|
||||
}
|
||||
}
|
||||
19
src/main/java/ee/futur/vorkath/enums/Crossbow.java
Normal file
19
src/main/java/ee/futur/vorkath/enums/Crossbow.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum Crossbow {
|
||||
DRAGON_HUNTER_CROSSBOW("Dragon hunter crossbow"),
|
||||
RUNE_CROSSBOW("Rune crossbow"),
|
||||
DRAGON_CROSSBOW("Dragon crossbow");
|
||||
|
||||
private final String crossbowName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return crossbowName;
|
||||
}
|
||||
}
|
||||
23
src/main/java/ee/futur/vorkath/enums/Portal.java
Normal file
23
src/main/java/ee/futur/vorkath/enums/Portal.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum Portal {
|
||||
PORTAL_NEXUS("Portal Nexus", "Lunar Isle"),
|
||||
LUNAR_ISLE_PORTAL("Lunar Isle Portal", "Enter");
|
||||
|
||||
private final String portalName;
|
||||
private final String portalAction;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return portalName;
|
||||
}
|
||||
|
||||
public String action() {
|
||||
return portalAction;
|
||||
}
|
||||
}
|
||||
18
src/main/java/ee/futur/vorkath/enums/PrayerPotion.java
Normal file
18
src/main/java/ee/futur/vorkath/enums/PrayerPotion.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum PrayerPotion {
|
||||
PRAYER("Prayer potion"),
|
||||
SUPER_RESTORE("Super restore");
|
||||
|
||||
private final String potionName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return potionName;
|
||||
}
|
||||
}
|
||||
24
src/main/java/ee/futur/vorkath/enums/RangePotion.java
Normal file
24
src/main/java/ee/futur/vorkath/enums/RangePotion.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum RangePotion {
|
||||
DIVINE_RANGING_POTION("Divine ranging potion", 5),
|
||||
DIVINE_BASTION_POTION("Divine bastion potion", 5),
|
||||
RANGING_POTION("Ranging potion", 3);
|
||||
|
||||
private final String potionName;
|
||||
private final int time;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return potionName;
|
||||
}
|
||||
|
||||
public int time() {
|
||||
return (int) ((time * 0.3) * 60 * 1000); // time to drink ( 30% of the Range effect )
|
||||
}
|
||||
}
|
||||
18
src/main/java/ee/futur/vorkath/enums/RunePouch.java
Normal file
18
src/main/java/ee/futur/vorkath/enums/RunePouch.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum RunePouch {
|
||||
RUNE_POUCH("Rune pouch"),
|
||||
DIVINE_RUNE_POUCH("Divine rune pouch");
|
||||
|
||||
private final String runePouchName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return runePouchName;
|
||||
}
|
||||
}
|
||||
18
src/main/java/ee/futur/vorkath/enums/Staff.java
Normal file
18
src/main/java/ee/futur/vorkath/enums/Staff.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum Staff {
|
||||
SLAYER_STAFF("Slayer's staff"),
|
||||
SLAYER_STAFF_E("Slayer's staff (e)");
|
||||
|
||||
private final String staffName;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return staffName;
|
||||
}
|
||||
}
|
||||
24
src/main/java/ee/futur/vorkath/enums/Teleport.java
Normal file
24
src/main/java/ee/futur/vorkath/enums/Teleport.java
Normal file
@@ -0,0 +1,24 @@
|
||||
package ee.futur.vorkath.enums;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum Teleport {
|
||||
CONSTRUCT_CAPE_T("Construct. cape(t)", "Tele to POH"),
|
||||
CONSTRUCT_CAPE("Construct. cape", "Tele to POH"),
|
||||
HOUSE_TAB("Teleport to house", "Break");
|
||||
|
||||
private final String teleportName;
|
||||
private final String action;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return teleportName;
|
||||
}
|
||||
|
||||
public String action() {
|
||||
return action;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user