diff --git a/Architecture-Client.md b/Architecture-Client.md
index 6716623..8f794bb 100644
--- a/Architecture-Client.md
+++ b/Architecture-Client.md
@@ -1,4 +1,3 @@
-
# Tekton Armageddon - Client Architecture (Full Function Reference)
@@ -8,7 +7,7 @@ Complete per-function reference for the Godot 4.7 client codebase. Every script,
[Back to top](#top)
-## Table of Contents
+## Table of Contents
[Back to top](#top)
@@ -87,6 +86,11 @@ Complete per-function reference for the Godot 4.7 client codebase. Every script,
[Back to top](#top)
+
+## Table of Contents
+
+[Back to top](#top)
+
## 1. Project Structure Overview
[Back to top](#top)
diff --git a/Architecture-Server.md b/Architecture-Server.md
index 3d7ce8d..32a6f21 100644
--- a/Architecture-Server.md
+++ b/Architecture-Server.md
@@ -2,7 +2,6 @@
[Back to Home](./Home)
-
High-level architecture of the Nakama Lua backend. For detailed RPC reference (params, returns, errors), see [Nakama-Server-API](../Nakama-Server-API).
@@ -10,6 +9,11 @@ High-level architecture of the Nakama Lua backend. For detailed RPC reference (p
---
+
+## Table of Contents
+
+[Back to top](#top)
+
## System Overview
```mermaid
diff --git a/Home.md b/Home.md
index baf49ca..7c21016 100644
--- a/Home.md
+++ b/Home.md
@@ -1,6 +1,5 @@
# Tekton Dash Armageddon
-
- [Architecture - Client](./Architecture-Client) — Godot client code structure, managers, scenes, player controller
- [Architecture - Server](./Architecture-Server) — Nakama Lua backend topology, auth flow, wallet economy, admin roles
@@ -11,3 +10,8 @@
- [SSH Setup — Linux](./SSH-Setup-Linux)
- [SSH Setup — macOS](./SSH-Setup-macOS)
- [SSH Setup — Windows](./SSH-Setup-Windows)
+
+
+## Table of Contents
+
+[Back to top](#top)
diff --git a/Nakama-Deployment.-.md b/Nakama-Deployment.-.md
index 95389ca..61eca05 100644
--- a/Nakama-Deployment.-.md
+++ b/Nakama-Deployment.-.md
@@ -4,6 +4,11 @@
After generating an updated `tekton_admin.js` locally (see [Skin Creation Workflow](./Skin-Creation-Workflow) or the Gacha editor), push it to the remote Nakama server.
+
+## Table of Contents
+
+[Back to top](#top)
+
## Steps
1. **Copy the latest script** — open `server/nakama/tekton_admin.js` locally and copy its full contents.
diff --git a/Nakama-Server-API.md b/Nakama-Server-API.md
index 1524b55..005ba6f 100644
--- a/Nakama-Server-API.md
+++ b/Nakama-Server-API.md
@@ -1,15 +1,14 @@
# Tekton Nakama Lua Server API Reference
[Back to Home](./Home)
-
> Auto-generated from source code. For AI agents -- call these RPCs without reading Lua.
-## Table of Contents
+## Table of Contents
-[↑ Back to top](#top)
+[Back to top](#top)
1. [Authentication & Core (core.lua)](#1-authentication--core-coreluau)
@@ -28,14 +27,19 @@
---
+
+## Table of Contents
+
+[Back to top](#top)
+
## 1. Authentication & Core (`core.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### After-Hook: `after_authenticate_steam`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -50,7 +54,7 @@
### Startup (not an RPC)
-[↑ Back to top](#top)
+[Back to top](#top)
```
@@ -63,14 +67,14 @@ Creates native leaderboard `"global_high_score"` on module load (also created in
## 2. Utilities (`utils.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
Shared helpers used by other modules.
### Constants
-[↑ Back to top](#top)
+[Back to top](#top)
| Constant | Value | Purpose |
@@ -83,7 +87,7 @@ Shared helpers used by other modules.
### `utils.is_admin(context)`
-[↑ Back to top](#top)
+[Back to top](#top)
Checks if caller has admin/moderator/owner role.
@@ -96,7 +100,7 @@ Checks if caller has admin/moderator/owner role.
### `utils.is_match_host(context, match_id)`
-[↑ Back to top](#top)
+[Back to top](#top)
Checks if caller is the host of a match.
@@ -111,21 +115,21 @@ Checks if caller is the host of a match.
### `utils.require_admin(context)`
-[↑ Back to top](#top)
+[Back to top](#top)
Errors with `"Admin privileges required"` if caller is not admin/moderator/owner.
### `utils.require_admin_or_host(context, match_id)`
-[↑ Back to top](#top)
+[Back to top](#top)
Errors with `"Admin or host privileges required"` if caller is neither admin nor match host.
### `utils.resolve_channel_id(channel_id)`
-[↑ Back to top](#top)
+[Back to top](#top)
Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channel ID.
@@ -141,12 +145,12 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
## 3. User Module (`user.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### RPC: `get_user_profile`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -181,7 +185,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### RPC: `update_user_profile`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -209,7 +213,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### RPC: `search_users`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -243,7 +247,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### RPC: `change_credentials`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -276,7 +280,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### RPC: `send_lobby_invite`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -306,7 +310,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### RPC: `send_friend_request`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -336,7 +340,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### RPC: `admin_get_user_history`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -365,7 +369,7 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
### After-Hook: `after_authenticate`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -379,12 +383,12 @@ Resolves a friendly room name (e.g. `"social_global"`) to a hashed Nakama channe
## 4. Economy Module (`economy.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### Shop Catalog
-[↑ Back to top](#top)
+[Back to top](#top)
Hardcoded items available for purchase:
@@ -406,7 +410,7 @@ Hardcoded items available for purchase:
### RPC: `get_shop_catalog`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -428,7 +432,7 @@ Hardcoded items available for purchase:
### RPC: `buy_currency`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -483,7 +487,7 @@ Hardcoded items available for purchase:
### RPC: `purchase_item`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -523,7 +527,7 @@ Hardcoded items available for purchase:
### RPC: `admin_set_featured_banners`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -553,7 +557,7 @@ Hardcoded items available for purchase:
### RPC: `admin_get_featured_banners`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -574,12 +578,12 @@ Hardcoded items available for purchase:
## 5. Gacha Module (`gacha.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### Gacha Banners
-[↑ Back to top](#top)
+[Back to top](#top)
| Banner ID | Name | Currency | Pull 1 Cost | Pull 10 Cost | Pity At |
@@ -589,7 +593,7 @@ Hardcoded items available for purchase:
### Drop Rates
-[↑ Back to top](#top)
+[Back to top](#top)
| Rarity | Probability | Pool Items |
@@ -601,7 +605,7 @@ Hardcoded items available for purchase:
### Real Prize Catalog
-[↑ Back to top](#top)
+[Back to top](#top)
| Item ID | Name | Category |
@@ -613,7 +617,7 @@ Hardcoded items available for purchase:
### Fragment Items
-[↑ Back to top](#top)
+[Back to top](#top)
| ID | Name | Rarity |
@@ -624,7 +628,7 @@ Hardcoded items available for purchase:
### RPC: `perform_gacha_pull`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -671,12 +675,12 @@ Hardcoded items available for purchase:
## 6. Leaderboard Module (`leaderboard.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### Leaderboard Config
-[↑ Back to top](#top)
+[Back to top](#top)
| Property | Value |
@@ -689,7 +693,7 @@ Hardcoded items available for purchase:
### RPC: `get_leaderboard_stats`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -721,7 +725,7 @@ Hardcoded items available for purchase:
### RPC: `submit_score`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -752,7 +756,7 @@ Hardcoded items available for purchase:
### RPC: `sync_leaderboard`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -780,7 +784,7 @@ Hardcoded items available for purchase:
### RPC: `reset_stats`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -801,7 +805,7 @@ Hardcoded items available for purchase:
### RPC: `admin_update_stats`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -831,7 +835,7 @@ Hardcoded items available for purchase:
### RPC: `admin_delete_stats`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -850,7 +854,7 @@ Hardcoded items available for purchase:
### RPC: `admin_sync_leaderboard`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -865,12 +869,12 @@ Hardcoded items available for purchase:
## 7. Inbox/Mail Module (`inbox.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### RPC: `admin_send_mail`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -904,7 +908,7 @@ Hardcoded items available for purchase:
### RPC: `get_mail`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -935,7 +939,7 @@ Hardcoded items available for purchase:
### RPC: `claim_mail_reward`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -980,7 +984,7 @@ Array format: `[{type="star", amount=100}, {type="gold", amount=50}, {type="frag
### RPC: `delete_mail`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -997,7 +1001,7 @@ Array format: `[{type="star", amount=100}, {type="gold", amount=50}, {type="frag
### RPC: `save_mail_state`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1014,7 +1018,7 @@ Array format: `[{type="star", amount=100}, {type="gold", amount=50}, {type="frag
### RPC: `admin_list_mail`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1033,7 +1037,7 @@ Array format: `[{type="star", amount=100}, {type="gold", amount=50}, {type="frag
### RPC: `admin_update_mail`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1057,7 +1061,7 @@ Array format: `[{type="star", amount=100}, {type="gold", amount=50}, {type="frag
### RPC: `admin_delete_mail_server`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1078,12 +1082,12 @@ Array format: `[{type="star", amount=100}, {type="gold", amount=50}, {type="frag
## 8. Daily Rewards Module (`daily_rewards.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### Default Reward Schedule
-[↑ Back to top](#top)
+[Back to top](#top)
Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
@@ -1098,7 +1102,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `claim_daily_reward`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1135,7 +1139,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `get_daily_reward_state`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1159,7 +1163,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `set_daily_reward_config` [Admin]
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1176,7 +1180,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `get_daily_reward_config_admin` [Admin]
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1189,12 +1193,12 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
## 9. Admin Module (`admin.lua`)
-[↑ Back to top](#top)
+[Back to top](#top)
### RPC: `admin_kick_player`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1220,7 +1224,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_ban_player`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1248,7 +1252,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_unban_player`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1265,7 +1269,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_get_ban_list`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1276,7 +1280,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_get_server_stats`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1302,7 +1306,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_end_match`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1320,7 +1324,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_set_user_role`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1342,7 +1346,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_topup_gold`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1355,7 +1359,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_clear_global_chat`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1374,7 +1378,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_list_users`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1387,7 +1391,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_delete_users`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1410,7 +1414,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_get_user_detail`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1430,7 +1434,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_update_user_identity`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1454,7 +1458,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_set_user_password`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1476,7 +1480,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_get_player_list`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1487,7 +1491,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_get_chat_config`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1500,7 +1504,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_set_chat_config`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1521,7 +1525,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_purge_old_messages`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1539,7 +1543,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_list_channel_messages`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1559,7 +1563,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### RPC: `admin_delete_channel_message`
-[↑ Back to top](#top)
+[Back to top](#top)
| Field | Value |
@@ -1579,12 +1583,12 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
## 10. Storage Collections Reference
-[↑ Back to top](#top)
+[Back to top](#top)
### Collection: `"shop_config"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1593,7 +1597,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"receipts"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1602,7 +1606,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"inventory"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1612,7 +1616,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"profiles"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1623,7 +1627,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"history"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1632,7 +1636,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"stats"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1642,7 +1646,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"inbox"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1652,7 +1656,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"daily_rewards"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1661,7 +1665,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"config"` (system-level)
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1672,7 +1676,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"bans"`
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission Read | Permission Write | Schema |
@@ -1681,7 +1685,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Collection: `"matches"` (per-user)
-[↑ Back to top](#top)
+[Back to top](#top)
| Key | User | Permission | Schema |
@@ -1692,7 +1696,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
## 11. Leaderboard Config
-[↑ Back to top](#top)
+[Back to top](#top)
| Property | Value |
@@ -1708,12 +1712,12 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
## 12. Error Strings Reference
-[↑ Back to top](#top)
+[Back to top](#top)
### Auth errors (raised by utils)
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1724,7 +1728,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Economy errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1741,7 +1745,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### User errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1759,7 +1763,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Gacha errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1774,7 +1778,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Leaderboard errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1785,7 +1789,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Inbox errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1799,7 +1803,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Daily reward errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1810,7 +1814,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Admin errors
-[↑ Back to top](#top)
+[Back to top](#top)
| Error String | Trigger |
@@ -1837,12 +1841,12 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
## 13. Permission Levels
-[↑ Back to top](#top)
+[Back to top](#top)
### Role Hierarchy
-[↑ Back to top](#top)
+[Back to top](#top)
| Role | Can Call Admin RPCs | Can Modify Roles | Notes |
@@ -1854,7 +1858,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Auth Check Functions Summary
-[↑ Back to top](#top)
+[Back to top](#top)
| Check | What It Allows |
@@ -1865,7 +1869,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### Storage Permission Bits
-[↑ Back to top](#top)
+[Back to top](#top)
| Value | Meaning |
@@ -1876,7 +1880,7 @@ Days 1-31, each day gives `star` currency: `min(10 + (day-1)*5, 100)`.
### System User ID
-[↑ Back to top](#top)
+[Back to top](#top)
```
@@ -1889,7 +1893,7 @@ Used for global/shared storage collections (bans, config, global_mail, shop_conf
## RPC Summary Table
-[↑ Back to top](#top)
+[Back to top](#top)
| RPC Name | Module | Auth | Admin? |
@@ -1949,7 +1953,7 @@ Used for global/shared storage collections (bans, config, global_mail, shop_conf
## Wallet Update Summary
-[↑ Back to top](#top)
+[Back to top](#top)
| Operation | Changeset | Context |
diff --git a/Patch-Release-Workflow.-.md b/Patch-Release-Workflow.-.md
index 8cd64b5..bdff32d 100644
--- a/Patch-Release-Workflow.-.md
+++ b/Patch-Release-Workflow.-.md
@@ -6,6 +6,11 @@ Complete guide for shipping updates to Tekton players — hot patches (`.pck`) f
---
+
+## Table of Contents
+
+[Back to top](#top)
+
## Overview
Two automated CI pipelines handle all distribution:
diff --git a/SSH-Setup-Linux.md b/SSH-Setup-Linux.md
index 0543069..e0c267f 100644
--- a/SSH-Setup-Linux.md
+++ b/SSH-Setup-Linux.md
@@ -2,6 +2,11 @@
[Back to Home](./Home)
+
+## Table of Contents
+
+[Back to top](#top)
+
## Generate an SSH key
Open a terminal and run:
diff --git a/SSH-Setup-Windows.md b/SSH-Setup-Windows.md
index 29c9d3c..ba67c77 100644
--- a/SSH-Setup-Windows.md
+++ b/SSH-Setup-Windows.md
@@ -2,6 +2,11 @@
[Back to Home](./Home)
+
+## Table of Contents
+
+[Back to top](#top)
+
## Install Git for Windows
Download from https://git-scm.com/download/win and install with default options.
diff --git a/SSH-Setup-macOS.md b/SSH-Setup-macOS.md
index 30d6f44..07ab20f 100644
--- a/SSH-Setup-macOS.md
+++ b/SSH-Setup-macOS.md
@@ -2,6 +2,11 @@
[Back to Home](./Home)
+
+## Table of Contents
+
+[Back to top](#top)
+
## Generate an SSH key
Open **Terminal** and run:
diff --git a/Skin-Creation-Workflow.-.md b/Skin-Creation-Workflow.-.md
index ab3f757..960b67d 100644
--- a/Skin-Creation-Workflow.-.md
+++ b/Skin-Creation-Workflow.-.md
@@ -2,12 +2,16 @@
[Back to Home](./Home)
-
How to author a new character skin, register it in the game's shop/gacha catalog, and ship it to players.
---
+
+## Table of Contents
+
+[Back to top](#top)
+
## Overview
Each skin is defined in two places that must stay in sync: