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"