main
Christopher P. Brown 2023-07-31 15:37:38 -06:00
commit f0efcbc481
40 changed files with 1383 additions and 0 deletions

244
README.md 100644
View File

@ -0,0 +1,244 @@
---
title: SPORTS HORSE
toc-title: Contents
author: dozens
date: 2022-11-13
status: draft
version: 0.1.0
---
TODO: overhaul currency system
## ABOUT
You are an equiludologist.
A student of horse sports.
Your goal is to build a stable full of the finest sports horses possible.
- create horses
- train them up
- compete in sports
- win prizes
- evolve and breed horses
## GETTING STARTED
Start with d3 * 100 CURRENCY, one stable stall, and one {{color}} {{type}} horse named {{name}}.
As you grow your stables, you can gain new horses by breeding them or purchasing a new horse for 150c.
Styles of play:
1. TIMED: Play for 24 turns and see how wonderful are your horses, how magnificent your stables.
2. FREE PLAY: Play forever, just you and your horses.
## TURNS
Every turn, pay d6 CURRENCY for each horse, and 10c for each stable.
Then you can do one of the following:
1. Build stables
3. Assign horses to compete or rest
2. Breed or purchase horses
4. Evolve horses
## HORSE ATTRIBUTES
Roll 3d6 for each:
1. RAZZLEDAZZLE: agility, precision, showmanship, performance
2. GUMPTION: brawn, boldness, initiative, aggressiveness
3. MOXIE: cunning, spirit, know-how
## HORSE SPIRIT
Roll 1d6 and add half your Gumption rounded down.
Your horse's spirit can be depleted by losing competitions. One spirit can be recovered for every week spent resting in the stables.
If your horse's spirit ever reaches zero, roll 1d6:
| D6 | RESULT |
|-------|---------------------------------------------------------|
| 1 | Time for them to retire and go out to pasture |
| 2 - 3 | Their spirit is crushed and they refuse to compete. Spend d6 CURRENCY nursing them back to health. |
| 4 - 5 | They'll be okay after spending some time in the stables |
| 6 | They're fine |
## HORSE SPORTS
Competing in sports can win you prize money, paid out in CURRENCY.
To compete, roll d20 under the sport's associated attribute. Your roll is how much CURRENCY you gain.
If you roll over, you lose the competition. Roll d20 to avoid losing Spirit. If you roll under, you lose spirit equal the difference between your stat and your roll. If you roll over, you lose that much spirit. If you roll your stat exactly, you lose no spirit.
RAZZLEDAZZLE SPORTS:
1. **Ring Jousting**: the horse must carry its rider so that they can capture a ring with their jousting instrument
2. **Lemon Sticking**: the horse must carry its rider so that they can pierce a lemon on the ground with their jousting instrument
3. **Chariot Racing**: the horse must draw a two-wheeled chariot
4. **Ballroom Dancing**: the horse must dance with elegance and poise
GUMPTION SPORTS:
5. **Basket Duck**: played with a live duck in a basket. The first side to deliver the duck back to their home ranch wins.
6. **Polo**: balls and mallets
7. **Horseball**: similar to basket duck, but the ball is a ball instead of a duck, and it must be passed through large vertical hoops in order to score.
8. **Running And Jumping**: the runningest, jumpingest horse is the winner.
MOXIE SPORTS:
9. **High Dive and Swimming**: a high dive competition, with a synchronized swimming event
10. **Horsegammon**: it's like backgammon but for horses
11. **Social Etiquette**: manners and social grace
12. **Rhyming and Riddling**: a battle of wits
## HORSE ADVANCEMENT
When it is time for your horse to get better (say, after 11 or 8 turns), you can attempt to either increase its spirit or increase its attributes.
- SPIRIT: gain an extra 1d6 max spirit
- ATTRIBUTES: roll 2d20 for each stat. If both roll under, increase it by 1. If both roll over, decrease it by 1.
## HORSE BREEDING
Breeding horses costs 50c. You must of course have an empty stable stall for the new horse.
1. Average the parent horses' stats with a third randomly generated horse.
2. Generate Spirit for the new horse as usual.
The new horse will be able to compete after 5 turns.
## HORSE NAMES
Template:
1. Adjective Noun
2. Adjective Adjective Noun
d66 Adjective:
(Roll 2d6. One for the tens place and one for the ones place.)
```
1.1 Bucket Of
1.2 We Bought The
1.3 Exceptional
1.4 Understood
1.5 Electric
1.6 Lunar
2.1 Wild
2.2 Soupy
2.3 Balanced
2.4 What
2.5 Humble
2.6 Tropical
3.1 Proud
3.2 Give Them
3.3 Let Them Eat
3.4 Perfect
3.5 Handsome
3.6 Ugly
4.1 Too Much
4.2 Eldritch
4.3 Her Imperial Majesty's
4.4 The People's
4.5 Coal Miner's Daughter's
4.6 Your Very Own
5.1 Randy
5.2 Clever
5.3 Punctual
5.4 My Favorite
5.5 Effectual
5.6 Reliable
6.1 Mister
6.2 Doctor
6.3 Eventual
6.4 Naked
6.5 Soaking
6.6 Blistering
```
d66 Noun:
```
1.1 Wizard
1.2 Apple
1.3 Farm
1.4 Dancer
1.5 Cheese
1.6 Shrubbery
2.1 Panic
2.2 Chocolate
2.3 Horror
2.4 Queen
2.5 Tropic
2.6 Thunder
3.1 Pride
3.2 Holiday
3.3 Hangover
3.4 Cake
3.5 Smoke
3.6 Echo
4.1 Commitment
4.2 Ransom
4.3 For The People
4.4 For The Win
4.5 In A Box
4.6 Under The Sea
5.1 Filibuster
5.2 Know It All
5.3 Bluster
5.4 Tornado
5.5 Gravity
5.6 Mess
6.1 Aristocrat
6.2 Royalty
6.3 Slander
6.4 Twenties
6.5 Hope
6.6 Science
```
## HORSE TYPES
1. Draft horse: +1 Gumption
2. Quarter horse: +1 Razzledazzle
3. Pony: +1 Moxie
## HORSE COLORS
1. black
2. white
3. chestnut
4. flaxen
5. spotted
6. red
7. tan
8. brown
9. pinto
10. palomino
## HORSE STABLES
You begin with space for one horse.
You can purchase an additional stable stall for 100c.

