Skip to content

Commit 4e887e5

Browse files
SnoopLawgclaude
andcommitted
mod/data: document verified swap-to-vault semantics + save MEN tune spec
RaidAutomationPlugin.Mutations.cs: comment-only — record the live-verified behavior that an artifact swap commits on the RECEIVER and sends the receiver's old piece to the VAULT (the donor is NOT given a hand-me-down), so the "/bulk-equip doesn't commit" misdiagnosis isn't repeated. data/targets/men_force_daily_robust.json: the MEN speed-tune spec (292/174/225/178/162) with tight min==max targets, for the team gear optimizer. Holds Magic/Spirit/Void; NOT Force-robust (documented in memory). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent fe6ea4a commit 4e887e5

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"_doc": "MEN daily-robust Force tune. Exact SPD tuple 292/174/225/178/162 holds Magic/Spirit/Void (Y/Y/Y) and Force 100% (validated 2026-06-24 via speed_tune_finder --all-affinities --mc). Pinned min==max because the 5-hero cadence is COUPLED — overshooting Demytha->175 or Venomage->163 breaks the stable days (see project_cb_tune_equip_flow). Field with: team_gear_optimizer.py --spec this --equipped-only --json, then loadouts.apply (snapshot team+donors first), then re-validate LIVE speeds.",
3+
"team": [
4+
{"hero": "Maneater", "mode": "survivability", "min": {"SPD": 292}, "max": {"SPD": 292}},
5+
{"hero": "Demytha", "mode": "survivability", "min": {"SPD": 174}, "max": {"SPD": 174}, "weight": {"ACC": 1}},
6+
{"hero": "Ninja", "mode": "damage", "min": {"SPD": 225}, "max": {"SPD": 225}},
7+
{"hero": "Geomancer", "mode": "survivability", "min": {"SPD": 178}, "max": {"SPD": 178}},
8+
{"hero": "Venomage", "mode": "damage", "min": {"SPD": 162}, "max": {"SPD": 162}}
9+
],
10+
"priority": ["Ninja", "Maneater", "Demytha", "Geomancer", "Venomage"]
11+
}

mod/bepinex/RaidAutomationPlugin.Mutations.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,15 @@ private string BulkEquipArtifacts(string heroIdStr, string artifactsJson)
552552

553553
if (existingArtId > 0)
554554
{
555-
// Slot occupied — use SwapArtifactCmd
555+
// Slot occupied — use SwapArtifactCmd.
556+
// VERIFIED LIVE (2026-06-24): this commits reliably on the
557+
// RECEIVER. SwapArtifactCmd(hero, owner, fromId, toId) pulls
558+
// `toId` onto `hero` and sends `hero`'s old piece (`fromId`)
559+
// to the VAULT — the donor `owner` is left with an EMPTY slot
560+
// and does NOT receive `fromId` (the param name is misleading).
561+
// That's correct Raid equip semantics. Execute() applies the
562+
// optimistic edit synchronously on the main thread, so the
563+
// change is visible in /all-heroes immediately after.
556564
int ownerId = GetArtifactOwner(equipment, artId);
557565
if (ownerId <= 0) ownerId = heroId;
558566
if (swapCmdType != null)

0 commit comments

Comments
 (0)