Исправление промаха по цели. Кровати класса 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>