anchor.diff:  	w_class = 3		 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever)
   	flags = FPRINT | TABLEPASS
   	attack_verb = list("bashed", "whacked", "educated")
  -	var/dat			 // Actual page content
  -	var/due_date = 0 // Game time in 1/10th seconds
  -	var/author		 // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
  -	var/unique = 0   // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified
  -	var/title		 // The real name of the book.
  -	var/carved = 0	 // Has the book been hollowed out for use as a secret storage item?
  +	var/dat				//Actual page content
  +	var/due_date = 0	//Game time in 1/10th seconds
  +	var/author			//Who wrote the thing, can be changed by pen or PC. It is not automatically assigned
  +	var/unique = 0		//0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified
  +	var/title			//The real name of the book.
  +	var/carved = 0		//Has the book been hollowed out for use as a secret storage item?
   	var/obj/item/store	//What's in the book?
   
  -/obj/item/weapon/book/attack_self(var/mob/user as mob)
  +
  +/obj/item/weapon/book/attack_self(mob/user)
   	if(carved)
   		if(store)
   			user << "<span class='notice'>[store] falls out of [title]!</span>"
  -			store.loc = get_turf(src.loc)
  +			store.loc = get_turf(loc)
   			store = null
   			return
   		else
  
positive.code: 			I.loc = src
  	update_icon()
  
  /obj/structure/bookcase/attackby(obj/O as obj, mob/user as mob)
  
  	switch(state)
  		if(0)
  			if(istype(O, /obj/item/weapon/wrench))
  				playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
  				if(do_after(user, 20))
  					user << "\blue You wrench the frame into place."
  					anchored = 1
  					state = 1
  			if(istype(O, /obj/item/weapon/crowbar))
  				playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
  				if(do_after(user, 20))
  					user << "\blue You pry the frame apart."
  					new /obj/item/stack/sheet/wood( loc, 4)
  					del(src)
  
  		if(1)
  			if(istype(O, /obj/item/stack/sheet/wood))
  				var/obj/item/stack/sheet/wood/W = O
  				W.use(2)
  				user << "\blue You add a shelf."
  				state = 2
  				icon_state = "book-0"
  			if(istype(O, /obj/item/weapon/wrench))
  				playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
  				user << "\blue You unrwench the frame."
  				anchored = 0
  				state = 0
  		if(2)
  			if(istype(O, /obj/item/weapon/book))
  				user.drop_item()
  				O.loc = src
  				update_icon()
  			else if(istype(O, /obj/item/weapon/pen))
  				var/newname = stripped_input(usr, "What would you like to title this bookshelf?")
  				if(!newname)
  					return
  				else
  					name = ("bookcase ([sanitize(newname)])")
  			else if(istype(O, /obj/item/weapon/crowbar))
  				if(contents.len)
  					user << "\red You need to remove the books first."
  				else
  					playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
  					user << "\blue You pry the shelf out."
  					new /obj/item/stack/sheet/wood( loc, 1)
  					state = 1
  					icon_state = "bookempty"
  			else
  				..()
  
  /obj/structure/bookcase/attack_hand(var/mob/user as mob)
  	if(contents.len)
  		var/obj/item/weapon/book/choice = input("Which book would you like to remove from the shelf?") in contents as obj|null
  		if(choice)
  
negative.code: 			else
  				modedesc = "ERROR"
  		user << " - Mode [mode] : [modedesc]"
  		if(computer)
  			user << "<font color=green>Computer has been associated with this unit.</font>"
  		else
  			user << "<font color=red>No associated computer found. Only local scans will function properly.</font>"
  