|
829 | 829 | LAZYSET(blood_DNA, unique_enzymes, blood_type) |
830 | 830 | return TRUE |
831 | 831 |
|
832 | | -var/global/list/_coating_overlay_cache = list() |
| 832 | +var/global/list/icon/_coating_overlay_cache = list() |
833 | 833 | var/global/icon/_item_coating_mask = icon('icons/effects/blood.dmi', "itemblood") |
834 | 834 | /obj/item/proc/generate_coating_overlay(force = FALSE) |
835 | 835 | if(coating_overlay && !force) |
836 | 836 | return |
837 | | - var/cache_key = "[icon]-[icon_state]" |
838 | | - if(global._coating_overlay_cache[cache_key]) |
839 | | - coating_overlay = global._coating_overlay_cache[cache_key] |
840 | | - return |
841 | | - var/icon/I = new /icon(icon, icon_state) |
842 | | - I.MapColors(0,0,0, 0,0,0, 0,0,0, 1,1,1) // Sets the icon RGB channel to pure white. |
843 | | - I.Blend(global._item_coating_mask, ICON_MULTIPLY) // Masks the coating overlay against the generated mask. |
844 | | - coating_overlay = image(I) |
| 837 | + var/cache_key = "\ref[icon]-[icon_state]" // this needs to use ref because of stringification |
| 838 | + if(!global._coating_overlay_cache[cache_key]) |
| 839 | + var/icon/I = new /icon(icon, icon_state) |
| 840 | + I.MapColors(0,0,0, 0,0,0, 0,0,0, 1,1,1) // Sets the icon RGB channel to pure white. |
| 841 | + I.Blend(global._item_coating_mask, ICON_MULTIPLY) // Masks the coating overlay against the generated mask. |
| 842 | + global._coating_overlay_cache[cache_key] = I |
| 843 | + coating_overlay = image(global._coating_overlay_cache[cache_key]) |
845 | 844 | coating_overlay.appearance_flags |= NO_CLIENT_COLOR|RESET_COLOR |
846 | | - global._coating_overlay_cache[cache_key] = coating_overlay |
847 | 845 |
|
848 | 846 | /obj/item/proc/showoff(mob/user) |
849 | 847 | for(var/mob/M in view(user)) |
|
0 commit comments