diff --git a/src/scripting/zscript/zcc_compile.cpp b/src/scripting/zscript/zcc_compile.cpp index 39597c513..43219acb1 100644 --- a/src/scripting/zscript/zcc_compile.cpp +++ b/src/scripting/zscript/zcc_compile.cpp @@ -1554,7 +1554,7 @@ const char *ZCCCompiler::GetString(ZCC_Expression *expr, bool silent) { if (expr->Type == TypeError) { - return 0; + return nullptr; } else if (expr->Type->IsKindOf(RUNTIME_CLASS(PString))) { @@ -1568,7 +1568,7 @@ const char *ZCCCompiler::GetString(ZCC_Expression *expr, bool silent) else { if (!silent) Error(expr, "Cannot convert to string"); - return 0; + return nullptr; } } @@ -1631,7 +1631,7 @@ void ZCCCompiler::DispatchProperty(FPropertyInfo *prop, ZCC_PropertyStmt *proper conv.d = GetDouble(exp); break; - case 'Z': // an optional string. Does not allow any numerical value. + case 'Z': // an optional string. Does not allow any numeric value. if (!GetString(exp, true)) { // apply this expression to the next argument on the list. @@ -1640,7 +1640,8 @@ void ZCCCompiler::DispatchProperty(FPropertyInfo *prop, ZCC_PropertyStmt *proper p++; continue; } - // fall through + conv.s = GetString(exp); + break; case 'C': // this parser accepts colors only in string form. pref.i = 1; diff --git a/wadsrc/static/actors/hexen/centaur.txt b/wadsrc/static/actors/hexen/centaur.txt deleted file mode 100644 index d036566bd..000000000 --- a/wadsrc/static/actors/hexen/centaur.txt +++ /dev/null @@ -1,186 +0,0 @@ -// Centaur ------------------------------------------------------------------ - -ACTOR Centaur -{ - Health 200 - Painchance 135 - Speed 13 - Height 64 - Mass 120 - Monster - +FLOORCLIP - +TELESTOMP - +SHIELDREFLECT - SeeSound "CentaurSight" - AttackSound "CentaurAttack" - PainSound "CentaurPain" - DeathSound "CentaurDeath" - ActiveSound "CentaurActive" - HowlSound "PuppyBeat" - Obituary "$OB_CENTAUR" - DamageFactor "Electric", 3 - States - { - Spawn: - CENT AB 10 A_Look - Loop - See: - CENT ABCD 4 A_Chase - Loop - Pain: - CENT G 6 A_Pain - CENT G 6 A_SetReflectiveInvulnerable - CENT EEE 15 A_CentaurDefend - CENT E 1 A_UnsetReflectiveInvulnerable - Goto See - Melee: - CENT H 5 A_FaceTarget - CENT I 4 A_FaceTarget - CENT J 7 A_CustomMeleeAttack(random[CentaurAttack](3,9)) - Goto See - Death: - CENT K 4 - CENT L 4 A_Scream - CENT MN 4 - CENT O 4 A_NoBlocking - CENT PQ 4 - CENT R 4 A_QueueCorpse - CENT S 4 - CENT T -1 - Stop - XDeath: - CTXD A 4 - CTXD B 4 A_NoBlocking - CTXD C 0 A_SpawnItemEx("CentaurSword", 0, 0, 45, - 1 + random[CentaurDrop](-128,127)*0.03125, - 1 + random[CentaurDrop](-128,127)*0.03125, - 8 + random[CentaurDrop](0,255)*0.015625, 270) - CTXD C 4 A_SpawnItemEx("CentaurShield", 0, 0, 45, - 1 + random[CentaurDrop](-128,127)*0.03125, - 1 + random[CentaurDrop](-128,127)*0.03125, - 8 + random[CentaurDrop](0,255)*0.015625, 90) - CTXD D 3 A_Scream - CTXD E 4 A_QueueCorpse - CTXD F 3 - CTXD G 4 - CTXD H 3 - CTXD I 4 - CTXD J 3 - CTXD K -1 - Ice: - CENT U 5 A_FreezeDeath - CENT U 1 A_FreezeDeathChunks - Wait - } -} - -// Centaur Leader ----------------------------------------------------------- - -ACTOR CentaurLeader : Centaur -{ - Health 250 - PainChance 96 - Speed 10 - Obituary "$OB_SLAUGHTAUR" - HitObituary "$OB_SLAUGHTAURHIT" - States - { - Missile: - CENT E 10 A_FaceTarget - CENT F 8 Bright A_CustomMissile("CentaurFX", 45, 0, 0, CMF_AIMOFFSET) - CENT E 10 A_FaceTarget - CENT F 8 Bright A_CustomMissile("CentaurFX", 45, 0, 0, CMF_AIMOFFSET) - Goto See - } -} - -// Mashed centaur ----------------------------------------------------------- -// -// The mashed centaur is only placed through ACS. Nowhere in the game source -// is it ever referenced. - -ACTOR CentaurMash : Centaur -{ - +NOBLOOD - +BLASTED - -TELESTOMP - +NOICEDEATH - RenderStyle Translucent - Alpha 0.4 - States - { - Death: - XDeath: - Ice: - Stop - } -} - -// Centaur projectile ------------------------------------------------------- - -ACTOR CentaurFX -{ - Speed 20 - Damage 4 - Projectile - +SPAWNSOUNDSOURCE - RenderStyle Add - SeeSound "CentaurLeaderAttack" - DeathSound "CentaurMissileExplode" - States - { - Spawn: - CTFX A -1 Bright - Stop - Death: - CTFX B 4 Bright - CTFX C 3 Bright - CTFX D 4 Bright - CTFX E 3 Bright - CTFX F 2 Bright - Stop - } -} - -// Centaur shield (debris) -------------------------------------------------- - -ACTOR CentaurShield -{ - +DROPOFF - +CORPSE - +NOTELEPORT - States - { - Spawn: - CTDP ABCDEF 3 - Goto Spawn+2 - Crash: - CTDP G 4 - CTDP H 4 A_QueueCorpse - CTDP I 4 - CTDP J -1 - Stop - } -} - -// Centaur sword (debris) --------------------------------------------------- - -ACTOR CentaurSword -{ - +DROPOFF - +CORPSE - +NOTELEPORT - States - { - Spawn: - CTDP KLMNOPQ 3 - Goto Spawn+2 - Crash: - CTDP R 4 - CTDP S 4 A_QueueCorpse - CTDP T -1 - Stop - } -} - - diff --git a/wadsrc/static/actors/hexen/demons.txt b/wadsrc/static/actors/hexen/demons.txt deleted file mode 100644 index 39da26e1d..000000000 --- a/wadsrc/static/actors/hexen/demons.txt +++ /dev/null @@ -1,385 +0,0 @@ - -// Demon, type 1 (green, like D'Sparil's) ----------------------------------- - -ACTOR Demon1 -{ - Health 250 - Painchance 50 - Speed 13 - Radius 32 - Height 64 - Mass 220 - Monster - +TELESTOMP - +FLOORCLIP - SeeSound "DemonSight" - AttackSound "DemonAttack" - PainSound "DemonPain" - DeathSound "DemonDeath" - ActiveSound "DemonActive" - Obituary "$OB_DEMON1" - const int ChunkFlags = SXF_TRANSFERTRANSLATION | SXF_ABSOLUTEVELOCITY; - States - { - Spawn: - DEMN AA 10 A_Look - Loop - See: - DEMN ABCD 4 A_Chase - Loop - Pain: - DEMN E 4 - DEMN E 4 A_Pain - Goto See - Melee: - DEMN E 6 A_FaceTarget - DEMN F 8 A_FaceTarget - DEMN G 6 A_CustomMeleeAttack(random[DemonAttack1](1,8)*2) - Goto See - Missile: - DEMN E 5 A_FaceTarget - DEMN F 6 A_FaceTarget - DEMN G 5 A_CustomMissile("Demon1FX1", 62, 0) - Goto See - Death: - DEMN HI 6 - DEMN J 6 A_Scream - DEMN K 6 A_NoBlocking - DEMN L 6 A_QueueCorpse - DEMN MNO 6 - DEMN P -1 - Stop - XDeath: - DEMN H 6 - DEMN I 0 A_SpawnItemEx("Demon1Chunk1", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle+90), frandom[DemonChunks](1,4.984375)*sin(Angle+90), 8, 90, ChunkFlags) - DEMN I 0 A_SpawnItemEx("Demon1Chunk2", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - DEMN I 0 A_SpawnItemEx("Demon1Chunk3", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - DEMN I 0 A_SpawnItemEx("Demon1Chunk4", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - DEMN I 6 A_SpawnItemEx("Demon1Chunk5", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - Goto Death+2 - Ice: - DEMN Q 5 A_FreezeDeath - DEMN Q 1 A_FreezeDeathChunks - Wait - } -} - -// Demon, type 1, mashed ---------------------------------------------------- - -ACTOR Demon1Mash : Demon1 -{ - +NOBLOOD - +BLASTED - -TELESTOMP - +NOICEDEATH - RenderStyle Translucent - Alpha 0.4 - States - { - Death: - XDeath: - Ice: - Stop - } -} - -// Demon chunk, base class -------------------------------------------------- - -ACTOR DemonChunk -{ - Radius 5 - Height 5 - +NOBLOCKMAP - +DROPOFF - +MISSILE - +CORPSE - +FLOORCLIP - +NOTELEPORT -} - -// Demon, type 1, chunk 1 --------------------------------------------------- - -ACTOR Demon1Chunk1 : DemonChunk -{ - States - { - Spawn: - DEMA A 4 - DEMA A 10 A_QueueCorpse - DEMA A 20 - Wait - Death: - DEMA A -1 - Stop - } -} - -// Demon, type 1, chunk 2 --------------------------------------------------- - -ACTOR Demon1Chunk2 : DemonChunk -{ - States - { - Spawn: - DEMB A 4 - DEMB A 10 A_QueueCorpse - DEMB A 20 - Wait - Death: - DEMB A -1 - Stop - } -} - -ACTOR Demon1Chunk3 : DemonChunk -{ - States - { - Spawn: - DEMC A 4 - DEMC A 10 A_QueueCorpse - DEMC A 20 - Wait - Death: - DEMC A -1 - Stop - } -} - -// Demon, type 1, chunk 4 --------------------------------------------------- - -ACTOR Demon1Chunk4 : DemonChunk -{ - States - { - Spawn: - DEMD A 4 - DEMD A 10 A_QueueCorpse - DEMD A 20 - Wait - Death: - DEMD A -1 - Stop - } -} - -// Demon, type 1, chunk 5 --------------------------------------------------- - -ACTOR Demon1Chunk5 : DemonChunk -{ - States - { - Spawn: - DEME A 4 - DEME A 10 A_QueueCorpse - DEME A 20 - Wait - Death: - DEME A -1 - Stop - } -} - -// Demon, type 1, projectile ------------------------------------------------ - -ACTOR Demon1FX1 -{ - Speed 15 - Radius 10 - Height 6 - Damage 5 - DamageType Fire - Projectile - +SPAWNSOUNDSOURCE - RenderStyle Add - SeeSound "DemonMissileFire" - DeathSound "DemonMissileExplode" - States - { - Spawn: - DMFX ABC 4 Bright - Loop - Death: - DMFX DE 4 Bright - DMFX FGH 3 Bright - Stop - } -} - -// Demon, type 2 (brown) ---------------------------------------------------- - -ACTOR Demon2 : Demon1 -{ - Obituary "$OB_DEMON2" - Species "Demon2" - States - { - Spawn: - DEM2 AA 10 A_Look - Loop - See: - DEM2 ABCD 4 A_Chase - Loop - Pain: - DEM2 E 4 - DEM2 E 4 A_Pain - Goto See - Melee: - DEM2 E 6 A_FaceTarget - DEM2 F 8 A_FaceTarget - DEM2 G 6 A_CustomMeleeAttack(random[DemonAttack1](1,8)*2) - Goto See - Missile: - DEM2 E 5 A_FaceTarget - DEM2 F 6 A_FaceTarget - DEM2 G 5 A_CustomMissile("Demon2FX1", 62, 0) - Goto See - Death: - DEM2 HI 6 - DEM2 J 6 A_Scream - DEM2 K 6 A_NoBlocking - DEM2 L 6 A_QueueCorpse - DEM2 MNO 6 - DEM2 P -1 - Stop - XDeath: - DEM2 H 6 - DEM2 I 0 A_SpawnItemEx("Demon2Chunk1", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle+90), frandom[DemonChunks](1,4.984375)*sin(Angle+90), 8, 90, ChunkFlags) - DEM2 I 0 A_SpawnItemEx("Demon2Chunk2", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - DEM2 I 0 A_SpawnItemEx("Demon2Chunk3", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - DEM2 I 0 A_SpawnItemEx("Demon2Chunk4", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - DEM2 I 6 A_SpawnItemEx("Demon2Chunk5", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags) - Goto Death+2 - } -} - -// Demon, type 2, mashed ---------------------------------------------------- - -ACTOR Demon2Mash : Demon2 -{ - +NOBLOOD - +BLASTED - -TELESTOMP - +NOICEDEATH - RenderStyle Translucent - Alpha 0.4 - States - { - Death: - XDeath: - Ice: - Stop - } -} - -// Demon, type 2, chunk 1 --------------------------------------------------- - -ACTOR Demon2Chunk1 : DemonChunk -{ - States - { - Spawn: - DMBA A 4 - DMBA A 10 A_QueueCorpse - DMBA A 20 - Wait - Death: - DMBA A -1 - Stop - } -} - -// Demon, type 2, chunk 2 --------------------------------------------------- - -ACTOR Demon2Chunk2 : DemonChunk -{ - States - { - Spawn: - DMBB A 4 - DMBB A 10 A_QueueCorpse - DMBB A 20 - Wait - Death: - DMBB A -1 - Stop - } -} - -// Demon, type 2, chunk 3 --------------------------------------------------- - -ACTOR Demon2Chunk3 : DemonChunk -{ - States - { - Spawn: - DMBC A 4 - DMBC A 10 A_QueueCorpse - DMBC A 20 - Wait - Death: - DMBC A -1 - Stop - } -} - -// Demon, type 2, chunk 4 --------------------------------------------------- - -ACTOR Demon2Chunk4 : DemonChunk -{ - States - { - Spawn: - DMBD A 4 - DMBD A 10 A_QueueCorpse - DMBD A 20 - Wait - Death: - DMBD A -1 - Stop - } -} - -// Demon, type 2, chunk 5 --------------------------------------------------- - -ACTOR Demon2Chunk5 : DemonChunk -{ - States - { - Spawn: - DMBE A 4 - DMBE A 10 A_QueueCorpse - DMBE A 20 - Wait - Death: - DMBE A -1 - Stop - } -} - -// Demon, type 2, projectile ------------------------------------------------ - -ACTOR Demon2FX1 -{ - Speed 15 - Radius 10 - Height 6 - Damage 5 - DamageType Fire - Projectile - +SPAWNSOUNDSOURCE - RenderStyle Add - SeeSound "DemonMissileFire" - DeathSound "DemonMissileExplode" - States - { - Spawn: - D2FX ABCDEF 4 Bright - Loop - Death: - D2FX GHIJ 4 Bright - D2FX KL 3 Bright - Stop - } -} - diff --git a/wadsrc/static/actors/hexen/ettin.txt b/wadsrc/static/actors/hexen/ettin.txt deleted file mode 100644 index 4ce13406c..000000000 --- a/wadsrc/static/actors/hexen/ettin.txt +++ /dev/null @@ -1,106 +0,0 @@ - -// Ettin -------------------------------------------------------------------- - -ACTOR Ettin -{ - Health 175 - Radius 25 - Height 68 - Mass 175 - Speed 13 - Damage 3 - Painchance 60 - Monster - +FLOORCLIP - +TELESTOMP - SeeSound "EttinSight" - AttackSound "EttinAttack" - PainSound "EttinPain" - DeathSound "EttinDeath" - ActiveSound "EttinActive" - HowlSound "PuppyBeat" - Obituary "$OB_ETTIN" - States - { - Spawn: - ETTN AA 10 A_Look - Loop - See: - ETTN ABCD 5 A_Chase - Loop - Pain: - ETTN H 7 A_Pain - Goto See - Melee: - ETTN EF 6 A_FaceTarget - ETTN G 8 A_CustomMeleeAttack(random[EttinAttack](1,8)*2) - Goto See - Death: - ETTN IJ 4 - ETTN K 4 A_Scream - ETTN L 4 A_NoBlocking - ETTN M 4 A_QueueCorpse - ETTN NOP 4 - ETTN Q -1 - Stop - XDeath: - ETTB A 4 - ETTB B 4 A_NoBlocking - ETTB C 4 A_SpawnItemEx("EttinMace", 0,0,8.5, - random[DropMace](-128,127) * 0.03125, - random[DropMace](-128,127) * 0.03125, - 10 + random[DropMace](0,255) * 0.015625, 0, SXF_ABSOLUTEVELOCITY) - ETTB D 4 A_Scream - ETTB E 4 A_QueueCorpse - ETTB FGHIJK 4 - ETTB L -1 - Stop - Ice: - ETTN R 5 A_FreezeDeath - ETTN R 1 A_FreezeDeathChunks - Wait - } -} - -// Ettin mace --------------------------------------------------------------- - -ACTOR EttinMace -{ - Radius 5 - Height 5 - +DROPOFF - +CORPSE - +NOTELEPORT - +FLOORCLIP - States - { - Spawn: - ETTB MNOP 5 - Loop - Crash: - ETTB Q 5 - ETTB R 5 A_QueueCorpse - ETTB S -1 - Stop - } -} - -// Ettin mash --------------------------------------------------------------- - -ACTOR EttinMash : Ettin -{ - +NOBLOOD - +NOICEDEATH - RenderStyle Translucent - Alpha 0.4 - States - { - Death: - XDeath: - Ice: - Stop - } -} - - - diff --git a/wadsrc/static/actors/hexen/mana.txt b/wadsrc/static/actors/hexen/mana.txt deleted file mode 100644 index 4a50e368a..000000000 --- a/wadsrc/static/actors/hexen/mana.txt +++ /dev/null @@ -1,87 +0,0 @@ -// Blue mana ---------------------------------------------------------------- - -ACTOR Mana1 : Ammo -{ - Inventory.Amount 15 - Inventory.MaxAmount 200 - Ammo.BackpackAmount 15 - Ammo.BackpackMaxAmount 200 - Radius 8 - Height 8 - +FLOATBOB - Inventory.Icon "MAN1I0" - Inventory.PickupMessage "$TXT_MANA_1" - States - { - Spawn: - MAN1 ABCDEFGHI 4 Bright - Loop - } -} - -// Green mana --------------------------------------------------------------- - -ACTOR Mana2 : Ammo -{ - Inventory.Amount 15 - Inventory.MaxAmount 200 - Ammo.BackpackAmount 15 - Ammo.BackpackMaxAmount 200 - Radius 8 - Height 8 - +FLOATBOB - Inventory.Icon "MAN2G0" - Inventory.PickupMessage "$TXT_MANA_2" - States - { - Spawn: - MAN2 ABCDEFGHIJKLMNOP 4 Bright - Loop - } -} - -// Combined mana ------------------------------------------------------------ - -ACTOR Mana3 : CustomInventory -{ - Radius 8 - Height 8 - +FLOATBOB - Inventory.PickupMessage "$TXT_MANA_BOTH" - States - { - Spawn: - MAN3 ABCDEFGHIJKLMNOP 4 Bright - Loop - Pickup: - TNT1 A 0 A_GiveInventory("Mana1", 20) - TNT1 A 0 A_GiveInventory("Mana2", 20) - Stop - } -} - -// Boost Mana Artifact Krater of Might ------------------------------------ - -ACTOR ArtiBoostMana : CustomInventory -{ - +FLOATBOB - +COUNTITEM - +INVENTORY.INVBAR - +INVENTORY.PICKUPFLASH - +INVENTORY.FANCYPICKUPSOUND - Inventory.DefMaxAmount - Inventory.Icon "ARTIBMAN" - Inventory.PickupSound "misc/p_pkup" - Inventory.PickupMessage "$TXT_ARTIBOOSTMANA" - Tag "$TAG_ARTIBOOSTMANA" - States - { - Spawn: - BMAN A -1 - Stop - Use: - TNT1 A 0 A_GiveInventory("Mana1", 200) - TNT1 A 0 A_GiveInventory("Mana2", 200) - Stop - } -} diff --git a/wadsrc/static/actors/hexen/puzzleitems.txt b/wadsrc/static/actors/hexen/puzzleitems.txt deleted file mode 100644 index ad1187da0..000000000 --- a/wadsrc/static/actors/hexen/puzzleitems.txt +++ /dev/null @@ -1,287 +0,0 @@ - -// Yorick's Skull ----------------------------------------------------------- - -ACTOR PuzzSkull : PuzzleItem -{ - PuzzleItem.Number 0 - Inventory.Icon ARTISKLL - Inventory.PickupMessage "$TXT_ARTIPUZZSKULL" - Tag "$TAG_ARTIPUZZSKULL" - States - { - Spawn: - ASKU A -1 - Stop - } -} - - -// Heart of D'Sparil -------------------------------------------------------- - -ACTOR PuzzGemBig : PuzzleItem -{ - PuzzleItem.Number 1 - Inventory.Icon ARTIBGEM - Inventory.PickupMessage "$TXT_ARTIPUZZGEMBIG" - Tag "$TAG_ARTIPUZZGEMBIG" - States - { - Spawn: - ABGM A -1 - Stop - } -} - -// Red Gem (Ruby Planet) ---------------------------------------------------- - -ACTOR PuzzGemRed : PuzzleItem -{ - PuzzleItem.Number 2 - Inventory.Icon ARTIGEMR - Inventory.PickupMessage "$TXT_ARTIPUZZGEMRED" - Tag "$TAG_ARTIPUZZGEMRED" - States - { - Spawn: - AGMR A -1 - Stop - } -} - - -// Green Gem 1 (Emerald Planet) --------------------------------------------- - -ACTOR PuzzGemGreen1 : PuzzleItem -{ - PuzzleItem.Number 3 - Inventory.Icon ARTIGEMG - Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN1" - Tag "$TAG_ARTIPUZZGEMGREEN1" - States - { - Spawn: - AGMG A -1 - Stop - } -} - - -// Green Gem 2 (Emerald Planet) --------------------------------------------- - -ACTOR PuzzGemGreen2 : PuzzleItem -{ - PuzzleItem.Number 4 - Inventory.Icon ARTIGMG2 - Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN2" - Tag "$TAG_ARTIPUZZGEMGREEN2" - States - { - Spawn: - AGG2 A -1 - Stop - } -} - - -// Blue Gem 1 (Sapphire Planet) --------------------------------------------- - -ACTOR PuzzGemBlue1 : PuzzleItem -{ - PuzzleItem.Number 5 - Inventory.Icon ARTIGEMB - Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE1" - Tag "$TAG_ARTIPUZZGEMBLUE1" - States - { - Spawn: - AGMB A -1 - Stop - } -} - - -// Blue Gem 2 (Sapphire Planet) --------------------------------------------- - -ACTOR PuzzGemBlue2 : PuzzleItem -{ - PuzzleItem.Number 6 - Inventory.Icon ARTIGMB2 - Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE2" - Tag "$TAG_ARTIPUZZGEMBLUE2" - States - { - Spawn: - AGB2 A -1 - Stop - } -} - - -// Book 1 (Daemon Codex) ---------------------------------------------------- - -ACTOR PuzzBook1 : PuzzleItem -{ - PuzzleItem.Number 7 - Inventory.Icon ARTIBOK1 - Inventory.PickupMessage "$TXT_ARTIPUZZBOOK1" - Tag "$TAG_ARTIPUZZBOOK1" - States - { - Spawn: - ABK1 A -1 - Stop - } -} - - -// Book 2 (Liber Oscura) ---------------------------------------------------- - -ACTOR PuzzBook2 : PuzzleItem -{ - PuzzleItem.Number 8 - Inventory.Icon ARTIBOK2 - Inventory.PickupMessage "$TXT_ARTIPUZZBOOK2" - Tag "$TAG_ARTIPUZZBOOK2" - States - { - Spawn: - ABK2 A -1 - Stop - } -} - - -// Flame Mask --------------------------------------------------------------- - - -ACTOR PuzzFlameMask : PuzzleItem -{ - PuzzleItem.Number 9 - Inventory.Icon ARTISKL2 - Inventory.PickupMessage "$TXT_ARTIPUZZSKULL2" - Tag "$TAG_ARTIPUZZSKULL2" - States - { - Spawn: - ASK2 A -1 - Stop - } -} - -// Fighter Weapon (Glaive Seal) --------------------------------------------- - -ACTOR PuzzFWeapon : PuzzleItem -{ - PuzzleItem.Number 10 - Inventory.Icon ARTIFWEP - Inventory.PickupMessage "$TXT_ARTIPUZZFWEAPON" - Tag "$TAG_ARTIPUZZFWEAPON" - States - { - Spawn: - AFWP A -1 - Stop - } -} - - -// Cleric Weapon (Holy Relic) ----------------------------------------------- - -ACTOR PuzzCWeapon : PuzzleItem -{ - PuzzleItem.Number 11 - Inventory.Icon ARTICWEP - Inventory.PickupMessage "$TXT_ARTIPUZZCWEAPON" - Tag "$TAG_ARTIPUZZCWEAPON" - States - { - Spawn: - ACWP A -1 - Stop - } -} - - -// Mage Weapon (Sigil of the Magus) ----------------------------------------- - -ACTOR PuzzMWeapon : PuzzleItem -{ - PuzzleItem.Number 12 - Inventory.Icon ARTIMWEP - Inventory.PickupMessage "$TXT_ARTIPUZZMWEAPON" - Tag "$TAG_ARTIPUZZMWEAPON" - States - { - Spawn: - AMWP A -1 - Stop - } -} - -// Clock Gear 1 ------------------------------------------------------------- - -ACTOR PuzzGear1 : PuzzleItem -{ - PuzzleItem.Number 13 - Inventory.Icon ARTIGEAR - Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" - Tag "$TAG_ARTIPUZZGEAR1" - States - { - Spawn: - AGER ABCDEFGH 4 Bright - Loop - } -} - - -// Clock Gear 2 ------------------------------------------------------------- - -ACTOR PuzzGear2 : PuzzleItem -{ - PuzzleItem.Number 14 - Inventory.Icon ARTIGER2 - Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" - Tag "$TAG_ARTIPUZZGEAR2" - States - { - Spawn: - AGR2 ABCDEFGH 4 Bright - Loop - } -} - - -// Clock Gear 3 ------------------------------------------------------------- - -ACTOR PuzzGear3 : PuzzleItem -{ - PuzzleItem.Number 15 - Inventory.Icon ARTIGER3 - Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" - Tag "$TAG_ARTIPUZZGEAR3" - States - { - Spawn: - AGR3 ABCDEFGH 4 Bright - Loop - } -} - - -// Clock Gear 4 ------------------------------------------------------------- - -ACTOR PuzzGear4 : PuzzleItem -{ - PuzzleItem.Number 16 - Inventory.Icon ARTIGER4 - Inventory.PickupMessage "$TXT_ARTIPUZZGEAR" - Tag "$TAG_ARTIPUZZGEAR4" - States - { - Spawn: - AGR4 ABCDEFGH 4 Bright - Loop - } -} - diff --git a/wadsrc/static/actors/hexen/scriptprojectiles.txt b/wadsrc/static/actors/hexen/scriptprojectiles.txt deleted file mode 100644 index d031be3ee..000000000 --- a/wadsrc/static/actors/hexen/scriptprojectiles.txt +++ /dev/null @@ -1,123 +0,0 @@ -// Fire Ball ---------------------------------------------------------------- - -ACTOR FireBall -{ - Speed 2 - Radius 8 - Height 8 - Damage 4 - DamageType Fire - +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE - +NOTELEPORT - RenderStyle Add - DeathSound "Fireball" - States - { - Spawn: - FBL1 AB 4 Bright - Loop - Death: - XPL1 ABCDEF 4 Bright - Stop - } -} - -// Arrow -------------------------------------------------------------------- - -ACTOR Arrow -{ - Speed 6 - Radius 8 - Height 4 - Damage 4 - +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE - +NOTELEPORT - States - { - Spawn: - ARRW A -1 - Stop - Death: - ARRW A 1 - Stop - } -} - -// Dart --------------------------------------------------------------------- - -ACTOR Dart -{ - Speed 6 - Radius 8 - Height 4 - Damage 2 - +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE - +NOTELEPORT - States - { - Spawn: - DART A -1 - Stop - Death: - DART A 1 - Stop - } -} - -// Poison Dart -------------------------------------------------------------- - -ACTOR PoisonDart : Dart -{ - PoisonDamage 20 -} - -// Ripper Ball -------------------------------------------------------------- - -ACTOR RipperBall -{ - Speed 6 - Radius 8 - Damage 2 - +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE - +NOTELEPORT +RIPPER - States - { - Spawn: - RIPP ABC 3 - Loop - Death: - CFCF Q 4 Bright - CFCF R 3 Bright - CFCF S 4 Bright - CFCF T 3 Bright - CFCF U 4 Bright - CFCF V 3 Bright - CFCF W 4 Bright - CFCF X 3 Bright - CFCF Y 4 Bright - CFCF Z 3 Bright - Stop - } -} - -// Projectile Blade --------------------------------------------------------- - -ACTOR ProjectileBlade -{ - Speed 6 - Radius 6 - Height 6 - Damage 3 - +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE - +NOTELEPORT - States - { - Spawn: - BLAD A -1 - Stop - Death: - BLAD A 1 - Stop - } -} - diff --git a/wadsrc/static/actors/hexen/speedboots.txt b/wadsrc/static/actors/hexen/speedboots.txt deleted file mode 100644 index 2ae4dcd01..000000000 --- a/wadsrc/static/actors/hexen/speedboots.txt +++ /dev/null @@ -1,18 +0,0 @@ - - -ACTOR ArtiSpeedBoots : PowerupGiver -{ - +FLOATBOB - +COUNTITEM - +INVENTORY.PICKUPFLASH - Inventory.Icon ARTISPED - Inventory.PickupMessage "$TXT_ARTISPEED" - Tag "$TAG_ARTISPEED" - Powerup.Type Speed - States - { - Spawn: - SPED ABCDEFGH 3 Bright - Loop - } -} diff --git a/wadsrc/static/decorate.txt b/wadsrc/static/decorate.txt index 146600f34..92802dc7e 100644 --- a/wadsrc/static/decorate.txt +++ b/wadsrc/static/decorate.txt @@ -1,10 +1,3 @@ -#include "actors/hexen/mana.txt" -#include "actors/hexen/puzzleitems.txt" -#include "actors/hexen/scriptprojectiles.txt" -#include "actors/hexen/speedboots.txt" -#include "actors/hexen/ettin.txt" -#include "actors/hexen/centaur.txt" -#include "actors/hexen/demons.txt" #include "actors/hexen/firedemon.txt" #include "actors/hexen/fog.txt" #include "actors/hexen/summon.txt" diff --git a/wadsrc/static/zscript.txt b/wadsrc/static/zscript.txt index 50ecf6212..531c353f5 100644 --- a/wadsrc/static/zscript.txt +++ b/wadsrc/static/zscript.txt @@ -97,7 +97,6 @@ zscript/hexen/hexenarmor.txt zscript/hexen/hexendecorations.txt zscript/hexen/hexenkeys.txt zscript/hexen/hexenspecialdecs.txt -/* zscript/hexen/mana.txt zscript/hexen/puzzleitems.txt zscript/hexen/scriptprojectiles.txt @@ -105,6 +104,7 @@ zscript/hexen/speedboots.txt zscript/hexen/ettin.txt zscript/hexen/centaur.txt zscript/hexen/demons.txt +/* zscript/hexen/firedemon.txt zscript/hexen/fog.txt zscript/hexen/summon.txt diff --git a/wadsrc/static/zscript/hexen/centaur.txt b/wadsrc/static/zscript/hexen/centaur.txt new file mode 100644 index 000000000..37a8d6b11 --- /dev/null +++ b/wadsrc/static/zscript/hexen/centaur.txt @@ -0,0 +1,204 @@ +// Centaur ------------------------------------------------------------------ + +class Centaur : Actor +{ + Default + { + Health 200; + Painchance 135; + Speed 13; + Height 64; + Mass 120; + Monster; + +FLOORCLIP + +TELESTOMP + +SHIELDREFLECT + SeeSound "CentaurSight"; + AttackSound "CentaurAttack"; + PainSound "CentaurPain"; + DeathSound "CentaurDeath"; + ActiveSound "CentaurActive"; + HowlSound "PuppyBeat"; + Obituary "$OB_CENTAUR"; + DamageFactor "Electric", 3; + } + States + { + Spawn: + CENT AB 10 A_Look; + Loop; + See: + CENT ABCD 4 A_Chase; + Loop; + Pain: + CENT G 6 A_Pain; + CENT G 6 A_SetReflectiveInvulnerable; + CENT EEE 15 A_CentaurDefend; + CENT E 1 A_UnsetReflectiveInvulnerable; + Goto See; + Melee: + CENT H 5 A_FaceTarget; + CENT I 4 A_FaceTarget; + CENT J 7 A_CustomMeleeAttack(random[CentaurAttack](3,9)); + Goto See; + Death: + CENT K 4; + CENT L 4 A_Scream; + CENT MN 4; + CENT O 4 A_NoBlocking; + CENT PQ 4; + CENT R 4 A_QueueCorpse; + CENT S 4; + CENT T -1; + Stop; + XDeath: + CTXD A 4; + CTXD B 4 A_NoBlocking; + CTXD C 0 A_SpawnItemEx("CentaurSword", 0, 0, 45, + 1 + random[CentaurDrop](-128,127)*0.03125, + 1 + random[CentaurDrop](-128,127)*0.03125, + 8 + random[CentaurDrop](0,255)*0.015625, 270); + CTXD C 4 A_SpawnItemEx("CentaurShield", 0, 0, 45, + 1 + random[CentaurDrop](-128,127)*0.03125, + 1 + random[CentaurDrop](-128,127)*0.03125, + 8 + random[CentaurDrop](0,255)*0.015625, 90); + CTXD D 3 A_Scream; + CTXD E 4 A_QueueCorpse; + CTXD F 3; + CTXD G 4; + CTXD H 3; + CTXD I 4; + CTXD J 3; + CTXD K -1; + Ice: + CENT U 5 A_FreezeDeath; + CENT U 1 A_FreezeDeathChunks; + Wait; + } +} + +// Centaur Leader ----------------------------------------------------------- + +class CentaurLeader : Centaur +{ + Default + { + Health 250; + PainChance 96; + Speed 10; + Obituary "$OB_SLAUGHTAUR"; + HitObituary "$OB_SLAUGHTAURHIT"; + } + States + { + Missile: + CENT E 10 A_FaceTarget; + CENT F 8 Bright A_CustomMissile("CentaurFX", 45, 0, 0, CMF_AIMOFFSET); + CENT E 10 A_FaceTarget; + CENT F 8 Bright A_CustomMissile("CentaurFX", 45, 0, 0, CMF_AIMOFFSET); + Goto See; + } +} + +// Mashed centaur ----------------------------------------------------------- +// +// The mashed centaur is only placed through ACS. Nowhere in the game source +// is it ever referenced. + +class CentaurMash : Centaur +{ + Default + { + +NOBLOOD + +BLASTED + -TELESTOMP + +NOICEDEATH + RenderStyle "Translucent"; + Alpha 0.4; + } + States + { + Death: + XDeath: + Ice: + Stop; + } +} + +// Centaur projectile ------------------------------------------------------- + +class CentaurFX : Actor +{ + Default + { + Speed 20; + Damage 4; + Projectile; + +SPAWNSOUNDSOURCE + RenderStyle "Add"; + SeeSound "CentaurLeaderAttack"; + DeathSound "CentaurMissileExplode"; + } + States + { + Spawn: + CTFX A -1 Bright; + Stop; + Death: + CTFX B 4 Bright; + CTFX C 3 Bright; + CTFX D 4 Bright; + CTFX E 3 Bright; + CTFX F 2 Bright; + Stop; + } +} + +// Centaur shield (debris) -------------------------------------------------- + +class CentaurShield : Actor +{ + Default + { + +DROPOFF + +CORPSE + +NOTELEPORT + } + States + { + Spawn: + CTDP ABCDEF 3; + Goto Spawn+2; + Crash: + CTDP G 4; + CTDP H 4 A_QueueCorpse; + CTDP I 4; + CTDP J -1; + Stop; + } +} + +// Centaur sword (debris) --------------------------------------------------- + +class CentaurSword : Actor +{ + Default + { + +DROPOFF + +CORPSE + +NOTELEPORT + } + States + { + Spawn: + CTDP KLMNOPQ 3; + Goto Spawn+2; + Crash: + CTDP R 4; + CTDP S 4 A_QueueCorpse; + CTDP T -1; + Stop; + } +} + + diff --git a/wadsrc/static/zscript/hexen/demons.txt b/wadsrc/static/zscript/hexen/demons.txt new file mode 100644 index 000000000..56b4f3bda --- /dev/null +++ b/wadsrc/static/zscript/hexen/demons.txt @@ -0,0 +1,408 @@ + +// Demon, type 1 (green, like D'Sparil's) ----------------------------------- + +class Demon1 : Actor +{ + Default + { + Health 250; + Painchance 50; + Speed 13; + Radius 32; + Height 64; + Mass 220; + Monster; + +TELESTOMP + +FLOORCLIP + SeeSound "DemonSight"; + AttackSound "DemonAttack"; + PainSound "DemonPain"; + DeathSound "DemonDeath"; + ActiveSound "DemonActive"; + Obituary "$OB_DEMON1"; + } + + const ChunkFlags = SXF_TRANSFERTRANSLATION | SXF_ABSOLUTEVELOCITY; + + States + { + Spawn: + DEMN AA 10 A_Look; + Loop; + See: + DEMN ABCD 4 A_Chase; + Loop; + Pain: + DEMN E 4; + DEMN E 4 A_Pain; + Goto See; + Melee: + DEMN E 6 A_FaceTarget; + DEMN F 8 A_FaceTarget; + DEMN G 6 A_CustomMeleeAttack(random[DemonAttack1](1,8)*2); + Goto See; + Missile: + DEMN E 5 A_FaceTarget; + DEMN F 6 A_FaceTarget; + DEMN G 5 A_CustomMissile("Demon1FX1", 62, 0); + Goto See; + Death: + DEMN HI 6; + DEMN J 6 A_Scream; + DEMN K 6 A_NoBlocking; + DEMN L 6 A_QueueCorpse; + DEMN MNO 6; + DEMN P -1; + Stop; + XDeath: + DEMN H 6; + DEMN I 0 A_SpawnItemEx("Demon1Chunk1", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle+90), frandom[DemonChunks](1,4.984375)*sin(Angle+90), 8, 90, ChunkFlags); + DEMN I 0 A_SpawnItemEx("Demon1Chunk2", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + DEMN I 0 A_SpawnItemEx("Demon1Chunk3", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + DEMN I 0 A_SpawnItemEx("Demon1Chunk4", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + DEMN I 6 A_SpawnItemEx("Demon1Chunk5", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + Goto Death+2; + Ice: + DEMN Q 5 A_FreezeDeath; + DEMN Q 1 A_FreezeDeathChunks; + Wait; + } +} + +// Demon, type 1, mashed ---------------------------------------------------- + +class Demon1Mash : Demon1 +{ + Default + { + +NOBLOOD + +BLASTED + -TELESTOMP + +NOICEDEATH + RenderStyle "Translucent"; + Alpha 0.4; + } + States + { + Death: + XDeath: + Ice: + Stop; + } +} + +// Demon chunk, base class -------------------------------------------------- + +class DemonChunk : Actor +{ + Default + { + Radius 5; + Height 5; + +NOBLOCKMAP + +DROPOFF + +MISSILE + +CORPSE + +FLOORCLIP + +NOTELEPORT + } +} + +// Demon, type 1, chunk 1 --------------------------------------------------- + +class Demon1Chunk1 : DemonChunk +{ + States + { + Spawn: + DEMA A 4; + DEMA A 10 A_QueueCorpse; + DEMA A 20; + Wait; + Death: + DEMA A -1; + Stop; + } +} + +// Demon, type 1, chunk 2 --------------------------------------------------- + +class Demon1Chunk2 : DemonChunk +{ + States + { + Spawn: + DEMB A 4; + DEMB A 10 A_QueueCorpse; + DEMB A 20; + Wait; + Death: + DEMB A -1; + Stop; + } +} + +class Demon1Chunk3 : DemonChunk +{ + States + { + Spawn: + DEMC A 4; + DEMC A 10 A_QueueCorpse; + DEMC A 20; + Wait; + Death: + DEMC A -1; + Stop; + } +} + +// Demon, type 1, chunk 4 --------------------------------------------------- + +class Demon1Chunk4 : DemonChunk +{ + States + { + Spawn: + DEMD A 4; + DEMD A 10 A_QueueCorpse; + DEMD A 20; + Wait; + Death: + DEMD A -1; + Stop; + } +} + +// Demon, type 1, chunk 5 --------------------------------------------------- + +class Demon1Chunk5 : DemonChunk +{ + States + { + Spawn: + DEME A 4; + DEME A 10 A_QueueCorpse; + DEME A 20; + Wait; + Death: + DEME A -1; + Stop; + } +} + +// Demon, type 1, projectile ------------------------------------------------ + +class Demon1FX1 : Actor +{ + Default + { + Speed 15; + Radius 10; + Height 6; + Damage 5; + DamageType "Fire"; + Projectile; + +SPAWNSOUNDSOURCE + RenderStyle "Add"; + SeeSound "DemonMissileFire"; + DeathSound "DemonMissileExplode"; + } + States + { + Spawn: + DMFX ABC 4 Bright; + Loop; + Death: + DMFX DE 4 Bright; + DMFX FGH 3 Bright; + Stop; + } +} + +// Demon, type 2 (brown) ---------------------------------------------------- + +class Demon2 : Demon1 +{ + Default + { + Obituary "$OB_DEMON2"; + Species "Demon2"; + } + States + { + Spawn: + DEM2 AA 10 A_Look; + Loop; + See: + DEM2 ABCD 4 A_Chase; + Loop; + Pain: + DEM2 E 4; + DEM2 E 4 A_Pain; + Goto See; + Melee: + DEM2 E 6 A_FaceTarget; + DEM2 F 8 A_FaceTarget; + DEM2 G 6 A_CustomMeleeAttack(random[DemonAttack1](1,8)*2); + Goto See; + Missile: + DEM2 E 5 A_FaceTarget; + DEM2 F 6 A_FaceTarget; + DEM2 G 5 A_CustomMissile("Demon2FX1", 62, 0); + Goto See; + Death: + DEM2 HI 6; + DEM2 J 6 A_Scream; + DEM2 K 6 A_NoBlocking; + DEM2 L 6 A_QueueCorpse; + DEM2 MNO 6; + DEM2 P -1; + Stop; + XDeath: + DEM2 H 6; + DEM2 I 0 A_SpawnItemEx("Demon2Chunk1", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle+90), frandom[DemonChunks](1,4.984375)*sin(Angle+90), 8, 90, ChunkFlags); + DEM2 I 0 A_SpawnItemEx("Demon2Chunk2", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + DEM2 I 0 A_SpawnItemEx("Demon2Chunk3", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + DEM2 I 0 A_SpawnItemEx("Demon2Chunk4", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + DEM2 I 6 A_SpawnItemEx("Demon2Chunk5", 0,0,45, frandom[DemonChunks](1,4.984375)*cos(Angle-90), frandom[DemonChunks](1,4.984375)*sin(Angle-90), 8, 270, ChunkFlags); + Goto Death+2; + } +} + +// Demon, type 2, mashed ---------------------------------------------------- + +class Demon2Mash : Demon2 +{ + Default + { + +NOBLOOD + +BLASTED + -TELESTOMP + +NOICEDEATH + RenderStyle "Translucent"; + Alpha 0.4; + } + States + { + Death: + XDeath: + Ice: + Stop; + } +} + +// Demon, type 2, chunk 1 --------------------------------------------------- + +class Demon2Chunk1 : DemonChunk +{ + States + { + Spawn: + DMBA A 4; + DMBA A 10 A_QueueCorpse; + DMBA A 20; + Wait; + Death: + DMBA A -1; + Stop; + } +} + +// Demon, type 2, chunk 2 --------------------------------------------------- + +class Demon2Chunk2 : DemonChunk +{ + States + { + Spawn: + DMBB A 4; + DMBB A 10 A_QueueCorpse; + DMBB A 20; + Wait; + Death: + DMBB A -1; + Stop; + } +} + +// Demon, type 2, chunk 3 --------------------------------------------------- + +class Demon2Chunk3 : DemonChunk +{ + States + { + Spawn: + DMBC A 4; + DMBC A 10 A_QueueCorpse; + DMBC A 20; + Wait; + Death: + DMBC A -1; + Stop; + } +} + +// Demon, type 2, chunk 4 --------------------------------------------------- + +class Demon2Chunk4 : DemonChunk +{ + States + { + Spawn: + DMBD A 4; + DMBD A 10 A_QueueCorpse; + DMBD A 20; + Wait; + Death: + DMBD A -1; + Stop; + } +} + +// Demon, type 2, chunk 5 --------------------------------------------------- + +class Demon2Chunk5 : DemonChunk +{ + States + { + Spawn: + DMBE A 4; + DMBE A 10 A_QueueCorpse; + DMBE A 20; + Wait; + Death: + DMBE A -1; + Stop; + } +} + +// Demon, type 2, projectile ------------------------------------------------ + +class Demon2FX1 : Actor +{ + Default + { + Speed 15; + Radius 10; + Height 6; + Damage 5; + DamageType "Fire"; + Projectile; + +SPAWNSOUNDSOURCE + RenderStyle "Add"; + SeeSound "DemonMissileFire"; + DeathSound "DemonMissileExplode"; + } + States + { + Spawn: + D2FX ABCDEF 4 Bright; + Loop; + Death: + D2FX GHIJ 4 Bright; + D2FX KL 3 Bright; + Stop; + } +} + diff --git a/wadsrc/static/zscript/hexen/ettin.txt b/wadsrc/static/zscript/hexen/ettin.txt new file mode 100644 index 000000000..8ddf9e7d2 --- /dev/null +++ b/wadsrc/static/zscript/hexen/ettin.txt @@ -0,0 +1,115 @@ + +// Ettin -------------------------------------------------------------------- + +class Ettin : Actor +{ + Default + { + Health 175; + Radius 25; + Height 68; + Mass 175; + Speed 13; + Damage 3; + Painchance 60; + Monster; + +FLOORCLIP + +TELESTOMP + SeeSound "EttinSight"; + AttackSound "EttinAttack"; + PainSound "EttinPain"; + DeathSound "EttinDeath"; + ActiveSound "EttinActive"; + HowlSound "PuppyBeat"; + Obituary "$OB_ETTIN"; + } + States + { + Spawn: + ETTN AA 10 A_Look; + Loop; + See: + ETTN ABCD 5 A_Chase; + Loop; + Pain: + ETTN H 7 A_Pain; + Goto See; + Melee: + ETTN EF 6 A_FaceTarget; + ETTN G 8 A_CustomMeleeAttack(random[EttinAttack](1,8)*2); + Goto See; + Death: + ETTN IJ 4; + ETTN K 4 A_Scream; + ETTN L 4 A_NoBlocking; + ETTN M 4 A_QueueCorpse; + ETTN NOP 4; + ETTN Q -1; + Stop; + XDeath: + ETTB A 4; + ETTB B 4 A_NoBlocking; + ETTB C 4 A_SpawnItemEx("EttinMace", 0,0,8.5, + random[DropMace](-128,127) * 0.03125, + random[DropMace](-128,127) * 0.03125, + 10 + random[DropMace](0,255) * 0.015625, 0, SXF_ABSOLUTEVELOCITY); + ETTB D 4 A_Scream; + ETTB E 4 A_QueueCorpse; + ETTB FGHIJK 4; + ETTB L -1; + Stop; + Ice: + ETTN R 5 A_FreezeDeath; + ETTN R 1 A_FreezeDeathChunks; + Wait; + } +} + +// Ettin mace --------------------------------------------------------------- + +class EttinMace : Actor +{ + Default + { + Radius 5; + Height 5; + +DROPOFF + +CORPSE + +NOTELEPORT + +FLOORCLIP + } + States + { + Spawn: + ETTB MNOP 5; + Loop; + Crash: + ETTB Q 5; + ETTB R 5 A_QueueCorpse; + ETTB S -1; + Stop; + } +} + +// Ettin mash --------------------------------------------------------------- + +class EttinMash : Ettin +{ + Default + { + +NOBLOOD + +NOICEDEATH + RenderStyle "Translucent"; + Alpha 0.4; + } + States + { + Death: + XDeath: + Ice: + Stop; + } +} + + + diff --git a/wadsrc/static/zscript/hexen/mana.txt b/wadsrc/static/zscript/hexen/mana.txt new file mode 100644 index 000000000..0a43a21dd --- /dev/null +++ b/wadsrc/static/zscript/hexen/mana.txt @@ -0,0 +1,99 @@ +// Blue mana ---------------------------------------------------------------- + +class Mana1 : Ammo +{ + Default + { + Inventory.Amount 15; + Inventory.MaxAmount 200; + Ammo.BackpackAmount 15; + Ammo.BackpackMaxAmount 200; + Radius 8; + Height 8; + +FLOATBOB + Inventory.Icon "MAN1I0"; + Inventory.PickupMessage "$TXT_MANA_1"; + } + States + { + Spawn: + MAN1 ABCDEFGHI 4 Bright; + Loop; + } +} + +// Green mana --------------------------------------------------------------- + +class Mana2 : Ammo +{ + Default + { + Inventory.Amount 15; + Inventory.MaxAmount 200; + Ammo.BackpackAmount 15; + Ammo.BackpackMaxAmount 200; + Radius 8; + Height 8; + +FLOATBOB + Inventory.Icon "MAN2G0"; + Inventory.PickupMessage "$TXT_MANA_2"; + } + States + { + Spawn: + MAN2 ABCDEFGHIJKLMNOP 4 Bright; + Loop; + } +} + +// Combined mana ------------------------------------------------------------ + +class Mana3 : CustomInventory +{ + Default + { + Radius 8; + Height 8; + +FLOATBOB + Inventory.PickupMessage "$TXT_MANA_BOTH"; + } + States + { + Spawn: + MAN3 ABCDEFGHIJKLMNOP 4 Bright; + Loop; + Pickup: + TNT1 A 0 A_GiveInventory("Mana1", 20); + TNT1 A 0 A_GiveInventory("Mana2", 20); + Stop; + } +} + +// Boost Mana Artifact Krater of Might ------------------------------------ + +class ArtiBoostMana : CustomInventory +{ + Default + { + +FLOATBOB + +COUNTITEM + +INVENTORY.INVBAR + +INVENTORY.FANCYPICKUPSOUND + Inventory.PickupFlash "PickupFlash"; + Inventory.DefMaxAmount; + Inventory.Icon "ARTIBMAN"; + Inventory.PickupSound "misc/p_pkup"; + Inventory.PickupMessage "$TXT_ARTIBOOSTMANA"; + Tag "$TAG_ARTIBOOSTMANA"; + } + States + { + Spawn: + BMAN A -1; + Stop; + Use: + TNT1 A 0 A_GiveInventory("Mana1", 200); + TNT1 A 0 A_GiveInventory("Mana2", 200); + Stop; + } +} diff --git a/wadsrc/static/zscript/hexen/puzzleitems.txt b/wadsrc/static/zscript/hexen/puzzleitems.txt new file mode 100644 index 000000000..f502664d7 --- /dev/null +++ b/wadsrc/static/zscript/hexen/puzzleitems.txt @@ -0,0 +1,338 @@ + +// Yorick's Skull ----------------------------------------------------------- + +class PuzzSkull : PuzzleItem +{ + Default + { + PuzzleItem.Number 0; + Inventory.Icon "ARTISKLL"; + Inventory.PickupMessage "$TXT_ARTIPUZZSKULL"; + Tag "$TAG_ARTIPUZZSKULL"; + } + States + { + Spawn: + ASKU A -1; + Stop; + } +} + + +// Heart of D'Sparil -------------------------------------------------------- + +class PuzzGemBig : PuzzleItem +{ + Default + { + PuzzleItem.Number 1; + Inventory.Icon "ARTIBGEM"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEMBIG"; + Tag "$TAG_ARTIPUZZGEMBIG"; + } + States + { + Spawn: + ABGM A -1; + Stop; + } +} + +// Red Gem (Ruby Planet) ---------------------------------------------------- + +class PuzzGemRed : PuzzleItem +{ + Default + { + PuzzleItem.Number 2; + Inventory.Icon "ARTIGEMR"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEMRED"; + Tag "$TAG_ARTIPUZZGEMRED"; + } + States + { + Spawn: + AGMR A -1; + Stop; + } +} + + +// Green Gem 1 (Emerald Planet) --------------------------------------------- + +class PuzzGemGreen1 : PuzzleItem +{ + Default + { + PuzzleItem.Number 3; + Inventory.Icon "ARTIGEMG"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN1"; + Tag "$TAG_ARTIPUZZGEMGREEN1"; + } + States + { + Spawn: + AGMG A -1; + Stop; + } +} + + +// Green Gem 2 (Emerald Planet) --------------------------------------------- + +class PuzzGemGreen2 : PuzzleItem +{ + Default + { + PuzzleItem.Number 4; + Inventory.Icon "ARTIGMG2"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEMGREEN2"; + Tag "$TAG_ARTIPUZZGEMGREEN2"; + } + States + { + Spawn: + AGG2 A -1; + Stop; + } +} + + +// Blue Gem 1 (Sapphire Planet) --------------------------------------------- + +class PuzzGemBlue1 : PuzzleItem +{ + Default + { + PuzzleItem.Number 5; + Inventory.Icon "ARTIGEMB"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE1"; + Tag "$TAG_ARTIPUZZGEMBLUE1"; + } + States + { + Spawn: + AGMB A -1; + Stop; + } +} + + +// Blue Gem 2 (Sapphire Planet) --------------------------------------------- + +class PuzzGemBlue2 : PuzzleItem +{ + Default + { + PuzzleItem.Number 6; + Inventory.Icon "ARTIGMB2"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEMBLUE2"; + Tag "$TAG_ARTIPUZZGEMBLUE2"; + } + States + { + Spawn: + AGB2 A -1; + Stop; + } +} + + +// Book 1 (Daemon Codex) ---------------------------------------------------- + +class PuzzBook1 : PuzzleItem +{ + Default + { + PuzzleItem.Number 7; + Inventory.Icon "ARTIBOK1"; + Inventory.PickupMessage "$TXT_ARTIPUZZBOOK1"; + Tag "$TAG_ARTIPUZZBOOK1"; + } + States + { + Spawn: + ABK1 A -1; + Stop; + } +} + + +// Book 2 (Liber Oscura) ---------------------------------------------------- + +class PuzzBook2 : PuzzleItem +{ + Default + { + PuzzleItem.Number 8; + Inventory.Icon "ARTIBOK2"; + Inventory.PickupMessage "$TXT_ARTIPUZZBOOK2"; + Tag "$TAG_ARTIPUZZBOOK2"; + } + States + { + Spawn: + ABK2 A -1; + Stop; + } +} + + +// Flame Mask --------------------------------------------------------------- + + +class PuzzFlameMask : PuzzleItem +{ + Default + { + PuzzleItem.Number 9; + Inventory.Icon "ARTISKL2"; + Inventory.PickupMessage "$TXT_ARTIPUZZSKULL2"; + Tag "$TAG_ARTIPUZZSKULL2"; + } + States + { + Spawn: + ASK2 A -1; + Stop; + } +} + +// Fighter Weapon (Glaive Seal) --------------------------------------------- + +class PuzzFWeapon : PuzzleItem +{ + Default + { + PuzzleItem.Number 10; + Inventory.Icon "ARTIFWEP"; + Inventory.PickupMessage "$TXT_ARTIPUZZFWEAPON"; + Tag "$TAG_ARTIPUZZFWEAPON"; + } + States + { + Spawn: + AFWP A -1; + Stop; + } +} + + +// Cleric Weapon (Holy Relic) ----------------------------------------------- + +class PuzzCWeapon : PuzzleItem +{ + Default + { + PuzzleItem.Number 11; + Inventory.Icon "ARTICWEP"; + Inventory.PickupMessage "$TXT_ARTIPUZZCWEAPON"; + Tag "$TAG_ARTIPUZZCWEAPON"; + } + States + { + Spawn: + ACWP A -1; + Stop; + } +} + + +// Mage Weapon (Sigil of the Magus) ----------------------------------------- + +class PuzzMWeapon : PuzzleItem +{ + Default + { + PuzzleItem.Number 12; + Inventory.Icon "ARTIMWEP"; + Inventory.PickupMessage "$TXT_ARTIPUZZMWEAPON"; + Tag "$TAG_ARTIPUZZMWEAPON"; + } + States + { + Spawn: + AMWP A -1; + Stop; + } +} + +// Clock Gear 1 ------------------------------------------------------------- + +class PuzzGear1 : PuzzleItem +{ + Default + { + PuzzleItem.Number 13; + Inventory.Icon "ARTIGEAR"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR"; + Tag "$TAG_ARTIPUZZGEAR1"; + } + States + { + Spawn: + AGER ABCDEFGH 4 Bright; + Loop; + } +} + + +// Clock Gear 2 ------------------------------------------------------------- + +class PuzzGear2 : PuzzleItem +{ + Default + { + PuzzleItem.Number 14; + Inventory.Icon "ARTIGER2"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR"; + Tag "$TAG_ARTIPUZZGEAR2"; + } + States + { + Spawn: + AGR2 ABCDEFGH 4 Bright; + Loop; + } +} + + +// Clock Gear 3 ------------------------------------------------------------- + +class PuzzGear3 : PuzzleItem +{ + Default + { + PuzzleItem.Number 15; + Inventory.Icon "ARTIGER3"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR"; + Tag "$TAG_ARTIPUZZGEAR3"; + } + States + { + Spawn: + AGR3 ABCDEFGH 4 Bright; + Loop; + } +} + + +// Clock Gear 4 ------------------------------------------------------------- + +class PuzzGear4 : PuzzleItem +{ + Default + { + PuzzleItem.Number 16; + Inventory.Icon "ARTIGER4"; + Inventory.PickupMessage "$TXT_ARTIPUZZGEAR"; + Tag "$TAG_ARTIPUZZGEAR4"; + } + States + { + Spawn: + AGR4 ABCDEFGH 4 Bright; + Loop; + } +} + diff --git a/wadsrc/static/zscript/hexen/scriptprojectiles.txt b/wadsrc/static/zscript/hexen/scriptprojectiles.txt new file mode 100644 index 000000000..5bf3f254f --- /dev/null +++ b/wadsrc/static/zscript/hexen/scriptprojectiles.txt @@ -0,0 +1,141 @@ +// Fire Ball ---------------------------------------------------------------- + +class FireBall : Actor +{ + Default + { + Speed 2; + Radius 8; + Height 8; + Damage 4; + DamageType "Fire"; + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + RenderStyle "Add"; + DeathSound "Fireball"; + } + States + { + Spawn: + FBL1 AB 4 Bright; + Loop; + Death: + XPL1 ABCDEF 4 Bright; + Stop; + } +} + +// Arrow -------------------------------------------------------------------- + +class Arrow : Actor +{ + Default + { + Speed 6; + Radius 8; + Height 4; + Damage 4; + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + } + States + { + Spawn: + ARRW A -1; + Stop; + Death: + ARRW A 1; + Stop; + } +} + +// Dart --------------------------------------------------------------------- + +class Dart : Actor +{ + Default + { + Speed 6; + Radius 8; + Height 4; + Damage 2; + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + } + States + { + Spawn: + DART A -1; + Stop; + Death: + DART A 1; + Stop; + } +} + +// Poison Dart -------------------------------------------------------------- + +class PoisonDart : Dart +{ + Default + { + PoisonDamage 20; + } +} + +// Ripper Ball -------------------------------------------------------------- + +class RipperBall : Actor +{ + Default + { + Speed 6; + Radius 8; + Damage 2; + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT +RIPPER + } + States + { + Spawn: + RIPP ABC 3; + Loop; + Death: + CFCF Q 4 Bright; + CFCF R 3 Bright; + CFCF S 4 Bright; + CFCF T 3 Bright; + CFCF U 4 Bright; + CFCF V 3 Bright; + CFCF W 4 Bright; + CFCF X 3 Bright; + CFCF Y 4 Bright; + CFCF Z 3 Bright; + Stop; + } +} + +// Projectile Blade --------------------------------------------------------- + +class ProjectileBlade : Actor +{ + Default + { + Speed 6; + Radius 6; + Height 6; + Damage 3; + +NOBLOCKMAP +NOGRAVITY +DROPOFF +MISSILE + +NOTELEPORT + } + States + { + Spawn: + BLAD A -1; + Stop; + Death: + BLAD A 1; + Stop; + } +} + diff --git a/wadsrc/static/zscript/hexen/speedboots.txt b/wadsrc/static/zscript/hexen/speedboots.txt new file mode 100644 index 000000000..e5a0364ec --- /dev/null +++ b/wadsrc/static/zscript/hexen/speedboots.txt @@ -0,0 +1,21 @@ + + +class ArtiSpeedBoots : PowerupGiver +{ + Default + { + +FLOATBOB + +COUNTITEM + Inventory.PickupFlash "PickupFlash"; + Inventory.Icon "ARTISPED"; + Inventory.PickupMessage "$TXT_ARTISPEED"; + Tag "$TAG_ARTISPEED"; + Powerup.Type "PowerSpeed"; + } + States + { + Spawn: + SPED ABCDEFGH 3 Bright; + Loop; + } +}