Skip to content

chore: promote development to main#504

Merged
chsami merged 23 commits into
mainfrom
development
Jun 25, 2026
Merged

chore: promote development to main#504
chsami merged 23 commits into
mainfrom
development

Conversation

@chsami

@chsami chsami commented Jun 25, 2026

Copy link
Copy Markdown
Owner

Summary

Validation

  • ./gradlew clean build passed locally on the version bump branch
  • CI should run on this PR before merge

runsonmypc and others added 23 commits June 16, 2026 17:36
…g, add Rs2DropUtils

Replace unreliable isInteracting() check with isAnimating(timeout) and
isMoving() using randomized timeouts via Rs2Random.truncatedGauss. Add
Rs2DropUtils for humanized item dropping with per-session pace variance
and sped-up natural mouse. Fix stale state on plugin restart, spec
activation edge cases, and inventory full detection order.
…r maxed)

Adds an opt-in "Rake Miscellania" daily task that self-provisions a rake (and a Dramen/Lunar staff when one is needed for the fairy ring), travels to Miscellania via the CIP fairy ring, and rakes the flax and herb patches until kingdom favour is maxed.

- Rakes every weed on both patches before checking favour; waits for weeds to regrow and keeps raking when one pass is not enough; never re-clicks a patch mid-rake.
- Stops on the KINGDOM_APPROVAL varbit at max (player-state cache read), with Gardener Gunnhild's chat line as a backup signal.
- Availability gates only on Throne of Miscellania so a stale login-time approval value cannot skip the task.
- Adds a handlesOwnTravel flag so the task banks before island travel instead of being dragged across by the generic pre-walk.
- Disabled by default; bumps plugin version 1.0.1 -> 1.1.0.
Remove the stale currentlyMakingPotions flag: it was never reset when
handleProcessing() transitioned to banking, so after re-withdrawing
ingredients process() spun on "Still making potions" at 0ms until the
30s state-timeout reset. Crafting state is now derived from the existing
animation guard + inventory checks.

Use Rs2Dialogue.hasCombinationDialogue() (widget group 270) instead of
hasQuestion("How many do you wish to make?") in the finished/super-combat
potion paths, matching the working unfinished-potions path. The question
text never matched the make interface, so the 3000ms sleepUntil always
timed out before pressing make-all.
…nd add shine-bonus handling

Rs2Player.isInteracting() no longer reports interaction during actions, which broke the
plugin's pickpocket, house-thieving and banking flows. Derive state from observable game
signals instead:

- Pickpocket: click once per distraction (the game auto-repeats until the citizen stops
  being distracted); re-click only after opening coin pouches.
- House thieving: click a piece once - it auto-loots for ~50-60s. Gate re-search behind a
  searchingPiece flag and only act again when the game reports the piece emptied
  ("...worth taking...") via onChatMessage, then switch to a different piece. Animation
  timing is unusable here (long no-animation stretches occur mid-loot).
- Shine/hint-arrow bonus: switch to the highlighted piece (getHintArrowPoint) to claim the
  one-time bonus, then leave it alone.
- Banking: resolve the bank via an object that actually exposes a "Bank" action instead of
  the nearest unfiltered tile object (which clicked a floor decoration and never banked);
  drop the 2ms openBank wait.

Bump version 1.0.3 -> 1.1.0.
…ost support

Add optional allotment (2 per location) and flower (1 per location) patch
handling at 6 farming locations. Non-bottomless compost is now withdrawn
on-demand from the tool leprechaun instead of carried from bank.

- AllotmentSeedType/FlowerSeedType enums with level-gated selection
- Phase system (HERB→FLOWER→ALLOTMENT→DONE) per location
- ObjectID tracking for multi-tile allotment patches
- Action-based patch state detection (Rake/Pick/Clear/varbit)
- Produce noting via leprechaun for allotment and flower harvests
- Clean plugin shutdown via Microbot.stopPlugin() on completion
…, plant retry, note all produce

- Allotment tile selection: replace isReachable() (returns true for any same-worldview
  object) with a standable-neighbour check so interior tiles of a multi-tile patch are
  skipped and an actually-reachable edge tile is chosen.
- Pick the nearest tile by squared Euclidean distance instead of WorldPoint.distanceTo
  (Chebyshev), which tied diagonal and orthogonal tiles and broke ties by list order.
- Planting (allotment + flower): only mark the patch done once it is confirmed Growing;
  otherwise leave it pinned and retry, so a plant that fails (weeds regrew between clearing
  and planting, or a missed click) no longer silently gives up.
- Leprechaun noting: note every notable produce type held in quantity > 1 (any grimy herb
  plus allotment/flower produce), not just the crop currently being harvested, so produce
  from an earlier patch can no longer fill the inventory unnoted.
Flower patches harvest in a single action; for limpwurt the multi-root
yield could overflow a near-full inventory and the surplus dropped to the
ground and was lost.

- Note all notable produce via the tool leprechaun before every flower
  Pick, freeing space so the full yield fits.
- After harvest, reclaim only our own dropped limpwurt roots
  (ownership-filtered, bounded loop), noting between pickups to make room.
Automates Jane's farming contracts end to end: gets (and optionally
downgrades) contracts, banks tools/seeds/compost, plants and harvests
across patch types, clears and replants trees by paying the guild
gardeners, and turns in completed contracts.

Correctness details worth noting:
- itemQuantity (not count) for stackable coins/seeds; count() returns the
  slot count, which caused false "1 coin" / banking loops
- pay guild gardeners Rosie/Nikkie by name + tree-specific action when no
  generic "Pay" NPC is present, so checked/old trees get cleared
- detect check-healthed trees via the "Chop down" action and clear them
- guard auto-downgrade on needsDowngrade to stop re-downgrade loops
- re-rake weeds that regrow during composting and confirm a seed was
  consumed before reporting a successful plant
Use the Guildmaster Jane chathead as the icon and card; wire up
iconUrl/cardUrl in the descriptor. Bump version 0.2.1 -> 0.2.2.
The depositSack() method used interactWithObject() which calculates
distance using raw WorldLocation coordinates. In the instanced Tithe
Farm minigame, the sack object's world coordinates are ~12500 tiles
away from the player's actual position, causing the 51-tile distance
check in interactWithObject() to fail and Rs2Walker.walkTo() to
web-walk the character out of the minigame via teleport.

Replace interactWithObject() with the same instance-safe pattern used
by walkToBarrel() and coreLoop(): query the sack, check distanceTo2D
against the player's actual world location, use walkMiniMap() for local
movement, then click directly.
Also update QoL smooth camera tracking to use the current camera yaw target API so the hub build passes against Microbot client 2.6.9.
feat(dailytasks): add Rake Miscellania task
fix(AutoBankStander): herblore turbo cleaning + potion-making stall/timing fixes
fix(HouseThieving): repair thieving/banking broken by isInteracting; add shine-bonus handling
…tments

feat(herbrun): allotment & flower patches + on-demand leprechaun compost
feat(farmingcontract): add Farming Contracts plugin
fix(barbarianfishing): replace isInteracting, add Rs2DropUtils
fix(motherlode): recover from logout interruptions
…ance-coords

fix(TitheFarming): use instance-aware walking for deposit sack
Updates the fallback Microbot client dependency version and matching docs to 2.6.9.
@chsami chsami merged commit b708788 into main Jun 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants