From ec6a2c4456f2552e34fab476238627c36964fcbb Mon Sep 17 00:00:00 2001 From: Geeves Date: Tue, 22 Dec 2020 16:45:18 +0200 Subject: [PATCH] Angry Eyes (#10787) --- .../game/gamemodes/vampire/vampire_helpers.dm | 18 ++++++++++++++++-- .../mob/living/carbon/human/update_icons.dm | 14 +++++++++----- code/modules/organs/organ_icon.dm | 11 ++++++++++- html/changelogs/geeves-spoopy_eyes.yml | 7 +++++++ icons/mob/human_face/eyes.dmi | Bin 3586 -> 5559 bytes 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 html/changelogs/geeves-spoopy_eyes.yml diff --git a/code/game/gamemodes/vampire/vampire_helpers.dm b/code/game/gamemodes/vampire/vampire_helpers.dm index bc928aea502..edb506a962d 100644 --- a/code/game/gamemodes/vampire/vampire_helpers.dm +++ b/code/game/gamemodes/vampire/vampire_helpers.dm @@ -184,7 +184,7 @@ /mob/proc/vampire_start_frenzy(var/force_frenzy = 0) var/datum/vampire/vampire = mind.antag_datums[MODE_VAMPIRE] if (vampire.status & VAMP_FRENZIED) - return + return TRUE var/probablity = force_frenzy ? 100 : vampire.frenzy * 0.5 @@ -199,12 +199,19 @@ sight |= SEE_MOBS verbs += /mob/living/carbon/human/proc/grapple + + return TRUE + +/mob/living/carbon/human/vampire_start_frenzy() + . = ..() + if(.) + update_body() /mob/proc/vampire_stop_frenzy(var/force_stop = 0) var/datum/vampire/vampire = mind.antag_datums[MODE_VAMPIRE] if (!(vampire.status & VAMP_FRENZIED)) - return + return TRUE if (prob(force_stop ? 100 : vampire.blood_usable)) vampire.status &= ~VAMP_FRENZIED @@ -219,6 +226,13 @@ verbs -= /mob/living/carbon/human/proc/grapple regenerate_icons() + + return TRUE + +/mob/living/carbon/human/vampire_stop_frenzy() + . = ..() + if(.) + update_body() // Removes all vampire powers. /mob/proc/remove_vampire_powers() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 59e48a8b4c1..19d33563163 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -258,7 +258,6 @@ There are several things that need to be remembered: return var/husk_color_mod = rgb(96,88,80) - var/hulk_color_mod = rgb(48,224,40) var/husk = (HUSK in mutations) var/fat = (FAT in mutations) @@ -277,7 +276,10 @@ There are several things that need to be remembered: qdel(stand_icon) stand_icon = new(species.icon_template ? species.icon_template : 'icons/mob/human.dmi',"blank") - var/icon_key = "[species.race_key][g][s_tone][r_skin][g_skin][b_skin][lip_style || "nolips"][!!husk][!!fat][!!hulk][!!skeleton]" + var/is_frenzied = FALSE + if(mind?.vampire && (mind.vampire.status & VAMP_FRENZIED)) + is_frenzied = TRUE + var/icon_key = "[species.race_key][g][s_tone][r_skin][g_skin][b_skin][lip_style || "nolips"][!!husk][!!fat][!!hulk][!!skeleton][is_frenzied]" var/obj/item/organ/internal/eyes/eyes = get_eyes() if(eyes) icon_key += "[rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3])]" @@ -320,12 +322,14 @@ There are several things that need to be remembered: else base_icon.Blend(temp, ICON_OVERLAY) + var/list/add_images = part.get_additional_images(src) + if(add_images) + add_overlay(add_images, TRUE) + compile_overlays() + if(!(species.flags & NO_SCAN)) if(husk) base_icon.ColorTone(husk_color_mod) - else if(hulk) - var/list/tone = ReadRGB(hulk_color_mod) - base_icon.MapColors(rgb(tone[1],0,0),rgb(0,tone[2],0),rgb(0,0,tone[3])) //Handle husk overlay. if(husk && ("overlay_husk" in icon_states(species.icobase))) diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index ed34853da9e..51db99bfd82 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -61,7 +61,7 @@ return if(owner.species.has_organ[owner.species.vision_organ]) var/obj/item/organ/internal/eyes/eyes = owner.get_eyes() - if(eyes && species.eyes) + if(eyes && species.eyes && !(owner.mind?.vampire && (owner.mind.vampire.status & VAMP_FRENZIED))) var/eyecolor if (eyes.eye_colour) eyecolor = rgb(eyes.eye_colour[1], eyes.eye_colour[2], eyes.eye_colour[3]) @@ -100,6 +100,12 @@ return mob_icon +/obj/item/organ/external/head/get_additional_images(var/mob/living/carbon/human/H) + if(H.mind?.vampire && (H.mind.vampire.status & VAMP_FRENZIED)) + var/image/return_image = image(H.species.eyes_icons, H, "[H.species.eyes]_frenzy", EFFECTS_ABOVE_LIGHTING_LAYER) + return_image.appearance_flags = KEEP_APART + return list(return_image) + /obj/item/organ/external/proc/apply_markings(restrict_to_robotic = FALSE) if (!cached_markings) update_marking_cache() @@ -206,6 +212,9 @@ return mob_icon +/obj/item/organ/external/proc/get_additional_images(var/mob/living/carbon/human/H) + return + // new damage icon system // adjusted to set damage_state to brute/burn code only (without r_name0 as before) /obj/item/organ/external/update_icon() diff --git a/html/changelogs/geeves-spoopy_eyes.yml b/html/changelogs/geeves-spoopy_eyes.yml new file mode 100644 index 00000000000..eaff12d404c --- /dev/null +++ b/html/changelogs/geeves-spoopy_eyes.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "When vampires frenzy, their eyes will start glowing bright red." + - rscdel: "Going hulk now really never turns someone green." diff --git a/icons/mob/human_face/eyes.dmi b/icons/mob/human_face/eyes.dmi index 58e86b4269a6accdeefd2c610947bde4084b84ef..17884a91ee7e7be8c3a07467501e97d24ccfef89 100644 GIT binary patch literal 5559 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 AxBvhE literal 3586 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 VI7f9B`l$n-{ma*@dRO@I{{oj3(FFhi