Compare commits

..

4 commits

9 changed files with 86 additions and 82 deletions

View file

@ -1,2 +1,18 @@
# DonsolJavascript
Javascript version of Donsol
### Original authors
The original Javascript+Electron version of Donsol was created by Hundred Rabbits.
### About this branch
This branch ("web") will be used for development on the web-based version of Donsol, which in turn is heavily based on the main branch, stripping out parts related to Electron and NodeJS.
None of this is official; it's a passion project, so please do not contact Hundred Rabbits regarding issues with this web version of the game.
### Limitations
In the project's current state, you can play the base game of Donsol, with some limitations.
The following do not currently work:
* ~~Card faces do not render properly, as these were previously loaded with NodeJS functions that aren't available to use in a pure browser-based application (as far as I'm aware). I have an idea on how to accomplish this.~~ Fixed in commit ff787f7
* Aspects of the game that relied on being selected from a menu in the Electron version currently have no way of being toggled. These include things like difficulty selection and themeing support.
### Contributing
If you wish to contribute to the project, please follow the standard practice of forking this repository and submitting a pull request.

View file

@ -44,9 +44,6 @@
</div>
</div>
<script type="text/javascript">
const {dialog,app} = require('electron').remote;
const fs = require('fs');
let donsol = new Donsol();
donsol.controller.add("default","*","About",() => { require('electron').shell.openExternal('https://github.com/hundredrabbits/Donsol'); },"CmdOrCtrl+,");
@ -76,8 +73,6 @@
donsol.controller.add("default","Theme","Reset Theme",() => { donsol.theme.reset(); },"CmdOrCtrl+Shift+Backspace")
donsol.controller.add("default","Theme","Download Themes..",() => { require('electron').shell.openExternal('https://github.com/hundredrabbits/Themes'); })
donsol.controller.commit();
donsol.install(document.body)
donsol.start();
</script>

View file

