// --------------------------------------------------------------------------
//
// Missile Launcher
//
// --------------------------------------------------------------------------

ACTOR EriMissileLauncher : AltPlayerWeapon 5011
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 2
	Weapon.AmmoGive 8
	Weapon.AmmoType "RocketAmmo"
	+WEAPON.NOAUTOFIRE
	Inventory.PickupMessage "$GOTMISSILE"
	Tag "$TAG_MISSILE"
	States
	{
	Ready:
		DMLG A 1 A_WeaponReady
		//DMLG A 0 A_JumpIfTargetInLOS(2)
		//DMLG A 0 A_SetCrosshair(8)
		Loop
		//DMLG A 0 A_SetCrosshair(9)
		//Loop
	Deselect:
		DMLG A 1 A_Lower
		Loop
	Select:
		//DMLG A 0 A_SetCrosshair(8)
		DMLG A 1 A_Raise
		Wait
	Fire:
		DMLG A 2 A_GunFlash
		DMLF AB 2 bright
		DMLF C 0 bright A_PlaySound("weapons/missilefire")
		DMLF C 0 bright A_FireCustomMissile("EriMissileLeft", 0,0,-2,0)
		DMLF C 2 bright A_FireCustomMissile("EriMissileRight",0,1, 2,0)
		DMLF DE 2
		DMLG C 6
		DMLG B 3
		DMLG A 3
		DMLG A 0 A_ReFire
		Goto Ready
	Flash:
		TNT1 A 2 Bright A_Light1
		TNT1 A 2 Bright A_Light2
		TNT1 A 2 Bright A_Light(3)
		TNT1 A 2 Bright A_Light2
		TNT1 A 2 Bright A_Light1
		Goto LightDone
	Spawn:
		DEML A -1
		Stop
	}
}

ACTOR EriMissileLauncherPickup : CustomInventory
{
	Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "$GOTMISSILE"
	Scale 0.8
	States
	{
	Spawn:
		DEML A -1
		Stop
	Pickup:
		TNT1 A 0 A_JumpIfInventory("AltToken",1,1)
		Stop
		TNT1 A 0 A_GiveInventory("EriMissileLauncher",1)
		Stop
	}
}

ACTOR EriMissileLeft : EriRocket
{
	+SEEKERMISSILE
	Speed 25
	SeeSound ""
	DeathSound "weapons/missileexplode"
	Obituary "$OB_MPMISSILE"
	Damagetype "Missile"
	MaxTargetRange 64
	var int user_explode;
	States
	{
	Spawn:
		XMIS A 0 
		XMIS A 0 A_PlaySound("weapons/missilefly", CHAN_BODY, 0.35, 1, ATTN_NORM)
		XMIS A 0 ACS_NamedExecuteAlways("SplitMissile",0,0,0,0)
	Fly:
		XMIS A 1 Bright A_SpawnItemEx("MissileTrail",0,0,0,-5,0,0,0,0)
		Loop
	Split:
		XMIS A 0 Bright A_PlaySound("weapons/missilelock", CHAN_AUTO)
		XMIS A 0 Bright A_SetAngle(angle + 45)
		Goto PreSeek
	PreSeek:
		XMIS A 0 Bright A_SetUserVar("user_explode", 1)
		XMIS A 0 Bright A_ChangeVelocity(velx + (25*cos(angle)), vely + (25*sin(angle)), velz, CVF_REPLACE)
		XMIS A 1 Bright A_SpawnItemEx("MissileTrail",0,0,0,-5,0,0,0,0)
		Goto Seek
	Seek:
		XMIS A 0 A_SeekerMissile(8,8, SMF_LOOK | SMF_PRECISE, 256, 16) XMIS A 1 Bright A_SpawnItemEx("MissileTrail",0,0,0,-5,0,0,0,0)
		XMIS A 0 A_SeekerMissile(8,8, SMF_LOOK | SMF_PRECISE, 256, 16) XMIS A 1 Bright A_SpawnItemEx("MissileTrail",0,0,0,-5,0,0,0,0)
		XMIS A 0 A_SeekerMissile(8,8, SMF_LOOK | SMF_PRECISE, 256, 16) XMIS A 1 Bright A_SpawnItemEx("MissileTrail",0,0,0,-5,0,0,0,0)
		XMIS A 0 A_SeekerMissile(8,8, SMF_LOOK | SMF_PRECISE, 256, 16) XMIS A 1 Bright A_SpawnItemEx("MissileTrail",0,0,0,-5,0,0,0,0)
		Loop
	Death:
		XMIS B 0 Bright Thing_ChangeTID(0,0)
		XMIS B 0 Bright A_SetTranslucent(1.0,1)
	    XMIS B 0 Bright A_StopSound(CHAN_BODY)
		XMIS B 0 Bright A_JumpIf(user_explode == 1, 2)
		XMIS B 3 Bright A_Explode(64,128,1)
		Goto EndBoom
		XMIS B 3 Bright A_Explode(128,128,1)
	EndBoom:
		XMIS CDEFG 3 Bright
		Stop
	}
}
ACTOR EriMissileRight : EriMissileLeft
{
	States
	{
	Split:
		XMIS A 0 Bright A_SetAngle(angle - 45)
		Goto PreSeek
	}	
}

ACTOR MissileTrail : PlasmaBall
{ 
    Alpha 0.5
	Scale 0.5
    Damage 0
    Speed 0
    + NOCLIP
    +FORCEXYBILLBOARD
    SeeSound ""
    DeathSound ""
    States
    {
    Spawn:
      MTRL HABCDEFG 2 BRIGHT
      Stop
    }
}