Erinome Godville UI+: различия между версиями

Материал из Энциклобогии
Перейти к навигации Перейти к поиску
(→‎Пользовательские информеры: обновление до 1.1.21.0)
Строка 20: Строка 20:
Информер можно временно отключить, убрав галочку в начале строки.
Информер можно временно отключить, убрав галочку в начале строки.


Начиная с версии 1.1.17.4 в тексте уведомлений можно использовать одиночные переменные. Они указываются отдельными словами - gv.variable, либо в фигурных скобках - {gv.variable}. При изменении значений этих переменных тексты информеров будут соответственным образом обновлены. Для информеров с переменными в названиях существует два дополнительных модификатора работы уведомления - см. в таблице ниже.
Начиная с версии 1.1.17.4 в тексте уведомлений можно использовать одиночные переменные. Они указываются отдельными словами - gv.variable, либо в фигурных скобках - {gv.variable}. Начиная же с версии 1.1.21.0 - в фигурных скобках можно указывать и целые логические выражения любой сложности. При изменении значений входящих в заголовки переменных, тексты информеров будут соответственным образом обновлены. Для информеров с переменными в названиях существует два дополнительных модификатора работы уведомления - см. в таблице ниже.


Несколько условий объединяются логическими операторами '''&&''' (логическое «И»), '''||''' (логическое «ИЛИ») и группируются скобками. Доступно логическое отрицание «НЕ» '''!'''true = false
Несколько условий объединяются логическими операторами '''&&''' (логическое «И»), '''||''' (логическое «ИЛИ») и группируются скобками. Доступно логическое отрицание «НЕ» '''!'''true = false
Строка 32: Строка 32:
|style="text-align: center;" | ==, !=<br><, <=<br>>, >= || равенство и неравенство<br>меньше и меньше или равно<br>больше и больше или равно || <span style="background: silver;">100 == 100</span> →‎ <span style="background: lime;">истина</span><br><span style="background: silver;">"строка" != "другая строка"</span> →‎ <span style="background: lime;">истина</span><br><span style="background: silver;">100 > 200</span> →‎ <span style="background: #f99;">ложь</span>
|style="text-align: center;" | ==, !=<br><, <=<br>>, >= || равенство и неравенство<br>меньше и меньше или равно<br>больше и больше или равно || <span style="background: silver;">100 == 100</span> →‎ <span style="background: lime;">истина</span><br><span style="background: silver;">"строка" != "другая строка"</span> →‎ <span style="background: lime;">истина</span><br><span style="background: silver;">100 > 200</span> →‎ <span style="background: #f99;">ложь</span>
|-
|-
|style="text-align: center;" | ~, ~* || регистрозависимое и регистронезависимое [https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81 регулярное выражение],<br> возвращает результат в виде массива || <span style="background: silver;">"здесь есть число 4 и буква Ё" ~ "число 4"</span> →‎ <span style="background: lime;">["число 4"]</span><br><span style="background: silver;">"здесь есть число 4 и буква Ё" ~ "число (.*?) и"</span> →‎ <span style="background: lime;">["число 4 и", "4"]</span>
|style="text-align: center;" | ~, ~* || регистрозависимое и регистронезависимое [https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81 регулярное выражение],<br> возвращает результат в виде массива или '''null''', если совпадения нет || <span style="background: silver;">"здесь есть число 4 и буква Ё" ~ "число \\d+"</span> →‎ <span style="background: lime;">["число 4"]</span><br><span style="background: silver;">"здесь есть число 4 и буква Ё" ~ "число (.*?) и"</span> →‎ <span style="background: lime;">["число 4 и", "4"]</span>
|-
|style="text-align: center;" | !~, !~* || инвертированная версия регистрозависимого и регистронезависимого [https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F#.D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81 регулярного выражения],<br> возвращает '''true''' или '''false''' || <span style="background: silver;">"здесь есть число 4 и буква Ё" !~ "число \\d+"</span> →‎ <span style="background: #f99;">ложь</span><br><span style="background: silver;">"здесь есть число 4 и буква Ё" !~ "число 5"</span> →‎ <span style="background: lime;">истина</span>
|-
|-
|style="text-align: center;" | A[x] ||  извлечение элемента номер ''x'' из массива ''A'' (отсчет x ведется с нуля) || <span style="background: silver;">("здесь есть число 4 и буква Ё" ~ "число (.*?) и")[1]</span> →‎ <span style="background: lime;">"4"</span><br><span style="background: silver;">("здесь есть число 4 и буква Ё" ~ "число (.*?) и")[5]</span> →‎ <span style="background: #f99;">undefined</span>
|style="text-align: center;" | A[x] ||  извлечение элемента номер ''x'' из массива ''A'' (отсчет x ведется с нуля) || <span style="background: silver;">("здесь есть число 4 и буква Ё" ~ "число (.*?) и")[1]</span> →‎ <span style="background: lime;">"4"</span><br><span style="background: silver;">("здесь есть число 4 и буква Ё" ~ "число (.*?) и")[5]</span> →‎ <span style="background: #f99;">undefined</span>
Строка 85: Строка 87:
{| class="standard collapsible collapsed"  
{| class="standard collapsible collapsed"  
|-
|-
!colspan="3" align="left" |Полный перечень переменных версии 1.1.19.0
!colspan="3" align="left" |Полный перечень переменных версии 1.1.21.0
|-
|-
!Переменная || Описание  
!Категория || Переменная || Описание  
|-
|-
|gv.health || здоровье героя  
|rowspan="31" valign="top"|Общие переменные || gv.health || здоровье героя  
|-
|-
|gv.healthMax || максимальное здоровье героя  
|gv.healthMax || максимальное здоровье героя  
Строка 109: Строка 111:
|gv.inventoryHasItem("название предмета") || проверка, есть ли в инвентаре героя указанный предмет
|gv.inventoryHasItem("название предмета") || проверка, есть ли в инвентаре героя указанный предмет
|-
|-
|gv.inventoryHasType("тип предмета") || проверка, есть ли в инвентаре героя предмет указанного типа:
|valign="top"|gv.inventoryHasType("тип предмета") || проверка, есть ли в инвентаре героя предмет указанного типа:
                 {| class="standard"  
                 {| class="standard"  
                 |aura-box      || коробка, дающая герою случайную ауру
                 |aura-box      || коробка, дающая герою случайную ауру
Строка 150: Строка 152:
                 |}
                 |}
|-
|-
|gv.inventoryCountLike("regex",флаги) || возвращает количество предметов в инвентаре, подходящих под указанное регулярное выражение и сумму следующих необязательных флагов-ограничителей:  
|valign="top"|gv.inventoryCountLike("regex",флаги) || возвращает количество предметов в инвентаре, подходящих под указанное регулярное выражение и необязательный список флагов-ограничителей:  
               {| class="standard"  
               {| class="standard"  
                 |1     || не лечебные
                 |h     || лечебные
                 |-
                 |-
                 |2     || лечебные
                 |H     || не лечебные
                 |-
                 |-
                 |4     || не жирные
                 |b     || жирные
                 |-
                 |-
                 |8     || жирные
                 |B     || не жирные
                 |-
                 |-
                 |16    || не активируемые
                 |a      || активируемые
                 |-
                 |-
                 |32    || активируемые
                 |A      || не активируемые
                 |-
                 |-
                 |64    || не крафтящиеся
                 |c      || крафтящиеся
                 |-
                 |-
                 |128    || крафтящиеся
                 |C      || не крафтящиеся
                 |-
                 |-
                 |256    || не продаваемые
                 |s      || продаваемые
                 |-
                 |-
                 |512    || продаваемые
                 |S      || не продаваемые
                 |}
                 |}
|-
|-
|gv.supplies || количество припасов в плавании
|gv.godpower || количество праны
|-
|-
|gv.suppliesMax || максимальное количество припасов в режиме плавания
|gv.godpowerMax || максимальное количество праны
|-
|-
|gv.suppliesPrc || количество припасов в процентах  
|gv.godpowerPrc || количество праны в процентах  
|-
|-
|gv.cargo || содержимое трюма ковчега в плавании (строкой, включая квадратные скобки)
|gv.charges || количество зарядов
|-
|-
|gv.mileStones || количество столбов от столицы до героя в поле
|gv.inFight || герой находится в боевом режиме
|-
|-
|gv.poiMileStones || местоположение интересной точки на карте в столбах от столицы
|gv.inBossFight || герой находится в бою с босс-монстром (любым) или корованом
|-
|-
|gv.poiDistance || расстояние от героя до точки в столбах
|valign="top"|gv.fightType || тип боевого режима, возможные варианты:
                {| class="standard"
                |dungeon        || коридоры подземелья
                |-
                |sail          || режим плавания
                |-
                |spar      || тренировка
                |-
                |arena          || арена
                |-
                |multi_monster  || любой корован
                |-
                |monster        || любой другой боевой режим, или если боевой режим определился неверно
                |-
                |""            || если герой не в бою.
                |}
|-
|-
|gv.portDistance || расстояние до порта в режиме плавания
|gv.hasTemple || герой имеет достроенный храм
|-
|-
|gv.godpower || количество праны
|gv.hasArk || герой имеет достроенный ковчег
|-
|-
|gv.godpowerMax || максимальное количество праны
|gv.lastGuildChat || текст последних сообщений гильдчата (доступен только когда открыта и развернута вкладка гильдчата)
|-
|-
|gv.godpowerPrc || количество праны в процентах
|gv.dailyForecast || текст астропрогноза
|-
|-
|gv.auraName || название ауры, если она есть
|gv.expTimeout || количество минут до окончания штрафа возложения золота в храме (или 10080, если данных нет)
|-
|-
|gv.auraDuration || оставшаяся длительность ауры, если она есть (в секундах, но округляется до целых минут)
|gv.logTimeout || количество минут до гарантированного бревна в подземелье (или 10080, если данных нет)  
|-
|-
|gv.charges || количество зарядов
|gv.sparTimeout || количество минут до экспоносной тренировки (или 10080, если данных нет)
|-
|-
|gv.nearestTown || название ближайшего города
|gv.getSeconds || точное локальное время: секунды (0-59)
|-
|-
|gv.currentTown || название текущего города, если герой в нем, иначе - пустая строка
|gv.getMinutes || точное локальное время: минуты (0-59)
|-
|-
|gv.hasTemple || герой имеет достроенный храм
|gv.getHours || точное локальное время: часы (0-23)
|-
|-
|gv.hasArk || герой имеет достроенный ковчег
|gv.getDay || текущий день недели (1-7)
|-
|-
|gv.currentMonster || название монстра, если герой бьется с ним в поле, иначе - пустая строка
|gv.windowFocused || определяет, активна ли текущая вкладка браузера
|-
|-
|gv.chosenMonster || идет бой с монстром из настроенного списка избранных
|rowspan="41" valign="top"|Полевые переменные||gv.mileStones || количество столбов от столицы до героя в поле
|-
|-
|gv.specialMonster || идет бой со спец-монстром из настроенного списка префиксов
|gv.poiMileStones || местоположение интересной точки на карте в столбах от столицы
|-
|-
|gv.tamableMonster || идет бой с монстром, которого можно приручить (только если у героя нет питомца)
|gv.poiDistance || расстояние от героя до точки в столбах
|-
|-
|gv.wantedMonster || идет бой с монстром дня
|gv.auraName || название ауры, если она есть
|-
|-
|gv.petKnockedOut || питомец героя контужен
|gv.auraDuration || оставшаяся длительность ауры, если она есть (в секундах, но округляется до целых минут)
|-
|-
|gv.lastNews || текст строки из Вестей
|gv.bingoItems || количество подходящих в бинго трофеев в инвентаре
|-
|-
|gv.lastDiary || текст последней строки из дневника
|gv.bingoSlotsLeft || количество незаполненных слотов в бинго
|-
|-
|gv.lastDiaryVoice || текст последнего гласа другого бога из дневника (вернёт пустую строку, если в дневнике не видно ни одного чужого гласа)
|gv.bingoTriesLeft || количество оставшихся попыток заполнения
|-
|gv.lastGuildChat || текст последних сообщений гильдчата (доступен только когда открыта и развернута вкладка гильдчата)
|-
|-
|gv.questName || название квеста  
|gv.questName || название квеста  
Строка 234: Строка 249:
|-
|-
|gv.questProgress || прогресс выполнения квеста в процентах  
|gv.questProgress || прогресс выполнения квеста в процентах  
|-
|gv.sideJobName || название подряда
|-
|gv.sideJobDuration || длительность подряда в секундах
|-
|gv.sideJobProgress || прогресс выполнения подряда в процентах
|-
|gv.nearestTown || название ближайшего города
|-
|gv.currentTown || название текущего города, если герой в нем, иначе - пустая строка
|-
|gv.inShop || герой-торговец работает в своей лавке
|-
|gv.inTown || герой находится в городе
|-
|-
|gv.isGoingBack || герой идет из поля в город  
|gv.isGoingBack || герой идет из поля в город  
Строка 245: Строка 274:
|gv.isFishing || герой рыбачит (экспериментально, может очень ошибаться!)
|gv.isFishing || герой рыбачит (экспериментально, может очень ошибаться!)
|-
|-
|gv.bingoItems || количество подходящих в бинго трофеев в инвентаре
|gv.currentMonster || название монстра, если герой бьется с ним в поле, иначе - пустая строка
|-
|gv.chosenMonster || идет бой с монстром из настроенного списка избранных
|-
|gv.specialMonster || идет бой со спец-монстром из настроенного списка префиксов
|-
|gv.tamableMonster || идет бой с монстром, которого можно приручить (только если у героя нет питомца)
|-
|gv.wantedMonster || идет бой с монстром дня
|-
|gv.petKnockedOut || питомец героя контужен
|-
|gv.lastNews || текст строки из Вестей
|-
|-
|gv.bingoSlotsLeft || количество незаполненных слотов в бинго
|gv.lastDiary || текст последней строки из дневника
|-
|-
|gv.bingoTries || количество оставшихся попыток заполнения
|gv.lastDiaryVoice || текст последнего гласа другого бога из дневника (вернёт пустую строку, если в дневнике не видно ни одного чужого гласа)
|-
|-
|gv.dailyForecast || текст астропрогноза
|gv.voiceCooldown || время отката в секундах после гласа, который был услышан героем (уменьшается до 0)
|-
|-
|gv.arenaAvailable || доступен поход на арену  
|gv.arenaAvailable || доступен поход на арену  
Строка 269: Строка 310:
|gv.sailSendDelay || время до доступности заплыва в море (в секундах, но округляется до минут (равно 0, когда недоступно))  
|gv.sailSendDelay || время до доступности заплыва в море (в секундах, но округляется до минут (равно 0, когда недоступно))  
|-
|-
|gv.inFight || герой находится в боевом режиме  
|rowspan="15" valign="top"|Боевые переменные||gv.fightStep || номер шага в боевом режиме  
|-
|-
|gv.inBossFight || герой находится в бою с босс-монстром (любым) или корованом
|gv.lowHealth || низкий уровень здоровья в боевых режимах
|-
|gv.inShop || герой-торговец работает в своей лавке
|-
|gv.inTown || герой находится в городе
|-
|valign="top"|gv.fightType || тип боевого режима, возможные варианты:
                {| class="standard"
                |dungeon        || коридоры подземелья
                |-
                |sail          || режим плавания
                |-
                |spar      || тренировка
                |-
                |arena          || арена
                |-
                |multi_monster  || любой корован
                |-
                |monster        || любой другой боевой режим, или если боевой режим определился неверно
                |-
                |""            || если герой не в бою.
                |}
|-
|gv.fightStep || номер шага в боевом режиме
|-
|-
|gv.enemyHealth || суммарное здоровье противников в боевом режиме  
|gv.enemyHealth || суммарное здоровье противников в боевом режиме  
Строка 322: Строка 340:
|gv.alliesAliveCount || количество живых союзников  
|gv.alliesAliveCount || количество живых союзников  
|-
|-
|gv.lowHealth || низкий уровень здоровья в боевых режимах
|rowspan="6" valign="top"|Морские переменные||gv.supplies || количество припасов
|-
|-
|gv.expTimeout || количество минут до окончания штрафа возложения золота в храме (или 10080, если данных нет)
|gv.suppliesMax || максимальное количество припасов
|-
|-
|gv.logTimeout || количество минут до гарантированного бревна в подземелье (или 10080, если данных нет)
|gv.suppliesPrc || количество припасов в процентах
|-
|-
|gv.getSeconds || точное локальное время: секунды (0-59)
|gv.cargo || содержимое трюма ковчега (строкой, включая квадратные скобки)
|-
|-
|gv.getMinutes || точное локальное время: минуты (0-59)
|gv.portDistance || расстояние до порта в режиме плавания
|-
|-
|gv.getHours || точное локальное время: часы (0-23)  
|valign="top"|gv.sailConditions || показывает дополнительные условия карты (если условий несколько - они выводятся через запятую):
|-
                {| class="standard"
|gv.getDay || текущий день недели (1-7)
                |pois || все подсказки являются метками
|-
                |-
|gv.voiceCooldown || время отката в секундах после гласа, который был услышан героем (уменьшается до 0)
                |migration || нет зависимости силы тварей от расстояния до порта
|-
                |-
|gv.windowFocused || определяет, активна ли текущая вкладка браузера
                |double || все клады двойные
                |-
                |beasties || во всех кладах только твари
                |-
                |winds || ветер раскидывает ковчеги от порта
                |-
                |small || утыканное рыбами малое море и ограничение в 50 шагов на заплыв
                |-
                |fires || огромное количество маяков
                |-
                |locked || закрытая граница, выплыть можно только через порт
                |-
                |roaming || все рыбы в море бродячие
                |-
                |faststart || в начале заплыва уже есть несколько подсказок
                |-
                |multipass || острова можно посещать неоднократно
                |-
                |noempty || все острова непустые, но загадочные
                |-
                |reefs || в море множество рифов и практически отсутствуют морские твари
                |-
                |}
|}
|}



Версия от 13:42, 17 ноября 2018


Erinome Godville UI+ — расширение для браузеров, изначально основанное на Godville UI+, но получившее уже заметное количество отличий и дополнительных возможностей от оригинала.

Тема на форуме в квартале мастеровых: Erinome Godville UI+ - браузерное расширение для Годвилля (Firefox, Chrome, Opera).

_

Информеры

Дополнение может отслеживать различные события в жизни героя и выводить уведомления о них. Уведомление производится миганием иконки вкладки, и меткой в верхнем правом углу страницы. Дополнительно доступны всплывающие уведомления и звуковое уведомление.

Пользовательские информеры

Пользовательские информеры позволяют настроить уведомления на произвольный набор событий в игре.

Каждый информер описывается одной строкой в формате:

Текст уведомления | набор условий | тип информера и уведомлений

Информер можно временно отключить, убрав галочку в начале строки.

Начиная с версии 1.1.17.4 в тексте уведомлений можно использовать одиночные переменные. Они указываются отдельными словами - gv.variable, либо в фигурных скобках - {gv.variable}. Начиная же с версии 1.1.21.0 - в фигурных скобках можно указывать и целые логические выражения любой сложности. При изменении значений входящих в заголовки переменных, тексты информеров будут соответственным образом обновлены. Для информеров с переменными в названиях существует два дополнительных модификатора работы уведомления - см. в таблице ниже.

Несколько условий объединяются логическими операторами && (логическое «И»), || (логическое «ИЛИ») и группируются скобками. Доступно логическое отрицание «НЕ» !true = false

Также имеются другие операторы:

Операторы Описание Примеры
==, !=
<, <=
>, >=
равенство и неравенство
меньше и меньше или равно
больше и больше или равно
100 == 100 →‎ истина
"строка" != "другая строка" →‎ истина
100 > 200 →‎ ложь
~, ~* регистрозависимое и регистронезависимое регулярное выражение,
возвращает результат в виде массива или null, если совпадения нет
"здесь есть число 4 и буква Ё" ~ "число \\d+" →‎ ["число 4"]
"здесь есть число 4 и буква Ё" ~ "число (.*?) и" →‎ ["число 4 и", "4"]
!~, !~* инвертированная версия регистрозависимого и регистронезависимого регулярного выражения,
возвращает true или false
"здесь есть число 4 и буква Ё" !~ "число \\d+" →‎ ложь
"здесь есть число 4 и буква Ё" !~ "число 5" →‎ истина
A[x] извлечение элемента номер x из массива A (отсчет x ведется с нуля) ("здесь есть число 4 и буква Ё" ~ "число (.*?) и")[1] →‎ "4"
("здесь есть число 4 и буква Ё" ~ "число (.*?) и")[5] →‎ undefined
+, -
*, /
%
сложение и вычитание
умножение и деление
остаток от деления
100 + 200 →‎ 300
50 * "строка" →‎ NaN
1898 % 13 →‎ 0
+, -
!
преобразование строки к числу, изменение знака
логическое отрицание
+"50" →‎ 50
!"строка" →‎ ложь

Набор условий считается выполненным и активирует информер, когда итоговый результат преобразуем к истине:

Результат Примеры Описание
ложь 0, ""
false, null
undefined, NaN
ноль (как цифра), пустая строка, специальные значения,
которые могут принимать переменные и могут получиться
в результате применения операторов
истина - истиной считается всё, что не попадает под ложь
(в т.ч. включая пустые массивы)

Начиная с версии 1.1.17.4 тип информера кодируется комбинацией букв, соответствующих указанным в таблице модификаторам. Из соображений обратной совместимости старый тип кодирования суммированием по-прежнему работает.

Буква Код Название Описание
<никакая> 0 стандартный информер включается, когда условие активации информера выполняется, выключается - когда условие активации информера перестает выполняться
S 1 неотключаемый информер включается при выполнении условия активации информера, выключается - только когда пользователь кликнет на этот информер (или после перезагрузки страницы, когда условие перестает выполняться)
L 16 тип: стандартное уведомление мигание заголовком окна браузера и соответствующей вкладки, добавляет метку в углу страницы
D 32 тип: всплывающее уведомление отображается всплывающим окошком поверх всех окон
A 64 тип: звуковое уведомление звуковое оповещение согласно настройкам eGUI+
R 128 тип: повторяющееся звуковое уведомление звуковое оповещение, которое будет повторяться каждые несколько секунд (обратите внимание, что если тип "L" не включен, то данный тип будет работать как тип "A")
Q - мод: возобновимое уведомление имеет смысл только для информеров, имеющих в своем названии переменные; если информер был выключен пользователем (или не имел тип "L" и был отключен автоматически), а затем его текст изменился, то информер будет автоматически включен обратно
W - мод: настырное уведомление имеет смысл только для информеров, имеющих в своем названии переменные; если текст информера поменялся, то информер будет полностью перезапущен (что актуально для типов "D", "A" или "R")
N - мод: ненавязчивое уведомление имеющий смысл для стандартных информеров (L), модификатор типа N отключает мигание данного уведомления в заголовке окна, и оно только скромно висит в углу экрана
добавлен в версии 1.1.20.12.

Например, чтобы создать неотключаемый информер, уведомляющий миганием и всплывающим окном, необходимо указать тип: SLD (или, если вам нравится складывать числа, то 49 (1+16+32)).

Если модификаторы типа уведомления не указаны, то информер будет использовать набор уведомлений, выбранный для всех пользовательских информеров в общей таблице настроек информеров.

Переменные

Полный и актуальный перечень доступных переменных находится в файле FAQ на странице дополнения.

Примечание: с апреля 2016 года разработчиками игры было запрещено использовать в аддонах точные внутриигровые данные, поэтому начиная с версии 1.1.1.0 вся информация для переменных берется из общедоступных внешних источников, а некоторые значения, которые более недоступны в точном виде, теперь рассчитываются косвенно - следовательно, возможны неточности.

Готовые примеры


  1. «Кстати, помните активируемые былиноделы, сундуки со сказками и прочие довольно бесполезные куплетописи? Теперь при активации в городе эти трофеи заодно усиливают там влияние гильдии — совершенно задаром». «Богучёт», пост в блоге от 12.05.2017