diff --git a/code/game/objects/items/paintkit.dm b/code/game/objects/items/paintkit.dm index ed4c79e2ee..abf1bd2350 100644 --- a/code/game/objects/items/paintkit.dm +++ b/code/game/objects/items/paintkit.dm @@ -262,13 +262,15 @@ var/showpilot_lift = 5 /obj/item/kit/paint/ripley/customize(obj/mecha/M, mob/user) + if(!istype(M)) //Kicks it back and gives proper error text. + return ..() if(showpilot) M.show_pilot = TRUE M.pilot_lift = 5 else M.show_pilot = FALSE M.pilot_lift = 0 - . = ..() + . = ..() //Has to be done AFTER show_pilot being set in order to update the icon properly. /obj/item/kit/paint/ripley/death name = "\"Reaper\" APLU customisation kit" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3b0ab79b21..9d2d39efc9 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -171,9 +171,12 @@ var/tforce = 0 if(ismob(source)) tforce = 40 - else if(isobj(source)) + else if(isitem(source)) var/obj/item/I = source tforce = I.throwforce + else if(isobj(source)) + var/obj/hitting_object = source + tforce = hitting_object.w_class * 5 if(reinf) tforce *= 0.25 if(health - tforce <= 7 && !reinf) anchored = FALSE diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 1443af5cb5..2c2f1019f6 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -495,9 +495,12 @@ if (!suit_is_deployed()) //inbuilt systems only work on the suit they're designed to work on return + var/turf/T = get_turf(src) + if(!T) + return + var/mob/living/carbon/human/H = loc - var/turf/T = get_turf(src) var/datum/gas_mixture/environment = T.return_air() var/efficiency = 1 - H.get_pressure_weakness(environment.return_pressure()) // You need to have a good seal for effective cooling var/env_temp = get_environment_temperature() //wont save you from a fire diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2f440cac32..97a42d869f 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -734,7 +734,7 @@ to_chat(user, span_filter_notice("\The [W] is too [W.w_class < ITEMSIZE_NORMAL ? "small" : "large"] to fit here.")) else user.drop_item() - W.loc = src + W.forceMove(src) cell = W to_chat(user, span_filter_notice("You insert the power cell.")) @@ -1352,7 +1352,7 @@ return braintype != BORG_BRAINTYPE_DRONE -/mob/living/silicon/robot/drop_item() +/mob/living/silicon/robot/drop_item(var/atom/Target) if(module_active && istype(module_active,/obj/item/gripper)) var/obj/item/gripper/G = module_active G.drop_item_nm() diff --git a/code/modules/mob/living/silicon/robot/robot_simple_items.dm b/code/modules/mob/living/silicon/robot/robot_simple_items.dm index 1ab126a374..e9926456a0 100644 --- a/code/modules/mob/living/silicon/robot/robot_simple_items.dm +++ b/code/modules/mob/living/silicon/robot/robot_simple_items.dm @@ -104,6 +104,7 @@ choice = show_radial_menu(user, src, options, radius = 40, require_near = TRUE) if(!choice) return + cut_overlays() assume_selected_item(integrated_tools_by_name[choice]) ..() @@ -160,9 +161,18 @@ icon_state = "indwelder_cyborg" usesound = 'sound/items/Welder2.ogg' toolspeed = 0.5 - welding = TRUE + welding = FALSE no_passive_burn = TRUE +/obj/item/weldingtool/electric/mounted/cyborg/update_icon() + . = ..() + if(istype(loc, /obj/item/robotic_multibelt)) + var/obj/item/robotic_multibelt/our_belt = loc + if(welding) + our_belt.add_overlay("indwelder_cyborg-on") + else + our_belt.cut_overlays() + /obj/item/tool/wirecutters/cyborg name = "wirecutters" desc = "This cuts wires. With science." @@ -760,7 +770,7 @@ generate_icons() //update_icon() -//FORCES the item onto the ground and resets the +//FORCES the item onto the ground and resets. /obj/item/gripper/proc/drop_item_nm() var/obj/item/wrapped = get_current_pocket() if(!wrapped) @@ -770,8 +780,10 @@ current_pocket = pick(pockets) return - wrapped.loc = get_turf(src) + wrapped.forceMove(get_turf(src)) WR = null + //Reselect our pocket. + current_pocket = pick(pockets) /obj/item/gripper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) var/busy = is_in_use() @@ -787,6 +799,8 @@ M.attackby(wrapped, user) //attackby reportedly gets procced by being clicked on, at least according to Anewbe. if((wrapped.loc != src.loc && !istype(wrapped.loc,/obj/item/storage/internal/gripper))) //If our wrapper was deleted OR it's no longer in our internal gripper storage WR = null + wrapped = null + return 1 if(wrapped) //In the event nothing happened to wrapped, go back into the gripper. wrapped.loc = current_pocket return 1 @@ -885,11 +899,14 @@ if(A.opened) if(A.cell && is_type_in_list(A.cell, can_hold)) - wrapped = A.cell + current_pocket = A.cell A.cell.add_fingerprint(user) A.cell.update_icon() - A.cell.loc = selected_pocket + A.update_icon() + A.cell.forceMove(current_pocket) + current_pocket = A.cell + WR = WEAKREF(current_pocket) A.cell = null A.charging = 0 @@ -902,12 +919,12 @@ if(A.opened) if(A.cell && is_type_in_list(A.cell, can_hold)) - wrapped = A.cell - A.cell.add_fingerprint(user) A.cell.update_icon() A.update_icon() - A.cell.loc = current_pocket + A.cell.forceMove(current_pocket) + current_pocket = A.cell + WR = WEAKREF(current_pocket) A.cell = null user.visible_message(span_danger("[user] removes the power cell from [A]!"), "You remove the power cell.") diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 221326ebfa..c4e46c48d3 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -68,7 +68,7 @@ /mob/living/silicon/proc/show_laws() return -/mob/living/silicon/drop_item() +/mob/living/silicon/drop_item(var/atom/Target) return /mob/living/silicon/emp_act(severity) diff --git a/code/modules/vore/eating/belly_obj_liquids.dm b/code/modules/vore/eating/belly_obj_liquids.dm index 47867a8a25..3b94eda6c0 100644 --- a/code/modules/vore/eating/belly_obj_liquids.dm +++ b/code/modules/vore/eating/belly_obj_liquids.dm @@ -24,7 +24,7 @@ affecting_amt = 5 if(affecting_amt >= 1) for(var/mob/living/L in touchable_atoms) - if(!L.apply_reagents) + if(!L.apply_reagents || L.absorbed) continue if((L.digestable && digest_mode == DM_DIGEST)) if(!L.permit_healbelly && is_beneficial) // Healing reagents turned off in preferences! diff --git a/icons/obj/tools_robot.dmi b/icons/obj/tools_robot.dmi index f7a9abe091..0542d2bdc9 100644 Binary files a/icons/obj/tools_robot.dmi and b/icons/obj/tools_robot.dmi differ