//Bonk concrete blocks with altfire.
actor Concreteman : TankArmorClass
{
Player.ScoreIcon "CONCMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Concreteman"
player.soundclass "concretemanc"
player.startitem "ConcreteShotBoss"
player.startitem "UltimateAttackItem2"
player.startitem "UltSoundWatcherSpawn2"
player.startitem "IsFromMM9"
player.startitem "BaseAltfireAmmo", 112
player.viewheight 63
projectilepassheight 86
player.jumpz 12
player.forwardmove 0.7,0.7
player.sidemove 0.68,0.68
States
{
Animation0:
Spawn:
CONM B 0
CONM B 1 A_JumpIf(z-floorz>0,"Jumping")
CONM A 0
CONM A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2
See:
CONM BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+1
Jumping:
CONM I 1 A_JumpIf(z-floorz<=0,"Spawn")
wait
Missile:
CONM FFFFF 1 A_JumpIf(z-floorz>0,"JumpingMissile")
Missile2:
CONM GGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
Goto Spawn+2
JumpingMissile:
CONM JJJJJ 1 A_JumpIf(z-floorz<=0,"Missile")
JumpingMissile2:
CONM JJJJJ 1 A_JumpIf(z-floorz<=0,"Missile2")
Goto Jumping
Animation1:
ConcreteTackleA:
CONM MMM 1
Goto Spawn+2
Animation2:
ConcreteTackleB:
CONM NNN 1
Goto Spawn+2
Animation3:
ConcreteStomp:
CONM OOO 1
Goto Spawn+2
Animation4:
ConcreteLandA:
CONM PPP 1
Goto Spawn+2
Animation5:
ConcreteLandB:
CONM QQQ 1
Goto Spawn+2
ClassPain:
CONM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
CONM H 20 ACS_ExecuteAlways(999,0,0)
CONM H 0 A_PlayerScream
CONM H 0 A_SpawnItemEx("FakeDeathFXMM9", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("ConcreteShotWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("ConcreteShotWepM")
goto ClassDeath
}
}

Actor ConcreteShotBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_CONCRETEMAN1"
States
{
Ready:
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"Ready.Ultimate")
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,2)
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Ready.CanAltfire")
CONH A 1 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
loop
Ready.CanAltfire:
CONH A 1 A_WeaponReady
TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
Goto Ready
Ready.Ultimate:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Ready.Ultimate.CanAltfire")
CONH A 1 A_WeaponReady(WRF_NOSECONDARY)
Goto Ready
Ready.Ultimate.CanAltfire:
CONH A 1 A_WeaponReady
Goto Ready

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
CONH A 1 A_Lower
Loop
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,880)
TNT1 A 0 A_SpawnItemEx("ConcreteManAmmoWatcher")
Select2:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
CONH A 1 A_Raise
Loop

Fire:
TNT1 A 0 A_GiveInventory("ToadChargeDamageGive")
Goto Fire1

Fire1:
TNT1 A 0 A_JumpIfInventory("Base56Ammo",28,"Fire2")
CONH B 2 A_GiveInventory("Base56Ammo",1)
TNT1 A 0 A_Refire("Fire1")
Goto OneShot

Fire2:
TNT1 A 0 A_JumpIfInventory("Base56Ammo",56,"Fire3")
CONH B 3 Offset(4,36)A_GiveInventory("Base56Ammo",1)
TNT1 A 0 A_Refire("Fire2")
Goto TwoShots

Fire3:
CONH B 1 Offset(8,40)
TNT1 A 0 A_Refire("Fire3")
Goto ThreeShots

OneShot:
TNT1 A 0 A_TakeInventory("Base56Ammo",56)
TNT1 A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_PlaySoundEx("weapon/concreteshot","Weapon")
TNT1 A 0 A_FireCustomMissile("ConcreteShotRM1",0,0,8,12)
CONH CCBAAAA 2
TNT1 A 0 A_Refire("OneShot")
Goto Ready

