actor ClownMan : SemiWeakArmorClass
{
Player.ScoreIcon "CLOWMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Clownman"
player.soundclass "Clownmanc"
player.startitem "ThunderClawBoss"
player.startitem "UltimateAttackItem2MM8"
player.startitem "UltSoundWatcherSpawn2"
player.startitem "Base28Ammo", 28
player.startitem "BaseAltfireAmmo", 112
player.startitem "ClownItemsPickUp"
player.startitem "IsFromMM8"
player.startitem "NoHealthBar"
player.viewheight 51
player.forwardmove 0.85,0.85
player.sidemove 0.83,0.83
player.jumpz 14
States
{
Animation0:
Spawn:
CLWN B 0
CLWN B 1 A_JumpIf(z-floorz>0, "Jumping")
Spawn.Idle:
CLWN AAAAAASSSSSSTTTTTTUUUUUU 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn.Idle

See:
CLWN BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1

Jumping:
CLWN J 1 A_JumpIf(z-floorz<=0,"Land")
wait

Land:
CLWN IIIII 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn.Idle

Animation1:
Missile:
CLWN F 0 A_JumpIfInventory("Once",1,"ArmGrab.Hold")
CLWN FFF 1 A_JumpIf(z-floorz>0,"JumpingMissile")
Missile2:
CLWN GG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
CLWN G 1 A_JumpIfInventory("VCOnce",1,"Missile2")
Goto Spawn.Idle
JumpingMissile:
CLWN KKK 1 A_JumpIf(z-floorz<=0,"Missile")
JumpingMissile2:
CLWN LL 1 A_JumpIf(z-floorz<=0,"Missile2")
CLWN L 1 A_JumpIfInventory("VCOnce",1,"JumpingMissile2")
Goto Jumping

Animation2:
ArmGrab:
CLWN FFF 1
ArmGrab.Hold:
CLWN MM 1
CLWN M 1 A_JumpIfInventory("Once",1,"ArmGrab.Hold")
Goto Spawn.Idle

Animation3:
ThunderCarnival:
CLWN N 6
ThunderCarnival.Hold:
CLWN OPQR 2
CLWN O 1 A_JumpIfInventory("CutterFlag",1,"ThunderCarnival.Hold")
CLWN N 6
Goto Spawn.Idle

ClassPain:
CLWN H 2 A_SpawnItem("PainFX",0,3)
CLWN H 0 A_JumpIfInventory("VCOnce",1,"Missile2")
CLWN H 0 A_JumpIfInventory("Once",1,"ArmGrab.Hold")
CLWN HHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1

Death.TornadoHold:
Death.TornadoHoldGear:
Death.TenguManHold:
Death.TrioTornadoHold:
TNT1 A 0 A_SpawnItemEx("DeadUpliftedClownMan",0,0,0,0,0,0,0,1)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
		
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadClownMan",0,0,0,0,0,0,0,1)
TNT1 A 20 ACS_ExecuteAlways(999,0,0)
TNT1 A 0 A_StopSoundEx("Weapon")
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CLWN H 0 A_JumpIfInTargetInventory("ThunderClawWepM",1,2)
CLWN H 0 A_GiveToTarget("WeaponGetter")
CLWN H 0 A_GiveToTarget("ThunderClawWepM")
goto ClassDeath
}
}

actor DeadUpliftedClownMan
{
PROJECTILE
+MISSILE
species "DeadBody"
-NOINTERACTION
+THRUSPECIES
+THRUACTORS
-NOGRAVITY
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+NOEXPLODEFLOOR
+DONTBLAST
Gravity 0.5
scale 2.5
reactiontime 3
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapons/mm8/tornadoholdblow","Auto")
C2WN A 2 A_ChangeVelocity(0,0,15,CVF_RELATIVE|CVF_REPLACE)
Spawn2:
C2WN BBCCBBAA 1 A_JumpIf(momz<=0,"DropDown")
loop

DropDown:
TNT1 A 0 A_SetGravity(1.0)
C2WN D 1 A_CheckFloor("Land")
wait

Land:
C2WN D 2 A_ChangeVelocity(0,0,12,CVF_RELATIVE|CVF_REPLACE)
C2WN D 1 A_CheckFloor("Land2")
wait

Land2:
TNT1 A 0 A_changeFlag("NOGRAVITY",True)
TNT1 A 0 A_changeFlag("NOINTERACTION",True)
C2WN FFFFGGGGFFFFDDDDEEEDDDHHHIIIEEEDDDD 1 A_Stop
C2WN FFFFGGGGFFFFDDDDEEEDDDHHHIIIEEEDDDD 1 A_Stop
Goto Death

Death:
TNT1 A 0 A_PlaySoundEx("clownman/dead","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 2 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
stop
}
}


