actor YamatoSpearBoss : BaseMM8BDMWep_CBM
{
Tag "$TAGC_6H"
dropitem "YamatoSpearWepCDropped"
Weapon.AmmoUse 3
Weapon.AmmoGive 0
Obituary "$OB_YAMATOSPEAR"
weapon.ammotype "YamatoClassAmmo"
weapon.ammotype2 "YamatoClassAmmo2"
+WEAPON.NOAUTOAIM
States
{
Spawn:
C_06 H 1
loop
Ready:
YAMB A 0 ACS_ExecuteAlways(998,0,DYE_YAMATOMAN)
YAMB A 0 A_GunFlash
Ready1:
YAMB A 0 A_JumpIfInventory("YamatoLeapActive",1,"Ready3")
YAMB A 0 A_JumpIfInventory("YamatoClassAmmo",3,"Ready2")
YAMB A 0 A_TakeInventory("GravityAltDelay",1)
YAMB A 2 A_WeaponReady(WRF_NOPRIMARY)
YAMB A 0 A_GiveInventory("YamatoStock",2)
Goto Ready1
Ready2:
YAMB A 0 A_JumpIfInventory("GravityAltDelay",1,"Ready22")
YAMB A 2 A_WeaponReady(WRF_ALLOWRELOAD)
YAMB A 0 A_GiveInventory("YamatoStock",2)
YAMB A 0 A_TakeInventory("GravityAltDelay",1)
Goto Ready1
Ready22:
YAMB A 2 A_WeaponReady
YAMB A 0 A_GiveInventory("YamatoStock",2)
YAMB A 0 A_TakeInventory("GravityAltDelay",1)
Goto Ready1
Ready3:
YAMB A 0 A_JumpIfInventory("YamatoClassAmmo2",1,"Ready4")
YAMB E 0 A_GiveInventory("YamatoStock",1)
YAMB E 1 A_WeaponReady
YAMB A 0 A_GiveInventory("YamatoClassAmmo2",2)
YAMB A 0 A_TakeInventory("GravityAltDelay",1)
Goto Ready1
Ready4:
YAMB F 1 A_WeaponReady
YAMB A 0 A_GiveInventory("YamatoClassAmmo2",2)
YAMB F 0 A_GiveInventory("YamatoStock",2)
YAMB A 0 A_TakeInventory("GravityAltDelay",1)
YAMB F 1 A_WeaponReady
YAMB A 0 A_GiveInventory("YamatoClassAmmo2",1)
YAMB F 0 A_GiveInventory("YamatoStock",2)
YAMB A 0 A_TakeInventory("GravityAltDelay",1)
goto Ready1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
YAMB A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
YAMB A 1 A_Raise
Loop
Fire:
YAMB A 0 A_JumpifInventory("YamatoLeapActive",1,"Fling")
//TNT1 A 0 A_JumpIfInventory("IsBot",1,"BotFire")
YAMB B 0
Hold:
YAMB A 0 A_JumpIfNoAmmo("No")
YAMB A 0 A_PlaySoundEx("weapon/centshot","Weapon")
YAMB C 0 A_GiveInventory("YamatomanMain_CI",1)
YAMB CDCDCD 2
YAMB A 0 A_Refire
YAMB A 1 A_WeaponReady
No:
YAMB B 3 A_ClearRefire
Goto Ready1
AltFire:
YAMB A 0 A_JumpifInventory("YamatoLeapActive",1,"Cancel")
YAMB C 0 A_GiveInventory("YamatoSpinFlag",4)
goto AltfireLoop
AltfireLoop:
YAMB C 0 A_JumpIfInventory("PowerRage_ST",1,"AltfireLoopR")
YAMB C 1 A_PlaySoundEx("weapon/BRGSpin","Weapon")
YAMB D 0 A_FireCustomMissile("YamatoAlt",0,0,8,0)
YAMB D 1 A_GiveInventory("YamatoStock",1)
SRKH R 0 A_Jumpif(CallACS("CCBM_ButtonCheck",BT_ATTACK) == True,"MiniSpear")
YAMB D 0 A_Refire("AltfireLoop")
goto AltfireEnd
AltfireLoopR:
YAMB C 0 A_GiveInventory("YamatoStock",1)
YAMB C 0 A_FireCustomMissile("YamatoAlt",0,0,8,0)
SRKH R 0 A_Jumpif(CallACS("CCBM_ButtonCheck",BT_ATTACK) == True,"MiniSpear2")
goto AltfireLoop+1

MiniSpear:
TNT1 A 0 A_GunFlash("FlashWalter")
YAMB CDCD 1 A_PlaySoundEx("weapon/BRGSpin","Weapon")
YAMB D 0 A_Refire("AltfireLoop")
goto AltfireEnd

MiniSpear2:
TNT1 A 0 A_GunFlash("FlashWalter")
YAMB CD 1 A_PlaySoundEx("weapon/BRGSpin","Weapon")
YAMB D 0 A_Refire("AltfireLoopRageCheck")
goto AltfireEnd

AltfireLoopRageCheck:
TNT1 A 0
goto AltfireLoop+1

AltfireEnd:
YAMB D 0 A_PlaySoundEx("weapon/topspin","Weapon")
YAMB D 0 A_TakeInventory("YamatoSpinFlag",20)
YAMB C 2 A_WeaponReady
YAMB D 2 A_GiveInventory("YamatoStock",1)//
//YAMB C 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)//0.9 speed 10 jump
//YAMB C 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,13,1)
YAMB C 2 A_GiveInventory("YamatoStock",1)
YAMB C 0 A_GiveInventory("YamatoStock",1)
YAMB C 0 A_JumpIfInventory("PowerRage_ST",1,2)
YAMB CD 1
YAMB B 2 A_GiveInventory("YamatoStock",1)
YAMB B 1 A_GiveInventory("YamatoStock",1)
Goto Ready1

Reload:
YAMB A 0 A_JumpifInventory("GravityAltDelay",1,"Ready1")
YAMB A 0 A_JumpIf(z-floorz==0,"ReloadOk")
goto Ready1
ReloadOk:
YAMB E 1 SetPlayerProperty(0,1,0)
YAMB D 0 A_PlaySoundEx("weapon/yamatocharge","Weapon")
TNT1 A 0 A_TakeInventory("CutterFlag",99)
YAMB EE 1 A_GiveInventory("YamatoLeapActive",1)
Goto Ready1

Fling:
YAMB A 0 //ACS_ExecuteAlways(512,0,2)
YAMB D 0 A_PlaySoundEx("weapon/yamatovault","Weapon")
YAMB D 0 A_GiveInventory("GravityAltDelay",32)
YAMB F 1 A_ChangeVelocity(Cos(pitch)*ACS_NamedExecuteWithResult("YamatoCounter"), 0, -sin(pitch)*ACS_NamedExecuteWithResult("YamatoCounter"),1)
goto Cancel
Cancel:
YAMB A 0 SetPlayerProperty(0,0,0)
YAMB E 1 A_TakeInventory("YamatoClassAmmo2",999)
YAMB E 4 A_TakeInventory("YamatoLeapActive",999)
goto LeapAttackDelayAlt
FloorCheckLoopJumpDelay:
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
FloorCheckLoop:
YAMB E 0 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button")==1,"LeapAttackDelay")
YAMB E 1 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_J")==1,"JumpStunt")
YAMB E 0 A_CheckFloor("LeapAttackDelay")
loop
JumpStunt:
YAMB E 1 ThrustThingZ(0,80,1,1)
goto LeapAttackDelay
LeapAttackDelay:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
YAMB A 2 Offset(0,120)
YAMB A 2 Offset(0,100)
YAMB A 2 Offset(0,80)
YAMB A 2 Offset(0,60)
YAMB A 2 Offset(0,40)
YAMB A 1 Offset(0,20)
YAMB A 0 A_GiveInventory("YamatoReadying1",1)
YAMB A 0 A_GiveInventory("YamatoReadying2",1)
goto Ready1
LeapAttackDelayAlt:
TNT1 A 0 A_GiveInventory("CutterFlag",1)
YAMB A 2 Offset(0,120)
YAMB A 2 Offset(0,100)
YAMB A 2 Offset(0,80)
YAMB A 2 Offset(0,60)
YAMB A 2 Offset(0,40)
YAMB A 1 Offset(0,20)
goto Ready1


Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_JumpIfInventory("YamatoClassAmmo",30,5)
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("YamatoStock",24,1)
loop
TNT1 A 0 A_TakeInventory("YamatoStock",19)
TNT1 A 0 A_GiveInventory("YamatoClassAmmo",1)
goto Flash+2
TNT1 A 1 A_TakeInventory("YamatoStock",999)
goto Flash

FlashWalter:
YAMB C 0 A_GiveInventory("WhatsTheYams_P")
//YAMB C 0 A_GiveInventory("YamatomanMain_CI",1)
goto Flash

BotFire:
TNT1 A 0 A_JumpIfCloser(250,"BotAltFire")
goto Fire+1
BotAltFire:
TNT1 A 0 A_GiveInventory("BotHugFlag",1)
TNT1 A 0 A_GiveInventory("YamatoSpinFlag",4)
BotAltFire2:
YAMB C 0 A_PlaySoundEx("weapon/topspin","Weapon")
YAMB C 1
YAMB D 0 A_PlaySoundEx("weapon/topspin","Weapon")
YAMB D 0 A_FireCustomMissile("YamatoAlt",0,0,8,0)
YAMB D 1 A_GiveInventory("YamatoStock",1)
YAMB C 0 A_Refire(2)
YAMB C 0 A_TakeInventory("BotHugFlag",999)
Goto AltfireEnd
YAMB C 0 A_JumpIfCloser(250,"BotAltFire")
YAMB C 0 A_TakeInventory("YamatoSpinFlag",1)
YAMB C 0 A_JumpIfInventory("YamatoSpinFlag",1,"BotAltFire2")
YAMB C 0 A_TakeInventory("BotHugFlag",999)
YAMB C 0 A_ClearRefire
Goto AltfireEnd
}
}

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

