Actor Skarlet : PlayerPawn
{
	Mass 700
	Player.DisplayName "Skarlet"
	Player.StartItem "SkarletPistol"
	Player.StartItem "SkarletKatana"
	Player.StartItem "SpecialAbility", 1
	Player.StartItem "SealCardAmmo", 1
	Player.WeaponSlot 1, SkarletKatana
	Player.WeaponSlot 2, SkarletPistol
	Player.StartItem "IsHuman", 1
	Player.StartItem "Screamer", 0
	Player.ScoreIcon "SKARST"
	Player.ColorRange 112, 127
	Player.Maxhealth 200
	DamageFactor "GhostTrap", 0.0
	Damagefactor "normal", 1.0
	Damagefactor "AntiAirbolt", 0.0
	Damagefactor "Sentinel", 0.0
	Damagefactor "MechPewPews", 0.0
	Damagefactor "MacheteSlicerino", 0.0
    Damagefactor "GasterSmokeHurt", 0.0
	Damagefactor "StrifeSuit", 0.0
	Player.SoundClass "Skarlet"
	LimitedToTeam 0
	PainChance 0
	PainChance "CreepStun", 256
	PainChance "RavagerBall", 256
	+NOSKIN
	+NOICEDEATH
	+GHOST
	+QUICKTORETALIATE
	+NOTONAUTOMAP
	States
	{
	Spawn:
		SKPL A 0 A_JumpIfInventory("GloomWatchStack",100,"GloomDeath")
		SKPL A -1 SetPlayerproperty(0,0,0)
		Loop
	See:
		SKPL A 0 A_JumpIfInventory("GloomWatchStack",100,"GloomDeath")
		SKPL A 0 A_JumpIfHealthlower(50,"INeedHealingSee")
		SKPL AB 5
		SKPL A 0 
		SKPL CD 5
		SKPL A 0 
		Goto Spawn
	INeedHealingSee:
		SKPL A 0 A_JumpIfInventory("GloomWatchStack",100,"GloomDeath")
		SKPL A 0 A_SpawnItemEx("INeedHealingTrail",random(-20,20),random(-20,20),0,0,0,10)
		SKPL AB 5
		SKPL A 0
		SKPL CD 5
		SKPL A 0 
		Goto Spawn
	Missile:
		SKPL E 0 A_JumpIfInventory("GloomWatchStack",100,"GloomDeath")
		SKPL E 12 
	Goto Spawn
	Melee:
		SKPL E 0 A_JumpIfInventory("GloomWatchStack",100,"GloomDeath")
		SKPL E 6 bright
	Goto Missile
	Pain.Justicar:
	TNT1 A 0 A_custommissile("Justicarattack",14,0,random(0,360))
	TNT1 A 0 A_GiveToTarget("Health",1)
	TNT1 A 0 A_GiveToTarget("JusticarSecondaryAmmo",1)
	Goto pain
	Pain.TeleOtherPlant:
	TNT1 A 0 A_GiveInventory("TeleOtherPlanted",1)
	Goto Pain
	Pain.TeleOtherActivateDamage:
	TNT1 A 0 A_JumpIfInventory("TeleOtherPlanted",1,"TeleOtherSend")
	Goto Pain
	TeleOtherSend:
	TNT1 A 0 A_TakeInventory("TeleOtherPlanted",1)
	TNT1 A 0 A_PlaySound("TeleOther/activate",CHAN_7,1)
	TNT1 A 0 A_SpawnItem("TeleOtherFog")
	TNT1 A 0 ACS_ExecuteAlways(466,0,2)
	SKPL F 1 A_PlaySound("TeleOther/activate",CHAN_6,1)
	TNT1 A 0 A_SpawnItem("TeleOtherFog")
	Goto Pain
	Death.TeleOtherActivateDamage:
	TNT1 A 0 A_JumpIfInventory("TeleOtherPlanted",1,"TeleOtherSplode")
	TNT1 A 0 A_TakeInventory("TeleOtherPlanted",1)
	TNT1 A 0 A_PlaySound("TeleOther/activate",CHAN_7,1)
	TNT1 A 0 A_SpawnItem("TeleOtherFog")
	TNT1 A 0 A_GiveToTarget("KilledMe",1)
	SKPL F 1 A_PlaySound("Gibbage/XSplat")
	NULL A 0 A_PlaySound("gibbage/playergib") 
	NULL A 0 A_NoBlocking 
	NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
	NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
	NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
	NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
	NULL A 1 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
	NULL A -1
	Stop
	TeleOtherSplode:
	TNT1 A 0 A_TakeInventory("TeleOtherPlanted",1)
	TNT1 A 0 A_PlaySound("TeleOther/activate",CHAN_7,1)
	TNT1 A 0 A_SpawnItem("TeleOtherFog")
	TNT1 A 0 ACS_ExecuteAlways(466,0,2)
	TNT1 A 0 A_GiveToTarget("KilledMe",1)
	SKPL F 1 A_PlaySound("Gibbage/XSplat")
	TNT1 A 0 A_PlaySound("TeleOther/activate",CHAN_6,1)
	TNT1 A 0 A_SpawnItem("TeleOtherFog")
	NULL A 0 A_PlaySound("gibbage/playergib") 
	NULL A 0 A_NoBlocking 
	NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
	NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
	NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
	NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
	NULL A 1 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
	NULL A -1
	Stop
	Pain.Choke:
		TNT1 A 0 A_GiveToTarget("Health",2)
		TNT1 A 0 A_GiveToTarget("ChokeCharging",1)
		Goto Pain
	Pain.JusticarSpike:
		TNT1 A 0 ACS_NamedExecuteAlways("ChangeActivator",0)
		TNT1 A 0 A_GiveToTarget("Health",2)
	Pain:
		SKPL F 0 A_JumpIfInventory("GloomWatchStack",100,"GloomDeath")
		SKPL F 4 
		SKPL F 4
		Goto Spawn
	Pain.LoonaClawing:
	TNT1 A 0 A_GiveToTarget("Health",6)
	SKPL F 20 Setplayerproperty(0,1,0)
	SKPL F 2 Setplayerproperty(0,0,0)
	Goto Spawn
	Pain.LoonaClawingLightSFX:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitLight",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",5)
	SKPL F 20 Setplayerproperty(0,1,0)
	SKPL F 2 Setplayerproperty(0,0,0)
	Goto Spawn
	Pain.LoonaClawingHeavySFX:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitHeavy",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",8)
	SKPL F 20 Setplayerproperty(0,1,0)
	SKPL F 2 Setplayerproperty(0,0,0)
	Goto Spawn
	Death.LoonaClawing:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitHeavy",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",50)
	Goto Death.Jitter
	Death.LoonaClawingLightSFX:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitLight",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",50)
	Goto Death.Jitter
	Death.LoonaClawingHeavySFX:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitHeavy",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",50)
	Goto Death.Jitter
	Pain.GloomWatcherLure:
	TNT1 A 0 ACS_ExecuteAlways(134)
	TNT1 A 0 A_Playsound("GloomWatcher/FeintAttack",CHAN_7)
	Goto pain
	Death.GloomWatcherlure:
	TNT1 A 0 ACS_ExecuteAlways(134)
	TNT1 A 0 A_Playsound("GloomWatcher/FeintAttack",CHAN_7)
	Goto Death.Jitter
	GloomDeath:
	TNT1 A 1 Damagething(99999,18)
	Goto Death
	Death.Fleshbent:
	TNT1 A 0 A_GiveToTarget("TentacleAmmo",2)
	TNT1 A 0 A_GiveToTarget("Soulscepter1",15)
	TNT1 A 0 A_GiveToTarget("Soulscepter2",50)
	Goto Death.Jitter
	Pain.BastetClawing:
		TNT1 A 0 A_GiveToTarget("Health",4)
		Goto Pain
	Pain.BastetClawingLightSFX:
		TNT1 A 0 A_PlaySound("Bastet/ClawHitLight",CHAN_5)
		TNT1 A 0 A_GiveToTarget("Health",3)
		Goto Pain
	Pain.BastetClawingHeavySFX:
		TNT1 A 0 A_PlaySound("Bastet/ClawHitHeavy",CHAN_5)
		TNT1 A 0 A_GiveToTarget("Health",6)
		Goto Pain
	Pain.Sickle:
		TNT1 A 0 ACS_NamedExecuteAlways("ChangeActivator",0)
	Pain.Wendigo:
		TNT1 A 0 A_PlaySound("RAVEN1",CHAN_5)
		TNT1 A 0 A_SpawnItemEx ("GIB4", 0, 0, random(0,42), 0, 0, random(2,4), random(0,360), 128)
		TNT1 A 0 A_SpawnItemEx ("GIB4", 0, 0, random(0,42), 0, 0, random(2,4), random(0,360), 128)
		Goto Pain
	Pain.Creepstun:
    SKPL F 0 
	SKPL F 0 A_GiveToTarget("health",5)
	SKPL F 40 Setplayerproperty(0,1,0)
	SKPL F 2 Setplayerproperty(0,0,0)
		Goto Spawn
	Death.Creeper:
		SKPL A 0 A_PlaySoundEx("creeperattack", "Body")
		SKPL A 0 A_SpawnItemEx("CreeperPopUp",0,0,10)
		TNT1 A 0 A_GiveToTarget("GhoulAmmo",1)
		SKPL A 0 A_GiveToTarget("Creeperheal",1)
		SKPL A 0 ACS_ExecuteAlways(997,0,1)
		Goto DeathAnimAlt
	Death.Creepstun:
		SKPL A 0 A_GiveToTarget("Unlock13",1)
		SKPL A 0 A_GiveToTarget("CreepGotya",1)
		Goto DeathAnimAlt
	Death.SjasScream:
	Death.FrostbiteWind:
	Death.EmtalicSaw:
	Death.LichFire:
		SKPL A 0 A_GiveToTarget("KilledJ",1)
		Goto DeathAnim
	Death:
	DeathAnim:
		SKPL A 0 A_GiveToTarget("KillBeep",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_TakeInventory("KilledCount",999)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledSkarlet",1)
		SKPL G 10
		SKPL H 10 A_PlayerScream
		SKPL I 10 A_NoBlocking
		SKPL JK 10
		SKPL L -1
		Stop
	DeathAnimAlt:
		SKPL A 0 A_GiveToTarget("KillIndicator",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_TakeInventory("KilledCount",999)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledSkarlet",1)
		SKPL G 10
		SKPL H 10 A_PlayerScream
		SKPL I 10 A_NoBlocking
		SKPL JK 10
		SKPL L -1
		Stop
	Death.GhoulChainSaw:
	TNT1 A 0 A_GiveToTarget("Health",50)
	TNT1 A 0 A_GiveToTarget("BearTarpsAmmo",1)
	TNT1 A 0 A_GiveToTarget("SawyerRageammo",10)
	TNT1 A 0 A_GiveToTarget("DUMMY_SawyerBloodyChainsaw", 1)
	Goto Death.Jitter
	Death.BastetClawing:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitHeavy",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",30)
	Goto Death.Jitter
	Death.BastetClawingLightSFX:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitLight",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",30)
	Goto Death.Jitter
	Death.BastetClawingHeavySFX:
	TNT1 A 0 A_PlaySound("Bastet/ClawHitHeavy",CHAN_6)
	TNT1 A 0 A_GiveToTarget("Health",30)
	Goto Death.Jitter
	Death.Choke:
		TNT1 A 0 A_GiveToTarget("Health",25)
		TNT1 A 0 A_GiveToTarget("ChokeCharging",40)
	Goto Death.Jitter
	Death.JusticarSpike:
		TNT1 A 0 A_GiveToTarget("Health",15)
	Goto Death.Jitter
	Death.Sinistar:
		TNT1 A 0 A_GiveToTarget("SiniPrimary",1)
	Goto Death.Jitter
	Death.MapGibber:
		TNT1 A 0 A_PlaySound("car/hit",chan_auto)
	Death.MapGibber2:
	Death.Jitter:
		SKPL A 0 A_GiveToTarget("KillBeep",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledSkarlet",1)
		SKPL A 0 A_GiveToTarget("Crunched",1)
		SKPL F 1 A_PlaySound("gibbage/xsplat")
		NULL A 0 A_PlaySound("gibbage/playergib") 
		NULL A 0 A_NoBlocking 
		NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
		NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
		NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
		NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
		NULL A 1 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
		NULL A -1
		Stop
	Death.JitterAlt:
		SKPL A 0 A_GiveToTarget("KillIndicator",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledSkarlet",1)
		SKPL A 0 A_GiveToTarget("Crunched",1)
		SKPL F 1 A_PlaySound("gibbage/xsplat")
		NULL A 0 A_PlaySound("gibbage/playergib") 
		NULL A 0 A_NoBlocking 
		NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
		NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
		NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
		NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
		NULL A 1 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
		NULL A -1
		Stop
	Death.Harvester:
		TNT1 A 0 A_GiveToTarget("SoulHarvesterFragment",1)
		TNT1 A 0 A_GiveToTarget("KilledJ",1)
		Goto Death.Jitter
	Death.HarvesterRock:
		TNT1 A 0 ACS_NamedExecute("SilverFieldsBell",55)
		Goto DeathAnim
	Death.HarvesterAlt:
		TNT1 A 0 A_GiveToTarget("Crunched2",1)
		TNT1 A 0 ACS_NamedExecute("SilverFieldsBell",55)
		Goto Death.Jitter
	Death.Ravager:
		SKPL A 0 A_GiveToTarget("KilledR",1)
		SKPL A 0 A_GiveToTarget("Health",100)
		SKPL A 0 ACS_ExecuteAlways(997,0,2)
		SKPL A 0 A_PlaySoundEx("RavagerAttack","Body")
		SKPL A 0 A_SpawnItemEx("RavagerHit",0,0,32)
		Goto DeathAnimAlt
	Death.RavagerBall:
		SKPL A 0 A_GiveToTarget("RavagerGotYa",1)
		SKPL A 0 A_GiveToTarget("KilledJ",1)
		Goto DeathAnimAlt
	Death.Yurei:
		SKPL A 0 A_GiveToTarget("KilledY",1)
		SKPL A 0 A_PlaySoundEx("YureiKill1","Body",0,1)
		SKPL A 0 ACS_ExecuteAlways(997,0,3)
		Goto DeathAnimAlt
	Death.YureiBall:
		SKPL A 0 A_GiveToTarget("Health",10)
		SKPL A 0 A_SpawnItemEx("BallFire")
		Goto Death.SjasScream
	Death.UboaRawrScream:
		Goto DeathAnimAlt
	Death.Misty:
	Death.Whiteface:
		SKPL A 0 A_GiveToTarget("KillBeep",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledM",1)
		SKPL GGGGGGGGGG 1 A_FadeOut(0.05)
		SKPL A 0 A_PlayerScream
		SKPL HHHHHHHHHH 2 A_FadeOut(0.05)
		SKPL A 0 A_NoBlocking
		NULL A -1
		Stop
	Death.Clowny:
		SKPL A 0 ACS_ExecuteAlways(997,0,4)
		SKPL A 0 A_GiveToTarget("KilledC",1)
		SKPL A 0 A_GiveToTarget("ClownyAmmo",5)
		Goto DeathAnim
	Death.Mohoph:
		SKPL A 0 A_GiveToTarget("TransSkarlet",1)
		TNT1 A 0 A_GiveToTarget("MorphAmmo", 1)
		SKPL A 0 A_PlaySoundEx("MohophKill","Body")
		SKPL A 0 ACS_ExecuteAlways(997,0,5)
		Goto DeathAnim
	Death.EmtalicWeak:
		SKPL A 0 A_PlaySoundEx("RamSuccess","Body")
		Goto DeathAnim
	Death.Emtalic:
		SKPL A 0  A_PlaySoundEx("RamSuccess","Body")
		Goto Death.Jitter
	Death.I1:
		SKPL A 0 A_SpawnItemEx("Heart",0,0,32,random(2,3),momy,random(8,12),random(-180,180))
		SKPL A 0 A_GiveToTarget("KilledI1",1)
		Goto DeathAnim
	Death.I2:
		SKPL A 0 A_GiveToTarget("KillBeep",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledI2",1)
		SKPL A 0 A_GiveToTarget("Clip",1)
		SKPL F 0 SetPlayerProperty(0,1,4)
		SKPL F 0 A_Stop
		SKPL FFFFFFFFFFFFFF 5 A_SpawnItemEx("PainSmoke",0,random(-22,22),random(-22,22),random(2,4),momy,random(8,12),random(-180,180))
		NULL A 0 A_PlayerScream
		NULL A 0 ACS_ExecuteAlways(997,0,6)
		NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
		NULL A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
		NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
		NULL A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner1", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner2", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
        NULL A 0 A_SpawnItemEx ("BoneShardSpawner3", 1, 1, random(8,32), random(0,5), random(0,5), random(8,18), random(0,360), SXF_NOCHECKPOSITION, 0)
		NULL A 1 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
		NULL A 1 A_SpawnItemEx("SkullGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL A 1 A_SpawnItemEx("ChestGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL AA 1 A_SpawnItemEx("ArmGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL AA 1 A_SpawnItemEx("HandGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL A 1 A_SpawnItemEx("CoccyxGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL AA 1 A_SpawnItemEx("LegGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL AAAAAA 1 A_SpawnItemEx("BoneGib",0,0,0,random(2,4),random(2,4),random(8,12),random(-180,180))
		NULL A -1 A_NoBlocking
		Stop
	Death.I3:
		SKPL A 0 A_GiveToTarget("KillBeep",1)
		SKPL A 0 A_GiveInventory("ItemDeath",1)
		SKPL A 0 A_GiveToTarget("KilledMe",1)
		SKPL A 0 A_GiveToTarget("KilledI3",1)
		SKPL GGGGGGGGGG 1 A_SpawnItemEx("PainSmoke",0,random(-22,22),random(-22,22),random(2,4),momy,random(8,12),random(-180,180))
		SKPL I 0 A_PlayerScream
		SKPL HHHHHHHHHH 1 A_SpawnItemEx("PainSmoke",0,random(-22,22),random(-22,22),random(2,4),momy,random(8,12),random(-180,180))
		SKPL J 0 A_NoBlocking
		SKPL IIIIIIIIIJJJJJJJJJJJKKKKKKKKKKKKK 1 A_SpawnItemEx("PainSmoke",0,random(-22,22),random(-22,22),random(2,4),momy,random(8,12),random(-180,180))
		SKPL LLLLLLLL 3 A_SpawnItemEx("PainSmoke",0,random(-22,22),random(-22,22),random(2,4),momy,random(8,12),random(-180,180))
		SKPL L -1
		Stop
	Death.I4:
		SKPL A 0 A_GiveToTarget("KilledI4",1)
		Goto DeathAnim
	Death.I5:
		SKPL A 0 A_GiveToTarget("KilledI5",1)
		Goto DeathAnim
	Pain.RavagerBall:
		SKPL A 0 ACS_ExecuteAlways(920,0)
		Goto Pain
	Pain.YureiBall:
		SKPL A 0 A_GiveToTarget("Health",10)
		SKPL A 0 A_SpawnItemEx("BallFire")
		Goto Pain
	Pain.Emtalic:
		SKPL A 0 A_PlaySoundEx("RamSuccess","Body")
		Goto Pain
	Pain.EmtalicWeak:
		SKPL A 0 A_PlaySoundEx("RamSuccess","Body")
		Goto Pain
	Death.TenebraRail:
	Death.Telefrag:
	Death.Grenade:
	Death.Termissiles:
	Death.ChaosExpl12:
	Death.KarenExplo:
	Death.IlluNukeKABUUM:
	Death.CalebDynamite:
	Death.Wendigo:
	Death.MorphRipperGib:
	Death.DarkVortex:
	Death.ImpostorJitter:
	Death.PuppetStrings:
	Death.LichIce:
	Death.LichLightning:
	Death.AsylumCannonBall:
		Goto Death.Jitter
	Death.TrueDivine:
		TNT1 A 0 A_PlaySoundEx("SoulSnatchStinger",CHAN_AUTO,0,1)
		TNT1 A 0 A_SpawnItemEx("SoulSnatch")
		Goto Death.JitterAlt
	Death.Judgement:
		TNT1 A 0 A_SpawnItemEx("StellarisThunderFX")
		Goto Death.JitterAlt
	Death.VoltMelee:
	Death.AmperRail:
		TNT1 A 0 A_GiveToTarget("VoltRingAmmo",2)
		TNT1 A 0 A_GiveToTarget("AmperSpeedTokenCheck",1)
		Goto Death.Jitter
	Pain.FrostbiteWind:
	Pain.Ravager:
	Pain.Juglava:
	Pain.HarvesterRock:
	Pain.EmtalicSaw:
	Pain.MorphRipper:
	Pain.MorphRipperGib:
	Pain.I1:
	Pain.I3:
	Pain.ZombiePoison:
	Pain.Asylum:
	Pain.AsylumCannonBall:
	Pain.FleshlingMissile:
	Pain.DarkVortex:
	Pain.ImpostorJitter:
	Pain.BlueFire:
	Pain.PuppetStrings:
	Pain.LichFire:
	Pain.LichIce:
	Pain.LichLightning:
	Pain.Whiteface:
		TNT1 A 0 ACS_NamedExecuteAlways("ChangeActivator",0)
		Goto Pain
	}
}

ACTOR SkarletPistol : Weapon
{
  Inventory.Icon "XPISZ0"
  Weapon.UpSound ""
  Weapon.AmmoType "FDBTSXPistolCharge"
  Weapon.AmmoUse 0
  Weapon.SlotNumber 2
  Obituary "%o was an incorrect recipient for %k."
  Decal ""
  +NOAUTOFIRE
  States
  {
  Ready:
	TNT1 A 0 A_SetTranslucent(1.0,0)
    TNT1 A 0 A_TakeInventory ("FDBTSXPistolCharge", 0)
	TNT1 A 0 A_TakeInventory("SkarletStealthActivationUnit",0)
    SKPI A 1 A_WeaponReady
    Loop
  Select:
	TNT1 A 0 A_SetTranslucent(1.0,0)
    TNT1 A 0 A_TakeInventory ("FDBTSXPistolCharge", 0)
	TNT1 A 0 A_TakeInventory("SkarletStealthActivationUnit",0)
    SKPI A 1 A_Raise
    "####" "#" 0 A_Raise
    Loop
  Deselect:
    TNT1 A 0 A_StopSound(CHAN_5)
    TNT1 A 0 A_StopSound(CHAN_6)
	TNT1 A 0 A_SetTranslucent(1.0,0)
    TNT1 A 0 A_TakeInventory ("FDBTSXPistolCharge", 0)
	TNT1 A 0 A_StopSound(CHAN_5)
    TNT1 A 0 A_StopSound(CHAN_6)
	TNT1 A 0 A_TakeInventory("SkarletStealthActivationUnit",0)
  DeselectLoop:
    SKPI A 1 A_Lower
    "####" "#" 0 A_Lower
    Loop
  Fire:
	TNT1 A 0 A_SetTranslucent(1.0,0)
	TNT1 A 0 A_TakeInventory("SkarletStealthActivationUnit",0)
  FireLevel0:
    TNT1 A 0 A_FireCustomMissile ("FDBTSXPistolProjectile0", frandom(-0.1,0.1), 0, 0, 6)
	Goto FireNormalEnd
  FireLevel0X:
    TNT1 A 0 A_FireCustomMissile ("FDBTSXPistolProjectileNano0", frandom(-0.1,0.1), 0, 0, 6)
	Goto FireNormalEnd
  FireNormalEnd:
    TNT1 A 0 A_StopSound(5)
    TNT1 A 0 A_StopSound(6)
    TNT1 A 0 A_TakeInventory ("FDBTSXPistolCharge", 0)
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash
    TNT1 A 0 A_PlaySound("SkarletPistol/fire", CHAN_WEAPON, 1, 0, 0.7)
    SKPI B 1 Bright A_WeaponReady(WRF_NOSECONDARY|WRF_NOPRIMARY|WRF_NOSWITCH)
    SKPI B 0 Bright
    SKPI C 1 A_WeaponReady(WRF_NOSWITCH)
    SKPI D 1 A_WeaponReady(WRF_NOSWITCH)
	SKPI D 0 A_WeaponReady(WRF_NOSWITCH)
	SKPI EE 1 A_WeaponReady(WRF_NOSWITCH)
    SKPI A 1 A_WeaponReady(WRF_NOSWITCH)
    SKPI A 1 A_WeaponReady(WRF_NOSWITCH)
	SKPI A 0 A_ReFire
	Goto Ready
  FireLevel1:
    TNT1 A 0 A_FireCustomMissile ("FDBTSXPistolProjectile1", frandom(-0.1,0.1), 0, 0, 6)
	Goto FireChargedEnd
  FireLevel1X:
    TNT1 A 0 A_FireCustomMissile ("FDBTSXPistolProjectileNano1", frandom(-0.1,0.1), 0, 0, 6)
	Goto FireChargedEnd
  FireLevel2:
    TNT1 A 0 A_FireCustomMissile ("FDBTSXPistolProjectile2", frandom(-0.1,0.1), 0, 0, 6)
	Goto FireChargedEnd
  FireLevel2X:
    TNT1 A 0 A_FireCustomMissile ("FDBTSXPistolProjectileNano2", frandom(-0.1,0.1), 0, 0, 6)
	Goto FireChargedEnd
  FireChargedEnd:
    TNT1 A 0 A_StopSound(CHAN_5)
    TNT1 A 0 A_StopSound(CHAN_6)
    TNT1 A 0 A_TakeInventory ("FDBTSXPistolCharge", 0)
    TNT1 A 0 A_AlertMonsters
    TNT1 A 0 A_GunFlash ("FlashCharge2")
    TNT1 A 0 A_PlaySound("SkarletPistol/chargedfire", CHAN_WEAPON, 1, 0, 0.5)
    SKPI S 1 Bright 
    SKPI S 1 Bright 
    SKPI T 1 A_StopSound(CHAN_5)
    SKPI T 1 
    SKPI T 1 
    SKPI T 1 A_StopSound(CHAN_6)
    SKPI U 1 
    SKPI U 1 A_StopSound(CHAN_5)
    SKPI D 1 
    SKPI D 1 A_StopSound(CHAN_6)
    SKPI E 2
    SKPI A 2 A_StopSound(CHAN_5)
	Goto Ready
  AltFire: 
    TNT1 A 0 A_PlaySound("SkarletPistol/charge", CHAN_5, 1, 0, 1.25)
    TNT1 A 0 A_SpawnItemEx ("FDBTSXPistolChargeLight", 1,0,32, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
    SKPI FG 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 3)
  ChargeLoop00:
    SKPI H 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 2)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 50, "ChargeLoop1Start")
    TNT1 A 0 A_Refire ("ChargeLoop01")
    Goto FireLevel0
  ChargeLoop01:
    SKPI I 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 2)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 50, "ChargeLoop1Start")
    TNT1 A 0 A_Refire ("ChargeLoop02")
    Goto FireLevel0
  ChargeLoop02:
    SKPI J 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 2)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 50, "ChargeLoop1Start")
    TNT1 A 0 A_Refire ("ChargeLoop00")
    Goto FireLevel0
  ChargeLoop1Start:
    SKPI K 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 2)
  ChargeLoop10:
    SKPI L 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 2)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 0, "ChargeLoop2Start")
    TNT1 A 0 A_Refire ("ChargeLoop11")
    Goto FireLevel1
  ChargeLoop11:
    SKPI M 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 1)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 0, "ChargeLoop2Start")
    TNT1 A 0 A_Refire ("ChargeLoop12")
    Goto FireLevel1
  ChargeLoop12:
    SKPI N 1 Bright A_GiveInventory ("FDBTSXPistolCharge", 1)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 0, "ChargeLoop2Start")
    TNT1 A 0 A_Refire ("ChargeLoop10")
    Goto FireLevel1
  ChargeLoop2Start:
    TNT1 A 0 A_PlaySound("SkarletPistol/chargeloop", CHAN_6, 1, 1, 1.25)
    SKPI O 1 Bright
  ChargeLoop20:
    SKPI P 1 Bright
    TNT1 A 0 A_Refire ("ChargeLoop21")
    Goto FireLevel2
  ChargeLoop21:
    SKPI Q 1 Bright
    TNT1 A 0 A_Refire ("ChargeLoop22")
    Goto FireLevel2
  ChargeLoop22:
    SKPI R 1 Bright
    TNT1 A 0 A_Refire ("ChargeLoop20")
    Goto FireLevel2
  Flash:
    TNT1 A 1 A_Light1
    TNT1 A 1 A_Light2
    TNT1 A 0 A_Light0
	Goto LightDone
  FlashCharge1:
    TNT1 A 1 A_Light2
    TNT1 A 1 A_Light (4)
    TNT1 A 1 A_Light1
    TNT1 A 0 A_Light0
	Goto LightDone
  FlashCharge2:
    TNT1 A 1 A_Light (4)
    TNT1 A 1 A_Light (8)
    TNT1 A 1 A_Light2
    TNT1 A 1 A_Light1
    TNT1 A 0 A_Light0
	Goto LightDone
  }
}