actor DeadClownMan : DeadTenguMan
{
meleerange 8863
States
{
Spawn:
CLWN H 0
"####" "#" 0
goto loopit

Death:
TNT1 A 0 A_PlaySoundEx("clownman/dead","Auto")
TNT1 A 0 A_PlaySoundEx("mm8/dead","Auto")
TNT1 A 2 A_SpawnItemEx("FakeDeathFXMM8",0,0,32)
stop
}
}

actor ClownItemsPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("ClownManBodyElectricity")
stop
}
}

actor ClownManBodyElectricity : BasicShieldWarper
{
Translation "192:192=228:228", "198:198=61:61"
Damagetype "ClownMan"
Obituary "$OB_CLOWNMAN2"
const int DMG = 2;
const int RNG = 80;
const int OFS = 48;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 AAA 1
Goto SpawnLoop

SpawnLoop:
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start")
loop

ThunderBody.Start:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 A_TakeFromTarget("ThunderClawSwingWait",99)
TNT1 A 0 A_PlaySoundEx("weapon/ClownManSwing","SoundSlot5")
ThunderBody.Hold:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManSwingShock","SoundSlot6")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-48,48),Random(-48,48),0,0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 0 A_PlaySoundEx("weapon/ClownManShock","SoundSlot6")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-48,48),Random(-48,48),0,0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"ThunderBody.Start") TNT1 A 0 A_Explode(2,80,0,0,80)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",7,"ThunderBody.End")
loop

ThunderBody.End:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
Goto SpawnLoop

Death:
TNT1 A 0
TNT1 A 1 A_StopSoundEx("SoundSlot6")
stop
}
}

Actor ThunderClawBoss : VCBaseWeapon
{
weapon.ammotype "Base28Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_CLOWNMAN1"
States
{
Ready:
CLWH A 1 A_GiveInventory("ClownReadyPickUp",1) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CLWH A 1 A_GiveInventory("ClownReadyPickUp",1) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base28Ammo",1)
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
loop

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
CLWH A 1 A_Lower
loop

Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,8863)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
CLWH A 1 A_Raise
loop

Fire:
CLWH BCD 1
TNT1 A 0 A_GiveInventory("ClownMainfireStartPickUp")
Goto Fire.Hold

Fire.Hold:
CLWH E 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",175,"Fire.End")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Fire.Hold")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Fire.Hold")
Goto Fire.End

Fire.End:
TNT1 A 0 A_GiveInventory("ClownMainfireEndPickUp",1)
CLWH DCBAA 2
Goto Ready

Altfire:
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_CheckFloor("Altfire.Ground")
TNT1 A 0 A_JumpIf(callACS("core_CheckFooting")== 1 || (abs(z-floorz) < 30 && momz <= 0),"Altfire.Ground")

CLWH A 1 A_Jump(256,"Altfire.Air")
wait

Altfire.Ground:
TNT1 A 0 A_GiveInventory("ClownAltfireGroundStartPickUp",1)
CLWH A 1 Offset(0,47)
CLWH A 1 Offset(0,62)
CLWH A 1 Offset(0,77)
TNT1 A 0 A_GiveInventory("Once")
CLWH A 1 Offset(0,92)
CLWH A 1 Offset(0,107)
CLWH A 1 Offset(0,122)
TNT1 A 0 A_FireCustomMissile("ThunderClawArmsSpawner",0,0,0,12)
TNT1 AAA 0 A_SpawnItemEx("ClownArmDebris",0,0,16,Random(3,9),0,Random(3,9),Random(0,359))
Goto Altfire.Ground.Hold

Altfire.Ground.Hold:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
Goto Altfire.Ground.End
TNT1 A 1
TNT1 A 0 A_Refire("Altfire.Ground.Hold")
TNT1 A 1 A_Jump(256,"Altfire.Ground.End")
wait

Altfire.Ground.End:
TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
TNT1 A 1 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",25,"Altfire.Ground.Finish")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Altfire.Ground.End")
Goto Altfire.Ground.Finish

Altfire.Ground.Finish:
CLWH A 1 Offset(0,122)
CLWH A 1 Offset(0,107)
CLWH A 1 Offset(0,92)
TNT1 A 0 A_TakeInventory("Once")
CLWH A 1 Offset(0,77)
CLWH A 1 Offset(0,62)
CLWH A 1 Offset(0,47)
TNT1 A 0 A_GiveInventory("ClownAltfireGroundEndPickUp",1)
Goto Ready

