diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm
index 1de4ecef264..982d2be445f 100644
--- a/code/game/jobs/job/support.dm
+++ b/code/game/jobs/job/support.dm
@@ -339,7 +339,8 @@
equip(var/mob/living/carbon/human/H)
- if(!H) return 0
+ if(!H)
+ return 0
switch(H.backbag)
if(2) H.equip_or_collect(new /obj/item/weapon/storage/backpack(H), slot_back)
if(3) H.equip_or_collect(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back)
@@ -348,12 +349,10 @@
H.equip_or_collect(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
H.equip_or_collect(new /obj/item/device/pda/librarian(H), slot_wear_pda)
H.equip_or_collect(new /obj/item/clothing/shoes/black(H), slot_shoes)
- H.equip_or_collect(new /obj/item/weapon/barcodescanner(H), slot_l_hand)
+ H.equip_or_collect(new /obj/item/weapon/storage/bag/books(H), slot_l_hand)
+ H.equip_or_collect(new /obj/item/weapon/barcodescanner(H), slot_r_store)
H.equip_or_collect(new /obj/item/device/laser_pointer(H), slot_l_store)
- if(H.backbag == 1)
- H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
- else
- H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
+ H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
/datum/job/barber
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 66cb11a9dd6..af4d9aa6008 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -375,7 +375,7 @@
max_combined_w_class = 21
max_w_class = 3
w_class = 4 //Bigger than a book because physics
- can_hold = list("/obj/item/weapon/book", "/obj/item/weapon/spellbook") //No bibles, consistent with bookcase
+ can_hold = list("/obj/item/weapon/book", "/obj/item/weapon/storage/bible", "/obj/item/weapon/tome", "/obj/item/weapon/spellbook")
/*
* Trays - Agouri
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 4d58fee8e11..aa7d9ea4607 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -20,26 +20,32 @@
opacity = 1
var/health = 50
var/tmp/busy = 0
- var/list/valid_types = list(/obj/item/weapon/book, \
- /obj/item/weapon/tome, \
- /obj/item/weapon/spellbook, \
- /obj/item/weapon/storage/bible)
+ var/list/allowed_books = list(/obj/item/weapon/book, /obj/item/weapon/spellbook, /obj/item/weapon/storage/bible, /obj/item/weapon/tome) //Things allowed in the bookcase
/obj/structure/bookcase/initialize()
..()
for(var/obj/item/I in loc)
- if(is_type_in_list(I, valid_types))
+ if(is_type_in_list(I, allowed_books))
I.forceMove(src)
update_icon()
/obj/structure/bookcase/attackby(obj/O as obj, mob/user as mob, params)
if(busy) //So that you can't mess with it while deconstructing
return 1
- if(is_type_in_list(O, valid_types))
- user.drop_item()
+ if(is_type_in_list(O, allowed_books))
+ if(!user.drop_item())
+ return
O.forceMove(src)
update_icon()
return 1
+ else if(istype(O, /obj/item/weapon/storage/bag/books))
+ var/obj/item/weapon/storage/bag/books/B = O
+ for(var/obj/item/T in B.contents)
+ if(istype(T, /obj/item/weapon/book) || istype(T, /obj/item/weapon/spellbook) || istype(T, /obj/item/weapon/tome) || istype(T, /obj/item/weapon/storage/bible))
+ B.remove_from_storage(T, src)
+ to_chat(user, "You empty [O] into [src].")
+ update_icon()
+ return 1
else if(istype(O, /obj/item/weapon/wrench))
user.visible_message("[user] starts disassembling \the [src].", \
"You start disassembling \the [src].")
@@ -51,8 +57,6 @@
user.visible_message("[user] disassembles \the [src].", \
"You disassemble \the [src].")
busy = 0
- for(var/i = 1 to 5)
- new /obj/item/stack/sheet/wood(get_turf(src))
density = 0
qdel(src)
else
@@ -72,9 +76,6 @@
else
if(health <= 0)
visible_message("The bookcase is smashed apart!")
- new /obj/item/stack/sheet/wood(get_turf(src))
- new /obj/item/stack/sheet/wood(get_turf(src))
- new /obj/item/stack/sheet/wood(get_turf(src))
qdel(src)
return ..()
@@ -110,10 +111,10 @@
return
/obj/structure/bookcase/Destroy()
- for(var/i = 1 to 3)
+ for(var/i in 1 to 5)
new /obj/item/stack/sheet/wood(get_turf(src))
for(var/obj/item/I in contents)
- if(is_type_in_list(I, valid_types))
+ if(is_type_in_list(I, allowed_books))
I.forceMove(get_turf(src))
return ..()