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}

Click here to return to safety!

` - }); + }); }); 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