//= Shadow Man
//	Popping out of invisibility now uses 75% of the ammo bar rather than it's entirety
actor Shadowman : SemiWeakArmorClass
{
Player.ScoreIcon "SHADMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "SemiWeakArmor"
player.soundclass "ShadowmanC"
Player.ViewHeight 45
player.jumpz 14
player.forwardmove 0.83, 0.83
player.sidemove 0.85, 0.85
player.displayname "Shadowman"
player.startitem "ShadowBladeBoss"
player.startitem "Base28Ammo", 28
player.startitem "BaseAltfireAmmo", 112
player.startitem "CanThirdFire", 1
player.startitem "UltimateAttackItem4", 1
player.startitem "UltSoundWatcherSpawn4"
player.startitem "IsFromMM3"
States
{
Animation5:
Spawn:
SHAM A 0
SHAM B 1 A_JumpIf(z-floorz>0, "Jumping")
SHAM A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Spawn.Frog")
SHAM A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

Animation3:
Spawn.Frog:
SFRG A 0 A_JumpIf(momx>0.1||momy>0.1||momx<-0.1||momy<-0.1,"See.Frog")
SFRG B 1 A_JumpIf(z-floorz>0, "Jumping.Frog")
SFRG A 0 A_JumpIf(momx>0.1||momy>0.1||momx<-0.1||momy<-0.1,"See.Frog")
SFRG A 1 A_JumpIf(z-floorz>0, "Jumping.Frog")
Goto Spawn.Frog+2

See:
SHAM BCDEFGHI 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn

See.Frog:	
SFRG BBBBCCCCDDDD 1 A_JumpIf(z-floorz>0, "Jumping.Frog")
Goto Spawn.Frog

Animation2:
Jumping:
SHAM O 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Jumping.Frog:
SFRG D 1 A_JumpIf(z-floorz<=0, "Spawn.Frog")
wait

Missile:
SHAM F 0 A_JumpIfInventory("ShadowFlameAnim",1,"Missile.FrogLoop")
SHAM F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile.Frog")
SHAM F 0 A_JumpIfInventory("ShadowmanCharge",0,"Missile3")
SHAM F 0 A_JumpIfInventory("ShadowSlideAnim",1,"Animation1")
SHAM TTTU 1 A_JumpIf(z-floorz>0, "JumpingMissile")

Missile2:
SHAM VVVVVVVVV 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn+1

Missile3:
SHAM JJKK 1 A_JumpIf(z-floorz>0, "JumpingMissile3")

Missile4:
SHAM LLLLLLLLL 1 A_JumpIf(z-floorz>0, "JumpingMissile4")
goto Spawn+1

Missile.Frog:
SFRG EFG 1

Missile.FrogLoop:
SFRG HIHIHIHIHI 1
goto Spawn.Frog

Animation4:
SFRG KLM 1

A4Loop:
SFRG K 1
SFRG KKK 1 A_JumpIfInventory("CutterFlag",1,"A4Loop")
goto Spawn.Frog

JumpingMissile:
SHAM F 0 A_JumpIfInventory("ShadowmanCharge",0,"JumpingMissile3")
SHAM F 0 A_JumpIfInventory("ShadowSlideAnim",1,"Animation1")
SHAM WWWX 1 A_JumpIf(z-floorz<=0, "Missile")

JumpingMissile2:
SHAM YYYYYYYYY 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Spawn+1

JumpingMissile3:
SHAM QQRR 1 A_JumpIf(z-floorz<=0, "Missile3")

JumpingMissile4:
SHAM SSSSSSSSS 1 A_JumpIf(z-floorz<=0, "Missile4")
goto Spawn+1

Animation1:
SHAM P 9
goto Spawn+2

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
//PLAY A 0 A_GiveInventory("TimeStoppedFlag",1)
PLAY A 0 ACS_Execute(528,0)
NEED AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
//PLAY A 0 A_TakeInventory("TimeStoppedFlag",999)
PLAY A 0 SetPlayerProperty(0,0,4)
Goto Pain+1
ClassPain:
SHAM H 0 A_JumpIfInventory("BaseCustomFlag2",1,"ClassPain.Frog")
SHAM MMMMMMMMMM 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+2
ClassPain.Frog:
SFRG JJJJJJJJJJ 2 A_SpawnItem("PainFX",0,3)
SFRG J 0 A_JumpIfInventory("CutterFlag",1,"A4Loop")
Goto Spawn.Frog+2
ClassDeath:
SHAM M 0 A_JumpIfInventory("BaseCustomFlag2",1,"ClassDeath.Frog")
SHAM M 20 ACS_ExecuteAlways(999,0,0)
SHAM M 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFXMM3",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath.Frog:
SFRG J 20 ACS_ExecuteAlways(999,0,0)
SFRG J 0 A_PlayerScream
NOFX A 0 A_SpawnItemEx("FakeDeathFXMM3",0,0,32)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
SHAM A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("ShadowBladeWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("ShadowBladeWepM")
goto ClassDeath
}
}

actor ShadowBladeBoss : VCBaseWeapon
{
Weapon.AmmoUse 3
Weapon.AmmoGive 28
Weapon.Ammotype2 "BaseAltfireAmmo"
Obituary "$OB_SHADOWMAN1"
States
{
Ready:
TNT1 A 0 A_ClearRefire
SHMH A 0 A_JumpIfInventory("BaseAltfireAmmo",112,"Ready.TF")
SHMH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SHMH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SHMH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
SHMH A 0 A_GiveInventory("Base28Ammo",1)
SHMH A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready

Ready.TF:
SHMH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SHMH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
SHMH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SHMH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
SHMH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") SHMH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
SHMH A 0 A_GiveInventory("Base28Ammo",1)
SHMH A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready

Ready.Frog:
SFOH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("DrillFlag",1,"FrogCancel")
SFOH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("DrillFlag",1,"FrogCancel")
SFOH A 1 A_WeaponReady SHMH A 0 A_JumpIfInventory("DrillFlag",1,"FrogCancel")
SHMH A 0 A_GiveInventory("Base28Ammo",1)
SHMH A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready.Frog

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
SHMH A 1 A_Lower
Loop

Select:
SHMH A 0 ACS_ExecuteAlways(991,0,767)
SelectX:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
SHMH A 1 A_Raise
Loop

Fire:
SHAH G 0 A_JumpIfInventory("BaseCustomFlag2",1,"Fire.Frog")
SHAH G 0 A_GiveInventory("ShadowPoofHandler")
TNT1 A 0 A_JumpIfInventory("Base28Ammo",7,"FireCharge")
TNT1 A 0 A_JumpIfInventory("Base28Ammo",2,1)
Goto NoAmmo

Fire1:
TNT1 A 0 A_JumpIfInventory("Base28Ammo",2,1)
Goto NoAmmo
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
SHMH CD 1
TNT1 A 0 A_GiveInventory("ShadowmanResetCharge_CI",1)
TNT1 A 0 A_GiveInventory("ShadowmanMain1_CI",1)
SHMH GHIJ 1
TNT1 A 3 OffSet(110,69)
SHMH A 1 OffSet(55,48)
SHMH A 0 A_Refire("Fire1")
Goto Ready

Fire2:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
SHMH Y 2
TNT1 A 0 A_GiveInventory("ShadowmanResetCharge_CI",1)
TNT1 A 0 A_GiveInventory("ShadowmanMain2_CI",1)
SHMH Z 1
TNT1 A 10
SHMH A 1 OffSet(0,56)
SHMH A 8 A_WeaponReady(14)
Goto Ready

FireCharge:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
SHMH V 0 A_JumpIfInventory("ShadowmanCharge",0,"FireCharge2")
SHMH V 1 A_GiveInventory("ShadowmanCharge",2)
SHMH V 0 A_Refire("FireCharge")
Goto Fire1

FireCharge2:
SHMH X 0 A_SpawnItemEx("ShadowBladeHoldFX",0,0,80)

FireCharge2b:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
SHMH X 1 //A_RailWait BINARY PLEASE STOP USING THIS IT DOES NOTHING >:((( -Fr3ak
SHMH X 0 A_Refire("FireCharge2b")
Goto Fire2

Fire.Frog:
SFOH BCD 1 A_GiveInventory("ShadowFlameAnim")

Fire.FrogHold:
SFOH E 0 A_GiveInventory("ShadowFlameAnim")
SFOH E 0 A_FireCustomMissile("ShadowFrogFlame",0,0,0,-16)
SFOH E 0 A_PlaySoundEx("misc/lava","Weapon")
SFOH E 0 A_PlaySoundEx("weapon/firestorm","Body")
SFOH EDED 1 A_JumpIfInventory("DrillFlag",1,"FrogCancel")
SFOH E 0 A_Refire("Fire.FrogHold")

Fire.FrogCooldown:
SFOH DCBA 3 A_ClearRefire
goto Ready.Frog

Altfire:
SHAH G 0 A_GiveInventory("ShadowPoofHandler")
RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
SHAH G 0 A_JumpIfInventory("BaseCustomFlag2",1,"Altfire.Frog")
SHAH G 0 A_CheckFloor("Altfire.Ground")
SHAH G 0 A_JumpIfInventory("Base28Ammo",9,1)
goto NoAmmo

Altfire.Air:
TNT1 A 0 A_GiveInventory("ShadowCaltropHandler")
SHMH GHIJ 1
TNT1 A 3 OffSet(110,69)
SHMH A 1 OffSet(55,48)
goto Ready

Altfire.Ground:
SHAH G 0 A_JumpIfInventory("Base28Ammo",7,1)
goto NoAmmo

Altfire.Real:
TNT1 A 0 A_JumpIfInventory("ShadowDecloakBuff",1,"Altfire.Real2")
SHMH B 0 ACS_NamedExecute("VC_SetState",0,1)
SHAH G 0 A_GiveInventory("ShadowPoofHandler")
SHAH G 0 A_PlaySoundEx("shadowman/slide","Weapon")
SHAH G 0 A_SpawnItemEx("GrenadeSmoke")
SHAH G 0 A_GiveInventory("ShadowSlideAnim")
SHAH G 0 A_Recoil(-25)
SHAH G 0 A_TakeInventory("Base28Ammo",3)
SHMH NOPQ 1 A_SpawnItemEx("ShadowKickHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)

Altfire.Hold:
SHAH G 0 A_JumpIfInventory("Base28Ammo",1,1)
goto Altfire.Cooldown
SHMH R 0 A_GiveInventory("ShadowSlideAnim")
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(2,32) A_SpawnItemEx("ShadowKickHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(2,30) A_SpawnItemEx("ShadowKickHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(-2,32) A_SpawnItemEx("ShadowKickHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(-2,30) A_SpawnItemEx("ShadowKickHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH A 0 A_Refire("Altfire.Hold")

Altfire.Cooldown:
SHMH B 0 ACS_NamedExecute("VC_SetState",0,2)
SHMH A 0 A_GiveInventory("ShadowLeapCheck")
SHMH A 0 A_ClearRefire
SHMH QPONUTSA 1 A_WeaponReady(WRF_NOFIRE)
goto Ready

Altfire.Real2:
SHMH B 0 ACS_NamedExecute("VC_SetState",0,1)
SHAH G 0 A_GiveInventory("ShadowPoofHandler")
SHAH G 0 A_PlaySoundEx("shadowman/slide","Weapon")
SHAH G 0 A_SpawnItemEx("GrenadeSmoke")
SHAH G 0 A_GiveInventory("ShadowSlideAnim")
SHAH G 0 A_Recoil(-25)
SHAH G 0 A_TakeInventory("Base28Ammo",3)
SHMH NOPQ 1 A_SpawnItemEx("ShadowKickHitbox2", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)

Altfire.Hold2:
SHAH G 0 A_JumpIfInventory("Base28Ammo",1,1)
goto Altfire.Cooldown
SHMH R 0 A_GiveInventory("ShadowSlideAnim")
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(2,32) A_SpawnItemEx("ShadowKickHitbox2", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(2,30) A_SpawnItemEx("ShadowKickHitbox2", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(-2,32) A_SpawnItemEx("ShadowKickHitbox2", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH R 0 A_Recoil(-1.2)
SHMH R 0 A_TakeInventory("Base28Ammo",1)
SHMH R 1 Offset(-2,30) A_SpawnItemEx("ShadowKickHitbox2", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
SHMH A 0 A_Refire("Altfire.Hold2")
goto Altfire.Cooldown

Altfire.Frog:
SHMH B 0 ACS_NamedExecute("VC_SetState",0,4)
SFOH D 2 A_GiveInventory("CutterFlag",1)
SFOH D 0 A_PlaySoundEx("shadowman/tongue","Weapon")
SFOH D 0 A_FireCustomMissile("FrogTongue",0,0,0,0)

Altfire.FrogLoop:
SFOH D 1 A_GiveInventory("CutterFlag",1)
SFOH D 0 A_JumpIfInventory("CutterFlag",350,"Altfire.FrogStop")
loop

Altfire.FrogStop:
SFOH AA 2 A_TakeInventory("CutterFlag",350)
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"FrogCancel")
goto Ready.Frog

NoAmmo:
SHMH A 0 A_GiveInventory("Base28Ammo",1)
SHMH A 3 A_GiveInventory("Base56Ammo",1)
goto Ready

User1:
SHMH A 0 A_PlaySoundEx("weapon/shad_poof","Auto")
SHMH A 0 A_GiveInventory("BaseCustomFlag1")
SHMH A 0 A_SpawnItemEx("ShadowPoof")
TNT1 A 0 A_ChangeFlag("DONTIDENTIFYTARGET",1)
SHMH A 0 A_SpawnItemEx("ShadowLog",0,0,0,0,0,0,0,1)
/*SHMH A 0 A_ChangeFlag("INVULNERABLE",1)
SHMH A 0 A_GiveInventory("InvProtection")*/
SHMH AAAA 1 A_SetTranslucent(0.0)

User1.Ready:
SHMH A 0 A_TakeInventory("BaseAltfireAmmo",2)
SHMH A 3 A_WeaponReady
SHMH A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"User1.Ready")

User1.End:
SHMH A 0 A_GiveInventory("ShadowPoofHandler")
SHMH A 1
goto Ready

UltimateAttack:
TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ShadowPoof2",random(0,120),0,random(-20,100),0,0,0,random(0,359))
SHMH A 0 A_PlaySoundEx("weapon/shad_poof","Auto")
SHMH B 0 ACS_NamedExecute("VC_SetState",0,3)
SHMH B 0 ACS_NamedExecute("VC_ViewHeight",0,80)
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,25)
NEDR A 0 A_GiveInventory("UltBuildCooldownGiver",1)
SPAA K 0 A_GiveInventory("BaseCustomFlag2")
CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
CUTA A 0 A_GiveInventory("HalfDamageProtection")
CUTA A 0 A_TakeInventory("UltAttackFlag")
CUTA A 0 A_GunFlash
goto Ready.Frog

FrogCancel:
TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ShadowPoof2",random(0,120),0,random(-20,100),0,0,0,random(0,359))
SHMH A 0 A_PlaySoundEx("weapon/shad_poof","Auto")
SHMH B 0 ACS_NamedExecute("VC_SetState",0,5)
SHMH B 0 ACS_NamedExecute("VC_ViewHeight",0,45)
SPAA K 0 A_TakeInventory("BaseCustomFlag2")
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_TakeInventory("DrillFlag")
SHMH AAA 1 A_ClearRefire
goto Ready

Flash:
TNT1 AA 1 A_GiveInventory("FrogJumpCheck")
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",1)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,"Flash")
goto NoFlash

NoFlash:
TNT1 A 70 A_GiveInventory("DrillFlag")
TNT1 A 0 A_TakeInventory("PowerUltBuildCooldown")
stop
}
}

actor ShadowSlideAnim : Powerup
{
Powerup.Duration 6
}

actor ShadowFlameAnim : Powerup
{
Powerup.Duration 10
}

actor ShadowBladeCancel : Powerup
{
Powerup.Duration 3
}

Actor ShadowmanCharge : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 28
	+INVENTORY.IGNORESKILL
}

Actor ShadowmanResetCharge_CI : CustomInventory
{
States
{
Pickup:
TNT1 AA 0 A_ClearRefire
TNT1 A 0 A_TakeInventory("ShadowmanCharge",999)
stop
}
}

Actor ShadowmanMain1_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base28Ammo",2,1)
TNT1 A 0 A_PlaySoundEx("weapon/shadow","weapon")
TNT1 A 0 A_JumpIfInventory("ShadowDecloakBuff",1,"Pickup2")
TNT1 A 0 A_FireCustomMissile("ShadowmanBlade1",0,0,8,0)
stop

Pickup2:
TNT1 A 0 A_FireCustomMissile("ShadowmanBladeB",0,0,8,0)
stop
}
}

Actor ShadowmanMain2_CI : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base28Ammo",2,1) //since apparently these attacks shouldnt use as much ammo, might as well make it work like this
TNT1 A 0 A_PlaySoundEx("weapon/shadow","weapon")
TNT1 A 0 A_GiveInventory("ShadowBladeCancel",1)
TNT1 A 0 A_FireCustomMissile("ShadowmanBlade2",0,0,8,0)
TNT1 A 0 A_FireCustomMissile("ShadowmanBlade2",12,0,8,0)
TNT1 A 0 A_FireCustomMissile("ShadowmanBlade2",-12,0,8,0)
stop
}
}

