rearrage_stuff
This commit is contained in:
129
resources/ideas.md
Executable file
129
resources/ideas.md
Executable file
@@ -0,0 +1,129 @@
|
||||
```
|
||||
___ ____ _____ _ ____
|
||||
|_ _| _ \| ____| / \ / ___|
|
||||
| || | | | _| / _ \ \___ \
|
||||
| || |_| | |___ / ___ \ ___) |
|
||||
|___|____/|_____/_/ \_\____/
|
||||
-------------------------------
|
||||
```
|
||||
|
||||
# GARBAGE COLLECTORS
|
||||
|
||||
At night, the Garbage Collectors (smelly gnolls) or other Janitor Mobs come out
|
||||
to remove any loose items or dead characters that may be lying around. They
|
||||
are quite tough.
|
||||
|
||||
These janitor mobs clean up almost everywhere except Instances (that clean up themselves)
|
||||
and players' homes, prisons, and other VIP locations.
|
||||
|
||||
They never trigger quests or events where they go, but:
|
||||
|
||||
- they can interact with adventurers (they are quite aggressive, and may attack unprovoked, maybe sneak past)
|
||||
- they can interact with each other, but mostly do so if there are PCs nearby.
|
||||
|
||||
# ATTRITION
|
||||
|
||||
Even when a player is offline, their characters have to pay rent on their homes
|
||||
or room and board in an inn, or they can chance it in the wilderness.
|
||||
|
||||
If they run out of money or rations, there is a small chance each day that the
|
||||
characters will be garbage collected.
|
||||
|
||||
The sum that needs paying while offline not very large though.
|
||||
|
||||
# CHAT SPELL
|
||||
|
||||
You can buy a spell that lets you initiate a secure and encrypted group chat
|
||||
with other players.
|
||||
|
||||
The person who casts the spell generates a private key and sends the public key
|
||||
to the others in the chat. Each recipient then generates a one-time symmetric
|
||||
key and sends it securely (via the caster's public key) to the caster. The
|
||||
caster then generates a "group chat key" and sends it to each recipient via
|
||||
their one-time key.
|
||||
|
||||
Any chats via the spell from then on is encrypted with the "group chat key".
|
||||
|
||||
All parties throw away the group chat key when the spell ends.
|
||||
|
||||
Each group chat has a name.
|
||||
|
||||
```
|
||||
____ _
|
||||
| __ ) _ _ __ _ __ _ ___ | |__ _ _ __ _ __ _ ___
|
||||
| _ \| | | |/ _` |/ _` |/ _ \ | '_ \| | | |/ _` |/ _` |/ _ \
|
||||
| |_) | |_| | (_| | (_| | __/ | |_) | |_| | (_| | (_| | __/
|
||||
|____/ \__, |\__, |\__, |\___| |_.__/ \__, |\__, |\__, |\___|
|
||||
|___/ |___/ |___/ |___/ |___/ |___/
|
||||
|
||||
```
|
||||
|
||||
# CONSTRUCTION / BUILDING
|
||||
|
||||
- You can build a house / mansion / castle / wizard tower / underdark / cave / wattever.
|
||||
- You can invite other players oveer for a tjat.
|
||||
- You can build portals to other dimensions (instances),
|
||||
and you can allow other players to try it out.
|
||||
|
||||
```
|
||||
____ __ __ _
|
||||
| _ \ _ _ _ __ __ _ ___ ___ _ __ | \/ | ___ __| | ___ ___
|
||||
| | | | | | | '_ \ / _` |/ _ \/ _ \| '_ \ | |\/| |/ _ \ / _` |/ _ \/ __|
|
||||
| |_| | |_| | | | | (_| | __/ (_) | | | | | | | | (_) | (_| | __/\__ \
|
||||
|____/ \__,_|_| |_|\__, |\___|\___/|_| |_| |_| |_|\___/ \__,_|\___||___/
|
||||
|___/
|
||||
```
|
||||
|
||||
- `Caves`
|
||||
- GameMode = _Spelunking_: Sir Whalemeat the Thurd is Spelunking in the Caves of Purh.
|
||||
- Played like `Rogue`
|
||||
- Procedurally (pre-)generated caves (Game of Life? automata?)
|
||||
- Turn based: you take one action, and everything else gets one `tick`.
|
||||
- 1 Location == 1 cave
|
||||
- `Donjons`
|
||||
- GameMode = _Crawling_: Lady Gurthie Firefoot is Crawling the Donjons of Speematoforr.
|
||||
- Played like `Knights of Pen and Paper`
|
||||
- WebGL: Actual rendered 3d, but black and white.
|
||||
- Texture pack is just ascii text (TEXTures).
|
||||
- Possibly Procedurally generated
|
||||
- Most likely like this: https://www.youtube.com/watch?v=D1jLK4TG6O4&list=LL
|
||||
- Animations like `Stonekeep` - only showing animation when the player moves.
|
||||
- Monsters are just outlines of monster shapes, shaded with variably-sized letters
|
||||
that spell out the monster's name.
|
||||
- Procedurally (pre-)generated dungeons
|
||||
- Every time you enter a non-explored space, you roll a die, and see what happens.
|
||||
- Combat is like `Dark Queen of Krynn` (i.e. third person semi-iso)
|
||||
- 1 Location == 1 donjon room/area
|
||||
- BSP (binary space partition) https://www.youtube.com/watch?v=TlLIOgWYVpI&t=374s
|
||||
|
||||
- `Overland`
|
||||
- GameMode = _Traveling_: Swift Dangledonk the Slow is Traveling the Marshes of Moohfaahsaah
|
||||
- Travel is like `Rogue`
|
||||
- Combat is like `Dark Queen of Krynn`
|
||||
- Static terrain.
|
||||
- Random encounters.
|
||||
- Each encounter has a randomly generated mini map (which is just monsters and a few obstacles)
|
||||
- 1 Location == 1 area / screen
|
||||
- `Settlements`
|
||||
- GameMode = _Sojourning_: Swingleding the Mage is Sojourning in the City of Hovedstad.
|
||||
- may be played like MUDs (`go west`, `go to town square`, etc.).
|
||||
- Static (mostly)
|
||||
- Combat is like `Dark Queen of Krynn`
|
||||
- 1 Location == 1 area (an inn, etc.)
|
||||
- `Dwelling`
|
||||
- GameMode = _Hanging Out_: Wendlegloom Uklimuck is Hanging Out in The House of the Sitting Sun.
|
||||
- Homes that players can own or build.
|
||||
- Like `Rogue` but with tweaks such as detailed descriptions
|
||||
of the cool stuff the players have done with the room.
|
||||
|
||||
```
|
||||
____ _ _ _ _ ____
|
||||
| _ \| | | | \ | / ___|
|
||||
| |_) | | | | \| \___ \
|
||||
| __/| |_| | |\ |___) |
|
||||
|_| \___/|_| \_|____/
|
||||
```
|
||||
|
||||
- Waif-Unction Collabs
|
||||
- Waify Collapse
|
||||
- Drag-on lance
|
||||
39
resources/inspiration/castle_ascii_art.txt
Normal file
39
resources/inspiration/castle_ascii_art.txt
Normal file
@@ -0,0 +1,39 @@
|
||||
▄
|
||||
█▐▀▀▀▌▄
|
||||
█ ▐▀▀▀▌▌▓▌
|
||||
█ ▄▄ ▄▄▀
|
||||
█ ▐▀▀▀▀
|
||||
▄█▄
|
||||
▓▀ ▀▌
|
||||
▓▀ ▓▄
|
||||
▄▓ ▐▓
|
||||
▄▓ ▀▌
|
||||
▓▀▀▀▀▀▓ ▓▀▀▀▀▓ ▐█▀▀▀▀▓
|
||||
█ █ █ ▓░ ▓▌ ▓░
|
||||
█ ▀▀▀▀▀ ▀▀▀▀▀ ▓░
|
||||
▓▒ ▓░
|
||||
▀▓▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
|
||||
▐▌ █
|
||||
▓▀▀▀▀█ ▐█▀▀▀█ ▐█▀▀▀▓▒ ▐▌ █ ▐▓▀▀▀▓▒ ▓▀▀▀▓▒ █▀▀▀▀▓
|
||||
█ █ ▐▌ █ ▐▌ ▓▒ ▐▌ ▐██░ █ ▐█ ▓▄ █ ▐▌ █ ▐█
|
||||
▓░ ▐▀▀▀ ▐▀▀▀ █░ ▐▌ ▓██▌ █ ▐█ ▀▀▀▀ ▀▀▀ ▐▌
|
||||
▓▒ █ ▐▌ ▀██▌ █ █ ▐▌
|
||||
▀▀▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▓▀ ▐▌ █ ▀▌▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▓
|
||||
▐▌ █ ▐▌ █ █ ▐▌
|
||||
▐▌ █ ▐▌ █ █ ▐▌
|
||||
▐▌ ▓▌ █▀▀▀▀▀█ ▐▌▐▌▀▀▀▀█ ▓▀▀▀▀▓▄ █ █▀▀▀▀▀█ ▓▌ ▐▌
|
||||
▓▌ ██▌ █ █ ▓▌▓▒ █ █ ▐▌ █ █ █ ▓██ ▐▓
|
||||
▓▒ ▐██▌ █ █ ▓██░ ▐█
|
||||
▓ ▐▐ █ █ ▐▐ █
|
||||
█ █ █ █
|
||||
█ █ ▄▄▄ █ █
|
||||
█ █ ▄▀▀ ▀▀▓▄ █ █
|
||||
█ █ ▄▌ ▀▓ █ █
|
||||
▐█ █ ▓▀ ▐█ █ ▓▒
|
||||
▐▌ █ ▐▓ ▐▌ ▐█ ▓▒
|
||||
▐▌ █ █ █ ▐█ ▐▌
|
||||
▐▌ ▓░ █ █ ▐▌ ▐▌
|
||||
▓▒ ▓░ █ ▓▒ ▐▌ ▐▓
|
||||
▓░ ▓░ ▐▌ ▀▌ ▐▌ ▐█
|
||||
▀▌▄▄ ▓▄▄ ▐█ ▓▌ ▄▄▄▐▌ ▄▄▄▀
|
||||
▐▐▐▀▀▀▀▐▐▐ ▐▐▀▀▀▀▀▀▐▐
|
||||
48
resources/inspiration/nethack_screenshot.txt
Executable file
48
resources/inspiration/nethack_screenshot.txt
Executable file
@@ -0,0 +1,48 @@
|
||||
┌────────────────────────────────────────────────────────────────────────────────┐┌────────────────────────────────────────────────────────────────────────────┐
|
||||
│There are several objects here. ││Weapons │
|
||||
│Really attack Annootok? (yes|no) no ││k) 4 blessed daggers │
|
||||
│What do you want to use or apply? [dimPR or ?*] ││M) 4 blessed daggers (at the ready) │
|
||||
│V - a blessed scroll labeled ASHPD SODALG. ││l) 2 uncursed elven daggers │
|
||||
│j - 2 uncursed scrolls labeled DAIYEN FOOELS. ││a) blessed rustproof +1 Excalibur (weapon in hand) │
|
||||
│D - an uncursed scroll labeled ELAM EBOW. ││Armor │
|
||||
│W - 2 cursed scrolls labeled GNIK SISI VLE. ││O) blessed +1 orcish helm (being worn) │
|
||||
│s - 2 uncursed scrolls labeled HACKEM MUCHE. ││L) blessed rusty +1 pair of gauntlets of power (being worn) │
|
||||
│p - an uncursed scroll labeled KIRJE. u - an uncursed scroll labeled TEMOV. ││y) uncursed +0 pair of iron shoes (being worn) │
|
||||
│Q - 2 uncursed scrolls labeled VELOX NEB. ││c) uncursed +3 small shield (being worn) │
|
||||
│X - a blessed scroll labeled VERR YED HORRE. ││C) uncursed +0 leather cloak (being worn) │
|
||||
│What do you want to drop? [a-npqsuyzC-ELMO-RV-X or ?*] ││q) uncursed mummy wrapping │
|
||||
│You drop a blessed scroll labeled ASHPD SODALG. ││f) uncursed +0 ring mail (being worn) │
|
||||
│Annootok offers 30 gold pieces for your scroll labeled ASHPD SODALG. Sell it? ││Comestibles │
|
||||
│[ynaq] (y) ││n) uncursed food ration │
|
||||
│V - a blessed scroll labeled ASHPD SODALG. ││z) 2 uncursed pancakes │
|
||||
│What do you want to call? [dgijmpsuyDELO-RV-X or ?*] ││h) uncursed sprig of wolfsbane │
|
||||
│Call a scroll labeled ASHPD SODALG: ASHPD enchARM|rmvCUR|enchWEP ││b) 2 uncursed eggs │
|
||||
└────────────────────────────────────────────────────────────────────────────────┘│e) 2 uncursed lichen corpses │
|
||||
┌────────────────────────────────────────────────────────────────────────────────┐│Scrolls │
|
||||
│ ││j) 2 uncursed scrolls labeled DAIYEN FOOELS │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ ││PD) uncursed scroll labeled ELAM EBOW │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD>Ŀ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*[<5B><><EFBFBD>[[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││TW) 2 cursed scrolls labeled GNIK SISI VLE │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD>><3E><><EFBFBD>[<5B><>)<29><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││ms) 2 uncursed scrolls labeled HACKEM MUCHE │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD>[<5B> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││dp) uncursed scroll labeled KIRJE │
|
||||
│ <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││Uu) uncursed scroll labeled TEMOV │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││GQ) 2 uncursed scrolls labeled VELOX NEB │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││X) blessed scroll labeled VERR YED HORRE │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD> ││V) blessed scroll called ASHPD enchARM|rmvCUR|enchWEP │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ││Wands │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!!%<25><><EFBFBD><EFBFBD><EFBFBD> ││R) uncursed wand called slow monster │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F>%(%<25><><EFBFBD><EFBFBD><EFBFBD> ││P) uncursed wand of digging │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%%%<25><><EFBFBD><EFBFBD><EFBFBD> ││Tools │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>[<5B><>[<5B> ││m) uncursed bag called sack containing 2 items │
|
||||
│ <20><><EFBFBD><EFBFBD>%@)/<2F><><EFBFBD><EFBFBD><EFBFBD>((((<28>%<25> <20>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ ││d) uncursed lamp │
|
||||
│ *<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ <20><>B<EFBFBD><42>?*)<29><><EFBFBD><EFBFBD><EFBFBD>((]<5D><><EFBFBD><EFBFBD> <20>(((<28><><EFBFBD><EFBFBD>(<28> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││Gems/Stones │
|
||||
│ *<2A><>[<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+ <20> <20>(((<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││g) uncursed green gem named 3449 │
|
||||
│ <20>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││E) uncursed violet gem named COLDR ESP FIRER │
|
||||
│ 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││i) uncursed stone called gray not load │
|
||||
│ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ││ │
|
||||
│ ││ │
|
||||
└────────────────────────────────────────────────────────────────────────────────┘│ │
|
||||
┌────────────────────────────────────────────────────────────────────────────────┐│ │
|
||||
│[M0ll13 the Fighter ] St:25 Dx:16 Co:18 In:8 Wi:12 Ch:7 ││ │
|
||||
│Lawful $:0 HP:63(63) Pw:26(26) AC:-3 Xp:8 ││ │
|
||||
│Dlvl:6 T:10818 ││ │
|
||||
└────────────────────────────────────────────────────────────────────────────────┘└────────────────────────────────────────────────────────────────────────────┘
|
||||
33
resources/js_recipes/recipe - bottomless-javascript-class.md
Executable file
33
resources/js_recipes/recipe - bottomless-javascript-class.md
Executable file
@@ -0,0 +1,33 @@
|
||||
Got it — you’d like the chain of accessed properties to “remember” its path, so you can do things like:
|
||||
|
||||
```js
|
||||
console.log(foo.bar.baz.toString()); // "bar.baz"
|
||||
```
|
||||
|
||||
You can extend the Proxy trick for that:
|
||||
|
||||
```js
|
||||
function Bottomless(path = []) {
|
||||
return new Proxy(() => {}, {
|
||||
get(_, prop) {
|
||||
if (prop === "toString" || prop === "valueOf") {
|
||||
return () => path.join(".");
|
||||
}
|
||||
return Bottomless([...path, prop]);
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
const foo = Bottomless();
|
||||
|
||||
console.log(foo.bar.baz.toString()); // "bar.baz"
|
||||
console.log(foo.hello.world.toString()); // "hello.world"
|
||||
```
|
||||
|
||||
⚡ Notes:
|
||||
|
||||
- `toString` (and `valueOf`) are trapped so you can stringify naturally.
|
||||
- The chain isn’t “real” objects anymore, but function proxies that track their path.
|
||||
- You could also add a `.path` property if you prefer structured access.
|
||||
|
||||
Want me to make it so it **still supports assignment** (`foo.bar = 123`) _and_ path stringifying?
|
||||
48
resources/js_recipes/recipe - find-element-width-in-chars.html
Executable file
48
resources/js_recipes/recipe - find-element-width-in-chars.html
Executable file
@@ -0,0 +1,48 @@
|
||||
<!-- CHATGPT EXAMPLE -->
|
||||
<!-- 1. Get the width of the container (in pixels). -->
|
||||
<!-- 2. Get the width of a single character in the monospaced font (this can be done by creating a temporary element with the same font and measuring its width).-->
|
||||
<!-- 3. Divide the container's width by the character's width to get the number of characters. -->
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Measure Div Width in Characters</title>
|
||||
<style>
|
||||
.monospaced-div {
|
||||
font-family: "Courier New", Courier, monospace; /* Monospaced font */
|
||||
width: 360px; /* Example width in pixels */
|
||||
border: 1px solid #333;
|
||||
padding: 10px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="monospaced-div">This is a div with monospaced text.</div>
|
||||
|
||||
<script>
|
||||
function getMonospacedCharCount(div) {
|
||||
// Create a temporary span to get the width of one character
|
||||
const testChar = document.createElement("span");
|
||||
testChar.textContent = "0"; // Monospaced fonts use "0" for width
|
||||
testChar.style.fontFamily = window.getComputedStyle(div).fontFamily;
|
||||
testChar.style.visibility = "hidden"; // Hide the element
|
||||
document.body.appendChild(testChar);
|
||||
|
||||
const charWidth = testChar.offsetWidth; // Get width of a single character
|
||||
document.body.removeChild(testChar); // Remove the test element
|
||||
|
||||
// Get the width of the div and calculate how many characters fit
|
||||
const divWidth = div.offsetWidth;
|
||||
|
||||
// Return the number of characters that fit in the div width
|
||||
return Math.floor(divWidth / charWidth);
|
||||
}
|
||||
|
||||
const div = document.querySelector(".monospaced-div");
|
||||
const charCount = getMonospacedCharCount(div);
|
||||
console.log("Number of characters the div can hold:", charCount);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
14
resources/js_recipes/recipe - xorshift32.js
Executable file
14
resources/js_recipes/recipe - xorshift32.js
Executable file
@@ -0,0 +1,14 @@
|
||||
const [XSgetSeed, XSgetNext, XSrand] = (() => {
|
||||
const m = 2 ** 32;
|
||||
const XSgetSeed = () => Math.floor(Math.random() * (m - 1)) + 1;
|
||||
const s = Uint32Array.of(XSgetSeed());
|
||||
return [XSgetSeed, XSgetNext, (seed) => XSgetNext(seed) / m];
|
||||
}
|
||||
|
||||
function XSgetNext(seed) {
|
||||
if (seed !== undefined) s[0] = seed;
|
||||
s[0] ^= s[0] << 13;
|
||||
s[0] ^= s[0] >>> 17;
|
||||
s[0] ^= s[0] << 5;
|
||||
return s[0];
|
||||
}
|
||||
110
resources/randomization/random_name_adjectives.txt
Normal file
110
resources/randomization/random_name_adjectives.txt
Normal file
@@ -0,0 +1,110 @@
|
||||
const ADJECTIVES = [
|
||||
'admiring',
|
||||
'adoring',
|
||||
'affectionate',
|
||||
'agitated',
|
||||
'amazing',
|
||||
'angry',
|
||||
'awesome',
|
||||
'beautiful',
|
||||
'blissful',
|
||||
'bold',
|
||||
'boring',
|
||||
'brave',
|
||||
'busy',
|
||||
'charming',
|
||||
'clever',
|
||||
'cool',
|
||||
'compassionate',
|
||||
'competent',
|
||||
'condescending',
|
||||
'confident',
|
||||
'cranky',
|
||||
'crazy',
|
||||
'dazzling',
|
||||
'determined',
|
||||
'distracted',
|
||||
'dreamy',
|
||||
'eager',
|
||||
'ecstatic',
|
||||
'elastic',
|
||||
'elated',
|
||||
'elegant',
|
||||
'eloquent',
|
||||
'epic',
|
||||
'exciting',
|
||||
'fervent',
|
||||
'festive',
|
||||
'flamboyant',
|
||||
'focused',
|
||||
'friendly',
|
||||
'frosty',
|
||||
'funny',
|
||||
'gallant',
|
||||
'gifted',
|
||||
'goofy',
|
||||
'gracious',
|
||||
'great',
|
||||
'happy',
|
||||
'hardcore',
|
||||
'heuristic',
|
||||
'hopeful',
|
||||
'hungry',
|
||||
'infallible',
|
||||
'inspiring',
|
||||
'interesting',
|
||||
'intelligent',
|
||||
'jolly',
|
||||
'jovial',
|
||||
'keen',
|
||||
'kind',
|
||||
'laughing',
|
||||
'loving',
|
||||
'lucid',
|
||||
'magical',
|
||||
'mystifying',
|
||||
'modest',
|
||||
'musing',
|
||||
'naughty',
|
||||
'nervous',
|
||||
'nice',
|
||||
'nifty',
|
||||
'nostalgic',
|
||||
'objective',
|
||||
'optimistic',
|
||||
'peaceful',
|
||||
'pedantic',
|
||||
'pensive',
|
||||
'practical',
|
||||
'priceless',
|
||||
'quirky',
|
||||
'quizzical',
|
||||
'recursing',
|
||||
'relaxed',
|
||||
'reverent',
|
||||
'romantic',
|
||||
'sad',
|
||||
'serene',
|
||||
'sharp',
|
||||
'silly',
|
||||
'sleepy',
|
||||
'stoic',
|
||||
'strange',
|
||||
'stupefied',
|
||||
'suspicious',
|
||||
'sweet',
|
||||
'tender',
|
||||
'thirsty',
|
||||
'trusting',
|
||||
'unruffled',
|
||||
'upbeat',
|
||||
'vibrant',
|
||||
'vigilant',
|
||||
'vigorous',
|
||||
'wizardly',
|
||||
'wonderful',
|
||||
'xenodochial',
|
||||
'youthful',
|
||||
'zealous',
|
||||
'zen',
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"fantasy-name-generator": "^2.0.0",
|
||||
"fantasy-names": "^2.0.1",
|
||||
"yet-another-name-generator": "^1.2.0"
|
||||
}
|
||||
}
|
||||
191
resources/text-ui-characters.md
Executable file
191
resources/text-ui-characters.md
Executable file
@@ -0,0 +1,191 @@
|
||||
Here are some ASCII and UTF-8 characters commonly used for "shading" effects in text art or terminal displays. These characters provide varying levels of density or shading:
|
||||
|
||||
### ASCII Shading Characters
|
||||
|
||||
These are basic ASCII characters often used for shading:
|
||||
|
||||
```
|
||||
Light shade: ░ (U+2591)
|
||||
Medium shade: ▒ (U+2592)
|
||||
Dark shade: ▓ (U+2593)
|
||||
Full block: █ (U+2588)
|
||||
Half block: ▄ (U+2584), ▀ (U+2580)
|
||||
```
|
||||
|
||||
### Additional UTF-8 Block Characters
|
||||
|
||||
These Unicode characters offer more granular shading or block patterns:
|
||||
|
||||
```
|
||||
Light block: ░ (U+2591)
|
||||
Medium block: ▒ (U+2592)
|
||||
Dark block: ▓ (U+2593)
|
||||
Solid block: █ (U+2588)
|
||||
Upper half block: ▀ (U+2580)
|
||||
Lower half block: ▄ (U+2584)
|
||||
Left half block: ▌ (U+258C)
|
||||
Right half block: ▐ (U+2590)
|
||||
Quadrant blocks: ▖ (U+2596), ▗ (U+2597), ▘ (U+2598), ▝ (U+259D)
|
||||
Checkerboard: ▚ (U+259A), ▞ (U+259E)
|
||||
```
|
||||
|
||||
### Example Usage
|
||||
|
||||
Here’s an example of a simple shading gradient using some of these characters:
|
||||
|
||||
```
|
||||
Light to Dark: ░ ▒ ▓ █
|
||||
Half blocks: ▀ ▄ ▌ ▐
|
||||
Quadrant pattern: ▖ ▗ ▘ ▝
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
- Not all terminals or text editors display Unicode characters consistently, so ASCII characters like `.:;#+` are sometimes used for basic shading in simpler environments.
|
||||
- If you want to create specific patterns or need more complex ASCII art, let me know, and I can generate or suggest more detailed designs!
|
||||
- If you meant something specific by "shading" (e.g., for a particular programming context or art style), please clarify, and I’ll tailor the response further.
|
||||
|
||||
Below is a collection of ASCII and UTF-8 characters suitable for creating frames, borders, or "windows" in a text-based user interface (TUI), such as those built with ncurses. These characters can be used to draw boxes, lines, and corners to simulate window-like structures in a terminal.
|
||||
|
||||
### ASCII Characters for Frames
|
||||
|
||||
These are basic ASCII characters that work universally in most terminals:
|
||||
|
||||
```
|
||||
Horizontal line: - (U+002D)
|
||||
Vertical line: | (U+007C)
|
||||
Cross/intersection: + (U+002B)
|
||||
Corners:
|
||||
Top-left: + (U+002B) or `
|
||||
Top-right: + (U+002B) or '
|
||||
Bottom-left: + (U+002B) or ,
|
||||
Bottom-right: + (U+002B) or .
|
||||
```
|
||||
|
||||
Example simple ASCII window:
|
||||
|
||||
```
|
||||
+----------+
|
||||
| Content |
|
||||
+----------+
|
||||
```
|
||||
|
||||
### UTF-8 Box-Drawing Characters
|
||||
|
||||
Unicode provides a dedicated **Box Drawing** block (U+2500–U+257F) for creating more refined frames. These are widely supported in modern terminals and ncurses:
|
||||
|
||||
#### Single-Line Box Drawing
|
||||
|
||||
```
|
||||
Horizontal line: ─ (U+2500)
|
||||
Vertical line: │ (U+2502)
|
||||
Corners:
|
||||
Top-left: ┌ (U+250C)
|
||||
Top-right: ┐ (U+2510)
|
||||
Bottom-left: └ (U+2514)
|
||||
Bottom-right: ┘ (U+2518)
|
||||
Intersections:
|
||||
T-junction top: ┬ (U+252C)
|
||||
T-junction bottom: ┴ (U+2534)
|
||||
T-junction left: ├ (U+251C)
|
||||
T-junction right: ┤ (U+2524)
|
||||
Cross: ┼ (U+253C)
|
||||
```
|
||||
|
||||
Example single-line window:
|
||||
|
||||
```
|
||||
┌──────────┐
|
||||
│ Content │
|
||||
└──────────┘
|
||||
```
|
||||
|
||||
#### Double-Line Box Drawing
|
||||
|
||||
```
|
||||
Horizontal line: ═ (U+2550)
|
||||
Vertical line: ║ (U+2551)
|
||||
Corners:
|
||||
Top-left: ╔ (U+2554)
|
||||
Top-right: ╗ (U+2557)
|
||||
Bottom-left: ╚ (U+255A)
|
||||
Bottom-right: ╝ (U+255D)
|
||||
Intersections:
|
||||
T-junction top: ╦ (U+2566)
|
||||
T-junction bottom: ╩ (U+2569)
|
||||
T-junction left: ╠ (U+2560)
|
||||
T-junction right: ╣ (U+2563)
|
||||
Cross: ╬ (U+256C)
|
||||
```
|
||||
|
||||
Example double-line window:
|
||||
|
||||
```
|
||||
╔══════════╗
|
||||
║ Content ║
|
||||
╚══════════╝
|
||||
```
|
||||
|
||||
#### Mixed and Other Box-Drawing Characters
|
||||
|
||||
For more complex designs, you can mix single and double lines or use specialized characters:
|
||||
|
||||
```
|
||||
Single to double transitions:
|
||||
Horizontal single to double: ╼ (U+257C)
|
||||
Vertical single to double: ╽ (U+257D)
|
||||
Rounded corners (less common, not always supported):
|
||||
Top-left: ╭ (U+256D)
|
||||
Top-right: ╮ (U+256E)
|
||||
Bottom-left: ╰ (U+2570)
|
||||
Bottom-right: ╯ (U+256F)
|
||||
```
|
||||
|
||||
Example with rounded corners:
|
||||
|
||||
```
|
||||
╭──────────╮
|
||||
│ Content │
|
||||
╰──────────╯
|
||||
```
|
||||
|
||||
### Additional UTF-8 Characters for Decoration
|
||||
|
||||
These can enhance the appearance of your TUI:
|
||||
|
||||
```
|
||||
Block elements for borders or shading:
|
||||
Full block: █ (U+2588)
|
||||
Half blocks: ▀ (U+2580), ▄ (U+2584), ▌ (U+258C), ▐ (U+2590)
|
||||
Light shade for background: ░ (U+2591)
|
||||
Medium shade: ▒ (U+2592)
|
||||
Dark shade: ▓ (U+2593)
|
||||
```
|
||||
|
||||
### Example TUI Window with Content
|
||||
|
||||
Here’s a sample of a more complex window using single-line box-drawing characters:
|
||||
|
||||
```
|
||||
┌────────────────────┐
|
||||
│ My TUI Window │
|
||||
├────────────────────┤
|
||||
│ Item 1 [ OK ] │
|
||||
│ Item 2 [Cancel] │
|
||||
└────────────────────┘
|
||||
```
|
||||
|
||||
### Notes for ncurses
|
||||
|
||||
- **ncurses Compatibility**: ncurses supports both ASCII and UTF-8 box-drawing characters, but you must ensure the terminal supports Unicode (e.g., `LANG=en_US.UTF-8` environment variable). Use `initscr()` and `start_color()` in ncurses to handle rendering.
|
||||
- **Terminal Support**: Some older terminals may not render UTF-8 characters correctly. Test your TUI in the target environment (e.g., xterm, gnome-terminal, or Alacritty).
|
||||
- **Fallback**: If Unicode support is unreliable, stick to ASCII (`-`, `|`, `+`) for maximum compatibility.
|
||||
- **ncurses Functions**: Use `box()` in ncurses to draw a border around a window automatically, or manually print characters with `mvaddch()` for custom designs.
|
||||
|
||||
### Tips
|
||||
|
||||
- Combine single and double lines for visual hierarchy (e.g., double lines for outer windows, single lines for inner sections).
|
||||
- If you need specific examples (e.g., a multi-window layout or a dialog box), let me know, and I can provide a detailed ASCII/UTF-8 mockup or even pseudocode for ncurses.
|
||||
- If you want a particular style (e.g., heavy lines, dashed lines, or specific layouts), please clarify, and I’ll tailor the response.
|
||||
|
||||
Let me know if you need help implementing this in ncurses or want more specific frame designs!
|
||||
Reference in New Issue
Block a user