I have the game set up like this


game
-Workspace
--NPC
---Head
----Dialog
-----Script
-----Regeneration
-----Restoration

-ServerStorage
--Weapons
---Regeneration Potion
---Restoration Potion

It works fine when testing it in studio, but when I go to test it in an actual game with my friend, the item isn't given to me and the dialog says it's default "error", then the dialog doesn't pop back up. What's the problem i'm missing?

local dialog = script.Parent
local weaponstore = game.ServerStorage.Weapons

dialog.DialogChoiceSelected:connect(function(player, choice)
    local stats = player:FindFirstChild('leaderstats')
    if not stats then return end
    local gold = stats:FindFirstChild('Gold')
    if not gold then return end
 
    if choice == dialog.Restoration then
        if gold.Value >= 100 then
            weaponstore["Restoration Potion"]:Clone().Parent = player.Backpack
            gold.Value = gold.Value - 100
			dialog.Restoration.ResponseDialog = "Good choice, my friend. Use it wisely."
		else
			dialog.Restoration.ResponseDialog = "Seems you haven't enough money! Alas, wealth is not infinite my friend."
        end
	elseif choice == dialog.Regeneration then
		if gold.Value >= 100 then
			weaponstore["Regeneration Potion"]:Clone().Parent = player.Backpack
			gold.Value = gold.Value - 100
			dialog.Regeneration.ResponseDialog = "Ah, a very nice potion. Enjoy it."
		else
			dialog.Regeneration.ResponseDialog = "You need more gold if you want my brew."
		end
    end
end)