actor TundraStormWep_NormalBar : NormalBar{args 196, 58}
actor TundraStormWep : BaseMM8BDMWep
{
Weapon.AmmoUse 7
Weapon.AmmoGive 28
Weapon.SlotNumber 6
Inventory.Pickupmessage "$PU_TUNDRASTORM"
Obituary "$OB_TUNDRASTORM"
Tag "$TAG_TUNDRASTORM"
weapon.ammotype "TundraStormAmmo"
inventory.icon "TSTOICON"
States
{
SpawnLoop:
11WP E 1
loop
Ready:
TSTO A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_TUNDRASTORM)
TSTO A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
TSTO A 0
goto DeselectSwap
Select:
TSTO A 0
goto SelectSwap
Fire:
TSTO A 0 A_JumpIfNoAmmo("NoAmmo")
TSTO A 0 A_JumpIfInventory("TundraStormCooldown",1,"NoAmmo")
TSTO A 0 A_PlaySoundEx("weapon/tundrastorm","Weapon")
TSTO BBCC 1 //A_Stop
TSTO D 0 A_GiveInventory("TakeTundraStormAmmo",1)
TSTO D 0 A_SpawnItemEx("TundraStorm") // Not fucking chancing this. //A_FireCustomMissile("TundraStorm",0,1,0,0)
Goto Continue
Continue:
TSTO D 0 A_JumpIfInventory("TundraSpinTimer",32,"RotateFinish")
TSTO D 0 ACS_NamedExecute("vile_statechange",0,2)
TSTO D 0 A_Stop
TSTO D 1 Offset(-3,0) ThrustThingZ(0,10,0,0)
TSTO D 0 A_JumpIfInventory("TundraSpinTimer",32,"RotateFinish")
TSTO D 0 ACS_NamedExecute("vile_statechange",0,2)
TSTO D 0 A_Stop
TSTO D 1 Offset(-3,0) ThrustThingZ(0,10,0,0)
TSTO D 0 A_GiveInventory("TundraSpinTimer",4)
TSTO D 0 A_JumpIfInventory("TundraSpinTimer",32,"RotateFinish")
TSTO D 0 ACS_NamedExecute("vile_statechange",0,2)
TSTO D 0 A_Stop
TSTO D 1 Offset(3,0) ThrustThingZ(0,10,0,0)
TSTO D 0 A_JumpIfInventory("TundraSpinTimer",32,"RotateFinish")
TSTO D 0 ACS_NamedExecute("vile_statechange",0,2)
TSTO D 0 A_Stop
TSTO D 1 Offset(3,0) ThrustThingZ(0,10,0,0)
TSTO D 0 A_GiveInventory("TundraSpinTimer",4)
loop
RotateFinish:
TSTO E 0 A_WeaponReady(14)
TSTO F 0 A_GiveInventory("TundraSpinTimer",16)
TSTO E 0 A_Stop
TSTO E 1 ThrustThingZ(0,10,0,0)
TSTO F 0 A_GiveInventory("TundraSpinTimer",24)
TSTO F 0 A_Stop
TSTO F 1 ThrustThingZ(0,10,0,0)
TSTO F 0 A_GiveInventory("TundraSpinTimer",32)
TSTO G 0 A_Stop
TSTO G 1 ThrustThingZ(0,10,0,0)
TSTO H 1 ThrustThingZ(0,70,0,0)
TSTO F 0 A_GiveInventory("TundraSpinEnd")
TNT1 AAAAAAA 1 
TSTO CCBB 1 
TSTO A 20 
TSTO F 0 A_TakeInventory("TundraSpinTimer",999)
TSTO A 0 A_GiveInventory("TundraStormCooldown",1)
Goto Ready+1
NoFire:
TSTO A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
NoAmmo:
TSTO A 1 ACS_NamedExecute("core_noammo",0)
Goto Ready+1
}
}
actor TundraStormCooldown : Powerup {Powerup.Duration 20}

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

actor TakeTundraStormAmmo : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_TakeInventory("TundraStormAmmo", 7, TIF_NOTAKEINFINITE)
stop
}
}


actor TundraStormProtect : PowerProtection
{
Powerup.Duration 5
damagefactor "TundraStorm", 0.0
}

actor TundraStormWindDamager : BasicProjectile
{
PROJECTILE
Obituary "$OB_TUNDRASTORM"
damagetype "TundraStorm"
+NOTIMEFREEZE
//+FLOORHUGGER
+THRUGHOST
+NOCLIP
+DONTSPLASH
+OLDRADIUSDMG
damage (0)
Radius 20
Height 20
reactiontime 16
scale 2.5
speed 0
States
{
Spawn:
TNT1 A 0
SpawnLOOP:
TNT1 A 0 A_CountDown
TNT1 A 1 A_Explode(CallACS("vile_cbm_damage",4),180,0,0,180)
TNT1 A 1 A_FadeOut(0.1)
Goto Death
Death:
TSTO N 0 A_Stop
stop
}
}
/*
actor TundraStormWindDamager2 : BasicProjectile
{
PROJECTILE
Obituary "$OB_TUNDRASTORM"
damagetype "TundraStorm"
+DONTSPLASH
+DONTBLAST
+THRUGHOST
+RIPPER
Damage (4)
Radius 150
Height 16
	var int user_PierceRipper;
Speed 0
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(z-ceilingz > 64, "CeilingCheck")
TNT1 A 0 A_SpawnItemEx("TundraStormWindDamager2", 0, 0, 64)
goto Death
CeilingCheck:
TNT1 A 0 A_JumpIf(z-ceilingz > 8, "Death")
TNT1 A 0 A_SpawnItemEx("TundraStormWindDamager2", 0, 0, -(z-ceilingz))
goto Death
Death:
TNT1 A 1 A_SpawnItemEx("IcePitFreeze")
TNT1 A 0 
TNT1 A 1
stop
}
}
*/
actor TundraWind : BasicGraphicEffect
{
+NOTIMEFREEZE
+NOGRAVITY
//PROJECTILE
+RIPPER
Radius 1
Height 1
damagetype "TundraStorm"
Obituary "$OB_TUNDRASTORM"
Damage(0)
Scale 4
Speed 0
States
{
SpawnFrame:
TNT1 A 0 A_JumpIfInventory("TundraWindTimer",7,"Death")
TSTO MNO 1
TNT1 A 0 A_GiveInventory("TundraWindTimer",1)
loop
Death:
TNT1 F 1
TNT1 F 0 A_TakeInventory("TundraWindTimer",100)
stop
}
}