TwoShots:
TNT1 A 0 A_TakeInventory("Base56Ammo",56)
TNT1 A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_PlaySoundEx("weapon/concreteshot","Weapon")
TNT1 A 0 A_FireCustomMissile("ConcreteShotRM2a",0,0,8,12)
TNT1 A 0 A_FireCustomMissile("ConcreteShotRM2b",0,0,8,12)
CONH CCBAAAA 2
Goto Ready

ThreeShots:
TNT1 A 0 A_TakeInventory("Base56Ammo",56)
TNT1 A 0 A_GiveInventory("ToadChargeDamageTake")
TNT1 A 0 A_PlaySoundEx("weapon/concreteshot","Weapon")
TNT1 A 0 A_FireCustomMissile("ConcreteShotRM3a",0,0,8,12)
TNT1 A 0 A_FireCustomMissile("ConcreteShotRM3b",0,0,8,12)
TNT1 A 0 A_FireCustomMissile("ConcreteShotRM3c",0,0,8,12)
CONH CCBAAAA 2 A_WeaponReady(WRF_NOFIRE)
Goto Ready

Altfire:
TNT1 A 0 A_GiveInventory("ToadChargeDamageGive")
Goto Altfire1

Altfire1:
TNT1 A 0 A_JumpIfInventory("ConcreteAltfireChargeAmmo",28,"Altfire2")
CONH B 1 A_GiveInventory("ConcreteAltfireChargeAmmo",1)
TNT1 A 0 A_Refire("Altfire1")
Goto AltAttackCheck

AltAttackCheck:
CONH B 0 A_JumpIf(callACS("core_CheckFooting")== 1 || (abs(z-floorz) < 30 && momz <= 0),"ConcreteTackle")//A_CheckFloor("ConcreteTackle")
Goto ConcreteStompStart

Altfire2:
CONH B 1 Offset(2,34)
TNT1 A 0 A_Refire(1)
Goto ConcreteJumpStart
CONH B 1 Offset(4,36)
TNT1 A 0 A_Refire("Altfire2")
Goto ConcreteJumpStart

ConcreteTackle:
TNT1 A 0 A_WeaponReady(WRF_NOFIRE)
TNT1 A 0 A_GunFlash("ConcreteTackling")
TNT1 A 0 A_GiveInventory("ConcreteTackleStartPickUp",1)
ConcreteTackleLoop:
TNT1 A 0 A_PlaySoundEx("weapon/ConcreteTackle","Weapon")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
CONH D 1 A_JumpIfInventory("BaseCustomFlag2",1,"ConcreteTackleBounce")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
CONH D 1 A_JumpIfInventory("BaseCustomFlag2",1,"ConcreteTackleBounce")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
CONH E 1 A_JumpIfInventory("BaseCustomFlag2",1,"ConcreteTackleBounce")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
CONH E 1 A_JumpIfInventory("BaseCustomFlag2",1,"ConcreteTackleBounce")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"ConcreteTackleLoop")
Goto ConcreteAltfireEnd

ConcreteTackleBounce:
TNT1 A 0 A_GunFlash("EndFlash")
TNT1 A 0 A_GiveInventory("ConcreteTackleEndPickUp",1)
CONH D 1 Offset(6,38)
CONH E 1 Offset(4,33)
CONH D 1 Offset(3,35)
CONH E 1 Offset(2,32)
Goto ConcreteAltfireEnd

ConcreteJumpStart:
TNT1 A 0 A_GunFlash("ConcreteLunging")
TNT1 A 0 A_GiveInventory("ConcreteLungeStartPickUp",1)
CONH FGHI 1
ConcreteJumping:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"ConcreteStomping")
CONH J 1 A_JumpIf(z-floorz<=0,"ConcreteLanded")
loop

