Zilon_Roguelike icon indicating copy to clipboard operation
Zilon_Roguelike copied to clipboard

Сундуки, закрытые на замок

Open kreghek opened this issue 6 years ago • 2 comments

Сейчас все сундуки открыты. Открытие занимает 1 ход. Если сундук открыт, то это не должно требовать ходов.

Нужно сделать так, чтобы некоторые сундуки были закрыты на замок. Для открытия будут расходоваться ключи и отмычки. Сейчас не привязываться к типу ключей. То есть любым ключом можно будет открыть любой замок. Попробовать сделать это в тихом режиме. Если в инвентаре есть ключ, то сундук открывается, а ключ изымается. Потенциально, каждый замок будет требовать разный тип ключей (круглый, квадратный, костяной, именные ключи). Отмычки пока сделать аналогично ключам. В перспективе, отмычки, в отличии от ключей, можно будет использовать на любой замок, игнорируя тип ключа. И будет ведён навык взлома замков.

Сундуки обладают теми же характеристиками, что и двери в #213. Стоит подумать об объединении функционала под общим базовым классом или создании структуры с общими характеристиками (см. ISurvivalData).

kreghek avatar Jan 19 '19 02:01 kreghek

Наилучший способ здесь - создание флага "Замок", случайное его выпадение и дальнейшая проверка "Если Замок, то пишу на вывод Закрыто"? В дальнейшем - добавить код для проверки отмычек, ключей (их ведь нет в коде сейчас, так?) и объединение с классом для дверей? Хотя это по сути удвоит работу, и выгоднее конечно, сначала написать общий код дверей и сундуков.

DobryakK555 avatar Jan 28 '19 11:01 DobryakK555

Дополнил описание задачи.

Предлагается более широкое решение. Создание структуры ILockData (аналогичной ISurvivalData). В ней будут указываться характеристики замка (тип требуемого ключа, уровень замка для взлома, возможно, эффекты после открытия). Структура будет присваиваться свойству запираемого объекта (сундука или двери (public ILockData Lock {get; set;})). Наличие значения означает, что объект заперт. Отсутствие значения (null) означает, что объект открыт / замка не было.

kreghek avatar Jan 29 '19 02:01 kreghek