diff --git a/code/datums/skill_holder.dm b/code/datums/skill_holder.dm index 65511fcd749..ecb768b0511 100644 --- a/code/datums/skill_holder.dm +++ b/code/datums/skill_holder.dm @@ -164,21 +164,27 @@ /datum/skill_holder/Destroy(force, ...) set_current(null) + apprentices = null . = ..() /datum/skill_holder/proc/set_current(mob/incoming) if(current) - UnregisterSignal(current, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF) + UnregisterSignal(current, list(COMSIG_MOB_MIND_TRANSFERRED_OUT_OF, COMSIG_PARENT_QDELETING)) current.skills = null current = incoming if(current) current.skills = src RegisterSignal(current, COMSIG_MOB_MIND_TRANSFERRED_OUT_OF, PROC_REF(upon_mind_transfer)) + RegisterSignal(current, COMSIG_PARENT_QDELETING, PROC_REF(on_owner_deleted)) /datum/skill_holder/proc/upon_mind_transfer(mob/living/source_old_mob, mob/living/new_mob) SIGNAL_HANDLER set_current(new_mob) +/datum/skill_holder/proc/on_owner_deleted() + SIGNAL_HANDLER + qdel(src) + /** * Offer apprenticeship to a youngling * Vars: diff --git a/code/modules/jobs/job_types/garrison/royal_knight.dm b/code/modules/jobs/job_types/garrison/royal_knight.dm index 8ff582eec46..a76b917e169 100644 --- a/code/modules/jobs/job_types/garrison/royal_knight.dm +++ b/code/modules/jobs/job_types/garrison/royal_knight.dm @@ -110,7 +110,7 @@ spawned.clamped_adjust_skillrank(/datum/skill/combat/swords, 2, 4, TRUE) if(grant_shield) - spawned.adjust_skillrank(/datum/skill/combat/shields, 1) + spawned.adjust_skillrank(/datum/skill/combat/shields, 1, TRUE) var/obj/item/weapon/shield/tower/metal/shield = new /obj/item/weapon/shield/tower/metal() if(!spawned.equip_to_appropriate_slot(shield)) qdel(shield) diff --git a/code/modules/surgery/organs/internal/vocal_cords.dm b/code/modules/surgery/organs/internal/vocal_cords.dm index 9dfb75243a5..c34709c9f5e 100644 --- a/code/modules/surgery/organs/internal/vocal_cords.dm +++ b/code/modules/surgery/organs/internal/vocal_cords.dm @@ -34,7 +34,8 @@ /obj/item/organ/vocal_cords/harpy/Remove(mob/living/carbon/M, special = FALSE, drop_if_replaced = TRUE) . = ..() - M.adjust_skillrank(/datum/skill/misc/music, -1, TRUE) + if(!QDELING(M)) + M.adjust_skillrank(/datum/skill/misc/music, -1, TRUE) /datum/action/item_action/organ_action/use/harpy_sing name = "Harpy's song"