DECORATE. Добавляем поверапы (1).

Предисловие

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

Подготовка

Скачайте пак картинок на MEGA. И импортируйте их в свой wad между маркерами S_START и S_END, также не забывайте про смещение. Подробно узнать узнать про импортирование спрайтов и смещение, можно здесь.

Затем откройте файл DECORATE в своем ваде. И скопируйте туда следующий код.

actor power1 : PowerupGiver 10010
{
  inventory.pickupmessage "you got a powerup"
  powerup.duration 1000
  powerup.type "Invulnerable"
  +COUNTITEM
  +Floatbob
  +INVENTORY.AUTOACTIVATE
  states
  {
  Spawn:
    GODM A -1
	stop
  }
}

Разберем этот код.

actor power1 : PowerupGiver 10010

Чтобы создать поверап, нужно создать актор который будет наследоваться от PowerupGiver, что мы и сделали.

inventory.pickupmessage "you got a powerup"

inventory.pickupmessage — указывает сообщение, которое появляется когда подбираешь поверап.

powerup.duration 1000

powerup.duration — указывает время действия поверапа в тиках (1 секунда = 35 тиков)

powerup.type "Invulnerable"

powerup.type — указывает тип поверапа, в зависимости от типа будет меняться и эффект поверапа. Например: Invulnerable — дает бессмертие, Speed — дает скорость, Flight — дает полет.

+COUNTITEM

+COUNTITEM — флаг, который делает так, чтобы данный поверап учитывался в подсчете статистики (в конце уровня).

+Floatbob

+Floatbob — флаг, который делает данный актор — парящим (перемещается вверх/вниз).

+INVENTORY.AUTOACTIVATE

+INVENTORY.AUTOACTIVATE — данный флаг активирует поверап при поднятии. Дело в том что, когда ты соприкасаешься с поверапом, он добавляется к тебе в инвентарь (хотя ты этого не видишь), чтобы он не добавлялся в инвентарь, а сразу же активировался, я использовал данный флаг.

states
  {
  Spawn:
    GODM A -1
	stop
  }

Стейт Spawn я подробно рассматривал здесь.

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

Нужно больше поверапов.

По аналогии я создал кучу поверапов. Они все одинаковые, за исключением картинки и типа поверапа.

actor power2 : power1 10011
{
	powerup.type "Strength"
	states
	{
	Spawn:
		STRG A -1
		stop
	}
}

actor power3 : power1 10012
{
	powerup.type "Invisibility"
	states
	{
	Spawn:
		BLND A -1
		stop
	}
}

actor power4 : power1 10013
{
	powerup.type "Flight"
	states
	{
	Spawn:
		FLIG A -1
		stop
	}
}

actor power5 : power1 10014
{
	powerup.type "LightAmp"
	states
	{
	Spawn:
		LIGH A -1
		stop
	}
}

actor power6 : power1 10015
{
	powerup.type "Speed"
	states
	{
	Spawn:
		SPDP A -1
		stop
	}
}

actor power7 : power1 10016
{
	powerup.type "Frightener"
	states
	{
	Spawn:
		FRIG A -1
		stop
	}
}

actor power8 : power1 10017
{
	powerup.type "Drain"
	states
	{
	Spawn:
		VAMP A -1
		stop
	}
}

actor power9 : power1 10018
{
	powerup.type "TimeFreezer"
	Scale 0.1
	states
	{
	Spawn:
		ZAVA A -1
		stop
	}
}

actor power10 : power1 10019
{
	powerup.type "Regeneration"
	states
	{
	Spawn:
		REGN A -1
		stop
	}
}

actor power11 : power1 10020
{
	powerup.type "HighJump"
	states
	{
	Spawn:
		HIJP A -1
		stop
	}
}

Также у power9 я использовал комманду «Scale 0.1» чтобы уменьшить картинку поверапа в 10 раз.

В итоге мы имеем 11 поверапов:

  • Пиво — бессмертие power1
  • Гантеля — Увеличение силы power2
  • Закрытый аниме глаз — невидимость power3
  • Крылья — полет power4
  • Сверкающие очки — очки ночного видения power5
  • Красные ботинки — ускорение power6
  • Коронавирус — поверап, который отпугивает всех монстров, в поле зрения. power7
  • Ребенок вампир — вампиризм power8
  • ZAVARDO — остановка времени power9
  • Часы с плюсиками — регенирация power10
  • Воздушные ботинки — высокий прыжок. power11

Итоговый результат.