Шрифт в постах

Стиль оформления

Дополнительно

Размер элементов форума
вверх
вниз

Shadows of Old

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Shadows of Old » Анкетирование » Liara ní Éilíreán | ayre


Liara ní Éilíreán | ayre

Сообщений 1 страница 2 из 2

1

Лиара ни Элиран | Liara ní Éilíreán
Архивист, летописица

https://upforme.ru/uploads/001c/03/d9/270/t339700.jpg

Liv Tyler

90 | айре/двудушник | Дал Кейта

••••••••••••••••••••••••••••••••••••••••••••

Образ персонажа

• Дитя любви и порядка - вот что можно сказать о юной Лиаре, младшей дочери Айдрена и Элираны. Мудрый отец, заботливая мать, любящие братья - только старший немного мамы дичится, но это не так важно. Она среди своих, окружена теплом и доверием. Только маловато друзей, как и сверстников вообще. Она спрашивает - почему? И папа усаживает дочку на колени, раскрывает книгу и начинает читать. Потом рассказывает о дедушке и бабушке, о маме Наира - и девочка плачет, чувствуя еще не отжившую боль отца.
Солнечное сияние детства быстро осушает слезы и разогревает любопытство. Став немного старше, Лиара интересуется уже не легендами и семейными преданиями. После уроков ее все чаще видят в архивах и библиотеке, где девочка берет старые летописи, вычитывает, что-то выписывает. Вскоре она много знает об истории драконов и их потомков, а в комнате в отдельной шкатулке лежит кипа листов, испещренных цифрами и расчетами, нарисованными цветной тушью графиками. Однажды она придет к отцу, покажет свою работу и спросит - неужели конец неизбежен? Все ее расчеты говорят о потерях, об упадке и деградации. Айдрену придется постараться, чтобы вселить в дочь какую-то уверенность в завтрашнем дне.
Лиара берется за странную работу. Она еще учится, но находит время бывать у старших, расспрашивать их о той жизни, что была раньше, скрупулезно все записывать. Часть знаний они однозначно потеряли с теми, кого не стало во времена Катастрофы, и еще часть чего-то “неважного и ненужного” могут потерять, если старшие уйдут так же внезапно, от болезни, от скверны, просто под горы. Ей хочется сохранить все, вплоть до мелочей, до узоров над детской колыбелью. Она добавляет записи в архив, а заодно с математической четкостью структурирует имеющийся.
С этой же целью Лиара побывала в Дал Ангре, отправила письмо в Дал Ри, испрашивая разрешения у лорда Аннара побывать там и записать все, что получится, спускалась в Подгорье. Красота пещер произвела на девушку неизгладимое впечатление, и вернулась она только потому, что хотела оставить свои записи - а еще не готова была расстаться с семьей. Часто Лиара грустит по тем местам, но считает, что туда она всегда успеет. Впереди вечность.
Вечность окончилась десять лет назад, когда не стало отца. Он казался незыблемой константой существования мира, но ушел. И мир, внезапно, остался стоять на месте, как будто и не заметив, что не стало самого лучшего, самого мудрого, самого любящего… Юная айре была безутешна больше трех лет и с трудом и помощью матери и братьев вернулась к заброшенным делам и занятиям. Снова написала владыке дальнего анклава, наконец-то добившись разрешения, пусть и пообещав, что не увезет записи из Дал Ри. На эту работу ушел не один год, и вернулась девушка только к сентябрю 585 года. Она не жалела, что оставила книги в чужом анклаве - главное, что они есть. Зато она привезла с собой друга. Высокий чернокожий парень с кристально-белыми волосами и замысловатой короной белых рогов смотрел на юную летописицу влюбленным взглядом и готов был уехать не только в другой анклав, но и за Великотравье. Они знакомились с Дал Кейтой, она - заново, он - удивленно. Особенно удивленно смотрел издалека на племянников Лиары, приезжавших к старейшине. В Дал Ри он никогда не видел людей, пусть и только наполовину.
Но осень выдалась странная.
Тревога, поселившаяся в Аравеле, мало беспокоила юную волшебницу. Она жила в своем мире, уютном и защищенном, только любимый брат стал выглядеть напряженней. Переживая за него, она переживала и за судьбу людей в долине. Возможно, им правда лучше уехать. Всем так будет спокойнее.
Но были у девушки и свои поводы для беспокойства. Сперва начали сниться сны - чудесные, полные восторга и силы полета. Потом они стали приходить и наяву. Лиара забеспокоилась, но пока никому ничего не говорила. Может, она просто устала, может, побыв дома подольше, она придет в норму. Тем более что случилось невероятное - вернулась Дал Хенна! Архивистка тут же пошла к брату спрашивать, поедут ли жители анклава в гости к новоявленным родичам, и если да, не будет ли Наир против, чтобы она отправилась с посольством? Как же тут рассказывать про тихий, явно женский шепот в голове? Брат разволнуется и не отпустит. Знал только Эйвэр мак Шенан (Éibhear mac Senán), ее друг с севера.
• Весьма прилично владеет магией Воздуха, Воды и Очарования. Последним пользуется, чтобы запоминать самой и помогать вспоминать своим собеседникам, вообще углубилась в тему памяти и управления ею. Параллельно со своей работой ведет исследования в этом направлении, но тратит на них, по мнению настоящих ученых, непозволительно мало времени. Игнорирует. Продолжает. Добилась интересных результатов.

Дополнительная информация

• У Лиары разум математика, она сильна в статистике и аналитике, видит закономерности даже там, где их сложно отследить. А иногда и заподозрить.
• Несмотря на стереотип ученого, архивиста, абсолютно социализирована. У нее достаточно друзей, которым она активно травит байки в таком формате, чтобы было интересно; легко заводит новые знакомства; любопытна, обладает развитой эмпатией.
• Использует молнии как фейерверки, рисуя в ночном небе сказочные картины, явно напоминающие кристаллические сады Подгорья.
• Прошла начальное обучение владению оружием, носит при себе рапиру и умеет ею пользоваться. Воин не фонтан, но иногда сталь надежнее магии, а путешествовала Лиара достаточно, чтобы в этом убедиться.
• Дракон, ставший соседом души Лиары, - ее прародительница Ройвне. Стремительная, изящная драконица с серебристой чешуей, синими перьями в крыльях. Меж четырех прямых, как будто "зачесанных" назад рогов мелькают синие искры. Ройвне повелевает Воздухом, дышит молниями и ветром.

Планы игру, пожелания по сюжетам и игровые табу

• Хочу найти таких же, как я, наследников духа драконов, показать культистам, в чем они были неправы, собрать все-все летописи Дал Хенны (и все приключения там же), ну и познакомиться с Ройвне (логично же, что мне достался дух моей прародительницы?)
• В рамках сюжета играю все.

Что делать с вашим персонажем в случае ухода с проекта

• Использовать можно на усмотрение администрации.

Пример поста

Вокруг загомонили, одобряя пикантную подробность и поздравляя капитана с благосклонностью жрицы, но кто-то все-таки вспомнил, что аллоритки мантий не носят, и гомон стал более заинтересованным. Лем самодовольно осклабился, дразня собутыльников и команду, и ответил только новому знакомому, почуяв, что тот отчего-то не слишком доволен. Дразниться захотелось еще больше!
— Это было незабываемое приключение, — восторженно заверил Клемент, игнорируя недобрый намек в словах. — Случилось оно не где-нибудь, а в саду храма Гвенны! У них дивный сад, скажу я вам, друзья, и ночами, в свете луны, он выглядит особенно привлекательно. А уж как хороши там женщины, ммм!
Ему все-таки хватило ума не упоминать ни имени, ни сана прекрасной гвеннитки. Все-таки болтать о женщинах хоть и приятно, но стоит быть благородным человеком и не ставить репутацию этих женщин под угрозу. Тем более таких женщин. Во-первых, врожденное благородство требовало позаботиться о даме, которая выручила Лема, имея полное право его утопить. А во-вторых, ссориться с настоятельницей храма Гвенны не рекомендовалось вообще никому. Она же и обидеться может!
— И вот там, лежа на мягкой травке и любуясь звездами, — особенно теми, что тогда перед глазами мелькали. — Я и был удостоен непостижимого зрелища!
Словивший от Сияющей канделябром Адар почти ничего не запомнил, кроме того, что материи под подолом хватило бы еще на дюжину рубашек для бедняцких детишек, но кому это интересно, правда? В таком виде байка о, кхм, тайном проникновении звучала определенно интереснее, и даже команда, знавшая о похождениях капитана, заинтересованно навострила уши. Мало ли что они в курсе! Кэп врал красиво, не грех и послушать.

Отредактировано Liara ni Eilirean (2025-12-07 17:22:13)

Подпись автора

Вечерняя звезда светит ярко

Маски

+4

2

Вы приняты, добро пожаловать!

Коды для заполнения (следующим сообщением в теме анкеты):
Заполните поля во вкладках "Основа", "Профиль", "Плашка", "Фон" и нажмите на кнопку "Скопировать код" ниже, чтобы скопировать заполненные шаблоны.

[html]
<script>
// --------- FILL BACKGROUNDS ------------

function labelBg(className, nameCategory, src) {
    return `<label class="${className}"><input type="radio" name="${nameCategory}" id="${src}" onchange="updateProfilePreview()"><img src="${src}" loading="lazy"> </label>`;
}

function fillBgs(bgs) {
    document.getElementById('bgContainer').innerHTML = bgs
        .map(bg => labelBg("profileBgLabel", "profileBg", bg)).join('');
}

// --------- FILL STRIPES ------------

function labelStripe(className, nameCategory, src) {
    return `<label class="${className}"><input type="radio" name="${nameCategory}" id="${src}" onchange="updateProfilePreview()"><img src="${src}"> </label>`;
}

function fillStripes(stripes) {
    document.getElementById('stripeContainer').innerHTML = stripes
        .map(stripe => labelStripe("profileStripeLabel", "profileStripe", stripe)).join('');
}

// --------- USER DATA ------------

let userLatinName = '';
let userProfileUrl = '';
let userApplicationFormUrl = '';

window.addEventListener("message", (event) => {
    if (!event.origin.match(/oldshadows\.rusff\.me$/)) return;
    if (event.data.eventName != 'profileFillingResponce') return;
    userLatinName = event.data.userLatinName;
    userProfileUrl = event.data.userProfileUrl;
    userApplicationFormUrl = event.data.userApplicationFormUrl;
    fillStripes(event.data.stripes);
    fillBgs(event.data.backgrounds);
});

window.addEventListener("message", (event) => {
    if (!event.origin.match(/oldshadows\.rusff\.me$/)) return;
    if (event.data.eventName != 'fontChange') return;
    $('.post-content p, .post-content div').css('font-size', event.data.fontSize + 'px');
});

const sendProfileRequest = () => {
    window.parent.postMessage({ eventName: 'profileFillingRequest' }, "*");
};
sendProfileRequest();
const intervalId = setInterval(sendProfileRequest, 1000);
window.addEventListener("message", (event) => {
    if (!event.origin.match(/oldshadows\.rusff\.me$/)) return;
    if (event.data.eventName === 'profileFillingResponce') {
        clearInterval(intervalId);
    }
});

function copyResults() {
    let copyContent = '';
   
    // -- форма внешности --
    const actorName = document.getElementById('actor').value;
    if (actorName) {
        const actorForm = `${actorName} — ${String.fromCharCode(91)}url=${userProfileUrl}${String.fromCharCode(93)}${userLatinName}${String.fromCharCode(91)}/url${String.fromCharCode(93)}`;
        copyContent += `Форма внешности: 
${String.fromCharCode(91)}code${String.fromCharCode(93)}${actorForm}${String.fromCharCode(91)}/code${String.fromCharCode(93)}`;
    }

    // -- форма заполнения профиля --
    const cyrillicName = document.getElementById('cyrillicName').value;
    if (cyrillicName) {
        const profileDescrName = document.getElementById('mainDescr').value;
        let profileForm = `<a href='${userApplicationFormUrl}'>${cyrillicName}</a>, ${profileDescrName}`;
       
        if (document.getElementById('hrAdd').checked) {
            profileForm += '<hr>';
        } else {
            profileForm += '<br>';
        }
       
        const profileAdd = document.getElementById('addDescr').value;
        const profileAddNotFilled = profileAdd == '' || profileAdd == `любое описание на ваш вкус <a href='ссылка на анкету персонажа'>имя на кириллице</a>`;
        if (!profileAddNotFilled) {
            profileForm += profileAdd;
        }
       
        copyContent += `\n\nФорма профиля:
${String.fromCharCode(91)}code${String.fromCharCode(93)}${profileForm}${String.fromCharCode(91)}/code${String.fromCharCode(93)}\n\n`;
    }

    // -- форма плашки --
    const stripeForm = Array.from(document.getElementsByName('profileStripe'))
        .filter(element => element.checked)
        .map(element => element.id)
        .join('');

    if (stripeForm) {
        copyContent += `Плашка:
${String.fromCharCode(91)}img${String.fromCharCode(93)}${stripeForm}${String.fromCharCode(91)}/img${String.fromCharCode(93)}\n\n`;
    }

        // -- форма фона --
    const bgForm = Array.from(document.getElementsByName('profileBg'))
        .filter(element => element.checked)
        .map(element => element.id)
        .join('');

    if (bgForm) {
        copyContent += `Фон:
${String.fromCharCode(91)}img${String.fromCharCode(93)}${bgForm}${String.fromCharCode(91)}/img${String.fromCharCode(93)}\n\n`;
    }

    // -- форма списка ролей --
    const listsDescription = document.getElementById('listsDescription').value;
    if (cyrillicName && listsDescription) {
        const listsForm = `${String.fromCharCode(91)}url=${userProfileUrl}${String.fromCharCode(93)}${cyrillicName}${String.fromCharCode(91)}/url${String.fromCharCode(93)} — ${listsDescription}`;
        copyContent += `Список ролей:
${String.fromCharCode(91)}code${String.fromCharCode(93)}${listsForm}${String.fromCharCode(91)}/code${String.fromCharCode(93)}\n\n`;
    }

    window.parent.postMessage({
        eventName: 'profileCopyInfoRequest',
        copyData: copyContent.trim() // Удаляем лишние переносы в конце
    }, "*");
};

document.getElementById('instructionResult').onclick = copyResults;

// --------- post user profile update ------------
function updateProfilePreview() {
    const cyrillicName = document.getElementById('cyrillicName').value ?? userLatinName;
    const profileDescrName = document.getElementById('mainDescr').value;
    let profileForm = `<a href='${userApplicationFormUrl}'>${cyrillicName}</a>, ${profileDescrName}`;
   
    if (document.getElementById('hrAdd').checked) {
        profileForm += '<hr>';
        } else {
            profileForm += '<br>';
        }   
    const profileAdd = document.getElementById('addDescr').value;
    const profileAddNotFilled = profileAdd == '' || profileAdd == `любое описание на ваш вкус <a href='ссылка на анкету персонажа'>имя на кириллице</a>`;
    if (!profileAddNotFilled) {
        profileForm += profileAdd;
    }

    const stripeForm = Array.from(document.getElementsByName('profileStripe'))
        .filter(element => element.checked)
        .map(element => element.id)
        .join('');

    const bgForm = Array.from(document.getElementsByName('profileBg'))
        .filter(element => element.checked)
        .map(element => element.id)
        .join('');

    window.parent.postMessage({
        eventName: 'profileDemo',
        profileDescr: profileForm,
        stripe: stripeForm,
        background: bgForm
    }, "*");
}

updateProfilePreview();

window.addEventListener("message", (event) => {
    if (!event.origin.match(/oldshadows\.rusff\.me$/)) return;
    if (event.data.eventName != 'fontChange') return;
    $('.post-content p, .post-content div').css('font-size', event.data.fontSize + 'px');
});

window.addEventListener("message", (event) => {
    if (!event.origin.match(/oldshadows\.rusff\.me$/)) return;
    if (event.data.eventName != 'styleChange') return;
    $("body").attr("class", event.data.style);
});
</script>

<div class="fillingForm">
<label class="fillingCategoryRadio"><input type="radio" id="main" name="fillingCategoryRadio" checked /> <span>Основа</span></label>
<label class="fillingCategoryRadio"><input type="radio" id="profileF" name="fillingCategoryRadio" /> <span>Профиль</span></label>
<label class="fillingCategoryRadio"><input type="radio" id="stripesF" name="fillingCategoryRadio" /> <span>Плашка</span></label>
<label class="fillingCategoryRadio"><input type="radio" id="bgsF" name="fillingCategoryRadio" /> <span>Фон</span></label>

<div class="instructionBlock mainInstruction">
<h2 class="instructionHeading">Основа</h2>
<label for="cyrillicName" class="labelDescr">Имя (кирилица):</label>
<input type="text" id="cyrillicName" name="cyrillicName" placeholder="кириллица" oninput="updateProfilePreview()">

<label for="actor" class="labelDescr">Внешность (латиница):</label>
<input type="text" id="actor" name="actor" placeholder="если не нужно, оставьте поле пустым">

