actor TimeManShieldAttackerAssist
{
Obituary "$OB_SHIELDATTACKER"
+ISMONSTER
+NOGRAVITY
+SHOOTABLE
+INVULNERABLE
+BOUNCEONWALLS
-SOLID
+DONTREFLECT
+FRIENDLY

Speed 12
PainChance 256
Scale 2.5
Radius 17
Height 64
WallBounceFactor 1
species "TimeArrowType"
+THRUSPECIES
Translation "192:192=41:41, 198:198=60:60"
DamageFactor "ShieldAttacker", 0
DamageFactor "TimeThird", 0
var int user_spd;
States
{
Spawn:
TNT1 A 0
SATK A 0 A_GiveInventory("LimitFlag", 1, AAPTR_TARGET)
TNT1 A 0 A_SpawnItemEx("AssistTimerMaster")
TNT1 A 0 A_SetUserVar("user_spd",10)
TNT1 A 1 A_Jump(256,"Move")
wait
//goto Move

TurnAround:
TNT1 A 0 A_SetAngle(angle + 180)
TNT1 A 0 A_ChangeVelocity(user_spd, 0, 0, CVF_RELATIVE | CVF_REPLACE)
TNT1 A 0 A_TakeInventory("ShieldAttackerTurnAroundCounter", 13)
Move:
TNT1 A 0 A_RearrangePointers(AAPTR_MASTER, AAPTR_MASTER)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK A 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS) TNT1 A 0 A_JumpIfInTargetInventory("TimeManIsSwing",1,"Check1")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK A 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS) TNT1 A 0 A_JumpIfInTargetInventory("TimeManIsSwing",1,"Check2")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK B 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS) TNT1 A 0 A_JumpIfInTargetInventory("TimeManIsSwing",1,"Check3")
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK B 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS) TNT1 A 0 A_JumpIfInTargetInventory("TimeManIsSwing",1,"Check4")
TNT1 A 0 A_GiveInventory("ShieldAttackerTurnAroundCounter", 1)
TNT1 A 0 A_JumpIfInventory("ShieldAttackerTurnAroundCounter", 16, "TurnAround")
TNT1 A 0 A_JumpIfInventory("AssistTimer", EA_TIMER, "Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
loop

Pain:
TNT1 A 0 A_GiveInventory("ShieldAttackerDamageProtector")
TNT1 A 1 A_Jump(256,"Move")
wait

Check1:
TNT1 A 0 A_JumpIfCloser(100,"Launch")
goto Move+4

Check2:
TNT1 A 0 A_JumpIfCloser(100,"Launch")
goto Move+7

Check3:
TNT1 A 0 A_JumpIfCloser(100,"Launch")
goto Move+10

Check4:
TNT1 A 0 A_JumpIfCloser(100,"Launch")
goto Move+13

Launch:

//TNT1 A 0 ACS_NamedExecuteAlways("VC_FollowAimDirection",0,0)
//TNT1 A 0 A_SetUserVar("user_spd",30)
TNT1 A 0 A_GiveToTarget("ShieldAttackLauncher_CI")
TNT1 A 1 A_PlaySoundEx("weapon/ClownManShock","SoundSlot7")
TNT1 AAA 0 A_SpawnItemEx("ThunderCarnivalSpark",Random(-40,40),Random(-40,40),Random(-40,40),0,0,0,0,SXF_TRANSFERTRANSLATION)
TNT1 AAA 0 A_SpawnItemEx("ThunderCarnivalElectricity",Random(-40,40),Random(-40,40),Random(-40,40),0,0,0,0,SXF_TRANSFERTRANSLATION)
stop
//goto TurnAround+1

Death:
TNT1 A 0 A_SpawnItemEx("GenericAssistDeath", 0, 0, height/2)
TNT1 A 0 A_TakeInventory("LimitFlag", 1, 0, AAPTR_TARGET)
stop
}
}