actor ExpandedTundraWind : BasicGraphicEffect
{
+NOTIMEFREEZE
PROJECTILE
+NOINTERACTION
Radius 1
Height 1
damagetype "TundraStorm"
Obituary "$OB_TUNDRASTORM"
Damage(0)
Scale 8
Speed 0
States
{
SpawnFrame:
TNT1 A 0 A_JumpIfInventory("TundraFadeTimer",8,"End")
TSTO M 2 A_Fadeout(0.125)
TSTO N 2 A_Fadeout(0.125)
TSTO O 2 A_Fadeout(0.125)
TNT1 A 0 A_GiveInventory("TundraFadeTimer",1)
loop
End:
TNT1 A 1
TNT1 A 0 A_TakeInventory("TundraFadeTimer",100)
stop
}
}

actor TundraSpinTimer : Inventory
{
inventory.amount 1
inventory.maxamount 72
}

actor TundraWindTimer : Inventory
{
inventory.amount 1
inventory.maxamount 7
}

actor TundraFadeTimer : Inventory
{
inventory.amount 1
inventory.maxamount 8
}

actor TundraSpinEnd : powerup
{
powerup.duration 5
}

actor TundraStorm : BasicProjectile
{
speed 0
+NOTIMEFREEZE
+THRUACTORS
reactiontime 20
renderstyle translucent
scale 5
alpha 0.6
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("LoadingStormSpawner1")
TNT1 A 0 A_SpawnItemEx("LoadingStormSpawner2")
TNT1 A 0 //A_ChangeFlag("FloorHugger",TRUE)
SpawnLoop:
TSTO A 0 A_Countdown
TSTO MMNNOO 1 A_JumpIfInTargetInventory("TundraSpinEnd",1,"Death")
loop
Death:
TSTO MMNNOO 1 A_Fadeout(.1)
loop
}
}

actor LoadingStormSpawner1 : BasicFastProjectile
{
+SKYEXPLODE
+NOCLIP
+NOTIMEFREEZE
speed 0
states
{
Spawn:
TNT1 A 0
SpawnLoop:
TNT1 A 0 A_JumpIfInTargetInventory("TundraSpinEnd",1,"Death")
TNT1 A 0 A_SpawnItemEx("LoadingStorm")
TNT1 AA 1 ThrustThingZ(0,50,0,0)
loop
Death:
TNT1 A 0
stop
}
}

actor LoadingStormSpawner2 : LoadingStormSpawner1
{
+SKYEXPLODE
speed 0
states
{
Spawn:
TNT1 A 0
SpawnLoop:
TNT1 A 0 A_JumpIfInTargetInventory("TundraSpinEnd",1,"Death")
TNT1 A 0 A_SpawnItemEx("LoadingStorm2")
TNT1 AA 1 ThrustThingZ(0,50,1,0)
loop
}
}

actor LoadingStorm : BasicProjectile
{
var int user_angle;
var int user_spread;
var int user_dir;
+NOTIMEFREEZE
speed 0
reactiontime 20
damagetype "TundraStorm"
Obituary "$OB_TUNDRASTORM"
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_angle",random(0,359))
TNT1 A 0 A_SetUserVar("user_dir",0)
SpawnLoop:
TNT1 A 0 A_SetUserVar("user_spread",CallACS("vile_tundrastormspread"))
TNT1 A 0 A_SpawnItemEx("TundraStorm_Flake",100+user_spread,0,0,0,0,15-(user_dir*30),user_angle)
TNT1 A 0 A_SpawnItemEx("TundraStorm_Flake",-100-user_spread,0,0,0,0,15-(user_dir*30),user_angle)
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",10),100+user_spread,0,0,100)
TNT1 A 1 A_SetUserVar("user_angle",user_angle+20)
TNT1 A 0 A_JumpIfInTargetInventory("TundraSpinEnd",1,"SpawnEnd")
loop
SpawnEnd:
TNT1 A 0 A_SetUserVar("user_spread",CallACS("vile_tundrastormspread"))
TNT1 A 0 ThrustThingZ(0,75,user_dir,0)
SpawnEndLoop:
TNT1 A 0 A_SpawnItemEx("TundraStorm_Flake",100+user_spread,0,0,0,5,0,user_angle)
TNT1 A 0 A_SpawnItemEx("TundraStorm_Flake",-100-user_spread,0,0,0,5,0,user_angle)
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",7),100+user_spread,0,0,100)
TNT1 A 1 A_SetUserVar("user_angle",user_angle+20)
TNT1 A 0 A_SetUserVar("user_spread",user_spread+5)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor LoadingStorm2 : LoadingStorm
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_angle",random(0,359))
TNT1 A 0 A_SetUserVar("user_dir",1)
goto Super::SpawnLoop
}
}

actor TundraStorm_Flake : BasicGraphicEffect
{
+NOTIMEFREEZE
states
{
SpawnFrame:
ICEB Z 1 
MRFB UVWXYZ 1 
stop
Death:
TNT1 A 0
stop
}
}