В игре осень-зима 585 года от ПА Кейлим скорбит по своему владыке, напряжение растет между доменами Смерти и Тени, а на западе объявляется еще один претендент на корону Вальдена.
СЛУХИ И СОБЫТИЯ
Избранная цитата
нужны игрокам
Вверх
Вниз

Shadows of Old

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

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


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


Halbrand | human

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

1

ХАЛБРАНД | HALBRAND
эскорт и телохранитель княжны Дунадда

https://upforme.ru/uploads/001c/03/d9/254/962494.gif https://upforme.ru/uploads/001c/03/d9/254/691735.gif
tom mckay

26 | человек | Вальден

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

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

Когда ты растёшь в маленькой деревушке, в твоей жизни совсем мало примечательного. Халбранд родился именно в такой: единственный сын Гелета и его жены Тенар, которая не смогла (или не хотела) больше выносить детей. Родители никогда не рассказывали Халу, почему решили остаться в деревне. Гелет был кузнецом, да ещё каким — ковал оружие и броню для знати, когда-то даже служил в замке. Лишь однажды признался сыну, что нашёл в деревне покой и больше ему ничего и не нужно.

Хал не понимал отца, которому хватало наковальни да пива с тарелкой похлёбки. Мальчишка рос здоровым, полным жизни и сил. Лазал на деревья, дрался с друзьями, представлял, что палка — его меч, а сам он — великий воин, которому суждено спасти принцессу из башни. Когда мать отправляла его за зерном, а отец приказывал убраться в кузнице, Хал морщился и бормотал под нос, что вот вырастет и отправится в замок. Станет настоящим рыцарем.

В общем, как и все другие мальчишки.

Постепенно, как и полагается, мечты становились лишь мечтами. Хал всё проворнее обращался с молотом, сблизился с соседской дочкой, и мать не уставала напоминать ему, что пора бы и жениться. Может, и пора было. Отстроить свой дом, дать отцу отдохнуть, завести детей? Чем хуже, если кто-то из его друзей уже так и поступил? Единственное, что осталось от детских грёз — тренировки поздними вечерами, когда палка превратилась уже в деревянный меч.

Однажды для ночной тренировки Хал стащил меч, который они с отцом выковали для одного герцога. Когда лезвие содрало кору с дерева под восхищённый свист, за спиной Хала замелькали огни. Он успел домой вовремя, чтобы увидеть отца, закрывающего спиной испуганную мать. Неизвестные с факелами требовали золото. Отец забрал у Хала меч — самое ценное, что у него было.

Только вместо того, чтобы отдать меч разбойникам, Гелет поднял его на мужчин.

Хал очнулся в хижине, пропахшей жжёными травами настолько, что слезились глаза. А может — и не от трав вовсе. Память восстановилась не сразу: как мать кричала, чтобы он бежал в замок за помощью, как истекала кровью над телом отца. Как пламя охватило дом и уши закладывало от криков. Как один из неизвестных взял в руки меч отца. Как лошадь хрипела и спотыкалась на камнях. До замка он добрался слишком поздно. Вернувшись в деревню, обнаружил угли и мародёров.

Он долго требовал у лордов, чтобы разбойников нашли. Избил стражника, чтобы ворваться на совет, пересказал всё, что помнил. Ему сочувствовали, его наказывали. Хал жил у травницы, которая вытащила его с того света, и искал, искал, искал. Много пил и почти не спал из-за кошмаров. Когда понадобились деньги на снаряжение, попытался найти работу в кузнице: вместо этого работа нашла его сама, когда в подворотне он избил троих человек. Четвёртый привёл его на подпольные бои.

Хал больше не хотел быть доблестным рыцарем. Не хотел великих сражений. Всё, чего он желал — найти тех, кто лишил его дома, и отомстить, положив на это собственную жизнь.

Планы изменила одна случайная встреча с одной неслучайной княжной.

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

