Fair live draw with manual presence confirmation (no server), themed on the Celestials of Pandaria — Live: https://nailuj1992.github.io/fate-of-the-adventurers-manual/
翻译准备中
其他JavaScript · CSSGitHub @nailuj1992在线运营者未确认
试用过了吗? 点一下就好,无需登录。
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗🌐 English · Español
▶ Live version: https://nailuj1992.github.io/fate-of-the-adventurers-manual/ (published automatically on GitHub Pages whenever a pull request is merged into master)
A configurable draw (1 to 50 prizes) with no server and no installation: open index.html in your browser
(keep adapter.js, core.js, i18n.js and the css/, ui/, locales/ and img/ folders next to it: if you copy the page somewhere else, copy all of them). Here the presenter confirms presence by hand after checking the chat;
there is no Twitch connection (that is what the sibling repository fate-of-the-adventurers-twitch is for). The engine is the same (core.js), so the rules are identical.
The screenshots use fictional participant names and short timings (4–14 s) so the whole event fits in a few minutes; the defaults are in Set up a draw.
1. Open the page. Open index.html (or the live version). The Participants tab is where everything starts; EN | ES switches the language.
2. Paste the participants, one per line. The panel counts valid, duplicate and empty lines (Remove duplicates and Trim spaces clean them up) and tells you when everything is ready. The Shuffle names button reorders the list at random (the draw shuffles it again when it starts).
3. Set the prizes and timings in the Settings tab: number of winners, time to confirm presence and the duration of each phase, with the order of the Celestials on the right.
The Advanced section (extra delivery margin and recovery time) and the "?" help icons explain every option. Save the settings or go straight to Start draw.
4. Start the draw. You are asked to confirm the number of participants and prizes. Once started, the settings are locked.
5. Each round runs by itself. The Celestial is introduced, then the countdown, the selection animation and the reveal of the chosen person. The draw uses crypto.getRandomValues.
6. Wait for the confirmation. The chosen person has the confirmation time to write in the stream chat; when you see it, press Confirm presence. You can pause the timer or disqualify the person (with a confirmation and a written reason).
7. Winner and transition. A confirmed winner is shown, then the next round starts with the next Celestial.
8. Absence. If the time runs out, the person is shown as absent (excluded from that round only) and another candidate is drawn. If only one eligible person is left, they are revealed directly, without countdown or roll.
9. Final screen and history. When all the prizes are assigned (or recovered by Xuen), the winners are shown with their Celestial; the presenter hands the codes over personally. The history keeps every step of the event.
In the admin panel, Settings tab:
Example: 5 prizes and 90 s to confirm → paste at least 5 names in Participants, enter 5 and 90 in Settings, check the preview and start.
The settings are stored in the browser (localStorage, no credentials) and persist between sessions; they are locked once the event starts (to change them you must cancel or restart with confirmation). Default values and limits: core.js → DEFAULT_CONFIG / LIMITS.
Celestial introduction → countdown → selection → reveal → wait for confirmation → winner or absent shown → transition → next round.
crypto.getRandomValues), so the order in which names were entered has no influence; it is noted in the history.localStorage, with the time limit computed from its absolute deadline). When it finishes or you return to the panel, that state is deleted.P key (exit with Esc) or index.html?view=presentation.Interface in English (default) and Spanish; English is the default regardless of the browser's language. EN | ES switch at the top right (remembered in localStorage) or index.html?lang=es. It changes everything instantly, history included. The texts are in locales/en.js and locales/es.js; keep core.js, i18n.js, locales/ and ui/ next to index.html.
localStorage and is restored when you reopen it, but clearing the browser data deletes it. localStorage may be unavailable in private windows (the app still works, without persistence).PERSONALIZACIÓN comments: colors and background (CSS variables) in css/app.css; the Celestials' glow colors (STORY), sounds (SOUNDS) and images (EMBLEMS, img/ folder) in ui/util.js. Timings and limits: core.js. Interface and Celestial texts: locales/*.js.
The draw uses crypto.getRandomValues with rejection (no modulo bias); Math.random is never used.