actor Duo : SemiHighArmorClass
{
Player.ScoreIcon "DUOMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Duo"
player.soundclass "Duoc"
player.startitem "HandOfJusticeBoss"
player.startitem "UltimateAttackItem4"
player.startitem "UltSoundWatcherSpawn4"
player.startitem "IsACopywep"
player.startitem "IsDuo"
player.startitem "IsNotARobotMaster"
player.startitem "Base112Ammo", 112
player.startitem "IsFromMM8"
player.viewheight 51
projectilepassheight 87.5
player.forwardmove 0.7,0.7
player.sidemove 0.68,0.68
player.jumpz 10
States
{
Animation0:
Spawn:
DUOR B 0 A_JumpIfInventory("SuperArmTemp",1,"SpawnCarry")
DUOR B 0 A_JumpIfInventory("DeepDiggerFlagL",1,"SpawnCarry")
DUOR B 0 A_JumpIfInventory("DeepDiggerFlagR",1,"SpawnCarry")
DUOR B 1 A_JumpIf(z-floorz>0, "Jumping")
SpawnIdle:
DUOR A 0 A_JumpIfInventory("SuperArmTemp",1,"SpawnCarry")
DUOR A 0 A_JumpIfInventory("DeepDiggerFlagL",1,"SpawnCarry")
DUOR A 0 A_JumpIfInventory("DeepDiggerFlagR",1,"SpawnCarry")
DUOR A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto SpawnIdle
SpawnCarry:
1DUO P 0 A_JumpIf(momx>0.01||momy>0.01||momx<-0.01||momy<-0.01,"SeeCarry")
1DUO P 1 A_JumpIf(z-floorz>0, "JumpingCarry")
SpawnCarryIdle:
1DUO O 0 A_JumpIf(momx>0.01||momy>0.01||momx<-0.01||momy<-0.01,"SeeCarry")
1DUO O 1 A_JumpIf(z-floorz>0, "JumpingCarry")
Goto SpawnCarryIdle

See:
DUOR BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn
SeeCarry:
1DUO PPPPPQQQQQRRRRRSSSSS 1 A_JumpIf(z-floorz>0, "JumpingCarry")
Goto SpawnCarry+1

Jumping:
0DUO A 0 A_JumpIfInventory("IsCometAttacking",1,"JusticeCometStance")
0DUO A 0 A_JumpIf(z-floorz<=0, "Spawn")
0DUO A 1 A_JumpIf(momz<=0,"Landing")
loop
Landing:
0DUO B 0 A_JumpIfInventory("IsCometAttacking",1,"JusticeCometStance")
0DUO B 0 A_JumpIf(z-floorz<=0, "Spawn")
0DUO B 1 A_JumpIf(momz>0,"Jumping")
loop
JumpingCarry:
1DUO T 0 A_JumpIf(z-floorz<=0, "SpawnCarry")
1DUO T 1 A_JumpIf(momz<=0,"LandingCarry")
loop
LandingCarry:
1DUO U 0 A_JumpIf(z-floorz<=0, "SpawnCarry")
1DUO U 1 A_JumpIf(momz>0,"JumpingCarry")
loop

Animation1:
Missile:
0DUO III 0 A_JumpIfInventory("IsUsingElectricShockWep",1,"Animation35")
0DUO I 0 A_JumpIfInventory("IsDuoMainFiring",1,"DuoCharging")
0DUO IIIII 1 A_JumpIf(z-floorz>0, "JumpingMissile")
Missile2:
0DUO IIIII 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto SpawnIdle
JumpingMissile:
TNT1 A 0 A_JumpIfInventory("IsDuoMainFiring",1,"JumpingDuoCharging")
0DUO JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
JumpingMissile2:
0DUO JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping

DuoCharging:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"DuoCharging2")
0DUO CCCCC 1 A_JumpIf(z-floorz>0, "JumpingDuoCharging")
DuoCharging2:
0DUO EEEEE 1 A_JumpIf(z-floorz>0, "JumpingDuoCharging2")
Goto SpawnIdle
JumpingDuoCharging:
TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"JumpingDuoCharging2")
0DUO DDDDD 1 A_JumpIf(z-floorz<=0, "DuoCharging")
JumpingDuoCharging2:
0DUO FFFFF 1 A_JumpIf(z-floorz<=0, "DuoCharging2")
Goto Jumping

Animation2:
DuoShoulderTackle:
0DUO KKKKKKKKKKKKKKKKKKKK 1
Goto SpawnIdle

Animation3:
GigaFist:
0DUO GGGGG 1 A_JumpIf(z-floorz>0, "JumpingGigaFist")
GigaFist2:
0DUO GGGGG 1 A_JumpIf(z-floorz>0, "JumpingGigaFist2")
Goto SpawnIdle
JumpingGigaFist:
0DUO HHHHH 1 A_JumpIf(z-floorz<=0, "GigaFist")
JumpingGigaFist2:
0DUO HHHHH 1 A_JumpIf(z-floorz<=0, "GigaFist2")
Goto Jumping

Animation4:
FistOfJusticeDash:
0DUO LLL 1
loop

Animation5:
FistOfJusticeLand:
0DUO MMM 1
loop

