actor Darkman3 : VCBaseClass
{
Player.ScoreIcon "DAR3MUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Darkman3"
player.soundclass "darkman3c"
player.startitem "NormalArmor"
player.startitem "DarkCannon3Boss"
player.startitem "UltimateAttackItem2"
player.startitem "UltSoundWatcherSpawn2"
Player.startitem "Base112Ammo",112
player.startitem "IsFromMM5"
player.forwardmove 0.8,0.8
player.sidemove 0.78,0.78
Player.ViewHeight 53
player.jumpz 10
States
{
Spawn:
DAR3 B 0
DAR3 B 1 A_JumpIf(z-floorz>0, "Jumping")
DAR3 A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2
See:
DAR3 BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1
Jumping:
DAR3 I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait
Animation0:
Missile:
DAR3 FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
Missile2:
DAR3 GGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn+2
JumpingMissile:
DAR3 JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
JumpingMissile2:
DAR3 IIIII 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping
Animation1:
DarkRingsA:
DAR3 KKKKK 1 A_JumpIf(z-floorz>0, "JumpingDarkRingsA")
Goto Spawn+2
Animation2:
DarkRingsB:
DAR3 LLLLL 1 A_JumpIf(z-floorz>0, "JumpingDarkRingsB")
Goto Spawn+2
Animation3:
DarkRingsC:
DAR3 MMMMM 1 A_JumpIf(z-floorz>0, "JumpingDarkRingsC")
Goto Spawn+2
JumpingDarkRingsA:
DAR3 NNNNN 1 A_JumpIf(z-floorz<=0, "DarkRingsA")
Goto Jumping
JumpingDarkRingsB:
DAR3 IIIII 1 A_JumpIf(z-floorz<=0, "DarkRingsB")
Goto Jumping
JumpingDarkRingsC:
DAR3 OOOOO 1 A_JumpIf(z-floorz<=0, "DarkRingsC")
Goto Jumping
ClassPain:
DAR3 HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
WeaponGetM:
ClassDeath:
DAR3 H 20 ACS_ExecuteAlways(999,0,0)
DAR3 H 0 A_PlayerScream
PLY1 H 0 A_SpawnItemEx("FakeDeathFX", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
}
}

actor DarkCannon3Boss : VCBaseWeapon
{
Obituary "$OB_DARKMANTHREE1"
weapon.ammotype "Base112Ammo"
States
{
Ready:
TNT1 A 0
DKC3 A 0 A_JumpIfInventory("IsUsingAltSkin1",1,"AltSkinFrame")
"####" A 0 A_JumpIfInventory("DarkRingsCooldown",1,"Ready.NoAltfire")

"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,112))
"####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_GiveInventory("Base112Ammo",2)
Goto Ready
Ready.NoAltfire:
"####" A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",2,112)|WRF_NOSECONDARY)
"####" A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
"####" A 0 A_GiveInventory("Base112Ammo",2)
Goto Ready

AltSkinFrame:
D_C3 A 0
goto Ready+2

Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
DKC3 A 1 A_Lower
Goto Deselect
Select:
TNT1 A 0 A_SpawnItemEx("DM3SkinWatcher")
TNT1 A 0 ACS_ExecuteAlways(991,0,5810)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
DKC3 A 1 A_Raise
Goto Select
Fire:
"####" A 0 A_JumpIfInventory("Base112Ammo",11,1)
Goto EndMain
"####" A 0 A_PlaySoundEx("weapon/Dark3Shot","Weapon")
"####" A 0 A_FireCustomMissile("Dark3Shot",0,0,16,5)
"####" A 0 A_TakeInventory("Base112Ammo",11)
"####" A 0 A_GiveInventory("BaseCustomFlag1")
"####" Q 1 Offset(2,34)
"####" A 1 Offset(8,40)
"####" A 2 Offset(16,48)
"####" A 2 Offset(8,40)
"####" A 0 A_Refire("Fire")
EndMain:
"####" A 0 A_TakeInventory("BaseCustomFlag1")
Goto Ready

Flash.Altfire:
DKC3 RRSS 1 A_JumpIfInventory("IsDead", 1, "NoFlash")
Stop

AltFire:
"####" A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
"####" A 1 Offset(-8,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-16,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-24,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-32,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-33,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-31,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-33,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-31,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-33,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 1 Offset(-31,32)ACS_NamedExecuteWithResult("VC_SetState",1)
"####" A 0 A_GunFlash("Flash.Altfire")
"####" A 0 A_PlaySoundEx("classes/sparkfx","Weapon")
"####" A 0 A_FireCustomMissile("Dark3Rings",  0,0,0,5)
"####" A 0 A_FireCustomMissile("Dark3Rings", 16,0,0,5)
"####" A 0 A_FireCustomMissile("Dark3Rings",-16,0,0,5)
"####" A 0 A_GiveInventory("Base112Ammo",46)//2 * 23
"####" A 0 A_GiveInventory("DarkRingsCooldown",70)
"####" A 0 A_SpawnItemEx("Dark3AltfireWatcher")
"####" AAAAA 1 Offset(32,32)ACS_NamedExecuteWithResult("VC_SetState",3)
"####" AAAAA 1 Offset(32,32)ACS_NamedExecuteWithResult("VC_SetState",2)
"####" A 1 Offset(24,32)
"####" A 1 Offset(16,32)
"####" A 1 Offset(8,32)
Goto Ready
UltimateAttack:
"####" A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,47) "####" A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
"####" A 0 A_GiveInventory("PowerUltBuildCooldown",1)
"####" LLMMNN 1 ACS_NamedExecuteWithResult("VC_SetState",0)
UltHold:
"####" O 1 ACS_NamedExecuteWithResult("VC_SetState",0) "####" O 0 A_TakeInventory("MediumShortUltimateAmmo",1) "####" O 0 A_FireCustomMissile("WilyPressPreview",0,0,0,8)
"####" O 0 A_JumpIfInventory("MediumShortUltimateAmmo",1,1) Goto FirePress "####" A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3||ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"FirePress")
loop
FirePress:
"####" P 0 A_PlaySoundEx("weapon/Dark3Shot","Weapon")
"####" P 0 A_FireCustomMissile("WilyPressStart",0,0,0,8)
"####" P 0 A_TakeInventory("MediumShortUltimateAmmo",200)
"####" PPPPPPPPONML 2 A_TakeInventory("UltAttackFlag",1)
Goto Ready
}
}

