Integrate startup optics and supply vehicle lock picking
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
"""Actual WORKBENCH-only native-context fallback; no production admission bypass."""
|
||||
import os
|
||||
from pathlib import Path
|
||||
from policy_harness import ROOT,body,run
|
||||
base=Path(os.environ.get('ERR_VEHICLE_DIAGNOSTICS_ROOT',str(ROOT)))
|
||||
source=base/'addons/core/Scripts/Game/ERR/ERR_NativeVehicleSecurityProbe.c'
|
||||
wrapped=body(source,'protected bool DriverAvailable(').replace('protected ','').replace('m_DriverAction.','m_DriverAction->')
|
||||
run('''#include <cassert>
|
||||
struct Action {bool allowed=false,fallback=true;int context=-1,checks=0,diagnostics=0,bindings=0;bool CanBePerformedScript(int){checks++;return allowed;}void ERR_ProbeRejectedEntry(int){diagnostics++;}int ERR_ProbeResolvedDoor(int){return context;}bool ERR_ProbeDeclaredDriverDoor(int){bindings++;return fallback;}};
|
||||
struct Probe{Action* m_DriverAction;int m_Player=7;
|
||||
'''+wrapped+'''
|
||||
};
|
||||
int main(){Action a;Probe p{&a};a.allowed=true;assert(p.DriverAvailable()&&a.checks==1&&a.diagnostics==0&&a.bindings==0);
|
||||
a.allowed=false;a.context=2;assert(!p.DriverAvailable()&&a.diagnostics==1&&a.bindings==0); // real selected context cannot be overridden
|
||||
a.context=-1;assert(p.DriverAvailable()&&a.diagnostics==2&&a.bindings==1);
|
||||
a.fallback=false;assert(!p.DriverAvailable()&&a.diagnostics==3&&a.bindings==2);
|
||||
}
|
||||
''')
|
||||
method=body(source,'bool ERR_ProbeDeclaredDriverDoor(')
|
||||
method=method.replace('BaseCompartmentSlot seat','BaseCompartmentSlot* seat').replace('array<int> doors = {};','Array doors;').replace('seat.','seat->').replace('m_CompartmentManager.','m_CompartmentManager->')
|
||||
method=method.replace('SCR_CompartmentAccessComponent.','SCR_CompartmentAccessComponent::').replace('ECompartmentType.PILOT','PILOT')
|
||||
run('''#include <cassert>
|
||||
#include <vector>
|
||||
using IEntity=int;enum {PILOT=1,CARGO=2};
|
||||
struct Array:std::vector<int>{int Count(){return size();}};
|
||||
struct BaseCompartmentSlot{int type=PILOT;std::vector<int> doors={3};void GetAvailableDoorIndices(Array& a){a.assign(doors.begin(),doors.end());}};
|
||||
struct Manager {int valid=3;bool GetDoorInfo(int i){return i==valid;}};
|
||||
struct SCR_CompartmentAccessComponent{static int GetCompartmentType(BaseCompartmentSlot* s){return s->type;}};
|
||||
void PrintFormat(const char*,int,int,bool){}
|
||||
struct Action {Manager* m_CompartmentManager;BaseCompartmentSlot* seat;int context=-1,stored=-1,checks=0,sets=0,diagnostics=0;bool nativeAllowed=true;
|
||||
int GetRelevantDoorIndex(IEntity){return context;}BaseCompartmentSlot* GetCompartmentSlot(){return seat;}
|
||||
int GetCompartmentDoorInfoIndex(){return stored;}void SetCompartmentDoorInfoIndex(int i){stored=i;sets++;}
|
||||
bool CanBePerformedScript(IEntity){checks++;return nativeAllowed&&stored==3;}
|
||||
void ERR_ProbeRejectedEntry(IEntity){diagnostics++;}
|
||||
'''+method+'''
|
||||
};
|
||||
int main(){Manager m;BaseCompartmentSlot s;Action a;a.m_CompartmentManager=&m;a.seat=&s;
|
||||
assert(a.ERR_ProbeDeclaredDriverDoor(7)&&a.stored==-1&&a.checks==1&&a.sets==2); // derived door 3, never hardcoded driver 0
|
||||
a.nativeAllowed=false;assert(!a.ERR_ProbeDeclaredDriverDoor(7)&&a.stored==-1&&a.diagnostics==1&&a.sets==4);
|
||||
a.context=2;assert(!a.ERR_ProbeDeclaredDriverDoor(7)&&a.sets==4);a.context=-1;
|
||||
s.type=CARGO;assert(!a.ERR_ProbeDeclaredDriverDoor(7)&&a.sets==4);s.type=PILOT;
|
||||
s.doors={};assert(!a.ERR_ProbeDeclaredDriverDoor(7));s.doors={3,4};assert(!a.ERR_ProbeDeclaredDriverDoor(7));
|
||||
s.doors={4};assert(!a.ERR_ProbeDeclaredDriverDoor(7)&&a.sets==4&&a.checks==2);
|
||||
a.seat=nullptr;assert(!a.ERR_ProbeDeclaredDriverDoor(7));a.seat=&s;a.m_CompartmentManager=nullptr;assert(!a.ERR_ProbeDeclaredDriverDoor(7));
|
||||
}
|
||||
''')
|
||||
diagnostics=body(source,'void ERR_ProbeRejectedEntry(')
|
||||
for forbidden in ('SetCompartmentDoorInfoIndex(', 'SetAffiliatedFaction(', 'ClearAffiliatedFaction(', 'GetInVehicle(', 'EnableDamageHandling(', 'TryBreach('):assert forbidden not in diagnostics
|
||||
assert 'GetCannotPerformReason()' in diagnostics and 'GetRelevantDoorIndex(user)' in diagnostics
|
||||
assert 'CanGetInVehicleViaDoor' in diagnostics and 'GetStoredResources' in diagnostics
|
||||
assert diagnostics.index('door >= 0 && m_CompartmentManager.GetDoorInfo(door)') < diagnostics.index('m_CompartmentManager.GetDoorUser(door)')
|
||||
assert 'if (index < 0 || !m_CompartmentManager.GetDoorInfo(index))' in diagnostics
|
||||
assert 'missing or invalid context; no indexed native query issued' in diagnostics
|
||||
assert 'modded class ERR_SecureGetInAction' in source.read_text() and source.read_text().startswith('#ifdef WORKBENCH')
|
||||
print('PASS: actual diagnostic fallback runs only on failed missing-context call, derives unique native pilot door, preserves stock eligibility and restores prior index on success/failure; diagnostics mutate no game state.')
|
||||
Reference in New Issue
Block a user