actor BubbleLeadBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_2C"
dropitem "BubbleLeadWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 28
Obituary "$OB_BUBBLELEAD"
weapon.ammotype "WaddleWaddleAmmo"
weapon.ammotype2 "BubbleDabbleAmmo"
States
{
Spawn:
C_02 C 1
loop
Ready:
BUBA A 0 ACS_ExecuteAlways(998,0,DYE_BUBBLEMAN)
BUBA A 0 ACS_NamedExecuteAlways("ItemReloadACSBubble",0)
BUBA A 0 A_GunFlash
goto Ready1
Ready1:
BUBA A 0 A_JumpIfInventory("WaddleWaddleAmmo",4,"Ready2")
BUBA A 3 A_WeaponReady(WRF_NOSECONDARY)
BUBA A 0 A_GiveInventory("WaddleWaddleAmmo",1)
loop
Ready2:
BUBA A 3 A_WeaponReady
BUBA A 0 A_GiveInventory("WaddleWaddleAmmo",1)
loop
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BUBA A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BUBA A 1 A_Raise
Loop
Fire:
BUBA A 0 A_PlaySoundEx("weapon/bubbleshot","Weapon")
BUBA A 0 A_GiveInventory("BubblemanMain_CI",1)
/*BUBA B 2
BUBA C 5
BUBA BA 1
//BUBA A 3*/ //12
BUBA BC 2
BUBA C 2
BUBA B 2
BUBA A 4
BUBA A 0 A_GiveInventory("WaddleWaddleAmmo",2)
Goto Ready1
Altfire:
BUBA A 0 A_JumpIfInventory("WaddleWaddleAmmo",4,"Altfire2")
goto NoAmmo
Altfire2:
BUBA A 0 A_PlaySoundEx("weapon/bubblemanlead","Weapon")
BUBA A 0 A_JumpIfInventory("PowerRage_ST",1,"Altfire2_R")
/*BUBA A 2 offset(-3,35)A_GiveInventory("BubblemanAlt_CI",1)
BUBA A 2 offset(-8,40)
BUBA A 1 offset(-13,45)
BUBA A 1 offset(-18,50)
BUBA A 1 offset(-13,45)
BUBA A 2 offset(-8,40)
BUBA A 2 offset(-3,35)
//BUBA A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)*/ //13
BUBA J 1 A_GiveInventory("BubblemanAlt_CI",1)
BUBA J 1 Offset(0, 48)
BUBA J 1 Offset(0, 56)
BUBA K 1 Offset(0, 60)
BUBA L 2 Offset(0, 62)
BUBA J 1 Offset(0, 60)
BUBA J 1 Offset(0, 56)
BUBA J 1 Offset(0, 48)
BUBA J 1 Offset(0, 40)
BUBA J 1 Offset(0, 36)
BUBA A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
goto Ready1
Altfire2_R:
/*BUBA A 2 offset(0,34)A_GiveInventory("BubblemanAlt_CI",1)
BUBA A 2 offset(0,36)
BUBA AA 2 offset(0,39)
BUBA A 2 offset(0,36)
BUBA A 2 offset(0,32)
//BUBA A 0*/ //A_Refire //12
BUBA J 1 A_GiveInventory("BubblemanAlt_CI",1)
BUBA J 1 Offset(0, 48)A_JumpIfInventory("PowerRage_ST",1,1)
BUBA J 1 Offset(0, 56)
BUBA K 1 Offset(0, 60)A_JumpIfInventory("PowerRage_ST",1,1)
BUBA L 1 Offset(0, 62)
BUBA L 1 Offset(0, 62)A_JumpIfInventory("PowerRage_ST",1,1)
BUBA J 1 Offset(0, 60)
BUBA J 1 Offset(0, 56)A_JumpIfInventory("PowerRage_ST",1,1)
BUBA J 1 Offset(0, 48)
BUBA J 1 Offset(0, 40)A_JumpIfInventory("PowerRage_ST",1,1)
BUBA J 1 Offset(0, 36)
BUBA A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
BUBA A 0
goto Ready1
NoAmmo:
BUBA A 0
Goto Ready1


Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_JumpIfInventory("IsTreadingWater",1,"Flash.Swim")
TNT1 A 1
TNT1 A 0 A_JumpIf(z-floorz==0,1)
loop
TNT1 A 0 A_TakeInventory("BubbleHasSwam",99)
goto Flash
Flash.Ammo:
TNT1 A 0 A_JumpIfInventory("BubbleDabbleAmmo",280,"Flash")
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_JumpIfInventory("IsTreadingWater",1,"Flash.Swim")
TNT1 A 1 A_GiveInventory("BubbleDabbleAmmo_RC",1)
TNT1 A 0 A_JumpIf(z-floorz==0,1)
loop
TNT1 A 0 A_TakeInventory("BubbleHasSwam",99)
goto Flash.Ammo

Flash.SwimCheck:
TNT1 A 0 A_JumpIfInventory("StopTreadingWater",1,"Flash.LandEnd")
TNT1 A 0 A_JumpIf(z-floorz==0,"Flash.Land")
TNT1 A 0 A_JumpIfInventory("BubbleDabbleAmmo",1,"Flash.Swim")
goto Flash.Land
Flash.Swim:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_GiveInventory("BubbleNeedsToTouchGrass",1)
TNT1 A 1 A_GiveInventory("BubbleSwimFlash_P",1)
TNT1 A 0 A_JumpIf(z-floorz==0,"Flash.SwimCheck")
TNT1 A 0 A_JumpIfInventory("BubbleDabbleAmmo",1,"Flash.SwimCheck")
TNT1 A 0 SetPlayerProperty(0,0,3)
goto Flash.Land

Flash.Land:
TNT1 A 0 A_JumpIfInventory("TreadingFlashDelay",1,"Flash.Swim")
TNT1 A 0 A_TakeInventory("BubbleHasSwam",1)
TNT1 A 0 A_JumpIf(z-floorz==0,"Flash.LandEnd")
TNT1 A 0 A_JumpIf(momz==0,"Flash.LandZ")
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("BubbleHasSwam",1,"Flash.Land")
goto Flash.LandEnd
Flash.LandZ:
TNT1 A 1
TNT1 A 0 A_JumpIf(z-floorz==0,"Flash.LandEnd")
TNT1 A 0 A_JumpIf(momz==0,"Flash.LandEnd")
goto Flash.Land+4
Flash.LandEnd:
TNT1 A 1 A_GiveInventory("BubbleSwimFlashEnd_P",1)
goto Flash.Ammo

}
}

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