ConcreteStompStart:
TNT1 A 0 A_GunFlash("EndFlash")
TNT1 A 0 A_GiveInventory("ConcreteStompStartPickUp",1)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_GiveInventory("ConcreteStompEndPickUp",1)
ConcreteStomping:
TNT1 A 0 A_GunFlash("EndFlash")
TNT1 A 0 A_ChangeVelocity(0,0,-60,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SpawnItemEx("ConcreteStompDamager")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
CONH J 1 A_JumpIf(z-floorz<=0,"ConcreteLanded")
Goto ConcreteStomping+1
ConcreteLanded:
TNT1 A 0 A_GunFlash("EndFlash")
TNT1 A 0 A_GiveInventory("ConcreteLandPickUp",1)
CONH J 1 Offset(0,34)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
CONH J 1 Offset(0,34)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
CONH J 1 Offset(0,30)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
CONH J 1 Offset(0,30)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
CONH J 1 Offset(0,34)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
CONH J 1 Offset(0,34)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
CONH J 1 Offset(0,30)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
CONH J 1 Offset(0,30)A_Stop TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
CONH JHGF 2 A_WeaponReady(WRF_NOFIRE)
Goto ConcreteAltfireEnd

ConcreteAltfireEnd:
TNT1 A 0 A_GunFlash("EndFlash")
TNT1 A 0 A_GiveInventory("ConcreteAltfirePickUp",1)
CONH AAA 1 A_WeaponReady(WRF_NOFIRE)
Goto Ready

UltimateAttack:
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,82)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_SpawnItemEx("PaozoTeleportStart",128,0,0,momx,momy,200,0,SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM,0)
Goto Ready

ConcreteTackling:
TNT1 AAA 0 A_SpawnItemEx("ConcreteRemover",32,0,8)
TNT1 A 0 A_SpawnItemEx("ConcreteTackleHitBox",16,0,32)
TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_GiveInventory("ConcreteTackleMobility")
//TNT1 A 0 A_CheckFloor(2)
//TNT1 A 1 A_ChangeVelocity(cos(pitch)* 25,0,momz,CVF_RELATIVE|CVF_REPLACE)
//loop
//TNT1 A 1 A_ChangeVelocity(25,0,0,CVF_RELATIVE|CVF_REPLACE)
loop

ConcreteLunging:
TNT1 A 0 ThrustThingZ(0,-2,0,1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob",24),0,momz,CVF_RELATIVE|CVF_REPLACE)
loop

EndFlash:
TNT1 A 0
stop
}
}

Actor ConcreteManAmmoWatcher
{
+MISSILE
-SOLID
+NOGRAVITY
+NOINTERACTION
Height 0
Radius 0
States
{
Spawn: 
TNT1 A 0 
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Spawn2")
TNT1 A 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_GiveToTarget("BaseAltfireAmmo",1)
loop
Spawn2:
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto Spawn
TNT1 A 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
loop
Death:
TNT1 A 0
stop
}
}

actor ConcreteAltfireChargeAmmo : Ammo
{
	inventory.amount 1
	inventory.maxamount 28
	+INVENTORY.IGNORESKILL
}

actor ConcreteShotRM1
{
PROJECTILE
-NOGRAVITY
+THRUSPECIES
species "ConcretemanType"
Obituary "$OB_CONCRETEMAN1"
damagetype "Concreteman1"
mass 10
damage (15)
speed 36
Radius 16
Height 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ThrustThingZ(0,mass,0,1)
Spawn2:
CONC BC 2
loop
XDeath:
TNT1 A 0
stop
Death:
CONC D 4 A_ChangeFlag(NOGRAVITY,True)
TNT1 A 0 A_JumpIfCloser(48, "XDeath")
TNT1 A 0 A_SpawnItemEx("ConcreteBlockRM",0,0,0,0,0,0,0, SXF_ABSOLUTEANGLE)
TNT1 A 0 A_PlaySoundEx("weapon/concreteblock","Weapon")
TNT1 A 2
stop
}
}
actor ConcreteShotRM2a : ConcreteShotRM1{damagetype "Concreteman2"}
actor ConcreteShotRM2b : ConcreteShotRM1 {speed 50 mass 20 damagetype "Concreteman2"}
actor ConcreteShotRM3a : ConcreteShotRM1{damagetype "Concreteman3"}
actor ConcreteShotRM3b : ConcreteShotRM2b{damagetype "Concreteman3"}
actor ConcreteShotRM3c : ConcreteShotRM1{mass 30 speed 64 damagetype "Concreteman3"}

