First commit

This commit is contained in:
Juhani Krekelä 2020-01-12 23:52:52 +02:00
commit 636c6430d7
23 changed files with 409 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
in-the-temple/
*.swp
*.zip
*.tar.gz

116
CC0 Normal file
View File

@ -0,0 +1,116 @@
CC0 1.0 Universal
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator and
subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for the
purpose of contributing to a commons of creative, cultural and scientific
works ("Commons") that the public can reliably and without fear of later
claims of infringement build upon, modify, incorporate in other works, reuse
and redistribute as freely as possible in any form whatsoever and for any
purposes, including without limitation commercial purposes. These owners may
contribute to the Commons to promote the ideal of a free culture and the
further production of creative, cultural and scientific works, or to gain
reputation or greater distribution for their Work in part through the use and
efforts of others.
For these and/or other purposes and motivations, and without any expectation
of additional consideration or compensation, the person associating CC0 with a
Work (the "Affirmer"), to the extent that he or she is an owner of Copyright
and Related Rights in the Work, voluntarily elects to apply CC0 to the Work
and publicly distribute the Work under its terms, with knowledge of his or her
Copyright and Related Rights in the Work and the meaning and intended legal
effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not limited
to, the following:
i. the right to reproduce, adapt, distribute, perform, display, communicate,
and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or likeness
depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data in
a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation thereof,
including any amended or successor version of such directive); and
vii. other similar, equivalent or corresponding rights throughout the world
based on applicable law or treaty, and any national implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention of,
applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and
unconditionally waives, abandons, and surrenders all of Affirmer's Copyright
and Related Rights and associated claims and causes of action, whether now
known or unknown (including existing as well as future claims and causes of
action), in the Work (i) in all territories worldwide, (ii) for the maximum
duration provided by applicable law or treaty (including future time
extensions), (iii) in any current or future medium and for any number of
copies, and (iv) for any purpose whatsoever, including without limitation
commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes
the Waiver for the benefit of each member of the public at large and to the
detriment of Affirmer's heirs and successors, fully intending that such Waiver
shall not be subject to revocation, rescission, cancellation, termination, or
any other legal or equitable action to disrupt the quiet enjoyment of the Work
by the public as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason be
judged legally invalid or ineffective under applicable law, then the Waiver
shall be preserved to the maximum extent permitted taking into account
Affirmer's express Statement of Purpose. In addition, to the extent the Waiver
is so judged Affirmer hereby grants to each affected person a royalty-free,
non transferable, non sublicensable, non exclusive, irrevocable and
unconditional license to exercise Affirmer's Copyright and Related Rights in
the Work (i) in all territories worldwide, (ii) for the maximum duration
provided by applicable law or treaty (including future time extensions), (iii)
in any current or future medium and for any number of copies, and (iv) for any
purpose whatsoever, including without limitation commercial, advertising or
promotional purposes (the "License"). The License shall be deemed effective as
of the date CC0 was applied by Affirmer to the Work. Should any part of the
License for any reason be judged legally invalid or ineffective under
applicable law, such partial invalidity or ineffectiveness shall not
invalidate the remainder of the License, and in such case Affirmer hereby
affirms that he or she will not (i) exercise any of his or her remaining
Copyright and Related Rights in the Work or (ii) assert any associated claims
and causes of action with respect to the Work, in either case contrary to
Affirmer's express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or warranties
of any kind concerning the Work, express, implied, statutory or otherwise,
including without limitation warranties of title, merchantability, fitness
for a particular purpose, non infringement, or the absence of latent or
other defects, accuracy, or the present or absence of errors, whether or not
discoverable, all to the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without limitation
any person's Copyright and Related Rights in the Work. Further, Affirmer
disclaims responsibility for obtaining any necessary consents, permissions
or other rights required for any use of the Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to this
CC0 or use of the Work.
For more information, please see
<http://creativecommons.org/publicdomain/zero/1.0/>

4
README Normal file
View File

@ -0,0 +1,4 @@
A small game about a visit to a temple and the reasons for doing so.
The game is distributed under the Creative Commons Zero 1.0 Universal
license.

8
build.sh Normal file
View File

@ -0,0 +1,8 @@
#!/bin/sh
mkdir -p in-the-temple
cd scenes
for i in *
do
echo "${i%.text}"
python3 ../generate.py 'In the Temple' "$i" > ../in-the-temple/"${i%.text}.html"
done

3
clean.sh Normal file
View File

@ -0,0 +1,3 @@
#!/bin/sh
rm -rf in-the-temple/
rm -f in-the-tempele.zip in-the-temple.tar.gz