actor BubbleDabbleAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 280
+INVENTORY.IGNORESKILL
}

actor StopTreadingWater : OnceC {}
actor BubbleHasSwam : Powerup
{
powerup.duration 20
}

actor TreadingFlashDelay : Powerup
{
powerup.duration 20
}

actor BubbleNeedsToTouchGrass : Powerup
{
powerup.duration 105
} 

actor BubbleDabbleAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("BubbleHasSwam",1,"StopThis")
TNT1 A 0 A_JumpIfInventory("BubbleNeedsToTouchGrass",1,"StopThis")
ContinueOn:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("BubbleDabbleAmmo",1)
stop
PickupR:
TNT1 A 0 A_GiveInventory("BubbleDabbleAmmo",2)
stop
StopThis:
TNT1 A 0 A_JumpIf(Z-FloorZ==0,"OKToRegen")
stop
OKToRegen:
TNT1 A 0 A_TakeInventory("BubbleNeedsToTouchGrass",99)
stop
}
}

actor BubbleSwimFlash_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("BubbleHasSwam",1)
TNT1 A 0 A_JumpIfInventory("BubbleDabbleAmmo",1,"SwimCheck")
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 //A_Log("I HAVE NO AMMO")
stop
SwimCheck:
TNT1 A 0 A_JumpIfInventory("IsUnderWater",1,"Swim")
TNT1 A 0 A_JumpIfInventory("PowerFlood",1,"Swim")
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 //A_Log("NO SWIM")
stop
Swim:
TNT1 A 0 A_TakeInventory("BubbleDabbleAmmo",1)
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"SwimNo")
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 //A_Log("LETS SWIM")
stop
SwimNo:
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 //A_Log("I CANT SWIM")
stop
}
}

actor BubbleSwimFlashEnd_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("StopTreadingWater",99)
TNT1 A 0 A_TakeInventory("IsTreadingWater",99)
TNT1 A 0 SetPlayerProperty(0,0,3)
stop
}
}