actor ConcreteShotPaozo : ConcreteShotRM1
{
Obituary "$OB_CONCRETEMAN4"
damagetype "ConcreteFreezeReal"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ThrustThingZ(0,mass,0,1)
Spawn2:
CONC BMCN 1
loop
Death:
CONC D 4 A_ChangeFlag(NOGRAVITY,True)
TNT1 A 0 A_JumpIfCloser(48, "XDeath")
TNT1 A 0 A_SpawnItemEx("ConcreteBlockRMPaozo",0,0,0,0,0,0,0, SXF_ABSOLUTEANGLE)
TNT1 A 0 A_PlaySoundEx("weapon/concreteblock","Weapon")
TNT1 A 2
stop
}
}

actor ConcreteBlockRM
{
+MISSILE
+GHOST
+TOUCHY
+DONTRIP
+NOBLOOD
+CANTSEEK
+NOGRAVITY
+SHOOTABLE
+DONTBLAST
+THRUSPECIES
+FORCEYBILLBOARD
+USEDAMAGEEVENTSCRIPT
damagefactor "ConcreteShot", 0.0
//damagefactor "ConcreteRemover", 100.0
damagefactor "ConcretemanTackle", 100.0
damagefactor "ConcretemanStomp", 100.0
damagefactor "StoneSpin", 100.0
damagefactor "UranusSlam", 100.0
species "ConcretemanType"
Health 50
Mass 9999
height 32
radius 16
scale 2.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CONC D 1 A_ClearTarget
TNT1 A 0 A_ChangeFlag(TOUCHY,False)
TNT1 A 0 A_ChangeFlag(MISSILE,False)
TNT1 A 0 A_ChangeFlag(SOLID,True)
TNT1 A 0 A_GiveInventory("IsProtoman")
Goto Spawn2
Spawn2:
CONC EF 64
Goto Death
Pain.StoneSpin:
Pain.ConcreteRemover:
Death:
CONC B 0 A_NoBlocking
CONC FG 3
stop
}
}

actor ConcreteBlockRMPaozo : ConcreteBlockRM
{
States
{
Spawn2:
CONC EEEF 64
Goto Death
}
}

actor ConcreteTackleHitBox
{
PROJECTILE
-NOBLOCKMAP
+DONTBLAST
+DONTREFLECT
damagetype "UranusSlam"//"ConcretemanTackle"
Obituary "$OB_CONCRETEMAN2"
damage (20)
Radius 24
Height 32
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death:
TNT1 A 0 A_GiveToTarget("BaseCustomFlag2",1)
stop
}
}

Actor ConcreteTackleProtect : PowerProtection
{
	Powerup.Duration -1
	DamageFactor "ConcretemanTackle", 0.0
}

actor ConcreteRemover
{
PROJECTILE
+RIPPER
damagetype "ConcreteRemover"
Renderstyle Translucent
damage (1)
Radius 24
Height 32
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 3
stop
}
}

actor ConcreteStompDamager : BasicExplosion
{
Obituary "$OB_CONCRETEMAN3"
damagetype "ConcretemanStomp"
species "DustManType"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(10, 40, 0, 0, 40)
stop
}
}

actor ConcreteShockwaveDamager
{
+MISSILE
-SOLID
+RIPPER
+NOGRAVITY
+SKYEXPLODE
+THRUSPECIES
+NOINTERACTION
Obituary "$OB_CONCRETEMAN3"
damagetype "ConcretemanStomp"
species "ConcretemanType"
damage (12)
height 1
radius 400
States
{
Spawn:
TNT1 A 0
TNT1 A 35
stop
}
}