• Хал не владеет магией, никак не связан с чудесами и считает себя самым простым, глуповатым деревенским мальчишкой.
• Его настоящий отец — герцог Огион, один из опекунов княжны, о чём Хал пока не знает. Герцог обзавёлся бастардом по молодости и следил за его судьбой издалека.
• Набожный, молится Всевидящему Мечу, как научили родители.
• Талантливый кузнец, всю жизнь помогал отцу. Мечтал, что станет воином, но после нападения на деревню понял, что хотел бы в будущем отстроить свою кузницу.
• Хороший боец. Учился искусству боя тайком в деревне, но намного больше опыта получил уже потом, в реальном мире, через синяки, раны и переломы. Умеет обращаться с мечом и кинжалом, с тяжёлым оружием и без всякого вовсе. Слабоватый лучник.
• Немного разбирается в травах и врачевании. Чему-то научился у матери, чему-то, когда лечился у травницы.
• Может быть крайне упрям и принципиален. Защищать тех, кто защитить себя не может, отдать последнюю корку хлеба ребёнку на улице, вытащить из пожара застрявшую в доме собаку — в этом весь Хал.
• Любит азартные игры и редко когда откажется от выпивки.

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

• Защищать свою княжну и её свободу любой ценой, искать убийц родителей и последний меч, выкованный отцом.
• Табу нет.

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

• Считать пропавшим без вести.

Пример поста

Чтобы вытащить тяжеленное тело кузнеца из дома, пока Иренка принимается убирать следы погрома, требуются совместные усилия. Ян хватает Зденека за руки, Генри — за ноги. Пару раз они, будто случайно, задевают жирными боками кузнеца дверные косяки, переглядываются. В глазах читается радость, какой не было давно.

Они оба живы, почти здоровы. Выбрались и перебили мерзавцев. Как Генри и обещал.

К тому моменту, когда тело удаётся вытащить на улицу, Ян обливается потом. А ведь ночь стоит прохладная.

— Сначала проклятые мешки заставил меня таскать, теперь его самого приходится… Сволочь какая, — с надрывом ворчит Ян, отпуская руки кузнеца, чтобы размять ноющую поясницу, — Клянусь, после этой ночи я в руки ничего тяжелее бокала вина брать больше не собираюсь!

Генри улыбается, и Ян наигранно закатывает глаза.

Тут к ним выбегает Барбос. Начинает носиться кругами, обнюхивать, лаять. За псом выбегает мальчишка.

— Пёсик, постой!

На улице до сих пор валяется истёкший кровью Любош, а теперь рядом с ним и кузнец. Не самая жизнерадостная картина, хотя — как посмотреть, в этом месте, кажется, давно мечтали её увидеть. Ян перепрыгивает через трупы, пытается закрыть вместе с Генри от мальчонки, но тот даже не удивляется.

— Я же говорил тебе ждать, пока не скажу! — мягко укоряет Ян и опускается на корточки, чтобы оказаться на одном уровне с ребёнком.

— Простите, дяденька… Пёсик сам выбежал, да и, ну…. — мальчишка тянет шею, пытаясь заглянуть за их спины, — Они — того?

Ян косится на Генри, а потом кивает. Мальчишка вдруг начинает улыбаться.

— А я знал, что у вас получится! Ры-ыцари!

Из дома выглядывает Иренка — подпоясанная, с охапкой окровавленной соломы в руках, которую выкидывает в сторону. Аккуратный нос чуть красный, большие глаза тоже, но к девчонке уже вернулась бодрость. Она забирает ведро да пару поленьев.

— Матей! — кричит Иренка сурово, заметив мальчишку, — А ну под ногами не крутись, бегом домой! Трепаться можешь, авось и помогать дорос уже.

Ян выпрямляется, рукой привлекает внимание девицы, а потом показывает на трупы за собой.

— А этих-то куда?

— Да хоть псу скормите… — злобно отвечает Иренка, но, вздохнув, смягчается, — Оттащите в сторону. Завтра мужики займутся, уж темень на дворе.

