actor Cloudman : VCBaseClass
{
Player.ScoreIcon "CLOUMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "IsFromMM7"
player.soundclass "cloudmanc"
Player.ViewHeight 61
projectilepassheight 77
player.forwardmove 0.75, 0.75
player.sidemove 0.73, 0.73
player.jumpz 14
player.displayname "Cloudman"
player.startitem "ThunderBoltBoss"
player.startitem "BaseAltfireAmmo", 112
player.startitem "CloudChargeCount",5
player.startitem "UltimateAttackItem4", 1
player.startitem "UltSoundWatcherSpawn4"
player.startitem "NoHealthBar"
States
{
Animation2:
Spawn:
CLOM A 0
CLOM B 1
CLOM A 1
Goto Spawn+2

See:
CLOM BCDE 5
goto Spawn+1

Animation4:
Missile:
CLOM FFFFFGGGG 1
goto Spawn+1

Animation1:
CLOM IJKJIJKJIJKJIJKJIJKJIJKJ 1
goto Spawn+2

Animation3:
CLOM BCDE 1
goto Spawn+2

Animation5:
CLOM LMM 3
goto Spawn+2

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
PLAY A 0 ACS_Execute(528,0)
CLOM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
CLOM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1

Death.DangerWrap:
Death.Burstman:
Death.BurstmanBubble:
Death.BurstmanUlt:
Death.BurstPush:
TNT1 A 0 A_SpawnItemEx("DeadBubbledCloudMan",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadCloudMan",0,0,0,0,0,0,0,1)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
CLOM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("ThunderBoltWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("ThunderBoltWepM")
goto ClassDeath
}
}

actor DeadCloudMan : DeadFreezeMan
{
meleerange 7843
States
{
Spawn:
CLOM H 0
"####" "#" 0
goto loopit
}
}

actor DeadBubbledCloudMan
{
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
+NOEXPLODEFLOOR
+BOUNCEONCEILINGS
+DONTBLAST
-NOINTERACTION
scale 2.5
meleerange 7843
reactiontime 19
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/wrapfire","Weapon")
Goto Spawn2

Spawn2:
CLOM N 1 A_CheckCeiling("Fall")
TNT1 A 0 A_ChangeVelocity(0,0,3,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",35,"Pop")
loop

Pop:
TNT1 A 0 A_PlaySoundEx("weapon/WaterShieldPop","Body")
CLOM O 0 A_ChangeFlag("NOGRAVITY",False)
CLOM H 2 A_ChangeVelocity(0,0,10,CVF_RELATIVE|CVF_REPLACE)
Goto Fall

Fall:
CLOM O 0 A_ChangeFlag("NOGRAVITY",False)
CLOM H 1 A_CheckFloor("Land")
wait

Land:
TNT1 A 0 A_PlaySoundEx("misc/fatland","Voice")
CLOM O 2 A_ChangeVelocity(0,0,7,CVF_RELATIVE|CVF_REPLACE)
CLOM O 1 A_CheckFloor("Land2")
wait

Land2:
TNT1 A 0 A_PlaySoundEx("misc/fatland","Voice")
CLOM O 2 A_ChangeVelocity(0,0,4,CVF_RELATIVE|CVF_REPLACE)
CLOM O 1 A_CheckFloor("End")
wait

End:
CLOM O 0 A_ChangeFlag("NOINTERACTION",True)
CLOM O 1 Thing_SetTranslation(0, 7454)
CLOM O 1 Thing_SetTranslation(0, meleerange)
CLOM O 0 A_Countdown
loop

Death:
TNT1 A 0 A_PlaySoundEx("mm7/dead","Auto")
TNT1 A 0 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
Stop
}
}

actor ThunderBoltBoss : VCBaseWeapon
{
	Weapon.AmmoType "CloudChargeCount"
	Weapon.AmmoType2 "BaseAltfireAmmo"
	Weapon.ammouse 1
	Obituary "$OB_CLOUDMAN1"
	States
	{
		Ready:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("CloudChargeCount",10,"Ready2")
		CLHU A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",4,1)) CLHU A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") CLHU A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		goto Ready
		
		Ready2:
		CLHU A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",4,1)) CLHU A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") CLHU A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"Fire1")
		goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		CLHU A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0 ACS_ExecuteAlways(991,0,7843)
		TNT1 A 0 A_GunFlash
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		CLHU A 1 A_Raise
		Loop
		
		
		User1:
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		CLHU GHI 1 SetPlayerProperty(0,1,0)
		
		U1.Hold:
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_SpawnItemEx("CloudBoltSummon",0,0,0,0,0,100)
		CLHU IIIIIIIIIIIIIIIIIIIIIIIII 1 A_JumpIfInventory("CloudCollectFlag",1,"U1.Collect")
		CLHU II 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"U1.Hold")
		
		U1.Finish:
		CLHU HGAAA 1 SetPlayerProperty(0,0,0)
		goto Ready
		
		U1.Collect:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		CLHU J 0 A_GiveInventory("HalfDamageProtection")
		CLHU JIJIJIJIJIJIJI 1 A_FireCustomMissile("CloudChargeHitbox",0,0,0,8)
		CLHU J 0 A_TakeInventory("HalfDamageProtection")
		CLHU J 0 A_JumpIfInventory("CloudChargeCount",10,"U1.Finish")
		CLHU JI 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"U1.Hold")
		goto U1.Finish
		
		User1.M1:
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		CLHU GHI 1 SetPlayerProperty(0,1,0)
		
		U1.HoldM1:
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		TNT1 A 0 A_SpawnItemEx("CloudBoltSummon",0,0,0,0,0,100)
		CLHU IIIIIIIIIIIIIIIIIIIIIIIII 1 A_JumpIfInventory("CloudCollectFlag",1,"U1.CollectM1")
		goto U1.Finish
		
		U1.CollectM1:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		CLHU J 0 A_GiveInventory("HalfDamageProtection")
		CLHU JIJIJIJIJIJIJI 1 A_FireCustomMissile("CloudChargeHitbox",0,0,0,8)
		CLHU J 0 A_TakeInventory("HalfDamageProtection")
		goto Fire1
		
		
		Fire:
		CLHU B 0 A_JumpIfNoAmmo("User1.M1")
		
		Fire1:
		CLHU A 0 SetPlayerProperty(0,0,0)
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
		CLHU B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Fire2")
		CLHU BCD 1
		CLHU E 0 A_GiveInventory("CloudM1Handler")
		CLHU E 2 A_PlaySoundEx("weapon/cloudbolt","Weapon")
		CLHU D 17
		CLHU CBA 1
		goto Ready
		
		Fire2:
		CLHU BCD 1
		CLHU E 0 A_PlaySoundEx("weapon/cloudbolt","Weapon")
		CLHU E 2 A_FireCustomMissile("CloudBoltUlt",0,0,0,15)
		CLHU D 7
		CLHU CBA 1
		goto Ready
		
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
		CLHU A 0 A_CheckFloor("Altfire.Ground")
		CLHU A 0 A_JumpIf(callACS("core_CheckFooting")== 1 || (abs(z-floorz) < 30 && momz <= 0),"Altfire.Ground")
		CLHU B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Altfire2")
		CLHU A 0 A_Stop
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		CLHU E 0 A_PlaySoundEx("weapon/cloudbolt","Weapon")
		CLHU F 0 A_SpawnItemEx("CloudDownBoltFX",1)
		CLHU F 0 A_SpawnItemEx("CloudDownBolt",0,0,-20,0,0,-30)
		CLHU F 1 A_TakeInventory("CloudChargeCount",1)
		CLHU AFA 1 A_Stop
		CLHU A 18
		goto Ready
		
		Altfire.Ground:
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
		CLHU A 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		CLHU A 0 A_Stop
		CLHU FFGGHHI 1 A_GiveInventory("CloudRainSpeed",1)
		
		Altfire.GroundAmmo:
		CLHU I 0 A_JumpIfInventory("CloudChargeCount",1,1)
		goto Altfire.GroundEnd
		CLHU I 0 A_TakeInventory("CutterFlag",999)
		TNT1 A 0 A_SpawnItemEx("CloudChargeFX")
		CLHU I 0 A_GiveInventory("CloudGroundAltHandler",1)
		
		Altfire.GroundHold:
		CLHU I 1 A_FireCustomMissile("CloudRainHitbox",0,0,0,8)
		CLHU I 1 A_FireCustomMissile("CloudRainHitbox",0,0,0,8)
		CLHU I 1 A_FireCustomMissile("CloudRainHitbox",0,0,0,8)
		CLHU I 1 A_FireCustomMissile("CloudRainHitbox",0,0,0,8)
		CLHU I 0 A_GiveInventory("CutterFlag",1)
		CLHU I 0 A_JumpIfInventory("CutterFlag",4,"Altfire.GroundAmmo")
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		CLHU A 0 A_Refire("Altfire.GroundHold")
		goto Altfire.GroundEnd
		
		Altfire.GroundEnd:
		CLHU IHG 1 ACS_Execute(191,0,APROP_JumpZ,14,1)
		CLHU A 0 A_ClearRefire
		CLHU A 10 A_TakeInventory("CloudRainSpeed",999)
		goto Ready
		
		Altfire2:
		CLHU A 0 A_JumpIfInventory("BaseCustomFlag1",1,1)
		goto Altfire2.End
		CLHU E 0 A_PlaySoundEx("weapon/rainflush","Weapon")
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
		CLHU F 0 A_SpawnItemEx("CloudDownBoltFX",1)
		CLHU F 0 A_SpawnItemEx("CloudDownBolt",0,0,-20,0,0,-30)
		CLHU FAFA 1 A_Stop
		CLHU A 0 A_Refire("Altfire2")
		
		Altfire2.End:
		CLHU A 6 A_ClearRefire
		goto Ready
		

		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,58)
		CUTA A 0 A_GiveInventory("TurboUltCooldown")
		CUTA A 0 A_SpawnItemEx("MM7PinpointThunder")
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		CUTA A 0 A_TakeInventory("MediumLongUltimateAmmo",1)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		CUTA A 0 A_PlaySoundEx("weapon/lightningbolt","Body")
		CLHU GHJIJIJI 1 A_Stop
		CLHU A 0 A_GiveInventory("CloudChargeCount",10)
		CLHU A 0 A_GiveInventory("BaseCustomFlag1")
		CLHU A 0 A_SpawnItemEx("CloudUltWatcher")
		CLHU A 0 A_TakeInventory("UltAttackFlag")
		goto Ready
		
		
		Flash:
		TNT1 A 0 A_JumpIfInventory("CloudFlyFlag",1,"Flash.Fly")
		TNT1 A 1 A_GiveInventory("CloudFlightAmmoHandler",1)
		TNT1 A 0 A_JumpIfInventory("IsUnderwater",1,3)
		TNT1 A 0 A_SetGravity(0.5)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SetGravity(0.25)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		loop
		
		Flash.Fly:
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_CheckFloor("Flash.FlyEnd")
		TNT1 A 1 SetPlayerProperty(0,1,3)
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"Flash.Fly")
		
		Flash.FlyEnd:
		TNT1 A 0 SetPlayerProperty(0,0,3)
		TNT1 A 0 A_TakeInventory("CloudFlyFlag",999)
		goto Flash
	}
}