actor Dark3Shot : FastProjectile
{
PROJECTILE
damagetype "Darkman3Main"
Obituary "$OB_DARKMANTHREE1"
Damage (8)
radius 4
height 8
Speed 70
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
DARS D 1
wait
}
}

actor Dark3Rings
{
var int user_dmg;
PROJECTILE
damagetype "Darkman3Alt"
Obituary "$OB_DARKMANTHREE2"
Damage (8 + user_dmg)//(3)
radius 4
height 12
Speed 20
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DARS E 4
TNT1 A 0 A_SetUserVar("user_dmg",12)
Spawn2:
DARS FE 4
loop
}
}

actor StunnedCounter : Powerup
{
powerup.duration 40
}

actor Dark3StunnedFlag : VCOnce{}

actor Dark3AltfireWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("DarkRingsCooldown",1)
TNT1 A 0 A_JumpIfInTargetInventory("DarkRingsCooldown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

actor DarkRingStunActivator : CustomInventory
{
+INVENTORY.AUTOACTIVATE
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("StunnedCounter", 1, "No")
TNT1 A 0 A_Stop
PLAY H 0 A_GiveInventory("DarkRingStunned",1)
PLAY H 0 A_GiveInventory("StunnedCounter",1)
PLAY H 0 A_GiveInventory("Dark3StunnedFlag",1)
PLAY H 0 A_GiveInventory("CriticalDeath",1)
PLAY H 0 ACS_NamedExecuteAlways("core_flyplayer",0,0,1)
PLAY H 0 ACS_NamedExecuteAlways("core_freezeplayer",0,0,1)
TNT1 A 0 A_SpawnItemEx("Dark3StunnedWatcher")
TNT1 A 1
stop
No:
TNT1 A 0
stop
}
}

actor Dark3StunnedWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_GiveToTarget("MovementFrozen3")
TNT1 A 0 A_JumpIfInTargetInventory("StunnedCounter", 1, "Spawn")
PLAY H 0 A_TakeFromTarget("Dark3StunnedFlag",1)
PLAY H 0 A_TakeFromTarget("PowerDarkRingStunColor",999)
PLAY H 0 A_TakeFromTarget("DarkRingStunned",999)
PLAY H 0 A_TakeFromTarget("CriticalDeath",999)
TNT1 A 5 A_GiveToTarget("DarkRingUnstun")
stop
}
}

