actor IceShieldWep_NormalBar : NormalBar{args 203, 206}
actor IceShieldWep_ScriptBar : ScriptBar{}
actor IceShieldWep : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "$OB_ICESHIELD"
Inventory.Pickupmessage "$PU_ICESHIELD" 
Tag "$TAG_ICESHIELD"
weapon.ammotype "IceShieldAmmo"
inventory.icon "ICSHICON"
Scale 2.0
States
{
SpawnLoop: 
ICSH I 1
loop
Ready: 
ICSW A 0
ICSW A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_ICESHIELD) 
ICSW A 1 A_WeaponReady
Goto Ready+2
ReadyC: Goto Ready+2
Deselect:
ICSW A 0 A_JumpIfInventory("ShieldCheck",1,"ShieldThrow")
ICSW A 0
Goto DeselectSwap
Select: 
ICSW A 0
goto SelectSwap
Fire:
ICSW A 0 A_JumpIfInventory("ShieldCheck",1,"ShieldThrow")
ICSW A 0 A_JumpIfNoAmmo("NoAmmo")
ICSW A 0 //A_TakeInventory("IceShieldAmmo",1,TIF_NOTAKEINFINITE)
ICSW A 0 A_PlaySoundEx("weapon/rokkoiceshield","Weapon")
ICSW A 1 A_GiveInventory("ShieldCheck",1)
ICSW A 0 A_GunFlash
goto ShieldActive
Altfire:
ICSW K 0 A_JumpIfInventory("ShieldCheck",1,"ShieldThrow")
goto Super::Altfire

ShieldActive:
ICSW A 0 A_SpawnItemEx("W_IceShieldWarper",0,0,0,0,0,0,60 * 0)
ICSW A 0 A_SpawnItemEx("W_IceShieldWarper",0,0,0,0,0,0,60 * 1)
ICSW A 0 A_SpawnItemEx("W_IceShieldWarper",0,0,0,0,0,0,60 * 2)
ICSW A 0 A_SpawnItemEx("W_IceShieldWarper",0,0,0,0,0,0,60 * 3)
ICSW A 0 A_SpawnItemEx("W_IceShieldWarper",0,0,0,0,0,0,60 * 4)
ICSW A 0 A_SpawnItemEx("W_IceShieldWarper",0,0,0,0,0,0,60 * 5)
ICSW AB 2
TNT1 A 0 A_SpawnItemEx("W_IceShieldRadius",0,0,28)
ICSW BC 2 
TNT1 A 0 A_SpawnItemEx("W_IceShieldRadius",0,0,28)
ICSW CC 2 
TNT1 A 0 A_SpawnItemEx("W_IceShieldRadius",0,0,28)
ICSW C 2
ShieldLoop:
ICSW C 1 A_WeaponReady
TNT1 A 0 A_JumpIfNoAmmo("ShieldThrow")
loop
ShieldThrow:
ICSW A 0 A_TakeInventory("ShieldCheck",999)
ICSW A 0 A_PlaySoundEx("weapon/rokkoiceshieldfire","Weapon")
ICSW A 1 A_FireCustomMissile("W_IceShieldProjectile",0,0,0,0)
ICSW BB 1
ICSW C 22
ICSW A 2
goto Ready+2
NoAmmo: 
ICSW A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+2
Flash:
TNT1 A 0 A_GiveInventory("W_IceShieldInventory",1)
TNT1 A 1 A_GiveInventory("IceShield_W",1)
TNT1 A 0 A_JumpIf(z-floorz!=0,2)
TNT1 A 1 A_ChangeVelocity((momx)*1.085,(momy)*1.085,(momz),CVF_REPLACE)
goto FlashCheck
TNT1 A 1 A_ChangeVelocity((momx)*1.075,(momy)*1.075,(momz),CVF_REPLACE)
goto FlashCheck
FlashCheck:
TNT1 A 0 A_JumpIfInventory("ShieldCheck", 1, "Flash")
stop
}
}

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

Actor W_IceShieldInventory : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("IceShieldDelay",1,"Nope")
TNT1 A 0 A_SpawnItemEx("W_IceShieldRadius",0,0,28)
TNT1 A 0 A_TakeInventory("IceShieldAmmo",1,TIF_NOTAKEINFINITE)
TNT1 A 0 A_GiveInventory("IceShieldDelay",1)
stop
Nope:
TNT1 A 0
stop
}
}


actor IceShieldLaunch_FX_1 : BasicGraphicEffect
{
scale 2.75
states
{
SpawnFrame:
ICSP A 1 bright
stop
}
}

Actor IceShieldLaunch_FX_2 : IceShieldLaunch_FX_1
{states{SpawnFrame:
ICSP B 1 bright
stop}}

Actor IceShieldLaunch_FX_3 : IceShieldLaunch_FX_1
{states{SpawnFrame:
ICSP C 1 bright
stop}}

Actor IceShieldLaunch_FX_4 : IceShieldLaunch_FX_1
{states{SpawnFrame:
ICSP D 1 bright
stop}}

Actor IceShieldLaunch_FX_5 : IceShieldLaunch_FX_1
{states{SpawnFrame:
ICSP E 1 bright
stop}}

Actor IceShieldLaunch_FX_6 : IceShieldLaunch_FX_1
{states{SpawnFrame:
ICSP F 1 bright
stop}}

actor IceShieldDelay : PowerUp {powerup.duration 6}

actor IceShield_W : PowerProtection
{
powerup.duration 16
damagefactor "Normal", 0.85001
}


actor W_IceShieldRadius : BasicExplosion
{
+DONTSPLASH
+NOGRAVITY
+MISSILE
+SKYEXPLODE
+NOINTERACTION
+NOCLIP
+DONTBLAST
Damagetype "IceShield"
Obituary "$OB_ICESHIELD"
Damage 0
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(CallACS("vile_cbm_damage",8),100,0,0,100)
stop
}
}

actor W_IceShieldWarper : BaseShieldWarper
{
translation "73:73=206:206"
	+BRIGHT
	States
	{
	Shield:
	ICSP GGGGHHHHGGGGIIII 1 A_Warp(AAPTR_TARGET, 64, 0, 32, 12, WARPF_USECALLERANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
	loop
	}
}

actor W_IceShieldProjectile : BasicProjectile
{
translation "73:73=206:206"
-SOLID
Projectile
+NOGRAVITY
//renderstyle none
damagetype "IceShield"
Obituary "$OB_ICESHIELD"
Damage (CallACS("vile_cbm_damage",37))
Height 12
Radius 32
+MISSILE
SPEED 40
var int user_spd;
states
{
Spawn:
TNT1 A 0
TNT1 A 0 //A_SpawnItemEx("IceShieldLaunch_RC",0,0,0,0,0,0,0,SXF_SETMASTER)
Chase:
TNT1 A 0 A_SetuserVar("user_spd", 35)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_1", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)

TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_2", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)

TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_3", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)

TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_4", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)

TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_5", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)

Spawn2:
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_6", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 0, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_6", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 60, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_6", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 120, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_6", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 180, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_6", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 240, 1)
TNT1 A 0 A_SpawnItemEx("IceShieldLaunch_FX_6", 12 + (user_spd * 1), 0, 0, 0, 0, 0, 300, 1)
TNT1 A 0 A_SetAngle(angle + 12)
TNT1 A 1 A_Warp(AAPTR_MASTER, 0, 0, 0, 0, WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
loop
}
}
