В игре | История разработки ТЧ | История разработки ЧН | История разработки ЗП |
Для улучшения качества статьи нужно:
|
Отменённые идеи[]
- Планировалось, что некоторые отменённые квесты также должны были давать бонусные очки репутации:
Тип квеста Квестодатель Квест Изменение репутации Особый Неприменимо Достать динамит для Волка +10 Особый Неприменимо Пропуск на Бар +10 Особый Неприменимо Помочь сталкеру +10 Особый Неприменимо Уничтожить безумных ветеранов +10 Особый Неприменимо Уничтожить наёмников +10 Особый Неприменимо Поговорить с командиром блокпоста «Свободы» Кэпом +30 Типовой Сидорович Найти усовершенствованный пистолет +15 Типовой Бармен Уничтожить бандитов на хуторе +40 Типовой Бармен Найти пси-костюм +30 Типовой Бармен Найти ствол иностранца +35 Типовой Бармен Найти модифицированный «Винторез» +40 Типовой Бармен Убить сталкера из группировки «Монолит» +200 Типовой Генерал Воронин Зачистить базу бандитов +40
Этот раздел незавершён. По замыслу одного из участников, здесь должен располагаться специальный раздел. Вы можете помочь проекту, добавив сюда больше информации. |
В Build 2232 была более комплексная система отношений между персонажами разного уровня репутации: NPC с негативными значениями репутации имели бонус к отношению к другим персонажам с негативной репутацией и удар по отношению к персонажам с положительной репутацией. При этом это было применимо как к другим NPC, так и к игроку. Таблица взаимоотношения сталкеров в зависимости от репутации приведена ниже:
Ужасно | Очень плохо | Плохо | Нейтрал | Хорошо | Очень хорошо | Отлично | |
---|---|---|---|---|---|---|---|
Ужасно | 1000 | 800 | 500 | −200 | −400 | −700 | −1000 |
Очень плохо | 800 | 600 | 400 | −150 | −250 | −400 | −500 |
Плохо | 600 | 300 | 200 | −100 | −100 | −200 | −300 |
Нейтрал | −200 | −100 | −50 | 0 | 100 | 200 | 400 |
Хорошо | −300 | −200 | −100 | 100 | 200 | 300 | 600 |
Очень хорошо | −600 | −300 | −150 | 200 | 400 | 600 | 800 |
Отлично | −1000 | −600 | −300 | 300 | 500 | 800 | 1000 |
В дальнейшем таблица упрощена, и каждая строка в ней стала одинаковой, сделав зависимость отношения от репутации стабильной и не зависящей от репутации NPC: чем выше репутация, тем больше бонус к отношению; чем ниже репутация — тем бонус меньше.
Ужасно | Очень плохо | Плохо | Нейтрал | Хорошо | Очень хорошо | Отлично | |
---|---|---|---|---|---|---|---|
Ужасно | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
Очень плохо | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
Плохо | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
Нейтрал | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
Хорошо | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
Очень хорошо | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
Отлично | −1000 | −600 | −300 | 0 | 300 | 600 | 1000 |
К релизу зависимость отношения от репутации была полностью удалена путём выставления всех значений в таблице в 0.
История создания[]
Этот раздел незавершён. По замыслу одного из участников, здесь должен располагаться специальный раздел. Вы можете помочь проекту, добавив сюда больше информации. |
Имплементацией механики в игровом движке занимался, главным образом, Юрий Добронравин. В начале сентября 2004 года им был создан новый тип данных для хранения репутации , а в ноябре — базовая логика работы с ней у игрового движка .
Дальнейшую работу над механикой в 2006 году проводил Руслан Диденко. В конце января, в ходе создания системы типовых квестов, он реализовал возможность менять им репутацию и сделал ряд тестовых заданий , реализующих эту особенность. Сразу по завершении имплементации системы и проверки тестовых квестов, в феврале того же года, вместе с Вячеславом Аристовым он начал создание полноценных типовых заданий, предназначенных для вставки в игру (Вячеслав сделал квесты для Сидоровича, а Руслан — для Бармена, Сахарова, Лукаша и генерала Воронина), в том числе настраивая награду за них в виде бонуса репутации.
В конце месяца Диденко реализовал бонус к репутации главного героя за лечение NPC аптечкой
.Программирование[]
Список изменений (character_info_defs.h) | ||||
---|---|---|---|---|
Дата | №№ | Разработчик | Изменения | Примечание |
2004 год | ||||
2 сентября 16:54 | 3 | Юрий Добронравин | Создан новый тип CHARACTER_REPUTATION , представляющий собой целочисленую 32-битную переменную (псевдоним типа int ). Также создана константа NO_REPUTATION для недействительного значения репутации, и ей было дано значение -1. Над кодом был создан комментарий со следующим текстом: «репутация персонажа - величина от 0 (очень плохой, беспредельщик) до 100 (очень хороший, благородный)»
|
Создан тип данных для дальнейшей работы с репутацией в других файлах. |
14 октября 11:30 | 6 | Текст в коммментарии был изменён на следующий: «репутация персонажа - величина от -100 (очень плохой, беспредельщик) до 100 (очень хороший, благородный)» | Указание минимального значения репутации было изменено с 0 на -100. | |
27 октября 18:59 | 9 | Была создана новая константа NEUTRAL_REPUTATION (стандартная нейтральная репутация) со значением 0, а значение константы NO_REPUTATION (недействительная репутация) было изменено на отрицательное максимальное число, поддерживаемое типом (-2147483647).
|
||
1 ноября 18:41 | 10 | Весь связанный с репутацией и рангом код был перемещён ниже в файле, под связанный с отношением код. В процессе переноса по неизвестным причинам константа NEUTRAL_REPUTATION была переименована в NEUTAL_REPUTATION
|
Техническое изменение, на работу кода не влияет. |
Список изменений (specific_character.cpp|h) | ||||
---|---|---|---|---|
Дата | №№ | Разработчик | Изменения | Примечание |
2004 год | ||||
2 сентября 16:54 | 1 (cpp) 1 (h) |
Юрий Добронравин | Создана система хранения уникальных данных (включая репутацию) конкретных игровых персонажей; система подгрузки этой информации из профилей в XML-файлах и значения структуры по умолчанию (для репутации ей служит константа NO_REPUTATION ).
|
Список изменений (character_reputation.cpp/h) | ||||
---|---|---|---|---|
Дата | №№ | Разработчик | Изменения | Примечание |
2004 год | ||||
1 ноября 18:41 | 1 (h) 1 (cpp) |
Юрий Добронравин | Создана базовая логика работы игрового движка с репутацией. | Созданы файлы character_reputation.cpp и character_reputation.h. |
8 ноября 13:04 | 2 (cpp) | Вызов set_table_sect() был переименован в set_table_params() в связи с переименованием метода в ini_table_loader.cpp/h. Было добавлено определение статической переменной m_relation_table .
|
Техническое изменение, на работу кода не влияет. Исправлена ошибка компиляции. | |
10 ноября 18:29 | 3 (cpp) | — | Был произведён рефакторинг: выход из цикла в функции ValueToIndex() при нахождении подходящего значения был заменён на возвращение текущего значения счётчика, а возвращение последнего известного значения счётчика в конце метода было заменено на возвращение самого большого возможного значения репутации.
|
Техническое изменение, на работу кода не влияет. |
11 ноября 18:43 | 4 (cpp) | Юрий Добронравин | Пороги репутации перестали приводиться к формату u8 (незнаковое 8-битное число).
|
Переходные значения репутации стали поддерживать любые значения в промежутке от -2147483648 до 2147483647 вместо значений от 0 до 255. |
30 ноября 16:36 | 2 (h) | Функция ValueToIndex() сделана статичной.
|
Техническое изменение, на работу кода не влияет. | |
2005 год | ||||
21 ноября 13:48 | 3 (h) 5 (cpp) |
Андрей Коломиец | Произведён рефакторинг функции ValueToIndex() . Имплементация функций value() и index() была перемещена из .cpp-файла в .h-файл.
|
Техническое изменение, на работу кода не влияет. |
21 ноября 18:19 | 4 (h) 6 (cpp) |
Имплементация конструктора и деконструктора класса была перемещена из .cpp-файла в .h-файл. | Техническое изменение, на работу кода не влияет. |
Список изменений (dialogs.script) | ||||
---|---|---|---|---|
Дата | №№ | Разработчик | Изменения | Примечание |
2006 год | ||||
22 февраля 14:47 | 70 | Руслан Диденко | В функцию transfer_medkit() был добавлен вызов метода change_character_reputation() по отношению к протагонисту со значением первого аргумента в 10.
|
Передача аптечки раненому NPC начала давать бонус в 10 очков репутации. |
Список изменений (task_manager.script) | |||||||
---|---|---|---|---|---|---|---|
Дата | №№ | Разработчик | Изменения | Примечание | |||
2006 год | |||||||
25 января 16:41 | 5 | Руслан Диденко | В функцию fill_phrase_table() добавлено чтение параметра конфигурационных файлов reward_reputation . Создана функция |
Добавлена техническая возможность создания типовых заданий с репутацией в качестве награды. Добавлена выдача награды за сдачу типового задания, включая репутацию. | |||
26 января 11:13 | 6 | В функции action_task_reward() было добавлено повторное чтение репутации как таблицы с целью начисления бонуса к отношениям группировок исходя из ключей таблицы. Однако код внутри цикла начал содержать лишь закомментированное название функции по изменению отношения (change_community_goodwill() ), а над ним был добавлен коммментарий: «TODO: Вставить нормальное изменение отношения».
|
Код содержит ошибку: функция должна читать не строку репутации (которая не является таблицей), а строку отношения. Репутация там упоминается, скорее всего, исключительно ввиду ошибки копирования. | ||||
26 января 15:48 | 7 | В функции action_task_reward() в цикле анализа бонуса к отношениям группировок комментарий и закоментированное название функции были изменены на три вызова функции relation_registry.change_community_goodwill() , где в качестве группировки, чьё отношение должно было измениться, использовались ключи таблицы, а в качестве количества, на которое должно измениться отношение — значения таблицы. При этом каждый вызов содержал одну из трёх возможных группировок игрока: actor , actor_dolg , actor_freedom .
|
Функция продолжила ошибочно читать строку репутации вместо таблицы отношения. | ||||
26 января 21:27 | 8 | В функции action_task_reward() цикл анализа бонуса к отношениям группировок перестал ссылаться на репутацию, начав читать таблицу отношения.
|
|||||
|
Конфигурационные файлы[]
Список изменений (task_manager.ltx) | |||||||
---|---|---|---|---|---|---|---|
Дата | №№ | Разработчик | Изменения | Примечание | |||
2006 год | |||||||
25 января 16:41 | 5 | Руслан Диденко | В секцию tm_eliminate_test_lager была добавлена строка reward_reputation со значением -50.
|
Тестовому квесту «Уничтожение лагеря „Свободы“ на тесте» категории «Уничтожение лагеря» был выдан удар репутации в 50 очков. | |||
26 января 21:27 | 6 | Была создана новая секция tm_artefact_vyvert , в которой была добавлена строчка reward_reputation со значением 10.
|
Был создан новый тестовый квест «Добыть артефакт „Выверт“» категории «Добыть артефакт», которому был дан бонус репутации в 10 очков. | ||||
28 января 17:27 | 7 | Были созданы 3 новые секции: tm_kill_svoboda_master , tm_find_boar_leg , tm_find_quest_item , каждому из которых была добавлена строчка reward_reputation со значением 10.
|
Были созданы три новых тестовых квеста из категорий «Убить сталкера» («Уничтожить сталкера „Свободы“»), «Добыть часть тела монстра» («Принести ногу кабана») и «Найти предмет» («Найти квестовый предмет»). Каждому был дан бонус репутации в 10 очков. | ||||
|