artifact.story = {
    states = enum { -- We use an enum for this so that we can use relational operators to determine if the current state is before or after a target state.
        "loading", -- For mapgen
        "init", -- For the opening cutscene
        "pre_vix", -- The player doesn't have Vix yet
        "main", -- The main game state. Progress is managed by checkpoints here.
        "end", -- The game is over.
    }
}
local ns = artifact.story
local db = minetest.get_mod_storage()

local state = db:get_int("state") -- Defaults to zero, i.e. "loading".

function ns.set_state(to)
    state = to
    db:set_int("state", state)
end

function ns.get_state()
    return state
end

function ns.before_state(target)
    
end

minetest.register_globalstep(function()
    if state == "init" then
        
    end
end)
