{"id":10,"date":"2026-06-16T23:38:28","date_gmt":"2026-06-16T23:38:28","guid":{"rendered":"https:\/\/talltale.games\/?page_id=10"},"modified":"2026-06-18T17:27:02","modified_gmt":"2026-06-18T21:27:02","slug":"register","status":"publish","type":"page","link":"https:\/\/talltale.games\/register\/","title":{"rendered":"Registration"},"content":{"rendered":"\n<div id=\"hd_registration_form\">\n    <div class=\"hd_field_item\">\n        <label for=\"hd_registration_email\">Your email<\/label>\n        <input type=\"email\" id=\"hd_registration_email\" name=\"hd_registration_email\" placeholder=\"...\" value=\"\">\n    <\/div>\n    <div class=\"hd_field_item\">\n        <div id=\"hd_registration_type\" data-value=\"player\">\n            <div class=\"hd_registration_toggle_item active\" id=\"hd_registration_type_player\" data-id=\"player\">\n                <span class=\"hd_registration_toggle_item_title\">Player<\/span>\n                <span class=\"hd_registration_toggle_item_price\">FREE<\/span>\n                <ul class=\"pricing-features\">\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#00d4e8\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#00d4e8\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Join any game room via invite link\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#00d4e8\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#00d4e8\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Roll all dice \u2014 D4 through D20\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#00d4e8\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#00d4e8\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Draw and annotate on the whiteboard\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#00d4e8\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#00d4e8\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Save character profiles\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#00d4e8\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#00d4e8\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Real-time sync with your entire party\n                    <\/li>\n                <\/ul>\n            <\/div>\n            <div class=\"hd_registration_toggle_item\" id=\"hd_registration_type_gm\" data-id=\"gm\">\n                <span class=\"hd_registration_toggle_item_title\">Game Master<\/span>\n                <span class=\"hd_registration_toggle_item_price\">$10\/year<\/span>\n\n                <ul class=\"pricing-features\">\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#c9a227\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#c9a227\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Everything in the Player tier\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#c9a227\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#c9a227\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Create and manage private game rooms\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#c9a227\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#c9a227\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Generate and manage invite links\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#c9a227\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#c9a227\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Choose room visual theme (4 options)\n                    <\/li>\n                    <li>\n                        <span class=\"check\">\n                            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\">\n                                <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"#c9a227\" stroke-width=\"1.2\"><\/circle>\n                                <path d=\"M5 8l2 2 4-4\" stroke=\"#c9a227\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/span>\n                        Full whiteboard admin controls\n                    <\/li>\n                <\/ul>\n            <\/div>\n        <\/div>\n    <\/div>\n    <div class=\"hd_field_item hidden\">\n        <label for=\"hd_invite_token\">Invite token<\/label>\n        <input type=\"text\" id=\"hd_invite_token\" name=\"hd_invite_token\" placeholder=\"@\" value=\"\" disabled>\n    <\/div>\n    <div id=\"hd_registration_logs\"><\/div>\n    <div class=\"alignright\">\n        <div id=\"hd_register_submit\" class=\"btn btn-gold\">Register<\/div>\n    <\/div>\n<\/div>\n\n<script>\n    async function hd_registration_form() {\n        let params = new URLSearchParams(document.location.search);\n        let role = params.get(\"role\"); \/\/ is the string \"Jonathan\"\n        if (role && role === \"gm\") {\n            document.getElementById(\"hd_registration_type_player\").classList.remove(\"active\");\n            document.getElementById(\"hd_registration_type_gm\").classList.add(\"active\");\n            document.getElementById(\"hd_registration_type\").setAttribute(\"data-value\", \"gm\");\n        }\n\n        const nonce = await fetch(HD_AJAX_URL, {\n            method: \"POST\",\n            credentials: \"same-origin\",\n            body: new URLSearchParams({\n                action: \"hd_get_registration_nonce\",\n            }),\n        });\n        const res = await nonce.json();\n        if (!res.success) {\n            console.error(\"issue getting registration nonce\")\n            return;\n        }\n\n        const toggles = document.getElementsByClassName(\"hd_registration_toggle_item\");\n        for (let i = 0; i < toggles.length; i++) {\n            toggles[i].addEventListener(\"click\", function() {\n                document.querySelector(\".hd_registration_toggle_item.active\").classList.remove(\"active\");\n                this.classList.add(\"active\");\n                let value = this.getAttribute(\"data-id\");\n                document.getElementById(\"hd_registration_type\").setAttribute(\"data-value\", value);\n            })\n        }\n\n        document.getElementById(\"hd_register_submit\").addEventListener(\"click\", async function() {\n            if (this.classList.contains(\"disabled\")) {\n                return;\n            }\n            this.classList.add(\"disabled\");\n\n            const emailEL = document.getElementById(\"hd_registration_email\");\n            const tokenEL = document.getElementById(\"hd_invite_token\");\n            const typeEL = document.getElementById(\"hd_registration_type\");\n\n            let emailVal = emailEL.value.toLowerCase();\n            let tokenVal = tokenEL.value;\n            let typeVal = typeEL.getAttribute(\"data-value\");\n\n            let re = \/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$\/;\n            if (!re.test(String(emailVal))) {\n                emailEL.classList.add(\"input_error\");\n                return;\n            } else {\n                emailEL.classList.remove(\"input_error\");\n            }\n\n            if (res.success && res.data.nonce) {\n                const reg = await fetch(HD_AJAX_URL, {\n                    method: \"POST\",\n                    credentials: \"same-origin\",\n                    body: new URLSearchParams({\n                        action: \"hd_register_new_user\",\n                        email: emailVal,\n                        token: tokenVal,\n                        type: typeVal,\n                        nonce: res.data.nonce\n                    }),\n                });\n                const r = await reg.json();\n                if (r.data) {\n                    const logs = document.getElementById(\"hd_registration_logs\");\n                    logs.textContent = r.data.message;\n                    logs.classList.add(\"active\");\n                }\n            }\n\n            this.classList.remove(\"disabled\");\n        })\n    }\n    hd_registration_form();\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/comments?post=10"}],"version-history":[{"count":2,"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":14,"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/pages\/10\/revisions\/14"}],"wp:attachment":[{"href":"https:\/\/talltale.games\/hdapi\/wp\/v2\/media?parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}