Paradise icon indicating copy to clipboard operation
Paradise copied to clipboard

Surgery runtimes

Open SteelSlayer opened this issue 2 years ago • 1 comments

Issue Description: I pulled this off of Kibana (tracks server runtimes and qdel logs) so I don't know exactly what is causing this but judging from the runtimes, a human was able perform the Alien Organ Manipulation surgery on another human somehow? And it seems the surgery started on a missing limb.

Runtime in organs_internal.dm,74: Cannot read null.encased
[2022-10-13T03:51:45]   proc name: can start (/datum/surgery/organ_manipulation/can_start)
[2022-10-13T03:51:45]   usr: Eyes-Of-Devil (CKEY) (/mob/living/carbon/human)
[2022-10-13T03:51:45]   usr.loc: The floor (178,123,2) (/turf/simulated/floor/plasteel)
[2022-10-13T03:51:45]   src: Alien Organ Manipulation (/datum/surgery/organ_manipulation/alien)
[2022-10-13T03:51:45]   call stack:
[2022-10-13T03:51:45]   Alien Organ Manipulation (/datum/surgery/organ_manipulation/alien): can start(Eyes-Of-Devil (/mob/living/carbon/human), Three Pointed Star (/mob/living/carbon/human))
[2022-10-13T03:51:45]   Three Pointed Star (/mob/living/carbon/human): can run surgery(Alien Organ Manipulation (/datum/surgery/organ_manipulation/alien), Eyes-Of-Devil (/mob/living/carbon/human), null)
[2022-10-13T03:51:45]   /datum/component/surgery_initi... (/datum/component/surgery_initiator/limb): get available surgeries(Eyes-Of-Devil (/mob/living/carbon/human), Three Pointed Star (/mob/living/carbon/human))
[2022-10-13T03:51:45]   /datum/component/surgery_initi... (/datum/component/surgery_initiator/limb): do initiate surgery moment(Three Pointed Star (/mob/living/carbon/human), Eyes-Of-Devil (/mob/living/carbon/human))
[2022-10-13T03:51:45]   ImmediateInvokeAsync(/datum/component/surgery_initi... (/datum/component/surgery_initiator/limb), /datum/component/surgery_initi... (/datum/component/surgery_initiator/proc/do_initiate_surgery_moment), Three Pointed Star (/mob/living/carbon/human), Eyes-Of-Devil (/mob/living/carbon/human))
[2022-10-13T03:51:45]   /datum/component/surgery_initi... (/datum/component/surgery_initiator/limb): initiate surgery moment(Morpheus Cyberkinetics left ar... (/obj/item/organ/external/arm/ipc), Three Pointed Star (/mob/living/carbon/human), Eyes-Of-Devil (/mob/living/carbon/human))
[2022-10-13T03:51:45]   CallAsync(/datum/component/surgery_initi... (/datum/component/surgery_initiator/limb), /datum/component/surgery_initi... (/datum/component/surgery_initiator/proc/initiate_surgery_moment), /list (/list))
[2022-10-13T03:51:45]   Morpheus Cyberkinetics left ar... (/obj/item/organ/external/arm/ipc):  SendSignal("item_attack", /list (/list))
[2022-10-13T03:51:45]   Morpheus Cyberkinetics left ar... (/obj/item/organ/external/arm/ipc): attack(Three Pointed Star (/mob/living/carbon/human), Eyes-Of-Devil (/mob/living/carbon/human), null)
[2022-10-13T03:51:45]   Three Pointed Star (/mob/living/carbon/human): attackby(Morpheus Cyberkinetics left ar... (/obj/item/organ/external/arm/ipc), Eyes-Of-Devil (/mob/living/carbon/human), "icon-x=15;icon-y=18;vis-x=15;v...")
[2022-10-13T03:51:45]   Three Pointed Star (/mob/living/carbon/human): attackby(Morpheus Cyberkinetics left ar... (/obj/item/organ/external/arm/ipc), Eyes-Of-Devil (/mob/living/carbon/human), "icon-x=15;icon-y=18;vis-x=15;v...")
[2022-10-13T03:51:45]   Morpheus Cyberkinetics left ar... (/obj/item/organ/external/arm/ipc): melee attack chain(Eyes-Of-Devil (/mob/living/carbon/human), Three Pointed Star (/mob/living/carbon/human), "icon-x=15;icon-y=18;vis-x=15;v...")
[2022-10-13T03:51:45]   Eyes-Of-Devil (/mob/living/carbon/human): ClickOn(Three Pointed Star (/mob/living/carbon/human), "icon-x=15;icon-y=18;vis-x=15;v...")
[2022-10-13T03:51:45]   Three Pointed Star (/mob/living/carbon/human): Click(the floor (178,124,2) (/turf/simulated/floor/plasteel), "mapwindow.map", "icon-x=15;icon-y=18;vis-x=15;v...")

