actor YamatoSpearBoss : MegaBuster
{
Weapon.AmmoUse 3
Weapon.AmmoGive 0
Weapon.SlotNumber 1
Obituary "%o was impaled by %k's Yamato Spear."
weapon.ammotype "YamatoClassAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
Spawn:
TNT1 A 0
stop
Ready:
YAMB A 0 ACS_ExecuteAlways(998,0,212)
YAMB A 0 A_GunFlash
YAMB A 0 A_JumpIfInventory("YamatoClassAmmo",3,"Ready2")
YAMB A 1 A_WeaponReady(WRF_NOPRIMARY)
YAMB A 0 A_GiveInventory("YamatoStock",1)
goto Ready+2
Ready2:
YAMB A 1 A_WeaponReady
YAMB A 0 A_GiveInventory("YamatoStock",1)
loop
Deselect:
ICEB A 0 A_TakeInventory("YamatoSpearBoss")
ICEB A 0 A_GiveInventory("YamatoSpearBoss")
YAMB A 1 A_SelectWeapon("YamatoSpearBoss")
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
YAMB A 1 A_Raise
Loop
Fire:
YAMB B 3
Hold:
YAMB A 0 A_JumpIfNoAmmo("No")
YAMB A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
YAMB C 0 A_FireCustomMissile("YamatoSpearBFirer",random(7,3),1,8,random(5,10))
YAMB D 0 A_FireCustomMissile("YamatoSpearBFirer",random(2,-2),0,8,random(5,10))
YAMB A 0 A_FireCustomMissile("YamatoSpearBFirer",random(-3,-7),0,8,random(5,10))
YAMB CDCDCD/*CD*/ 2
YAMB A 0 A_Refire
BUST C 0 ACS_ExecuteAlways(974,0)
No:
YAMB B 3
Goto Ready+2
AltFire:
//YAMB A 0 A_JumpIfNoAmmo("No")
YAMB A 0 A_PlaySoundEx("weapon/topspin","Weapon")
YAMB C 1
YAMB A 0 A_PlaySoundEx("weapon/topspin","Weapon")
YAMB A 0 A_FireCustomMissile("YamatoAlt",0,0,8,0)
YAMB D 1 A_GiveInventory ("YamatoStock", 1)
YAMB A 0 A_Refire
YAMB CD 2 A_GiveInventory ("YamatoStock", 1)
YAMB CCCDDD 1 A_GiveInventory ("YamatoStock", 1)
YAMB BBB 1 A_GiveInventory ("YamatoStock", 1)
Goto Ready+2
Flash:
TNT1 A 0 A_JumpIfInventory("YamatoClassAmmo", 28, "Clear")
TNT1 A 1 //A_GiveInventory ("YamatoStock", 1)
CRAA A 0 A_JumpIfInventory("YamatoStock", 25, "Give")
loop
Give:
TNT1 A 0 A_TakeInventory("YamatoStock",20)
TNT1 A 0 A_GiveInventory ("YamatoClassAmmo", 1)
goto Flash+2
Clear:
TNT1 A 1 A_TakeInventory ("YamatoStock", 999)
goto Flash
NoFlash:
TNT1 A 0
stop
/*No:
//YAMB A 1 ACS_Execute(979,0)
Goto Ready+1*/
}
}

actor YamatoClassAmmo : Ammo
{
+INVENTORY.IGNORESKILL
inventory.amount 1
inventory.maxamount 27
}

actor YamatoStock : Inventory
{
inventory.amount 1
inventory.maxamount 999
}

actor YamatoSpearBFirer
{
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Height 0
Radius 0
speed 1
States
{
spawn:
YAMA E 0
YAMA E 0 A_SpawnItemEX("YamatoSpearB",0,0,0,momx*40,momy*40,momz*40, 0, SXF_ABSOLUTEMOMENTUM, 0)
YAMA E 0 A_SpawnItemEX("YamatoSpearB2",0,0,0,momx*40,momy*40,momz*40, 0, SXF_ABSOLUTEMOMENTUM, 0)
stop
}
}


actor YamatoSpearB : YamatoSpear
{
damage (6)
speed 40
States
{
Spawn:
YAMA E 1
loop
}
}

actor YamatoSpearB2 : YamatoSpearB
{
damage (0)
-RIPPER
states
{
Death:
YAMA E 0 A_SpawnItemEX("YamatoSpearB3", 0, 0, 0)
stop
}
}

actor YamatoSpearB3 : YamatoSpearB2
{
-MISSILE
+DONTBLAST
-NOGRAVITY
reactiontime 275
states
{
Spawn:
YAMA F 0 A_CountDown
YAMA F 1 A_JumpIfCloser(100,"Return")
loop
Return:
YAMA F 0 A_GiveToTarget("YamatoPickup",1)
stop
Death:
YAMA F 0
stop
}
}

actor YamatoAlt
{
PROJECTILE
+DONTSPLASH
+DONTBLAST
Damagetype "Yamato"
Damage 0
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(5,150,0)
stop
}
}

actor YamatoPickup : CustomInventory
{
inventory.pickupmessage "Picked up a spear tip."
inventory.pickupsound "item/energyup"
inventory.amount 1
inventory.maxamount 1
scale 2.5
+INVENTORY.AUTOACTIVATE
+INVENTORY.QUIET
States
{
Spawn:
TNT1 A 1
stop
Pickup:
DUST B 0 A_GiveInventory("YamatoStock",12)
DUST B 0 A_PlaySound("item/energyup", 3, 0.75)
DUST B 0
stop
}
}