actor CloudChargeCount : Ammo
{
	inventory.amount 1
	inventory.maxamount 10
	+INVENTORY.IGNORESKILL
}

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

actor CloudFlightAmmoHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_CheckFloor("Pickup2")
stop
Pickup2:
TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
stop
}
}

actor CloudBoltSummon
{
Radius 12
Height 12
scale 2.5
PROJECTILE
+DONTBLAST
+SKYEXPLODE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 2
Death:
TNT1 A 0 A_SpawnItemEx("CloudFallBolt", 0, 0, -9, 0, 0, -80, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM, 0)
stop
}
}


actor CloudFallBolt
{
radius 8
height 8
scale 2.5
PROJECTILE
+RIPPER
damagetype "Cloudman"
Obituary "$OB_CLOUDMAN3"
damage(1)
+DONTBLAST
+SKYEXPLODE
+DONTREFLECT
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CLOS G 0 A_SpawnItemEx("CloudFallTrail",0,0,10,0,0,0,0,1)
CLOS G 1 A_JumpIfCloser(64,"Collect")
goto Spawn+2
Collect:
TNT1 A 0 A_Stop
CLOS G 0 A_GiveToTarget("CloudChargeGiver",1)
CLOS GFDE 1
CLOS FG 1 A_SpawnItemEx("CloudFallTrail2",0,0,10,0,0,0,0,1)
stop
Death:
TNT1 A 0 A_JumpIfCloser(48,"Collect")
stop
}
}