Altfire.Air:
TNT1 A 0 A_GunFlash("Flash.Carnival")
TNT1 A 0 A_GiveInventory("ClownAltfireAirStartPickUp",1)
CLWH EFG 2
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalWarper")
Goto Altfire.Air.Hold

Altfire.Air.Hold:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
Goto Altfire.Air.End
TNT1 AA 1 A_GiveInventory("ClownAltfireAirAttackPickUp",1)
TNT1 A 0 A_JumpIf(z-floorz<=0,"Altfire.Air.Land")
loop

Altfire.Air.Land:
TNT1 A 0 ThrustThingZ(0,100,0,1)
TNT1 A 0 A_PlaySoundEx("misc/quake","weapon")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalDamager2",0,0,32)
Goto Altfire.Air.Hold

Altfire.Air.End:
TNT1 A 0 A_GunFlash("NoFlash")
TNT1 A 0 A_GiveInventory("ClownAltfireAirEndPickUp",1)
CLWH KJIAA 2
Goto Ready

UltimateAttack:
CLWH AA 1
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,70)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
CLWH I 2
CLWH L 0 A_GiveInventory("SisiRollPickUp",1)
CLWH L 1 A_WeaponReady(WRF_NOFIRE)
TNT1 A 6
CLWH A 1 Offset(0,122)
CLWH A 1 Offset(0,107)
CLWH A 1 Offset(0,92)
CLWH A 1 Offset(0,77)
CLWH A 1 Offset(0,62)
CLWH A 1 Offset(0,47)
Goto Ready

Flash.Carnival:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManShock","SoundSlot7")
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalElectricity",Random(-48,48),Random(-48,48),Random(0,48),0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-48,48),Random(-48,48),Random(0,48),0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalElectricity",Random(-48,48),Random(-48,48),Random(0,48),0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_ChangeVelocity(22,0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-48,48),Random(-48,48),Random(0,48),0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalElectricity",Random(-48,48),Random(-48,48),Random(0,48),0,0,0,0,SXF_TRANSFERTRANSLATION)
loop
}
}

actor ClownReadyPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(z-floorz>8,"Pickup2")
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28))
stop

Pickup2:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,112))
stop
}
}

actor CarnivalRegenPrevent : PowerUp
{
Powerup.Duration 2
}

actor ClownMainfireStartPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("VCOnce")
TNT1 A 0 A_TakeInventory("Base28Ammo",4)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1")
TNT1 A 0 A_GiveInventory("BaseCustomFlag2")
TNT1 A 0 A_FireCustomMissile("ThunderClawRMR",0,0, 24)
TNT1 A 0 A_FireCustomMissile("ThunderClawRML",0,0,-24)
TNT1 A 0 A_PlaySoundEx("weapon/ClownManClaw","Weapon")
stop
}
}

actor ClownMainfireEndPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("VCOnce")
TNT1 A 0 A_TakeInventory("CutterFlag",999)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
stop
}
}

Actor ThunderClawRMBase : BasicProjectile
{
Translation "192:192=41:41", "198:198=60:60"
+HITTRACER
+DONTBLAST
+SKYEXPLODE
+DONTSPLASH
+DONTREFLECT
+EXPLODEONWATER
+FORCEXYBILLBOARD
Damagetype "ClownMan2"
Obituary "$OB_CLOWNMAN1"
Damage (16)
Speed 60
Height 16
Radius 16
ReactionTime 70
}

Actor ThunderClawRML : ThunderClawRMBase
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1 ACS_NamedExecuteAlways("core_drawhookshot", 0, ACS_NamedExecuteWithResult("core_gettarget"), 32)
TCLB TTTTTTTT 1 A_SpawnItemEx("ThunderClawRMBit",0,0,0,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("ThunderClawStunnerHitBox",0,0,0,momx,momy,momz)
TNT1 A 0 A_FaceTarget
TNT1 A 1 A_Stop
TNT1 A 0 A_SpawnItemEx("ThunderClawRMLReturn",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 5 A_PlaySound("weapon/ClownBall",2,0.7)
TNT1 A 0 A_StopSound(2)
stop

XDeath:
TNT1 A 0 A_JumpIfInventory("CanBeGrabBustered",1,"Continue",AAPTR_TRACER)
Goto Death

Continue:
TNT1 A 0 A_GiveInventory("ThunderClawRMProtect", 1, AAPTR_TRACER)
Goto Death

Death:
TNT1 A 0 A_FaceTarget
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("ThunderClawRMLReturn",0,0,0,0,0,0,0,1)
stop
}
}