actor BubbleBounceX
{
translation "192:192=4:4","195:195=102:102"
PROJECTILE
var int user_P;
Obituary "$OB_BUBBLELEAD"
damagetype "BubbleM_Lead"
scale 2.5
-NOGRAVITY
+HEXENBOUNCE
-ALLOWBOUNCEONACTORS
-BOUNCEONWALLS
+CANBOUNCEWATER
+STEPMISSILE
bouncefactor 1.0
wallbouncefactor 1.0
Speed 16
Radius 16
Height 20
gravity 1.0
Damage (20)
ReactionTime 25//45
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
BUBA E 0
BUBA E 0 //A_Recoil(-9)
TNT1 A 1 ThrustThingZ(0,10,0,1)
BUBA EEEFFF 1 A_JumpIf(z-floorz==0,"Spawn_F")
Goto SpawnLOOP+3
Spawn_F:
BUBA E 0 A_PlaySoundEx("weapon/BubbleBounce","Weapon")
BUBA E 0 A_ChangeVelocity(16,0,0,CVF_RELATIVE|CVF_REPLACE)
BUBA E 1 ThrustThingZ(0,30,0,0)
Goto SpawnLOOP+3
Death:
XDeath:
TNT1 A 1
stop
}
}

actor BubbleBounceXB : BubbleBounceX{translation "192:192=205:205","195:195=74:74"}
actor BubbleBounceXR : BubbleBounceX{translation "192:192=171:171","195:195=41:41"}
actor BubbleBounceXO : BubbleBounceX{translation "192:192=104:104","195:195=128:128"}
actor BubbleBounceXP : BubbleBounceX{translation "192:192=229:229","195:195=232:232"}

actor BubProj : FastProjectile
{
translation "192:192=4:4"
PROJECTILE
Obituary "$OB_BUBBLEBUSTER"
damagetype "BubbleM_Shot"
Damage (12)
radius 6
height 6
Speed 64
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
TNT1 A 1
BUBA D 1 A_SpawnItemEx("BubProjFX",0,0,0,0,0,0,0,1)
Goto SpawnLOOP+1
Death:
BUBA D 1
stop
}
}

actor BubProjB : BubProj{translation "192:192=205:205"}
actor BubProjR : BubProj{translation "192:192=171:171"}
actor BubProjO : BubProj{translation "192:192=104:104"}
actor BubProjP : BubProj{translation "192:192=229:229"}

actor BubProjFX : BasicClientSide
{
//+FORCEXYBILLBOARD
Alpha 0.75
scale 2.0
States
{
Spawn:
TNT1 A 2
X_9A H 1 A_FadeOut
wait
}
}

actor BubblemanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BubProj",0,0,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BubProjB",0,0,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BubProjR",0,0,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BubProjO",0,0,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BubProjP",0,0,-8,0)
goto Done
}
}

actor BubblemanAlt_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("BubbleBounceX",0,0,0,-10)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("BubbleBounceXB",0,0,0,-10)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("BubbleBounceXR",0,0,0,-10)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("BubbleBounceXO",0,0,0,-10)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("BubbleBounceXP",0,0,0,-10)
goto Done
Done:
TNT1 A 0 A_TakeInventory("WaddleWaddleAmmo",4)
stop
}
}

///////////////////////
//X=================X//
//| The Bubble Item |//
//X=================X//
///////////////////////

actor BubbleFlooder : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
inventory.icon "BubIconN"
Tag "$TAGC_2C2"
inventory.pickupmessage "Welcome to Davy Jones' Locker!"
scale 2.0
+INVBAR
states
{
Spawn:
BUBA WXY 3
loop
Use: 
TNT1 A 0 A_JumpIfInventory("BubbleFloodBusy",1,"No")
TNT1 A 0 A_JumpIfInventory("BubbleFloodDeployed",1,"Success2")
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(250)==1,"No")
TNT1 A 0 A_JumpIfInventory("IsUnderWater",1,"No")
TNT1 A 0 A_JumpIfInventory("PowerFlood",1,"No")
Success:
TNT1 A 0 A_GiveInventory("BubbleNeedsToTouchGrass",1)//A_GiveInventory("IsTreadingWater",1)
TNT1 A 0 A_JumpIf(momx*momx+momy*momy+momz*momz < 14,"TooSlow")
TNT1 A 0 A_SpawnItemEx("BubbleFlood",0,0,56,momx/2+1,momy/2+1,momz/4,0,9,0)
fail
TooSlow:
TNT1 A 0 A_SpawnItemEx("BubbleFlood",0,0,56,0,0,0,0,1)
fail
Success2:
TNT1 A 0 A_GiveInventory("BubbleFloodUndeploy",1)
//TNT1 A 0 A_TakeInventory("BubbleFloodDeployed",1)
fail
No:
TNT1 A 0
fail
}
}

