lockable(var/obj/Ability/m) if(!m)return if(m.ShiftSpellist)return 0 if(m.Uses>0)return 0 if(!istype(m,/obj/Ability/Basic)) if(src.Pig&&!m.Pig)return 1 if(src.Toad&&!m.Toad)return 1 for(var/x in m.Disabledby) if(src.vars[x]) return 1 if(src.Curse&&m.Curseable)return 1 if(src.Mute&&m.Muteable)return 1 if(m.NeedWeapon) var/check for(var/obj/equip/weapon/g in list(lhand,rhand))if(g.kind in m.NeedWeapon)check++ if(!check)return 1 if(m.ItemCost)for(var/X in m.ItemCost)if(src.can_take_form_inventory(X)=src.Max_Energy(m.MaxEnergy))return 1 if(m.EnergyTMP)if(src.EnergyTMP[m.EnergyTMP]>=src.Max_Energy(m.MaxEnergyTMP))return 1 return 0