Подбор кроватей: включены те, что становятся точкой возрождения
Исправление промаха по цели. Кровати класса SleepingBag (bed02*, bunkBed*) были исключены из подбора НАМЕРЕННО, с формулировкой "это respawn-anchor блоки, не декорация, трогать не просил" - и подбирались только декоративные bedMadeNoFrame*/bedMessyNoFrame*. Пользователь объяснил, что смысл подбора кроватей ровно обратный: "поглощённые блоки сохраняют состояние, которое было до поглощения. Кровати до поглощения не являются точкой возрождения. Точкой возрождения они могли бы стать при подборе". То есть мы подбирали ровно те кровати, которые не нужны, и не подбирали те, ради которых всё затевалось. Проверено декомпиляцией BlockSleepingBag: PlaceBlock ставит игроку selectedSpawnPointKey и запоминает BedrollPos - поставленная своими руками кровать действительно становится точкой возрождения, а стоящая в POI нет. Значит подбор и поглощение браслетом решают РАЗНЫЕ задачи. Новых патчей не понадобилось, и это проверялось до правки: BlockSleepingBag переопределяет только CanPlaceBlockAt, PlaceBlock, GetActivationText и ЧЕТЫРЁХаргументный OnBlockActivated. Наши три патча висят на HasBlockActivationCommands, GetBlockActivationCommands и ПЯТИаргументном OnBlockActivated - ни одного из них он не перекрывает. С BlockCompositeTileEntity (кулеры, коробки) в своё время так не вышло и понадобился отдельный набор. Добавлены два префикса: bed02 и bunkBed. Полсотни цветовых вариантов наследуют Class="SleepingBag" через Extends и покрываются ими же. bedroll НЕ включён: собственный предмет игрока, ставится и снимается штатно, а bedrollPOI от него не наследуется и точкой возрождения не является. В ИГРЕ НЕ ПРОВЕРЕНО. Смотреть надо одно: становится ли поднятая и заново поставленная кровать точкой возрождения на самом деле. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d97f83e972
commit
b6a892cadd
@@ -43,7 +43,17 @@ namespace NecromancerTome
|
||||
/// Data/Config/blocks.xml block names (checked directly, matched by name PREFIX since most
|
||||
/// categories have many color/variant blocks) - tell me if any of these aren't what was
|
||||
/// meant, this is an interpretation, not a spec:
|
||||
/// - "Кровати" (beds) -> bedMadeNoFrame*/bedMessyNoFrame* ONLY. Deliberately excludes
|
||||
/// - ОБНОВЛЕНО 2026-09-18: кровати класса SleepingBag (bed02*, bunkBed*) ТЕПЕРЬ ВКЛЮЧЕНЫ,
|
||||
/// см. комментарий в TargetPrefixes. НОВЫХ ПАТЧЕЙ ДЛЯ НИХ НЕ ПОНАДОБИЛОСЬ, и это стоило
|
||||
/// проверить: BlockSleepingBag переопределяет только CanPlaceBlockAt, PlaceBlock,
|
||||
/// GetActivationText и ЧЕТЫРЁХаргументный OnBlockActivated. Наши три патча висят на
|
||||
/// HasBlockActivationCommands, GetBlockActivationCommands и ПЯТИаргументном
|
||||
/// OnBlockActivated - ни одного из них он не перекрывает, поэтому патчи базового Block
|
||||
/// достают его как есть. С BlockCompositeTileEntity (кулеры, коробки) так не вышло -
|
||||
/// там понадобился отдельный набор, см. ниже.
|
||||
///
|
||||
/// - Исходная формулировка, оставлена для истории:
|
||||
/// "Кровати" (beds) -> bedMadeNoFrame*/bedMessyNoFrame* ONLY. Deliberately excludes
|
||||
/// bed02*/bunkBedMade*/bunkBedMessy* even though they look like beds too - decompiling
|
||||
/// showed those all use Class="SleepingBag" (they're actually functional sleeping-bag/
|
||||
/// respawn-anchor blocks, not pure decoration - same family as the player's own bedroll,
|
||||
@@ -74,6 +84,27 @@ namespace NecromancerTome
|
||||
{
|
||||
"bedMadeNoFrame",
|
||||
"bedMessyNoFrame",
|
||||
// ДОБАВЛЕНО 2026-09-18, И ЭТО ИСПРАВЛЕНИЕ ПРОМАХА ПО ЦЕЛИ. Изначально эти кровати были
|
||||
// исключены НАМЕРЕННО, с формулировкой "это respawn-anchor блоки, не декорация,
|
||||
// трогать не просил". Оказалось ровно наоборот: пользователь объяснил, что подбор
|
||||
// кроватей нужен ИМЕННО ради возрождения - "поглощённые блоки сохраняют состояние,
|
||||
// которое было до поглощения; кровати до поглощения не являются точкой возрождения;
|
||||
// точкой возрождения они могли бы стать при подборе".
|
||||
//
|
||||
// Проверено декомпиляцией BlockSleepingBag: PlaceBlock ставит игроку
|
||||
// selectedSpawnPointKey и запоминает BedrollPos - то есть поставленная своими руками
|
||||
// кровать действительно становится точкой возрождения, а стоящая в POI - нет.
|
||||
//
|
||||
// Один префикс покрывает все цветовые варианты: bed02White, bunkBedMessyBlue и прочие
|
||||
// наследуют Class="SleepingBag" через Extends от bed02 / bunkBedMade.
|
||||
// Вместе с bunkBed* попадают bunkBedFrame и bunkBedMattress - у них класса нет, они
|
||||
// просто декор, и подбирать их не вредно.
|
||||
//
|
||||
// bedroll НЕ включён намеренно: это собственный предмет игрока, он и так ставится и
|
||||
// снимается штатно, а bedrollPOI - отдельный декоративный блок, который от bedroll не
|
||||
// наследуется и точкой возрождения не является.
|
||||
"bed02",
|
||||
"bunkBed",
|
||||
"cntWaterCooler",
|
||||
"cntCardboardBox",
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user