actor BubbleFloodDeployed : Inventory
{
inventory.amount 1
inventory.maxamount 1
}
actor BubbleFloodBusy : Powerup
{
powerup.duration 11
}
actor BubbleFloodUndeploy : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor BubbleFlood
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
+DONTBLAST
+THRUACTORS
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("classes/FloodIn", "SoundSlot6")
TNT1 A 0 A_TakeFromTarget("BubbleFloodUndeploy",1)
TNT1 A 0 A_GiveToTarget("BubbleFloodDeployed",1)
TNT1 A 0 A_GiveToTarget("BubbleFloodBusy",1)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner1",0,0,0,0,0,0,0,129)//SXF_CLIENTSIDE
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner1",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner1",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner2",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner2",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner2",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner3",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner3",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner3",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner4",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner4",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner4",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner5",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner5",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner5",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner6",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner6",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner6",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner7",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner7",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner7",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner8",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner8",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

//TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner8",0,0,0,0,0,0,0,129)
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")

FullDeployedPre:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 0 A_GiveToTarget("TreadingFlashDelay",1)
TNT1 A 0 A_GiveToTarget("IsTreadingWater",1)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF1",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed1:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF1",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed2:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF1",0,0,0,0,0,0,0,129)
TNT1 A 0 A_TakeFromTarget("BubbleFloodBusy",1)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed3:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF1",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed4:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF2",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed5:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF2",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed6:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF2",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed7:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF3",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed8:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF3",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
FullDeployed9:
TNT1 A 0 ACS_ExecuteAlways(212,0,0)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawnerF3",0,0,0,0,0,0,0,129)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("BubbleFloodUndeploy",1,"UnDeploy")
goto FullDeployed1

UnDeploy:
TNT1 A 0 A_SpawnItemEx("BubbleFloodOutSound")
//TNT1 A 0 A_PlaySound("classes/FloodOut", CHAN_WEAPON , 1.0)

TNT1 A 0 A_TakeFromTarget("BubbleFloodDeployed",1)
TNT1 A 0 A_GiveToTarget("BubbleFloodBusy",1)

TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner8",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner7",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner6",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner5",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner4",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner3",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner2",0,0,0,0,0,0,0,129)
TNT1 A 1 A_SpawnItemEx("BubbleFloodFXSpawner1",0,0,0,0,0,0,0,129)

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

actor BubbleFloodOutSound : BubbleFlood
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySoundEx("classes/FloodOut", "SoundSlot6")
stop
}
}

actor BubbleFloodFXSpawner
{
Height 0
Radius 0
- SOLID
+NOGRAVITY
+NOINTERACTION
+CLIENTSIDEONLY
//+NONETID
states
{
spawn5c:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,0,165,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",165,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,165,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,0,-165,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-165,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,-165,0,0,0,0,0,129)
spawn4c:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",105,105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",105,-105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-105,105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-105,-105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",105,105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",105,-105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-105,105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-105,-105,105,0,0,0,0,129)
spawn3c:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,0,90,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",90,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,90,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,0,-90,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-90,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",0,-90,0,0,0,0,0,129)
spawn2c:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",60,60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",60,-60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-60,60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-60,-60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",60,60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",60,-60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-60,60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX3",-60,-60,60,0,0,0,0,129)
spawn1c:
TNT1 A 0
stop

spawn5b:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,0,165,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",165,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,165,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,0,-165,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-165,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,-165,0,0,0,0,0,129)
spawn4b:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",105,105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",105,-105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-105,105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-105,-105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",105,105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",105,-105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-105,105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-105,-105,105,0,0,0,0,129)
spawn3b:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,0,90,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",90,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,90,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,0,-90,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-90,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",0,-90,0,0,0,0,0,129)
spawn2b:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",60,60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",60,-60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-60,60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-60,-60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",60,60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",60,-60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-60,60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX2",-60,-60,60,0,0,0,0,129)
spawn1b:
TNT1 A 0
stop

