"""Copy original grenade assets; verify and append provenance manifest.""" from pathlib import Path import shutil,hashlib,json,struct,wave root=Path(__file__).resolve().parents[1] source=Path.home()/'.steam/steam/steamapps/common/Half-Life/valve' manifest=root/'assets/half_life_manifest.json' rows=json.loads(manifest.read_text()) for relative in ['models/grenade.mdl']+['sound/weapons/explode%d.wav'%i for i in [3,4,5]]: p=source/relative dest=root/'assets'/('weapons/'+p.name if relative.startswith('models/') else 'audio/weapons/'+p.name) shutil.copyfile(p,dest) raw=p.read_bytes(); assert raw==dest.read_bytes() row={'source':relative,'destination':str(dest.relative_to(root)),'sha256':hashlib.sha256(raw).hexdigest()} if p.suffix=='.mdl': assert raw[:4]==b'IDST' and struct.unpack_from('