diff --git a/WebHostLib/static/assets/player-settings.js b/WebHostLib/static/assets/player-settings.js
index c2b8ec07..e1e7247c 100644
--- a/WebHostLib/static/assets/player-settings.js
+++ b/WebHostLib/static/assets/player-settings.js
@@ -1,108 +1,127 @@
+let spriteData = null;
+
window.addEventListener('load', () => {
- const gameSettings = document.getElementById('game-settings');
- Promise.all([fetchPlayerSettingsYaml(), fetchPlayerSettingsJson()]).then((results) => {
- // Load YAML into object
- const sourceData = jsyaml.safeLoad(results[0], { json: true });
+ const gameSettings = document.getElementById('game-settings');
+ Promise.all([fetchPlayerSettingsYaml(), fetchPlayerSettingsJson(), fetchSpriteData()]).then((results) => {
+ // Load YAML into object
+ const sourceData = jsyaml.safeLoad(results[0], { json: true });
- // Update localStorage with three settings objects. Preserve original objects if present.
- for (let i=1; i<=3; i++) {
- const localSettings = JSON.parse(localStorage.getItem(`playerSettings${i}`));
- const updatedObj = localSettings ? Object.assign(sourceData, localSettings) : sourceData;
- localStorage.setItem(`playerSettings${i}`, JSON.stringify(updatedObj));
- }
+ // Update localStorage with three settings objects. Preserve original objects if present.
+ for (let i=1; i<=3; i++) {
+ const localSettings = JSON.parse(localStorage.getItem(`playerSettings${i}`));
+ const updatedObj = localSettings ? Object.assign(sourceData, localSettings) : sourceData;
+ localStorage.setItem(`playerSettings${i}`, JSON.stringify(updatedObj));
+ }
- // Build the entire UI
- buildUI(JSON.parse(results[1]));
+ // Parse spriteData into useful sets
+ spriteData = JSON.parse(results[2]);
- // Populate the UI and add event listeners
- populateSettings();
- document.getElementById('preset-number').addEventListener('change', populateSettings);
- gameSettings.addEventListener('change', handleOptionChange);
- gameSettings.addEventListener('keyup', handleOptionChange);
+ // Build the entire UI
+ buildUI(JSON.parse(results[1]));
- document.getElementById('export-button').addEventListener('click', exportSettings);
- }).catch((error) => {
- gameSettings.innerHTML = `
+ // Populate the UI and add event listeners
+ populateSettings();
+ document.getElementById('preset-number').addEventListener('change', populateSettings);
+ gameSettings.addEventListener('change', handleOptionChange);
+ gameSettings.addEventListener('keyup', handleOptionChange);
+
+ document.getElementById('export-button').addEventListener('click', exportSettings);
+ }).catch((error) => {
+ gameSettings.innerHTML = `
Something went wrong while loading your game settings page.
${error}
`
- });
+ });
});
const fetchPlayerSettingsYaml = () => new Promise((resolve, reject) => {
- const ajax = new XMLHttpRequest();
- ajax.onreadystatechange = () => {
- if (ajax.readyState !== 4) { return; }
- if (ajax.status !== 200) {
- reject("Unable to fetch source yaml file.");
- return;
- }
- resolve(ajax.responseText);
- };
- ajax.open('GET', `${window.location.origin}/static/static/playerSettings.yaml` ,true);
- ajax.send();
+ const ajax = new XMLHttpRequest();
+ ajax.onreadystatechange = () => {
+ if (ajax.readyState !== 4) { return; }
+ if (ajax.status !== 200) {
+ reject("Unable to fetch source yaml file.");
+ return;
+ }
+ resolve(ajax.responseText);
+ };
+ ajax.open('GET', `${window.location.origin}/static/static/playerSettings.yaml` ,true);
+ ajax.send();
});
const fetchPlayerSettingsJson = () => new Promise((resolve, reject) => {
- const ajax = new XMLHttpRequest();
- ajax.onreadystatechange = () => {
- if (ajax.readyState !== 4) { return; }
- if (ajax.status !== 200) {
- reject('Unable to fetch JSON schema file');
- return;
- }
- resolve(ajax.responseText);
- };
- ajax.open('GET', `${window.location.origin}/static/static/playerSettings.json`);
- ajax.send();
+ const ajax = new XMLHttpRequest();
+ ajax.onreadystatechange = () => {
+ if (ajax.readyState !== 4) { return; }
+ if (ajax.status !== 200) {
+ reject('Unable to fetch JSON schema file');
+ return;
+ }
+ resolve(ajax.responseText);
+ };
+ ajax.open('GET', `${window.location.origin}/static/static/playerSettings.json`, true);
+ ajax.send();
+});
+
+const fetchSpriteData = () => new Promise((resolve, reject) => {
+ const ajax = new XMLHttpRequest();
+ ajax.onreadystatechange = () => {
+ if (ajax.readyState !== 4) { return; }
+ if (ajax.status !== 200) {
+ reject('Unable to fetch sprite data.');
+ return;
+ }
+ resolve(ajax.responseText);
+ };
+ ajax.open('GET', `${window.location.origin}/static/static/spriteData.json`, true);
+ ajax.send();
});
const handleOptionChange = (event) => {
- if(!event.target.matches('.setting')) { return; }
- const presetNumber = document.getElementById('preset-number').value;
- const settings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`))
- const settingString = event.target.getAttribute('data-setting');
- document.getElementById(settingString).innerText = event.target.value;
- if(getSettingValue(settings, settingString) !== false){
- const keys = settingString.split('.');
- switch (keys.length) {
- case 1:
- settings[keys[0]] = isNaN(event.target.value) ?
- event.target.value : parseInt(event.target.value, 10);
- break;
- case 2:
- settings[keys[0]][keys[1]] = isNaN(event.target.value) ?
- event.target.value : parseInt(event.target.value, 10);
- break;
- case 3:
- settings[keys[0]][keys[1]][keys[2]] = isNaN(event.target.value) ?
- event.target.value : parseInt(event.target.value, 10);
- break;
- default:
- console.warn(`Unknown setting string received: ${settingString}`)
- return;
- }
-
- // Save the updated settings object bask to localStorage
- localStorage.setItem(`playerSettings${presetNumber}`, JSON.stringify(settings));
- }else{
+ if(!event.target.matches('.setting')) { return; }
+ const presetNumber = document.getElementById('preset-number').value;
+ const settings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`))
+ const settingString = event.target.getAttribute('data-setting');
+ document.getElementById(settingString).innerText = event.target.value;
+ if(getSettingValue(settings, settingString) !== false){
+ const keys = settingString.split('.');
+ switch (keys.length) {
+ case 1:
+ settings[keys[0]] = isNaN(event.target.value) ?
+ event.target.value : parseInt(event.target.value, 10);
+ break;
+ case 2:
+ settings[keys[0]][keys[1]] = isNaN(event.target.value) ?
+ event.target.value : parseInt(event.target.value, 10);
+ break;
+ case 3:
+ settings[keys[0]][keys[1]][keys[2]] = isNaN(event.target.value) ?
+ event.target.value : parseInt(event.target.value, 10);
+ break;
+ default:
console.warn(`Unknown setting string received: ${settingString}`)
+ return;
}
+
+ // Save the updated settings object bask to localStorage
+ localStorage.setItem(`playerSettings${presetNumber}`, JSON.stringify(settings));
+ }else{
+ console.warn(`Unknown setting string received: ${settingString}`)
+ }
};
const populateSettings = () => {
- const presetNumber = document.getElementById('preset-number').value;
- const settings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`))
- const settingsInputs = Array.from(document.querySelectorAll('.setting'));
- settingsInputs.forEach((input) => {
- const settingString = input.getAttribute('data-setting');
- const settingValue = getSettingValue(settings, settingString);
- if(settingValue !== false){
- input.value = settingValue;
- document.getElementById(settingString).innerText = settingValue;
- }
- });
+ const presetNumber = document.getElementById('preset-number').value;
+ const settings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`))
+ const settingsInputs = Array.from(document.querySelectorAll('.setting'));
+ settingsInputs.forEach((input) => {
+ const settingString = input.getAttribute('data-setting');
+ const settingValue = getSettingValue(settings, settingString);
+ if(settingValue !== false){
+ input.value = settingValue;
+ document.getElementById(settingString).innerText = settingValue;
+ }
+ });
};
/**
@@ -112,139 +131,293 @@ const populateSettings = () => {
* @returns {string} | bool
*/
const getSettingValue = (settings, keyString) => {
- const keys = keyString.split('.');
- let currentVal = settings;
- keys.forEach((key) => {
- if(typeof(key) === 'string' && currentVal.hasOwnProperty(key)){
- currentVal = currentVal[key];
- }else{
- return false;
- }
- });
- return currentVal;
+ const keys = keyString.split('.');
+ let currentVal = settings;
+ keys.forEach((key) => {
+ if(typeof(key) === 'string' && currentVal.hasOwnProperty(key)){
+ currentVal = currentVal[key];
+ }else{
+ return false;
+ }
+ });
+ return currentVal;
};
const exportSettings = () => {
- const presetNumber = document.getElementById('preset-number').value;
- const settings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`));
- const yamlText = jsyaml.safeDump(settings);
- download(`${settings.description}.yaml`, yamlText);
+ const presetNumber = document.getElementById('preset-number').value;
+ const settings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`));
+ const yamlText = jsyaml.safeDump(settings);
+ download(`${settings.description}.yaml`, yamlText);
};
/** Create an anchor and trigger a download of a text file. */
const download = (filename, text) => {
- const downloadLink = document.createElement('a');
- downloadLink.setAttribute('href','data:text/yaml;charset=utf-8,'+ encodeURIComponent(text))
- downloadLink.setAttribute('download', filename);
- downloadLink.style.display = 'none';
- document.body.appendChild(downloadLink);
- downloadLink.click();
- document.body.removeChild(downloadLink);
+ const downloadLink = document.createElement('a');
+ downloadLink.setAttribute('href','data:text/yaml;charset=utf-8,'+ encodeURIComponent(text))
+ downloadLink.setAttribute('download', filename);
+ downloadLink.style.display = 'none';
+ document.body.appendChild(downloadLink);
+ downloadLink.click();
+ document.body.removeChild(downloadLink);
};
const buildUI = (settings) => {
- const settingsWrapper = document.getElementById('settings-wrapper');
- const settingTypes = {
- gameOptions: 'Game Options',
- romOptions: 'ROM Options'
- }
+ const settingsWrapper = document.getElementById('settings-wrapper');
+ const settingTypes = {
+ gameOptions: 'Game Options',
+ romOptions: 'ROM Options',
+ }
- Object.keys(settingTypes).forEach((settingTypeKey) => {
- const sectionHeader = document.createElement('h1');
- sectionHeader.innerText = settingTypes[settingTypeKey];
- settingsWrapper.appendChild(sectionHeader);
+ Object.keys(settingTypes).forEach((settingTypeKey) => {
+ const sectionHeader = document.createElement('h1');
+ sectionHeader.innerText = settingTypes[settingTypeKey];
+ settingsWrapper.appendChild(sectionHeader);
- Object.values(settings[settingTypeKey]).forEach((setting) => {
- if (typeof(setting.inputType) === 'undefined' || !setting.inputType){
- console.error(setting);
- throw new Error('Setting with no inputType specified.');
- }
+ Object.values(settings[settingTypeKey]).forEach((setting) => {
+ if (typeof(setting.inputType) === 'undefined' || !setting.inputType){
+ console.error(setting);
+ throw new Error('Setting with no inputType specified.');
+ }
- switch(setting.inputType){
- case 'text':
- // Currently, all text input is handled manually because there is very little of it
- return;
- case 'range':
- buildRangeSettings(settingsWrapper, setting);
- return;
- default:
- console.error(setting);
- throw new Error('Unhandled inputType specified.');
- }
- });
+ switch(setting.inputType){
+ case 'text':
+ // Currently, all text input is handled manually because there is very little of it
+ return;
+ case 'range':
+ buildRangeSettings(settingsWrapper, setting);
+ return;
+ default:
+ console.error(setting);
+ throw new Error('Unhandled inputType specified.');
+ }
});
+ });
+
+ // Build sprite options
+ const spriteOptionsHeader = document.createElement('h1');
+ spriteOptionsHeader.innerText = 'Sprite Options';
+ settingsWrapper.appendChild(spriteOptionsHeader);
+
+ const spriteOptionsWrapper = document.createElement('div');
+ spriteOptionsWrapper.className = 'setting-wrapper';
+
+ const spriteOptionsTitle = document.createElement('span');
+ spriteOptionsTitle.className = 'title-span';
+ spriteOptionsTitle.innerText = 'Alternate Sprites';
+ spriteOptionsWrapper.appendChild(spriteOptionsTitle);
+
+ const spriteOptionsDescription = document.createElement('span');
+ spriteOptionsDescription.className = 'description-span';
+ spriteOptionsDescription.innerText = "Choose an alternate sprite to play the game with.";
+ spriteOptionsWrapper.appendChild(spriteOptionsDescription);
+
+ const spriteOptionsTable = document.createElement('table');
+ spriteOptionsTable.setAttribute('id', 'sprite-options-table');
+ spriteOptionsTable.className = 'option-set';
+ const tbody = document.createElement('tbody');
+ tbody.setAttribute('id', 'sprites-tbody');
+
+ const currentPreset = document.getElementById('preset-number').value;
+ const playerSettings = JSON.parse(localStorage.getItem(`playerSettings${currentPreset}`));
+
+ // Add a row for each sprite currently present in the player's settings
+ Object.keys(playerSettings.rom.sprite).forEach((spriteName) => {
+ addSpriteRow(tbody, playerSettings, spriteName)
+ });
+
+ spriteOptionsTable.appendChild(tbody);
+ spriteOptionsWrapper.appendChild(spriteOptionsTable);
+
+ settingsWrapper.appendChild(spriteOptionsWrapper);
+
+ // Append sprite picker
+ settingsWrapper.appendChild(buildSpritePicker());
};
const buildRangeSettings = (parentElement, settings) => {
- // Ensure we are operating on a range-specific setting
- if(typeof(settings.inputType) === 'undefined' || settings.inputType !== 'range'){
- throw new Error('Invalid input type provided to buildRangeSettings func.');
- }
+ // Ensure we are operating on a range-specific setting
+ if(typeof(settings.inputType) === 'undefined' || settings.inputType !== 'range'){
+ throw new Error('Invalid input type provided to buildRangeSettings func.');
+ }
- const settingWrapper = document.createElement('div');
- settingWrapper.className = 'setting-wrapper';
+ const settingWrapper = document.createElement('div');
+ settingWrapper.className = 'setting-wrapper';
- if(typeof(settings.friendlyName) !== 'undefined' && settings.friendlyName){
- const sectionTitle = document.createElement('span');
- sectionTitle.className = 'title-span';
- sectionTitle.innerText = settings.friendlyName;
- settingWrapper.appendChild(sectionTitle);
- }
+ if(typeof(settings.friendlyName) !== 'undefined' && settings.friendlyName){
+ const sectionTitle = document.createElement('span');
+ sectionTitle.className = 'title-span';
+ sectionTitle.innerText = settings.friendlyName;
+ settingWrapper.appendChild(sectionTitle);
+ }
- if(settings.description){
- const description = document.createElement('span');
- description.className = 'description-span';
- description.innerText = settings.description;
- settingWrapper.appendChild(description);
- }
+ if(settings.description){
+ const description = document.createElement('span');
+ description.className = 'description-span';
+ description.innerText = settings.description;
+ settingWrapper.appendChild(description);
+ }
- // Create table
- const optionSetTable = document.createElement('table');
- optionSetTable.className = 'option-set';
+ // Create table
+ const optionSetTable = document.createElement('table');
+ optionSetTable.className = 'option-set';
- // Create table body
- const tbody = document.createElement('tbody');
- Object.keys(settings.subOptions).forEach((setting) => {
- // Overwrite setting key name with real object
- setting = settings.subOptions[setting];
- const settingId = (Math.random() * 1000000).toString();
+ // Create table body
+ const tbody = document.createElement('tbody');
+ Object.keys(settings.subOptions).forEach((setting) => {
+ // Overwrite setting key name with real object
+ setting = settings.subOptions[setting];
+ const settingId = (Math.random() * 1000000).toString();
- // Create rows for each option
- const optionRow = document.createElement('tr');
+ // Create rows for each option
+ const optionRow = document.createElement('tr');
- // Option name td
- const optionName = document.createElement('td');
- optionName.className = 'option-name';
- const optionLabel = document.createElement('label');
- optionLabel.setAttribute('for', settingId);
- optionLabel.setAttribute('data-tooltip', setting.description);
- optionLabel.innerText = setting.friendlyName;
- optionName.appendChild(optionLabel);
- optionRow.appendChild(optionName);
+ // Option name td
+ const optionName = document.createElement('td');
+ optionName.className = 'option-name';
+ const optionLabel = document.createElement('label');
+ optionLabel.setAttribute('for', settingId);
+ optionLabel.setAttribute('data-tooltip', setting.description);
+ optionLabel.innerText = setting.friendlyName;
+ optionName.appendChild(optionLabel);
+ optionRow.appendChild(optionName);
- // Option value td
- const optionValue = document.createElement('td');
- optionValue.className = 'option-value';
- const input = document.createElement('input');
- input.className = 'setting';
- input.setAttribute('id', settingId);
- input.setAttribute('type', 'range');
- input.setAttribute('min', '0');
- input.setAttribute('max', '100');
- input.setAttribute('data-setting', setting.keyString);
- input.value = setting.defaultValue;
- optionValue.appendChild(input);
- const valueDisplay = document.createElement('span');
- valueDisplay.setAttribute('id', setting.keyString);
- valueDisplay.innerText = setting.defaultValue;
- optionValue.appendChild(valueDisplay);
- optionRow.appendChild(optionValue);
- tbody.appendChild(optionRow);
- });
+ // Option value td
+ const optionValue = document.createElement('td');
+ optionValue.className = 'option-value';
+ const input = document.createElement('input');
+ input.className = 'setting';
+ input.setAttribute('id', settingId);
+ input.setAttribute('type', 'range');
+ input.setAttribute('min', '0');
+ input.setAttribute('max', '100');
+ input.setAttribute('data-setting', setting.keyString);
+ input.value = setting.defaultValue;
+ optionValue.appendChild(input);
+ const valueDisplay = document.createElement('span');
+ valueDisplay.setAttribute('id', setting.keyString);
+ valueDisplay.innerText = setting.defaultValue;
+ optionValue.appendChild(valueDisplay);
+ optionRow.appendChild(optionValue);
+ tbody.appendChild(optionRow);
+ });
- optionSetTable.appendChild(tbody);
- settingWrapper.appendChild(optionSetTable);
- parentElement.appendChild(settingWrapper);
+ optionSetTable.appendChild(tbody);
+ settingWrapper.appendChild(optionSetTable);
+ parentElement.appendChild(settingWrapper);
};
-const buildSelectSettings = (parentElement, settings) => {};
+const addSpriteRow = (tbody, playerSettings, spriteName) => {
+ const rowId = (Math.random() * 1000000).toString();
+ const optionId = (Math.random() * 1000000).toString();
+ const tr = document.createElement('tr');
+ tr.setAttribute('id', rowId);
+
+ // Option Name
+ const optionName = document.createElement('td');
+ optionName.className = 'option-name';
+ const label = document.createElement('label');
+ label.htmlFor = optionId;
+ label.innerText = spriteName;
+ optionName.appendChild(label);
+
+ if(['random', 'randomonhit'].indexOf(spriteName) === -1) {
+ const deleteButton = document.createElement('span');
+ deleteButton.setAttribute('data-sprite', spriteName);
+ deleteButton.setAttribute('data-row-id', rowId);
+ deleteButton.innerText = ' (❌)';
+ deleteButton.className = 'delete-button';
+ optionName.appendChild(deleteButton);
+ deleteButton.addEventListener('click', removeSpriteOption);
+ }
+
+ tr.appendChild(optionName);
+
+ // Option Value
+ const optionValue = document.createElement('td');
+ optionValue.className = 'option-value';
+ const input = document.createElement('input');
+ input.className = 'setting';
+ input.setAttribute('id', optionId);
+ input.setAttribute('type', 'range');
+ input.setAttribute('min', '0');
+ input.setAttribute('max', '100');
+ input.setAttribute('data-setting', `rom.sprite.${spriteName}`);
+ input.value = "0";
+ optionValue.appendChild(input);
+
+ // Value display
+ const valueDisplay = document.createElement('span');
+ valueDisplay.setAttribute('id', `rom.sprite.${spriteName}`);
+ valueDisplay.innerText = playerSettings.rom.sprite.hasOwnProperty(spriteName) ?
+ playerSettings.rom.sprite[spriteName] : '0';
+ optionValue.appendChild(valueDisplay);
+
+ tr.appendChild(optionValue);
+ tbody.appendChild(tr);
+};
+
+const addSpriteOption = (event) => {
+ const presetNumber = document.getElementById('preset-number').value;
+ const playerSettings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`));
+ const spriteName = event.target.getAttribute('data-sprite');
+ console.log(event.target);
+ console.log(spriteName);
+
+ if (Object.keys(playerSettings.rom.sprite).indexOf(spriteName) !== -1) {
+ // Do not add the same sprite twice
+ return;
+ }
+
+ // Add option to playerSettings object
+ playerSettings.rom.sprite[event.target.getAttribute('data-sprite')] = 50;
+ localStorage.setItem(`playerSettings${presetNumber}`, JSON.stringify(playerSettings));
+
+ // Add to #sprite-options-table
+ const tbody = document.getElementById('sprites-tbody');
+ addSpriteRow(tbody, playerSettings, spriteName);
+};
+
+const removeSpriteOption = (event) => {
+ const presetNumber = document.getElementById('preset-number').value;
+ const playerSettings = JSON.parse(localStorage.getItem(`playerSettings${presetNumber}`));
+ const spriteName = event.target.getAttribute('data-sprite');
+
+ // Remove option from playerSettings object
+ delete playerSettings.rom.sprite[spriteName];
+ localStorage.setItem(`playerSettings${presetNumber}`, JSON.stringify(playerSettings));
+
+ // Remove
from #sprite-options-table
+ const tr = document.getElementById(event.target.getAttribute('data-row-id'));
+ tr.parentNode.removeChild(tr);
+};
+
+const buildSpritePicker = () => {
+ const spritePicker = document.createElement('div');
+ spritePicker.setAttribute('id', 'sprite-picker');
+
+ // Build description
+ const description = document.createElement('span');
+ description.innerText = 'To add a sprite to your playable list, click the one you want below.';
+ spritePicker.appendChild(description);
+
+ const sprites = document.createElement('div');
+ sprites.setAttribute('id', 'sprite-picker-sprites');
+ Object.keys(spriteData).forEach((spriteName) => {
+ const spriteImg = document.createElement('img');
+ spriteImg.setAttribute('src', `static/static/sprites/${spriteName}.gif`);
+ spriteImg.setAttribute('data-sprite', spriteName);
+ spriteImg.setAttribute('alt', spriteName);
+
+ // Wrap the image in a span to allow for tooltip presence
+ const imgWrapper = document.createElement('span');
+ imgWrapper.className = 'sprite-img-wrapper';
+ imgWrapper.setAttribute('data-tooltip', spriteName);
+ imgWrapper.appendChild(spriteImg);
+ imgWrapper.setAttribute('data-sprite', spriteName);
+ sprites.appendChild(imgWrapper);
+ imgWrapper.addEventListener('click', addSpriteOption);
+ });
+
+ spritePicker.appendChild(sprites);
+ return spritePicker;
+};
diff --git a/WebHostLib/static/static/playerSettings.yaml b/WebHostLib/static/static/playerSettings.yaml
index 4aa5bb02..55cde3e4 100644
--- a/WebHostLib/static/static/playerSettings.yaml
+++ b/WebHostLib/static/static/playerSettings.yaml
@@ -221,7 +221,7 @@ rom:
sprite: # Enter the name of your preferred sprite and weight it appropriately
random: 0
randomonhit: 0
- link: 50 # To add other sprites: open the gui/Creator, go to adjust, select a sprite and write down the name the gui calls it
+ Link: 50 # To add other sprites: open the gui/Creator, go to adjust, select a sprite and write down the name the gui calls it
disablemusic: # If "on", all in-game music will be disabled
on: 50
off: 0
diff --git a/WebHostLib/static/static/spriteData.json b/WebHostLib/static/static/spriteData.json
new file mode 100644
index 00000000..f54078e9
--- /dev/null
+++ b/WebHostLib/static/static/spriteData.json
@@ -0,0 +1 @@
+{"Link": "001.link.1.zspr", "Four Swords Link": "4slink-armors.1.zspr", "Abigail": "abigail.1.zspr", "Adol": "adol.1.zspr", "Aggretsuko": "aggretsuko.1.zspr", "Alice": "alice.1.zspr", "Angry Video Game Nerd": "angry-video-game-nerd.1.zspr", "Arcane": "arcane.1.zspr", "Ark": "ark.2.zspr", "Arrghus": "arrghus.2.zspr", "Astronaut": "astronaut.1.zspr", "Badeline": "badeline.1.zspr", "Bananas In Pyjamas": "bananas-in-pyjamas.1.zspr", "Bandit": "bandit.1.zspr", "Batman": "batman.1.zspr", "Beau": "beau.1.zspr", "Bewp": "bewp.1.zspr", "Big Key": "bigkey.1.zspr", "Birb": "birb.1.zspr", "Birdo": "birdo.1.zspr", "Black Mage": "blackmage.1.zspr", "Blacksmith Link": "blacksmithlink.1.zspr", "Blossom": "blossom.1.zspr", "Bob": "bob.1.zspr", "Boo 2": "boo-two.1.zspr", "Boo": "boo.2.zspr", "Bottle o' Goo": "bottle_o_goo.1.zspr", "": "botw-zelda.1.zspr", "Bowser": "bowser.1.zspr", "Branch": "branch.1.zspr", "Brian": "brian.1.zspr", "Broccoli": "broccoli.1.zspr", "Bronzor": "bronzor.1.zspr", "B.S. Boy": "bsboy.1.zspr", "B.S. Girl": "bsgirl.1.zspr", "Bubbles": "bubbles.1.zspr", "Bullet Bill": "bullet_bill.1.zspr", "Buttercup": "buttercup.1.zspr", "Cactuar": "cactuar.1.zspr", "Cadence": "cadence.1.zspr", "CarlSagan42": "carlsagan42.1.zspr", "Casual Zelda": "casual-zelda.1.zspr", "Marvin the Cat": "cat.3.zspr", "Cat Boo": "catboo.1.zspr", "CD-i Link": "cdilink.1.zspr", "Celes": "celes.1.zspr", "Charizard": "charizard.1.zspr", "Cheep Cheep": "cheepcheep.1.zspr", "Chibity": "chibity.1.zspr", "Cirno": "cirno.1.zspr", "Clifford": "clifford.1.zspr", "Clyde": "clyde.1.zspr", "Conker": "conker.1.zspr", "Cornelius": "cornelius.1.zspr", "Untitled": "corona.1.zspr", "Cucco": "cucco.1.zspr", "Cursor": "cursor.1.zspr", "Dark Panda": "dark-panda.1.zspr", "Dark Boy": "darkboy.1.zspr", "Dark Girl": "darkgirl.1.zspr", "Dark Link (Tunic)": "darklink-tunic.1.zspr", "Dark Link": "darklink.1.zspr", "Dark Swatchy": "darkswatchy.1.zspr", "Dark Zelda": "darkzelda.1.zspr", "Dark Zora": "darkzora.2.zspr", "Deadpool (Mythic)": "deadpool-mythic.1.zspr", "Deadpool (SirCzah)": "deadpool.1.zspr", "Deadrock": "deadrock.1.zspr", "Decidueye": "decidueye.1.zspr", "Demon Link": "demonlink.1.zspr", "Dragonite": "dragonite.2.zspr", "Drake The Dragon": "drake.1.zspr", "D.Owls": "d_owls.1.zspr", "Eggplant": "eggplant.1.zspr", "EmoSaru": "emosaru.1.zspr", "Ezlo": "ezlo.1.zspr", "Fierce Deity Link": "fierce-deity-link.1.zspr", "Finn Merten": "finn.3.zspr", "Finny Bear": "finny_bear.1.zspr", "Floodgate Fish": "fish_floodgate.1.zspr", "Flavor Guy": "flavor_guy.1.zspr", "Fox Link": "foxlink.1.zspr", "Freya Crescent": "freya.1.zspr", "Frisk": "frisk.1.zspr", "Frog Link": "froglink.3.zspr", "Fujin": "fujin.2.zspr", "Future Trunks": "future_trunks.1.zspr", "Gamer": "gamer.1.zspr", "Mini Ganon": "ganon.1.zspr", "Ganondorf": "ganondorf.1.zspr", "Garfield": "garfield.2.zspr", "Garnet": "garnet.1.zspr", "Garo Master": "garomaster.1.zspr", "GBC Link": "gbc-link.1.zspr", "Geno": "geno.1.zspr", "Gobli": "gobli.1.zspr", "Goomba": "goomba.1.zspr", "Goose": "goose.1.zspr", "GrandPOOBear": "grandpoobear.2.zspr", "Gruncle Stan": "grunclestan.1.zspr", "GuizDP": "guiz.1.zspr", "Hardhat Beetle": "hardhat_beetle.1.zspr", "Hat Kid": "hat-kid.1.zspr", "Headless Link": "headlesslink.1.zspr", "Hello Kitty": "hello_kitty.1.zspr", "Hidari": "hidari.1.zspr", "Hint Tile": "hint_tile.1.zspr", "Hitsuyan1337": "hitsuyan.1.zspr", "Hoarder (Bush)": "hoarder-bush.1.zspr", "Hoarder (Pot)": "hoarder-pot.1.zspr", "Hoarder (Rock)": "hoarder-rock.1.zspr", "Homer Simpson": "homer.1.zspr", "Hyrule Knight": "hyruleknight.1.zspr", "iBazly": "ibazly.1.zspr", "Ignignokt": "ignignokt.2.zspr", "Informant Woman": "informant_woman.1.zspr", "Inkling": "inkling.1.zspr", "Invisible Link": "invisibleman.1.zspr", "Jack Frost": "jack-frost.1.zspr", "Jason Frudnick": "jason_frudnick.1.zspr", "Jasp": "jasp.1.zspr", "Jogurt": "jogurt.1.zspr", "Katsura": "katsura.1.zspr", "Kecleon": "kecleon.1.zspr", "Kenny McCormick": "kenny_mccormick.1.zspr", "Ketchup": "ketchup.1.zspr", "Kholdstare": "kholdstare.1.zspr", "King Gothalion": "king_gothalion.1.zspr", "King Graham v1.1": "king_graham.1.zspr", "Kirby": "kirby-meta.1.zspr", "Kore8": "kore8.1.zspr", "Lakitu": "lakitu.1.zspr", "Lapras": "lapras.1.zspr", "Lest": "lest.1.zspr", "Lily": "lily.1.zspr", "Linja": "linja.1.zspr", "Hat Color Link": "linkhatcolor.1.zspr", "Tunic Color Link": "linktuniccolor.1.zspr", "Pony": "littlepony.1.zspr", "Figaro Merchant": "locke_merchant.1.zspr", "Lucario": "lucario.1.zspr", "Luigi": "luigi.1.zspr", "Madeline": "madeline.1.zspr", "Magus": "magus.1.zspr", "Maiden": "maiden.1.zspr", "Mallow (Cat)": "mallow-cat.1.zspr", "Manga Link": "mangalink.1.zspr", "Maple Queen": "maplequeen.2.zspr", "Marin": "marin.2.zspr", "Mario (Classic)": "mario-classic.2.zspr", "Mario and Cappy": "mariocappy.1.zspr", "Tanooki Mario": "mario_tanooki.1.zspr", "Marisa Kirisame": "marisa.1.zspr", "Matthias": "matthias.1.zspr", "Meatwad": "meatwad.1.zspr", "Medallions": "medallions.1.zspr", "Medli": "medli.1.zspr", "Megaman X": "megaman-x.2.zspr", "Baby Metroid": "metroid.1.zspr", "MewLp": "mew.1.zspr", "Mike Jones": "mike-jones.2.zspr", "Minish Cap Link": "minishcaplink.2.zspr", "Minish Link": "minish_link.1.zspr", "missingno": "missingno.1.zspr", "Modern Link": "modernlink.1.zspr", "Mog": "mog.2.zspr", "Momiji Inubashiri": "momiji.1.zspr", "Moosh": "moosh.1.zspr", "Mouse": "mouse.1.zspr", "Ms. Paint Dog": "ms-paintdog.1.zspr", "Power Up with Pride Mushroom": "mushy.1.zspr", "Nature Link": "naturelink.1.zspr", "Navi": "navi.1.zspr", "Navirou": "navirou.1.zspr", "Ned Flanders": "ned-flanders.1.zspr", "Negative Link": "negativelink.1.zspr", "Neosad": "neosad.1.zspr", " NES Link": "neslink.1.zspr", "Ness (Earthbound)": "ness.1.zspr", "Nia": "nia.1.zspr", "Niko": "niko.1.zspr", "Old Man": "oldman.2.zspr", "Ori": "ori.2.zspr", "Outline Link": "outlinelink.1.zspr", "Parallel Worlds Link": "parallelworldslink.1.zspr", "Paula": "paula.1.zspr", "Princess Peach": "peach.1.zspr", "Penguin Link": "penguinlink.1.zspr", "Pete (Harvest Moon)": "pete.1.zspr", "Phoenix Wright": "phoenix-wright.1.zspr", "Pikachu": "pikachu.1.zspr", "Pink Ribbon Link": "pinkribbonlink.2.zspr", "Piranha Plant": "piranha_plant.1.zspr", "Plague Knight": "plagueknight.1.zspr", "Pokey": "pokey.1.zspr", "Popoi": "popoi.1.zspr", "Poppy": "poppy.1.zspr", "Porg Knight": "porg_knight.1.zspr", "Powerpuff Girl": "powerpuff_girl.1.zspr", "Pride Link": "pridelink.2.zspr", "Primm": "primm.1.zspr", "Princess Bubblegum": "princess_bubblegum.1.zspr", "Psyduck": "psyduck.2.zspr", "The Pug": "pug.1.zspr", "Purple Chest": "purplechest-bottle.1.zspr", "Pyro": "pyro.1.zspr", "Rainbow Link": "rainbowlink.1.zspr", "Remeer": "remeer.1.zspr", "Rick (Redacted)": "rick.1.zspr", "Robo-Link 9000": "robotlink.1.zspr", "Rocko": "rocko.1.zspr", "Rottytops": "rottytops.1.zspr", "Roy Koopa": "roykoopa.1.zspr", "Rumia": "rumia.1.zspr", "Rydia": "rydia.1.zspr", "Ryu": "ryu.1.zspr", "Sailor Moon": "sailormoon.1.zspr", "Saitama": "saitama.1.zspr", "Samus (Super Metroid)": "samus-sm.1.zspr", "Samus": "samus.2.zspr", "Samus (Classic)": "samus_classic.1.zspr", "Santa Link": "santalink.2.zspr", "Scholar": "scholar.1.zspr", "Selan": "selan.1.zspr", "SevenS1ns": "sevens1ns.1.zspr", "Shadow": "shadow.1.zspr", "Shadow Sakura": "shadowsaku.2.zspr", "Shantae": "shantae.1.zspr", "Shuppet": "shuppet.1.zspr", "Shy Gal": "shy-gal.1.zspr", "Shy Guy": "shy-guy.1.zspr", "SighnWaive": "sighn_waive.1.zspr", "SNES Controller": "snes-controller.1.zspr", "Soda Can": "sodacan.1.zspr", "Solaire of Astora": "solaire.1.zspr", "Hyrule Soldier": "soldiersprite.1.zspr", "Sonic the Hedgehog": "sonic.1.zspr", "Sora": "sora.1.zspr", "Sora (KH1)": "sora_kh1.1.zspr", "Squall": "squall.1.zspr", "Squirrel": "squirrel.1.zspr", "Squirtle": "squirtle.1.zspr", "Stalfos": "stalfos.1.zspr", "Stan": "stan.1.zspr", "Static Link": "staticlink.1.zspr", "Stick Man": "stick_man.1.zspr", "Super Bomb": "superbomb.1.zspr", "Super Bunny": "superbunny.2.zspr", "Super Meat Boy": "supermeatboy.1.zspr", "Swatchy": "swatchy.1.zspr", "TASBot": "tasbot.1.zspr", "Tea Time": "teatime.1.zspr", "Terra (Esper)": "terra.1.zspr", "Tetra Sheet": "tetra.1.zspr", "TGH": "tgh.1.zspr", "Thief": "thief.1.zspr", "Thomcrow": "thomcrow.1.zspr", "Tile": "tile.2.zspr", "Tingle": "tingle.1.zspr", "TMNT": "tmnt.1.zspr", "Toad": "toad.2.zspr", "Toadette": "toadette.2.zspr", "Captain Toadette": "toadette_captain.1.zspr", "TotemLinks": "totem-links.1.zspr", "Trogdor the Burninator": "trogdor.1.zspr", "TP Zelda": "twilightprincesszelda.2.zspr", "TwoFaced": "two_faced.1.zspr", "Ty the Tasmanian Tiger": "ty.1.zspr", "Ultros": "ultros.1.zspr", "Valeera": "valeera.1.zspr", "VanillaLink": "vanillalink.1.zspr", "Vaporeon": "vaporeon.1.zspr", "Vegeta": "vegeta.1.zspr", "Vera": "vera.1.zspr", "Vitreous": "vitreous.1.zspr", "Vivi": "vivi.1.zspr", "Vivian": "vivian.1.zspr", "Wario": "wario.1.zspr", "Will": "will.1.zspr", "Wizzrobe": "wizzrobe.2.zspr", "Wolf Link (Festive)": "wolf_link.1.zspr", "Wolf Link (TP)": "wolf_link_tp.1.zspr", "Yoshi": "yoshi.1.zspr", "Yunica Tovah": "yunica.1.zspr", "Zandra": "zandra.1.zspr", "Zebra Unicorn": "zebraunicorn.1.zspr", "Zeckemyro": "zeck.1.zspr", "Zelda": "zelda.1.zspr", "Zero Suit Samus": "zerosuitsamus.2.zspr", "Zora": "zora.2.zspr"}
diff --git a/WebHostLib/static/static/sprites/ NES Link.gif b/WebHostLib/static/static/sprites/ NES Link.gif
new file mode 100644
index 00000000..41f65e06
Binary files /dev/null and b/WebHostLib/static/static/sprites/ NES Link.gif differ
diff --git a/WebHostLib/static/static/sprites/.gif b/WebHostLib/static/static/sprites/.gif
new file mode 100644
index 00000000..3ad3ab04
Binary files /dev/null and b/WebHostLib/static/static/sprites/.gif differ
diff --git a/WebHostLib/static/static/sprites/Abigail.gif b/WebHostLib/static/static/sprites/Abigail.gif
new file mode 100644
index 00000000..98a2d789
Binary files /dev/null and b/WebHostLib/static/static/sprites/Abigail.gif differ
diff --git a/WebHostLib/static/static/sprites/Adol.gif b/WebHostLib/static/static/sprites/Adol.gif
new file mode 100644
index 00000000..245962f4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Adol.gif differ
diff --git a/WebHostLib/static/static/sprites/Aggretsuko.gif b/WebHostLib/static/static/sprites/Aggretsuko.gif
new file mode 100644
index 00000000..28ca36d4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Aggretsuko.gif differ
diff --git a/WebHostLib/static/static/sprites/Alice.gif b/WebHostLib/static/static/sprites/Alice.gif
new file mode 100644
index 00000000..a3998f13
Binary files /dev/null and b/WebHostLib/static/static/sprites/Alice.gif differ
diff --git a/WebHostLib/static/static/sprites/Angry Video Game Nerd.gif b/WebHostLib/static/static/sprites/Angry Video Game Nerd.gif
new file mode 100644
index 00000000..d22e6dbb
Binary files /dev/null and b/WebHostLib/static/static/sprites/Angry Video Game Nerd.gif differ
diff --git a/WebHostLib/static/static/sprites/Arcane.gif b/WebHostLib/static/static/sprites/Arcane.gif
new file mode 100644
index 00000000..c387aa50
Binary files /dev/null and b/WebHostLib/static/static/sprites/Arcane.gif differ
diff --git a/WebHostLib/static/static/sprites/Ark.gif b/WebHostLib/static/static/sprites/Ark.gif
new file mode 100644
index 00000000..3d0d9289
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ark.gif differ
diff --git a/WebHostLib/static/static/sprites/Arrghus.gif b/WebHostLib/static/static/sprites/Arrghus.gif
new file mode 100644
index 00000000..cd2edf70
Binary files /dev/null and b/WebHostLib/static/static/sprites/Arrghus.gif differ
diff --git a/WebHostLib/static/static/sprites/Astronaut.gif b/WebHostLib/static/static/sprites/Astronaut.gif
new file mode 100644
index 00000000..3e638854
Binary files /dev/null and b/WebHostLib/static/static/sprites/Astronaut.gif differ
diff --git a/WebHostLib/static/static/sprites/B.S. Boy.gif b/WebHostLib/static/static/sprites/B.S. Boy.gif
new file mode 100644
index 00000000..0667a72d
Binary files /dev/null and b/WebHostLib/static/static/sprites/B.S. Boy.gif differ
diff --git a/WebHostLib/static/static/sprites/B.S. Girl.gif b/WebHostLib/static/static/sprites/B.S. Girl.gif
new file mode 100644
index 00000000..76b83879
Binary files /dev/null and b/WebHostLib/static/static/sprites/B.S. Girl.gif differ
diff --git a/WebHostLib/static/static/sprites/Baby Metroid.gif b/WebHostLib/static/static/sprites/Baby Metroid.gif
new file mode 100644
index 00000000..599dc8c0
Binary files /dev/null and b/WebHostLib/static/static/sprites/Baby Metroid.gif differ
diff --git a/WebHostLib/static/static/sprites/Badeline.gif b/WebHostLib/static/static/sprites/Badeline.gif
new file mode 100644
index 00000000..2f2ac79c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Badeline.gif differ
diff --git a/WebHostLib/static/static/sprites/Bananas In Pyjamas.gif b/WebHostLib/static/static/sprites/Bananas In Pyjamas.gif
new file mode 100644
index 00000000..03bf0f3c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bananas In Pyjamas.gif differ
diff --git a/WebHostLib/static/static/sprites/Bandit.gif b/WebHostLib/static/static/sprites/Bandit.gif
new file mode 100644
index 00000000..2c442437
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bandit.gif differ
diff --git a/WebHostLib/static/static/sprites/Batman.gif b/WebHostLib/static/static/sprites/Batman.gif
new file mode 100644
index 00000000..72948a48
Binary files /dev/null and b/WebHostLib/static/static/sprites/Batman.gif differ
diff --git a/WebHostLib/static/static/sprites/Beau.gif b/WebHostLib/static/static/sprites/Beau.gif
new file mode 100644
index 00000000..f3ed9dcb
Binary files /dev/null and b/WebHostLib/static/static/sprites/Beau.gif differ
diff --git a/WebHostLib/static/static/sprites/Bewp.gif b/WebHostLib/static/static/sprites/Bewp.gif
new file mode 100644
index 00000000..1b528f65
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bewp.gif differ
diff --git a/WebHostLib/static/static/sprites/Big Key.gif b/WebHostLib/static/static/sprites/Big Key.gif
new file mode 100644
index 00000000..98e626b7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Big Key.gif differ
diff --git a/WebHostLib/static/static/sprites/Birb.gif b/WebHostLib/static/static/sprites/Birb.gif
new file mode 100644
index 00000000..6a63224d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Birb.gif differ
diff --git a/WebHostLib/static/static/sprites/Birdo.gif b/WebHostLib/static/static/sprites/Birdo.gif
new file mode 100644
index 00000000..70e08d45
Binary files /dev/null and b/WebHostLib/static/static/sprites/Birdo.gif differ
diff --git a/WebHostLib/static/static/sprites/Black Mage.gif b/WebHostLib/static/static/sprites/Black Mage.gif
new file mode 100644
index 00000000..b6a79057
Binary files /dev/null and b/WebHostLib/static/static/sprites/Black Mage.gif differ
diff --git a/WebHostLib/static/static/sprites/Blacksmith Link.gif b/WebHostLib/static/static/sprites/Blacksmith Link.gif
new file mode 100644
index 00000000..c44ff8e1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Blacksmith Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Blossom.gif b/WebHostLib/static/static/sprites/Blossom.gif
new file mode 100644
index 00000000..cd61dfd4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Blossom.gif differ
diff --git a/WebHostLib/static/static/sprites/Bob.gif b/WebHostLib/static/static/sprites/Bob.gif
new file mode 100644
index 00000000..e6f93fae
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bob.gif differ
diff --git a/WebHostLib/static/static/sprites/Boo 2.gif b/WebHostLib/static/static/sprites/Boo 2.gif
new file mode 100644
index 00000000..27fae106
Binary files /dev/null and b/WebHostLib/static/static/sprites/Boo 2.gif differ
diff --git a/WebHostLib/static/static/sprites/Boo.gif b/WebHostLib/static/static/sprites/Boo.gif
new file mode 100644
index 00000000..1a0d5d5c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Boo.gif differ
diff --git a/WebHostLib/static/static/sprites/Bottle o' Goo.gif b/WebHostLib/static/static/sprites/Bottle o' Goo.gif
new file mode 100644
index 00000000..7795c689
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bottle o' Goo.gif differ
diff --git a/WebHostLib/static/static/sprites/Bowser.gif b/WebHostLib/static/static/sprites/Bowser.gif
new file mode 100644
index 00000000..d7c72c64
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bowser.gif differ
diff --git a/WebHostLib/static/static/sprites/Branch.gif b/WebHostLib/static/static/sprites/Branch.gif
new file mode 100644
index 00000000..602b14f1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Branch.gif differ
diff --git a/WebHostLib/static/static/sprites/Brian.gif b/WebHostLib/static/static/sprites/Brian.gif
new file mode 100644
index 00000000..0c5ab0e1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Brian.gif differ
diff --git a/WebHostLib/static/static/sprites/Broccoli.gif b/WebHostLib/static/static/sprites/Broccoli.gif
new file mode 100644
index 00000000..235426a1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Broccoli.gif differ
diff --git a/WebHostLib/static/static/sprites/Bronzor.gif b/WebHostLib/static/static/sprites/Bronzor.gif
new file mode 100644
index 00000000..58a273cd
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bronzor.gif differ
diff --git a/WebHostLib/static/static/sprites/Bubbles.gif b/WebHostLib/static/static/sprites/Bubbles.gif
new file mode 100644
index 00000000..6db528c7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bubbles.gif differ
diff --git a/WebHostLib/static/static/sprites/Bullet Bill.gif b/WebHostLib/static/static/sprites/Bullet Bill.gif
new file mode 100644
index 00000000..83dc91de
Binary files /dev/null and b/WebHostLib/static/static/sprites/Bullet Bill.gif differ
diff --git a/WebHostLib/static/static/sprites/Buttercup.gif b/WebHostLib/static/static/sprites/Buttercup.gif
new file mode 100644
index 00000000..f0194bb3
Binary files /dev/null and b/WebHostLib/static/static/sprites/Buttercup.gif differ
diff --git a/WebHostLib/static/static/sprites/CD-i Link.gif b/WebHostLib/static/static/sprites/CD-i Link.gif
new file mode 100644
index 00000000..f0ce7e96
Binary files /dev/null and b/WebHostLib/static/static/sprites/CD-i Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Cactuar.gif b/WebHostLib/static/static/sprites/Cactuar.gif
new file mode 100644
index 00000000..eb1fc298
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cactuar.gif differ
diff --git a/WebHostLib/static/static/sprites/Cadence.gif b/WebHostLib/static/static/sprites/Cadence.gif
new file mode 100644
index 00000000..7a48ba50
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cadence.gif differ
diff --git a/WebHostLib/static/static/sprites/Captain Toadette.gif b/WebHostLib/static/static/sprites/Captain Toadette.gif
new file mode 100644
index 00000000..a216cc49
Binary files /dev/null and b/WebHostLib/static/static/sprites/Captain Toadette.gif differ
diff --git a/WebHostLib/static/static/sprites/CarlSagan42.gif b/WebHostLib/static/static/sprites/CarlSagan42.gif
new file mode 100644
index 00000000..c8b5a383
Binary files /dev/null and b/WebHostLib/static/static/sprites/CarlSagan42.gif differ
diff --git a/WebHostLib/static/static/sprites/Casual Zelda.gif b/WebHostLib/static/static/sprites/Casual Zelda.gif
new file mode 100644
index 00000000..ffde5c05
Binary files /dev/null and b/WebHostLib/static/static/sprites/Casual Zelda.gif differ
diff --git a/WebHostLib/static/static/sprites/Cat Boo.gif b/WebHostLib/static/static/sprites/Cat Boo.gif
new file mode 100644
index 00000000..cec409f4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cat Boo.gif differ
diff --git a/WebHostLib/static/static/sprites/Celes.gif b/WebHostLib/static/static/sprites/Celes.gif
new file mode 100644
index 00000000..605bbae8
Binary files /dev/null and b/WebHostLib/static/static/sprites/Celes.gif differ
diff --git a/WebHostLib/static/static/sprites/Charizard.gif b/WebHostLib/static/static/sprites/Charizard.gif
new file mode 100644
index 00000000..406b907f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Charizard.gif differ
diff --git a/WebHostLib/static/static/sprites/Cheep Cheep.gif b/WebHostLib/static/static/sprites/Cheep Cheep.gif
new file mode 100644
index 00000000..a23cbfa7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cheep Cheep.gif differ
diff --git a/WebHostLib/static/static/sprites/Chibity.gif b/WebHostLib/static/static/sprites/Chibity.gif
new file mode 100644
index 00000000..01db3304
Binary files /dev/null and b/WebHostLib/static/static/sprites/Chibity.gif differ
diff --git a/WebHostLib/static/static/sprites/Cirno.gif b/WebHostLib/static/static/sprites/Cirno.gif
new file mode 100644
index 00000000..beecfe21
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cirno.gif differ
diff --git a/WebHostLib/static/static/sprites/Clifford.gif b/WebHostLib/static/static/sprites/Clifford.gif
new file mode 100644
index 00000000..744f2f43
Binary files /dev/null and b/WebHostLib/static/static/sprites/Clifford.gif differ
diff --git a/WebHostLib/static/static/sprites/Clyde.gif b/WebHostLib/static/static/sprites/Clyde.gif
new file mode 100644
index 00000000..da73590d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Clyde.gif differ
diff --git a/WebHostLib/static/static/sprites/Conker.gif b/WebHostLib/static/static/sprites/Conker.gif
new file mode 100644
index 00000000..ef5dc37b
Binary files /dev/null and b/WebHostLib/static/static/sprites/Conker.gif differ
diff --git a/WebHostLib/static/static/sprites/Cornelius.gif b/WebHostLib/static/static/sprites/Cornelius.gif
new file mode 100644
index 00000000..26c3cc55
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cornelius.gif differ
diff --git a/WebHostLib/static/static/sprites/Cucco.gif b/WebHostLib/static/static/sprites/Cucco.gif
new file mode 100644
index 00000000..a3996f86
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cucco.gif differ
diff --git a/WebHostLib/static/static/sprites/Cursor.gif b/WebHostLib/static/static/sprites/Cursor.gif
new file mode 100644
index 00000000..9da98c77
Binary files /dev/null and b/WebHostLib/static/static/sprites/Cursor.gif differ
diff --git a/WebHostLib/static/static/sprites/D.Owls.gif b/WebHostLib/static/static/sprites/D.Owls.gif
new file mode 100644
index 00000000..b7c1f6f9
Binary files /dev/null and b/WebHostLib/static/static/sprites/D.Owls.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Boy.gif b/WebHostLib/static/static/sprites/Dark Boy.gif
new file mode 100644
index 00000000..4c1ffc5c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Boy.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Girl.gif b/WebHostLib/static/static/sprites/Dark Girl.gif
new file mode 100644
index 00000000..a6042a52
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Girl.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Link (Tunic).gif b/WebHostLib/static/static/sprites/Dark Link (Tunic).gif
new file mode 100644
index 00000000..7972913a
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Link (Tunic).gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Link.gif b/WebHostLib/static/static/sprites/Dark Link.gif
new file mode 100644
index 00000000..500817dc
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Panda.gif b/WebHostLib/static/static/sprites/Dark Panda.gif
new file mode 100644
index 00000000..0ad4cf13
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Panda.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Swatchy.gif b/WebHostLib/static/static/sprites/Dark Swatchy.gif
new file mode 100644
index 00000000..bbdc2063
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Swatchy.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Zelda.gif b/WebHostLib/static/static/sprites/Dark Zelda.gif
new file mode 100644
index 00000000..20088ce7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Zelda.gif differ
diff --git a/WebHostLib/static/static/sprites/Dark Zora.gif b/WebHostLib/static/static/sprites/Dark Zora.gif
new file mode 100644
index 00000000..c3c405be
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dark Zora.gif differ
diff --git a/WebHostLib/static/static/sprites/Deadpool (Mythic).gif b/WebHostLib/static/static/sprites/Deadpool (Mythic).gif
new file mode 100644
index 00000000..c05fb1d5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Deadpool (Mythic).gif differ
diff --git a/WebHostLib/static/static/sprites/Deadpool (SirCzah).gif b/WebHostLib/static/static/sprites/Deadpool (SirCzah).gif
new file mode 100644
index 00000000..f626f86d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Deadpool (SirCzah).gif differ
diff --git a/WebHostLib/static/static/sprites/Deadrock.gif b/WebHostLib/static/static/sprites/Deadrock.gif
new file mode 100644
index 00000000..e9d8663f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Deadrock.gif differ
diff --git a/WebHostLib/static/static/sprites/Decidueye.gif b/WebHostLib/static/static/sprites/Decidueye.gif
new file mode 100644
index 00000000..656e3b11
Binary files /dev/null and b/WebHostLib/static/static/sprites/Decidueye.gif differ
diff --git a/WebHostLib/static/static/sprites/Demon Link.gif b/WebHostLib/static/static/sprites/Demon Link.gif
new file mode 100644
index 00000000..35f02ab0
Binary files /dev/null and b/WebHostLib/static/static/sprites/Demon Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Dragonite.gif b/WebHostLib/static/static/sprites/Dragonite.gif
new file mode 100644
index 00000000..a68dddc1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Dragonite.gif differ
diff --git a/WebHostLib/static/static/sprites/Drake The Dragon.gif b/WebHostLib/static/static/sprites/Drake The Dragon.gif
new file mode 100644
index 00000000..51b4e9a5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Drake The Dragon.gif differ
diff --git a/WebHostLib/static/static/sprites/Eggplant.gif b/WebHostLib/static/static/sprites/Eggplant.gif
new file mode 100644
index 00000000..b1a34e68
Binary files /dev/null and b/WebHostLib/static/static/sprites/Eggplant.gif differ
diff --git a/WebHostLib/static/static/sprites/EmoSaru.gif b/WebHostLib/static/static/sprites/EmoSaru.gif
new file mode 100644
index 00000000..3420f4f1
Binary files /dev/null and b/WebHostLib/static/static/sprites/EmoSaru.gif differ
diff --git a/WebHostLib/static/static/sprites/Ezlo.gif b/WebHostLib/static/static/sprites/Ezlo.gif
new file mode 100644
index 00000000..7aea56b4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ezlo.gif differ
diff --git a/WebHostLib/static/static/sprites/Fierce Deity Link.gif b/WebHostLib/static/static/sprites/Fierce Deity Link.gif
new file mode 100644
index 00000000..f566d416
Binary files /dev/null and b/WebHostLib/static/static/sprites/Fierce Deity Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Figaro Merchant.gif b/WebHostLib/static/static/sprites/Figaro Merchant.gif
new file mode 100644
index 00000000..b777e7ea
Binary files /dev/null and b/WebHostLib/static/static/sprites/Figaro Merchant.gif differ
diff --git a/WebHostLib/static/static/sprites/Finn Merten.gif b/WebHostLib/static/static/sprites/Finn Merten.gif
new file mode 100644
index 00000000..017468be
Binary files /dev/null and b/WebHostLib/static/static/sprites/Finn Merten.gif differ
diff --git a/WebHostLib/static/static/sprites/Finny Bear.gif b/WebHostLib/static/static/sprites/Finny Bear.gif
new file mode 100644
index 00000000..b42b215b
Binary files /dev/null and b/WebHostLib/static/static/sprites/Finny Bear.gif differ
diff --git a/WebHostLib/static/static/sprites/Flavor Guy.gif b/WebHostLib/static/static/sprites/Flavor Guy.gif
new file mode 100644
index 00000000..13269e23
Binary files /dev/null and b/WebHostLib/static/static/sprites/Flavor Guy.gif differ
diff --git a/WebHostLib/static/static/sprites/Floodgate Fish.gif b/WebHostLib/static/static/sprites/Floodgate Fish.gif
new file mode 100644
index 00000000..d52b57e2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Floodgate Fish.gif differ
diff --git a/WebHostLib/static/static/sprites/Four Swords Link.gif b/WebHostLib/static/static/sprites/Four Swords Link.gif
new file mode 100644
index 00000000..9d491b62
Binary files /dev/null and b/WebHostLib/static/static/sprites/Four Swords Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Fox Link.gif b/WebHostLib/static/static/sprites/Fox Link.gif
new file mode 100644
index 00000000..05b26d5e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Fox Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Freya Crescent.gif b/WebHostLib/static/static/sprites/Freya Crescent.gif
new file mode 100644
index 00000000..ae61651f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Freya Crescent.gif differ
diff --git a/WebHostLib/static/static/sprites/Frisk.gif b/WebHostLib/static/static/sprites/Frisk.gif
new file mode 100644
index 00000000..bad467a6
Binary files /dev/null and b/WebHostLib/static/static/sprites/Frisk.gif differ
diff --git a/WebHostLib/static/static/sprites/Frog Link.gif b/WebHostLib/static/static/sprites/Frog Link.gif
new file mode 100644
index 00000000..72572d21
Binary files /dev/null and b/WebHostLib/static/static/sprites/Frog Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Fujin.gif b/WebHostLib/static/static/sprites/Fujin.gif
new file mode 100644
index 00000000..59637033
Binary files /dev/null and b/WebHostLib/static/static/sprites/Fujin.gif differ
diff --git a/WebHostLib/static/static/sprites/Future Trunks.gif b/WebHostLib/static/static/sprites/Future Trunks.gif
new file mode 100644
index 00000000..a3215951
Binary files /dev/null and b/WebHostLib/static/static/sprites/Future Trunks.gif differ
diff --git a/WebHostLib/static/static/sprites/GBC Link.gif b/WebHostLib/static/static/sprites/GBC Link.gif
new file mode 100644
index 00000000..4a8616bd
Binary files /dev/null and b/WebHostLib/static/static/sprites/GBC Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Gamer.gif b/WebHostLib/static/static/sprites/Gamer.gif
new file mode 100644
index 00000000..43de07bc
Binary files /dev/null and b/WebHostLib/static/static/sprites/Gamer.gif differ
diff --git a/WebHostLib/static/static/sprites/Ganondorf.gif b/WebHostLib/static/static/sprites/Ganondorf.gif
new file mode 100644
index 00000000..55de523a
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ganondorf.gif differ
diff --git a/WebHostLib/static/static/sprites/Garfield.gif b/WebHostLib/static/static/sprites/Garfield.gif
new file mode 100644
index 00000000..6c77166d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Garfield.gif differ
diff --git a/WebHostLib/static/static/sprites/Garnet.gif b/WebHostLib/static/static/sprites/Garnet.gif
new file mode 100644
index 00000000..56ffb4a3
Binary files /dev/null and b/WebHostLib/static/static/sprites/Garnet.gif differ
diff --git a/WebHostLib/static/static/sprites/Garo Master.gif b/WebHostLib/static/static/sprites/Garo Master.gif
new file mode 100644
index 00000000..4a62fbd4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Garo Master.gif differ
diff --git a/WebHostLib/static/static/sprites/Geno.gif b/WebHostLib/static/static/sprites/Geno.gif
new file mode 100644
index 00000000..04e666dd
Binary files /dev/null and b/WebHostLib/static/static/sprites/Geno.gif differ
diff --git a/WebHostLib/static/static/sprites/Gobli.gif b/WebHostLib/static/static/sprites/Gobli.gif
new file mode 100644
index 00000000..42657518
Binary files /dev/null and b/WebHostLib/static/static/sprites/Gobli.gif differ
diff --git a/WebHostLib/static/static/sprites/Goomba.gif b/WebHostLib/static/static/sprites/Goomba.gif
new file mode 100644
index 00000000..ee35f0fa
Binary files /dev/null and b/WebHostLib/static/static/sprites/Goomba.gif differ
diff --git a/WebHostLib/static/static/sprites/Goose.gif b/WebHostLib/static/static/sprites/Goose.gif
new file mode 100644
index 00000000..9e18ffe3
Binary files /dev/null and b/WebHostLib/static/static/sprites/Goose.gif differ
diff --git a/WebHostLib/static/static/sprites/GrandPOOBear.gif b/WebHostLib/static/static/sprites/GrandPOOBear.gif
new file mode 100644
index 00000000..3a79cf24
Binary files /dev/null and b/WebHostLib/static/static/sprites/GrandPOOBear.gif differ
diff --git a/WebHostLib/static/static/sprites/Gruncle Stan.gif b/WebHostLib/static/static/sprites/Gruncle Stan.gif
new file mode 100644
index 00000000..fa044111
Binary files /dev/null and b/WebHostLib/static/static/sprites/Gruncle Stan.gif differ
diff --git a/WebHostLib/static/static/sprites/GuizDP.gif b/WebHostLib/static/static/sprites/GuizDP.gif
new file mode 100644
index 00000000..b0acebac
Binary files /dev/null and b/WebHostLib/static/static/sprites/GuizDP.gif differ
diff --git a/WebHostLib/static/static/sprites/Hardhat Beetle.gif b/WebHostLib/static/static/sprites/Hardhat Beetle.gif
new file mode 100644
index 00000000..bb7bbb4d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hardhat Beetle.gif differ
diff --git a/WebHostLib/static/static/sprites/Hat Color Link.gif b/WebHostLib/static/static/sprites/Hat Color Link.gif
new file mode 100644
index 00000000..e89622a1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hat Color Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Hat Kid.gif b/WebHostLib/static/static/sprites/Hat Kid.gif
new file mode 100644
index 00000000..5160b0e9
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hat Kid.gif differ
diff --git a/WebHostLib/static/static/sprites/Headless Link.gif b/WebHostLib/static/static/sprites/Headless Link.gif
new file mode 100644
index 00000000..9a3c0580
Binary files /dev/null and b/WebHostLib/static/static/sprites/Headless Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Hello Kitty.gif b/WebHostLib/static/static/sprites/Hello Kitty.gif
new file mode 100644
index 00000000..6b0b9800
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hello Kitty.gif differ
diff --git a/WebHostLib/static/static/sprites/Hidari.gif b/WebHostLib/static/static/sprites/Hidari.gif
new file mode 100644
index 00000000..4f7dad85
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hidari.gif differ
diff --git a/WebHostLib/static/static/sprites/Hint Tile.gif b/WebHostLib/static/static/sprites/Hint Tile.gif
new file mode 100644
index 00000000..e5109552
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hint Tile.gif differ
diff --git a/WebHostLib/static/static/sprites/Hitsuyan1337.gif b/WebHostLib/static/static/sprites/Hitsuyan1337.gif
new file mode 100644
index 00000000..ea04ff82
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hitsuyan1337.gif differ
diff --git a/WebHostLib/static/static/sprites/Hoarder (Bush).gif b/WebHostLib/static/static/sprites/Hoarder (Bush).gif
new file mode 100644
index 00000000..19e0005d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hoarder (Bush).gif differ
diff --git a/WebHostLib/static/static/sprites/Hoarder (Pot).gif b/WebHostLib/static/static/sprites/Hoarder (Pot).gif
new file mode 100644
index 00000000..230db8f6
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hoarder (Pot).gif differ
diff --git a/WebHostLib/static/static/sprites/Hoarder (Rock).gif b/WebHostLib/static/static/sprites/Hoarder (Rock).gif
new file mode 100644
index 00000000..4a771ef8
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hoarder (Rock).gif differ
diff --git a/WebHostLib/static/static/sprites/Homer Simpson.gif b/WebHostLib/static/static/sprites/Homer Simpson.gif
new file mode 100644
index 00000000..62cf8d99
Binary files /dev/null and b/WebHostLib/static/static/sprites/Homer Simpson.gif differ
diff --git a/WebHostLib/static/static/sprites/Hyrule Knight.gif b/WebHostLib/static/static/sprites/Hyrule Knight.gif
new file mode 100644
index 00000000..1cf9b20b
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hyrule Knight.gif differ
diff --git a/WebHostLib/static/static/sprites/Hyrule Soldier.gif b/WebHostLib/static/static/sprites/Hyrule Soldier.gif
new file mode 100644
index 00000000..fdb67304
Binary files /dev/null and b/WebHostLib/static/static/sprites/Hyrule Soldier.gif differ
diff --git a/WebHostLib/static/static/sprites/Ignignokt.gif b/WebHostLib/static/static/sprites/Ignignokt.gif
new file mode 100644
index 00000000..1acf0046
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ignignokt.gif differ
diff --git a/WebHostLib/static/static/sprites/Informant Woman.gif b/WebHostLib/static/static/sprites/Informant Woman.gif
new file mode 100644
index 00000000..41a6bc2d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Informant Woman.gif differ
diff --git a/WebHostLib/static/static/sprites/Inkling.gif b/WebHostLib/static/static/sprites/Inkling.gif
new file mode 100644
index 00000000..fb6c805a
Binary files /dev/null and b/WebHostLib/static/static/sprites/Inkling.gif differ
diff --git a/WebHostLib/static/static/sprites/Invisible Link.gif b/WebHostLib/static/static/sprites/Invisible Link.gif
new file mode 100644
index 00000000..395d140f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Invisible Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Jack Frost.gif b/WebHostLib/static/static/sprites/Jack Frost.gif
new file mode 100644
index 00000000..f6b38431
Binary files /dev/null and b/WebHostLib/static/static/sprites/Jack Frost.gif differ
diff --git a/WebHostLib/static/static/sprites/Jason Frudnick.gif b/WebHostLib/static/static/sprites/Jason Frudnick.gif
new file mode 100644
index 00000000..7b055f00
Binary files /dev/null and b/WebHostLib/static/static/sprites/Jason Frudnick.gif differ
diff --git a/WebHostLib/static/static/sprites/Jasp.gif b/WebHostLib/static/static/sprites/Jasp.gif
new file mode 100644
index 00000000..083d12bd
Binary files /dev/null and b/WebHostLib/static/static/sprites/Jasp.gif differ
diff --git a/WebHostLib/static/static/sprites/Jogurt.gif b/WebHostLib/static/static/sprites/Jogurt.gif
new file mode 100644
index 00000000..d7bad990
Binary files /dev/null and b/WebHostLib/static/static/sprites/Jogurt.gif differ
diff --git a/WebHostLib/static/static/sprites/Katsura.gif b/WebHostLib/static/static/sprites/Katsura.gif
new file mode 100644
index 00000000..41d817f7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Katsura.gif differ
diff --git a/WebHostLib/static/static/sprites/Kecleon.gif b/WebHostLib/static/static/sprites/Kecleon.gif
new file mode 100644
index 00000000..856aec1d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Kecleon.gif differ
diff --git a/WebHostLib/static/static/sprites/Kenny McCormick.gif b/WebHostLib/static/static/sprites/Kenny McCormick.gif
new file mode 100644
index 00000000..37c60acd
Binary files /dev/null and b/WebHostLib/static/static/sprites/Kenny McCormick.gif differ
diff --git a/WebHostLib/static/static/sprites/Ketchup.gif b/WebHostLib/static/static/sprites/Ketchup.gif
new file mode 100644
index 00000000..d700da10
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ketchup.gif differ
diff --git a/WebHostLib/static/static/sprites/Kholdstare.gif b/WebHostLib/static/static/sprites/Kholdstare.gif
new file mode 100644
index 00000000..ca2296c5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Kholdstare.gif differ
diff --git a/WebHostLib/static/static/sprites/King Gothalion.gif b/WebHostLib/static/static/sprites/King Gothalion.gif
new file mode 100644
index 00000000..8a15ee99
Binary files /dev/null and b/WebHostLib/static/static/sprites/King Gothalion.gif differ
diff --git a/WebHostLib/static/static/sprites/King Graham v1.1.gif b/WebHostLib/static/static/sprites/King Graham v1.1.gif
new file mode 100644
index 00000000..f47647b4
Binary files /dev/null and b/WebHostLib/static/static/sprites/King Graham v1.1.gif differ
diff --git a/WebHostLib/static/static/sprites/Kirby.gif b/WebHostLib/static/static/sprites/Kirby.gif
new file mode 100644
index 00000000..e3ed266e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Kirby.gif differ
diff --git a/WebHostLib/static/static/sprites/Kore8.gif b/WebHostLib/static/static/sprites/Kore8.gif
new file mode 100644
index 00000000..6ba32a57
Binary files /dev/null and b/WebHostLib/static/static/sprites/Kore8.gif differ
diff --git a/WebHostLib/static/static/sprites/Lakitu.gif b/WebHostLib/static/static/sprites/Lakitu.gif
new file mode 100644
index 00000000..d7559612
Binary files /dev/null and b/WebHostLib/static/static/sprites/Lakitu.gif differ
diff --git a/WebHostLib/static/static/sprites/Lapras.gif b/WebHostLib/static/static/sprites/Lapras.gif
new file mode 100644
index 00000000..1af11eb7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Lapras.gif differ
diff --git a/WebHostLib/static/static/sprites/Lest.gif b/WebHostLib/static/static/sprites/Lest.gif
new file mode 100644
index 00000000..31acbb13
Binary files /dev/null and b/WebHostLib/static/static/sprites/Lest.gif differ
diff --git a/WebHostLib/static/static/sprites/Lily.gif b/WebHostLib/static/static/sprites/Lily.gif
new file mode 100644
index 00000000..f31f22d5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Lily.gif differ
diff --git a/WebHostLib/static/static/sprites/Linja.gif b/WebHostLib/static/static/sprites/Linja.gif
new file mode 100644
index 00000000..4ce7732d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Linja.gif differ
diff --git a/WebHostLib/static/static/sprites/Link.gif b/WebHostLib/static/static/sprites/Link.gif
new file mode 100644
index 00000000..e2a4dd5d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Lucario.gif b/WebHostLib/static/static/sprites/Lucario.gif
new file mode 100644
index 00000000..d2bcf1ca
Binary files /dev/null and b/WebHostLib/static/static/sprites/Lucario.gif differ
diff --git a/WebHostLib/static/static/sprites/Luigi.gif b/WebHostLib/static/static/sprites/Luigi.gif
new file mode 100644
index 00000000..586ed908
Binary files /dev/null and b/WebHostLib/static/static/sprites/Luigi.gif differ
diff --git a/WebHostLib/static/static/sprites/Madeline.gif b/WebHostLib/static/static/sprites/Madeline.gif
new file mode 100644
index 00000000..1314dcc0
Binary files /dev/null and b/WebHostLib/static/static/sprites/Madeline.gif differ
diff --git a/WebHostLib/static/static/sprites/Magus.gif b/WebHostLib/static/static/sprites/Magus.gif
new file mode 100644
index 00000000..1e69b7d2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Magus.gif differ
diff --git a/WebHostLib/static/static/sprites/Maiden.gif b/WebHostLib/static/static/sprites/Maiden.gif
new file mode 100644
index 00000000..66b30522
Binary files /dev/null and b/WebHostLib/static/static/sprites/Maiden.gif differ
diff --git a/WebHostLib/static/static/sprites/Mallow (Cat).gif b/WebHostLib/static/static/sprites/Mallow (Cat).gif
new file mode 100644
index 00000000..d7016594
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mallow (Cat).gif differ
diff --git a/WebHostLib/static/static/sprites/Manga Link.gif b/WebHostLib/static/static/sprites/Manga Link.gif
new file mode 100644
index 00000000..944bf8f7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Manga Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Maple Queen.gif b/WebHostLib/static/static/sprites/Maple Queen.gif
new file mode 100644
index 00000000..5469133a
Binary files /dev/null and b/WebHostLib/static/static/sprites/Maple Queen.gif differ
diff --git a/WebHostLib/static/static/sprites/Marin.gif b/WebHostLib/static/static/sprites/Marin.gif
new file mode 100644
index 00000000..5bc449bc
Binary files /dev/null and b/WebHostLib/static/static/sprites/Marin.gif differ
diff --git a/WebHostLib/static/static/sprites/Mario (Classic).gif b/WebHostLib/static/static/sprites/Mario (Classic).gif
new file mode 100644
index 00000000..e05d9b28
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mario (Classic).gif differ
diff --git a/WebHostLib/static/static/sprites/Mario and Cappy.gif b/WebHostLib/static/static/sprites/Mario and Cappy.gif
new file mode 100644
index 00000000..d16bbdf8
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mario and Cappy.gif differ
diff --git a/WebHostLib/static/static/sprites/Marisa Kirisame.gif b/WebHostLib/static/static/sprites/Marisa Kirisame.gif
new file mode 100644
index 00000000..42c5c13f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Marisa Kirisame.gif differ
diff --git a/WebHostLib/static/static/sprites/Marvin the Cat.gif b/WebHostLib/static/static/sprites/Marvin the Cat.gif
new file mode 100644
index 00000000..e18d2854
Binary files /dev/null and b/WebHostLib/static/static/sprites/Marvin the Cat.gif differ
diff --git a/WebHostLib/static/static/sprites/Matthias.gif b/WebHostLib/static/static/sprites/Matthias.gif
new file mode 100644
index 00000000..b1688b73
Binary files /dev/null and b/WebHostLib/static/static/sprites/Matthias.gif differ
diff --git a/WebHostLib/static/static/sprites/Meatwad.gif b/WebHostLib/static/static/sprites/Meatwad.gif
new file mode 100644
index 00000000..1cb42ac7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Meatwad.gif differ
diff --git a/WebHostLib/static/static/sprites/Medallions.gif b/WebHostLib/static/static/sprites/Medallions.gif
new file mode 100644
index 00000000..d21e022b
Binary files /dev/null and b/WebHostLib/static/static/sprites/Medallions.gif differ
diff --git a/WebHostLib/static/static/sprites/Medli.gif b/WebHostLib/static/static/sprites/Medli.gif
new file mode 100644
index 00000000..9d519827
Binary files /dev/null and b/WebHostLib/static/static/sprites/Medli.gif differ
diff --git a/WebHostLib/static/static/sprites/Megaman X.gif b/WebHostLib/static/static/sprites/Megaman X.gif
new file mode 100644
index 00000000..a57d0331
Binary files /dev/null and b/WebHostLib/static/static/sprites/Megaman X.gif differ
diff --git a/WebHostLib/static/static/sprites/MewLp.gif b/WebHostLib/static/static/sprites/MewLp.gif
new file mode 100644
index 00000000..137fe70e
Binary files /dev/null and b/WebHostLib/static/static/sprites/MewLp.gif differ
diff --git a/WebHostLib/static/static/sprites/Mike Jones.gif b/WebHostLib/static/static/sprites/Mike Jones.gif
new file mode 100644
index 00000000..11735200
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mike Jones.gif differ
diff --git a/WebHostLib/static/static/sprites/Mini Ganon.gif b/WebHostLib/static/static/sprites/Mini Ganon.gif
new file mode 100644
index 00000000..950308b2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mini Ganon.gif differ
diff --git a/WebHostLib/static/static/sprites/Minish Cap Link.gif b/WebHostLib/static/static/sprites/Minish Cap Link.gif
new file mode 100644
index 00000000..dc8616f2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Minish Cap Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Minish Link.gif b/WebHostLib/static/static/sprites/Minish Link.gif
new file mode 100644
index 00000000..79cbfd39
Binary files /dev/null and b/WebHostLib/static/static/sprites/Minish Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Modern Link.gif b/WebHostLib/static/static/sprites/Modern Link.gif
new file mode 100644
index 00000000..4b2258a7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Modern Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Mog.gif b/WebHostLib/static/static/sprites/Mog.gif
new file mode 100644
index 00000000..b0dbcbb2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mog.gif differ
diff --git a/WebHostLib/static/static/sprites/Momiji Inubashiri.gif b/WebHostLib/static/static/sprites/Momiji Inubashiri.gif
new file mode 100644
index 00000000..d28ea6c8
Binary files /dev/null and b/WebHostLib/static/static/sprites/Momiji Inubashiri.gif differ
diff --git a/WebHostLib/static/static/sprites/Moosh.gif b/WebHostLib/static/static/sprites/Moosh.gif
new file mode 100644
index 00000000..f737764d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Moosh.gif differ
diff --git a/WebHostLib/static/static/sprites/Mouse.gif b/WebHostLib/static/static/sprites/Mouse.gif
new file mode 100644
index 00000000..6aab3578
Binary files /dev/null and b/WebHostLib/static/static/sprites/Mouse.gif differ
diff --git a/WebHostLib/static/static/sprites/Ms. Paint Dog.gif b/WebHostLib/static/static/sprites/Ms. Paint Dog.gif
new file mode 100644
index 00000000..781f87c2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ms. Paint Dog.gif differ
diff --git a/WebHostLib/static/static/sprites/Nature Link.gif b/WebHostLib/static/static/sprites/Nature Link.gif
new file mode 100644
index 00000000..65f9f151
Binary files /dev/null and b/WebHostLib/static/static/sprites/Nature Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Navi.gif b/WebHostLib/static/static/sprites/Navi.gif
new file mode 100644
index 00000000..8a712f3d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Navi.gif differ
diff --git a/WebHostLib/static/static/sprites/Navirou.gif b/WebHostLib/static/static/sprites/Navirou.gif
new file mode 100644
index 00000000..b16c1ab4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Navirou.gif differ
diff --git a/WebHostLib/static/static/sprites/Ned Flanders.gif b/WebHostLib/static/static/sprites/Ned Flanders.gif
new file mode 100644
index 00000000..79a423d9
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ned Flanders.gif differ
diff --git a/WebHostLib/static/static/sprites/Negative Link.gif b/WebHostLib/static/static/sprites/Negative Link.gif
new file mode 100644
index 00000000..c1c17821
Binary files /dev/null and b/WebHostLib/static/static/sprites/Negative Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Neosad.gif b/WebHostLib/static/static/sprites/Neosad.gif
new file mode 100644
index 00000000..79b82388
Binary files /dev/null and b/WebHostLib/static/static/sprites/Neosad.gif differ
diff --git a/WebHostLib/static/static/sprites/Ness (Earthbound).gif b/WebHostLib/static/static/sprites/Ness (Earthbound).gif
new file mode 100644
index 00000000..0cf76aba
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ness (Earthbound).gif differ
diff --git a/WebHostLib/static/static/sprites/Nia.gif b/WebHostLib/static/static/sprites/Nia.gif
new file mode 100644
index 00000000..cd091e8e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Nia.gif differ
diff --git a/WebHostLib/static/static/sprites/Niko.gif b/WebHostLib/static/static/sprites/Niko.gif
new file mode 100644
index 00000000..d92a424c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Niko.gif differ
diff --git a/WebHostLib/static/static/sprites/Old Man.gif b/WebHostLib/static/static/sprites/Old Man.gif
new file mode 100644
index 00000000..e9c90213
Binary files /dev/null and b/WebHostLib/static/static/sprites/Old Man.gif differ
diff --git a/WebHostLib/static/static/sprites/Ori.gif b/WebHostLib/static/static/sprites/Ori.gif
new file mode 100644
index 00000000..ac597c91
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ori.gif differ
diff --git a/WebHostLib/static/static/sprites/Outline Link.gif b/WebHostLib/static/static/sprites/Outline Link.gif
new file mode 100644
index 00000000..d1c17097
Binary files /dev/null and b/WebHostLib/static/static/sprites/Outline Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Parallel Worlds Link.gif b/WebHostLib/static/static/sprites/Parallel Worlds Link.gif
new file mode 100644
index 00000000..f3a23a39
Binary files /dev/null and b/WebHostLib/static/static/sprites/Parallel Worlds Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Paula.gif b/WebHostLib/static/static/sprites/Paula.gif
new file mode 100644
index 00000000..aa517e29
Binary files /dev/null and b/WebHostLib/static/static/sprites/Paula.gif differ
diff --git a/WebHostLib/static/static/sprites/Penguin Link.gif b/WebHostLib/static/static/sprites/Penguin Link.gif
new file mode 100644
index 00000000..9decd671
Binary files /dev/null and b/WebHostLib/static/static/sprites/Penguin Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Pete (Harvest Moon).gif b/WebHostLib/static/static/sprites/Pete (Harvest Moon).gif
new file mode 100644
index 00000000..ede17c41
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pete (Harvest Moon).gif differ
diff --git a/WebHostLib/static/static/sprites/Phoenix Wright.gif b/WebHostLib/static/static/sprites/Phoenix Wright.gif
new file mode 100644
index 00000000..042412a3
Binary files /dev/null and b/WebHostLib/static/static/sprites/Phoenix Wright.gif differ
diff --git a/WebHostLib/static/static/sprites/Pikachu.gif b/WebHostLib/static/static/sprites/Pikachu.gif
new file mode 100644
index 00000000..b90c0985
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pikachu.gif differ
diff --git a/WebHostLib/static/static/sprites/Pink Ribbon Link.gif b/WebHostLib/static/static/sprites/Pink Ribbon Link.gif
new file mode 100644
index 00000000..1c3927b0
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pink Ribbon Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Piranha Plant.gif b/WebHostLib/static/static/sprites/Piranha Plant.gif
new file mode 100644
index 00000000..45155a57
Binary files /dev/null and b/WebHostLib/static/static/sprites/Piranha Plant.gif differ
diff --git a/WebHostLib/static/static/sprites/Plague Knight.gif b/WebHostLib/static/static/sprites/Plague Knight.gif
new file mode 100644
index 00000000..71cab03f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Plague Knight.gif differ
diff --git a/WebHostLib/static/static/sprites/Pokey.gif b/WebHostLib/static/static/sprites/Pokey.gif
new file mode 100644
index 00000000..3b36a8ce
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pokey.gif differ
diff --git a/WebHostLib/static/static/sprites/Pony.gif b/WebHostLib/static/static/sprites/Pony.gif
new file mode 100644
index 00000000..014d2fb8
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pony.gif differ
diff --git a/WebHostLib/static/static/sprites/Popoi.gif b/WebHostLib/static/static/sprites/Popoi.gif
new file mode 100644
index 00000000..5f60c42e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Popoi.gif differ
diff --git a/WebHostLib/static/static/sprites/Poppy.gif b/WebHostLib/static/static/sprites/Poppy.gif
new file mode 100644
index 00000000..8ffda2da
Binary files /dev/null and b/WebHostLib/static/static/sprites/Poppy.gif differ
diff --git a/WebHostLib/static/static/sprites/Porg Knight.gif b/WebHostLib/static/static/sprites/Porg Knight.gif
new file mode 100644
index 00000000..b15a505f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Porg Knight.gif differ
diff --git a/WebHostLib/static/static/sprites/Power Up with Pride Mushroom.gif b/WebHostLib/static/static/sprites/Power Up with Pride Mushroom.gif
new file mode 100644
index 00000000..a9f980d5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Power Up with Pride Mushroom.gif differ
diff --git a/WebHostLib/static/static/sprites/Powerpuff Girl.gif b/WebHostLib/static/static/sprites/Powerpuff Girl.gif
new file mode 100644
index 00000000..cc3e2c96
Binary files /dev/null and b/WebHostLib/static/static/sprites/Powerpuff Girl.gif differ
diff --git a/WebHostLib/static/static/sprites/Pride Link.gif b/WebHostLib/static/static/sprites/Pride Link.gif
new file mode 100644
index 00000000..b8cce3de
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pride Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Primm.gif b/WebHostLib/static/static/sprites/Primm.gif
new file mode 100644
index 00000000..cccb75f6
Binary files /dev/null and b/WebHostLib/static/static/sprites/Primm.gif differ
diff --git a/WebHostLib/static/static/sprites/Princess Bubblegum.gif b/WebHostLib/static/static/sprites/Princess Bubblegum.gif
new file mode 100644
index 00000000..342ef028
Binary files /dev/null and b/WebHostLib/static/static/sprites/Princess Bubblegum.gif differ
diff --git a/WebHostLib/static/static/sprites/Princess Peach.gif b/WebHostLib/static/static/sprites/Princess Peach.gif
new file mode 100644
index 00000000..50f72179
Binary files /dev/null and b/WebHostLib/static/static/sprites/Princess Peach.gif differ
diff --git a/WebHostLib/static/static/sprites/Psyduck.gif b/WebHostLib/static/static/sprites/Psyduck.gif
new file mode 100644
index 00000000..ccad4669
Binary files /dev/null and b/WebHostLib/static/static/sprites/Psyduck.gif differ
diff --git a/WebHostLib/static/static/sprites/Purple Chest.gif b/WebHostLib/static/static/sprites/Purple Chest.gif
new file mode 100644
index 00000000..76289fab
Binary files /dev/null and b/WebHostLib/static/static/sprites/Purple Chest.gif differ
diff --git a/WebHostLib/static/static/sprites/Pyro.gif b/WebHostLib/static/static/sprites/Pyro.gif
new file mode 100644
index 00000000..472bef8f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Pyro.gif differ
diff --git a/WebHostLib/static/static/sprites/Rainbow Link.gif b/WebHostLib/static/static/sprites/Rainbow Link.gif
new file mode 100644
index 00000000..c6e267a0
Binary files /dev/null and b/WebHostLib/static/static/sprites/Rainbow Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Remeer.gif b/WebHostLib/static/static/sprites/Remeer.gif
new file mode 100644
index 00000000..b2c9a4e2
Binary files /dev/null and b/WebHostLib/static/static/sprites/Remeer.gif differ
diff --git a/WebHostLib/static/static/sprites/Rick (Redacted).gif b/WebHostLib/static/static/sprites/Rick (Redacted).gif
new file mode 100644
index 00000000..310e2676
Binary files /dev/null and b/WebHostLib/static/static/sprites/Rick (Redacted).gif differ
diff --git a/WebHostLib/static/static/sprites/Robo-Link 9000.gif b/WebHostLib/static/static/sprites/Robo-Link 9000.gif
new file mode 100644
index 00000000..a338ed61
Binary files /dev/null and b/WebHostLib/static/static/sprites/Robo-Link 9000.gif differ
diff --git a/WebHostLib/static/static/sprites/Rocko.gif b/WebHostLib/static/static/sprites/Rocko.gif
new file mode 100644
index 00000000..ec5d10c4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Rocko.gif differ
diff --git a/WebHostLib/static/static/sprites/Rottytops.gif b/WebHostLib/static/static/sprites/Rottytops.gif
new file mode 100644
index 00000000..936106fb
Binary files /dev/null and b/WebHostLib/static/static/sprites/Rottytops.gif differ
diff --git a/WebHostLib/static/static/sprites/Roy Koopa.gif b/WebHostLib/static/static/sprites/Roy Koopa.gif
new file mode 100644
index 00000000..e2c58d53
Binary files /dev/null and b/WebHostLib/static/static/sprites/Roy Koopa.gif differ
diff --git a/WebHostLib/static/static/sprites/Rumia.gif b/WebHostLib/static/static/sprites/Rumia.gif
new file mode 100644
index 00000000..646212ad
Binary files /dev/null and b/WebHostLib/static/static/sprites/Rumia.gif differ
diff --git a/WebHostLib/static/static/sprites/Rydia.gif b/WebHostLib/static/static/sprites/Rydia.gif
new file mode 100644
index 00000000..63d3adb5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Rydia.gif differ
diff --git a/WebHostLib/static/static/sprites/Ryu.gif b/WebHostLib/static/static/sprites/Ryu.gif
new file mode 100644
index 00000000..ceb75256
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ryu.gif differ
diff --git a/WebHostLib/static/static/sprites/SNES Controller.gif b/WebHostLib/static/static/sprites/SNES Controller.gif
new file mode 100644
index 00000000..ee92106b
Binary files /dev/null and b/WebHostLib/static/static/sprites/SNES Controller.gif differ
diff --git a/WebHostLib/static/static/sprites/Sailor Moon.gif b/WebHostLib/static/static/sprites/Sailor Moon.gif
new file mode 100644
index 00000000..e5c277ec
Binary files /dev/null and b/WebHostLib/static/static/sprites/Sailor Moon.gif differ
diff --git a/WebHostLib/static/static/sprites/Saitama.gif b/WebHostLib/static/static/sprites/Saitama.gif
new file mode 100644
index 00000000..3c4c11ea
Binary files /dev/null and b/WebHostLib/static/static/sprites/Saitama.gif differ
diff --git a/WebHostLib/static/static/sprites/Samus (Classic).gif b/WebHostLib/static/static/sprites/Samus (Classic).gif
new file mode 100644
index 00000000..c5f39014
Binary files /dev/null and b/WebHostLib/static/static/sprites/Samus (Classic).gif differ
diff --git a/WebHostLib/static/static/sprites/Samus (Super Metroid).gif b/WebHostLib/static/static/sprites/Samus (Super Metroid).gif
new file mode 100644
index 00000000..5d707d45
Binary files /dev/null and b/WebHostLib/static/static/sprites/Samus (Super Metroid).gif differ
diff --git a/WebHostLib/static/static/sprites/Samus.gif b/WebHostLib/static/static/sprites/Samus.gif
new file mode 100644
index 00000000..ffc23e36
Binary files /dev/null and b/WebHostLib/static/static/sprites/Samus.gif differ
diff --git a/WebHostLib/static/static/sprites/Santa Link.gif b/WebHostLib/static/static/sprites/Santa Link.gif
new file mode 100644
index 00000000..bef5ed98
Binary files /dev/null and b/WebHostLib/static/static/sprites/Santa Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Scholar.gif b/WebHostLib/static/static/sprites/Scholar.gif
new file mode 100644
index 00000000..0640c4d9
Binary files /dev/null and b/WebHostLib/static/static/sprites/Scholar.gif differ
diff --git a/WebHostLib/static/static/sprites/Selan.gif b/WebHostLib/static/static/sprites/Selan.gif
new file mode 100644
index 00000000..48f3cc34
Binary files /dev/null and b/WebHostLib/static/static/sprites/Selan.gif differ
diff --git a/WebHostLib/static/static/sprites/SevenS1ns.gif b/WebHostLib/static/static/sprites/SevenS1ns.gif
new file mode 100644
index 00000000..e0607b1b
Binary files /dev/null and b/WebHostLib/static/static/sprites/SevenS1ns.gif differ
diff --git a/WebHostLib/static/static/sprites/Shadow Sakura.gif b/WebHostLib/static/static/sprites/Shadow Sakura.gif
new file mode 100644
index 00000000..7bbc003c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Shadow Sakura.gif differ
diff --git a/WebHostLib/static/static/sprites/Shadow.gif b/WebHostLib/static/static/sprites/Shadow.gif
new file mode 100644
index 00000000..c909c97e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Shadow.gif differ
diff --git a/WebHostLib/static/static/sprites/Shantae.gif b/WebHostLib/static/static/sprites/Shantae.gif
new file mode 100644
index 00000000..062756c5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Shantae.gif differ
diff --git a/WebHostLib/static/static/sprites/Shuppet.gif b/WebHostLib/static/static/sprites/Shuppet.gif
new file mode 100644
index 00000000..ec12d4fd
Binary files /dev/null and b/WebHostLib/static/static/sprites/Shuppet.gif differ
diff --git a/WebHostLib/static/static/sprites/Shy Gal.gif b/WebHostLib/static/static/sprites/Shy Gal.gif
new file mode 100644
index 00000000..2f2beaf1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Shy Gal.gif differ
diff --git a/WebHostLib/static/static/sprites/Shy Guy.gif b/WebHostLib/static/static/sprites/Shy Guy.gif
new file mode 100644
index 00000000..6d8c1fde
Binary files /dev/null and b/WebHostLib/static/static/sprites/Shy Guy.gif differ
diff --git a/WebHostLib/static/static/sprites/SighnWaive.gif b/WebHostLib/static/static/sprites/SighnWaive.gif
new file mode 100644
index 00000000..487c5502
Binary files /dev/null and b/WebHostLib/static/static/sprites/SighnWaive.gif differ
diff --git a/WebHostLib/static/static/sprites/Soda Can.gif b/WebHostLib/static/static/sprites/Soda Can.gif
new file mode 100644
index 00000000..af871653
Binary files /dev/null and b/WebHostLib/static/static/sprites/Soda Can.gif differ
diff --git a/WebHostLib/static/static/sprites/Solaire of Astora.gif b/WebHostLib/static/static/sprites/Solaire of Astora.gif
new file mode 100644
index 00000000..ddf2e5bb
Binary files /dev/null and b/WebHostLib/static/static/sprites/Solaire of Astora.gif differ
diff --git a/WebHostLib/static/static/sprites/Sonic the Hedgehog.gif b/WebHostLib/static/static/sprites/Sonic the Hedgehog.gif
new file mode 100644
index 00000000..42c032aa
Binary files /dev/null and b/WebHostLib/static/static/sprites/Sonic the Hedgehog.gif differ
diff --git a/WebHostLib/static/static/sprites/Sora (KH1).gif b/WebHostLib/static/static/sprites/Sora (KH1).gif
new file mode 100644
index 00000000..733a624d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Sora (KH1).gif differ
diff --git a/WebHostLib/static/static/sprites/Sora.gif b/WebHostLib/static/static/sprites/Sora.gif
new file mode 100644
index 00000000..e9d0d1c6
Binary files /dev/null and b/WebHostLib/static/static/sprites/Sora.gif differ
diff --git a/WebHostLib/static/static/sprites/Squall.gif b/WebHostLib/static/static/sprites/Squall.gif
new file mode 100644
index 00000000..735c1811
Binary files /dev/null and b/WebHostLib/static/static/sprites/Squall.gif differ
diff --git a/WebHostLib/static/static/sprites/Squirrel.gif b/WebHostLib/static/static/sprites/Squirrel.gif
new file mode 100644
index 00000000..caf1bd39
Binary files /dev/null and b/WebHostLib/static/static/sprites/Squirrel.gif differ
diff --git a/WebHostLib/static/static/sprites/Squirtle.gif b/WebHostLib/static/static/sprites/Squirtle.gif
new file mode 100644
index 00000000..e43464c6
Binary files /dev/null and b/WebHostLib/static/static/sprites/Squirtle.gif differ
diff --git a/WebHostLib/static/static/sprites/Stalfos.gif b/WebHostLib/static/static/sprites/Stalfos.gif
new file mode 100644
index 00000000..539779b4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Stalfos.gif differ
diff --git a/WebHostLib/static/static/sprites/Stan.gif b/WebHostLib/static/static/sprites/Stan.gif
new file mode 100644
index 00000000..fbfa01be
Binary files /dev/null and b/WebHostLib/static/static/sprites/Stan.gif differ
diff --git a/WebHostLib/static/static/sprites/Static Link.gif b/WebHostLib/static/static/sprites/Static Link.gif
new file mode 100644
index 00000000..620df079
Binary files /dev/null and b/WebHostLib/static/static/sprites/Static Link.gif differ
diff --git a/WebHostLib/static/static/sprites/Stick Man.gif b/WebHostLib/static/static/sprites/Stick Man.gif
new file mode 100644
index 00000000..f19f0a8c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Stick Man.gif differ
diff --git a/WebHostLib/static/static/sprites/Super Bomb.gif b/WebHostLib/static/static/sprites/Super Bomb.gif
new file mode 100644
index 00000000..0af98a14
Binary files /dev/null and b/WebHostLib/static/static/sprites/Super Bomb.gif differ
diff --git a/WebHostLib/static/static/sprites/Super Bunny.gif b/WebHostLib/static/static/sprites/Super Bunny.gif
new file mode 100644
index 00000000..2a65d170
Binary files /dev/null and b/WebHostLib/static/static/sprites/Super Bunny.gif differ
diff --git a/WebHostLib/static/static/sprites/Super Meat Boy.gif b/WebHostLib/static/static/sprites/Super Meat Boy.gif
new file mode 100644
index 00000000..aa73b600
Binary files /dev/null and b/WebHostLib/static/static/sprites/Super Meat Boy.gif differ
diff --git a/WebHostLib/static/static/sprites/Swatchy.gif b/WebHostLib/static/static/sprites/Swatchy.gif
new file mode 100644
index 00000000..3105f0aa
Binary files /dev/null and b/WebHostLib/static/static/sprites/Swatchy.gif differ
diff --git a/WebHostLib/static/static/sprites/TASBot.gif b/WebHostLib/static/static/sprites/TASBot.gif
new file mode 100644
index 00000000..859fa93e
Binary files /dev/null and b/WebHostLib/static/static/sprites/TASBot.gif differ
diff --git a/WebHostLib/static/static/sprites/TGH.gif b/WebHostLib/static/static/sprites/TGH.gif
new file mode 100644
index 00000000..05243d64
Binary files /dev/null and b/WebHostLib/static/static/sprites/TGH.gif differ
diff --git a/WebHostLib/static/static/sprites/TMNT.gif b/WebHostLib/static/static/sprites/TMNT.gif
new file mode 100644
index 00000000..2409da9e
Binary files /dev/null and b/WebHostLib/static/static/sprites/TMNT.gif differ
diff --git a/WebHostLib/static/static/sprites/TP Zelda.gif b/WebHostLib/static/static/sprites/TP Zelda.gif
new file mode 100644
index 00000000..16202c6d
Binary files /dev/null and b/WebHostLib/static/static/sprites/TP Zelda.gif differ
diff --git a/WebHostLib/static/static/sprites/Tanooki Mario.gif b/WebHostLib/static/static/sprites/Tanooki Mario.gif
new file mode 100644
index 00000000..66171b64
Binary files /dev/null and b/WebHostLib/static/static/sprites/Tanooki Mario.gif differ
diff --git a/WebHostLib/static/static/sprites/Tea Time.gif b/WebHostLib/static/static/sprites/Tea Time.gif
new file mode 100644
index 00000000..26ffeace
Binary files /dev/null and b/WebHostLib/static/static/sprites/Tea Time.gif differ
diff --git a/WebHostLib/static/static/sprites/Terra (Esper).gif b/WebHostLib/static/static/sprites/Terra (Esper).gif
new file mode 100644
index 00000000..e1dc4589
Binary files /dev/null and b/WebHostLib/static/static/sprites/Terra (Esper).gif differ
diff --git a/WebHostLib/static/static/sprites/Tetra Sheet.gif b/WebHostLib/static/static/sprites/Tetra Sheet.gif
new file mode 100644
index 00000000..e7105b0d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Tetra Sheet.gif differ
diff --git a/WebHostLib/static/static/sprites/The Pug.gif b/WebHostLib/static/static/sprites/The Pug.gif
new file mode 100644
index 00000000..a6b376cd
Binary files /dev/null and b/WebHostLib/static/static/sprites/The Pug.gif differ
diff --git a/WebHostLib/static/static/sprites/Thief.gif b/WebHostLib/static/static/sprites/Thief.gif
new file mode 100644
index 00000000..15081e3d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Thief.gif differ
diff --git a/WebHostLib/static/static/sprites/Thomcrow.gif b/WebHostLib/static/static/sprites/Thomcrow.gif
new file mode 100644
index 00000000..37c1ddd5
Binary files /dev/null and b/WebHostLib/static/static/sprites/Thomcrow.gif differ
diff --git a/WebHostLib/static/static/sprites/Tile.gif b/WebHostLib/static/static/sprites/Tile.gif
new file mode 100644
index 00000000..71aae313
Binary files /dev/null and b/WebHostLib/static/static/sprites/Tile.gif differ
diff --git a/WebHostLib/static/static/sprites/Tingle.gif b/WebHostLib/static/static/sprites/Tingle.gif
new file mode 100644
index 00000000..f17f25cc
Binary files /dev/null and b/WebHostLib/static/static/sprites/Tingle.gif differ
diff --git a/WebHostLib/static/static/sprites/Toad.gif b/WebHostLib/static/static/sprites/Toad.gif
new file mode 100644
index 00000000..ce65c1bd
Binary files /dev/null and b/WebHostLib/static/static/sprites/Toad.gif differ
diff --git a/WebHostLib/static/static/sprites/Toadette.gif b/WebHostLib/static/static/sprites/Toadette.gif
new file mode 100644
index 00000000..0a13170f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Toadette.gif differ
diff --git a/WebHostLib/static/static/sprites/TotemLinks.gif b/WebHostLib/static/static/sprites/TotemLinks.gif
new file mode 100644
index 00000000..a23a9539
Binary files /dev/null and b/WebHostLib/static/static/sprites/TotemLinks.gif differ
diff --git a/WebHostLib/static/static/sprites/Trogdor the Burninator.gif b/WebHostLib/static/static/sprites/Trogdor the Burninator.gif
new file mode 100644
index 00000000..3e248090
Binary files /dev/null and b/WebHostLib/static/static/sprites/Trogdor the Burninator.gif differ
diff --git a/WebHostLib/static/static/sprites/Tunic Color Link.gif b/WebHostLib/static/static/sprites/Tunic Color Link.gif
new file mode 100644
index 00000000..9113228e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Tunic Color Link.gif differ
diff --git a/WebHostLib/static/static/sprites/TwoFaced.gif b/WebHostLib/static/static/sprites/TwoFaced.gif
new file mode 100644
index 00000000..4613a6a2
Binary files /dev/null and b/WebHostLib/static/static/sprites/TwoFaced.gif differ
diff --git a/WebHostLib/static/static/sprites/Ty the Tasmanian Tiger.gif b/WebHostLib/static/static/sprites/Ty the Tasmanian Tiger.gif
new file mode 100644
index 00000000..b62c092c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ty the Tasmanian Tiger.gif differ
diff --git a/WebHostLib/static/static/sprites/Ultros.gif b/WebHostLib/static/static/sprites/Ultros.gif
new file mode 100644
index 00000000..542fd962
Binary files /dev/null and b/WebHostLib/static/static/sprites/Ultros.gif differ
diff --git a/WebHostLib/static/static/sprites/Untitled.gif b/WebHostLib/static/static/sprites/Untitled.gif
new file mode 100644
index 00000000..da0950e7
Binary files /dev/null and b/WebHostLib/static/static/sprites/Untitled.gif differ
diff --git a/WebHostLib/static/static/sprites/Valeera.gif b/WebHostLib/static/static/sprites/Valeera.gif
new file mode 100644
index 00000000..9429849f
Binary files /dev/null and b/WebHostLib/static/static/sprites/Valeera.gif differ
diff --git a/WebHostLib/static/static/sprites/VanillaLink.gif b/WebHostLib/static/static/sprites/VanillaLink.gif
new file mode 100644
index 00000000..57b00fe0
Binary files /dev/null and b/WebHostLib/static/static/sprites/VanillaLink.gif differ
diff --git a/WebHostLib/static/static/sprites/Vaporeon.gif b/WebHostLib/static/static/sprites/Vaporeon.gif
new file mode 100644
index 00000000..fcbb4215
Binary files /dev/null and b/WebHostLib/static/static/sprites/Vaporeon.gif differ
diff --git a/WebHostLib/static/static/sprites/Vegeta.gif b/WebHostLib/static/static/sprites/Vegeta.gif
new file mode 100644
index 00000000..54589154
Binary files /dev/null and b/WebHostLib/static/static/sprites/Vegeta.gif differ
diff --git a/WebHostLib/static/static/sprites/Vera.gif b/WebHostLib/static/static/sprites/Vera.gif
new file mode 100644
index 00000000..021fc7f0
Binary files /dev/null and b/WebHostLib/static/static/sprites/Vera.gif differ
diff --git a/WebHostLib/static/static/sprites/Vitreous.gif b/WebHostLib/static/static/sprites/Vitreous.gif
new file mode 100644
index 00000000..cc6e5b73
Binary files /dev/null and b/WebHostLib/static/static/sprites/Vitreous.gif differ
diff --git a/WebHostLib/static/static/sprites/Vivi.gif b/WebHostLib/static/static/sprites/Vivi.gif
new file mode 100644
index 00000000..966c0ac4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Vivi.gif differ
diff --git a/WebHostLib/static/static/sprites/Vivian.gif b/WebHostLib/static/static/sprites/Vivian.gif
new file mode 100644
index 00000000..8d30a21d
Binary files /dev/null and b/WebHostLib/static/static/sprites/Vivian.gif differ
diff --git a/WebHostLib/static/static/sprites/Wario.gif b/WebHostLib/static/static/sprites/Wario.gif
new file mode 100644
index 00000000..4bf79548
Binary files /dev/null and b/WebHostLib/static/static/sprites/Wario.gif differ
diff --git a/WebHostLib/static/static/sprites/Will.gif b/WebHostLib/static/static/sprites/Will.gif
new file mode 100644
index 00000000..a0dd8ace
Binary files /dev/null and b/WebHostLib/static/static/sprites/Will.gif differ
diff --git a/WebHostLib/static/static/sprites/Wizzrobe.gif b/WebHostLib/static/static/sprites/Wizzrobe.gif
new file mode 100644
index 00000000..7e45f5e9
Binary files /dev/null and b/WebHostLib/static/static/sprites/Wizzrobe.gif differ
diff --git a/WebHostLib/static/static/sprites/Wolf Link (Festive).gif b/WebHostLib/static/static/sprites/Wolf Link (Festive).gif
new file mode 100644
index 00000000..62cd7a08
Binary files /dev/null and b/WebHostLib/static/static/sprites/Wolf Link (Festive).gif differ
diff --git a/WebHostLib/static/static/sprites/Wolf Link (TP).gif b/WebHostLib/static/static/sprites/Wolf Link (TP).gif
new file mode 100644
index 00000000..b710c5b3
Binary files /dev/null and b/WebHostLib/static/static/sprites/Wolf Link (TP).gif differ
diff --git a/WebHostLib/static/static/sprites/Yoshi.gif b/WebHostLib/static/static/sprites/Yoshi.gif
new file mode 100644
index 00000000..eac2efbf
Binary files /dev/null and b/WebHostLib/static/static/sprites/Yoshi.gif differ
diff --git a/WebHostLib/static/static/sprites/Yunica Tovah.gif b/WebHostLib/static/static/sprites/Yunica Tovah.gif
new file mode 100644
index 00000000..0b27173c
Binary files /dev/null and b/WebHostLib/static/static/sprites/Yunica Tovah.gif differ
diff --git a/WebHostLib/static/static/sprites/Zandra.gif b/WebHostLib/static/static/sprites/Zandra.gif
new file mode 100644
index 00000000..d7a41332
Binary files /dev/null and b/WebHostLib/static/static/sprites/Zandra.gif differ
diff --git a/WebHostLib/static/static/sprites/Zebra Unicorn.gif b/WebHostLib/static/static/sprites/Zebra Unicorn.gif
new file mode 100644
index 00000000..79e9e590
Binary files /dev/null and b/WebHostLib/static/static/sprites/Zebra Unicorn.gif differ
diff --git a/WebHostLib/static/static/sprites/Zeckemyro.gif b/WebHostLib/static/static/sprites/Zeckemyro.gif
new file mode 100644
index 00000000..6f3f1733
Binary files /dev/null and b/WebHostLib/static/static/sprites/Zeckemyro.gif differ
diff --git a/WebHostLib/static/static/sprites/Zelda.gif b/WebHostLib/static/static/sprites/Zelda.gif
new file mode 100644
index 00000000..893d06d4
Binary files /dev/null and b/WebHostLib/static/static/sprites/Zelda.gif differ
diff --git a/WebHostLib/static/static/sprites/Zero Suit Samus.gif b/WebHostLib/static/static/sprites/Zero Suit Samus.gif
new file mode 100644
index 00000000..6dfebb2e
Binary files /dev/null and b/WebHostLib/static/static/sprites/Zero Suit Samus.gif differ
diff --git a/WebHostLib/static/static/sprites/Zora.gif b/WebHostLib/static/static/sprites/Zora.gif
new file mode 100644
index 00000000..7fb159b1
Binary files /dev/null and b/WebHostLib/static/static/sprites/Zora.gif differ
diff --git a/WebHostLib/static/static/sprites/iBazly.gif b/WebHostLib/static/static/sprites/iBazly.gif
new file mode 100644
index 00000000..55bc3287
Binary files /dev/null and b/WebHostLib/static/static/sprites/iBazly.gif differ
diff --git a/WebHostLib/static/static/sprites/missingno.gif b/WebHostLib/static/static/sprites/missingno.gif
new file mode 100644
index 00000000..f9edf0b1
Binary files /dev/null and b/WebHostLib/static/static/sprites/missingno.gif differ
diff --git a/WebHostLib/static/styles/player-settings.css b/WebHostLib/static/styles/player-settings.css
index 3dcf38da..7fda1227 100644
--- a/WebHostLib/static/styles/player-settings.css
+++ b/WebHostLib/static/styles/player-settings.css
@@ -29,6 +29,32 @@
margin-top: 1.5rem;
}
+#game-settings #settings-wrapper #sprite-picker{
+ margin-bottom: 2rem;
+}
+
+#game-settings #settings-wrapper #sprite-picker #sprite-picker-sprites{
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+}
+
+#game-settings #settings-wrapper #sprite-picker .sprite-img-wrapper{
+ cursor: pointer;
+ margin: 10px;
+}
+
+/* Center tooltip text for sprite images */
+#game-settings #settings-wrapper #sprite-picker .sprite-img-wrapper::after{
+ text-align: center;
+}
+
+#game-settings #settings-wrapper #sprite-picker .sprite-img-wrapper img{
+ width: 32px;
+ height: 48px;
+}
+
#game-settings table.option-set{
width: 100%;
margin-bottom: 1.5rem;
@@ -41,6 +67,10 @@
line-height: 2rem;
}
+#game-settings table.option-set td.option-name .delete-button{
+ cursor: pointer;
+}
+
#game-settings table.option-set td.option-value{
line-height: 2rem;
}
diff --git a/playerSettings.yaml b/playerSettings.yaml
index 4412d7d0..53a55d41 100644
--- a/playerSettings.yaml
+++ b/playerSettings.yaml
@@ -256,7 +256,7 @@ rom:
sprite: # Enter the name of your preferred sprite and weight it appropriately
random: 0
randomonhit: 0
- link: 50 # To add other sprites: open the gui/Creator, go to adjust, select a sprite and write down the name the gui calls it
+ Link: 50 # To add other sprites: open the gui/Creator, go to adjust, select a sprite and write down the name the gui calls it
disablemusic: # If "on", all in-game music will be disabled
on: 50
off: 0