// --------------------------------------------------------------------------
//
// Irebolt
//
// --------------------------------------------------------------------------

ACTOR EriIrebolt : HellWeapon replaces SuperShotgun
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 2
	Weapon.AmmoGive 8
	Weapon.AmmoType "BloodAmmo"
	Weapon.SisterWeapon "EriIreboltPowered"
	+WEAPON.NOAUTOFIRE
	+WEAPON.AMMO_OPTIONAL
	Inventory.PickupMessage "$GOTIREBOLT"
	Tag "$TAG_IREBOLT"
	States
	{
	Ready:
		HIRG BBBCCCDDDEEEFFFGGG 1 A_WeaponReady
		Loop
	Deselect:
		HIRG A 1 A_Lower
		Loop
	Select:
		HIRG A 1 A_Raise
		Loop
	Fire:
		HIRF A 0 Bright A_JumpIfNoAmmo("Nope")
		HIRF A 3 Bright A_GunFlash
		HIRF B 0 Bright A_Recoil(5.0)
		HIRF B 0 Bright A_PlaySound("weapons/ireboltfire", CHAN_WEAPON)
		HIRF B 3 Bright A_FireCustomMissile("IreboltShot")
		HIRF CD 3 Bright
		HIRF E 3
	Nope:
		HIRG EFG 3
		HIRG A 0 A_ReFire
		Goto Ready
	AltFire:
		HIRG A 1 Bright ACS_NamedExecute("IreboltDetonate", 0, 0, 0, 0)
		Goto Ready
	Flash:
		TNT1 A 3 Bright A_Light1
		TNT1 A 3 Bright A_Light2
		TNT1 A 3 Bright A_Light(3)
		TNT1 A 3 Bright A_Light1
		Goto LightDone
	Spawn:
		HEIR A -1
		Stop
	}
}
ACTOR EriIreboltPowered : EriIrebolt
{
	Weapon.SisterWeapon "EriIrebolt"
	+WEAPON.POWERED_UP
	States
	{
	Fire:
		HIRF A 0 Bright A_JumpIfNoAmmo("Nope")
		HIRF A 3 Bright A_GunFlash
		HIRF B 0 Bright A_Recoil(2.0)
		HIRF B 0 Bright A_PlaySound("weapons/ireboltfire", CHAN_AUTO)
		HIRF BB 0 Bright A_FireCustomMissile("IreboltMine", frandom(-3.5, 3.5), 0, 0, 0, 1, frandom(0, 5))
		HIRF B  3 Bright A_FireCustomMissile("IreboltMine", frandom(-3.5, 3.5), 1, 0, 0, 1, frandom(0, 5))
		HIRF CD 3 Bright
		HIRF E 3
		HIRG A 0 A_ReFire
		Goto Ready
	}
}
ACTOR EriIreboltBolt : EriIrebolt replaces PhoenixRod
{
	Weapon.AmmoUse 1
	Weapon.AmmoType "BoltAmmo"
	Weapon.SisterWeapon "EriIreboltBoltPowered"
}
ACTOR EriIreboltBoltPowered : EriIreboltPowered
{
	Weapon.AmmoUse 1
	Weapon.AmmoType "BoltAmmo"
	Weapon.SisterWeapon "EriIreboltBolt"
	+WEAPON.POWERED_UP	
}
ACTOR EriIreboltMana : EriIrebolt replaces FWeapHammer
{
	Weapon.AmmoGive 25
	Weapon.AmmoUse 5
	Weapon.AmmoType "Mana2"
	Weapon.SisterWeapon "EriIreboltManaPowered"
}
ACTOR EriIreboltManaPowered : EriIreboltPowered
{
	Weapon.AmmoUse 5
	Weapon.AmmoType "Mana2"
	Weapon.SisterWeapon "EriIreboltMana"
	+WEAPON.POWERED_UP	
}
ACTOR EriIreboltBoltGiver : WeaponGiver
{
	Inventory.PickupMessage "$GOTIREBOLT"
	DropItem "EriIreboltBolt"
	States
	{
	Spawn:
		HEIR A -1
		Stop
	}
}
ACTOR EriIreboltStrife : EriIreboltBoltGiver replaces StrifeGrenadeLauncher {}

ACTOR IreboltShot
{
	Radius 4
	Height 8
	Speed 50
	Damage 0
	Projectile
	//+CAUSEPAIN
	+FORCERADIUSDMG
	+SEEKERMISSILE
	DamageType "Explosive"
	Obituary "$OB_MPIREBOLT"
	Decal "BulletChip"
	var int user_playernum;
	var int user_dead;
	States
	{
	Spawn:
		ISPK A 0 
		ISPK A 0 A_SetUserVar("user_playernum", CallACS("IreboltFire"))
		ISPK A 0 A_PlaySound("weapons/irebolthum", CHAN_BODY, 0.35, 1, ATTN_NORM)
	Fly:
		ISPK A 1 Bright A_SpawnItemEx("IreboltTrail",-12,0,-2,-2,0,0,0,0)
		Loop
	XDeath:
		ISPK B 0 Bright A_PlaySound("weapons/ireboltspike", CHAN_BODY)
		ISPK B 0 Bright A_SeekerMissile(90,90,SMF_LOOK,256,1)
		ISPK B 0 Bright A_Stop
		ISPK B 0 Bright A_Warp(AAPTR_TRACER, -8, 0, 24, 180, WARPF_NOCHECKPOSITION|WARPF_TESTONLY, "Stick")
		Goto Fall
	Death:
		ISPK B 0 Bright A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_NULL, 0)
		ISPK B 0 Bright A_SetUserVar("user_dead", 1)
		ISPK B 0 Bright A_PlaySound("weapons/ireboltwall", CHAN_BODY)
	Stick:
		ISPK "#" 0 Bright ACS_NamedExecuteAlways("IreboltHit", 0, user_playernum, 0, 0)
	Stuck:
		ISPK "#" 1 Bright A_Warp(AAPTR_TRACER, -8, 0, 24, 180, WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		ISPK "#" 0 Bright A_JumpIf(user_dead == 1, 2)
		ISPK "#" 0 Bright A_SpawnItemEx("IreboltTrail",-12,0,-2,frandom(-1,0),frandom(-0.5,0.5),3,0,0) 
		ISPK "#" 0 Bright A_JumpIfInventory("IreboltDetonator", 1, "Boom")
		Loop
	Fall:
		ISPK A 0 Bright A_SetUserVar("user_dead", 1)
		ISPK A 0 Bright A_Gravity
		Goto Stick
	Boom:
		HEXP A 0 Bright A_SetTranslucent(1.0,1)
		HEXP A 0 Bright A_PlaySound("weapons/ireboltfly", CHAN_AUTO)
	    HEXP A 0 Bright A_PlaySound("weapons/ireboltdetonate", CHAN_AUTO)
		HEXP A 3 Bright A_Explode(150, 128, XF_HURTSOURCE)
		HEXP BCDEFG 3 Bright
		Stop
	}
}
ACTOR IreboltDetonator : EriToken {}

