Баги и вопросы к коду

Найдено при разборе скриптов viy_demo: 26 исправлено в ветке fix/bugs-viy-demo-oct20, 2 решено оставить как задумано, 1 не подтверждено (нужен источник), 32 ждут решения Кейт. Для каждого пункта дано предложенное решение.

Файл:строкаЧто происходитПредложенное решениеСтатус
script_4_airat.rpy:1035Пункт «Фенрира ранена.» требовал ld.d4 истинным, а ld.d4 по умолчанию 0: пункт никогда не появлялся.Заменено на not ld.d4.исправлено в ветке
script_4_airat.rpy:1714Проверялась метка «medicine_2», а осмотр чёрной аптечки пишет «medicine2» (1910): осмотр чёрной аптечки не открывал перевязку Фени.Проверка заменена на «medicine2».исправлено в ветке
script_4_airat.rpy:1944-1948После концовки «Без понятия что тут творится» меню без доступных пунктов.Добавлен renpy.full_restart() после 1944.исправлено в ветке
script_4_kapibar.rpy:445Реплику «Конечно-конечно!» говорит k (персонаж «Жрец?») вместо Капа ka.k заменено на ka.исправлено в ветке
script_4_kapibar.rpy:825Опечатка: «тебе лучшие быть здесь».«лучше».исправлено в ветке
script_4_kapibar.rpy:298-303Код после «КОНЕЦ ДЕМОВЕРСИИ. GOOD WAY. Фенрира...» (296) и renpy.full_restart() (297) недостижим: «Ну и держите», два капика каждой (+2 капика) никогда не выдаются.Перенести блок 298-303 перед строку 296, чтобы награда выдавалась до конца демо; если награда не нужна, удалить блок. Рекомендую перенос.ждёт решения
script_4_tgavan_nars.rpy:740, 727; script_newscreens.rpy:404Отказ отдать стол Нарси (table_chaos_nars, ветка «Нет.»): настроение Нарси −3 (740), но предмет деактивируется только на ветке отдачи (727), флага нет; обработчик item_dragged (script_newscreens.rpy:404) прыгает на метку при каждом драге без проверок — штраф повторяем, пока Нарси рядом (окно эскорта).Добавить флаг первого отказа или деактивацию предмета после отказа.ждёт решения
script_4_tgavan_nars.rpy:632-633«Напомнить, что он не отдал капик» (kapik_nars): настроение Нарси +1 (633) и kapik.count −1 (632) на каждом драге капика, без флага. Проверки count в метке нет, но сеттер count (script_inv_text.rpy:159-166) ограничивает count нулём и при 0 деактивирует предмет — в минус count не уходит, повтор ограничен запасом капиков на момент сцены.Добавить флаг первого напоминания, если повторные +1 не задуманы.ждёт решения
script_4_kapibar.rpy:763 и 782Награда за шляпку: +3 капика с анимацией kapik3 (763-772) и сразу ещё +10 капиков с второй анимацией (782). Похоже на дубль.Оставить одну награду. Если нужно 13, объединить в одну анимацию; если 3 или 10, убрать лишнюю строку. Рекомендую оставить +3 (в первом блоке стоит «Держи»).ждёт решения
script_inv_text.rpy:7 (amul), script_newscreens.rpy:~500У амулета need_drop {"kap": "kap_amul"}, но метки kap_amul нет ни в одном файле. При перетаскивании амулета на Капибару jump упадёт с ошибкой «label not found».Добавить короткую метку kap_amul (Кап комментирует амулет, затем call_screen_strel) или убрать «kap» из need_drop амулета. Рекомендую метку: Кап осторожно смотрит на амулет и возвращает его.ждёт решения
script_npc_items.rpy:453Клик по тряпке на less_per, когда она не взята и не пропитана («bint»), прыгает на метку script_3_less_cloath, которой нет ни в одном файле: ошибка «label not found».Заменить Jump("script_3_less_cloath") на Jump("cloath_action_osm") (осмотр тряпки), метка есть.ждёт решения
script_4_kapibar.rpy:351, 392Флаг "job" в kap_dialog записывается, но нигде не читается.Либо читать флаг (Кап даёт поручение), либо удалить запись.ждёт решения
script_4_kapibar.rpy:1, 168, 670Метки script4_kapibar_start, script4_kapibar_start_menu (вход) и script4_kapibar_help_menu нигде не вызываются в найденных файлах; у Капибары в airat_kap_drag (script_npc_items.rpy:1050-1074) нет clicked.Найти вызов (нет в 40+3 найденных файлах). Если его нет: добавить на Drag Капибары clicked Jump("script4_kapibar_start").ждёт решения
script_4_airat.rpy:1630Было: Переменная dev_bad читается в двери (dev_door_label), но задаётся только в airat_house_luiza (1677). До первого захода в дом значение берётся из предыдущего состояния.Исправлено: «if dev_bad:» → «if "after_airat_bad" in dev_dialog or "to_airat_bad" in dev_dialog:» (коммит 651efdd), то же выражение, что в 1677 и 80; строка 1677 не менялась.исправлено в ветке
script_4_airat.rpy:1880-1893Было: после выбора «Ага. Отличная идея.» флаг dev.near (Луиза рядом) не сбрасывался, хотя героиня уходит и квесты провалены; при стуке в дверь (1630) отказ зависел только от разговора по дороге, а не от этой ссоры.Исправлено: после «$ dev.bad = 1» добавлены «$ dev.near = 0» и «$ dev.lock = airat_luiza_house» (коммит 2eebc5a); в список dev_dialog добавляется отдельная запись «luiza_left_quarrel» (1891), и стук (1630) даёт отказ «Уходите! Я занята!» также по ней (коммит e53b7bf); исключение раненой Фени, дорожные условия и значение dev_bad в 1677 не менялись. Локация героини airat_main, квесты и call_screen_strel не менялись. Кейт: Луиза остаётся дома, после этой ссоры стук всегда отказ.исправлено в ветке
script_4_tgavan_nars.rpy:300-301В «Я просто пытаюсь разобраться, что происходит.» стояли подряд sanity.add_mad(-1, ...) и add_mad(1, ...) с одним пояснением «Незнание - это скучно.»; итог 0 (на Безумии −9: −1).Удалён второй add_mad(1, ...) (коммит e5cd134, ветка fix/bugs-viy-demo-oct20): остаётся Безумие −1, nars.mood -=1 и соседние пункты не тронуты.исправлено в ветке
script3_tgavan_oh.rpy (adrc, «report»)Ветка «report» в сцене Адриана никуда не подключена (подробности на странице adrc).Подключить к меню или удалить ветку.ждёт решения
script4_tgavan_gar.rpy:141, 152 (весь файл)Старый скрипт дома Гарбока меняет Безумие, Логику, Кровь старыми переменными mad, logic, blood и читает razr_prov_garb; их определения закомментированы (script _define.rpy:159, 161, 191, 244 — номера старой копии; в b9 комментарии сняты). menu_gar нигде не вызывается. При запуске скрипт упал бы.Удалить скрипт или перевести на sanity.add_mad, sanity.get_level, sanity.add_logic и флаг в adro_dialog.ждёт решения
script3_gubert.rpy:37, 60, 168, 232, 267, 269, 306Опечатки: «концее», s.nmae вместо s.name (строка ничего не делала, имя «Слизень» теперь показывается), «вернемя», «мотом», «Воткнуть в его иглу», «прост оя», «щупальцы».Исправлено: конце, s.name, вернёмся, потом, «в него», «просто я», щупальца.исправлено в ветке
script_4_tgavan_nars.rpy:474, 490Строки «$ nars.mood +1» без присваивания не меняли настроение Нарси.Заменено на «+=1».исправлено в ветке
script_4_tgavan_nars.rpy:898«$ persistent.deaths_list["kill_n"]» без присваивания: концовка «Убить Нарси» не записывалась.Дописано «[1] = 1».исправлено в ветке
script_4_tgavan_nars.rpy:775-793Диалог «Не скажешь, зачем она тебе?» мог повторяться второй раз.В ветке добавлена метка «спрашивали ли уже»: диалог идёт один раз.исправлено в ветке
script3_nazad.rpy:980, 999, 1034 и др.Проверка по b9: на всех этих строках стоит «= True» (присваивание, срабатывает), переход nazad:1000 ведёт на существующую метку script3_nazad_tash_urza_question (nazad:969), «ssanity» в ветке нет нигде. В старом снапшоте fresh «ssanity» найдено только в закомментированном блоке (fresh:1623-1628, не исполняется); метки «urzali» нет ни в b9, ни в fresh.Исправлений не требуется: заявленных дефектов в ветке и доступных копиях не найдено.не подтверждено
script4_tgavan_gar.rpy:38«jump imagemap_tg»: метки imagemap_tg нет (закомментирована как imagemap_tg2). Файл не используется в демо.Удалить мёртвый файл или вернуть метку.ждёт решения
script3_airat.rpy:874-882В конце разговора «Кто такая Ара» переход к вопросу про имя стоял внутри условия, а после него шёл «renpy.full_restart()»: при невыполнении условий игра перезапускалась без концовки.В ветке переход вынесен на уровень выше, перезапуск убран.исправлено в ветке
script_inv.rpy:39Вызов «quests["diary_quest"].u_part(3)» без «.diary»: у квеста нет такого метода.В ветке: «quests["diary_quest"].diary.u_part(3)».исправлено в ветке
script_4_airat.rpy:257, 261, 303«logic_l >= 1» и «mad_l >= 1» без скобок: logic_l и mad_l это функции (script.rpy:208, 211), сравнение функции с числом вызывает ошибку, когда Луиза рядом (щит и окна).Добавлены скобки: logic_l() и mad_l().исправлено в ветке
script3_tgavan_oh.rpy:1474Было: «if "adro_liass_talk":» без «in adro_dialog»: условие всегда истинно.Исправлено: «if "adro_liass_talk" in adro_dialog:» (коммит 8828d19), как в строке 1407.исправлено в ветке
script3_tgavan_oh.rpy:1281-1313 (adrian_conv_door)Единственный пункт меню виден только при ссоре с Адро; без неё в меню нет пунктов, «До свидания» стоит уже после меню.Вынести «До свидания» в пункт меню, который виден всегда.ждёт решения
script3_tgavan_oh.rpy:1162Концовка «End? Расследование, провал.» не перезапускает игру: героиня уходит на карту.Решить, должна ли это быть концовка демо (добавить перезапуск) или возврат на карту.ждёт решения
script_4_airat.rpy:33-40«Согласиться и сделать шаг назад» оставляет героиню у стены, «Уперто сделать шаг вперед» ведёт к концовке «Ошибка мироздания».Подтвердить, что так задумано.ждёт решения
script_4_airat.rpy:1009, 1197Флаг «war» записывается, но нигде не читается.Удалить или использовать.ждёт решения
script_5_airat.rpy:240Было: «not чай or cap._active» без скобок: приоритет операторов даёт «чай не активен или кружка активна».Кейт: нужно именно налить чай в пустую кружку. Добавлено «$ inv_list["cap"]._active = 0» после «tea = 1» внутри того же if (коммит 3a257dc); условие в 240 не менялось.исправлено в ветке
script3_tgavan_begin.rpy (страница tgavan)Флаги od4.d1 (741, 761, 776), od3.d4 (580), pd_tgavan (909, 929) только читаются; ветка «Она снова здесь» (776-778) недостижима. «$ logic +=1» (181) не меняет Логику (нужна sanity.add_logic). «$ script_3_tgavan_begin_adr_door_razg» (992) имя метки без jump. Метки tg_dv_amul (1049) и tgavan_exit (1102) без входящих переходов.Присвоить флаги там, где задумано; заменить «logic +=1» на sanity.add_logic(1, причина); добавить jump или удалить.ждёт решения
day_1_bonny_razg.rpy:58-64, script_npc_itemsПосле «Точно нет.» тема «просьба» помечается использованной: передумать нельзя, квест «Кости» остаётся проваленным.Разрешить повторный вопрос.ждёт решения
script_5_airat.rpy:699-740Меню второй статуи без «Конец»: выход только концовками «END?» (каждая с перезапуском) или «Бросить дело»/«Убежать».Подтвердить, что так задумано в демо.ждёт решения
script_4_airat.rpy:548-550Меню двери: «Конец» возвращает к меню, выход только через menu_end_jump.Подтвердить.ждёт решения
day_1_dev_razg.rpy:73-86«Знаешь, мне сейчас не до тебя»: Луиза уходит, оба квеста про отца становятся false; в режиме разговора выходы хаба вопросов и меню «Все поняла / Не важно» возвращают в меню разговора с Луизой, а не в выбор имени.Подтвердить.ждёт решения
script3_tgavan_oh.rpy:212, 269-273«Лесс спасает» ведёт на метку nesm (script_1_less_hand.rpy:428); строки 269-273 после jump недостижимы (выбор глубины могилы).Подтвердить или удалить недостижимое.ждёт решения
script3_airat.rpy:707Условие «if devd2.d1 == 0» всегда истинно: devd2.d1 нигде не присваивается, поэтому блок вопроса Луизы (707-760) выполняется каждый раз.Присвоить devd2.d1 = 1 после блока или убрать условие.ждёт решения
script3_airat.rpy:1266-1273После «Э... Шутка.» (при имени «Вий») код возвращается в разговор об имени (метка myname), где имя героини в переменной dv всё ещё «Вий»: ветка про «Вий» может повториться. Повтор по всем путям не проверен.Проверить в игре; при повторе сбросить dv перед возвратом.ждёт решения
script3_road.rpy:355, 354+Заявлялись опечатки: ssanity.get_level (вместо sanity), «поздравлеения». Проверка: в b9 строки чистые (298-299 «Ох-хо, твоя память…» / «Мои поздравления!»; 302 — «if sanity.get_level("logic") >=1:»); в старом снимке fresh/main ни «ssanity», ни «поздравлеения» в script3_road.rpy нет. Исторические копии fb/v2/c1 для проверки недоступны.Исправлений не требуется в доступных версиях; первоисточник дефекта не найден.не подтверждено
script3_road.rpy:181-246, 253-333Недостижимые метки: nezngavan, sluc, zngavan (ссылки закомментированы в script _define.rpy:707-712), doroga3 («Конец предварительный»), блок с бурундуком kr_bur/bur_menu/bur_osm (вызов закомментирован в 252).Удалить мёртвый код или вернуть вызов бурундука в kr_less.ждёт решения
script3_road.rpy:360-366Если у героини есть дело к Лессу (less_delo), счётчик кругов не сбрасывается и «встреча» не отмечается: при следующем заходе на перекрёсток Лесс встретит героиню на кругах снова.Сбросить счётчик и отметить встречу и в этой ветке.ждёт решения
script3_sova.rpy:233–310 (b9); 227-228, 336-359 — старая копияВетка script3_sova_logic (маг видит тёмную магию совы, флаг mag) недостижима: входящих переходов нет (b9: метка 233, ветка 233–310). В старой копии переход был закомментирован (старые 227-228) и блок «Сова-питомец» (старые 336-359) закомментирован целиком — в b9 комментарии сняты, этих строк нет.Включить переход (227-228) или удалить мёртвый код.ждёт решения
script3_sova.rpy:83, 194Флаг sova_meet = 1 задаётся дважды; второй раз безусловно.Оставить одну запись.ждёт решения
script3_gubert.rpy:440Осмотр поджога веток: less.mood -= 2 без счётчика и условия, настроение Лесса падает без нижней границы при каждом повторе.Кейт: штраф −2 оставить, это не баг; у попытки поджечь ветки позже нужно добавить сцену (её пометка TODO, сцену пока не писали). Код не менялся. По найденным файлам ветка недостижима: цель gub_osm не входит в _drag_list, у кремня нет need_drop, drag gub_osm только кликается (script_npc_items.rpy:1253-1286).решено: оставлено как задумано
script3_gubert.rpy:430-445В start_gub_osm закомментирована ветка по уровню Безумия (todo): мёртвый код.Реализовать ветку «лезть или нет» или удалить комментарий.ждёт решения
script3_gubert.rpy:5-8script3_nazad_tash_afterser лежит в файле Губерта, но прыгает в конец сцены Таши (script3_nazad_tash_end), а не в Губерта.Перенести метку в файл Таши.ждёт решения
script_4_airat.rpy:1696, 1910; script_4_kapibar.rpy:416, 523, 834Опечатки в тексте: «вернлуся» (airat 1696), «лекапства» (airat 1907), «воздузи» (kapibar 416), «разорарованно» (kapibar 523), «Отлчиная» (kapibar 834).Исправить орфографию в этих строках (смысл не меняется).ждёт решения
script_4_airat.rpy:1175-1374, 582Метка script_4_airat_kar_dialog (весь разговор с Карралаком: узнаёт Луизу, плата Миранды, меню пунктов «Фенрира ранена.», «Меня не пропускают.», «Я согласна вступить в служки» и др.) не имеет прямых вызовов: единственный jump в неё закомментирован (582), остальной jump стоит внутри самой метки (1373). Дверь Карралака (script_npc_items.rpy:894-934) ведёт в airat_church_corridor_door, где при стуке открывает Лени. Динамические вызовы (jump по имени из переменной) не проверялись.Подтвердить: разговор убран намеренно (тогда пометить метку или удалить) или нужно вернуть вход.ждёт решения
script_inv_text.rpy:33, script_5_airat.rpy:848У предмета «cap» (пустая кружка) action = Jump("cap"), но метки cap нет ни в одном файле. Метка cap_cap_ch (script_5_airat.rpy:848) в файлах прямо не вызывается: к ней, возможно, ведёт перетаскивание кружки на чайник (имя метки собирается из имён предмета и цели). Клик по кружке в инвентаре упадёт с ошибкой «label not found», если до этого дойдёт.Подтвердить намерение: клик по кружке должен вести на cap_cap_ch (заменить Jump("cap") на Jump("cap_cap_ch")) или добавить метку cap.ждёт решения
script_inv_text.rpy:26У предмета «black_seal» (Контракт черной печати) action = Jump("black_seal_label"), но метки black_seal_label нет в проверенном наборе. Клик по предмету в инвентаре упадёт с ошибкой «label not found», если предмет доступен игроку (просмотр через show screen letter, script_newscreens.rpy:532 — отдельный путь, работает).Подтвердить намерение: добавить метку black_seal_label или заменить action.ждёт решения
script_inv_text.rpy:27У предмета «tash_card» (игральная карта) action = Jump("tash_card_osm"), но метки tash_card_osm нет в проверенном наборе. Клик по предмету в инвентаре упадёт с ошибкой «label not found», если предмет доступен игроку.Подтвердить намерение: добавить метку tash_card_osm или заменить action.ждёт решения
script_inv_text.rpy:28У предмета «bonny_1» (суповой набор) action = Jump("tash_card_osm") — та же отсутствующая метка, что и у tash_card; предмет ведёт на чужой осмотр. Клик упадёт с ошибкой «label not found», если предмет доступен игроку.Подтвердить намерение: завести отдельную метку для bonny_1 или заменить action.ждёт решения
day_1_dev_razg.rpy:36-37, 68В меню после ссоры (devd.d5) пункт «Конец» только делает pass, после чего jump dev_razg_menu (68) снова открывает то же меню. Выйти можно кнопкой «назад» или когда остаётся один пункт. В меню без ссоры «На сегодня хватит разговоров!» выходит на экран переходов (63-67), в этом меню такого выхода нет.Подтвердить: «Конец» должен выходить из разговора (добавить jump dev_razg_menu_end в этом пункте) или так задумано.ждёт решения
day_1_tash_razg.rpy:41В ответе Таши на «Расскажи о нем побольше.» стоит «$ urza.zn_name == True» (сравнение, не присваивание): флаг «знает имя Урзы» этой репликой не записывается. Остальные такие места в script3_nazad.rpy уже исправлены.Заменено на «$ urza.zn_name = True» (коммит 67ca8a1). Другие «zn_name ==» в файлах игры стоят внутри условий и не менялись.исправлено в ветке
script3_nazad.rpy:1666В условии «if sanity.get_level("mad") >=1 and logic <=4:» (ответ Таши на «Кто такой Урза?») стоит голое имя logic. Чтение подтверждено: оно выполняется, когда get_level("mad") >= 1. Определения logic (define/default/init python/простого присваивания «logic = ...») в 46 файлах .rpy папки game не нашёл: есть закомментированная «# $ logic = 0» (script _define.rpy:191), «$ logic +=1» (script3_tgavan_begin.rpy:181, это дополнение к имени, которое должно уже существовать) и чтения logic в script4_tgavan_gar.rpy. Выполняется ли какая-либо запись logic до чтения в nazad:1666, не установлено. Динамических присваиваний (setattr, globals, store) на это имя не нашёл. Это граница проверки: имя могло быть задано вне этих файлов или в сохранении, поэтому ошибка возможна, но крах не подтверждён.Заменено на sanity.logic <=4 (коммит 2172e8e); get_level("mad") >=1 и порог <=4 сохранены.исправлено в ветке
script3_nazad.rpy:1638, 1655, 1660Переменная t_pr (героиня извинилась) читается в reason_ser (b9: 1655, 1660), а задаётся тремя пунктами извинений (b9: 1638, 1703, 1733). Чтение подтверждено: при (tpp == 2 или td5.d10 == 1) условие 1731 читает t_pr. До коммита 9f6f6c3 определений t_pr (default/define/init python) в 46 файлах .rpy папки game не было, строка 1579 «# $ t_pr = False» закомментирована; динамических присваиваний не нашёл. Граница проверки: имя могло быть задано вне этих файлов, поэтому ошибка NameError возможна (если игрок выбрал две причины, не извинившись, и t_pr ещё не задана), но крах не подтверждён.Добавлено начальное «$ t_pr = False» в game/script _define.rpy, в label define_label рядом с остальными флагами, после «$ tash_game = 0» (коммит 9f6f6c3, ветка fix/bugs-viy-demo-oct20). Закомментированная строка 1579 и ветки извинений не тронуты; сброса перед разговором нет. Определение выполняется при новой игре (label start → define_label), как у соседних флагов.исправлено в ветке
live2d.rpy:138-144, script_newscreens.rpy:511Было: в словарь цели перетаскивания записана функция has_tash_pen без вызова («[375, 180], [500, 740], has_tash_pen»), а при перетаскивании проверяется «if value[2]:». Функция как значение всегда истинна, поэтому условие функции (не razg = «tash», tash.lock = less_tashroad_tash, my_location.name = less_tashroad_tash) в этой проверке не участвует. Затронуты только предметы, для которых есть метка «tash_<предмет>» или «<предмет>_tash» (в файлах: tash_tash_card, tash_pen_diary, tash_diary); для остальных переход не происходит. Основной drag Таши (script_npc_items.rpy:138-162) показывается по тому же условию, поэтому обход возможен, когда Таши на экране нет. Проверено только по чтению кода, в игре не воспроизводилось; вызов функции в другом месте не нашёл (grep по game/*.rpy).Исправлено: «if value[2]:» → «if value[2]():» (script_newscreens.rpy:511, коммит 8b8097e); функция вызывается при каждом отпускании предмета, определение в live2d.rpy не менялось. Других записей в _drag_list нет, поэтому вызов допустим.исправлено в ветке
script_2_less_conv.rpy:1105; script3_tgavan_oh.rpy:702, 1303Говорящие «мь» и «щ» (старая копия: conv:1105, tgavan_oh:702, 1303; в b9 таких строк в проверенных файлах нет) не определены как персонажи: определений мь и щ в 46 файлах .rpy папки game я не нашёл, сообщение об ошибке при запуске не проверялось. Предположение (гипотеза): по русской раскладке «мь» - это vm, «щ» - это o (реплики Стража? идут рядом), но говорящего задумал автор, это не подтверждено.Заменено: мь → vm (conv:1105), щ → o (tgavan_oh:702, 1303); коммит 9dd5799, ветка fix/bugs-viy-demo-oct20, ровно три строки, тексты реплик не менялись.исправлено в ветке
script_2_less_conv_amul.rpy:21Строка «$ less.mood - 4» только вычисляет разность и ничего не присваивает: настроение Лесса не меняется. Рядом (75) стоит «less.mood += 5».Заменено на «$ less.mood -= 4» (коммит dfe9c01, ветка fix/bugs-viy-demo-oct20). На схеме Лесса показано −4 на входе Хаба 2a, диапазон Хаба 2a пересчитан.исправлено в ветке
script.rpy:63-76 (add_mad), 108-121 (add_logic)Защита границ срабатывает в обе стороны: при Безумии ≥ 20 нельзя и уменьшить (add_mad возвращает без изменений), при Безумии ≤ −10 нельзя и увеличить; то же для Логики (≥ 15 и ≤ −10). Значение «залипает» на границе: с минимума оно уже не поднимается, с максимума не опускается. Достижимость границ в игре не проверена.Гипотеза: блокировать нужно только движение за границу (на максимуме запретить +, на минимуме −), а clamp max/min и так делает остальное. Решение за Кейт, в ветке не менялось.ждёт решения
script3_tgavan_begin.rpy:181После выбора «Я послушаю!» вместо характеристики прибавляется локальная переменная logic (не sanity.logic): 180 $ oh.mood += 1 / 181 $ logic += 1. По чтению кода бонус +1 логики теряется.Вероятно, должно быть $ sanity.add_logic(1).кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено
script3_tgavan_begin.rpy:890-912 (viy_menu)Два из четырёх вопросов Адриану показываются только при persistent.memory or pd_tgavan, но pd_tgavan в проверенном наборе файлов нигде не выставляется и не объявляется default — без persistent.memory эти опции недостижимы.Выставить pd_tgavan при соответствующем условии или заменить условие.кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено
script3_tgavan_begin.rpy:890 (viy_menu)При od3.d9 (вопрос «Что такое Белая Стража?» уже задан) без persistent.memory меню остаётся пустым, а после него идёт return: кабинет нельзя закрыть выбором «Я все узнала что хотела.» — по чтению кода это тупик без диалогового выхода.Показывать опцию выхода и в этом состоянии.кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено
script3_airat.rpy:981Вариант «Что ж... Нам не по пути.» (финал ветки «Успокоить её» на дороге в Айрат) завершается jump script_3_road_nodev_airat. Такой метки нет в проверенном наборе файлов (полный grep по *.rpy). Если метки нет и в полном репозитории, выбор этого варианта — падение на jump к несуществующей метке.Добавить метку или заменить переход.кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено; полнота набора файлов не установлена
script3_tgavan_begin.rpy:181После выбора «Я послушаю!» вместо характеристики прибавляется локальная переменная logic (не sanity.logic): 180 $ oh.mood += 1 / 181 $ logic += 1. По чтению кода бонус +1 логики теряется.Вероятно, должно быть $ sanity.add_logic(1).кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено
script3_tgavan_begin.rpy:890-912 (viy_menu)Два из четырёх вопросов Адриану показываются только при persistent.memory or pd_tgavan, но pd_tgavan в проверенном наборе файлов нигде не выставляется и не объявляется default — без persistent.memory эти опции недостижимы.Выставить pd_tgavan при соответствующем условии или заменить условие.кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено
script3_tgavan_begin.rpy:890 (viy_menu)При od3.d9 (вопрос «Что такое Белая Стража?» уже задан) без persistent.memory меню остаётся пустым, а после него идёт return: кабинет нельзя закрыть выбором «Я все узнала что хотела.» — по чтению кода это тупик без диалогового выхода.Показывать опцию выхода и в этом состоянии.кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено
script_inv_text.rpy:30Клик по пустой кружке «cap» в инвентаре вызывает Jump("cap"), но метки cap нет в проверенном наборе файлов (метки-переопределения cap_action_osm в геттере action, 116-117, тоже нет). Существующая метка cap_cap_ch (script_5_airat.rpy:847) нигде не вызывается. Если метки нет и в полном репозитории, осмотр кружки — падение на jump к несуществующей метке.Добавить метку cap (или cap_action_osm) либо подключить cap_cap_ch.кандидат: подтверждено только чтением исходников ветки fix/bugs-viy-demo-oct20 (b9bcc64), в runtime не воспроизведено; полнота набора файлов не установлена
script3_airat.rpy:385В разговоре с Девой про Стену и ловушки стоит $ quests["viy_quest"].append(10). У объекта квеста (класс quest, live2d.rpy:491) нет метода append, поэтому на этой реплике будет AttributeError. Во всех остальных местах так делается только через список ._note.append("строка"); число 10 в таком списке нигде не встречается. Что здесь задумывалось, из кода не видно.Заменено на quests["viy_quest"].diary.u_part(10, 1): запись 10 дневника «Узнать кто я» (сказка про Лес Смерти и белую стену) нигде больше не открывалась, а число 10 это индекс записи. Применено с согласия Кейт.исправлено в ветке fix/bugs-viy-demo-oct20; в runtime не проверено