Здесь должен быть вводный абзац для новости или статьи. Текста должно быть достаточно много, чтобы блок с изображением аватара автора новости красиво вписывался в текст
Научный трактат для изощренных умов
I. Создание новой организации
Создать новую организацию в Морровинде просто. Зайдите в Character -> Faction, нажмите кнопку New и введите новый ID, а затем название своей организации в поле Name. То, что вы напишете в Name, будет видно игроку в диалогах и т.д., а ID видно только разработчику в КС. Однако не совсем ясно, зачем понадобилось создавать 2 поля - ID и Name, ведь информация, что в них написана, в оригинальном Морровинде просто дублируется. Однако, если вы проводите какие-то операции с этой организацией в скриптах и т.д., указывайте именно ID, а не имя. Например, ModPCFacRep, 5, "Imperial Legion" (повышает репутацию у игрока на 5 среди членов Имперского легиона).
Обратите внимание - если вы начали создавать организацию, а вас что-то не устроило, то даже если вы нажмете на крестик, закрыв окно, ID и Name новой организации все равно останутся. Чтобы удалить организацию, используйте кнопку delete, что рядом с new.
Приступаем к заполнению других полей в окне.
Галочка Hidden from PC обещает сделать организацию не отображаемой для игрока в процессе игры.
С помощью мышки можно выбрать Primary Skill, т.е. характеристики, которые ценятся в новой фракции, а также Favored Skills - навыки. Советую не писать, что левой ноге угодно, или что первое на глаза попалось, а тщательно продумать концепцию организации. В фентезийном мире, как правило, существует 3 направления - воины, маги и воры. Но в принципе в этом есть плацдарм, чтобы развернуться.
Между прочим, уже можно записывать неписей в новую фракцию. Это делается через свойства персонажа. Теперь в топике «биография», если вы не написали оригинальную фразу или не повесили на персонажа скрипт с nolore, он будет представляться и называть «своим местом работы» эту новую фракцию.
Итак, у нас уже достаточно материала для работы над плагином. На этом можно и остановиться, но если создавать полноценную организацию, то нужно продолжить. Какие черты у полноценных организаций в Морровинде? Конечно, в первую очередь система рангов!
Начинаем создавать ранги. Это делается через выделение ячейки в специальном окне и нажатие кнопки F2. Тогда в ячейку можно будет вписать новое имя. Параллельно с надписью Favored Skill располагается несколько полей, куда вписываются значения характеристик, навыков и отношения среди членов фракции, которые необходимы для получения данного ранга. Разумеется, все это сделано для игрока. Обычного персонажа вы всегда можете записать в любые чины, независимо от его данных.
Лучше всего сначала вписать все ранги, а потом отредактировать требования для них, чтобы карьерный рост шел равномерно.
Если чувствуете, что добавили слишком много рангов, лишние можно удалить: выделите ячейку, нажмите F2 и клавишей back space (стрелочка над клавишей enter) снесите все знаки, - вместе с названием исчезнет весь ранг.
В самом низу окна faction находится поле Reaction List, в котором можно указать реакцию (отношение к этой организации) других фракций. Правой клавишей мыши вызывает контекстное меню, нажимаем new, выбираем фракцию и выставляем отношение.
Как видно, здесь можно вписать не значение расположения от 1 до 100, а только несколько цифр, так сказать, коэффициент расположения - это цифры -3, -2, -1, 0, 1, 2, 3. Соответственно, -3 обеспечивает самое негативное отношение, а 3 - самое высокое из возможных.
Если вписать другие цифры, КС примет их, но при следующей попытке открыть плагин или запустить игру, устроит настоящую истерику по поводу «неправильного размера параметров» с отказом обрабатывать эти значения.
Все это также сделано только для игрока. Так что можно включить в список реагирующих саму новую организацию и выставить значение, как относятся одногруппники к Нереварину, если он состоит в этой же организации. Как правило, отношение у них очень хорошее: 3.
Необязательно вписывать все существующие организации Морровинда.
В общем, в итоге у вас должно получиться примерно, как на скриншоте:
Ну, теперь редактирование свойств новой организации можно считать законченным. Остается только создать в мире игры представителей этой организации, их филиалы, книги и другие вещи.
II. Вступление и карьерный рост. Работа с диалогами
Приступаем ко второй интересной части этой статьи. Рассмотрим, как можно организовать вступление Нереварина во фракцию и дальнейший карьерный рост.
Это дело осуществляется, естественно, по большей части через диалоги. Можно привязать способность назначать должности к конкретным персонажам/высшим чинам во фракции через условия диалога - по ID, а можно, как в Доме Телванни, дать способность увеличивать ранг всем членам определенного ранга, выставив в условиях диалога фракцию и ранг говорящего. Повышение в ранге через скрипт здесь не рассматривается.
Итак, создаем диалог с новой темой - предложение присоединиться к такой-то организации. Диалог можно развернуть. Ваш вербовщик может рассказывать о правилах и требованиях, ставить какие-то условия для вступления, выслушать отказ и т.д. Однако, если игрок согласен, нужно написать на этот случай в поле результата диалога - PCJoinFaction "ID_организация", что означает вступление в организацию.
Теперь если игрок открыто прибьет кого-нибудь из своих, или если вы при редактировании предметов в интерьере указали extra data владельцем члена той фракции или всю фракцию, а игрока засекут при попытке взять предмет, то появится прекрасное окно с сообщением «Вас изгнали».
Для лучшей атмосферы стоит создать несколько топиков, где персонажи смогут рассказать что-нибудь интересное и полезное об организации.
Существует несколько специальных диалоговых функций, которые можно использовать в диалогах и скриптах. Многое из нижеперечисленного работает только при условии, что игрок и непись являются членами указанных организаций:
- PCJoinFaction "ID_организации" присоединить игрока к организации.
- %PCRank называет чин игрока в диалоге.
- %NextPCRank следующий чин игрока по отношению к текущему.
- %Rank называет чин персонажа.
- GetPCRank, «ID_организации» в скриптах вычисляет ранг игрока в организации по порядку (то есть GetPCRank, «Blades» == 0 укажет на первый ранг среди Клинков, - Новичок). Значение -1 показывает, что игрок не является членом данной фракции.
- PCRaiseRank повышает ранг игрока.
- PCLowerRank понижает ранг игрока.
- RaiseRank повышает ранг персонажа.
- LowerRank понижает ранг персонажа.
- PCExpell "ID_организации" изгоняет игрока. Между прочим, статус «изгнан» не вычеркивает из организации, как вы можете заметить.
- PCClearExpelled "ID_организации" — восстанавливает положение.
- ModPCFacRep, 5, "ID_организации" повышает расположение к игроку (в данном случае на 5 единиц) для членов всей организации в целом. Можно написать отрицательное значение.
- SetPCFacRep, 100, "ID_организации" устанавливает определенное расположение к игроку.
- ModFactionReaction, "ID_организации1", "ID_организации2", 5 изменяет отношение фракции 1 к членам фракции 2. Разумеется, заметить это может только игрок.
- ModFactionReaction, "ID_организации1", "ID_организации2", 5 устанавливает расположение членов одной фракции к членам другой.
- Get/Mod/SetReputation определяет/изменяет/устанавливает значение для репутации игрока.
- Get/Mod/SetDisposition тоже самое с расположением непися к игроку.
Условия в диалогах
Faction если говорящий принадлежит к определенной организации. Rank если говорящий имеет ранг в вышеуказанной организации, не менее чем выбранный по условию. PCfaction если игрок принадлежит к определенной фракции. PCRank если игрок имеет определенный ранг. Function -> Same Faction Когда выставляется значение 1, говорящий произнесет фразу только если игрок принадлежит к той же организации, что и он. Function -> Faction Rank Difference используется в диалогах, чтобы вычислить расстояние на карьерной лестнице между говорящим и игроком. См. об этом ниже. Function -> Rank Requirement требования к рангу. Используются при повышении. См. ниже.
Для карьерного роста обязательно нужно создать новые фразы в топике Повышение, или создать другой топик со сходным названием. Тут будет решаться карьерный вопрос. Разумеется, говорящий должен состоять в нужной организации и игрок также, а то получится странная картина.
Повышение в сущности зависит от двух факторов, а точнее даже от того, как эти два фактора соотносятся с требованиями для того или иного ранга. Эти факторы - репутации во фракции (создается через команду ModPCFacRep Число «ID_фракции») и значения навыков игрока, важных для этой организации.
Не обязательно для каждого ранга создавать особую фразу. Карьерный рост был автоматизирован разработчиками из Bethesda. Существует функция rank requirement (требования ранга), у которой могут быть значения 0, 1, 2, 3.
Ориентируйтесь на нижеприведенную таблицу и располагайте свои фразы в той же последовательности.
№ | Что случилось | Пример фразы | Условие в диалог | Что пишем в поле result диалога |
1 | Игрок был изгнан | Вы преступили воровские законы чести. Внесите компенсацию, или вам никогда не получить звание %PCNextRank. | Function -> PC Expelled == 1 | Ничего |
2 | Если игрока нужно восстановить во фракции | Говорят, вы были изгнаны. Я позабочусь об этом для вас | Function->PC Expelled== 1 PCClearExpelled | «ID_организации» |
3 | Игрок спрашивает о повышении. Но его репутация пока слишком мала в организации, недостаточно развиты нужные навыки | С честью исполняйте приказы и совершенствуйте свои навыки. Вы еще не готовы. | Function -> Rank Requirement == 0 | Ничего |
4 | Игрок спрашивает о повышении. Навыки достигли нужного уровня, но репутации мало | Ваша техника превосходна, но некоторые ставят под сомнение глубину вашей преданности. Вы должны с честью исполнить еще больше приказов для Мораг Тонга. Эти приказы уже выходят. | Function -> Rank Requirement == 1 | Ничего |
5 | Игрок спрашивает о повышении. Репутация на достаточном уровне, но навыки - нет | Пока что у вас нет тех качеств, которые мне нужны, %PCName. Может быть, позже. | Function -> Rank Requirement == 2 | Ничего |
6 | Игрок получает повышение. И навыки, и репутация на нужном уровне | Отлично, %PCName. Теперь вы %PCName %NextPCRank. | Function -> Rank Requirement == 3 PCRaiseRank | |
7 | Игрока понижают в ранге | Как ты мог вызвать атронахов и плясать с ними на столах в библиотеке, дразня при этом Требониуса?! | Что-то должно быть указано в PCFaction и PCRank, а кроме того нужна причина для понижения, отраженная в условиях диалога PCLowerRank | |
8 | Игрока нужно изгнать из фракции | Пошел нафиг! | Function -> PC Expelled == 0 PCExpell | «ID_организации» |
III. Разные полезные штуки
Нарушения или «первый раз прощается, второй раз запрещается».
Чтобы не создавалась ситуация, когда игроку за нарушение достаточно поговорить с кем надо, и таким образом нарушать правила бесконечно, можно сделать условия, при которых игрока прощают за нарушение только 1 раз. Затем, если он изгоняется повторно, восстановление невозможно.
Создайте новую глобальную переменную типа short под названием типа ExpFaction. Когда восстанавливаете его в первый раз, напишите в результате диалога:
PCClearExpelled "ID_организации" Set ExpFaction to 1
Затем создайте новую печальную фразу на случай очередного изгнания с условиями
Function -> PC Expelled == 1 Global -> ExpFaction == 1
С содержанием типа - «прости, дорогой, ты уже нарушал правила и был изгнан. Восстановление невозможно».
В услуге отказано
Можно создать ситуацию, когда некоторые учителя или торговцы отказываются вступать в сделки с игроком, пока он не достигнет высокого звания.
Для этого откройте диалоги и во вкладке Persuasion ->Service Refusal создайте для отказника фразу, где он говорит об этом отказе. Нужно указать ранг для говорящего (высокий, ведь «мои услуги зарезервированы только для высших чинов») и условия диалога:
Function - Same Faction == 1
Function - Faction Rank Difference < - 3 (то есть разница между говорящим и игроком 3 и больше звания. Можно указать другое число).
Сундук с припасами
Хорошая вещь. Создается через редактирование какого-нибудь стандартного сундука. Чтобы припасы восстанавливались раз в месяц, поставьте галочку Organic Container и Respawns. Обязательно нажмите флажок extra data и выставите владельца, то есть фракцию. Вашу новую организацию, как и стандартные морровиндские фракции, можно найти в этом списке на букву F (Faction). Рядом можно выставить ранг, при достижении которого дозволяется пользоваться сундуком.
Зарплата
Неплохим бонусом для молодого Нереварина может послужить ежемесячная зарплата. Причем, она тем больше, чем больше его статус в организации.
Такая фича была реализована в западном плагине Salaire Legion Imperiale by BOUCLETTE, адаптированном Winddancer, иначе говоря - зарплата членам Имперского Легиона. Выплаты производятся каждый месяц первого числа. Золото сразу оказывается в инвентаре. Чем выше ранг в Имперском Легионе, тем выше зарплата.
А создается эта ситуация всего лишь одним глобальным скриптом. Он вычисляет ранг и месяц. Как только месяц меняется, происходит однократное добавление денег в инвентарь игрока в соответствии с определенным рангом. Посмотрите:
Begin SalaireLegionImperiale short currentMonth if (currentMonth != Month) set currentMonth to Month if (getPCRank "Imperial Legion" == 0) Player->AddItem Gold_001 100 endIf if (getPCRank "Imperial Legion" == 1) Player->AddItem Gold_001 230 endIf if (getPCRank "Imperial Legion" == 2) Player->AddItem Gold_001 410 endIf if (getPCRank "Imperial Legion" == 3) Player->AddItem Gold_001 670 endIf if (getPCRank "Imperial Legion" == 4) Player->AddItem Gold_001 990 endIf if (getPCRank "Imperial Legion" == 5) Player->AddItem Gold_001 1340 endIf if (getPCRank "Imperial Legion" == 6) Player->AddItem Gold_001 1710 endIf if (getPCRank "Imperial Legion" == 7) Player->AddItem Gold_001 2150 endIf if ( getPCRank "Imperial Legion" == 8) Player->AddItem Gold_001 2540 endIf if ( getPCRank "Imperial Legion" == 9) Player->AddItem Gold_001 3100 endIf endIf End SalaireLegionImperiale
Напоследок несколько советов:
- Хороший карьерный рост осуществляется только при наличии интересных квестов.
- Не забывайте в поле result диалога по мере продвижения игрока в карьере периодически прописывать ему повышение отношения и/или репутации. А то как же он будет расти в карьере?
- Странная была бы ситуация, если бы повышать в высокий ранг могли персонажи любого ранга! Проследите, чтобы тот, кто занимает ранг Новичок, не смог повысить игрока до звания Мастер. Для этого создайте повыше фразу для Новичка с условием PCFaction, PCRank «ранг, выше которого он не может повысить» с содержимым: «Я не могу повысить тебя до звания %PCNextRank, т.к. я только %Rank».
- Хорошо бы обыгрывать получение самого высокого ранга с отдельным квестом, с особым испытанием для игрока, так чтобы получение этого высшего ранга стало для него достойной наградой за труды.
Удачи и творческих успехов!
Между прочим, изгнание в Морровинде не стоит всегда воспринимать как позорное изгнание. Эта функция может открыть много перспектив.
Комментарии