actor MirrorBusterBoss : MegaBuster 
{
Weapon.AmmoUse 0
Weapon.AmmoGive 0
Weapon.SlotNumber 1
Obituary "%o was reflected by %k's Mirror Buster."
weapon.ammotype "MirrorCharge"
inventory.pickupsound "weapon/weaponup"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
Spawn:
TNT1 A 0
stop
Ready:
ENKA A 0 ACS_ExecuteAlways(998,0,52)
ENKA A 1 A_WeaponReady(WRF_NOSWITCH)
Goto Ready+1
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
ENKA A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
ENKA A 1 A_Raise
Loop
Fire:
ENKA A 0 A_JumpIfInventory("MirrorCharge",11,"StrongMirror")
TNT1 A 0 A_PlaySound("weapon/mirrordeflect")
ENKA B 2
ENKA A 0 A_FireCustomMissile("MirrorShotWeakCust",0,0,8,0)
ENKA EDE 2
ENKA A 14
goto Ready+1
StrongMirror:
ENKA A 0 A_TakeInventory("MirrorCharge",11)
TNT1 A 0 A_PlaySound("weapon/mirrordeflect2")
ENKA BCD 2
ENKA A 0 A_FireCustomMissile("MirrorShotStrongCust",0,0,8,0)
ENKA FDE 2
ENKA A 12
goto Ready+1
AltFire:
ENKA A 0 A_GiveInventory("EnkerAbsorbCount",1)
ENKA A 0 A_GiveInventory("JunkArmor",1)
ENKA A 0 A_GiveInventory("LastArmorCount",100)
ENKA A 0 SetPlayerProperty(0,1,4)
ENKA A 0
ENKA A 0 A_PlaySound("weapon/mirrorabsorb")
ENKA B 3
ENKA C 30
ENKA B 2
ENKA A 0 A_TakeInventory("EnkerAbsorbCount",1)
ENKA A 0 A_TakeInventory("BasicArmor",999)
ENKA A 0 A_TakeInventory("LastArmorCount",999)
ENKA A 0 SetPlayerProperty(0,0,4)
ENKA A 0
goto Ready+1
}
}

actor JunkArmor : BasicArmorPickup
{
Armor.Savepercent 90
Armor.Saveamount 100
States
{
Spawn:
PLAY A 1
loop
}
}

actor LastArmorCount : Inventory
{
inventory.amount 1
inventory.maxamount 100
}

actor MirrorCharge : Ammo
{
+INVENTORY.IGNORESKILL
inventory.amount 1
inventory.maxamount 44
}

actor EnkerAbsorbCount : Inventory
{
inventory.amount 1
inventory.maxamount 1
}

actor MirrorShotWeakCust : MirrorShotWeakC
{
damage (20)
}

actor MirrorShotStrongCust : MirrorShotStrongC
{
damage (5)
speed 50
}

actor EnkerMeleeCust : EnkerMelee
{
Obituary "%o got speared by %k."
damagetype "Mirror"
}