83
generate.py Normal file
View File

@ -0,0 +1,83 @@
import html
import sys
import urllib.parse
template = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>__title__</title>
<style>
html { background-color: #eee; }
body {
margin: 1em auto;
max-width: 40em;
padding: 1em; padding-top: 0.2em; padding-bottom: 0.2em;
text-align: justify; font-size: 14pt;
background-color: #fff;
}
h1, h2, h3 { font-weight: bold; }
h1, h2, h3, h4, h5, h6 { text-align: left; }
em { font-style: italic; }
@media print {
body { max-width: none; padding: 0; }
}
</style>
</head>
<body>
<h1>__scene__</h1>
__description__
__choices__
</body>
</html>"""
def generate_html(name, scene, description, choices):
# HTML escape the plain text fields
name = html.escape(name)
scene = html.escape(scene)
# Create a list of paragraphs from the description array
description = ['<p>%s</p>' % html.escape(paragraph) for paragraph in description]
description = '\n'.join(description)
# Generate a list of links from choices array
choices = ['<li><a href="%s.html">%s</a></li>' % (urllib.parse.quote(target), text) for target, text in choices]
choices = '\n'.join(choices)
choices = '<ul>\n%s\n</ul>' % choices
title = '%s - %s' % (name, scene)
return template.replace('__title__', title).replace('__scene__', scene).replace('__description__', description).replace('__choices__', choices)
def parse_file(contents):
lines = contents.replace('\r\n', '\n').split('\n')
scene = lines[0]
description = []
choices = []
for line in lines[1:]:
if line[0:1] == '>':
# Choice
target, _, text = line[1:].strip().partition(' ')
choices.append((target, text))
else:
description.append(line)
description = '\n'.join(description).split('\n\n')
while '' in description:
description.remove('')
return scene, description, choices
def main():
name = sys.argv[1]
with open(sys.argv[2], 'r') as f:
contents = f.read()
scene, description, choices = parse_file(contents)
print(generate_html(name, scene, description, choices))
if __name__ == '__main__':
main()

9
missing.sh Normal file
View File

@ -0,0 +1,9 @@
#!/bin/sh
cd scenes
for i in *
do
for target in $(egrep '>' "$i" | sed -E 's/^> *([^ ]+) +.*$/\1/')
do
test -e "$target.text" || echo "$target"
done
done

9
package.sh Normal file
View File

@ -0,0 +1,9 @@
#!/bin/sh
if test ! -d in-the-temple
then
echo "You must run build.sh first" >&2
exit 1
fi
zip -9 -r in-the-temple.zip in-the-temple
tar czvf in-the-temple.tar.gz in-the-temple

7
scenes/do.text Normal file
View File

@ -0,0 +1,7 @@
Doing
Yes, it is finally time. You make sure that everything is just right, and
> sacrifice take the knife
> iconoclasm raise your axe
> prayer kneel before the idol

13
scenes/give-coin.text Normal file
View File

@ -0,0 +1,13 @@
Giving a Coin
You take out a silver coin from the pouch hanging from your belt. It
represents the work of several weeks as a cobbler.
You take the coin and throw it to the fountain that is behind the idol,
where you hear it clink against other coins that have been deposited
previously.
You turn back and walk through the curtains to the common side of the
temple, where other devout are waiting for their turn to enter the sanctum.
> index Return back to the beginning

12
scenes/give-comb.text Normal file
View File

@ -0,0 +1,12 @@
Giving a Comb
You hold a finely carved wooden comb in your hands. It is a comb you have
made yourself, the masterpiece that gave you full rights in the guild. You
are sacrificing not only its monetary value, but its value to you
personally.
You place the comb next to the knife, say a few words asking Arattavesh to
accept your payment, and walk back to the door to the sanctum. A priest
sprinkles water on you, and closes the heavy door after you step outside.
> index Return back to the beginning

7
scenes/give.text Normal file
View File

@ -0,0 +1,7 @@
Giving
You have arrived to deposit a votive offering to Arattavesh for healing
your sickness over the winter. You intend to give
> give-comb a wooden comb
> give-coin a silver coin

16
scenes/iconoclasm.text Normal file
View File

@ -0,0 +1,16 @@
Iconoclasm
There is but one abomination in the eyes of gods bad enough to warrant a
death in the marshes. And that is the worship of earthly images in their
stead.
You raise your axe and let it fall onto the head of the idol. There is a
crunching sound and you see the wood split, maggots crawling out of it. Of
course, of course. The idol is as rotten as the act of worshiping it.
The heathen ways are over again, and the temple shall be cleansed. You
raise your arms and shout as loud as you can: "Witness me Arattavesh, for I
will cleanse your house of the ways of the Eluwing, and enact revenge on
those who have it thus defiled!"
> index Return back to the beginning

3
scenes/index.text Normal file
View File

@ -0,0 +1,3 @@
Index
This is a story of your visit to the temple of Arattavesh.
> start Click here to start

15
scenes/prayer.text Normal file
View File

@ -0,0 +1,15 @@
Prayer
"You who will remain when I am gone
To help my family in time of need
To shield the eastern flank of this city
To leave the graves of our ancestors safe
To bring the flood as you have brought
I ask you"
> index Return back to the beginning

View File

@ -0,0 +1,11 @@
A Sacrifice of Blood
It hurts a little but you do not care, as you let the droplets of blood
drip into the bowl. Just like mixing your blood with that of your sworn
sister cements your bond, so does giving it to your god.
You are a fully fledged priest of Arattavesh, the one who rules behind the
waves and in the dark caverns of earth. You hurry to your new family who
are waiting at the foot of the mountain.
> index Return back to the beginning

View File

@ -0,0 +1,19 @@
A Sacrifice of Bread
As Arattavesh gives you grain, you shall give her back. A slice of every
loaf made before the next new moon shall be hers, and the bakers will be
giving their share starting tomorrow. But this loaf is special, the first
loaf baked from new grain, and it is reserved for the junior priest of the
temple. Which is you.
You know that you shall not be too stingy and cut only the skin. You also
know you have to be exact and not cut a too big of a slice off. But that is
no issue. You end up with a slice that is just right, and place it in the
bowl before the idol.
After this is done, you lay the knife back down, and recite one of the old
hymns, too old for people to understand anymore. You feel that Arattavesh
is pleased in you as you walk up to the roof of the temple house and then
across to the end of the block.
> index Return back to the beginning

10
scenes/sacrifice.text Normal file
View File

@ -0,0 +1,10 @@
Making a Sacrifice
You take the blade, and think of the long nights spent replaying the
formula of the sacrifice in your head. You've seen ones before, but never
this one, for it is one that a priest must do alone.
You say the words, and cut
> sacrifice-bread a loaf of bread
> sacrifice-blood your finger

11
scenes/start.text Normal file
View File

@ -0,0 +1,11 @@
Before the Idol
You are in the back of the temple, before the idol of Arattavesh. It is a
well made wooden statue painted with gold and blue.
In front of the statue there is an ornate knife and a plain wooden bowl.
You have come here to the sanctum to
> give give something
> take take something
> do do something

12
scenes/take-bowl.text Normal file
View File

@ -0,0 +1,12 @@
Taking the Bowl
The bowl you had offered just a week before is still here. You had left it
as a thanks of your husband's recovery, but now you husband is gone, your
fields are destroyed, and all this is the name of Arattavesh.
If the gods shall curse you for breaching the holiness of the sanctum let
them, for you curse the gods too. You take that which you dedicated to
Arattavesh and quietly state "You have taken back your gift and so I
shall take back mine" before slipping back into the night.
> index Return back to the beginning

9
scenes/take-idol.text Normal file
View File

@ -0,0 +1,9 @@
Taking the Idol
Here it is. The protector god of your village, taken by force when you were
but a small child.
They call her Arattavesh, after the river, but you know better. As you lift
the idol you whisper: "Panglya, you shall be home soon."
> index Return back to the beginning

20
scenes/take-knife.text Normal file
View File

@ -0,0 +1,20 @@
Taking the Knife
The knife is very nicely made. You admire it for a small while, before
slipping it into the bag you carry around your shoulders.
You aren't committing a sin, or if you are it's not a great one. The
chanter who lives in the main city has not yet come and completed the
dedication. The one who's knelt before the idol and left it here has merely
announced an intention to give it to their god so it's still theirs, and
they will not miss it.
If Nagiri holds up his end of the bargain your debt shall be gone come
tomorrow and you can leave the land you work but do not own. You get
excited, but then try to calm down. It is not over yet.
You walk out into the evening crowd still in the market before the sanctum.
There are so many people here nobody will remember and be able to speak
against you.
> index Return back to the beginning

8
scenes/take.text Normal file
View File

@ -0,0 +1,8 @@
Taking
There it is. Right before you. You steal a glance behind you hoping to make
sure that nobody spots you in the darkness as you reach out and grab
> take-bowl the bowl
> take-knife the knife
> take-idol the idol