spawn5a:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,0,165,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",165,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,165,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,0,-165,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-165,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,-165,0,0,0,0,0,129)
spawn4a:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",105,105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",105,-105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-105,105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-105,-105,-105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",105,105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",105,-105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-105,105,105,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-105,-105,105,0,0,0,0,129)
spawn3a:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,0,90,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",90,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,90,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,0,-90,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-90,0,0,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",0,-90,0,0,0,0,0,129)
spawn2a:
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",60,60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",60,-60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-60,60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-60,-60,-60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",60,60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",60,-60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-60,60,60,0,0,0,0,129)
TNT1 A 0 A_SpawnItemEx("BubbleFloodFX1",-60,-60,60,0,0,0,0,129)
spawn1a:
TNT1 A 0
stop
}
}

actor BubbleFloodFXSpawner1 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMA",0,0,0,0,0,0,0,129)
goto Spawn1a
}
}

actor BubbleFloodFXSpawner2 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMB",0,0,0,0,0,0,0,129)
goto Spawn1b
}
}

actor BubbleFloodFXSpawner3 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMC",0,0,0,0,0,0,0,129)
goto Spawn2c
}
}

actor BubbleFloodFXSpawner4 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMD",0,0,0,0,0,0,0,129)
goto Spawn2a
}
}

actor BubbleFloodFXSpawner5 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXME",0,0,0,0,0,0,0,129)
goto Spawn3b
}
}

actor BubbleFloodFXSpawner6 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMF",0,0,0,0,0,0,0,129)
goto Spawn3c
}
}

actor BubbleFloodFXSpawner7 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMG",0,0,0,0,0,0,0,129)
goto Spawn4a
}
}

actor BubbleFloodFXSpawner8 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXMH",0,0,0,0,0,0,0,129)
goto Spawn4b
}
}

actor BubbleFloodFXSpawnerF1 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXM3",0,0,0,0,0,0,0,129)
goto Spawn5c
}
}

actor BubbleFloodFXSpawnerF2 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXM1",0,0,0,0,0,0,0,129)
goto Spawn5a
}
}

actor BubbleFloodFXSpawnerF3 : BubbleFloodFXSpawner
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("BubbleFloodFXM2",0,0,0,0,0,0,0,129)
goto Spawn5b
}
}

actor BubbleFloodFX1 : BubbleFloodFXSpawner
{
scale 2.5
RenderStyle "Translucent"
Alpha 0.3
+CLIENTSIDEONLY
states
{
Spawn:
BUBA G 0
BUBA G 1
stop
}
}

actor BubbleFloodFX2 : BubbleFloodFX1
{
states
{
Spawn:
BUBA H 0
BUBA H 1
stop
}
}

actor BubbleFloodFX3 : BubbleFloodFX1
{
states
{
Spawn:
BUBA I 0
BUBA I 1
stop
}
}

actor BubbleFloodFXM1 : BubbleFloodFX1{}
actor BubbleFloodFXM2 : BubbleFloodFX2{}
actor BubbleFloodFXM3 : BubbleFloodFX3{}

actor BubbleFloodFXMA : BubbleFloodFXM1{Alpha 0.06}
actor BubbleFloodFXMB : BubbleFloodFXM2{Alpha 0.09}
actor BubbleFloodFXMC : BubbleFloodFXM3{Alpha 0.12}
actor BubbleFloodFXMD : BubbleFloodFXM1{Alpha 0.15}
actor BubbleFloodFXME : BubbleFloodFXM2{Alpha 0.18}
actor BubbleFloodFXMF : BubbleFloodFXM3{Alpha 0.21}
actor BubbleFloodFXMG : BubbleFloodFXM1{Alpha 0.24}
actor BubbleFloodFXMH : BubbleFloodFXM2{Alpha 0.27}

actor BubbleFloodPickup : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerFlood",1,"Pickup2")
TNT1 A 0 A_GiveInventory("FloodEnter")
TNT1 A 0 A_SpawnItemEx("FloodExitChecker")
Pickup2:
TNT1 A 0 A_GiveInventory("PowerFlood")
stop
}
}

actor IsUnderBubbleWater : IsUnderWater {}

actor FloodExitChecker
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
states
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_JumpIfInTargetInventory("PowerFlood",1,"Spawn")
TNT1 A 0 A_GiveToTarget("FloodExit")
stop
}
}

actor FloodEnter : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_GiveInventory("IsUnderBubbleWater")
TNT1 A 0 ACS_ExecuteAlways(212,0,1)
stop
}
}

actor FloodExit : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("IsUnderBubbleWater")
TNT1 A 0 ACS_ExecuteAlways(212,0,2)
stop
}
}

actor PowerFlood : PowerSpeed
{
powerup.duration 3
Speed 0.8
+POWERSPEED.NOTRAIL
}
