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")
TNT1 A 0 A_PlaySoundEx("weapon/concretecharge","SoundSlot7",1)
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_StopSoundEx("SoundSlot7")
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_StopSoundEx("SoundSlot7")
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_CheckFloor("ConcreteTackle")//Anti desync rofl
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)
TNT1 A 0 A_GiveInventory("VC_Timer",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 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
TNT1 A 1 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 0 A_GiveToTarget("BaseAltfireAmmo",1)
loop
Spawn2:
TNT1 A 0 A_JumpIfInTargetInventory("IsTheTerminator",1,"Death")
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 A_SpawnItemEX("ConcreteCaseEffect")
stop
Death:
CONC D 0 A_SpawnItemEX("ConcreteCaseEffect")
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 "ConcreteFreezeReal2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ThrustThingZ(0,mass,0,1)
Spawn2:
CONC BMCN 1
loop
Death:
CONC D 0 A_SpawnItemEX("ConcreteCaseEffect")
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 "normal", 0.0
damagefactor "ConcreteShot", 0.0
damagefactor "ConcreteRemover", 100.0
damagefactor "ConcretemanTackle", 100.0
damagefactor "ConcretemanStomp", 100.0
damagefactor "StoneSpin", 100.0
damagefactor "ConcreteSlamCheck", 100.0
species "ConcretemanType"
Health 50
Mass 9999
height 32
radius 16
scale 2.0
Obituary "$OB_CONCRETESLAM"
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 "ConcretemanTackle"
Obituary "$OB_CONCRETEMAN2"
damage (20)
Radius 24
Height 32
scale 2.5
States
{
Spawn:
TNT1 A 0//ConcreteTackleHitBox",16,0,32)
TNT1 A 1 A_Warp(AAPTR_TARGET,16,0,32,0,WARPF_NOCHECKPOSITION)
TNT1 A 1 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Spawn")
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 ConcreteShockwaveDamager2 : ConcreteShockwaveDamager
{
radius 250
}

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 ConcreteShockwaveRadius2 : ConcreteShockwaveRadius
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,36,1) TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,72,1)
TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,108,1) TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,144,1)
TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,180,1) TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,216,1)
TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,252,1) TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,288,1)
TNT1 A 0 A_SpawnItemEx("CommandoShockwave",0,0,0,45,0,0,324,1) TNT1 A 0 A_SpawnItemEx("CommandoShockwave",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)
TNT1 A 0 A_SpawnItemEx("ConcreteTackleHitBox",16,0,32)
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_PlaySoundEx("weapon/ConcreteStompLand","Weapon")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("ConcreteQuakeDebris",random(32,400),0,0,0,0,random(5,14),random(0,360))
TNT1 A 0 A_JumpIfInventory("VC_Timer",1,"Pickup2")
TNT1 A 0 A_SpawnItemEx("ConcreteShockwaveRadius2")
TNT1 A 0 A_FireCustomMissile("ConcreteShockwaveDamager2",0,0,0,0)
TNT1 A 0 A_TakeInventory("VC_Timer",9)
stop
Pickup2://Charged altfire
TNT1 A 0 A_SpawnItemEx("ConcreteShockwaveRadius")
TNT1 A 0 A_FireCustomMissile("ConcreteShockwaveDamager",0,0,0,0)
TNT1 A 0 A_TakeInventory("VC_Timer",9)
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 : BaseWallRushChecker
{
DamageType "UranusSlam"
Obituary "$OB_CONCRETEMAN2"
decal WallBreak
states
{
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,50,0,0,50)
/*TNT1 AAAAA 0 A_SpawnItemEx("WallDeathDust",random(0,40),0,random(0,48),frandom(0,2),0,frandom(-2,2),random(0,359),1)
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 ConcreteDestroyerDamager_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("ConcreteDestroyerDamager")
stop
}
}

actor ConcreteDestroyerDamager : BasicExplosion
{
//damagetype "ConcreteSlamCheck"
Obituary "$OB_CONCRETESLAM"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(10,50,0,0,50)
TNT1 AAAAA 0 A_SpawnItemEx("WallDeathDust",random(0,40),0,random(0,48),frandom(0,2),0,frandom(-2,2),random(0,359),1)
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 AAAAA 0 A_SpawnItemEx("ConcreteBreakFX",random(0,48),0,random(0,64),random(-10,10),0,random(2,13),random(0,359))
stop
}
}

actor ConcreteBlockBonked
{
PROJECTILE
+THRUSPECIES
species "ConcretemanType"
damagetype "GutsMan"
Obituary "$OB_CONCRETESLAM"
Damage (36)
Speed 50
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,18,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
}
}