@ -1,6 +1,6 @@
body { background:black; font-family: 'input_mono_regular',monospace; min-width:750px; overflow-y: hidden; user-select: none; cursor: default; -webkit-app-region: drag; padding:30px;}
body { background:black; font-family: 'input_mono_regular',monospace; overflow-y: hidden; user-select: none; cursor: default; -webkit-app-region: drag; padding:30px;}
#wrapper { display: block;max-width: 900px; height: calc(25vw * 1.25 + 90px);max-height:400px;margin:0px auto;position: relative;width:100%; -webkit-app-region: drag;}
#wrapper { display: block;max-width: 900px; height: calc(25vw * 1.25 + 90px);max-height:400px;margin:0px auto;position: relative;width:100%; min-width: 430px; -webkit-app-region: drag;}
#player { display: block; font-size:12px; height:30px; line-height:20px; max-width:890px; -webkit-user-select: none;-webkit-app-region: drag; position: fixed; bottom:30px; width:calc(100% - 60px);}
#player > * { vertical-align: top }
@ -17,7 +17,7 @@ body { background:black; font-family: 'input_mono_regular',monospace; min-width:
#player.locked a.escape { display:none;}
#board, #table { display:block; position: absolute; width: calc(100% + 15px)}
#board card, #table card { display: inline-block !important;height: calc(25vw * 1.25);max-height:300px;max-width:200px;width: calc(25% - 15px);margin-right: 15px;border-radius: 7px; position:relative; overflow:hidden;min-height: 300px;}
#board card, #table card { display: inline-block !important;height: calc(25vw * 1.25);max-height:300px;max-width:200px;width: calc(25% - 15px);margin-right: 15px;border-radius: 7px; position:relative; overflow:hidden;min-height: 300px; min-width:200px;}
#board card { top:10px; opacity:0.01; z-index:900; transition: opacity 250ms, top 150ms }
#board card:hover { cursor:pointer; top:5px !important;}
#board card .face { display:block;width: 100%;height: calc(100% - 5px);border-radius: 7px;}
@ -30,8 +30,8 @@ body { background:black; font-family: 'input_mono_regular',monospace; min-width:
#table card { }
#table card .shortcut { position:absolute; right:20px; bottom:15px; color:#555;}
#board card:nth-child(2), #table card:nth-child(2) { position:absolute; left:25%;}
#board card:nth-child(3), #table card:nth-child(3) { position:absolute; left:50%;}
#board card:nth-child(4), #table card:nth-child(4) { position:absolute; left:75%;}
#board card:nth-child(2), #table card:nth-child(2) { position:relative;}
#board card:nth-child(3), #table card:nth-child(3) { position:relative;}
#board card:nth-child(4), #table card:nth-child(4) { position:relative;}
#difficulty:hover { text-decoration: underline; cursor: pointer; }
#difficulty:hover { text-decoration: underline; cursor: pointer; }

View file

@ -1,10 +1,11 @@
'use strict'
function Card (sym, value, type, name = 'Unknown') {
function Card (sym, value, type, name = 'Unknown', svg = '') {
this.symbol = sym
this.value = value
this.type = type
this.name = name
this.svg = svg
this.element = null
this.is_flipped = false
@ -26,7 +27,7 @@ function Card (sym, value, type, name = 'Unknown') {
const graphic = document.createElement('div')
graphic.className = 'graphic'
graphic.innerHTML = require('fs').readFileSync(`${__dirname}/media/${this.type}/${this.value}.svg`)
graphic.innerHTML = this.svg
face.appendChild(graphic)
// Name

View file

@ -1,7 +1,7 @@
'use strict'
function Card_Monster (sym, value, type, name = 'Unknown') {
Card.call(this, sym, value, type, name)
function Card_Monster (sym, value, type, name = 'Unknown', svg = '') {
Card.call(this, sym, value, type, name, svg)
this.touch = function () {
if (this.is_flipped) { console.log('Card is already flipped'); return }

View file

@ -1,7 +1,7 @@
'use strict'
function Card_Potion (sym, value, type, name = 'Unknown') {
Card.call(this, sym, value, type, name)
function Card_Potion (sym, value, type, name = 'Unknown', svg = '') {
Card.call(this, sym, value, type, name, svg)
this.touch = function () {
if (this.is_flipped) { console.log('Card is already flipped'); return }

View file

@ -1,7 +1,7 @@
'use strict'
function Card_Shield (sym, value, type, name = 'Unknown') {
Card.call(this, sym, value, type, name)
function Card_Shield (sym, value, type, name = 'Unknown', svg = '') {
Card.call(this, sym, value, type, name, svg)
this.touch = function () {
if (this.is_flipped == true) { console.log('Card is already flipped'); return }

View file

@ -2,60 +2,60 @@
function Deck () {
this.cards = [
new Card_Potion('A', 11, HEART, 'White Mage'),
new Card_Potion('2', 2, HEART, 'Small Potion'),
new Card_Potion('3', 3, HEART, 'Small Potion'),
new Card_Potion('4', 4, HEART, 'Medium Potion'),
new Card_Potion('5', 5, HEART, 'Medium Potion'),
new Card_Potion('6', 6, HEART, 'Medium Potion'),
new Card_Potion('7', 7, HEART, 'Medium Potion'),
new Card_Potion('8', 8, HEART, 'Medium Potion'),
new Card_Potion('9', 9, HEART, 'Large Potion'),
new Card_Potion('10', 10, HEART, 'Large Potion'),
new Card_Potion('V', 11, HEART, 'White Mage'),
new Card_Potion('Q', 11, HEART, 'White Mage'),
new Card_Potion('K', 11, HEART, 'White Mage'),
new Card_Shield('A', 11, DIAMOND, 'Red Mage'),
new Card_Shield('2', 2, DIAMOND, 'Buckler'),
new Card_Shield('3', 3, DIAMOND, 'Buckler'),
new Card_Shield('4', 4, DIAMOND, 'Shield'),
new Card_Shield('5', 5, DIAMOND, 'Shield'),
new Card_Shield('6', 6, DIAMOND, 'Shield'),
new Card_Shield('7', 7, DIAMOND, 'Shield'),
new Card_Shield('8', 8, DIAMOND, 'Shield'),
new Card_Shield('9', 9, DIAMOND, 'Large Shield'),
new Card_Shield('10', 10, DIAMOND, 'Large Shield'),
new Card_Shield('V', 11, DIAMOND, 'Red Mage'),
new Card_Shield('Q', 11, DIAMOND, 'Red Mage'),
new Card_Shield('K', 11, DIAMOND, 'Red Mage'),
new Card_Monster('A', 17, CLOVE, 'Empress'),
new Card_Monster('2', 2, CLOVE, 'Rat'),
new Card_Monster('3', 3, CLOVE, 'Bat'),
new Card_Monster('4', 4, CLOVE, 'Imp'),
new Card_Monster('5', 5, CLOVE, 'Goblin'),
new Card_Monster('6', 6, CLOVE, 'Orc'),
new Card_Monster('7', 7, CLOVE, 'Ogre'),
new Card_Monster('8', 8, CLOVE, 'Beholder'),
new Card_Monster('9', 9, CLOVE, 'Medusa'),
new Card_Monster('10', 10, CLOVE, 'Demon'),
new Card_Monster('V', 11, CLOVE, 'Consort'),
new Card_Monster('Q', 13, CLOVE, 'Queen'),
new Card_Monster('K', 15, CLOVE, 'Regnant'),
new Card_Monster('A', 17, SPADE, 'Empress'),
new Card_Monster('2', 2, SPADE, 'Slime'),
new Card_Monster('3', 3, SPADE, 'Tunneler'),
new Card_Monster('4', 4, SPADE, 'Fiend'),
new Card_Monster('5', 5, SPADE, 'Drake'),
new Card_Monster('6', 6, SPADE, 'Specter'),
new Card_Monster('7', 7, SPADE, 'Ghost'),
new Card_Monster('8', 8, SPADE, 'Elemental'),
new Card_Monster('9', 9, SPADE, 'Witch'),
new Card_Monster('10', 10, SPADE, 'Familiar'),
new Card_Monster('V', 11, SPADE, 'Consort'),
new Card_Monster('Q', 13, SPADE, 'Queen'),
new Card_Monster('K', 15, SPADE, 'Regnant'),
new Card_Monster('J', 21, JOKER, 'First Donsol'),
new Card_Monster('J', 21, JOKER, 'Second Donsol')
new Card_Potion('A', 11, HEART, 'White Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="125" r="50" class="fill_red"/><circle cx="75" cy="125" r="50" class="fill_red"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 l-37.5,-37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Potion('2', 2, HEART, 'Small Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,200 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,150 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('3', 3, HEART, 'Small Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('4', 4, HEART, 'Medium Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,200 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M50,200 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M100,150 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M50,150 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('5', 5, HEART, 'Medium Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('6', 6, HEART, 'Medium Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,150 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,150 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,150 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,200 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,200 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,200 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('7', 7, HEART, 'Medium Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M125,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('8', 8, HEART, 'Medium Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('9', 9, HEART, 'Large Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,125 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,175 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M75,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M125,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path><path d="M25,225 a15,15 0 0,1 50,0 l-25,25 l-25,-25" class="fill_red"></path></svg>'),
new Card_Potion('10', 10, HEART, 'Large Potion', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M50,175 a25,25 0 0,1 100,0 l-50,50 l-50,-50" class="fill_red"></path></svg>'),
new Card_Potion('V', 11, HEART, 'White Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="125" r="50" class="fill_red"/><circle cx="75" cy="125" r="50" class="fill_red"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 l-37.5,-37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Potion('Q', 11, HEART, 'White Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="125" r="50" class="fill_red"/><circle cx="75" cy="125" r="50" class="fill_red"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 l-37.5,-37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Potion('K', 11, HEART, 'White Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="125" r="50" class="fill_red"/><circle cx="75" cy="125" r="50" class="fill_red"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 l-37.5,-37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Shield('A', 11, DIAMOND, 'Red Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="160" r="25" class="fill_red"/><circle cx="75" cy="160" r="25" class="fill_red"/><path d="M25,140 l75,75 l75,-75 l-75,-75" class="fill_red"/><path d="M25,175 l75,75 l75,-75 l-75,-75 l-75,75" fill="none" class="stroke_white" stroke-width="2px"/><circle cx="100" cy="160" r="25" class="fill_white"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Shield('2', 2, DIAMOND, 'Buckler', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,150 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,200 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('3', 3, DIAMOND, 'Buckler', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,175 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('4', 4, DIAMOND, 'Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M50,150 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M100,150 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M50,200 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M100,200 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('5', 5, DIAMOND, 'Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,225 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,125 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('6', 6, DIAMOND, 'Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,200 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,200 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,200 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,150 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,150 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,150 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('7', 7, DIAMOND, 'Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M25,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,225 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,225 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('8', 8, DIAMOND, 'Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,225 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,225 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,225 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('9', 9, DIAMOND, 'Large Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,125 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,175 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M75,225 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M25,225 l25,25 l25,-25 l-25,-25" class="fill_red"/><path d="M125,225 l25,25 l25,-25 l-25,-25" class="fill_red"/></svg>'),
new Card_Shield('10', 10, DIAMOND, 'Large Shield', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M50,175 l50,50 l50,-50 l-50,-50" class="fill_red"/></svg>'),
new Card_Shield('V', 11, DIAMOND, 'Red Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="160" r="25" class="fill_red"/><circle cx="75" cy="160" r="25" class="fill_red"/><path d="M25,140 l75,75 l75,-75 l-75,-75" class="fill_red"/><path d="M25,175 l75,75 l75,-75 l-75,-75 l-75,75" fill="none" class="stroke_white" stroke-width="2px"/><circle cx="100" cy="160" r="25" class="fill_white"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Shield('Q', 11, DIAMOND, 'Red Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="160" r="25" class="fill_red"/><circle cx="75" cy="160" r="25" class="fill_red"/><path d="M25,140 l75,75 l75,-75 l-75,-75" class="fill_red"/><path d="M25,175 l75,75 l75,-75 l-75,-75 l-75,75" fill="none" class="stroke_white" stroke-width="2px"/><circle cx="100" cy="160" r="25" class="fill_white"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Shield('K', 11, DIAMOND, 'Red Mage', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><circle cx="125" cy="160" r="25" class="fill_red"/><circle cx="75" cy="160" r="25" class="fill_red"/><path d="M25,140 l75,75 l75,-75 l-75,-75" class="fill_red"/><path d="M25,175 l75,75 l75,-75 l-75,-75 l-75,75" fill="none" class="stroke_white" stroke-width="2px"/><circle cx="100" cy="160" r="25" class="fill_white"/><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_red"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('A', 17, CLOVE, 'Empress', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="125" cy="125" r="40" class="fill_black"/><circle cx="75" cy="125" r="40" class="fill_black"/><circle cx="100" cy="100" r="40" class="fill_black"/><!-- Head --><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,185 a5,5 0 0,1 10,0" stroke-width="2px" class="stroke_black" stroke-linecap="round" fill="none"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('2', 2, CLOVE, 'Rat', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="200" r="25" class="fill_black"/><circle cx="100" cy="150" r="25" class="fill_black"/></svg>'),
new Card_Monster('3', 3, CLOVE, 'Bat', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="175" r="25" class="fill_black"/><circle cx="150" cy="175" r="25" class="fill_black"/><circle cx="50" cy="175" r="25" class="fill_black"/></svg>'),
new Card_Monster('4', 4, CLOVE, 'Imp', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="75" cy="200" r="25" class="fill_black"/><circle cx="125" cy="200" r="25" class="fill_black"/><circle cx="75" cy="150" r="25" class="fill_black"/><circle cx="125" cy="150" r="25" class="fill_black"/></svg>'),
new Card_Monster('5', 5, CLOVE, 'Goblin', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="50" cy="175" r="25" class="fill_black"/><circle cx="100" cy="175" r="25" class="fill_black"/><circle cx="150" cy="175" r="25" class="fill_black"/><circle cx="100" cy="125" r="25" class="fill_black"/><circle cx="100" cy="225" r="25" class="fill_black"/></svg>'),
new Card_Monster('6', 6, CLOVE, 'Orc', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="200" r="25" class="fill_black"/><circle cx="150" cy="200" r="25" class="fill_black"/><circle cx="50" cy="200" r="25" class="fill_black"/><circle cx="100" cy="150" r="25" class="fill_black"/><circle cx="150" cy="150" r="25" class="fill_black"/><circle cx="50" cy="150" r="25" class="fill_black"/></svg>'),
new Card_Monster('7', 7, CLOVE, 'Ogre', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="150" cy="125" r="25" class="fill_black"/><circle cx="50" cy="125" r="25" class="fill_black"/><circle cx="100" cy="175" r="25" class="fill_black"/><circle cx="150" cy="175" r="25" class="fill_black"/><circle cx="50" cy="175" r="25" class="fill_black"/><circle cx="150" cy="225" r="25" class="fill_black"/><circle cx="50" cy="225" r="25" class="fill_black"/></svg>'),
new Card_Monster('8', 8, CLOVE, 'Beholder', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="125" r="25" class="fill_black"/><circle cx="150" cy="125" r="25" class="fill_black"/><circle cx="50" cy="125" r="25" class="fill_black"/><circle cx="150" cy="175" r="25" class="fill_black"/><circle cx="50" cy="175" r="25" class="fill_black"/><circle cx="100" cy="225" r="25" class="fill_black"/><circle cx="150" cy="225" r="25" class="fill_black"/><circle cx="50" cy="225" r="25" class="fill_black"/></svg>'),
new Card_Monster('9', 9, CLOVE, 'Medusa', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="125" r="25" class="fill_black"/><circle cx="150" cy="125" r="25" class="fill_black"/><circle cx="50" cy="125" r="25" class="fill_black"/><circle cx="100" cy="175" r="25" class="fill_black"/><circle cx="150" cy="175" r="25" class="fill_black"/><circle cx="50" cy="175" r="25" class="fill_black"/><circle cx="100" cy="225" r="25" class="fill_black"/><circle cx="150" cy="225" r="25" class="fill_black"/><circle cx="50" cy="225" r="25" class="fill_black"/></svg>'),
new Card_Monster('10', 10, CLOVE, 'Demon', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="175" r="50" class="fill_black"/></svg>'),
new Card_Monster('V', 11, CLOVE, 'Consort', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="100" cy="125" r="70" class="fill_black"/><!-- Head --><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('Q', 13, CLOVE, 'Queen', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="125" cy="125" r="60" class="fill_black"/><circle cx="75" cy="125" r="60" class="fill_black"/><!-- Head --><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><circle cx="100" cy="185" r="3" class="fill_black" stroke-width="0px"/><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('K', 15, CLOVE, 'Regnant', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><circle cx="125" cy="125" r="50" class="fill_black"/><circle cx="75" cy="125" r="50" class="fill_black"/><circle cx="100" cy="100" r="50" class="fill_black"/><!-- Head --><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,185 a5,5 0 0,1 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('A', 17, SPADE, 'Empress', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><path d="M100,50 l-75,75 a15,15 0 1,0 75,50 a15,15 0 1,0 75,-50" class="fill_black"></path><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,185 a5,5 0 0,1 10,0" stroke-width="2px" class="stroke_black" stroke-linecap="round" fill="none"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('2', 2, SPADE, 'Slime', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,175 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,125 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('3', 3, SPADE, 'Tunneler', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('4', 4, SPADE, 'Fiend', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M75,125 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M125,125 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M75,175 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M125,175 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('5', 5, SPADE, 'Drake', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('6', 6, SPADE, 'Specter', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M50,175 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,175 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,175 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,125 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,125 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,125 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('7', 7, SPADE, 'Ghost', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('8', 8, SPADE, 'Elemental', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('9', 9, SPADE, 'Witch', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M100,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M50,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,200 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,150 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/><path d="M150,100 l-25,25 a25,25 0 0,1 25,25 a25,25 0 0,1 25,-25" class="fill_black"/></svg>'),
new Card_Monster('10', 10, SPADE, 'Familiar', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M100,125 l-50,50 a50,50 0 0,1 50,50 a50,50 0 0,1 50,-50" class="fill_black"/></svg>'),
new Card_Monster('V', 11, SPADE, 'Consort', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><path d="M100,50 l-75,75 a15,15 0 1,0 75,50 a15,15 0 1,0 75,-50" class="fill_black"></path><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,180 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('Q', 13, SPADE, 'Queen', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><path d="M100,50 l-75,75 a15,15 0 1,0 75,50 a15,15 0 1,0 75,-50" class="fill_black"></path><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><circle cx="100" cy="185" r="3" class="fill_black" stroke-width="0px"/><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('K', 15, SPADE, 'Regnant', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><!-- Head --><path d="M100,50 l-75,75 a15,15 0 1,0 75,50 a15,15 0 1,0 75,-50" class="fill_black"></path><!-- Body --><path d="M20,310 l0,-50 a15,15 0 0,1 15,-15 l25,0 a25,25 0 0,0 25,-25 l0,-50 l30,0 l0,50 a25,25 0 0,0 25,25 l25,0 a15,15 0 0,1 15,15 l0,50" class="fill_black"></path><line x1="0" y1="210" x2="300" y2="210" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><line x1="0" y1="220" x2="300" y2="220" stroke-width="2px" class="stroke_white" stroke-linecap="round"/><path d="M95,220 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_white"></path><!-- Face --><path d="M62.5,155 a15,15 0 1,0 75,0 a37.5,37.5 0 0,1 -37.5,-37.5 a37.5,37.5 0 0,1 -37.5,37.5" class="fill_white"></path><!-- Eyes --><line x1="70" y1="160" x2="90" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><line x1="110" y1="160" x2="130" y2="160" stroke-width="2px" class="stroke_black" stroke-linecap="round"/><path d="M75,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><path d="M115,160 a5,5 0 1,0 10,0" stroke-width="2px" class="stroke_black fill_black" stroke-linecap="butt"></path><circle cx="90" cy="150" r="3" class="fill_grey"/><circle cx="110" cy="150" r="3" class="fill_grey"/><!-- nose --><path d="M95,170 a5,5 0 1,0 10,0" stroke-width="0px" class="fill_grey"></path><!-- mouth --><path d="M95,185 a5,5 0 0,1 10,0" stroke-width="0px" class="fill_black"></path><!-- dot --><circle cx="100" cy="100" r="5" class="fill_white"/></svg>'),
new Card_Monster('J', 21, JOKER, 'First Donsol', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M25,175 a100,120 0 0,0 150,0 a100,120 0 0,0 -150,0 " class="fill_red"></path><circle cx="100" cy="175" r="25" class="fill_white"/><circle cx="100" cy="175" r="15" class="fill_black"/></svg>'),
new Card_Monster('J', 21, JOKER, 'Second Donsol', '<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg" width="200" height="300"><path d="M25,175 a100,120 0 0,0 150,0 a100,120 0 0,0 -150,0 " class="fill_red"></path><circle cx="100" cy="175" r="25" class="fill_white"/><circle cx="100" cy="175" r="15" class="fill_black"/></svg>')
]
let draw_pile = []

View file

@ -4,8 +4,6 @@ function Controller () {
this.menu = { default: {} }
this.mode = 'default'
this.app = require('electron').remote.app
this.start = function () {
}
@ -45,10 +43,6 @@ function Controller () {
return f
}
this.commit = function () {
this.app.inject_menu(this.format())
}
this.docs = function () {
console.log('Generating docs..')
const svg = this.generate_svg(this.format())
@ -181,5 +175,3 @@ function Controller () {
{ x: 540, y: 240, width: 90, height: 60, name: 'alt' }
]
}
module.exports = new Controller()