
actor TornadoHoldBoss : BaseMM8BDMWep_CBM
{
Tag "$TAGC_8A"
dropitem "TemgumanDropX"
Weapon.AmmoUse 1
Weapon.AmmoGive 252
Weapon.AmmoUse2 100
Weapon.AmmoGive2 500
Obituary "$OB_TENGUSMASH"
Inventory.Pickupmessage "Are you worthy of my challenge?!"
weapon.ammotype "FeelMyPowerAmmo"
weapon.ammotype2 "DivineWindAmmo"
States
{
Spawn:
C_08 A 1
loop

Ready:
TGUH A 0 ACS_ExecuteAlways(998,0,DYE_TENGUMAN)
TGUH A 0 A_GunFlash
goto Ready1

Ready1: 
TGUH H 0 A_JumpIfInventory("DivineWindAmmo",100,"Ready2")
TGUH A 1 A_WeaponReady(WRF_NOSECONDARY)
TGUH A 0 A_GiveInventory("DivineWindAmmoRegenCheck",1)
loop
Ready2:
TGUH A 1 A_WeaponReady(WRF_ALLOWRELOAD) 
TGUH A 0 A_GiveInventory("DivineWindAmmoRegenCheck",1)
goto Ready1

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
TGUH A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
TGUH A 1 A_Raise
Loop
Fire:
TGUH H 0 A_PlaySoundEx("class/windstart","Weapon")
Hold.a:
TGUH H 0 A_TakeInventory("UnSolid",1)
TGUH H 1 A_ChangeFlag("SOLID",0)
TGUH H 0 A_Refire("Hold.b")
TGUH H 0
TGUH H 256 A_Jump(256,"Release")
//TGUB H 1 A_JumpIf(true,"Release")
wait
Hold.b:
TGUH H 0 A_TakeInventory("UnSolid",1)
TGUH H 1 A_ChangeFlag("SOLID",0)
TGUH H 0 A_Refire("Hold.c")
TGUH H 0
TGUH H 256 A_Jump(256,"Release")
//TGUB H 1 A_JumpIf(true,"Release")
wait
Hold.c:
TGUH H 0 A_TakeInventory("UnSolid",1)
TGUH H 1 A_ChangeFlag("SOLID",0)
TGUH H 0 A_Refire("Hold2")
TGUH H 0
TGUH H 256 A_Jump(256,"Release")
//TGUB H 1 A_JumpIf(true,"Release")
wait
Hold2:
TGUH H 0 A_GiveInventory("TenguDashFlag",1)
TGUH H 1 A_GiveInventory("TengumanDash_P",1)
TGUH H 0 A_TakeInventory("FeelMyPowerAmmo",6)
TGUH H 0 A_JumpIfNoAmmo("Release")
TGUH H 0 A_Refire("Hold2")
TGUH H 0
TGUH H 256 A_Jump(256,"Release")
//TGUB H 1 A_JumpIf(true,"Release")
wait
Release:
TGUH I 0 A_TakeInventory("TenguDashFlag",1)
TGUH I 0 A_PlaySoundEx("weapon/slashclaw","Weapon")
TGUH I 0 A_GiveInventory("TemgumanMain_CI",1)
TGUH I 3
TGUH J 1
TGUH J 1 Offset(12,40)
TGUH J 7 Offset(26,50)
TGUH J 0 A_SpawnItemEx("ResolidifyPlayer_H")
TGUH J 18 Offset(26,50)//Offset(33,62)
TGUH J 2 Offset(16,44)
TGUH J 2 Offset(6,37)
TGUH J 2 Offset(-5,35)
TGUH A 2 Offset(39,26)
TGUH A 2 Offset(26,26)
TGUH A 2 Offset(13,29)
TGUH A 0 A_ClearRefire
Goto Ready1

AltFire:
//TGUH A 0 A_JumpIfNoAmmo("NoAmmo")
TGUH C 0 A_GiveInventory("TemgumanAltPitch_P",1)
TGUH C 0 A_GiveInventory("VivifyDelay7",1)
//TGUH C 0 A_Refire(1)
//TGUH CDCB 3 //12
TGUH B 1 offset(-3,35)
TGUH B 1 offset(-8,40)
TGUH B 1 offset(-13,45)
TGUH B 2 offset(-18,50)
TGUH B 1 offset(-13,45)
TGUH B 1 offset(-8,40)
TGUH B 1 offset(-3,35)
TGUH B 17
TGUH EFGA 3
//TGUH A 0 A_ReFire
Goto Ready1

Reload:/*
TGUH H 0 A_JumpIfInventory("DivineWindAmmo",100,2)
TGUH A 1 A_JumpIf(true,"NoAmmo")
wait
TGUH B 1 A_JumpIf(true,"ReloadCont")
wait*/
ReloadCont:
TGUH I 0 A_PlaySoundEx("weapon/dustbit","Weapon")
TGUH C 0 A_GiveInventory("TengumanReload_CI",1)
TGUH C 0 A_GiveInventory("VivifyDelay7",1)
TGUH C 0 A_GiveInventory("A_TakeInventoryDivineWindAmmo100",1)
//TGUH C 0 A_Refire(1)//huh?? why???
//TGUH CDCB 3 //12
TGUH B 1 offset(-3,35)
TGUH B 1 offset(-8,40)
TGUH B 1 offset(-13,45)
TGUH B 2 offset(-18,50)
TGUH B 1 offset(-13,45)
TGUH B 1 offset(-8,40)
TGUH B 1 offset(-3,35) 
TGUH B 17
TGUH EFGA 3
TGUH A 0 A_Refire
Goto Ready1

NoAmmo:
TGUH A 0
Goto Ready1

/*Flash:
TNT1 A 0 A_JumpIfInventory("FeelMyPowerAmmo",1,"Flash1")
TNT1 A 0 A_JumpIf(z-floorz>0,"StartOver")
TNT1 A 1 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)
TNT1 A 0 A_GiveInventory("FeelMyPowerAmmo",4)
Flash1:
TNT1 A 0 A_JumpIfInventory("TenguDashFlag",1,"StartOver")
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,3)
TNT1 A 0 A_JumpIf(momz>=0,2)
TNT1 A 0 A_JumpIfInventory("TenguHoverFlag",1,"Hover")
TNT1 A 0 A_JumpIf(z-floorz>0,"StartOver")
TNT1 A 1 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)
TNT1 A 0 A_GiveInventory("FeelMyPowerAmmo",4)
loop
Hover:
TNT1 A 0 ThrustThingZ(0,3,1,0)
TNT1 A 0 A_TakeInventory("FeelMyPowerAmmo",1)
TNT1 A 1 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,2,1)
goto Flash
NoFlash:
TNT1 A 0
stop
StartOver:
TNT1 A 1 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)
goto Flash*/

Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_GiveInventory("TengumanFlashState_P",1)
loop
}
}

