Read prop light color as floats and registry as signed
ArcPropInfo_ctorFromStream (sb.exe 0x680360) loads LIGHT_COLOR as four floats (0x6BB2A0) and REGISTRY with ResStream_ReadInt32, reading the registry name only when it is greater than zero. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c07073cc09
commit
d4008b1a9f
1 file changed
+8
-8
@@ -25,7 +25,7 @@ class ArcPropInfo:
|
|||||||
self.prop_platform_height = stream.read_float()
|
self.prop_platform_height = stream.read_float()
|
||||||
self.prop_is_light_data = stream.read_bool()
|
self.prop_is_light_data = stream.read_bool()
|
||||||
if self.prop_is_light_data:
|
if self.prop_is_light_data:
|
||||||
self.prop_light_color = [stream.read_dword() for _ in range(4)]
|
self.prop_light_color = [stream.read_float() for _ in range(4)]
|
||||||
self.prop_light_radius = stream.read_float()
|
self.prop_light_radius = stream.read_float()
|
||||||
self.prop_light_flicker = stream.read_dword()
|
self.prop_light_flicker = stream.read_dword()
|
||||||
self.prop_light_cube_map = stream.read_dword()
|
self.prop_light_cube_map = stream.read_dword()
|
||||||
@@ -39,8 +39,8 @@ class ArcPropInfo:
|
|||||||
mobile.load_binary(stream)
|
mobile.load_binary(stream)
|
||||||
num_descriptors = stream.read_dword()
|
num_descriptors = stream.read_dword()
|
||||||
self.prop_descriptors = [stream.read_string() for _ in range(num_descriptors)]
|
self.prop_descriptors = [stream.read_string() for _ in range(num_descriptors)]
|
||||||
self.prop_registry = stream.read_dword()
|
self.prop_registry = stream.read_long()
|
||||||
if self.prop_registry:
|
if self.prop_registry > 0:
|
||||||
self.prop_registry_name = stream.read_string()
|
self.prop_registry_name = stream.read_string()
|
||||||
self.prop_has_zone_event = stream.read_bool()
|
self.prop_has_zone_event = stream.read_bool()
|
||||||
self.prop_has_teleporter = stream.read_bool()
|
self.prop_has_teleporter = stream.read_bool()
|
||||||
@@ -58,7 +58,7 @@ class ArcPropInfo:
|
|||||||
stream.write_bool(self.prop_is_light_data)
|
stream.write_bool(self.prop_is_light_data)
|
||||||
if self.prop_is_light_data:
|
if self.prop_is_light_data:
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
stream.write_dword(self.prop_light_color[i])
|
stream.write_float(self.prop_light_color[i])
|
||||||
stream.write_float(self.prop_light_radius)
|
stream.write_float(self.prop_light_radius)
|
||||||
stream.write_dword(self.prop_light_flicker)
|
stream.write_dword(self.prop_light_flicker)
|
||||||
stream.write_dword(self.prop_light_cube_map)
|
stream.write_dword(self.prop_light_cube_map)
|
||||||
@@ -75,8 +75,8 @@ class ArcPropInfo:
|
|||||||
for descriptor in self.prop_descriptors:
|
for descriptor in self.prop_descriptors:
|
||||||
stream.write_string(descriptor)
|
stream.write_string(descriptor)
|
||||||
|
|
||||||
stream.write_dword(self.prop_registry)
|
stream.write_long(self.prop_registry)
|
||||||
if self.prop_registry:
|
if self.prop_registry > 0:
|
||||||
stream.write_string(self.prop_registry_name)
|
stream.write_string(self.prop_registry_name)
|
||||||
|
|
||||||
stream.write_bool(self.prop_has_zone_event)
|
stream.write_bool(self.prop_has_zone_event)
|
||||||
@@ -106,7 +106,7 @@ class ArcPropInfo:
|
|||||||
data['prop_content_mobiles'].append(mobile.save_json())
|
data['prop_content_mobiles'].append(mobile.save_json())
|
||||||
data['prop_descriptors'] = self.prop_descriptors
|
data['prop_descriptors'] = self.prop_descriptors
|
||||||
data['prop_registry'] = self.prop_registry
|
data['prop_registry'] = self.prop_registry
|
||||||
if self.prop_registry:
|
if self.prop_registry > 0:
|
||||||
data['prop_registry_name'] = self.prop_registry_name
|
data['prop_registry_name'] = self.prop_registry_name
|
||||||
data['prop_has_zone_event'] = self.prop_has_zone_event
|
data['prop_has_zone_event'] = self.prop_has_zone_event
|
||||||
data['prop_has_teleporter'] = self.prop_has_teleporter
|
data['prop_has_teleporter'] = self.prop_has_teleporter
|
||||||
@@ -139,7 +139,7 @@ class ArcPropInfo:
|
|||||||
self.prop_content_mobiles.append(mobile)
|
self.prop_content_mobiles.append(mobile)
|
||||||
self.prop_descriptors = data['prop_descriptors']
|
self.prop_descriptors = data['prop_descriptors']
|
||||||
self.prop_registry = data['prop_registry']
|
self.prop_registry = data['prop_registry']
|
||||||
if self.prop_registry:
|
if self.prop_registry > 0:
|
||||||
self.prop_registry_name = data['prop_registry_name']
|
self.prop_registry_name = data['prop_registry_name']
|
||||||
self.prop_has_zone_event = data['prop_has_zone_event']
|
self.prop_has_zone_event = data['prop_has_zone_event']
|
||||||
self.prop_has_teleporter = data['prop_has_teleporter']
|
self.prop_has_teleporter = data['prop_has_teleporter']
|
||||||
|
|||||||
Reference in new issue
Block a user