This commit is contained in:
2025-10-12 22:41:10 +03:00
parent ce480a1185
commit 128173339e
89 changed files with 12846 additions and 72 deletions

View File

@@ -0,0 +1,45 @@
package ee.futur.gotr.data;
import lombok.Getter;
@Getter
public enum Altar {
AIR(43701, Constants.AIR_SPRITE),
MIND(43705, Constants.MIND_SPRITE),
WATER(43702, Constants.WATER_SPRITE),
EARTH(43703, Constants.EARTH_SPRITE),
FIRE(43704, Constants.FIRE_SPRITE),
BODY(43709, Constants.BODY_SPRITE),
COSMIC(43710, Constants.COSMIC_SPRITE),
CHAOS(43706, Constants.CHAOS_SPRITE),
NATURE(43711, Constants.NATURE_SPRITE),
LAW(43712, Constants.LAW_SPRITE),
DEATH(43707, Constants.DEATH_SPRITE),
BLOOD(43708, Constants.BLOOD_SPRITE);
final int id;
final int spriteId;
Altar(int id, int spriteId) {
this.id = id;
this.spriteId = spriteId;
}
public static Altar getAltarBySpriteId(int spriteId) {
for (Altar altar : Altar.values()) {
if (altar.getSpriteId() == spriteId) {
return altar;
}
}
return null;
}
public static Altar getAltarByObjectId(int id) {
for (Altar altar : Altar.values()) {
if (altar.getId() == id) {
return altar;
}
}
return null;
}
}

View File

@@ -0,0 +1,38 @@
package ee.futur.gotr.data;
import net.runelite.api.ItemID;
import net.runelite.api.ObjectID;
public class CellMapper {
public static int GetCellTier(int cellID) {
switch (cellID) {
case ItemID.WEAK_CELL:
return 1;
case ItemID.MEDIUM_CELL:
return 2;
case ItemID.STRONG_CELL:
return 3;
case ItemID.OVERCHARGED_CELL:
return 4;
default:
return -1;
}
}
public static int GetShieldTier(int shieldID) {
switch (shieldID) {
case ObjectID.INACTIVE_CELL_TILE:
return 0;
case ObjectID.WEAK_CELL_TILE:
return 1;
case ObjectID.MEDIUM_CELL_TILE:
return 2;
case ObjectID.STRONG_CELL_TILE:
return 3;
case ObjectID.OVERPOWERED_CELL_TILE:
return 4;
default:
return -1;
}
}
}

View File

@@ -0,0 +1,74 @@
package ee.futur.gotr.data;
public class Constants {
//Locations
public static final int OUTSIDE_BARRIER_Y = 9482;
public static final int LARGE_MINE_X = 3637;
public static final int HUGE_MINE_X = 3592;
// Game Object IDs
public static final int BARRIER_BUSY_ID = 43849;
public static final int BARRIER_READY_ID = 43700;
public static final int ACTIVE_ALTAR = 9363;
// Widget IDs
public static final int PARENT_WIDGET = 48889857;
public static final int WIDGET_POWER_PC = 48889874;
public static final int MAIN_TIMER = 48889861;
public static final int ELEMENTAL_ENERGY_COUNTER = 48889878;
public static final int CATALYTIC_ENERGY_COUNTER = 48889878;
public static final int GUARDIANS_ALIVE_COUNTER = 48889881;
public static final int PORTAL_TIMER = 48889884;
public static final int WAITING_CATALYTIC_INDICATOR_SPRITE = 4355;
// Widget Text
private static final String OUTSIDE_GUARDED = "It looks like the rift is already being guarded. You must wait until they are done to join.";
private static final String GREAT_GUARDIAN_POWER = "Great Guardian power: ";
// Chat text
public static final String ENTER_ALTAR = "You step through the rift";
public static final String EXIT_ALTAR = "You step through the portal and find yourself back in the temple.";
public static final String GAME_STARTED = "Creatures from the Abyss will attack in 120 seconds.";
public static final String ATTACK_STARTED = "Creatures from the Abyss begin their attack!";
public static final String GAME_OVER = "The Great guardian was defeated";
public static final String GAME_WIN = "The Great Guardian successfully closed the rift!";
// Game Objects
public static final String BARRIER = "Barrier";
public static final String WORKBENCH = "Workbench";
public static final String WEAK_CELLS = "Weak cell";
public static final String UNCHARGED_CELLS = "Uncharged cell";
public static final String DEPOSIT_POOL = "Deposit pool";
public static final String GAME_PARTS = "Guardian parts";
public static final String LARGE_REMAINS = "Large guardian remains";
public static final String HUGE_REMAINS = "Huge guardian remains";
public static final String FRAGS = "Guardian fragments";
public static final String ESS = "Guardian essence";
public static final String PORTAL = "Portal";
public static final int PORTAL_SPAWN = 43729;
public static final String CATALYTIC_ENERGY = "Catalytic guardian stone";
public static final String ELEMENTAL_ENERGY = "Elemental guardian stone";
public static final String GREAT_GUARDIAN = "The Great Guardian";
public static final String CRAFT_RUNES = "Craft-rune";
public static final int AIR_SPRITE = 4353;
public static final int MIND_SPRITE = 4354;
public static final int WATER_SPRITE = 4355;
public static final int EARTH_SPRITE = 4356;
public static final int FIRE_SPRITE = 4357;
public static final int BODY_SPRITE = 4358;
public static final int COSMIC_SPRITE = 4359;
public static final int CHAOS_SPRITE = 4360;
public static final int NATURE_SPRITE = 4361;
public static final int LAW_SPRITE = 4362;
public static final int DEATH_SPRITE = 4363;
public static final int BLOOD_SPRITE = 4364;
}

