diff --git a/img/frames/m15/fullText/a.png b/img/frames/m15/fullText/a.png
new file mode 100644
index 00000000..690f2218
Binary files /dev/null and b/img/frames/m15/fullText/a.png differ
diff --git a/img/frames/m15/fullText/aThumb.png b/img/frames/m15/fullText/aThumb.png
new file mode 100644
index 00000000..71e36012
Binary files /dev/null and b/img/frames/m15/fullText/aThumb.png differ
diff --git a/img/frames/m15/fullText/b.png b/img/frames/m15/fullText/b.png
new file mode 100644
index 00000000..7fedbc10
Binary files /dev/null and b/img/frames/m15/fullText/b.png differ
diff --git a/img/frames/m15/fullText/bThumb.png b/img/frames/m15/fullText/bThumb.png
new file mode 100644
index 00000000..abd5231f
Binary files /dev/null and b/img/frames/m15/fullText/bThumb.png differ
diff --git a/img/frames/m15/fullText/bl.png b/img/frames/m15/fullText/bl.png
new file mode 100644
index 00000000..58558964
Binary files /dev/null and b/img/frames/m15/fullText/bl.png differ
diff --git a/img/frames/m15/fullText/blThumb.png b/img/frames/m15/fullText/blThumb.png
new file mode 100644
index 00000000..11054c4b
Binary files /dev/null and b/img/frames/m15/fullText/blThumb.png differ
diff --git a/img/frames/m15/fullText/frame.svg b/img/frames/m15/fullText/frame.svg
new file mode 100644
index 00000000..69c1369d
--- /dev/null
+++ b/img/frames/m15/fullText/frame.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/m15/fullText/frameThumb.png b/img/frames/m15/fullText/frameThumb.png
new file mode 100644
index 00000000..15d43a78
Binary files /dev/null and b/img/frames/m15/fullText/frameThumb.png differ
diff --git a/img/frames/m15/fullText/g.png b/img/frames/m15/fullText/g.png
new file mode 100644
index 00000000..52dbe230
Binary files /dev/null and b/img/frames/m15/fullText/g.png differ
diff --git a/img/frames/m15/fullText/gThumb.png b/img/frames/m15/fullText/gThumb.png
new file mode 100644
index 00000000..624405a7
Binary files /dev/null and b/img/frames/m15/fullText/gThumb.png differ
diff --git a/img/frames/m15/fullText/gl.png b/img/frames/m15/fullText/gl.png
new file mode 100644
index 00000000..0155def1
Binary files /dev/null and b/img/frames/m15/fullText/gl.png differ
diff --git a/img/frames/m15/fullText/glThumb.png b/img/frames/m15/fullText/glThumb.png
new file mode 100644
index 00000000..e8cb7ea2
Binary files /dev/null and b/img/frames/m15/fullText/glThumb.png differ
diff --git a/img/frames/m15/fullText/l.png b/img/frames/m15/fullText/l.png
new file mode 100644
index 00000000..e8d0fc1a
Binary files /dev/null and b/img/frames/m15/fullText/l.png differ
diff --git a/img/frames/m15/fullText/lThumb.png b/img/frames/m15/fullText/lThumb.png
new file mode 100644
index 00000000..d68c8f86
Binary files /dev/null and b/img/frames/m15/fullText/lThumb.png differ
diff --git a/img/frames/m15/fullText/m.png b/img/frames/m15/fullText/m.png
new file mode 100644
index 00000000..8e24638b
Binary files /dev/null and b/img/frames/m15/fullText/m.png differ
diff --git a/img/frames/m15/fullText/mThumb.png b/img/frames/m15/fullText/mThumb.png
new file mode 100644
index 00000000..e52cd352
Binary files /dev/null and b/img/frames/m15/fullText/mThumb.png differ
diff --git a/img/frames/m15/fullText/ml.png b/img/frames/m15/fullText/ml.png
new file mode 100644
index 00000000..df68b372
Binary files /dev/null and b/img/frames/m15/fullText/ml.png differ
diff --git a/img/frames/m15/fullText/mlThumb.png b/img/frames/m15/fullText/mlThumb.png
new file mode 100644
index 00000000..881d171d
Binary files /dev/null and b/img/frames/m15/fullText/mlThumb.png differ
diff --git a/img/frames/m15/fullText/pinline.svg b/img/frames/m15/fullText/pinline.svg
new file mode 100644
index 00000000..d7352205
--- /dev/null
+++ b/img/frames/m15/fullText/pinline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/m15/fullText/pinlineThumb.png b/img/frames/m15/fullText/pinlineThumb.png
new file mode 100644
index 00000000..fe798c2e
Binary files /dev/null and b/img/frames/m15/fullText/pinlineThumb.png differ
diff --git a/img/frames/m15/fullText/r.png b/img/frames/m15/fullText/r.png
new file mode 100644
index 00000000..36e9ff54
Binary files /dev/null and b/img/frames/m15/fullText/r.png differ
diff --git a/img/frames/m15/fullText/rThumb.png b/img/frames/m15/fullText/rThumb.png
new file mode 100644
index 00000000..657c05c4
Binary files /dev/null and b/img/frames/m15/fullText/rThumb.png differ
diff --git a/img/frames/m15/fullText/rl.png b/img/frames/m15/fullText/rl.png
new file mode 100644
index 00000000..40db3769
Binary files /dev/null and b/img/frames/m15/fullText/rl.png differ
diff --git a/img/frames/m15/fullText/rlThumb.png b/img/frames/m15/fullText/rlThumb.png
new file mode 100644
index 00000000..ae642e3d
Binary files /dev/null and b/img/frames/m15/fullText/rlThumb.png differ
diff --git a/img/frames/m15/fullText/rules.svg b/img/frames/m15/fullText/rules.svg
new file mode 100644
index 00000000..77fdc7e3
--- /dev/null
+++ b/img/frames/m15/fullText/rules.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/m15/fullText/rulesThumb.png b/img/frames/m15/fullText/rulesThumb.png
new file mode 100644
index 00000000..8a5fe3b2
Binary files /dev/null and b/img/frames/m15/fullText/rulesThumb.png differ
diff --git a/img/frames/m15/fullText/type.svg b/img/frames/m15/fullText/type.svg
new file mode 100644
index 00000000..75b01aaf
--- /dev/null
+++ b/img/frames/m15/fullText/type.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/img/frames/m15/fullText/typeThumb.png b/img/frames/m15/fullText/typeThumb.png
new file mode 100644
index 00000000..3328201f
Binary files /dev/null and b/img/frames/m15/fullText/typeThumb.png differ
diff --git a/img/frames/m15/fullText/u.png b/img/frames/m15/fullText/u.png
new file mode 100644
index 00000000..aa6a05a0
Binary files /dev/null and b/img/frames/m15/fullText/u.png differ
diff --git a/img/frames/m15/fullText/uThumb.png b/img/frames/m15/fullText/uThumb.png
new file mode 100644
index 00000000..4f1bed4d
Binary files /dev/null and b/img/frames/m15/fullText/uThumb.png differ
diff --git a/img/frames/m15/fullText/ul.png b/img/frames/m15/fullText/ul.png
new file mode 100644
index 00000000..c6168565
Binary files /dev/null and b/img/frames/m15/fullText/ul.png differ
diff --git a/img/frames/m15/fullText/ulThumb.png b/img/frames/m15/fullText/ulThumb.png
new file mode 100644
index 00000000..8b29ea73
Binary files /dev/null and b/img/frames/m15/fullText/ulThumb.png differ
diff --git a/img/frames/m15/fullText/w.png b/img/frames/m15/fullText/w.png
new file mode 100644
index 00000000..9a95e759
Binary files /dev/null and b/img/frames/m15/fullText/w.png differ
diff --git a/img/frames/m15/fullText/wThumb.png b/img/frames/m15/fullText/wThumb.png
new file mode 100644
index 00000000..b26417a3
Binary files /dev/null and b/img/frames/m15/fullText/wThumb.png differ
diff --git a/img/frames/m15/fullText/wl.png b/img/frames/m15/fullText/wl.png
new file mode 100644
index 00000000..188f0612
Binary files /dev/null and b/img/frames/m15/fullText/wl.png differ
diff --git a/img/frames/m15/fullText/wlThumb.png b/img/frames/m15/fullText/wlThumb.png
new file mode 100644
index 00000000..85fb384f
Binary files /dev/null and b/img/frames/m15/fullText/wlThumb.png differ
diff --git a/img/manaSymbols/p.svg b/img/manaSymbols/p.svg
index 53475326..7b04fcac 100644
--- a/img/manaSymbols/p.svg
+++ b/img/manaSymbols/p.svg
@@ -1,8 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/img/manaSymbols/purple.svg b/img/manaSymbols/purple.svg
new file mode 100644
index 00000000..53475326
--- /dev/null
+++ b/img/manaSymbols/purple.svg
@@ -0,0 +1,8 @@
+
+
+
diff --git a/js/creator-23.js b/js/creator-23.js
index 98e82af0..9a6fdca5 100644
--- a/js/creator-23.js
+++ b/js/creator-23.js
@@ -251,8 +251,8 @@ function dragOver(event, drag=true) {
}
//Mana Symbols
var manaSymbols = [];
-loadManaSymbols(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', 'w', 'u', 'b', 'r', 'g', 'c', 'x', 'y', 'z', 't', 'untap', 'e', 's', 'oldtap', 'originaltap', 'p']);
-loadManaSymbols(['wu', 'wb', 'ub', 'ur', 'br', 'bg', 'rg', 'rw', 'gw', 'gu', '2w', '2u', '2b', '2r', '2g', 'wp', 'up', 'bp', 'rp', 'gp'], [1.2, 1.2]);
+loadManaSymbols(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', 'w', 'u', 'b', 'r', 'g', 'c', 'x', 'y', 'z', 't', 'untap', 'e', 's', 'oldtap', 'originaltap', 'purple']);
+loadManaSymbols(['wu', 'wb', 'ub', 'ur', 'br', 'bg', 'rg', 'rw', 'gw', 'gu', '2w', '2u', '2b', '2r', '2g', 'wp', 'up', 'bp', 'rp', 'gp', 'p'], [1.2, 1.2]);
loadManaSymbols(['bar.png', 'whitebar.png']);
loadManaSymbols(['chaos'], [1.2, 1]);
loadManaSymbols(['planeswalker'], [0.6, 1.2]);
diff --git a/js/frames/groupShowcase-5.js b/js/frames/groupShowcase-5.js
index 6ca1426f..4a8397b1 100644
--- a/js/frames/groupShowcase-5.js
+++ b/js/frames/groupShowcase-5.js
@@ -25,6 +25,7 @@ loadFramePacks([
{name:'Extended Art (Shorter Textbox)', value:'M15ExtendedArtShort'},
{name:'FNM Promo (Inverted Promos)', value:'FNM'},
{name:'Universes Beyond', value:'UB'},
+ {name:'Full Text', value:'FullText'},
{name:'Masterpieces/Other', value:'disabled'},
{name:'ZNR Expeditions (2020)', value:'ExpeditionZNR-1'},
{name:'Signature Spellbook (Jace/Gideon)', value:'SignatureSpellbook'},
diff --git a/js/frames/packFullText.js b/js/frames/packFullText.js
new file mode 100644
index 00000000..af3de379
--- /dev/null
+++ b/js/frames/packFullText.js
@@ -0,0 +1,56 @@
+//Create objects for common properties across available frames
+var masks = [{src:'/img/frames/m15/fullText/pinline.svg', name:'Pinline'}, {src:'/img/frames/m15/regular/m15MaskTitle.png', name:'Title'}, {src:'/img/frames/m15/fullText/type.svg', name:'Type'}, {src:'/img/frames/m15/fullText/rules.svg', name:'Rules'}, {src:'/img/frames/m15/fullText/frame.svg', name:'Frame'}, {src:'/img/frames/m15/regular/m15MaskBorder.png', name:'Border'}];
+var bounds = {x:0.7573, y:0.8848, width:0.188, height:0.0733};
+//defines available frames
+availableFrames = [
+ {name:'White Frame', src:'/img/frames/m15/fullText/w.png', masks:masks},
+ {name:'Blue Frame', src:'/img/frames/m15/fullText/u.png', masks:masks},
+ {name:'Black Frame', src:'/img/frames/m15/fullText/b.png', masks:masks},
+ {name:'Red Frame', src:'/img/frames/m15/fullText/r.png', masks:masks},
+ {name:'Green Frame', src:'/img/frames/m15/fullText/g.png', masks:masks},
+ {name:'Multicolored Frame', src:'/img/frames/m15/fullText/m.png', masks:masks},
+ {name:'Artifact Frame', src:'/img/frames/m15/fullText/a.png', masks:masks},
+ {name:'Land Frame', src:'/img/frames/m15/fullText/l.png', masks:masks},
+ {name:'White Land Frame', src:'/img/frames/m15/fullText/wl.png', masks:masks},
+ {name:'Blue Land Frame', src:'/img/frames/m15/fullText/ul.png', masks:masks},
+ {name:'Black Land Frame', src:'/img/frames/m15/fullText/bl.png', masks:masks},
+ {name:'Red Land Frame', src:'/img/frames/m15/fullText/rl.png', masks:masks},
+ {name:'Green Land Frame', src:'/img/frames/m15/fullText/gl.png', masks:masks},
+ {name:'Multicolored Land Frame', src:'/img/frames/m15/fullText/ml.png', masks:masks},
+ {name:'White Power/Toughness', src:'/img/frames/m15/regular/m15PTW.png', bounds:bounds},
+ {name:'Blue Power/Toughness', src:'/img/frames/m15/regular/m15PTU.png', bounds:bounds},
+ {name:'Black Power/Toughness', src:'/img/frames/m15/regular/m15PTB.png', bounds:bounds},
+ {name:'Red Power/Toughness', src:'/img/frames/m15/regular/m15PTR.png', bounds:bounds},
+ {name:'Green Power/Toughness', src:'/img/frames/m15/regular/m15PTG.png', bounds:bounds},
+ {name:'Multicolored Power/Toughness', src:'/img/frames/m15/regular/m15PTM.png', bounds:bounds},
+ {name:'Artifact Power/Toughness', src:'/img/frames/m15/regular/m15PTA.png', bounds:bounds},
+ {name:'Colorless Power/Toughness', src:'/img/frames/m15/regular/m15PTC.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 = 'fullText';
+ //art bounds
+ card.artBounds = {x:0, y:0, width:0, height:0};
+ autoFitArt();
+ //set symbol bounds
+ card.setSymbolBounds = {x:0.9213, y:0.1396, width:0.12, height:0.0410, vertical:'center', horizontal: 'right'};
+ resetSetSymbol();
+ //watermark bounds
+ card.watermarkBounds = {x:0.5, y:0.5505, width:0.75, height:0.4562};
+ 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},
+ type: {name:'Type', text:'', x:0.0854, y:0.1148, width:0.8292, height:0.0543, oneLine:true, font:'belerenb', size:0.0324},
+ rules: {name:'Rules Text', text:'', x:0.086, y:0.1791, width:0.828, height:0.7391, size:0.0362},
+ pt: {name:'Power/Toughness', text:'', x:0.7928, y:0.902, width:0.1367, height:0.0372, size:0.0372, font:'belerenbsc', oneLine:true, align:'center'}
+ });
+}
+//loads available frames
+loadFramePack();
\ No newline at end of file