Skip to content

Merge dev (64d6a44e) into feat/dungeon-self-clear (#259) - #1127

Merged
pjerra merged 230 commits into
Sagiroth:feat/dungeon-self-clearfrom
pjerra:reconcile/dev-into-dungeon-clear
Oct 20, 2026
Merged

pjerra merged 230 commits into
Sagiroth:feat/dungeon-self-clearfrom
pjerra:reconcile/dev-into-dungeon-clear

Conversation

@pjerra

@pjerra pjerra commented Oct 20, 2026

Copy link
Copy Markdown
Collaborator

Brings the dungeon-clear branch up to current dev: #1050, #904, #1057, #1064, #1075, #872 alt-bots, #1109 and everything else merged to dev since, so the next test build has the fixes 19z16 lacked. One merge commit (parents: feat 48c7ba8, dev 64d6a44); 25 conflicted files resolved by keeping both sides (WandPolicy healOnly + pullHold, PlayerbotAI, pull/meal fix made twice now once, BotCommandContext comments, docs moved into dev's new layout, PROVENANCE.md dropped as on dev). Dashboard: dev's live Dungeons tab is unchanged; the run-trace tab is renamed Dungeon runs (/api/v1/dungeon-runs, #/dungeon-runs) with a test that mounts both routes. Checks: verify_all 1-6, the standalone policy tests (incl. 8 not in the list), run-leader wiring, plan and boss-tactics SQL tests, Go and node checks pass; compiled on a VM against the core (rc=0, no warnings). Reviews: Codex SHIP, Opus cold review SHIP (no HIGH/MEDIUM). Not run live; dashboard not opened in a browser. Follow-ups noted by the review (comment/doc nits and a missing pullHold unit test) go in a small follow-up.

pjerra and others added 30 commits October 16, 2026 12:53
SecurityCheckAction.isUseful() passed !ai->GetMaster() (a bool) to
PlayerbotAIStorage::GetAI, which resolves to a guid-0 lookup that never
finds a bot. The engine therefore never ran its Execute(). Removed the
action, its creator registration and its "security check" entry on the
"often" trigger. The "check mail" action on that trigger is kept.

No behaviour change: the action never ran.

Fixes Sagiroth#919
List Living Poison (16027, map 533) in the creature keep-out table as an
aura-less row: pulse 5 yd (Explode 28433), keep-out 8 yd.

Fixes Sagiroth#906
Add a per-row tankExempt (true for the sludge, false for Living Poison)
and pass the row to CreatureAuraChaseExempt and CreatureAuraCombatExempt.
End points, the shared hazard snapshot and gap closers skip only exempt
rows for a tank. Docs note that Living Poison is not selectable.
Sagiroth#906)

Raise the Living Poison keep-out from 8 to 10 yd. A lethal row (not
tank-exempt) skips the 2 s no-landing back-off of the step-out and, when
every landing is refused, steps straight away from the creature.
…epout

fix: bots keep out of Naxxramas Living Poison
fix(combat): set behind only in melee reach, give up after 6 s (Sagiroth#911)
…ered

fix: healers stay put when another healer covers the ally (Sagiroth#904)
…check

fix: remove never-running SecurityCheckAction (Sagiroth#919)
Eluna ON builds: fix the bot XP hook, check Eluna guards, add Eluna CI jobs
A 39-companion raid took about 6 minutes of one-by-one .bot hire calls
and a manual raid conversion. .bot hire raid <preset|composition> [tier]
plans the roster (role counts such as 3t 12h 24d drawn from a class
spread, an explicit class list, or a config preset), cuts it to
HireMaxBotsPerPlayer minus the current companions, quotes one total fee,
converts an overflowing party to a raid, then hires each slot through the
existing Hire() path. It stops at the first failed hire and reports one
summary line plus a TBM:HIRE_RAID line.

New keys AiPlayerbot.HireRaidSpread and AiPlayerbot.HireRaidPresets.
Hire() now shares its gates, fee formula and race/gender default with the
raid path. Refs Sagiroth#900.
The raid command called Hire() up to 39 times inside the chat command, and
each call rescans pool accounts with synchronous queries. Plan, quote and
refusals stay in the command; an accepted raid is queued and worked off two
hires every 250 ms from Update(), with a closing summary and the TBM line
when the job ends. A running job reuses the previous slot's account.

The cap now also respects free raid seats (group members plus companions
still mustering), the party is converted by eventual size (members +
mustering + planned > 5) and the reply says when it became a raid. Only one
raid hire runs per player at a time. Refs Sagiroth#900.
A master who started .bot hire raid solo had no group to convert when
the job began, so once four companions joined, Hire() refused the next
seat as GroupFull and the job stopped near 16 of 39. StepRaidJobs now
converts the master's party to a raid (leader only) before each hire
when the planned raid outgrows five, and tells the player.

A far teleport took the master out of the world for a moment and the
job dropped silently. The job now looks the master up NotInWorld and
waits through the loading screen; only a master who is gone drops it.
…ecurity)

Rebased onto feat/dungeon-self-clear: a raid quote now uses the same
HireFeeCharged rule as a single hire, so a staff account is not refused
for a fee it would not pay.
Player::EquipNewItem never rolls a random property, and the seed
equip loop only stamped the best-for-spec suffix. Resistance-only
jewelry groups (e.g. 3301) score 0 for every spec, so those rings
and necklaces equipped stat-less. Fall back to a loot-style
GenerateItemRandomPropertyId roll; same for the <30 fallback and
bot quest objective items.
In an LFT/pool group every usable drop is usable by someone, so the
'never Need against a player' fallback (unseen player + CanUseItem OK =
competes) demoted every upgrade NEED to GREED even when no player had
voted. Unseen players now compete only via a NEED the bot actually saw;
a bot the player directly drives (alt / hire with its master) keeps the
old yield-on-usable behaviour.
Sagiroth and others added 29 commits October 20, 2026 12:52
…anches

ci: delete the branch of a PR closed without merge
docs: restructure the documentation for players and server admins
Dashboard: read-only Agent maps tab for turtle-agent run maps (Sagiroth#1102)
Working branch only (pjerra/turtle-agent#259). Brings dev 64d6a44 into
feat/dungeon-self-clear 48c7ba8.

- WandPolicy/PlayerbotAI: keep the run leader's heal-only healer and
  dev's pull-hold gate and pet stance (Sagiroth#973) side by side.
- Dashboard: dev's live Dungeons tab (Sagiroth#895) keeps its names; the run
  trace tab becomes "Dungeon runs" (/api/v1/dungeon-runs, tab-dungeon-runs,
  dungeon-runs.js); its poll goes through the refresh gate.
- Docs: dev's new layout; the run leader, boss tactics and run trace
  pages move to docs/play and docs/server, their settings and commands
  into the new pages; docs/PROVENANCE.md stays dropped as on dev.
@pjerra
pjerra merged commit da1c0f3 into Sagiroth:feat/dungeon-self-clear Oct 20, 2026
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.

2 participants