actor TidalBulwarkWep_NormalBar : NormalBar { args 196,117}
actor TidalBulwarkWep_ScriptBar : ScriptBar {}

actor TidalBulwarkWep : BaseMM8BDMWep
{
Inventory.Pickupmessage "$PU_TIDALBULWARK"
Weapon.AmmoUse 14
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "$OB_TIDALBULWARK"
Tag "$TAG_TIDALBULWARK"
weapon.ammotype "TidalBulwarkAmmo"
inventory.icon "TBULICON"
States
{
SpawnLoop:
TBUL Z -1
loop
Ready:
TBUH A 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_TIDALBULWARK)
ReadyC:
TBUH A 0 A_JumpIfInventory("TidalBulwarkCheck",1,"ShieldActivateSwitch")
TBUH A 1 A_WeaponReady
Goto Ready+1
ShieldActivateSwitch:
TBUH IJ 2 A_WeaponReady(WRF_NOFIRE)
TBUH K 5 A_WeaponReady(WRF_NOFIRE)
goto ShieldActive
Deselect:
TBUH A 0
goto DeselectSwap
Select:
TBUH A 0
goto SelectSwap
Fire:
TBUH A 0 A_JumpIfInventory("IsBot",1,"BotFire")
TBUH A 0 A_JumpIfInventory("TidalBulwarkParry",1,"ShieldActive")
TBUH A 0 A_JumpIfInventory("TidalBulwarkCheck",1,"ShieldEnd")
TBUH A 0 A_JumpIfNoAmmo("NoAmmo")
TBUH A 2 A_GiveInventory("ShieldCheck",1)
TBUH A 0 A_TakeInventory("ShieldCheck",1)
TBUH A 0 A_GiveInventory("TidalBulwark_P",1)
goto ShieldActivate
ShieldActivate:
TBUH IJ 2
TBUH K 5
ShieldActive:
TBUH K 1 A_WeaponReady
TBUH K 0 A_JumpIfInventory("TidalBulwarkCheck",1,"ShieldActive")
Goto ShieldEnd
ShieldEnd:
TBUH K 0 
TBUH JJIIAA 1 A_GiveInventory("TidalBulwarkTake_P",1)
TBUH A 4
Goto Ready+1
NoAmmo:
TBUH A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
Altfire:
TBUH K 0 A_JumpIfInventory("ShieldCheck",1,"ShieldEnd")
goto Super::Altfire


BotFire:
TBUH A 0 A_JumpIfInventory("TidalBulwarkCheck",1,"BotFireBuster")
TBUH A 0 A_JumpIfInventory("TidalBulwarkParry",1,"BotFireBuster")
goto Fire+1
BotFireBuster:
BUST E 0 A_JumpIfInventory("IsSpecialBot", 1 ,"MegaWaterSBot")
BUST E 0 A_JumpIfInventory("BotUsesRandomWeps", 1 ,"GiveEddieWeapon")
BUST B 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_MEGABUSTER)
BUST B 0 A_PlaySoundEx("weapons/busters/megabusterfire","SoundSlot6")
BUST B 0 A_FireCustomMissile("MegaShot",0,0,8,0)
BUST CD 3
BUST B 2
BUST B 0 A_JumpIfInventory("TidalBulwarkCheck",1,3)
BUST B 0 A_JumpIfInventory("TidalBulwarkParry",1,2)
BUST B 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_TIDALBULWARK)
BUST B 0 A_Refire
goto Ready

MegaWaterSBot:
BUST B 0 A_GiveInventory("WaterWaveWep")
BUST B 0 A_SelectWeapon("WaterWaveWep")
goto Ready
GiveEddieWeapon:
BUST B 0 A_GiveInventory("BotRandomWeapon")
goto BotFireBuster+2
}
}

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

actor TidalBulwarkCheck : Inventory
{
inventory.amount 1
inventory.maxamount 130
}

actor TidalBulwark_P : CustomInventory
{
States
{
Pickup:
TBUH A 0 A_GiveInventory("TidalBulwarkCheck",130)
TBUH A 0 A_PlaySoundEX("weapon/tidalbulwarkspawn","Weapon")
TBUH A 0 A_TakeInventory("TidalBulwarkAmmo",14,TIF_NOTAKEINFINITE)
TBUH A 0 A_SpawnItemEx("TidalBulwarkWatcher")
TBUH A 0 A_SpawnItemEx("TidalBulwarkWarper")
TBUH A 0 A_GiveInventory("TidalBulwarkParry",1)
stop
}
}

actor TidalBulwarkTake_P : CustomInventory
{
States
{
Pickup:
TBUH A 0 A_TakeInventory("TidalBulwarkCheck",999)

stop
}
}
actor TidalBulwarkWatcher
{
+MISSILE
+NOINTERACTION
+DONTBLAST
+NOGRAVITY
-SOLID
Height 1
Radius 1
States
{
Spawn:
TNT1 A 0
TNT1 AA 1
TNT1 A 0 A_TakeFromTarget("TidalBulwarkCheck",1)
TNT1 A 0 A_JumpIfInTargetInventory("ShieldCheck", 1, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("TidalBulwarkCheck",1,"Spawn")
Goto Death
Death:
TNT1 A 0 A_GiveToTarget("TidalBulwarkBreak_P",1)
stop
}
}

actor TidalBulwarkBreak_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("TidalBulwarkCheck",999)
TNT1 A 0 A_GiveInventory("TidalBulwarkBlaster_P",1)
TNT1 A 0 A_PlaySoundEx("weapon/tidalbulwarkpop","body")
stop
}
}

actor TidalBulwarkWarper : BasicShieldWarper
{
renderstyle translucent
alpha 0.5
scale 2.0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("MM8BDMProjSpawnFuncClient",1)
TNT1 A 1
TNT1 A 0 ACS_NamedExecuteAlways("enc_shieldwarper_tidal",0)
TNT1 A 0 A_Jump(256,"Shield")
Goto Shield
Shield:
MWSZ PPPQQQ 1 A_Warp(AAPTR_TARGET,0,0,-4,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
loop
}
}

actor TidalBulwarkParry : Powerup {powerup.duration 10}

actor TidalBulwarkBoost : PowerSpeed
{
powerup.duration 70
powerup.strength 1.5
}

actor TidalBulwarkBlaster_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("TidalBulwarkBlast",0,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/tidalbulwarkwave","body")
stop
}
}

actor TidalBulwarkBlast : BasicProjectile
{
PROJECTILE
+NOINTERACTION
Obituary "$OB_TIDALBULWARK"
Damagetype "TidalBulwark"
damage (0)
speed 0
radius 16
height 16
Scale 5.0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",25),256,0,0,128)
TNT1 AAAAAAA 0 A_SpawnItemEx("TidalBulwarkWaterSplash",0,0,0,random(40,60),0,0,random(-180,0),1)
TNT1 AAAAAAA 0 A_SpawnItemEx("TidalBulwarkWaterSplash",0,0,0,random(40,60),0,0,random(0,180),1)
TNT1 A 35 
stop
}
}

actor TidalBulwarkWaterSplash
{
PROJECTILE
+CLIENTSIDEONLY
+THRUACTORS
-NOGRAVITY
States
{
Spawn:
TBUL A 0
TBUL ABC 2
stop
}
}