PATCH  ·  v1.0.9  ·  2026-05-24

Master PVP toggle is in — realm is currently PEACEFUL

PVP is now a single switch the admin can flip from off to on and back. As of this patch, the switch is off — no player can damage another player anywhere on the realm, regardless of faction, zone, retribution flag, bloodlust, or anything else. Wild mobs still attack you and you can still attack them, so combat in the world continues to work normally.

What "PVP off" means in practice

  • You cannot damage another player. Skills land but do zero. The CanAttack gate on the server returns false before any damage calculation runs.
  • You cannot be damaged by another player. Same gate, both directions.
  • Player-vs-mob combat is untouched. Hunt, grind, raid, world boss — all unaffected.
  • NPC guard / sentry behavior is untouched. Not that there are any guards left in the world per the earlier cleanup, but if any get spawned later they still work normally.
  • All the existing flags become decorative. Bloodlust, retribution, ForceAttack, war-zone flags — they all still get applied to characters as before, but the master gate vetoes any damage call between two players. Nothing else has to be removed for PVP-off to be honest.

This stacks cleanly on top of v1.0.8 (cross-faction friendly): yesterday's patch made other-faction players show as green and removed the default hostility. This patch is the override that vetoes PVP damage even if a player deliberately flagged themselves for it.

How the admin flips it

For now this lives as a WebApi endpoint — no button on the admin panel yet (Ashley's /echo/archeage3 page is a planned page, not built). Ashley flips it from her terminal:

$h = @{'X-AAEmu-Auth' = '<shared secret from Z_RookeryLocal.json>'}
# Read state:
Invoke-WebRequest http://127.0.0.1:1280/admin/pvp_toggle
# PVP ON:
Invoke-WebRequest -Method Post -Headers $h -ContentType 'application/json' `
  -Body '{"enabled":true}' http://127.0.0.1:1280/admin/pvp_toggle
# PVP OFF:
Invoke-WebRequest -Method Post -Headers $h -ContentType 'application/json' `
  -Body '{"enabled":false}' http://127.0.0.1:1280/admin/pvp_toggle

State is persisted to Z_RookeryLocal.json on every flip, so it survives a server restart.

When the admin panel gets a button later, it'll call the Echo-side proxy (/api/aaemu/aaemu-game-3/pvp_toggle) which keeps the shared secret server-side instead of shipping it to the browser.

Why default OFF

The realm is roleplay-first, cross-faction-cooperative, 12-house instead of two-continent-war. World PVP defaulting on doesn't fit. Special events (war days, tournaments, etc.) can flip the switch on for the duration and back off after.

What's not in this patch

  • No admin-panel button yet. Endpoint exists; UI button is a separate small task.
  • Honor NPC cleanup is still pending — listed for v1.1.0. With PVP off, honor doesn't accrue anyway, so the Honor vendors are functionally inert in the meantime.
  • No per-zone PVP toggle. It's a single master flag. Per-zone would let you keep PVP on in dedicated arenas while keeping the world safe; that's a follow-up if you want it.

Behind the scenes

Three coupled changes server-side, one in Echo:

  • New AppConfiguration.RookerySettings with PvpEnabled bool, loaded from Z_RookeryLocal.json
  • BaseUnit.CanAttack short-circuits when both sides are Characters and the flag is off
  • New AdminPvpController exposing GET + POST /admin/pvp_toggle (POST gated by the existing X-AAEmu-Auth shared-secret header)
  • Echo aaemu_handler.py adds /api/aaemu/<sid>/pvp_toggle as a session-authed proxy, ready for the UI button

No client patch — the launcher will see the same .pak and skip the download.

« All Patch Notes