ACTOR DivineWindAmmoRegenCheck : CustomInventory
{
  States
  {
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("TenguWasThrusted",1,"NoGive") 
    TNT1 A 1 A_GiveInventory("DivineWindAmmo",4)
    Stop
  NoGive:
    TNT1 A 0 
    TNT1 A 1 
    Stop
  }
}

ACTOR A_TakeInventoryDivineWindAmmo100 : CustomInventory
{
  States
  {
  Pickup:
    TNT1 A 0 
    TNT1 A 1 A_TakeInventory("DivineWindAmmo",100)  
    Stop
  }
}

actor TemgumanDropX : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,1,2)
TNT1 A 1 A_SpawnItemEx("TornadoHoldWepCDropped")
stop
TNT1 A 1 A_SpawnItemEx("TenguBladeWepCDropped")
stop
}
}

actor FeelMyPowerAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 252
+INVENTORY.IGNORESKILL 
}

actor DivineWindAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 500
+INVENTORY.IGNORESKILL 
}

actor TenguHoverFlag : OnceC {}

actor TenguDashStartup : Inventory
{
inventory.amount 1
inventory.maxamount 3
}

actor TenguWasThrusted : OnceC {}

actor TenguIsHovering : Powerup
{
powerup.duration 9
}

actor TenguDashFlag : OnceC {}

actor TornadoThrusted : OnceC {}


actor TornadoHeldEnd : PowerDamage
{
powerup.duration 3
damagefactor "normal", 1.0
}

actor TornadoHeldSlow : PowerSpeed
{
Speed 0.75
powerup.duration 3
}


actor TengumanAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("FeelMyPowerAmmo",2)
stop
PickupR:
TNT1 A 0 A_GiveInventory("FeelMyPowerAmmo",4)
stop
}
}

