diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index bf3043d4b5..a0d58709c8 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -846,10 +846,18 @@ icon = 'icons/mecha/mecha_equipment.dmi' icon_state = "mecha_clamp" tool_behaviour = TOOL_RETRACTOR + item_flags = NOBLUDGEON + flags_1 = NONE var/cargo_capacity = 8 var/cargo = list() -/obj/item/cyborg_clamp/afterattack(atom/target, mob/user, proximity) +/obj/item/cyborg_clamp/attack(mob/M, mob/user, def_zone) + return + +/obj/item/cyborg_clamp/afterattack(atom/movable/target, mob/user, proximity) + . = ..() + if(!proximity) + return FALSE if(isobj(target)) var/obj/O = target if(!O.anchored) @@ -857,15 +865,24 @@ user.visible_message("[user] lifts [target] and starts to load it into its cargo compartment.") O.anchored = TRUE if(do_mob(user, O, 20)) - for(var/mob/chump in target.contents) + for(var/mob/chump in target.GetAllContents()) to_chat(user, "Error: Living entity detected in [target]. Cannot load.") O.anchored = initial(O.anchored) return - cargo += O - O.forceMove(src) - O.anchored = FALSE - to_chat(user, "[target] successfully loaded.") - playsound(loc, 'sound/effects/bin_close.ogg', 50, 0) + for(var/obj/item/disk/nuclear/diskie in target.GetAllContents()) + to_chat(user, "Error: Nuclear class authorization device detected in [target]. Cannot load.") + O.anchored = initial(O.anchored) + return + if(contents.len < cargo_capacity) //check both before and after + cargo += O + O.forceMove(src) + O.anchored = FALSE + to_chat(user, "[target] successfully loaded.") + playsound(loc, 'sound/effects/bin_close.ogg', 50, 0) + else + to_chat(user, "Not enough room in cargo compartment! Maximum of [cargo_capacity] objects!") + O.anchored = initial(O.anchored) + return else O.anchored = initial(O.anchored) else diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 2a060f4452..73c1c465cd 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -48,6 +48,7 @@ /turf/closed/mineral/attackby(obj/item/pickaxe/I, mob/user, params) + var/stored_dir = user.dir if (!user.IsAdvancedToolUser()) to_chat(usr, "You don't have the dexterity to do this!") return @@ -67,7 +68,7 @@ if(ismineralturf(src)) if(I.digrange > 0) for(var/turf/closed/mineral/M in range(user,range)) - if(get_dir(user,M)&user.dir) + if(get_dir(user,M)&stored_dir) M.gets_drilled() to_chat(user, "You finish cutting into the rock.") gets_drilled(user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ff5ce9674f..1d8e5ed21b 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -121,6 +121,10 @@ else if(istype(S, /obj/item/stack/marker_beacon)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon) + + else if(istype(S, /obj/item/stack/packageWrap)) + S.cost = 1 + S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) if(S && S.source) S.materials = list() @@ -139,6 +143,9 @@ //Adds flavoursome dogborg items to dogborg variants without mechanical benefits /obj/item/robot_module/proc/dogborg_equip() + has_snowflake_deadsprite = TRUE + cyborg_pixel_offset = -16 + hat_offset = INFINITY var/obj/item/I = new /obj/item/analyzer/nose/flavour(src) basic_modules += I I = new /obj/item/soap/tongue/flavour(src) @@ -362,30 +369,21 @@ sleeper_overlay = "msleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY if("Medihound Dark") cyborg_base_icon = "medihounddark" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "mdsleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY if("Vale") cyborg_base_icon = "valemed" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "valemedsleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY if("Alina") cyborg_base_icon = "alina-med" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' @@ -393,10 +391,7 @@ sleeper_overlay = "alinasleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY return ..() /obj/item/robot_module/engineering @@ -477,29 +472,20 @@ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' if("Pup Dozer") cyborg_base_icon = "pupdozer" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "dozersleeper" + dogborg = TRUE if("Vale") cyborg_base_icon = "valeeng" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "valeengsleeper" + dogborg = TRUE if("Alina") cyborg_base_icon = "alina-eng" special_light_key = "alina" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "alinasleeper" + dogborg = TRUE return ..() /obj/item/robot_module/security @@ -558,36 +544,24 @@ if("K9") cyborg_base_icon = "k9" sleeper_overlay = "ksleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 if("Alina") cyborg_base_icon = "alina-sec" special_light_key = "alina" sleeper_overlay = "alinasleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 if("K9 Dark") cyborg_base_icon = "k9dark" sleeper_overlay = "k9darksleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 if("Vale") cyborg_base_icon = "valesec" sleeper_overlay = "valesecsleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 return ..() /obj/item/robot_module/security/Initialize() @@ -795,24 +769,18 @@ if("(Service) DarkK9") cyborg_base_icon = "k50" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "ksleeper" + dogborg = TRUE if("(Service) Vale") cyborg_base_icon = "valeserv" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "valeservsleeper" + dogborg = TRUE if("(Service) ValeDark") cyborg_base_icon = "valeservdark" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "valeservsleeper" + dogborg = TRUE if("(Janitor) Default") cyborg_base_icon = "janitor" if("(Janitor) Marina") @@ -830,10 +798,8 @@ if("(Janitor) Scrubpuppy") cyborg_base_icon = "scrubpup" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - cyborg_pixel_offset = -16 - dogborg = TRUE sleeper_overlay = "jsleeper" + dogborg = TRUE return ..() /obj/item/robot_module/miner @@ -855,7 +821,9 @@ /obj/item/weapon/gripper/mining, /obj/item/cyborg_clamp, /obj/item/card/id/miningborg, - /obj/item/stack/marker_beacon) + /obj/item/stack/marker_beacon, + /obj/item/destTagger, + /obj/item/stack/packageWrap) emag_modules = list(/obj/item/borg/stun) ratvar_modules = list( /obj/item/clockwork/slab/cyborg/miner, @@ -899,10 +867,7 @@ cyborg_base_icon = "blade" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "bladesleeper" - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY return ..() /obj/item/robot_module/syndicate @@ -1048,3 +1013,8 @@ max_energy = 30 recharge_rate = 1 name = "Marker Beacon Storage" + +/datum/robot_energy_storage/wrapping_paper + max_energy = 30 + recharge_rate = 1 + name = "Wrapping Paper Storage"