actor ThunderClawRMLReturn : ThunderClawRMBase
{
+NOINTERACTION
damagetype "ClownMan"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 1
Goto SpawnLoop

SpawnLoop:
TCLB U 1 A_JumpIfCloser(80,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_CountDown
loop

Death:
TNT1 A 0 A_TakeFromTarget("BaseCustomFlag1",1)
stop
}
}

Actor ThunderClawRMR : ThunderClawRML
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1 ACS_NamedExecuteAlways("core_drawhookshot", 0, ACS_NamedExecuteWithResult("core_gettarget"), 32)
TCLB VVVVVVVV 1 A_SpawnItemEx("ThunderClawRMBit",0,0,0,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("ThunderClawStunnerHitBox",0,0,0,momx,momy,momz)
TNT1 A 0 A_FaceTarget
TNT1 A 1 A_Stop
TNT1 A 0 A_SpawnItemEx("ThunderClawRMRReturn",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 A 5 A_PlaySound("weapon/ClownBall",2,0.7)
TNT1 A 0 A_StopSound(2)
stop

XDeath:
TNT1 A 0 A_JumpIfInventory("CanBeGrabBustered",1,"Continue",AAPTR_TRACER)
Goto Death

Continue:
TNT1 A 0 A_GiveInventory("ThunderClawRMProtect", 1, AAPTR_TRACER)
Goto Death

Death:
TNT1 A 0 A_FaceTarget
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("ThunderClawRMRReturn",0,0,0,0,0,0,0,1)
stop
}
}

actor ThunderClawRMRReturn : ThunderClawRMLReturn
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_RearrangePointers(0,0,2)
Goto SpawnLoop

SpawnLoop:
TCLB W 1 A_JumpIfCloser(80,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_CountDown
loop

Death:
TNT1 A 0 A_TakeFromTarget("BaseCustomFlag2",1)
stop
}
}

actor ThunderClawRMBit : ThunderClawRMBase
{
mass 80
+THRUACTORS
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 1
Goto SpawnLoop

SpawnLoop:
TCLB AA 1 A_JumpIfCloser(mass,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2) TNT1 A 0 A_SpawnItemEx("ThunderClawRMDamager")
TCLB BB 1 A_JumpIfCloser(mass,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2) TNT1 A 0 A_SpawnItemEx("ThunderClawRMDamager")
TCLB CC 1 A_JumpIfCloser(mass,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2) TNT1 A 0 A_SpawnItemEx("ThunderClawRMDamager")
TCLB DD 1 A_JumpIfCloser(mass,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2) TNT1 A 0 A_SpawnItemEx("ThunderClawRMDamager")
TCLB EE 1 A_JumpIfCloser(mass,"Death")
TNT1 A 0 A_SeekerMissile(90,90,2) TNT1 A 0 A_SpawnItemEx("ThunderClawRMDamager")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop

Death:
TNT1 A 0
stop
}
}

actor ThunderClawStunnerHitBox : ThunderClawRMBase
{
-NOBLOCKMAP
Damagetype "ClownMan"
damage (32)
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_ScaleVelocity(0.33)
TNT1 A 1
stop
}
}

actor ThunderClawRMDamager : BasicExplosion
{
Damagetype "ClownManAlt2"
Obituary "$OB_CLOWNMAN1"
States
{
Spawn:
TNT1 AA 0
TNT1 A 1 A_Explode(6,16,0,0,16)
stop
}
}

actor ThunderClawRMProtect : PowerProtection
{
powerup.duration 12
damagefactor "ClownMan", 0.0
damagefactor "ClownMan2", 0.0
damagefactor "ThunderClaw", 0.0
}

actor ClownAltfireAirStartPickUp : CustomInventory
{
States
{
Pickup:
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("CutterFlag",1)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
stop
}
}

actor ClownAltfireAirAttackPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThingZ(0,-5,0,1)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalDamager")
stop
}
}

actor ClownAltfireAirEndPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_ChangeFlag("PICKUP",True)
TNT1 A 0 A_SpawnItemEx("ReSolidifier")
TNT1 A 0 A_TakeInventory("CutterFlag",1)
TNT1 A 0 A_ChangeFlag("THRUACTORS",False)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 A_TakeInventory("InvProtection",1)
TNT1 A 0 A_GiveInventory("ThunderCarnivalTake",1)
stop
}
}

actor ThunderCarnivalDamager : BasicExplosion
{
Damagetype "ClownManAlt2"
Obituary "$OB_CLOWNMAN4"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(3,40,0,0,40)
stop
}
}

actor ThunderCarnivalDamager2 : ThunderCarnivalDamager
{
Damagetype "ClownManAlt2B"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(20,96,0,0,96)
TNT1 A 20 A_Quake(2,20,0,200)
stop
}
}