Actor ShadowLeapCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_CheckFloor("Jump")
stop

Jump:
TNT1 A 0 A_SpawnItemEx("LandingFX")
TNT1 A 0 A_PlaySoundEx("shadowman/jump","Body")
TNT1 A 0 A_JumpIf(CallACS("VC_CheckBtn",1)==5,"JumpBack")
TNT1 A 0 ThrustThingZ(0,80,0,0)
stop

JumpBack:
TNT1 A 0 A_ChangeVelocity(-22,0,15,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

Actor ShadowPoofHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Poof")
stop

Poof:
TNT1 A 0 A_SpawnItemEx("ShadowPoof")
TNT1 AAA 0 A_GiveInventory("ShadowVisible")
TNT1 A 0 A_GiveInventory("ShadowDecloakBuff")
TNT1 A 0 A_PlaySoundEx("weapon/shad_poof","Auto")
TNT1 A 0 A_ChangeFlag("DONTIDENTIFYTARGET",0)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",86)//A_TakeInventory("BaseAltfireAmmo",112)
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
/*SHMH A 0 A_ChangeFlag("INVULNERABLE",0)
SHMH A 0 A_TakeInventory("InvProtection")*/
stop
}
}

actor ShadowInvisible : CustomInventory
{
States
{
Pickup:
TNT1 AAA 0 A_SetTranslucent(0.0)
stop
}
}

