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 ..()