actor CloudFallTrail : CloudFallBolt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOD ABCABJ 1
stop
}
}

actor CloudFallTrail2 : CloudFallBolt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOD L 2
stop
}
}

actor CloudChargeGiver : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/cloudcharge","Body")
TNT1 A 0 A_GiveInventory("CloudCollectFlag",1)
TNT1 A 0 A_SpawnItemEx("CloudChargeFX")
TNT1 A 0 A_GiveInventory("CloudChargeCount",2)
stop
}
}

actor CloudCollectFlag : Powerup
{
Powerup.Duration 4
}

actor CloudBolt
{
scale 2.5
PROJECTILE
+RIPPER
Obituary "$OB_CLOUDMAN1"
damagetype "CloudmanBolt"
speed 60
damage(4)
radius 12
height 12
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CLOF A 0 bright A_SpawnItemEx("CloudBoltTrail",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
CLOF A 0 bright A_SpawnItemEx("CloudBoltTrail",-momx/3,-momy/3,-momz/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
CLOF A 0 bright A_SpawnItemEx("CloudBoltTrail",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM)
CLOF A 1 bright A_SpawnItemEx("CloudBoltTrail",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION)
goto Spawn+2
Death:
TNT1 A 0 A_CheckFloor("Death.Floor")
Death2:
TNT1 A 0 A_PlaySoundEx("weapon/coilfire2","Body")
TNT1 A 0 A_Quake(3,12,0,300)
CLOS GFDEFG 1 A_Stop
TNT1 A 6
stop
Death.Floor:
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,0*90,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,1*90,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,2*90,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,3*90,1)
goto Death2
}
}

