main
dozens 2022-09-03 17:34:38 -06:00
commit ef1c8edb8c
3 changed files with 868 additions and 0 deletions

53
README.md 100644
View File

@ -0,0 +1,53 @@
# one page solo engine
https://inflatablestudios.itch.io/one-page-solo-engine
## Getting Started
You will need:
- recutlis
- casey/just
## Usage
New scenario:
- `j new`: plot, event, scene
NOTE: if `scene` returns YES, that is an alteration. Roll `j alteration`.
Focus:
- `j action`
- `j detail`
- `j topic`
Oracle:
- `j even`
- `j likely`
- `j unlikely`
NPC:
- `j npc`
GM Moves:
- `j pacing` to spice things up
- `j failure` for when things go bad
Dungeon and Hex:
- `j dungeon`
- `j hex`: populate neighboring hexes
- `j hexevent`: an event for this hex
## Todo
- [ ] create/read/update delete NPCs
- [ ] create/read/update delete threads
- [x] basic generators

670
db.rec 100644
View File

@ -0,0 +1,670 @@
%rec: domain
id: 1
text: Physical (appearance, existence)
id: 2
text: Technical (mental, operation)
id: 3
text: Mystical (meaning, capability)
id: 4
text: Social (personal, connection)
%rec: complication
id: 1
text: Hostile forces oppose you
id: 2
text: An obstacle blocks your way
id: 3
text: Wouldn't it suck if...
id: 4
text: An NPC acts suddenly
id: 5
text: All is not as it seems
id: 6
text: Things actually go as planned
%rec: alteredscene
id: 1
text: no
id: 2
text: no
id: 3
text: no
id: 4
text: no
id: 5
text: yes
id: 6
text: yes
%rec: alteration
id: 1
text: A major detail of the scene is enhanced or somehow worse
id: 2
text: The environment is different
id: 3
text: Unexpected NPCs are present
id: 4
text: Add a SCENE COMPLICATION
id: 5
text: Add a PACING MOVE
id: 6
text: Add a RANDOM EVENT
%rec: likely
id: 1
text: no
id: 2
text: no
id: 3
text: yes
id: 4
text: yes
id: 5
text: yes
id: 6
text: yes
%rec: even
id: 1
text: no
id: 2
text: no
id: 3
text: no
id: 4
text: yes
id: 5
text: yes
id: 6
text: yes
%rec: unlikely
id: 1
text: no
id: 2
text: no
id: 3
text: no
id: 4
text: no
id: 5
text: yes
id: 6
text: yes
%rec: intensifier
id: 1
text: but...
id: 2
text:
id: 3
text:
id: 4
text:
id: 5
text:
id: 6
text: and...
%rec: how
id: 1
text: Surprisingly lacking
id: 2
text: Less than expected
id: 3
text: About average
id: 4
text: About average
id: 5
text: More than expected
id: 6
text: Extraordinary
%rec: pacing
id: 1
text: Foreshadow Trouble
id: 2
text: Reveal a New Detail
id: 3
text: An NPC Takes Action
id: 4
text: Advance a Threat
id: 5
text: Advance a Plot
id: 6
text: Add a RANDOM EVENT to the scene
%rec: failure
id: 1
text: Cause Harm
id: 2
text: Put Someone in a Spot
id: 3
text: Offer a Choice
id: 4
text: Advance a Threat
id: 5
text: Reveal an Unwelcome Truth
id: 6
text: Foreshadow Trouble
%rec: action
id: 1
text: Seek
id: 2
text: Command
id: 3
text: Oppose
id: 4
text: Take
id: 5
text: Communicate
id: 6
text: Protect
id: 7
text: Move
id: 8
text: Assist
id: 9
text: Harm
id: 10
text: Transform
id: 11
text: Create
id: 12
text: Deceive
id: 13
text: Reveal
%rec: detail
id: 1
text: Small
id: 2
text: Unsavory
id: 3
text: Large
id: 4
text: Specialized
id: 5
text: Old
id: 6
text: Unexpected
id: 7
text: New
id: 8
text: Exotic
id: 9
text: Mundane
id: 10
text: Dignified
id: 11
text: Simple
id: 12
text: Unique
id: 13
text: Complex
%rec: topic
id: 1
text: Current Need
id: 2
text: Rumors
id: 3
text: Allies
id: 4
text: A Plot Arc
id: 5
text: Community
id: 6
text: Recent Events
id: 7
text: History
id: 8
text: Equipment
id: 9
text: Future Plans
id: 10
text: A Faction
id: 11
text: Enemies
id: 12
text: The PCs
id: 13
text: Knowledge
%rec: objective
id: 1
text: Eliminate a threat
id: 2
text: Learn the truth
id: 3
text: Recover something valuable
id: 4
text: Escort or deliver to safety
id: 5
text: Restore something broken
id: 6
text: Save an ally in peril
%rec: adversary
id: 1
text: A powerful organization
id: 2
text: Outlaws
id: 3
text: Guardians
id: 4
text: Local inhabitants
id: 5
text: Enemy horde or force
id: 6
text: A new or recurring villain
%rec: reward
id: 1
text: Money or valuables
id: 2
text: Money or valuables
id: 3
text: Knowledge and secrets
id: 4
text: Support of an ally
id: 5
text: Advance a plot arc
id: 6
text: A unique item of power
%rec: identity
id: 1
text: Outlaw
id: 2
text: Entertainer
id: 3
text: Drifter
id: 4
text: Adherent
id: 5
text: Tradesman
id: 6
text: Leader
id: 7
text: Commoner
id: 8
text: Mystic
id: 9
text: Soldier
id: 10
text: Adventurer
id: 11
text: Merchant
id: 12
text: Lord
id: 13
text: Specialist
%rec: goal
id: 1
text: Obtain
id: 2
text: Enrich Self
id: 3
text: Learn
id: 4
text: Avenge
id: 5
text: Harm
id: 6
text: Fulfill Duty
id: 7
text: Restore
id: 8
text: Escape
id: 9
text: Find
id: 10
text: Create
id: 11
text: Travel
id: 12
text: Serve
id: 13
text: Protect
%rec: feature
id: 1
text: Unremarkable
id: 2
text: Notable nature
id: 3
text: Obvious physical trait
id: 4
text: Quirk or mannerism
id: 5
text: Unusual equipment
id: 6
text: Unexpected age or origin
%rec: location
id: 1
text: Typical area
id: 2
text: Transitional area
id: 3
text: Living area or meeting place
id: 4
text: Working or utility area
id: 5
text: Area with a special feature
id: 6
text: Location for a specialized purpose
%rec: encounter
id: 1
text: None
id: 2
text: None
id: 3
text: Hostile enemies
id: 4
text: Hostile enemies
id: 5
text: An obstacle blocks the way
id: 6
text: Unique NPC or adversary
%rec: object
id: 1
text: Nothing, or mundane objects
id: 2
text: Nothing, or mundane objects
id: 3
text: An interesting item or clue
id: 4
text: A useful tool, key, or device
id: 5
text: Something valuable
id: 6
text: Rare or special item
%rec: exits
id: 1
text: Dead end
id: 2
text: Dead end
id: 3
text: 1 additional exit
id: 4
text: 1 additional exit
id: 5
text: 2 additional exits
id: 6
text: 2 additional exits
%rec: hexterrain
id: 1
text: Same as current hex
id: 2
text: Same as current hex
id: 3
text: Common terrain
id: 4
text: Common terrain
id: 5
text: Uncommon terrain
id: 6
text: Rare terrain
%rec: hexcontents
id: 1
text: Nothing notable
id: 2
text: Nothing notable
id: 3
text: Nothing notable
id: 4
text: Nothing notable
id: 5
text: Nothing notable
id: 6
text: Roll a HEXFEATURE
%rec: hexfeature
id: 1
text: Notable structure
id: 2
text: Dangerous hazard
id: 3
text: A settlement
id: 4
text: Strange natural feature
id: 5
text: New region (set new terrain types)
id: 6
text: DUNGEON CRAWLER entrance
%rec: hexevent
id: 1
text: None
id: 2
text: None
id: 3
text: None
id: 4
text: None
id: 5
text: RANDOM EVENT then SET THE SCENE
id: 6
text: RANDOM EVENT then SET THE SCENE

