I've done something similar so I'm just going to post the code that I used
local map = ...
local game = map:get_game()
local crafting_menu = require("scripts/menus/crafting")
local hero = game:get_hero()
function fire:on_interaction()
game:start_dialog("craft_cooking", function(answer)
if answer == 3 then
sol.menu.start(game, crafting_menu)
game:set_pause_allowed(false)
hero:freeze()
end
end)
end
function crafting_menu:on_finished()
game:set_pause_allowed(true)
hero:unfreeze()
end