Так они и делают, а потом возвращаются в дом, где падают на лавку друг рядом с другом. Меч Генри стоит, прислонённый к стене. Нож валяется рядом, сломанного арбалета уже нет. Яну страшно хочется опустить голову на плечо Генри, да уснуть и не просыпаться до завтрашнего вечера, но он упрямо, хоть и со скрипом держится. Иренка ставит перед ними две миски щей.

— Холодное уже всё, да что есть, — невозмутимо говорит девица и разламывает на две части ещё и ломоть хлеба.

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

Иренка, тем временем, успевает осмотреть грудь и лицо Генри, делает это молча и со всей серьёзностью. Оказывается, научилась кое-чему у лекаря, когда тот был жив, да помогала мужикам. Генри в порядке: промыть бы раны хорошенько, да наложить травяную повязку.

Когда девица дотрагивается до носа Яна, он айкает.

— А вы точно рыцарь-то? — спрашивает Иренка, — Даже не сломан.

— А спина? Спина страшно болит от натуги… Что делать-то?

— Трудиться почаще!

Пока Генри едва не давится смехом, Ян насупливается. И чего им всем дался этот труд? Не каждый, в конце концов, для него рождён. Посмотрел бы он, как они с панскими делами разбирались бы…

— Ступайте в дом Зденека, у меня вас и положить негде. Выглядите вы, страх… К утру натаскаем воды горячей в лохань.

И все обиды Яна почти сразу забываются.

+5

2

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

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

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

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

function fillStripes(stripes, userId) {
    document.getElementById('stripeContainer').innerHTML = stripes
        .filter(stripe => (stripe.allowed.includes("all") || stripe.allowed.includes(userId)))
        .map(stripe => labelStripe("profileStripeLabel", "profileStripe", stripe.src, stripe.descr)).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, event.data.userId);
});
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.parent.postMessage({ eventName: 'profileFillingRequest' }, "*");

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}'><b>${cyrillicName}</b></a>, ${profileDescrName}`;
       
        if (document.getElementById('hrAdd').checked) {
            profileForm += '<hr>';
        } else {
            profileForm += '<br>';
        }
       
        const profileAdd = document.getElementById('addDescr').value;
        const profileAddNotFilled = profileAdd == '' || profileAdd == `любое описание на ваш вкус <a href='ссылка на анкету персонажа'><b>имя на кириллице</b></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 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}'><b>${cyrillicName}</b></a>, ${profileDescrName}`;
   
    if (document.getElementById('hrAdd').checked) {
        profileForm += '<hr>';
        } else {
            profileForm += '<br>';
        }   
    const profileAdd = document.getElementById('addDescr').value;
    const profileAddNotFilled = profileAdd == '' || profileAdd == `любое описание на ваш вкус <a href='ссылка на анкету персонажа'><b>имя на кириллице</b></a>`;
    if (!profileAddNotFilled) {
        profileForm += profileAdd;
    }

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

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

updateProfilePreview();
</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="profile" 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='ссылка на анкету персонажа'><b>имя на кириллице</b></a></textarea>
</div>

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

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

<style>
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(--pinkBorder);
    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(--pinkBorder);
    background: var(--lightBG);
    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(--pinkBorder);
    color: #fff;
}

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

label.fillingCategoryRadio {
    cursor: pointer;
}

.mainInstruction, .profileInstruction { display: none; }
.fillingCategoryRadio:has(#main:checked) ~ .mainInstruction {
    display: block !important;
}
.fillingCategoryRadio:has(#profile:checked) ~ .profileInstruction {
    display: block !important;
}

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

.profileStripeLabel img { border-radius: 3px; }

.profileStripeLabel input { display: none; }

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

.stripeDescr {
    color: rgb(0 0 0 / 51%);
    padding: 0px 0px 3px 0px;
}

div#stripeContainer {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
}

</style>
[/html]

0


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


Рейтинг форумов | Создать форум бесплатно