actor CloudBoltTrail : CloudBolt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOF A 7
stop
Death:
TNT1 A 0
stop
}
}

actor CloudmanBoltProtect : PowerProtection
{
Powerup.Duration 2
damagefactor "CloudmanBolt", 0.0
}

actor CloudBoltSplit
{
scale 2.5
PROJECTILE
radius 16
height 16
Obituary "$OB_CLOUDMAN1"
damagetype "Cloudman"
damage(11)
+FLOORHUGGER
+DONTREFLECT
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOS BACA 2 A_ScaleVelocity(1.05)
goto Spawn+2
}
}

actor CloudChargeHitbox
{
species "DustManType"
+THRUSPECIES
Obituary "$OB_CLOUDMAN3"
PROJECTILE
+NOEXPLODEFLOOR
Radius 40
Height 40
scale 2.5
speed 0
damage (3)
Damagetype "CloudmanCharge"
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
}
}

actor CloudDownBolt : CloudFallBolt
{
damagetype "CloudmanBolt"
radius 24
height 24
scale 2.5
PROJECTILE
+RIPPER
Obituary "$OB_CLOUDMAN2"
damage(15)
+DONTBLAST
+SKYEXPLODE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CLOS GG 1 A_SpawnItemEx("CloudDownTrail1",0,0,10,0,0,0,0,1)
loopit:
CLOS G 1 A_SpawnItemEx("CloudDownTrail2",0,0,10,0,0,0,0,1)
loop
Death:
TNT1 A 0 A_CheckFloor("Death.Floor")
Death2:
TNT1 A 0 A_PlaySoundEx("weapon/coilfire2","Body")
TNT1 A 0 A_Quake(3,12,0,300)
CLOS G 1 A_SpawnItemEx("CloudDownTrail1",0,0,0,0,0,0,0,1)
CLOS FDEFG 1
TNT1 A 6
stop
Death.Floor:
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,0*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,1*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,2*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,3*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,4*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,5*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,6*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,7*45,1)
goto Death2
}
}

actor CloudDownTrail1 : CloudDownBolt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOD DEFDEF 1
stop
Death:
TNT1 A 0
stop
}
}

actor CloudDownTrail2 : CloudDownTrail1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOD ABCAJ 1
stop
}
}

actor CloudDownSplit : CloudBoltSplit
{
Obituary "$OB_CLOUDMAN2"
damage(3)
+RIPPER
+FLOORHUGGER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOS BACA 2 A_ScaleVelocity(1.05)
goto Spawn+2
}
}

actor CloudRainHitbox
{
damagetype "Cloudman"
Obituary "$OB_CLOUDMAN2"
+NOGRAVITY
+MISSILE
+SKYEXPLODE
+NOINTERACTION
+DONTBLAST
height 1
radius 1
-SOLID
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/cloudrain","Voice")
TNT1 A 0 A_Explode(2,48,0,0,48)
TNT1 A 0 ACS_ExecuteAlways(247, 0, 2, 250)
TNT1 AAAAA 1 A_SpawnItemEx("CloudmanRainClass", random(-200,600), random(-400,400), 256, -30, 0, -20, 180, SXF_CLIENTSIDE|SXF_TRANSFERTRANSLATION)
stop
}
}

actor CloudmanRainClass : CloudmanRain
{
+CLIENTSIDEONLY
+NOINTERACTION
- SOLID
+NOGRAVITY
+DONTBLAST
+DONTSPLASH
+MISSILE
height 3
radius 3
Scale 3.0
States
{
Spawn:
CRAI DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 1 A_CheckFloor("Death")
stop
Death:
TNT1 A 0
stop
}
}
actor CloudRainSpeed : PowerSpeed
{
+POWERSPEED.NOTRAIL
powerup.duration -999
Speed 0.2
}

actor CloudDownBoltFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CLOS HIHIH 1
stop
}
}

actor CloudChargeFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
CLOS JJKKLLMMNN 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}

