From 5ea0a1b07dd9f6b804eb58d942bfb80db41bfa59 Mon Sep 17 00:00:00 2001
From: Quaternions <krakow20@gmail.com>
Date: Tue, 22 Apr 2025 19:42:54 -0700
Subject: [PATCH] roblox_emulator: implement __newindex Instance

---
 lib/roblox_emulator/src/runner/instance/instance.rs | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/roblox_emulator/src/runner/instance/instance.rs b/lib/roblox_emulator/src/runner/instance/instance.rs
index e57c017..77b8662 100644
--- a/lib/roblox_emulator/src/runner/instance/instance.rs
+++ b/lib/roblox_emulator/src/runner/instance/instance.rs
@@ -345,6 +345,11 @@ impl mlua::UserData for Instance{
 						let typed_value=value.as_str().ok_or_else(||mlua::Error::runtime("Expected string"))?.to_owned();
 						rbx_types::Variant::ContentId(typed_value.into())
 					},
+					rbx_reflection::DataType::Value(rbx_types::VariantType::Ref)=>{
+						// why clone?
+						let typed_value=Option::<Instance>::from_lua(value.clone(),lua)?;
+						rbx_types::Variant::Ref(typed_value.map_or(Ref::none(),|instance|instance.referent))
+					},
 					other=>return Err(mlua::Error::runtime(format!("Unimplemented property type: {other:?}"))),
 				};
 				// the index is known to be a real property at this point