This moves the logic to the Overlays themselves, rather than storing the cutscene state in each quest step, and forcing
each quest step's render functions to check that overlay status
this also semi-relatedly removes unused Quest-specific overlay rendering
* Initial implementation of The Red Reef
* fix(NpcRequirement): use local player world view
this is instead of using the top level world view, which works well for most quests but not for all sailing quests.
in this case, the red reef helper is using this to know whether we're on the Zenith boat.
* remove notes
* add prayer pots to general recommended / bethel section
* Add no follower req to dive step
* Added better WorldView Handling + WorldEntityStep
---------
Co-authored-by: Zoinkwiz <29153234+Zoinkwiz@users.noreply.github.com>
PipeSolverSolution captured Widget objects at construction time. When
the pipe puzzle UI was closed and reopened mid-puzzle, these references
become stale.
Fixes#2283
* add item collection of knife + wilderness swords
* ma1: suggest wilderness swords as knife
* ma2: suggest wilderness swords
* ma2: show specific mage spell unlocking
* fix ma2 location
When the player has finished one boss during MA2, that option entirely disappears meaning we can't do static index
checking.
* fix: add "use cape" to sidebar
* tests: opt into sidebar test
* fix missing sidebar step
This adds a step that will normally be skipped. I didn't want to add this as a substep since there wasn't really a good
one imo
* nit: add a no follower requirement to step that requires you to pick your little buddy up
* nit: add civitas illa fortis quetzal highlight to quest finishing step
no actual guidance to use a whistle, but if the user _does_ have a whistle and uses it we will highlight the destination
* kandarin easy: hide seed dibber if finished barb farming
* kandarin easy: fix "kill elementals" step
There are multiple fixes involved with this:
1) Switch to the new `ServerLootEvent` event (and actually subscribe to it). The AchievementDiaryStepManager, as a
static class, never actually subscribed.
I have moved the subscription to PlayerStateManager which forwards loot events to AchievementDiaryStepManager.
2) Reset the known kills more often. Depending on the player's position, they can have their progress reset. It doesn't
_exactly_ reset when leaving, but it's the most reliable check we can make. To combat this location check every game
tick I cache the most recent check made in a ZoneRequirement and only ever check to reset it on game tick if it
wasn't previously set to false.
* feat: allow customizing VarbitRequirement display text
* flatten/modernize
this makes the future diffs a lot easier to read through
* migrate fishing to varbit
* migrate herblore to varbit
* migrate harpooning to varbit
* migrate barbarian planting to varbit
* migrate pot smashing to varbit
* migrate barbarian firemaking to varbit
* migrate smithing to varbits
* migrate pyre firemaking to varbit
* feat: quetzal destination highlight creator
includes an enum map from destination to widget ID
* make use of new functionality in The Heart of Darkness
* fix: Hide quests without defined regions on filter
Currently there's too many undefined quests, that currently make it hard to actually see the region's quests you care about. This default them to hidden.
* fix: Captured noticed missing quests from leagues region filter
* fix: Added achievement diaries to region filtering
Add QuestStep#withPersistedManualSkip(key) that attaches a
ManualRequirement and its persistence key to the step itself, and
replace the standalone orderManual_* fields in FauxLeaguesHelper with
calls to it. ConditionalStep conditions now read each step's
requirement via step.getSidebarManualSkipRequirement() instead of a
parallel field.
Fix the section 1 glass-making steps (talktotradercrewmember2,
usefurnace2, depositmoltenglass) that all latched on the first trip
because their passOnceCompleted conditions were inventory-snapshot
equivalents of the first trip's. They now gate on bank totals so the
second trip is actually required:
- depositmoltenglass: 10 banked and none in inventory
- talktotradercrewmember2: 10 sand + 10 soda ash + 10 molten glass banked
- usefurnace2: 20 molten glass banked
Also check shears/glassblowingPipe in bank for tradeartima, if they've already been purchased.
* Region Filtering
* Address feedback from Pajlada
- Use gameval SpriteIDs in LeagueRegion.java instead of raw int literals for the sprite IDs
- Use @AllArgsConstructor + @Getter on LeagueRegion instead of the manual constructor (see MM2AgilityNodes.java for pattern)
- Move the regionFilterVisibility config change handler below the existing group check in onConfigChanged, not as a separate block
* Implement feedback from Zoink
(and tested ofc)
---------
Co-authored-by: Zoinkwiz <zoinkwiz@hotmail.co.uk>
* Tree run helper improvements
* Helper no longer moves on to next step if the farmer needs to be paid (fixes#2482 item 2)
* Fixes Karamja step getting stuck on Brimhaven fruit tree if the steps are reordered
* Correct tree protection dialogue steps