actor ShadowVisible : CustomInventory
{
States
{
Pickup:
TNT1 AAA 0 A_SetTranslucent(1.0)
stop
}
}

Actor FrogJumpCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_CheckFloor("Nope")
TNT1 A 0 A_SpawnItemEx("ShadowFrogHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop

Nope:
TNT1 A 0
stop
}
}

Actor ShadowmanBlade1
{
PROJECTILE
Scale 2.5
Speed 50
DamageType "ShadowMan"
Obituary "$OB_SHADOWMAN1"
Radius 10
Height 10
Damage (14)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
SMSB CD 2
Goto Spawn+2

XDeath:
TNT1 A 0
stop

Death:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("ShadowmanBladeStuck", 0, 0, 0, 0, 0, 0, 0, 1, 0)
stop
}
}

Actor ShadowmanBladeB : ShadowmanBlade1
{
Damage (21)
}

Actor ShadowmanBlade2 : ShadowmanBlade1
{
Obituary "$OB_SHADOWMAN1"
DamageType "ShadowManBlade"
Damage (18)
speed 70
+NOTARGETSWITCH
+HITTRACER
var int user_angle;
var int user_zval;
var int user_yval;
var int user_xval;
var int user_timer;
var int user_stuck;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
SMSB AB 2
Goto Spawn+2
Set2: SMSB C 0 A_SetUserVar("user_zval",28) goto SetDone
Set3: SMSB C 0 A_SetUserVar("user_zval",16) goto SetDone
Set4: SMSB C 0 A_SetUserVar("user_zval",4) goto SetDone
XDeath:
SMSB C 0 A_GiveInventory("DrillFlag")
Death:
SMSB C 0 A_Stop
SMSB C 0 A_JumpIfInventory("DrillFlag",1,1)
goto Nope
SMSB C 0 A_JumpIfInventory("ShadowManBladeStock",1,"Death2a",AAPTR_TRACER)
SMSB C 0 A_SetUserVar("user_zval",40)
SetDone:
SMSB C 0 A_GiveInventory("ShadowManBladeStock",1,AAPTR_TRACER)
SMSB C 0 A_SetUserVar("user_angle",180)
SMSB C 0 A_SetUserVar("user_xval",-12)
SMSB C 0 A_SetUserVar("user_yval",0)
SMSB C 0 A_SetUserVar("user_timer",9)
SMSB C 0 A_ChangeFlag("HITTRACER",0)
Latch:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerenemy",0)==0,"Nope")
TNT1 A 1 A_Warp(AAPTR_TRACER,user_xval,user_yval,user_zval,user_angle,WARPF_NOCHECKPOSITION|WARPF_COPYINTERPOLATION)
TNT1 A 0 //A_SpawnItemEx("ShadowManBladeFX",-20,0,0,0,0,0,180,1)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 100, "BladeFall")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_GiveInventory("ShadowManBladeStick_P",1,AAPTR_TRACER)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death2b")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1)==0,"Death2b")
TNT1 A 0 A_JumpIf(user_timer >= 9,"Hit")
TNT1 A 0 A_SetUserVar("user_timer",user_timer+1)
Goto Latch
Hit:
SMSB C 0 A_SetUserVar("user_timer",0)
SMSB C 0 A_SpawnItemEx("BladeDamage",-2,0,0,momx,momy,momz,0,SXF_NOCHECKPOSITION)
goto Latch
Death2:
TNT1 A 1 A_TakeInventory("ShadowManBladeStock",1,0,AAPTR_TRACER)
TNT1 A 1
stop
Death2A:
TNT1 A 0 A_JumpIfInTargetInventory("ShadowManBladeStick_P",1,"Death2")
goto Death2B
Death2B:
TNT1 AAAAA 0 A_TakeInventory("ShadowManBladeStock",999,0,AAPTR_TRACER)
TNT1 A 1 //A_SpawnItemEx("FallingBlade",0,0,0,0,0,-2,0,1)
stop
BladeFall:
TNT1 A 0 A_TakeInventory("ShadowManBladeStock",1,0,AAPTR_TRACER)
TNT1 A 1 //A_SpawnItemEx("FallingBlade",0,0,0,0,0,-2,0,1)
stop
Nope:
TNT1 A 0 //A_SpawnItemEx("ShadowmanBladeStuck2", 0, 0, 0, 0, 0, 0, 0, 1, 0)
stop

}
}

actor FallingBlade
{
PROJECTILE
-NOGRAVITY
-NOCLIP
+FLOORCLIP
+THRUACTORS
Radius 1
Height 1
scale 2.5
gravity 0.3
+CLIENTSIDEONLY
States
{
Spawn:
SMSB B 0
SMSB BB 2 A_GiveInventory("CutterFlag")
SMSB B 0 A_JumpIfInventory("CutterFlag",18,"Death")
loop
Death:
TNT1 A 0
stop
}
}

actor ShadowManBladeFX
{
PROJECTILE
Scale 2.5
Radius 12
Height 7
Damage (0)
+THRUACTORS
+NOCLIP
+NOINTERACTION
States
{
Spawn:
SMSB BB 1
stop
}
}

actor BladeDamage : MegaShot
{
Damage (1)
DamageType "ShadowMan"
Obituary "$OB_SHADOWMAN1"
Radius 6
Height 5
States
{
Spawn:
TNT1 A 1
TNT1 A 2
stop
}
}

actor ShadowManBladeStock : Inventory{Inventory.MaxAmount 3} //4 //2
actor ShadowManBladeStick_P : Powerup{Powerup.Duration 3 +ADDITIVETIME}

Actor ShadowmanBladeStuck
{
+NOEXPLODEFLOOR
+NOGRAVITY
+CLIENTSIDEONLY
+NOINTERACTION
Radius 16
Height 16
scale 2.5
reactiontime 25
speed 0
damage (0)
Damagetype "Shadowman"
States
{
Spawn:
TNT1 A 0
SMSB C 1 A_Countdown
loop
Death:
SMSB "#####" 1 A_FadeOut(0.2)
stop
}
}

Actor ShadowmanBladeStuck2 : ShadowmanBladeStuck
{
reactiontime 30
States
{
Spawn:
TNT1 A 0
SMSB B 2 A_Countdown
loop
}
}

actor ShadowmanBladeProtect : PowerProtection
{
	powerup.duration 26
	DamageFactor "ShadowManBlade", 0.0
}

actor ShadowKickHitbox
{
species "DustManType"
+THRUSPECIES
Obituary "$OB_SHADOWMAN2"
PROJECTILE
+NOEXPLODEFLOOR
Radius 32
Height 32
scale 2.5
speed 0
damage (21)
Damagetype "ShadowmanAlt"
States
{
Spawn:
TNT1 A 2
stop
}
}

actor ShadowKickHitbox2 : ShadowKickHitbox
{
damage (33)
}

actor ShadowmanAltProtect : PowerProtection
{
	powerup.duration 26
	DamageFactor "ShadowmanAlt", 0.0
}

actor ShadowPoof : BasicClientSide
{
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
POOF CDC 2
stop
}
}

actor ShadowPoof2 : ShadowPoof
{
scale 5.0
}

actor ShadowLog
{
Obituary "$OB_SHADOWMAN3"
PROJECTILE
+NOEXPLODEFLOOR
-NOGRAVITY
Radius 16
Height 16
scale 2.5
reactiontime 175
speed 0
damage (25)
Damagetype "Shadowman"
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,"S_1","S_2")

FloorReset1:
SHDL A 0 ThrustThingZ(0,0,0,1)
S_1:
SHDL A 0 A_Countdown
SHDL A 1 A_JumpIf(z-floorz>0, "Air1")
loop
Air1:
SHDL A 1 A_JumpIf(z-floorz<=0, "FloorReset1")
loop

FloorReset2:
SHDL B 0 ThrustThingZ(0,0,0,1)
S_2:
SHDL B 0 A_Countdown
SHDL B 1 A_JumpIf(z-floorz>0, "Air2")
loop
Air2:
SHDL B 1 A_JumpIf(z-floorz<=0, "FloorReset2")
loop

Death:
MMFX FGHI 2
stop
}
}

actor ShadowFrogFlame
{
Obituary "$OB_SHADOWMAN4"
PROJECTILE
radius 16
height 16
+RIPPER
scale 2.5
speed 30
damage (4)
damagetype "ShadowmanFlame"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FLAF GHIJGHIJGHIJGHIJGHIJGHIJ 1
Death:
TNT1 A 0 A_SpawnItemEx("OilPitIgnite")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("FlameFieldFX",random(0,40),0,random(0,48),random(-1,1),0,random(-1,1),random(0,359)) 
stop
}
}

actor ShadowFrogHitbox
{
Obituary "$OB_SHADOWMAN6"
PROJECTILE
+NOEXPLODEFLOOR
Radius 1
Height 1
scale 2.5
speed 0
damage (0)
Damagetype "ShadowmanFrog"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(14,96,0,0,96)
stop
}
}

