ACTOR TNT1Ammo : Ammo
{
   Inventory.MaxAmount 1
   Inventory.Icon TNT1A0
}

ACTOR Dagger : Weapon Replaces Fist 3700
{
   Weapon.SelectionOrder 9999
   Weapon.Kickback 100
   Tag "Punch Dagger"
   Weapon.UpSound "Dagger/Up"
   Weapon.AmmoType "TNT1Ammo"
   Weapon.AmmoType2 "TNT1Ammo"
   Weapon.AmmoUse 0
   Weapon.AmmoUse2 0
   weapon.bobstyle inversesmooth
   weapon.bobrangeX 0.4
   weapon.bobrangeY 0.6
   weapon.bobspeed 2.5
   Obituary "%o was shanked by %k."
   ConversationID 504
   +NOALERT
   +NOEXTREMEDEATH
   +NOAUTOFIRE
   States
   {
   Spawn:
      TNT1 A -1
      loop
   Ready:
      DAGG A 1 A_WeaponReady
      Loop
   Deselect:
      TNT1 A 0 SetPlayerProperty(0,1,2)
	  TNT1 A 0 A_PlayWeaponSound("Dagger/Down")
	  TNT1 A 0 A_SetCrosshair(1)
	  DAGS ABCDE 1
	  Goto DeselectLoop
   DeselectLoop:
      TNT1 A 0 A_StopSoundEx("SoundSlot5")
      TNT1 A 1 A_Lower
      Loop
   Select:
      TNT1 A 0 SetPlayerProperty(0,0,2)
	  TNT1 A 0 A_SetCrosshair(1)
      DAGS EDCBA 1
      Goto SelectLoop
   SelectLoop:
      DAGG A 1 A_Raise
	  loop
   Fire:
	  TNT1 A 0 A_PlayWeaponSound("Dagger/Miss")
	  DAGF A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  DAGF C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  DAGF E 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	  TNT1 A 0 A_CustomPunch(35,1,0,"DaggerPuff")
	  DAGF G 1 A_WeaponReady(WRF_NOSWITCH)
	  DAGF I 1 A_WeaponReady(WRF_NOSWITCH)
	  DAGF K 1 A_WeaponReady(WRF_NOSWITCH)
	  DAGF M 1 A_WeaponReady(WRF_NOSWITCH)
	  Goto Ready
   }
}

ACTOR DaggerPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	-ALLOWPARTICLES
	+NOEXTREMEDEATH
	+PUFFONACTORS
	+BLOODSPLATTER
	RenderStyle Translucent
	Damagetype "Dagger"
	Damagetype "Cutless"
	Alpha 0.25

	states
	{
	Spawn:
	TNT1 A 1
	PUFF A 0 bright A_PlaySound("Dagger/Hit",70,0.99,0,1)
	TNT1 A 5
		Stop
	Crash:
	TNT1 A 1
	PUFF A 0 bright A_PlaySound("Dagger/Wall",70,0.99,0,1)
	TNT1 AAA 0 A_CustomMissile ("bpuff_smoke", 2, 0, random (0, 360), 2, random (0, 360))
	TNT1 A 5
		Stop
	}
}

ACTOR SwordGiver : WeaponGiver replaces Chainsaw 25201
{
  DropItem "Sword"
  ActiveSound "SFX/Rumble"
  Inventory.PickupMessage "You found the Kyrie Eleison, a legendary sword known for its unquenceable thirst for blood."
  States
  {
  Spawn:
    VORX A 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,-10,1)
	VORX B 1 A_SpawnItemEx("RedEnergyParticleSpawner",-10,0,3)
	VORX C 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,10,5)
	VORX D 1 A_SpawnItemEx("RedEnergyParticleSpawner",10,0,7)
	VORX E 1 A_SpawnItemEx("RedEnergyParticleSpawner",5,0,9)
	VORX F 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,5,11)
	VORX A 1 A_SpawnItemEx("RedEnergyParticleSpawner",0-5,13)
	VORX B 1 A_SpawnItemEx("RedEnergyParticleSpawner",-5,0,15)
	VORX C 1 A_SpawnItemEx("RedEnergyParticleSpawner",-10,0,17)
    VORX D 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,-5,19)
	VORX E 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,10,21)
	VORX F 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,0,23)
	VORX A 70 A_SpawnItemEx("RedEnergyParticleSpawner",10,0,25)
	VORX A 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,-10,1)
	VORX B 1 A_SpawnItemEx("RedEnergyParticleSpawner",-10,0,3)
	VORX C 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,10,5)
	VORX D 1 A_SpawnItemEx("RedEnergyParticleSpawner",10,0,7)
	VORX E 1 A_SpawnItemEx("RedEnergyParticleSpawner",5,0,9)
	VORX F 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,5,11)
	VORX A 1 A_SpawnItemEx("RedEnergyParticleSpawner",0-5,13)
	VORX B 1 A_SpawnItemEx("RedEnergyParticleSpawner",-5,0,15)
	VORX C 1 A_SpawnItemEx("RedEnergyParticleSpawner",-10,0,17)
    VORX D 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,-5,19)
	VORX E 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,10,21)
	VORX F 1 A_SpawnItemEx("RedEnergyParticleSpawner",0,0,23)
	TNT1 A 0 A_LoopActiveSound
    Loop
  }
}

