Модуль:EventsTable: различия между версиями

Материал из Space Station 14 Вики
Нет описания правки
Нет описания правки
Строка 51: Строка 51:
         image = "BureaucraticError.gif",
         image = "BureaucraticError.gif",
         advert = "115",
         advert = "115",
         description = "Увеличивает количество слотов на случайных проффесиях. '''''Исключение:''''' ''Станционный ИИ'' ",
         description = "Увеличивает количество слотов на случайных проффесиях.<br>'''''Исключение:''''' ''Станционный ИИ'' ",
         weight = 3,
         weight = 3,
         duration = 45,
         duration = 45,

Версия от 15:13, 27 марта 2025

Для документации этого модуля может быть создана страница Модуль:EventsTable/doc

local p = {}

local data = { -- Дата
    {
        name = "Аномалия",
        id = "AnomalySpawn",
        image = "AnomalyAll.gif",
        advert = "111",
        description = "В случайном месте на станции появляется аномалия.",
        weight = 5,
        duration = 120,
        earliestStart = 20,
        minimumPlayers = 40,
    },
    {
        name = "Артефакт",
        id = "BluespaceArtifact",
        image = "BluespaceArtifact.gif",
        advert = "112",
        description = "В случайном месте на станции с характерным звуком и голубым свечением появляется артефакт.",
        weight = 4,
        duration = 90,
        earliestStart = 30,
        minimumPlayers = 30,
    },
    {
        name = "Блюспейс шкаф",
        id = "BluespaceLocker",
        image = "BluespaceLocker.gif",
        advert = "113",
        description = "Два случайных шкафа образуют пространственно-связанный туннель, аналогичный кроличьей норе. Любой объект, помещенный в один из шкафов, мгновенно перемещается в другой, создавая эффект мгновенной телепортации.",
        weight = 3,
        duration = 60,
        earliestStart = 25,
        minimumPlayers = 25,
    },
    {
        name = "Выключение ЛКП",
        id = "BreakerFlip",
        image = "BreakerFlip.gif",
        advert = "114",
        description = "На станции выключается случайное количество ЛКП.",
        weight = 2,
        duration = 30,
        earliestStart = 15,
        minimumPlayers = 20,
    },
    {
        name = "Бюрократическая ошибка",
        id = "BureaucraticError",
        image = "BureaucraticError.gif",
        advert = "115",
        description = "Увеличивает количество слотов на случайных проффесиях.<br>'''''Исключение:''''' ''Станционный ИИ'' ",
        weight = 3,
        duration = 45,
        earliestStart = 20,
        minimumPlayers = 20,
    },
    {
        name = "Клерикальная ошибка",
        id = "ClericalError",
        image = "ClericalError.gif",
        advert = "116",
        description = "Некорректное заполнение форм вызвало задержки в работе станции.",
        weight = 2,
        duration = 30,
        earliestStart = 15,
        minimumPlayers = 15,
    },
    {
        name = "Миграция тараканов",
        id = "CockroachMigration",
        image = "CockroachMigration.gif",
        advert = "117",
        description = "Тараканы массово мигрируют по станции.",
        weight = 3,
        duration = 60,
        earliestStart = 25,
        minimumPlayers = 30,
    },
    {
        name = "Утечка газа",
        id = "GasLeak",
        image = "GasLeak.gif",
        advert = "118",
        description = "Обнаружена утечка газа, возможны последствия.",
        weight = 4,
        duration = 90,
        earliestStart = 30,
        minimumPlayers = 35,
    },
    {
        name = "Вирус серой волны",
        id = "GreytideVirus",
        image = "GreytideVirus.gif",
        advert = "119",
        description = "По станции распространяется таинственный вирус серой волны.",
        weight = 4,
        duration = 120,
        earliestStart = 40,
        minimumPlayers = 50,
    },
    {
        name = "Ионный шторм",
        id = "IonStorm",
        image = "IonStorm.gif",
        advert = "120",
        description = "Произошел ионный шторм, возможны сбои в электронике.",
        weight = 3,
        duration = 100,
        earliestStart = 35,
        minimumPlayers = 30,
    },
    {
        name = "Рост кудзу",
        id = "KudzuGrowth",
        image = "KudzuGrowth.gif",
        advert = "121",
        description = "Кудзу начало разрастаться по станции.",
        weight = 4,
        duration = 150,
        earliestStart = 40,
        minimumPlayers = 40,
    },
    {
        name = "Массовые галлюцинации",
        id = "MassHallucinations",
        image = "MassHallucinations.gif",
        advert = "122",
        description = "Члены экипажа начинают видеть странные вещи.",
        weight = 3,
        duration = 90,
        earliestStart = 30,
        minimumPlayers = 35,
    },
    {
        name = "MimicVendorRule",
        id = "MimicVendorRule",
        image = "MimicVendorRule.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 5,
        duration = "",
        earliestStart = 0,
        minimumPlayers = 20,
    },
    {
        name = "Миграция мышей",
        id = "MouseMigration",
        image = "MouseMigration.gif",
        advert = "123",
        description = "Мыши заполонили станцию.",
        weight = 2,
        duration = 60,
        earliestStart = 20,
        minimumPlayers = 25,
    },
    {
        name = "Проверка энергосистемы",
        id = "PowerGridCheck",
        image = "PowerGridCheck.gif",
        advert = "124",
        description = "Выполняется диагностика энергосистемы станции.",
        weight = 2,
        duration = 45,
        earliestStart = 20,
        minimumPlayers = 20,
    },
    {
        name = "Случайное пробуждение разума",
        id = "RandomSentience",
        image = "RandomSentience.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 3,
        duration = 90,
        earliestStart = 30,
        minimumPlayers = 30,
    },
    {
        name = "Спавн слаймов",
        id = "SlimesSpawn",
        image = "SlimesSpawn.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 5,
        duration = 60,
        earliestStart = 20,
        minimumPlayers = 15,
    },
    {
        name = "SolarFlare",
        id = "SolarFlare",
        image = "SolarFlare.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 8,
        duration = "120-240",
        earliestStart = "",
        minimumPlayers = "",
    },
    {
        name = "SnakeSpawn",
        id = "SnakeSpawn",
        image = "SnakeSpawn.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 5,
        duration = 60,
        earliestStart = 20,
        minimumPlayers = 15,
    },
    {
        name = "SpiderClownSpawn",
        id = "SpiderClownSpawn",
        image = "SpiderClownSpawn.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 1.5,
        duration = 60,
        earliestStart = 20,
        minimumPlayers = 20,
    },
    {
        name = "SpiderSpawn",
        id = "SpiderSpawn",
        image = "SpiderSpawn.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 5,
        duration = 60,
        earliestStart = 20,
        minimumPlayers = 15,
    },
    {
        name = "VentClog",
        id = "VentClog",
        image = "VentClog.gif",
        advert = "125",
        description = "Неожиданное пробуждение разума у случайного объекта.",
        weight = 5,
        duration = 60,
        earliestStart = 15,
        minimumPlayers = 15,
    },
}



