diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 8e3c6a57e18..593ef9a820f 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -5,7 +5,8 @@ icon = 'icons/obj/nanopaste.dmi' icon_state = "tube" origin_tech = "materials=2;engineering=3" - amount = 10 + amount = 6 + max_amount = 6 toolspeed = 1 /obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 5e07e09b040..582432c06b7 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -26,8 +26,7 @@ /obj/item/stack/Destroy() if(usr && usr.machine == src) usr << browse(null, "window=stack") - ..() - return QDEL_HINT_HARDDEL_NOW // because qdel'd stacks act strange for cyborgs + return ..() /obj/item/stack/examine(mob/user) if(..(user, 1)) @@ -195,15 +194,18 @@ interact(usr) return -/obj/item/stack/proc/use(var/used) +/obj/item/stack/proc/use(used) if(amount < used) return 0 amount -= used if(amount < 1) // Just in case a stack's amount ends up fractional somehow + if(isrobot(loc)) + var/mob/living/silicon/robot/R = loc //Horrifying cyborg snowflake code that allows stacks to GC and cyborgs not to horrendously break + if(locate(src) in R.module.modules) + R.module.modules -= src if(usr) - usr.unEquip(src, 1) - spawn() - qdel(src) + usr.unEquip(src, TRUE) // this has to be unEquip() over drop_item() or something similar because of cyborgs + qdel(src) update_icon() return 1 diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index cf5a44884d1..380cc55e191 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -233,7 +233,7 @@ /mob/living/silicon/robot/unEquip(obj/item/I) if(I == module_active) - deselect_module(get_selected_module()) + uneq_active(I) return ..() /mob/living/silicon/robot/proc/update_module_icon() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index a1980b72fed..ac04998430b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -54,7 +54,6 @@ var/obj/item/stack/S = O if(!S) - modules -= null S = new T(src) modules += S S.amount = 1 @@ -124,10 +123,10 @@ module_type = "Medical" subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) stacktypes = list( - /obj/item/stack/medical/bruise_pack/advanced = 5, - /obj/item/stack/medical/ointment/advanced = 5, - /obj/item/stack/medical/splint = 5, - /obj/item/stack/nanopaste = 5 + /obj/item/stack/medical/bruise_pack/advanced = 6, + /obj/item/stack/medical/ointment/advanced = 6, + /obj/item/stack/medical/splint = 6, + /obj/item/stack/nanopaste = 6 ) /obj/item/weapon/robot_module/medical/New()