from policy_harness import ROOT, body, run p = ROOT / 'addons/core/Scripts/Game/ERR/00_Core/ERR_RecoveryService.c' rules = body(p, 'static int SurvivorKind(') + '\n' + body(p, 'static bool NeedsRescuer(') + '\n' + body(p, 'static bool Stalled(') + '\n' + body(p, 'static bool DefeatDue(') run('''#include ''' + rules + ''' int main() { assert(!Stalled(0,3,0,0,true,true)); assert(Stalled(0,3,0,0,true,false)); assert(Stalled(0,2,0,0,true)); assert(!Stalled(1,2,0,0,true)); assert(!Stalled(0,2,1,0,true)); assert(!Stalled(0,2,0,1,true)); assert(!Stalled(0,0,0,0,true)); assert(!Stalled(0,2,0,0,false)); assert(!DefeatDue(-1,40000)); assert(!DefeatDue(1000,30999)); assert(DefeatDue(1000,31000)); assert(!DefeatDue(1000,999)); for (int flags=0;flags<16;flags++) { bool alive=flags&1, connected=flags&2, same=flags&4, conscious=flags&8; int expected=!alive?0:(!connected||!same)?1:conscious?2:3; assert(SurvivorKind(alive,connected,same,conscious)==expected); } for (int conscious=0;conscious<=12;conscious++) for (int incapacitated=0;incapacitated<=12;incapacitated++) assert(NeedsRescuer(conscious,incapacitated)==(conscious==0&&incapacitated>0)); } ''') print('PASS: recovery state excludes dead bodies, preserves reservations, requires controlled rescuers and distinguishes empty/all-dead teams')