Давайте сделаем рогалик (Балансируем атаки монстров)

На данном этапе мы можем добавить некоторые хитрости, которые улучшат игровой процесс. В текущей версии монстры получились достаточно сильными и играть очень тяжело. Мы должны исправить это, и сделать это очень просто. Мы добавим коэффициент масштабирования, зависящий от глубины уровня подземелья, который будет изменять наносимый монстрами урон. Нам необходимо добиться уменьшение величины урона, наносимого монстрами, на какую то величину, зависящую от глубины уровня подземелья, которая будет уменьшаться со спуском персонажа на более глубокие уровни, пока наносимый монстрами урон не достигнет своего максимального значения. К тому времени, как игрок достигнет самого глубокого уровня, его персонаж должен быть достаточно сильным, чтобы справится с дерущимися без поблажек монстрами.
Масштабирование мы будем осуществлять в подпрограмме GenerateMonster.

monster.bi

Sub GenerateMonster(mon As montype, currlevel As Integer)
    Dim As invtype inv
    Dim scaling As Integer   'Коэффициент масштабирования атрибутов монстра.
    Dim stratt As Integer    'Сила
    Dim staatt As Integer    'Выносливость
    Dim dexatt As Integer    'Ловкость
    Dim aglatt As Integer    'Подвижность
    Dim intatt As Integer    'Интеллект
    Dim ucfsk As Integer     'Навык безоружного боя
    Dim acfsk As Integer     'Навык использования оружия
    Dim pcfsk As Integer     'Навык использования дистанционного оружия
    Dim pct As Double        'Процент масштабирования.
   'Рассчитаем текущий процент масштабирования, зависящий от глубины уровня.
    pct = currlevel / maxlevel
 ...


Мы добавили новую переменную pct, которая содержит процент масштабирования зависящий от глубины уровня содержащейся в переменной currlevel. Для первого уровня ptc будет равно 0.02, для максимального — 1.

После получения урона, наносимого монстром, мы должны умножить его на полученный коэффициент.

monster.bi

...
  'Зададим уровень здоровья и максимального здоровья.
  mon.xp = mon.currhp
  'Применим коэффициент масштабирования для атаки.
  mon.atkdam = mon.atkdam * pct
  If mon.atkdam < 1 Then mon.atkdam = 1
 End Sub


Так, например, если монстр наносит 30 единиц урона, то на первом уровне он будет наносить 0.6 округленное до 1, т. е. будет наносить всего 1 единицу повреждений. На последнем уровне подземелья этот же монстр будет наносить все, положенные ему, 30 единиц повреждений.

Всего несколько строк кода, а в результате у нас монстры, которым игрок все же сможет противостоять.

Перевод на русский: Fantik

содержание | назад | вперед