actor ConcreteShockwaveRadius
{
PROJECTILE
+NOCLIP
+NOINTERACTION
Height 1
Radius 1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,36,1) TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,72,1)
TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,108,1) TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,144,1)
TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,180,1) TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,216,1)
TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,252,1) TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,288,1)
TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,324,1) TNT1 A 0 A_SpawnItemEx("ConcreteShockwave",0,0,0,45,0,0,360,1)
stop
}
}

actor ConcreteShockwave
{
PROJECTILE
+NOCLIP
+NOINTERACTION
Height 1
Radius 1
scale 2.5
States
{
Spawn:
TNT1 A 0
QUAK A 10
stop
}
}

actor PaozoTeleportStart
{
PROJECTILE
+DONTBLAST
+SKYEXPLODE
+DONTREFLECT
Radius 8
Height 8
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 2
Death:
TNT1 A 0 A_SpawnItemEx("PaozoTeleport", 0, 0, 0, momx, momy, -36, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)
stop
}
}

actor PaozoTeleport
{
Translation "198:198=240:240", "192:192=193:193"
PROJECTILE
-DONTBLAST
+NOCLIP
+SKYEXPLODE
+DONTREFLECT
Radius 8
Height 8
scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TFOG D 9
TNT1 A 0 A_ChangeFlag("NOCLIP",False)
TFOG DDDDDDDDDD 1 A_CheckFloor("Death")
Goto Death
Death:
TNT1 A 0 A_SpawnItemEx("PaozoAssistance",0,0,3,0,0,momz,0,SXF_NOCHECKPOSITION,0) 
stop
}
}

actor PaozoAssistance
{
Translation "198:198=240:240", "192:192=193:193"
+MISSILE
-NOGRAVITY
+NOCLIP
+DONTBLAST
+SKYEXPLODE
+THRUACTORS
+DONTREFLECT
+LOOKALLAROUND
+SEEKERMISSILE
+NOTARGETSWITCH
Radius 8
Height 8
scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_ChangeFlag("MISSILE",False)
Goto Spawn2

Spawn2:
TNT1 A 0 A_ChangeVelocity(0, 0, -32, CVF_REPLACE)
TFOG D 1 A_JumpIf(z-floorz<=0,"Spawn3")
loop

Spawn3:
TFOG EF 2 A_ChangeFlag("NOCLIP",False)
PAOZ A 35
Goto ConcreteSpray

ConcreteSpray:
TNT1 A 0 A_PlaySoundEx("weapon/concreteshot","Body")
PAOZ C 2 A_SpawnItemEx("ConcreteShotPaozo",130,0,50,random(10,50),random(-20,20),random(-10,15))
TNT1 A 0 A_TakeFromTarget("MediumShortUltimateAmmo",2)
TNT1 A 0 A_JumpIfInTargetInventory("MediumShortUltimateAmmo",1,"SeekCheck")
Goto PaozoExit

SeekCheck:
TNT1 A 0 A_SeekerMissile(0, 0, SMF_LOOK, 256)
TNT1 A 0 A_JumpIfTargetInLOS("PaozoTurn",0,JLOSF_PROJECTILE)
TNT1 A 1 A_Jump(256,"ConcreteSpray")
wait

PaozoTurn:
TNT1 A 0 A_FaceTracer(0,0)
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_NULL)
TNT1 A 1 A_Jump(256,"ConcreteSpray")
wait

PaozoExit:
PAOZ A 35 A_TakeFromTarget("UltAttackFlag")
TFOG FE 2
TNT1 A 0 A_SpawnItemEx("PaozoSpawnOut",0,0,0,0,0,30)
TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown",1)
stop
}
}

actor PaozoSpawnOut
{
Translation "198:198=240:240", "192:192=193:193"
+NOINTERACTION
Height 1
Radius 1
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TFOG DDDD 30
stop
}
}

actor FrozenInConcreteCounter : Powerup
{
powerup.duration 70
}
actor FrozenInUltConcreteCounter : Powerup
{
powerup.duration 210
}
actor ConcreteFreezeFlag1 : Powerup
{
powerup.duration 15
}
actor ConcreteFreezeFlag2 : Powerup
{
powerup.duration 15
}