actor CloudUltFX1 : BasicClientSide
{
scale 1.5
renderstyle add
alpha 0.4
translation "4:4=[255,189,0]:[255,189,0]"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TBOL JK 1
TNT1 A 1
TBOL JK 1
TNT1 A 1
TBOL JK 1
stop
}
}

actor CloudUltFX2 : CloudUltFX1
{
translation "4:4=[230,90,16]:[230,90,16]"
}

actor CloudUltFX3 : CloudUltFX1
{
translation "4:4=4:4"
}

actor CloudUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("weapon/cloudult","Body",1)
loopit:
TNT1 A 0 A_GiveToTarget("CloudUltColor1")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_SpawnItemEx("CloudUltFX1",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_SpawnItemEx("CloudUltFX2",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_SpawnItemEx("CloudUltFX3",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_GiveToTarget("CloudUltColor2")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_SpawnItemEx("CloudUltFX1",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_SpawnItemEx("CloudUltFX2",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_SpawnItemEx("CloudUltFX3",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_GiveToTarget("CloudUltColor1")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION)
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_SpawnItemEx("CloudUltFX1",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_SpawnItemEx("CloudUltFX2",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_SpawnItemEx("CloudUltFX3",random(32,40),0,random(8,88),0,0,0,random(0,359),0,128)
TNT1 A 0 A_TakeFromTarget("MediumLongUltimateAmmo",1)
TNT1 A 1 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,"loopit")
TNT1 A 1 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,"loopit")
goto Death
Death:
TNT1 A 0 A_GiveToTarget("CloudNormalColor")
TNT1 A 0 A_TakeFromTarget("MediumUltimateAmmo",999)
TNT1 A 0 A_TakeFromTarget("BaseCustomFlag1",1)
stop
}
}

actor CloudBoltUlt : CloudBolt
{
alpha 1.0
scale 2.5
PROJECTILE
+RIPPER
Obituary "$OB_CLOUDMAN1"
damagetype "CloudmanBolt"
speed 60
damage(9)
radius 12
height 12
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/cloudshock","Body",1)
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
TNT1 A 0 A_SpawnItemEx("CloudUltFX1",random(-12,12),random(-12,12),random(-12,12),0,0,0,random(0,359))
TNT1 A 0 A_SpawnItemEx("CloudUltFX2",random(-12,12),random(-12,12),random(-12,12),0,0,0,random(0,359))
TNT1 A 0 A_SpawnItemEx("CloudUltFX3",random(-12,12),random(-12,12),random(-12,12),0,0,0,random(0,359))
CLOF A 0 bright A_SpawnItemEx("CloudBoltUltTrail",-momx*2/3,-momy*2/3,-momz*2/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
CLOF A 0 bright A_SpawnItemEx("CloudBoltUltTrail",-momx/3,-momy/3,-momz/3,0,0,0,0,SXF_ABSOLUTEPOSITION)
CLOF A 0 bright A_SpawnItemEx("CloudBoltUltTrail",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM)
CLOF A 1 bright A_SpawnItemEx("CloudBoltUltTrail",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION)
goto Spawn+3
Death:
TNT1 A 0 A_CheckFloor("Death.Floor")
Death2:
TNT1 A 0 A_PlaySoundEx("weapon/coilfire2","Body")
TNT1 A 0 A_Quake(3,12,0,300)
CLOS GFDEFG 1 A_Stop
TNT1 A 6
stop
Death.Floor:
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,0*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,1*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,2*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,3*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,4*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,5*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,6*45,1)
TNT1 A 0 A_SpawnItemEx("CloudBoltSplit",16,0,0,20,0,0,7*45,1)
goto Death2
}
}

actor CloudBoltUltTrail : CloudBoltUlt
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
CLOF A 7
stop
Death:
TNT1 A 0
stop
}
}

actor CloudGroundAltHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Pickup2")
TNT1 A 0 A_TakeInventory("CloudChargeCount",1)
stop
Pickup2:
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,0*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,1*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,2*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,3*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,4*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,5*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,6*45,1)
TNT1 A 0 A_SpawnItemEx("CloudDownSplit",16,0,0,20,0,0,7*45,1)
stop
}
}

actor CloudM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 2 A_FireCustomMissile("CloudBolt",0,0,0,15)
TNT1 A 0 A_TakeInventory("CloudChargeCount",1)
stop
}
}

actor CloudUltColor1 : CustomInventory
{
states
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(971,0,1843)
stop
}
}

actor CloudUltColor2 : CustomInventory
{
states
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(971,0,2843)
stop
}
}

actor CloudNormalColor : CustomInventory
{
states
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(991,0,7843)
stop
}
}