actor PowerDarkRingStunColor : PowerUp
{
powerup.colormap 0.419,0.419,0.419,1.0,1.0,1.0
}

actor DarkRingStunned : PowerupGiver
{
  inventory.maxamount 0
  powerup.duration -99
  powerup.type "PowerDarkRingStunColor"
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  states
  {
  Spawn:
    TNT1 A 5
    loop
  }
}

actor DarkRingUnstun : CustomInventory
{
+INVENTORY.AUTOACTIVATE
States
{
Use:
PLAY H 0 ACS_NamedExecuteAlways("core_flyplayer",0,0,0)
PLAY H 0 ACS_NamedExecuteAlways("core_freezeplayer",0,0,0)
PLAY H 0 A_TakeFromTarget("PowerDarkRingStunColor",999)
PLAY H 0 A_TakeFromTarget("DarkRingStunned",999)
PLAY H 0 A_GiveInventory("MovementReturnFailsafe")
PLAY H 0 A_TakeFromTarget("CriticalDeath",999)
PLAY H 0 A_TakeFromTarget("DarkCannonDebuff")
PLAY H 0 A_GiveInventory("StoneStareProtect")
stop
}
}

actor DarkCannonDebuff : Powerup
{
//damagefactor "Darkman3Main", 2.0
Powerup.Duration -9
}

actor DarkCannonDebuffPowerUp : BasicPowerupGiver
{
powerup.type "DarkCannonDebuff"
}

actor InflictDarkCannonDebuff : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("StoneStareProtect",1,"No")
TNT1 A 0 A_JumpIfInventory("DarkCannonDebuff",1,"No")
TNT1 A 0 A_GiveInventory("DarkCannonDebuffPowerUp",1)
TNT1 A 0 A_GiveInventory("DarkCannonDebuffBaseItemPickup",1)
stop
No:
TNT1 A 0
stop
}
}

Actor DarkCannonDebuffBaseItemPickup : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("DarkCannonDebuffBaseFXHelper")
Stop
}
}

actor DarkCannonDebuffBaseFXHelper : BasicHelper
{
reactiontime 40
scale 2.5
States
{
Spawn:
TNT1 A 0
goto Spawn2

Spawn2Start:
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
Spawn2:
//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 1 A_Warp(AAPTR_TRACER,0,0,28,180,0)
TNT1 A 0 A_GiveInventory("WeaponCharge",1)
TNT1 A 0 A_GiveToTarget("DarkCannonDebuffBaseFX")
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIfInventory("WeaponCharge",9,"Spawn3Start")
loop
Spawn3Start:
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
Spawn3:
TNT1 A 1 A_Warp(AAPTR_TRACER,0,0,28,180,0)
TNT1 A 0 A_GiveInventory("WeaponCharge",1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIfInventory("WeaponCharge",9,"Spawn2Start")
loop
Death:
TNT1 A 1
stop
}
}

Actor DarkCannonDebuffBaseFX : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("DarkCannonDebuff",1,"Cannon")
fail
Cannon:
BRKD A 0 A_SpawnItemEx("DarkCannonDebuffFX2",0,1,90,0,0,0,0,1)
fail
}
}

actor DarkCannonDebuffFX2
{
+NOGRAVITY
-SOLID
+DONTSPLASH
+DONTBLAST
+THRUGHOST
+THRUACTORS
+NOINTERACTION
Scale 2.5
States
{
Spawn:
BRKD A 0
stop
Death:
TNT1 A 0
stop
}
}

Actor DM3CritFX : BasicClientSide
{
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		DARS D 1 A_SetScale(ScaleX - 0.04, ScaleY - 0.04) DARS D 0 A_FadeOut(0.05)
		Goto Spawn+2
	}
}

actor WilyPressPreview : FastProjectile
{
	PROJECTILE
	+SKYEXPLODE
	+NOEXPLODEFLOOR
	+THRUACTORS
	+DONTBLAST
	damage (0)
	speed 600
	radius 16
	height 16
	states
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		TNT1 AAAAAAA 1
		Death:
		TNT1 A 0 A_SpawnItemEx("WilyPressFXHelper",0,0,0,0,0,0)
		TNT1 A 1
		stop
	}
}

actor WilyPressFXHelper : BasicHelper
{
+CLIENTSIDEONLY
States
{
Spawn:
TNT1 A 0
TNT1 A 5 A_JumpIf(CallACS("GVH_IsTargetClient")==1,"Spawn2")
goto Death
Spawn2:
TNT1 A 0 A_SpawnItemEx("WilyPressFX",0,0,0,0,0,-1000)
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
stop
Death:
TNT1 A 0
stop
}
}

