Zilon_Roguelike
Zilon_Roguelike copied to clipboard
Сундуки, закрытые на замок
Сейчас все сундуки открыты. Открытие занимает 1 ход. Если сундук открыт, то это не должно требовать ходов.
Нужно сделать так, чтобы некоторые сундуки были закрыты на замок. Для открытия будут расходоваться ключи и отмычки. Сейчас не привязываться к типу ключей. То есть любым ключом можно будет открыть любой замок. Попробовать сделать это в тихом режиме. Если в инвентаре есть ключ, то сундук открывается, а ключ изымается. Потенциально, каждый замок будет требовать разный тип ключей (круглый, квадратный, костяной, именные ключи). Отмычки пока сделать аналогично ключам. В перспективе, отмычки, в отличии от ключей, можно будет использовать на любой замок, игнорируя тип ключа. И будет ведён навык взлома замков.
Сундуки обладают теми же характеристиками, что и двери в #213. Стоит подумать об объединении функционала под общим базовым классом или создании структуры с общими характеристиками (см. ISurvivalData).
Наилучший способ здесь - создание флага "Замок", случайное его выпадение и дальнейшая проверка "Если Замок, то пишу на вывод Закрыто"? В дальнейшем - добавить код для проверки отмычек, ключей (их ведь нет в коде сейчас, так?) и объединение с классом для дверей? Хотя это по сути удвоит работу, и выгоднее конечно, сначала написать общий код дверей и сундуков.
Дополнил описание задачи.
Предлагается более широкое решение. Создание структуры ILockData (аналогичной ISurvivalData). В ней будут указываться характеристики замка (тип требуемого ключа, уровень замка для взлома, возможно, эффекты после открытия). Структура будет присваиваться свойству запираемого объекта (сундука или двери (public ILockData Lock {get; set;}
)). Наличие значения означает, что объект заперт. Отсутствие значения (null
) означает, что объект открыт / замка не было.