This commit is contained in:
Matt Soucy 2022-05-25 18:47:47 -04:00
commit 9c9fe3e37d
6 changed files with 69 additions and 29 deletions

View File

@ -3,7 +3,7 @@
You are all mages competing to put on the flashiest magic display for the festival! You are all mages competing to put on the flashiest magic display for the festival!
Arrange the elements to put on a good show. Arrange the elements to put on a good show.
Take the three border cards 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 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 on the corners in clockwise order from the bottom.
@ -16,6 +16,7 @@ Place the elements in a hex connected to the mage by other filled hexes, in eith
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.
For reference, these pairs are on the nexus cards.
- Light and Dark - Light and Dark
- Fire and Water - Fire and Water
@ -25,11 +26,11 @@ When all 15 mana cards have been flipped, 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.
- Light = 3 points if not touching other Light - Light = 3 points for each cluster
- Light shines brightest on its own - Light shines brightest on its own
- Dark = 3 points for each hex in the cluster after the first - Dark = 3 points for each hex in the cluster after the first
- Darkness tries to swallow everything - Darkness tries to swallow everything
- Fire = 2 points for each adjacent Fire - 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 times length for straight line of 3 or more
- Water flows like a river - Water flows like a river

View File

@ -1,19 +1,19 @@
left,right title,left,right
light,dark mana,light,dark
light,fire mana,light,fire
light,water mana,light,water
light,earth mana,light,earth
light,air mana,light,air
dark,fire mana,dark,fire
dark,water mana,dark,water
dark,earth mana,dark,earth
dark,air mana,dark,air
fire,water mana,fire,water
fire,earth mana,fire,earth
fire,air mana,fire,air
water,earth mana,water,earth
water,air mana,water,air
earth,air mana,earth,air
light,dark nexus,light,dark
fire,water nexus,fire,water
earth,air nexus,earth,air
1 title left right
2 mana light dark
3 mana light fire
4 mana light water
5 mana light earth
6 mana light air
7 mana dark fire
8 mana dark water
9 mana dark earth
10 mana dark air
11 mana fire water
12 mana fire earth
13 mana fire air
14 mana water earth
15 mana water air
16 mana earth air
17 nexus light dark
18 nexus fire water
19 nexus earth air

View File

@ -1,5 +1,14 @@
require 'squib' require 'squib'
element_descs = {
"light" => "3 per cluster",
"dark" => "3 each after first in clusters",
"fire" => "2 points per connected pair",
"water" => "3 times length for straight line of 3+",
"earth" => "4 per triangle cluster",
"air" => "3 points for each curve 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
data = csv file: 'data.csv' data = csv file: 'data.csv'
@ -11,15 +20,28 @@ Squib::Deck.new(cards: 18, layout: 'layout.yml', width: '3.5in', height: '2.5in'
text layout: :title, str: 'Border', align: :center, range: (15..17) text layout: :title, str: 'Border', align: :center, range: (15..17)
svg layout: :leftSymbol, width: 200, file: data.left.map { |elem| "images/#{elem}.svg" } svg layout: :leftSymbol, width: 200, file: data.left.map { |elem| "images/#{elem}.svg" }
text layout: :leftText, str: data.left, align: :center, ellipsize: :autoscale text layout: :leftText, str: data.left
text layout: :leftDescription, str: data.left.map { |elem| element_descs[elem] }
svg layout: :rightSymbol, width: 200, file: data.right.map { |elem| "images/#{elem}.svg" } svg layout: :rightSymbol, width: 200, file: data.right.map { |elem| "images/#{elem}.svg" }
text layout: :rightText, str: data.right, align: :center, ellipsize: :autoscale text layout: :rightText, str: data.right
text layout: :rightDescription, str: data.right.map { |elem| element_descs[elem] }
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'
end end
Squib::Deck.new(cards: 1, width: '3in', height: '4in') do Squib::Deck.new(cards: 6, width: '3in', height: '4in') do
rect rect
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
(0..6).each do |i|
rect x: inches(0.5) + i * inches(2.0/7.0), y: '3.0in', 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
star x: inches(0.5) + 6 * inches(2.0/7.0) + inches(0.125), y: '3.125in',
outer_radius: '0.125in', inner_radius: inches(1.0/16.0), angle: '270deg'
save_pdf trim: 37.5, file: 'player.pdf' save_pdf trim: 37.5, file: 'player.pdf'
end end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -6,27 +6,43 @@ title:
leftSymbol: leftSymbol:
x: 200 x: 200
y: 300 y: 200
width: 200 width: 200
height: 200 height: 200
leftText: leftText:
x: 200 x: 200
y: 500 y: 400
width: 200 width: 200
height: 60 height: 60
align: center
ellipsize: autoscale
leftDescription:
extends: leftText
y: += 100
align: center
ellipsize: autoscale
rightSymbol: rightSymbol:
x: 600 x: 600
y: 300 y: 200
width: 200 width: 200
height: 200 height: 200
rightText: rightText:
x: 600 x: 600
y: 500 y: 400
width: 200 width: 200
height: 60 height: 60
align: center
ellipsize: autoscale
rightDescription:
extends: rightText
y: += 100
align: center
ellipsize: autoscale
# The "cut line", without rounded corners # The "cut line", without rounded corners
cut: cut: