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

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

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

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

Shadows of Old

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

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


Вы здесь » Shadows of Old » Анкетирование » Quad | human


Quad | human

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

1

КУАД | QUAD
Рыцарь гвеннитского ордена Тайных

https://upforme.ru/uploads/001c/03/d9/290/148617.webp https://upforme.ru/uploads/001c/03/d9/290/766777.gif
Jeremy Renner

32 | человек | Рионна

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

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

Куад – четвёртый сын и пятый ребенок в семье рыбака. В силу небольшой разницы в возрасте с детства рядом с ним чаще всего была младшая сестра Идалия. Именно с ней, в первую очередь, он делил книги, секреты и наказания.
Их семья не была особенно религиозной, отец относился к вере равнодушно и без рвения. Лишь бабушка тайком учила Куада и Идалию читать по молитвенным книгам. Именно тогда знакомство с учением Гвенны стало для него первым осознанным выбором.
Магический дар проявился у него лет в одиннадцать – слабый, но достаточный, чтобы его, несмотря на бедность семьи, забрали на обучение в Орден Тайных при церкви. Там он провёл двенадцать лет. Тренировки, казарма, дисциплина. Он не был самым талантливым учеником, зато оказался самым упорным. Пока другие пользовались редкими выходными, он чаще оставался тренироваться. Не из фанатизма – просто иначе не умел.
Смерть старшего брата на наёмничьей службе сильно его изменила. Куад стал серьёзнее, осторожнее, внимательнее к тем, кто рядом. У него появилось стойкое ощущение, что если он может что-то предотвратить — должен попытаться. Это касается и службы, и семьи.
Не любит длинных разговоров о чувствах, зато умеет слушать. В юности часто мирил Идалию с отцом, сглаживал конфликты. Сейчас он по-прежнему старается быть для неё опорой, даже если понимает, что она давно справляется сама. Он волнуется за сестру больше, чем хотел бы показывать, и иногда чрезмерно её оберегает.
Рыцарем без страха и упрека его не назвать, ему не чужды обычные человеческие слабости: может задержаться в таверне или борделе, выпить лишнего с другом, ввязаться в спор или хорошую кулачную драку.
Не стремится к славе и не считает себя героем. Он просто привык доводить начатое до конца. Если решит отправиться в опасный поход к гулям в пасть – значит, так нужно. Переубеждать его в такие моменты бесполезно. Упрямство – их семейная черта.

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

• Обучен обращению с кинжалом и рукопашному бою, но его основной инструмент – меч.
В магии главная специализация – защита и исцеление. На достаточно высоком уровне владеет защитой плоти, причем как в отношении себя, так и других.
Защиту разума знает не так хорошо, однако способен справиться с не слишком продвинутыми иллюзиями или очарованиями, при этом защищать чужой разум пока удается куда хуже собственного. 
Владеет исцелением: способен остановить кровотечение, закрыть рану, стабилизировать тяжелораненого, чтобы тот не умер ближайшее время.
Атакующие заклинания ему доступны в крайне ограниченном объёме, и больше связаны со школой трансмутации, а именно с изменением, например, может усилить или ослабить клинок магическим импульсом, сделав тот прочнее или, напротив, более хрупким. Но на этом его способности и заканчиваются.
Больше всего полагается на жесты, так как в бою это куда быстрее слов, хотя в спокойной обстановке может прибегнуть и к заклинаниям.

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

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

Пример поста

Таверна «Подкова» встретила их с Агнаром привычным запахом подгорелого лука и звуками крольчатины, булькающей в котелке над очагом.
Ее владелец, толстяк Эрфар, который напоминал неуклюжей манерой двигаться миниатюрного тролля, знакомо улыбнулся щербатым ртом и с удвоенным усердием приложился к пивной кружке, пробуя напиток на вкус и проверяя, не прокис ли тот. Учитывая, что подобную процедуру он делал чаще, чем подкладывал дрова в очаг, прокисание пиву явно не грозило.
- Работу никто не искал? – спросил у него Эвальд, подходя к огромной пивной бочке, вместимостью, наверно, тунн пять и служившей Эрфару столом.
Хозяин покачал головой и вернулся к разговору, который за последние несколько дней они вели уже не первый раз.
- Говорю ж, людей-та вы не найдети. У нас, может, и не город-та, но зато сытно-та и спокойно-та. И никто в здравом уме-та не пойдеть в город-та.
Эвальд в ответ лишь вздохнул. Ему и самому нынешний поход начинал казаться безумием.
Это был не первый купец, которого он сопровождал в Эйдорф. Но именно этот переход оказался самым неудачливым. Решение купца уйти от старого тракта, на котором в последний год промышляли разбойники, завело их вглубь леса, к развалинам деревушки, чье название теперь уже было и не вспомнить. А где развалины – там и живые мертвяки, это любому ребенку известно.
Отбиться от мертвяков, конечно, удалось. Да только и те успели их изрядно потрепать. Их с Агнаром отряд потерял двоих.
Рикольв – молодой стражник, нанялся к ним с месяц назад. Говорил, хочет заработать золота для своей беременной жены… Теперь его, лежащего с разорванным горлом где-то в глубинах Синего леса, жена вряд ли дождется.
Но эта утрата была несравнимой с утратой второго члена их отряда. Герайнт был еще той занозой. Склочный, жадный, сующий нос куда не надо, но он обладал талантом, перекрывающим все его недостатки – он был лекарем…
Впрочем, потери их отряда были куда меньше, чем потери остальных. Из-за проклятых мертвяков, чтобы им прахом рассыпаться, от нанятой купцом Равнсвартом в городе охраны осталось примерно две трети. И треть от них сейчас валялась в повязках на ночлежном дворе, едва имея силы выйти до ветру.
Именно поэтому Равнсварт уже третий день задерживался в Эйдорфе, пытаясь нанять новых людей. Вот только никого, кроме парочки крестьянских парней, не державших в руках ничего острее дубины, не нашлось. И единственное, на что те были способны, это пополнить количество погибших в этом переходе.
- Что скажем Равнсварту? – спросил Агнар, почесывая заросшую щетиной щеку. В ответ Эвальд неопределенно пожал плечами.
- Скажем, что людей нет. Придется идти с тем, кто имеется, - отозвался он. – Если только он не намерен сидеть в этой дыре до первых «белых мух».
Владелец таверны снова приложился к кружке, смачно причмокивая от удовольствия, и покосился одним глазом на наемников.
Уловка сработала.
- Налей и нам что ли, напоследок, - не выдержал Эвальд, сглатывая слюну, и обернулся к пустым столам, выбирая место поудобнее.
В это время дня большинство обитателей деревни были в поле. Ранняя осень – пора сбора урожая, где им в таверне прохлаждаться. А остальных посетителей и не наблюдалось.

+9

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 » Анкетирование » Quad | human