Skip to content

Territory — Proximity & Geometry

TL;DR: The map has 90 latitude bands. Waat values compress by / 333. Your Code range (Yeo) is dynamic and divides by Chao. Pick coordinates near QINGs whose RING state gives you a generous Yeo — and claim tighter to the center than you think you need.

Why this matters

Territory isn't a free-for-all. Every Code() has to land inside a box of radius Yeo around the target QING's position, and Yeo is a per-call output of META.Beat() that depends on your RING state. Get the geometry wrong and you revert (gas wasted). Pick the wrong QING and your Yeo is tiny even in the best case.

The numbers

The latitude system

Constant Value Source
Latitude bands 90 (indices 0..89) HECKEMERIDIANS
Latitude divisor 333 Scales Waat down to latitude space. HECKEMERIDIANS
Southernmost (Meridian[0]) 476,733,977,057,179 HECKEMERIDIANS
Northernmost (Meridian[89]) 78-digit value HECKEMERIDIANS

Meridian values grow monotonically from Meridians[0] to Meridians[89], so a small Waat puts you south, a huge Waat puts you north.

The range-check at WORLD.Code

From WORLD:

(qlat, qlon) = Map.Map().Compliment(QingWaat)

if Latitude  > qlat + int256(Yeo): revert OutOfRange
if Latitude  < qlat - int256(Yeo): revert OutOfRange
if Longitude > qlon + int256(Yeo): revert OutOfRange
if Longitude < qlon - int256(Yeo): revert OutOfRange

So the valid region is an axis-aligned square of half-width Yeo around the QING.

The Yeo calculation

From META.Beat:

(Phoebe, Iota1, Chao, Charge1) = Ring.Eta()
(Yeo, Omicron, Dione, Omega, Charge) = Ring.Pang().Push(QingWaat)
Yeo = Yeo / Chao

So your practical Yeo = PANG.Push's Yeo-output ÷ RING.Eta's Chao-output. If Chao is big, your legal region shrinks.

Chao

From RING.Eta:

Chao_raw = Yue.React(Phobos)
Chao     = Chao_raw / Omicron    (where Omicron is the PANG output)

Phobos is a fixed QING resolved through the deep contract chain.

The play

  1. Target QINGs whose Map.Compliment(Waat) you've read recently. Don't guess; simulate. Read QING.Waat(), then read MAP's Compliment to get (qlat, qlon) before picking your Code coordinates.
  2. Claim closer to center than your Yeo allows. If Yeo = 500 and QING is at (100, 200), it's tempting to pick (100+499, 200+499) for max distance. Don't — if the next tx mutates anyone's RING state, Yeo recomputed at your actual Code call might be smaller, and you revert. Claim at (100+50, 200+50) for safety.
  3. Code right after the QING's recent activity is quiet. Every React-bumping op changes Eta output via Yue.React(Phobos). If the QING is Phobos (or the Phobos chain) has been hit hard, your Chao is volatile.
  4. Pick different latitudes across successive Codes. _creators[Latitude][Chi][Cause] += Deimos buckets by latitude. Distributions pay out per-latitude. Spreading across latitudes hedges against a single Distribute pass clearing you out.
  5. (inferred) Corner-hugging works. The valid region is a square, not a disc. You get marginally more territory by claiming in a corner than on an axis — but at the cost of being vulnerable if Yeo shrinks.

Worked example

Suppose you've computed that for you, at a given QING, META.Beat(QingWaat) returns Yeo = 100 and Dione = 5000. The QING sits at (lat=50, lon=150).

You could legally Code at any (lat, lon) in: - Latitude in [-50, 150] - Longitude in [50, 250]

That's a 200×200 square — 40,000 lattice points.

But if you fire off one Code, the RING state updates (Moments[Soul] = Iota overwrites; Yue.React side-effects). By your second Code, Chao may be larger (or smaller), shifting Yeo. You might compute Yeo=80 on the next read.

If your second claim was (150, 250) — the NE corner — and the recomputed Yeo = 80 puts the legal NE at (130, 230)… your (150, 250) reverts.

Rule of thumb: pick coordinates inside roughly 50% of Yeo, not 95%. Reserve some slack for turn-to-turn drift.

Gotchas

  • Range check is > / <, not >= / <=. Exactly at qlat + Yeo is legal. The revert fires on strict exceedence. Corner-exactly claims are fine — but rely on Yeo not shrinking mid-tx.
  • Latitude and Longitude are int256. Negative latitudes are legal. Don't assume Latitude >= 0.
  • Compliment output depends on Waat. Different QINGs have wildly different positions. A QING at Waat near Meridian[0] is near the south pole; near Meridian[89] is near the north.
  • Map has a Forbidden concept. Map.Forbidden(Asset) can lock a QING — Chat reverts with Forbidden. Check whether the QING you want to Code near is forbidden before investing in its geometry.
  • (inferred) GWAT vs. QING positions. A GWAT has a different Luo — specifically, a Luo where Luo % 476733977057179 != 0. GWAT Waats are in a different region of the map from QING Waats. Don't assume a GWAT neighbor's territory math is the same.

Where it cross-connects