actor TengumanFlashState_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("TenguDashFlag",1,"IsDashing")
TNT1 A 0 A_JumpIfInventory("TenguWasThrusted",1,"PickupAir")
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"GiveAmmo")
TNT1 A 0 A_JumpIfInventory("FeelMyPowerAmmo",1,"HoverCheck")
goto GiveAmmo
HoverCheck:
TNT1 A 0 A_JumpIfInventory("TenguHoverFlag",1,"HoverCheckFalling")
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_JAX_CHECK_JUMP)==1,"HoverCheckFalling")
goto GiveAmmo
HoverCheckFalling:
TNT1 A 0 A_JumpIf(momz<0,"Hover")
goto GiveAmmo

GiveAmmo:
TNT1 A 0 A_GiveInventory("TengumanAmmo_RC",1)
goto ResetSpeed

ResetSpeed:
TNT1 A 0 A_GiveInventory("EnvironmentGravity",1)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)
stop

IsDashing:
TNT1 A 0 A_GiveInventory("TenguWasThrusted",1)
goto ResetSpeed

Hover:
TNT1 A 0 A_GiveInventory("TenguIsHovering",1)
TNT1 A 0 A_GiveInventory("TenguWasThrusted",1)
TNT1 A 0 A_TakeInventory("FeelMyPowerAmmo",1,1)
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_ChangeVelocity(momx,momy,-0.5,CVF_REPLACE)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,2,1)
stop

FoundGround:
TNT1 A 0 A_TakeInventory("TenguWasThrusted",1)
goto Pickup+2

PickupAir:
TNT1 A 0 A_JumpIf(z-floorz<=0,"FoundGround")
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"TakeHover")
TNT1 A 0 A_JumpIfInventory("FeelMyPowerAmmo",1,"HoverCheck2")
goto TakeHover
HoverCheck2:
TNT1 A 0 A_JumpIfInventory("TenguHoverFlag",1,"HoverCheckFalling2")
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_JAX_CHECK_JUMP)==1,"HoverCheckFalling2")
goto TakeHover
HoverCheckFalling2:
TNT1 A 0 A_JumpIf(momz<0,"Hover")
goto TakeHover

TakeHover:
TNT1 A 0 A_TakeInventory("TenguIsHovering",1)
goto ResetSpeed
}
}

actor TengumanDash_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(pitch<345 && pitch>=270, "UpLimit")
//TNT1 A 0 A_JumpIf(pitch<315 && pitch>=270, "UpLimit")
//TNT1 A 0 A_JumpIf(pitch>45 && pitch<=90, "DownLimit")
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_ChangeVelocity(cos(pitch)*24,0,-sin(pitch)*24,3)
stop
PickupR:
TNT1 A 0 A_ChangeVelocity(cos(pitch)*32,0,-sin(pitch)*32,3)
stop

UpLimit:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"UpLimitR")
TNT1 A 0 A_ChangeVelocity(cos(345)*24,0,-sin(345)*24,3)
stop
UpLimitR:
TNT1 A 0 A_ChangeVelocity(cos(345)*32,0,-sin(345)*32,3)
stop

DownLimit:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"DownLimitR")
TNT1 A 0 A_ChangeVelocity(cos(45)*24,0,-sin(45)*24,3)
stop
DownLimitR:
TNT1 A 0 A_ChangeVelocity(cos(45)*32,0,-sin(45)*32,3)
stop
}
}


actor TenguHoverItem : BasicClassItem
{
inventory.pickupmessage "That ain't Falco."
inventory.icon "TenIcon"
Tag "$TAGC_HOVERTOGGLE"
states
{
Spawn:
TGUH X 1
loop
Use:
TNT1 A 0 A_PlaySoundEx("item/ItemUseMM9","SoundSlot7")
TNT1 A 0 A_JumpIfInventory("TenguHoverFlag",1,"Take")
TNT1 A 0 A_GiveInventory("TenguHoverFlag",1)
fail
Take:
TNT1 A 0 A_TakeInventory("TenguHoverFlag",999)
fail
}
}

actor TemgumanAltPitch_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 //A_JumpIf(ACS_NamedExecuteWithResult("cbm_RenderCheck")==0, "Pick_Software")
goto Pick_OpenGL
Pick_Software:
TNT1 A 0 A_JumpIf(pitch>47 && pitch<=55 && z-floorz<=0, "Pick_Pitch")
goto Pick_Norm
Pick_OpenGL:
TNT1 A 0 A_JumpIf(pitch>80 && pitch<=90 && z-floorz<=0, "Pick_Pitch")
goto Pick_Norm
Pick_Norm:
TNT1 A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
TNT1 A 0 A_GiveInventory("TemgumanAlt_CI",1)
stop
Pick_Pitch:
TNT1 A 0 A_PlaySoundEx("weapon/DustBit","Weapon")
TNT1 A 0 A_GiveInventory("TemgumanAlt2_CI",1)
stop
}
}

actor TenguSmash
{
Translation "192:192=4:4","198:199=112:112"
PROJECTILE
damagetype "TenguM_Slam"
Obituary "$OB_TENGUSMASH"
+DONTBLAST
+THRUACTORS
+NOEXPLODEFLOOR
damage (0)
Radius 2
Height 2
speed 40
scale 2.5
states
{
Spawn:
TGUH N 0
TGUH N 1
TGUH O 1 A_Explode(5,80,0,0,80)
TGUH O 0 A_SpawnItemEx("TenguSmash2",0,0,0,momx,momy,momz,0,9)
stop
}
}

actor TenguSmashB : TenguSmash{translation "192:192=205:205", "198:199=74:74"}
actor TenguSmashR : TenguSmash{translation "192:192=171:171", "198:199=41:41"}
actor TenguSmashO : TenguSmash{translation "192:192=104:104", "198:199=128:128"}
actor TenguSmashP : TenguSmash{translation "192:192=229:229", "198:199=232:232"}

actor TenguSmash2 : TenguSmash
{
damagetype "TenguM_Dunked"
states
{
Spawn:
TGUH P 0
TGUH PM 1 //A_Explode(10,80,0,0,8)
TGUH M 0 A_SpawnItemEx("DivineWind",0,0,0,momx,momy,momz,0,9)
TGUH M 0 
stop
}
}

// [BG] Quick rundown on these things
// Meleerange --> Base damage regardless of height
// Args[0]	  --> Height damage divided by 8 so the max dmg output is around 38~40

actor G_TenguSlamCollide : BasicCollideSlam
{
damagetype "TenguM_Dunked"
Obituary "$OB_TENGUSMASH"
//Mass 1
Meleerange 20 //3
}

actor G_TenguSlamCollideX : BasicCollideSlam
{
damagetype "TenguM_Dunked"
Obituary "$OB_TENGUSMASHX"
Meleerange 20
}

actor DivineWind
{
PROJECTILE
damagetype "TenguM_Shot"
Obituary "$OB_DIVINEWIND"
+THRUACTORS
+HEXENBOUNCE
//-BOUNCEONFLOORS
+CANBOUNCEWATER
//+NOEXPLODEFLOOR
BounceFactor 0.75
WallBounceFactor 0.95
BounceCount 3
damage (0)
Radius 7
Height 7
Speed 40
scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
TGUH K 0
TGUH K 0 A_JumpIf( momx*momx + momy*momy < 324 && momz == 0, "Death")
TGUH K 0 A_PlaySoundEx("weapon/tengushot","Weapon")
goto Spawn2
Spawn2:
TGUH KKKLLLMMM 1 A_GiveInventory("DivineWind_P",1)
loop
Death:
TNT1 A 0
stop
}
}

actor DivineWind_P : CustomInventory
{
States
{
Pickup:
//TNT1 A 0 A_LogInt(sqrt(momx*momx + momy*momy + momz*momz)/7+1)
TNT1 A 0 A_Explode(sqrt(momx*momx + momy*momy + momz*momz)/7+1,48,0,0,24)
TNT1 A 0 ThrustThingZ(0,4,0,1)
TGUH K 0 A_JumpIf( sqrt(momx*momx + momy*momy + momz*momz)/7+1 >= 6, "FXDropper3")
TGUH K 0 A_JumpIf( sqrt(momx*momx + momy*momy + momz*momz)/7+1 >= 4, "FXDropper2")
TGUH K 0 A_JumpIf( sqrt(momx*momx + momy*momy + momz*momz)/7+1 >= 2, "FXDropper1")
stop
FXDropper1:
TNT1 A 0 A_SpawnItemEx("TenguBlowFX",random(-40,40),0,random(-40,40),0,0,random(-1,1),random(0,359),1,192)
stop
FXDropper2:
TNT1 A 0 A_SpawnItemEx("TenguBlowFX",random(-40,40),0,random(-40,40),0,0,random(-1,1),random(0,359),1,128)
stop
FXDropper3:
TNT1 A 0 A_SpawnItemEx("TenguBlowFX",random(-40,40),0,random(-40,40),0,0,random(-1,1),random(0,359),1,64)
stop
}
}

