NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name CatWar Script // @version 0.1.99 // @description Мод-скрипт для браузерной игры CatWar. Скоро у нас будет больше новых полезных функций! // @author Krivodushie & Psiii // @copyright 2024 Дурное Сновидение (https://catwar.su/cat1293224) & Заря (https://catwar.su/cat590698) // @license MIT; https://opensource.org/licenses/MIT // @updateURL https://openuserjs.org/meta/CatWarScript/CatWar_Script.meta.js // @downloadURL https://openuserjs.org/install/CatWarScript/CatWar_Script.user.js // @match *://catwar.su/* // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @grant GM_addStyle // @require https://code.jquery.com/jquery-3.4.1.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/2.1.3/jquery.scrollTo.min.js // @require https://code.jquery.com/ui/1.12.1/jquery-ui.js // ==/UserScript== const csDefaults = { // Шаблоны 'textTemplates': true // Шаблоны в ЛС ,'toggleTextTemplates': false // Сворачивать ли шаблоны ЛС по умолчанию ,'replaceTemplateTheme': true // Заменять ли тему сообщения названием шаблона? // ,'chatTextTemplates': true // Шаблоны в ЧАТЕ // ,'toggleChatTextTemplates': true // Сворачивать ли шаблоны ЧАТА по умолчанию // ,'bloglentTextTemplates': true // Шаблоны в БЛОГОЛЕНТЕ // ,'toggleBloglentTextTemplates': true // Сворачивать ли шаблоны БЛОГОЛЕНТЫ по умолчанию // Часики ,'inGameClock': false // Часы в игровой ,'isClockMoscow': true // Московсике ли часы? ,'isDateShow': true // Показывать ли дату? ,'movableClocks': false // Перетаскиваемые часы // Приколы с ЛС ,'dontReadenLS': false // Непрочитанные ЛС для себя ,'timerForLS': false // Таймер до удаления ЛС // Дефекты ,'brightGameField': false // Яркое поле игровой ,'customDefectDelay': false // Подробная настройка отображения дефектов в Игровой ,'cstmDfctShowColors': false // Показывать ли цветные клетки при дефектах? ,'cstmDfctShowRamki': false // Выделять клетки рамкой при дефектах? ,'cstmDfctShowNum': true // Показывать ли цифры и иконки при дефектах? ,'cstmDfctWounds': '#4646ff' // Цвет ран по дефолту ,'cstmDfctBruise': '#46ffef' // Цвет ушибов от падения ,'cstmDfctFractures': '#68ff46' // Цвет переломов от утопленя ,'cstmDfctPoison': '#ff4646' // Цвет отравления ,'cstmDfctCough': '#eeff46' // Цвет кашля ,'cstmDfctDirt': '#9446ff' // Цвет грязи ,'cstmDfctPodstilki': '#79553D' // Цвет подстилок ,'cstmDfctOpacity': '0.25' // Прозрачность отображения дефектов ,'cstmDfctShowHighDirt': false // Показывать ли 3-4 стадии грязи? ,'cstmDfctShowLowDirt': false // Показывать ли 1-2 стадии грязи? ,'cstmDfctShowDivers': false // Показывать ныряющих ,'cstmDfctShowPodstilki': false // Показывать podstilki ,'cstmDfctShow34WoundBetter': true // Показывать ли 3-4 стадии ран сильнее? ,'cstmDfctShowAllBetter': false // Показывать ли 3-4 стадии ВСЕГО сильнее? // Предметы ,'customItemsDelay': false // Подробная настройка отображения предметов в Игровой ,'cstmItmHerbDelay': false // Травы ,'cstmItmHerbClr': '#2bff75' // Травы ,'cstmItmMossDelay': false // Мох ,'cstmItmMossClr': '#2bff75' // Мох ,'cstmItmWebDelay': false // Паутина ,'cstmItmWebClr': '#2bff75' // Паутина ,'cstmItmStickDelay': false // STICKS ,'cstmItmStickClr': '#2bff75' // STICKS ,'cstmItmDustDelay': false // Звёздная пыль ,'cstmItmDustClr': '#c096e2' // Звёздная пыль ,'cstmItmMusorDelay': false // MUSOR ,'cstmItmMusorClr': '#ff2b2b' // MUSOR ,'cstmItmOpacity': '0.25' // Прозрачность отображения ресурсов // Иная суть ,'nightLagsWarning': true // Предупреждение о ночных лагах чтобы не лезли в воды и вообще аккуратнее были ,'darkCatTooltip': false // Тёмное окошко инфы о котах ,'boneCorrectTimer': false // Таймер ношения костоправов ,'toggleBoneTimer': false // Свёрнутый таймер ,'hideWoundWarning': true // Скрыть варн о ранах везде кроме Игровой ,'cwscriptDarkTheme': false // Боережимовые прикольчики для самых маленьких ,'phoneFightPanel': false // Переместить кнопочки боережима для телефонщиков ,'friendlyCatWar': false // Удалить кнопки захода в опасные БР ,'deleteFPTitles': false // Убрать тайтлы у кнопок боережима ,'showButterflyBots': false // Показывать бота-бабочку для прокачки бу // Недоделанное // ,'hideInGameBlocks': false // Скрывать в игровой при загрузке блоки: НЕТУ // ,'isHideHistory': false // Скрывать ли историю? НЕТУ // ,'isHideRelatives': false // Скрывать ли РС? НЕТУ // ,'isHideParameters': false // Скрывать ли параметры/навыки? НЕТУ // ,'fieldHideButton': true // Кнопочка "Скрыть поле" в ПК-версии игры НЕТУ // ,'scrollDownTime': false // Время при прокрутке страницы вниз для ПК-версии игры НЕТУ // ,'rllyImportantButton': true // РЕАЛЬНО важная кнопка НЕТУ // Палитра наших функций в игровой. Когда доделаем кастомизацию игровой нормально будет вообще имба // ,'sscrlClr1': '#776c5f' // scrlClr1 // ,'sscrlClr2': '#463E33' // scrlClr2 // ,'shrClr': '#463E3330' // hrClr // ,'stxtClr1': '#C8C0BE' // txtClr1 // ,'stxtClr2': '#181510' // txtClr2 // ,'stxtClr3': '#fff' // txtClr3 // ,'sbrdrClr1': '#BD7E5C' // brdrClr1 // ,'sbrdrClr2': '#ff0' // brdrClr2 // ,'sbrdrClr3': '#000' // brdrClr3 // ,'sbckgClr1': '#463E33' // bckgClr1 // ,'sbckgClr2': '#918474' // bckgClr2 // ,'sbckgClr3': '#333' // bckgClr3 // ,'sbckgClr4': '#463E3350' // bckgClr4 // ,'selectedTheme1': 'CWScript светлая' // Палитра наших функций ВНЕ игровой // ,'s1scrlClr1': '#776c5f' // scrlClr1 // ,'s1scrlClr2': '#463E33' // scrlClr2 // ,'s1hrClr': '#463E3330' // hrClr // ,'s1txtClr1': '#C8C0BE' // txtClr1 // ,'s1txtClr2': '#181510' // txtClr2 // ,'s1txtClr3': '#fff' // txtClr3 // ,'s1brdrClr1': '#BD7E5C' // brdrClr1 // ,'s1brdrClr2': '#ff0' // brdrClr2 // ,'s1brdrClr3': '#000' // brdrClr3 // ,'s1bckgClr1': '#463E33' // bckgClr1 // ,'s1bckgClr2': '#918474' // bckgClr2 // ,'s1bckgClr3': '#333' // bckgClr3 // ,'s1bckgClr4': '#463E3350' // bckgClr4 // ,'selectedTheme2': 'CWScript светлая' }; const globals = {}; //Настройки for (var key in csDefaults) { let settings = getSettings(key); if (settings === null) { globals[key] = csDefaults[key]; } else { if (Array.isArray(csDefaults[key])) { globals[key] = JSON.parse(settings); } else if (typeof csDefaults[key] === 'number') { globals[key] = parseFloat(settings); } else { globals[key] = settings; } } } function getSettings(key) { //Получить настройку let setting = 'cs_n_' + key; let val = window.localStorage.getItem(setting); switch (val) { case null: return null; case 'true': return true; case 'false': return false; default: return val; } } function setSettings(key, val) { // Задать настройку let setting = 'cs_n_' + key; window.localStorage.setItem(setting, String(val)); globals[key] = val; // Записываем новое значение в globals } function removeSettings(key) { // Удалить настройку let setting = 'cs_n_' + key; window.localStorage.removeItem(setting); } function nightLagsWarning() { function showWarning() { let now = new Date(); now.setHours(now.getUTCHours() + 3); let hours = now.getHours(); let minutes = now.getMinutes(); if ((hours === 2 && minutes >= 50) || (hours === 3) || (hours === 4 && minutes <= 10)) { if ($('#warning').length === 0) { let warningHtml = `<div id="warning" style="background: white; font-weight: bold; text-align: justify; padding: 2px 10px; position: fixed; z-index: 1;"> Настоятельно рекомендуем Вам покинуть локации для лазания и ныряния в промежутке с 03:00 до 04:00 по МСК. В случае продолжения нахождения на них не используйте горячие клавиши при перемещении между локациями, а также не нажимайте на переходы по несколько раз. Некоторый контент может находиться под данным уведомлением. <a id="hideWarning" href="#">Скрыть</a> </div>`; $('body').prepend(warningHtml); $('#hideWarning').click(function() { $('#warning').remove(); }); } } else { $('#warning').remove(); } } showWarning(); } function appendToElementOrPrependFallback(primaryElement, secondaryElement, elementToAdd) { if ($(primaryElement).length) { $(primaryElement).append(elementToAdd); } else { $(secondaryElement).before(elementToAdd); } } function appendToElementOrFallback(primaryElement, secondaryElement, elementToAdd) { if ($(primaryElement).length) { $(primaryElement).append(elementToAdd); } else { $(secondaryElement).after(elementToAdd); } } const pageurl = window.location.href; const isCW3 = (/^https:\/\/\w?\.?catwar.su\/cw3(?!(\/kns|\/jagd))/.test(pageurl)); const isSite = !(/^https:\/\/\w?\.?catwar.su\/cw3(\/kns|\/jagd)?.*/.test(pageurl)); const isDM = (/^https:\/\/\w?\.?catwar.su\/ls/.test(pageurl)); const isSett = (/^https:\/\/\w?\.?catwar.su\/settings/.test(pageurl)); const isMyCat = (/^https:\/\/\w?\.?catwar.su\/$/.test(pageurl)); const isAll = (/^https:\/\/\w?\.?catwar.su\/.*/.test(pageurl)); try { if (isCW3) cw3(); if (isDM) dm(); if (isSite) site(); if (isSett) sett(); if (isMyCat) myCat(); if (isAll) all(); } catch (error) { console.error("An error occurred: ", error); } // ... // ... // ... function sett() { const html = ` <br><br><div id="cwsSet"><i>(c) CWScript</i><b>Настройки</b><div id="cwsSetList"><div><input class="cs-set" id="textTemplates" type="checkbox"${globals.textTemplates?' checked':''}><label for="textTemplates">Блок с шаблонами в личных сообщениях</label></div> <div><input class="cs-set" id="toggleTextTemplates" type="checkbox"${globals.toggleTextTemplates?' checked':''}><label for="toggleTextTemplates">Изначально сворачивать блок с шаблонами</label></div> <div><input class="cs-set" id="replaceTemplateTheme" type="checkbox"${globals.replaceTemplateTheme?' checked':''}><label for="replaceTemplateTheme">Вставлять название шаблона в тему сообщения</label></div> <!-- <div><input class="cs-set" id="chatTextTemplates" type="checkbox"${globals.chatTextTemplates?' checked':''}><label for="chatTextTemplates">Отображать шаблоны для ЧАТОВ</label></div> <div><input class="cs-set" id="toggleChatTextTemplates" type="checkbox"${globals.toggleChatTextTemplates?' checked':''}><label for="toggleChatTextTemplates">Сворачивать шаблоны ЧАТОВ изначально</label></div> <div><input class="cs-set" id="bloglentTextTemplates" type="checkbox"${globals.bloglentTextTemplates?' checked':''}><label for="bloglentTextTemplates">Отображать шаблоны для БЛОГОЛЕНТЫ</label></div> <div><input class="cs-set" id="toggleBloglentTextTemplates" type="checkbox"${globals.toggleBloglentTextTemplates?' checked':''}><label for="toggleBloglentTextTemplates">Сворачивать шаблоны БЛОГОЛЕНТЫ изначально</label></div>--><hr> <div><input class="cs-set" id="inGameClock" type="checkbox"${globals.inGameClock?' checked':''}><label for="inGameClock">Часы в игровой</label></div> <div><input class="cs-set" id="showDate" type="checkbox"${globals.isDateShow?' checked':''}><label for="showDate">Показывать дату</label></div> <div><input class="cs-set" id="movableClocks" type="checkbox"${globals.movableClocks?' checked':''}><label for="movableClocks">Перетаскиваемый блок часов (на телефонах перетаскивание пока не работает)</label></div> <table><tr><td><div><input class="cs-set" id="deviceTime" type="radio" name="timeSource"${!globals.isClockMoscow?' checked':''}><label for="deviceTime">Время с устройства</label></div></td> <td><div><input class="cs-set" id="moscowTime" type="radio" name="timeSource"${globals.isClockMoscow?' checked':''}><label for="moscowTime">Московское время</label></div></td></tr></table><hr> <div><input class="cs-set" id="phoneFightPanel" type="checkbox"${globals.phoneFightPanel?' checked':''}><label for="phoneFightPanel">Переместить кнопочки окошка БР для телефонщиков</label></div><hr> <div><input class="cs-set" id="friendlyCatWar" type="checkbox"${globals.friendlyCatWar?' checked':''}><label for="friendlyCatWar">Убрать кнопки входа в опасные боережимы</label></div><hr> <div><input class="cs-set" id="nightLagsWarning" type="checkbox"${globals.nightLagsWarning?' checked':''}><label for="nightLagsWarning">Предупреждение об осторожности на водах/лазательных локациях в период с 03:00 по 04:00 по МСК</label></div><hr> <div id="dontRdnLS"><input class="cs-set" id="dontReadenLS" type="checkbox"${globals.dontReadenLS?' checked':''}><label for="dontReadenLS">“Непрочитанное ЛС” только для себя</label></div> <button type="button" id="clearDontReadButton">Нажми меня!</button><label for="clearDontReadButton">Кнопка, чтобы починить (обнулить) счётчик непрочитанных ЛС</label><br><hr> <div><input class="cs-set" id="timerForLS" type="checkbox"${globals.timerForLS?' checked':''}><label for="timerForLS">Выделение сообщений в ЛС, которые скоро удалятся (выделяет непрочитанные ЛС, которые были получены/отправлены от 6 до 14 дней назад)</label></div><hr> <div><input class="cs-set" id="hideWoundWarning" type="checkbox"${globals.hideWoundWarning?' checked':''}><label for="hideWoundWarning">Убрать предупреждение "Вы ранены" со всех страниц сайта</label></div><hr> <div><input class="cs-set" id="brightGameField" type="checkbox"${globals.brightGameField?' checked':''}><label for="brightGameField">Не затемнять окошко игровой</label></div><hr> <div><input class="cs-set" id="customDefectDelay" type="checkbox"${globals.customDefectDelay?' checked':''}><label for="customDefectDelay">Выделение клеток с больными котиками в игровой</label></div> <div><input class="cs-set" id="cstmDfctShowColors" type="checkbox"${globals.cstmDfctShowColors?' checked':''}><label for="cstmDfctShowColors">Подсветка клетки игрока с дефектом полностью</label></div> <div><input class="cs-set" id="cstmDfctShowRamki" type="checkbox"${globals.cstmDfctShowRamki?' checked':''}><label for="cstmDfctShowRamki">Подсветка клетки игрока с дефектом рамкой</label></div> <div><input class="cs-set" id="cstmDfctShowNum" type="checkbox"${globals.cstmDfctShowNum?' checked':''}><label for="cstmDfctShowNum">Показывать иконки болезней с цифрами</label></div> <div><input class="cs-set" id="cstmDfctShowLowDirt" type="checkbox"${globals.cstmDfctShowLowDirt?' checked':''}><label for="cstmDfctShowLowDirt">Показывать 1-2 стадии грязи у игроков</label></div> <div><input class="cs-set" id="cstmDfctShowHighDirt" type="checkbox"${globals.cstmDfctShowHighDirt?' checked':''}><label for="cstmDfctShowHighDirt">Показывать 3-4 стадии грязи у игроков</label></div> <div><input class="cs-set" id="cstmDfctShow34WoundBetter" type="checkbox"${globals.cstmDfctShow34WoundBetter?' checked':''}><label for="cstmDfctShow34WoundBetter">Более выразительное выделение 3-4 стадий ран</label></div> <div><input class="cs-set" id="cstmDfctShowAllBetter" type="checkbox"${globals.cstmDfctShowAllBetter?' checked':''}><label for="cstmDfctShowAllBetter">Более выразительное выделение 3-4 стадий всех дефектов</label></div><hr> <div><input class="cs-set" id="cstmDfctShowDivers" type="checkbox"${globals.cstmDfctShowDivers?' checked':''}><label for="cstmDfctShowDivers">Выделять ныряющих в Игровой</label></div><hr> <div><input class="cs-set" id="cstmDfctShowPodstilki" type="checkbox"${globals.cstmDfctShowPodstilki?' checked':''}><label for="cstmDfctShowPodstilki">Выделять заподстиленных в Игровой</label></div><hr> <div><input class="cs-set" id="showButterflyBots" type="checkbox"${globals.showButterflyBots?' checked':''}><label for="showButterflyBots">Выделять бота-бабочку для прокачки БУ в Игровой</label></div><hr> <div><input class="cs-set" id="darkCatTooltip" type="checkbox"${globals.darkCatTooltip?' checked':''}><label for="darkCatTooltip">Тёмное окошко информации о персонажах в Игровой</label></div><hr> <div><input class="cs-set" id="customItemsDelay" type="checkbox"${globals.customItemsDelay?' checked':''}><label for="customItemsDelay">Подсвечивание клеток с полезными ресурсами в Игровой</label></div> <div><input class="cs-set" id="cstmItmHerbDelay" type="checkbox"${globals.cstmItmHerbDelay?' checked':''}><label for="cstmItmHerbDelay">Подсвечивать травы, мёд и целебные водоросли</label></div> <div><input class="cs-set" id="cstmItmMossDelay" type="checkbox"${globals.cstmItmMossDelay?' checked':''}><label for="cstmItmMossDelay">Подсвечивать мох (обычный, водяной, с желчью)</label></div> <div><input class="cs-set" id="cstmItmWebDelay" type="checkbox"${globals.cstmItmWebDelay?' checked':''}><label for="cstmItmWebDelay">Подсвечивать паутину</label></div> <div><input class="cs-set" id="cstmItmStickDelay" type="checkbox"${globals.cstmItmStickDelay?' checked':''}><label for="cstmItmStickDelay">Подсвечивать крепкие ветки, вьюнки, костоправы и плотные водоросли</label></div> <div><input class="cs-set" id="cstmItmDustDelay" type="checkbox"${globals.cstmItmDustDelay?' checked':''}><label for="cstmItmDustDelay">Подсвечивать звёздную пыль</label></div> <div><input class="cs-set" id="cstmItmMusorDelay" type="checkbox"${globals.cstmItmMusorDelay?' checked':''}><label for="cstmItmMusorDelay">Подсвечивать травящие предметы</label></div><hr> <div><input class="cs-set" id="boneCorrectTimer" type="checkbox"${globals.boneCorrectTimer?' checked':''}><label for="boneCorrectTimer">Таймер снятия костоправов</label></div> <div><input class="cs-set" id="toggleBoneTimer" type="checkbox"${globals.toggleBoneTimer?' checked':''}><label for="toggleBoneTimer">Изначально сворачивать блок таймера костоправов</label></div><hr> <div><input class="cs-set" id="deleteFPTitles" type="checkbox"${globals.deleteFPTitles?' checked':''}><label for="deleteFPTitles">Убрать подписи к кнопкам боережима</label></div><hr> <div><input class="cs-set" id="cwscriptDarkTheme" type="checkbox"${globals.cwscriptDarkTheme?' checked':''}><label for="cwscriptDarkTheme">Тёмная тема для функций из CWScript <small>(В слудующем обновлении добавим больше тем!)</small></label></div> <!--<div><select id="selectInGame"><option>CWScript светлая</option><option>CWScript тёмная</option><option>CatWar светлая</option><option>Стандартная тёмная</option><option>Стандартная светлая</option></select></div><br> <div><select id="selectOutGame"><option>CWScript светлая</option><option>CWScript тёмная</option><option>CatWar светлая</option><option>Стандартная тёмная</option><option>Стандартная светлая</option><option>Стандартная тёмная</option></select></div>--> </div><br></div><br></div><br>` appendToElementOrFallback('#branch', 'a[href="del"]', html); $('#nightLagsWarning').on('change', function() { if (!this.checked) { let userConfirmation = confirm("Вы уверены, что хотите отключить предупреждение о ночных лагах?"); if (!userConfirmation) { this.checked = true; } else {} } else {} }); let cssForSett = ` <style> div#cwsSet>b { display: block; text-align: center; font-size: 23px; padding: 10px; margin-top: -23px; letter-spacing: 15px; text-transform: uppercase; border: 3px solid var(--brdrClr1); margin-bottom: 10px; background-color: var(--bckgClr1); color: var(--txtClr1); } div#cwsSet>i { display: block; text-align: right; padding-top: 5px; padding-right: 10px; font-size: 11px; color: var(--txtClr1); } div#cwsSet { background-color: var(--bckgClr2); border: 3px solid var(--brdrClr1); color: var(--txtClr2); font-family: Montserrat; } div#cwsSetList { max-height: 500px; overflow: auto; background-color: var(--bckgClr2); color: var(--txtClr2); } div#cwsSetList::-webkit-scrollbar { width: 13px; } div#cwsSetList::-webkit-scrollbar-track { background: var(--scrlClr1) !important; } div#cwsSetList::-webkit-scrollbar-thumb { background: var(--scrlClr2) !important; } div#cwsSetList>hr { border: 0.5px solid var(--hrClr1); margin: 10px auto; } div#cwsSetList>table>tbody>tr>td>div { margin-top: 3px; margin-right: 30px; } table#dfctSet { margin-left: 4px; } table#dfctSet, table#dfctSet>tbody>tr, table#dfctSet>tbody>tr>td { border: 3px solid var(--hrClr1); font-weight: bold; font-size: 13px; text-align: center; } table#dfctSet>tbody>tr>td { padding: 10px; } table#dfctSet>tbody>tr.dfctName { background: var(--hrClr1) } div#dfctOpacity, div#itmOpacity { margin-left: 4px; } div#dfctOpacity>input, div#itmOpacity>input { margin-top: 8px; margin-bottom: 8px; } input#cstmDfctOpacity { border: 3px solid var(--hrClr1); width: 208px; margin-left: 0.3px; } input#cstmItmOpacity { border: 3px solid var(--hrClr1); width: 220px; margin-left: 0.3px; } button#resetDefectSettings, button#resetItemSettings { margin-left: 4px; } button#resetDefectSettings:hover, button#resetItemSettings:hover { border: 1px solid var(--brdrClr2); } button#clearDontReadButton { background-color: var(--bckgClr3); color: var(--txtClr3); border: 1px solid var(--brdrClr3); font-family: Verdana; font-size: .9em; margin: 0 1em; display: inline-block; margin-top: 6px;} button#clearDontReadButton:hover { border: 1px solid var(--brdrClr2);} </style> ` $('head').append(cssForSett); $('.cs-set').on('change', function() { let key = this.id; let val = this.type === 'checkbox' ? this.checked : this.value; setSettings(key, val); }); let settingsToResetDfct = [ 'customDefectDelay', 'cstmDfctWounds', 'cstmDfctBruise', 'cstmDfctFractures', 'cstmDfctPoison', 'cstmDfctCough', 'cstmDfctDirt', 'cstmDfctOpacity', 'cstmDfctShowColors', 'cstmDfctShowNum', 'cstmDfctShowHighDirt', 'cstmDfctShowLowDirt', 'cstmDfctShow34WoundBetter', 'cstmDfctShowAllBetter' ]; let settingsToResetItm = [ 'customItemsDelay', 'cstmItmHerbDelay', 'cstmItmHerbClr', 'cstmItmMossDelay', 'cstmItmMossClr', 'cstmItmWebDelay', 'cstmItmWebClr', 'cstmItmStickDelay', 'cstmItmStickClr', 'cstmItmDustDelay', 'cstmItmDustClr', 'cstmItmOpacity', 'cstmItmMusorDelay', 'cstmItmMusorClr' ]; function resetSettings(settingsToReset) { for (var i = 0; i < settingsToReset.length; i++) { let key = settingsToReset[i]; removeSettings(key); } for (i = 0; i < settingsToReset.length; i++) { let key = settingsToReset[i]; globals[key] = csDefaults[key]; } $('.cs-set').each(function() { let key = this.id; if (settingsToReset.includes(key)) { let val = csDefaults[key]; if (this.type === 'checkbox') { this.checked = val; } else { this.value = val; } } }); } $('#resetDefectSettings').on('click', function() { resetSettings(settingsToResetDfct); }); $('#resetItemSettings').on('click', function() { resetSettings(settingsToResetItm); }); $(document).ready(function() { function toggleCustomDefectDelay() { $('#cstmDfctWounds, #cstmDfctBruise, #cstmDfctShowRamki, #cstmDfctFractures, #cstmDfctPoison, #cstmDfctCough, #cstmDfctDirt, #cstmDfctOpacity, #cstmDfctShowColors, #cstmDfctShowNum, #cstmDfctShowHighDirt, #cstmDfctShowLowDirt, #cstmDfctShow34WoundBetter, #cstmDfctShowAllBetter').prop('disabled', !$('#customDefectDelay').is(':checked')); } $('#customDefectDelay').change(toggleCustomDefectDelay); toggleCustomDefectDelay(); function toggleCustomItemsDelay() { $('#cstmItmHerbDelay, #cstmItmHerbClr, #cstmItmMossDelay, #cstmItmMossClr, #cstmItmWebDelay, #cstmItmWebClr, #cstmItmStickDelay, #cstmItmStickClr, #cstmItmDustDelay, #cstmItmDustClr, #cstmItmOpacity, #cstmItmMusorDelay, #cstmItmMusorClr').prop('disabled', !$('#customItemsDelay').is(':checked')); } $('#customItemsDelay').change(toggleCustomItemsDelay); toggleCustomItemsDelay(); function toggleTimeBlock() { $('#deviceTime, #moscowTime, #showDate, #movableClocks').prop('disabled', !$('#inGameClock').is(':checked')); } $('#inGameClock').change(toggleTimeBlock); toggleTimeBlock(); }); } // ... // ... // ... function dm() { if (globals['dontReadenLS']) { function updateDontReadCounter() { let count = 0; for (let i = 0; i < localStorage.length; i++) { let key = localStorage.key(i); if (key.startsWith('message')) { count++; } } localStorage.setItem('dontReadenCount', count); $('#dontReadCounter').text(count > 0 ? '(' + count + ')' : ''); } function updateDontReadenMessages() { $('#messList tr').each(function() { if (!$(this).hasClass('msg_notRead') && !$(this).find('.dontReadButton').length) { $(this).append('<td><button class="dontReadButton">Н</button></td>'); let messageId = $(this).find('a.msg_open').data('id'); if (localStorage.getItem('message' + messageId)) { $(this).addClass('dontReaden'); } } }); } $(document).on('click', '.dontReadButton', function() { let row = $(this).closest('tr'); let messageId = row.find('a.msg_open').data('id'); if (row.hasClass('dontReaden')) { row.removeClass('dontReaden'); localStorage.removeItem('message' + messageId); } else { row.addClass('dontReaden'); localStorage.setItem('message' + messageId, true); } updateDontReadCounter(); }); $(document).on('click', '.msg_open', function() { let row = $(this).closest('tr'); if (row.hasClass('dontReaden')) { let messageId = row.find('a.msg_open').data('id'); row.removeClass('dontReaden'); localStorage.removeItem('message' + messageId); updateDontReadCounter(); } }); setInterval(function() { updateDontReadenMessages(); updateDontReadCounter(); }, 1000); let dontreadencss = `<style>.dontReaden { background-color: var(--bckgClr6); }</style>` $('head').append(dontreadencss); } // Чипсеки if (globals['textTemplates']) { function checkForForm() { let form = document.querySelector('#write_form'); if (form && !form.classList.contains('templates-added')) { add_templates(); form.classList.add('templates-added'); } } checkForForm(); let observer = new MutationObserver((mutationsList, observer) => { for (let mutation of mutationsList) { if (mutation.type === 'childList') { checkForForm(); } } }); observer.observe(document.body, { childList: true, subtree: true }); function add_templates() { if (window.location.href.includes("https://catwar.su/ls?new")) { $(document).ready(function() { setTimeout(function() { initScript(); }, 70); }); function initScript() { 'use strict'; let templates = localStorage.getItem('templates') ? JSON.parse(localStorage.getItem('templates')) : []; function renderTemplates() { let list = $('.patternlist'); list.empty(); templates.forEach(function(template, index) { let templateText = '<div class="patternline"><a href="#" class="name" data-index="' + index + '">' + template.name + '</a> <a href="#" class="delete" data-index="' + index + '">[X]</a> <a href="#" class="edit" data-index="' + index + '">[✍]</a><hr><div>'; list.append(templateText); }); } let writeForm = $('form#write_form'); if (writeForm.length === 0) { return; } writeForm.find('.patternblock').remove(); writeForm.prepend('<div class="patternblock"><i>(c) CWScript</i><b>Шаблоны</b><div class="patternlist"></div></div>'); let patternBlock = writeForm.find('.patternblock'); let createButton = $('<a href="#" id="createButton">Создать новый шаблон</a>').click(function(e) { e.preventDefault(); $(this).hide(); let inputField = $('<input type="text" id="templateName" placeholder="Введите название шаблона"></input>'); let okButton = $('<button type="button" id="templateBtnOK" class="templateBtns">OK</button>').click(function() { let templateName = inputField.val(); if (templateName) { let currentContent = $('#text').val(); let newTemplate = { name: templateName, content: currentContent }; templates.push(newTemplate); localStorage.setItem('templates', JSON.stringify(templates)); renderTemplates(); inputField.remove(); okButton.remove(); cancelButton.remove(); createButton.show(); } }); let cancelButton = $('<button id="templateBtnUndo" class="templateBtns">Отмена</button>').click(function() { inputField.remove(); okButton.remove(); cancelButton.remove(); createButton.show(); }); $(this).after(inputField, okButton, ' ', cancelButton); }); patternBlock.append(createButton); writeForm.off('click', '.delete').on('click', '.delete', function(e) { e.preventDefault(); let templateIndex = $(this).data('index'); let templateName = templates[templateIndex].name; if (confirm('Точно ли вы хотите удалить шаблон "' + templateName + '"?')) { templates.splice(templateIndex, 1); localStorage.setItem('templates', JSON.stringify(templates)); renderTemplates(); } }); writeForm.off('click', '.edit').on('click', '.edit', function(e) { e.preventDefault(); let templateIndex = $(this).data('index'); let template = templates[templateIndex]; if (template) { let templateContent = template.content; $('#text').val(templateContent); let saveButton = $('#templateBtnSaveChanges'); if (saveButton.length === 0) { saveButton = $('<button id="templateBtnSaveChanges">Сохранить шаблон</button><br><br>'); writeForm.append(saveButton); } saveButton.off('click').click(function(e) { e.preventDefault(); let editedContent = $('#text').val(); templates[templateIndex].content = editedContent; localStorage.setItem('templates', JSON.stringify(templates)); renderTemplates(); $('#text').val(''); }); } }); writeForm.on('click', '.name', function(e) { e.preventDefault(); let templateIndex = $(this).data('index'); let template = templates[templateIndex]; if (template) { $('#text').val(template.content); if (globals['replaceTemplateTheme']) { $('#subject').val(template.name); } } }); renderTemplates(); function togglePatternBlock() { $('.patternblock').slideToggle(); } let toggleButton = $('<button id="togglePatternBlockButton" type="button">Ш</button>').click(togglePatternBlock); $('button[data-code="b"]').before(toggleButton); if (globals['toggleTextTemplates']) { $('.patternblock').hide(); } } } } let css = ` <style> button#templateBtnOK, button#templateBtnUndo, button#templateBtnSaveChanges { background-color: var(--bckgClr3); color: var(--txtClr3); border: 1px solid var(--brdrClr3); font-family: Verdana; font-size: .9em; } button#templateBtnOK:hover, button#templateBtnUndo:hover, button#templateBtnSaveChanges:hover { border: 1px solid var(--brdrClr2); } div.patternblock { border: 3px solid var(--brdrClr1); margin-bottom: 10px; background-color: var(--bckgClr1); color: var(--txtClr1); font-family: Montserrat; } div.patternlist { max-height: 140px; overflow: auto; background-color: var(--bckgClr2); color: var(--txtClr2); } div.patternlist::-webkit-scrollbar { width: 13px; } div.patternlist::-webkit-scrollbar-track { background: var(--scrlClr1) !important; } div.patternlist::-webkit-scrollbar-thumb { background: var(--scrlClr2) !important; } div.patternline>hr { border: 0.5px solid var(--hrClr1); margin: 0; margin-top: 6px; } div.patternline:hover { background: var(--bckgClr4) !important; transition: 0.8s; } div.patternline { transition: 0.8s; padding-top: 6px; color: var(--txtClr2); } div.patternline>a { color: var(--txtClr2); } div.patternblock>b { border: 3px solid var(--brdrClr1); display: block; text-align: center; font-size: 23px; padding: 10px; margin-top: -23px; letter-spacing: 15px; text-transform: uppercase; } div.patternblock>i { display: block; text-align: right; padding-top: 5px; padding-right: 10px; font-size: 11px; } .patternline>a.name { display: block; margin-left: 5px; } .patternline>a.delete { display: block; max-width: 80px; margin-top: -17px; margin-left: auto; margin-right: 0; } .patternline>a.edit { display: block; max-width: 50px; margin-top: -19px; margin-left: auto; margin-right: 0; } a#createButton { display: block; padding: 5px; color: var(--txtClr1); } button#templateBtnSaveChanges { margin-top: 1px; } input#templateName { width: 20% !important; margin: 4px auto; } button.templateBtns { overflow: auto; } button.templateBtns { margin-top: 4px; } button#templateBtnOK { margin-left: 10px; margin-right: 3px; } button#togglePatternBlockButton { background-color: #333; color: #fff; border: none; margin-right: 5px; } button#togglePatternBlockButton:hover { outline: 1px solid #ff0; } </style>` $('head').append(css); } } // ... // ... // ... function cw3() { if (globals['inGameClock']) { if (globals['movableClocks']) { (function() { function injectDateTime() { let htmlClock = ` <div id="clockContainer"> <div id="clock"></div> <div id="date"></div> </div> <style> div#clockContainer { position: absolute; z-index: 9999; cursor: move; font-family: Montserrat; background-color: var(--bckgClr1); border: 3px solid var(--brdrClr1); color: var(--txtClr1); padding: 5px 5px 5px 10px; font-weight: bold; font-size: 15px; } </style>` $("body").append(htmlClock); var dateTimeContainer = document.getElementById('clockContainer'); var savedPosition = JSON.parse(localStorage.getItem('dateTimePosition')); if (savedPosition) { dateTimeContainer.style.left = savedPosition.left; dateTimeContainer.style.top = savedPosition.top; } else { dateTimeContainer.style.left = '0px'; dateTimeContainer.style.top = '0px'; } let isDragging = false; let initialX = 0; let initialY = 0; dateTimeContainer.addEventListener('mousedown', function(e) { isDragging = true; initialX = e.pageX - parseInt(dateTimeContainer.style.left); initialY = e.pageY - parseInt(dateTimeContainer.style.top); }); document.addEventListener('mousemove', function(e) { if (isDragging) { e.preventDefault(); dateTimeContainer.style.right = 'unset'; dateTimeContainer.style.left = (e.pageX - initialX) + 'px'; dateTimeContainer.style.top = (e.pageY - initialY) + 'px'; } }); document.addEventListener('mouseup', function() { isDragging = false; if (dateTimeContainer) { var currentPosition = { left: dateTimeContainer.style.left, top: dateTimeContainer.style.top }; localStorage.setItem('dateTimePosition', JSON.stringify(currentPosition)); } }); } window.addEventListener('load', injectDateTime); })(); } if (!globals['movableClocks']) { let clockHtml = ` <div id="clockContainer"> <div id="clock"></div> <div id="date"></div> </div> <style> div#clockContainer { font-family: Montserrat; background-color: var(--bckgClr1); border: 3px solid var(--brdrClr1); color: var(--txtClr1); padding: 5px 5px 5px 10px; font-weight: bold; font-size: 15px; } </style>` $('#tr_actions').after(clockHtml); } } // Сухареки if (globals['customDefectDelay']) { // Включить отображение дефектов в игровой let cstmDfctStyle = `<style id='cstmDfctStyle'></style>` $('head').append(cstmDfctStyle); if (globals['cstmDfctShowColors']) { // Включить подсветку клетки с больными if (globals['cstmDfctShowRamki']) { let cstmDfctRamki = ` /* ОБЩЕЕ */ ol.mouth>li>div.e>div[style*='disease'], ol.mouth>li>div.e>div[style*='trauma'], ol.mouth>li>div.e>div[style*='drown'], ol.mouth>li>div.e>div[style*='wound'], ol.mouth>li>div.e>div[style*='poisoning'], ol.mouth>li>div.e>div[style*='dirt'] { padding-top: 0px !important; } /* КАШЕЛЬ */ #tr_field [style*='disease'] { outline: 5px solid rgba(232, 255, 0, .5); outline-offset: -5px; padding-top: 16px; } /* СКАЛЫ */ #tr_field [style*='trauma'] { outline: 5px solid rgba(0, 255, 232, .3); outline-offset: -5px; padding-top: 16px; } /* ВОДЫ */ #tr_field [style*='drown'] { outline: 5px solid rgba(72, 255, 0, .3); outline-offset: -5px; padding-top: 16px; } /* РАНЫ */ #tr_field [style*='wound'] { outline: 5px solid rgba(0, 0, 255, .3); outline-offset: -5px; padding-top: 16px; } /* ОТРАВЛЕНИЕ */ #tr_field [style*='poisoning'] { outline: 5px solid rgba(255, 0, 0, .3); outline-offset: -5px; padding-top: 16px; }` $('#cstmDfctStyle').append(cstmDfctRamki); } if (!globals['cstmDfctShowRamki']) { let cstmDfctColors = ` /* КАШЕЛЬ */ #tr_field [style*='disease'] { background-color: rgba(238, 255, 70, .25) !important; padding-top: 16px; } ol.mouth>li>div.e>div[style*='disease'] { padding-top: 0px !important; } /* СКАЛЫ */ #tr_field [style*='trauma'] { background-color: rgba(70, 255, 239, .25) !important; padding-top: 16px; } ol.mouth>li>div.e>div[style*='trauma'] { padding-top: 0px !important; } /* ВОДЫ */ #tr_field [style*='drown'] { background-color: rgba(104, 255, 70, .25) !important; padding-top: 16px; } ol.mouth>li>div.e>div[style*='drown'] { padding-top: 0px !important; } /* РАНЫ */ #tr_field [style*='wound'] { background-color: rgba(70, 70, 255, .25) !important; padding-top: 16px; } ol.mouth>li>div.e>div[style*='wound'] { padding-top: 0px !important; } /* ОТРАВЛЕНИЕ */ #tr_field [style*='poisoning'] { background-color: rgba(255, 70, 70, .25) !important; padding-top: 16px; } ol.mouth>li>div.e>div[style*='poisoning'] { padding-top: 0px !important; }` $('#cstmDfctStyle').append(cstmDfctColors); } } if (globals['cstmDfctShowNum']) { // Включить добавление иконок и цифр на клетках с больными if (globals['cstmDfctShowRamki']) { let cstmDfctNum1 = ` /* КАШЕЛЬ */ #tr_field [style*='disease/1']{ content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Кашель%201Р.png) !important; } /* СКАЛЫ */ #tr_field [style*='trauma/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Ушибы%201Р.png) !important; } #tr_field [style*='trauma/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Ушибы%202Р.png) !important; } #tr_field [style*='trauma/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Ушибы%203Р.png) !important; } #tr_field [style*='trauma/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Ушибы%204Р.png) !important; } /* ВОДЫ */ #tr_field [style*='drown/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Переломы%201Р.png) !important; } #tr_field [style*='drown/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Переломы%202Р.png) !important; } #tr_field [style*='drown/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Переломы%203Р.png) !important; } #tr_field [style*='drown/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Переломы%204Р.png) !important; } /* РАНЫ */ #tr_field [style*='wound/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Раны%201Р.png) !important; } #tr_field [style*='wound/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Раны%202Р.png) !important; } #tr_field [style*='wound/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Раны%203Р.png) !important; } #tr_field [style*='wound/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Раны%204Р.png) !important; } /* ОТРАВЛЕНИЕ */ #tr_field [style*='poisoning/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Отравление%201Р.png) !important; } #tr_field [style*='poisoning/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Отравление%202Р.png) !important; } #tr_field [style*='poisoning/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Отравление%203Р.png) !important; } #tr_field [style*='poisoning/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Отравление%204Р.png) !important; }` $('#cstmDfctStyle').append(cstmDfctNum1); } if (!globals['cstmDfctShowRamki']) { let cstmDfctNum = ` /* КАШЕЛЬ */ #tr_field [style*='disease/1']{ content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Кашель%201.png) !important; } /* СКАЛЫ */ #tr_field [style*='trauma/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Ушибы%201.png) !important; } #tr_field [style*='trauma/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Ушибы%202.png) !important; } #tr_field [style*='trauma/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Ушибы%203.png) !important; } #tr_field [style*='trauma/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Ушибы%204.png) !important; } /* ВОДЫ */ #tr_field [style*='drown/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Переломы%201.png) !important; } #tr_field [style*='drown/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Переломы%202.png) !important; } #tr_field [style*='drown/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Переломы%203.png) !important; } #tr_field [style*='drown/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Переломы%204.png) !important; } /* РАНЫ */ #tr_field [style*='wound/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Раны%201.png) !important; } #tr_field [style*='wound/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Раны%202.png) !important; } #tr_field [style*='wound/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Раны%203.png) !important; } #tr_field [style*='wound/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Раны%204.png) !important; } /* ОТРАВЛЕНИЕ */ #tr_field [style*='poisoning/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Отравление%201.png) !important; } #tr_field [style*='poisoning/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Отравление%202.png) !important; } #tr_field [style*='poisoning/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Отравление%203.png) !important; } #tr_field [style*='poisoning/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Отравление%204.png) !important; }` $('#cstmDfctStyle').append(cstmDfctNum); } } if (globals['cstmDfctShowHighDirt']) { if (globals['cstmDfctShowColors']) { // Показывать 3-4 стадии грязи подсветкой клеток if (globals['cstmDfctShowRamki']) { let highDirtRamki = ` div[style*='dirt/base/1/3'], div[style*='dirt/base/2/3'], div[style*='/dirt/base/1/4.png'], div[style*='dirt/base/2/4'] { outline: 5px solid rgba(108, 0, 255, .3); outline-offset: -5px; padding-top: 16px !important; }` } if (!globals['cstmDfctShowRamki']) { let highDirtColors = ` div[style*='dirt/base/1/3'], div[style*='dirt/base/2/3'], div[style*='/dirt/base/1/4.png'], div[style*='dirt/base/2/4'] { background-color: rgba(146, 70, 255, 0.25) !important; padding-top: 16px !important;} ol.mouth>li>div.e>div[style*='dirt/base/1/3'], ol.mouth>li>div.e>div[style*='dirt/base/2/3'], ol.mouth>li>div.e>div[style*='dirt/base/1/4'], ol.mouth>li>div.e>div[style*='dirt/base/2/4'] { background-color: rgba(146, 70, 255, 0.25) !important; padding-top: 0px !important;}` $('#cstmDfctStyle').append(highDirtColors); } } if (globals['cstmDfctShowNum']) { // Подсветка 3-4 стадий грязи иконкой и цифрой if (globals['cstmDfctShowRamki']) { let highDirtRamki = ` #tr_field [style*='/dirt/base/1/3.png'], #tr_field [style*='dirt/base/2/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Грязь%203Р.png) !important; } #tr_field [style*='/dirt/base/1/4.png'], #tr_field [style*='dirt/base/2/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Грязь%204Р.png) !important; }` } if (!globals['cstmDfctShowRamki']) { let highDirtNum = ` #tr_field [style*='/dirt/base/1/3.png'], #tr_field [style*='dirt/base/2/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Грязь%203.png) !important; } #tr_field [style*='/dirt/base/1/4.png'], #tr_field [style*='dirt/base/2/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Грязь%204.png) !important; }` $('#cstmDfctStyle').append(highDirtNum); } } } if (globals['cstmDfctShowLowDirt']) { if (globals['cstmDfctShowRamki']) { let lowDirtRamki = ` /* ГРЯЗЬ */ div[style*='dirt/base/1/1'], div[style*='dirt/base/2/1'], div[style*='/dirt/base/1/2.png'], div[style*='dirt/base/2/2'] { outline: 5px solid rgba(108, 0, 255, .3); outline-offset: -5px; padding-top: 16px !important; }` $('#cstmDfctStyle').append(lowDirtRamki); } if (!globals['cstmDfctShowRamki']) { if (globals['cstmDfctShowColors']) { // Подсветка 1-2 стадий грязи подсветкой клеток let lowDirtColors = ` div[style*='dirt/base/1/1'], div[style*='dirt/base/2/1'], div[style*='/dirt/base/1/2.png'], div[style*='dirt/base/2/2'] { background-color: rgba(146, 70, 255, 0.25) !important; padding-top: 16px !important;} ol.mouth>li>div.e>div[style*='dirt/base/1/1'], ol.mouth>li>div.e>div[style*='dirt/base/2/1'], ol.mouth>li>div.e>div[style*='dirt/base/1/2'], ol.mouth>li>div.e>div[style*='dirt/base/2/2'] { background-color: rgba(146, 70, 255, 0.25) !important; padding-top: 0px !important;}` $('#cstmDfctStyle').append(lowDirtColors); } } if (globals['cstmDfctShowNum']) { // Подсветка 1-2 стадий грязи иконкой и цифрой if (globals['cstmDfctShowRamki']) { let lowDirtNum1 = ` #tr_field [style*='dirt/base/1/1'], #tr_field [style*='dirt/base/2/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Грязь%201Р.png) !important; } #tr_field [style*='/dirt/base/1/2.png'], #tr_field [style*='dirt/base/2/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Грязь%202Р.png) !important; }` $('#cstmDfctStyle').append(lowDirtNum1); } if (!globals['cstmDfctShowRamki']) { let lowDirtNum = ` #tr_field [style*='dirt/base/1/1'], #tr_field [style*='dirt/base/2/1'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Грязь%201.png) !important; } #tr_field [style*='/dirt/base/1/2.png'], #tr_field [style*='dirt/base/2/2'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Грязь%202.png) !important; }` $('#cstmDfctStyle').append(lowDirtNum); } } } if (globals['cstmDfctShow34WoundBetter']) { // Лучшее отображение для раненых 3-4 стадии if (globals['cstmDfctShowRamki']) { let wounds341 = ` #tr_field [style*='wound/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Раны%203!Р.png) !important; } #tr_field [style*='wound/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Раны%204!!!Р.png) !important; }` $('#cstmDfctStyle').append(wounds341); } if (!globals['cstmDfctShowRamki']) { let wounds34 = ` #tr_field [style*='wound/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Rany_3_33.png) !important; } #tr_field [style*='wound/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Rany_4_33__33__33.png) !important; }` $('#cstmDfctStyle').append(wounds34); } } if (globals['cstmDfctShowAllBetter']) { // Лучшее отображение для всех болезней if (globals['cstmDfctShowRamki']) { let cstmDfctAllBetter1 = ` /* КАШЕЛЬ */ #tr_field [style*='disease/1']{ content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Кашель%201Р.png) !important; } #tr_field [style*='trauma/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Ушибы%203!Р.png) !important; } #tr_field [style*='trauma/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Ушибы%204!!!Р.png) !important; } /* ВОДЫ */ #tr_field [style*='drown/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Переломы%203!Р.png) !important; } #tr_field [style*='drown/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Переломы%204!!!Р.png) !important; } #tr_field [style*='poisoning/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Отравление%203!Р.png) !important; } #tr_field [style*='poisoning/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/БолезниР/Отравление%204!!!Р.png) !important; }` $('#cstmDfctStyle').append(cstmDfctAllBetter1); } if (!globals['cstmDfctShowRamki']) { let cstmDfctAllBetter = ` /* КАШЕЛЬ */ #tr_field [style*='disease/1']{ content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Кашель%201.png) !important; } #tr_field [style*='trauma/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Ushiby_3_33.png) !important; } #tr_field [style*='trauma/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Ushiby_4_33__33__33.png) !important; } /* ВОДЫ */ #tr_field [style*='drown/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Perelomy_3_33.png) !important; } #tr_field [style*='drown/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Perelomy_4_33__33__33.png) !important; } #tr_field [style*='poisoning/3'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Otravlenie_3_33.png) !important; } #tr_field [style*='poisoning/4'] { content: url(https://raw.githubusercontent.com/CatWarScript/CatWarScript/main/Болезни/Otravlenie_4_33__33) !important; }` $('#cstmDfctStyle').append(cstmDfctAllBetter); } } } if (globals['cstmDfctShowDivers']) { let cstmDfctDivers = ` <style id="dfctDivers"> #tr_field [style*='/cw3/cats/0/costume/7.png'], [style*='/cw3/cats/-1/costume/7.png'] { content: url(https://i.ibb.co/dG6mhTj/image.png) !important; padding-top: 16px !important; padding-left: 1.5px !important;} </style>` $('head').append(cstmDfctDivers); } if (globals['cstmDfctShowPodstilki']) { let cstmDfctPodstilkiDelay = ` <style id="dfctPodstilki"> #tr_field [style*='/cw3/cats/0/costume/295.png'], [style*='/cw3/cats/-1/costume/295.png'], [style*='/cw3/cats/1/costume/295.png'] { background-color: rgba(121, 85, 61, .25) !important; padding-top: 16px !important;} ol.mouth>li>div.e>div[style*='/cw3/cats/0/costume/295.png'], ol.mouth>li>div.e>div[style*='/cw3/cats/-1/costume/295.png'], ol.mouth>li>div.e>div[style*='/cw3/cats/1/costume/295.png'] { padding-top: 0px !important; } </style>` $('head').append(cstmDfctPodstilkiDelay); } // Кыр сосичка if (globals['customItemsDelay']) { // Подсветка трав и других полезных ресурсов в Игровой let cstmItmStyle = `<style id='cstmItmStyle'></style>` $('head').append(cstmItmStyle); if (globals['cstmItmHerbDelay']) { // Отображение трав let cstmItmHerbs = ` .cage_items[style*='things/13.png'], .cage_items[style*='things/15.png'], .cage_items[style*='things/17.png'], .cage_items[style*='things/19.png'], .cage_items[style*='things/21.png'], .cage_items[style*='things/23.png'], .cage_items[style*='things/25.png'], .cage_items[style*='things/26.png'], .cage_items[style*='things/106.png'], .cage_items[style*='things/108.png'], .cage_items[style*='things/109.png'], .cage_items[style*='things/110.png'], .cage_items[style*='things/111.png'], .cage_items[style*='things/112.png'], .cage_items[style*='things/115.png'], .cage_items[style*='things/116.png'], .cage_items[style*='things/119.png'], .cage_items[style*='things/655.png'] { background-color: rgba(43, 255, 117, 0.25) !important;}` $('#cstmItmStyle').append(cstmItmHerbs); } if (globals['cstmItmMossDelay']) { // Отображение мха let cstmItmMoss = ` /* МОХ (обычный, водяной и желчный) */ .cage_items[style*='things/75.png'], .cage_items[style*='things/78.png'], .cage_items[style*='things/95.png'] { background-color: rgba(43, 255, 117, 0.25) !important;}` $('#cstmItmStyle').append(cstmItmMoss); } if (globals['cstmItmWebDelay']) { // Отображение паутины let cstmItmWeb = ` /* ПАУТИНА */ .cage_items[style*='things/20.png'] { background-color: rgba(43, 255, 117, 0.25) !important;}` $('#cstmItmStyle').append(cstmItmWeb); } if (globals['cstmItmStickDelay']) { // Отображение STICKS. let cstmItmSticks = ` /* ВЕТКИ, ВЬЮНКИ, КОСТОПРАВЫ, ПЛОТНЫЕ ВОДОРОСЛИ */ .cage_items[style*='things/565.png'], .cage_items[style*='things/566.png'], .cage_items[style*='things/562.png'], .cage_items[style*='things/563.png'], .cage_items[style*='things/3993.png'] { background-color: rgba(43, 255, 117, 0.25) !important;}` $('#cstmItmStyle').append(cstmItmSticks); } if (globals['cstmItmDustDelay']) { // Отображение Звёздной Пыли let cstmItmDust = ` /* ПЫЛЬ */ .cage_items[style*='things/94.png'], .cage_items[style*='things/385.png'], .cage_items[style*='things/386.png'], .cage_items[style*='things/387.png'], .cage_items[style*='things/388.png'], .cage_items[style*='things/389.png'], .cage_items[style*='things/390.png'], .cage_items[style*='things/391.png'], .cage_items[style*='things/392.png'] { background-color: rgba(192, 150, 226, 0.25) !important;}` $('#cstmItmStyle').append(cstmItmDust); } if (globals['cstmItmMusorDelay']) { // Отображение muror let cstmItmMusor = ` /* КОСТИ */ .cage_items[style*='things/985.png'], .cage_items[style*='things/986.png'], .cage_items[style*='things/987.png'], .cage_items[style*='things/988.png'], .cage_items[style*='things/989.png'] { background-color: rgba(255, 43, 43, 0.25) !important;} /* ПАДАЛЬ, ГНИЛЬ */ .cage_items[style*='things/44.png'], .cage_items[style*='things/180.png'] { background-color: rgba(255, 43, 43, 0.25) !important;} /* МОХ (испорченный) */ .cage_items[style*='things/77.png'] { background-color: rgba(255, 43, 43, 0.25) !important;} /* МУСОР */ .cage_items[style*='things/7801.png'], .cage_items[style*='things/7802.png'], .cage_items[style*='things/7803.png'], .cage_items[style*='things/7804.png'], .cage_items[style*='things/7805.png'], .cage_items[style*='things/7806.png'] { background-color: rgba(255, 43, 43, 0.25) !important;}` $('#cstmItmStyle').append(cstmItmMusor); } } // Луковые колечьки if (globals['phoneFightPanel']) { // Панелька боережима для телефонщиков let dangerModes = $('input[value="T+1"], input[value="T+2"], input[value="T+3"]').clone(); $('input[value="T+1"], input[value="T+2"], input[value="T+3"]').remove(); $('#fightLog').after(dangerModes); if ($('#fteams-wrap').length === 0) { // Проверка на наличие модифицированного БР // Если элемента нет, меняем стиль окна бр $('#fightPanel').css('height', 'auto'); } let fightPanelStyle = ` <style id="fightPanelStyle"> [value="T+1"] { position: relative; bottom: 0px; left: 0px; width: 65px !important;} [value="T+2"] { position: relative; bottom: 0px; left: 31px; width: 65px !important;} [value="T+3"] { position: relative; bottom: 0px; left: 62px; width: 65px !important;} .hotkey { margin-left: 15px; width: 40px; border-radius: 2px;} img#block { transform: scale(105%); position: relative; left: 5px; top: 1.8px;} </style>` $('head').append(fightPanelStyle); } // Френдли кетвар лучшая функция if (globals['friendlyCatWar']) { $('#fightPanel input[value="T+1"]').remove(); $('#fightPanel input[value="T+2"]').remove(); $('#fightPanel input[value="T+3"]').remove(); } // Чупачупсеки if (globals['darkCatTooltip']) { let darkCss = ` <style> span.cat_tooltip, span.cat_tooltip>a, span.cat_tooltip>u>a { color: #a2abb5c7 !important; } span.cat_tooltip { background: #1a1d22ed !important; border: #4f4f59 0.5px solid !important; filter: brightness(105%); } span.cat_tooltip>[src*="odoroj"] { filter: brightness(70%) contrast(90%); } span.cat_tooltip>span.online { filter: brightness(190%) contrast(50%) opacity(95%); } </style>` $('head').append(darkCss); } // Газеровочька if (globals['showButterflyBots']) { let butterflyCss = `<style> /* ОБЫЧНАЯ */ img[src*='things/990.png'] { border: 15px solid rgba(255, 170, 0, .6); } ol.mouth>li>img[src*='things/990.png'] { border: none; } ol#itemList>li>img[src*='things/990.png'] { border: none; } /* КРАСИВАЯ */ img[src*='things/991.png'] { border: 15px solid rgba(255, 170, 0, .6); } ol.mouth>li>img[src*='things/991.png'] { border: none; } ol#itemList>li>img[src*='things/991.png'] { border: none; } /* РЕДКАЯ */ img[src*='things/992.png'] { border: 15px solid rgba(255, 170, 0, .6); } ol.mouth>li>img[src*='things/992.png'] { border: none; } ol#itemList>li>img[src*='things/992.png'] { border: none; } </style>` $('head').append(butterflyCss); } // Лимонадек if (globals['brightGameField']) { let brightCss = ` <style> div#cages_div { opacity: 1 !important; } </style>` $('head').append(brightCss); } // Чокопайчеки if (globals['deleteFPTitles']) { let fptitlesCss = ` <style> div#fightPanel input.hotkey:hover { pointer-events: none; } </style>` $('head').append(fptitlesCss); } } // ... // ... // ... function myCat() { if (globals['boneCorrectTimer']) { let boneCorrectDiv = ` <div id="timer"> <i>(c) CWScript</i><b>Костоправы</b><div id="timerMain"> <input type="number" id="days" min="0" value='0' placeholder="Days" class="templateInputs"> <label for="days">Введите дни</label><br> <input type="number" id="hours" min="0" value='0' max="23" placeholder="Hours" class="templateInputs"> <label for="hours">Введите часы</label><br> <input type="number" id="minutes" min="0" value='0' max="59" placeholder="Minutes" class="templateInputs"> <label for="minutes">Введите минуты</label><br></div> <div id="buttons"> <!-- новый div для кнопок --> <button id="start" class="boneCorrectBtns">Запустить таймер</button> <button id="reset" class="boneCorrectBtns">Отменить таймер</button> </div> <span id="message"></span> </div>` function toggleBoneTimer() { $('#timer').slideToggle(); } let toggleButton = $('<button id="toggleBoneCorrectButton" type="button">Калькулятор костоправов</button>').click(toggleBoneTimer); appendToElementOrPrependFallback('#pr', '#education-show', toggleButton); appendToElementOrPrependFallback('#pr', '#education-show', boneCorrectDiv); let cssBoneCorrect = ` <style> div#timer>b { border: 3px solid var(--brdrClr1); display: block; text-align: center; font-size: 23px; padding: 10px; padding-top: 21px; padding-bottom: 16px; margin-top: -22px; letter-spacing: 15px; text-transform: uppercase; } div#timer { border: 3px solid var(--brdrClr1); margin: 5px 0; background-color: var(--bckgClr1); color: var(--txtClr1); font-family: Montserrat; } div#timer>i { display: block; text-align: right; padding-top: 5px; padding-right: 10px; font-size: 11px; } input.templateInputs { background-color: var(--bckgClr3); color: var(--txtClr3); border: 1px solid var(--brdrClr3); font-family: Verdana; font-size: .9em; width: 50px; margin-left: 10px; margin-bottom: 5px; } button.boneCorrectBtns, #toggleBoneCorrectButton { background-color: var(--bckgClr3); color: var(--txtClr3); border: 1px solid var(--brdrClr3); font-family: Verdana; font-size: .9em; margin: 0 1em; display: inline-block; } button.boneCorrectBtns:hover, #toggleBoneCorrectButton:hover { border: 1px solid var(--brdrClr2); } div#timerMain { max-height: 140px; overflow: auto; background-color: var(--bckgClr2); color: var(--txtClr2); padding: 7px; padding-bottom: 1px; } div#buttons { border-top: 3px solid var(--brdrClr1); padding-top: 5px; padding-bottom: 5px; text-align: center; } span#message { display: block; text-align: center !important; } </style>` $('head').append(cssBoneCorrect); if (globals['toggleBoneTimer']) { $('#timer').hide(); } } } // ... // ... // ... function all() { function addFont() { let link = document.createElement('link'); link.href = 'https://fonts.googleapis.com/css?family=Montserrat'; link.rel = 'stylesheet'; document.head.appendChild(link); if (!globals['cwscriptDarkTheme']) { let cssDlyaCWScripta = ` <style id="cssPalette"> html { --scrlClr1: #776c5f; --scrlClr2: #463E33; --hrClr1: #463E3330; --txtClr1: #C8C0BE; --txtClr2: #181510; --txtClr3: #fff; --brdrClr1: #BD7E5C; --brdrClr2: #ff0; --brdrClr3: #000; --bckgClr1: #463E33; --bckgClr2: #918474; --bckgClr3: #333; --bckgClr4: #463E3350; --bckgClr5: #DBAEFF; --bckgClr6: #BB8DEB; } </style>` $('head').append(cssDlyaCWScripta); } if (globals['cwscriptDarkTheme']) { let cssDlyaCWScripta = ` <style id="cssPalette"> html { --scrlClr1: #1f1f1f; --scrlClr2: #383838; --hrClr1: #29292930; --txtClr1: #b9b9b9; --txtClr2: #070707; --txtClr3: #fff; --brdrClr1: #888; --brdrClr2: #ff0; --brdrClr3: #000; --bckgClr1: #282828; --bckgClr2: #5e5e5e; --bckgClr3: #333; --bckgClr4: #15151550; --bckgClr5: #DBAEFF; --bckgClr6: #BB8DEB;} </style>` $('head').append(cssDlyaCWScripta); } }; addFont(); // Wenomechainasama // Tumajarbisaun if (globals['dontReadenLS']) { function updateDontReadCounter() { let count = localStorage.getItem('dontReadenCount'); if (count > 0) { if ($('#newls').length) { if ($('#dontReadCounter').length) { $('#dontReadCounter').text('(' + count + ')'); } else { let counter = $('<span id="dontReadCounter">(' + count + ')</span>'); $('#newls').after(counter); } } else if ($('div.kn6').length) { if ($('#dontReadCounter').length) { $('#dontReadCounter').text('(' + count + ')'); } else { let counter = $('<span id="dontReadCounter">(' + count + ')</span>'); $('div.kn6').after(counter); } } } else { $('#dontReadCounter').remove(); } $(document).ready(function() { $('#dontReadCounter').click(function(e) { e.preventDefault(); }); $('#dontReadCounter').click(); }); } setInterval(updateDontReadCounter, 1000); let cssDontReadLS = ` <style> .dontReadButton:hover { border: 1px solid var(--brdrClr2); } .dontReadButton { background-color: var(--bckgClr3); color: var(--txtClr3); border: 1px solid var(--brdrClr3); font-family: Verdana; font-size: .9em; } #dontReadCounter { background-color: var(--bckgClr5); font-weight: 700; color: var(--brdrClr3); text-decoration: none !important; pointer-events: none !important; } </style>` $('head').append(cssDontReadLS); } // Wifenlooof function updateClock() { setInterval(() => { const now = new Date(); let time; if (globals['isClockMoscow']) { time = now.toLocaleTimeString('ru-RU', { timeZone: 'Europe/Moscow', hour12: false }); } else { time = now.toLocaleTimeString('ru-RU', { hour12: false }); } $('#clock').text(time); if (globals['isDateShow']) { updateDate(now); } else { $('#date').text(''); } }, 1000); } function updateDate(now) { const daysOfWeek = ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; const monthsOfYear = ['Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря']; const date = daysOfWeek[now.getDay()] + ', ' + now.getDate() + ' ' + monthsOfYear[now.getMonth()]; $('#date').text(date); } $(document).ready(function() { $('#inGameClock').prop('checked', globals['inGameClock']); $('#deviceTime').prop('checked', !globals['isClockMoscow']); $('#moscowTime').prop('checked', globals['isClockMoscow']); $('#showDate').prop('checked', globals['isDateShow']); $('#inGameClock').on('change', function() { setSettings('inGameClock', this.checked); updateClock(); }); $('input[name="timeSource"]').on('change', function() { setSettings('isClockMoscow', this.id === 'moscowTime'); }); $('#showDate').on('change', function() { setSettings('isDateShow', this.checked); }); $('.cs-chapter').on('click', function() { updateClock(); }); updateClock(); }); // Eselifterbraun if (globals['boneCorrectTimer']) { let timerId; function updateTimerMessage() { let timerStart = localStorage.getItem('timerStart'); let timerDuration = localStorage.getItem('timerDuration'); if (timerStart && timerDuration) { let timeLeft = timerDuration - (Date.now() - timerStart); if (timeLeft > 0) { let secondsLeft = Math.floor(timeLeft / 1000); let minutesLeft = Math.floor(secondsLeft / 60); let hoursLeft = Math.floor(minutesLeft / 60); let daysLeft = Math.floor(hoursLeft / 24); secondsLeft %= 60; minutesLeft %= 60; hoursLeft %= 24; $('#message').text(`До окончания таймера осталось: ${daysLeft} дней, ${hoursLeft} часов, ${minutesLeft} минут, ${secondsLeft} секунд`); } else { $('#message').text('Таймер истёк, Вы можете снять костоправ!'); localStorage.removeItem('timerStart'); localStorage.removeItem('timerDuration'); } } else { $('#message').text(''); } } $('#start').click(function() { if (timerId) { clearTimeout(timerId); } let days = parseInt($('#days').val()) || 0; let hours = parseInt($('#hours').val()) || 0; let minutes = parseInt($('#minutes').val()) || 0; let time = ((days * 24 + hours) * 60 + minutes) * 60 * 1000; timerId = setTimeout(function() { alert('Таймер истёк, Вы можете снять костоправ!'); localStorage.removeItem('timerStart'); localStorage.removeItem('timerDuration'); $('#message').text('Таймер истёк, Вы можете снять костоправ!'); }, time); localStorage.setItem('timerStart', Date.now()); localStorage.setItem('timerDuration', time); updateTimerMessage(); }); $('#reset').click(function() { clearTimeout(timerId); timerId = null; $('#days').val(''); $('#hours').val(''); $('#minutes').val(''); localStorage.removeItem('timerStart'); localStorage.removeItem('timerDuration'); $('#message').text(''); }); setInterval(updateTimerMessage, 1000); let timerStart = localStorage.getItem('timerStart'); let timerDuration = localStorage.getItem('timerDuration'); if (timerStart && timerDuration) { let timeLeft = timerDuration - (Date.now() - timerStart); if (timeLeft > 0) { timerId = setTimeout(function() { alert('Таймер истёк, Вы можете снять костоправ!'); localStorage.removeItem('timerStart'); localStorage.removeItem('timerDuration'); $('#message').text('Таймер истёк, Вы можете снять костоправ!'); }, timeLeft); } else { alert('Таймер истёк, Вы можете снять костоправ!'); localStorage.removeItem('timerStart'); localStorage.removeItem('timerDuration'); } } updateTimerMessage(); } // Anweculbetugtbaby if (globals['hideWoundWarning']) { setTimeout(function() { $('#warningAboutWound').remove }, 1000); }; // Aslonskysrblu if (globals['nightLagsWarning']) { nightLagsWarning(); } // Yuaksoinocenow $('#clearDontReadButton').on('click', function() { for (let i = 0; i < localStorage.length; i++) { let key = localStorage.key(i); if (key.startsWith('message')) { localStorage.removeItem(key); } } updateDontReadCounter(); $('#messList tr').removeClass('dontReaden'); }); } // ... // ... // ... function site() { if (globals['hideWoundWarning']) { $('#warningAboutWound').remove(); }; }