actor ShadowmanFrogProtect : PowerProtection
{
	powerup.duration 7
	DamageFactor "ShadowmanFrog", 0.0
}

actor FrogTongue
{
species "DustManType"
+THRUSPECIES
+SKYEXPLODE
PROJECTILE
+RIPPER
scale 2.5
//+RIPPER
Obituary "$OB_SHADOWMAN5"
damagetype "ShadowmanTongue"
Speed 70
Radius 16
Height 16
Damage (6)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
S3FT AAAAAA 1 A_SpawnItemEx("FrogTongueTrail",-32)
S3FT A 0 A_Stop
S3FT BBBCCCBBB 1 A_SpawnItemEx("FrogTongueTrail",-32)
Death:
S3FT A 0 A_CustomMissile("FrogTongueBack",0,0,0,CMF_TRACKOWNER)
stop
}
}

actor FrogTongueBack : FrogTongue
{
+NOINTERACTION
+DONTREFLECT
Obituary "$OB_SHADOWMAN5"
damagetype "ShadowmanTongue"
radius 0
height 0
speed 32
States
{
Spawn:
S3FT E 0
S3FT E 0 A_JumpIfCloser(64,"Death")
S3FT E 0 A_SpawnItemEx("FrogTongueDamager",0,0,0,0,0,0)
S3FT E 1 A_CustomMissile("FrogTongueTrail", 0, 0, 0, 0)
S3FT E 0 A_FaceTarget
S3FT E 0 A_CustomMissile("FrogTongueBack",0,0,0,0)
stop
Death:
TNT1 A 0 A_GiveToTarget("CutterFlag",350)
stop
}
}