actor ThunderCarnivalProtect : PowerProtection
{
powerup.duration 2
damagefactor "ClownManAlt2", 0.0
}

actor ThunderCarnivalSpark : BasicGraphicEffect
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1 A_Jump(256,"A","B","C","D")
wait
A:
CAUC ABCDE 2
stop
B:
CAUW ABCDE 2
stop
C:
CAUY ABCDE 2
stop
D:
CAUB ABCDE 2
stop
}
}

actor ThunderCarnivalElectricity : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1 A_Jump(256,"A","B","C","D","E","F")
wait
A:
CAUD ABC 2
stop
B:
CAUE ABC 2
stop
C:
CAUF ABC 2
stop
D:
CAUH ABC 2
stop
E:
CAUI ABC 2
stop
F:
CAUJ ABC 2
stop
}
}

actor ThunderCarnivalWarper : BasicShieldWarper
{
Translation "192:192=61:61", "198:198=228:228"
States
{
Spawn:
CAUK AA 1 A_Warp(AAPTR_TARGET,0,0,40,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfIntargetInventory("ThunderCarnivalTake",1,"Death")
CAUK BB 1 A_Warp(AAPTR_TARGET,0,0,40,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfIntargetInventory("ThunderCarnivalTake",1,"Death")
CAUK CC 1 A_Warp(AAPTR_TARGET,0,0,40,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfIntargetInventory("ThunderCarnivalTake",1,"Death")
CAUK DD 1 A_Warp(AAPTR_TARGET,0,0,40,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfIntargetInventory("ThunderCarnivalTake",1,"Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop

Death:
TNT1 A 0
stop
}
}

Actor ThunderCarnivalTake : PowerUp
{
Powerup.Duration 5
}

actor ClownAltfireGroundStartPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 A_GiveInventory("NoPushFlag",1)
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag2",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
stop
}
}

actor ClownAltfireGroundAttack1PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
TNT1 A 0 A_GiveInventory("ClownManShockPower",2) 
stop
}
}

actor ClownAltfireGroundAttack2PickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
TNT1 A 0 A_GiveInventory("ClownManShockPower",2) 
stop
}
}

actor ClownAltfireGroundEndPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,0)
TNT1 A 0 A_TakeInventory("NoPushFlag",1)
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,14,1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag2",1)
stop
}
}
actor ThunderClawArmsSpawner : BasicFastProjectile
{
+GHOST
+DONTBLAST
+THRUACTORS
+SKYEXPLODE
+DONTREFLECT
Damage (0)
Speed 600
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
Goto Death

Death:
TNT1 A 0 A_CheckFloor("Continue")
TNT1 A 0 A_CheckCeiling("Ceiling")
Goto Wall

Ceiling:
TNT1 A 0 A_SpawnItemEx("ThunderClawArmsRepositioner",0,0,-32,0,0,-600)
Goto Continue.Hold

Wall:
TNT1 A 0 A_SpawnItemEx("ThunderClawArmsRepositioner",-32,0,0,0,0,-600)
Goto Continue.Hold

Continue:
TNT1 A 0 A_SpawnItemEx("ThunderClawArms",0,0,0,0)
TNT1 AAA 0 A_SpawnItemEx("ClownArmDebris",0,0,16,Random(4,12),0,Random(4,12),Random(0,359))
Goto Continue.Hold

Continue.Hold:
TNT1 A 1 A_SpawnItemEx("ThunderClawArmsHitBox",0,0,0,0)
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Continue.Hold")
Goto Death2

Death2:
TNT1 A 0
stop
}
}

actor ThunderClawArmsRepositioner : ThunderClawArmsSpawner
{
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAA 1
Goto Death

Death:
TNT1 A 0 A_SpawnItemEx("ThunderClawArms",0,0,0,0)
TNT1 AAA 0 A_SpawnItemEx("ClownArmDebris",0,0,16,Random(0,5),0,Random(4,8),Random(0,359))
Goto Death.Hold

Death.Hold:
TNT1 A 1 A_SpawnItemEx("ThunderClawArmsHitBox",0,0,0,0)
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Death.Hold")
Goto Death2

Death2:
TNT1 A 0
stop
}
}

actor ClownArmDebris : BasicProjectile
{
-NOGRAVITY
+FLOORCLIP
+THRUACTORS
+BOUNCEONWALLS
+CLIENTSIDEONLY
+BOUNCEONCEILINGS
Gravity 1.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"A","B")
Goto A

A:
CLRM AZ 1
loop
B:
CLRM BZ 1
loop
}
}