145
justfile 100644
View File

@ -0,0 +1,145 @@
# show all options
default:
just --list --unsorted
# show rec info
info:
@recinf db.rec
# plot, event, scene
new: plot event scene
# intensifier
butand:
@recsel -t intensifier -m 1 -P text db.rec
# yes/no equal odds
even:
@recsel -t even -m 1 -P text db.rec && just butand
# yes/no good odds
likely:
@recsel -t likely -m 1 -P text db.rec && just butand
# yes/no poor odds
unlikely:
@recsel -t unlikely -m 1 -P text db.rec && just butand
# set the scene
scene: altered
@recsel -t complication -m 1 -P text db.rec
# is the scene altered?
altered:
@recsel -t alteredscene -m 1 -P text db.rec
# ...if so, what is the alteration?
alteration:
@recsel -t alteration -m 1 -P text db.rec
# how big, good, strong, numerous, etc something is
how:
@recsel -t how -m 1 -P text db.rec
# when there is a lull
pacing:
@recsel -t pacing -m 1 -P text db.rec
# when things go bad
failure:
@recsel -t failure -m 1 -P text db.rec
# add a random event
event: action topic
# domain
domain:
@recsel -t domain -m 1 -P text db.rec
# what does it do?
action:
@recsel -t action -m 1 -P text db.rec && just domain
# what kind of thing is it?
detail:
@recsel -t detail -m 1 -P text db.rec && just domain
# what is this about?
topic:
@recsel -t topic -m 1 -P text db.rec && just domain
# generic generator
generate: action detail how
# objective
objective:
@recsel -t objective -m 1 -P text db.rec
# adversary
adversary:
@recsel -t adversary -m 1 -P text db.rec
# reward
reward:
@recsel -t reward -m 1 -P text db.rec
# plot hook
plot: objective adversary reward
# identity
identity: domain
@recsel -t identity -m 1 -P text db.rec
# goal
goal: domain
@recsel -t goal -m 1 -P text db.rec
# feature
feature:
@recsel -t feature -m 1 -P text db.rec
# NPC
npc: identity goal feature detail how topic
# dungeon theme
theme: detail action
# location
location:
@recsel -t location -m 1 -P text db.rec
# encounter
encounter:
@recsel -t encounter -m 1 -P text db.rec
# object
object:
@recsel -t object -m 1 -P text db.rec
# exits
exits:
@recsel -t exits -m 1 -P text db.rec
# dungeon location
dungeon: location encounter object exits
# region
hexterrain:
@recsel -t hexterrain -m 1 -P text db.rec
# contents
hexcontents:
@recsel -t hexcontents -m 1 -P text db.rec
# feature
hexfeature:
@recsel -t hexfeature -m 1 -P text db.rec
# event
hexevent:
@recsel -t hexevent -m 1 -P text db.rec
# hex
hex: hexterrain hexcontents hexfeature
@just --show hex