Compare commits

..

19 Commits

Author SHA1 Message Date
417885eeb7 Reorganize 2023-05-11 21:57:43 -04:00
7380b4df57 Cards with more suits are weaker now 2023-05-11 21:55:13 -04:00
341be68005 Add card back 2023-05-07 13:25:26 -04:00
d017c53b81 Adjust deck 2023-04-19 19:07:36 -04:00
870511a678 Jeremiah's feedback 2023-04-15 20:29:23 -04:00
ff8f27f850 Remove unused data file 2023-04-15 19:28:10 -04:00
f7d40ec831 Merge branch 'main' of https://git.msoucy.me/msoucy/18cards 2023-04-15 19:00:41 -04:00
ad6200f7cb Clarify rules 2023-04-15 19:00:39 -04:00
2698a9df10 Typoes 2023-04-06 20:02:57 -04:00
9c1e9fc00c Remaining abilities 2023-02-26 22:42:19 -05:00
1a948f1d9c Get rid of ugly nil 2023-02-24 22:49:35 -05:00
871bc93220 Setlist card abilities (mostly) 2023-02-24 22:47:36 -05:00
68f84d33c6 Audience on setlist cards 2023-02-24 22:47:22 -05:00
68cc57cc27 Start CSV cards 2023-01-14 15:44:16 -05:00
624109beda Fix icon import 2023-01-13 20:24:33 -05:00
4debce853b Icon setup 2023-01-13 19:17:22 -05:00
2aa09e4fe9 Add volume numbers for non-musicians 2023-01-02 22:27:14 -05:00
7ae9f66a1c Add sheet save 2023-01-01 21:28:20 -05:00
b6dc73540f Add Setlist prototype 2023-01-01 20:54:41 -05:00
43 changed files with 193 additions and 63 deletions

View File

@@ -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 <i>hate yourself for loving</i> it, but <i>you oughta know</i> 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 <i>it's all coming back to me now</i>.
- 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.

View File

@@ -1,6 +0,0 @@
require 'squib'
Squib::Deck.new(cards: 3, layout: 'layout.yml') do
text str: 'Hello, World!'
save format: :png
end

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 835 KiB

After

Width:  |  Height:  |  Size: 835 KiB

View File

@@ -1,3 +1,4 @@
source 'https://rubygems.org'
gem 'squib'
gem 'game_icons'

68
setlist/Gemfile.lock Normal file
View 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

View File

@@ -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 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

BIN
setlist/back.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

19
setlist/data.csv Normal file
View 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,,
1 name volume traits audience effect blurb
2 Crazy Little Thing Called Love f l 2 +2 {A} if the first {l} song in your setlist
3 War Cry f a 2 +1 {A} for each song quieter than this in this time block
4 Opener mp j 0 +3 {A} if the first song in your set
5 Dirge ppp s 0
6 Love Ballad f l 3 +2 {A} if in the first two songs of your setlist
7 Rage Against The Man fff a 2 +1 {A} for each {a} song in this time block
8 Everything Is Awesome mf j 3 +2 {A} if in the last two songs if your setlist
9 Tears in the Rain p s 2 +3 {A} if this is the quietest song in this time block
10 Breakup Song ff la 3 +3 {A} if another band played a {l} song in this time block
11 New Relationship mf lj 2 +4 {A} if there are no {l} song before this in any band's setlist
12 Brokenhearted p ls 3 +1 {A} if the next song in your setlist is a {l} song
13 Mixed Messages ff aj 2 +3 {A} if this is the loudest song in this time block
14 Betrayed f as 2 +3 {A} if this is immediately following a {j} song in your setlist
15 Happy To Be Sad f js 1 +2 {A} for each {s} song already in your setlist
16 Indignant Love f laj 3
17 Unrequited Love mp las 3
18 Butterflies In The Stomach mf ljs 3
19 Rampage fff ajs 3

70
setlist/deck.rb Normal file
View 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

View 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
View File

@@ -0,0 +1,11 @@
volume:
x: 90
y: 955
width: 320
height: 50
align: left
audience:
extends: volume
x: += 329
align: right