Animation6: FistOfJusticeA: 0DUO NNN 1
Animation7: FistOfJusticeB: 0DUO OOO 1
Animation8: FistOfJusticeC: 0DUO PPP 1
Animation9: FistOfJusticeD: 0DUO QQQ 1
Animation10: FistOfJusticeE: 0DUO R 5
Goto SpawnIdle

Animation11:
JusticeCometStance:
DUOR JJKK 1 A_JumpIfInventory("IsCometAttacking2",1,"JusticeComet")
DUOR JJ 1 A_JumpIfInventory("IsCometAttacking",1,"JusticeCometStance")
Goto SpawnIdle
JusticeComet:
DUOR LLMM 1
DOUR LL 1 A_JumpIfInventory("IsCometAttacking2",1,"JusticeComet")
Goto SpawnIdle


//Copy weapon animations
Animation30:
SkipFireFrame:
TNT1 A 0
Goto SpawnIdle

Animation31:
Throw:
0DUO SSSSS 1 A_JumpIf(z-floorz>0, "JumpingThrow")
Throw2:
0DUO SSSSS 1 A_JumpIf(z-floorz>0, "JumpingThrow2")
Goto SpawnIdle
JumpingThrow:
0DUO TTTTT 1 A_JumpIf(z-floorz<=0, "Throw")
JumpingThrow2:
0DUO TTTTT 1 A_JumpIf(z-floorz<=0, "Throw2")
Goto Jumping

Animation32:
LightningBolt:
0DUO WWWWW 1
Animation33:
LightningBolt2:
0DUO XXXXX 1
Goto SpawnIdle

Animation34:
HardKnuckle:
0DUO UUUUU 1 A_JumpIf(z-floorz>0,"JumpingHardKnuckle")
HardKnuckle2:
0DUO UUUUU 1 A_JumpIf(z-floorz>0,"JumpingHardKnuckle2")
Goto SpawnIdle
JumpingHardKnuckle:
0DUO VVVVV 1 A_JumpIf(z-floorz<=0,"HardKnuckle")
JumpingHardKnuckle2:
0DUO VVVVV 1 A_JumpIf(z-floorz<=0,"HardKnuckle2")
Goto Jumping

Animation35:
Hand:
0DUO YYYYY 1 A_JumpIf(z-floorz>0,"JumpingHand")
Hand2:
0DUO YYYYY 1 A_JumpIf(z-floorz>0,"JumpingHand2")
Goto SpawnIdle
JumpingHand:
0DUO ZZZZZ 1 A_JumpIf(z-floorz<=0,"Hand")
JumpingHand2:
0DUO ZZZZZ 1 A_JumpIf(z-floorz<=0,"Hand2")
Goto Jumping

Animation36:
ChargeKick:
0DUO KKKKKKKKKKKKKKKKKKKK 1 //A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+1

Animation37:
SlashClawA:
1DUO II 1 A_JumpIf(z-floorz>0, "JumpingSlashClawA")
SlashClawB:
1DUO JJ 1 A_JumpIf(z-floorz>0, "JumpingSlashClawB")
SlashClawC:
1DUO KK 1 A_JumpIf(z-floorz>0, "JumpingSlashClawC")
SlashClawD:
Animation38:
NoSlashClaw:
1DUO KKKKKK 1 A_JumpIf(z-floorz>0, "JumpingSlashClawD")
Goto SpawnIdle
JumpingSlashClawA:
1DUO LL 1 A_JumpIf(z-floorz<=0, "SlashClawA")
JumpingSlashClawB:
1DUO MM 1 A_JumpIf(z-floorz<=0, "SlashClawB")
JumpingSlashClawC:
1DUO NN 1 A_JumpIf(z-floorz<=0, "SlashClawC")
JumpingSlashClawD:
1DUO NNNNNN 1 A_JumpIf(z-floorz<=0, "SlashClawD")
Goto Jumping

Animation39:
FlameSwordA:
1DUO AA 1 A_JumpIf(z-floorz>0,"JumpingFlameSwordA")
FlameSwordB:
1DUO BB 1 A_JumpIf(z-floorz>0,"JumpingFlameSwordB")
FlameSwordC:
1DUO CCCCCCCCCCC 1 A_JumpIf(z-floorz>0,"JumpingFlameSwordC")
FlameSwordD:
Animation40:
NoFlameSword:
1DUO DDDDDDDDD 1 A_JumpIf(z-floorz>0,"JumpingFlameSwordD")
Goto SpawnIdle
JumpingFlameSwordA:
1DUO EE 1 A_JumpIf(z-floorz<=0,"FlameSwordA")
JumpingFlameSwordB:
1DUO FF 1 A_JumpIf(z-floorz<=0,"FlameSwordB")
JumpingFlameSwordC:
1DUO GGGGGGGGGGG 1 A_JumpIf(z-floorz<=0,"FlameSwordC")
JumpingFlameSwordD:
1DUO GGGGGGGGG 1 A_JumpIf(z-floorz<=0,"FlameSwordD")
Goto Jumping

Animation41:
TenguBlade:
1DUO HHHHH 1
Animation42:
TenguBlade2:
1DUO HHHHH 1
Goto SpawnIdle

