Add Ikoria Crystal frame

This commit is contained in:
Josh birnholz
2023-04-04 18:42:47 -04:00
parent d25ad1f145
commit cd26e16da0
45 changed files with 53 additions and 3 deletions

3
.gitignore vendored
View File

@@ -31,6 +31,3 @@ access.log
error.log
fly.toml
img/frames/crystal/*
js/frames/packCrystal.js

BIN
img/frames/crystal/a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
img/frames/crystal/b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

BIN
img/frames/crystal/g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
img/frames/crystal/m.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
img/frames/crystal/pt/a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
img/frames/crystal/pt/b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
img/frames/crystal/pt/c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
img/frames/crystal/pt/g.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
img/frames/crystal/pt/m.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
img/frames/crystal/pt/r.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
img/frames/crystal/pt/u.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
img/frames/crystal/pt/w.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
img/frames/crystal/r.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1010 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

BIN
img/frames/crystal/type.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

BIN
img/frames/crystal/u.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
img/frames/crystal/w.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@@ -3528,6 +3528,7 @@ function changeCardIndex() {
return '{i}' + a + '{/i}';
});
rulesText = curlyQuotes(rulesText).replace(/{Q}/g, '{untap}').replace(/{\u221E}/g, "{inf}").replace(/• /g, '• {indent}');
rulesText = rulesText.replace('(If this card is your chosen companion, you may put it into your hand from outside the game for {3} any time you could cast a sorcery.)', '(If this card is your chosen companion, you may put it into your hand from outside the game for {3} as a sorcery.)')
card.text.rules.text = langFontCode + rulesText;
if (cardToImport.flavor_text) {
var flavorText = cardToImport.flavor_text;

View File

@@ -28,6 +28,7 @@ const frameNames = new Map ([
['Colorshifted (Planar Chaos)', 'Colorshifted'],
['Brawl Legend Crowns', 'Brawl'],
//showcase
['Ikoria Crystal (MOM)', 'Crystal'],
['Ravnica Architecture (MOM)', 'Ravnica'],
['Oil Slick (ONE)', 'OilSlick'],
['Stained Glass (DMU)', 'DMUStainedGlass'],

View File

@@ -1,5 +1,6 @@
loadFramePacks([
{name:'Set Showcase Frames (Chronological)', value:'disabled'},
{name:'Ikoria Crystal (MOM)', value:'Crystal'},
{name:'Ravnica Architecture (MOM)', value:'Ravnica'},
{name:'Oil Slick (ONE)', value:'OilSlick'},
{name:'Stained Glass (DMU)', value:'DMUStainedGlass'},

50
js/frames/packCrystal.js Normal file
View File

@@ -0,0 +1,50 @@
//Create objects for common properties across available frames
var masks = [{src:'/img/frames/crystal/pinline.png', name:'Pinline'}, {src:'/img/frames/crystal/title.png', name:'Title'}, {src:'/img/frames/crystal/type.png', name:'Type'}, {src:'/img/frames/crystal/rules.png', name:'Rules'}, {src:'/img/frames/crystal/border.png', name:'Border'}];
var bounds = {x:1157/1500, y:1847/2100, width:294/1500, height:170/2100};
//defines available frames
availableFrames = [
{name:'White Frame', src:'/img/frames/crystal/w.png', masks:masks},
{name:'Blue Frame', src:'/img/frames/crystal/u.png', masks:masks},
{name:'Black Frame', src:'/img/frames/crystal/b.png', masks:masks},
{name:'Red Frame', src:'/img/frames/crystal/r.png', masks:masks},
{name:'Green Frame', src:'/img/frames/crystal/g.png', masks:masks},
{name:'Multicolored Frame', src:'/img/frames/crystal/m.png', masks:masks},
{name:'Artifact Frame', src:'/img/frames/crystal/a.png', masks:masks},
{name:'White Power/Toughness', src:'/img/frames/crystal/pt/w.png', bounds:bounds},
{name:'Blue Power/Toughness', src:'/img/frames/crystal/pt/u.png', bounds:bounds},
{name:'Black Power/Toughness', src:'/img/frames/crystal/pt/b.png', bounds:bounds},
{name:'Red Power/Toughness', src:'/img/frames/crystal/pt/r.png', bounds:bounds},
{name:'Green Power/Toughness', src:'/img/frames/crystal/pt/g.png', bounds:bounds},
{name:'Multicolored Power/Toughness', src:'/img/frames/crystal/pt/m.png', bounds:bounds},
{name:'Artifact Power/Toughness', src:'/img/frames/crystal/pt/a.png', bounds:bounds},
{name:'Colorless Power/Toughness', src:'/img/frames/crystal/pt/c.png', bounds:bounds}
];
//disables/enables the "Load Frame Version" button
document.querySelector('#loadFrameVersion').disabled = false;
//defines process for loading this version, if applicable
document.querySelector('#loadFrameVersion').onclick = async function() {
//resets things so that every frame doesn't have to
await resetCardIrregularities();
//sets card version
card.version = 'crystal';
//art bounds
card.artBounds = {x:0, y:0, width:1, height:0.9224};
autoFitArt();
//set symbol bounds
card.setSymbolBounds = {x:0.9213, y:0.5910, width:0.12, height:0.0410, vertical:'center', horizontal: 'right'};
resetSetSymbol();
//watermark bounds
card.watermarkBounds = {x:0.5, y:0.7762, width:0.75, height:0.2305};
resetWatermark();
//text
loadTextOptions({
mana: {name:'Mana Cost', text:'', y:0.0613, width:0.9292, height:71/2100, oneLine:true, size:71/1638, align:'right', shadowX:-0.001, shadowY:0.0029, manaCost:true, manaSpacing:0},
title: {name:'Title', text:'', x:0.0854, y:0.0522, width:0.8292, height:0.0543, oneLine:true, font:'belerenb', size:0.0381, color:'white'},
type: {name:'Type', text:'', x:0.0854, y:0.5664, width:0.8292, height:0.0543, oneLine:true, font:'belerenb', size:0.0324, color:'white'},
rules: {name:'Rules Text', text:'', x:142/1500, y:1342/2100, width:1207/1500, height:573/2100, size:0.0362, color:'white'},
pt: {name:'Power/Toughness', text:'', x:1195/1500, y:1904/2100, width:218/1500, height:89/2100, size:0.0372, font:'belerenbsc', oneLine:true, align:'center', color:'white'}
});
}
//loads available frames
loadFramePack();