botwrando
A companion webapp for running randomized all-shrines runs of The Legend of Zelda: Breath of the Wild.
Demo here: https://botwrando.github.io/botwrando/
A companion webapp for running randomized all-shrines runs of The Legend of Zelda: Breath of the Wild
Home Page: https://botwrando.github.io/botwrando
License: MIT License
A companion webapp for running randomized all-shrines runs of The Legend of Zelda: Breath of the Wild.
Demo here: https://botwrando.github.io/botwrando/
Something not easily hit by accident, but still accessibility-friendly.
likely because RunTimer component isn't aware the run has been reset.
Refreshing the page should not reset the run, but be completely transparent. Store the run state in localstorage, and recall it on page load.
Returns masochistic seeds; early eventide, harder ToS's first, etc.
Creates a satisfying endgame, as you're able to blast through easier shrines with high-level equipment.
Current
Name of the first shrine is shown
Expected
The caption "Start the timer to reveal the first shrine!"
Recent coverage report:
------------------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
------------------------------|----------|----------|----------|----------|-------------------|
All files | 62.53 | 44.74 | 53.04 | 65.45 | |
src | 0 | 0 | 0 | 0 | |
index.tsx | 0 | 100 | 100 | 0 | 6,11 |
serviceWorker.ts | 0 | 0 | 0 | 0 |... 39,140,142,145 |
src/components/App | 100 | 100 | 100 | 100 | |
App.tsx | 100 | 100 | 100 | 100 | |
src/components/AppFooter | 100 | 100 | 100 | 100 | |
AppFooter.tsx | 100 | 100 | 100 | 100 | |
src/components/AppHeader | 100 | 100 | 100 | 100 | |
AppHeader.tsx | 100 | 100 | 100 | 100 | |
src/components/FormattedTime | 100 | 93.33 | 100 | 100 | |
FormattedTime.tsx | 100 | 93.33 | 100 | 100 | 22 |
src/components/Help | 62.5 | 66.67 | 33.33 | 62.5 | |
Help.tsx | 62.5 | 66.67 | 33.33 | 62.5 | 15,69,70 |
src/components/HotkeyList | 100 | 100 | 100 | 100 | |
HotkeyList.tsx | 100 | 100 | 100 | 100 | |
src/components/QuickMap | 100 | 75 | 100 | 100 | |
QuickMap.tsx | 100 | 75 | 100 | 100 | 14 |
src/components/RunDisplay | 100 | 100 | 100 | 100 | |
RunDisplay.tsx | 100 | 100 | 100 | 100 | |
src/components/RunManager | 37.08 | 14.29 | 24.14 | 43.84 | |
RunManager.tsx | 37.08 | 14.29 | 24.14 | 43.84 |... 22,165,166,167 |
src/components/RunTimer | 41.94 | 5.56 | 50 | 44.44 | |
RunTimer.tsx | 41.94 | 5.56 | 50 | 44.44 |... 39,40,42,43,53 |
src/components/SeedInfo | 100 | 100 | 100 | 100 | |
SeedInfo.tsx | 100 | 100 | 100 | 100 | |
src/components/SeedPicker | 75 | 100 | 33.33 | 75 | |
SeedPicker.tsx | 75 | 100 | 33.33 | 75 | 13,19 |
src/components/ShrineInfo | 81.82 | 50 | 100 | 100 | |
ShrineInfo.tsx | 81.82 | 50 | 100 | 100 | 24,28,29 |
src/components/SplitHistory | 41.67 | 0 | 37.5 | 42.86 | |
SplitHistory.tsx | 41.67 | 0 | 37.5 | 42.86 |... 47,48,49,51,60 |
src/components/SplitTimer | 80.95 | 64.29 | 100 | 94.44 | |
SplitTimer.tsx | 80.95 | 64.29 | 100 | 94.44 | 37 |
src/components/WorldMap | 46.67 | 25 | 25 | 46.67 | |
WorldMap.tsx | 46.67 | 25 | 25 | 46.67 |... 16,17,18,23,40 |
src/lib | 100 | 97.5 | 100 | 100 | |
keyboard.ts | 100 | 90 | 100 | 100 | 94 |
rando.ts | 100 | 100 | 100 | 100 | |
run.ts | 100 | 100 | 100 | 100 | |
shrines.ts | 100 | 100 | 100 | 100 | |
time.ts | 100 | 100 | 100 | 100 | |
utils.ts | 100 | 100 | 100 | 100 | |
------------------------------|----------|----------|----------|----------|-------------------|
Need to get setup to start writing tests for this code, as well as automated CI for testing, coverage and build upon commit. I'm working on a PR for this now.
To prevent endless criscrossing when running warpless, generate a seed that puts a cap on distance between adjacent shrines.
Likely easiest way is via URL parameter. Something like:
https://botwrando.github.io/botwrando?seed=asfhasgasfhsdfhsdf35473
Reset everything and go back to zero page.
https://botwrando.github.io/ should redirect to the randomizer.
Speedrunners have certain additional tools at their disposal, so we can generate seeds which leverage their skills for more entertaining runs.
When you build the app, it shows a number of fixable warnings. It would be a good idea to fix them. I can put in a PR for this once testing is setup.
yarn build --production
yarn run v1.17.3
$ react-scripts build --production
Creating an optimized production build...
Compiled with warnings.
./src/components/SplitTimer/SplitTimer.tsx
Line 26:7: '_NotStarted' is assigned a value but never used @typescript-eslint/no-unused-vars
Line 27:7: '_Paused' is assigned a value but never used @typescript-eslint/no-unused-vars
./src/components/RunTimer/RunTimer.tsx
Line 61:5: React Hook React.useEffect has a missing dependency: 'onUpdatePausedTime'. Either include it or remove the dependency array react-hooks/exhaustive-deps
./src/components/RunManager/RunManager.tsx
Line 88:5: React Hook React.useEffect has missing dependencies: 'run.shrineIds.length' and 'setRunState'. Either include them or remove the dependency array react-hooks/exhaustive-deps
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
File sizes after gzip:
45.99 KB build/static/js/2.793d5e05.chunk.js
9.03 KB build/static/js/main.52beccc6.chunk.js
5.56 KB build/static/css/main.e6780bc8.chunk.css
775 B build/static/js/runtime-main.5ab1b9f3.js
The project was built assuming it is hosted at /botwrando/.
You can control this with the homepage field in your package.json.
The build folder is ready to be deployed.
Find out more about deployment here:
bit.ly/CRA-deploy
✨ Done in 5.69s.
Rather than having the person type in a random string, let's just let them generate it with the click of a button.
Expanding upon the "Eventide protection" system, ensure a casual-friendly seed by imposing further constraints:
Currently, when you do a run and add the blood moon shrine into the run before resetting, the shrines list will still contain the blood moon shrine in the same position when the run is restarted.
I found this by adding it earlier the second time, resulting in it showing up twice during the run.
The blood moon shrine should be removed from the shrines list upon reset.
Show a queue of the n upcoming shrines
Bonus: "Hold shrine" just like hold piece
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.