actor YamatoClassAmmo2 : Ammo
{
inventory.amount 1
inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor YamatoLeapAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor YamatoSpinFlag : Inventory
{
inventory.amount 1
inventory.maxamount 4
}

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

actor YamatoReadying1 : PowerDamage
{
damagefactor "normal", 0.66
Powerup.Duration 10
}

actor YamatoReadying2 : PowerDamage
{
damagefactor "normal", 0.66
Powerup.Duration 20
}

actor YamatoLeapActive : OnceC {}

actor YamatoStockRageCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("YamatoStock",1)
stop
PickupR:
TNT1 A 0 A_GiveInventory("YamatoStock",2)
stop
}
}

actor LeapAmmoPlus : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("YamatoLeapAmmo",280,"PickupR")
TNT1 A 5 A_GiveInventory("YamatoLeapAmmo",1)
PickupR:
TNT1 A 10 A_GiveInventory("YamatoLeapAmmo",1)
stop
}
}

actor YamatoSpearBFirer
{
Translation "192:192=4:4","198:198=60:60"
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Height 0
Radius 0
speed 1
States
{
Spawn:
YAMB S 0
YAMB S 0 A_SpawnItemEX("YamatoSpearB",0,0,0,momx*45,momy*45,momz*45,0,9,0)
YAMB S 0 A_SpawnItemEX("YamatoSpearB2",0,0,0,momx*45,momy*45,momz*45,0,9,0)
stop
}
}

