Would it be as simple as a mob variable like:
var/spellbook = list()
Then for the scroll itself:
obj
spell
icon = 'shopicons.dmi'
icon_state = "scroll"
layer = 1
stackable = FALSE
verb
Get()
set src in view(1)
if(stackable)
var/obj/object = locate(text2path("[src.type]")) in usr.contents
if(object) //could find previous type of object
object.addAmount(src.amount)
del(src)
else //could not find previous type of object
usr.spellbook.Add(src)
else
usr.spellbook.Add(src)
?