//------------------------------------------------------------------------------

ACTOR FDBTSXPistolProjectile0 : FastProjectile
{
  Radius 4
  Height 4
  Speed 140
  Damage (8)
  DamageType "SkarletPistol"
  Decal "DoomImpScorch"
  +FORCEXYBILLBOARD
  +BLOODLESSIMPACT
  Projectile
  RenderStyle Add
  Alpha 1.0
  Scale 0.22
  States
  {
  Spawn:
    TNT1 A 1 Light("FDChargePistolGlow")
	TNT1 A 0 A_Jump(256, "SpawnTrail")
	Goto SpawnTrail
  SpawnTrail:
	TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(0.01*momx)/-35.0, -(0.01*momy)/-35.0, 2+(0.01*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(0.5*momx)/-35.0, -(0.5*momy)/-35.0, 2+(0.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (1 *momx)/-35.0, -(1 *momy)/-35.0, 2+(1 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(1.5*momx)/-35.0, -(1.5*momy)/-35.0, 2+(1.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (2 *momx)/-35.0, -(2 *momy)/-35.0, 2+(2 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(2.5*momx)/-35.0, -(2.5*momy)/-35.0, 2+(2.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(3.5*momx)/-35.0, -(3.5*momy)/-35.0, 2+(3.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (4 *momx)/-35.0, -(4 *momy)/-35.0, 2+(4 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(4.5*momx)/-35.0, -(4.5*momy)/-35.0, 2+(4.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (5 *momx)/-35.0, -(5 *momy)/-35.0, 2+(5 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(5.5*momx)/-35.0, -(5.5*momy)/-35.0, 2+(5.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(6.5*momx)/-35.0, -(6.5*momy)/-35.0, 2+(6.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (7 *momx)/-35.0, -(7 *momy)/-35.0, 2+(7 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail",(7.5*momx)/-35.0, -(7.5*momy)/-35.0, 2+(7.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileTrail", (8 *momx)/-35.0, -(8 *momy)/-35.0, 2+(8 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_Jump (256, 1,3,6)
    TNT1 A 0 A_Jump (256, 1,3,6)
	TNT1 AAAAAAAAA 0 
	TNT1 A 0 A_Jump(256, "Spawn")
    Goto Spawn
  XDeath:
	TNT1 A 0 A_GiveToTarget("HitBeep",1)
	Goto Death
  Death:
    TNT1 A 0 A_SetScale (1.3) // set scale here to match the impact effect
	TNT1 A 0 A_Jump(256, "DeathEffects")
	Goto DeathEffects
  DeathEffects:
	TNT1 A 0 A_PlaySound("Skarletpistol/hit", CHAN_ITEM, 0.9, 0, 1.3)
    TNT1 A 0 A_Jump (256, 1,5,10)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 
	TNT1 A 0 A_Jump(256, "NoParticles")
    Goto NoParticles
  NoParticles: // Normal impact
	XPIX J 1 Bright Light("FDRedGlowHit1")
	XPIX K 1 Bright Light("FDRedGlowHit2")
	XPIX L 1 Bright Light("FDRedGlowHit3")
	XPIX M 1 Bright Light("FDRedGlowHit4")
	XPIX N 1 Bright Light("FDRedGlowHit5")
	XPIX O 1 Bright Light("FDRedGlowHit1")
	Stop
  BoomHit: // Max charge impact
    TNT1 A 0 A_SpawnItemEx ("FDBTSXPistolLightningField", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_Quake (2, 7, 0, 256, "")
    TNT1 A 0 A_Quake (1, 10, 0, 512, "")
	XPIX B 1 Bright Light("FDChargePistolMaxHit1")
	XPIX C 1 Bright Light("FDChargePistolMaxHit2")
	XPIX D 1 Bright Light("FDChargePistolMaxHit3")
	XPIX E 1 Bright Light("FDChargePistolMaxHit4")
	XPIX F 1 Bright Light("FDChargePistolMaxHit5")
	XPIX G 1 Bright Light("FDChargePistolMaxHit6")
	XPIX H 1 Bright Light("FDChargePistolMaxHit7")
	Stop
  }
}

ACTOR FDBTSXPistolProjectile1 : FDBTSXPistolProjectile0
{
  Damage (15)
  +FORCEPAIN
  Speed 160
  Damagetype "ViviMine"
  Scale 0.7
  States
  {
  Spawn:
    TNT1 A 1 Light("FDChargePistolGlow1")
	TNT1 A 0 A_Jump(256, "SpawnTrail")
	Goto SpawnTrail
  XDeath:
	TNT1 A 0 A_GiveToTarget("HitBeep",1)
	Goto Death
  Death:
    TNT1 A 0 A_SetScale (1.9) // set scale here to match the impact effect
	TNT1 A 0 A_Jump(256, "DeathEffects")
	Goto DeathEffects
  }
}

ACTOR FDBTSXPistolProjectile2 : FDBTSXPistolProjectile0
{
  Damage (45)
  +FORCEPAIN
  +HITTRACER
  Scale 1.0
  speed 320
  Damagetype "SkarletPistolDrain"
  Decal "Scorch"
  States
  {
  Spawn:
    TNT1 A 1 Light("FDChargePistolGlow2")
	TNT1 A 0 A_Jump(256, "SpawnTrail")
	Goto SpawnTrail
  XDeath:
	TNT1 A 0 A_GiveToTarget("HitBeep",1)
	TNT1 A 0 A_JumpIfInventory("BloodCurseItem",1,"Death",AAPTR_TARGET)
	TNT1 A 0 A_JumpIfInventory("IsGhoul",1,"Hit",AAPTR_Tracer)
	Goto Death
  Hit:
	TNT1 A 0 A_GiveToTarget("Health",30)
	Goto Death
  Death:
    TNT1 A 0 A_SetScale (1.2) // set scale here to match the impact effect
	TNT1 A 0 A_Jump(256, "DeathEffects")
	Goto DeathEffects
  DeathEffects:
    TNT1 A 0 A_PlaySound("Skarletpistol/hit2", CHAN_ITEM, 0.9, 0, 0.8)
	TNT1 A 0 A_Jump(256, "BoomHit")
    Goto BoomHit
  }
}

//------------------------------------------------------------------------------

ACTOR FDBTSXPistolProjectileNano0 : FDBTSXPistolProjectile0
{
  Damage (30)
  +FORCEPAIN
  Damagetype "SkarletPistolDrain"
  States
  {
  SpawnTrail:
	TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(0.01*momx)/-35.0, -(0.01*momy)/-35.0, 2+(0.01*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(0.5*momx)/-35.0, -(0.5*momy)/-35.0, 2+(0.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (1 *momx)/-35.0, -(1 *momy)/-35.0, 2+(1 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(1.5*momx)/-35.0, -(1.5*momy)/-35.0, 2+(1.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (2 *momx)/-35.0, -(2 *momy)/-35.0, 2+(2 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(2.5*momx)/-35.0, -(2.5*momy)/-35.0, 2+(2.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(3.5*momx)/-35.0, -(3.5*momy)/-35.0, 2+(3.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (4 *momx)/-35.0, -(4 *momy)/-35.0, 2+(4 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(4.5*momx)/-35.0, -(4.5*momy)/-35.0, 2+(4.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (5 *momx)/-35.0, -(5 *momy)/-35.0, 2+(5 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
	TNT1 AAAAAAAAA 0
	TNT1 A 0 A_Jump(256, "Spawn")
    Goto Spawn
  }
}

ACTOR FDBTSXPistolProjectileNano1 : FDBTSXPistolProjectile1
{
  Damage (30)
  +FORCEPAIN
  Damagetype "SkarletPistolDrain"
  States
  {
  SpawnTrail:
	TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(0.01*momx)/-35.0, -(0.01*momy)/-35.0, 2+(0.01*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(0.5*momx)/-35.0, -(0.5*momy)/-35.0, 2+(0.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (1 *momx)/-35.0, -(1 *momy)/-35.0, 2+(1 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(1.5*momx)/-35.0, -(1.5*momy)/-35.0, 2+(1.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (2 *momx)/-35.0, -(2 *momy)/-35.0, 2+(2 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(2.5*momx)/-35.0, -(2.5*momy)/-35.0, 2+(2.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(3.5*momx)/-35.0, -(3.5*momy)/-35.0, 2+(3.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (4 *momx)/-35.0, -(4 *momy)/-35.0, 2+(4 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(4.5*momx)/-35.0, -(4.5*momy)/-35.0, 2+(4.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (5 *momx)/-35.0, -(5 *momy)/-35.0, 2+(5 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(5.5*momx)/-35.0, -(5.5*momy)/-35.0, 2+(5.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(6.5*momx)/-35.0, -(6.5*momy)/-35.0, 2+(6.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (7 *momx)/-35.0, -(7 *momy)/-35.0, 2+(7 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(7.5*momx)/-35.0, -(7.5*momy)/-35.0, 2+(7.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (8 *momx)/-35.0, -(8 *momy)/-35.0, 2+(8 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_Jump (256, 1,3,6)
	TNT1 AAAAAAAAA 0 
	TNT1 A 0 A_Jump(256, "Spawn")
    Goto Spawn
  }
}

ACTOR FDBTSXPistolProjectileNano2 : FDBTSXPistolProjectile2
{
  Damage (30)
  +FORCEPAIN
  Damagetype "SkarletPistolDrain"
  States
  {
  SpawnTrail:
	TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(0.01*momx)/-35.0, -(0.01*momy)/-35.0, 2+(0.01*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(0.5*momx)/-35.0, -(0.5*momy)/-35.0, 2+(0.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (1 *momx)/-35.0, -(1 *momy)/-35.0, 2+(1 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(1.5*momx)/-35.0, -(1.5*momy)/-35.0, 2+(1.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (2 *momx)/-35.0, -(2 *momy)/-35.0, 2+(2 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(2.5*momx)/-35.0, -(2.5*momy)/-35.0, 2+(2.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(3.5*momx)/-35.0, -(3.5*momy)/-35.0, 2+(3.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (4 *momx)/-35.0, -(4 *momy)/-35.0, 2+(4 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(4.5*momx)/-35.0, -(4.5*momy)/-35.0, 2+(4.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (5 *momx)/-35.0, -(5 *momy)/-35.0, 2+(5 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(5.5*momx)/-35.0, -(5.5*momy)/-35.0, 2+(5.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(6.5*momx)/-35.0, -(6.5*momy)/-35.0, 2+(6.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (7 *momx)/-35.0, -(7 *momy)/-35.0, 2+(7 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail",(7.5*momx)/-35.0, -(7.5*momy)/-35.0, 2+(7.5*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_SpawnItemEx("FDBTSXPistolProjectileMaxTrail", (8 *momx)/-35.0, -(8 *momy)/-35.0, 2+(8 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE)
    TNT1 A 0 A_Jump (256, 1,3,6)
	TNT1 AAAAAAAAA 0 
	TNT1 A 0 A_Jump(256, "Spawn")
    Goto Spawn
  }
}


//------------------------------------------------------------------------------

actor FDBTSXPistolProjectileTrail
{
    Scale 0.08
    RenderStyle Add
    Alpha 0.95
    +FORCEXYBILLBOARD
    +NOINTERACTION
    States
    {
    Spawn:
        XPIX A 2 Bright
        stop
    }
}

actor FDBTSXPistolProjectileMaxTrail : FDBTSXPistolProjectileTrail
{
    States
    {
    Spawn:
        XPIX I 2 Bright
        stop
    }
}

actor FDBTSXFancyPistolProjectileTrail : FDBTSXPistolProjectileTrail
{
    Scale 0.08
    States
    {
    Spawn:
        OGLP C 2 Bright
        stop
    }
}

Actor FDBTSXPistolChargeLight
{ 
  +THRUACTORS
  +NOCLIP
  +NOGRAVITY
  +CLIENTSIDEONLY
  Projectile
  Radius 4
  Height 4
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_Warp (AAPTR_TARGET, 1,0,32, 0, WARPF_NOCHECKPOSITION | WARPF_COPYINTERPOLATION, "MaxHax")
	Goto LightIsOver
  MaxHax:
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 0, "LightTime3", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 50, "LightTime2", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory ("FDBTSXPistolCharge", 1, "LightTime1", AAPTR_MASTER)
	Goto LightIsOver
  LightTime1:
    TNT1 A 1 Light("FDChargePistolChargeupGlow1")
	Goto Spawn
  LightTime2:
    TNT1 A 1 Light("FDChargePistolChargeupGlow2")
	Goto Spawn
  LightTime3:
    TNT1 A 1 Light("FDChargePistolChargeupGlow3")
	Goto Spawn
	
  LightIsOver:
    TNT1 A 0
	Stop
  }
}

Actor FDHarmlessPuff : BulletPuff // used for cosmetic lightning
{ 
  +THRUACTORS
  +NODAMAGETHRUST
  +BLOODLESSIMPACT
  +PAINLESS
  +NOTELEPORT
  +NOINTERACTION
  +CLIENTSIDEONLY
  Decal "None"
  States
  {
  Melee:
  Spawn:
    TNT1 A 5
    Stop
  }
}

actor FDBTSXPistolLightningField : FDBTSXPistolProjectileTrail
{
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump (256, 1,2,3)
		TNT1 AAAAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "FDHarmlessPuff", frandom(0,359), frandom(-45,45), random(24,64), 1, 0.2, 0, "None", -4)
        Stop
    }
}

ACTOR FDBTSXPistolCharge : Ammo
{
  Inventory.PickupMessage ""
  Inventory.Amount 1
  Inventory.MaxAmount 100
  Ammo.BackpackAmount 0
  Ammo.BackpackMaxAmount 100
  Inventory.PickupSound ""
  Tag "Pistol Charge"
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor "SkarletKatana" : weapon
{
    Weapon.Kickback 0
    Weapon.SelectionOrder 2200
    Weapon.SlotNumber 1
    Obituary "%o died of natural selection." 
    +WEAPON.MELEEWEAPON
    +NOALERT
	+FORCEPAIN
    +INVENTORY.UNDROPPABLE
    States
    {
      Spawn:
        SKKA N -1
        stop
      Ready:
		SKKA A 0 A_SetTranslucent(1.0,0)
        SKKA A 1 A_WeaponReady
		SKKA A 0 ACS_ExecuteAlways(4000,0,2)
		SKKA A 0 A_JumpIfInventory("CyborgDashCheck",1,"SealCheck")
        loop
	  ReadyStealthed:
		SKKA A 0 Damagething(1)
		SKKA A 36 A_Weaponready
		SKKA A 0 A_JumpIfInventory("CyborgDashCheck",1,"SealCheck")
		Loop
	Select:
		TNT1 A 0 A_StopSound(CHAN_5)
		TNT1 A 0 A_StopSound(CHAN_6)
		SKKA A 0 A_SetTranslucent(1.0,0)
		SKKA A 1 A_Raise
		Loop
	Deselect:
		SKKA A 0 ACS_ExecuteAlways(4000,0,1)
		SKKA A 0 A_SetTranslucent(1.0,0)
		SKKA A 0 A_TakeInventory("SkarletStealthActivationUnit",0)
		SKKA A 1 A_Lower
		SKKA A 0 A_TakeInventory("SkarletStealthActivationUnit",0)
		Loop
      Fire:
		SKKA A 0 A_JumpIfInventory("SkarletStealthActivationUnit",1,"SneakAttack")
		SKKA A 0 A_SetTranslucent(1.0,0)
	  FirstSlash:
		SKKA B 0 A_TakeInventory("SkarletStealthActivationUnit",1)
        SKKA BC 3
		SKKA D 1
		SKKA E 1 
		TNT1 A 0 A_Playsound("Skatana/swing")
 		SKKA F 1
		TNT1 A 0 A_CustomPunch(60, 1, 0, "SkarletSwordSlashpuffs", 88)
		SKKA G 1
		SKKA H 1
		TNT1 AAAAAAAAAAA 1
        TNT1 AAAA 1 A_ReFire("SecondSlash")
		Goto StopSlashing
	  SneakAttack:
		SKKA A 1 A_SetTranslucent(0.0,0)
		SKKA A 1 A_SetTranslucent(0.2,0)
		SKKA A 1 A_SetTranslucent(0.3,0)
		SKKA A 1 A_SetTranslucent(0.4,0)
		SKKA A 1 A_SetTranslucent(0.5,0)
		SKKA A 1 A_SetTranslucent(0.6,0)
		SKKA A 1 A_SetTranslucent(0.7,0)
		SKKA A 1 A_SetTranslucent(0.8,0)
		SKKA A 1 A_SetTranslucent(0.9,0)
		SKKA A 1 A_SetTranslucent(1.0,0)
		SKKA A 2
	  Goto FirstSlash
	  Secondslash:
		SKKA I 1
		SKKA J 1
		TNT1 A 0 A_Playsound("Skatana/swing")
		SKKA K 1
		TNT1 A 0 A_CustomPunch(60, 1, 0, "SkarletSwordSlashpuffs", 88)
		SKKA L 1
		SKKA M 1
		TNT1 AAAAAAAAAAA 1
		TNT1 AAAAA 1 A_Refire("ContinuedSlash")
		Goto StopSlashing
	  ContinuedSlash:
		SKKA D 1
		SKKA E 1
		TNT1 A 0 A_Playsound("Skatana/swing")
		SKKA F 1
		TNT1 A 0 A_CustomPunch(60, 1, 0, "SkarletSwordSlashpuffs", 88)
		SKKA G 1
		SKKA H 1
		TNT1 AAAAAAAAAAA 1
        TNT1 AAAA 1 A_ReFire("SecondSlash")
		Goto StopSlashing
	  StopSlashing:
		SKKA O 2
		SKKA P 1
		SKKA Q 1
		SKKA A 1
		SKKA A 5
		TNT1 A 0 
        goto Ready
	  Altfire:
		SKKA A 10
		SKKA A 0 A_JumpIfInventory("SkarletStealthActivationUnit",1,"DisableStealth")
		SKKA A 0 A_GiveInventory("SkarletStealthActivationUnit",1)
		SKKA A 0 A_Playsound("Skarlet/StealthActivate",CHAN_ITEM)
		SKKA A 0 A_Playsound("Skarlet/EnterStealth",CHAN_5)
		SKKA A 1 A_SetTranslucent(0.9,0)
		SKKA A 1 A_SetTranslucent(0.7,0)
		SKKA A 1 A_SetTranslucent(0.5,0)
		SKKA A 1 A_SetTranslucent(0.3,0)
		SKKA A 1 A_SetTranslucent(0.1,0)
		SKKA A 1 A_SetTranslucent(0.0,0)
		SKKA A 10
		Goto ReadyStealthed
	  DisableStealth:
		SKKA A 10
		SKKA A 0 A_Playsound("Skarlet/StealthActivate",CHAN_ITEM)
		SKKA A 0 A_TakeInventory("SkarletStealthActivationUnit",1)
		SKKA A 1 A_SetTranslucent(0.0,0)
		SKKA A 1 A_SetTranslucent(0.2,0)
		SKKA A 1 A_SetTranslucent(0.3,0)
		SKKA A 1 A_SetTranslucent(0.4,0)
		SKKA A 1 A_SetTranslucent(0.5,0)
		SKKA A 1 A_SetTranslucent(0.6,0)
		SKKA A 1 A_SetTranslucent(0.7,0)
		SKKA A 1 A_SetTranslucent(0.8,0)
		SKKA A 1 A_SetTranslucent(0.9,0)
		SKKA A 1 A_SetTranslucent(1.0,0)
		SKKA A 10
		SKKA A 0 A_TakeInventory("SkarletStealthActivationUnit",1)
		Goto Ready
		SealCheck:
		SKKA A 0 A_TakeInventory("CyborgDashCheck",999)
		SKKA A 0 A_JumpIfInventory("SealCardAmmo",1,"FireSealCard")
		Goto Ready
		FireSealCard:
		SKKA B 0
        SKKA BC 3
		SKKA D 1
		SKKA E 1 
		TNT1 A 0 A_Playsound("Skatana/swing")
		TNT1 A 0 A_Playsound("SkarletKatana/SealingCardFire",CHAN_ITEM)
 		SKKA F 1
		TNT1 A 0 A_FireCustommissile("SkarletSealCard",0,0)
		TNT1 A 0 DamageThing(5)
		SKKA G 1
		SKKA H 1
		SKKA H 0 A_JumpIfInventory("SkarletStealthActivationUnit",1,"ReadyStealthed")
		TNT1 AAAAAAAA 1
        TNT1 AAAAA 1
		Goto StopSlashing
    }
}

ACTOR SkarletSwordSlashpuffs
{ 
   ActiveSound ""
   AttackSound "Skatana/Wall"
   SeeSound "Skatana/Hitslice"
   Obituary "%o died of natural selection." 
   DamageType "SkarletVampiric"
   	Height 5
	Radius 10
   +NOGRAVITY
   +NOEXTREMEDEATH
   +PUFFONACTORS
   +PUFFGETSOWNER
   +CLIENTSIDEONLY
   +HITTRACER
   Decal "none"
   States
   {
   Spawn:
   		TNT1 A 0
    	TNT1 A 1
    	stop
  	Crash:
	  	TNT1 A 0
	  	TNT1 A 1
	  	stop
  	Melee:
	  	TNT1 A 0
	  	TNT1 A 1
	  	stop
	XDeath:
		TNT1 A 0 A_JumpIfInventory("BloodCurseItem",1,"HitNoHeal",AAPTR_TARGET)
		TNT1 A 0 A_JumpIfInventory("IsGhoul",1,"Hit",AAPTR_Tracer)
		TNT1 A 0 A_GiveToTarget("HitBeep",1)
		TNT1 A 1
		Stop
	Hit:
		TNT1 A 0 A_GiveToTarget("Health",20)
		TNT1 A 0 A_SetPitch(pitch - 4.0)
		TNT1 A 0 A_SetAngle(angle + (random(-60,60)/10))
		TNT1 A 0 A_GiveToTarget("HitBeep",1)
		TNT1 A 1
		Stop
	HitNoHeal:
		TNT1 A 0 A_SetPitch(pitch - 4.0)
		TNT1 A 0 A_SetAngle(angle + (random(-60,60)/10))
		TNT1 A 0 A_GiveToTarget("HitBeep",1)
		TNT1 A 1
		Stop
   }
}

ACTOR SkarletSealCard : fastprojectile
{
  Damage (0)
  Speed 30
  Scale 1.0
  DeathSound "SkarletKatana/SealingCardHit"
  +seekermissile
  States
  {
  Spawn:
    OFUD A 1 A_SeekerMissile(45, 45,SMF_LOOK|SMF_PRECISE,256,3)
	TNT1 A 0 A_SpawnItemEx("SkarletSealCardTrail", 0, 0, 0, 0, 0, 0, 0, 128)
	loop
  XDeath:
	TNT1 A 0 A_GiveToTarget("HitBeep",1)
	Goto Death
  Death:
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",-10,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",10,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",5,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",-5,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",0,5,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",0,10,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD H 0 A_SpawnItemEx("HunterFreezeSlow",0,-10,0,0,0,0,0,SXF_NOCHECKPOSITION)
	OFUD I 1 
	OFUD J 1
	OFUD K 1
	OFUD L 1
	OFUD M 1
	Goto Stop
  }
}

actor SkarletSealCardTrail
{
    Radius 1
    Height 1
    Speed 0
    PROJECTILE
    RENDERSTYLE ADD
    ALPHA 0.6
    +NOCLIP
	+NOGRAVITY
	+CLIENTSIDEONLY
    States
    {
    Spawn:
     OFUD A 1 Bright A_Fadeout(0.1)
	 OFUD B 1 Bright A_Fadeout(0.1)
	 OFUD C 1 Bright A_Fadeout(0.1)
	 OFUD D 1 Bright A_Fadeout(0.1)
	 OFUD E 1 Bright A_Fadeout(0.1)
	 OFUD F 1 Bright A_Fadeout(0.1)
	 OFUD G 1 Bright A_Fadeout(0.1)
     loop 
    }
}

actor SealCardAmmo : Ammo
{
  inventory.pickupmessage ""
  inventory.amount 1
  inventory.maxamount 1
  ammo.backpackamount 1
  ammo.backpackmaxamount 1
  +INVENTORY.IGNORESKILL
  states
  {
  Spawn:
    TNT1 A -1
    stop
  }
}


Actor SkarletStealthActivationUnit : Inventory
{
	inventory.amount 0
	inventory.maxamount 1
}
