diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index 64844c4c32..e840788766 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -11,6 +11,17 @@ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/join_swarm) RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm) +/datum/component/swarming/Destroy() + if(is_swarming) + for(var/A in swarm_members) + var/datum/component/swarming/other_swarm = A + other_swarm.swarm_members -= src + swarm_members -= other_swarm + if(!length(other_swarm.swarm_members)) + other_swarm.unswarm() + unswarm() + return ..() + /datum/component/swarming/proc/join_swarm(datum/source, atom/movable/AM) var/datum/component/swarming/other_swarm = AM.GetComponent(/datum/component/swarming) if(!other_swarm) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 7036a78bc4..9117df8e6b 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -187,6 +187,15 @@ if(ID_LOCKED_BANK_ACCOUNT) registered_account = new /datum/bank_account/remote/non_transferable(pick(GLOB.redacted_strings)) +/obj/item/card/id/Destroy() + if(bank_support == ID_LOCKED_BANK_ACCOUNT) + QDEL_NULL(registered_account) + else + registered_account = null + if(my_store) + my_store.my_card = null + my_store = null + return ..() /obj/item/card/id/vv_edit_var(var_name, var_value) . = ..()