diff --git a/code/WorkInProgress/Ported/policetape.dm b/code/WorkInProgress/Ported/policetape.dm index 960e140078f..c9427185173 100644 --- a/code/WorkInProgress/Ported/policetape.dm +++ b/code/WorkInProgress/Ported/policetape.dm @@ -173,8 +173,8 @@ breaktape(/obj/item/weapon/wirecutters,user) /obj/item/tape/proc/breaktape(obj/item/weapon/W as obj, mob/user as mob) - if(user.a_intent == I_HELP && ((!is_sharp(W) && src.allowed(user)))) - user << "You can't break [src] with that!" + if(user.a_intent == I_HELP && (!W || !W.is_sharp()) && !src.allowed(user)) + user << "You can't break [src] [W ? "with \the [W] " : ""]unless you use force." return user.visible_message("[user] breaks [src]!") diff --git a/code/game/objects/items/stacks/cable.dm b/code/game/objects/items/stacks/cable.dm index 85b20e5314b..0e4a4bfb32c 100644 --- a/code/game/objects/items/stacks/cable.dm +++ b/code/game/objects/items/stacks/cable.dm @@ -81,6 +81,9 @@ var/global/list/datum/stack_recipe/cable_recipes = list ( \ . = ..() update_icon() +/obj/item/stack/cable_coil/can_stack_with(obj/item/other_stack) + return istype(other_stack, /obj/item/stack/cable_coil) && !istype(other_stack, /obj/item/stack/cable_coil/heavyduty) //it can be any cable, except the fat stuff + /obj/item/stack/cable_coil/update_icon() if(!_color) _color = pick("red", "yellow", "blue", "green") diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 0aa5b1cee55..fae2188abf6 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -186,13 +186,16 @@ for (var/obj/item/stack/item in usr.loc) if (src == item) continue - if(src.type != item.type) + if(!can_stack_with(item)) continue if (item.amount>=item.max_amount) continue src.preattack(item, usr,1) break +/obj/item/stack/proc/can_stack_with(obj/item/other_stack) + return src.type == other_stack.type + /obj/item/stack/attack_hand(mob/user as mob) if (user.get_inactive_hand() == src) var/obj/item/stack/F = new src.type( user, amount=1) @@ -211,7 +214,7 @@ if (!proximity_flag) return 0 - if (istype(target, src.type) && src.type==target.type) + if (can_stack_with(target)) var/obj/item/stack/S = target if (amount >= max_amount) user << "\The [src] cannot hold anymore [singular_name]." @@ -276,7 +279,7 @@ /obj/item/stack/verb_pickup(mob/living/user) var/obj/item/I = user.get_active_hand() - if(I && I.type == src.type) - src.attackby(I, user) + if(I && can_stack_with(I)) + I.preattack(src, user, 1) return return ..() diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 4dd59e20e07..a048662d449 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -454,7 +454,10 @@ if(E.damage > 10) E.damage += rand(4,10) if(-1) - usr << "Your thermals intensify the welder's glow. Your eyes itch and burn severely." + var/obj/item/clothing/to_blame = H.head //blame the hat + if(!to_blame || (istype(to_blame) && H.glasses && H.glasses.eyeprot < to_blame.eyeprot)) //if we don't have a hat, the issue is the glasses. Otherwise, if the glasses are worse, blame the glasses + to_blame = H.glasses + usr << "Your [to_blame] intensifies the welder's glow. Your eyes itch and burn severely." user.eye_blurry += rand(12,20) E.damage += rand(12, 16) if(E.damage > 10 && safety < 2) diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 65a91b5cd7b..ecb5d793c28 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -15,6 +15,7 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE pressure_resistance = 200 * ONE_ATMOSPHERE eyeprot = 3 + species_restricted = list("exclude","Vox") /obj/item/clothing/head/helmet/space/rig/New() ..() @@ -156,6 +157,8 @@ var/obj/machinery/camera/camera pressure_resistance = 40 * ONE_ATMOSPHERE + species_restricted = null + /obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user) if(camera) ..(user) @@ -184,6 +187,7 @@ siemens_coefficient = 0.6 pressure_resistance = 40 * ONE_ATMOSPHERE + species_restricted = null //Wizard Rig /obj/item/clothing/head/helmet/space/rig/wizard @@ -199,6 +203,8 @@ wizard_garb = 1 + species_restricted = null + /obj/item/clothing/suit/space/rig/wizard icon_state = "rig-wiz" name = "gem-encrusted hardsuit" @@ -213,6 +219,8 @@ wizard_garb = 1 + species_restricted = null + //Medical Rig /obj/item/clothing/head/helmet/space/rig/medical name = "medical hardsuit helmet" diff --git a/code/modules/mob/living/carbon/give.dm b/code/modules/mob/living/carbon/give.dm index f432a0a33d4..4cb63fe69fe 100644 --- a/code/modules/mob/living/carbon/give.dm +++ b/code/modules/mob/living/carbon/give.dm @@ -39,16 +39,8 @@ src << "Your hands are full." user << "Their hands are full." return - else - user.drop_item(I) - src.put_in_hands(I) - I.loc = src - I.layer = 20 - I.add_fingerprint(src) - src.update_inv_l_hand() - src.update_inv_r_hand() - user.update_inv_l_hand() - user.update_inv_r_hand() + user.drop_item(I) + src.put_in_hands(I) src.visible_message("[user] handed \the [I] to [src].") if("No") src.visible_message("[user] tried to hand \the [I] to [src] but \he didn't want it.") diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 50e3e33a5a2..d2ef4720745 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -21,6 +21,7 @@ if(..()) if(istype(newloc, /turf/unsimulated/floor/asteroid) && istype(module, /obj/item/weapon/robot_module/miner)) var/obj/item/weapon/storage/bag/ore/ore_bag = locate(/obj/item/weapon/storage/bag/ore) in get_all_slots() //find it in our modules - var/list/to_collect = newloc.contents - src - if(ore_bag && to_collect.len) - ore_bag.preattack(newloc, src, 1) //collects everything + if(ore_bag) + for(var/obj/item/weapon/ore/ore in newloc.contents) + ore_bag.preattack(newloc, src, 1) //collects everything + break