diff --git a/data/images/black.png b/data/images/black.png
new file mode 100644
index 00000000..0e2d0e5a
Binary files /dev/null and b/data/images/black.png differ
diff --git a/data/images/m15/m15LegendCrownBorderCover.png b/data/images/m15/m15LegendCrownBorderCover.png
deleted file mode 100644
index e51a19e4..00000000
Binary files a/data/images/m15/m15LegendCrownBorderCover.png and /dev/null differ
diff --git a/data/scripts/main.js b/data/scripts/main.js
index d80fa50a..f9d4fd25 100644
--- a/data/scripts/main.js
+++ b/data/scripts/main.js
@@ -123,7 +123,7 @@ class cardPlaceholder {
var temporaryElement = document.createElement('div')
temporaryElement.id = 'uniqueNumber' + this.uniqueNumber
temporaryElement.classList.add('cardMasterElement')
- temporaryElement.innerHTML = '|||
' + this.name + '
'
+ temporaryElement.innerHTML = '|||' + this.name + '
'
return temporaryElement
}
}
@@ -168,7 +168,7 @@ class cardImage {
var temporaryElement = document.createElement('div')
temporaryElement.id = 'uniqueNumber' + this.uniqueNumber
temporaryElement.classList.add('cardMasterElement')
- temporaryElement.innerHTML = '|||' + this.name + ' (' + this.masks.toString().replace(',', ', ') + ')
X'
+ temporaryElement.innerHTML = '|||
' + this.name + ' - ' + this.masks.toString().replace(',', ', ') + '
X'
temporaryElement.onclick = function() {
selectedCardMasterElement = parseInt(this.id.replace('uniqueNumber', ''))
var selectedObject = cardMasterList[selectedCardMasterElement]
@@ -279,6 +279,14 @@ function maskOptionClicked(event) {
}
}
+function loadFramePackOptions(listOfFramePacks) {
+ var framePackHTML = ''
+ for (var i = 0; i < listOfFramePacks.length; i++) {
+ framePackHTML += ''
+ }
+ document.getElementById('inputFramePack').innerHTML = framePackHTML
+ loadScript('data/scripts/versions/' + document.getElementById('inputFrameVersion').value + '/regular.js')
+}
function loadMaskImages(listOfMasks) {
for (var i = 0; i < listOfMasks.length; i++) {
if (!maskNameList.includes(listOfMasks[i][0])) {
@@ -293,14 +301,14 @@ function loadMaskImages(listOfMasks) {
function loadFrameImages(listOfFrames, frameClass) {
for (var i = 0; i < listOfFrames.length; i++) {
frameImageList.push(new frameImage(...listOfFrames[i], frameImageList.length, frameClass))
- if (i == 0) {
- frameObjectToAdd = frameImageList[frameImageList.length - 1]
- var frameToInsert = cardMasterList.push(new cardImage(frameObjectToAdd.name, frameObjectToAdd.image.src, frameObjectToAdd.x, frameObjectToAdd.y, frameObjectToAdd.width, frameObjectToAdd.height, 1, ['Full'], false))
- cardMaster.insertBefore(cardMasterList[frameToInsert - 1].cardMasterElement(), cardMaster.children[1])
- frameObjectToAdd.image.onload = function() {
- drawCardObjects()
- }
- }
+ // if (i == 0) {
+ // frameObjectToAdd = frameImageList[frameImageList.length - 1]
+ // var frameToInsert = cardMasterList.push(new cardImage(frameObjectToAdd.name, frameObjectToAdd.image.src, frameObjectToAdd.x, frameObjectToAdd.y, frameObjectToAdd.width, frameObjectToAdd.height, 1, ['Full'], false))
+ // cardMaster.insertBefore(cardMasterList[frameToInsert - 1].cardMasterElement(), cardMaster.children[1])
+ // frameObjectToAdd.image.onload = function() {
+ // drawCardObjects()
+ // }
+ // }
}
}
diff --git a/data/scripts/versions/versionFuture.js b/data/scripts/versions/backup/versionFuture.js
similarity index 100%
rename from data/scripts/versions/versionFuture.js
rename to data/scripts/versions/backup/versionFuture.js
diff --git a/data/scripts/versions/versionInvention.js b/data/scripts/versions/backup/versionInvention.js
similarity index 100%
rename from data/scripts/versions/versionInvention.js
rename to data/scripts/versions/backup/versionInvention.js
diff --git a/data/scripts/versions/versionM15.js b/data/scripts/versions/backup/versionM15.js
similarity index 100%
rename from data/scripts/versions/versionM15.js
rename to data/scripts/versions/backup/versionM15.js
diff --git a/data/scripts/versions/versionM15FloatingCrowns.js b/data/scripts/versions/backup/versionM15FloatingCrowns.js
similarity index 100%
rename from data/scripts/versions/versionM15FloatingCrowns.js
rename to data/scripts/versions/backup/versionM15FloatingCrowns.js
diff --git a/data/scripts/versions/versionM15Nickname.js b/data/scripts/versions/backup/versionM15Nickname.js
similarity index 100%
rename from data/scripts/versions/versionM15Nickname.js
rename to data/scripts/versions/backup/versionM15Nickname.js
diff --git a/data/scripts/versions/versionM15Nyx.js b/data/scripts/versions/backup/versionM15Nyx.js
similarity index 100%
rename from data/scripts/versions/versionM15Nyx.js
rename to data/scripts/versions/backup/versionM15Nyx.js
diff --git a/data/scripts/versions/versionM15PromoFloatingCrowns.js b/data/scripts/versions/backup/versionM15PromoFloatingCrowns.js
similarity index 100%
rename from data/scripts/versions/versionM15PromoFloatingCrowns.js
rename to data/scripts/versions/backup/versionM15PromoFloatingCrowns.js
diff --git a/data/scripts/versions/versionM15PromoNickname.js b/data/scripts/versions/backup/versionM15PromoNickname.js
similarity index 100%
rename from data/scripts/versions/versionM15PromoNickname.js
rename to data/scripts/versions/backup/versionM15PromoNickname.js
diff --git a/data/scripts/versions/versionPlaneswalker.js b/data/scripts/versions/backup/versionPlaneswalker.js
similarity index 100%
rename from data/scripts/versions/versionPlaneswalker.js
rename to data/scripts/versions/backup/versionPlaneswalker.js
diff --git a/data/scripts/versions/versionSeventh.js b/data/scripts/versions/backup/versionSeventh.js
similarity index 100%
rename from data/scripts/versions/versionSeventh.js
rename to data/scripts/versions/backup/versionSeventh.js
diff --git a/data/scripts/versions/versionStorybook.js b/data/scripts/versions/backup/versionStorybook.js
similarity index 100%
rename from data/scripts/versions/versionStorybook.js
rename to data/scripts/versions/backup/versionStorybook.js
diff --git a/data/scripts/versions/future/regular.js b/data/scripts/versions/future/regular.js
new file mode 100644
index 00000000..018a1a1b
--- /dev/null
+++ b/data/scripts/versions/future/regular.js
@@ -0,0 +1,27 @@
+if (!loadedVersions.includes('futureRegular')) {
+ loadedVersions.push('futureRegular')
+ loadFrameImages([
+ ['White Frame', 'data/images/future/futureFrameW.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Blue Frame', 'data/images/future/futureFrameU.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Black Frame', 'data/images/future/futureFrameB.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Red Frame', 'data/images/future/futureFrameR.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Green Frame', 'data/images/future/futureFrameG.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Multicolored Frame', 'data/images/future/futureFrameM.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Artifact Frame', 'data/images/future/futureFrameA.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Clear Frame', 'data/images/future/futureFrameC.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['Land Frame', 'data/images/future/futureFrameL.png', 0, 0, 1, 1, ['Full', 'Border (future)']],
+ ['White Power/Toughness', 'data/images/future/futurePTW.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Blue Power/Toughness', 'data/images/future/futurePTU.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Black Power/Toughness', 'data/images/future/futurePTB.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Red Power/Toughness', 'data/images/future/futurePTR.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Green Power/Toughness', 'data/images/future/futurePTG.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Multicolored Power/Toughness', 'data/images/future/futurePTM.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Artifact Power/Toughness', 'data/images/future/futurePTA.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Clear Power/Toughness', 'data/images/future/futurePTC.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['Land Power/Toughness', 'data/images/future/futurePTL.png', 567/744, 918/1039, 129/744, 81/1039, ['Full']],
+ ['White Icon', 'data/images/future/futureWhite.png', 49/744, 49/1039, 32/744, 32/1039, ['Artifact Icon (future)', 'Creature Icon (future)', 'Enchantment Icon (future)', 'Instant Icon (future)', 'Land Icon (future)', 'Multitype Icon (future)', 'Sorcery Icon (future)']],
+ ['Gray Icon', 'data/images/future/futureGray.png', 49/744, 49/1039, 32/744, 32/1039, ['Artifact Icon (future)', 'Creature Icon (future)', 'Enchantment Icon (future)', 'Instant Icon (future)', 'Land Icon (future)', 'Multitype Icon (future)', 'Sorcery Icon (future)']]
+ ], 'frameClassFutureRegular')
+}
+
+hideFrameImages('frameClassFutureRegular')
\ No newline at end of file
diff --git a/data/scripts/versions/future/version.js b/data/scripts/versions/future/version.js
new file mode 100644
index 00000000..83ed3aee
--- /dev/null
+++ b/data/scripts/versions/future/version.js
@@ -0,0 +1,70 @@
+if (!loadedVersions.includes('future')) {
+ loadedVersions.push('future')
+ loadMaskImages([['Border (future)', 'data/images/future/futureMaskBorder.png'], ['Artifact Icon (future)', 'data/images/future/futureMaskArtifact.png'], ['Creature Icon (future)', 'data/images/future/futureMaskCreature.png'], ['Enchantment Icon (future)', 'data/images/future/futureMaskEnchantment.png'], ['Instant Icon (future)', 'data/images/future/futureMaskInstant.png'], ['Land Icon (future)', 'data/images/future/futureMaskLand.png'], ['Multitype Icon (future)', 'data/images/future/futureMaskMulti.png'], ['Sorcery Icon (future)', 'data/images/future/futureMaskSorcery.png']])
+}
+
+if (currentVersion != 'future') {
+ currentVersion = 'future'
+
+ loadTextOptions([
+ new cardText('Card Title', '', 264/1500, 195/2100, 1248/1500, 91/2100, 'matrixb', 91/2100, 'white', ['oneLine=true']),
+ new cardText('Card Type', '', 182/1500, 1261/2100, 1248/1500, 75/2100, 'matrixb', 75/2100, 'white', ['oneLine=true']),
+ new cardText('Rules Text', '', 154/1500, 1313/2100, 1211/1500, 670/2100, 'mplantin', 73/2100, 'black'),
+ new cardText('Power/Toughness', '', 1160/1500, 1960/2100, 210/1500, 83/2100, 'mplantin', 83/2100, 'white', ['oneLine=true,textAlign="center"'])
+ ])
+
+ artX = scaleX(129 / 1500)
+ artY = scaleY(177 / 2100)
+ artWidth = scaleX(1307 / 1500)
+ artHeight = scaleY(1229 / 2100)
+
+ manaCostXPath = '[scaleX(91/744), scaleX(61/744), scaleX(46/744), scaleX(46/744), scaleX(59/744), scaleX(106/744)][manaSymbolIndex]'
+ manaCostYPath = '[scaleY(140/1039), scaleY(207/1039), scaleY(281/1039), scaleY(356/1039), scaleY(437/1039), scaleY(512/1039)][manaSymbolIndex]'
+ manaCostDiameter = 'scaleX(59/744)'
+ manaCostShadowOffset = '[0, 0]'
+ manaCostDirection = 'forward'
+
+ setSymbolX = [scaleX(1367/1500), 'center']
+ setSymbolY = [scaleY(1249/2100), 'center']
+ setSymbolWidth = scaleX(80/1500)
+ setSymbolHeight = scaleY(80/2100)
+
+ watermarkX = scaleX(0.5)
+ watermarkY = scaleY(1593/2100)
+ watermarkWidth = scaleX(1140/1500)
+ watermarkHeight = scaleY(484/2100)
+
+ bottomInfoFunction = 'bottomInfoFuture'
+
+ bottomInfoUpdated()
+}
+
+loadFramePackOptions([['regular', 'Regular']])
+
+function bottomInfoFuture() {
+ bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight)
+ var ptBoxShift = 0
+ var copyrightFillColor = 'white'
+ for (var i = 0; i < cardTextList.length; i++) {
+ if (cardTextList[i].name == 'Power/Toughness' && cardTextList[i].text != '') {
+ ptBoxShift = -1/6
+ }
+ }
+ var cardMasterChildren = cardMaster.children
+ for (var i = cardMasterChildren.length - 1; i >= 0; i--) {
+ var uniqueNumber = parseInt(cardMasterChildren[i].id.replace('uniqueNumber', ''))
+ for (var n = 0; n < cardMasterList.length; n++) {
+ if (cardMasterList[n].uniqueNumber == uniqueNumber) {
+ if (cardMasterList[n].name.includes('White Frame') || cardMasterList[n].name.includes('Artifact Frame') || cardMasterList[n].name.includes('Colorless Frame')) {
+ copyrightFillColor = 'black'
+ }
+ }
+ }
+ }
+ writeText(
+ [
+ {text: '{right}{oldartistbrush}' + document.getElementById('inputInfoArtist').value, x: 141/1500, y: 1938/2100, width: 1216/1500 + ptBoxShift, height: 52/2100, font: 'matrixb', fontSize: 52/2100, fontColor: copyrightFillColor, otherParameters: ['oneLine=true']},
+ {text: '{right}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 141/1500, y: 1980/2100, width: 1216/1500 + ptBoxShift, height: 36/2100, font: 'mplantin', fontSize: 36/2100, fontColor: copyrightFillColor, otherParameters: ['oneLine=true']},
+ {text: '{right}*Not for Sale* CardConjurer.com', x: 141/1500, y: 2012/2100, width: 1216/1500 + ptBoxShift, height: 28/2100, font: 'mplantin', fontSize: 28/2100, fontColor: copyrightFillColor, otherParameters: ['oneLine=true']}
+ ], bottomInfoContext)
+}
\ No newline at end of file
diff --git a/data/scripts/versions/m15/floatingCrowns.js b/data/scripts/versions/m15/floatingCrowns.js
new file mode 100644
index 00000000..96fbcf2b
--- /dev/null
+++ b/data/scripts/versions/m15/floatingCrowns.js
@@ -0,0 +1,16 @@
+if (!loadedVersions.includes('m15FloatingCrowns')) {
+ loadedVersions.push("m15FloatingCrowns")
+ loadFrameImages([
+ ['White Floating Legend Crown', 'data/images/m15/m15CrownFloatingW.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Blue Floating Legend Crown', 'data/images/m15/m15CrownFloatingU.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Black Floating Legend Crown', 'data/images/m15/m15CrownFloatingB.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Red Floating Legend Crown', 'data/images/m15/m15CrownFloatingR.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Green Floating Legend Crown', 'data/images/m15/m15CrownFloatingG.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Multicolored Floating Legend Crown', 'data/images/m15/m15CrownFloatingM.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Artifact Floating Legend Crown', 'data/images/m15/m15CrownFloatingA.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Land Floating Legend Crown', 'data/images/m15/m15CrownFloatingL.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Legend Crown Border Cover', 'data/images/black.png', 59/1500, 58/2100, 1384/1500, 37/2100, ['Full']]
+ ], 'frameClassM15FloatingCrowns')
+}
+
+hideFrameImages('frameClassM15FloatingCrowns')
\ No newline at end of file
diff --git a/data/scripts/versions/m15/invention.js b/data/scripts/versions/m15/invention.js
new file mode 100644
index 00000000..d5923baf
--- /dev/null
+++ b/data/scripts/versions/m15/invention.js
@@ -0,0 +1,9 @@
+if (!loadedVersions.includes('m15Invention')) {
+ loadedVersions.push("m15Invention")
+ loadFrameImages([
+ ['Invention Frame', 'data/images/invention/inventionFrame.png', 0, 0, 1, 1, ['Full', 'Pinline Super (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)']],
+ ['Invention Power/Toughness', 'data/images/invention/inventionPT.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']]
+ ], 'frameClassM15Invention')
+}
+
+hideFrameImages('frameClassM15Invention')
\ No newline at end of file
diff --git a/data/scripts/versions/m15/legendCrowns.js b/data/scripts/versions/m15/legendCrowns.js
new file mode 100644
index 00000000..c739a55b
--- /dev/null
+++ b/data/scripts/versions/m15/legendCrowns.js
@@ -0,0 +1,16 @@
+if (!loadedVersions.includes('m15LegendCrowns')) {
+ loadedVersions.push("m15LegendCrowns")
+ loadFrameImages([
+ ['White Legend Crown', 'data/images/m15/m15CrownW.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Blue Legend Crown', 'data/images/m15/m15CrownU.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Black Legend Crown', 'data/images/m15/m15CrownB.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Red Legend Crown', 'data/images/m15/m15CrownR.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Green Legend Crown', 'data/images/m15/m15CrownG.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Multicolored Legend Crown', 'data/images/m15/m15CrownM.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Artifact Legend Crown', 'data/images/m15/m15CrownA.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Land Legend Crown', 'data/images/m15/m15CrownL.png', 41/1500, 40/2100, 1418/1500, 350/2100, ['Full', 'Legend Crown (m15)', 'Legend Crown W/ Pinline (m15)']],
+ ['Legend Crown Border Cover', 'data/images/black.png', 59/1500, 58/2100, 1382/1500, 37/2100, ['Full']]
+ ], 'frameClassM15LegendCrowns')
+}
+
+hideFrameImages('frameClassM15LegendCrowns')
\ No newline at end of file
diff --git a/data/scripts/versions/m15/nickname.js b/data/scripts/versions/m15/nickname.js
new file mode 100644
index 00000000..0c17e176
--- /dev/null
+++ b/data/scripts/versions/m15/nickname.js
@@ -0,0 +1,58 @@
+if (!loadedVersions.includes('m15Nickname')) {
+ loadedVersions.push("m15Nickname")
+ loadMaskImages([['Nickname Legend Crown (m15)', 'data/images/m15/m15MaskNicknameLegendCrownStrokeless.png'], ['Nickname Title (m15)', 'data/images/m15/m15MaskNicknameTitleStrokeless.png']])
+ loadFrameImages([
+ ['Base Nickname Frame', 'data/images/m15/m15NicknameTextboxes.png', 0, 0, 1, 1, ['Full', 'Title (m15)', 'Type (m15)', 'Rules (m15)']],
+ ['White Nickname Frame', 'data/images/m15/m15NicknameFrameW.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Blue Nickname Frame', 'data/images/m15/m15NicknameFrameU.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Black Nickname Frame', 'data/images/m15/m15NicknameFrameB.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Red Nickname Frame', 'data/images/m15/m15NicknameFrameR.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Green Nickname Frame', 'data/images/m15/m15NicknameFrameG.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Multicolored Nickname Frame', 'data/images/m15/m15NicknameFrameM.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Artifact Nickname Frame', 'data/images/m15/m15NicknameFrameA.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['Land Nickname Frame', 'data/images/m15/m15NicknameFrameL.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Border (m15)']],
+ ['White Nickname Title', 'data/images/m15/m15NicknameTitleW.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Blue Nickname Title', 'data/images/m15/m15NicknameTitleU.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Black Nickname Title', 'data/images/m15/m15NicknameTitleB.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Red Nickname Title', 'data/images/m15/m15NicknameTitleR.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Green Nickname Title', 'data/images/m15/m15NicknameTitleG.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Multicolored Nickname Title', 'data/images/m15/m15NicknameTitleM.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Artifact Nickname Title', 'data/images/m15/m15NicknameTitleA.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Land Nickname Title', 'data/images/m15/m15NicknameTitleL.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['White Nickname Legend Crown', 'data/images/m15/m15NicknameCrownW.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Blue Nickname Legend Crown', 'data/images/m15/m15NicknameCrownU.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Black Nickname Legend Crown', 'data/images/m15/m15NicknameCrownB.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Red Nickname Legend Crown', 'data/images/m15/m15NicknameCrownR.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Green Nickname Legend Crown', 'data/images/m15/m15NicknameCrownG.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Multicolored Nickname Legend Crown', 'data/images/m15/m15NicknameCrownM.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Artifact Nickname Legend Crown', 'data/images/m15/m15NicknameCrownA.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Land Nickname Legend Crown', 'data/images/m15/m15NicknameCrownL.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['White Nickname Power/Toughness', 'data/images/m15/m15NicknamePTW.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Blue Nickname Power/Toughness', 'data/images/m15/m15NicknamePTU.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Black Nickname Power/Toughness', 'data/images/m15/m15NicknamePTB.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Red Nickname Power/Toughness', 'data/images/m15/m15NicknamePTR.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Green Nickname Power/Toughness', 'data/images/m15/m15NicknamePTG.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Multicolored Nickname Power/Toughness', 'data/images/m15/m15NicknamePTM.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Artifact Nickname Power/Toughness', 'data/images/m15/m15NicknamePTA.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Colorless Nickname Power/Toughness', 'data/images/m15/m15NicknamePTC.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']]
+ ], 'frameClassM15Nickname')
+}
+
+if (currentVersion != 'm15Nickname') {
+ currentVersion = 'm15Nickname'
+
+ loadTextOptions([
+ new cardText('Card Nickname', '', 126/1500, 188/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'white', ['oneLine=true']),
+ new cardText('Card Title', '', 210/1500, 276/2100, 1080/1500, 48/2100, 'belerenb', 48/2100, 'white', ['oneLine=true', 'textAlign="center"', 'fontStyle="italic "']),
+ new cardText('Card Type', '', 126/1500, 1264/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'white', ['oneLine=true']),
+ new cardText('Rules Text', '', 135/1500, 1370/2100, 1230/1500, 625/2100, 'mplantin', 74/2100, 'white'),
+ new cardText('Power/Toughness', '', 1191/1500, 1954/2100, 205/1500, 78/2100, 'belerenbsc', 78/2100, 'white', ['oneLine=true,textAlign="center"'])
+ ])
+
+ artX = 0
+ artY = 0
+ artWidth = scaleX(1)
+ artHeight = scaleY(1936 / 2100)
+}
+
+hideFrameImages('frameClassM15Nickname')
\ No newline at end of file
diff --git a/data/scripts/versions/m15/nyx.js b/data/scripts/versions/m15/nyx.js
new file mode 100644
index 00000000..6b107bdd
--- /dev/null
+++ b/data/scripts/versions/m15/nyx.js
@@ -0,0 +1,21 @@
+if (!loadedVersions.includes('m15Nyx')) {
+ loadedVersions.push("m15Nyx")
+ loadFrameImages([
+ ['White Nyx Frame', 'data/images/m15/m15FrameWNyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Blue Nyx Frame', 'data/images/m15/m15FrameUNyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Black Nyx Frame', 'data/images/m15/m15FrameBNyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Red Nyx Frame', 'data/images/m15/m15FrameRNyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Green Nyx Frame', 'data/images/m15/m15FrameGNyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Multicolored Nyx Frame', 'data/images/m15/m15FrameMNyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Artifact Nyx Frame', 'data/images/m15/m15FrameANyx.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['White Nyx Legend Crown', 'data/images/m15/m15InnerCrownWNyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']],
+ ['Blue Nyx Legend Crown', 'data/images/m15/m15InnerCrownUNyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']],
+ ['Black Nyx Legend Crown', 'data/images/m15/m15InnerCrownBNyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']],
+ ['Red Nyx Legend Crown', 'data/images/m15/m15InnerCrownRNyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']],
+ ['Green Nyx Legend Crown', 'data/images/m15/m15InnerCrownGNyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']],
+ ['Multicolored Nyx Legend Crown', 'data/images/m15/m15InnerCrownMNyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']],
+ ['Artifact Nyx Legend Crown', 'data/images/m15/m15InnerCrownANyx.png', 246/1500, 50/2100, 1008/1500, 50/2100, ['Full']]
+ ], 'frameClassM15Nyx')
+}
+
+hideFrameImages('frameClassM15Nyx')
\ No newline at end of file
diff --git a/data/scripts/versions/m15/regular.js b/data/scripts/versions/m15/regular.js
new file mode 100644
index 00000000..c27db21e
--- /dev/null
+++ b/data/scripts/versions/m15/regular.js
@@ -0,0 +1,24 @@
+if (!loadedVersions.includes('m15Regular')) {
+ loadedVersions.push('m15Regular')
+ loadFrameImages([
+ ['White Frame', 'data/images/m15/m15FrameW.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Blue Frame', 'data/images/m15/m15FrameU.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Black Frame', 'data/images/m15/m15FrameB.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Red Frame', 'data/images/m15/m15FrameR.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Green Frame', 'data/images/m15/m15FrameG.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Multicolored Frame', 'data/images/m15/m15FrameM.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Artifact Frame', 'data/images/m15/m15FrameA.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Vehicle Frame', 'data/images/m15/m15FrameV.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['Land Frame', 'data/images/m15/m15FrameL.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)', 'Pinline Super (m15)']],
+ ['White Power/Toughness', 'data/images/m15/m15PTW.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Blue Power/Toughness', 'data/images/m15/m15PTU.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Black Power/Toughness', 'data/images/m15/m15PTB.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Red Power/Toughness', 'data/images/m15/m15PTR.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Green Power/Toughness', 'data/images/m15/m15PTG.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Multicolored Power/Toughness', 'data/images/m15/m15PTM.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Artifact Power/Toughness', 'data/images/m15/m15PTA.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Midnight Frame', 'data/images/m15/m15Midnight.png', 0, 0, 1, 1, ['Full', 'Pinline (m15)', 'Title (m15)', 'Type (m15)', 'Rules (m15)', 'Frame (m15)', 'Border (m15)']]
+ ], 'frameClassM15Regular')
+}
+
+hideFrameImages('frameClassM15Regular')
\ No newline at end of file
diff --git a/data/scripts/versions/m15/version.js b/data/scripts/versions/m15/version.js
new file mode 100644
index 00000000..4f9c3341
--- /dev/null
+++ b/data/scripts/versions/m15/version.js
@@ -0,0 +1,60 @@
+if (!loadedVersions.includes('m15')) {
+ loadedVersions.push('m15')
+ loadMaskImages([['Full', 'data/images/maskFull.png'], ['Border (m15)', 'data/images/m15/m15MaskBorder.png'], ['Right Half', 'data/images/maskRightHalf.png'], ['Pinline (m15)', 'data/images/m15/m15MaskPinline.png'], ['Title (m15)', 'data/images/m15/m15MaskTitle.png'], ['Type (m15)', 'data/images/m15/m15MaskType.png'], ['Rules (m15)', 'data/images/m15/m15MaskRules.png'], ['Frame (m15)', 'data/images/m15/m15MaskFrame.png'], ['Pinline Super (m15)', 'data/images/m15/m15MaskPinlineSuper.png'], ['Legend Crown (m15)', 'data/images/m15/m15MaskLegendCrown.png'], ['Legend Crown W/ Pinline (m15)', 'data/images/m15/m15MaskLegendCrownPinline.png']])
+}
+
+if (currentVersion != 'm15') {
+ currentVersion = 'm15'
+
+ loadTextOptions([
+ new cardText('Card Title', '', 126/1500, 188/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'black', ['oneLine=true']),
+ new cardText('Card Type', '', 126/1500, 1264/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'black', ['oneLine=true']),
+ new cardText('Rules Text', '', 135/1500, 1370/2100, 1230/1500, 625/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Power/Toughness', '', 1191/1500, 1954/2100, 205/1500, 78/2100, 'belerenbsc', 78/2100, 'black', ['oneLine=true,textAlign="center"'])
+ ])
+
+ artX = scaleX(115 / 1500)
+ artY = scaleY(237 / 2100)
+ artWidth = scaleX(1270 / 1500)
+ artHeight = scaleY(929 / 2100)
+
+ manaCostXPath = '1316 - 78 * manaSymbolIndex'
+ manaCostYPath = '121'
+ manaCostDiameter = '70'
+ manaCostShadowOffset = '[-2, 6]'
+ manaCostDirection = 'reverse'
+
+ setSymbolX = [scaleX(1382/1500), 'right']
+ setSymbolY = [scaleY(1241/2100), 'center']
+ setSymbolWidth = scaleX(180/1500)
+ setSymbolHeight = scaleY(86/2100)
+
+ watermarkX = scaleX(0.5)
+ watermarkY = scaleY(1630/2100)
+ watermarkWidth = scaleX(1140/1500)
+ watermarkHeight = scaleY(484/2100)
+
+ bottomInfoFunction = 'bottomInfoM15'
+
+ bottomInfoUpdated()
+}
+
+loadFramePackOptions([['regular', 'Regular'], ['legendCrowns', 'Legend Crowns'], ['nickname', 'Nickname (Godzilla)'], ['nyx', 'Nyx'], ['invention', 'Kaladesh Invention'], ['floatingCrowns', 'Floating Crowns']])
+
+function bottomInfoM15() {
+ bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight)
+ var ptBoxShift = 0
+ for (var i = 0; i < cardTextList.length; i++) {
+ if (cardTextList[i].name == 'Power/Toughness' && cardTextList[i].text != '') {
+ ptBoxShift = 36/2100
+ }
+ }
+ writeText(
+ [
+ {text: document.getElementById('inputInfoSet').value + '{right' + scaleX(0.005) + '}\u2605{right' + scaleX(0.005) + '}' + document.getElementById('inputInfoLanguage').value + ' {saveTextX}{artistbrush}{fontbelerenbsc}' + document.getElementById('inputInfoArtist').value, x: 97/1500, y: 2026/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: document.getElementById('inputInfoNumber').value + '{loadTextX}' + document.getElementById('inputInfoRarity').value, x: 97/1500, y: 1990/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '{right}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 97/1500, y: 1990/2100 + ptBoxShift, width: 1306/1500, height: 35/2100, font: 'mplantin', fontSize: 35/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: 'NOT FOR SALE', x: 97/1500, y: 2058/2100, width: 1306/1500, height: 30/2100, font: 'gothammedium', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '{right}CardConjurer.com', x: 97/1500, y: 2022/2100 + ptBoxShift, width: 1306/1500, height: 30/2100, font: 'mplantin', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']}
+ ], bottomInfoContext)
+}
\ No newline at end of file
diff --git a/data/scripts/versions/m15Planeswalker/regular.js b/data/scripts/versions/m15Planeswalker/regular.js
new file mode 100644
index 00000000..feefd0f7
--- /dev/null
+++ b/data/scripts/versions/m15Planeswalker/regular.js
@@ -0,0 +1,16 @@
+if (!loadedVersions.includes('planeswalkerRegular')) {
+ loadedVersions.push('planeswalkerRegular')
+ loadFrameImages([
+ ['White Frame', 'data/images/planeswalker/planeswalkerFrameW.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Blue Frame', 'data/images/planeswalker/planeswalkerFrameU.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Black Frame', 'data/images/planeswalker/planeswalkerFrameB.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Red Frame', 'data/images/planeswalker/planeswalkerFrameR.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Green Frame', 'data/images/planeswalker/planeswalkerFrameG.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Multicolored Frame', 'data/images/planeswalker/planeswalkerFrameM.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Artifact Frame', 'data/images/planeswalker/planeswalkerFrameA.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Colorless Frame', 'data/images/planeswalker/planeswalkerFrameC.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']],
+ ['Dark Twins', 'data/images/planeswalker/planeswalkerDarkTwins.png', 0, 0, 1, 1, ['Full', 'Pinline (planeswalker)', 'Title (planeswalker)', 'Type (planeswalker)', 'Frame (planeswalker)', 'Border (planeswalker)']]
+ ], 'frameClassPlaneswalkerRegular')
+}
+
+hideFrameImages('frameClassPlaneswalkerRegular')
\ No newline at end of file
diff --git a/data/scripts/versions/m15Planeswalker/version.js b/data/scripts/versions/m15Planeswalker/version.js
new file mode 100644
index 00000000..7ce6dc00
--- /dev/null
+++ b/data/scripts/versions/m15Planeswalker/version.js
@@ -0,0 +1,217 @@
+if (!loadedVersions.includes('planeswalker')) {
+ loadedVersions.push('planeswalker')
+ newCanvas('planeswalker')
+ loadMaskImages([['Pinline (planeswalker)', 'data/images/planeswalker/planeswalkerMaskPinline.png'], ['Border (planeswalker)', 'data/images/planeswalker/planeswalkerMaskBorder.png'], ['Title (planeswalker)', 'data/images/planeswalker/planeswalkerMaskTitle.png'], ['Type (planeswalker)', 'data/images/planeswalker/planeswalkerMaskType.png'], ['Frame (planeswalker)', 'data/images/planeswalker/planeswalkerMaskFrame.png'], ['Rules Text (planeswalker)', 'data/images/planeswalker/planeswalkerMaskText.png']])
+
+ document.getElementById('tabPicker').innerHTML += `Planeswalker
`
+ var planeswalkerTab = document.createElement("div")
+ planeswalkerTab.classList.add('hidden')
+ planeswalkerTab.id = 'planeswalkerTab'
+ planeswalkerTab.innerHTML = `
+ One:
+ Two:
+ Three:
+ Four:
+ For two-ability Planeswalkers only:
+ Use War of the Spark ability spacing
+ Reverse War of the Spark ability spacing
+ Dark ability boxes`
+ document.getElementById('tabOptions').appendChild(planeswalkerTab)
+ var planeswalkerPlus = new Image()
+ planeswalkerPlus.crossOrigin = 'anonymous'
+ planeswalkerPlus.src = 'data/images/planeswalker/planeswalkerPlus.png'
+ var planeswalkerNeutral = new Image()
+ planeswalkerNeutral.crossOrigin = "anonymous"
+ planeswalkerNeutral.src = 'data/images/planeswalker/planeswalkerNeutral.png'
+ var planeswalkerMinus = new Image()
+ planeswalkerMinus.crossOrigin = "anonymous"
+ planeswalkerMinus.src = 'data/images/planeswalker/planeswalkerMinus.png'
+ var lightToDarkPlaneswalker = new Image()
+ lightToDarkPlaneswalker.crossOrigin = 'anonymous'
+ lightToDarkPlaneswalker.src = 'data/images/planeswalker/abilityLineOdd.png'
+ var darkToLightPlaneswalker = new Image()
+ darkToLightPlaneswalker.crossOrigin = 'anonymous'
+ darkToLightPlaneswalker.src = 'data/images/planeswalker/abilityLineEven.png'
+ var lightToDarkPlaneswalkerDarkened= new Image()
+ lightToDarkPlaneswalkerDarkened.crossOrigin = 'anonymous'
+ lightToDarkPlaneswalkerDarkened.src = 'data/images/planeswalker/abilityLineOddDarkened.png'
+ var darkToLightPlaneswalkerDarkened = new Image()
+ darkToLightPlaneswalkerDarkened.crossOrigin = 'anonymous'
+ darkToLightPlaneswalkerDarkened.onload = function() {invertPlaneswalkerColors()}
+ darkToLightPlaneswalkerDarkened.src = 'data/images/planeswalker/abilityLineEvenDarkened.png'
+ setTimeout(planeswalkerAbilities, 1000)
+ //placeholders:
+ var darkColor = '#a4a4a4'
+ var lightColor = 'white'
+ var planeswalkerLightToDark = new Image()
+ var planeswalkerDarkToLight = new Image()
+ planeswalkerDarkToLight.onload = function(){planeswalkerAbilities()}
+}
+
+if (currentVersion != 'planeswalker') {
+ currentVersion = 'planeswalker'
+
+ loadTextOptions([
+ new cardText('Card Title', '', 130/1500, 149/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'black', ['oneLine=true']),
+ new cardText('Card Type', '', 130/1500, 1258/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'black', ['oneLine=true']),
+ new cardText('Ability 1', '', 270/1500, 1153/2100, 1120/1500, 624/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Ability 2', '', 270/1500, 1153/2100, 1120/1500, 624/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Ability 3', '', 270/1500, 1153/2100, 1120/1500, 624/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Ability 4', '', 270/1500, 1153/2100, 1120/1500, 624/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Loyalty', '', 1215/1500, 1954/2100, 210/1500, 78/2100, 'belerenbsc', 78/2100, 'white', ['oneLine=true,textAlign="center"'])
+ ])
+
+ artX = scaleX(100 / 1500)
+ artY = scaleY(190 / 2100)
+ artWidth = scaleX(1508 / 1500)
+ artHeight = scaleY(1730 / 2100)
+
+ manaCostXPath = '1316 - 78 * manaSymbolIndex'
+ manaCostYPath = '86'
+ manaCostDiameter = '70'
+ manaCostShadowOffset = '[-2, 6]'
+ manaCostDirection = 'reverse'
+
+ setSymbolX = [scaleX(1383/1500), 'right']
+ setSymbolY = [scaleY(1237/2100), 'center']
+ setSymbolWidth = scaleX(180/1500)
+ setSymbolHeight = scaleY(80/2100)
+
+ watermarkX = scaleX(0.5)
+ watermarkY = scaleY(1630/2100)
+ watermarkWidth = scaleX(1140/1500)
+ watermarkHeight = scaleY(484/2100)
+
+ bottomInfoFunction = 'bottomInfoPlaneswalker'
+
+ bottomInfoUpdated()
+}
+
+function bottomInfoPlaneswalker() {
+ bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight)
+ var ptBoxShift = 36/2100
+ writeText(
+ [
+ {text: document.getElementById('inputInfoSet').value + '{right' + scaleX(0.005) + '}\u2605{right' + scaleX(0.005) + '}' + document.getElementById('inputInfoLanguage').value + ' {saveTextX}{artistbrush}{fontbelerenbsc}' + document.getElementById('inputInfoArtist').value, x: 97/1500, y: 2026/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: document.getElementById('inputInfoNumber').value + '{loadTextX}' + document.getElementById('inputInfoRarity').value, x: 97/1500, y: 1990/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '{right}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 97/1500, y: 1990/2100 + ptBoxShift, width: 1306/1500, height: 35/2100, font: 'mplantin', fontSize: 35/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '*Not for Sale*', x: 97/1500, y: 2056/2100, width: 1306/1500, height: 30/2100, font: 'gothammedium', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '{right}CardConjurer.com', x: 97/1500, y: 2020/2100 + ptBoxShift, width: 1306/1500, height: 30/2100, font: 'mplantin', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']}
+ ], bottomInfoContext)
+}
+
+var planeswalkerAbilityLayout = [[0], [0, scaleY(784/1050)], [0, scaleY(730/1050), scaleY(863/1050)], [0, scaleY(697/1050), scaleY(784/1050), scaleY(878/1050)], [0, scaleY(683/1050), scaleY(756/1050), scaleY(830/1050), scaleY(904/1050)]]
+var planeswalkerAbilityCount = 3
+var ability1Y = 0, ability2Y = 0, ability3Y = 0, ability4Y = 0, ability5Y = cardHeight
+
+function planeswalkerAbilities() {
+ planeswalkerContext.clearRect(0, 0, cardWidth, cardHeight)
+ planeswalkerAbilityCount = 0
+ for (var i = 1; i < 5; i++) {
+ cardTextList[i + 1].y = 2
+ if (getFloat('inputPlaneswalker' + i) != 0) {
+ planeswalkerAbilityCount += 1;
+ } else {
+ break
+ }
+ }
+ if (planeswalkerAbilityCount > 0) {
+ ability1Y = scaleY(648/1050)
+ if (planeswalkerAbilityCount > 1) {
+ window.ability2Y = getFloat("inputPlaneswalker1") + ability1Y
+ if (planeswalkerAbilityCount > 2) {
+ ability3Y = getFloat('inputPlaneswalker2') + ability2Y
+ if (planeswalkerAbilityCount > 3) {
+ ability4Y = getFloat('inputPlaneswalker3') + ability3Y
+ // planeswalkerContext.writeText(version.textList[5][1], scale(133), ability4Y + (scale(950) - ability4Y) / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97");
+ cardTextList[5].y = (ability4Y) / cardHeight + cardTextList[5].fontSize - 10/2100
+ cardTextList[5].height = getFloat('inputPlaneswalker4') / cardHeight
+ }
+ // planeswalkerContext.writeText(version.textList[4][1], scale(133), ability3Y + getValue("inputPlaneswalker3") / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97");
+ cardTextList[4].y = (ability3Y) / cardHeight + cardTextList[4].fontSize - 10/2100
+ cardTextList[4].height = getFloat('inputPlaneswalker3') / cardHeight
+ }
+ // planeswalkerContext.writeText(version.textList[3][1], scale(133), ability2Y + getValue("inputPlaneswalker2") / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97");
+ cardTextList[3].y = (ability2Y) / cardHeight + cardTextList[3].fontSize - 10/2100
+ cardTextList[3].height = getFloat('inputPlaneswalker2') / cardHeight
+ }
+ // planeswalkerContext.writeText(version.textList[2][1], scale(133), ability1Y + getValue("inputPlaneswalker1") / 2, scale(555), 0, "mplantin", scale(38), "black", "lineSpace=0.97", "planeswalkerTextFunction");
+ cardTextList[2].y = (ability1Y) / cardHeight + cardTextList[2].fontSize - 10/2100
+ cardTextList[2].height = getFloat('inputPlaneswalker1') / cardHeight
+ planeswalkerTextFunction()
+ }
+}
+function planeswalkerTextFunction() {
+ planeswalkerContext.globalCompositeOperation = 'destination-over'
+ var lastAdjust = 0
+ var textBoxWidth = scaleX(1210/1500)
+ for (var i = 1; i < planeswalkerAbilityCount + 1; i++) {
+ if (i == planeswalkerAbilityCount) {
+ lastAdjust = 2 * cardHeight
+ }
+ if (i % 2 == 1) {
+ planeswalkerContext.fillStyle = lightColor
+ planeswalkerContext.globalAlpha = 0.608
+ planeswalkerContext.fillRect(scaleX(91/750), window['ability' + i + 'Y'] + scaleY(10/1050), textBoxWidth, window['ability' + (i + 1) + 'Y'] - window['ability' + i + 'Y'] - scaleY(20/1050) + lastAdjust)
+ if (i == 1 && planeswalkerAbilityCount != 1) {
+ planeswalkerContext.fillRect(scaleX(91/750), window['ability' + i + 'Y'], textBoxWidth, scaleY(10/1050))
+ }
+ planeswalkerContext.globalAlpha = 1
+ planeswalkerContext.drawImage(planeswalkerLightToDark, scaleX(91/750), window['ability' + (i + 1) + 'Y'] - scaleY(10/1050) + lastAdjust, textBoxWidth, scaleY(20/1050))
+ } else {
+ planeswalkerContext.fillStyle = darkColor
+ planeswalkerContext.globalAlpha = 0.706
+ planeswalkerContext.fillRect(scaleX(91/750), window['ability' + i + 'Y'] + scaleY(10/1050), textBoxWidth, window['ability' + (i + 1) + 'Y'] - window['ability' + i + 'Y'] - scaleY(20/1050) + lastAdjust)
+ planeswalkerContext.globalAlpha = 1
+ planeswalkerContext.drawImage(planeswalkerDarkToLight, scaleX(91/750), window['ability' + (i + 1)+ 'Y'] - scaleY(10/1050) + lastAdjust, textBoxWidth, scaleY(20/1050))
+ }
+ }
+ planeswalkerContext.globalCompositeOperation = 'destination-in'
+ planeswalkerContext.drawImage(maskImageList[maskNameList.indexOf('Rules Text (planeswalker)')], 0, 0, cardWidth, cardHeight)
+ planeswalkerContext.globalCompositeOperation = 'source-over'
+ planeswalkerContext.fillStyle = 'white'
+ planeswalkerContext.font = scaleY(30/1050) + 'px belerenbsc'
+ planeswalkerContext.textAlign = 'center'
+ for (var i = 1; i < planeswalkerAbilityCount + 1; i++) {
+ var planeswalkerIconValue = document.getElementById('inputPlaneswalker' + i + 'Icon').value
+ var planeswalkerMidpoint = getFloat('inputPlaneswalker' + i + '') / 2 + window['ability' + i + 'Y']
+ if (planeswalkerIconValue.includes('+')) {
+ planeswalkerContext.drawImage(planeswalkerPlus, scaleX(22/750), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] - scaleY(27/1050), scaleX(105/750), scaleY(76/1050))
+ planeswalkerContext.fillText(planeswalkerIconValue, scaleX(77/750), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] + scaleY(18/1050))
+ } else if (planeswalkerIconValue.includes('-')) {
+ planeswalkerContext.drawImage(planeswalkerMinus, scaleX(21/750), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] - scaleY(16/1050), scaleX(106/750), scaleY(74/1050))
+ planeswalkerContext.fillText(planeswalkerIconValue, scaleX(77/750), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] + scaleY(19/1050))
+ } else if (planeswalkerIconValue != '') {
+ planeswalkerContext.drawImage(planeswalkerNeutral, scaleX(21/750), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] - scaleY(16/1050), scaleX(106/750), scaleY(64/1050))
+ planeswalkerContext.fillText(planeswalkerIconValue, scaleX(77/750), planeswalkerAbilityLayout[planeswalkerAbilityCount][i] + scaleY(20/1050))
+ }
+ }
+ cardTextEdited()
+}
+function changePlaneswalkerAbilityLayout() {
+ if (document.getElementById('inputWARSpacing').checked) {
+ if (document.getElementById('inputWARReverse').checked) {
+ planeswalkerAbilityLayout[2] = [0, scaleY(784/1050), scaleY(878/1050)]
+ } else {
+ planeswalkerAbilityLayout[2] = [0, scaleY(697/1050), scaleY(784/1050)]
+ }
+ } else {
+ planeswalkerAbilityLayout[2] = [0, scaleY(730/1050), scaleY(863/1050)]
+ }
+ planeswalkerAbilities()
+}
+function invertPlaneswalkerColors() {
+ if (document.getElementById('inputColorInvert').checked) {
+ darkColor = '#5b5b5b'
+ lightColor = 'black'
+ planeswalkerLightToDark.src = lightToDarkPlaneswalkerDarkened.src
+ planeswalkerDarkToLight.src = darkToLightPlaneswalkerDarkened.src
+ } else {
+ darkColor = '#a4a4a4'
+ lightColor = 'white'
+ planeswalkerLightToDark.src = lightToDarkPlaneswalker.src
+ planeswalkerDarkToLight.src = darkToLightPlaneswalker.src
+ }
+}
+
+loadFramePackOptions([['regular', 'Regular']])
\ No newline at end of file
diff --git a/data/scripts/versions/m15Promo/floatingCrowns.js b/data/scripts/versions/m15Promo/floatingCrowns.js
new file mode 100644
index 00000000..9ceefce5
--- /dev/null
+++ b/data/scripts/versions/m15Promo/floatingCrowns.js
@@ -0,0 +1,15 @@
+if (!loadedVersions.includes('m15PromoFloatingCrown')) {
+ loadedVersions.push("m15PromoFloatingCrown")
+ loadFrameImages([
+ ['White Floating Legend Crown', 'data/images/m15/m15CrownFloatingW.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Blue Floating Legend Crown', 'data/images/m15/m15CrownFloatingU.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Black Floating Legend Crown', 'data/images/m15/m15CrownFloatingB.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Red Floating Legend Crown', 'data/images/m15/m15CrownFloatingR.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Green Floating Legend Crown', 'data/images/m15/m15CrownFloatingG.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Multicolored Floating Legend Crown', 'data/images/m15/m15CrownFloatingM.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Artifact Floating Legend Crown', 'data/images/m15/m15CrownFloatingA.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']],
+ ['Land Floating Legend Crown', 'data/images/m15/m15CrownFloatingA.png', 46/1500, 40/2100, 1408/1500, 215/2100, ['Full']]
+ ], 'frameClassM15PromoFloatingCrowns')
+}
+
+hideFrameImages('frameClassM15PromoFloatingCrowns')
\ No newline at end of file
diff --git a/data/scripts/versions/m15Promo/regular.js b/data/scripts/versions/m15Promo/regular.js
new file mode 100644
index 00000000..0b3c0c63
--- /dev/null
+++ b/data/scripts/versions/m15Promo/regular.js
@@ -0,0 +1,47 @@
+if (!loadedVersions.includes('m15PromoNickname')) {
+ loadedVersions.push("m15PromoNickname")
+ loadFrameImages([
+ ['Base Nickname Frame', 'data/images/m15Promo/m15PromoNicknameTextboxes.png', 0, 0, 1, 1, ['Full', 'Title (m15)', 'Type (m15 Promo)', 'Rules (m15 Promo)']],
+ ['White Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameW.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Blue Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameU.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Black Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameB.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Red Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameR.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Green Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameG.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Multicolored Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameM.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Artifact Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameA.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['Land Nickname Frame', 'data/images/m15Promo/m15PromoNicknameFrameL.png', 0, 0, 1, 1, ['Full', 'Pinline (m15 Promo)', 'Border (m15)']],
+ ['White Nickname Title', 'data/images/m15/m15NicknameTitleW.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Blue Nickname Title', 'data/images/m15/m15NicknameTitleU.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Black Nickname Title', 'data/images/m15/m15NicknameTitleB.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Red Nickname Title', 'data/images/m15/m15NicknameTitleR.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Green Nickname Title', 'data/images/m15/m15NicknameTitleG.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Multicolored Nickname Title', 'data/images/m15/m15NicknameTitleM.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Artifact Nickname Title', 'data/images/m15/m15NicknameTitleA.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Land Nickname Title', 'data/images/m15/m15NicknameTitleL.png', 74/1500, 85/2100, 1352/1500, 221/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['White Nickname Legend Crown', 'data/images/m15/m15NicknameCrownW.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Blue Nickname Legend Crown', 'data/images/m15/m15NicknameCrownU.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Black Nickname Legend Crown', 'data/images/m15/m15NicknameCrownB.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Red Nickname Legend Crown', 'data/images/m15/m15NicknameCrownR.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Green Nickname Legend Crown', 'data/images/m15/m15NicknameCrownG.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Multicolored Nickname Legend Crown', 'data/images/m15/m15NicknameCrownM.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Artifact Nickname Legend Crown', 'data/images/m15/m15NicknameCrownA.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['Land Nickname Legend Crown', 'data/images/m15/m15NicknameCrownL.png', 36/1500, 36/2100, 1428/1500, 270/2100, ['Full', 'Nickname Legend Crown (m15)']],
+ ['White Nickname Power/Toughness', 'data/images/m15/m15NicknamePTW.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Blue Nickname Power/Toughness', 'data/images/m15/m15NicknamePTU.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Black Nickname Power/Toughness', 'data/images/m15/m15NicknamePTB.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Red Nickname Power/Toughness', 'data/images/m15/m15NicknamePTR.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Green Nickname Power/Toughness', 'data/images/m15/m15NicknamePTG.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Multicolored Nickname Power/Toughness', 'data/images/m15/m15NicknamePTM.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Artifact Nickname Power/Toughness', 'data/images/m15/m15NicknamePTA.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Colorless Nickname Power/Toughness', 'data/images/m15/m15NicknamePTC.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['White Power/Toughness', 'data/images/m15/m15PTW.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Blue Power/Toughness', 'data/images/m15/m15PTU.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Black Power/Toughness', 'data/images/m15/m15PTB.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Red Power/Toughness', 'data/images/m15/m15PTR.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Green Power/Toughness', 'data/images/m15/m15PTG.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Multicolored Power/Toughness', 'data/images/m15/m15PTM.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']],
+ ['Artifact Power/Toughness', 'data/images/m15/m15PTA.png', 1136/1500, 1858/2100, 282/1500, 154/2100, ['Full']]
+ ], 'frameClassM15PromoNickname')
+}
+
+hideFrameImages('frameClassM15PromoNickname')
\ No newline at end of file
diff --git a/data/scripts/versions/m15Promo/version.js b/data/scripts/versions/m15Promo/version.js
new file mode 100644
index 00000000..55d31d27
--- /dev/null
+++ b/data/scripts/versions/m15Promo/version.js
@@ -0,0 +1,43 @@
+if (!loadedVersions.includes('m15Promo')) {
+ loadedVersions.push("m15Promo")
+ loadMaskImages([['Nickname Legend Crown (m15)', 'data/images/m15/m15MaskNicknameLegendCrownStrokeless.png'], ['Nickname Title (m15)', 'data/images/m15/m15MaskNicknameTitleStrokeless.png'], ['Pinline (m15 Promo)', 'data/images/m15Promo/m15PromoMaskPinline.png'], ['Type (m15 Promo)', 'data/images/m15Promo/m15PromoMaskType.png'], ['Rules (m15 Promo)', 'data/images/m15Promo/m15PromoMaskRules.png']])
+}
+
+if (currentVersion != 'm15Promo') {
+ currentVersion = 'm15Promo'
+
+ loadTextOptions([
+ new cardText('Card Nickname', '', 126/1500, 188/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'white', ['oneLine=true']),
+ new cardText('Card Title', '', 210/1500, 276/2100, 1080/1500, 48/2100, 'belerenb', 48/2100, 'white', ['oneLine=true', 'textAlign="center"', 'fontStyle="italic "']),
+ new cardText('Card Type', '', 126/1500, 1439/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'white', ['oneLine=true']),
+ new cardText('Rules Text', '', 135/1500, 1545/2100, 1230/1500, 450/2100, 'mplantin', 74/2100, 'white'),
+ new cardText('Power/Toughness', '', 1191/1500, 1954/2100, 205/1500, 78/2100, 'belerenbsc', 78/2100, 'white', ['oneLine=true,textAlign="center"'])
+ ])
+
+ artX = 0
+ artY = 0
+ artWidth = scaleX(1)
+ artHeight = scaleY(1936 / 2100)
+
+ manaCostXPath = '1316 - 78 * manaSymbolIndex'
+ manaCostYPath = '121'
+ manaCostDiameter = '70'
+ manaCostShadowOffset = '[-2, 6]'
+ manaCostDirection = 'reverse'
+
+ setSymbolX = [scaleX(1382/1500), 'right']
+ setSymbolY = [scaleY(1416/2100), 'center']
+ setSymbolWidth = scaleX(180/1500)
+ setSymbolHeight = scaleY(86/2100)
+
+ watermarkX = scaleX(0.5)
+ watermarkY = scaleY(1630/2100)
+ watermarkWidth = scaleX(1140/1500)
+ watermarkHeight = scaleY(484/2100)
+
+ bottomInfoFunction = 'bottomInfoM15'
+
+ bottomInfoUpdated()
+}
+
+loadFramePackOptions([['regular', 'Regular'], ['floatingCrowns', 'Floating Crowns']])
\ No newline at end of file
diff --git a/data/scripts/versions/seventh/regular.js b/data/scripts/versions/seventh/regular.js
new file mode 100644
index 00000000..f807ded3
--- /dev/null
+++ b/data/scripts/versions/seventh/regular.js
@@ -0,0 +1,21 @@
+if (!loadedVersions.includes('seventhRegular')) {
+ loadedVersions.push('seventhRegular')
+ loadFrameImages([
+ ['White Frame', 'data/images/seventh/seventhFrameW.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Blue Frame', 'data/images/seventh/seventhFrameU.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Black Frame', 'data/images/seventh/seventhFrameB.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Red Frame', 'data/images/seventh/seventhFrameR.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Green Frame', 'data/images/seventh/seventhFrameG.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Multicolored Frame', 'data/images/seventh/seventhFrameM.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Artifact Frame', 'data/images/seventh/seventhFrameA.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['White Land Frame', 'data/images/seventh/seventhFrameWL.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Blue Land Frame', 'data/images/seventh/seventhFrameUL.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Black Land Frame', 'data/images/seventh/seventhFrameBL.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Red Land Frame', 'data/images/seventh/seventhFrameRL.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Green Land Frame', 'data/images/seventh/seventhFrameGL.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Land Frame', 'data/images/seventh/seventhFrameCL.png', 0, 0, 1, 1, ['Full', 'Pinline (seventh)', 'Rules (seventh)', 'Frame (seventh)', 'Border (seventh)']],
+ ['Foil Stamp', 'data/images/seventh/seventhFoilStamp.png', 81/744, 867/1039, 300/744, 115/1039, ['Full']]
+ ], 'frameClassSeventhRegular')
+}
+
+hideFrameImages('frameClassSeventhRegular')
\ No newline at end of file
diff --git a/data/scripts/versions/seventh/version.js b/data/scripts/versions/seventh/version.js
new file mode 100644
index 00000000..51f09d19
--- /dev/null
+++ b/data/scripts/versions/seventh/version.js
@@ -0,0 +1,52 @@
+if (!loadedVersions.includes('seventh')) {
+ loadedVersions.push('seventh')
+ loadMaskImages([['Border (seventh)', 'data/images/seventh/seventhMaskBorder.png'], ['Pinline (seventh)', 'data/images/seventh/seventhMaskPinline.png'], ['Rules (seventh)', 'data/images/seventh/seventhMaskRules.png'], ['Frame (seventh)', 'data/images/seventh/seventhMaskFrame.png']])
+}
+
+if (currentVersion != 'seventh') {
+ currentVersion = 'seventh'
+
+ loadTextOptions([
+ new cardText('Card Title', '', 165/1500, 162/2100, 1170/1500, 84/2100, 'goudymedieval', 85/2100, 'white', ['oneLine=true','shadow=' + scaleY(4/2100)]),
+ new cardText('Card Type', '', 165/1500, 1228/2100, 1170/1500, 66/2100, 'mplantin', 67/2100, 'white', ['oneLine=true','shadow=' + scaleY(4/2100)]),
+ new cardText('Rules Text', '', 196/1500, 1327/2100, 1112/1500, 590/2100, 'mplantin', 73/2100, 'black'),
+ new cardText('Power/Toughness', '', 1190/1500, 1969/2100, 230/1500, 78/2100, 'mplantin', 95/2100, 'white', ['oneLine=true,textAlign="center"','shadow=' + scaleY(2/2100)])
+ ])
+
+ artX = scaleX(177 / 1500)
+ artY = scaleY(206 / 2100)
+ artWidth = scaleX(1144 / 1500)
+ artHeight = scaleY(934 / 2100)
+
+ manaCostXPath = '1306 - 83 * manaSymbolIndex'
+ manaCostYPath = '99'
+ manaCostDiameter = '72'
+ manaCostShadowOffset = '[0, 0]'
+ manaCostDirection = 'reverse'
+
+ setSymbolX = [scaleX(1337/1500), 'right']
+ setSymbolY = [scaleY(1209/2100), 'center']
+ setSymbolWidth = scaleX(180/1500)
+ setSymbolHeight = scaleY(80/2100)
+
+ watermarkX = scaleX(0.5)
+ watermarkY = scaleY(1630/2100)
+ watermarkWidth = scaleX(1140/1500)
+ watermarkHeight = scaleY(484/2100)
+
+ bottomInfoFunction = 'bottomInfoSeventh'
+
+ bottomInfoUpdated()
+}
+
+loadFramePackOptions([['regular', 'Regular']])
+
+function bottomInfoSeventh() {
+ bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight)
+ writeText(
+ [
+ {text: '{center}Illus: ' + document.getElementById('inputInfoArtist').value, x: 92/1500, y: 1929/2100, width: 1316/1500, height: 59/2100, font: 'mplantin', fontSize: 59/2100, fontColor: 'white', otherParameters: ['oneLine=true','shadow=' + scaleY(4/2100)]},
+ {text: '{center}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 92/1500, y: 1972/2100, width: 1316/1500, height: 36/2100, font: 'mplantin', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true','shadow=' + scaleY(4/2100)]},
+ {text: '{center}*Not for Sale* CardConjurer.com', x: 92/1500, y: 2005/2100, width: 1316/1500, height: 30/2100, font: 'mplantin', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true','shadow=' + scaleY(4/2100)]},
+ ], bottomInfoContext)
+}
\ No newline at end of file
diff --git a/data/scripts/versions/storybook/regular.js b/data/scripts/versions/storybook/regular.js
new file mode 100644
index 00000000..c642ef39
--- /dev/null
+++ b/data/scripts/versions/storybook/regular.js
@@ -0,0 +1,13 @@
+if (!loadedVersions.includes('storybookRegular')) {
+ loadedVersions.push('storybookRegular')
+ loadFrameImages([
+ ['White Frame', 'data/images/storybook/storybookFrameW.png', 0, 0, 1, 1, ['Full']],
+ ['Blue Frame', 'data/images/storybook/storybookFrameU.png', 0, 0, 1, 1, ['Full']],
+ ['Black Frame', 'data/images/storybook/storybookFrameB.png', 0, 0, 1, 1, ['Full']],
+ ['Red Frame', 'data/images/storybook/storybookFrameR.png', 0, 0, 1, 1, ['Full']],
+ ['Green Frame', 'data/images/storybook/storybookFrameG.png', 0, 0, 1, 1, ['Full']],
+ ['Colorless Frame', 'data/images/storybook/storybookFrameC.png', 0, 0, 1, 1, ['Full']]
+ ], 'frameClassStorybookRegular')
+}
+
+hideFrameImages('frameClassStorybookRegular')
\ No newline at end of file
diff --git a/data/scripts/versions/storybook/version.js b/data/scripts/versions/storybook/version.js
new file mode 100644
index 00000000..d0d620b1
--- /dev/null
+++ b/data/scripts/versions/storybook/version.js
@@ -0,0 +1,62 @@
+
+if (!loadedVersions.includes('storybook')) {
+ loadedVersions.push('storybook')
+ // loadMaskImages([['Storybook Right Half', 'data/images/storybook/maskStorybookRightHalf.png']])
+}
+
+if (currentVersion != 'storybook') {
+ currentVersion = 'storybook'
+
+ loadTextOptions([
+ new cardText('Card Title', '', 222/1500, 187/2100, 1248/1500, 80/2100, 'belerenb', 80/2100, 'black', ['oneLine=true']),
+ new cardText('Card Type', '', 345/1500, 1268/2100, 1248/1500, 68/2100, 'belerenb', 68/2100, 'black', ['oneLine=true']),
+ new cardText('Rules Text', '', 124/1500, 1348/2100, 600/1500, 624/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Rules Text (Right)', '', 780/1500, 1348/2100, 600/1500, 624/2100, 'mplantin', 74/2100, 'black'),
+ new cardText('Power/Toughness', '', 1190/1500, 1950/2100, 210/1500, 78/2100, 'belerenbsc', 78/2100, 'black', ['oneLine=true,textAlign="center"'])
+ ])
+
+ artX = scaleX(50/1500)
+ artY = scaleY(54/2100)
+ artWidth = scaleX(1405/1500)
+ artHeight = scaleY(1175/2100)
+
+ manaCostXPath = '1316 - 78 * manaSymbolIndex'
+ manaCostYPath = '121'
+ manaCostDiameter = '70'
+ manaCostShadowOffset = '[-2, 6]'
+ manaCostDirection = 'reverse'
+
+ setSymbolX = [scaleX(1328/1500), 'center']
+ setSymbolY = [scaleY(1245/2100), 'center']
+ setSymbolWidth = scaleX(74/1500)
+ setSymbolHeight = scaleY(74/2100)
+
+ watermarkX = scaleX(0.5)
+ watermarkY = scaleY(1630/2100)
+ watermarkWidth = scaleX(1140/1500)
+ watermarkHeight = scaleY(484/2100)
+
+ bottomInfoFunction = 'bottomInfoStorybook'
+
+ bottomInfoUpdated()
+}
+
+loadFramePackOptions([['regular', 'Regular']])
+
+function bottomInfoStorybook() {
+ bottomInfoContext.clearRect(0, 0, cardWidth, cardHeight)
+ var ptBoxShift = 0
+ for (var i = 0; i < cardTextList.length; i++) {
+ if (cardTextList[i].name == 'Power/Toughness' && cardTextList[i].text != '') {
+ ptBoxShift = 36/2100
+ }
+ }
+ writeText(
+ [
+ {text: document.getElementById('inputInfoSet').value + '{right' + scaleX(0.005) + '}\u2605{right' + scaleX(0.005) + '}' + document.getElementById('inputInfoLanguage').value + ' {saveTextX}{artistbrush}{fontbelerenbsc}' + document.getElementById('inputInfoArtist').value, x: 97/1500, y: 2036/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: document.getElementById('inputInfoNumber').value + '{loadTextX}' + document.getElementById('inputInfoRarity').value, x: 97/1500, y: 2000/2100, width: 1306/1500, height: 36/2100, font: 'gothammedium', fontSize: 36/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '{right}\u2122 & \u00a9 ' + date.getFullYear() + ' Wizards of the Coast', x: 97/1500, y: 2000/2100 + ptBoxShift, width: 1306/1500, height: 35/2100, font: 'mplantin', fontSize: 35/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: 'NOT FOR SALE', x: 97/1500, y: 2066/2100, width: 1306/1500, height: 30/2100, font: 'gothammedium', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']},
+ {text: '{right}CardConjurer.com', x: 97/1500, y: 2030/2100 + ptBoxShift, width: 1306/1500, height: 30/2100, font: 'mplantin', fontSize: 30/2100, fontColor: 'white', otherParameters: ['oneLine=true']}
+ ], bottomInfoContext)
+}
\ No newline at end of file
diff --git a/index.html b/index.html
index deee2032..b96ba353 100644
--- a/index.html
+++ b/index.html
@@ -37,11 +37,28 @@
Watermark
Collector
Import
- Advanced
+