From b49665f533ce68de049176b0c73b0495b9bad368 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Sat, 24 Dec 2016 02:25:55 -0500 Subject: [PATCH 1/2] Returns Colour Vision when you Unequip Noir Glasses Fixes a bug where taking off noir glasses while noir mode was on didn't give you your colour vision back. --- code/modules/clothing/glasses/glasses.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index f8ff3ea4ecc..565e8fc317b 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -257,6 +257,9 @@ if(noir_mode) if(color_view && user.client && !user.client.color) animate(user.client, color = color_view, time = 10) + else + if(user.client && user.client.color) + animate(usr.client, color = null, time = 10) ..(user, slot) /obj/item/clothing/glasses/sunglasses/noir/dropped(mob/living/carbon/human/user) From 0ec94ab50eb8f3cce6157091935dd42c23f729f2 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Sun, 25 Dec 2016 00:49:46 -0500 Subject: [PATCH 2/2] Improves maintainability of Noir Glasses. --- code/__DEFINES/misc.dm | 9 +++++---- code/__HELPERS/lists.dm | 4 +++- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/glasses/glasses.dm | 22 ++++++++++++++-------- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index e6804ee1f96..5e9815b7758 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -255,10 +255,11 @@ 0, 0, 1, 0,\ 0, 0, 0, 1) -#define MATRIX_GREYSCALE list(0.3, 0.3, 0.3, 0,\ - 0.3, 0.3, 0.3, 0,\ - 0.3, 0.3, 0.3, 0,\ - 0, 0, 0, 1) +#define MATRIX_GREYSCALE list(0.33, 0.33, 0.33, 0,\ + 0.33, 0.33, 0.33, 0,\ + 0.33, 0.33, 0.33, 0,\ + 0.00, 0.00, 0.00, 1,\ + 0.00, 0.00, 0.00, 0) //Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 #define TRIGGER_GUARD_NONE 0 diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index 53285c92fa1..7d7f0365dc1 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -115,7 +115,9 @@ result += e else result = first - second - return result + + if(result.len) + return result /* * Returns list containing entries that are in either list but not both. diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index ab5f8832ab3..078f83f506a 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -154,7 +154,7 @@ var/invis_override = 0 var/emagged = 0 - var/color_view = null//overrides client.color while worn + var/list/color_view = null//overrides client.color while worn var/prescription = 0 var/prescription_upgradable = 0 strip_delay = 20 // but seperated to allow items to protect but not impair vision, like space helmets diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 565e8fc317b..5ca2b346064 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -243,29 +243,35 @@ return 1 /obj/item/clothing/glasses/sunglasses/noir/proc/toggle_noir() + var/list/difference = difflist(usr.client.color, color_view) + if(!noir_mode) - if(color_view && usr.client && !usr.client.color) + if(color_view && usr.client && (!usr.client.color || difference)) animate(usr.client, color = color_view, time = 10) noir_mode = 1 else - if(usr.client && usr.client.color) - animate(usr.client, color = null, time = 10) + if(usr.client && usr.client.color && !difference) + animate(usr.client, color = initial(usr.client.color), time = 10) noir_mode = 0 /obj/item/clothing/glasses/sunglasses/noir/equipped(mob/user, slot) + var/list/difference = difflist(user.client.color, color_view) + if(slot == slot_glasses) if(noir_mode) - if(color_view && user.client && !user.client.color) + if(color_view && user.client && (!user.client.color || difference)) animate(user.client, color = color_view, time = 10) else - if(user.client && user.client.color) - animate(usr.client, color = null, time = 10) + if(user.client && user.client.color && !difference) + animate(user.client, color = initial(user.client.color), time = 10) ..(user, slot) /obj/item/clothing/glasses/sunglasses/noir/dropped(mob/living/carbon/human/user) + var/list/difference = difflist(user.client.color, color_view) + if(istype(user) && user.glasses == src) - if(user.client && user.client.color) - animate(user.client, color = null, time = 10) + if(user.client && user.client.color && !difference) + animate(user.client, color = initial(user.client.color), time = 10) ..(user) /obj/item/clothing/glasses/sunglasses/yeah