actor ConcreteFreezer : CustomInventory
{
+INVENTORY.AUTOACTIVATE
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("FrozenInConcreteCounter", 1, "No")
TNT1 A 0 A_JumpIfInventory("FrozenInUltConcreteCounter", 1, "No")
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 A_Stop
PLAY H 0 A_GiveInventory("ConcreteStunned",1)
PLAY H 0 A_GiveInventory("FrozenInConcreteCounter",1)
PLAY H 0 A_GiveInventory("CriticalDeath",1)
PLAY H 0 ACS_NamedExecuteAlways("core_flyplayer",0,0,0)
PLAY H 0 ACS_NamedExecuteAlways("core_freezeplayer",0,0,1)
TNT1 A 0 A_SpawnItemEx("ConcreteStunnedWatcher")
TNT1 A 1
stop
No:
TNT1 A 0
stop
}
}

actor ConcreteUltFreezer : CustomInventory
{
+INVENTORY.AUTOACTIVATE
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("FrozenInConcreteCounter", 1, "No")
TNT1 A 0 A_JumpIfInventory("FrozenInUltConcreteCounter", 1, "No")
TNT1 A 0 A_Stop
PLAY H 0 A_GiveInventory("ConcreteStunned",1)
PLAY H 0 A_GiveInventory("FrozenInUltConcreteCounter",1)
PLAY H 0 A_GiveInventory("CriticalDeath",1)
PLAY H 0 ACS_NamedExecuteAlways("core_freezeplayer",0,0,1)
TNT1 A 0 A_SpawnItemEx("ConcreteUltStunnedWatcher")
TNT1 A 1
stop
No:
TNT1 A 0
stop
}
}

actor ConcreteStunnedWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("MovementFrozen3")
TNT1 A 0 A_GiveToTarget("ConcreteShotDebuffPowerUp")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("FrozenInConcreteCounter", 1, "Spawn")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("MovementFrozen3")
TNT1 A 0 A_GiveToTarget("ConcreteShotDebuffPowerUp")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("FrozenInConcreteCounter", 1, "Spawn")
goto Death

Death:
TNT1 A 0 A_TakeFromTarget("FrozenInConcreteFlag")
TNT1 A 0 A_TakeFromTarget("ConcreteShotDebuffPowerUp",999)
PLAY H 0 A_TakeFromTarget("ConcretemanStunColor",999)
PLAY H 0 A_TakeFromTarget("CriticalDeath",999)
TNT1 AAAAA 1 A_GiveToTarget("DarkRingUnstun")
stop
}
}

actor ConcreteUltStunnedWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("MovementFrozen3")
TNT1 A 0 A_GiveToTarget("ConcreteShotDebuffPowerUp")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("FrozenInUltConcreteCounter", 1, "Spawn")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("MovementFrozen3")
TNT1 A 0 A_GiveToTarget("ConcreteShotDebuffPowerUp")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("FrozenInUltConcreteCounter", 1, "Spawn")
goto Death

Death:
TNT1 A 0 A_TakeFromTarget("FrozenInConcreteFlag")
TNT1 A 0 A_TakeFromTarget("ConcreteShotDebuffPowerUp",999)
PLAY H 0 A_TakeFromTarget("ConcretemanStunColor",999)
PLAY H 0 A_TakeFromTarget("CriticalDeath",999)
TNT1 AAAAA 1 A_GiveToTarget("DarkRingUnstun")
stop
}
}

actor ConcretemanStunColor : PowerUp
{
powerup.colormap 1.0, 1.0, 1.0
}

actor ConcreteStunned : PowerupGiver
{
  inventory.maxamount 0
  powerup.duration -99
  powerup.type "ConcretemanStunColor"
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  states
  {
  Spawn:
    TNT1 A 5
    loop
  }
}

actor ConcreteShotDebuff : PowerProtection
{
damagefactor "ConcretemanTackle", 2.0
damagefactor "ConcretemanStomp", 2.0
powerup.duration -1
}

