actor BarrierWindWep_NormalBar : NormalBar{args 4, 248}
actor BarrierWindWep : BaseMM8BDMWep
{
//$Category MM8BDME-Weapons
//$Title Barrier Wind
Weapon.AmmoUse 3
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Inventory.Pickupmessage "$PU_BARRIERWIND"
Obituary "$OB_BARRIERWIND"
Tag "$TAG_BARRIERWIND"
weapon.ammotype "BarrierWindAmmo"
inventory.icon "BWINICON"
States
{
SpawnLoop:
BWIN A 1
loop
Ready:
BWIN I 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_BARRIERWIND)
BWIN I 1 A_WeaponReady
Goto Ready+1
ReadyC:
Goto Ready+1
Deselect:
BWIN I 0
goto DeselectSwap
Select:
BWIN I 0
goto SelectSwap
Fire:
BWIN I 0 A_JumpIfInventory("IsSpecialBot", 1 ,"AirconManCheck")
BWIN I 0 A_JumpIfNoAmmo("NoAmmo")
BWIN I 0 A_PlaySoundEx("weapon/bwindjet", "weapon")
BWIN J 4 A_FireCustomMissile("BarrierWindBlocker",0,1,0,-20)
BWIN JJKK 4
BWIN I 18
Goto Ready+1

AirconManCheck:
BWIN A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_radiuspull", 0, 400, 0)>0, 3)
BWIN A 1 A_GiveInventory("WindCycloneWep",1)
BWIN A 1 A_SelectWeapon("WindCycloneWep")
BWIN A 1 
Goto Fire+1

NoAmmo:
BWIN I 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}

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

actor ImABarrierWindBlocker : Once {}

actor BarrierWindBlocker
{
+MISSILE
+THRUGHOST
+SEEKERMISSILE
+RIPPER
+DONTBLAST
+DONTRIP
//+SHOOTABLE
+DONTDRAIN
+NOGRAVITY
+THRUSPECIES
+USEDAMAGEEVENTSCRIPT
+REFLECTIVE
+NOTARGETSWITCH
+DONTREFLECT
+BOUNCEONFLOORS
BounceFactor 0.8
+BOUNCEONWALLS
WallBounceFactor 0.1
var int user_PierceRipper;
damagetype "BarrierWind"
Obituary "$OB_BARRIERWIND"
RenderStyle "Translucent"
Alpha 0.90
scale 2.5
Species "BarrierWindBlocker"
health 9999
painchance 999
Height 48
Radius 20
Damage (CallACS("vile_cbm_damage",30))
Speed 50
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveInventory("ImABarrierWindBlocker")
TNT1 A 0 A_ChangeFlag("SHOOTABLE",true)
TNT1 A 0 A_GiveInventory("ProjTeamColor1Server",1)
TNT1 A 0 ACS_NamedExecuteAlways("core_targetyawpitch", 0, 0)
BWIN BCDCBCD 4 A_GiveInventory("BarrierWindBlockerMove_P")
goto Death
Repeat:
BWIN B 0 A_SpawnItemEx("BarrierWindSmoke", 8, random(-8, 8), random(16, 32), 0, 0, 0, 0)
BWIN BCDCBCD 4 A_GiveInventory("BarrierWindBlockerMove_P")
goto Death
Death:
BWIN EF 2 A_SpawnItemEx("PropBlowerEffect")
stop

Pain:
BWIN CCCCCC 0 A_SeekerMissile (1, 90, SMF_LOOK|SMF_PRECISE|SMF_CURSPEED, 256, 40)
BWIN C 0 ACS_NamedExecuteWithResult("core_predicthome", 35, AAPTR_TRACER, 2)
BWIN C 0 A_ChangeVelocity(cos(pitch)*35, 0, sin(-pitch)*35, CVF_RELATIVE|CVF_REPLACE)
BWIN C 2 A_PlaySound("misc/rathorfire")
goto Repeat
}
}

actor BarrierWindBlockerMove_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect") 
TNT1 A 0 A_ScaleVelocity(0.5)
stop
}
}

actor BarrierWindDeflect : CustomInventory
{
States
{
Pickup:
//TNT1 A 0 A_LogInt(tid)
TNT1 A 0 A_JumpIf(CallACS("vile_isprojectilecheck"),"DoNot")
TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
TNT1 A 0 A_RearrangePointers(AAPTR_Master,AAPTR_Null,AAPTR_Default)
TNT1 A 0 A_FaceTracer(0,180)
TNT1 A 0 A_ChangeVelocity(40,0,0,CVF_RELATIVE|CVF_REPLACE)
stop
DoNot:
TNT1 A 0
stop
}
}
actor BarrierWindDeflected : Once {}

actor BarrierWindSmoke : BasicGraphicEffect
{
Translation "213:213=4:4", "217:217=248:248"
+FORCEXYBILLBOARD
States
{
SpawnFrame:
WCYC LMNO 2
stop
}
}

//actor BarrierWindProtect : PowerProtection {damagefactor "BarrierWind", 0.0 powerup.duration 35}

actor BarrierWindKnockback : EncoreKnockbackHelper
{
Mass 12
Accuracy 10
}

actor HazardTag_BarrierWind : BasicACSDamager { damagetype "BarrierWind_Real" Obituary "$OB_BARRIERWIND" }
