Compare commits
28 Commits
7cbbb4432d
...
main
Author | SHA1 | Date | |
---|---|---|---|
417885eeb7
|
|||
7380b4df57
|
|||
341be68005 | |||
d017c53b81 | |||
870511a678 | |||
ff8f27f850 | |||
f7d40ec831 | |||
ad6200f7cb | |||
2698a9df10
|
|||
9c1e9fc00c
|
|||
1a948f1d9c | |||
871bc93220 | |||
68f84d33c6 | |||
68cc57cc27 | |||
624109beda | |||
4debce853b
|
|||
2aa09e4fe9
|
|||
7ae9f66a1c
|
|||
b6dc73540f
|
|||
9e96fbda7d
|
|||
5632861ae4 | |||
d40d486ad2 | |||
e1d717eaa5
|
|||
4a86fd611f
|
|||
a1d302d33a
|
|||
dbab5b3dc6 | |||
9c9fe3e37d | |||
61182c9190 |
15
hexpertise/Rakefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
require 'squib'
|
||||||
|
|
||||||
|
task default: [:deck, :rules]
|
||||||
|
|
||||||
|
task :deck do
|
||||||
|
load 'deck.rb'
|
||||||
|
end
|
||||||
|
|
||||||
|
desc 'Build the rules PDF'
|
||||||
|
task rules: "_output/RULES.pdf"
|
||||||
|
|
||||||
|
file "_output/RULES.pdf" => ["Rules.md", "_output"] do |t|
|
||||||
|
respaths = [".", "docs/"]
|
||||||
|
sh "pandoc", "-o", t.name, t.source, "--resource-path=#{respaths.join(File::PATH_SEPARATOR)}"
|
||||||
|
end
|
@ -4,15 +4,23 @@ You are all mages competing to put on the flashiest magic display for the festiv
|
|||||||
Arrange the elements to put on a good show.
|
Arrange the elements to put on a good show.
|
||||||
|
|
||||||
Shuffle the three nexus cards, flipping some upside down during shuffling, and deal each one faceup.
|
Shuffle the three nexus cards, flipping some upside down during shuffling, and deal each one faceup.
|
||||||
Place the left elements in the fixed hexes on the corners in clockwise order from the top.
|
Place the left elements in the fixed hexes (nexus) on the corners in clockwise order from the top.
|
||||||
Place the right elements in the fixed hexes on the corners in clockwise order from the bottom.
|
Place the right elements in the fixed hexes (nexus) on the corners in clockwise order from the bottom.
|
||||||
|
|
||||||
The center hex represents you, the mage.
|
The center hex represents you, the mage.
|
||||||
It is neutral (not aligned with any element).
|
It is neutral (not aligned with any element).
|
||||||
|
|
||||||
Each turn, flip the top card of the mana deck.
|
Each turn, flip the top card of the mana deck.
|
||||||
It shows two elements.
|
It shows two elements.
|
||||||
Place the elements in a hex connected to the mage by other filled hexes, in either order.
|
Choose one element to be the one placed, and the other to decide the direction it has to be placed in.
|
||||||
|
|
||||||
|
> **Example:** Light and Fire are the elements on the mana card.
|
||||||
|
> Light is positioned in the top-right nexus, and Fire is in the bottom nexus.
|
||||||
|
> This means that the players can place a Fire to the top-right of a filled hex,
|
||||||
|
> or a Light below a filled hex.
|
||||||
|
|
||||||
|
If you are unable to place either element in any direction, you must nullify (cross out) an empty hex instead.
|
||||||
|
Nullified hexes count as being filled, but have no element associated.
|
||||||
|
|
||||||
If either of the following elements are touching, cross them out.
|
If either of the following elements are touching, cross them out.
|
||||||
They have nullified each other.
|
They have nullified each other.
|
||||||
@ -22,7 +30,7 @@ For reference, these pairs are on the nexus cards.
|
|||||||
- Fire and Water
|
- Fire and Water
|
||||||
- Earth and Air
|
- Earth and Air
|
||||||
|
|
||||||
When all 15 mana cards have been flipped, the festival is over.
|
When all 15 mana cards have been flipped twice, the festival is over.
|
||||||
See how the audience liked your display with the following rules.
|
See how the audience liked your display with the following rules.
|
||||||
Do not count nullified elements.
|
Do not count nullified elements.
|
||||||
|
|
||||||
@ -32,14 +40,19 @@ Do not count nullified elements.
|
|||||||
- Darkness tries to swallow everything
|
- Darkness tries to swallow everything
|
||||||
- Fire = 2 points for each connection between adjacent fire hexes
|
- Fire = 2 points for each connection between adjacent fire hexes
|
||||||
- Fire grows and burns
|
- Fire grows and burns
|
||||||
- Water = 3 times length for straight line of 3 or more
|
- Water = 3 points for each in longest path
|
||||||
- Water flows like a river
|
- Water flows like a river
|
||||||
- Earth = 4 points for each cluster of 3
|
- Earth = 4 points for each triangular cluster
|
||||||
- Earth is solid and clustered together
|
- Earth is solid and clustered together
|
||||||
- Air = 3 points for each time the line curves
|
- Air = 4 points for every fork in the line
|
||||||
- Air is flowing
|
- Air is flowing
|
||||||
- Harmonic Convergence = flower or line of all 6 elements = 10 points
|
|
||||||
|
Advanced scoring conditions:
|
||||||
|
|
||||||
|
- Harmonic Convergence = flower or line of all 6 elements = 15 points
|
||||||
- Perfect convergence of elements puts on a flashy show
|
- Perfect convergence of elements puts on a flashy show
|
||||||
|
- Void = flower of nullified hexes = 10 points
|
||||||
|
- Making good use of negative space
|
||||||
|
|
||||||
The highest scoring display wins the festival!
|
The highest scoring display wins the festival!
|
||||||
In case of a tie, use the scores for the individual elements, in clockwise order starting from the top.
|
In case of a tie, use the scores for the individual elements, in clockwise order starting from the top.
|
@ -3,10 +3,10 @@ require 'squib'
|
|||||||
element_descs = {
|
element_descs = {
|
||||||
"light" => "3 per cluster",
|
"light" => "3 per cluster",
|
||||||
"dark" => "3 each after first in clusters",
|
"dark" => "3 each after first in clusters",
|
||||||
"fire" => "2 points per connected pair",
|
"fire" => "2 points per connection between hexes",
|
||||||
"water" => "3 times length for straight line of 3+",
|
"water" => "3 points for each in longest path",
|
||||||
"earth" => "4 per triangle cluster",
|
"earth" => "4 per triangle cluster",
|
||||||
"air" => "3 points for each curve in line"
|
"air" => "4 points for every fork in line"
|
||||||
}
|
}
|
||||||
|
|
||||||
Squib::Deck.new(cards: 18, layout: 'layout.yml', width: '3.5in', height: '2.5in') do
|
Squib::Deck.new(cards: 18, layout: 'layout.yml', width: '3.5in', height: '2.5in') do
|
||||||
@ -28,6 +28,7 @@ Squib::Deck.new(cards: 18, layout: 'layout.yml', width: '3.5in', height: '2.5in'
|
|||||||
|
|
||||||
save format: :png, prefix: 'card_'
|
save format: :png, prefix: 'card_'
|
||||||
save_pdf trim: 37.5, file: 'pnp.pdf'
|
save_pdf trim: 37.5, file: 'pnp.pdf'
|
||||||
|
save_sheet prefix: "tts_", columns: 3, rows: 6, trim: '0.125in', count_format: ''
|
||||||
end
|
end
|
||||||
|
|
||||||
Squib::Deck.new(cards: 6, width: '3in', height: '4in') do
|
Squib::Deck.new(cards: 6, width: '3in', height: '4in') do
|
||||||
@ -36,8 +37,10 @@ Squib::Deck.new(cards: 6, width: '3in', height: '4in') do
|
|||||||
svg x: '0.5in', y: '0.5in', width: '2.0in', height: '2.0in', file: 'images/hexgrid.svg'
|
svg x: '0.5in', y: '0.5in', width: '2.0in', height: '2.0in', file: 'images/hexgrid.svg'
|
||||||
|
|
||||||
text x: '0.5in', y: '2.75in', width: '2in', height: '0.5in', str: 'Scoring', align: :center
|
text x: '0.5in', y: '2.75in', width: '2in', height: '0.5in', str: 'Scoring', align: :center
|
||||||
(0..6).each do |i|
|
syms = %w(light dark fire water earth air)
|
||||||
rect x: inches(0.5) + i * inches(2.0/7.0), y: '3.0in', width: '0.25in', height: '0.25in'
|
(0..5).each do |i|
|
||||||
|
svg x: inches(0.5) + i * inches(2.0/7.0), y: '3.0in', width: '0.25in', height: '0.25in',
|
||||||
|
file: "images/#{syms[i]}.svg"
|
||||||
rect x: inches(0.5) + i * inches(2.0/7.0), y: '3.25in', width: '0.25in', height: '0.25in'
|
rect x: inches(0.5) + i * inches(2.0/7.0), y: '3.25in', width: '0.25in', height: '0.25in'
|
||||||
end
|
end
|
||||||
star x: inches(0.5) + 6 * inches(2.0/7.0) + inches(0.125), y: '3.125in',
|
star x: inches(0.5) + 6 * inches(2.0/7.0) + inches(0.125), y: '3.125in',
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
9
hexpertise/plays/Feedback.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
Luke
|
||||||
|
"Directional stuff" hardest to wrap head around
|
||||||
|
Cancelation good, maybe suggest playing without for the first game
|
||||||
|
Compass rose for the elements?
|
||||||
|
It *is* cool that it reuses the board as a compass
|
||||||
|
Ignored certain elements, which helped him focus
|
||||||
|
Elk in Cascadia
|
||||||
|
Scoring was familiar and straightforward
|
||||||
|
Put symbols directly scoring sheet
|
BIN
hexpertise/plays/luke.bmp
Normal file
After Width: | Height: | Size: 835 KiB |
4
setlist/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
_output/*.png
|
||||||
|
_output/*.pdf
|
||||||
|
~$*
|
||||||
|
.DS_Store
|
19
setlist/ABOUT.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
My Awesome Game
|
||||||
|
===============
|
||||||
|
|
||||||
|
Check out my awesome game!
|
||||||
|
|
||||||
|
|
||||||
|
Objective
|
||||||
|
---------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Gameplay
|
||||||
|
--------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ending the Game
|
||||||
|
---------------
|
||||||
|
|
4
setlist/Gemfile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
|
gem 'squib'
|
||||||
|
gem 'game_icons'
|
68
setlist/Gemfile.lock
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
cairo (1.17.8)
|
||||||
|
native-package-installer (>= 1.0.3)
|
||||||
|
pkg-config (>= 1.2.2)
|
||||||
|
red-colors
|
||||||
|
cairo-gobject (3.5.1)
|
||||||
|
cairo (>= 1.16.2)
|
||||||
|
glib2 (= 3.5.1)
|
||||||
|
classy_hash (1.0.0)
|
||||||
|
fiddle (1.1.1)
|
||||||
|
game_icons (0.46.0.20221129)
|
||||||
|
gdk_pixbuf2 (3.5.1)
|
||||||
|
gio2 (= 3.5.1)
|
||||||
|
gio2 (3.5.1)
|
||||||
|
fiddle
|
||||||
|
gobject-introspection (= 3.5.1)
|
||||||
|
glib2 (3.5.1)
|
||||||
|
native-package-installer (>= 1.0.3)
|
||||||
|
pkg-config (>= 1.3.5)
|
||||||
|
gobject-introspection (3.5.1)
|
||||||
|
glib2 (= 3.5.1)
|
||||||
|
highline (2.0.3)
|
||||||
|
matrix (0.4.2)
|
||||||
|
mercenary (0.4.0)
|
||||||
|
native-package-installer (1.1.5)
|
||||||
|
nokogiri (1.13.10-x64-mingw32)
|
||||||
|
racc (~> 1.4)
|
||||||
|
pango (3.5.1)
|
||||||
|
cairo-gobject (= 3.5.1)
|
||||||
|
gobject-introspection (= 3.5.1)
|
||||||
|
pkg-config (1.5.1)
|
||||||
|
racc (1.6.2)
|
||||||
|
rainbow (3.1.1)
|
||||||
|
red-colors (0.3.0)
|
||||||
|
matrix
|
||||||
|
roo (2.9.0)
|
||||||
|
nokogiri (~> 1)
|
||||||
|
rubyzip (>= 1.3.0, < 3.0.0)
|
||||||
|
rsvg2 (3.5.1)
|
||||||
|
cairo-gobject (= 3.5.1)
|
||||||
|
gdk_pixbuf2 (= 3.5.1)
|
||||||
|
ruby-progressbar (1.11.0)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
squib (0.18.0)
|
||||||
|
cairo (~> 1.17)
|
||||||
|
classy_hash (= 1.0.0)
|
||||||
|
gio2 (~> 3.4)
|
||||||
|
gobject-introspection (~> 3.4)
|
||||||
|
highline (= 2.0.3)
|
||||||
|
mercenary (= 0.4.0)
|
||||||
|
nokogiri (~> 1.11)
|
||||||
|
pango (~> 3.4)
|
||||||
|
rainbow (~> 3.0)
|
||||||
|
roo (~> 2.8)
|
||||||
|
rsvg2 (~> 3.4)
|
||||||
|
ruby-progressbar (~> 1.11)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
x64-mingw32
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
game_icons
|
||||||
|
squib
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.1.4
|
22
setlist/IDEAS.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Title Ideas
|
||||||
|
|
||||||
|
* First idea
|
||||||
|
* Second idea
|
||||||
|
|
||||||
|
|
||||||
|
# Things to Try
|
||||||
|
|
||||||
|
* Idea
|
||||||
|
* Idea
|
||||||
|
|
||||||
|
# Feedback Ideas
|
||||||
|
|
||||||
|
* Feedback
|
||||||
|
* Feedback
|
||||||
|
|
||||||
|
# Problems To Work On
|
||||||
|
|
||||||
|
* Problem
|
||||||
|
* Problem
|
||||||
|
|
||||||
|
|
26
setlist/PLAYTESTING.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Playtesting Log
|
||||||
|
|
||||||
|
# Playtest Report Survey
|
||||||
|
|
||||||
|
## Basic Info
|
||||||
|
* Num. Players:
|
||||||
|
* How many sessions of this game have you played before?
|
||||||
|
* How long did you play?
|
||||||
|
* How did you prepare for teaching the rules? Read the sheet with everyone there, or did someone read it ahead of time?
|
||||||
|
* What types of players played with you? What are their favorite games?
|
||||||
|
* What version were you testing?
|
||||||
|
* What date did you play?
|
||||||
|
|
||||||
|
## Did it work?
|
||||||
|
* Was there a moment that you felt the game was "broken"? Describe what happened.
|
||||||
|
* How close were the scores? Did everyone feel like they had a fair chance at winning?
|
||||||
|
* Were there any moments that you had to go back to the rules for clarification? What resulted of that - are you still unclear, or was it just a misunderstanding?
|
||||||
|
* Any ideas for clearer rules?
|
||||||
|
* Any ideas for clearer icons, artwork, in-game helps, etc?
|
||||||
|
|
||||||
|
## Was it fun?
|
||||||
|
* Based on the description, artwork, branding, etc. was this game what you expected?
|
||||||
|
* Were the theme, artwork, and icons engaging?
|
||||||
|
* Did this game have the depth of strategy that you were expecting?
|
||||||
|
* What were the moments that people felt like they were having the most fun? The least fun?
|
||||||
|
* Assuming trivial issues are fixed, would you recommend this to someone else?
|
4
setlist/PNP NOTES.md
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Print and Play Notes
|
||||||
|
====================
|
||||||
|
|
||||||
|
Fill this out to give tips on how to play this with print and play.
|
21
setlist/RULES.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Intro
|
||||||
|
|
||||||
|
2-4 players arranging their setlists at a music festival
|
||||||
|
|
||||||
|
# Objective
|
||||||
|
|
||||||
|
Draw the most fans by performing the best in each time block
|
||||||
|
|
||||||
|
# Components
|
||||||
|
|
||||||
|
18 Song cards
|
||||||
|
|
||||||
|
# Gameplay
|
||||||
|
|
||||||
|
Phase 1: Four cards are handed to each player. Players draft one card and pass the rest on until all cards are chosen.
|
||||||
|
Phase 2: Players arrange their songs face-down in the order they'll perform in
|
||||||
|
Phase 3: All players flip cards face-up. They resolve in order of Volume from loudest to quietest
|
||||||
|
|
||||||
|
# Scoring
|
||||||
|
|
||||||
|
How is victory assigned?
|
1
setlist/_output/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
Keep this here so that Git knows to keep the _output directory on a fresh clone
|
BIN
setlist/back.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
50
setlist/config.yml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
# Settings in the config.yml are overriding Squib's defaults. Anything in the main script will override this.
|
||||||
|
|
||||||
|
# Looking for DPI? It needs to be a parameter to Squib::Deck.new
|
||||||
|
|
||||||
|
#antialias: best #recommended. Only about 10% slower than fast
|
||||||
|
#antialias: default # set the anti-aliasing algorithm. default defers to the underlying graphics device. See http://www.cairographics.org/manual/cairo-cairo-t.html#cairo-antialias-t
|
||||||
|
|
||||||
|
# Text hints are used to show the boundaries of text boxes.
|
||||||
|
# Can be enabled/disabled at the command-level, or set globally with `set`
|
||||||
|
#text_hint: '#F00'
|
||||||
|
|
||||||
|
# Show progress bars on the command line for potentially long-running operations
|
||||||
|
#progress_bars: true
|
||||||
|
|
||||||
|
#Enable some custom colors that can be used in any color
|
||||||
|
#custom_colors:
|
||||||
|
# foo: '#abc'
|
||||||
|
|
||||||
|
#For reading image file command (e.g. png and svg), read from this directory instead
|
||||||
|
#img_dir: img-color
|
||||||
|
#img_dir: img-bw
|
||||||
|
|
||||||
|
# Use a SVG cairo back end, instead of an in-memory buffer
|
||||||
|
# backend: :memory # default
|
||||||
|
# backend: :svg # can create scalable pdfs, but rendering done at the printer level is not as good as Cairo.
|
||||||
|
|
||||||
|
# Configure what text markup uses replace characters
|
||||||
|
# Below are the defaults
|
||||||
|
# lsquote: "\u2018" #note that Yaml wants double quotes here to use escape chars
|
||||||
|
# rsquote: "\u2019"
|
||||||
|
# ldquote: "\u201C"
|
||||||
|
# rdquote: "\u201D"
|
||||||
|
# em_dash: "\u2014"
|
||||||
|
# en_dash: "\u2013"
|
||||||
|
# ellipsis: "\u2026"
|
||||||
|
|
||||||
|
# We can also disallow smart quotes and only allow explicit replacements with ``LaTeX-style'' quotes.
|
||||||
|
# smart_quotes: false
|
||||||
|
|
||||||
|
# By default, Squib warns when a text box is ellipsized. This can get verbose
|
||||||
|
# and can be turned off here
|
||||||
|
# warn_ellipsize: true # default
|
||||||
|
# warn_ellipsize: false # turn off entirely
|
||||||
|
|
||||||
|
# By default, Squib will warn if a PNG is being up-scaled.
|
||||||
|
# warn_png_scale: true # default
|
||||||
|
# warn_png_scale: false # turn off entirely
|
||||||
|
|
||||||
|
# How many pixels are in a "cell"?
|
||||||
|
# cell_px: 37.5 # default
|
19
setlist/data.csv
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
name,volume,traits,audience,effect,blurb
|
||||||
|
Crazy Little Thing Called Love,f,l,2,+2 {A} if the first {l} song in your setlist,
|
||||||
|
War Cry,f,a,2,+1 {A} for each song quieter than this in this time block,
|
||||||
|
Opener,mp,j,0,+3 {A} if the first song in your set,
|
||||||
|
Dirge,ppp,s,0,,
|
||||||
|
Love Ballad,f,l,3,+2 {A} if in the first two songs of your setlist,
|
||||||
|
Rage Against The Man,fff,a,2,+1 {A} for each {a} song in this time block,
|
||||||
|
Everything Is Awesome,mf,j,3,+2 {A} if in the last two songs if your setlist,
|
||||||
|
Tears in the Rain,p,s,2,+3 {A} if this is the quietest song in this time block,
|
||||||
|
Breakup Song,ff,la,3,+3 {A} if another band played a {l} song in this time block,
|
||||||
|
New Relationship,mf,lj,2,+4 {A} if there are no {l} song before this in any band's setlist,
|
||||||
|
Brokenhearted,p,ls,3,+1 {A} if the next song in your setlist is a {l} song,
|
||||||
|
Mixed Messages,ff,aj,2,+3 {A} if this is the loudest song in this time block,
|
||||||
|
Betrayed,f,as,2,+3 {A} if this is immediately following a {j} song in your setlist,
|
||||||
|
Happy To Be Sad,f,js,1,+2 {A} for each {s} song already in your setlist,
|
||||||
|
Indignant Love,f,laj,3,,
|
||||||
|
Unrequited Love,mp,las,3,,
|
||||||
|
Butterflies In The Stomach,mf,ljs,3,,
|
||||||
|
Rampage,fff,ajs,3,,
|
|
70
setlist/deck.rb
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
require 'squib'
|
||||||
|
require 'game_icons'
|
||||||
|
|
||||||
|
module Icons
|
||||||
|
|
||||||
|
def self.getIcon(name, color = 'black')
|
||||||
|
return GameIcons.get(name).
|
||||||
|
recolor(fg: color, bg: 'white', fg_opacity: 1.0, bg_opacity: 0.0).
|
||||||
|
string
|
||||||
|
end
|
||||||
|
|
||||||
|
AUDIENCE = getIcon 'delapouite/person'
|
||||||
|
MUSIC = getIcon 'delapouite/musical-score'
|
||||||
|
|
||||||
|
LOVE = getIcon 'skoll/hearts'
|
||||||
|
ANGER = getIcon 'skoll/fist'
|
||||||
|
JOY = getIcon 'lorc/delighted'
|
||||||
|
SAD = getIcon 'lorc/tear-tracks'
|
||||||
|
end
|
||||||
|
|
||||||
|
VOLUMES = {
|
||||||
|
"ppp" => 1,
|
||||||
|
"pp" => 2,
|
||||||
|
"p" => 3,
|
||||||
|
"mp" => 4,
|
||||||
|
"mf" => 5,
|
||||||
|
"f" => 6,
|
||||||
|
"ff" => 7,
|
||||||
|
"fff" => 8,
|
||||||
|
}
|
||||||
|
|
||||||
|
data = Squib.csv file: 'data.csv'
|
||||||
|
|
||||||
|
Squib::Deck.new(cards: data.nrows) do
|
||||||
|
use_layout file: 'economy.yml'
|
||||||
|
use_layout file: 'layout.yml'
|
||||||
|
background color: 'white'
|
||||||
|
cut_zone
|
||||||
|
safe_zone
|
||||||
|
|
||||||
|
text layout: :title, str: data.name, ellipsize: :autoscale
|
||||||
|
|
||||||
|
# svg layout: :art, data: Icons::MUSIC
|
||||||
|
text layout: :art, align: :center, valign: :middle, str: data.traits do |embed|
|
||||||
|
embed.svg key: 'l', width: 128, height: 128, data: Icons::LOVE
|
||||||
|
embed.svg key: 'a', width: 128, height: 128, data: Icons::ANGER
|
||||||
|
embed.svg key: 'j', width: 128, height: 128, data: Icons::JOY
|
||||||
|
embed.svg key: 's', width: 128, height: 128, data: Icons::SAD
|
||||||
|
end
|
||||||
|
|
||||||
|
rect layout: :description
|
||||||
|
text layout: :description, str: data.effect.zip(data.blurb).map { |e, b|
|
||||||
|
"#{e}#{if b then "\n<i>#{b}</i>" end}"
|
||||||
|
} do |embed|
|
||||||
|
embed.svg key: '{A}', width: 32, height: 32, data: Icons::AUDIENCE
|
||||||
|
embed.svg key: '{l}', width: 32, height: 32, data: Icons::LOVE
|
||||||
|
embed.svg key: '{a}', width: 32, height: 32, data: Icons::ANGER
|
||||||
|
embed.svg key: '{j}', width: 32, height: 32, data: Icons::JOY
|
||||||
|
embed.svg key: '{s}', width: 32, height: 32, data: Icons::SAD
|
||||||
|
end
|
||||||
|
text layout: :volume, markup: true, str: data.volume.map { |v| "<b><i>#{v} (#{VOLUMES[v]})</i></b>" }
|
||||||
|
text layout: :audience, ellipsize: :autoscale, str: data.audience.map { |au| "{A}#{au}"} do |embed|
|
||||||
|
embed.svg key: '{A}', width: 48, height: 48, data: Icons::AUDIENCE
|
||||||
|
end
|
||||||
|
|
||||||
|
save format: :png
|
||||||
|
save_sheet prefix: "sheet",
|
||||||
|
columns: 5, rows: 4, trim: '0.125in', count_format: ''
|
||||||
|
|
||||||
|
end
|
23
setlist/feedback/2023/04/15-Jeremiah.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
Make sure specify time blocks
|
||||||
|
|
||||||
|
5 - 2
|
||||||
|
8 - 5
|
||||||
|
13 - 11
|
||||||
|
18 - 16
|
||||||
|
|
||||||
|
More cards for fewer players - ex. start with 7 but only end up with 4
|
||||||
|
Volume might not really be a useful mechanic
|
||||||
|
Everything At Once, and Wildcard, might be overpowered
|
||||||
|
- Maybe reduce the number of points it's worth
|
||||||
|
Cards without abilities probably wouldn't get chosen
|
||||||
|
|
||||||
|
Screentop: make a second set of hidden containers for tracking chosen cards
|
||||||
|
|
||||||
|
5 - 6
|
||||||
|
8 - 11
|
||||||
|
12 - 15
|
||||||
|
16 - 20
|
||||||
|
|
||||||
|
Once you have your set, you can choose the order as they're revealed?
|
||||||
|
Possible to "lean into" a suit
|
||||||
|
Focus more on volume, less on suits
|
11
setlist/layout.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
volume:
|
||||||
|
x: 90
|
||||||
|
y: 955
|
||||||
|
width: 320
|
||||||
|
height: 50
|
||||||
|
align: left
|
||||||
|
|
||||||
|
audience:
|
||||||
|
extends: volume
|
||||||
|
x: += 329
|
||||||
|
align: right
|