ACTOR Sword : Weapon
{
   Weapon.SelectionOrder 9999
   Weapon.Kickback 100
   Tag "Kyrie Eleison"
   AttackSound "Sword/Hit"
   Inventory.PickupMessage "You found the Kyrie Eleison, a legendary sword known for its unquenceable thirst for blood."
   Weapon.UpSound "Sword/Draw"
   Weapon.AmmoType "TNT1Ammo"
   Weapon.AmmoType2 "TNT1Ammo"
   Weapon.AmmoUse 0
   Weapon.AmmoUse2 0
   weapon.bobstyle inversesmooth
   weapon.bobrangeX 0.4
   weapon.bobrangeY 0.6
   weapon.bobspeed 2.5
   Obituary "%o was relieved of %p head by %k's sword."
   +NOALERT
   States
   {
   Spawn:
      VORX A -1 
      Stop
   Ready:
      VORP A 1 A_WeaponReady
      Loop
   Deselect:
      TNT1 A 0 SetPlayerProperty(0,1,2)
	  VORS A 0 A_StopSoundEx("Body")
	  VORS ABCDE 1
	  Goto DeselectLoop
   DeselectLoop:
      TNT1 A 0 A_StopSoundEx("SoundSlot5")
      TNT1 A 1 A_Lower
      Loop
   Select:
      TNT1 A 0 SetPlayerProperty(0,0,2)
	  TNT1 A 0 A_SetCrosshair(1)
      VORS EDCBA 1
      Goto SelectLoop
   SelectLoop:
      VORP A 1 A_Raise
	  loop
   Fire:
	  TNT1 A 0 A_Jump(256,"SwingRighty","SwingLefty")
	  goto Ready
   SwingRighty:
	  VORP B 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 A_PlaySound("Sword/Swing",110,1.0,0,1)
	  VORP C 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP D 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP E 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP F 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 A_CustomPunch(25,1,0,"SwordPuff",100,TRUE)
	  TNT1 A 0 A_CustomPunch(95,1,0,"SwordPuff",100)
	  VORP G 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP H 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP I 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 5 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  Goto PreReady
   SwingLefty:
	  VORP J 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 A_PlaySound("Sword/Swing",110,1.0,0,1)
	  VORP K 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP L 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP M 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP N 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 A_CustomPunch(25,1,0,"SwordPuff",100,TRUE)
	  TNT1 A 0 A_CustomPunch(95,1,0,"SwordPuff",100)
	  VORP O 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP P 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP Q 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 5 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  Goto PreReady
	AltFire:
	  TNT1 A 0 A_JumpIfHealthLower(50,"Fire") //This is to prevent people from killing themselves while using the altfire
	  TNT1 A 0 A_Jump(256,"SwingRightyZerked","SwingLeftyZerked")
	  goto Ready
   SwingRightyZerked:
      TNT1 A 0 A_Explode(50,30)
	  VORP B 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 A_PlaySound("Sword/Swing",110,1.0,0,1)
	  VORP C 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP D 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP E 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP F 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 Bright A_FireCustomMissile("BladeSlash1",0,1,0,0)
	  TNT1 A 0 A_CustomPunch(120,1,0,"SwordPuff",100)
	  VORP G 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP H 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP I 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 10 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  Goto PreReady
   SwingLeftyZerked:
      TNT1 A 0 A_Explode(50,30)
	  VORP J 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 A_PlaySound("Sword/Swing",110,1.0,0,1)
	  VORP K 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP L 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP M 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP N 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 0 Bright A_FireCustomMissile("BladeSlash2",0,1,0,0)
	  TNT1 A 0 A_CustomPunch(120,1,0,"SwordPuff",100)
	  VORP O 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP P 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  VORP Q 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  TNT1 A 10 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  Goto PreReady
   PreReady:
	  VORS EDCBA 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
	  Goto Ready
   }
}

