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 "IsFromMM8"
player.startitem "NoHealthBar"
player.viewheight 51
player.forwardmove 0.85,0.85
player.sidemove 0.83,0.83
player.jumpz 14
States
{
Spawn:
CLWN B 0
CLWN B 1 A_JumpIf(z-floorz>0, "Jumping")
Animation0:
SpawnIdle:
CLWN AAAAAASSSSSSTTTTTTUUUUUU 1 A_JumpIf(z-floorz>0, "Jumping")
Goto SpawnIdle
See:
CLWN BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1
Jumping:
CLWN J 1 A_JumpIf(z-floorz<=0,"Landed")
wait
Landed:
CLWN IIIII 1 A_JumpIf(z-floorz>0,"Jumping")
Goto SpawnIdle
Animation1:
Missile:
CLWN FFFFF 1 A_JumpIf(z-floorz>0,"JumpingMissile")
Animation2:
Missile2:
CLWN GGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
CLWN G 1 A_JumpIfInventory("IsUsingClownArms",1,"Missile2")
Goto SpawnIdle
JumpingMissile:
CLWN KKKKK 1 A_JumpIf(z-floorz<=0,"Missile")
JumpingMissile2:
CLWN LLLLL 1 A_JumpIf(z-floorz<=0,"Missile2")
Goto Jumping

Animation3:
ThunderArmGrab:
CLWN MMM 1
CLWN M 1 A_JumpIfInventory("IsUsingArmGrab",1,"ThunderArmGrab")
Goto SpawnIdle

Animation4:
ThunderCarnivalTransition:
CLWN NNN 1
CLWN N 1 A_JumpIfInventory("IsUsingThunderCarnival",1,"ThunderCarnivalTransition")
Goto SpawnIdle
Animation5:
ThunderCarnivalA:
CLWN OOO 1
CLWN O 1 A_JumpIfInventory("IsUsingThunderCarnival",1,"ThunderCarnivalA")
Goto SpawnIdle
Animation6:
ThunderCarnivalB:
CLWN PPP 1
CLWN P 1 A_JumpIfInventory("IsUsingThunderCarnival",1,"ThunderCarnivalB")
Goto SpawnIdle
Animation7:
ThunderCarnivalC:
CLWN QQQ 1
CLWN Q 1 A_JumpIfInventory("IsUsingThunderCarnival",1,"ThunderCarnivalC")
Goto SpawnIdle
Animation8:
ThunderCarnivalD:
CLWN RRR 1
CLWN R 1 A_JumpIfInventory("IsUsingThunderCarnival",1,"ThunderCarnivalD")
Goto SpawnIdle

ClassPain:
CLWN HHHHHHHHHH 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 0 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 IsUsingClownArms : VCOnce {}
actor IsUsingArmGrab : VCOnce {}
actor IsUsingThunderCarnival : VCOnce {}


Actor ThunderClawBoss : VCBaseWeapon
{
weapon.ammotype "Base28Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_CLOWNMAN1"
States
{
Ready:
CLWH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
CLWH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,4)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base28Ammo",1) TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
CLWH A 0 A_GiveInventory("CarnivalRegenPrevent")
loop
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
CLWH A 1 A_Lower
Loop
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,8863)
TNT1 A 0 A_SpawnItemEx("ClownManThunderAura")
Select2:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
CLWH A 1 A_Raise
Loop

Fire:
CLWH BCD 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 A_GiveInventory("IsUsingClownArms",1)
TNT1 A 0 A_GiveInventory("ThunderClawRMPickUp")
FireHold:
TNT1 A 0 A_JumpIfInventory("CutterFlag",175,"FireEnd")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
CLWH E 1 ACS_NamedExecute("VC_SetState",0,2)
CLWH E 1 A_JumpIfInventory("BaseCustomFlag1",1,"FireHold")
CLWH E 1 A_JumpIfInventory("BaseCustomFlag2",1,"FireHold")
FireEnd:
CLWH DCB 2 A_TakeInventory("IsUsingClownArms",1)
CLWH AA 2 A_TakeInventory("CutterFlag",99)
Goto Ready

Altfire:
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_JumpIf(z-floorz>8,"ThunderCarnival")
ArmGrab:
//TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_GiveInventory("BaseCustomFlag1",1)
TNT1 A 0 A_GiveInventory("BaseCustomFlag2",1)
CLWH A 1 Offset(0,47)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,1)
CLWH A 1 Offset(0,62)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,1)
CLWH A 1 Offset(0,77)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 A_GiveInventory("IsUsingArmGrab",1)
CLWH A 1 Offset(0,92)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
CLWH A 1 Offset(0,107)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
CLWH A 1 Offset(0,122)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
TNT1 A 0 A_FireCustomMissile("ThunderClawArmsSpawner",0,0,0,12)
TNT1 AAA 0 A_SpawnItemEx("ClownArmDebris",0,0,16,Random(4,12),0,Random(4,12),Random(0,359))
AltfireHold:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
Goto AltfireReturn
TNT1 A 1 A_Stop
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
TNT1 A 0 A_Refire("AltfireHold")
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"AltfireHold")
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"AltfireHold")
TNT1 A 1 A_Jump(256,"AltfireReturn")
wait