ACTOR IreboltMine
{
	Radius 4
	Height 8
	Speed 50
	Damage 0
	Projectile
	//+CAUSEPAIN
	+FORCERADIUSDMG
	+SEEKERMISSILE
	-NOGRAVITY
	DamageType "Explosive"
	Obituary "$OB_MPIREBOLTPOW"
	Decal "BulletChip"
	Gravity 0.5
	var int user_playernum;
	var int user_hitx;
	var int user_hity;
	var int user_hitz;
	States
	{
	Spawn:
		IBOM A 0 Bright
		IBOM A 0 Bright A_SetUserVar("user_playernum", CallACS("IreboltFire"))
		IBOM A 0 Bright A_Jump(256, 1, 2)
	Fly:
		IBOM AB 4 Bright
		Loop
	XDeath:
		IBOM "#" 0 Bright A_SetUserVar("user_hitx", CallACS("GetTracerX", 0, 0, 0, 0))
		IBOM "#" 0 Bright A_SetUserVar("user_hity", CallACS("GetTracerY", 0, 0, 0, 0))
		IBOM "#" 0 Bright A_SetUserVar("user_hitz", CallACS("GetTracerZ", 0, 0, 0, 0))
		IBOM "#" 0 Bright A_PlaySound("weapons/ireboltspike", CHAN_BODY)
		IBOM "#" 0 Bright A_SeekerMissile(90,90,SMF_LOOK,256,1)
		IBOM "#" 0 Bright A_Stop
		IBOM "#" 0 Bright A_Warp(AAPTR_TRACER, 0, 0, 0, 0, WARPF_NOCHECKPOSITION|WARPF_TESTONLY, "Stick")
		Goto Stick+1
	Death:
		IBOM "#" 0 Bright A_RearrangePointers(AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_NULL, 0)
		IBOM "#" 0 Bright A_PlaySound("weapons/ireboltwall", CHAN_BODY)
	Stick:
		IBOM "#" 0 Bright A_NoGravity
		IBOM "#" 0 Bright ACS_NamedExecuteAlways("IreboltHit", 0, user_playernum, 0, 0)
	Stuck:
		IBOM "#" 1 Bright A_Warp(AAPTR_TRACER, user_hitx, user_hity, user_hitz, 0, WARPF_ABSOLUTEOFFSET|WARPF_USECALLERANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
		IBOM "#" 0 Bright A_JumpIfInventory("IreboltDetonator", 1, "Boom")
		Loop
	Boom:
		HEXP A 0 Bright A_SetTranslucent(1.0,1)
		HEXP A 0 Bright A_PlaySound("weapons/ireboltfly", CHAN_AUTO)
	    HEXP A 0 Bright A_PlaySound("weapons/ireboltdetonate", CHAN_AUTO)
		HEXP A 3 Bright A_Explode(100, 128, XF_HURTSOURCE)
		HEXP BCDEFG 3 Bright
		Stop
	}
}

ACTOR OldIreboltShot
{
	Radius 11
	Height 8
	Speed 40
	Damage 20
	Projectile
	SeeSound "weapons/ireboltfly"
	Obituary "$OB_MPIREBOLT"
	Decal "Scorch"
	Renderstyle Translucent
	Alpha 0.85
	Scale 0.66
	States
	{
	Spawn:
		HBAL A 0 
		HBAL A 0 A_PlaySound("weapons/irebolthum", CHAN_BODY, 0.35, 1, ATTN_NORM)
	Fly:
		HBAL AAABBBCCCDDDEEEFFF 1 Bright A_SpawnItemEx("IreboltTrail",0,0,0,-5,0,0,0,0)
		Loop
	Death:
		HEXP A 0 Bright A_SetScale(1.0)
		HEXP A 0 Bright A_SetTranslucent(1.0,1)
	    HEXP A 0 Bright A_PlaySound("weapons/irebolthit", CHAN_BODY)
		HEXP A 3 Bright A_Explode
		HEXP BCDEFG 3 Bright
		Stop
	}
}

ACTOR IreboltTrail : EriTrail
{
	RenderStyle Add
    Alpha 0.5
	Scale 0.33
    States
    {
    Spawn:
      MTRL HABCDEFG 2 BRIGHT
      Stop
    }
}