BIN
export/horse.pdf 100644

Binary file not shown.

BIN
export/horse.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
export/pages.pdf 100644

Binary file not shown.

View File

@ -0,0 +1,210 @@
/*
HTML5 Reader for Electric Zine Maker, made by Jeremy Oduber & contributors 2019-2021
v21.5
Me:
https://twitter.com/JeremyOduber
This:
https://jeremyoduber.itch.io/js-zine
Electric Zine Maker:
https://alienmelon.itch.io/electric-zine-maker
GitHub:
https://github.com/jeremyoduber/EZM-Reader
Licensed under the MIT License:
https://github.com/jeremyoduber/EZM-Reader/blob/main/LICENSE
*/
//---- USER OPTIONS ----//
const TEMPLATE = 1; // Change this value to set the template
/*
Available templates:
1: 8 pages (default)
8 Page Folded Zine
8 Page Z-Fold
Quarter Size
2: 12 pages
Fancy T-Cut Zine
3: 14 pages
Easy Long Cut
4: 16 pages
16 Page Micro-Mini
Mini-Booklet
Fancy Flapbook
5: 24 pages
Tetraflexagon
6: 26 pages
Square Accordion
Normal Accordion
7: 32 pages
Mini-Mini-Booklet
8: 64 pages
Micro
*/
const BGCOLOR = '#f5f5f5'; // Change this hex value to set the background color. Remember to keep the quotes!
const ALT = 'Reader for Electric Zine Maker'; // Change this to a plaintext copy or description of your content to make it visible to screen-readers
const SMOOTH = true; // Set to false if you want crispy pixels. Leave true if you like the blur.
//---- END USER OPTIONS ----//
// Setup constants and variables
const FOV = 45;
const LOADING_OVERLAY = document.querySelector('#loading');
let card_amount;
let current_state = 0;
let textures = [];
let pages = [];
document.body.style.background = BGCOLOR;
document.body.ariaLabel = ALT;
if (SMOOTH) {
document.body.style.imageRendering = 'auto';
} else {
document.body.style.imageRendering = 'pixelated';
}
const metaTheme = document.createElement('meta');
metaTheme.name = 'theme-color';
metaTheme.content = BGCOLOR;
document.head.appendChild(metaTheme);
function getTextures(num) {
return ['pages/FRONT.png', 'pages/INNERFRONT.png'].concat(
new Array(num).fill().map((_, idx) => 'pages/' + (idx + 1) + '.png'),
['pages/BACK.png']
);
}
// Select template
switch (TEMPLATE) {
default:
case 1:
card_amount = 4;
textures = getTextures(5);
break;
case 2:
card_amount = 6;
textures = getTextures(9);
break;
case 3:
card_amount = 7;
textures = getTextures(11);
break;
case 4:
card_amount = 8;
textures = getTextures(13);
break;
case 5:
card_amount = 12;
textures = getTextures(21);
break;
case 6:
card_amount = 13;
textures = getTextures(23);
break;
case 7:
card_amount = 16;
textures = getTextures(29);
break;
case 8:
card_amount = 32;
textures = getTextures(61);
break;
}
// Preloader
Promise.all(
textures.map(
src =>
new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => resolve(img);
img.onerror = reject;
img.src = src;
img.alt = src.split('/')[1].split('.')[0];
})
)
)
.then(imgs => {
LOADING_OVERLAY.remove();
const list = document.createElement('ul');
list.ariaHidden = true;
pages = imgs.map((img, idx) => {
const li = document.createElement('li');
const flip = idx % 2;
li.className = 'depth-' + Math.min(2, idx);
li.style.transform = 'translateX(100%) rotateY(0deg) scaleZ(' + (flip ? -1 : 1) + ')';
li.appendChild(img);
list.appendChild(li);
return li;
});
document.body.appendChild(list);
function updatePerspective() {
const w = window.innerWidth;
const h = window.innerHeight;
list.style.perspective = Math.sqrt(((w / 2) * w) / 2 + ((h / 2) * h) / 2) / Math.tan(((FOV / 2) * Math.PI) / 180) + 'px';
}
window.addEventListener('resize', updatePerspective);
updatePerspective();
})
.catch(error => {
console.error(error);
LOADING_OVERLAY.textContent = 'Something went wrong! Make sure your images are in the pages folder! See console for details.';
});
// Keyboard input
document.addEventListener('keyup', function onKeyUp(key) {
if (key.key === 'ArrowLeft' || key.key === 'a') {
flipLeft();
} else if (key.key === 'ArrowRight' || key.key === 'd') {
flipRight();
}
});
// Mouse input
document.addEventListener('pointerup', function onPointerUp(event) {
if (event.button !== 0) return;
if (event.clientX < window.innerWidth / 2) {
flipRight();
} else {
flipLeft();
}
});
function getPages(state) {
return [pages[state * 2], pages[state * 2 + 1]].filter(i => i);
}
function replaceTransformPerPage(state, search, replace) {
getPages(state).forEach(page => {
page.style.transform = page.style.transform.replace(search, replace);
});
}
function setDepth(state, depth) {
getPages(state).forEach(page => {
page.className = page.className.replace(/depth-\d+/, 'depth-' + Math.min(depth, 2));
});
}
// Flip page left
function flipLeft() {
if (current_state >= card_amount) return;
replaceTransformPerPage(current_state, '0deg', '-180deg');
setDepth(current_state - 1, 1);
setDepth(current_state - 2, 2);
setDepth(current_state + 1, 0);
setDepth(current_state + 2, 1);
++current_state;
}
// Flip page right
function flipRight() {
if (current_state <= 0) return;
replaceTransformPerPage(current_state - 1, '-180deg', '0deg');
setDepth(current_state - 3, 1);
setDepth(current_state - 2, 0);
setDepth(current_state + 1, 2);
setDepth(current_state, 1);
--current_state;
}