actor ThunderClawArmsHitBox : BasicProjectile
{
-NOBLOCKMAP
damage (0)
Radius 24
Height 32
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop

XDeath:
TNT1 A 1 A_GiveToTarget("IAmClownGrabbed",1)
stop

Death:
TNT1 A 1
stop
}
}

Actor IAmClownGrabbed : PowerUp
{
Powerup.Duration 5
}

actor ThunderClawArms : BasicProjectile
{
Translation "198:198=61:61"
-NOGRAVITY
-NOBLOCKMAP
+NOCLIP
+THRUGHOST
+DONTBLAST
+FLOORHUGGER
+DONTREFLECT
+NOINTERACTION
Obituary "$OB_CLOWNMAN3"
DamageType "ClownManAlt"
Height 1
Radius 1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/ClownManGrab","Weapon")
CLOG FFFF 1 A_JumpIfInTargetInventory("IAmClownGrabbed",1,"Shock")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Spawn2")
Goto End

Spawn2:
CLOG GGGG 1 A_JumpIfInTargetInventory("IAmClownGrabbed",1,"Shock")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End
CLOG KKKK 1 A_JumpIfInTargetInventory("IAmClownGrabbed",1,"Shock")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End2
Spawn3:
CLOG LLLL 1 A_JumpIfInTargetInventory("IAmClownGrabbed",1,"Shock")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End3
CLOG KKKK 1 A_JumpIfInTargetInventory("IAmClownGrabbed",1,"Shock")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Spawn2")
Goto End2

Shock:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManArmShock","Body")
TNT1 A 0 A_GiveToTarget("HalfHalfDamageProtection")
CLOG M 1 A_GiveToTarget("ClownAltfireGroundAttack1PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager",0,0,32)
CLOG M 1 A_GiveToTarget("ClownAltfireGroundAttack1PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager",0,0,32)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("IAmClownGrabbed",1,1)
Goto Spawn3
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,2)
TNT1 A 0 A_SpawnItemEx("ClownArmsDamager3",0,0,32)
Goto End4
CLOG N 1 A_GiveToTarget("ClownAltfireGroundAttack2PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager2",0,0,32)
CLOG N 1 A_GiveToTarget("ClownAltfireGroundAttack2PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager2",0,0,32)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("IAmClownGrabbed",1,1)
Goto Spawn3
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,2)
TNT1 A 0 A_SpawnItemEx("ClownArmsDamager3",0,0,32)
Goto End4
CLOG O 1 A_GiveToTarget("ClownAltfireGroundAttack1PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager",0,0,32)
CLOG O 1 A_GiveToTarget("ClownAltfireGroundAttack1PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager",0,0,32)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("IAmClownGrabbed",1,1)
Goto Spawn3
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,2)
TNT1 A 0 A_SpawnItemEx("ClownArmsDamager3",0,0,32)
Goto End4
TNT1 A 0 A_PlaySoundEx("weapon/ClownManArmShock","Body")
TNT1 A 0 A_GiveToTarget("HalfHalfDamageProtection")
CLOG M 1 A_GiveToTarget("ClownAltfireGroundAttack2PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager2",0,0,32)
CLOG M 1 A_GiveToTarget("ClownAltfireGroundAttack2PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager2",0,0,32)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("IAmClownGrabbed",1,1)
Goto Spawn3
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,2)
TNT1 A 0 A_SpawnItemEx("ClownArmsDamager3",0,0,32)
Goto End4
CLOG N 1 A_GiveToTarget("ClownAltfireGroundAttack1PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager",0,0,32)
CLOG N 1 A_GiveToTarget("ClownAltfireGroundAttack1PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager",0,0,32)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("IAmClownGrabbed",1,1)
Goto Spawn3
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,2)
TNT1 A 0 A_SpawnItemEx("ClownArmsDamager3",0,0,32)
Goto End4
CLOG O 1 A_GiveToTarget("ClownAltfireGroundAttack2PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager2",0,0,32)
CLOG O 1 A_GiveToTarget("ClownAltfireGroundAttack2PickUp",1) TNT1 A 0 A_SpawnItemEx("ClownArmsDamager2",0,0,32)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("IAmClownGrabbed",1,1)
Goto Spawn3
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Shock")
TNT1 A 0 A_SpawnItemEx("ClownArmsDamager3",0,0,32)
Goto End4

