"""Execute production fleet ownership, recovery and escape-boundary gates.""" from policy_harness import ROOT, body, run source = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_ExtractionService.c' s = '\n'.join(body(source, signature) for signature in ( 'int Vehicles(', 'bool IsTransport(', 'protected bool FleetAlive(', 'protected bool FleetLanded(', 'bool CarryingSurvivorsToSafety(', 'void Tick(')) s = s.replace('protected ', '').replace('out array vehicles', 'Array& vehicles') s = s.replace('array', 'Array').replace('array', 'Array') s = s.replace('Vehicle aircraft', 'Vehicle* aircraft').replace('ERR_Phase phase', 'int phase') s = s.replace('foreach (ERR_RescueFlightComponent ', 'for (Flight* ').replace('foreach (ERR_PlayerLife ', 'for (ERR_PlayerLife* ') for name in ('transport', 'departing', 'life', 'm_Roster'): s = s.replace(name + '.', name + '->') s = s.replace('departing->Aircraft().GetOrigin()', 'departing->Aircraft()->GetOrigin()') s = s.replace('GetGame().GetWorld().GetWorldTime()', '0') for name in ('ERR_Actors', 'CompartmentAccessComponent', 'Vehicle', 'Replication', 'ERR_MissionRules', 'ERR_ExtractionState', 'ERR_Phase'): s = s.replace(name + '.', name + '::') s = s.replace('vector.DistanceXZ', 'Position::DistanceXZ').replace('int aboard;', 'int aboard=0;') run(r''' #include #include #include #include template struct Array : std::vector { using std::vector::vector; bool IsEmpty(){return this->empty();}int Count(){return this->size();} bool Contains(T value){return std::find(this->begin(),this->end(),value)!=this->end();} void Insert(T value){this->push_back(value);}void Clear(){this->clear();} }; struct Position {float x=0,z=0;static float DistanceXZ(Position a,Position b){return std::hypot(a.x-b.x,a.z-b.z);}}; struct Vehicle {bool alive=true;Position position;Position GetOrigin(){return position;}static Vehicle* Cast(Vehicle* a){return a;}}; struct Actor {bool alive=true;Vehicle* vehicle=nullptr;}; struct ERR_PlayerLife {::Actor* Actor;int AccountId;}; struct Roster {Array lives;void Participants(Array& out){out=lives;}}; struct Flight {Vehicle* aircraft;bool lost=false,landed=true;bool Lost(){return lost;}bool Landed(){return landed;}Vehicle* Aircraft(){return aircraft;}}; struct ERR_Actors {templatestatic bool Alive(T* a){return a&&a->alive;}}; struct CompartmentAccessComponent {static Vehicle* GetVehicleIn(Actor* a){return a->vehicle;}}; struct Replication {static inline bool server=true;static bool IsServer(){return server;}}; namespace ERR_Phase {enum {PREPARING,PRISON,ESCAPING,EXTRACTION,VICTORY,DEFEAT};} namespace ERR_ExtractionState {enum {WAITING,ESCAPED,LOST};} struct ERR_MissionRules {static bool Terminal(int p){return p>=ERR_Phase::VICTORY;}}; struct Service { bool m_Stopped=false,m_Assigned=true,m_Begun=true,m_Mode=false;int m_Stage=5,m_State=ERR_ExtractionState::WAITING; Flight* m_Transport=nullptr;Array m_Transports;Vehicle* m_Vehicle=nullptr;Roster* m_Roster=nullptr; Position m_Pickup{500,0},m_Center;float m_Radius=1000;Array m_Escapees;int m_ParticipantCount=0; void Resolve(int result){m_State=result;}void RescueTick(float now){} ''' + s + r''' }; int main(){ Vehicle first{true,{1600,0}},second{true,{1800,0}},escort{true,{2000,0}},unrelated{true,{2100,0}}; Actor one{true,&first},two{true,&second},dead{false,nullptr}; ERR_PlayerLife l1{&one,101},l2{&two,202},l3{&dead,303};Roster roster{{&l1,&l2,&l3}}; Flight f1{&first},f2{&second};Service service; service.m_Transport=&f1;service.m_Transports={&f1,&f2};service.m_Vehicle=&first;service.m_Roster=&roster; Array registered;assert(service.Vehicles(registered)==2); // Legacy primary handle is deduplicated. assert(service.IsTransport(&first)&&service.IsTransport(&second)); assert(!service.IsTransport(&escort)&&!service.IsTransport(&unrelated)&&!service.IsTransport(nullptr)); assert(service.CarryingSurvivorsToSafety()&&service.FleetLanded()); // Split survivors are valid, including unconscious/disconnected roster actors. for(Vehicle* invalid : {static_cast(nullptr),&escort,&unrelated}){two.vehicle=invalid;assert(!service.CarryingSurvivorsToSafety());}two.vehicle=&second; for(int stage : {0,1,2,3,4,6}){service.m_Stage=stage;assert(!service.CarryingSurvivorsToSafety());}service.m_Stage=5; f2.landed=false;assert(!service.FleetLanded());f2.landed=true; f2.lost=true;assert(!service.CarryingSurvivorsToSafety());service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::LOST); f2.lost=false;service.m_State=ERR_ExtractionState::WAITING;second.alive=false;assert(!service.CarryingSurvivorsToSafety());service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::LOST); second.alive=true;service.m_State=ERR_ExtractionState::WAITING; service.m_Transports.Insert(nullptr);assert(!service.FleetAlive());service.m_Transports.pop_back(); service.m_Stopped=true;assert(!service.CarryingSurvivorsToSafety());service.m_Stopped=false; service.m_Assigned=false;assert(!service.CarryingSurvivorsToSafety());service.m_Assigned=true; // The first transport crossing the boundary cannot declare victory while the second is still inside. second.position={900,0};service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::WAITING&&service.m_Escapees.IsEmpty()); second.position={1400,0};service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::WAITING); // Outside mission radius but under 1km from pickup. second.position={1800,0};service.Tick(ERR_Phase::ESCAPING);assert(service.m_State==ERR_ExtractionState::WAITING); service.m_Stage=4;service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::WAITING);service.m_Stage=5; service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::ESCAPED); assert(service.m_Escapees.Count()==2&&service.m_Escapees.Contains(101)&&service.m_Escapees.Contains(202)&&!service.m_Escapees.Contains(303)); assert(service.m_ParticipantCount==3); // An empty second transport still needs to clear the boundary safely. one.vehicle=&first;two.vehicle=&first;service.m_State=ERR_ExtractionState::WAITING;service.m_Escapees.Clear();second.position={900,0}; service.Tick(ERR_Phase::EXTRACTION);assert(service.m_State==ERR_ExtractionState::WAITING); one.alive=false;two.alive=false;assert(!service.CarryingSurvivorsToSafety());roster.lives.clear();assert(!service.CarryingSurvivorsToSafety()); service.m_Transports.Clear();assert(!service.FleetAlive()&&!service.FleetLanded()); } ''') print('PASS: split-fleet boarding, escort rejection, lost transport failure and both transport escape boundaries')