AltfireReturn:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
TNT1 A 1 A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
TNT1 A 0 A_JumpIfInventory("CutterFlag",25,"AltfireFinish")
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"AltfireReturn")
AltfireFinish:
CLWH A 1 Offset(0,122)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
CLWH A 1 Offset(0,107)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
CLWH A 1 Offset(0,92)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,3)
TNT1 A 0 A_TakeInventory("IsUsingArmGrab",1)
CLWH A 1 Offset(0,77)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,1)
CLWH A 1 Offset(0,62)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,1)
CLWH A 1 Offset(0,47)A_Stop TNT1 A 0 ACS_NamedExecute("VC_SetState",0,1)
//TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,0)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag2",1)
Goto Ready

ThunderCarnival:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",112,3)
TNT1 A 0 A_JumpIfInventory("CarnivalRegenPrevent",1,"Ready")
TNT1 A 0 A_GiveInventory("CarnivalRegenPrevent")
Goto Ready+4
TNT1 A 0 A_GiveInventory("ThunderCarnivalStartPickUp",1)
TNT1 A 0 A_GunFlash("ThunderCarnivalStart")
CLWH EFG 2
ThunderCarnivalLoop:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
Goto ThunderCarnivalEnd
TNT1 A 0 ThrustThingZ(0,-5,0,1)
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalDamager",0,0,0,momx,momy,momz)
TNT1 A 1 A_TakeInventory("BaseAltfireAmmo",2)
TNT1 A 0 A_JumpIf(z-floorz<=0,"ThunderCarnivalImpact")
loop

ThunderCarnivalImpact:
TNT1 A 0 A_Quake(2,20,0,200)
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 ThunderCarnivalLoop
ThunderCarnivalEnd:
TNT1 A 0 A_GiveInventory("ThunderCarnivalEndPickUp",1)
TNT1 A 0 A_GunFlash("ThunderCarnivalFinish")
CLWH KJIAAAA 2
Goto Ready

UltimateAttack:
CLWH AIJKL 2
TNT1 A 6 Offset(0,137)A_GiveInventory("SisiRollPickUp",1)
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

ThunderCarnivalStart:
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_GiveInventory("IsUsingThunderCarnival",1)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,4) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_GiveInventory("IsUsingThunderCarnival",1)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,4) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
ThunderCarnivalMovement:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManShock","SoundSlot7")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,5) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,5) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
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(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,6) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,6) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
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)
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,7) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,7) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
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(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,8) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 ACS_NamedExecute("VC_SetState",0,8) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
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
ThunderCarnivalFinish:
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_TakeInventory("IsUsingThunderCarnival",1)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,4) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 1 A_ChangeVelocity(CallACS("VC_XYMob", 22),0,momz,CVF_RELATIVE|CVF_REPLACE) TNT1 A 0 A_TakeInventory("IsUsingThunderCarnival",1)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,4) TNT1 A 0 A_JumpIfInventory("IsDead",1,"EndFlash")
EndFlash:
TNT1 A 1
stop
}
}

actor CarnivalRegenPrevent : PowerUp
{
Powerup.Duration 2
}

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

actor ThunderCarnivalStartPickUp : 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_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 A_GiveInventory("InvProtection",1)
TNT1 A 0 A_spawnItemEx("ThunderCarnivalWarper")
stop
}
}

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

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

