Paradise
Paradise copied to clipboard
Surgery runtimes
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:
Extra information:
HOW TO REPRODUCE
- Get an IPC who requires a new limb
- Apply limb to area, do not prepare for the surgery step, just apply the item
- fully attach the item to the IPC
- 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;...")