Animation43:
Breakdash:
0DUO KKKKK 1
Animation44:
Breakdash2:
0DUO KKKKK 1
Goto SpawnIdle

Animation45:
ArmSwingA:
1DUO VVV 1 A_JumpIf(z-floorz>0, "JumpingArmSwingA")
ArmSwingB:
1DUO VVV 1 A_JumpIf(z-floorz>0, "JumpingArmSwingB")
ArmSwingC:
1DUO WWWWWWWWW 1 A_JumpIf(z-floorz>0, "JumpingArmSwingC")
Goto SpawnIdle
JumpingArmSwingA:
1DUO VVV 1 A_JumpIf(z-floorz<=0, "ArmSwingA")
JumpingArmSwingB:
1DUO VVV 1 A_JumpIf(z-floorz<=0, "ArmSwingB")
JumpingArmSwingC:
1DUO XXXXXXXXX 1 A_JumpIf(z-floorz<=0, "ArmSwingC")
Goto Jumping

Animation46:
MegaBall:
1DUO YYYYY 1
MegaBall2:
1DUO ZZZZZ 1
Goto SpawnIdle

Animation47:
Sakugarne:
2DUO AAAAA 1 A_JumpIf(z-floorz>0, "JumpingSakugarne")
Goto SpawnIdle
JumpingSakugarne:
2DUO BBBBB 1 A_JumpIf(z-floorz<=0, "Sakugarne")
Goto Jumping

Animation48:
OilSlider:
2DUO CCCCC 1 A_JumpIf(z-floorz>0, "JumpingOilSlider")
Goto SpawnIdle
JumpingOilSlider:
2DUO DDDDD 1 A_JumpIf(z-floorz<=0, "OilSlider")
Goto Jumping

ClassPain:
DUOR HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto SpawnIdle
WeaponGetM:
ClassDeath:
DUOR H 20 ACS_ExecuteAlways(999,0,0)
DUOR H 0 A_PlayerScream
DUOR H 0 A_SpawnItemEx("FakeDeathFX", 0, 0, 32)
TNT1 A 1 A_CheckPlayerDone
wait
}
}