Actor ThunderClawRML
{
Translation "192:192=41:41", "198:198=60:60"
PROJECTILE
-NOINTERACTION
+HITTRACER
+SKYEXPLODE
+DONTSPLASH
+DONTREFLECT
+EXPLODEONWATER
+FORCEXYBILLBOARD
Damagetype "ThunderClaw"
Obituary "$OB_CLOWNMAN1"
Damage (16)
Speed 60
Height 16
Radius 16
Scale 2.5
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1 ACS_NamedExecuteAlways("core_drawhookshot", 0, ACS_NamedExecuteWithResult("core_gettarget"), 32)
Spawn2:
TCLB T 1
TNT1 A 0 A_SpawnItemEx("ThunderClawRMBit",0,0,0,0,0,0,180,1)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"End")
loop
End:
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_PlaySound("weapon/ClownBall",2,0.7)
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
TNT1 A 0 A_StopSound(2)
stop
XDeath:
TNT1 A 0 A_GiveInventory("ThunderClawRMProtect", 1, AAPTR_TRACER)
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 : ThunderClawRML
{
+NOINTERACTION
+DONTBLAST
damagetype "ClownManChain"
ReactionTime 35
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 1
Spawn2:
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")
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)
Spawn2:
TCLB V 1
TNT1 A 0 A_SpawnItemEx("ThunderClawRMBit",0,0,0,0,0,0,180,1)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"End")
loop
End:
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_PlaySound("weapon/ClownBall",2,0.7)
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
TNT1 A 0 A_StopSound(2)
stop
XDeath:
TNT1 A 0 A_GiveInventory("ThunderClawRMProtect", 1, AAPTR_TRACER)
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)
Spawn2:
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")
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 : ThunderClawRMLReturn
{
+FORCEXYBILLBOARD
+BRIGHT
const int RNG = 80;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 1
Spawn2:
TCLB A 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB A 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB C 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB C 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB D 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB D 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB E 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB E 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB B 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB B 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB C 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB C 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB D 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB D 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
TCLB E 1 A_JumpIfCloser(RNG,"Death") TNT1 A 0 A_SeekerMissile(90,90,2)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TCLB E 1 A_JumpIfCloser(RNG,"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_SpawnItemEx("ThunderClawRMDamager") TNT1 A 0 A_CountDown
loop
Death:
TNT1 A 0
stop
}
}

actor ThunderClawStunnerHitBox : ThunderClawRML
{
Damagetype "ClownMan"
-NOBLOCKMAP
+DONTBLAST
+DONTREFLECT
damage (32)
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_ScaleVelocity(0.33)
TNT1 A 1
stop
Death:
XDeath:
TNT1 A 1
stop
}
}

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

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

actor ClownManThunderAura
{
Translation "192:192=228:228", "198:198=61:61"
PROJECTILE
Damagetype "ClownMan"
Obituary "$OB_CLOWNMAN2"
Height 1
Radius 1
scale 2.5
+THRUACTORS
+NOGRAVITY
+NOINTERACTION
const int DMG = 2;
const int RNG = 80;
const int OFS = 48;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
Spawn2:
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn3")
loop
Spawn3:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManSwing","SoundSlot5")
TNT1 A 0 A_TakeFromTarget("ThunderClawSwingWait",99)
TNT1 A 0 A_TakeInventory("CutterFlag",99)
Spawn3B:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManSwingShock","SoundSlot6")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-OFS,OFS),Random(-OFS,OFS),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_Explode(DMG,RNG,0,0,RNG)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn2") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn2") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn2") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_PlaySoundEx("weapon/ClownManShock","SoundSlot6")
TNT1 A 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-OFS,OFS),Random(-OFS,OFS),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_Explode(DMG,RNG,0,0,RNG)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn2") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn2") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_Explode(DMG,RNG,0,0,RNG)
TNT1 A 0 A_JumpIfInTargetInventory("ThunderClawSwingWait",1,"Spawn2") TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",7,"Spawn4")
loop
Spawn4:
TNT1 A 0 A_TakeInventory("CutterFlag",99)
Goto Spawn
End:
TNT1 A 0
TNT1 A 1 A_StopSoundEx("SoundSlot6")
stop
}
}

actor ThunderClawArmsSpawner : FastProjectile
{
PROJECTILE
+GHOST
+DONTBLAST
+THRUACTORS
+SKYEXPLODE
damage (0)
speed 600
Radius 4//8
Height 4//8
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAA 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
Death:
TNT1 A 0 A_CheckFloor("Death2")
TNT1 A 0 A_CheckCeiling("CeilingReposition")
Goto WallReposition
CeilingReposition:
TNT1 A 0 A_SpawnItemEx("ThunderClawArmsRepositioner",0,0,-32,0,0,-600)
Goto DeathLoop
WallReposition:
TNT1 A 0 A_SpawnItemEx("ThunderClawArmsRepositioner",-32,0,0,0,0,-600)
Goto DeathLoop
Death2:
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))
DeathLoop:
TNT1 A 1 A_SpawnItemEx("ThunderClawArmsHitBox",0,0,0,0)
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"DeathLoop")
End:
TNT1 A 0
stop
}
}