<label for="listsDescription" class="labelDescr">Описание для списка ролей:</label>
<input type="text" id="listsDescription" name="listsDescription" placeholder="род деятельности, занятость">
</div>

<div class="instructionBlock profileInstruction">
<h2 class="instructionHeading">Описание в профиль</h2>
<label for="mainDescr" class="labelDescr">Описание в профиль:</label>
<input type="text" id="mainDescr" name="mainDescr" value="возраст, раса, род деятельности" oninput="updateProfilePreview()">

<label for="hrAdd" class="hrAdd">
<input type="checkbox" id="hrAdd" name="hrAdd" onchange="updateProfilePreview()" />
<span>Добавить полосу между секциями</span>
</label>

<label for="addDescr" class="labelDescr">При желании можете добавить в профиль пару, красивую цитату, важного родственника, врага и тому подобное через это поле. Если не нужно, оставьте его пустым или не меняйте:</label>
<textarea id="addDescr" oninput="updateProfilePreview()" name="addDescr" rows="4">любое описание на ваш вкус <a href='ссылка на анкету персонажа'>имя на кириллице</a></textarea>
</div>

<div class="instructionBlock stripeInstruction">
<h2 class="instructionHeading">Плашки</h2>
<div id="stripeContainer"></div>
</div>

<div class="instructionBlock bgInstruction">
<h2 class="instructionHeading">Фоны</h2>
<div id="bgContainer"></div>
</div>

<div class="formButtons">
<input type="button" id="instructionResult" value="Скопировать код">
</div>
</div>

<style>
body { color: var(--text1); }

h2.instructionHeading {
    font-size: 16px;
    font-family: 'Palatino Linotype';
    font-weight: bold;
    letter-spacing: 1px;
}

.labelDescr {
    display: block;
    margin: 9px 0px 1px 0px;
}

.fillingForm { text-align: center; }

.instructionBlock {
    text-align: left;
    margin: 10px 0 !important;
    padding: 14px 14px 12px 14px !important;
    border: 1px solid var(--borders);
    background: var(--qBG);
    border-radius: 4px;
}

.instructionBlock input[type="text"] {
    width: calc(100% - 10px);
}

label.hrAdd {
    margin: 10px 0 0 0;
    display: block;
}

input#hrAdd  {
    accent-color: var(--darkpinkText);
}

label.fillingCategoryRadio {
    border-radius: 16px;
    border: 1px solid var(--borders);
    background: var(--beg300);
    padding: 2px 6px;
    display: inline-block;
    margin: 0px 4px 5px 0px;
}

.instructionBlock textarea {
    width: calc(100% - 10px);
    resize: vertical;
}

label.fillingCategoryRadio:has(input:checked) {
    background: var(--borders);
    color: var(--text1);
}

.fillingCategoryRadio input[type="radio"] {
    display: none;
}

label.fillingCategoryRadio {
    cursor: pointer;
}

.mainInstruction, .profileInstruction, .stripeInstruction, .bgInstruction { display: none; }
.fillingCategoryRadio:has(#main:checked) ~ .mainInstruction { display: block !important; }
.fillingCategoryRadio:has(#profileF:checked) ~ .profileInstruction { display: block !important; }
.fillingCategoryRadio:has(#stripesF:checked) ~ .stripeInstruction { display: block !important; }
.fillingCategoryRadio:has(#bgsF:checked) ~ .bgInstruction { display: block !important; }

.profileStripeLabel, .profileBgLabel {
    margin: 5px 5px;
    display: inline-block;
    width: 180px;
    border-radius: 5px;
    padding: 5px;
    background: rgb(255 255 255 / 17%);
}

.profileStripeLabel img, .profileBgLabel img { border-radius: 3px; }
.profileBgLabel img {
    width: 180px;
    height: 40px;
    object-fit: cover;
    object-position: top;
}

.profileStripeLabel input, .profileBgLabel input { display: none; }

.profileStripeLabel:has(input:checked), .profileBgLabel:has(input:checked) {
    background: rgb(0 0 0 / 12%);
}

div#stripeContainer, div#bgContainer  {
    align-items: baseline;
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    align-content: flex-start;
    height: 190px;
    overflow-x: auto;
    overflow-y: hidden;
}

</style>
[/html]

0


Вы здесь » Shadows of Old » Анкетирование » Liara ní Éilíreán | ayre