Compare commits

..

15 Commits

Author SHA1 Message Date
Kim Ravn Hansen
8c16a7723d test 2026-02-22 08:26:56 +01:00
Kim Ravn Hansen
79c495eaf8 test 2026-02-22 08:07:05 +01:00
Kim Ravn Hansen
218c0aba3e Remove ambiguous utf-8 characters 2026-02-19 19:54:03 +01:00
Kim Ravn Hansen
02bceb1f2a stuff 2026-02-18 17:51:07 +01:00
Kim Ravn Hansen
d99b95297e Stuff 2026-02-12 16:48:09 +01:00
Kim Ravn Hansen
7c09d28416 progress 2025-11-04 15:35:32 +01:00
Kim Ravn Hansen
5cf39a3a9f makefile 2025-11-03 11:19:23 +01:00
Kim Ravn Hansen
8ca8a21d9d ignore 2025-11-03 10:50:44 +01:00
Kim Ravn Hansen
4fbb2ac6c0 Stuffy 2025-11-03 10:50:19 +01:00
Kim Ravn Hansen
57194a0ba8 Progress 2025-10-09 15:52:08 +02:00
Kim Ravn Hansen
017dd81be3 stuff 2025-09-12 14:08:20 +02:00
Kim Ravn Hansen
fdbe092b17 Remove fonts of doom 2025-09-04 08:47:35 +02:00
Kim Ravn Hansen
e50def65ff stuff 2025-09-04 08:38:40 +02:00
Kim Ravn Hansen
1c7f4b5a76 rename 2025-09-03 21:28:05 +02:00
Kim Ravn Hansen
ef3772fe13 Fonts and junk 2025-09-02 12:47:22 +02:00
15 changed files with 296 additions and 201 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
out/* out/*
.spell.add.spl

14
.nvim.lua Normal file
View File

@@ -0,0 +1,14 @@
vim.notify("Local nvim config loaded", vim.log.levels.INFO)
-------------------------------------------------------------
-- Set spell info, but only for files inside the current dir
------------------------------------------------------------
local project_root = vim.fn.getcwd()
vim.api.nvim_create_autocmd("BufEnter", {
pattern = project_root .. "/*",
callback = function()
vim.opt_local.spell = true
vim.opt_local.spelllang = "en"
vim.opt_local.spellfile = project_root .. "/.spell.add"
end,
})

11
.spell.add Normal file
View File

@@ -0,0 +1,11 @@
Garg
WYRDS
Targ
Farg
golem
Cowlbear
Gooblin
Halvbitter
Mandag
badass
Djinn

8
Makefile Executable file → Normal file
View File

@@ -1,12 +1,12 @@
sort: sort:
cd tooling && lua process.lua ../main.adoc --overwrite cd tooling && lua process.lua ../rules.adoc --overwrite
html: html:
asciidoctor -b html main.adoc -o out/main.html && open out/main.html asciidoctor -vw -b html rules.adoc -D out && open out/rules.html
pdf: pdf:
asciidoctor-pdf main.adoc -o out/main.pdf && open out/main.pdf asciidoctor-pdf -vw rules.adoc -o out/rules.pdf && open out/rules.pdf
d20: d20:
echo "" > out/statsD20.csv echo "" > out/statsD20.csv
lua tooling/mathD20.lua > out/statsD20.csv && open out/statsD20.csv lua tooling/mathD20.lua > out/statsD20.csv && column -s\; -t < out/statsD20.csv

24
ideas.adoc Executable file → Normal file
View File

@@ -17,7 +17,7 @@
=== THINGS WE DON'T WANT === THINGS WE DON'T WANT
* Arguing over technicalities. * Arguing over technicalities.
* Spending game time looking at the rules. * Spending game time looking at the rules.
* Internal strife or competition to be best or mow down the most monsters. * Internal strife or competition to be best or mow down the most mønsters.
* Power gaming and min/maxing. * Power gaming and min/maxing.
* People getting bored during combat. * People getting bored during combat.
* Undetectable, unperceivable, or unstoppable events that kill adventurers * Undetectable, unperceivable, or unstoppable events that kill adventurers
@@ -40,9 +40,9 @@
* Their gift can burn out if they do evil stuff such as: * Their gift can burn out if they do evil stuff such as:
** Kill for fun or sadism, or killing the truly innocent, such as kids (100% ** Kill for fun or sadism, or killing the truly innocent, such as kids (100%
burnout). burnout).
** Kill beings that aren't monsters or villains (high risk of burnout). ** Kill beings that aren't mønsters or villains (high risk of burnout).
** Harm beings that aren't monsters or villains (moderate risk of burnout). ** Harm beings that aren't mønsters or villains (moderate risk of burnout).
** Steal from or swindle beings that aren't monsters or villains (low risk of ** Steal from or swindle beings that aren't mønsters or villains (low risk of
burnout). burnout).
** Stop actively adventuring (burnout risk increases over time). ** Stop actively adventuring (burnout risk increases over time).
** Become parents (100%) ** Become parents (100%)
@@ -82,8 +82,8 @@ Attacks always deal at least a bit of damage.
certain classes/abilities have Crit Effects that only triggers when you Crit. certain classes/abilities have Crit Effects that only triggers when you Crit.
** Usually only one Effect applies - and the player gets to choose. ** Usually only one Effect applies - and the player gets to choose.
Monster Crits:: Boss Monsters (and certain Skirmisher monsters) can crit too - Monster Crits:: Boss Monsters (and certain Skirmisher mønsters) can crit too -
and they have random Crit Effects - each Crit-Capable monster has its own Crit and they have random Crit Effects - each Crit-Capable mønster has its own Crit
Table of nasty effects that can be triggered on a Crit. Table of nasty effects that can be triggered on a Crit.
@@ -210,10 +210,10 @@ We want lots silly and "active" downtime (i.e. all the players do fun stuff).
Fast-Paced Dungeon Crawls:: Fast-Paced Dungeon Crawls::
We award fast-paced dungeon crawls, so We award fast-paced dungeon crawls, so
* Each monster "defeated" (killed, pacified, or routed) gives XP. * Each mønster "defeated" (killed, pacified, or routed) gives XP.
* Each encounter has a "bonus time" — if you defeat the encounter within that * Each encounter has a "bonus time" — if you defeat the encounter within that
time, you get bonus XP. time, you get bonus XP.
** Each monster has a "bonus time" attribute - typically a number of minutes. ** Each mønster has a "bonus time" attribute - typically a number of minutes.
** An encounter's "bonus time" is calculated by adding up all "bonus time" ** An encounter's "bonus time" is calculated by adding up all "bonus time"
attributes. attributes.
@@ -255,11 +255,11 @@ Ad hoc Progress::
=== PERKS/ABILITIES/STUFF === PERKS/ABILITIES/STUFF
Monstrous Gourmand:: If a dead monster has fresh meat on it, you can probably Monstrous Gourmand:: If a dead mønster has fresh meat on it, you can probably
eat it without issue. You can spend 1 hour preparing the meat, then you have 1 eat it without issue. You can spend 1 hour preparing the meat, then you have 1
daily ration of food. Large monsters can yield more than one ration. Be aware daily ration of food. Large mønsters can yield more than one ration. Be aware
that only you can eat those rations safely - normal people could get sick from that only you can eat those rations safely - normal people could get sick from
eating monster meat. eating mønster meat.
Dwarf (level 1):: You have one extra item slot (maybe for a later dwarf perk). Dwarf (level 1):: You have one extra item slot (maybe for a later dwarf perk).
You have a lot of facial hair, no matter what gender you are. Your tolerance You have a lot of facial hair, no matter what gender you are. Your tolerance
@@ -366,7 +366,7 @@ Gems::
=== Monsters & Combat === Monsters & Combat
Many monsters (the majority) should have special abilities that make combat Many mønsters (the majority) should have special abilities that make combat
more interesting. more interesting.
* Set the adventurer on fire that must be put out. * Set the adventurer on fire that must be put out.

22
monsters.adoc Executable file → Normal file
View File

@@ -1,9 +1,9 @@
= Monster's Guide To Doom & Destruction & Stuff = Monster's Guide To Doom & Destruction & Stuff
== WEIRDS == WYRDS
Mondays:: A type of monster invented by Fred after he'd had a really bad day. Mondays:: A type of mønster invented by Fred after he'd had a really bad day.
He called it, a Monday, and it is almost impossible to describe. He called it, a Monday, and it is almost impossible to describe.
* It is bestowed with an extreme, but unknowable, intelligence. * It is bestowed with an extreme, but unknowable, intelligence.
@@ -11,7 +11,7 @@ He called it, a Monday, and it is almost impossible to describe.
suit their needs. suit their needs.
* It can take the shape of forests, castles, large bodies of water, airships, * It can take the shape of forests, castles, large bodies of water, airships,
or similar. or similar.
* It can coalesce into a smaller, more substantial monster, but it rarely does. * It can coalesce into a smaller, more substantial mønster, but it rarely does.
* Its heart is located somewhere inside it, but it can be hard to find, and it * Its heart is located somewhere inside it, but it can be hard to find, and it
never looks like a heart. never looks like a heart.
* It eats happiness and shits out bad health. * It eats happiness and shits out bad health.
@@ -19,7 +19,7 @@ He called it, a Monday, and it is almost impossible to describe.
== OILS == OILS
Garg Oil:: Garg Oil::
* Oily slime monster with wings. * Oily slime mønster with wings.
* Can fly. * Can fly.
* Related to Slime. * Related to Slime.
* Drown attack. * Drown attack.
@@ -49,8 +49,8 @@ Gelatinous Pube::
* Disgustingly smelly seaweed thing * Disgustingly smelly seaweed thing
Slime:: Slime::
A type of Oil, a slime is a semi-intelligent monster that can be made out of A type of Oil, a slime is a semi-intelligent mønster that can be made out of
anything from rainwater to lava, these monsters are often highly caustic, and anything from rainwater to lava, these mønsters are often highly caustic, and
can constrict their opponents. can constrict their opponents.
When a slime is born, it is usually a few cubic centimeters in size, but as it When a slime is born, it is usually a few cubic centimeters in size, but as it
@@ -58,7 +58,7 @@ consumes more and more material, it grows larger. Many slimes like to feed on
living organic matter (people, plants, animals, etc.). living organic matter (people, plants, animals, etc.).
Pooh-ma:: Pooh-ma::
A vicious wolf-like oily monster born in the sewers and waste pits of cities, A vicious wolf-like oily mønster born in the sewers and waste pits of cities,
military camps, and similar concentrations of feces. military camps, and similar concentrations of feces.
* Basically a dire-wolf made of feces. * Basically a dire-wolf made of feces.
@@ -151,8 +151,7 @@ Combine a bug and a bear.
* Evil type of gnome * Evil type of gnome
* A bit like Rask Gar. * A bit like Rask Gar.
* Dark vision. * Dark vision.
* Not very fond of gnomes. * Not very fond of gnomes. * Cowards.
* Cowards.
* Power cycles: * Power cycles:
** Males are intelligent, cunning, and fierce. ** Males are intelligent, cunning, and fierce.
** Females are physically very strong and tough. ** Females are physically very strong and tough.
@@ -177,6 +176,11 @@ Golems
* Fortress Mimic: A mimic the size and shape of a fortress, and with all * Fortress Mimic: A mimic the size and shape of a fortress, and with all
of the armaments too. of the armaments too.
=== GIMIC
* Subspecies of Mimic. Useless and short lived, but can be quite dangerous
(glass cannon? 🤔)
== MISC == MISC
Haggis (Hag, slime ??):: Haggis (Hag, slime ??)::

7
readme.adoc Executable file → Normal file
View File

@@ -8,7 +8,6 @@ Kim Ravn Hansen <moccalotto@gmail.com>
:experimental: :experimental:
:stem: :stem:
* xref:adventurer#[Adventurers's Guide to Doom & Destruction & Stuff].
* xref:adventurer#[Adventurerss Guide to Doom & Destruction & Stuff]. * xref:hero#[Hero's Guide to Doom & Destruction & Stuff].
* xref:hero#[Heros Guide to Doom & Destruction & Stuff]. * xref:elite#[Elite's Guide to Doom & Destruction & Stuff].
* xref:elite#[Elites Guide to Doom & Destruction & Stuff].

65
style.css → resources/style.css Executable file → Normal file
View File

@@ -1,13 +1,12 @@
/* this is my custom css */ /* this is my custom css */
@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";
/* fonts */ /* fonts */
@import url('https://fonts.cdnfonts.com/css/gloria-hallelujah'); @import url('https://fonts.cdnfonts.com/css/ubuntu-mono'); /* monospace */
@import url('https://fonts.cdnfonts.com/css/shadows-into-light'); @import url('https://fonts.cdnfonts.com/css/gloria-hallelujah'); /* hand written quotes */
@import url('https://fonts.cdnfonts.com/css/shadows-into-light-two'); @import url('https://fonts.cdnfonts.com/css/shadows-into-light'); /* hand written Gothic */
@import url('https://fonts.cdnfonts.com/css/spectral'); @import url('https://fonts.cdnfonts.com/css/shadows-into-light-two'); /* hand written Gothic */
@import url('https://fonts.cdnfonts.com/css/spectral'); /* Serif font */
:root { :root {
--text-color: rgb(0, 0, 0, 0.8); --text-color: rgb(0, 0, 0, 0.8);
@@ -16,17 +15,8 @@
/* MUFASSA */ /* MUFASSA */
html{ html{
font-family: 'Spectral', sans-serif; font-family: 'Spectral', serif;
-webkit-text-size-adjust:100% -webkit-text-size-adjust:100%
}
a{
background:none
}
a:focus{
outline:thin dotted
}
a:active,a:hover{
outline:0
} }
h1{ h1{
font-size:2em; font-size:2em;
@@ -56,7 +46,7 @@ html{
color:#000 color:#000
} }
code,kbd,pre,samp{ code,kbd,pre,samp{
font-family:monospace; font-family:"Ubuntu Mono", monospace;
font-size:1em font-size:1em
} }
pre{ pre{
@@ -64,6 +54,7 @@ html{
} }
q{ q{
quotes:"\201C" "\201D" "\2018" "\2019" quotes:"\201C" "\201D" "\2018" "\2019"
font-family: "Gloria Hallelujah";
} }
small{ small{
font-size:80% font-size:80%
@@ -149,7 +140,7 @@ html{
color:var(--text-color); color:var(--text-color);
padding:0; padding:0;
margin:0; margin:0;
font-family: 'Spectral', sans-serif; font-family: 'Spectral', serif;
line-height:1; line-height:1;
position:relative; position:relative;
cursor:auto; cursor:auto;
@@ -159,9 +150,6 @@ html{
word-wrap:anywhere; word-wrap:anywhere;
-moz-osx-font-smoothing:grayscale; -moz-osx-font-smoothing:grayscale;
-webkit-font-smoothing:antialiased -webkit-font-smoothing:antialiased
}
a:hover{
cursor:pointer
} }
img,object,embed{ img,object,embed{
max-width:100%; max-width:100%;
@@ -219,15 +207,20 @@ html{
a{ a{
/* color:#2156a5; */ /* color:#2156a5; */
color:var(--text-color); color:var(--text-color);
/* text-decoration:underline; */ text-decoration:none;
font-style:italic font-style:italic;
line-height:inherit line-height:inherit;
background: none;
} }
a:hover,a:focus{ a:hover,a:focus{
color:#1d4b8f color:#1d4b8f;
outline:0;
cursor:pointer;
}
a:focus{
} }
a img{ a img{
border:0 border:0;
} }
p{ p{
line-height:1.6; line-height:1.6;
@@ -289,7 +282,7 @@ html{
line-height:inherit line-height:inherit
} }
code{ code{
font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace; font-family:"Ubuntu Mono", monospace;
font-weight:400; font-weight:400;
color:rgba(0,0,0,.9) color:rgba(0,0,0,.9)
} }
@@ -325,7 +318,7 @@ html{
dl dt{ dl dt{
margin-bottom:.3125em; margin-bottom:.3125em;
font-weight:bold; font-weight:bold;
font-family:"Shadows Into Light"; font-family:"Shadows Into Light", sans-serif;
font-size:1em; font-size:1em;
} }
dl dd{ dl dd{
@@ -426,7 +419,7 @@ html{
} }
pre{ pre{
color:rgba(0,0,0,.9); color:rgba(0,0,0,.9);
font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace; font-family:"Ubuntu Mono", monospace;
line-height:1.45; line-height:1.45;
text-rendering:optimizeSpeed text-rendering:optimizeSpeed
} }
@@ -452,7 +445,7 @@ html{
color:rgba(51,51,51,.8) color:rgba(51,51,51,.8)
} }
kbd{ kbd{
font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace; font-family:"Ubuntu Mono", monospace;
display:inline-block; display:inline-block;
color:rgba(0,0,0,.8); color:rgba(0,0,0,.8);
font-size:.65em; font-size:.65em;
@@ -600,7 +593,7 @@ html{
margin:.5em 0 margin:.5em 0
} }
#toc ul{ #toc ul{
font-family:"Open Sans","DejaVu Sans",sans-serif; font-family:"Spectral",serif;
list-style-type:none list-style-type:none
} }
#toc li{ #toc li{
@@ -752,10 +745,10 @@ html{
} }
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{ #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{
visibility:visible visibility:visible
text-decoration:none;
} }
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{ #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{
color:#ba3925; color:#ba3925;
text-decoration:none
} }
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{ #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{
color:#a53221 color:#a53221
@@ -805,7 +798,7 @@ html{
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{ .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{
text-rendering:optimizeLegibility; text-rendering:optimizeLegibility;
text-align:left; text-align:left;
font-family:"Noto Serif","DejaVu Serif",serif; font-family:"Spectral", serif;
font-size:1rem; font-size:1rem;
font-style:italic font-style:italic
} }
@@ -833,7 +826,7 @@ html{
} }
.admonitionblock>table td.icon .title{ .admonitionblock>table td.icon .title{
font-weight:bold; font-weight:bold;
font-family:"Open Sans","DejaVu Sans",sans-serif; font-family:"Spectral", serif;
text-transform:uppercase text-transform:uppercase
} }
.admonitionblock>table td.content{ .admonitionblock>table td.content{
@@ -1022,7 +1015,7 @@ html{
margin:0 1em 1.25em margin:0 1em 1.25em
} }
.verseblock pre{ .verseblock pre{
font-family:"Open Sans","DejaVu Sans",sans-serif; font-family:"Spectral", serif;
font-size:1.15rem; font-size:1.15rem;
color:rgba(0,0,0,.85); color:rgba(0,0,0,.85);
font-weight:300; font-weight:300;
@@ -1506,7 +1499,7 @@ html{
width:1.67em; width:1.67em;
height:1.67em; height:1.67em;
line-height:1.67em; line-height:1.67em;
font-family:"Open Sans","DejaVu Sans",sans-serif; font-family:"Spectral", serif;
font-style:normal; font-style:normal;
font-weight:bold font-weight:bold
} }

View File

@@ -0,0 +1,40 @@
extends: default
page:
layout: portrait
# margin: [0.2in, .2in, 0.2, .2in]
# size: A5
base:
# font-family: Noto Sans
#
# FONTS
# ======
# font:
# catalog:
# Noto Sans:
# normal: NotoSans-Regular.ttf
# bold: NotoSans-Bold.ttf
# italic: NotoSans-Italic.ttf
# bold_italic: NotoSans-BoldItalic.ttf
# Footer
# ========
# footer:
# recto:
# right:
# content: 'PDF v{pdf-version} | {document-title} | {page-number}'
# verso:
# left:
# content: 'PDF v{pdf-version} | {page-number}'
# Admonitions
# ===========
# admonition:
# background-color: "#666666"
# font-size: 42
# icon:
# note:
# stroke-color: #FF0000
# size: 24 # horizontal size only

293
main.adoc → rules.adoc Executable file → Normal file
View File

@@ -1,9 +1,7 @@
= The Rules Doom & Destruction & Stuff = The Rules Doom & Destruction & Stuff
// {{{ DO NOT MESS WITH THIS LINE. DO NOT DELETE IT OR ADD BLANK LINES AROUND IT!
// {{{ VARIABLES
// :stylesheet: style.css
:stylesheet: style.css
:doctype: article :doctype: article
:stylesheet: ./resources/style.css
:icons: font :icons: font
:sectlinks: :sectlinks:
:toc: :toc:
@@ -12,18 +10,19 @@
:experimental: :experimental:
:stem: :stem:
:xrefstyle: full :xrefstyle: full
:author: Kim Ravn Hansen // :author: Kim Ravn Hansen
:email: moccalotto@gmail.com // :email: moccalotto@gmail.com
:pdf-page-size: a5 :pdf-version: 1.7
:pdf-theme: basic
:pdf-fontsdir: resources/fonts
:pdf-themesdir: resources/themes
:reproducible: :reproducible:
:table-stripes: even :table-stripes: even
:x: × :x: ×
:one: <<nat1,One>> :one: <<nat1,One>>
:twenty: <<nat20,Twenty>> :twenty: <<nat20,Twenty>>
:DM: Destruction Manager :DM: Destruction Manager
// VARIABLES }}} // }}}
== Creating Adventurers == Creating Adventurers
@@ -52,6 +51,19 @@ should now have a score between 7 and 12.
TIP: The skill scores are likely to change before you're done creating the adventurer, TIP: The skill scores are likely to change before you're done creating the adventurer,
so write them on a piece of paper rather than on the adventurer's sheet for now. so write them on a piece of paper rather than on the adventurer's sheet for now.
[sidebar]
.Raising and Reducing Skills
--
Your <<ancestry>>, <<foundation>>, and other factors can change your skills.
Keep an eye out for the words _increase_ and _reduce_, as they have special
meaning.
* Raising a skill cannot lower it; for instance, if your Skulduggery is 12, and
your ancestry, foundation, etc. _raises_ it to 10, then nothing happens.
* Reducing a skill cannot increase it; for instance, if your Grit is 4 and
your ancestry, foundation, etc. _reduces_ it to 6, nothing happens.
--
[[ancestry,ancestry]] [[ancestry,ancestry]]
=== {counter:creation}. Ancestry === {counter:creation}. Ancestry
@@ -76,8 +88,6 @@ Perks when you level up later on.
//---|---------------|-------------------------------------- //---|---------------|--------------------------------------
|=== |===
NOTE: Raising a skill that is already 10 or higher has no effect.
[[foundation,foundation]] [[foundation,foundation]]
=== {counter:creation}. Foundation === {counter:creation}. Foundation
@@ -146,7 +156,7 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* Light Armor * Light Armor
* Advanced Weapons * Riposte
|[unstyled] |[unstyled]
* Leather * Leather
@@ -157,7 +167,7 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* 15 Hit Points * 15 Hit Points
* 5 Item Slots * 5 Item Slots
* The TWO WEAPONS perk. * The RIPOSTE proficiency.
* Melee Combat raised to 10 * Melee Combat raised to 10
* Magic limited to 10 * Magic limited to 10
@@ -171,7 +181,6 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* Medium Armor * Medium Armor
* Advanced Weapons
|[unstyled] |[unstyled]
* Halberd * Halberd
@@ -232,7 +241,8 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* 10 Hit Points * 10 Hit Points
* 6 Item Slots * 8 Item Slots
* Awareness raised to 10
// //
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
@@ -243,7 +253,6 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
| Reckless | Reckless
|[unstyled] |[unstyled]
* Advanced Weapons
|[unstyled] |[unstyled]
* Great Axe * Great Axe
@@ -267,7 +276,6 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* Light Armor * Light Armor
* Advanced Weapons
|[unstyled] |[unstyled]
* Leather Armor * Leather Armor
@@ -275,6 +283,7 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
* Longbow * Longbow
* Snare Maker's Kit * Snare Maker's Kit
* 25 Silver Pieces * 25 Silver Pieces
* Regional Map
|[unstyled] |[unstyled]
* 10 Hit Points * 10 Hit Points
@@ -294,7 +303,6 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* Light Armor * Light Armor
* Shields * Shields
* Advanced Weapons
|[unstyled] |[unstyled]
* Spear * Spear
@@ -329,12 +337,11 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* 10 Hit Points a * 10 Hit Points
* 6 Item Slots b ==> * 6 Item Slots
* Melee Combat raised to 10 * Melee Combat raised to 10
* Awareness raised to 10 * Awareness raised to 10
* Skulduggery raised to 10 * Skulduggery raised to 10
* Grit raised to 10
// //
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
@@ -345,7 +352,6 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
| Spellsword | Spellsword
|[unstyled] |[unstyled]
* Advanced Weapons
|[unstyled] |[unstyled]
* Tier 1 Wand with random spell. * Tier 1 Wand with random spell.
@@ -379,6 +385,7 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
* Map Maker's Kit * Map Maker's Kit
* Chalk * Chalk
* Caltrops * Caltrops
* 10 meter rope
* 5 Silver Pieces * 5 Silver Pieces
|[unstyled] |[unstyled]
@@ -400,19 +407,18 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
|[unstyled] |[unstyled]
* Heavy Armor * Heavy Armor
* Shield * Shield
* Advanced Weapons
|[unstyled] |[unstyled]
* Half-Plate * Half-Plate
* Large Shield * Large Shield
* Long Sword * Longsword
* 10 Silver Pieces * 10 Silver Pieces
|[unstyled] |[unstyled]
* 10 Hit Points * 10 Hit Points
* 2 Item Slots * 2 Item Slots
* Melee Combat raised to 10 * Melee Combat raised to 10
* Magic Reduced to 6 * Magic Reduced to 5
* Awareness Reduced to 10 * Awareness Reduced to 10
// //
@@ -439,8 +445,8 @@ Roll on the table below to find your Foundation. Note that you may need to rerol
* Melee Combat raised to 10 * Melee Combat raised to 10
* Ranged Combat raised to 10 * Ranged Combat raised to 10
* Awareness raised to 10 * Awareness raised to 10
* Magic limited to 6 * Magic reduced to 5
* Knowledge limited to 10 * Knowledge reduced to 10
// //
//--------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------
@@ -504,8 +510,8 @@ Roll two d8s; one for the left-hand table, and once for the right-hand table
Your background is what your adventurer used to do before they received the Your background is what your adventurer used to do before they received the
Adventurer's Blessing. Adventurer's Blessing.
If the DM makes you roll for something that is directly related to your Your background gives you knowledge that can help you during gameplay. The DM
background, let the DM know - they might just give you an advantage. may give you advantage on a roll of it is directly related to your background.
Roll a d20 and a d6 and look at the table below to find your background. Roll a d20 and a d6 and look at the table below to find your background.
@@ -513,6 +519,7 @@ Roll a d20 and a d6 and look at the table below to find your background.
|=== |===
//---|----------------------|----|---------------------------- //---|----------------------|----|----------------------------
| d20| d6 rolled 1, 3, or 5 | d20| d6 rolled 2, 4, or 6 | d20| d6 rolled 1, 3, or 5 | d20| d6 rolled 2, 4, or 6
//---|----------------------|----|----------------------------
| 1 | Apothecary | 1 | Hunter | 1 | Apothecary | 1 | Hunter
| 2 | Baker | 2 | Hustler | 2 | Baker | 2 | Hustler
| 3 | Banker | 3 | Laborer | 3 | Banker | 3 | Laborer
@@ -542,6 +549,7 @@ value both times, the trait is extra pronounced.
.Body traits .Body traits
[%header,cols="^1,11"] [%header,cols="^1,11"]
|=== |===
//------|-------------------
| d12 | Body traits | d12 | Body traits
//------|------------------- //------|-------------------
| 1 | Tall | 1 | Tall
@@ -564,6 +572,7 @@ Roll d20 once for facial traits.
.Facial traits .Facial traits
[%header,cols="^1,11"] [%header,cols="^1,11"]
|=== |===
//------|-------------------------------------------
| d20 | Facial trait | d20 | Facial trait
//------|------------------------------------------- //------|-------------------------------------------
| 1 | Sharp cheekbones and hollow eyes | 1 | Sharp cheekbones and hollow eyes
@@ -592,6 +601,7 @@ Roll d20 once for facial traits.
.Hair traits .Hair traits
[%header,cols="^1,11"] [%header,cols="^1,11"]
|=== |===
//------|------------------------------------------------
| d10 | Hair Trait | d10 | Hair Trait
//------|------------------------------------------------ //------|------------------------------------------------
| 1 | Long and silky, flows like water | 1 | Long and silky, flows like water
@@ -617,10 +627,12 @@ traits — especially your vice, and only if you don't overdo it.
==== Vice ==== Vice
Roll once to find your vice. Roll once to find your vice. Your vices can get you into trouble
but the DM may grant you extra XP for your effort.
[%header,cols="^1,11"] [%header,cols="^1,11"]
|=== |===
//------|--------------------------------------------
| d12 | Vice | d12 | Vice
//------|-------------------------------------------- //------|--------------------------------------------
| 1 | Loves owning and interacting with treasure | 1 | Loves owning and interacting with treasure
@@ -641,11 +653,12 @@ Roll once to find your vice.
==== Virtue ==== Virtue
Roll once to find your virtue. The DM might give you extra Roll once to find your virtue. The DM might give you extra XP if you play out
XP if your virtues come into play. your virtues, especially if they get you into trouble.
[%header,cols="^1,11"] [%header,cols="^1,11"]
|=== |===
//------|--------------------------------------------
| d20 | Virtue | d20 | Virtue
//------|-------------------------------------------- //------|--------------------------------------------
| 1 | Loyal to a fault, never breaks a promise | 1 | Loyal to a fault, never breaks a promise
@@ -673,11 +686,13 @@ XP if your virtues come into play.
==== Quirk ==== Quirk
Roll once to find your quirk. The DM might give you extra XP if your quirks Roll once to find your quirk.
come into play.
Quirks may get you into trouble, but the GM might give you extra XP for it.
[%header,cols="^1,11"] [%header,cols="^1,11"]
|=== |===
//----|----------------------------------------------
| d20 | Quirk | d20 | Quirk
//----|---------------------------------------------- //----|----------------------------------------------
| 1 | Likes to rhyme | 1 | Likes to rhyme
@@ -688,14 +703,14 @@ come into play.
| 6 | Deep dislike of mirrors | 6 | Deep dislike of mirrors
| 7 | Collects bones, teeth, or pebbles | 7 | Collects bones, teeth, or pebbles
| 8 | Speaks in third person | 8 | Speaks in third person
| 9 | Talks to their pet stone | 9 | Talks to their pet stone (or similar object)
| 10 | Always wears gloves | 10 | Always wears gloves
| 11 | Whistles when nervous | 11 | Starts whistling when nervous
| 12 | Believes in bizarre superstitions | 12 | Believes in bizarre superstitions
| 13 | Refuses to walk through doorways first | 13 | Refuses to walk through doorways first
| 14 | Smells everything before touching it | 14 | Smells everything before touching it
| 15 | Never says their real name | 15 | Never says their real name
| 16 | Only speaks in third person | 16 | Phrases everything like a question
| 17 | Claims to have lived many past lives | 17 | Claims to have lived many past lives
| 18 | Counts out their coins slowly and meticulously | 18 | Counts out their coins slowly and meticulously
| 19 | Hates silence, starts singing or humming | 19 | Hates silence, starts singing or humming
@@ -711,93 +726,106 @@ a gender and a name.
Your adventurer has a number of Item Slots, determined by their Foundation. The Your adventurer has a number of Item Slots, determined by their Foundation. The
sheet provides space for 10 slots, but you may have fewer. Shade, hatch, or sheet provides space for 10 slots, but you may have fewer. Shade, hatch, or
cross out any unusable Item Slots. == Perks cross out any unusable Item Slots.
== Items == Items
=== Weapons === Weapons
There are four types of weapons. Basic Weapons (fists, daggers, and clubs),
Light Weapons, Heavy Weapons, and Specialist Weapons.
//--------------- Anyone can use Basic weapons, no matter which proficiencies, foundations, or
// SIMPLE WEAPONS perks they may or may not have.
//---------------
==== Simple Weapons [sidebar]
.Weapon Proficiency
--
If you use a non-basic weapon you are not proficient at using, you can still
use the weapon, but the following penalties apply:
* You have <<disadvantage>> on your attack rolls.
* You cannot <<crit>>.
* You do not trigger the weapon's special effect.
--
.Basic Weapons
[%header,cols="^2,^3,^2,^2,^2,6"]
|===
//-------|-------------------|-------|----|--------|----------------
| Range | Weapon | Hands | IS | Damage | Special Effect
//-------|-------------------|-------|----|--------|----------------
| Any | Dagger | 1 | ⅓ | 4 |
| Melee | Club | 1 | 1 | 4 |
| Melee | Unarmed Combat | 1 | 0 | 2 |
//-------|-------------------|-------|----|--------|----------------
|===
.Light Weapons
[%header,cols="^2,^3,^2,^2,^2,6"]
|===
//-------|-------------------|-------|----|--------|----------------
| Range | Weapon | Hands | IS | Damage | Special Effect
//-------|-------------------|-------|----|--------|----------------
| Any | Spear | 1 | 2 | 5 |
| Melee | Flail | 1 | 1 | 6 |
| Melee | Handaxe | 1 | 1 | 6 |
| Melee | Quarterstaff | 2 | 2 | 6 |
| Melee | Rapier | 1 | 2 | 6 | Fast: attack again?
| Melee | Short Sword | 1 | 2 | 6 |
| Melee | Sickle | 1 | 1 | 4 |
| Melee | Stiletto | 1 | 1 | 4 | Fast: attack again?
| Ranged | Javelin | 1 | 1 | 5 | Only 1 item slot
| Ranged | Shortbow | 1 | 3 | |
| Ranged | Sling | 2 | 1 | 4 |
| Ranged | Small Crossbow | 2 | 2 | 8 |
//-------|-------------------|-------|----|--------|-----------
|===
.Heavy Weapons
[%header,cols="^2,^3,^2,^2,^2,6"]
|===
//-------|-------------------|-------|----|--------|----------------
| Range | Weapon | Hands | IS | Damage | Special Effect
//-------|-------------------|-------|----|--------|----------------
| Melee | Battleaxe | 1 | 3 | 8 | Mini cleave: deal a bit of damage to one adjacent foes.
| Melee | Claymore | 2 | 3 | 8 | Something cool that the Zweihänder doesn't have
| Melee | Falchion | 2 | 3 | |
| Melee | Greataxe | 2 | 4 | 10 | Cleave: deal a bit of damage to ALL adjacent foes.
| Melee | Longsword | 1 | 2 | 8 |
| Melee | Mace | 1 | 2 | 7 |
| Melee | Morning star | 1 | 2 | 8 |
| Melee | Scimitar | 1 | 2 | 7 |
| Melee | Warhammer | 1 | 3 | 6 | Push
| Melee | Zweihänder | 1 | 3 | 10 | 5 extra damage.
| Ranged | Large Crossbow | 1 | 4 | 10 |
| Ranged | Longbow | 1 | 3 | 8 |
//-------|-------------------|-------|----|--------|-----------
|===
==== Specialist Weapons
[%unbreakable] [%unbreakable]
-- --
All adventurers can use simple weapons, regardless of <<foundation>>, In order to be able to use one of the Specialist weapons on this list, an adventurer
<<perks>>, or <<class>>. must have a <<foundation>> or <<perks,perk>> that gives them the specific
proficiency that allows them to use that specific weapon. For instance, an
adventurer who has the "Kosh" proficiency use koshes, but not any of
the other Specialist weapons.
[%header,cols="^2,^3,^2,^2,^2,6"] [%header,cols="^2,^3,^2,^2,^2,6"]
|=== |===
| Range | Weapon | Hands | IS | Damage | Special Effect | Range | Weapon | Hands | IS | Damage | Special Effect
//----------|-------------------|-------|----|--------|---------------- //-------|-------------------|-------|----|--------|------------------------------
| Any | Dagger | 1 | ⅓ | 4 | | Melee | Bastard Sword | 1 | | 10 | None - high base damage
| Any | Spear | 1 | 2 | 5 | | Melee | Halberd | 2 | | 11 | "Ranged Attack + Pull"
| Melee | Club | 1 | 1 | 4 | | Melee | Kosh | 1 | | 8 | Knock-out
| Melee | Flail | 1 | 1 | 6 | | Melee | Pike | 2 | 3 | 9 | "Ranged Attack"
| Melee | Handaxe | 1 | 1 | 6 | | Ranged | Blowgun | 1 | | |
| Melee | Longspear | 2 | 3 | 9 | | Ranged | Bolas | 1 | | 8 |
| Melee | Mace | 1 | 2 | 7 | //-------|-------------------|-------|----|--------|------------------------------
| Melee | Morning star | 1 | 2 | 8 |
| Melee | Quarterstaff | 2 | 2 | 6 |
| Melee | Sickle | 1 | 1 | 4 |
| Melee | Warhammer | 1 | 2 | 6 |
| Ranged | Sling | 2 | 1 | 4 |
| Ranged | Small Crossbow | 2 | 2 | 8 |
//----------|-------------------|-------|----|--------|----------------
|===
--
==== Advanced Weapons
[%unbreakable]
--
Any adventurer who has a <<foundation>>, <<class>>, or <<perk>> that allows
them to use advanced weapons can use the weapons on this list. Adventurers who
haven't got such an ability has <<disadvantage>> when attacking with advanced
weapons, and can never use their special abilities.
[%header,cols="^2,^3,^2,^2,6"]
|===
| Range | Weapon | Hands | Damage | Special Effect
//---------|-------------------|-------|-------------------------
| Any | Javelin | 1 | | Better than spear, somehow
| Melee | Battleaxe | 1 | 8 | Mini cleave?
| Melee | Claymore | 2 | 8 | Something cool that the Zweihänder doesn't have
| Melee | Falchion | 2 | |
| Melee | Greataxe | 2 | 10 | Cleave
| Melee | Halberd | 1 | 11 | Pull
| Melee | Longsword | 1 | 8 |
| Melee | Rapier | 1 | 6 | Fast: attack again?
| Melee | Scimitar | 1 | 7 |
| Melee | Short Sword | 1 | 6 |
| Melee | Stiletto | 1 | 4 | Fast: attack again?
| Melee | Zweihänder | 1 | 10 | Push
| Ranged | Large Crossbow | 1 | 10 |
| Ranged | Longbow | 1 | |
| Ranged | Shortbow | 1 | |
//---------|-------------------|-------|-------------------------
|===
--
==== Weird Weapons
[%unbreakable]
--
In order to be able to use one of the weird weapons on this list, an adventurer
must have a <<foundation>>, <<class>>, or <<perk>> that allows them to use that
specific weapon. For instance, an adventurer who has an ability to use the Kosh
can use koshes, but not any of the other weird weapons.
[%header,cols="^2,^3,^2,^2,6"]
|===
| Range | Weapon | Hands | Damage | Special Effect
//---------|-------------------|--------|--------|----------------
| Melee | Bastard Sword | 1 | 10 | None - high base damage
| Ranged | Blowgun | 1 | |
| Ranged | Bolas | 1 | 8 |
| Melee | Kosh | 1 | 8 | Knock-out
//---------|-------------------|--------|--------|----------------
|=== |===
-- --
@@ -809,12 +837,12 @@ can use koshes, but not any of the other weird weapons.
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
| Armor | HP | Sneak | Notes | Armor | HP | Sneak | Notes
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
| Padded Armor | 1 | Yes | Cheap, bulky cloth layers | Traveler's Coat | 4 | Yes | Light and practical
| Leather Armor | 2 | No | Flexible leather | Padded Armor | 5 | Yes | Cheap, bulky cloth layers
| Studded Leather | 3 | No | Reinforced with metal studs | Leather Armor | 6 | No | Flexible leather
| Hide Shirt | 2 | Yes | Made from thick animal hide | Hide Shirt | 7 | No | Made from thick animal hide
| Gambeson | 2 | Yes | Quilted cloth and fibres | Studded Leather | 8 | No | Reinforced with metal studs
| Traveler's Coat | 1 | Yes | Light and practical | Gambeson | 9 | Yes | Quilted cloth and fibres
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
|=== |===
@@ -824,12 +852,10 @@ can use koshes, but not any of the other weird weapons.
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
| Armor | HP | Sneak | Notes | Armor | HP | Sneak | Notes
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
| Scale Mail | 4 | Yes | Metal scales, noisy | Breastplate | 10 | yes | Cloth armor and metal chest plate
| Chain Shirt | 4 | Yes | Metal rings, worn under clothes | Chain Mail | 11 | No | Rings over padded base
| Brigandine | 5 | Yes | Plates riveted inside a jacket | Scale Mail | 12 | No | Metal scales, noisy
| Lamellar Armor | 5 | Yes | Laced metal or leather plates | Lamellar Armor | 13 | No | Laced metal plates
| Ring Mail | 4 | Yes | Rings over padded base
| Hardened Leather | 3 | Yes | Boiled and shaped for stiffness
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
|=== |===
@@ -839,15 +865,14 @@ can use koshes, but not any of the other weird weapons.
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
| Armor | HP | Sneak | Notes | Armor | HP | Sneak | Notes
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
| Chainmail | 6 | No | Full-body chain coverage | Splint Mail | 14 | No | Metal strips on a backing
| Splint Mail | 7 | No | Metal strips on a backing | Banded Mail | 15 | No | Horizontal bands over padding
| Banded Mail | 7 | No | Horizontal bands over padding | Half-Plate | 16 | No | Partial plate, better mobility
| Half-Plate | 8 | No | Partial plate, better mobility | Full Plate | 18 | No | Maximum protection, very heavy
| Full Plate | 9 | No | Maximum protection, very heavy
| Coat of Plates | 8 | No | Metal plates sewn into a coat
//----------------------|-----|-------|--------------------------------- //----------------------|-----|-------|---------------------------------
|=== |===
[[perks,perks]]
== Perks == Perks
This chapter is not for This chapter is not for
@@ -899,7 +924,7 @@ This chapter is not for
* Map * Map
** The world should be weird and funny, but not ridiculous. ** The world should be weird and funny, but not ridiculous.
** ShipWorld: the world, when seen from above, looks like the outline of a ** ShipWorld: the world, when seen from above, looks like the outline of a
ship, that's seen from above. But instead of being made of wooden planks, ship, that's also seen from above. But instead of being made of wooden planks,
there is real terrain and flora. But there should/could be elevation changes there is real terrain and flora. But there should/could be elevation changes
where the different decks (such as the Poop Deck) are. where the different decks (such as the Poop Deck) are.
*** What's around the ship? *** What's around the ship?
@@ -956,3 +981,5 @@ This chapter is not for
** Halvbitter: more badass than Djinn ** Halvbitter: more badass than Djinn
** Gooblin ** Gooblin
** Cowlbear (a bear in a cowl?) ** Cowlbear (a bear in a cowl?)

0
sheet.adoc Executable file → Normal file
View File

5
tooling/mathD100.lua Executable file → Normal file
View File

@@ -14,8 +14,10 @@ end
-- }}} -- }}}
--{{{ print_r --{{{ print_r
--- @diagnostic disable-next-line unused-function
local function print_r(t) local function print_r(t)
local print_r_cache = {} local print_r_cache = {}
--- @diagnostic disable-next-line unused-function
local function sub_print_r(t, indent) local function sub_print_r(t, indent)
if (print_r_cache[tostring(t)]) then if (print_r_cache[tostring(t)]) then
print(indent .. "*" .. tostring(t)) print(indent .. "*" .. tostring(t))
@@ -67,7 +69,8 @@ end
--}}} --}}}
--{{{ table_count --{{{ table_count
function table_count(t) --- @diagnostic disable-next-line unused-function
local function table_count(t)
local count = 0 local count = 0
for _ in pairs(t) do count = count + 1 end for _ in pairs(t) do count = count + 1 end
return count return count

5
tooling/mathD20.lua Executable file → Normal file
View File

@@ -1,7 +1,9 @@
-- --
--{{{ print_r(t) --{{{ print_r(t)
--- @diagnostic disable-next-line unused-function
local function print_r(t) local function print_r(t)
local print_r_cache = {} local print_r_cache = {}
--- @diagnostic disable-next-line unused-function
local function sub_print_r(t, indent) local function sub_print_r(t, indent)
if (print_r_cache[tostring(t)]) then if (print_r_cache[tostring(t)]) then
print(indent .. "*" .. tostring(t)) print(indent .. "*" .. tostring(t))
@@ -53,7 +55,8 @@ end
--}}} --}}}
--{{{ table_count(t) --{{{ table_count(t)
function table_count(t) --- @diagnostic disable-next-line unused-function
local function table_count(t)
local count = 0 local count = 0
for _ in pairs(t) do count = count + 1 end for _ in pairs(t) do count = count + 1 end
return count return count

0
tooling/process.lua Executable file → Normal file
View File

0
tooling/sorter.lua Executable file → Normal file
View File