Взаимоотношения NPC и игрока

Материал из S.T.A.L.K.E.R. Wiki
Перейти к: навигация, поиск

На основании gamedata\configs\creatures\game_relations.ltx

Технически, отношение между человеческими персонажами (NPC, а также ГГ) представляет собой коэффициент, принимающий значения условно от 5000 до −5000[1]. На основании этого коэффициента, строится взаимоотношения между двумя персонажами. Стоит отметить, что к таким персонажам относится и главный герой.

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

Основные понятия[править | править код]

Отношение — коэффициент, показывающий характер взаимоотношений между NPC или NPC и игроком, как их общий вид (враг, друг, нейтрал), так и конкретное числовое значение. Получается сложением нескольких параметров.

Ранг — коэффициент, показывающий опыт конкретного персонажа.

Репутация — коэффициент, характеризующий поведение персонажа на основе базовых морально-этических норм (плохих и хороших поступков).

Отношение (attitude)[править | править код]

Отношение NPC к ГГ складывается из:

  • Личного отношения персонажа к игроку (personal_goodwill)
  • Отношения всей группировки к игроку (community_goodwill)
  • Коэффициента стартовых взаимоотношений группировок (community_to_community), таблица из секции [communities_relations]
  • Отношения репутаций персонажа и игрока (reputation_goodwill), таблица из секции [reputation_relations]
  • Отношения рангов персонажа и игрока (rank_goodwill), таблица из секции [rank_relations]

Принимает значение условно от −5000 до 5000. Числа такого порядка используются в связи с тем, что репутация варьируется в зависимости от многих параметров, и оперирование большими числами проще и нагляднее, чем десятичными дробями. Положительные числа ещё не означают дружественное отношение, а отрицательные — вражеские. На самом деле, между типами отношений существуют границы, и они таковы: переход между врагом и нейтралом это −400, между нейтралом и другом это 500.

attitude_neutal_threshold = -400
attitude_friend_threshold =  500

Начальные взаимоотношения[править | править код]

Отношения группировок друг к другу по-умолчанию. Так, для любого сталкера изначально враждебен любой бандит («Все знают, что бандиты это враги»). Таблицы начальных взаимоотношений группировок приведены в статье Группировки.

Ранг (rating, rank)[править | править код]

Каждый персонаж в игре имеет характеристику, называемую рейтингом, которая увеличивается в зависимости от его достижений (убийство враждебных NPC и монстров, причём увеличение рейтинга зависит напрямик от рейтинга убитого). По сути, это опыт, накапливаемый персонажем. Рейтинг представляет собой целое неотрицательное число. В игре существует разделение рейтинга на категории, называемые рангами.

Всего в игре 4 ранга. Новичок, опытный, ветеран, мастер. Далее приведён массив с границами рангов и их техническими наименованиями. Читать следует так: новичок до 300, от 300 до 600 опытный,… и так далее.

rating	= novice, 300, experienced, 600, veteran, 900, master


Отношение рангов (rank_goodwill)[править | править код]

Характеристика, влияющая на отношения, но в финальной версии игры не доведена до рабочего состояния (таблица отношений заполнена нулями). Представляет собой реализацию психологических особенностей взаимодействий персонажей разных рангов. Так как эта особенность нерабочая, попробую расписать два возможных принципа её реализации.

Репутация (reputation)[править | править код]

Каждый персонаж в игре имеет характеристику, называемую репутацией. Это его облик исходя их плохих (убил дружественного сталкера) и хороших (помог раненному) поступков. Репутация представляет собой целое число. Для наглядного отображения характеристики, репутация делится на категории.

Всего в игре 7 разновидностей репутации. Ужасно, очень плохо, плохо, нейтрально, хорошо, очень хорошо, отлично. Далее приведён массив с границами рангов и их техническими наименованиями. Читать следует так: до −1000 ужасно, от −1000 до −150 очень плохо,… и т. д.

reputation = terrible, -1000, very_bad, -150, bad, -50, neutral, 50, good, 150, very_good, 1000, excellent

Отношение репутаций (reputation_goodwill)[править | править код]

Характеристика, влияющая на отношения, но в финальной версии игры её возможности урезаны.

В секции [reputation_relations] построена таблица:

terrible very_bad bad neutral good very_good excellent
terrible 1000 800 500 -200 -400 -700 -1000
very_bad 800 600 400 -150 -250 -400 -500
bad 600 300 200 -100 -100 -200 -300
neutral -200 -100 -50 0 100 200 400
good -300 -200 -100 100 200 300 600
very_good -600 -300 -150 200 400 600 800
excellent -1000 -600 -300 300 500 800 1000

(приведена для сборки 2232, так как в финальной версии она менее наглядна).

Смысл этой характеристики в том, что репутация может как помочь дружбе (переход отношений выше порога дружественности), так и помешать, причём учитываются репутации обоих сторон. Например, два бандита, и оба с репутациями «ужасно», подружатся, причём гораздо легче, чем два же бандита, но один из них «плохо», а второй «очень плохо». Это реализует особенность взаимоотношений между людьми, пример: «-Ты меня уважаешь? —Да, а ты меня? —Всё, дружба.» (бандиты), или «—Хороший ты парень! Наш человек! —Спасибо, да и ты тоже неплохой. —Давай-ка дружить.»

В финальной версии таблица упрощена, и каждая строка в ней следующая: «-1000, −600, −300, 0, 300, 600, 1000». То есть отношение репутаций одностороннее, репутация игрока не учитывается, и «очень плохой» игрок никогда не подружится с «очень плохим» бандитом.

Сочувствие (sympathy)[править | править код]

Это техническая реализация изменения отношения всех членов группировки к конкретному персонажу. Суть её заключается в том, что после воздействия на персонажа из группировки, личное отношение персонажа к игроку (personal_goodwill) распространяется на всех членов группировки с умножением на коэффициент. Так как логично, что дружбу всех входящих в группировку персонажей надо заслужить дружбой со многими персонажами, коэффициент этот немного выше нуля, и не превосходит 0,1.

Скрипты и взаимоотношения[править | править код]

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

Примечания[править | править код]

  1. ^ Проверить, возможно ли больше? Мне кажется, что да.