From fd26ff32e2538210893982ec2c43c6fbfb9ebe0d Mon Sep 17 00:00:00 2001 From: "Wowzewow (Wezzy)" <42310821+alsoandanswer@users.noreply.github.com> Date: Wed, 27 Sep 2023 18:22:04 +0800 Subject: [PATCH] Fixes Examine Crashes (#17430) * Fixes Examine Crashes * fukken indentations --- code/_onclick/hud/ability_screen_objects.dm | 1 + .../game/gamemodes/technomancer/spell_objs.dm | 2 +- code/game/machinery/cell_charger.dm | 2 +- code/game/machinery/cloning.dm | 1 - code/game/objects/items/holomenu.dm | 9 +-- code/game/objects/items/stacks/stack.dm | 2 +- code/game/objects/items/stacks/wrap.dm | 5 +- .../weapons/implants/implants/circuit.dm | 2 +- .../objects/items/weapons/tanks/jetpack.dm | 2 +- .../objects/items/weapons/tanks/tank_types.dm | 11 ++-- code/game/objects/structures/noticeboard.dm | 8 +-- code/modules/clothing/head/helmet.dm | 1 + code/modules/heavy_vehicle/mecha.dm | 2 +- .../core/assemblies/clothing.dm | 4 +- code/modules/mob/abstract/freelook/eye.dm | 2 +- code/modules/mob/examinations.dm | 2 +- code/modules/mob/holder.dm | 4 +- .../mob/living/carbon/brain/posibrain.dm | 2 +- .../mob/living/carbon/human/examine.dm | 10 ++- code/modules/mob/living/silicon/ai/examine.dm | 4 +- .../mob/living/simple_animal/hostile/morph.dm | 5 +- code/modules/mob/mob.dm | 64 +++++-------------- code/modules/organs/subtypes/vaurca.dm | 2 +- .../overmap/ship_weaponry/_ship_gun.dm | 20 ++++-- code/modules/paperwork/paperbin.dm | 16 ++--- code/modules/power/lights/construction.dm | 31 +++++---- code/modules/power/portgen.dm | 12 ++-- .../modules/projectiles/guns/energy/mining.dm | 2 +- .../projectiles/guns/launcher/rocket.dm | 6 +- .../reagents/reagent_containers/spray.dm | 4 +- code/modules/recycling/sortingmachinery.dm | 4 +- .../wezzy_fixes_examine_crashes.yml | 41 ++++++++++++ 32 files changed, 147 insertions(+), 136 deletions(-) create mode 100644 html/changelogs/wezzy_fixes_examine_crashes.yml diff --git a/code/_onclick/hud/ability_screen_objects.dm b/code/_onclick/hud/ability_screen_objects.dm index 0deaba35fe7..5b97cf46c0c 100644 --- a/code/_onclick/hud/ability_screen_objects.dm +++ b/code/_onclick/hud/ability_screen_objects.dm @@ -328,6 +328,7 @@ /obj/screen/ability/obj_based/psionic/examine(mob/user) to_chat(user, SPAN_NOTICE("This ability is [connected_power.name].")) to_chat(user, SPAN_NOTICE("[connected_power.desc]")) + return TRUE /// Technomancer. /obj/screen/ability/obj_based/technomancer diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index afc75728d5f..3d61420f082 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -44,7 +44,7 @@ var/psi_cost = 0 // Psi complexus cost to use this spell. /obj/item/spell/examine(mob/user, distance) // Nothing on examine. - return + return TRUE // Proc: on_use_cast() // Parameters: 1 (user - the technomancer casting the spell) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index cb248ed35d8..d189e9da19d 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -42,7 +42,7 @@ /obj/machinery/cell_charger/examine(mob/user, distance, is_adjacent) . = ..() if(distance > 5) - return + return TRUE if(charging) to_chat(user, "There's \a [charging.name] in the charger. Current charge: [charging.percent()]%.") diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 2ca6594e149..511324e3c82 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -434,7 +434,6 @@ /obj/item/disk/data/examine(mob/user) . = ..() to_chat(user, text("The write-protect tab is set to [read_only ? "protected" : "unprotected"].")) - return /* * Diskette Box diff --git a/code/game/objects/items/holomenu.dm b/code/game/objects/items/holomenu.dm index eb91198ca36..05a55443f53 100644 --- a/code/game/objects/items/holomenu.dm +++ b/code/game/objects/items/holomenu.dm @@ -73,11 +73,12 @@ return TRUE return ..() -/obj/item/holomenu/examine(mob/user, distance) - if(anchored && length(menu_text)) +/obj/item/holomenu/examine(mob/user, distance, is_adjacent) + if(anchored && length(menu_text) && is_adjacent) interact(user) - return - return ..() + return TRUE + else + . = ..() /obj/item/holomenu/attack_hand(mob/user) if(anchored) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 777d2e69d16..c46c080d864 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -69,7 +69,7 @@ /obj/item/stack/examine(mob/user, distance, is_adjacent) . = ..() - if(distance <= 1) + if(is_adjacent) if(!iscoil()) if(!uses_charge) to_chat(user, "There [src.amount == 1 ? "is" : "are"] [src.amount] [src.singular_name]\s in the stack.") diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index 1b6a0400e26..df7f5f46575 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -101,6 +101,7 @@ icon_state = "deliveryPaper" desc = "A roll of paper used to enclose an object for delivery." desc_info = "To package wrap the object for delivery, use the package wrapper on the object." + singular_name = "length" w_class = ITEMSIZE_NORMAL amount = 30 var/wrapping_tag = "Sorting Office" @@ -199,10 +200,6 @@ return return -/obj/item/stack/packageWrap/examine(mob/user, distance, is_adjacent) - if(distance <= 1) - to_chat(user, "There [amount == 1 ? "is" : "are"] about [amount] units of package wrap left!") - /obj/item/c_tube name = "cardboard tube" desc = "A tube of cardboard." diff --git a/code/game/objects/items/weapons/implants/implants/circuit.dm b/code/game/objects/items/weapons/implants/implants/circuit.dm index 09c2a77c20b..0f33e7eec09 100644 --- a/code/game/objects/items/weapons/implants/implants/circuit.dm +++ b/code/game/objects/items/weapons/implants/implants/circuit.dm @@ -37,7 +37,7 @@ IC.emp_act(severity) /obj/item/implant/integrated_circuit/examine(mob/user, distance, is_adjacent) - IC.examine(user, distance, is_adjacent) + return IC.examine(user, distance, is_adjacent) /obj/item/implant/integrated_circuit/attackby(var/obj/item/O, var/mob/user) if(O.iscrowbar() || istype(O, /obj/item/device/integrated_electronics) || istype(O, /obj/item/integrated_circuit) || O.isscrewdriver() || istype(O, /obj/item/cell/device) ) diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 6fa774c1c0e..4ed94a43876 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -189,7 +189,7 @@ /obj/item/tank/jetpack/rig/examine() to_chat(usr, "It's a jetpack. If you can see this, report it on the bug tracker.") - return 0 + return TRUE /obj/item/tank/jetpack/rig/allow_thrust(num, mob/living/user as mob) diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 7ebae64ac3c..0b2f552ca14 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -21,8 +21,9 @@ /obj/item/tank/oxygen/adjust_initial_gas() air_contents.adjust_gas(GAS_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) -/obj/item/tank/oxygen/examine(mob/user) - if(..(user, 0) && air_contents.gas[GAS_OXYGEN] < 10) +/obj/item/tank/oxygen/examine(mob/user, distance, is_adjacent) + . = ..() + if((is_adjacent) && air_contents.gas[GAS_OXYGEN] < 10) to_chat(user, text("The meter on \the [src] indicates you are almost out of oxygen!")) /obj/item/tank/oxygen/yellow @@ -76,7 +77,8 @@ air_contents.adjust_multi(GAS_OXYGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD, GAS_NITROGEN, (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD) /obj/item/tank/air/examine(mob/user, distance, is_adjacent) - if((distance <= 0) && air_contents.gas[GAS_OXYGEN] < 1 && loc==user) + . = ..() + if((is_adjacent) && air_contents.gas[GAS_OXYGEN] < 1 && loc==user) to_chat(user, "The meter on the [src.name] indicates you are almost out of air!") /* @@ -147,7 +149,8 @@ air_contents.adjust_gas(GAS_OXYGEN, (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) /obj/item/tank/emergency_oxygen/examine(mob/user, distance, is_adjacent) - if((distance <= 0) && air_contents.gas[GAS_OXYGEN] < 0.2 && loc==user) + . = ..() + if((is_adjacent) && air_contents.gas[GAS_OXYGEN] < 0.2 && loc==user) to_chat(user, text("The meter on the [src.name] indicates you are almost out of air!")) /obj/item/tank/emergency_oxygen/engi diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm index 771d12ad210..44ea88f3efc 100644 --- a/code/game/objects/structures/noticeboard.dm +++ b/code/game/objects/structures/noticeboard.dm @@ -34,16 +34,16 @@ // Since Topic() never seems to interact with usr on more than a superficial // level, it should be fine to let anyone mess with the board other than ghosts. -/obj/structure/noticeboard/examine(var/mob/user) - . = ..() - if(user.Adjacent(src)) +/obj/structure/noticeboard/examine(mob/user, distance, is_adjacent) + if(is_adjacent) var/dat = "Noticeboard
" for(var/obj/item/paper/P in src) dat += "[P.name] Write Remove
" user << browse("Notices[dat]","window=noticeboard") onclose(user, "noticeboard") + return TRUE else - ..() + . = ..() /obj/structure/noticeboard/Topic(href, href_list) ..() diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 2993e93ee6f..ad2c8b20d0a 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -97,6 +97,7 @@ to_chat(usr, SPAN_NOTICE("Camera deactivated.")) /obj/item/clothing/head/helmet/space/examine(mob/user, distance, is_adjacent) + . = ..() if((distance <= 1) && camera) to_chat(user, FONT_SMALL(SPAN_NOTICE("To toggle the helmet camera, right click the helmet and press Toggle Helmet Camera."))) to_chat(user, "This helmet has a built-in camera. It's [!ispath(camera) && camera.status ? "" : "in"]active.") diff --git a/code/modules/heavy_vehicle/mecha.dm b/code/modules/heavy_vehicle/mecha.dm index e208854030b..1cc56b8c740 100644 --- a/code/modules/heavy_vehicle/mecha.dm +++ b/code/modules/heavy_vehicle/mecha.dm @@ -136,7 +136,7 @@ /mob/living/heavy_vehicle/examine(var/mob/user) if(!user || !user.client) - return + return TRUE to_chat(user, "That's \a [src].") to_chat(user, desc) if(LAZYLEN(pilots) && (!hatch_closed || body.pilot_coverage < 100 || body.transparent_cabin)) diff --git a/code/modules/integrated_electronics/core/assemblies/clothing.dm b/code/modules/integrated_electronics/core/assemblies/clothing.dm index 567d8edf4ff..780ebccffaa 100644 --- a/code/modules/integrated_electronics/core/assemblies/clothing.dm +++ b/code/modules/integrated_electronics/core/assemblies/clothing.dm @@ -58,8 +58,8 @@ /obj/item/clothing/examine(mob/user) if(IC) - IC.examine(user) - ..() + examinate(user, IC) + . = ..() /obj/item/clothing/attackby(obj/item/I, mob/user) if(IC) diff --git a/code/modules/mob/abstract/freelook/eye.dm b/code/modules/mob/abstract/freelook/eye.dm index 11fde71de57..5b4c9c7b2e9 100644 --- a/code/modules/mob/abstract/freelook/eye.dm +++ b/code/modules/mob/abstract/freelook/eye.dm @@ -66,7 +66,7 @@ return 0 /mob/abstract/eye/examine(mob/user) - return + return TRUE /mob/abstract/eye/proc/possess(var/mob/user) if(owner && owner != user) diff --git a/code/modules/mob/examinations.dm b/code/modules/mob/examinations.dm index b8ed50555a4..0663b6ddc17 100644 --- a/code/modules/mob/examinations.dm +++ b/code/modules/mob/examinations.dm @@ -1,5 +1,5 @@ /proc/examinate(mob/user, atom/target, show_extended = FALSE) - if((user.is_blind() || user.stat) && isobserver(user)) + if(user.is_blind() || user.stat) to_chat(user, SPAN_NOTICE("Something is there, but you cannot see it.")) user.face_atom(target) diff --git a/code/modules/mob/holder.dm b/code/modules/mob/holder.dm index 68440d96748..2eedee78f24 100644 --- a/code/modules/mob/holder.dm +++ b/code/modules/mob/holder.dm @@ -53,8 +53,8 @@ var/list/holder_mob_icon_cache = list() return ..() /obj/item/holder/examine(mob/user) - if (contained) - contained.examine(user) + if(contained) + return contained.examine(user) /obj/item/holder/attack_self() for(var/mob/M in contents) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 47f9f8b124c..074b08f055e 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -92,7 +92,7 @@ msg += "It appears to be completely inactive.\n" msg += "*---------*" to_chat(user, msg) - return + return TRUE /obj/item/device/mmi/digital/posibrain/ready_for_use(var/mob/user) if(!brainmob) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 0978cd76c41..354c4794aa8 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -32,7 +32,7 @@ else to_chat(user, "[get_pronoun("He")] [get_pronoun("has")] a pulse!") -/mob/living/carbon/human/examine(mob/user) +/mob/living/carbon/human/examine(mob/user, distance, is_adjacent) var/skipbody = get_covered_body_parts() var/skipbody_thick = get_covered_body_parts(TRUE) var/skipitems = get_covered_clothes() @@ -241,10 +241,6 @@ if(is_berserk()) msg += "[get_pronoun("He")] [get_pronoun("has")] engorged veins, which appear a vibrant red!\n" - var/distance = get_dist(user,src) - if(istype(user, /mob/abstract/observer) || user.stat == DEAD) // ghosts can see anything - distance = 1 - if((src.stat || (status_flags & FAKEDEATH)) && !(src.species.flags & NO_BLOOD)) // No point checking pulse of a species that doesn't have one. msg += "[get_pronoun("He")] [get_pronoun("is")]n't responding to anything around [get_pronoun("him")] and seems to be unconscious.\n" if(distance <= 3 && ((stat == DEAD || is_asystole() || src.losebreath) || (status_flags & FAKEDEATH))) @@ -412,6 +408,8 @@ if(Adjacent(user)) INVOKE_ASYNC(src, PROC_REF(examine_pulse), user) + return TRUE + //Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records. /proc/hasHUD(mob/M, hudtype) if(ishuman(M)) @@ -457,7 +455,7 @@ var/output_text = color_map[supplied_color] || "fluid" return output_text -/mob/living/carbon/human/assemble_height_string(mob/examiner) +/mob/living/carbon/human/proc/assemble_height_string(mob/examiner) var/height_string = "" var/height_descriptor if(height == HEIGHT_NOT_USED) diff --git a/code/modules/mob/living/silicon/ai/examine.dm b/code/modules/mob/living/silicon/ai/examine.dm index 89fe2f2dd1e..2a13f2428bd 100644 --- a/code/modules/mob/living/silicon/ai/examine.dm +++ b/code/modules/mob/living/silicon/ai/examine.dm @@ -1,6 +1,6 @@ /mob/living/silicon/ai/examine(mob/user) if(!..(user)) - return + return TRUE var/msg = "" if (src.stat == DEAD) @@ -34,7 +34,7 @@ msg += hardware.get_examine_desc() to_chat(user, msg) user.showLaws(src) - return + return TRUE /mob/proc/showLaws(var/mob/living/silicon/S) return diff --git a/code/modules/mob/living/simple_animal/hostile/morph.dm b/code/modules/mob/living/simple_animal/hostile/morph.dm index deff382f10a..0ff7b8ea8fe 100644 --- a/code/modules/mob/living/simple_animal/hostile/morph.dm +++ b/code/modules/mob/living/simple_animal/hostile/morph.dm @@ -102,9 +102,8 @@ /mob/living/simple_animal/hostile/morph/examine(mob/user, distance, is_adjacent) if(morphed) . = form.examine(user) - if(distance > 2) - return - to_chat(user, SPAN_WARNING("It doesn't look quite right...")) + if(distance <= 2) + to_chat(user, SPAN_WARNING("It doesn't look quite right...")) else return ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 15d0625acbd..999f4db0b1b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1363,29 +1363,29 @@ toggle_zone_sel(list(BP_R_ARM,BP_R_HAND)) /client/verb/body_l_arm() - set name = "body-l-arm" - set hidden = 1 - toggle_zone_sel(list(BP_L_ARM,BP_L_HAND)) + set name = "body-l-arm" + set hidden = 1 + toggle_zone_sel(list(BP_L_ARM,BP_L_HAND)) /client/verb/body_chest() - set name = "body-chest" - set hidden = 1 - toggle_zone_sel(list(BP_CHEST)) + set name = "body-chest" + set hidden = 1 + toggle_zone_sel(list(BP_CHEST)) /client/verb/body_groin() - set name = "body-groin" - set hidden = 1 - toggle_zone_sel(list(BP_GROIN)) + set name = "body-groin" + set hidden = 1 + toggle_zone_sel(list(BP_GROIN)) /client/verb/body_r_leg() - set name = "body-r-leg" - set hidden = 1 - toggle_zone_sel(list(BP_R_LEG,BP_R_FOOT)) + set name = "body-r-leg" + set hidden = 1 + toggle_zone_sel(list(BP_R_LEG,BP_R_FOOT)) /client/verb/body_l_leg() - set name = "body-l-leg" - set hidden = 1 - toggle_zone_sel(list(BP_L_LEG,BP_L_FOOT)) + set name = "body-l-leg" + set hidden = 1 + toggle_zone_sel(list(BP_L_LEG,BP_L_FOOT)) /client/verb/cycle_target_zone() set name = "cycle-zone" @@ -1398,40 +1398,6 @@ var/obj/screen/zone_sel/selector = mob.zone_sel selector.set_selected_zone(next_in_list(mob.zone_sel.selecting,zones)) -/mob/examine(mob/user, var/distance = -1, var/infix = "", var/suffix = "") - ..() - if(assemble_height_string(user)) - to_chat(user, SPAN_NOTICE(assemble_height_string(user))) - -//Height String for examine - Runs on the mob being examined. -/mob/proc/assemble_height_string(mob/examiner) - var/height_string = null - var/height_descriptor - if(height == HEIGHT_NOT_USED) - return height_string - - if(examiner.height == HEIGHT_NOT_USED) - return height_string - - switch(height - examiner.height) - if(-999 to -100) - height_descriptor = "absolutely tiny compared to" - if(-99 to -50) - height_descriptor = "much smaller than" - if(-49 to -11) - height_descriptor = "shorter than" - if(-10 to 10) - height_descriptor = "about the same height as" - if(11 to 50) - height_descriptor = "taller than" - if(51 to 100) - height_descriptor = "much larger than" - else - height_descriptor = "to tower over" - if(height_string) - return height_string + " [get_pronoun("He")] seem[get_pronoun("end")] [height_descriptor] you." - return "[get_pronoun("He")] seem[get_pronoun("end")] [height_descriptor] you." - /mob/proc/get_speech_bubble_state_modifier() return "normal" diff --git a/code/modules/organs/subtypes/vaurca.dm b/code/modules/organs/subtypes/vaurca.dm index 005ca680ec4..fcf4f32a034 100644 --- a/code/modules/organs/subtypes/vaurca.dm +++ b/code/modules/organs/subtypes/vaurca.dm @@ -327,7 +327,7 @@ /obj/item/organ/internal/vaurca/preserve/examine(mob/user, distance, is_adjacent) . = ..() - if(distance <= 0) + if(is_adjacent) var/celsius_temperature = air_contents.temperature - T0C var/descriptive switch(celsius_temperature) diff --git a/code/modules/overmap/ship_weaponry/_ship_gun.dm b/code/modules/overmap/ship_weaponry/_ship_gun.dm index 000d35a09d8..3745fa348e6 100644 --- a/code/modules/overmap/ship_weaponry/_ship_gun.dm +++ b/code/modules/overmap/ship_weaponry/_ship_gun.dm @@ -12,10 +12,10 @@ var/light_firing_sound = 'sound/effects/explosionfar.ogg' //The sound played when you're a few walls away. Kind of loud. var/projectile_type = /obj/item/projectile/ship_ammo var/special_firing_mechanism = FALSE //If set to TRUE, the gun won't show up on normal controls. - var/charging_sound //The sound played when the gun is charging up. + var/charging_sound //The sound played when the gun is charging up. var/caliber = SHIP_CALIBER_NONE - var/use_ammunition = TRUE //If we use physical ammo or not. Note that the creation of ammunition in pre_fire() is still REQUIRED! - //This just skips the initial check for ammunition. + var/use_ammunition = TRUE //If we use physical ammo or not. Note that the creation of ammunition in pre_fire() is still REQUIRED! + //This just skips the initial check for ammunition. var/list/obj/item/ship_ammunition/ammunition = list() var/ammo_per_shot = 1 var/max_ammo = 1 @@ -274,16 +274,22 @@ . = ..() /obj/structure/ship_weapon_dummy/examine(mob/user) - connected.examine(user) + if(connected) + return connected.examine(user) + else + return TRUE /obj/structure/ship_weapon_dummy/attack_hand(mob/user) - connected.attack_hand(user) + if(connected) + connected.attack_hand(user) /obj/structure/ship_weapon_dummy/attackby(obj/item/W, mob/user) - connected.attackby(W, user) + if(connected) + connected.attackby(W, user) /obj/structure/ship_weapon_dummy/hitby(atom/movable/AM, var/speed = THROWFORCE_SPEED_DIVISOR) - connected.hitby(AM) + if(connected) + connected.hitby(AM) if(ismob(AM)) if(isliving(AM)) var/mob/living/M = AM diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index b16f0432c5c..51ff8daffaf 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -84,22 +84,22 @@ to_chat(user, "You put [i] in [src].") papers.Add(i) amount++ - /* if(istype(O, /obj/item/paper_pack)) WIP written in. - var/obj/item/paper_bundle/j = O - amount += j.amount - to_chat(user, "You add paper from [j] into [src].") - user.drop_from_inventory(j,get_turf(src)) + /* if(istype(O, /obj/item/paper_pack)) WIP written in. + var/obj/item/paper_bundle/j = O + amount += j.amount + to_chat(user, "You add paper from [j] into [src].") + user.drop_from_inventory(j,get_turf(src)) qdel(j) - */ + */ /obj/item/paper_bin/examine(mob/user, distance, is_adjacent) - if(distance <= 1) + . = ..() + if(is_adjacent) if(amount) to_chat(user, "There " + (amount > 1 ? "are [amount] papers" : "is one paper") + " in the bin.") else to_chat(user, "There are no papers in the bin.") - return /obj/item/paper_bin/update_icon() diff --git a/code/modules/power/lights/construction.dm b/code/modules/power/lights/construction.dm index 696e3d07d24..6ff19a67afa 100644 --- a/code/modules/power/lights/construction.dm +++ b/code/modules/power/lights/construction.dm @@ -29,24 +29,23 @@ return ..() /obj/machinery/light_construct/examine(mob/user, distance, is_adjacent) - if(distance > 2) - return + . = ..() + if(is_adjacent) + switch(stage) + if(1) + to_chat(user, SPAN_NOTICE("It's an empty frame.")) + if(2) + to_chat(user, SPAN_NOTICE("It's wired.")) + if(3) + to_chat(user, SPAN_NOTICE("The casing is closed.")) - switch(stage) - if(1) - to_chat(user, SPAN_NOTICE("It's an empty frame.")) - if(2) - to_chat(user, SPAN_NOTICE("It's wired.")) - if(3) - to_chat(user, SPAN_NOTICE("The casing is closed.")) - - if (cell_connectors) - if (cell) - to_chat(user, SPAN_NOTICE("You see [cell] inside the casing.")) + if (cell_connectors) + if (cell) + to_chat(user, SPAN_NOTICE("You see [cell] inside the casing.")) + else + to_chat(user, SPAN_NOTICE("The casing has no power cell installed.")) else - to_chat(user, SPAN_NOTICE("The casing has no power cell installed.")) - else - to_chat(user, SPAN_WARNING("This casing doesn't support a backup power cell.")) + to_chat(user, SPAN_WARNING("This casing doesn't support a backup power cell.")) /obj/machinery/light_construct/attackby(obj/item/W, mob/living/user) add_fingerprint(user) diff --git a/code/modules/power/portgen.dm b/code/modules/power/portgen.dm index e2f086e5f88..70b5d597f81 100644 --- a/code/modules/power/portgen.dm +++ b/code/modules/power/portgen.dm @@ -67,12 +67,12 @@ return ..() /obj/machinery/power/portgen/examine(mob/user, distance, is_adjacent) - if(distance > 1) - return - if(active) - to_chat(user, SPAN_NOTICE("The generator is on.")) - else - to_chat(user, SPAN_NOTICE("The generator is off.")) + . = ..() + if(is_adjacent) + if(active) + to_chat(user, SPAN_NOTICE("The generator is on.")) + else + to_chat(user, SPAN_NOTICE("The generator is off.")) /obj/machinery/power/portgen/emp_act(severity) var/duration = 6000 //ten minutes diff --git a/code/modules/projectiles/guns/energy/mining.dm b/code/modules/projectiles/guns/energy/mining.dm index d0c48af2562..a9181445189 100644 --- a/code/modules/projectiles/guns/energy/mining.dm +++ b/code/modules/projectiles/guns/energy/mining.dm @@ -22,7 +22,7 @@ needspin = FALSE /obj/item/gun/energy/plasmacutter/examine(mob/user, distance, is_adjacent) - ..() + . = ..() if(is_adjacent) if(power_supply) to_chat(user, FONT_SMALL(SPAN_NOTICE("It has a [capitalize_first_letters(power_supply.name)] installed as its power supply."))) diff --git a/code/modules/projectiles/guns/launcher/rocket.dm b/code/modules/projectiles/guns/launcher/rocket.dm index bd98357e65e..fd87659631c 100644 --- a/code/modules/projectiles/guns/launcher/rocket.dm +++ b/code/modules/projectiles/guns/launcher/rocket.dm @@ -20,9 +20,9 @@ var/list/rockets = new/list() /obj/item/gun/launcher/rocket/examine(mob/user, distance, is_adjacent) - if(distance > 2) - return - to_chat(user, "[rockets.len] / [max_rockets] rockets.") + . = ..() + if(is_adjacent) + to_chat(user, "[rockets.len] / [max_rockets] rockets.") /obj/item/gun/launcher/rocket/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/ammo_casing/rocket)) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 0e6989dd421..65078ec6921 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -111,9 +111,9 @@ to_chat(user, SPAN_NOTICE("You adjusted the pressure nozzle. You'll now use [amount_per_transfer_from_this] units per spray, with a [spray_size] lane spray.")) /obj/item/reagent_containers/spray/examine(mob/user, distance, is_adjacent) + . = ..() if(is_adjacent) to_chat(user, "[round(reagents.total_volume)] units left.") - return /obj/item/reagent_containers/spray/verb/empty() @@ -170,7 +170,7 @@ /obj/item/reagent_containers/spray/pepper/examine(mob/user, distance, is_adjacent) . = ..() - if(distance <= 1) + if(is_adjacent) to_chat(user, "The safety is [safety ? "on" : "off"].") /obj/item/reagent_containers/spray/pepper/AltClick() diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index fa030072674..97cd3418689 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -110,12 +110,12 @@ add_overlay(I) /obj/structure/bigDelivery/examine(mob/user, distance, is_adjacent) + . = ..() if(distance <= 4) if(sortTag) to_chat(user, "It is labeled \"[sortTag]\"") if(examtext) to_chat(user, "It has a note attached which reads, \"[examtext]\"") - return /obj/item/smallDelivery desc = "A small wrapped package." @@ -230,12 +230,12 @@ add_overlay(I) /obj/item/smallDelivery/examine(mob/user, distance, is_adjacent) + . = ..() if(distance <= 4) if(sortTag) to_chat(user, "It is labeled \"[sortTag]\"") if(examtext) to_chat(user, "It has a note attached which reads, \"[examtext]\"") - return /obj/structure/bigDelivery/Destroy() if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 diff --git a/html/changelogs/wezzy_fixes_examine_crashes.yml b/html/changelogs/wezzy_fixes_examine_crashes.yml new file mode 100644 index 00000000000..c20eb0cdacb --- /dev/null +++ b/html/changelogs/wezzy_fixes_examine_crashes.yml @@ -0,0 +1,41 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: Wowzewow (Wezzy) + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - bugfix: "Fixes crashes relating to examining things."