End4:
CLOG LLL 1 A_TakeFromTarget("HalfHalfDamageProtection")
End3:
CLOG KKK 1 A_TakeFromTarget("HalfHalfDamageProtection")
End2:
CLOG GGG 1 A_TakeFromTarget("HalfHalfDamageProtection")
End:
CLOG FFF 1 A_TakeFromTarget("HalfHalfDamageProtection")
TNT1 A 0 A_TakeFromTarget("BaseCustomFlag2",1)
stop

Death:
8XPL ABCDE 2 A_TakeFromTarget("BaseCustomFlag2",1)
stop
}
}

actor ClownArmsDamager : BasicExplosion
{
Obituary "$OB_CLOWNMAN3"
DamageType "ClownManAlt"
RenderStyle Translucent
Alpha 0.8
States
{
Spawn:
TNT1 A 0
CAUG A 1 A_Explode(3,64,0)
stop
}
}

actor ClownArmsDamager2 : ClownArmsDamager
{
States
{
Spawn:
TNT1 A 0
CAUG B 1 A_Explode(3,64,0)
stop
}
}

actor ClownArmsDamager3 : ClownArmsDamager
{
damagetype "ClownManAltB"
States
{
Spawn:
TNT1 A 0
CAUG AB 1 A_Explode(3,64,0)
stop
}
}

actor ThunderClawArmsProtect : PowerProtection
{
    powerup.duration 4
    damagefactor "ClownManAlt", 0.0
}

actor SisiRollPickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("DrillFlag",60)
TNT1 A 0 A_spawnItemEx("ClownUltWatcher")
TNT1 A 0 A_spawnItemEx("ClownUltWatcher2")
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_SpawnItemEx("ClownManSisiRoll",32,0,20,20,0,12)
stop
}
}

Actor ClownUltWatcher : BasicWatcher
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
Goto Drain

Drain:
TNT1 A 3 A_TakeFromTarget("MediumShortUltimateAmmo",2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("MediumShortUltimateAmmo",1,"Drain")
Goto Death

Death:
TNT1 A 1 A_TakeFromTarget("PowerUltBuildCooldown",1)
TNT1 A 0 A_GiveToTarget("SisiRollVanish",35)
stop
}
}

Actor ClownUltWatcher2 : BasicWatcher
{
//DrillFlag = the timer that gives him the signal to shoot
//VC_Timer = which one to shoot, Rompers or mini Sisi Rolls
//SisiMiscActivate = the signal to shoot
States
{
Spawn:
TNT1 A 0
TNT1 A 1
Goto Drain

Drain:
TNT1 A 2 A_TakeFromTarget("DrillFlag",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("DrillFlag",1,"Drain")
TNT1 A 0 A_GiveToTarget("VC_Timer",1)
TNT1 A 0 A_GiveToTarget("DrillFlag",35)
TNT1 A 0 A_GiveToTarget("SisiMiscActivate",1)
TNT1 A 0 A_JumpIfInTargetInventory("PowerUltBuildCooldown",1,"Drain")
Goto Death

Death:
TNT1 A 1 A_TakeFromTarget("VC_Timer",9)
TNT1 A 0 A_TakeFromTarget("DrillFlag",35)
TNT1 A 0 A_TakeFromTarget("SisiMiscActivate",1)
stop
}
}

actor ClownManSisiRoll : BasicProjectile
{
-NOGRAVITY
+DONTBLAST
+THRUACTORS
+DONTREFLECT
+BOUNCEONWALLS
bouncecount 99999
Gravity 1.4
+BOUNCEONCEILINGS
+SKYEXPLODE
radius 24
height 56
const int HGT = 128;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_Jump(256,"Spawn2A","Spawn2B","Spawn2C","Spawn2D")
Spawn2A:
SISI A 0 A_JumpIfInTargetInventory("SisiRollVanish",1,"TeleportOut")
SISI A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Defeat")
SISI A 0 A_JumpIfInTargetInventory("SisiMiscActivate",1,"Shoot")
SISI AAAA 1 A_SpawnItemEx("SisiRollDamager",0,0,HGT)
Spawn2B:
SISI B 0 A_JumpIfInTargetInventory("SisiRollVanish",1,"TeleportOut")
SISI B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Defeat")
SISI A 0 A_JumpIfInTargetInventory("SisiMiscActivate",1,"Shoot")
SISI BBBB 1 A_SpawnItemEx("SisiRollDamager",0,0,HGT)
Spawn2C:
SISI C 0 A_JumpIfInTargetInventory("SisiRollVanish",1,"TeleportOut")
SISI C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Defeat")
SISI A 0 A_JumpIfInTargetInventory("SisiMiscActivate",1,"Shoot")
SISI CCCC 1 A_SpawnItemEx("SisiRollDamager",0,0,HGT)
Spawn2D:
SISI D 0 A_JumpIfInTargetInventory("SisiRollVanish",1,"TeleportOut")
SISI D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Defeat")
SISI A 0 A_JumpIfInTargetInventory("SisiMiscActivate",1,"Shoot")
SISI DDDD 1 A_SpawnItemEx("SisiRollDamager",0,0,HGT)
Goto Spawn2A

Shoot:
SISI A 0 A_SetGravity(0.0)
SISI AEF 5 A_Stop
SISI E 5 A_GiveInventory("SisiRollFodderSpawn_CI")
SISI A 5
SISI A 0 A_SetGravity(1.4)
SISI A 0 A_ChangeVelocity(20,0,0,CVF_RELATIVE|CVF_REPLACE)
Goto Spawn2A

Death:
TNT1 A 0 A_CheckFloor("FloorDeath")
TNT1 A 0 A_CheckCeiling("CeilingDeath")
TNT1 A 0 A_SpawnItemEx("ClownManSisiRoll",32,0,0,20,0,momz,180,SXF_TRANSFERPOINTERS)
Goto Quake
FloorDeath:
TNT1 A 0 A_SpawnItemEx("ClownManSisiRoll",0,0,24,20,0,12,0,SXF_TRANSFERPOINTERS)
Goto Quake
CeilingDeath:
TNT1 A 0 A_SpawnItemEx("ClownManSisiRoll",0,0,-16,20,0,momz,0,SXF_TRANSFERPOINTERS)
Quake:
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 15 A_Quake(2,15,0,350)
stop
TeleportOut:
TNT1 A 0 A_SpawnItemEx("SisiRollTeleport",0,0,80)
stop
Defeat:
TNT1 A 0 A_SpawnItemEx("SisiRollDestruction")
stop
}
}

