diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 8a2a39c09e..03d75717ab 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -30,48 +30,39 @@ show_message = FALSE break var/obj/item/weapon/storage/bag/ore/OB - if(istype(loc, /turf/open/floor/plating/asteroid)) - if(ishuman(AM)) - var/mob/living/carbon/human/H = AM - for(var/thing in H.get_storage_slots()) - if(istype(thing, /obj/item/weapon/storage/bag/ore)) - OB = thing - break - for(var/thing in H.held_items) - if(istype(thing, /obj/item/weapon/storage/bag/ore)) - OB = thing - break - else if(iscyborg(AM)) - var/mob/living/silicon/robot/R = AM - for(var/thing in R.module_active) - if(istype(thing, /obj/item/weapon/storage/bag/ore)) - OB = thing - break - if(OB) - var/obj/structure/ore_box/box - if(!OB.can_be_inserted(src, TRUE, AM)) - if(!OB.spam_protection) - to_chat(AM, "Your [OB.name] is full and can't hold any more ore!") - OB.spam_protection = TRUE - sleep(1) - OB.spam_protection = FALSE + if(ishuman(AM)) + var/mob/living/carbon/human/H = AM + OB = locate(/obj/item/weapon/storage/bag/ore) in H.get_storage_slots() + if(!OB) + OB = locate(/obj/item/weapon/storage/bag/ore) in H.held_items + else if(iscyborg(AM)) + var/mob/living/silicon/robot/R = AM + OB = locate(/obj/item/weapon/storage/bag/ore) in R.held_items + if(OB) + var/obj/structure/ore_box/box + if(!OB.can_be_inserted(src, TRUE, AM)) + if(!OB.spam_protection) + to_chat(AM, "Your [OB.name] is full and can't hold any more ore!") + OB.spam_protection = TRUE + sleep(1) + OB.spam_protection = FALSE + else + OB.handle_item_insertion(src, TRUE, AM) + // Then, if the user is dragging an ore box, empty the satchel + // into the box. + var/mob/living/L = AM + if(istype(L.pulling, /obj/structure/ore_box)) + box = L.pulling + for(var/obj/item/weapon/ore/O in OB) + OB.remove_from_storage(src, box) + if(show_message) + playsound(L, "rustle", 50, TRUE) + if(box) + L.visible_message("[L] offloads the ores into [box].", \ + "You offload the ores beneath you into your [box.name].") else - OB.handle_item_insertion(src, TRUE, AM) - // Then, if the user is dragging an ore box, empty the satchel - // into the box. - var/mob/living/L = AM - if(istype(L.pulling, /obj/structure/ore_box)) - box = L.pulling - for(var/obj/item/weapon/ore/O in OB) - OB.remove_from_storage(src, box) - if(show_message) - playsound(L, "rustle", 50, TRUE) - if(box) - L.visible_message("[L] offloads the ores into [box].", \ - "You offload the ores beneath you into your [box.name].") - else - L.visible_message("[L] scoops up the ores beneath them.", \ - "You scoop up the ores beneath you with your [OB.name].") + L.visible_message("[L] scoops up the ores beneath them.", \ + "You scoop up the ores beneath you with your [OB.name].") return ..() /obj/item/weapon/ore/uranium diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ea7504cb56..7eb7840a59 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -656,29 +656,6 @@ add_overlay(head_overlay) update_fire() -#define BORG_CAMERA_BUFFER 30 - -/mob/living/silicon/robot/proc/do_camera_update(oldLoc) - if(oldLoc != src.loc) - GLOB.cameranet.updatePortableCamera(src.camera) - updating = 0 - -/mob/living/silicon/robot/Move(a, b, flag) - var/oldLoc = src.loc - . = ..() - if(.) - if(src.camera) - if(!updating) - updating = 1 - addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), BORG_CAMERA_BUFFER) - if(module) - if(istype(module, /obj/item/weapon/robot_module/miner)) - if(istype(loc, /turf/open/floor/plating/asteroid)) - for(var/obj/item/I in held_items) - if(istype(I, /obj/item/weapon/storage/bag/ore)) - loc.attackby(I, src) -#undef BORG_CAMERA_BUFFER - /mob/living/silicon/robot/proc/self_destruct() if(emagged) if(mmi) diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 167137d9d1..a2f6bf5681 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -1,3 +1,24 @@ +/mob/living/silicon/robot/Moved(oldLoc, dir) + . = ..() + update_camera_location(oldLoc) + +/mob/living/silicon/robot/forceMove(atom/destination) + . = ..() + update_camera_location(destination) + +/mob/living/silicon/robot/proc/do_camera_update(oldLoc) + if(!QDELETED(camera) && oldLoc != get_turf(src)) + GLOB.cameranet.updatePortableCamera(camera) + updating = FALSE + +#define BORG_CAMERA_BUFFER 30 +/mob/living/silicon/robot/proc/update_camera_location(oldLoc) + oldLoc = get_turf(oldLoc) + if(!QDELETED(camera) && !updating && oldLoc != get_turf(src)) + updating = TRUE + addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), BORG_CAMERA_BUFFER) +#undef BORG_CAMERA_BUFFER + /mob/living/silicon/robot/Process_Spacemove(movement_dir = 0) if(ionpulse()) return 1