Основная статья -- ZDoom wiki, "Using ZIPs as WAD replacement" (раздел "How to"). Там перечислены директории, в которые нужно закидывать соответствующие ресурсы, а также аналоги этих директорий в WAD. К примеру из статьи: все спрайты, которые в WAD лежали между "S_START" ("SS_START") и "S_END" ("SS_END"), необходимо положить в "sprites/".
Здраствуйте,помогите найти ответы на некоторые вопросы, которые щекочут мой мозг по ночам.
1.Какие пределы по linedef\'ам, сегментам и т.д для ванили? И как все с этим обстоит в наши дни, при каком лимите можно обреченно вздыхать и идти объединять сектора и удалять лишние verticle\'ы?
2.Можно ли как-нибудь в udf или win-7 соместимых мап эдиторах посмотреть количество visplane\'ов? Не то чтобы я забочусь об оптимизации карты, но если бы она неплохо крутилась на 486х и первопнях, да и вообще была бы совместима с оригиналом doom - это было бы неплохо, как минимум. А то вроде бы лимит visplane\'ов с самого бума было пофикшен вроде, да?
3.В half-life при построении уровня советовалось для оптимизации компиляции bsp делать уровни с длинами в степенях двойки, как обстоят с этим дела в doom и его портах?
3.Вопросы есть ещё по работе крашеров
3.1 Как коммьюнити воспринимаются артефакты от отсутствия текстур. Хочется сделать что то типа магнита-убийцы с помощью крашера без текстур по сайдам, но они отливают артефактами типа \"увидел отсутствующую текстуру на стене и там всё плывёт\", но это будет длиться не более полусекунды при высоте сектора 64.
3.2 Еще вопрос стоит касательно коллизии крашера со спрайтом бочки. Делал ее подрыв микрокрашерами(4x4 маппикселя и меньше) с отсутстующей текстурой чтобы имитировать подрыв взрывчаткой и было не так заметно. потолочный крашер работает как часы, но изза звука его работы ломается восприятие подрыва самой бочки. Поэтому было принято решение экспериментировать с напольным крашером, но я заметил, что он срабатывает не всегда, а конкретно - почти никогда. Даже когда он срабатывает, то после перезапуска карты пять раз может не сработать. Я игрался с различными высотами пола и потолка этого крашера, а также с размерами, но не выявил толком ни минимальной высоты сектора для работы данного трюка ни закономерности удачных подрывов. Единственное, что я понял - этим можно оперировать чтобы как то привнести элемент случайности, однако напольный сектор при смыкании имеет непроходимость и выпирает.И юзать такое наверное лучше где то в недосягаемой игроком зоне. Есть ли у кого наблюдения по этому поводу?
Извините за оч длинный вопрос 3.2, но по короче формулировки не пришли в голову
1.Какие пределы по linedef\'ам, сегментам и т.д для ванили? И как все с этим обстоит в наши дни, при каком лимите можно обреченно вздыхать и идти объединять сектора и удалять лишние verticle\'ы?
https://doomwiki.org/wiki/Static_limits В наши дни обстоят дела так, что если ты не под ваниль маппишь, а под бум, то лимитов нет (разве что по линейным размерам карты, там нодбилдер ломается если размеры больше 32767х32767, если ничего не путаю)
2.Можно ли как-нибудь в udf или win-7 соместимых мап эдиторах посмотреть количество visplane\'ов? Не то чтобы я забочусь об оптимизации карты, но если бы она неплохо крутилась на 486х и первопнях, да и вообще была бы совместима с оригиналом doom - это было бы неплохо, как минимум. А то вроде бы лимит visplane\'ов с самого бума было пофикшен вроде, да?
Visplane Explorer в редакторе UDB (возможно и в других производных). Да, в буме всё в порядке будет.
3.В half-life при построении уровня советовалось для оптимизации компиляции bsp делать уровни с длинами в степенях двойки, как обстоят с этим дела в doom и его портах?
3.1 Как коммьюнити воспринимаются артефакты от отсутствия текстур. Хочется сделать что то типа магнита-убийцы с помощью крашера без текстур по сайдам, но они отливают артефактами типа \"увидел отсутствующую текстуру на стене и там всё плывёт\", но это будет длиться не более полусекунды при высоте сектора 64.
3.2 Еще вопрос стоит касательно коллизии крашера со спрайтом бочки. Делал ее подрыв микрокрашерами(4x4 маппикселя и меньше) с отсутстующей текстурой чтобы имитировать подрыв взрывчаткой и было не так заметно. потолочный крашер работает как часы, но изза звука его работы ломается восприятие подрыва самой бочки.
Если не ошибаюсь, звук проигрывается из геометрического центра -- поэтому можно просто объединить сектор с потолочным прессом с другим, расположенным далеко за пределами карты.
если требуется скрыть Худ весь - то нажать кнопку +
Не-не-не, это я с 9 лет знаю. Мне нужно чтобы не было Худа и оружия, просто летающая камера. Нашёл всё в гоззе, кроме отключения отображения пушки.
Без udmf, если что
Апдейт: нашёл, что искал. По очереди просматривал в консоли команды. Весь Худ и оружие можно скрыть с помощью команды togglehud, даже рамка при смене масштаба исчезает, вместо нее заливка чёрным цветом. Но при возврате в меню или открытии консоли Худ снова виден, так что при постоянном использовании лучше эту команду забиндить
По нажатию на прямой слэш вызывался алиас "toggle_r_drawplayersprites", который осуществлял переключение переменной "r_drawplayersprites" с нуля до единицы и наоборот (а точнее, через "r_drawplayersprites = ( r_drawplayersprites + 1 ) % 2").
Извините за глупые вопросы. Карта в UDMF это ведь просто текстовый файл? Почему Ultimate DB не загружает карту в виде тектового файла?
И вообще, возможно ли загрузить карту в какой-либо порт не из wad файла, а непосредственно из текстового файла udmf, который размещается в pk3?
Привет, сто лет не появлялся.
Вопрос такой, как то давно я спрашивал как создать кошмарного Арча, что бы он мог воскрешать только кошмарных монстров, а простой Арч только простых. Мне подсказали код, поскольку сам не шарю, но вот спустя приличный срок выяснилось, что этот код убивает фпс почти под ноль. Если монстров на карте несколько десятков(любых и простых и кошмарных) и в режиме смерти(пока лежит труп монстра), фпс падает. Каждая смерть монстра подкашивает фпс сильнее и сильнее(одного и того же). Пока монстры живы проблем нет. Думаю проблема где то в Death.Wait или Death.HelpMe но могу ошибаться.
Долго сидел и смотрел на код, декорейта(я даже его плохо знаю, поэтому не предлогайте Zскрипт) и так и не понял в чём дело. Прошу помочь найти косяк в коде, пожалуйста, и примеры кода:
Простой зомби:
Скрытый текст:
Actor HOTDZombieMan : ZombieMan Replaces ZombieMan
{ DropItem "DropPistol" 256
States
{ Death:
POSS H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
POSS I 5 A_Scream
TNT1 A 0 A_DropItem( "DropPistol" )
POSS J 0 A_UnsetShootable
POSS J 5 A_UnsetSolid
POSS K 5
Death.Wait:
POSS L 5
POSS L 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
POSS L 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
POSS L 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
POSS U 77777
Wait
Raise:
POSS K 5 A_SetScale(1.0)
POSS JIH 5
Goto See
Raise2:
POSS L -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Кошмарный Зомби:
Скрытый текст:
Actor NmZombieMan 7401
{ SpawnID 1004
Health 40
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Speed 8
PainChance 200
Monster
+FLOORCLIP -COUNTKILL
Seesound "grunt/sight"
Attacksound "grunt/attack"
Painsound "grunt/pain"
Deathsound "grunt/death"
Activesound "grunt/active"
Obituary "%o was killed by a Nightmare Former Human."
States
{ Spawn:
POS2 AB 10 A_Look
Loop
See:
POS2 AABBCCDD 4 A_Chase
Loop
Missile:
POS2 E 10 A_FaceTarget
POS2 F 4 BRIGHT A_CPosAttack
POS2 E 6 A_FaceTarget
POS2 F 4 BRIGHT A_CPosAttack
POS2 E 1 A_CPosRefire
Goto See
Pain:
POS2 G 3
POS2 G 3 A_Pain
Goto See
Death:
POS2 H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
POS2 I 5 A_Scream
TNT1 A 0 A_DropItem( "DropPistol" )
TNT1 A 0 A_DropItem( "DropPistol" )
POS2 J 0 A_UnsetShootable
POS2 J 5 A_UnsetSolid
POS2 K 5
Death.Wait:
POS2 L 5
POS2 L 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
POS2 L 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
POS2 L 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
XDeath:
POS2 M 5
POS2 N 5 A_XScream
POS2 O 5 A_NoBlocking
POS2 PQRST 5
POS2 U 77777
Wait
Raise:
POS2 K 5 A_SetScale(1.0)
POS2 JIH 5
Goto See
Raise2:
POS2 L -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Ну и общий декорейт со всеми монстрами от куда взял код зомбарей:
Скрытый текст:
Actor HOTDZombieMan : ZombieMan Replaces ZombieMan
{ DropItem "DropPistol" 256
States
{ Death:
POSS H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
POSS I 5 A_Scream
TNT1 A 0 A_DropItem( "DropPistol" )
POSS J 0 A_UnsetShootable
POSS J 5 A_UnsetSolid //A_NoBlocking
POSS K 5
//POSS L -1
//Stop
Death.Wait:
POSS L 5
POSS L 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
POSS L 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
POSS L 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
XDeath:
POSS M 5
POSS N 5 A_XScream
POSS O 5 A_NoBlocking
POSS PQRST 5
POSS U 77777
Wait
Raise:
POSS K 5 A_SetScale(1.0)
POSS JIH 5
Goto See
Raise2:
POSS L -1
Stop
Crush:
//POL5 A 0 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDShotgunGuy : ShotgunGuy Replaces ShotgunGuy
{ States
{ Death:
SPOS H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SPOS I 5 A_Scream
TNT1 A 0 A_DropItem( "Shotgun" )
SPOS J 0 A_UnsetShootable
SPOS J 5 A_UnsetSolid //A_NoBlocking
SPOS K 5
//SPOS L -1
//Stop
Death.Wait:
SPOS L 5
SPOS L 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
SPOS L 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
SPOS L 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
XDeath:
SPOS M 5
SPOS N 5 A_XScream
SPOS O 5 A_NoBlocking
SPOS PQRST 5
SPOS U 77777
Wait
Raise:
SPOS L 5 A_SetScale(1.0)
SPOS KJIH 5
Goto See
Raise2:
SPOS L -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDChaingunGuy : ChaingunGuy Replaces ChaingunGuy
{ AttackSound "grunt/attack"
States
{ Death:
CPOS H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
CPOS I 5 A_Scream
TNT1 A 0 A_DropItem( "Chaingun" )
CPOS J 0 A_UnsetShootable
CPOS J 5 A_UnsetSolid //A_NoBlocking //
CPOS KLM 5
//CPOS N -1
//Stop
Death.Wait:
CPOS N 5
CPOS N 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
CPOS N 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
CPOS N 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
XDeath:
CPOS O 5
CPOS P 5 A_XScream
CPOS Q 5 A_NoBlocking
CPOS RS 5
CPOS T 77777
Wait
Raise:
CPOS N 5 A_SetScale(1.0)
CPOS MLKJIH 5
goto See
Raise2:
CPOS N -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDImp : DoomImp Replaces DoomImp
{ States
{ Spawn:
TROO AB 10 A_Look
Loop
See:
TROO AABBCCDD 3 A_Chase
Loop
Melee:
Missile:
TROO EF 8 A_FaceTarget
TROO G 6 A_TroopAttack
Goto See
Pain:
TROO H 2
TROO H 2 A_Pain
Goto See
Death:
TROO I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
TROO J 8 A_Scream
TROO K 0 A_UnsetShootable
TROO K 6 A_UnsetSolid //A_NoBlocking //
TROO L 6
//TROO M -1
//Stop
Death.Wait:
TROO M 5
TROO M 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
TROO M 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
TROO M 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
XDeath:
TROO N 5
TROO O 5 A_XScream
TROO P 5
TROO Q 5 A_NoBlocking
TROO RST 5
TROO U 77777
Wait
Raise:
TROO M 8 A_SetScale(1.0)
TROO LKJI 8
Goto See
Raise2:
TROO M -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDDemon : Demon Replaces Demon
{ States
{ Death:
SARG I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SARG J 8 A_Scream
SARG K 4
SARG L 0 A_UnsetShootable
SARG L 4 A_UnsetSolid //A_NoBlocking //
SARG M 4
//SARG N -1
//Stop
Death.Wait:
SARG N 1
SARG N 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
SARG N 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
SARG N 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
Raise:
SARG N 5 A_SetScale(1.0)
SARG MLKJI 5
Goto See
Raise2:
SARG N -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDSpectre : HOTDDemon Replaces Spectre
{ +SHADOW
RenderStyle Translucent
Alpha 0.5
SeeSound "spectre/sight"
AttackSound "spectre/melee"
PainSound "spectre/pain"
DeathSound "spectre/death"
ActiveSound "spectre/active"
HitObituary "%o was eaten by a Spectre."
}
Actor HOTDCacodemon : Cacodemon Replaces Cacodemon
{ Bloodcolor 0 0 192
States
{ Death:
HEAD G 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
HEAD H 8 A_Scream
HEAD I 8
HEAD J 0 A_UnsetShootable
HEAD J 8 A_UnsetSolid //A_NoBlocking //
HEAD K 8 A_SetFloorClip
//HEAD L -1
//Stop
Death.Wait:
HEAD L 1 //A_SetFloorClip
HEAD L 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
HEAD L 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
HEAD L 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
Raise:
HEAD L 8 A_UnSetFloorClip
HEAD K 8 A_SetScale(1.0)
HEAD JIHG 8
Goto See
Raise2:
HEAD L -1
Stop
Crush:
PON1 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDHellKnight : HellKnight Replaces HellKnight
{ Bloodcolor 32 72 32
States
{ Death:
BOS2 I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
BOS2 J 8 A_Scream
BOS2 K 8
BOS2 L 0 A_UnsetShootable
BOS2 L 8 A_UnsetSolid //A_NoBlocking //
BOS2 MN 8
//BOS2 O -1
//Stop
Death.Wait:
BOS2 O 1
BOS2 O 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
BOS2 O 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
BOS2 O 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
Raise:
BOS2 O 8 A_SetScale(1.0)
BOS2 NMLKJI 8
Goto See
Raise2:
BOS2 O -1
Stop
Crush:
PON2 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDBaronOfHell : BaronOfHell Replaces BaronOfHell
{ Bloodcolor 32 72 32
States
{ Death:
BOSS I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
BOSS J 8 A_Scream
BOSS K 8
BOSS L 0 A_UnsetShootable
BOSS L 8 A_UnsetSolid //A_NoBlocking //
BOSS M 8
BOSS N 8 A_BossDeath
//BOSS O -1 A_BossDeath
//Stop
Death.Wait:
BOSS O 1
BOSS O 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
BOSS O 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
BOSS O 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
Raise:
BOSS O 8 A_SetScale(1.0)
BOSS NMLKJI 8
Goto See
Raise2:
BOSS O -1
Stop
Crush:
PON2 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDRevenant : Revenant Replaces Revenant
{ States
{ Death:
SKEL L 7 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SKEL M 7
SKEL N 7 A_Scream
SKEL O 0 A_UnsetShootable
SKEL O 7 A_UnsetSolid //A_NoBlocking //
SKEL P 7
//SKEL Q -1
//Stop
Death.Wait:
SKEL Q 1
SKEL Q 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
SKEL Q 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
SKEL Q 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
Raise:
SKEL Q 5 A_SetScale(1.0)
SKEL PONML 5
Goto See
Raise2:
SKEL Q -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDArachnotron : Arachnotron Replaces Arachnotron
{ States
{ Death:
BSPI J 0 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
BSPI J 20 A_Scream
BSPI K 0 A_UnsetShootable
BSPI K 7 A_UnsetSolid //A_NoBlocking //
BSPI LMN 7
BSPI O 7 A_BossDeath
//BSPI P -1 A_BossDeath
//Stop
Death.Wait:
BSPI P 1
BSPI P 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 128 )
Loop
Death.HelpMe:
BSPI P 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 128 )
BSPI P 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 128 )
Goto Death.Wait
Raise:
BSPI P 5 A_SetScale(1.0)
BSPI ONMLKJ 5
Goto See+1
Raise2:
BSPI P -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDFatso : Fatso Replaces Fatso
{ States
{ Death:
FATT K 6 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
FATT L 6 A_Scream
FATT M 0 A_UnsetShootable
FATT M 6 A_UnsetSolid //A_NoBlocking //
FATT NOPQR 6
FATT S 6 A_BossDeath
//FATT T -1 A_BossDeath
//Stop
Death.Wait:
FATT T 1
FATT T 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 96 )
Loop
Death.HelpMe:
FATT T 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 96 )
FATT T 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 96 )
Goto Death.Wait
Raise:
FATT R 5 A_SetScale(1.0)
FATT QPONMLK 5
Goto See
Raise2:
FATT T -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor HOTDWolfensteinSS : WolfensteinSS Replaces WolfensteinSS
{ States
{ Death:
SSWV I 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SSWV J 0 A_UnsetShootable
SSWV J 5 A_Scream
SSWV K 0 A_UnsetSolid //A_NoBlocking
SSWV KL 5
//SSWV M -1
//Stop
Death.Wait:
SSWV M 1
SSWV M 0 A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Loop
Death.HelpMe:
SSWV M 1 CanRaise A_CheckProximity( "Death.Wait", "NmArchvile", 64 )
SSWV M 0 CanRaise A_CheckProximity( "Death.HelpMe", "HOTDArchvile", 64 )
Goto Death.Wait
XDeath:
SSWV N 5
SSWV O 5 A_XScream
SSWV P 5 A_NoBlocking
SSWV QRSTU 5
SSWV V 77777
Wait
Raise:
SSWV M 5 A_SetScale(1.0)
SSWV LKJI 5
Goto See
Raise2:
SSWV M -1
Stop
Crush:
POL5 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
//=======NIGHTMARE=================
Actor NmZombieMan 7401
{ SpawnID 1004
Health 40
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Speed 8
PainChance 200
Monster
+FLOORCLIP -COUNTKILL
Seesound "grunt/sight"
Attacksound "grunt/attack"
Painsound "grunt/pain"
Deathsound "grunt/death"
Activesound "grunt/active"
//DropItem "DropPistol" 256
//DropItem "DropPistol" 256
Obituary "%o was killed by a Nightmare Former Human."
States
{ Spawn:
POS2 AB 10 A_Look
Loop
See:
POS2 AABBCCDD 4 A_Chase
Loop
Missile:
POS2 E 10 A_FaceTarget
POS2 F 4 BRIGHT A_CPosAttack
POS2 E 6 A_FaceTarget
POS2 F 4 BRIGHT A_CPosAttack
POS2 E 1 A_CPosRefire
Goto See//Missile//+1
Pain:
POS2 G 3
POS2 G 3 A_Pain
Goto See
Death:
POS2 H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
POS2 I 5 A_Scream
TNT1 A 0 A_DropItem( "DropPistol" )
TNT1 A 0 A_DropItem( "DropPistol" )
POS2 J 0 A_UnsetShootable
POS2 J 5 A_UnsetSolid //A_NoBlocking //
POS2 K 5
//POS2 L -1
//Stop
Goto Death.Wait
Death.Wait:
POS2 L 5
POS2 L 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
POS2 L 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
POS2 L 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
XDeath:
POS2 M 5
POS2 N 5 A_XScream
POS2 O 5 A_NoBlocking
POS2 PQRST 5
POS2 U 77777
Wait
Raise:
POS2 K 5 A_SetScale(1.0)
POS2 JIH 5
Goto See
Raise2:
POS2 L -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmShotgunGuy 7402
{ SpawnID 1001
Health 60
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Mass 100
Speed 8
PainChance 170
Monster
+FLOORCLIP -COUNTKILL
Seesound "shotguy/sight"
Attacksound "weapons/sshotf"
Painsound "shotguy/pain"
Deathsound "shotguy/death"
Activesound "shotguy/active"
//Dropitem "SuperShotgun" 256
Obituary "%o was shot by a Nightmare Sargeant."
States
{ Spawn:
SPO2 AB 10 A_Look
Loop
See:
SPO2 AABBCCDD 3 A_Chase
Loop
Missile:
SPO2 E 10 A_FaceTarget
SPO2 F 13 Bright A_CustomBulletAttack(11.2, 7.1, 20, 3, "BulletPuff")//(2, 2, 1, 20)
//(11.2, 7.1, 20_shtuk, 5_damage, "BulletPuff")
SPO2 E 10 A_FaceTarget
Goto See
Pain:
SPO2 G 3
SPO2 G 3 A_Pain
Goto See
Death:
SPO2 H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SPO2 I 5 A_Scream
TNT1 A 0 A_DropItem( "SuperShotgun" )
SPO2 J 0 A_UnsetShootable
SPO2 J 5 A_UnsetSolid //A_NoBlocking //
SPO2 K 5
//SPO2 L -1
//Stop
Death.Wait:
SPO2 L 5
SPO2 L 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
SPO2 L 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
SPO2 L 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
XDeath:
SPO2 M 5
SPO2 N 5 A_XScream
SPO2 O 5 A_NoBlocking
SPO2 PQRST 5
SPO2 U 77777
Wait
Raise:
SPO2 L 5 A_SetScale(1.0)
SPO2 KJIH 5
Goto See
Raise2:
SPO2 L -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmChaingunGuy 7403
{ SpawnID 1002
Health 140
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Mass 100
Speed 8
PainChance 170
Monster
+FLOORCLIP -COUNTKILL
Seesound "chainguy/sight"
Attacksound "grunt/attack" //"chainguy/attack"
Painsound "chainguy/pain"
Deathsound "chainguy/death"
Activesound "chainguy/active"
//Dropitem "Chaingun" 256
//Dropitem "Chaingun" 256
Obituary "%o was perforated by a Nightmare Chaingun Guy."
States
{ Spawn:
CPO2 AB 10 A_Look
Loop
See:
CPO2 AABBCCDD 3 A_Chase
Loop
Missile:
CPO2 E 10 A_FaceTarget
CPO2 FE 3 bright A_CPosAttack //4
CPO2 F 1 A_CPosRefire
Goto Missile+1
Pain:
CPO2 G 3
CPO2 G 3 A_Pain
Goto See
Death:
CPO2 H 5 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
CPO2 I 5 A_Scream
TNT1 A 0 A_DropItem( "Chaingun" )
TNT1 A 0 A_DropItem( "Chaingun" )
CPO2 J 0 A_UnsetShootable
CPO2 J 5 A_UnsetSolid //A_NoBlocking
CPO2 KLM 5
//CPO2 N -1
//Stop
Death.Wait:
CPO2 N 5
CPO2 N 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
CPO2 N 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
CPO2 N 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
XDeath:
CPO2 O 5
CPO2 P 5 A_XScream
CPO2 Q 5 A_NoBlocking
CPO2 RS 5
CPO2 T 77777
Wait
Raise:
CPO2 N 5 A_SetScale(1.0)
CPO2 MLKJIH 5
Goto See
Raise2:
CPO2 N -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmImp 7404
{ SpawnID 1005
Health 120
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Mass 100
Speed 8
PainChance 200
Monster
+FLOORCLIP -COUNTKILL
SeeSound "imp/sight"
PainSound "imp/pain"
DeathSound "imp/death"
ActiveSound "NmMonsters/active"
MeleeSound "imp/melee"
Obituary "%o was cursed by a Nightmare Imp."
HitObituary "%o was touched by a Nightmare Imp."
MissileType NmImpBall
States
{ Spawn:
TRO2 AB 10 A_Look
Loop
See:
TRO2 AABBCCDD 3 A_Chase
Loop
Melee:
Missile:
TRO2 EF 8 A_FaceTarget
TRO2 G 8 A_CustomComboAttack("NmImpBall", 32, 3 * random(1, 8), "imp/melee")
Goto See
Pain:
TRO2 H 2
TRO2 H 2 A_Pain
Goto See
Death:
TRO2 I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
TRO2 J 8 A_Scream
TRO2 K 0 A_UnsetShootable
TRO2 K 6 A_UnsetSolid //A_NoBlocking //
TRO2 L 6
//TRO2 M -1
//Stop
Death.Wait:
TRO2 M 5
TRO2 M 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
TRO2 M 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
TRO2 M 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
XDeath:
TRO2 N 5
TRO2 O 5 A_XScream
TRO2 P 5
TRO2 Q 5 A_NoBlocking
TRO2 RST 5
TRO2 U 77777
Wait
Raise:
TRO2 M 8 A_SetScale(1.0)
TRO2 LKJI 8
Goto See
Raise2:
TRO2 M -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmImpBall
{ SpawnID 1040
Scale 1.0
Radius 6
Height 8
Speed 15
FastSpeed 20
Damage 6
Projectile
+RANDOMIZE
RenderStyle Add
Alpha 1
SeeSound "NmBall/attack"
DeathSound "imp/shotx"
States
{ Spawn:
MAN2 AB 4 BRIGHT
Loop
Death:
BA21 CDE 6 BRIGHT
Stop
}
}
Actor NmSpectre 7406
{ SpawnID 1009
Health 300
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
PainChance 180
Speed 10
Radius 30
Height 56
Mass 400
Monster
+FLOORCLIP -COUNTKILL
SeeSound "demon/sight"
AttackSound "demon/melee"
PainSound "demon/pain"
DeathSound "demon/death"
ActiveSound "NmMonsters/active"
HitObituary "%o was eaten by a Nightmare Spectre."
States
{ Spawn:
SAR2 AB 10 A_Look
Loop
See:
SAR2 AABBCCDD 2 A_Chase
Loop
Melee:
SAR2 EF 8 A_FaceTarget
SAR2 G 8 A_SargAttack
Goto See
Pain:
SAR2 H 2
SAR2 H 2 A_Pain
Goto See
Death:
SAR2 I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SAR2 J 8 A_Scream
SAR2 K 4
SAR2 L 0 A_UnsetShootable
SAR2 L 4 A_UnsetSolid //A_NoBlocking //
SAR2 M 4
//SAR2 N -1
//Stop
Death.Wait:
SAR2 N 1
SAR2 N 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
SAR2 N 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
SAR2 N 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
Raise:
SAR2 N 5 A_SetScale(1.0)
SAR2 MLKJI 5
Goto See
Raise2:
SAR2 N -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmCacodemon 7407
{ SpawnID 1019
Health 800
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 31
Height 56
Mass 400
Speed 8
PainChance 128
Monster
+FLOAT +NOGRAVITY -COUNTKILL
Seesound "caco/sight"
Painsound "caco/pain"
Deathsound "caco/death"
Activesound "NmMonsters/active"
Attacksound "imp/melee"
Obituary "%o was smitten by a Nightmare Cacodemon."
Hitobituary "%o got too close to a Nightmare Cacodemon."
MissileType NmImpBall
States
{ Spawn:
HEA2 A 10 A_Look
Loop
See:
HEA2 A 3 A_Chase
Loop
Melee:
HEA2 B 5 A_FaceTarget
HEA2 C 5 A_FaceTarget
HEA2 D 5 BRIGHT A_CustomComboAttack("NmImpBall", 16, 10 * random(1, 6))
Goto See
Missile:
HEA2 B 5 A_FaceTarget
HEA2 C 5 A_FaceTarget
HEA2 D 3 BRIGHT A_CustomMissile("NmImpBall", 16, 0, 0) // NmImpBall
HEA2 D 3 BRIGHT A_CustomMissile("NmImpBall", 16, 0, -20) // NmImpBall
HEA2 D 3 BRIGHT A_CustomMissile("NmImpBall", 16, 0, 20) // NmImpBall
Goto See
Pain:
HEA2 E 3
HEA2 E 3 A_Pain
HEA2 F 6
Goto See
Death:
HEA2 G 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
HEA2 H 8 A_Scream
HEA2 I 8
HEA2 J 0 A_UnsetShootable
HEA2 J 8 A_UnsetSolid //A_NoBlocking //
HEA2 K 8 A_SetFloorClip
//HEA2 L -1
//Stop
Death.Wait:
HEA2 L 1 //A_SetFloorClip
HEA2 L 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
HEA2 L 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
HEA2 L 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
Raise:
HEA2 L 8 A_UnSetFloorClip
HEA2 K 8 A_SetScale(1.0)
HEA2 JIHG 8
Goto See
Raise2:
HEA2 L -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmBaronofHell 7409
{ SpawnID 1003
Health 2000
Bloodcolor 128 0 0
renderstyle translucent
Alpha 0.7
Radius 24
Height 64
Mass 1000
Speed 8
PainChance 50
Monster
+FLOORCLIP +BOSSDEATH -COUNTKILL
SeeSound "baron/sight"
PainSound "baron/pain"
DeathSound "baron/death"
ActiveSound "NmMonsters/active"
Obituary "%o was cursed by a Nightmare Baron of Hell."
HitObituary "%o was touched by a Nightmare Baron of Hell."
MissileType NmBaronBall
States
{ Spawn:
BOS4 AB 10 A_Look
Loop
See:
BOS4 AABBCCDD 3 A_Chase
Loop
Melee:
BOS4 EF 8 A_FaceTarget
BOS4 G 8 A_CustomComboAttack ("NmBaronBall", 32, 10 * random (1, 8), "baron/melee")
Goto See
Missile:
BOS4 EF 8 A_FaceTarget
BOS4 G 8 A_CustomMissile("NmBaronBall", 32, 0, 0)
BOS4 EF 6 A_FaceTarget
BOS4 G 8 A_CustomMissile("NmBaronBall", 32, 0, 0)
BOS4 EF 4 A_FaceTarget
BOS4 G 8 A_CustomMissile("NmBaronBall", 32, 0, 0)
Goto See
Pain:
BOS4 H 2
BOS4 H 2 A_Pain
Goto See
Death:
BOS4 I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
BOS4 J 8 A_Scream
BOS4 K 8
BOS4 L 0 A_UnsetShootable
BOS4 L 8 A_UnsetSolid//A_NoBlocking //
BOS4 M 8
BOS4 N 8 A_BossDeath
//BOS4 O -1 A_BossDeath
//Stop
Death.Wait:
BOS4 O 1
BOS4 O 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
BOS4 O 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
BOS4 O 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
Raise:
BOS4 O 8 A_SetScale(1.0)
BOS4 NMLKJI 8
Goto See
Raise2:
BOS4 O -1
Stop
Crush:
PON4 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmBaronBall
{ SpawnID 1141
Scale 1.0
Radius 6
Height 8
Speed 20
Damage 10
Projectile
+RANDOMIZE
RenderStyle Add
Alpha 1
SeeSound "NmBall/attack"
DeathSound "baron/shotx"
States
{ Spawn:
BA27 AB 4 BRIGHT
Loop
Death:
BA27 CDE 6 BRIGHT
Stop
}
}
Actor NmHellKnight : NmBaronofHell 7408
{ SpawnID 1113
Health 1000
Bloodcolor 0 72 48
SeeSound "knight/sight"
PainSound "knight/pain"
DeathSound "knight/death"
ActiveSound "NmMonsters/active"
Obituary "%o was cursed by a Nightmare Hell Knigh."
HitObituary "%o was touched by a Nightmare Hell Knigh."
States
{ Spawn:
BOS3 AB 10 A_Look
Loop
See:
BOS3 AABBCCDD 3 A_Chase
Loop
Melee:
BOS3 EF 8 A_FaceTarget
BOS3 G 8 A_CustomComboAttack ("NmBaronBall", 32, 10 * random (1, 8), "baron/melee")
Goto See
Missile:
BOS3 EF 8 A_FaceTarget
BOS3 G 8 A_CustomMissile("NmBaronBall", 32, 0, 0)
BOS3 EF 4 A_FaceTarget
BOS3 G 4 A_CustomMissile("NmBaronBall", 32, 0, 0)
Goto See
Pain:
BOS3 H 2
BOS3 H 2 A_Pain
Goto See
Death:
BOS3 I 8 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
BOS3 J 8 A_Scream
BOS3 K 8
BOS3 L 0 A_UnsetShootable
BOS3 L 8 A_UnsetSolid //A_NoBlocking //
BOS3 MN 8
//BOS3 O -1
//Stop
Death.Wait:
BOS3 O 1
BOS3 O 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
BOS3 O 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
BOS3 O 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
Raise:
BOS3 O 8 A_SetScale(1.0)
BOS3 NMLKJI 8
Goto See
Raise2:
BOS3 O -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmRevenant 7410
{ SpawnID 1020
Health 600
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 20
Height 56
Mass 500
Speed 10
PainChance 100
Monster
MeleeThreshold 196
+FLOORCLIP -COUNTKILL +MISSILEMORE //-MISSILEMORE
Seesound "skeleton/sight"
AttackSound "weapons/rbeam"
Painsound "skeleton/pain"
Deathsound "skeleton/death"
Activesound "NmMonsters/active"
//Damage 15 //RailGun
Hitobituary "%o was punched by a Nightmare Revenant."
Obituary "%o was shot by a Nightmare Revenant."
MissileType NmRevenantTracer
States
{ Spawn:
SKE2 AB 10 A_Look
Loop
See:
SKE2 AABBCCDDEEFF 2 A_Chase
Loop
Melee:
SKE2 G 0 A_FaceTarget
SKE2 G 6 A_SkelWhoosh
SKE2 H 6 A_FaceTarget
SKE2 I 6 A_SkelFist
Goto See
Missile:
SKE2 J 0 BRIGHT A_FaceTarget
SKE2 J 10 BRIGHT A_FaceTarget
SKE2 K 10 A_CustomMissile("NmRevenantTracer", 32, 0, 0) //SKE2 K 15 A_MonsterRail
SKE2 K 10 A_FaceTarget
Goto See
Pain:
SKE2 L 5
SKE2 L 5 A_Pain
Goto See
Death:
SKE2 L 7 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
SKE2 M 7
SKE2 N 7 A_Scream
SKE2 O 0 A_UnsetShootable
SKE2 O 7 A_UnsetSolid //A_NoBlocking //
SKE2 P 7
//SKE2 Q -1
//Stop
Death.Wait:
SKE2 Q 1
SKE2 Q 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Loop
Death.HelpMe:
SKE2 Q 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 64 )
SKE2 Q 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 64 )
Goto Death.Wait
Raise:
SKE2 Q 5 A_SetScale(1.0)
SKE2 PONML 5
Goto See
Raise2:
SKE2 Q -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmRevenantTracer
{ SpawnID 1145
Renderstyle Translucent //RenderStyle Add
Alpha 0.7
Radius 11
Height 8
Speed 13 //10
Damage 10
Projectile
+SEEKERMISSILE +RANDOMIZE
SeeSound "skeleton/attack"
DeathSound "skeleton/tracex"
States
{ Spawn:
TRA2 A 2 BRIGHT A_Tracer
Loop
Death:
BA21 C 8 BRIGHT
BA21 D 6 BRIGHT
BA21 E 4 BRIGHT
Stop
}
}
Actor NmArachnotron 7413
{ SpawnID 1006
Health 1000
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 64
Height 64
Mass 600
Speed 12
PainChance 128
Monster
+FLOORCLIP +BOSSDEATH -COUNTKILL
Seesound "NmArachnotron/sight"
Painsound "baby/pain"
Deathsound "NmArachnotron/death"
Activesound "NmMonsters/active"
Obituary "%o let an Nightmare Arachnotron."
//Dropitem "Cell" 256
//Dropitem "Cell" 256
MissileType NmArachnotronPlasma
States
{ Spawn:
BSP2 AB 10 A_Look
loop
See:
BSP2 A 20
BSP2 A 3 A_BabyMetal
BSP2 ABBCC 3 A_Chase
BSP2 D 3 A_BabyMetal
BSP2 DEEFF 3 A_Chase
goto See+1
Missile:
BSP2 A 20 bright A_FaceTarget
BSP2 G 4 bright A_MissileAttack
BSP2 H 4 bright
BSP2 H 1 bright A_SpidRefire
goto Missile+1
Pain:
BSP2 I 3
BSP2 I 3 A_Pain
goto See+1
Death:
BSP2 J 0 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
BSP2 J 20 A_Scream
TNT1 A 0 A_DropItem( "Cell" )
TNT1 A 0 A_DropItem( "Cell" )
BSP2 K 0 A_UnsetShootable
BSP2 K 7 A_UnsetSolid //A_NoBlocking //
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, 0)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, 180)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, 45)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, 90)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, 135)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, -45)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, -90)
BSP2 L 0 A_CustomMissile("NmArachnotronPlasma", 16, 0, -135)
BSP2 LMN 7
BSP2 O 7 A_BossDeath
//BSP2 P -1 A_BossDeath
//Stop
Death.Wait:
BSP2 P 1
BSP2 P 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 128 )
Loop
Death.HelpMe:
BSP2 P 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 128 )
BSP2 P 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 128 )
Goto Death.Wait
Raise:
BSP2 P 5 A_SetScale(1.0)
BSP2 ONMLKJ 5
Goto See+1
Raise2:
BSP2 P -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
Actor NmArachnotronPlasma
{ SpawnID 1142
Radius 13
Height 8
Speed 25
Damage 7
Renderstyle Add
Alpha 1
SeeSound "NmArachnotronPlasma/attack"
DeathSound "baby/shotx"
Projectile
+RANDOMIZE
States
{ Spawn:
IFOG ABC 5 BRIGHT
Loop
Death:
IFOG ABCDE 3 BRIGHT
Stop
}
}
Actor NmFatso 7414
{ SpawnID 1112
Health 1200
Bloodcolor 0 72 48
Renderstyle Translucent
Alpha 0.7
Radius 48
Height 64
Mass 1000
Speed 8
PainChance 80
Monster
+FLOORCLIP +BOSSDEATH -COUNTKILL
Seesound "fatso/sight"
Painsound "fatso/pain"
Deathsound "fatso/death"
Activesound "NmMonsters/active"
Obituary "%o was squashed by a Nightmare Mancubus."
//Dropitem "Cell" 256
//Dropitem "Cell" 256
//Dropitem "Cell" 192
//Dropitem "Cell" 128
MissileType BFGBall
States
{ Spawn:
FAT2 AB 15 A_Look
Loop
See:
FAT2 AABBCCDDEEFF 4 A_Chase
Loop
Missile:
FAT2 G 2 A_FatRaise
FAT2 G 30 A_PlayWeaponSound("weapons/bfgf")
FAT2 H 10 BRIGHT A_MissileAttack // See BFGshot
FAT2 IG 5 A_FaceTarget
FAT2 H 10 BRIGHT A_MissileAttack // See BFGshot
FAT2 IG 5 A_FaceTarget
Goto See
Pain:
FAT2 J 3
FAT2 J 3 A_Pain
Goto See
Death:
FAT2 K 6 A_SetScale(ScaleX * RandomPick(-1.0, 1.0), ScaleY)
FAT2 L 6 A_Scream
TNT1 A 0 A_DropItem( "Cell" )
TNT1 A 0 A_DropItem( "Cell" )
TNT1 A 0 A_DropItem( "Cell" )
FAT2 M 0 A_UnsetShootable
FAT2 M 6 A_UnsetSolid //A_NoBlocking //
FAT2 NOPQR 6
FAT2 S 6 A_BossDeath
//FAT2 T -1 A_BossDeath
//Stop
Death.Wait:
FAT2 T 1
FAT2 T 0 A_CheckProximity( "Death.HelpMe", "NmArchvile", 96 )
Loop
Death.HelpMe:
FAT2 T 1 CanRaise A_CheckProximity( "Death.Wait", "HOTDArchvile", 96 )
FAT2 T 0 CanRaise A_CheckProximity( "Death.HelpMe", "NmArchvile", 96 )
Goto Death.Wait
Raise:
FAT2 R 5 A_SetScale(1.0)
FAT2 QPONMLK 5
Goto See
Raise2:
FAT2 T -1
Stop
Crush:
PON3 A -1 A_PlaySound ("Misc/Gibbed")
Stop
}
}
В Ультимат Дум Билдере создаем уровень. Он весь 3Д пол. Когда ставишь позицию Player по Z координате (чтобы появлялся на 3д Поле) ничего не происходит - игрок все равно оказывается внизу (где обычный пол).
Вводим чит FLY - проверяем что 3д пол работает - все норм, но именно спавн изначально не работает на нем. Может кто знает как с этим бороться?