actor ConcreteShotDebuffPowerUp : BasicPowerupGiver
{
powerup.type "ConcreteShotDebuff"
}

actor InflictConcreteShotDebuff : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("ConcreteShotDebuff",1,"No")
TNT1 A 0 A_GiveInventory("ConcreteShotDebuffPowerUp",1)
stop
No:
TNT1 A 0
stop
}
}

actor FrozenInConcreteFlag : VCOnce{} 

actor ConcreteBreakFX : BasicClientSide
{
-NOCLIP
-NOINTERACTION
reactiontime 45
gravity 2.0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")
S_1:
C9BR A 1 ThrustThingZ(0,7,1,1)
C9BR A 0 A_Countdown
loop
S_2:
C9BR B 1 ThrustThingZ(0,7,1,1)
C9BR B 0 A_Countdown
loop
S_3:
C9BR C 1 ThrustThingZ(0,7,1,1)
C9BR C 0 A_Countdown
loop
S_4:
C9BR D 1 ThrustThingZ(0,7,1,1)
C9BR D 0 A_Countdown
loop
}
}

actor ConcreteDeathBlock
{
PROJECTILE
damage(0)
+THRUACTORS
scale 2.5
radius 16
height 32
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CONC D 4
CONC B 0 A_SpawnItemEx("ConcreteBlockRM",0,0,0,0,0,0,0, SXF_ABSOLUTEANGLE)
CONC E 0 A_PlaySoundEx("weapon/concreteblock","Weapon")
TNT1 A 2
stop
}
}

actor ConcreteQuakeDebris : GutsQuakeDebris
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"S_1","S_2")

S_1:
C9BR C 70
stop

S_2:
C9BR D 70
stop
}
}

actor ConcreteTackleStartPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("ConcreteAltfireChargeAmmo",28)
stop
}
}

actor ConcreteTackleEndPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Quake(3,20,0,300)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
TNT1 A 0 A_PlaySoundEx("weapon/ConcreteTackleHit","Body")
TNT1 A 0 A_ChangeVelocity(-10,0,10,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

actor ConcreteLungeStartPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 ThrustThingZ(0,100,0,1)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_ChangeFlag("SOLID",False)
TNT1 A 0 A_ChangeFlag("PICKUP",False)
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_ChangeFlag("THRUACTORS",True)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
TNT1 A 0 A_TakeInventory("ConcreteAltfireChargeAmmo",28)
stop
}
}

actor ConcreteStompStartPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_ChangeFlag("SOLID",False)
TNT1 A 0 A_ChangeFlag("PICKUP",False)
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_ChangeFlag("THRUACTORS",True)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",112)
TNT1 A 0 A_GiveInventory("HalfDamageProtection",1)
TNT1 A 0 A_TakeInventory("ConcreteAltfireChargeAmmo",28)
stop
}
}

actor ConcreteStompEndPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("GravityRestore",1)
TNT1 A 0 A_TakeInventory("HalfDamageProtection",1)
stop
}
}

actor ConcreteLandPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Quake(3,20,0,300)
TNT1 A 0 A_ChangeFlag("PICKUP",True)
TNT1 A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_ChangeFlag("THRUACTORS",False)
TNT1 A 0 A_GiveInventory("GravityRestore",1)
TNT1 A 0 A_SpawnItemEx("ConcreteShockwaveRadius")
TNT1 A 0 A_PlaySoundEx("weapon/ConcreteStompLand","Weapon")
TNT1 A 0 A_FireCustomMissile("ConcreteShockwaveDamager",0,0,0,0)
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("ConcreteQuakeDebris",random(32,400),0,0,0,0,random(5,14),random(0,360))
stop
}
}

actor ConcreteAltfirePickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag2",1)
stop
}
}

actor ConcreteTackleMobility : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_CheckFloor(2)
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",cos(pitch)* 25),0,momz,CVF_RELATIVE|CVF_REPLACE)
stop
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",25),0,0,CVF_RELATIVE|CVF_REPLACE)
stop
}
}