Actor HandOfJusticeBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammotype2 "Base112Ammo"
Obituary "$OB_DUO1"
const int ULT_SPD = 24;
const int HIT_OFS = 32;
States
{
Ready:
DUOF C 0 A_JumpIfInventory("Base112Ammo",84,"Ready2")
DUOF C 1 A_WeaponReady DUOF C 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
DUOF C 1 A_WeaponReady DUOF C 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
DUOF C 0 A_GiveInventory("Base112Ammo",1)
loop
Ready2:
DUOF C 1 A_WeaponReady DUOF C 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") DUOF C 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
DUOF C 1 A_WeaponReady DUOF C 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") DUOF C 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
DUOF C 0 A_GiveInventory("Base112Ammo",1)
loop

Deselect:
TNT1 A 0 A_GiveInventory("MegaDamageModifier")
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
DUOF C 1 A_Lower
Loop
Select:
TNT1 A 0 A_TakeInventory("MegaDamageModifier")
TNT1 A 0 ACS_ExecuteAlways(998,0,10875)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
DUOF C 1 A_Raise
Loop

Fire: 
DUOF B 0 A_TakeInventory("FistFlag",1)
DUOF B 0 A_GiveInventory("IsDuoMainFiring",1)
DUOF B 0 A_Refire("FireHold")
goto ArmPunch
FireHold:
TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
DUOF B 0 A_JumpIfInventory("Base56Ammo",28,"Charging0")
DUOF B 1 A_GiveInventory("Base56Ammo",1)
DUOF B 0 A_Refire("FireHold")
Goto ArmPunch
Charging0:
DUOF H 0 A_PlaySoundEx("weapon/DuoCharge0","Weapon")
Charging1:
DUOF H 0 A_JumpIfInventory("Base56Ammo",56,"Charging2")
DUOF H 1 A_GiveInventory("Base56Ammo",1)
DUOF H 0 ACS_ExecuteAlways(991,0,10876)
DUOF H 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF H 0 A_Refire("Charging1A")
Goto MidFist
Charging1A:
DUOF H 1 A_GiveInventory("Base56Ammo",1)
DUOF H 0 A_Refire("Charging1B")
Goto MidFist
Charging1B:
DUOF B 1 A_GiveInventory("Base56Ammo",1)
DUOF B 0 ACS_ExecuteAlways(991,0,10875)
DUOF B 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF B 0 A_Refire("Charging1C")
Goto MidFist
Charging1C:
DUOF B 1 A_GiveInventory("Base56Ammo",1)
DUOF B 0 A_Refire("Charging1")
Goto MidFist
Charging2:
DUOF I 0 A_JumpIfInventory("IsBot",1,"BotFire")
DUOF I 0 A_PlaySoundEx("weapon/MM4Charge","Weapon")
DUOF I 1 ACS_ExecuteAlways(991,0,10876)
DUOF I 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF I 0 A_Refire("Charging2A")
Goto GigaFist
Charging2A:
DUOF J 1 ACS_ExecuteAlways(991,0,10877)
DUOF J 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF J 0 A_Refire("Charging2B")
Goto GigaFist
Charging2B:
DUOF K 0 A_PlaySoundEx("weapon/MM4Charge","Weapon")
DUOF K 1 ACS_ExecuteAlways(991,0,10878)
DUOF K 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF K 0 A_Refire("Charging2C")
Goto GigaFist
Charging2C:
DUOF I 1 ACS_ExecuteAlways(991,0,10876)
DUOF I 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF I 0 A_Refire("Charging2D")
Goto GigaFist
Charging2D:
DUOF J 0 A_PlaySoundEx("weapon/MM4Charge","Weapon")
DUOF J 1 ACS_ExecuteAlways(991,0,10877)
DUOF J 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF J 0 A_Refire("Charging2E")
Goto GigaFist
Charging2E:
DUOF K 1 ACS_ExecuteAlways(991,0,10878)
DUOF K 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF K 0 A_Refire("Charging2")
Goto GigaFist
BotFire:
DUOF I 0 A_Jump(12,"GigaFist")
DUOF I 0 A_PlaySoundEx("weapon/MM4Charge","Weapon")
DUOF I 1 ACS_ExecuteAlways(991,0,10876)
DUOF I 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF I 0 A_Refire("BotFireA")
Goto GigaFist
BotFireA:
DUOF J 0 A_Jump(12,"GigaFist")
DUOF J 1 ACS_ExecuteAlways(991,0,10877)
DUOF J 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF J 0 A_Refire("BotFireB")
Goto GigaFist
BotFireB:
DUOF K 0 A_Jump(12,"GigaFist")
DUOF K 0 A_PlaySoundEx("weapon/MM4Charge","Weapon")
DUOF K 1 ACS_ExecuteAlways(991,0,10878)
DUOF K 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF K 0 A_Refire("BotFireC")
Goto GigaFist
BotFireC:
DUOF I 0 A_Jump(12,"GigaFist")
DUOF I 1 ACS_ExecuteAlways(991,0,10876)
DUOF I 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF I 0 A_Refire("BotFireD")
Goto GigaFist
BotFireD:
DUOF J 0 A_Jump(12,"GigaFist")
DUOF J 0 A_PlaySoundEx("weapon/MM4Charge","Weapon")
DUOF J 1 ACS_ExecuteAlways(991,0,10877)
DUOF J 0 A_GiveInventory("BaseCustomFlag1",1)
DUOF J 0 A_Refire("BotFireE")
Goto GigaFist
BotFireE:
DUOF K 0 A_Jump(12,"GigaFist")
DUOF K 1 ACS_ExecuteAlways(991,0,10878)
DUOF K 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF K 0 A_Refire("BotFire")
Goto GigaFist
ArmPunch:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
DUOF G 0 A_PlaySoundEx("weapon/mbuster","Weapon") DUOF G 0 ACS_ExecuteAlways(991,0,101)
DUOF G 0 A_TakeInventory("Base56Ammo",56) DUOF G 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF G 0 A_TakeInventory("IsDuoMainFiring",1) DUOF G 0 A_FireCustomMissile("DuoPunchV",0,0,8,0)
FistWait:
DUOF G 1 A_GiveInventory("CutterFlag",1)
DUOF G 0 ACS_NamedExecuteWithResult("VC_SetState",1)
DUOF G 0 A_JumpIfInventory("CutterFlag",35,"FistFinish")
DUOF G 0 A_JumpIfInventory("FistFlag",1,"FistFinish")
loop
FistFinish:
DUOF D 0 //A_PlayWeaponSound("weapon/adapterreturn")
DUOF D 0 A_TakeInventory("CutterFlag",35)
DUOF D 0 A_TakeInventory("FistFlag",1)
DUOF DDC 3
Goto EndMain
MidFist:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
DUOF B 0 A_PlaySoundEx("weapon/DuoCharge2","Weapon") DUOF B 0 ACS_ExecuteAlways(991,0,101)
DUOF B 0 A_TakeInventory("Base56Ammo",56) DUOF B 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF B 0 A_TakeInventory("IsDuoMainFiring",1) DUOF B 0 ACS_NamedExecuteWithResult("VC_SetState",1)
DUOF B 0 A_FireCustomMissile("MidFistV",0,0,8,0)
DUOF CD 1
DUOF G 16
DUOF DC 4
Goto EndMain
GigaFist:
TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
DUOF B 0 A_PlaySoundEx("weapon/DuoCharge3","Weapon") DUOF B 0 ACS_ExecuteAlways(991,0,101)
DUOF B 0 A_TakeInventory("Base56Ammo",56) DUOF B 0 A_TakeInventory("BaseCustomFlag1",1)
DUOF B 0 A_TakeInventory("IsDuoMainFiring",1) DUOF B 0 ACS_NamedExecuteWithResult("VC_SetState",3)
DUOF B 0 A_FireCustomMissile("GigaFistV",0,0,8,0)
DUOF EF 2
DUOF F 16
DUOF DC 4
EndMain:
DUOF C 1
Goto Ready

Altfire:
TNT1 A 0 A_JumpIfInventory("ShoulderTackleCooldown",1,"NoAlt")
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"NoAlt")
TNT1 A 0 A_GiveInventory("DuoAltfirePickUp",1)
DUOL M 1 Offset(-120,39)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(-60,35)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(20,33)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(22,35)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(24,36)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(26,37)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(26,38)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(26,39)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(26,40)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(26,41)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(26,42)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(24,43)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(22,44)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(20,45)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(15,46)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL M 1 Offset(10,47)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL N 1 Offset(-15,49)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL N 1 Offset(-39,51)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOL N 1 Offset(-78,53)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 Offset(-78,200)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 1 Offset(-78,200)ACS_NamedExecuteWithResult("VC_SetState",2) TNT1 A 0 A_SpawnItemEx("ShoulderTackleHitBox",0,0,0,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
DUOF C 1 Offset(78,98)ACS_NamedExecuteWithResult("VC_SetState",0)
DUOF C 1 Offset(39,62)SetPlayerProperty(0,0,4)
DUOF C 1 Offset(15,41)
NoAlt:
DUOF C 2
Goto Ready

User1:
DUPH D 0 A_GiveInventory("DuoTFHandler",1)
DUPH D 1 A_SpawnItemEx("DuoShockWaveDetector",40,0,32)
DUPH D 0 A_GiveInventory("CutterFlag",1)
DUPH D 0 ACS_NamedExecuteWithResult("VC_SetState",4)
DUPH D 0 A_JumpIfInventory("CutterFlag",15,"SlamWait")
DUPH D 0 A_JumpIfInventory("BaseCustomFlag1",1,"SlamWait")
Goto User1+1
SlamWait:
DUPH D 0 ThrustThingZ(0,-100,0,0)
DUPH D 0 A_GiveInventory("CutterFlag",1)
DUPH D 1 A_JumpIf(z-floorz<=1,"PunchIt")
DUPH D 0 ACS_NamedExecuteWithResult("VC_SetState",4)
DUPH D 0 A_SpawnItemEx("EnergyFistCrushHitbox")
DUPH D 0 A_JumpIfInventory("CutterFlag",50,"PunchIt")
loop
PunchIt:
DUPH D 0 SetPlayerProperty(0,0,4)
DUPH D 1 A_Stop DUPH D 0 ACS_NamedExecuteWithResult("VC_SetState",6)
DUPH E 1 A_Stop DUPH E 0 ACS_NamedExecuteWithResult("VC_SetState",7)
DUPH F 1 A_Stop DUPH F 0 ACS_NamedExecuteWithResult("VC_SetState",8)
DUPH H 1 A_Stop DUPH H 0 ACS_NamedExecuteWithResult("VC_SetState",9)
DUPH H 0 A_Quake(3,18,0,200)
DUPH H 0 A_Quake(2,12,0,200)
DUPH H 0 A_Quake(1,6,0,200)
DUPH H 0 A_PlaySoundEx("weapon/duopunch","Body")
DUPH H 0 A_SpawnItemEx("DuoShockWaveV",0,0,32)
FistHold:
DUPH I 1 Offset(4,30)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(1,33)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(4,36)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(2,31)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(1,33)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(2,32)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(0,32)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(0,32)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(0,32)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
DUPH I 1 Offset(0,32)A_Stop DUPH I 0 ACS_NamedExecuteWithResult("VC_SetState",10)
FistEnd:
DUOF C 1 Offset(35,67)A_TakeInventory("BaseCustomFlag1",1)
DUOF C 1 Offset(30,62)A_TakeInventory("CutterFlag",99)
DUOF C 1 Offset(25,57)
DUOF C 1 Offset(20,52)
DUOF C 1 Offset(15,47)
DUOF C 1 Offset(10,42)
DUOF C 1 Offset(5,37)
Goto Ready

UltimateAttack:
DUOF CC 1 A_WeaponReady(WRF_NOFIRE|WRF_DISABLESWITCH)
DUOF C 1 Offset(5,37)A_GiveInventory("DuoUltimatePickUp",1)
DUOF C 1 Offset(10,42)
DUOF C 1 Offset(15,47)
DUOF C 1 Offset(20,52)
DUOF C 1 Offset(25,57)
DUOF C 1 Offset(30,62)
DUOF C 1 Offset(35,67)
DUOF C 1 Offset(40,72)
UltStartHold:
TNT1 A 1 Offset(40,72)A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",39,"UltBegin")
TNT1 A 1 Offset(40,72)A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",39,"UltBegin")
loop

UltBegin:
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_PlaySoundEx("weapon/duoultlaunch","Auto")
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 A_GiveInventory("IsCometAttacking2",1)
Goto JusticeCometUp

JusticeCometUpStart:
TNT1 A 0 A_SpawnItemEx("DuoShockWaveVUlt")
TNT1 A 0 A_Quake(4,20,0,300)
TNT1 A 0 A_StopSound(0)
TNT1 A 0 A_PlaySoundEx("weapon/duoultbounce","Body")
TNT1 A 0 A_SpawnItemEx("JusticeCometDamager",0,0,32)
Goto JusticeCometUp

JusticeCometUp:
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",2) TNT1 A 0 A_SpawnItemEx("DuoSphereFXA")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckCeiling("JusticeCometDownStart") TNT1 A 0 A_JumpIf(z-floorz>300, "JusticeCometDown")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",4) TNT1 A 0 A_SpawnItemEx("DuoSphereFXA")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckCeiling("JusticeCometDownStart") TNT1 A 0 A_JumpIf(z-floorz>300, "JusticeCometDown")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",2) TNT1 A 0 A_SpawnItemEx("DuoSphereFXB")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckCeiling("JusticeCometDownStart") TNT1 A 0 A_JumpIf(z-floorz>300, "JusticeCometDown")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",4) TNT1 A 0 A_SpawnItemEx("DuoSphereFXB")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckCeiling("JusticeCometDownStart") TNT1 A 0 A_JumpIf(z-floorz>300, "JusticeCometDown")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
loop

