SkillChallengeClue: Highlight broken Dorgesh-kaan lamps
For the skill challenge clue "Fix a magical lamp in Dorgesh-Kaan.", highlight lamps in the area which are broken. Fixes runelite/runelite#10069 Closes runelite/runelite#10117
This commit is contained in:
@@ -32,7 +32,12 @@ import net.runelite.api.EquipmentInventorySlot;
|
|||||||
import net.runelite.api.Item;
|
import net.runelite.api.Item;
|
||||||
import net.runelite.api.ItemID;
|
import net.runelite.api.ItemID;
|
||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
|
import net.runelite.api.Point;
|
||||||
|
import net.runelite.api.TileObject;
|
||||||
import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
|
import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
|
||||||
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_BORDER_COLOR;
|
||||||
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_FILL_COLOR;
|
||||||
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.CLICKBOX_HOVER_BORDER_COLOR;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.item.AnyRequirementCollection;
|
import net.runelite.client.plugins.cluescrolls.clues.item.AnyRequirementCollection;
|
||||||
import static net.runelite.client.plugins.cluescrolls.clues.item.ItemRequirements.*;
|
import static net.runelite.client.plugins.cluescrolls.clues.item.ItemRequirements.*;
|
||||||
import net.runelite.client.plugins.cluescrolls.clues.item.ItemRequirement;
|
import net.runelite.client.plugins.cluescrolls.clues.item.ItemRequirement;
|
||||||
@@ -50,7 +55,7 @@ import static net.runelite.client.plugins.cluescrolls.ClueScrollOverlay.TITLED_C
|
|||||||
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET;
|
import static net.runelite.client.plugins.cluescrolls.ClueScrollWorldOverlay.IMAGE_Z_OFFSET;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, NamedObjectClueScroll
|
||||||
{
|
{
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
@@ -138,7 +143,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
|||||||
new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)),
|
new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)),
|
||||||
new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON),
|
new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON),
|
||||||
new SkillChallengeClue("Cut a yew log.", ANY_AXE),
|
new SkillChallengeClue("Cut a yew log.", ANY_AXE),
|
||||||
new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", item(ItemID.LIGHT_ORB)),
|
new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", new String[] { "Broken lamp" }, new int[] { 10834, 10835 }, item(ItemID.LIGHT_ORB)),
|
||||||
new SkillChallengeClue("Burn a yew log.", item(ItemID.YEW_LOGS), item(ItemID.TINDERBOX)),
|
new SkillChallengeClue("Burn a yew log.", item(ItemID.YEW_LOGS), item(ItemID.TINDERBOX)),
|
||||||
new SkillChallengeClue("Cook a swordfish", "cook a swordfish", item(ItemID.RAW_SWORDFISH)),
|
new SkillChallengeClue("Cook a swordfish", "cook a swordfish", item(ItemID.RAW_SWORDFISH)),
|
||||||
new SkillChallengeClue("Craft multiple cosmic runes from a single essence.", item(ItemID.PURE_ESSENCE)),
|
new SkillChallengeClue("Craft multiple cosmic runes from a single essence.", item(ItemID.PURE_ESSENCE)),
|
||||||
@@ -187,6 +192,8 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
|||||||
private final ItemRequirement[] itemRequirements;
|
private final ItemRequirement[] itemRequirements;
|
||||||
private final SingleItemRequirement returnItem;
|
private final SingleItemRequirement returnItem;
|
||||||
private final boolean requireEquip;
|
private final boolean requireEquip;
|
||||||
|
private final String[] objectNames;
|
||||||
|
private final int[] objectRegions;
|
||||||
@Setter
|
@Setter
|
||||||
private boolean challengeCompleted;
|
private boolean challengeCompleted;
|
||||||
|
|
||||||
@@ -201,6 +208,8 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
|||||||
this.returnItem = returnItem;
|
this.returnItem = returnItem;
|
||||||
this.challengeCompleted = false;
|
this.challengeCompleted = false;
|
||||||
this.requireEquip = false;
|
this.requireEquip = false;
|
||||||
|
this.objectNames = new String[0];
|
||||||
|
this.objectRegions = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Non-cryptic Sherlock Tasks
|
// Non-cryptic Sherlock Tasks
|
||||||
@@ -209,20 +218,32 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
|||||||
this(challenge, challenge.toLowerCase(), itemRequirements);
|
this(challenge, challenge.toLowerCase(), itemRequirements);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Non-cryptic Sherlock Tasks
|
||||||
|
private SkillChallengeClue(String challenge, String[] objectNames, int[] objectRegions, ItemRequirement ... itemRequirements)
|
||||||
|
{
|
||||||
|
this(challenge, challenge.toLowerCase(), false, objectNames, objectRegions, itemRequirements);
|
||||||
|
}
|
||||||
|
|
||||||
// Non-cryptic Sherlock Tasks
|
// Non-cryptic Sherlock Tasks
|
||||||
private SkillChallengeClue(String challenge, boolean requireEquip, ItemRequirement ... itemRequirements)
|
private SkillChallengeClue(String challenge, boolean requireEquip, ItemRequirement ... itemRequirements)
|
||||||
{
|
{
|
||||||
this(challenge, challenge.toLowerCase(), requireEquip, itemRequirements);
|
this(challenge, challenge.toLowerCase(), requireEquip, new String[0], null, itemRequirements);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sherlock Tasks
|
// Sherlock Tasks
|
||||||
private SkillChallengeClue(String challenge, String rawChallenge, ItemRequirement ... itemRequirements)
|
private SkillChallengeClue(String challenge, String rawChallenge, ItemRequirement ... itemRequirements)
|
||||||
{
|
{
|
||||||
this(challenge, rawChallenge, false, itemRequirements);
|
this(challenge, rawChallenge, false, new String[0], null, itemRequirements);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sherlock Tasks
|
// Sherlock Tasks
|
||||||
private SkillChallengeClue(String challenge, String rawChallenge, boolean requireEquip, ItemRequirement ... itemRequirements)
|
private SkillChallengeClue(String challenge, String rawChallenge, boolean requireEquip, ItemRequirement ... itemRequirements)
|
||||||
|
{
|
||||||
|
this(challenge, rawChallenge, requireEquip, new String[0], null, itemRequirements);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sherlock Tasks
|
||||||
|
private SkillChallengeClue(String challenge, String rawChallenge, boolean requireEquip, String[] objectNames, int[] objectRegions, ItemRequirement ... itemRequirements)
|
||||||
{
|
{
|
||||||
this.type = ChallengeType.SHERLOCK;
|
this.type = ChallengeType.SHERLOCK;
|
||||||
this.challenge = challenge;
|
this.challenge = challenge;
|
||||||
@@ -230,6 +251,8 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
|||||||
this.itemRequirements = itemRequirements;
|
this.itemRequirements = itemRequirements;
|
||||||
this.challengeCompleted = false;
|
this.challengeCompleted = false;
|
||||||
this.requireEquip = requireEquip;
|
this.requireEquip = requireEquip;
|
||||||
|
this.objectNames = objectNames;
|
||||||
|
this.objectRegions = objectRegions;
|
||||||
this.returnText = "<str>" + rawChallenge + "</str>";
|
this.returnText = "<str>" + rawChallenge + "</str>";
|
||||||
|
|
||||||
this.returnItem = null;
|
this.returnItem = null;
|
||||||
@@ -294,6 +317,25 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
|
|||||||
OverlayUtil.renderActorOverlayImage(graphics, npc, plugin.getClueScrollImage(), Color.ORANGE, IMAGE_Z_OFFSET);
|
OverlayUtil.renderActorOverlayImage(graphics, npc, plugin.getClueScrollImage(), Color.ORANGE, IMAGE_Z_OFFSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mark objects
|
||||||
|
if (!challengeCompleted && objectNames.length > 0 && plugin.getNamedObjectsToMark() != null)
|
||||||
|
{
|
||||||
|
final Point mousePosition = plugin.getClient().getMouseCanvasPosition();
|
||||||
|
|
||||||
|
for (final TileObject object : plugin.getNamedObjectsToMark())
|
||||||
|
{
|
||||||
|
if (plugin.getClient().getPlane() != object.getPlane())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
OverlayUtil.renderHoverableArea(graphics, object.getClickbox(), mousePosition,
|
||||||
|
CLICKBOX_FILL_COLOR, CLICKBOX_BORDER_COLOR, CLICKBOX_HOVER_BORDER_COLOR);
|
||||||
|
|
||||||
|
OverlayUtil.renderImageLocation(plugin.getClient(), graphics, object.getLocalLocation(), plugin.getClueScrollImage(), IMAGE_Z_OFFSET);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<LineComponent> getRequirements(ClueScrollPlugin plugin, boolean requireEquipped, ItemRequirement ... requirements)
|
private static List<LineComponent> getRequirements(ClueScrollPlugin plugin, boolean requireEquipped, ItemRequirement ... requirements)
|
||||||
|
|||||||
Reference in New Issue
Block a user