View File

@@ -0,0 +1,24 @@
package ee.futur.gotr.data;
import lombok.Getter;
import lombok.Setter;
public class Pouch {
public Pouch(int id, int maxEssence) {
this.pouchID = id;
this.currentEssence = 0;
this.essenceTotal = maxEssence;
}
@Getter
@Setter
int pouchID;
@Getter
@Setter
int currentEssence;
@Getter
int essenceTotal;
}

View File

@@ -0,0 +1,77 @@
package ee.futur.gotr.data;
/**
* Taken from marcojacobsNL
* https://github.com/marcojacobsNL/runelite-plugins/blob/master/src/main/java/com/koffee/KoffeeUtils/Runes.java
*/
import com.google.common.collect.ImmutableMap;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import java.awt.image.BufferedImage;
import java.util.Map;
import static net.runelite.api.ItemID.*;
public enum Runes {
AIR(1, AIR_RUNE),
WATER(2, WATER_RUNE),
EARTH(3, EARTH_RUNE),
FIRE(4, FIRE_RUNE),
MIND(5, MIND_RUNE),
CHAOS(6, CHAOS_RUNE),
DEATH(7, DEATH_RUNE),
BLOOD(8, BLOOD_RUNE),
COSMIC(9, COSMIC_RUNE),
NATURE(10, NATURE_RUNE),
LAW(11, LAW_RUNE),
BODY(12, BODY_RUNE),
SOUL(13, SOUL_RUNE),
ASTRAL(14, ASTRAL_RUNE),
MIST(15, MIST_RUNE),
MUD(16, MUD_RUNE),
DUST(17, DUST_RUNE),
LAVA(18, LAVA_RUNE),
STEAM(19, STEAM_RUNE),
SMOKE(20, SMOKE_RUNE),
WRATH(21, WRATH_RUNE);
private static final Map<Integer, Runes> runes;
static {
ImmutableMap.Builder<Integer, Runes> builder = new ImmutableMap.Builder<>();
for (Runes rune : values()) {
builder.put(rune.getId(), rune);
}
runes = builder.build();
}
@Getter(AccessLevel.PACKAGE)
private final int id;
@Getter(AccessLevel.PUBLIC)
private final int itemId;
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private BufferedImage image;
Runes(final int id, final int itemId) {
this.id = id;
this.itemId = itemId;
}
public static Runes getRuneVarbit(int runeID) {
return runes.get(runeID);
}
public String getName() {
String name = this.name();
name = name.substring(0, 1) + name.substring(1).toLowerCase();
return name;
}
public static Runes getRune(int varbit) {
return runes.get(varbit);
}
}

View File

@@ -0,0 +1,49 @@
package ee.futur.gotr.data;
import net.runelite.api.QuestState;
import java.util.HashSet;
import java.util.Set;
public class Utility {
public static int getHighestLevelRuneIndex(int level) {
if (level < 35) {
return 7;
} else if (level < 44) {
return 8;
} else if (level < 54) {
return 9;
} else if (level < 65) {
return 10;
} else if (level < 77) {
return 11;
}
return 12;
}
public static Set<Integer> getAccessibleAltars(int level, QuestState city, QuestState troll, QuestState mep, QuestState sotf) {
Set<Integer> accessibleAltars = new HashSet<>();
for (int i = 0; i < getHighestLevelRuneIndex(level); i++) {
Altar[] altars = Altar.values();
if (altars[i] == Altar.COSMIC && city != QuestState.FINISHED) {
continue;
}
if (altars[i] == Altar.LAW && troll != QuestState.FINISHED) {
continue;
}
if (altars[i] == Altar.DEATH && mep != QuestState.FINISHED) {
continue;
}
if (altars[i] == Altar.BLOOD && sotf != QuestState.FINISHED) {
continue;
}
accessibleAltars.add(altars[i].id);
}
return accessibleAltars;
}
}