actor ThunderClawArmsRepositioner : ThunderClawArmsSpawner
{
States
{
Spawn:
TNT1 AAAAAAAA 1
TNT1 A 0 A_Stop
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))
DeathLoop:
TNT1 A 1 A_SpawnItemEx("ThunderClawArmsHitBox",0,0,0,0)
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"DeathLoop")
stop
}
}

actor ThunderClawArmsHitBox
{
PROJECTILE
-NOBLOCKMAP
+DONTBLAST
+DONTREFLECT
damage (0)
Speed 0
Radius 16
Height 24
scale 2.5
States
{
Spawn:
TNT1 A 1
TNT1 A 0 A_TakeFromTarget("VCOnce",1)
stop
XDeath:
TNT1 A 0 A_GiveToTarget("VCOnce",1)
Death:
TNT1 A 1
stop
}
}

actor ThunderClawArms
{
Translation "198:198=61:61"
PROJECTILE
-NOGRAVITY
+FLOORHUGGER
+RIPPER
-NOBLOCKMAP
+SHOOTABLE
+DONTBLAST
+THRUGHOST
+SEEKERMISSILE
+NOCLIP
+NOINTERACTION
Obituary "$OB_CLOWNMAN3"
damagetype "ClownManAlt"
Gravity 1.0
scale 2.5
speed 0
radius 1
height 1
const int DMG = 3;
const int RNG = 64;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/ClownManGrab","Weapon")
CLOG F 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG F 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG F 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG F 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End
Spawn2:
CLOG G 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG G 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG G 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG G 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End2
Spawn3:
CLOG L 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG L 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG L 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG L 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,1)
Goto End3
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
CLOG K 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_JumpIfInTargetInventory("VCOnce",1,"Shock")
TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Spawn2")
Goto End2
Shock:
TNT1 A 0 A_PlaySoundEx("weapon/ClownManArmShock","SoundSlot7") TNT1 A 0 A_GiveToTarget("HalfHalfDamageProtection")
CLOG M 1 A_SpawnItemEx("ClownArmsDamager",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
CLOG M 1 A_SpawnItemEx("ClownArmsDamager",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
TNT1 A 0 A_JumpIfInTargetInventory("VConce",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_SpawnItemEx("ClownArmsDamager2",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
CLOG N 1 A_SpawnItemEx("ClownArmsDamager2",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
TNT1 A 0 A_JumpIfInTargetInventory("VConce",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_SpawnItemEx("ClownArmsDamager",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
CLOG O 1 A_SpawnItemEx("ClownArmsDamager",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
TNT1 A 0 A_JumpIfInTargetInventory("VConce",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","SoundSlot7") TNT1 A 0 A_GiveToTarget("HalfHalfDamageProtection")
CLOG M 1 A_SpawnItemEx("ClownArmsDamager2",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
CLOG M 1 A_SpawnItemEx("ClownArmsDamager2",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
TNT1 A 0 A_JumpIfInTargetInventory("VConce",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_SpawnItemEx("ClownArmsDamager",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
CLOG N 1 A_SpawnItemEx("ClownArmsDamager",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
TNT1 A 0 A_JumpIfInTargetInventory("VConce",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_SpawnItemEx("ClownArmsDamager2",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
CLOG O 1 A_SpawnItemEx("ClownArmsDamager2",0,0,32) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("BaseAltfireAmmo",2) TNT1 A 0 A_GiveToTarget("ClownManShockPower",2) 
TNT1 A 0 A_JumpIfInTargetInventory("VConce",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 L 3 A_TakeFromTarget("HalfHalfDamageProtection")
End3:
CLOG K 3 A_TakeFromTarget("HalfHalfDamageProtection")
End2:
CLOG G 3 A_TakeFromTarget("HalfHalfDamageProtection")
End:
CLOG F 3 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
Scale 2.5
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 B 1 A_Explode(3,64,0)
stop
}
}

Actor ArmGrabShockA : BasicClientSide
{
+BRIGHT
+NOINTERACTION
RenderStyle Add
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CAUG A 1
stop
}
}

Actor ArmGrabShockB : ArmGrabShockA
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CAUG B 1
stop
}
}

actor ClownArmDebris
{
+MISSILE
+RIPPER
+THRUACTORS
+CLIENTSIDEONLY
+FLOORCLIP
Damage (0)
Scale 2.5
Height 5
Radius 5
-NOGRAVITY
+BOUNCEONFLOORS
+DOOMBOUNCE
bouncefactor 0.5
Bouncecount 1
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1 A_Jump(256,"DebrisA","DebrisB")
wait
DebrisA:
CLRM A 2
TNT1 A 2
loop
DebrisB:
CLRM B 2
TNT1 A 2
loop
Death:
XDeath:
TNT1 A 0
stop
}
}

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

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

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

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

actor ThunderCarnivalSpark : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1 A_Jump(256,"SparkA","SparkB","SparkC","SparkD")
wait
SparkA:
CAUC ABCDE 2
stop
SparkB:
CAUW ABCDE 2
stop
SparkC:
CAUY ABCDE 2
stop
SparkD:
CAUB ABCDE 2
stop
}
}

actor ThunderCarnivalElectricity : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1 A_Jump(256,"ElectricityA","ElectricityB","ElectricityC","ElectricityD","ElectricityE","ElectricityF")
wait
ElectricityA:
CAUD ABC 2
stop
ElectricityB:
CAUE ABC 2
stop
ElectricityC:
CAUF ABC 2
stop
ElectricityD:
CAUH ABC 2
stop
ElectricityE:
CAUI ABC 2
stop
ElectricityF:
CAUJ ABC 2
stop
}
}

actor ThunderCarnivalWarper
{
Translation "192:192=61:61", "198:198=228:228"
+MISSILE
-SOLID
+NOCLIP
+NOGRAVITY
+NOINTERACTION
+CLIENTSIDEONLY
Height 32
Radius 32
scale 2.5
const int OFS = 40;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK A 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK A 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK B 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK B 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK C 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK C 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK D 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
TNT1 A 0 A_JumpIfIntargetInventory("BaseAltfireAmmo",1,1) Goto End CAUK D 1 A_Warp(AAPTR_TARGET,0,0,OFS,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "End")
loop
End:
TNT1 A 0
stop
}
}

Actor ClownUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 2 A_TakeFromTarget("MediumShortUltimateAmmo",1)
TNT1 A 0 A_JumpIfInTargetInventory("MediumShortUltimateAmmo",1,"Spawn")
Death:
TNT1 A 1 A_TakeFromTarget("PowerUltBuildCooldown",1)
TNT1 A 0 A_GiveToTarget("SisiRollVanish",35)
stop
}
}

Actor ClownUltWatcher2
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
//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
Spawn:
TNT1 AA 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 2 A_TakeFromTarget("DrillFlag",1)//A_TakeFromTarget("MediumShortUltimateAmmo",1)
TNT1 A 0 A_JumpIfInTargetInventory("DrillFlag",1,"Spawn")
TNT1 A 0 A_GiveToTarget("VC_Timer",1)
TNT1 A 0 A_GiveToTarget("SisiMiscActivate",1)
TNT1 A 0 A_GiveToTarget("DrillFlag",35)
TNT1 A 0 A_JumpIfInTargetInventory("PowerUltBuildCooldown",1,"Spawn")
Death:
TNT1 A 1 A_TakeFromTarget("VC_Timer",9)
TNT1 A 0 A_TakeFromTarget("SisiMiscActivate",1)
TNT1 A 0 A_TakeFromTarget("DrillFlag",35)
stop
}
}

actor ClownManSisiRoll
{
PROJECTILE
-NOGRAVITY
+THRUACTORS
bouncecount 99999
Gravity 1.4
Damage (0)
Height 8
Radius 8
scale 2.5
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 ABCD 5 A_Stop
SISI B 5 A_GiveInventory("SisiRollFodderSpawn_CI")
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,8,20,0,0,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,0,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, 16, 8, 10, 8, 2, 20)
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",8, 16, 8)

TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", 8, -16, 8, 10, -8, 2, -20)
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",8, -16, 8)

TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", -8, 16, 8, -10, 8, 2, 20)
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",-8, 16, 8)

TNT1 A 0 A_SpawnItemEx("ClownManRomperRed", -8, -16, 8, -10, -8, 2, -20)
TNT1 A 0 A_SpawnItemEx("MM8DeathFX",-8, -16, 8)
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
}