actor WhatsTheYams_P : CustomInventory
{
States
{
Pickup:
YAMB A 0 A_JumpIfInventory("YamatoClassAmmo",1,"Pickup2")
stop
Pickup2:
TNT1 A 0 A_TakeInventory("YamatoClassAmmo",1)
TNT1 A 0 A_GiveInventory("YamsAreThePowersThatBe_P",1)
TNT1 A 0 A_PlaySoundEx("weapon/centshot","Voice")
TNT1 A 0 A_GiveInventory("YamatoMain2_CI")
stop
}
}

  Actor YamsAreThePowersThatBe_P : PowerSpeed
  {
    Speed 0.5
    Powerup.Duration 10
    +POWERSPEED.NOTRAIL
  }

actor YamatoSpearBFirerB : YamatoSpearBFirer{Translation "192:192=205:205","198:198=74:74"}
actor YamatoSpearBFirerR : YamatoSpearBFirer{Translation "192:192=171:171","198:198=41:41"}
actor YamatoSpearBFirerO : YamatoSpearBFirer{Translation "192:192=104:104","198:198=128:128"}
actor YamatoSpearBFirerP : YamatoSpearBFirer{Translation "192:192=229:229","198:198=232:232"}

actor YamatoSpearB
{
PROJECTILE
damagetype "YamatoM_Shot"
Obituary "$OB_YAMATOSPEAR"
damage (10)
Radius 5
Height 5
speed 40
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLOOP:
YAMB S 1
loop
}
}

actor YamatoSpearB2 : YamatoSpearB
{
damage (0)
-RIPPER
+DONTREFLECT
states
{
Death:
YAMB S 0 A_SpawnItemEX("YamatoSpearB3",0,0,0,0,0,0,0,1)
stop
}
}