actor ConcretemanWallRush_CI : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("HSHWallRushImmune",1,"PickupNo")
TNT1 A 0 A_JumpIfInventory("NewWallSlam",1,"PickupNo")
TNT1 A 0 A_GiveInventory("NoNewWallSlam",1)
TNT1 A 0 A_GiveInventory("NewWallSlam",1)
TNT1 A 0 A_GiveInventory("WallSlamRealTimer",1)
TNT1 A 0 A_SpawnItemEX("ConcretemanWallRushChecker")
stop
PickupNo:
TNT1 A 0
stop
}
}


actor ConcretemanWallRushChecker
{
Height 0
Radius 0
Damage (0)
+NOINTERACTION
+NOCLIP
DamageType "UranusSlam"
Obituary "$OB_CONCRETEMAN2"
decal WallBreak
PROJECTILE
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
TNT1 A 0 A_TransferPointer(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TARGET, AAPTR_TARGET)
SpawnStart0:
TNT1 A 0 A_GiveInventory("WallSlamTimer",1)
SpawnStart:
TNT1 A 0 A_GiveInventory("WallSlamTrailPickup",1,AAPTR_TRACER)
TNT1 A 1 A_GiveInventory("WallSlamTimer",1,AAPTR_TRACER)
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 0 A_JumpIfInventory("RaThorWallRush_P",1,"DeathCheck",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("WallSlamRealTimer",1,"SpawnStart",AAPTR_TRACER)
goto Death
DeathCheck:
TNT1 A 0 //A_JumpIfInventory("NewWallSlam",1,"Death",AAPTR_TRACER)
TNT1 A 0 A_SpawnItemEx("RaThorWallBonk")
TNT1 A 0 A_GiveInventory("WallSlamTimer",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ConcreteQuakeDebris",random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8))
TNT1 HHHHH 0 A_SpawnItemEx("ConcreteBreakFX",random(0,48),0,random(0,64),random(-10,10),0,random(2,13),random(0,359))
TNT1 A 0 A_Quake(4,10,0,256)
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_PlaySoundEx("weapon/wallrush","Weapon")
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 0 A_Explode(15,12,0,0,12)
TNT1 A 10
Death:
TNT1 A 2
stop
}
}

actor ConcreteDestroyer_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Quake(30,4,0,300)
TNT1 A 0 A_Explode(10,30,0,0,30)
TNT1 AAAAA 0 A_SpawnItemEx("ConcreteQuakeDebris",random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8))
TNT1 HHHHH 0 A_SpawnItemEx("ConcreteBreakFX",random(0,48),0,random(0,64),random(-10,10),0,random(2,13),random(0,359))
TNT1 A 0 Thing_Remove(0)
stop
}
}

actor ConcreteBlockBonked
{
PROJECTILE
+THRUSPECIES
species "ConcretemanType"
damagetype "GutsMan"
Obituary "$OB_GUTSMAN1"
Damage (36)
Speed 40
Radius 16
Height 32
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CONC E 1
wait
Death:
TNT1 A 0 A_SpawnItemEx("RaThorWallBonk")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BreakImpactDot",random(-40,40),random(-40,40),random(-40,40),random(-18,18),random(-18,18),random(-18,18))
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("WallDeathDust",random(0,40),0,random(0,48),frandom(0,2),0,frandom(-2,2),random(0,359),1)
TNT1 A 0 A_Quake(2,18,0,256)
TNT1 A 0 A_PlaySoundEx("weapon/dragonburst","Body")
TNT1 A 1 A_PlaySoundEx("weapon/thruwall","Weapon")
CONC FG 8
stop
}
}

actor ConcreteBlockBonked_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Quake(30,4,0,300)
TNT1 A 0 A_PlaySoundEx("weapon/stonehit","SoundSlot6")
TNT1 A 0 A_PlaySoundEx("weapon/ConcreteStompLand","Weapon")
TNT1 A 0 A_FireCustomMissile("ConcreteBlockBonked",0,0,0,0)
stop
}
}
