MediaWiki:Test.js: различия между версиями

Страница интерфейса MediaWiki
Нет описания правки
Нет описания правки
 
(не показана 191 промежуточная версия этого же участника)
Строка 1: Строка 1:
document.addEventListener("DOMContentLoaded", function() {
(function(){
    const raceData = {
if(typeof mw==='undefined') return;
        "Человек": {
            name: "Человек",
            organs: [
                { name: "Сердце", description: "Усваивает лекарства, яды и наркотики. Количество метаболизируемых веществ - 2" },
                { name: "Желудок", description: "Усваивает еду и напитки. Вместимость 50 единиц. Количество метаболизируемых веществ - 3" },
                { name: "Легкие", description: "Дают возможность дышать кислородом. Скорость дыхания - 1 единица в секунду" },
                { name: "Печень", description: "Усваивает алкоголь (0.05 единиц в секунду). Количество метаболизируемых веществ - 1" },
                { name: "Почки", description: "Удаляет любое неметаболизируемое вещество из организма. Количество усваиваемых веществ - 5" }
            ],
            speed: "Скорость передвижения: 2.5 и 4.5 тайлов в секунду при ходьбе и беге",
            damage: "Получают удары: 0.35 ударов при нулевом давлении",
            features: [
                "Безопасная температура - -13.15°С (260°К) - 86.85°С (360°К)",
                "Безоружные удары наносят 5 единиц ударов",
                "Можно разделать на 5 единиц человеческого мяса"
            ],
            accents: "Не имеют акцента",
            names: "Стандартные человеческие имена (Иван Петров, Джо Вильсон, Чжун Линь)"
        }
    };


    const raceSelection = document.getElementById("race-selection");
var map={
    const raceInfo = document.getElementById("race-info");
"Клише":"#ff4d4d",
"властью":"#4dff4d",
"ответственность":"#4d4dff",
"Стандартные Рабочие Процедуры":"#ff4dff",
"ядерный":"#ffa500",
"станции":"#4dffff",
"ГСБ":"#b84dff",
"диск":"#4dff88",
"СРП/КЗ":"#ffb6c1",
"банановая кожурка":"#ffff4d"
};


    function displayRaceInfo(race) {
function esc(s){return s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}
        const raceDetail = raceData[race];
        raceInfo.innerHTML = `
            <h2>${raceDetail.name}</h2>
            <h3>Органы:</h3>
            <ul>
                ${raceDetail.organs.map(organ => `<li><span class="highlight">${organ.name}</span>: ${organ.description}</li>`).join('')}
            </ul>
            <p>${raceDetail.speed}</p>
            <p>${raceDetail.damage}</p>
            <h3>Особенности расы:</h3>
            <ul>
                ${raceDetail.features.map(feature => `<li>${feature}</li>`).join('')}
            </ul>
            <p><strong>Имена и акценты:</strong> ${raceDetail.accents}</p>
            <p><strong>Примерные имена:</strong> ${raceDetail.names}</p>
        `;
    }


    displayRaceInfo("Человек");
function walk(node){
if(node.nodeType===3){
var t=node.nodeValue, r=t;
for(var k in map){
r=r.replace(new RegExp(esc(k),'g'),'<span style="color:'+map[k]+'">'+k+'</span>');
}
if(r!==t){
var s=document.createElement('span');
s.innerHTML=r;
node.parentNode.replaceChild(s,node);
}
}
}


    raceSelection.addEventListener("change", function() {
var nodes=document.querySelectorAll('.mw-parser-output p, .mw-parser-output li');
        displayRaceInfo(raceSelection.value);
for(var i=0;i<nodes.length;i++){
    });
var cn=nodes[i].childNodes;
});
for(var j=0;j<cn.length;j++) walk(cn[j]);
}
})();

Текущая версия от 11:16, 17 января 2026

(function(){
if(typeof mw==='undefined') return;

var map={
"Клише":"#ff4d4d",
"властью":"#4dff4d",
"ответственность":"#4d4dff",
"Стандартные Рабочие Процедуры":"#ff4dff",
"ядерный":"#ffa500",
"станции":"#4dffff",
"ГСБ":"#b84dff",
"диск":"#4dff88",
"СРП/КЗ":"#ffb6c1",
"банановая кожурка":"#ffff4d"
};

function esc(s){return s.replace(/[.*+?^${}()|[\]\\]/g,'\\$&');}

function walk(node){
if(node.nodeType===3){
var t=node.nodeValue, r=t;
for(var k in map){
r=r.replace(new RegExp(esc(k),'g'),'<span style="color:'+map[k]+'">'+k+'</span>');
}
if(r!==t){
var s=document.createElement('span');
s.innerHTML=r;
node.parentNode.replaceChild(s,node);
}
}
}

var nodes=document.querySelectorAll('.mw-parser-output p, .mw-parser-output li');
for(var i=0;i<nodes.length;i++){
var cn=nodes[i].childNodes;
for(var j=0;j<cn.length;j++) walk(cn[j]);
}
})();