actor TenguBlowFX
{
PROJECTILE
+NOINTERACTION
Scale 2.25
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,"Spawn1","Spawn2","Spawn3")
Spawn1:
TBLO QRS 3
stop
Spawn2:
TBLO R 4
TBLO S 3
stop
Spawn3:
TBLO Q 1
TBLO R 3
TBLO S 4
stop
}
}

actor TenguTHoldPod
{
Translation "192:192=4:4","199:199=112:112"
PROJECTILE
damagetype "TenguM_Pod"
Obituary "$OB_TORNADOHOLD"
-NOGRAVITY
+HEXENBOUNCE
+FIXMAPTHINGPOS
+DONTREFLECT
+EXPLODEONWATER
Bouncecount 2
Bouncefactor 0.01
WallBounceFactor 0.01
ReactionTime 1
Damage (15)
Radius 20
Height 5
speed 28
Scale 2.5

states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
TGUH Q 0
TGUH Q 0 ThrustThingZ(0,4,0,1)
TGUH Q 1 ThrustThing(angle*256/360,4,1,0)
TGUH Q 1
wait
SpawnD:
TGUH Q 1 A_CountDown
wait
Death:
TNT1 A 0 A_Stop
TNT1 A 1 A_SpawnItemEx("TenguTHoldFloor",0,0,0,0,0,0,0,1)
stop
XDeath:
TGUH Q 0 A_Stop
TGUH Q 0 ThrustThingZ(0,120,1,0)
TGUH QQQQQQQQQQ 1 A_CheckFloor("Death")
goto Death
}
}

actor TenguTHoldPodB : TenguTHoldPod{translation "192:192=205:205", "199:199=74:74"}
actor TenguTHoldPodR : TenguTHoldPod{translation "192:192=171:171", "199:199=41:41"}
actor TenguTHoldPodO : TenguTHoldPod{translation "192:192=104:104", "199:194=128:128"}
actor TenguTHoldPodP : TenguTHoldPod{translation "192:192=229:229", "199:199=232:232"}

actor TenguTHoldPod2 : TenguTHoldPod
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
goto Death
Death:
TNT1 A 0 A_Stop
TNT1 A 1 A_SpawnItemEx("TenguTHoldFloorSit",0,0,0,0,0,0,0,1)
stop
}
}

actor TenguTHoldPod2B : TenguTHoldPod2{translation "192:192=205:205", "199:199=74:74"}
actor TenguTHoldPod2R : TenguTHoldPod2{translation "192:192=171:171", "199:199=41:41"}
actor TenguTHoldPod2O : TenguTHoldPod2{translation "192:192=104:104", "199:194=128:128"}
actor TenguTHoldPod2P : TenguTHoldPod2{translation "192:192=229:229", "199:199=232:232"}

actor TenguTHoldFloor
{
damagetype "TenguM_Pod"
Obituary "$OB_TORNADOHOLD"
+MISSILE
+RIPPER
+THRUACTORS
+THRUGHOST
+DONTBLAST
+DONTREFLECT
//+FIXMAPTHINGPOS
+NOEXPLODEFLOOR
+STEPMISSILE
maxstepheight 2400
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+BOUNCEONACTORS
+ALLOWBOUNCEONACTORS
BounceFactor 0.25
WallBounceFactor 1.0
BounceCount 9
reactiontime 30
Damage (0)
Radius 20
Height 48
Speed 0
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
TGUH Q 0
TGUH QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ 1 A_CheckFloor("SpawnLand")
stop
SpawnLand:
//TGUH Q 1 A_Recoil(-5)
TGUH R 1
TGUH S 0 A_ChangeFlag("THRUACTORS",0)
TGUH S 0 A_PlaySoundEx("weapon/TenguTHold","Weapon")
TGUH S 0 A_Recoil(-6)
goto FloorSlide
FloorSlide:
TGUH S 0 ThrustThing(angle*256/360,0)
TGUH S 0 A_SpawnItemEx("TenguHoldingTornado",0,0,15,0,0,0,0,33)
TGUH ST 2
TGUH S 0 A_CountDown
loop
FloorSit:
TGUH S 2 A_SpawnItemEx("TenguHoldingTornado",0,0,15,0,0,0,0,33)
TGUH T 2 A_CountDown
loop
Death:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("TenguTHoldFloorFX",0,0,8,0,0,0,0,1)
stop
}
}


