Compare commits
15 Commits
4debce853b
...
main
Author | SHA1 | Date | |
---|---|---|---|
417885eeb7
|
|||
7380b4df57
|
|||
341be68005 | |||
d017c53b81 | |||
870511a678 | |||
ff8f27f850 | |||
f7d40ec831 | |||
ad6200f7cb | |||
2698a9df10
|
|||
9c1e9fc00c
|
|||
1a948f1d9c | |||
871bc93220 | |||
68f84d33c6 | |||
68cc57cc27 | |||
624109beda |
@@ -1,56 +0,0 @@
|
|||||||
- name: Opener
|
|
||||||
volume: p
|
|
||||||
effect: +5 {a} if the first song in your set.
|
|
||||||
- name: "Entr'acte"
|
|
||||||
volume: p
|
|
||||||
effect: +3 {a} if not the first or last song in your set.
|
|
||||||
- name: Reprise
|
|
||||||
volume: f
|
|
||||||
effect: +3 {a} if in the second half in your set.
|
|
||||||
- name: Breakup Song
|
|
||||||
volume: ff
|
|
||||||
effect: +3 {a}. +2 additional {a} if any band has played a <b>Love Song</b>
|
|
||||||
blurb: You may hate yourself for loving it, but you oughta know that these songs pack a punch.
|
|
||||||
- name: Love Song
|
|
||||||
volume: mp
|
|
||||||
effect: +2 {a}. +3 additional {a} if Love Song is the loudest song in your set.
|
|
||||||
blurb: I forgot how this goes, but it's all coming back to me now.
|
|
||||||
- name: Power Ballad
|
|
||||||
volume: ff
|
|
||||||
effect: +3 {a}
|
|
||||||
- name: Call and Response
|
|
||||||
volume: f
|
|
||||||
effect: +2 {a} for each song before this one.
|
|
||||||
- name: Heavy Hitter
|
|
||||||
volume: fff
|
|
||||||
effect: +4 {a}.
|
|
||||||
- name: Protest Song
|
|
||||||
volume: ff
|
|
||||||
effect: +1 {a}. +3 {a} if the loudest song this round.
|
|
||||||
- name: Signature Song
|
|
||||||
volume: f
|
|
||||||
effect: +5 {a}.
|
|
||||||
- name: Buildup
|
|
||||||
volume: pp
|
|
||||||
effect: Add +2 {a} to the next song in your set.
|
|
||||||
- name: Breakdown
|
|
||||||
volume: mf
|
|
||||||
effect: +2 {a} for each quieter song played this round.
|
|
||||||
- name: Sleazy
|
|
||||||
volume: mf
|
|
||||||
effect: +4 {a} if not the loudest song this round.
|
|
||||||
- name: Showstopper
|
|
||||||
volume: fff
|
|
||||||
effect: +5 {a} if the last song in your set.
|
|
||||||
- name: Remix
|
|
||||||
volume: f
|
|
||||||
effect: Repeat the effect of the song immediately before this in your set.
|
|
||||||
- name: Acoustic Cover
|
|
||||||
volume: mp
|
|
||||||
effect: Copy the effect of a song in another band's setlist.
|
|
||||||
- name: Heavy Cover
|
|
||||||
volume: f
|
|
||||||
effect: Copy the effect of a song in another band's setlist.
|
|
||||||
- name: Encore
|
|
||||||
volume: mf
|
|
||||||
effect: +5 {a} if the last song in your set.
|
|
@@ -1,57 +0,0 @@
|
|||||||
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.yaml file: 'data.yml'
|
|
||||||
|
|
||||||
Squib::Deck.new(cards: 18) do
|
|
||||||
use_layout file: 'economy.yml'
|
|
||||||
use_layout file: 'layout.yml'
|
|
||||||
background color: 'white'
|
|
||||||
cut_zone
|
|
||||||
safe_zone
|
|
||||||
|
|
||||||
text layout: :title, str: data.name
|
|
||||||
|
|
||||||
svg layout: :art, data: MUSIC
|
|
||||||
|
|
||||||
rect layout: :description
|
|
||||||
text layout: :description, str: data.effect.zip(data.blurb).map { |e, b|
|
|
||||||
"#{e}#{b ? "\n<i>#{b}</i>" : nil}"
|
|
||||||
} do |embed|
|
|
||||||
embed.svg key: '{a}', width: 32, height: 32, data: AUDIENCE
|
|
||||||
end
|
|
||||||
text layout: :type, markup: true, str: data.volume.map { |v| "<b><i>#{v} (#{VOLUMES[v]})</i></b>" }
|
|
||||||
|
|
||||||
save format: :png
|
|
||||||
save_sheet prefix: "sheet",
|
|
||||||
columns: 5, rows: 4, trim: '0.125in', count_format: ''
|
|
||||||
|
|
||||||
end
|
|
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 |
Before Width: | Height: | Size: 835 KiB After Width: | Height: | Size: 835 KiB |
@@ -14,7 +14,7 @@ Draw the most fans by performing the best in each time block
|
|||||||
|
|
||||||
Phase 1: Four cards are handed to each player. Players draft one card and pass the rest on until all cards are chosen.
|
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 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 largest to smallest
|
Phase 3: All players flip cards face-up. They resolve in order of Volume from loudest to quietest
|
||||||
|
|
||||||
# Scoring
|
# Scoring
|
||||||
|
|
BIN
setlist/back.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
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
|