Here you go, all of the tanks (including the first one with the aforementioned issue fixed)
Code: Select all
actor SSTank1
{
//$Category Monsters (Wolf3D)
//$Title Tank 1 (3500 HP - Panther Panzer IV)
//$Color 4
Health 3500
Radius 100
Height 96
Mass 0x7ffffff
Speed 2.66666667
MinMissileChance 160
Tag "Panther Panzer IV"
+SLIDESONWALLS //ozy81 - avoid incorrect clipping
+NOBLOODDECALS
+NOINFIGHTING //ozy81
+SYNCHRONIZED
+MISSILEMORE
+NORADIUSDMG
+FLOORCLIP
+DONTMORPH
+BOSSDEATH
+PAINLESS
+SOLID
+BOSS
Monster
Obituary "$TANKS"
Species Nazi
MaxStepHeight 32
BloodType "TankSpark"
States
{
Spawn:
CYBR A 10 A_Look
loop
See:
"####" A 1
"####" A 0 A_JumpIfTargetInLOS(1) // only move if we have a target
loop
"####" A 0 A_PlaySound("TKMOVE", CHAN_7, 1, true)
"####" A 0
"####" A 0 A_FaceTarget(1.0)
"####" A 0 A_ChangeVelocity(Cos(angle) * speed, Sin(angle) * speed, velz, CVF_REPLACE)
// only attack if our target is within 5 degrees
// if the top part of the tank model was separate,
// this behavior could potentially be removed.
"####" A 0 A_JumpIfTargetInLOS(1, 5)
loop
"####" A 0 A_Chase("Missile", "Missile", CHF_DONTTURN|CHF_NODIRECTIONTURN|CHF_DONTMOVE)
loop
Missile:
"####" A 10
"####" A 0 A_Jump(128, "Turret")
"####" A 0 A_Jump(96, "Missile2")
"####" BCD 8
"####" E 8 A_CustomMissile("PanzerRocket", scalex * 76, 0, angle, CMF_ABSOLUTEANGLE)
"####" FG 8
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
"####" A 0 A_JumpIfTargetInLOS("Missile", 1) // attack again if we're perfectly aimed
goto See
Turret:
CYBR A 0 A_PlaySound("weapons/chaingun", CHAN_WEAPON)
"####" EEEE 1 light("SUPAFIRE") A_CustomMissile("EnemyChaingunTracer", scalex * 48, scaley * 26, random(-4, 4))
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
CYBR A 2 A_JumpIfTargetInLOS("Turret", 45)
goto See
Missile2:
CYBR BCD 2
"####" E 2 A_CustomMissile("PanzerRocket", scalex * 76, 0, angle, CMF_ABSOLUTEANGLE)
"####" FG 2
"####" A 20
"####" BCD 4
"####" E 4 A_CustomMissile("PanzerRocket", scalex * 76, 0, angle, CMF_ABSOLUTEANGLE)
"####" FG 4
"####" A 20
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
"####" A 0 A_JumpIfTargetInLOS("Missile2", 1) // attack again if we're perfectly aimed
goto See
Death:
TNT1 A 0 A_StopSound(CHAN_7)
"####" A 0 A_PlaySound("weapons/explode")
"####" A 0 A_Scream
"####" A 0 A_NoBlocking
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_Tank", random(64, 112), random(64, 112), random(128, 144), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_GlassShard_Large", random(64, 112), random(64, 112), random(128, 144), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0, SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
"####" A 1 A_SpawnItemEx("KaBoomer", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
"####" A 1 A_SpawnItemEx("GeneralExplosion_Large", 56, 0, 32)
"####" A 20 A_SpawnItemEx("DestroyedTank1")
stop
}
}
actor SSTank2 : SSTank1
{
//$Title Tank 2 (4000 HP - KFZ 251 HalfTrack)
Height 88
Health 4000
Speed 2.33333333
Tag "KFZ 251 HalfTrack"
States
{
Spawn:
CYBR A 10 A_Look
loop
Missile:
"####" A 10
"####" A 0 A_Jump(128, "Turret")
"####" BCD 8
"####" E 8 A_CustomMissile("PanzerRocket", scalex * 88, 0, angle, CMF_ABSOLUTEANGLE)
"####" FG 8
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
"####" A 0 A_JumpIfTargetInLOS("Missile", 1) // attack again if we're perfectly aimed
goto See
Turret:
CYBR A 0 A_PlaySound("weapons/chaingun", CHAN_WEAPON)
"####" EEEE 1 light("SUPAFIRE") A_CustomMissile("EnemyChaingunTracer", scalex * 70, scaley * -16, random(-4, 4))
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
CYBR A 2 A_JumpIfTargetInLOS("Turret", 45)
loop
Death:
TNT1 A 0 A_StopSound(CHAN_7)
"####" A 0 A_PlaySound("weapons/explode")
"####" A 0 A_Scream
"####" A 0 A_NoBlocking
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_Tank2", random(48, 96), random(48, 96), random(96, 128), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_GlassShard_Large", random(48, 96), random(48, 96), random(96, 128), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0, SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
"####" A 1 A_SpawnItemEx("KaBoomer", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
"####" A 1 A_SpawnItemEx("GeneralExplosion_Large", 56, 0, 32)
"####" A 20 A_SpawnItemEx("DestroyedTank2")
stop
}
}
actor SSTank3 : SSTank1
{
//$Title Tank 3 (3000 HP - Tiger I Panzer)
Health 3000
Height 88
Speed 2.55555556
Tag "Tiger I Panzer"
States
{
Spawn:
CYBR A 10 A_Look
loop
Missile:
CYBR A 10
"####" A 0 A_Jump(128, "Turret")
"####" BCD 8
"####" E 8 A_CustomMissile("PanzerRocket", scalex * 65, scaley * 4, angle, CMF_ABSOLUTEANGLE)
"####" FG 8
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
"####" A 0 A_JumpIfTargetInLOS("Missile", 1) // attack again if we're perfectly aimed
goto See
Turret:
CYBR A 0 A_PlaySound("weapons/chaingun", CHAN_WEAPON)
"####" EEEE 1 light("SUPAFIRE") A_CustomMissile("EnemyChaingunTracer", scalex * 48, scaley * 24, random(-4, 4))
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
CYBR A 2 A_JumpIfTargetInLOS("Turret", 45)
loop
Death:
TNT1 A 0 A_StopSound(CHAN_7)
"####" A 0 A_PlaySound("weapons/explode")
"####" A 0 A_Scream
"####" A 0 A_NoBlocking
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_Tank2", random(48, 96), random(48, 96), random(88, 112), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_GlassShard_Large", random(48, 96), random(48, 96), random(96, 128), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0, SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
"####" A 1 A_SpawnItemEx("KaBoomer", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
"####" A 1 A_SpawnItemEx("GeneralExplosion_Large", 56, 0, 32)
"####" A 20 A_SpawnItemEx("DestroyedTank3")
stop
}
}
actor SSTank4 : SSTank1
{
//$Title Tank 4 (1000 HP - Light Panzer KFZ 222)
Health 1000
Radius 80
Height 80
Speed 2.55555556
Tag "Light Panzer KFZ 222"
States
{
Spawn:
CYBR A 10 A_Look
loop
Missile:
"####" B 0 A_PlaySound("weapons/chaingun", CHAN_WEAPON)
"####" BBBB 1 LIGHT("SUPAFIRE") A_CustomMissile("EnemyChaingunTracer", scalex * 80, scaley * 0, random(-4, 4))
"####" A 0 A_JumpIfHealthLower(1, "See", AAPTR_TARGET)
"####" A 2 A_JumpIfTargetInLOS("Missile", 45)
loop
Death:
TNT1 A 0 A_StopSound(CHAN_7)
"####" A 0 A_PlaySound("weapons/explode")
"####" A 0 A_Scream
"####" A 0 A_NoBlocking
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_Tank2", random(48, 96), random(48, 96), random(88, 112), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("Debris_GlassShard_Large", random(48, 96), random(48, 96), random(96, 128), random(1, 3), random(1, 3), random(1, 3), random(0, 360), SXF_CLIENTSIDE)
"####" A 0 A_SpawnItemEx("Nuke", 0, 0, 5, 0, 0, 0, 0, SXF_TRANSFERPOINTERS|SXF_NOCHECKPOSITION)
"####" A 1 A_SpawnItemEx("KaBoomer", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
"####" A 1 A_SpawnItemEx("GeneralExplosion_Large", 56, 0, 32)
"####" A 20 A_SpawnItemEx("DestroyedTank4")
stop
}
}
Adding it to the other tanks was fairly simple, all that was needed was to add a few checks to the code. Looking at them side-by-side with the original code should explain the gist of it