actor TenguTHoldFloorFX : BasicClientSide
{
states
{
Spawn:
UMFX L 0
UMFX LKJI 1
XMFX E 1
stop
}
}

actor TenguTHoldFloorSit : TenguTHoldFloor
{
states
{
SpawnLand:
TGUH R 1
TGUH S 0 A_PlaySoundEx("weapon/TenguTHold","Weapon")
goto FloorSit
}
}

actor TenguHoldingTornado
{
PROJECTILE
damagetype "TenguM_THold"
Obituary "$OB_TORNADOHOLD"
+DONTREFLECT
damage(12) 
radius 18
height 6
Speed 0
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
TGUH U 0
TGUH U 0 ThrustThingZ(0,28,0,0)
Loop1:
TGUH U 0 A_JumpIf(z-floorz>=288,"Death")
TGUH UUU 1 A_JumpIfCloser(40,"Lift1")
Loop2:
TGUH V 0 A_JumpIf(z-floorz>=288,"Death")
TGUH VVV 1 A_JumpIfCloser(40,"Lift2")
Loop3:
TGUH W 0 A_JumpIf(z-floorz>=288,"Death")
TGUH WWW 1 A_JumpIfCloser(40,"Lift3")
goto Loop1
Lift1:
TGUH U 1 A_GiveToTarget("TenguTornadoThruster_P",1)
TGUH UU 1
goto Loop2
Lift2:
TGUH V 1 A_GiveToTarget("TenguTornadoThruster_P",1)
TGUH VV 1
goto Loop3
Lift3:
TGUH W 1 A_GiveToTarget("TenguTornadoThruster_P",1)
TGUH WW 1
goto Loop1
Death:
TNT1 A 1 A_SpawnItemEx("TenguHoldingTornadoEndFX",0,0,0,0,0,0,0,1)
stop
XDeath:
TGUH W 0 
TGUH W 0 A_SpawnItemEx("TenguHoldingTornado2",0,0,0,0,0,momz,0,1)
stop
}
}

actor TenguHoldingTornadoEndFX : BasicClientSide
{
States
{
Spawn:
TGUH WUYZ 3
stop
}
}

actor TenguHoldingTornado2 : TenguHoldingTornado
{
+RIPPER
DAMAGE (0)
States
{
Death:
TGUH W 0 
stop
XDeath:
TGUH W 0 
stop
}
}

actor TenguTornadoThruster_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,3)
TNT1 A 0 A_GiveInventory("TenguWasThrusted",1)
TNT1 A 0 ThrustThingZ(0,28,0,0)
TNT1 A 0
stop
}
}

actor TenguTHeld_End : Powerup
{
powerup.duration 3
}

actor TenguTornadoHeldSlow : PowerSpeed
{
Speed 0.75
powerup.duration 3
}

actor TenguM_THoldProtect : PowerProtection
{
Powerup.Duration 4
DamageFactor "TenguM_THold", 0.1
}

actor TenguTornadoHeld_H : BasicHelper
{
reactiontime 4
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P1",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P1",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P1",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P2",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P2",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P2",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P3",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P3",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P3",1)

TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",4,"Spawn2")
goto Spawn+1

Spawn2:
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P1C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P1C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P1C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P2C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P2C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P2C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P3C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P3C",1)
TNT1 A 0 A_JumpIfInTargetInventory("TenguTHeld_End",1,"Death")
TNT1 A 1 A_GiveToTarget("TenguTornadoHeld_P3C",1)

TNT1 A 0 A_Countdown
loop
}
}