actor YamatoSpearB3 : YamatoSpearB2
{
PROJECTILE
+DONTBLAST
-NOGRAVITY
+SEEKERMISSILE
+NOEXPLODEFLOOR
//Renderstyle "Translucent"
//Alpha 0.95
+DOOMBOUNCE
+CANBOUNCEWATER
bouncefactor 0.1
wallbouncefactor 0.1
BounceCount 100
reactiontime 300
Damage (0)
states
{
Spawn:
YAMB R 0
YAMB RR 0 A_FaceTarget(90,90)
YAMB R 1 A_RearrangePointers(0,0,AAPTR_TARGET)
goto SpawnWait
SpawnWait:
YAMB R 0 A_JumpIfCloser(46,"Return")
YAMB R 0 A_JumpIfInTargetInventory("YamatoSpinFlag",1,"SpawnR")
YAMB R 1 A_CountDown
loop
SpawnD:
YAMB T 0 A_JumpIfCloser(46,"Return")
YAMB T 0 A_JumpIfInTargetInventory("YamatoSpinFlag",1,"SpawnR2")
YAMB T 1 A_CountDown
YAMB T 0 //A_Stop
goto SpawnWait
SpawnR:
YAMB R 0 A_JumpIfCloser(500,"SpawnL")
YAMB R 1 A_CountDown
goto SpawnWait
SpawnR2:
YAMB T 0 A_JumpIfCloser(500,"SpawnL")
YAMB T 1 A_CountDown
YAMB T 0 //A_Stop
goto SpawnWait
SpawnL:
YAMB T 0 //A_SpawnItemEx("FX",0,0,0,0,0,0,0,1)
YAMB TT 0 A_FaceTarget(90,90)
//YAMB T 0 A_ChangeVelocity(Cos(pitch)*12,0,Sin(pitch)*12,3)
YAMB T 0 A_SeekerMissile(90,90,2)
YAMB TTTTTTTTTTTTTTT 1 A_JumpIfCloser(46,"Return")
YAMB TTTTTTTTTTTTTTTT 0 A_CountDown
YAMB T 1 A_JumpIfCloser(46,"Return")
goto SpawnD

Return:
TNT1 A 0 A_GiveToTarget("YamatoPickup",1)
stop
Death:
TNT1 A 0
stop
XDeath:
TNT1 A 0
stop
}
}

actor YamatoSpearB3_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("YamatoSpearB3_FX",0,0,0,0,0,0,0,1)
stop
}
}

actor YamatoSpearB3_FX : BasicClientSide
{
States
{
Spawn:
YAMB RT 1
loop
}
}

actor YamatoAlt : BasicExplosion
{
Damagetype "YamatoM_Spin"//"YamatoSpin"
Obituary "$OB_YAMATOSPIN"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(5,150,0,0,16)
stop
}
}

actor YamatoDive : BasicExplosion
{
Damagetype "ClassPainLess2"
Obituary "$OB_YAMATODIVE"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(18,216,0,0,64)
stop
}
}

actor YamatoDiveB : YamatoDive{Translation "192:192=205:205","198:198=74:74"}
actor YamatoDiveR : YamatoDive{Translation "192:192=171:171","198:198=41:41"}
actor YamatoDiveO : YamatoDive{Translation "192:192=104:104","198:198=128:128"}
actor YamatoDiveP : YamatoDive{Translation "192:192=229:229","198:198=232:232"}

actor YamatoPickup : CustomInventory
{
inventory.pickupmessage "Picked up a spear tip."
inventory.pickupsound ""
scale 2.5
States
{
Pickup:
//DUST B 0 A_JumpIfInventory("YamsAreThePowersThatBe_P",1,"PickupHalved")
DUST B 0 A_GiveInventory("YamatoStock",12)
DUST B 0 A_PlaySound("item/energyup", 3, 0.75)
DUST B 0
stop
PickupHalved:
DUST B 0 A_GiveInventory("YamatoStock",6)
DUST B 0 A_PlaySound("item/energyup", 3, 0.35)
DUST B 0
stop
}
}

actor YamatomanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirer",0,1,8,0)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirer",abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirer",-abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerB",0,1,8,0)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerB",abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerB",-abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerR",0,1,8,0)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerR",abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerR",-abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerO",0,1,8,0)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerO",abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerO",-abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerP",0,1,8,0)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerP",abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerP",-abs(7-ACS_NamedExecuteWithResult("YamSpreadCounter")),0,8,5)
goto Done
}
}

actor YamatoMain2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirer",3*random(-1,1),0,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerB",3*random(-1,1),0,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerR",3*random(-1,1),0,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerO",3*random(-1,1),0,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("YamatoSpearBFirerP",3*random(-1,1),0,8,0)
goto Done
}
}

actor YamatoDive_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("YamatoDive",0,0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("YamatoDiveB",0,0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("YamatoDiveR",0,0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("YamatoDiveO",0,0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("YamatoDiveP",0,0,0,0)
goto Done
}
}