JusticeCometDownStart:
DUPH H 0 A_SpawnItemEx("DuoShockWaveVUlt")
TNT1 A 0 A_Quake(4,20,0,300)
TNT1 A 0 A_StopSound(0)
TNT1 A 0 A_PlaySoundEx("weapon/duoultbounce","Body")
TNT1 A 0 A_SpawnItemEx("JusticeCometDamager",0,0,-32)
Goto JusticeCometDown

JusticeCometDown:
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",2) TNT1 A 0 A_SpawnItemEx("DuoSphereFXA")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,-ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckFloor("JusticeCometUpStart")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,-HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",4) TNT1 A 0 A_SpawnItemEx("DuoSphereFXA")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,-ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckFloor("JusticeCometUpStart")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,-HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",2) TNT1 A 0 A_SpawnItemEx("DuoSphereFXB")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,-ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckFloor("JusticeCometUpStart")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,-HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_JumpIfInventory("MediumLongUltimateAmmo",1,1) Goto UltEnd
TNT1 A 0 A_TakeInventory("MediumLongUltimateAmmo",4) TNT1 A 0 A_SpawnItemEx("DuoSphereFXB")
TNT1 A 1 Offset(40,72)A_ChangeVelocity(ULT_SPD,0,-ULT_SPD,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_CheckFloor("JusticeCometUpStart")
TNT1 A 0 A_SpawnItemEx("JusticeCometHitBox",0,0,-HIT_OFS,momx,momy,momz,0,SXF_TRANSFERTRANSLATION)
loop

UltEnd:
DUOF C 1 Offset(40,73)A_GiveInventory("DuoUltimatePickUp2",1)
DUOF C 1 Offset(35,67)
DUOF C 1 Offset(30,62)
DUOF C 1 Offset(25,57)
DUOF C 1 Offset(20,52)
DUOF C 1 Offset(15,47)
DUOF C 1 Offset(10,42)
DUOF C 1 Offset(5,37)
Goto Ready
}
}