function p.generateTable(frame) -- Генерация табличек
	local out = '{| id="highlighted-header-CM" class="wikitable sortable mw-collapsible" margin:0;"\n'
	out = out .. '! Событие !! Оповещение !! Описание !! Характеристики\n'

    for _, event in ipairs(data) do
        -- Формируем ячейку с названием, ID и изображением
        local IIevent = '<div style="text-align:center;">'
        IIevent = IIevent .. "'''" .. (event.name or "Неизвестно") .. "'''<br>"
        IIevent = IIevent .. "<span style='color:#adadad'>'''" .. (event.id or "Нет ID") .. "'''</span><br>"

        if event.image and event.image ~= "Нет изображения" then
            IIevent = IIevent .. '[[File:' .. event.image .. '|50px]]'
        end

        IIevent = IIevent .. '</div>'

        -- Формируем список характеристик с вики-разметкой AltTooltip
        local characteristicsList = ""
        local characteristics = {
            {"Вес", "Вес события в системе случайных событий (чем выше, тем чаще случается)", event.weight},
            {"Мин. игроков", "Минимальное количество игроков для начала события", event.minimumPlayers},
            {"Время старта", "Время с которого событие может начаться", event.earliestStart .. " сек."},
            {"Длительность", "Длительность события в секундах", event.duration .. " сек."}
        }

        for _, char in ipairs(characteristics) do
            characteristicsList = characteristicsList .. "- " .. frame:expandTemplate{ title = "AltTooltip", args = { char[1], char[2] }} .. ": " .. char[3] .. "<br>"
        end

        -- Добавляем строки в таблицу
        out = out .. "|-\n"
        out = out .. "| " .. IIevent .. "\n"
        out = out .. "| " .. (event.advert or "Нет оповещения") .. "\n"
        out = out .. "| " .. (event.description or "Нет описания") .. "\n"
        out = out .. "| " .. characteristicsList .. "\n"
    end

    out = out .. "|}" -- Добавляем закрытие таблицы

	return out
end

return p -- ЭТО ДОЛЖНО БЫТЬ В КОНЦЕ