diff --git a/creator/index.php b/creator/index.php
index 36b959ed..a76228e6 100644
--- a/creator/index.php
+++ b/creator/index.php
@@ -639,14 +639,12 @@ include('../globalHTML/header-1.php');
Endiron
Beezchurgr
John C.
- Michael J.
Benjamin D.
Brent O.
Austin M.
Elry
Edward E.
Blake M.
- Avery D.
Zachary C.
Andrew K.
Joshua R.
@@ -708,6 +706,8 @@ include('../globalHTML/header-1.php');
J. Skene
Cesar P.
Elizabeth S.
+ Avery D.
+ Michael J.
diff --git a/img/frames/neo/basics/b.svg b/img/frames/neo/basics/b.svg
new file mode 100644
index 00000000..633bbc3b
--- /dev/null
+++ b/img/frames/neo/basics/b.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/neo/basics/bThumb.png b/img/frames/neo/basics/bThumb.png
new file mode 100644
index 00000000..831b82f8
Binary files /dev/null and b/img/frames/neo/basics/bThumb.png differ
diff --git a/img/frames/neo/basics/c.svg b/img/frames/neo/basics/c.svg
new file mode 100644
index 00000000..5f61af21
--- /dev/null
+++ b/img/frames/neo/basics/c.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/neo/basics/cThumb.png b/img/frames/neo/basics/cThumb.png
new file mode 100644
index 00000000..250f2ea0
Binary files /dev/null and b/img/frames/neo/basics/cThumb.png differ
diff --git a/img/frames/neo/basics/g.svg b/img/frames/neo/basics/g.svg
new file mode 100644
index 00000000..73a4f3fb
--- /dev/null
+++ b/img/frames/neo/basics/g.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/neo/basics/gThumb.png b/img/frames/neo/basics/gThumb.png
new file mode 100644
index 00000000..7b6eaff3
Binary files /dev/null and b/img/frames/neo/basics/gThumb.png differ
diff --git a/img/frames/neo/basics/r.svg b/img/frames/neo/basics/r.svg
new file mode 100644
index 00000000..2c98be99
--- /dev/null
+++ b/img/frames/neo/basics/r.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/neo/basics/rThumb.png b/img/frames/neo/basics/rThumb.png
new file mode 100644
index 00000000..4b379fb9
Binary files /dev/null and b/img/frames/neo/basics/rThumb.png differ
diff --git a/img/frames/neo/basics/u.svg b/img/frames/neo/basics/u.svg
new file mode 100644
index 00000000..9780a668
--- /dev/null
+++ b/img/frames/neo/basics/u.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/neo/basics/uThumb.png b/img/frames/neo/basics/uThumb.png
new file mode 100644
index 00000000..e7b5f923
Binary files /dev/null and b/img/frames/neo/basics/uThumb.png differ
diff --git a/img/frames/neo/basics/w.svg b/img/frames/neo/basics/w.svg
new file mode 100644
index 00000000..52eab9fa
--- /dev/null
+++ b/img/frames/neo/basics/w.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/neo/basics/wThumb.png b/img/frames/neo/basics/wThumb.png
new file mode 100644
index 00000000..62343136
Binary files /dev/null and b/img/frames/neo/basics/wThumb.png differ
diff --git a/js/creator-23.js b/js/creator-23.js
index 5930a885..be8d3bb0 100644
--- a/js/creator-23.js
+++ b/js/creator-23.js
@@ -2189,20 +2189,22 @@ function stretchSVGReal(data, frameObject) {
const name = stretch.name;
const oldData = returnData.split(name + '" d="')[1].split('" style=')[0];
var newData = '';
- const listData = oldData.replace(/L/g, '|L').replace(/C/g, '|C').replace(/M/g, '|M').replace(/Z/g, '|Z').replace('|', '').split('|');
+ const listData = oldData.split(/(?=[clmz])/gi);
for (i = 0; i < listData.length; i ++) {
- const item = listData[i]
- if (targets.includes(i)) {
- if (item[0] == 'C') {
+ const item = listData[i];
+ if (targets.includes(i) || targets.includes(-i)) {
+ let sign = 1;
+ if (i != 0 && targets.includes(-i)) {sign = -1};
+ if (item[0] == 'C' || item[0] == 'c') {
newCoords = [];
item.slice(1).split(' ').forEach(pair => {
coords = pair.split(',');
- newCoords.push((scaleWidth(change[0]) + parseFloat(coords[0])) + ',' + (scaleHeight(change[1]) + parseFloat(coords[1])));
+ newCoords.push((scaleWidth(change[0]) * sign + parseFloat(coords[0])) + ',' + (scaleHeight(change[1]) * sign + parseFloat(coords[1])));
});
- newData += 'C' + newCoords.join(' ');
+ newData += item[0] + newCoords.join(' ');
} else {
- const coords = item.slice(1).split(',');
- newData += item[0] + (scaleWidth(change[0]) + parseFloat(coords[0])) + ',' + (scaleHeight(change[1]) + parseFloat(coords[1]))
+ const coords = item.slice(1).split(/[, ]/);
+ newData += item[0] + (scaleWidth(change[0]) * sign + parseFloat(coords[0])) + ',' + (scaleHeight(change[1]) * sign + parseFloat(coords[1]))
}
} else {
newData += item;
diff --git a/js/frames/groupTextless-4.js b/js/frames/groupTextless-4.js
index 854210ea..6c183190 100644
--- a/js/frames/groupTextless-4.js
+++ b/js/frames/groupTextless-4.js
@@ -1,12 +1,15 @@
loadFramePacks([
- {name:'Generic Showcase', value:'TextlessGenericShowcase'},
- {name:'Magic Fest Promos', value:'MagicFest'},
- {name:'Inventions', value:'TextlessInvention'},
- {name:'Unstable Basics', value:'Unstable'},
- {name:'Unhinged Basics', value:'Unhinged'},
+ {name:'Basic Lands', value:'disabled'},
+ {name:'Kamigawa Basics (NEO)', value:'NeoBasics'},
{name:'Fullart Basics (THB)', value:'TextlessBasics'},
{name:'Fullart Basics (ZEN)', value:'ZendikarBasic-1'},
{name:'Fullart Snow Basics', value:'FullartBasicRoundBottom'},
+ {name:'Unstable Basics (UST)', value:'Unstable'},
+ {name:'Unhinged Basics (UNH)', value:'Unhinged'},
+ {name:'Other', value:'disabled'},
+ {name:'Generic Showcase', value:'TextlessGenericShowcase'},
+ {name:'Magic Fest Promos', value:'MagicFest'},
+ {name:'Inventions', value:'TextlessInvention'},
{name:'Seventh', value:'SeventhTextless'},
{name:'Addons', value:'disabled'},
{name:'Legend Crowns', value:'M15LegendCrowns'},
diff --git a/js/frames/packNeoBasics.js b/js/frames/packNeoBasics.js
new file mode 100644
index 00000000..a874d2bf
--- /dev/null
+++ b/js/frames/packNeoBasics.js
@@ -0,0 +1,45 @@
+//Create objects for common properties across available frames
+var masks = []//[{src:'/img/frames/mysticalArchive/jp/pinline.svg', name:'Pinline'}, {src:'/img/frames/mysticalArchive/jp/rightHalf.svg', name:'Right Half'}];
+var stretch = [
+ {name:'outline', targets: [3, 11], change:[0, 0]},
+ {name:'top', targets: [0, -2], change:[0, 0]},
+ {name:'bottom', targets: [0], change:[0, 0]},
+ {name:'symbol', targets: [0], change:[0, 0]}
+];
+// Notification
+notify('When you load the Kamigawa Basics frame version, a "Kamigawa Basics" tab will appear. This tab allows you to control the height of the title bar.', 15);
+//defines available frames
+availableFrames = [
+ {name:'White Frame', src:'/img/frames/neo/basics/w.svg', stretch:stretch, masks:masks},
+ {name:'Blue Frame', src:'/img/frames/neo/basics/u.svg', stretch:stretch, masks:masks},
+ {name:'Black Frame', src:'/img/frames/neo/basics/b.svg', stretch:stretch, masks:masks},
+ {name:'Red Frame', src:'/img/frames/neo/basics/r.svg', stretch:stretch, masks:masks},
+ {name:'Green Frame', src:'/img/frames/neo/basics/g.svg', stretch:stretch, masks:masks},
+ {name:'Colorless Frame', src:'/img/frames/neo/basics/c.svg', stretch:stretch, masks:masks}
+];
+//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 = 'neoBasics';
+ card.onload = '/js/frames/versionNeoBasics.js';
+ loadScript('/js/frames/versionNeoBasics.js');
+ //art bounds
+ card.artBounds = {x:0, y:0, width:1, height:0.9286};
+ autoFitArt();
+ //set symbol bounds
+ card.setSymbolBounds = {x:-1, y:-1, width:0, height:0, vertical:'center', horizontal: 'center'};
+ resetSetSymbol();
+ //watermark bounds
+ card.watermarkBounds = {x:0.5, y:0.7705, width:0.75, height:0.2362};
+ resetWatermark();
+ //text
+ loadTextOptions({
+ title: {name:'Title', text:'', x:0.12, y:0.1048, width:0.1734, height:0.2381, font:'japanese-title', size:0.1191, align:'center', vertical:true, color:'white'}
+ });
+}
+//loads available frames
+loadFramePack();
\ No newline at end of file
diff --git a/js/frames/versionNeoBasics.js b/js/frames/versionNeoBasics.js
new file mode 100644
index 00000000..8a8ff79c
--- /dev/null
+++ b/js/frames/versionNeoBasics.js
@@ -0,0 +1,37 @@
+//checks to see if it needs to run
+if (!loadedVersions.includes('/js/frames/versionNeoBasics.js')) {
+ loadedVersions.push('/js/frames/versionNeoBasics.js');
+ document.querySelector('#creator-menu-tabs').innerHTML += 'Kamigawa Basics
';
+ var newHTML = document.createElement('div');
+ newHTML.id = 'creator-menu-neoBasics';
+ newHTML.classList.add('hidden');
+ newHTML.innerHTML = `
+
+
+
+
+ `;
+ document.querySelector('#creator-menu-sections').appendChild(newHTML);
+ loadScript('/js/frames/manaSymbolsMysticalArchiveJP.js');
+}
+
+function stretchNeoBasics() {
+ const change = [0, (parseInt(document.querySelector('#nb-change').value) - 330) / 2100];
+ // var targets = []
+ // document.querySelector('#targets').value.split(' ').forEach(item => targets.push(parseInt(item)));
+ card.frames.forEach(frame => {
+ if (frame.src.includes('neo/basics/') && 'stretch' in frame) {
+ frame.stretch[0].change = change;
+ // frame.stretch[0].targets = targets;
+ frame.stretch[1].change = change;
+ frame.stretch[2].change = change;
+ frame.stretch[3].change = change;
+ card.text.title.height = change[1] + 500 / 2100;
+ drawTextBuffer();
+ stretchSVG(frame);
+ }
+ });
+}