View File

@ -0,0 +1,110 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Reader for EZM</title>
<meta property="og:title" content="Reader for EZM" />
<meta name="description" content="An electric zine" />
<meta property="og:description" content="An electric zine" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="./pages/FRONT.png" type="image/png" />
<link rel="apple-touch-icon" href="./pages/FRONT.png" type="image/png" />
<style>
html,
body {
padding: 0;
margin: 0;
overflow: hidden;
font-family: sans-serif;
text-align: center;
}
#loading {
position: absolute;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: #f5f5f5;
}
ul {
padding: 0;
margin: 0;
list-style: none;
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
transform-style: preserve-3d;
user-select: none;
perspective-origin: center;
perspective: 1000px;
}
li {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
width: 50%;
height: 100%;
backface-visibility: hidden;
transform-style: preserve-3d;
transform-origin: center left;
transition: transform 0.8s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
img {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
backface-visibility: hidden;
object-fit: contain;
object-position: center left;
transition: transform 0.8s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
li:nth-child(even) img {
object-position: center right;
}
li.depth-0 img {
transform: translateZ(0) scaleX(1);
}
li:nth-child(even) img {
transform: translateZ(0) scaleX(-1);
}
li.depth-1 img {
transform: translateZ(-2px) scaleX(1);
}
li.depth-1:nth-child(even) img {
transform: translateZ(-2px) scaleX(-1);
}
li.depth-2 img {
transform: translateZ(-4px) scaleX(1);
}
li.depth-2:nth-child(even) img {
transform: translateZ(-4px) scaleX(-1);
}
</style>
</head>
<body>
<noscript>This electric zine requires javascript to be enabled.</noscript>
<div id="loading">loading zine...</div>
<script src="ezmreader.js"></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

445
horse.html 100644
View File

@ -0,0 +1,445 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="dozens" />
<meta name="dcterms.date" content="2022-11-13" />
<title>SPORTS HORSE</title>
<style>
html {
line-height: 1.5;
font-family: Georgia, serif;
font-size: 20px;
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 1em;
}
h1 {
font-size: 1.8em;
}
}
@media print {
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, 'Lucida Console', Consolas, monospace;
font-size: 85%;
margin: 0;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<header id="title-block-header">
<h1 class="title">SPORTS HORSE</h1>
<p class="author">dozens</p>
<p class="date">2022-11-13</p>
</header>
<nav id="TOC" role="doc-toc">
<h2 id="toc-title">Contents</h2>
<ul>
<li><a href="#about" id="toc-about">ABOUT</a></li>
<li><a href="#getting-started" id="toc-getting-started">GETTING
STARTED</a></li>
<li><a href="#turns" id="toc-turns">TURNS</a></li>
<li><a href="#horse-attributes" id="toc-horse-attributes">HORSE
ATTRIBUTES</a></li>
<li><a href="#horse-spirit" id="toc-horse-spirit">HORSE SPIRIT</a></li>
<li><a href="#horse-sports" id="toc-horse-sports">HORSE SPORTS</a></li>
<li><a href="#horse-advancement" id="toc-horse-advancement">HORSE
ADVANCEMENT</a></li>
<li><a href="#horse-breeding" id="toc-horse-breeding">HORSE
BREEDING</a></li>
<li><a href="#horse-names" id="toc-horse-names">HORSE NAMES</a></li>
<li><a href="#horse-types" id="toc-horse-types">HORSE TYPES</a></li>
<li><a href="#horse-colors" id="toc-horse-colors">HORSE COLORS</a></li>
<li><a href="#horse-stables" id="toc-horse-stables">HORSE
STABLES</a></li>
</ul>
</nav>
<p>TODO: overhaul currency system</p>
<h2 id="about">ABOUT</h2>
<p>You are an equiludologist. A student of horse sports. Your goal is to
build a stable full of the finest sports horses possible.</p>
<ul>
<li>create horses</li>
<li>train them up</li>
<li>compete in sports</li>
<li>win prizes</li>
<li>evolve and breed horses</li>
</ul>
<h2 id="getting-started">GETTING STARTED</h2>
<p>Start with d3 * 100 CURRENCY, one stable stall, and one {{color}}
{{type}} horse named {{name}}.</p>
<p>As you grow your stables, you can gain new horses by breeding them or
purchasing a new horse for 150c.</p>
<p>Styles of play:</p>
<ol type="1">
<li><p>TIMED: Play for 24 turns and see how wonderful are your horses,
how magnificent your stables.</p></li>
<li><p>FREE PLAY: Play forever, just you and your horses.</p></li>
</ol>
<h2 id="turns">TURNS</h2>
<p>Every turn, pay d6 CURRENCY for each horse, and 10c for each
stable.</p>
<p>Then you can do one of the following:</p>
<ol type="1">
<li>Build stables</li>
<li>Assign horses to compete or rest</li>
<li>Breed or purchase horses</li>
<li>Evolve horses</li>
</ol>
<h2 id="horse-attributes">HORSE ATTRIBUTES</h2>
<p>Roll 3d6 for each:</p>
<ol type="1">
<li><p>RAZZLEDAZZLE: agility, precision, showmanship,
performance</p></li>
<li><p>GUMPTION: brawn, boldness, initiative, aggressiveness</p></li>
<li><p>MOXIE: cunning, spirit, know-how</p></li>
</ol>
<h2 id="horse-spirit">HORSE SPIRIT</h2>
<p>Roll 1d6 and add half your Gumption rounded down.</p>
<p>Your horses spirit can be depleted by losing competitions. One
spirit can be recovered for every week spent resting in the stables.</p>
<p>If your horses spirit ever reaches zero, roll 1d6:</p>
<table>
<colgroup>
<col style="width: 10%" />
<col style="width: 89%" />
</colgroup>
<thead>
<tr class="header">
<th>D6</th>
<th>RESULT</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1</td>
<td>Time for them to retire and go out to pasture</td>
</tr>
<tr class="even">
<td>2 - 3</td>
<td>Their spirit is crushed and they refuse to compete. Spend d6
CURRENCY nursing them back to health.</td>
</tr>
<tr class="odd">
<td>4 - 5</td>
<td>Theyll be okay after spending some time in the stables</td>
</tr>
<tr class="even">
<td>6</td>
<td>Theyre fine</td>
</tr>
</tbody>
</table>
<h2 id="horse-sports">HORSE SPORTS</h2>
<p>Competing in sports can win you prize money, paid out in
CURRENCY.</p>
<p>To compete, roll d20 under the sports associated attribute. Your
roll is how much CURRENCY you gain.</p>
<p>If you roll over, you lose the competition. Roll d20 to avoid losing
Spirit. If you roll under, you lose spirit equal the difference between
your stat and your roll. If you roll over, you lose that much spirit. If
you roll your stat exactly, you lose no spirit.</p>
<p>RAZZLEDAZZLE SPORTS:</p>
<ol type="1">
<li><strong>Ring Jousting</strong>: the horse must carry its rider so
that they can capture a ring with their jousting instrument</li>
<li><strong>Lemon Sticking</strong>: the horse must carry its rider so
that they can pierce a lemon on the ground with their jousting
instrument</li>
<li><strong>Chariot Racing</strong>: the horse must draw a two-wheeled
chariot</li>
<li><strong>Ballroom Dancing</strong>: the horse must dance with
elegance and poise</li>
</ol>
<p>GUMPTION SPORTS:</p>
<ol start="5" type="1">
<li><strong>Basket Duck</strong>: played with a live duck in a basket.
The first side to deliver the duck back to their home ranch wins.</li>
<li><strong>Polo</strong>: balls and mallets</li>
<li><strong>Horseball</strong>: similar to basket duck, but the ball is
a ball instead of a duck, and it must be passed through large vertical
hoops in order to score.</li>
<li><strong>Running And Jumping</strong>: the runningest, jumpingest
horse is the winner.</li>
</ol>
<p>MOXIE SPORTS:</p>
<ol start="9" type="1">
<li><strong>High Dive and Swimming</strong>: a high dive competition,
with a synchronized swimming event</li>
<li><strong>Horsegammon</strong>: its like backgammon but for
horses</li>
<li><strong>Social Etiquette</strong>: manners and social grace</li>
<li><strong>Rhyming and Riddling</strong>: a battle of wits</li>
</ol>
<h2 id="horse-advancement">HORSE ADVANCEMENT</h2>
<p>When it is time for your horse to get better (say, after 11 or 8
turns), you can attempt to either increase its spirit or increase its
attributes.</p>
<ul>
<li><p>SPIRIT: gain an extra 1d6 max spirit</p></li>
<li><p>ATTRIBUTES: roll 2d20 for each stat. If both roll under, increase
it by 1. If both roll over, decrease it by 1.</p></li>
</ul>
<h2 id="horse-breeding">HORSE BREEDING</h2>
<p>Breeding horses costs 50c. You must of course have an empty stable
stall for the new horse.</p>
<ol type="1">
<li><p>Average the parent horses stats with a third randomly generated
horse.</p></li>
<li><p>Generate Spirit for the new horse as usual.</p></li>
</ol>
<p>The new horse will be able to compete after 5 turns.</p>
<h2 id="horse-names">HORSE NAMES</h2>
<p>Template:</p>
<ol type="1">
<li>Adjective Noun</li>
<li>Adjective Adjective Noun</li>
</ol>
<p>d66 Adjective:</p>
<p>(Roll 2d6. One for the tens place and one for the ones place.)</p>
<pre><code>1.1 Bucket Of
1.2 We Bought The
1.3 Exceptional
1.4 Understood
1.5 Electric
1.6 Lunar
2.1 Wild
2.2 Soupy
2.3 Balanced
2.4 What
2.5 Humble
2.6 Tropical
3.1 Proud
3.2 Give Them
3.3 Let Them Eat
3.4 Perfect
3.5 Handsome
3.6 Ugly
4.1 Too Much
4.2 Eldritch
4.3 Her Imperial Majesty&#39;s
4.4 The People&#39;s
4.5 Coal Miner&#39;s Daughter&#39;s
4.6 Your Very Own
5.1 Randy
5.2 Clever
5.3 Punctual
5.4 My Favorite
5.5 Effectual
5.6 Reliable
6.1 Mister
6.2 Doctor
6.3 Eventual
6.4 Naked
6.5 Soaking
6.6 Blistering</code></pre>
<p>d66 Noun:</p>
<pre><code>1.1 Wizard
1.2 Apple
1.3 Farm
1.4 Dancer
1.5 Cheese
1.6 Shrubbery
2.1 Panic
2.2 Chocolate
2.3 Horror
2.4 Queen
2.5 Tropic
2.6 Thunder
3.1 Pride
3.2 Holiday
3.3 Hangover
3.4 Cake
3.5 Smoke
3.6 Echo
4.1 Commitment
4.2 Ransom
4.3 For The People
4.4 For The Win
4.5 In A Box
4.6 Under The Sea
5.1 Filibuster
5.2 Know It All
5.3 Bluster
5.4 Tornado
5.5 Gravity
5.6 Mess
6.1 Aristocrat
6.2 Royalty
6.3 Slander
6.4 Twenties
6.5 Hope
6.6 Science</code></pre>
<h2 id="horse-types">HORSE TYPES</h2>
<ol type="1">
<li>Draft horse: +1 Gumption</li>
<li>Quarter horse: +1 Razzledazzle</li>
<li>Pony: +1 Moxie</li>
</ol>
<h2 id="horse-colors">HORSE COLORS</h2>
<ol type="1">
<li>black</li>
<li>white</li>
<li>chestnut</li>
<li>flaxen</li>
<li>spotted</li>
<li>red</li>
<li>tan</li>
<li>brown</li>
<li>pinto</li>
<li>palomino</li>
</ol>
<h2 id="horse-stables">HORSE STABLES</h2>
<p>You begin with space for one horse. You can purchase an additional
stable stall for 100c.</p>
</body>
</html>

236
horse.rec 100644
View File

@ -0,0 +1,236 @@
%rec: adj
adj: Horsey
adj: Bucket Of
adj: We Bought The
adj: Exceptional
adj: Understood
adj: Electric
adj: Lunar
adj: Wild
adj: Soupy
adj: Balanced
adj: What
adj: Humble
adj: Tropical
adj: Proud
adj: Give Them
adj: Let Them Eat
adj: Perfect
adj: Handsome
adj: Ugly
adj: Too Much
adj: Eldritch
adj: Her Imperial Majesty's
adj: The People's
adj: Coal Miner's Daughter's
adj: Your Very Own
adj: Randy
adj: Clever
adj: Punctual
adj: My Favorite
adj: Effectual
adj: Reliable
adj: Mister
adj: Doctor
adj: Eventual
adj: Naked
adj: Soaking
adj: Blistering
%rec: noun
noun: Horsey
noun: Wizard
noun: Apple
noun: Farm
noun: Dancer
noun: Cheese
noun: Shrubbery
noun: Panic
noun: Chocolate
noun: Horror
noun: Queen
noun: Tropic
noun: Thunder
noun: Pride
noun: Holiday
noun: Hangover
noun: Cake
noun: Smoke
noun: Echo
noun: Commitment
noun: Ransom
noun: For The People
noun: For The Win
noun: In A Box
noun: Under The Sea
noun: Filibuster
noun: Know It All
noun: Bluster
noun: Tornado
noun: Gravity
noun: Mess
noun: Aristocrat
noun: Royalty
noun: Slander
noun: Twenties
noun: Hope
noun: Science
%rec: color
color: black
color: white
color: chestnut
color: flaxen
color: spotted
color: red
color: tan
color: brown
color: pinto
color: palomino
%rec: breed
name: Draft horse
bonus: Gumption
name: Quarter horse
bonus: Razzledazzle
name: Pony
bonus: Moxie
%rec: sport
name: Ring Jousting
desc: the horse must carry its rider so that they can capture a ring with their jousting instrument
attr: razzledazzle
name: Lemon Sticking
desc: the horse must carry its rider so that they can pierce a lemon on the ground with their jousting instrument
attr: razzledazzle
name: Chariot Racing
desc: the horse must draw a two-wheeled chariot
attr: razzledazzle
name: Ballroom Dancing
desc: the horse must dance with elegance and poise
attr: razzledazzle
name: Basket Duck
desc: played with a live duck in a basket. The first side to deliver the duck back to their home ranch wins.
attr: gumption
name: Polo
desc: balls and mallets
attr: gumption
name: Horseball
desc: similar to basket duck, but the ball is a ball instead of a duck, and it must be passed through large vertical hoops in order to score.
attr: gumption
name: Running And Jumping
desc: the runningest, jumpingest horse is the winner.
attr: gumption
name: High Dive and Swimming
desc: a high dive competition, with a synchronized swimming event
attr: moxie
name: Horse Backgammon
desc: its like backgammon but for horses
attr: moxie
name: Social Etiquette
desc: manners and social grace
attr: moxie
name: Rhyming and Riddling
desc: a battle of wits
attr: moxie

27
justfile 100644
View File

@ -0,0 +1,27 @@
# list all recipes
default:
@just --list --unsorted
# make html
html:
@pandoc -s --toc -t html -o horse.html README.md
# watch for changes
watch:
@ls README.md | entr just html
# get 1 adj
adj:
@recsel -t adj -m 1 -P adj horse.rec
# get 1 noun
noun:
@recsel -t noun -m 1 -P noun horse.rec
# get 1 breed
breed:
@recsel -t breed -m 1 -P name horse.rec
# get 1 sport
sport:
@recsel -P name,desc -t sport -m 1 horse.rec

110
play.md 100644
View File

@ -0,0 +1,110 @@
---
title: Let's Play Sports Horse
date: 2022-11-13
ruleset: draft v0.1.0
---
## Setup
Let's make our first horse:
- Let Them Eat Ugly For The Win, a pinto pony (Razzledazzle 8, Gumption 15, Moxie 7, 10 spirit)
I love him already.
I start with 100c.
This will be a short, timed play. Let's see where we're at after 12 turns.
Here we go!
## Turn 1
Need to pay 6c for my pony and 10c for my stalls = already down to 84c
Let Them Eat Ugly For The Win doesn't really have much Razzledazzle or Moxie to speak of, so let's compete in a Gumption sport.
I personally can't wait to play Basket Duck.
Roll d20 under 15. Get 13 = 2c winnings = 86c total
Yikes, sports horsing is kind of expensive, and doesn't pay that good!
## Turn 2
Pay 11c upkeep = 75c
Let's do some more gumption!
12 vs 15 Gumption = 3c = 78c
C'mon ftw, make poppa some currency!!
## Turn 3
12c upkeep = 63c
Let's play Running and Jumping
6 vs 15 Gumption = 9c = 72c
I might really have to tweak how upkeep works. It is really hard to make a profit here..
## Turn 4
12c upkeep = 60c
12 vs 15 Gumption = 3c = 63c
## Turn 5
13c upkeep = 47c
really burning through my money..
10 vs 15 Gumption = 52c
I don't think my winnings have been more than my upkeep this whole time.
## Turn 6
11c upkeep = 41c
8 vs 15 Gumption = 48c
## Turn 7
16c upkeep yikes = 25c
19 vs 15 Gumption. Uh oh! FTW lost the competition!
He's going to roll Gumption to avoid losing spirit, and takes 16 damage to his spirit. that puts him in the negative. sad!!
spirit result: 3 = their spirit is crushed! i have to spend 1 currency nursing them back to health. 24c total
poor boy
## Turn 8
15c upkeep = 9c remaining!
Well back to the sports though!
Time to play some Basket Duck!
13 vs 15 Gumption = 11c
## Turn 9
15c upkeep = I'm flat broke, -4c
I'll compete one more time to see what happens
12 vs 15 Gumption = -1c
## Conclusion
That was not a very fun horse game.
That was a rather stressful money management game.
Decision: heavily tweak or do away with upkeep costs. I didn't get to do any of the fun stuff like getting extra horses or anything!

BIN
zine/1.xcf 100644

Binary file not shown.

BIN
zine/2.xcf 100644

Binary file not shown.

BIN
zine/4.xcf 100644

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

BIN
zine/INNERFRONT.xcf 100644

Binary file not shown.

BIN
zine/adjective.xcf 100644

Binary file not shown.

BIN
zine/cover.xcf 100644

Binary file not shown.

BIN
zine/fold.xcf 100644

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

View File

@ -0,0 +1 @@
This is your save file from the Electric Zine Maker. Do not rename the images! Images must be named respective of the panel they are loaded into. Images must be .png's. To load this zine drag and drop this folder into the Main Menu Page Area of the Zine Maker. To load individual panels just drag & drop the one panel image that you want to load.

BIN
zine/noun.xcf 100644

Binary file not shown.