From 147d485cb3ca1b79df168ab57bd6a57b4424c0a0 Mon Sep 17 00:00:00 2001 From: Krausus Date: Thu, 7 Jul 2016 16:25:46 -0400 Subject: [PATCH] Fixes alternate appearance clobbering --- code/game/alternate_appearance.dm | 12 +++++------- code/modules/mob/login.dm | 6 ++---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 005876e8ccc..53e7d6704fd 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -30,7 +30,7 @@ if(!M.viewing_alternate_appearances) M.viewing_alternate_appearances = list() viewers |= M - M.viewing_alternate_appearances[key] = src + M.viewing_alternate_appearances += src if(M.client) M.client.images |= img @@ -48,9 +48,7 @@ if(M.client) M.client.images -= img if(M.viewing_alternate_appearances && M.viewing_alternate_appearances.len) - M.viewing_alternate_appearances -= key - if(!M.viewing_alternate_appearances.len) - M.viewing_alternate_appearances = null + M.viewing_alternate_appearances -= src viewers -= M @@ -61,8 +59,6 @@ hide() if(owner && owner.alternate_appearances) owner.alternate_appearances -= key - if(!owner.alternate_appearances.len) - owner.alternate_appearances = null /datum/alternate_appearance/Destroy() @@ -74,7 +70,7 @@ /atom var/list/alternate_appearances //the alternate appearances we own var/list/viewing_alternate_appearances //the alternate appearances we're viewing, stored here to reestablish them after Logout()s - //these lists are built/destroyed as necessary, so atoms aren't all lugging around lists full of datums + //these lists are built as necessary, so atoms aren't all lugging around empty lists /* Builds an alternate_appearance datum for the supplied args, optionally displaying it straight away @@ -102,6 +98,8 @@ AA.key = key AA.owner = src + if(alternate_appearances[key]) + qdel(alternate_appearances[key]) alternate_appearances[key] = AA if(displayTo && displayTo.len) display_alt_appearance(key, displayTo) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 5cf956e610a..28886862c2f 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -74,10 +74,8 @@ add_click_catcher() if(viewing_alternate_appearances && viewing_alternate_appearances.len) - for(var/aakey in viewing_alternate_appearances) - var/datum/alternate_appearance/AA = viewing_alternate_appearances[aakey] - if(AA) - AA.display_to(list(src)) + for(var/datum/alternate_appearance/AA in viewing_alternate_appearances) + AA.display_to(list(src)) CallHook("Login", list("client" = src.client, "mob" = src))