actor TenguTornadoHeld_P1 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"Cancel")
TNT1 A 0 A_JumpIf(!(health>0),"Cancel")
TNT1 A 0 A_SpawnItemEx("TenguTornadoHeldFX1",0,0,0,momx,momy,momz,0,8,0)
Pickup2:
TNT1 A 0 //ThrustThingZ(0,2,0,0)
TNT1 A 0 //A_JumpIf(z-floorz>=320,2)
//TNT1 A 0 A_LogInt(z-floorz) //Max height is 300
TNT1 A 0 ThrustThingZ(0,20,0,0)
TNT1 A 0 A_GiveInventory("TenguM_THoldProtect",1)
TNT1 A 0 A_GiveInventory("TenguTornadoHeldSlow",1)
stop
Cancel:
TNT1 A 0 A_GiveInventory("TenguTHeld_End",1)
stop
}
}

actor TenguTornadoHeld_P2 : TenguTornadoHeld_P1
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"Cancel")
TNT1 A 0 A_JumpIf(!(health>0),"Cancel")
TNT1 A 0 A_SpawnItemEx("TenguTornadoHeldFX2",0,0,0,momx,momy,momz,0,8,0)
goto Pickup2
}
}

actor TenguTornadoHeld_P3 : TenguTornadoHeld_P1
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,"Cancel")
TNT1 A 0 A_JumpIf(!(health>0),"Cancel")
TNT1 A 0 A_SpawnItemEx("TenguTornadoHeldFX3",0,0,0,momx,momy,momz,0,8,0)
goto Pickup2
}
}

actor TenguTornadoHeld_P1C : TenguTornadoHeld_P1
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(z-floorz>=320,"Cancel")
goto "Super::Pickup"
}
}

actor TenguTornadoHeld_P2C : TenguTornadoHeld_P2
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(z-floorz>=320,"Cancel")
goto "Super::Pickup"
}
}

actor TenguTornadoHeld_P3C : TenguTornadoHeld_P3
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(z-floorz>=320,"Cancel")
goto "Super::Pickup"
}
}

actor TenguTornadoHeldFX1
{
Translation "192:192=4:4","199:199=112:112"
-SOLID
+NOGRAVITY
+CLIENTSIDEONLY
+DONTBLAST
+NOINTERACTION
scale 2.5
States
{
Spawn:
TGUH U 0
TGUH U 1
stop
}
}
actor TenguTornadoHeldFX2 : TenguTornadoHeldFX1
{
States
{
Spawn:
TGUH V 0
TGUH V 1
stop
}
}
actor TenguTornadoHeldFX3 : TenguTornadoHeldFX1
{
States
{
Spawn:
TGUH W 0
TGUH W 1
stop
}
}

actor TemgumanWepDroppedX : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,1,2)
TNT1 A 1 A_SpawnItemEx("TornadoHoldWepCDropped",0,0,0,momx,momy,momz,0,8)
stop
TNT1 A 1 A_SpawnItemEx("TenguBladeWepCDropped",0,0,0,momx,momy,momz,0,8)
stop
}
}

actor TemgumanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("TenguSmash",0,0,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("TenguSmashB",0,0,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("TenguSmashR",0,0,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("TenguSmashO",0,0,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("TenguSmashP",0,0,-8,0)
goto Done
}
}

actor TemgumanAlt_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPod",0,1,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPodB",0,1,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPodR",0,1,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPodO",0,1,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPodP",0,1,-8,0)
goto Done
}
}

actor TemgumanAlt2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPod2",0,1,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPod2B",0,1,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPod2R",0,1,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPod2O",0,1,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("TenguTHoldPod2P",0,1,0,0)
goto Done
}
}

actor TengumanReload_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_SpawnItemEx("TenguTHoldPod2",0,0,0,0,0,0,0,1)
goto Done
FireB:
TNT1 A 0 A_SpawnItemEx("TenguTHoldPod2B",0,0,0,0,0,0,0,1)
goto Done
FireR:
TNT1 A 0 A_SpawnItemEx("TenguTHoldPod2R",0,0,0,0,0,0,0,1)
goto Done
FireO:
TNT1 A 0 A_SpawnItemEx("TenguTHoldPod2O",0,0,0,0,0,0,0,1)
goto Done
FireP:
TNT1 A 0 A_SpawnItemEx("TenguTHoldPod2P",0,0,0,0,0,0,0,1)
goto Done
}
}