actor TimeManShieldAttackerAssistFast : TimeManShieldAttackerAssist
{
reactionTime 105
States
{
TurnAround:
TNT1 A 0 A_SetUserVar("user_spd",30)
TNT1 A 0 A_SetAngle(angle + 180)
TNT1 A 0 A_ChangeVelocity(user_spd, 0, 0, CVF_RELATIVE | CVF_REPLACE)
TNT1 A 0 A_TakeInventory("ShieldAttackerTurnAroundCounter", 13)
Spawn:
Move:
TNT1 A 0 A_SetUserVar("user_spd",30)
TNT1 A 0 //A_RearrangePointers(AAPTR_MASTER, AAPTR_MASTER)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK A 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK A 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK B 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_missileyank",0,28)
SATK B 1 A_SpawnItemEx("ShieldAttackerHitbox",22,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERTRANSLATION|SXF_TRANSFERPOINTERS)
TNT1 A 0 A_GiveInventory("ShieldAttackerTurnAroundCounter", 1)
TNT1 A 0 A_JumpIfInventory("ShieldAttackerTurnAroundCounter", 16, "TurnAround")
TNT1 AA 0 A_Countdown//A_JumpIfInventory("AssistTimer", EA_TIMER, "Death")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
TNT1 A 1 A_Jump(256,"Move")
wait
}
}

Actor ShieldAttackLauncher_CI : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("ShieldAttackerSummon2", 0, 0, 6, 30, 0, 0, 0)//A_SpawnItemEx("TimeManShieldAttackerAssistFast", 0, 0, 6, 30, 0, 0, 0)
		stop
	}
}

actor ShieldAttackerTurnAroundCounter : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 16
}

actor ShieldAttackerDamageProtector : Powerup
{
powerup.duration 20
DamageFactor 0
}

actor ShieldAttackerHitbox
{
Obituary "$OB_SHIELDATTACKER"
+MISSILE
Speed 0
+DONTSPLASH
+NOEXPLODEFLOOR
+FLOORCLIP
+NOGRAVITY
+RIPPER
Damage (10)
Height 64
Radius 30
health 99999
scale 2.5
+SHOOTABLE
+NOBLOOD
-SOLID
painchance 256
bloodtype ""
species "TimeArrowType"
+THRUSPECIES
+CANTSEEK
+DONTRIP
+GHOST
+NORADIUSDMG
+NOTARGETSWITCH
DamageType "ShieldAttacker"
States
{
Spawn:
TNT1 A 0
TNT1 AA 1 //ACS_NamedExecuteAlways("cbm_missileyank",0,28)
stop
Death:
TNT1 A 0 //A_PlaySound("item/protoreflect")
TNT1 A 1
stop
Pain:
TNT1 A 0 A_PlaySound("item/protoreflect")
stop
}
}

actor ShieldAttackerProtection : PowerProtection
{
powerup.duration 7
DamageFactor "ShieldAttacker", 0.0
}

actor ShieldAttackerSummon : GenericAssistCapsule
{
+NOGRAVITY
States
{
Assist:
NMEA D 0 A_RearrangePointers(AAPTR_NULL, AAPTR_TARGET)
NMEA D 0 A_SpawnItemEx("TimeManShieldAttackerAssist", 0, 0, -32, 6, 0, 0, 0, SXF_TRANSFERPOINTERS|SXF_TRANSFERTRANSLATION)
goto Death+2
}
}

actor ShieldAttackerSummon2 : GenericAssistCapsule
{
+NOGRAVITY
States
{
Spawn:
TNT1 A 0 
goto Assist
Assist:
TNT1 A 0 //A_RearrangePointers(AAPTR_NULL, AAPTR_TARGET)
TNT1 A 1 A_SpawnItemEx("TimeManShieldAttackerAssistFast", 0, 0, 6, 30, 0, 0, 0, SXF_TRANSFERPOINTERS|SXF_TRANSFERTRANSLATION)
stop
}
}