actor DuoPunchV
{
PROJECTILE
+SKYEXPLODE
+DONTREFLECT
damagetype "DuoV"
Obituary "$OB_DUO1"
Damage (18)
Speed 32
Radius 10
Height 10
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
Spawn2:
TNT1 A 0 A_JumpIfInventory("Cutterflag",5,"Spawn3")
GIGF A 1 A_SpawnItemEx("DuoPunchWireVFX")
TNT1 A 0 A_GiveInventory("CutterFlag",1)
loop
Spawn3:
GIGF AA 1 A_TakeInventory("CutterFlag",5) 
Death:
TNT1 A 1 A_CustomMissile("DuoPunchReturnV",0,0,0,0)
stop
}
}

Actor DuoPunchReturnV
{
radius 0
height 0
speed 60
damage (0)
scale 2.5
+DONTBLAST
+RIPPER
PROJECTILE
+SKYEXPLODE
+NOINTERACTION
+SEEKERMISSILE
+DONTREFLECT
ReactionTime 35
states
{
Spawn:
GIGF J 0
GIGF J 0 A_FaceTarget
GIGF J 0 A_CustomMissile("DuoPunchWireVFX",0,0,0,0)
GIGF JJJJ 1 A_JumpIfCloser(60,"Return")
TNT1 A 0 A_CustomMissile("DuoPunchReturnV",0,0,0,0)
stop
Return:
GIGF A 0 A_GiveToTarget("FistFlag",1)
stop
}
}

Actor DuoPunchWireV : DuoPunchReturnV
{
Translation "199:199=95:95", "202:202=89:89"
+NOCLIP
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
Spawn2:
TNT1 A 0 A_JumpIfCloser(64,"Death")
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
TNT1 A 1 A_SpawnItemEx("DuoPunchWireVFX")
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0,"Death")
loop
Return:
Death2:
Death:
TNT1 A 0 
stop
}
}

Actor DuoPunchWireVFX
{
Translation "199:199=95:95", "202:202=89:89"
+NOINTERACTION
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
TNT1 A 0 A_JumpIfCloser(32,"Death")
GIGF B 2 
stop
Death:
TNT1 A 0
stop
}
}

actor MidFistV
{
PROJECTILE
+SKYEXPLODE
+BRIGHT
Damagetype "DuoV"
Obituary "$OB_DUO2"
Damage (30)
Speed 26
Radius 16
Height 16
Scale 2.5
States
{
Spawn:
GIGF CD 1
Loop
Death:
GIGF F 0 
GIGF F 0 A_Recoil(5)
GIGF CD 1 A_FadeOut
Goto Death+2
}
}

