"""Native gossip binding resolves POI maps independently of overlapping continent XY.""" from pathlib import Path import subprocess,tempfile root=Path(__file__).resolve().parents[2] code=r''' #include "AdventurePoiPolicy.h" #include using namespace AdventurePoiPolicy; int main(){ Menus menus{{100,{{101,0}}},{101,{{100,140},{0,141}}}}; std::vector roots{{100,{571,5800,600,650}}}; auto bindings=Bind(menus,roots);Anchor chosen; assert(Select(bindings,140,5831,508,chosen)&&chosen.Map==571&&chosen.Z==650); assert(!Select(bindings,999,5831,508,chosen)); // A much closer unrelated teleport anchor on map1 is not part of gossip ownership. roots.push_back({999,{1,5831,508,3}});bindings=Bind(menus,roots); assert(Select(bindings,140,5831,508,chosen)&&chosen.Map==571); // Native association with several maps is ambiguous; do not guess by XY. roots.push_back({100,{0,5831,508,3}});bindings=Bind(menus,roots); assert(!Select(bindings,140,5831,508,chosen)); // A floating platform must not become the terrain hundreds of yards below. assert(Height(640,-100000,[](float from){return from<658?184.f:658.f;})==658); assert(Height(650,-100000,[](float from){return from<675?650.f:675.f;})==650); assert(Height(640,-100000,[](float){return -100000.f;})==-100000); // Choose a nearby guard's height only after its map has been established. roots.pop_back();roots.push_back({100,{571,5832,508,658}});bindings=Bind(menus,roots); assert(Select(bindings,140,5831,508,chosen)&&chosen.Map==571&&chosen.Z==658); } ''' with tempfile.TemporaryDirectory()as d: p=Path(d);(p/'test.cpp').write_text(code) subprocess.run(['c++','-std=c++17','-I'+str(root/'src/server/game/World'),str(p/'test.cpp'),'-o',str(p/'test')],check=True) subprocess.run([str(p/'test')],check=True) print('POI native gossip graph: recursive menus/cycles, unique map, ambiguity rejection, local height anchor.')