actor MirrorBusterWep : MegaBuster 10081
{
Weapon.AmmoUse 1
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Obituary "%o saw %hself in %k's Mirror Buster."
Inventory.Pickupmessage "Power up! Mirror Buster!"
weapon.ammotype "MirrorBusterAmmo"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
inventory.icon "MIRRSI"
Scale 2.0
States
{
Spawn:
WEA3 H 1
loop
Ready:
MIRR F 0 ACS_ExecuteAlways(998,0,52)
MIRR F 1 A_WeaponReady
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
MIRR F 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
MIRR F 1 A_Raise
Loop
Fire:
MIRR F 0 A_JumpIfNoAmmo("No")
MIRR F 0 A_TakeInventory("BasicArmor",9999)
MIRR F 0 A_PlayWeaponSound("weapon/mirroractivate")
Goto Hold
Hold:
MIRR G 0 A_JumpIfNoAmmo("No")
MIRR HHH 1 A_SpawnItemEx("MirrorBuster1",38,0,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
MIRR G 0 A_TakeInventory("MirrorBusterAmmo",1)
MIRR G 0 A_JumpIfNoAmmo("No")
MIRR HHH 1 A_SpawnItemEx("MirrorBuster2",38,0,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
MIRR G 0 A_TakeInventory("MirrorBusterAmmo",1)
MIRR G 0 A_Refire
MIRR G 4
Goto Ready+1
No:
MIRR F 1 ACS_Execute(979,0)
Goto Ready+1
}
}

actor MirrorBusterAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
}

actor MirrorBuster1 
{
+MISSILE
//+RIPPER
+DONTSPLASH
+SHOOTABLE
+GHOST
Damage 0
Height 48
speed 0
health 9999
+DONTRIP
painchance 256
+NOBLOOD
+NOTARGETSWITCH
Radius 32
scale 2.5
States
{
Spawn:
MIRR A 2
stop
Pain.Buster:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Needle:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Magnet:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Dive:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Ice2:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Blizzard:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.WeakFire:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.PharaohHold:
Pain.Star:
Pain.Top:
Pain.Kick:
Pain.FireSpin:
Pain.Cat:
Pain.Gemini:
Pain.Scorch:
Pain.Junk:
TNT1 A 0
stop
Pain.Quick:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Cutter:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot3",1)
stop
Pain.Ring:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot3",1)
stop
Pain.Knight:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot3",1)
stop
Pain.Shock:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.WeakPharoah:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.WaterWave:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.CrystalBit:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Yamato:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Wind:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain.Screw:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot1",1)
stop
Pain:
TNT1 A 0 A_ChangeFlag("SHOOTABLE",0)
TNT1 A 1 A_GiveToTarget("MirrorShot2",1)
stop
}
}

actor MirrorBuster2 : MirrorBuster1
{
States
{
Spawn:
MIRR B 2
stop
}
}

actor MirrorShot1 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
states
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_FireCustomMissile("MirrorShotWeak",0,0,0,0)
TNT1 A 0 A_PlaySound("weapon/mirrordeflect")
stop
}
}

actor MirrorShot2 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
states
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_FireCustomMissile("MirrorShotStrong",0,0,0,0)
TNT1 A 0 A_PlaySound("weapon/mirrordeflect2")
stop
}
}

actor MirrorShot3 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
states
{
Spawn:
TNT1 A 0
stop
Pickup:
TNT1 A 0 A_FireCustomMissile("MirrorShotWeaker",0,0,0,0)
TNT1 A 0 A_PlaySound("weapon/mirrordeflect")
stop
}
}


actor MirrorShotWeak : FastProjectile
{
Obituary "%o saw himself in %k's Mirror Buster."
PROJECTILE
+THRUGHOST
Radius 8
Height 7
scale 2.5
damage (30)
speed 38
States
{
Spawn:
MIRR C 1
loop
}
}

actor MirrorShotWeaker : MirrorShotWeak
{
damage (5)
}

actor MirrorShotStrong : FastProjectile
{
+RIPPER
+THRUGHOST
scale 2.5
damage (5)
speed 38
States
{
Spawn:
MIRR DE 2
loop
}
}

actor MirrorShotWeakBoss : MirrorShotWeak
{
damage (10)
speed 38
states
{
Spawn:
MIRR D 0
MIRR D 0 ThrustThingZ(0,0,0,0)
MIRR C 1
loop
}
}

actor MirrorShotStrongBoss : MirrorShotStrong
{
damage (12)
speed 50
states
{
Spawn:
MIRR D 0
MIRR D 0 ThrustThingZ(0,0,0,0)
MIRR DE 2
loop
}
}

actor MirrorShotStrongerBoss : MirrorShotStrong
{
damage (10)
speed 80
radius 32
states
{
Spawn:
MIRR D 0
MIRR D 0 ThrustThingZ(0,0,0,0)
MIRR DE 2
loop
}
}

actor MirrorBusterWepBoss : MirrorBusterWep
{
weapon.ammouse 0
+WEAPON.CHEATNOTWEAPON
States
{
Fire:
MIRR F 0 A_JumpIfInventory("EnkerMirrorCount",4,"Fire4")
MIRR F 0 A_JumpIfInventory("EnkerMirrorCount",3,"Fire3")
MIRR F 0 A_JumpIfInventory("EnkerMirrorCount",1,"Fire2")
MIRR F 0 ACS_Execute(5,0)
MIRR FF 8 A_SpawnItemEx("EnkerMelee")
MIRR F 0 ACS_ExecuteAlways(998,0,52)
MIRR FFFFFFFF 8 A_SpawnItemEx("EnkerMelee")
MIRR F 0 A_Stop
MIRR F 0 SetPlayerProperty(0,1,0)
MIRR F 0 A_GiveInventory("EnkerMirrorCount",1)
MIRR F 0 ACS_Execute(5,0,1)
MIRR F 50
MIRR F 0 SetPlayerProperty(0,0,0)
Goto Ready
Fire2:
MIRR F 0 ACS_ExecuteAlways(998,0,52)
MIRR F 0 A_FireCustomMissile("MirrorShotWeakBoss",0,0,0,0)
MIRR F 10 A_PlaySound("weapon/mirrordeflect")
MIRR F 0 ThrustThingZ(0,58,0,1)
MIRR F 0 A_Recoil(-18)
Goto Mirror
Fire3:
MIRR F 0 ACS_ExecuteAlways(998,0,52)
MIRR F 0 A_FireCustomMissile("MirrorShotStrongBoss",0,0,0,0)
MIRR F 0 A_PlaySound("weapon/mirrordeflect2")
MIRR F 0 ThrustThingZ(0,58,0,1)
MIRR F 0 A_Recoil(-18)
Goto Mirror
Fire4:
MIRR F 0 ACS_ExecuteAlways(998,0,52)
MIRR F 0 A_FireCustomMissile("MirrorShotStrongerBoss",0,0,0,0)
MIRR F 0 A_PlaySound("weapon/mirrordeflect2")
Goto Mirror
Mirror:
MIRR F 0 A_TakeInventory("EnkerMirrorCount",999)
MIRR F 0 SetPlayerProperty(0,0,0)
Goto Ready
}
}

actor EnkerMirrorCount : Inventory
{
inventory.amount 1
inventory.maxamount 8
}

actor EnkerMelee
{
PROJECTILE
States
{
Spawn:
TNT1 A 0 
TNT1 A 1 A_Explode(20, 80, 0)
stop
}
}