actor GigaFistV
{
PROJECTILE
+SKYEXPLODE
+BRIGHT
Damagetype "DuoV"
Obituary "$OB_DUO3"
RenderStyle "Translucent"
Damage (45)
Speed 40
Radius 24
Height 20
Alpha 0.98
Scale 2.5
ReactionTime 3
States
{
Spawn:
GIGF F 2
GIGF F 1 A_SpawnItemEx("GigaFistFX",64,0,0,momx/7,momy/7,momz/7,0,SXF_ABSOLUTEMOMENTUM)
GIGF G 2
GIGL G 0 A_Countdown
loop
Death:
GIGF F 0 
GIGF F 0 A_Recoil(5)
GIGF F 1 A_FadeOut
Goto Death+2
}
}

Actor GigaFistVFX
{
Translation "195:195=194:194", "204:204=192:192"
+NOINTERACTION
+CLIENTSIDEONLY
Scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
GIGL H 3
GIGL I 5
Death:
GIGL I 1 A_FadeOut(0.5)
Loop
}
}

actor DuoAltfirePickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 A_Recoil(CallACS("VC_XYMob",-50))
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_PlaySoundEx("weapon/chargekick","Weapon")
TNT1 A 0 A_GiveInventory("ShoulderTackleCooldown",140)
TNT1 A 0 A_SpawnItemEx("ShoulderTackleWatcher")
stop
}
}

actor ShoulderTackleHitBox
{
PROJECTILE
+DONTBLAST
+DONTREFLECT
-NOBLOCKMAP
damagetype "DuoVTackle"
Obituary "$OB_DUO4"
damage (20)
Radius 44
Height 44
Speed 0
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
XDeath:
TNT1 A 0
TNT1 A 0 A_JumpIfInTargetInventory("ShoulderTackleBuffer",1,"Skip")
TNT1 A 0 A_GiveToTarget("ShoulderTackleLessCoolDown",1)
TNT1 A 0 A_GiveToTarget("ShoulderTackleBuffer",1)
TNT1 A 0 A_Quake(4,13,0,128,0)
TNT1 A 0 A_PlaySoundEx("weapon/gutstacklehit","Body")
Skip:
TNT1 A 13
stop
}
}

actor ShoulderTackleProtect : PowerProtection
{
powerup.duration 35
damagefactor "DuoVTackle", 0.0
}

actor ShoulderTackleBuffer : Powerup
{
powerup.duration 35
}

//DrainNormal - 140 tics (4 seconds)
//DrainFaster - 70 tics (2 seconds)
actor ShoulderTackleWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn: 
TNT1 AA 0
TNT1 A 0 A_JumpIfInTargetInventory("ShoulderTackleLessCoolDown",1,"DrainFaster")
Goto DrainNormal
DrainFaster:
TNT1 A 0 A_TakeFromTarget("ShoulderTackleCooldown",1) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
DrainNormal:
TNT1 A 0 A_TakeFromTarget("ShoulderTackleCooldown",1) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1
TNT1 A 0 A_JumpIfInTargetInventory("ShoulderTackleCooldown",1,"Spawn")
Death:
TNT1 AA 1 A_TakeFromTarget("ShoulderTackleLessCoolDown",1)
stop
}
}

actor EnergyFistCrushHitbox : BasicExplosion
{
Obituary "$OB_DUO5"
damagetype "DuoV"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(4,40,0,0,40)
stop
}
}

actor DuoShockWaveV
{
PROJECTILE
Damagetype "DuoVEnergyFistCenter"
Obituary "$OB_DUO5"
+RIPPER
+DONTBLAST
damage (0)
radius 1
height 1
const int WAVE_SPEED = 18;
const int WAVE_DEGREE = 15;
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_Explode(25,64,0)
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 0))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 1))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 2))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 3))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 4))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 5))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 6))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 7))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 8))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 9))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*10))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*11))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*12))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*13))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*14))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*15))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*16))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*17))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*18))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*19))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*20))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*21))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*22))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartV",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*23))
stop
}
}

actor DuoShockwavePartV
{
PROJECTILE
Damagetype "DuoVEnergyFist"
Obituary "$OB_DUO5"
+FLOORHUGGER
+RIPPER
+NOCLIP
Speed 30
Scale 2.0
Damage (18)//(18)
Radius 32
Height 32
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
DUOR T 1 A_FadeOut(0.05)
DUOR T 0 A_ChangeFlag("NOCLIP",0)
Spawn2:
DUOR T 1 A_FadeOut(0.05)
loop
}
}

actor DuoShockwavePartProtect : PowerProtection
{
powerup.duration 20
damagefactor "DuoVEnergyFist", 0.0
}

actor DuoWallRush_CI : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("NewWallSlam",1,"PickupNo")
TNT1 A 0 A_GiveInventory("NoNewWallSlam",1)
TNT1 A 0 A_GiveInventory("NewWallSlam",1)
TNT1 A 0 A_GiveInventory("WallSlamRealTimer",1)
TNT1 A 0 A_SpawnItemEX("DuoWallRushChecker")
stop
PickupNo:
TNT1 A 0
stop
}
}