actor WilyPressFX
{
	+SKYEXPLODE
	+NOEXPLODEFLOOR
	+NOTARGETSWITCH
	+DONTBLAST
	PROJECTILE
	scale 2.5
	radius 5
	height 5
	Renderstyle Translucent
	Alpha 0.6
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		WPRS A 2
		stop
	}
}


actor WilyPressStart : FastProjectile
{
PROJECTILE
+SPECTRAL
Radius 4
Height 4
scale 2.5
-DONTBLAST
+RIPPER
+SKYEXPLODE
speed 600
damage (0)
States
{
Spawn:
TNT1 AAAAAAA 1
Death:
TNT1 A 0 A_CheckFloor("Floor")
TNT1 A 0 A_CheckCeiling("Ceiling")
TNT1 A 1 //A_PlaySoundEx("misc/catcherdrop","Body")
TNT1 A 0 A_SpawnItemEx("WilyPressSuzyMark",0,0,0,0,0,2000,0)
stop
Floor:
TNT1 A 1 //A_PlaySoundEx("misc/catcherdrop","Body")
TNT1 A 0 A_SpawnItemEx("WilyPressSuzyMark",0,0,0,0,0,2000)
stop
Ceiling:
TNT1 A 1 //A_PlaySoundEx("misc/catcherdrop","Body")
TNT1 A 0 A_SpawnItemEx("WilyPressSuzyMark",0,0,0,0,0,2000)
stop
}
}

actor WilyPressSuzyMark
{
PROJECTILE
+RIPPER
-DONTBLAST
+SKYEXPLODE
+DONTREFLECT
radius 2
height 8
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
goto Death
Death:
TNT1 A 0 A_PlaySoundEx("misc/catcherdrop","Body")
TNT1 A 30
TNT1 A 0 A_SpawnItemEx("WilyPress",0,0,0,0,0,-30)
stop
}
}

actor WilyPress
{
Obituary "$OB_DARKMANTHREE3"
PROJECTILE
Radius 1
Height 1
scale 2.5
-NOGRAVITY
damage(0)
damagetype "PunkSuzy"
+THRUACTORS
+FORCEXYBILLBOARD 
+SKYEXPLODE
+DONTREFLECT
speed 30
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",30)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,30)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",25)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,25)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",20)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,20)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",15)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,15)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",0)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,10)
loopit:
WPRS A 1 A_CustomMissile("WilyPressMidFlightDamager",0)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,-3)//A_Explode(250,150,0,0,150)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",30)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,30)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",25)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,25)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",20)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,20)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",15)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,15)
TNT1 A 0 A_CustomMissile("WilyPressMidFlightDamager",10)//A_SpawnItemEx("WilyPressMidFlightDamager",0,0,10)
loop
Death:
TNT1 A 0 A_PlaySoundEx("weapon/WilyPressCrush","Weapon")
GSZY A 0 A_Quake(6,25,0,1200)
WPRS A 70 A_Explode(250,150,0,0,150)

TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown")
GSZY C 0 A_SpawnItemEx("RisingWilyPress",0,0,0,0,0,30)
stop
}
}


actor WilyPressMidFlightDamager
{
+MISSILE
-SOLID
+RIPPER
+NOGRAVITY
+SKYEXPLODE
+THRUSPECIES
+NOINTERACTION
Obituary "$OB_DARKMANTHREE3"
damagetype "PunkSuzy"
species "ConcretemanType"
damage (250)
height 3
radius 150
speed 0
States
{
Spawn:
TNT1 A 0
DARS D 2
stop
}
}

actor RisingWilyPress: WilyPress
{
+NOINTERACTION
+NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
WPRS AAA 30
stop
Death:
TNT1 A 0
stop
}
}

actor DarkRingsCooldown : Ammo
{
inventory.amount 1
inventory.maxamount 70
+INVENTORY.IGNORESKILL
}

actor DM3SkinWatcher
{
Height 0
Radius 0
+NOINTERACTION
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 AAA 1 A_GiveToTarget("DM3SkinCheck")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
loop
Death:
TNT1 A 0
stop
}
}

actor DM3SkinCheck : SkinChecker
{
States
{
Pickup:
TNT1 A 0 A_JumpIf(CallACS("GC_GetSkinNum")==255,"AltSkin1")
goto NormalSkin
}
}