Capture current mission, AI, map and administration development
Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
"""Run actual loading-damage lease methods; native damage routing is checked separately."""
|
||||
from policy_harness import ROOT, body, run
|
||||
p=ROOT/'addons/core/Scripts/Game/ERR/00_Core/ERR_SpawnFinalization.c'
|
||||
s='\n'.join(body(p,key) for key in ('bool Begin(IEntity actor)', 'void Stop()'))
|
||||
for before,after in [('IEntity actor','Actor* actor'),('DamageManagerComponent damage','Damage* damage'),('DamageManagerComponent.Cast(actor.FindComponent(DamageManagerComponent))','actor->damage'),('Replication.IsServer()','server'),('m_Damage.','m_Damage->'),('damage.','damage->'),('null','nullptr')]:s=s.replace(before,after)
|
||||
run(r'''
|
||||
#include <cassert>
|
||||
bool server=true;
|
||||
struct Damage {bool enabled=true,destroyed=false;int writes=0;bool IsDestroyed(){return destroyed;}bool IsDamageHandlingEnabled(){return enabled;}void EnableDamageHandling(bool value){enabled=value;writes++;}};
|
||||
struct Actor {Damage* damage;};
|
||||
struct Lease {Damage* m_Damage=nullptr;bool m_RestoreDamage=false;
|
||||
'''+s+r'''
|
||||
};
|
||||
int main(){
|
||||
Damage damage;Actor actor{&damage};Lease lease;
|
||||
assert(lease.Begin(&actor)&&!damage.enabled);assert(!lease.Begin(&actor));
|
||||
lease.Stop();assert(damage.enabled&&damage.writes==2);lease.Stop();assert(damage.writes==2);
|
||||
damage.enabled=false;assert(lease.Begin(&actor));lease.Stop();assert(!damage.enabled&&damage.writes==3);
|
||||
damage.destroyed=true;assert(!lease.Begin(&actor));damage.destroyed=false;
|
||||
server=false;assert(!lease.Begin(&actor));server=true;
|
||||
Actor missing{nullptr};assert(!lease.Begin(&missing)&&!lease.Begin(nullptr));
|
||||
// Deleted native component is a weak null reference; teardown must be harmless.
|
||||
damage.enabled=true;assert(lease.Begin(&actor));lease.m_Damage=nullptr;lease.Stop();
|
||||
}
|
||||
''')
|
||||
print('PASS: loading protection restores only its own damage change, rejects invalid admission actors, and tolerates repeat/deleted cleanup')
|
||||
Reference in New Issue
Block a user