actor DuoWallRushChecker : BaseWallRushChecker
{
damageType "Megabuster"
Obituary "$OB_DUO5"
states
{
DeathCheck:
TNT1 A 0 //A_JumpIfInventory("NewWallSlam",1,"Death",AAPTR_TRACER)
TNT1 A 0 A_SpawnItemEx("RaThorWallBonk")
TNT1 A 0 A_GiveInventory("WallSlamTimer",1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("DuoSlamRocks",random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8),random(-8,8))
TNT1 A 0 A_Quake(3,10,0,256)
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_PlaySoundEx("weapon/wallrush","Weapon")
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,CallACS("TracerHeightGet")/2,0,0)
TNT1 A 0 A_Explode(13,12,0,0,12)
TNT1 A 35
Death:
TNT1 A 2 A_GiveInventory("TempPitProtectEnd_P",1,AAPTR_TRACER)
stop
}
}

actor DuoSlamRocks : ThorSlamRocks
{
translation "208:208=210:210", "46:46=216:216", "8:8=220:220"
}

actor DuoUltimatePickUp : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ThrustThingZ(0,20,0,1)
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_TakeInventory("CutterFlag",99)
TNT1 A 0 A_GiveInventory("InvProtection")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",11)
TNT1 A 0 A_GiveInventory("IsCometAttacking",1)
TNT1 A 0 A_PlaySoundEx("weapon/duoult","Weapon")
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,73)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
stop
}
}

actor DuoUltimatePickUp2 : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_GiveInventory("ShadowVisible")
TNT1 A 0 A_TakeInventory("InvProtection")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",0)
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_TakeInventory("IsCometAttacking",1)
TNT1 A 0 A_TakeInventory("IsCometAttacking2",1)
TNT1 A 0 A_TakeInventory("PowerUltBuildCooldown",1)
stop
}
}

actor JusticeCometDamager
{
+THRUSPECIES
PROJECTILE
damagetype "DuoVComet"
Obituary "$OB_DUO6"
+RIPPER
+DONTBLAST
damage (0)
radius 1
height 1
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(30,100,0,0,100)
stop
}
}

actor JusticeCometHitBox : ShoulderTackleHitBox
{
damagetype "DuoVComet"
Obituary "$OB_DUO6"
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 1
stop
}
}

actor JusticeCometProtect : PowerProtection
{
powerup.duration 15
damagefactor "DuoVComet", 0.0
}

Actor DuoSphereFXA : GigaFistFX
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
Spawn2:
DUOR L 1 A_FadeOut(0.10)
Loop
}
}

Actor DuoSphereFXB : GigaFistFX
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
Spawn2:
DUOR M 1 A_FadeOut(0.10)
Loop
}
}

actor IsDuo : Inventory
{
inventory.amount 1
inventory.maxamount 1
}
actor IsDuoMainFiring : IsDuo {}
actor ShoulderTackleLessCoolDown : IsDuo {}
actor IsCometAttacking : IsDuo {}
actor IsCometAttacking2 : IsDuo {}

actor ShoulderTackleCooldown : Inventory
{
inventory.amount 1
inventory.maxamount 140
}

actor DuoShockWaveDetector
{
PROJECTILE
+DONTBLAST
+DONTREFLECT
-NOBLOCKMAP
Damagetype "DuoVEnergyFistStart"
Obituary "$OB_DUO5"
damage (3)
Height 32
Radius 40
Speed 0
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
XDeath:
TNT1 A 0
TNT1 A 1 A_GiveToTarget("BaseCustomFlag1",1)
stop
}
}

actor DuoShockwaveStartProtect : PowerProtection
{
powerup.duration 20
damagefactor "DuoVEnergyFistStart", 0.0
}

actor DuoTFHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/superboost","Weapon")
TNT1 A 0 A_TakeInventory("Base112Ammo",84)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_Recoil(CallACS("VC_XYMob",-80))
TNT1 A 0 ThrustThingZ(0,100,1,0)//A_ChangeVelocity(0,0,-40,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

actor DuoShockWaveVUlt : DuoShockWaveV
{
Damagetype "DuoVEnergyFistCenterUlt"
Obituary "$OB_DUO6"
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_Explode(25,64,0)
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 0))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 1))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 2))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 3))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 4))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 5))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 6))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 7))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 8))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE* 9))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*10))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*11))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*12))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*13))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*14))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*15))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*16))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*17))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*18))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*19))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*20))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*21))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*22))
TNT1 A 0 A_SpawnItemEx("DuoShockwavePartVUlt",0,0,0,WAVE_SPEED,0,0,(WAVE_DEGREE*23))
stop
}
}

actor DuoShockwavePartVUlt : DuoShockwavePartV
{
Obituary "$OB_DUO6"
-FLOORHUGGER
}

actor DuoWallRush_CIUlt : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("NewWallSlam",1,"PickupNo")
TNT1 A 0 A_GiveInventory("NoNewWallSlam",1)
TNT1 A 0 A_GiveInventory("NewWallSlam",1)
TNT1 A 0 A_GiveInventory("WallSlamRealTimer",1)
TNT1 A 0 A_SpawnItemEX("DuoWallRushCheckerUlt")
stop
PickupNo:
TNT1 A 0
stop
}
}

actor DuoWallRushCheckerUlt : DuoWallRushChecker
{
Obituary "$OB_DUO6"
}
