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

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

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

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

Shadows of Old

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

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


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


Lothar Lichtner | vampire

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

1

Лотар Лихтнер/Хозяин Ночи | Lothar Lichtner
контрабандист, разбойник, страж Амад Зарра

https://upforme.ru/uploads/001c/03/d9/280/666943.png

внешность

46 лет | вампир | Кейлим

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

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

539 год
Рождение Лотара Лихтнера.
Отец — Интисар, вальденский целитель и глава преступной организации.
Мать — дочь безземельного рыцаря.

539–553 годы (0–14 лет)
Лотар рос с матерью в деревенской усадьбе.
По инициативе отца обучался грамоте, чародейству и искусству боя. Интисар навещал усадьбу изредка, наблюдая за развитием сына.

553 год (14 лет)
Интисар забрал Лотара к себе и лично занялся его воспитанием.
Поблажек не было: обучение велось в той же жестокой, садистской манере, что и у остальных учеников. Уже имевшееся у Лотара образование стало лишь поводом для повышения требований.

553–559 годы (14–20 лет)
Период основного обучения под руководством Интисара.
Лотар усваивал чародейство, бой и правила существования внутри организации, формируясь как жёсткий, но не склонный к садизму человек.

559 год (20 лет)
Девчонка из борделя родила Лотару дочь.
Мать умерла при родах, ребёнок остался жив.
Опасаясь участи девочки при Интисаре, Лотар тайно укрыл её в отдалённой горной деревне.

559–563 годы (20–24 года)
Стало очевидно, что Интисар готовит Лотара себе в наследники.
Лотар довольно быстро стал основным помощником отца и его правой рукой. Полученную свободу он использовал для подготовки заговора.

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

563 год (24 года)
Орвин Дорм, друг и соратник Лотара, выдал его замысел Интисару.
Бунт не стал революцией. Интисар лично проводил допрос, во время которого Лотар рассказал все подробности и выдал всех, кого мог, включая свою спрятанную от отца дочь.

После допроса последовала показательная казнь.
Жестокость наказания должна была отбить у оставшихся в живых учеников чародея даже мысли о предательстве.

Осень 563 года
По велению Марики на обугленных и закопанных костях вновь наросло мясо, и Лотар был поднят вампиром.
Тело было возвращено в рабочее состояние, однако часть ожогов не исчезла полностью и продолжала причинять периодическую боль.

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

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

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

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

564 год
Проклятие и благословение Марики не давало Лотару уйти на запад: чем дальше он отходил от Пустоши и пытался забыть о своих вампирских обязанностях, тем сильнее напоминали о себе оставленные богиней шрамы. В итоге он осел в Амад Зарре.

564-566
Первые пару лет ушли на гулянки, пьянки и оргии, средства на которые он добывал разбойным трудом. Это помогало отвлечься от болезненных воспоминаний, но со временем память притупилась, на запад стало тянуть меньше, а развлечения наскучили.

566 до настоящего времени
Лотар решил организовать собственное дело и занялся контрабандой через Асад.
После нескольких лет терок с местными ему удалось подмять под себя большинство авторитетов и занять весомое положение в преступном мире на востоке Кейлима.

• Хорошо фехтует и вампирским минимумом овладел на достаточно высоком уровне. Знает яды и противоядия, и в целом имеет широкий арсенал навыков, полезных для преступника и убийцы.

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

  • Хотя Лотар не ходит на службы в церковь, к обязанностям пастыря смерти он относится достаточно ответственно. Занимаясь контрабандой, следит, чтобы в страну не проникли опасные артефакт из Пустоши, упокаивает мертвых, ходит в вылазки и дальние походы в Рубеж и Пустошь, наблюдая за передвижением армий нежити. За все, что можно берет плату втридорога, и знает, что даже самые жадные купцы согласны скорее расстаться со своим золотом, чем пойти на корм нежити Рубежа.

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

  • Частый посетитель борделей, любитель, а зачастую и организатор, оргий.

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

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

• Планы на игру: межпреступные терки в Кейлиме, борьба с нежитью, вылазки в Пустошь, охрана Рубежа. М.б. отношения с семьей, если повезет. Романтические и дружеские отношения с кем-то, кто рискнет.
• Игровые табу: насилие над беременными, детьми и животными.

Что делать с вашим персонажем в случае ухода с проекта
• можно ли использовать его после вашего ухода, если нет, что делать с ним, если разрешения не даете: лучше убить, если это будет возможно.

Пример поста

Лотар медленно протер глаза, смывая грязь, и плеснул водой в лицо Калебу — просто чтобы хоть как-то сбить пылающее желание врезать в ответ. Драться еще с этим паршивцем... Ему и так уже прилетело за компанию с Лотаром.

— Сам-то не умнее, — заметил он, — Что полез-то?.. Просил тебя кто-то? — а ведь не полез бы, не получил бы. Потому и сдачи давать за горящее ухо Лотар давать не спешил. В своре, которую его отец назвал своими учениками, проявления товарищества были скорее исключением, чем правилом. Выросшему не на улице, а в доме матери, парню долго приходилось напоминать себе о необходимости держать ухо востро и не доверять никому. Поддержка со стороны напарника была подарком. А ухо, — Лотар растер его холодной рукой, — заживет.

Он сидел на прибрежье, едва-едва отплевавшись от воды, которой успел наглотаться, пока его атаман купал, и думал о том, что вышло неплохо. По крайней мере новых синяков у него особо не прибавилось, а мокрый от пяток до макушки он был уже и так. Четверти часа хватило, чтобы умыться самому и выполоскать рубашку и волосы, которые после последней стрижки успели опять отрасти до лопаток.

— Идем, что ли, — кивнул Калебу на корыто, предлагая подхватить его с другой стороны.

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

Да, и скучно в лесу, когда дела нет. Это ж не город, где, пока есть свободная минута, можно навестить кабак или бордель. Так, что Лотар предполагал, что они с Калебом здесь заместо развлечения. Весело придумано!..

Главное, что брошенные "подарочки" в корыто не попали. А то пришлось бы то ли заново стирать бежать, то ли развешивать грязным, как есть — а нового нагоняя от атамана не хотелось. Пока хватало прежнего.

— Ладно, ребятки. Поиграли и хватит, — сообщил им старший, когда они вновь явились перед его взором, — Дельце у меня есть вам в самую пору.

И пусть улыбка его была больше похожа на оскал и предвещала мало хорошего, но Лотар был готов уже хоть в пасть дракону лезть, лишь бы нужники чистить не заставили. Да, сколько ж можно их по хозяйству-то гонять, в конце-то концов!.. Нашел бы себе лучше баб.

Отредактировано Lothar Lichtner (2026-01-12 08:57:25)

+6

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 » Анкетирование » Lothar Lichtner | vampire