A quick fix would be to add a null check to affected but I'm still curious as to how the alien surgery is being started on a human.

When did the problem start happening: Seems to be after the Surgery refactor was merged. Kibana graph:

image

Extra information:

SteelSlayer avatar Oct 15 '22 02:10 SteelSlayer

HOW TO REPRODUCE

  1. Get an IPC who requires a new limb
  2. Apply limb to area, do not prepare for the surgery step, just apply the item
  3. fully attach the item to the IPC
  4. Runtime due to no menu popup

[2022-10-14T22:30:21] Runtime in organs_internal.dm,74: Cannot read null.encased proc name: can start (/datum/surgery/organ_manipulation/can_start) usr: Tony Stroble (generaldonothing) (/mob/living/carbon/human) usr.loc: The floor (226,144,1) (/turf/simulated/floor/plasteel/freezer) src: Alien Organ Manipulation (/datum/surgery/organ_manipulation/alien) call stack: Alien Organ Manipulation (/datum/surgery/organ_manipulation/alien): can start(Tony Stroble (/mob/living/carbon/human), SINA-522 (/mob/living/carbon/human/machine)) SINA-522 (/mob/living/carbon/human/machine): can run surgery(Alien Organ Manipulation (/datum/surgery/organ_manipulation/alien), Tony Stroble (/mob/living/carbon/human), null) /datum/component/surgery_initi... (/datum/component/surgery_initiator/limb): get available surgeries(Tony Stroble (/mob/living/carbon/human), SINA-522 (/mob/living/carbon/human/machine)) /datum/component/surgery_initi... (/datum/component/surgery_initiator/limb): do initiate surgery moment(SINA-522 (/mob/living/carbon/human/machine), Tony Stroble (/mob/living/carbon/human)) ImmediateInvokeAsync(/datum/component/surgery_initi... (/datum/component/surgery_initiator/limb), /datum/component/surgery_initi... (/datum/component/surgery_initiator/proc/do_initiate_surgery_moment), SINA-522 (/mob/living/carbon/human/machine), Tony Stroble (/mob/living/carbon/human)) /datum/component/surgery_initi... (/datum/component/surgery_initiator/limb): initiate surgery moment(Morpheus Cyberkinetics right a... (/obj/item/organ/external/arm/right/ipc), SINA-522 (/mob/living/carbon/human/machine), Tony Stroble (/mob/living/carbon/human)) CallAsync(/datum/component/surgery_initi... (/datum/component/surgery_initiator/limb), /datum/component/surgery_initi... (/datum/component/surgery_initiator/proc/initiate_surgery_moment), /list (/list)) Morpheus Cyberkinetics right a... (/obj/item/organ/external/arm/right/ipc): SendSignal("item_attack", /list (/list)) Morpheus Cyberkinetics right a... (/obj/item/organ/external/arm/right/ipc): attack(SINA-522 (/mob/living/carbon/human/machine), Tony Stroble (/mob/living/carbon/human), null) SINA-522 (/mob/living/carbon/human/machine): attackby(Morpheus Cyberkinetics right a... (/obj/item/organ/external/arm/right/ipc), Tony Stroble (/mob/living/carbon/human), "icon-x=17;icon-y=20;vis-x=-18;...") SINA-522 (/mob/living/carbon/human/machine): attackby(Morpheus Cyberkinetics right a... (/obj/item/organ/external/arm/right/ipc), Tony Stroble (/mob/living/carbon/human), "icon-x=17;icon-y=20;vis-x=-18;...") Morpheus Cyberkinetics right a... (/obj/item/organ/external/arm/right/ipc): melee attack chain(Tony Stroble (/mob/living/carbon/human), SINA-522 (/mob/living/carbon/human/machine), "icon-x=17;icon-y=20;vis-x=-18;...") Tony Stroble (/mob/living/carbon/human): ClickOn(SINA-522 (/mob/living/carbon/human/machine), "icon-x=17;icon-y=20;vis-x=-18;...") SINA-522 (/mob/living/carbon/human/machine): Click(the floor (226,145,1) (/turf/simulated/floor/plasteel/freezer), "mapwindow.map", "icon-x=17;icon-y=20;vis-x=-18;...")

GDNgit avatar Oct 15 '22 03:10 GDNgit