actor SisiRollFodderSpawn_CI : CustomInventory//I don't have the sprites for the mini sisis, sad
{
States
{
Pickup:
TNT1 A 0 A_TakeFromTarget("SisiMiscActivate",1)
TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", 8, 0, 40, 10, 6, 2, 10)

TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", 8, 0, 40, 10, -6, 2, -10)

TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", -8, 0, 40, -10, 6, 2, 10)

TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", -8, 0, 40, -10, -6, 2, -10)
stop
}
}

actor SisiRollVanish : Powerup
{
Powerup.Duration 35
}

actor SisiRollTeleport : BasicClientSide
{
Translation "192:192=216:216", "198:198=47:47"
-NOCLIP
-NOGRAVITY
-NOEXPLODEFLOOR
+DOOMBOUNCE
-BOUNCEONFLOORS
radius 8
height 8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_PlaySoundEx("misc/teleport2","Body")
TFOG FFEE 1 A_Stop
TFOG DDDDDDDDDD 1 ThrustThingZ(0,9,0,1)
TFOG D 70
stop
}
}

actor SisiRollDestruction
{
+SOLID
+DONTSPLASH
+NOINTERACTION
Damage (0)
height 0
radius 0
scale 2.5
const int RNG = 160;
ReactionTime 7
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn2:
TNT1 A 0 A_PlaySoundEx("mm8/deathfx","Body")
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",Random(0,RNG),Random(0,RNG),Random(0,RNG))
SISI A 1
TNT1 A 1
SISI A 1
TNT1 A 1
TNT1 A 0 A_PlaySoundEx("mm8/deathfx","Body")
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",Random(0,RNG),Random(0,RNG),Random(0,RNG))
TNT1 B 1
SISI B 1
TNT1 B 1
SISI B 1
TNT1 A 0 A_PlaySoundEx("mm8/deathfx","Body")
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",Random(0,RNG),Random(0,RNG),Random(0,RNG))
SISI C 1
TNT1 C 1
SISI C 1
TNT1 C 1
TNT1 A 0 A_PlaySoundEx("mm8/deathfx","Body")
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",Random(0,RNG),Random(0,RNG),Random(0,RNG))
TNT1 D 1
SISI D 1
TNT1 D 1
SISI D 1
TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0
Stop
}
}

actor SisiRollDamager : BasicExplosion
{
Damagetype "ClownManUlt"
Obituary "$OB_CLOWNMAN5"
States
{
Spawn:
TNT1 AA 0
TNT1 A 1 A_Explode(40,128,0,0,128)
stop
}
}

actor SisiRollProtect : PowerProtection
{
powerup.duration 25
damagefactor "ClownManUlt", 0.0
}

actor ClownManShockPower : Inventory
{
inventory.amount 1
inventory.maxamount 112
}

actor SisiMiscActivate : Inventory
{
inventory.amount 1
inventory.maxamount 1
}