// ==UserScript==
// @name Free Custom Surviv.io Skins and Mods (NEW)
// @namespace https://github.com/notKaiAnderson/
// @version 0.9.11
// @description a free and purely cosmetic script that lets you use custom skins during games, it even lets you make your own skins!
// @author someGays
// @match *://surviv.io/*
// @match *://surviv2.io/*
// @match *://2dbattleroyale.com/*
// @match *://2dbattleroyale.org/*
// @match *://piearesquared.info/*
// @match *://thecircleisclosing.com/*
// @match *://archimedesofsyracuse.info/*
// @match *://secantsecant.com/*
// @match *://parmainitiative.com/*
// @match *://nevelskoygroup.com/*
// @match *://kugahi.com/*
// @match *://chandlertallowmd.com/*
// @match *://ot38.club/*
// @match *://kugaheavyindustry.com/*
// @match *://drchandlertallow.com/*
// @match *://rarepotato.com/*
// @grant none
// @icon https://i.imgur.com/jgHdTYA.png
// @run-at document-end
// ==/UserScript==
(function () {
// checkVersion
// to clear local storage if old version
if (!localStorage.getItem('version')) {
localStorage.setItem('version', '0.9.9')
} else if (localStorage.getItem('version') != '0.9.9') {
localStorage.clear();
localStorage.setItem('version', '0.9.9')
}
// make console.log() work
console.log = console.info;
// script html
let ehtml = `
<div id="ad-block-left" class="custom-wrapper" style="display: block;">
olimpiqisgay)
survivistrash))
</div>
`;
document.querySelector("#ad-block-left").style.display = "none";
let leftColumnEle = document.querySelector("#left-column");
leftColumnEle.insertAdjacentHTML("afterbegin", ehtml);
let left = document.querySelector(".custom-wrapper");
left.innerHTML = `<div class="contents">
<div class="tabs">
<div class="tab" style="flex-basis: 80%">Select Skin</div>
<div class="tab icon" style="flex-basis: 20%">
<svg class="svg-icon" viewBox="0 0 20 20">
<path fill="none"
d="M10.032,8.367c-1.112,0-2.016,0.905-2.016,2.018c0,1.111,0.904,2.014,2.016,2.014c1.111,0,2.014-0.902,2.014-2.014C12.046,9.271,11.143,8.367,10.032,8.367z M10.032,11.336c-0.525,0-0.953-0.427-0.953-0.951c0-0.526,0.427-0.955,0.953-0.955c0.524,0,0.951,0.429,0.951,0.955C10.982,10.909,10.556,11.336,10.032,11.336z">
</path>
<path fill="none"
d="M17.279,8.257h-0.785c-0.107-0.322-0.237-0.635-0.391-0.938l0.555-0.556c0.208-0.208,0.208-0.544,0-0.751l-2.254-2.257c-0.199-0.2-0.552-0.2-0.752,0l-0.556,0.557c-0.304-0.153-0.617-0.284-0.939-0.392V3.135c0-0.294-0.236-0.532-0.531-0.532H8.435c-0.293,0-0.531,0.237-0.531,0.532v0.784C7.582,4.027,7.269,4.158,6.966,4.311L6.409,3.754c-0.1-0.1-0.234-0.155-0.376-0.155c-0.141,0-0.275,0.055-0.375,0.155L3.403,6.011c-0.208,0.207-0.208,0.543,0,0.751l0.556,0.556C3.804,7.622,3.673,7.935,3.567,8.257H2.782c-0.294,0-0.531,0.238-0.531,0.531v3.19c0,0.295,0.237,0.531,0.531,0.531h0.787c0.105,0.318,0.236,0.631,0.391,0.938l-0.556,0.559c-0.208,0.207-0.208,0.545,0,0.752l2.254,2.254c0.208,0.207,0.544,0.207,0.751,0l0.558-0.559c0.303,0.154,0.616,0.285,0.938,0.391v0.787c0,0.293,0.238,0.531,0.531,0.531h3.191c0.295,0,0.531-0.238,0.531-0.531v-0.787c0.322-0.105,0.636-0.236,0.938-0.391l0.56,0.559c0.208,0.205,0.546,0.207,0.752,0l2.252-2.254c0.208-0.207,0.208-0.545,0.002-0.752l-0.559-0.559c0.153-0.303,0.285-0.615,0.389-0.938h0.789c0.295,0,0.532-0.236,0.532-0.531v-3.19C17.812,8.495,17.574,8.257,17.279,8.257z M16.747,11.447h-0.653c-0.241,0-0.453,0.164-0.514,0.398c-0.129,0.496-0.329,0.977-0.594,1.426c-0.121,0.209-0.089,0.473,0.083,0.645l0.463,0.465l-1.502,1.504l-0.465-0.463c-0.174-0.174-0.438-0.207-0.646-0.082c-0.447,0.262-0.927,0.463-1.427,0.594c-0.234,0.061-0.397,0.271-0.397,0.514V17.1H8.967v-0.652c0-0.242-0.164-0.453-0.397-0.514c-0.5-0.131-0.98-0.332-1.428-0.594c-0.207-0.123-0.472-0.09-0.646,0.082l-0.463,0.463L4.53,14.381l0.461-0.463c0.169-0.172,0.204-0.434,0.083-0.643c-0.266-0.461-0.467-0.939-0.596-1.43c-0.06-0.234-0.272-0.398-0.514-0.398H3.313V9.319h0.652c0.241,0,0.454-0.162,0.514-0.397c0.131-0.498,0.33-0.979,0.595-1.43c0.122-0.208,0.088-0.473-0.083-0.645L4.53,6.386l1.503-1.504l0.46,0.462c0.173,0.172,0.437,0.204,0.646,0.083c0.45-0.265,0.931-0.464,1.433-0.597c0.233-0.062,0.396-0.274,0.396-0.514V3.667h2.128v0.649c0,0.24,0.161,0.452,0.396,0.514c0.502,0.133,0.982,0.333,1.433,0.597c0.211,0.12,0.475,0.089,0.646-0.083l0.459-0.462l1.504,1.504l-0.463,0.463c-0.17,0.171-0.202,0.438-0.081,0.646c0.263,0.448,0.463,0.928,0.594,1.427c0.061,0.235,0.272,0.397,0.514,0.397h0.651V11.447z">
</path>
</svg>
</div>
</div>
<div class="container content">
<div class="skins">
</div>
</div>
<div class="container content set">
<div class="modal-settings-item">
<label>Dark mode</label>
<input type="checkbox" id="enableDarkTheme">
</div>
</div>
<div class="footer">
<p>report bugs on <a href="https://discord.gg/dgB6G3">Discord</a> 🐓</p>
</div>
</div>
`;
let skinItems = document.querySelector(".skins");
let skinsArr;
if (localStorage.getItem("skinsArr")) {
skinsArr = JSON.parse(localStorage.getItem("skinsArr"))
} else {
skinsArr = [{
skinName: "Splotchfest",
skinImg: "https://i.imgur.com/ecxThQD.png"
}, {
skinName: "Sunset",
skinImg: "https://i.imgur.com/FOLsISk.png"
}, {
skinName: "Clay More",
skinImg: "https://i.imgur.com/gdATfiF.png"
}, {
skinName: "military",
skinImg: "https://i.imgur.com/veSbV1W.png"
}, {
skinName: "chromesis",
skinImg: "https://i.imgur.com/vVGKKVB.png"
}, {
skinName: "Woodcutters Wrap",
skinImg: "https://i.imgur.com/sfNrjAh.png"
}, {
skinName: "Developer Swag",
skinImg: "https://i.imgur.com/NGi63mJ.png "
}, {
skinName: "Valiant Pineapple",
skinImg: "https://i.imgur.com/Di76DSD.png"
}, {
skinName: "Casanova Silks",
skinImg: "https://i.imgur.com/Z0gQ50L.png"
}, {
skinName: "Fowl Facade",
skinImg: "https://i.imgur.com/E5aKOMD.png"
}, {
skinName: "Blue Leader",
skinImg: "https://i.imgur.com/45x0HtU.png"
}, {
skinName: "Siberian Assault",
skinImg: "https://i.imgur.com/fpMYnjD.png"
}, {
skinName: "Red Leader",
skinImg: "https://i.imgur.com/8ZRZcnw.png"
}, {
skinName: "Tarkhany Regal",
skinImg: "https://i.imgur.com/ju8Qsao.png"
}, {
skinName: "Purple Fade",
skinImg: "https://i.imgur.com/Qp91Kst.png"
}, {
skinName: "Geometric",
skinImg: "https://i.imgur.com/O5njOlQ.png"
}, {
skinName: "Marshmallow Suit",
skinImg: "https://i.imgur.com/xCvnTXp.png"
}];
localStorage.setItem("skinsArr", JSON.stringify(skinsArr))
}
String.prototype.toCamelCase = function () {
return this.replace(/\s(.)/g, function ($1) {
return $1.toUpperCase()
}).replace(/\s/g, "").replace(/^(.)/, function ($1) {
return $1.toLowerCase()
})
};
if (localStorage.getItem("skins")) {
skinItems.innerHTML = localStorage.getItem("skins")
} else {
updateSkinUI()
}
// update the UI of the skins everytime someone add new skins
function updateSkinUI() {
skinItems.innerHTML = "";
skinsArr.forEach(ee => {
let html;
if (ee.custom) {
html = `
<div class="skin-item" id="${ee.skinName.toCamelCase()}">
<div href="#" class="delete-skin" id="deleteSkinItem"><img class="deleteSkinIcon" src="https://i.imgur.com/hTjlxKF.png"></div>
<img src="${ee.skinImg}" class="skin-img" />
<h4 class="skin-name">${ee.skinName}</h4>
</div>
`
} else {
html = `
<div class="skin-item" id="${ee.skinName.toCamelCase()}">
<img src="${ee.skinImg}" class="skin-img" />
<h4 class="skin-name">${ee.skinName}</h4>
</div>
`
}
skinItems.innerHTML += html
});
localStorage.setItem("skins", skinItems.innerHTML)
}
let skinItem = document.querySelectorAll(".skin-item");
// dark theme css
let darkModeCss = `body.dark:root{--start-background:url('');--splash-background:;--dark-color:#1f1f1f;--light-dark-color:#676767}body.dark #start-row-header{background-image:var(--start-background)}body.dark #background{background-image:url('https://i.imgur.com/yxZVwZ6.png') !important}body.dark #start-overlay{background-color:rgba(0,0,0,.4)}body.dark #account-login,body.dark #btn-help,body.dark body.dark #server-select-main,body.dark #start-bottom-left,body.dark #start-bottom-middle,body.dark #start-top-left,body.dark .account-block-arrow::after,body.dark .account-loading-container,body.dark .language-select-wrap{display:none !important}body.dark .modal-customize-cat-connect{background:#676767}body.dark .modal-content-right{background:#363636}body.dark #ui-modal-keybind-body{background-color:#363636}body.dark .account-buttons > .menu-option:last-child{margin-bottom:0} body.dark .pass-toggle{background-image:url("http://surviv.io/img/gui/close.svg")}body.dark #start-menu{display:block;}body.dark .menu-option{background-color:#1f1f1f !important;box-shadow:inset 0 -4px black !important;border:none !important;border-radius:0}body.dark .player-name-input{box-shadow:unset !important;background-color:#ffffff40 !important}body.dark .player-name-input::placeholder{color:#292929}body.dark .name.menu-option{background:#ffffff40 !important;box-shadow:none !important}body.dark .team-menu-option{border-radius:0}body.dark #btn-customize{background-color:unset !important;box-shadow:unset !important}body.dark body.dark #start-row-header{margin-bottom:0}body.dark body.dark .account-details-block{width:unset;background:#ffffff40}body.dark body.dark .account-details{width:fit-content;padding:0}body.dark .account-buttons{padding:3px;background:#ffffff40} body.dark .btn-game-menu{background-color:#1f1f1f !important;box-shadow:inset 0 -4px black !important;border:none !important;border-radius:0;animation:none !important;background-image:none !important;text-indent:0 !important}body.dark .modal-footer,body.dark .modal-header{background-color:#1f1f1f !important}body.dark #modal-customize-body{background-color:#363636}body.dark .modal-customize-cat-selected{background:#3e3838!important} body.dark #modal-item-confirm .modal-body {background-color: #1d1d1d;} #modal-customize-item-sell-container {background-color: transparent;}`;
// append script css to <head>
function addStyleString(str) {
let node = document.createElement("style");
node.innerHTML = str;
document.body.appendChild(node)
}
// script css
addStyleString(`.active { color: green; border: 2px solid #668e38;} .content {display: none;}; .skin-name {margin: 10px;} .tab {display: flex !important;} .active-tab {display: block !important} .contents {display: flex; flex-direction: column; width: 100%; overflow-y: scroll; height: 100%;text-align: center; box-sizing: border-box;} .container {width: 100%; flex: 1 0 auto;} .skins {display: flex; box-sizing: border-box; flex-wrap: wrap} .maps {display: flex; box-sizing: border-box; flex-wrap: wrap} .skin-item, .map-item {flex-grow: 1; flex-basis: 50%; position: relative; cursor: pointer; box-sizing: border-box; padding: 10px 0;} .tabs {display: flex !important;} .tab {display: inline-block !important; flex-grow: 1; padding: 10px; background: rgba(0, 0, 0, 0.28); cursor: pointer; border-right: 1px solid #ddd; border-bottom: 1px solid #ddd;} #ad-block-left {height: 325px;} #social-share-block-wrapper {display: none;} .tab.active-tab {background: #000;} .footer {background-color: #000; padding: 10px; border-top: 1px solid #ddd; flex-shrink: 0;} .footer p {margin:0; text-align: center;} .tab.icon { padding: 0; display: flex !important; justify-content: center; align-items: center;} .svg-icon { width: 1.5em; height: 1.5em; } .svg-icon path, .svg-icon polygon, .svg-icon rect { fill: #ffffff; } .svg-icon circle { stroke: #ffffff; stroke-width: 1;} .container.set .modal-settings-item {padding: 10px 0; } .btn-custom {-webkit-animation-name:custom-pulse;-webkit-animation-duration:5s;border-bottom:4px solid #00448a}@-webkit-keyframes custom-pulse{from{background-color:#8a9e69;border-bottom-color:#8a9e69;-webkit-box-shadow:0 0 9px #8a9e69}25%{background-color:#318585;border-bottom-color:#208686;-webkit-box-shadow:0 0 18px #318585}75%{background-color:#675fe0;border-bottom-color:#312b8a;-webkit-box-shadow:0 0 18px #675fe0}to{background-color:#8a9e69;border-bottom-color:#8a9e69;-webkit-box-shadow:0 0 9px #8a9e69}}#deleteSkinItem { position: absolute; right: 2px;} .btn-submit { margin-left: 10px; padding: 5px 10px; font-size: 1.3rem; background: #191616; color: #fff; border: solid 1px #fff; border-radius: 4px;} #addSkinName { font-size: 1.5rem;}${darkModeCss}`);
let tabLinks = document.querySelectorAll(".tab");
let tabContents = document.querySelectorAll(".content");
tabLinks[0].classList.add("active-tab");
tabContents[0].classList.add("active-tab");
tabLinks.forEach((tabLink, i) => {
tabLink.addEventListener("click", () => {
tabLinks.forEach(tabLink => tabLink.classList.remove("active-tab"));
tabContents.forEach(tabContent => tabContent.classList.remove("active-tab"));
tabLink.classList.add("active-tab");
tabContents[i].classList.add("active-tab")
})
});
let skinOutfit = webpackJsonp([], null, ["63d67e9d"]);
class Skin {
constructor(baseTint, handTint, backpackTint, baseSprite = "player-base-02.img", handSprite = "player-hands-02.img", backpackSprite = "player-circle-base-02.img", footSprite = "player-feet-02.img", footTint = handTint) {
this.baseTint = baseTint;
this.handTint = handTint;
this.backpackTint = backpackTint;
this.baseSprite = baseSprite;
this.handSprite = handSprite;
this.backpackSprite = backpackSprite;
this.footSprite = footSprite;
this.footTint = footTint;
skinOutfit.outfitBase.skinImg.baseTint = parseInt(this.baseTint);
skinOutfit.outfitBase.skinImg.baseSprite = this.baseSprite;
skinOutfit.outfitBase.skinImg.handTint = parseInt(this.handTint);
skinOutfit.outfitBase.skinImg.handSprite = this.handSprite;
skinOutfit.outfitBase.skinImg.backpackTint = parseInt(this.backpackTint);
skinOutfit.outfitBase.skinImg.backpackSprite = this.backpackSprite;
skinOutfit.outfitBase.skinImg.footTint = parseInt(this.footTint);
skinOutfit.outfitBase.skinImg.footSprite = this.footSprite;
skinOutfit.outfitBase.ghillie = parseInt(this.ghillie)
}
lootImg(sprite = "loot-shirt-01.img", tint = 16777215) {
this.sprite = sprite;
this.tint = tint;
skinOutfit.outfitBase.lootImg.sprite = this.sprite;
skinOutfit.outfitBase.lootImg.tint = parseInt(this.tint)
}
accessory(accSprite = '') {
this.accSprite = accSprite;
skinOutfit.outfitBase.accessory = {}
skinOutfit.outfitBase.accessory.sprite = this.accSprite
}
}
let SkinRules = {};
let skinArrTest;
if (localStorage.getItem("skinArrTest")) {
skinArrTest = JSON.parse(localStorage.getItem("skinArrTest"))
} else {
skinArrTest = [{
name: "splotchfest",
skin: [16777215, 6530876, 6530876, "player-base-outfitSplotchfest.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img"],
lootImg: ["loot-shirt-outfitSplotchfest.img"]
}, {
name: "sunset",
skin: [16777215, 12487083, 6458057, "player-base-outfitSunset.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img"],
lootImg: ["loot-shirt-outfitSunset.img"]
}, {
name: "clayMore",
skin: [14935011, 11030570, 15632257, "player-base-outfitClayMore.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img"],
lootImg: ["loot-shirt-outfitClayMore.img"]
}, {
name: "geometric",
skin: [16777215, 16777215, 544848, "player-base-outfitGeometric.img", "player-hands-geometric.img", undefined, undefined, 544848],
lootImg: ["loot-shirt-outfitGeometric.img"]
}, {
name: "military",
skin: [6777215, 16777215, 4873026, "player-base-outfitMilitary.img", "player-hands-military.img", undefined, undefined, 4873026],
lootImg: ["loot-shirt-outfitMilitary.img"]
}, {
name: "chromesis",
skin: [16777215, 16777215, 9803157, "player-base-outfitChromesis.img", "player-hands-chrome.img", "player-circle-base-01.img", "player-feet-01.img", 16777215],
lootImg: ["loot-shirt-outfitChromesis.img"],
accSprite: ["outfit-chrome-accessory.img"]
}, {
name: "developerSwag",
skin: [3442216, 6937122, 2902793, "player-base-outfitDC.img"],
lootImg: ["loot-shirt-outfitDev.img"]
}, {
name: "tarkhanyRegal",
skin: [4927107, 16757760, 4661344],
lootImg: [undefined, 4927107]
}, {
name: "valiantPineapple",
skin: [10027008, 4985105, 16763904],
lootImg: [undefined, 10027008]
}, {
name: "casanovaSilks",
skin: [4327436, 7602183, 1052688, "player-base-01.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img"],
lootImg: [undefined, 4327436]
}, {
name: "woodcuttersWrap",
skin: [16777215, 8258312, 4854547, "player-base-outfitLumber.img"],
lootImg: ["loot-shirt-outfitLumber.img"]
}, {
name: "redLeader",
skin: [10158080, 16711680, 5439488],
lootImg: [undefined, 8650752]
}, {
name: "blueLeader",
skin: [1523353, 20223, 794700],
lootImg: [undefined, 1523353]
}, {
name: "siberianAssault",
skin: [16777215, 15000804, 13816530, "player-base-outfitSpetsnaz.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img"],
lootImg: ["loot-shirt-outfitSpetsnaz.img"]
}, {
name: "purpleFade",
skin: [16777215, 6570404, 6570404, "https://i.imgur.com/fxmaqPL.png"],
lootImg: [undefined, 0x6843ab]
}, {
name: "fowlFacade",
skin: [5781563, 10818304, 11031846, "player-base-outfitTurkey.img"],
lootImg: ["loot-shirt-outfitTurkey.img", 15781563]
}, {
name: "marshmallowSuit",
skin: [16777215, 16777215, 13024064, "player-base-outfitWhiteDay.img", "player-hands-white.img", "player-circle-base-03.img"],
lootImg: ["loot-shirt-whiteDay.img", 16777215]
}];
localStorage.setItem("skinArrTest", JSON.stringify(skinArrTest))
}
class Template {
constructor(name, skin, lootImg, accessory) {
this.name = name;
this.skin = skin;
this.lootImg = lootImg;
this.accessory = accessory;
let ename = this.name;
SkinRules[ename] = () => {
let ename = new Skin(...this.skin);
ename.lootImg(...this.lootImg);
console.log(this.accessory)
if (this.accessory === undefined) {
ename.accessory('')
} else {
ename.accessory(...this.accessory);
}
}
}
}
function updateSkinRules() {
skinArrTest.forEach(f => {
let g = new Template(f.name, f.skin, f.lootImg, f.accSprite);
})
}
updateSkinRules();
skinItems.addEventListener("click", better);
function better(e) {
if (SkinRules.hasOwnProperty(e.target.id)) {
SkinRules[e.target.id]();
skinRemoveBorder();
e.target.className += " active";
console.log(SkinRules[e.target.id])
} else if (SkinRules.hasOwnProperty(e.target.parentElement.id)) {
SkinRules[e.target.parentElement.id]();
skinRemoveBorder();
e.target.parentElement.className += " active";
console.log(SkinRules[e.target.parentElement.id])
}
if (e.target.classList.contains("deleteSkinIcon")) {
let skinEle = e.target.parentElement.parentElement;
skinEle.remove();
skinsArr = skinsArr.filter(skin => {
return skin.skinName != skinEle.querySelector(".skin-name").textContent
});
localStorage.setItem("skinsArr", JSON.stringify(skinsArr));
skinArrTest = skinArrTest.filter(skin => {
return skin.name != skinEle.id
});
localStorage.setItem("skinArrTest", JSON.stringify(skinArrTest));
localStorage.setItem("skins", skinItems.innerHTML)
}
}
function skinRemoveBorder() {
skinItem = document.querySelectorAll(".skin-item");
skinItem.forEach(item => {
item.classList.remove("active")
})
}
const settingsEle = document.querySelector(".container.set");
if (localStorage.getItem('dark theme') === 'true') {
document.body.classList.add("dark")
document.querySelector("#enableDarkTheme").checked = true;
}
settingsEle.addEventListener("click", e => {
if (document.querySelector("#enableDarkTheme").checked) {
document.body.classList.add("dark")
localStorage.setItem('dark theme', 'true')
} else {
document.body.classList.remove("dark")
localStorage.setItem('dark theme', 'false')
}
});
// custom loaudout
let bodyColor;
let handsColor;
let backpackColor;
let bodySprite;
let handSprite;
let backSprite;
let feetSprite;
let skinNameEle;
const laodoutBtn = document.querySelector("#player-options #btn-customize");
laodoutBtn.className = "btn-darken menu-option player-options-btn btn-custom-mode-main btn-custom";
laodoutBtn.addEventListener("click", temp1, !1);
function temp1() {
var lodoutOutfit = document.querySelector("#modal-customize-list");
var colorPicker = `
<div class="container" style="color: white; padding: 10px 5px">
<div style="padding: 10px 0">
<label>body color</label>
<input type="color" id="bodyColorPicker" value="#f8c574">
</div>
<div style="padding: 10px 0">
<label>hands color</label>
<input type="color" id="handsColorPicker" value="#f8c574">
</div>
<div style="padding: 10px 0">
<label>backpack color</label>
<input type="color" id="backpackColoPicker" value="#816537">
</div>
<div class="choose-sprite" style="display: flex;">
<div class="outfit">
<h4 style="padding: 0; text-align: center;">player-base-01</h4>
<img id="base01" class="customize-list-item" src="https://surviv.io/img/player/player-base-01.svg" alt="player-base-01">
</div>
<div class="outfit">
<h4 style="padding: 0; text-align: center;">player-base-02</h4>
<img id="base02" class="customize-list-item" src="https://surviv.io/img/player/player-base-02.svg" alt="player-base-02">
</div>
<div class="outfit">
<h4>player-base-outfitHeaven</h4>
<img id="outfitHeaven" class="customize-list-item" src="https://surviv.io/img/player/player-base-outfitHeaven.svg" alt="player-base-outfitHeaven.svg">
</div>
</div>
<div style="display: flex; align-items: center">
<input id="addSkinName" maxlength="16" type="text" required>
<button class="btn-submit">add</button>
</div>
</div>
`;
document.querySelector("#modal-create-account").style.display = "none";
lodoutOutfit.innerHTML = colorPicker;
const bodyColorPicker = document.querySelector("#bodyColorPicker");
bodyColorPicker.addEventListener("change", changeBodyColor, !1);
var skinOutfit = webpackJsonp([], null, ["63d67e9d"]);
function changeBodyColor() {
skinOutfit.outfitBase.skinImg.baseTint = "0x" + bodyColorPicker.value.substring(1);
bodyColor = "0x" + bodyColorPicker.value.substring(1)
}
const handsColorPicker = document.querySelector("#handsColorPicker");
handsColorPicker.addEventListener("change", changeHandsColor, !1);
function changeHandsColor() {
skinOutfit.outfitBase.skinImg.handTint = "0x" + handsColorPicker.value.substring(1);
skinOutfit.outfitBase.skinImg.footTint = "0x" + handsColorPicker.value.substring(1);
handsColor = "0x" + handsColorPicker.value.substring(1)
}
const backpack = document.querySelector("#backpack");
const backpackColoPicker = document.querySelector("#backpackColoPicker");
backpackColoPicker.addEventListener("change", changeBackpackColor, !1);
function changeBackpackColor() {
skinOutfit.outfitBase.skinImg.backpackTint = "0x" + backpackColoPicker.value.substring(1);
backpackColor = "0x" + backpackColoPicker.value.substring(1)
}
const chooseSprite = document.querySelector(".choose-sprite");
chooseSprite.addEventListener("click", function (e) {
if (e.target.id == "base01") {
changeSprite("player-base-01.img", "player-hands-01.img", "player-circle-base-01.img", "player-feet-01.img")
} else if (e.target.id == "base02") {
changeSprite("player-base-02.img", "player-hands-02.img", "player-circle-base-02.img", "player-feet-02.img")
}
});
skinNameEle = document.querySelector("#addSkinName");
function changeSprite(base, hand, backpack, feet) {
skinOutfit.outfitBase.skinImg.baseSprite = base;
skinOutfit.outfitBase.skinImg.handSprite = hand;
skinOutfit.outfitBase.skinImg.backpackSprite = backpack;
skinOutfit.outfitBase.skinImg.footSprite = feet;
bodySprite = base;
handSprite = hand;
backSprite = backpack;
feetSprite = feet
}
}
document.addEventListener("click", e => {
if (e.target.classList.contains("btn-submit") && skinNameEle.value.trim() != 0) {
let name = skinNameEle.value.trim();
skinsArr.push({
skinName: name,
skinImg: "https://i.imgur.com/0cjK0O1.png",
custom: !0
});
localStorage.setItem("skinsArr", JSON.stringify(skinsArr));
let id = name.toCamelCase();
skinArrTest.push({
name: id,
skin: [bodyColor, handsColor, backpackColor, bodySprite, handSprite, backSprite, feetSprite],
lootImg: ["loot-shirt-01.img", bodyColor]
});
localStorage.setItem("skinArrTest", JSON.stringify(skinArrTest));
updateSkinUI();
updateSkinRules();
skinNameEle.value = ""
}
});
// gun border colors
// from https://gf.qytechs.cn/en/scripts/398771-surviv-io-gun-color
let redGuns = ['M1100', 'M870', 'MP220', 'Saiga-12', 'SPAS-12', 'Super 90', 'USAS-12'];
let yellowGuns = ['CZ-3A1', 'G18C', 'M9', 'M93R', 'MAC-10', 'MP5', 'P30L', 'Dual P30L', 'UMP9', 'Vector', 'VSS'];
let blueGuns = ['AK-47', 'AN-94', 'BAR M1918', 'BLR 81', 'DP-28', 'Groza', 'Groza-S', 'M1 Garand', 'M39 EMR', 'Mosin-Nagant', 'OT-38', 'OTs-38', 'PKP Pecheneg', 'SCAR-H', 'SV-98', 'SVD-63'];
let purpleGuns = ['M1911', 'M1A1', 'Mk45G', 'Model 94', 'Peacemaker', 'Vector 45'];
let greenGuns = ['FAMAS', 'L86A2', 'M249', 'M416', 'M4A1-S', 'Mk 12 SPR', 'QBB-97', 'Scout Elite'];
let melee = ["Fists", "Karambit Rugged", "Karmabit Prismatic", "Karmabit Drowned", "Bayonet Woodland", "Huntsman", "Karambit", "Bayonet", "Bayonet Rugged", "Bowie", "Huntsman Rugged", "Huntsman Burnished", "Bowie Vintage", "Bowie Frontier", "Wood Axe", "Blood Axe", "Fire Axe", "Katana", "Katana Rusted", "Katana Orchid", 'Naginata', "Machete", "Stone Hammer", "Sledgehammer", "Hook", "Pan", "Knuckles", "Knuckles Rusted", "Knuckles Heroic", "Bonesaw", "Spade"];
let elems = document.getElementsByClassName('ui-weapon-name');
Array.from(elems).forEach(elem => {
elem.addEventListener('DOMSubtreeModified', function () {
console.log(this.textContent)
let weaponName = this.textContent;
let borderColor;
// using if with arrays to make the code shorter
if (melee.includes(weaponName)) {
borderColor = '#000'
} else if (yellowGuns.includes(weaponName)) {
borderColor = '#FFAE00';
} else if (blueGuns.includes(weaponName)) {
borderColor = '#0066FF';
} else if (greenGuns.includes(weaponName)) {
borderColor = '#039E00';
} else if (redGuns.includes(weaponName)) {
borderColor = '#FF0000'
} else if (purpleGuns.includes(weaponName)) {
border = '#7900FF';
} else {
switch (weaponName) {
case '': //empty
borderColor = 'transparent';
break;
case 'Flare Gun':
borderColor = '#D44600';
break;
case 'DEagle 50':
borderColor = '#292929';
break;
case 'AWM-S':
case 'Mk 20 SSR':
borderColor = '#465000';
break;
case 'Potato Cannon':
case 'Spud Gun':
borderColor = '#935924';
break;
case 'M9 Cursed':
borderColor = '#323232';
break;
case 'Bugle':
borderColor = '#F2BC21';
break;
case 'Frag':
borderColor = '#837516';
break;
case 'MIRV':
borderColor = '#940000';
break;
case 'Potato':
borderColor = '#958359';
break;
case 'Smoke':
borderColor = '#DDDDDD';
break;
case 'Snowball':
borderColor = '#74D4F8';
break;
case 'Strobe':
borderColor = '#FFF205';
break;
case 'Iron Bomb':
borderColor = '#00FF00';
break;
}
}
this.parentNode.style.border = `2px solid ${borderColor}`;
})
})
// disable keys
document.addEventListener('keydown', (e) => {
// '112' F1 key
if(e.keyCode == 112) e.preventDefault()
})
})()