actor FrogTongueTrail : DuoPunch
{
Damage (0)
scale 2.5
+RIPPER
+THRUSPECIES
damagetype "ShadowmanTongue"
//+CLIENTSIDEONLY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
S3FT B 0 A_SpawnItemEx("FrogTongueTrailFX",0,0,0,0,0,0,0,SXF_ABSOLUTEPOSITION)
S3FT B 0 A_SpawnItemEx("FrogTongueDamager",0,0,0,0,0,0)
S3FT B 0 A_JumpIfCloser(64, "Death")
S3FT B 0 A_CustomMissile("FrogTongueTrail", 0, 0, 0, 0)
S3FT B 1
stop
Death:
TNT1 A 0 
stop
}
}

Actor FrogTongueTrailFX
{
+NOINTERACTION
+CLIENTSIDEONLY
Scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1
S3FT BB 1 A_JumpIfCloser(32, "Death")
stop
Death:
TNT1 A 0
stop
}
}

actor FrogTongueDamager
{
Obituary "$OB_SHADOWMAN5"
damagetype "ShadowmanTongue"
PROJECTILE
//+RIPPER
damage (6)
radius 16
height 16
States
{
Spawn:
TNT1 A 1
stop
Death:
TNT1 A 0
stop
}
}

actor ShadowmanTongueProtect : PowerProtection
{
powerup.duration 3
DamageFactor "ShadowmanTongue", 0.0
}

actor ShadowCaltrop
{
Obituary "$OB_SHADOWMAN7"
PROJECTILE
Radius 12
Height 12
Scale 2.5
Speed 50
Damage (3)
damagetype "ShadowmanCaltrop"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
S3CA A 1
goto Spawn+2
Death:
TNT1 A 0 A_SpawnItemEx("ShadowCaltropFall")
stop
XDeath:
TNT1 A 0
stop
}
}

actor ShadowCaltropFall
{
Obituary "$OB_SHADOWMAN7"
PROJECTILE
-NOGRAVITY
Radius 12
Height 12
Scale 2.5
Speed 50
Damage (3)
damagetype "ShadowmanCaltrop"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
S3CA A 1 A_JumpIf(z-floorz==0, "Death")
goto Spawn+2
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("ShadowCaltropFloor")
stop
XDeath:
TNT1 A 0
stop
}
}

actor ShadowCaltropFloor
{
Obituary "$OB_SHADOWMAN7"
PROJECTILE
-NOGRAVITY
+NOEXPLODEFLOOR
Radius 12
Height 12
Scale 2.5
Damage (3)
reactiontime 100
damagetype "ShadowmanCaltrop"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
S3CA A 1 A_Countdown
goto Spawn+2
Death:
TNT1 A 0
stop
}
}

actor ShadowCaltrop2 : ShadowCaltrop
{
damage(6)
States
{
Death:
TNT1 A 0 A_SpawnItemEx("ShadowCaltropFall2")
stop
}
}

actor ShadowCaltropFall2 : ShadowCaltropFall
{
Damage (6)
States
{
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("ShadowCaltropFloor2")
stop
stop
}
}

actor ShadowCaltropFloor2 : ShadowCaltropFloor
{
Damage (6)
}

actor ShadowBladeHoldFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
Spawn:
SMSB E 1 A_Warp(AAPTR_TARGET,0,0,100,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SMSB E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"Death")
SMSB E 0 A_JumpIfInTargetInventory("ShadowBladeCancel",1,"Death")
loop
Death:
TNT1 A 0
stop
}
}

actor ShadowDecloakBuff : PowerSpeed{Powerup.Duration 7 +POWERSPEED.NOTRAIL Speed 1.0}

actor ShadowCaltropHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("Base28Ammo",9)
TNT1 A 0 A_PlaySoundEx("shadowman/caltrop","Weapon")
TNT1 A 0 A_JumpIfInventory("ShadowDecloakBuff",1,"Pickup2")
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop",-32,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop",-16,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop",16,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop",32,0,0,0)
stop

Pickup2:
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop2",-32,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop2",-16,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop2",0,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop2",16,0,0,0)
TNT1 A 0 A_FireCustomMissile("ShadowCaltrop2",32,0,0,0)
stop
}
}