Compare commits
10 Commits
89b20b04a5
...
73aaec7407
Author | SHA1 | Date |
---|---|---|
Peder Bergebakken Sundt | 73aaec7407 | |
Peder Bergebakken Sundt | 79af3cb715 | |
Peder Bergebakken Sundt | 0af5055a29 | |
Peder Bergebakken Sundt | d1d821830c | |
Peder Bergebakken Sundt | e85e3745e0 | |
Peder Bergebakken Sundt | d168323de9 | |
Peder Bergebakken Sundt | 44ac35e21b | |
Peder Bergebakken Sundt | 984e59234a | |
Peder Bergebakken Sundt | c3538928f3 | |
Peder Bergebakken Sundt | 3ed09663b9 |
124
Makefile
124
Makefile
|
@ -1,19 +1,11 @@
|
|||
|
||||
CARDS_YAML := $(wildcard cards/*.yaml)
|
||||
CARDS_XML := $(wildcard cards/*.xml)
|
||||
CARDS := $(CARDS_YAML) $(CARDS_XML)
|
||||
CARDS_DESTS_YAML := $(patsubst cards/%.yaml,cards/build/%.html,$(CARDS))
|
||||
CARDS_DESTS_XML := $(patsubst cards/%.xml,cards/build/%.x.html,$(CARDS))
|
||||
CARDS_DESTS := $(CARDS_DESTS_YAML) $(CARDS_DESTS_XML)
|
||||
CARDS := $(wildcard cards/*.xml)
|
||||
CARDS_DESTS := $(patsubst cards/%.xml,cards/build/%.html,$(CARDS))
|
||||
|
||||
.PHONY: style
|
||||
style: build/test_card.html build/test_card_rendered.html cards/build/all.html
|
||||
style: build/test_card.html
|
||||
|
||||
.PHONY: cards
|
||||
cards: $(CARDS_DESTS) cards/build/all.html
|
||||
|
||||
.PHONY: style
|
||||
style: build/style.xsl
|
||||
cards: cards/build/all.html
|
||||
|
||||
.PHONY: dev
|
||||
dev:
|
||||
|
@ -23,87 +15,35 @@ dev:
|
|||
dev_cards:
|
||||
git ls-files | entr bash -c "make cards"
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -v build/* cards/build/*
|
||||
|
||||
build/test_card.html: build/test_card.xml build/style.xsl
|
||||
|
||||
build/test_card.html: test_card.xml build/style.xsl build
|
||||
xsltproc \
|
||||
-o build/test_card.html \
|
||||
build/style.xsl \
|
||||
build/test_card.xml
|
||||
test_card.xml
|
||||
|
||||
|
||||
define PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||
cards/build/%.html: cards/%.xml build/style.xsl cards/build
|
||||
xsltproc -o $@ build/style.xsl $<
|
||||
|
||||
|
||||
define PYTHON_MAKE_IFRAME_HELL
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from markdown import markdown
|
||||
import yaml, sys, glob, traceback
|
||||
import xmltodict
|
||||
with open("build/style.css") as f: css_data = f.read()
|
||||
with open(sys.argv[2], "w") as f:
|
||||
e = Environment(trim_blocks=True, lstrip_blocks=True, loader=FileSystemLoader(''))
|
||||
f.write(e.get_template("templates/card_header.html.j2").render(is_local=True, css_data=css_data))
|
||||
e.filters.update({
|
||||
"is_number":lambda x: str(x).isnumeric(),
|
||||
"is_string":lambda x: isinstance(x, str),
|
||||
"markdown":markdown,
|
||||
"any":any,
|
||||
"all":all,
|
||||
"split":str.split,
|
||||
"startswith":str.startswith,
|
||||
"tail": lambda x: x[1:],
|
||||
"cull_whitespace":(lambda x: " ".join(x.split())) })
|
||||
for n, filename in enumerate([sys.argv[1]] if sys.argv[1] != "ALL" else sorted(glob.glob("cards/*.yaml") + glob.glob("cards/*.xml"))):
|
||||
with open(filename) as f2:
|
||||
if filename.endswith("yaml"):
|
||||
yaml_data = yaml.load(f2.read())
|
||||
xml_data = {}
|
||||
elif filename.endswith("xml"):
|
||||
xml = xmltodict.parse(f2.read())
|
||||
xml_data = xml.get("ability_card", {})
|
||||
yaml_data = yaml.load(xml_data.get("yaml_data", ""))
|
||||
try:
|
||||
data = e.get_template('style.html.j2').render(yaml=yaml_data, xml=xml_data)
|
||||
except Exception as ex:
|
||||
data = f"<pre style=\"color:red;\">{ex}</pre>"
|
||||
traceback.print_exc()
|
||||
if sys.argv[1] == "ALL":
|
||||
f.write(f"\n\n<div id='card_container_{n}'>\n<h1>{filename}</h1>\n\n{data}\n</div>")
|
||||
else:
|
||||
f.write(f"\n<div id='card_container_{n}'>\n{data}\n</div>")
|
||||
import sys, os
|
||||
env = Environment(
|
||||
trim_blocks = True,
|
||||
lstrip_blocks = True,
|
||||
loader = FileSystemLoader('templates'))
|
||||
with open("cards/build/all.html", "w") as f:
|
||||
f.write(env.get_template('all.html.j2').render(cards=map(os.path.basename, sys.argv[1:])))
|
||||
endef
|
||||
|
||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||
build/test_card_rendered.html: build/test_card.xml style.html.j2 build/style.css templates/card_header.html.j2
|
||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" "build/test_card.xml" "build/test_card_rendered.html"
|
||||
|
||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||
cards/build/%.html: cards/%.yaml style.html.j2 build/style.css templates/card_header.html.j2
|
||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" $< $@
|
||||
|
||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||
cards/build/%.x.html: cards/%.xml style.html.j2 build/style.css templates/card_header.html.j2
|
||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" $< $@
|
||||
|
||||
export PYTHON_MAKE_JINJA2_RENDERED_CARD
|
||||
cards/build/all.html: $(CARDS) style.html.j2 build/style.css templates/card_header.html.j2
|
||||
python3 -c "$$PYTHON_MAKE_JINJA2_RENDERED_CARD" ALL $@
|
||||
|
||||
|
||||
define PYTHON_MAKE_CARD_XML
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
with open("test_card.yaml") as f: data = f.read()
|
||||
with open("test_card.xml") as f: xml_data = f.read()
|
||||
with open("build/test_card.xml", "w") as f:
|
||||
f.write(Environment(
|
||||
loader=FileSystemLoader('templates'))
|
||||
.get_template('card.xml.j2')
|
||||
.render(data=data, xml_data=xml_data))
|
||||
endef
|
||||
export PYTHON_MAKE_CARD_XML
|
||||
build/test_card.xml: test_card.yaml test_card.xml templates/card.xml.j2
|
||||
python3 -c "$$PYTHON_MAKE_CARD_XML"
|
||||
export PYTHON_MAKE_IFRAME_HELL
|
||||
cards/build/all.html: $(CARDS_DESTS) templates/all.html.j2
|
||||
python3 -c "$$PYTHON_MAKE_IFRAME_HELL" $(CARDS_DESTS)
|
||||
|
||||
|
||||
define PYTHON_MAKE_STYLE_XSL
|
||||
|
@ -112,9 +52,9 @@ with open("build/style.css") as f: css_data = f.read()
|
|||
with open("style.html.j2") as f: jinja_data = f.read()
|
||||
with open("style.js") as f: js_data = f.read()
|
||||
env = Environment(
|
||||
trim_blocks=True,
|
||||
lstrip_blocks=True,
|
||||
loader=FileSystemLoader('templates'))
|
||||
trim_blocks = True,
|
||||
lstrip_blocks = True,
|
||||
loader = FileSystemLoader('templates'))
|
||||
card_header = env.get_template('card_header.html.j2').render()
|
||||
with open("build/style.xsl", "w") as f:
|
||||
f.write(
|
||||
|
@ -122,16 +62,24 @@ with open("build/style.xsl", "w") as f:
|
|||
.render( css_data=css_data, jinja_data=jinja_data, js_data=js_data, card_header=card_header))
|
||||
endef
|
||||
export PYTHON_MAKE_STYLE_XSL
|
||||
build/style.xsl: build/style.css templates/style.xsl.j2 templates/card_header.html.j2 style.html.j2 style.js
|
||||
build/style.xsl: build/style.css templates/style.xsl.j2 templates/card_header.html.j2 style.html.j2 style.js build
|
||||
python3 -c "$$PYTHON_MAKE_STYLE_XSL"
|
||||
|
||||
|
||||
define PYTHON_MAKE_SASS
|
||||
import sass
|
||||
import sass # libsass
|
||||
with open("style.scss") as f:
|
||||
with open("build/style.css", "w") as of:
|
||||
of.write(sass.compile(string=f.read(), output_style="expanded"))
|
||||
endef
|
||||
export PYTHON_MAKE_SASS
|
||||
build/style.css: style.scss
|
||||
build/style.css: style.scss build
|
||||
python3 -c "$$PYTHON_MAKE_SASS"
|
||||
|
||||
|
||||
build:
|
||||
mkdir -p build
|
||||
|
||||
|
||||
cards/build:
|
||||
mkdir -p cards/build
|
||||
|
|
|
@ -1,28 +1,60 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
</yaml_data>
|
||||
<playcost></playcost>
|
||||
<cp></cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<name>BASE</name>
|
||||
<description></description>
|
||||
<image>img:piuy/haha</image>
|
||||
<range></range>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
|
||||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style:
|
||||
figures:
|
||||
- name: https://ak3.picdn.net/shutterstock/videos/16986703/thumb/1.jpg?i10c=img.resize(height:160)
|
||||
source: url
|
||||
scale: 3
|
||||
flip_x: true
|
||||
rotation: -20
|
||||
opacity: 0.6
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
color: black
|
||||
scale: 0.7
|
||||
rotation: 10
|
||||
offset: [-0.32, -0.08]
|
||||
- name: fencing
|
||||
source: svg
|
||||
color: false
|
||||
scale: 0.75
|
||||
rotation: 8
|
||||
offset: [-0.2, 0.0]
|
||||
- source: xml
|
||||
scale: 0.7
|
||||
offset: [0.25, 0.1]
|
||||
</yaml_data>
|
||||
<name>Evasion</name>
|
||||
<image>img:piuy/wave</image>
|
||||
<playcost></playcost>
|
||||
<cp>12</cp>
|
||||
<duration>Permanent + discarded on death</duration>
|
||||
<power>CUNNING + (0 to 2)</power>
|
||||
<difficulty></difficulty>
|
||||
<symbol>2 🎲</symbol>
|
||||
<range></range>
|
||||
<description>*Starts in your play area rather than your deck.*
|
||||
|
||||
Defensive Trigger: **take damage**
|
||||
|
||||
* You cannot activate this if *toppled*
|
||||
* *If below or at 25% health:* gain +2 power to this ability.
|
||||
* *Roll a D20*: On a (20-power of this ability) or more you dodge the attack *entirely*.
|
||||
* An 8 or less is always a failure to dodge, regardless of how much you boost this ability.
|
||||
* If you use this ability and roll an 8 or less, your Hit Points card will lose 2 HP for each HP lost on this attack.</description>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Evasion"/>
|
||||
<component x="2" y="3" db_entry="🎲 SOS"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -1,21 +1,76 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: gi/open-folder
|
||||
source: svg
|
||||
scale: 5
|
||||
color: Navy
|
||||
- name: gi/wind-hole
|
||||
source: svg
|
||||
scale: 2.6
|
||||
rotation: -40
|
||||
color: CornflowerBlue
|
||||
- name: gi/wind-hole
|
||||
source: svg
|
||||
scale: 1.8
|
||||
color: DarkCyan
|
||||
- name: gi/curly-wing
|
||||
source: svg
|
||||
scale: 0.9
|
||||
rotation: -20
|
||||
flip_x: true
|
||||
offset: [0.55, 0.09]
|
||||
color: white
|
||||
opacity: 0.8
|
||||
- name: gi/curly-wing
|
||||
source: svg
|
||||
scale: 0.9
|
||||
rotation: 20
|
||||
offset: [-0.55, 0.09]
|
||||
color: white
|
||||
opacity: 0.8
|
||||
- name: gi/abstract-066
|
||||
source: svg
|
||||
scale: 0.98
|
||||
color: DarkViolet
|
||||
- name: gi/open-folder
|
||||
source: svg
|
||||
scale: 5
|
||||
color: white
|
||||
opacity: 0.3
|
||||
- name: gi/abstract-066
|
||||
source: svg
|
||||
scale: 0.9
|
||||
color: hotpink
|
||||
- name: gi/handheld-fan
|
||||
source: svg
|
||||
scale: 0.72
|
||||
offset: [0.0, 0.05]
|
||||
rotation: 200
|
||||
color: black
|
||||
- name: gi/handheld-fan
|
||||
source: svg
|
||||
scale: 0.7
|
||||
offset: [0.0, 0.05]
|
||||
rotation: 200
|
||||
color: crimson
|
||||
</yaml_data>
|
||||
<name>Repotoire: Talent</name>
|
||||
<image>img:piuy/hapa</image>
|
||||
<playcost></playcost>
|
||||
<cp>10</cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<duration>Permanent + persists on death</duration>
|
||||
<power>1</power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<symbol>🌪️</symbol>
|
||||
<name>Air Mana</name>
|
||||
<image></image>
|
||||
<description>*Persists on death*\
|
||||
*Play Limit*: 1 / turn
|
||||
|
||||
* Mana Cards are untapped at the start of your turn
|
||||
* Can be tapped for various reasons.
|
||||
* Tap this card to add a power token to your Mana Shield. </description>
|
||||
<range></range>
|
||||
<description>Your song ability in play gains +1 popularity tokens.
|
||||
</description>
|
||||
<artistic_value>1</artistic_value>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
|
@ -27,6 +82,7 @@ figures:
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Repertoire Card: Talent"/>
|
||||
<component x="2" y="2" db_entry="🔮 Mana Card"/>
|
||||
<component x="2" y="3" db_entry="🌪️ Air Mana"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -1,35 +1,24 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: expression/explosion
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
- source: xml
|
||||
offset:
|
||||
- 0.2
|
||||
- 0.0
|
||||
scale: 1.8
|
||||
</yaml_data>
|
||||
<name>Raving Song</name>
|
||||
<image>img:piuy/sing</image>
|
||||
<playcost>2 ACT,
|
||||
not silenced,
|
||||
Encore! card per turn</playcost>
|
||||
<cp>65</cp>
|
||||
<duration>1 + discarded on death</duration>
|
||||
<power>(0 to 4) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<description>All units (friends and foes) increase any damage taken by 1 per popularity token on the song. This counts per damage source.
|
||||
<name>Repotoire: Exiting</name>
|
||||
<image>img:piuy/hapa</image>
|
||||
<playcost></playcost>
|
||||
<cp>10</cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<range></range>
|
||||
<description>Your song ability in play gains +1 popularity tokens.</description>
|
||||
<artistic_value>1</artistic_value>
|
||||
|
||||
+2 power to this ability if you have the **High Ground** or **Flying** status effect.
|
||||
|
||||
When you play this song with another of your songs in play, you transition from your old song to your new song.
|
||||
|
||||
Your song does not affect non-sentient units</description>
|
||||
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Song"/>
|
||||
<component x="4" y="3" db_entry="🎺 Staged Song"/>
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
|
@ -38,9 +27,8 @@ Your song does not affect non-sentient units</description>
|
|||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Monster Mash"/>
|
||||
<component x="2" y="4" db_entry="🎺 Raving Song"/>
|
||||
<component x="5" y="3" db_entry="🎺 Encore!"/>
|
||||
<component x="3" y="3" db_entry="🎺 Repertoire Card: Talent"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -2,28 +2,75 @@
|
|||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: piuy/waiting
|
||||
source: img
|
||||
scale: 1.56
|
||||
offset: [0.0, 0.02]
|
||||
- name: effects/uni-black
|
||||
source: img
|
||||
scale: 2.3
|
||||
offset: [0.0, -0.13]
|
||||
- name: gi/open-folder
|
||||
source: svg
|
||||
scale: 5
|
||||
color: Navy
|
||||
- name: gi/wind-hole
|
||||
source: svg
|
||||
scale: 2.6
|
||||
rotation: -40
|
||||
flip_x: true
|
||||
color: CornflowerBlue
|
||||
- name: gi/wind-hole
|
||||
source: svg
|
||||
scale: 1.8
|
||||
flip_y: true
|
||||
color: DarkCyan
|
||||
- name: gi/splash-2
|
||||
source: svg
|
||||
scale: 0.9
|
||||
rotation: -20
|
||||
flip_x: true
|
||||
offset: [0.55, 0.09]
|
||||
color: white
|
||||
opacity: 0.8
|
||||
- name: gi/splash-2
|
||||
source: svg
|
||||
scale: 0.9
|
||||
rotation: 20
|
||||
offset: [-0.55, 0.09]
|
||||
color: white
|
||||
opacity: 0.8
|
||||
- name: gi/abstract-066
|
||||
source: svg
|
||||
scale: 0.98
|
||||
color: cyan
|
||||
opacity: 0.5
|
||||
- name: gi/open-folder
|
||||
source: svg
|
||||
scale: 5
|
||||
color: teal
|
||||
opacity: 0.3
|
||||
- name: gi/abstract-066
|
||||
source: svg
|
||||
scale: 0.9
|
||||
color: "#78f"
|
||||
- name: gi/water-splash
|
||||
source: svg
|
||||
scale: 0.75
|
||||
offset: [0.0, 0.05]
|
||||
color: blue
|
||||
- name: gi/water-splash
|
||||
source: svg
|
||||
scale: 0.7
|
||||
offset: [0.0, 0.05]
|
||||
color: lightblue
|
||||
</yaml_data>
|
||||
<playcost>2 ACT</playcost>
|
||||
<cp>15</cp>
|
||||
<duration>Permanent + discards on your death</duration>
|
||||
<power>0 or + 2 + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<name>Study of Movement</name>
|
||||
<description>Scout an enemy unit in visible range on the battlefield. If the scouted unit is a boss, discard this card.
|
||||
If the scouted unit has cunning greater than this card, discard this card.
|
||||
Otherwise, keep this card in your play area.
|
||||
|
||||
While this card is in your play area, your Imitation Dance cards can imitate any ability on the scouted monster card that does not do direct damage.</description>
|
||||
<playcost></playcost>
|
||||
<cp>10</cp>
|
||||
<duration>Permanent + persists on death</duration>
|
||||
<power>1</power>
|
||||
<difficulty></difficulty>
|
||||
<symbol>🌊</symbol>
|
||||
<name>Water Mana</name>
|
||||
<image></image>
|
||||
<description>*Persists on death*\
|
||||
*Play Limit*: 1 / turn
|
||||
|
||||
* Mana Cards are untapped at the start of your turn
|
||||
* Can be tapped for various reasons.
|
||||
* Tap this card to add **TWO** power token to your Mana Shield. </description>
|
||||
<range></range>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
|
@ -36,7 +83,7 @@ While this card is in your play area, your Imitation Dance cards can imitate any
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Study of Movement"/>
|
||||
<component x="2" y="2" db_entry="🔮 Mana Card"/>
|
||||
<component x="2" y="3" db_entry="🌊 Water Mana"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -1,18 +1,44 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: piuy/hi
|
||||
- name: piuy/slipping
|
||||
source: img
|
||||
opacity: 0.3
|
||||
scale: 2
|
||||
rotation: 20
|
||||
offset:
|
||||
- -0.15
|
||||
- 0.20
|
||||
- name: google/android-4.3/banana
|
||||
source: emoji
|
||||
scale: 0.3
|
||||
opacity: 0.8
|
||||
flip_x: true
|
||||
rotation: 120
|
||||
offset:
|
||||
- 0.30
|
||||
- 0.33
|
||||
- source: xml
|
||||
rotation: -60
|
||||
scale: 0.8
|
||||
offset:
|
||||
- -0.05
|
||||
- -0.09
|
||||
</yaml_data>
|
||||
<name>Piuy!</name>
|
||||
<cp>10</cp>
|
||||
<symbol>⚔️</symbol>
|
||||
<duration>Permanent + discarded on death</duration>
|
||||
<playcost>0 ACT</playcost>
|
||||
<power>3 BODY + ⚔️ LevelUp Benefit</power>
|
||||
<name>Rep: Embarrasing Failure</name>
|
||||
<image>img:piuy/hapo</image>
|
||||
<playcost></playcost>
|
||||
<cp>100</cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<range></range>
|
||||
<description>Discard any song or dance cards in play (even if not yours!). End your turn. Gain the ""Dazed"" status effect.
|
||||
Instead of discarding this card, turn it facedown until the end of combat. You won't play it again until the next combat.</description>
|
||||
<artistic_value>-3</artistic_value>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
|
@ -24,6 +50,6 @@ figures:
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="2" db_entry="⚔️ Hit Points"/>
|
||||
<component x="2" y="2" db_entry="🎺 Repertoire Card: Embarrasing Failure"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -1,36 +1,23 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
|
||||
- name: piuy/beetle
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
scale: 0.95
|
||||
offset:
|
||||
- 0.15
|
||||
- 0.05
|
||||
- name: google/android-7.0/flower-playing-cards
|
||||
source: emoji
|
||||
scale: 0.28
|
||||
flip_x: true
|
||||
rotation: 17
|
||||
offset:
|
||||
- -0.21
|
||||
- -0.3
|
||||
|
||||
scale: 1.8
|
||||
</yaml_data>
|
||||
<playcost>ACT</playcost>
|
||||
<cp>10</cp>
|
||||
<name>Repotoire: Entralling</name>
|
||||
<playcost></playcost>
|
||||
<cp>25</cp>
|
||||
<duration></duration>
|
||||
<power>TEC</power>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol>🎺</symbol>
|
||||
<name>Draw Reportoire</name>
|
||||
<description>*Release your inner star!*
|
||||
|
||||
Draw one card from your Repertoire Deck, do what it says on it. Then discard it.
|
||||
</description>
|
||||
<symbol></symbol>
|
||||
<range></range>
|
||||
<description>One of your song or dance abilities in play gains +1 duration tokens.</description>
|
||||
<artistic_value>2</artistic_value>
|
||||
<image>img:piuy/hapi</image>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
|
@ -42,7 +29,6 @@ Draw one card from your Repertoire Deck, do what it says on it. Then discard it.
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="2" db_entry="⚔️ Learn Ability"/>
|
||||
<component x="3" y="3" db_entry="🎺 Entertainer"/>
|
||||
<component x="3" y="2" db_entry="🎺 Repertoire Card: Enthralling"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: effects/uni-white
|
||||
source: img
|
||||
scale: 1.5
|
||||
color: "#bbb"
|
||||
offset:
|
||||
- -0.04
|
||||
- -0
|
||||
- source: xml
|
||||
scale: 0.9
|
||||
offset:
|
||||
- 0
|
||||
- 0
|
||||
- name: clip/crowd2
|
||||
source: img
|
||||
scale: 1.8
|
||||
offset:
|
||||
- 0
|
||||
- 0.3
|
||||
</yaml_data>
|
||||
<name>Raving Song</name>
|
||||
<image>img:piuy/sing</image>
|
||||
<playcost>2 ACT,
|
||||
not silenced,
|
||||
MOV,
|
||||
Encore! card per turn</playcost>
|
||||
<cp>81</cp>
|
||||
<duration>1 + discarded on death</duration>
|
||||
<power>(2 to 6) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<description>All units (friends and foes) increase any damage taken by 1 per popularity token on the song. This counts per damage source.
|
||||
|
||||
The song starts at 2 popularity tokens.\
|
||||
+2 POWER if *flying* or *High Ground*
|
||||
|
||||
This may stack on existing performances.</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Song"/>
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="4" db_entry="🎺 Raving Song"/>
|
||||
<component x="4" y="3" db_entry="🎺 Put effort into it"/>
|
||||
<component x="5" y="3" db_entry="🎺 Staged Song"/>
|
||||
<component x="3" y="3" db_entry="🎺 Encore!"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,75 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
scale: 2.7
|
||||
- name: effects/uni-white
|
||||
source: img
|
||||
scale: 0.54
|
||||
color: yellow
|
||||
opacity: 60%
|
||||
flip_x: true
|
||||
rotation: 17
|
||||
offset:
|
||||
- -0.21
|
||||
- -0.3
|
||||
- source: xml
|
||||
scale: 0.95
|
||||
offset:
|
||||
- 0.15
|
||||
- 0.05
|
||||
- name: google/android-7.0/flower-playing-cards
|
||||
source: emoji
|
||||
scale: 0.28
|
||||
flip_x: true
|
||||
rotation: 10
|
||||
opacity: 0.7
|
||||
offset:
|
||||
- -0.24
|
||||
- -0.29
|
||||
- name: google/android-7.0/flower-playing-cards
|
||||
source: emoji
|
||||
scale: 0.28
|
||||
flip_x: true
|
||||
rotation: 17
|
||||
offset:
|
||||
- -0.21
|
||||
- -0.3
|
||||
</yaml_data>
|
||||
<playcost>ACT</playcost>
|
||||
<cp>54</cp>
|
||||
<duration></duration>
|
||||
<power>TEC + (-2 to 0)</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎺3 🎲</symbol>
|
||||
<name>Draw Reportoire</name>
|
||||
<description>*Release your inner star!*
|
||||
|
||||
Draw two cards from your repertoire deck, choose one,\
|
||||
do what it says it, then discard both.
|
||||
|
||||
*Instead of playing this card, you may on your turn discard it from your hand to gain 2 SP.*
|
||||
|
||||
*If you are below or at 25% health, gain +2 power to this ability.*</description>
|
||||
<range></range>
|
||||
<image>img:piuy/beetle</image>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Entertainer"/>
|
||||
<component x="3" y="2" db_entry="🎲 Skilled"/>
|
||||
<component x="4" y="3" db_entry="🎺 Backup Act"/>
|
||||
<component x="4" y="2" db_entry="🎲 Quick Shot"/>
|
||||
<component x="5" y="2" db_entry="🎲 SOS"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,46 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: piuy/waiting
|
||||
source: img
|
||||
scale: 1.56
|
||||
offset: [0.0, 0.02]
|
||||
- name: effects/uni-black
|
||||
source: img
|
||||
scale: 2.3
|
||||
offset: [0.0, -0.13]
|
||||
- name: clip/glasses1
|
||||
source: img
|
||||
scale: 0.6
|
||||
offset: [-0.01, -0.15]
|
||||
</yaml_data>
|
||||
<playcost>2 ACT</playcost>
|
||||
<cp>15</cp>
|
||||
<duration>Permanent + discards on your death</duration>
|
||||
<power>0 or + 2 + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<name>Study of Movement</name>
|
||||
<description>Scout an enemy unit in visible range on the battlefield. If the scouted unit is a boss, discard this card.
|
||||
If the scouted unit has cunning greater than this card, discard this card.
|
||||
Otherwise, keep this card in your play area.
|
||||
|
||||
While this card is in your play area, your Imitation Dance cards can imitate any ability on the scouted monster card that does not do direct damage.</description>
|
||||
<image></image>
|
||||
<range></range>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Study of Movement"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,70 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: https://i.imgur.com/TtzXwb9.png
|
||||
source: url
|
||||
scale: 0.5
|
||||
rotation: 20
|
||||
offset: [0.56, -0.23]
|
||||
- name: https://i.imgur.com/zx97is1.png
|
||||
source: url
|
||||
scale: 0.4
|
||||
rotation: -20
|
||||
offset: [-0.57, -0.25]
|
||||
- source: xml
|
||||
rotation: 8
|
||||
offset: [-0.05, 0.04]
|
||||
- source: url
|
||||
name: "https://www.vippng.com/png/full/93-933790_green-colored-smoke-fog-light-green-smoke-transparent.png"
|
||||
offset: [1, 0.1]
|
||||
rotation: -80
|
||||
scale: 1.8
|
||||
- source: url
|
||||
name: "https://www.vippng.com/png/full/93-933790_green-colored-smoke-fog-light-green-smoke-transparent.png"
|
||||
offset: [-1, 0.1]
|
||||
rotation: 80
|
||||
flip_x: true
|
||||
scale: 1.8
|
||||
color: purple
|
||||
</yaml_data>
|
||||
<playcost>Limit: once per your turn,
|
||||
2 ACT</playcost>
|
||||
<cp>30</cp>
|
||||
<duration></duration>
|
||||
<power>(3 to 5) + CUNNING + 0 or</power>
|
||||
<difficulty>(1 to 9)</difficulty>
|
||||
<symbol>🎲🎺⚔️</symbol>
|
||||
<name>Vicious Mockery</name>
|
||||
<description>Mock a target that has your attention mercilessly, dealing PSYCHIC damage.
|
||||
You must come up with the mockery in real life.
|
||||
Gain up to 8 less difficulty on the attack as decided by the GM and other party members.
|
||||
|
||||
Consume 3 Proc symbols on Hit Dice when attacking with this card to
|
||||
increase the power of this ability by 3
|
||||
|
||||
|
||||
If you fail to hit with this attack, return this card to your collection.
|
||||
|
||||
</description>
|
||||
<image>img:piuy/sick</image>
|
||||
<range></range>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="3" y="3" db_entry="🎺 Vicious Mockery"/>
|
||||
<component x="3" y="4" db_entry="⚔️ Attack"/>
|
||||
<component x="4" y="3" db_entry="🎺 Roleplaying it"/>
|
||||
<component x="4" y="4" db_entry="⚔️ Proc: Criticals"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,69 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: gi/full-folder
|
||||
source: svg
|
||||
scale: 4
|
||||
color: "#300"
|
||||
opacity: 0.4
|
||||
- name: gi/crossed-chains
|
||||
source: svg
|
||||
scale: 2
|
||||
offset: [-0.1, -0.2]
|
||||
color: white
|
||||
opacity: 0.3
|
||||
- name: gi/padlock
|
||||
source: svg
|
||||
color: "#959"
|
||||
- name: gi/grab
|
||||
source: svg
|
||||
rotation: -70
|
||||
scale: 0.5
|
||||
offset: [-0.56, 0.2]
|
||||
color: "#938"
|
||||
- name: gi/grab
|
||||
source: svg
|
||||
rotation: 70
|
||||
flip_x: true
|
||||
scale: 0.5
|
||||
offset: [0.56, 0.2]
|
||||
color: "#839"
|
||||
- source: xml
|
||||
scale: 0.5
|
||||
offset: [0, -.18]
|
||||
rotation: 2
|
||||
</yaml_data>
|
||||
<playcost>2 MOV</playcost>
|
||||
<cp>45</cp>
|
||||
<power>(0 to 5) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<name>Pas de Deux</name>
|
||||
<description>* Duration: 1 per 3 power of this ability
|
||||
|
||||
+3 power if you have the *High Ground* or *Flying* when playing this card.
|
||||
|
||||
*Grab onto another unit at range 1, and dance with them.
|
||||
While this card is in play, that unit cannot move away from you, but can otherwise attack normally.*
|
||||
|
||||
You move together, rotation costs 1 move.</description>
|
||||
<image>img:piuy/twirl</image>
|
||||
<range></range>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Dance"/>
|
||||
<component x="2" y="4" db_entry="🎺 Pas de Deux"/>
|
||||
<component x="3" y="3" db_entry="🎺 Staged Dance"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,73 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: bg/cave
|
||||
source: img
|
||||
scale: 2
|
||||
opacity: 0.9
|
||||
- name: effects/uni-white
|
||||
source: img
|
||||
color: "#ffc"
|
||||
offset: [0.3, 0]
|
||||
scale: 1.2
|
||||
opacity: 0.4
|
||||
- name: "https://i.ya-webdesign.com/images/create-png-with-transparent-background-3.png"
|
||||
source: url
|
||||
offset: [0.3, 0]
|
||||
scale: 1.2
|
||||
color: white
|
||||
- name: "https://i.ya-webdesign.com/images/create-png-with-transparent-background-3.png"
|
||||
source: url
|
||||
offset: [0.3, 0]
|
||||
scale: 1.2
|
||||
opacity: 0.9
|
||||
- name: gi/lightning-trio
|
||||
source: svg
|
||||
offset: [0.0, -0.3]
|
||||
color: yellow
|
||||
scale: 0.35
|
||||
rotation: 170
|
||||
- source: xml
|
||||
scale: 0.7
|
||||
offset: [-0.35, 0.15]
|
||||
</yaml_data>
|
||||
<playcost>2 ACT,
|
||||
Not Silenced</playcost>
|
||||
<cp>24</cp>
|
||||
<duration>3 + discards on your death</duration>
|
||||
<power>MAG+(0 to 1)+🌪LV</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🔮🌪️🎲⚔️</symbol>
|
||||
<name>Generator</name>
|
||||
<image>img:piuy/haha</image>
|
||||
<range>1</range>
|
||||
<description>* 2 cooldown
|
||||
|
||||
*Target is surrounded by an electromagnetic field.*\
|
||||
*+1 against *flying* targets*
|
||||
|
||||
* POWER must exceed CUNNING against hostile targets
|
||||
* *For each MOV spent by targets*: gain 1 kinetic token on this card, up to POWER tokens.
|
||||
* You may trade 6 kinetic tokens for +1 ACT this turn.
|
||||
* Targets gain +1 Range on ranged abilities</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="3" db_entry="🔮 Cast Magic"/>
|
||||
<component x="2" y="4" db_entry="🔮 Touch"/>
|
||||
<component x="2" y="5" db_entry="🌪️ Generator"/>
|
||||
<component x="3" y="5" db_entry="🌪️ Speedster"/>
|
||||
<component x="4" y="5" db_entry="🌪️ Projectile Carry"/>
|
||||
<component x="3" y="3" db_entry="🌪️ Strong vs Flying"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="4" y="3" db_entry="⚔️ Cooldown"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,65 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: bg/rays
|
||||
source: img
|
||||
scale: 2
|
||||
opacity: 0.2
|
||||
rotation: 30
|
||||
- name: gi/beveled-star
|
||||
source: svg
|
||||
color: "#dad"
|
||||
scale: 1.2
|
||||
- name: gi/beveled-star
|
||||
source: svg
|
||||
color: "#aaf"
|
||||
rotation: 90
|
||||
- source: xml
|
||||
scale: 0.5
|
||||
rotation: 15
|
||||
- name: gi/perpendicular-rings
|
||||
source: svg
|
||||
color: "#ee0"
|
||||
rotation: 40
|
||||
scale: 0.9
|
||||
</yaml_data>
|
||||
<playcost>2 ACT,
|
||||
Not Silenced</playcost>
|
||||
<cp>90</cp>
|
||||
<duration></duration>
|
||||
<power>(0 to 3) + MAG</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🔮🌪️</symbol>
|
||||
<name>Teleport</name>
|
||||
<image>img:piuy/cute</image>
|
||||
<range>3 + X</range>
|
||||
<description>Add 1 Power vs *flying* targets.\
|
||||
Add Power to *spellrange*.
|
||||
|
||||
* Teleport to an empty square in range less or equal to the spellrange of this ability. Does not consume MOV.
|
||||
* Triggers no movement or ability reactions
|
||||
* You must have a line-of-sight to the target destination.
|
||||
* You may teleport to the location of a friendly unit. If you do, the two of you swaps places. Permission required.
|
||||
</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🔮 Cast Magic"/>
|
||||
<component x="2" y="4" db_entry="🌪️ Teleport"/>
|
||||
<component x="3" y="4" db_entry="🌪️ Greater Teleport"/>
|
||||
<component x="3" y="3" db_entry="🌪️ Strong vs Flying"/>
|
||||
<component x="4" y="4" db_entry="🌪️ Swap"/>
|
||||
<component x="5" y="4" db_entry="🌪️ Blink"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,48 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: clip/falling-money-2
|
||||
source: img
|
||||
offset: [0.0, -0.4]
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
offset: [0.0, 0.1]
|
||||
scale: 1.6
|
||||
color: lightgray
|
||||
rotation: 10
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
offset: [0.0, 0.1]
|
||||
scale: 1.1
|
||||
- source: xml
|
||||
</yaml_data>
|
||||
<name>Repotoire: Superstar</name>
|
||||
<image>img:piuy/hapa</image>
|
||||
<playcost></playcost>
|
||||
<cp>100</cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<range></range>
|
||||
<description>Your Song ability in play gains +3 popularity tokens.
|
||||
If this is not your first Song or Dance played this combat, it gains another +2 popularity tokens.
|
||||
|
||||
*Instead of discarding:* Set this card aside until end of combat</description>
|
||||
<artistic_value>3</artistic_value>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Repertoire Card: Superstar"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,64 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: bg/skies
|
||||
source: img
|
||||
scale: 2
|
||||
opacity: 0.7
|
||||
- source: svg
|
||||
name: gi/magic-swirl
|
||||
color: purple
|
||||
opacity: 0.3
|
||||
scale: 0.9
|
||||
offset: [0.0, 0.05]
|
||||
- source: svg
|
||||
name: gi/big-egg
|
||||
color: black
|
||||
opacity: 0.16
|
||||
rotation: 70
|
||||
scale: 0.5
|
||||
offset: [0.0, 0.58]
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.0, 0.1]
|
||||
- name: "https://i.pinimg.com/originals/53/a7/63/53a763e3cc4ce067ff02ad5b4e09afeb.png"
|
||||
source: url
|
||||
scale: 2
|
||||
color: "#35a"
|
||||
</yaml_data>
|
||||
<playcost>2 ACT</playcost>
|
||||
<cp>33</cp>
|
||||
<duration>3 + discards on your death</duration>
|
||||
<power>MAG + (-3 to -1)</power>
|
||||
<difficulty>(2 to 4)</difficulty>
|
||||
<symbol>🔮🎲🌪️🌊</symbol>
|
||||
<name>Rain conduit</name>
|
||||
<image>img:piuy/ba</image>
|
||||
<range>102</range>
|
||||
<description>*Generator on each grid cell in the battlefield.
|
||||
Roll for each outdoor target. You manipulate time and space using the target as a multidimensional nexus.*
|
||||
|
||||
* 🌊 reduces difficulty by 1, 🌊 + 🌪 reduces by 2 total
|
||||
* Future spells can always consider this target "within spellrange"
|
||||
* For hostile targets, POWER must exceed the CUNNING
|
||||
* Gain 1 focus token on your Mana shield card. They are lost whenever it is discarded</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="3" db_entry="🔮 Cast Magic"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="4" db_entry="🌊 Rain"/>
|
||||
<component x="2" y="5" db_entry="🌪️ Conduitivity"/>
|
||||
<component x="3" y="3" db_entry="🌊 Build Focus"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,80 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- source: img
|
||||
name: bg/ray
|
||||
scale: 2
|
||||
color: yellow
|
||||
- source: img
|
||||
name: bg/ray
|
||||
scale: 2
|
||||
opacity: 0.7
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [-0.33, 0.04]
|
||||
opacity: 0.5
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [-0.21, 0.00]
|
||||
opacity: 0.5
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [-0.1, -0.02]
|
||||
opacity: 0.5
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.0, -0.04]
|
||||
opacity: 0.5
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.1, -0.02]
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.21, 0.00]
|
||||
opacity: 0.5
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.33, 0.04]
|
||||
opacity: 0.5
|
||||
</yaml_data>
|
||||
<playcost>2 ACT</playcost>
|
||||
<cp>169</cp>
|
||||
<duration>3 + discarded on death</duration>
|
||||
<power>(-1 to 2) + MAG</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🔮🌪️</symbol>
|
||||
<name>Spacewarp</name>
|
||||
<image>img:piuy/dance</image>
|
||||
<range>4</range>
|
||||
<description>Add this Spell Zone to the terrain on a target grid cell
|
||||
|
||||
* If target has Conduitivity cast by you: +1 POWER
|
||||
* Between two chain targets,
|
||||
draw line between centers, hit every grid cell touched by line. "
|
||||
|
||||
**Enforced Trigger:** *A unit exist in the zone.*
|
||||
While in this zone, you are always considered in melee range to all units in a connected gravity zone.</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="5" db_entry="🔮 Create Zone"/>
|
||||
<component x="2" y="3" db_entry="🔮 Cast Magic"/>
|
||||
<component x="2" y="4" db_entry="🔮 Touch"/>
|
||||
<component x="2" y="6" db_entry="🌪️ Gravity Zone"/>
|
||||
<component x="3" y="6" db_entry="🌪️ Spacewarp"/>
|
||||
<component x="4" y="3" db_entry="🌪️ Chain"/>
|
||||
<component x="5" y="3" db_entry="🌪️ Arc"/>
|
||||
<component x="3" y="3" db_entry="🌪️ Power Conduit"/>
|
||||
|
||||
</ability_card>
|
|
@ -0,0 +1,75 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- source: img
|
||||
name: bg/castle
|
||||
scale: 2
|
||||
color: "#202"
|
||||
- source: img
|
||||
name: bg/castle
|
||||
scale: 4
|
||||
offset: [0, -0.8]
|
||||
opacity: 0.8
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.6, 0]
|
||||
rotation: -20
|
||||
- source: xml
|
||||
scale: 0.8
|
||||
offset: [0.6, 0]
|
||||
rotation: -20
|
||||
opacity: 0.1
|
||||
color: "#8b0"
|
||||
- source: img
|
||||
name: clip/fire
|
||||
color: "#666"
|
||||
scale: 3.2
|
||||
flip_x: true
|
||||
offset: [0.0, -0.2]
|
||||
- source: img
|
||||
name: clip/fire
|
||||
color: darkgray
|
||||
scale: 3
|
||||
offset: [0.0, -0.2]
|
||||
</yaml_data>
|
||||
<playcost>2 ACT,
|
||||
Not Silenced</playcost>
|
||||
<cp>68</cp>
|
||||
<duration>3 + discarded on death</duration>
|
||||
<power>(-1 to 2) + MAG</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🔮🌊</symbol>
|
||||
<name>Smokescreen</name>
|
||||
<image>img:piuy/wave</image>
|
||||
<range>4</range>
|
||||
<description>Add this Spell Zone to the terrain on a target grid cell
|
||||
|
||||
* If target has Conduitivity cast by you: +1 POWER
|
||||
* Between two chain targets,
|
||||
draw line between centers, hit every grid cell touched by line. "
|
||||
|
||||
**Enforced Trigger:** *A unit exist in the zone.*
|
||||
While in this zone, you are always considered in melee range to all units in a connected gravity zone.</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
<component x="11" y="5" db_entry="🧩 CP Cost"/>
|
||||
<component x="12" y="4" db_entry="🧩 Duration"/>
|
||||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="5" db_entry="🔮 Create Zone"/>
|
||||
<component x="2" y="3" db_entry="🔮 Cast Magic"/>
|
||||
<component x="2" y="4" db_entry="🔮 Touch"/>
|
||||
<component x="4" y="3" db_entry="🌪️ Chain"/>
|
||||
<component x="5" y="3" db_entry="🌪️ Arc"/>
|
||||
<component x="3" y="3" db_entry="🌪️ Power Conduit"/>
|
||||
<component x="2" y="6" db_entry="🌊 Smokescreen"/>
|
||||
|
||||
</ability_card>
|
|
@ -1,23 +1,18 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: effects/uni-slim
|
||||
source: img
|
||||
scale: 1.8
|
||||
</yaml_data>
|
||||
<name>Repotoire: Exiting</name>
|
||||
<image>img:piuy/hapi</image>
|
||||
<playcost></playcost>
|
||||
<cp>10</cp>
|
||||
<cp></cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<name>BASE</name>
|
||||
<image>img:piuy/haha</image>
|
||||
<range></range>
|
||||
<description>Gain 3 SP, assuming your hit points card can hold them.</description>
|
||||
<artistic_value>1</artistic_value>
|
||||
<description></description>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
|
@ -29,6 +24,5 @@ figures:
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Repertoire Card: Exciting"/>
|
||||
|
||||
</ability_card>
|
54
cards/74.xml
54
cards/74.xml
|
@ -2,28 +2,63 @@
|
|||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: bg/royal3
|
||||
source: img
|
||||
scale: 2
|
||||
opacity: 0.9
|
||||
- name: gi/party-flags
|
||||
source: svg
|
||||
color: goldenrod
|
||||
offset: [-0.8, -0.3]
|
||||
flip_x: true
|
||||
rotation: -36
|
||||
- name: gi/party-flags
|
||||
source: svg
|
||||
color: goldenrod
|
||||
offset: [0.8, -0.3]
|
||||
rotation: 36
|
||||
- name: effects/uni-white
|
||||
source: img
|
||||
color: white
|
||||
- source: xml
|
||||
flip_x: true
|
||||
scale: 0.9
|
||||
- name: items/starbucks
|
||||
source: img
|
||||
scale: 0.3
|
||||
rotation: -10
|
||||
offset: [-0.3, -0.2]
|
||||
- name: gi/hand-ok
|
||||
source: svg
|
||||
flip_x: true
|
||||
scale: 0.3
|
||||
rotation: 120
|
||||
color: lightgray
|
||||
offset: [0.43, 0.08]
|
||||
</yaml_data>
|
||||
<name>Pop Song</name>
|
||||
<image>img:piuy/sing</image>
|
||||
<playcost>2 ACT,
|
||||
not silenced,
|
||||
Encore! card per turn</playcost>
|
||||
<cp>81</cp>
|
||||
Encore! card per turn,
|
||||
MOV</playcost>
|
||||
<cp>122</cp>
|
||||
<duration>1 + discarded on death</duration>
|
||||
<power>(0 to 4) + TEC</power>
|
||||
<power>(2 to 6) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<description>All units (friends and foes) gain +1 MOV per 3 popularity tokens on the song.
|
||||
|
||||
+2 power to this ability if you have the **High Ground** or **Flying** status effect.
|
||||
The song starts at 2 popularity tokens.\
|
||||
+2 POWER if *flying* or *High Ground*
|
||||
|
||||
When you play this song with another of your songs in play, you transition from your old song to your new song.
|
||||
|
||||
Your song does not affect non-sentient units</description>
|
||||
Your song does not affect non-sentient units\
|
||||
This may stack on existing performances.</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Song"/>
|
||||
<component x="4" y="3" db_entry="🎺 Staged Song"/>
|
||||
<component x="5" y="3" db_entry="🎺 Staged Song"/>
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
|
@ -35,6 +70,7 @@ Your song does not affect non-sentient units</description>
|
|||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Monster Mash"/>
|
||||
<component x="2" y="4" db_entry="🎺 Pop Song"/>
|
||||
<component x="5" y="3" db_entry="🎺 Encore!"/>
|
||||
<component x="6" y="3" db_entry="🎺 Encore!"/>
|
||||
<component x="4" y="3" db_entry="🎺 Put effort into it"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
77
cards/75.xml
77
cards/75.xml
|
@ -1,32 +1,62 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: piuy/hapa
|
||||
scale: 0.8
|
||||
- name: bg/flowers
|
||||
source: img
|
||||
offset:
|
||||
- -0.25
|
||||
- 0
|
||||
- name: piuy/hapi
|
||||
scale: 2
|
||||
- name: gi/glass-heart
|
||||
source: svg
|
||||
offset: [-0.0, -0.15]
|
||||
scale: 0.75
|
||||
color: steelblue
|
||||
- name: gi/glass-heart
|
||||
source: svg
|
||||
offset: [-0.0, -0.16]
|
||||
scale: 0.7
|
||||
color: MediumOrchid
|
||||
- name: gi/heart-inside
|
||||
source: svg
|
||||
offset: [0.38, 0.1]
|
||||
color: navy
|
||||
rotation: 10
|
||||
scale: 0.8
|
||||
offset:
|
||||
- 0.25
|
||||
- 0
|
||||
- name: effects/uni-white
|
||||
source: img
|
||||
</yaml_data>
|
||||
<name>Repotoire: Entralling</name>
|
||||
<playcost></playcost>
|
||||
<cp>25</cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<range></range>
|
||||
<description>One of your song or dance abilities in play gains +1 duration tokens.</description>
|
||||
<artistic_value>2</artistic_value>
|
||||
scale: 0.8
|
||||
color: purple
|
||||
offset: [-0.37, 0.16]
|
||||
- source: xml
|
||||
scale: 0.6
|
||||
offset: [-0.37, 0.1]
|
||||
|
||||
</yaml_data>
|
||||
<name>Love Song</name>
|
||||
<image>img:piuy/sing</image>
|
||||
<playcost>2 ACT,
|
||||
not silenced,
|
||||
Encore! card per turn,
|
||||
MOV</playcost>
|
||||
<cp>98</cp>
|
||||
<duration>1 + discarded on death</duration>
|
||||
<power>(2 to 6) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<description>All units (friends and foes) restore 1
|
||||
HP per popularity token on the song at the start of their turn.
|
||||
|
||||
The song starts at 2 popularity tokens.\
|
||||
+2 POWER if *flying* or *High Ground*
|
||||
|
||||
Your song does not affect non-sentient units\
|
||||
This may stack on existing performances.
|
||||
</description>
|
||||
<mastery>-1</mastery>
|
||||
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Song"/>
|
||||
<component x="5" y="3" db_entry="🎺 Staged Song"/>
|
||||
<component x="2" y="4" db_entry="🎺 Love Song"/>
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
|
@ -35,8 +65,9 @@ figures:
|
|||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="2" db_entry="🎺 Repertoire Card: Enthralling"/>
|
||||
<component x="3" y="3" db_entry="🎺 Monster Mash"/>
|
||||
<component x="6" y="3" db_entry="🎺 Encore!"/>
|
||||
<component x="4" y="3" db_entry="🎺 Put effort into it"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
64
cards/76.xml
64
cards/76.xml
|
@ -1,28 +1,48 @@
|
|||
<ability_card>
|
||||
|
||||
<yaml_data>
|
||||
style: repertoire
|
||||
figures:
|
||||
- name: google/android-4.3/pile-of-poo
|
||||
- name: "https://comps.canstockphoto.com/light-rays-neon-radial-lines-background-vector-clipart_csp58176606.jpg"
|
||||
source: url
|
||||
scale: 2
|
||||
opacity: 0.8
|
||||
- name: clip/falling-money-2
|
||||
source: img
|
||||
offset: [0.0, -0.5]
|
||||
scale: 1.6
|
||||
color: "#00ff40"
|
||||
- name: clip/falling-money-2
|
||||
source: img
|
||||
offset: [0.0, -0.5]
|
||||
scale: 1.6
|
||||
opacity: 0.95
|
||||
- name: piuy/twirl
|
||||
source: img
|
||||
offset: [0.0, 0.1]
|
||||
scale: 1.1
|
||||
- name: softbank/trophy
|
||||
source: emoji
|
||||
color: gray
|
||||
scale: 0.23
|
||||
rotation: 30
|
||||
offset: [-0.2, 0.2]
|
||||
</yaml_data>
|
||||
<name>Repotoire: Filler</name>
|
||||
<image>img:piuy/hapo</image>
|
||||
<playcost></playcost>
|
||||
<cp>1</cp>
|
||||
<duration></duration>
|
||||
<power></power>
|
||||
<difficulty></difficulty>
|
||||
<symbol></symbol>
|
||||
<range></range>
|
||||
<description>This card does nothing.
|
||||
offset: [0.58, 0.23]
|
||||
scale: 0.5
|
||||
rotation: 20
|
||||
- name: softbank/trophy
|
||||
source: emoji
|
||||
offset: [-0.58, 0.23]
|
||||
scale: 0.5
|
||||
rotation: -20
|
||||
|
||||
*Bummer.*</description>
|
||||
<artistic_value>-1</artistic_value>
|
||||
</yaml_data>
|
||||
<playcost>2 MOV</playcost>
|
||||
<cp>23</cp>
|
||||
<duration>per 3 power of this ability (rounded down) + Discarded on death</duration>
|
||||
<power>0 or + (2 to 5) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<name>Victory Dance</name>
|
||||
<description>If this is active at the end of combat, you (and only you) gain +10% CP from the encounter.
|
||||
|
||||
+3 power to this ability if you have the **High Ground** or **Flying** status effect when playing this card.</description>
|
||||
<range></range>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
|
@ -34,6 +54,10 @@ figures:
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Repertoire Card: Filler"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Dance"/>
|
||||
<component x="3" y="3" db_entry="🎺 Staged Dance"/>
|
||||
<component x="2" y="4" db_entry="🎺 Victory Dance"/>
|
||||
|
||||
</ability_card>
|
||||
|
||||
|
|
61
cards/77.xml
61
cards/77.xml
|
@ -2,30 +2,47 @@
|
|||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- source: img
|
||||
name: bg/royal3
|
||||
scale: 3
|
||||
color: teal
|
||||
opacity: 0.1
|
||||
- source: img
|
||||
name: bg/royal3
|
||||
scale: 3
|
||||
opacity: 0.2
|
||||
- name: gi/abstract-037
|
||||
source: svg
|
||||
rotation: 90
|
||||
color: "#aaf"
|
||||
scale: [1, 1.5]
|
||||
- source: xml
|
||||
scale: 0.7
|
||||
rotation: -10
|
||||
- name: gi/european-flag
|
||||
source: svg
|
||||
color: PaleVioletRed
|
||||
scale: 1.3
|
||||
</yaml_data>
|
||||
<name>Love Song</name>
|
||||
<image>img:piuy/sing</image>
|
||||
<playcost>2 ACT,
|
||||
not silenced,
|
||||
Encore! card per turn</playcost>
|
||||
<cp>65</cp>
|
||||
<duration>1 + discarded on death</duration>
|
||||
<power>(0 to 4) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<description>All units (friends and foes) restore 1
|
||||
HP per popularity token on the song at the start of their turn.
|
||||
<playcost></playcost>
|
||||
<cp>10</cp>
|
||||
<duration>Permanent + discarded on death</duration>
|
||||
<power>2 MIND</power>
|
||||
<difficulty></difficulty>
|
||||
<symbol>🔮</symbol>
|
||||
<name>Mana Shield</name>
|
||||
<description>*Starts in your play area rather than your deck*
|
||||
|
||||
+2 power to this ability if you have the **High Ground** or **Flying** status effect.
|
||||
Max capacity is POWER.
|
||||
Cannot be restored by healing.
|
||||
|
||||
When you play this song with another of your songs in play, you transition from your old song to your new song.
|
||||
**Defensive Trigger: take damage**
|
||||
* You cannot activate this if affected by the topple status effect.
|
||||
* You cannot activate this after playing other defensive triggers, per damage source.
|
||||
* Remove 1 Mana Shield token to decrease the incoming damage by 1. Repeat as needed.</description>
|
||||
<image>img:piuy/color</image>
|
||||
<range></range>
|
||||
|
||||
Your song does not affect non-sentient units</description>
|
||||
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Song"/>
|
||||
<component x="4" y="3" db_entry="🎺 Staged Song"/>
|
||||
<component x="2" y="4" db_entry="🎺 Love Song"/>
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
|
@ -34,8 +51,8 @@ Your song does not affect non-sentient units</description>
|
|||
<component x="11" y="3" db_entry="🧩 Power"/>
|
||||
<component x="11" y="4" db_entry="🧩 Difficulty"/>
|
||||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Monster Mash"/>
|
||||
<component x="5" y="3" db_entry="🎺 Encore!"/>
|
||||
<component x="2" y="2" db_entry="🔮 Mana Shield"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
65
cards/78.xml
65
cards/78.xml
|
@ -2,47 +2,32 @@
|
|||
|
||||
<yaml_data>
|
||||
figures:
|
||||
- name: "https://comps.canstockphoto.com/light-rays-neon-radial-lines-background-vector-clipart_csp58176606.jpg"
|
||||
source: url
|
||||
- name: bg/flowers
|
||||
source: img
|
||||
scale: 2
|
||||
opacity: 0.8
|
||||
- name: clip/falling-money-2
|
||||
opacity: 0.4
|
||||
- name: piuy/hi
|
||||
source: img
|
||||
offset: [0.0, -0.5]
|
||||
scale: 1.6
|
||||
color: "#00ff40"
|
||||
- name: clip/falling-money-2
|
||||
source: img
|
||||
offset: [0.0, -0.5]
|
||||
scale: 1.6
|
||||
opacity: 0.95
|
||||
- name: piuy/twirl
|
||||
source: img
|
||||
offset: [0.0, 0.1]
|
||||
scale: 1.1
|
||||
- name: softbank/trophy
|
||||
source: emoji
|
||||
offset: [0.58, 0.23]
|
||||
scale: 0.5
|
||||
rotation: 20
|
||||
- name: softbank/trophy
|
||||
source: emoji
|
||||
offset: [-0.58, 0.23]
|
||||
scale: 0.5
|
||||
rotation: -20
|
||||
|
||||
</yaml_data>
|
||||
<playcost>2 MOV</playcost>
|
||||
<cp>23</cp>
|
||||
<duration>per 3 power of this ability (rounded down) + Discarded on death</duration>
|
||||
<power>0 or + (2 to 5) + TEC</power>
|
||||
<difficulty>1</difficulty>
|
||||
<symbol>🎲🎺</symbol>
|
||||
<name>Victory Dance</name>
|
||||
<description>If this is active at the end of combat, you (and only you) gain +10% CP from the encounter.
|
||||
|
||||
+3 power to this ability if you have the **High Ground** or **Flying** status effect when playing this card.</description>
|
||||
<name>Piuy!</name>
|
||||
<cp>20</cp>
|
||||
<symbol>⚔️🎲</symbol>
|
||||
<duration>Permanent + discarded on death</duration>
|
||||
<playcost>0 ACT</playcost>
|
||||
<power>3 BODY + ⚔️ LevelUp Benefit</power>
|
||||
<difficulty></difficulty>
|
||||
<range></range>
|
||||
<description>| | | | | | | | |
|
||||
| --------:| ---:| --- | ------------:| ---:| --- | ---:| ---:|
|
||||
| **ATT**: | 2 | | | **BODY**: | 4 | | | ⚔️: | lv1 |
|
||||
| **MAG**: | 3 | | | **MIND**: | 5 | | | 🔮: | lv1 |
|
||||
| **TEC**: | 3 | | | **CUNNING**: | 5 | | | 🎲: | lv3 |
|
||||
| **ACT**: | 5 | | | **MOV**: | 5 | | | 🎺: | lv5 |
|
||||
| **HP**: | 12 | | | 🌊: | lv1 | | | 🌪: | lv1 |
|
||||
| **SP**: | ∞ |
|
||||
|
||||
|
||||
</description>
|
||||
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
|
@ -54,9 +39,7 @@ figures:
|
|||
<component x="12" y="3" db_entry="🧩 Symbols"/>
|
||||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="2" y="2" db_entry="🎲 Mastery"/>
|
||||
<component x="2" y="3" db_entry="🎺 Dance"/>
|
||||
<component x="3" y="3" db_entry="🎺 Staged Dance"/>
|
||||
<component x="2" y="4" db_entry="🎺 Victory Dance"/>
|
||||
<component x="3" y="2" db_entry="⚔️ Hit Points"/>
|
||||
<component x="3" y="3" db_entry="🎲 Skill Points"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% set xml_image_note_done = [1] %}{# why must nunjucks suck so much? #}
|
||||
{% set xml_image_not_done = [1] %}{# why must nunjucks suck so much? #}
|
||||
|
||||
{% macro figure_layer(figure) %}
|
||||
{% set figure_style %}{% filter cull_whitespace %}
|
||||
|
@ -31,7 +31,7 @@
|
|||
{% if figure.source == "xml" %}
|
||||
{% set figure_name = xml.image if xml.image | startswith("http") else xml.image | split(":") | tail | join(":") %}
|
||||
{% set figure_source = "url" if xml.image | startswith("http") else xml.image | split(":") | first %}
|
||||
{% if xml_image_note_done.clear() %}{% endif %}
|
||||
{% if xml_image_not_done.pop() %}{% endif %}
|
||||
{% else %}
|
||||
{% set figure_name = figure.name %}
|
||||
{% set figure_source = figure.source %}
|
||||
|
@ -98,7 +98,7 @@
|
|||
{% for figure in yaml.figures or [] %}
|
||||
{{ figure_layer(figure) }}
|
||||
{% endfor %}
|
||||
{% if xml.image and xml_image_note_done %}
|
||||
{% if xml.image and xml_image_not_done | length %}
|
||||
{{ figure_layer({
|
||||
'name': xml.image if xml.image | startswith("http") else xml.image | split(":") | tail | join(":"),
|
||||
'source': "url" if xml.image | startswith("http") else xml.image | split(":") | first
|
||||
|
@ -167,10 +167,10 @@
|
|||
{% endif %}
|
||||
|
||||
{% if yaml.description %}
|
||||
<center>{{ yaml.description | markdown | safe }}</center>
|
||||
<div class="markdown">{{ yaml.description | markdown | safe }}</div>
|
||||
{% endif %}
|
||||
{% if xml.description %}
|
||||
<center>{{ xml.description | markdown | safe }}</center>
|
||||
<div class="markdown">{{ xml.description | markdown | safe }}</div>
|
||||
{% endif %}
|
||||
|
||||
{% if yaml.steps %}
|
||||
|
@ -180,6 +180,15 @@
|
|||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
<div class="bottom" style="text-align: center; font-size:1.6em;">
|
||||
{% for component in xml.components %}
|
||||
{% if component["@db_entry"] | endswith("Mastery") %}
|
||||
❏ ❏ ❏ ❏ ❏
|
||||
❏ ❏ ❏ ❏ ❏ <br>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
3
style.js
3
style.js
|
@ -49,6 +49,9 @@ env.addFilter('all', function(iterable) {
|
|||
env.addFilter('startswith', function(string, match) {
|
||||
return string.slice(0, match.length) === match;
|
||||
});
|
||||
env.addFilter('endswith', function(string, match) {
|
||||
return string.endsWith(match);
|
||||
});
|
||||
env.addFilter('tail', function(sequence) {
|
||||
return sequence.slice(1);
|
||||
});
|
||||
|
|
78
style.scss
78
style.scss
|
@ -2,14 +2,32 @@
|
|||
--figure-size: 0.9in;
|
||||
--figure-size: 1.35in;
|
||||
--figure-size: 1.5in;
|
||||
--color-border: MidnightBlue;
|
||||
--color-bg-figure: white;
|
||||
|
||||
--color-bg: PaleTurquoise; // PaleTurquoise;
|
||||
--color-bg-body: LightCyan; // PaleTurquoise;
|
||||
--color-bg-frame: PaleTurquoise; // LightSkyBlue;
|
||||
--color-bg-costbar: SandyBrown; // DarkOrange;
|
||||
|
||||
--color-text-title: MidnightBlue;
|
||||
--color-text-body: black;
|
||||
--color-text-costbar: white;
|
||||
--color-shadow-costbar: 0.08em 0 0.05em Maroon,
|
||||
-0.08em 0 0.05em Maroon,
|
||||
0 0.08em 0.05em Maroon,
|
||||
0 -0.08em 0.05em Maroon;
|
||||
--figure-color: #555;
|
||||
|
||||
width: 2.5in;
|
||||
height: 3.5in;
|
||||
box-sizing: border-box;
|
||||
border-radius: 0mm;
|
||||
border-width: 0.3mm;
|
||||
border-color: black;
|
||||
border-color: var(--color-border);
|
||||
|
||||
border-style: solid;
|
||||
background-color: #fff;
|
||||
background-color: var(--color-bg);
|
||||
overflow: hidden;
|
||||
|
||||
font-size: 2.5mm;
|
||||
|
@ -25,35 +43,38 @@
|
|||
"description description";
|
||||
|
||||
header {
|
||||
font-family: montserrat, sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
|
||||
grid-area: title;
|
||||
font-size: 1.8em;
|
||||
line-height: 1em;
|
||||
margin-left: -1em;
|
||||
border-radius: 1mm 1mm 0 0;
|
||||
text-align: center;
|
||||
background-color: #ddd;
|
||||
background-color: var(--color-bg-frame);
|
||||
border-radius: 0;
|
||||
color: #333;
|
||||
color: var(--color-text-title);
|
||||
}
|
||||
.symbol {
|
||||
grid-area: symbol;
|
||||
text-align: center;
|
||||
background-color: #ddd;
|
||||
color: #333;
|
||||
background-color: var(--color-bg-frame);
|
||||
color: var(--color-text-title);
|
||||
padding-top: 0.6mm;
|
||||
padding-left: 0.8mm;
|
||||
white-space: nowrap;
|
||||
}
|
||||
figure {
|
||||
grid-area: figure;
|
||||
background-color: #fff;
|
||||
background-color: var(--color-bg-figure);
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
border-radius: 0;
|
||||
margin: 0;
|
||||
|
||||
.layer {
|
||||
--figure-color: #555;
|
||||
color: var(--figure-color);
|
||||
position: absolute;
|
||||
top:0;right:0;left:0;bottom:0;
|
||||
|
@ -90,7 +111,7 @@
|
|||
.playcosts {
|
||||
grid-area: playcosts;
|
||||
border-left: solid 0.3mm #ccc;
|
||||
background-color: #ddd;
|
||||
background-color: var(--color-bg-frame);
|
||||
color: #444 ;
|
||||
padding: 0.5mm;
|
||||
ul {
|
||||
|
@ -106,8 +127,9 @@
|
|||
.costbar {
|
||||
grid-area: costbar;
|
||||
border-radius: 0;
|
||||
background-color: #555;
|
||||
color: white;
|
||||
background-color: var(--color-bg-costbar);
|
||||
color: var(--color-text-costbar);
|
||||
text-shadow: var(--color-shadow-costbar);
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
|
@ -119,8 +141,8 @@
|
|||
|
||||
section{
|
||||
font-size: 0.8em;
|
||||
margin-left: 0.5mm;
|
||||
margin-right: 0.5mm;
|
||||
margin-left: 0.8mm;
|
||||
margin-right: 0.8mm;
|
||||
line-height: 0.9em;
|
||||
}
|
||||
}
|
||||
|
@ -128,8 +150,29 @@
|
|||
grid-area: description;
|
||||
margin: 1mm;
|
||||
border-radius: 1mm;
|
||||
background-color: #ddd;
|
||||
background-color: var(--color-bg-body);
|
||||
color: var(--color-text-body);
|
||||
font-size: 0.9em;
|
||||
position: relative;
|
||||
|
||||
.markdown {
|
||||
text-align: center;
|
||||
|
||||
table {
|
||||
margin-top:-0.3em;
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
th, td {
|
||||
font-size: 2.5mm; /* user agent style override */
|
||||
}
|
||||
}
|
||||
p + table {
|
||||
margin-top:-1em;
|
||||
}
|
||||
li {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
padding-left: 1.5em;
|
||||
|
@ -137,10 +180,17 @@
|
|||
|
||||
}
|
||||
}
|
||||
.bottom {
|
||||
position: absolute;
|
||||
bottom:0;
|
||||
left:0;
|
||||
right:0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.fjomp_card.item,
|
||||
.fjomp_card.figure,
|
||||
.fjomp_card.repertoire {
|
||||
--figure-size: 2.4in;
|
||||
|
|
36
sync.py
36
sync.py
|
@ -9,8 +9,10 @@ import requests.packages.urllib3.util.connection as urllib3_cn
|
|||
import socket
|
||||
import xmltodict
|
||||
|
||||
MY_COLLECTION = "Fjompens fjomperi"
|
||||
MY_ID = "26"
|
||||
MY_COLLECTIONS = {
|
||||
"26" : "Fjompens fjomperi",
|
||||
"48" : "Fjompens Fjomperi - not in deck",
|
||||
}
|
||||
AUTH = None
|
||||
CARD_STYLE = 6 # Fjompens's card style
|
||||
|
||||
|
@ -22,11 +24,11 @@ CARD_STYLE = 6 # Fjompens's card style
|
|||
## return family
|
||||
##urllib3_cn.allowed_gai_family = allowed_gai_family
|
||||
|
||||
def get_card_ids():
|
||||
def get_card_ids(): # generator
|
||||
resp = requests.get("https://www.pvv.ntnu.no/~andreasd/cards/command.php?cmd=get_all_cards", auth=AUTH)
|
||||
for collection in resp.json():
|
||||
if collection["name"] == MY_COLLECTION and collection["id"] == MY_ID:
|
||||
return collection["cards"]
|
||||
if MY_COLLECTIONS.get(collection["id"]) == collection["name"]:
|
||||
yield from collection["cards"]
|
||||
|
||||
def get_card_xml(card_id:int):
|
||||
resp = requests.get(f"https://www.pvv.ntnu.no/~andreasd/cards/command.php?cmd=get_card_xml&id={card_id}", auth=AUTH)
|
||||
|
@ -66,10 +68,10 @@ def list_collections():
|
|||
resp = requests.get("https://www.pvv.ntnu.no/~andreasd/cards/command.php?cmd=get_all_cards", auth=AUTH)
|
||||
print("== All collections: ==\n")
|
||||
for i in resp.json():
|
||||
print("id: ", i["id"])
|
||||
print("name: ", i["name"])
|
||||
print("collection_id: ", i["id"])
|
||||
print("collection_name: ", i["name"])
|
||||
print("cards: ", i["cards"])
|
||||
print("card styles: ", sorted(set(map(int, e.map(get_card_style_id,i["cards"])))))
|
||||
print("card styles: ", sorted(set(map(int, e.map(get_card_style_id, i["cards"])))))
|
||||
print()
|
||||
|
||||
def pull_all():
|
||||
|
@ -88,14 +90,14 @@ def pull_all():
|
|||
except:
|
||||
xml = None
|
||||
|
||||
if xml and "ability_card" in xml:
|
||||
if "yaml_data" in xml["ability_card"]:
|
||||
if len(xml["ability_card"].keys()) == 1:
|
||||
yaml_data = xml["ability_card"]["yaml_data"]
|
||||
with open(f"cards/{card_id}.yaml", "w") as f:
|
||||
f.write(yaml_data + "\n")
|
||||
print(f"./cards/{card_id}.yaml written!")
|
||||
continue
|
||||
#if xml and "ability_card" in xml:
|
||||
# if "yaml_data" in xml["ability_card"]:
|
||||
# if len(xml["ability_card"].keys()) == 1:
|
||||
# yaml_data = xml["ability_card"]["yaml_data"]
|
||||
# with open(f"cards/{card_id}.yaml", "w") as f:
|
||||
# f.write(yaml_data + "\n")
|
||||
# print(f"./cards/{card_id}.yaml written!")
|
||||
# continue
|
||||
ftype = "xml" if data.strip() else "yaml"
|
||||
with open(f"cards/{card_id}.{ftype}", "w") as f:
|
||||
f.write(data + "\n")
|
||||
|
@ -105,7 +107,7 @@ def push_all():
|
|||
existing_card_ids = get_card_ids()
|
||||
|
||||
for card_id in existing_card_ids:
|
||||
if os.path.isfile(f"cards/{card_id}.yaml"):
|
||||
if os.path.isfile(f"cards/{card_id}.yaml"): # deprecated, will no be written anymore
|
||||
fname = f"cards/{card_id}.yaml"
|
||||
with open(fname) as f:
|
||||
yaml_data = f.read()
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<style>
|
||||
|
||||
@page
|
||||
{
|
||||
size: auto;
|
||||
margin: 0.5cm;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: white;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-print-color-adjust: exact;
|
||||
}
|
||||
|
||||
.card_wrapper {
|
||||
width: 2.5in;
|
||||
height: 3.5in;
|
||||
float: left;
|
||||
border: 1px solid transparent;
|
||||
page-break-inside: avoid;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.card_cover,
|
||||
iframe {
|
||||
position: absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
width:2.5in;
|
||||
height:3.5in;
|
||||
margin: none;
|
||||
padding: none;
|
||||
border: none;
|
||||
}
|
||||
.card_cover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<div>
|
||||
{% for cardname in cards %}
|
||||
<div class="card_wrapper">
|
||||
<iframe src="{{ cardname }}" scrolling=no></iframe>
|
||||
<div class="card_cover" onclick='window.location = {{cardname|tojson}}'></div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
|
@ -1,5 +0,0 @@
|
|||
<ability_card><yaml_data>
|
||||
{{ data.strip() }}
|
||||
</yaml_data>
|
||||
{{ xml_data }}
|
||||
</ability_card>
|
|
@ -1,32 +1,5 @@
|
|||
{% set async = "media=\"none\" onload=\"if(media!='all')media='all'\"" -%}
|
||||
|
||||
|
||||
{% if is_local %}
|
||||
{#
|
||||
<meta http-equiv="refresh" content="1.0">
|
||||
<script type="text/javascript" src="http://livejs.com/live.js"></script>
|
||||
#}
|
||||
<script type="text/javascript">
|
||||
|
||||
var selected = 0;
|
||||
document.onkeydown = function(e) {
|
||||
if (e.which == 39) {
|
||||
if (document.getElementById("card_container_" + (selected+1))) {
|
||||
selected += 1;
|
||||
}
|
||||
document.getElementById("card_container_" + selected).scrollIntoView();
|
||||
}
|
||||
if (e.which == 37) {
|
||||
if (selected > 0) {
|
||||
selected -= 1;
|
||||
}
|
||||
document.getElementById("card_container_" + selected).scrollIntoView();
|
||||
}
|
||||
};
|
||||
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/3.13.1/js-yaml.min.js"></script>
|
||||
<script type="text/javascript" src="https://mozilla.github.io/nunjucks/files/nunjucks.min.js"></script>
|
||||
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/markdown-it/9.1.0/markdown-it.min.js"></script>
|
||||
|
@ -39,8 +12,4 @@
|
|||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" {{async}}/>
|
||||
<link rel="stylesheet" href="https://cdn.linearicons.com/free/1.0.0/icon-font.min.css" {{async}}/>
|
||||
|
||||
{% if css_data %}
|
||||
<style type="text/css">
|
||||
{{ css_data.strip() }}
|
||||
</style>
|
||||
{% endif %}
|
||||
<link rel="stylesheet" href='https://fonts.googleapis.com/css?family=Montserrat'>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
</head>
|
||||
{% endfilter %}
|
||||
|
||||
<body content_type="html5">
|
||||
<body content_type="html5" style="margin:0px;">
|
||||
|
||||
<style type="text/css">
|
||||
{{ css_data.strip() }}
|
||||
|
|
|
@ -1,5 +1,37 @@
|
|||
<ability_card><yaml_data>
|
||||
|
||||
name: Hit enemy
|
||||
#style: item
|
||||
tags:
|
||||
- combat
|
||||
playcost:
|
||||
- 'Element: fire'
|
||||
- 'BODY+5 POWER'
|
||||
#flavor: Enemies sure are squishy
|
||||
#description: Perform an attack
|
||||
#steps:
|
||||
#- Do A
|
||||
#- Do A
|
||||
#- Do A
|
||||
#- Then B
|
||||
figures:
|
||||
- name: piuy/chicken
|
||||
source: img
|
||||
scale: 2
|
||||
notes: ''
|
||||
|
||||
</yaml_data>
|
||||
|
||||
<name>Mega Fireball</name>
|
||||
<description>Attack an enemy in range 5.
|
||||
<description>
|
||||
| | |
|
||||
| ----:|----|
|
||||
| asd | asd |
|
||||
| asd | asd |
|
||||
|
||||
# asd
|
||||
|
||||
Attack an enemy in range 5.
|
||||
|
||||
Roll MAG hit dice. Deal that amount of FIRE damage to the target.</description>
|
||||
<image>https://freepngimg.com/download/fireball/27487-2-fireball-clipart.png</image>
|
||||
|
@ -15,6 +47,7 @@ Not Silenced,
|
|||
Equipment has Catalyst property</playcost>
|
||||
<artistic_value>-1</artistic_value>
|
||||
|
||||
<component x="11" y="3" db_entry="🧩 Mastery"/>
|
||||
<component x="7" y="1" db_entry="🧩 Set Ability Name"/>
|
||||
<component x="9" y="1" db_entry="🧩 Set Image"/>
|
||||
<component x="11" y="1" db_entry="🧩 Play Cost"/>
|
||||
|
@ -26,3 +59,5 @@ Equipment has Catalyst property</playcost>
|
|||
<component x="12" y="5" db_entry="🧩 Range"/>
|
||||
<component x="8" y="2" db_entry="🧩 Set Description"/>
|
||||
<component x="3" y="3" db_entry="🎺 Repertoire Card: Filler"/>
|
||||
|
||||
</ability_card>
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
name: Hit enemy
|
||||
#style: item
|
||||
tags:
|
||||
- combat
|
||||
playcost:
|
||||
- 'Element: fire'
|
||||
- BODY+5 POWER
|
||||
#flavor: Enemies sure are squishy
|
||||
description: Perform an attack
|
||||
#steps:
|
||||
#- Do A
|
||||
#- Do A
|
||||
#- Do A
|
||||
#- Then B
|
||||
figures:
|
||||
- name: piuy/chicken
|
||||
source: img
|
||||
scale: 2
|
||||
notes: ''
|
Loading…
Reference in New Issue