actor SwordPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	-ALLOWPARTICLES
	+NOEXTREMEDEATH
	+PUFFONACTORS
	+BLOODSPLATTER
	RenderStyle Translucent
	Damagetype "Sword"
	Damagetype "Cut"
	Alpha 0.25
	states
	{
	Spawn:
	TNT1 A 1
	PUFF A 0 bright A_PlaySound("Sword/Hit")
	TNT1 AAA 0 A_CustomMissile ("bpuff_smoke", 2, 0, random (0, 360), 2, random (0, 360))
	TNT1 A 5
		Stop
	Crash:
	TNT1 A 1
	PUFF A 0 bright A_PlaySound("Sword/HitWall")
	TNT1 AAA 0 A_CustomMissile ("bpuff_smoke", 2, 0, random (0, 360), 2, random (0, 360))
	TNT1 A 5
		Stop
	}
}

ACTOR BladeSlash1
{
   Radius 8
   Height 16
   Speed 25
   Damage 20
   PROJECTILE
   RENDERSTYLE Translucent
   ALPHA 1.0
   SCALE 0.55
   ExplosionDamage 75
   ExplosionRadius 128
   DONTHURTSHOOTER
   Damagetype normal
   +THRUGHOST
   +RIPPER
   +EXTREMEDEATH
   +NODAMAGETHRUST
   States
   {
   Spawn:
      TNT1 AA 0 A_PlaySoundEX("Sword/SWave","Swave",0)
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      VFX4 A 1 Bright A_SpawnItem("SlashTrail1",0,0)
      TNT1 A 0 A_Explode
      Stop
   }
}

ACTOR BladeSlash2
{
   Radius 8
   Height 16
   Speed 25
   Damage 20
   PROJECTILE
   RENDERSTYLE Translucent
   ALPHA 0.95
   SCALE 0.55
   ExplosionDamage 75
   ExplosionRadius 128
   DONTHURTSHOOTER
   Damagetype normal
   +THRUGHOST
   +RIPPER
   +EXTREMEDEATH
   +NODAMAGETHRUST
   States
   {
   Spawn:
	  TNT1 AA 0 A_PlaySoundEX("Sword/SWave","Swave",0)
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      VFX4 C 1 Bright A_SpawnItem("SlashTrail2",0,0)
      TNT1 A 0 A_Explode
      Stop
   }
}

ACTOR SlashTrail1
{
   Radius 3
   Height 3
   PROJECTILE
   RENDERSTYLE Translucent
   SCALE 0.65
   ALPHA 0.80
   States
   {
   Spawn:
      NULL A 1
      VFX4 B 2 Bright A_FadeOut(0.10)
      Goto Spawn+1
   }
}

ACTOR SlashTrail2
{
   Radius 3
   Height 3
   PROJECTILE
   RENDERSTYLE Translucent
   SCALE 0.65
   ALPHA 0.80
   States
   {
   Spawn:
      NULL A 1
      VFX4 D 2 Bright A_FadeOut(0.10)
      Goto Spawn+1
   }
}

actor RedEnergyParticleSpawner 191
{
	+NoBlockMap 
	+NoGravity 
	+NoSector 
	+NoInteraction 
	+NoClip 
	-Solid 
	+CLIENTSIDEONLY
	+NOTIMEFREEZE
        states
        {
        Spawn:
        	TNT1 A 25
        	TNT1 A 1 A_SpawnItemEx ("RedRisingEnergy", random(-Args[0], Args[0]), random(-Args[0], Args[0]), random(0, 8), 0, 0, random(1,3), 0, 129, 0)
			Stop
        }     
        
}

Actor RedRisingEnergy
{
 +Missile
 +NoGravity
 +NoBlockmap
 +NoInteraction
 +NOTIMEFREEZE
 -Solid
 Radius 0
 Height 0
 RenderStyle Add
 Alpha 0.01
 Scale 0.37
 States
 {
  Spawn:
   SPFX AAAAA 1 Bright A_FadeIn(0.2)
   SPFX AAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.06)
   Stop
 }
}