From 5d7db5637ceffb754c9a00d6c177d7000ffd7aae Mon Sep 17 00:00:00 2001 From: coiax Date: Sun, 24 Apr 2016 16:51:16 +0100 Subject: [PATCH] Added animal overlay to drone filters (#17009) * Added animal overlay to drone filters --- code/__HELPERS/icons.dm | 24 ++++++++++++++++++ code/modules/holiday/easter.dm | 14 +++++----- code/modules/mob/living/carbon/human/human.dm | 4 +++ code/modules/mob/living/living.dm | 6 ++++- .../simple_animal/friendly/drone/_drone.dm | 5 +++- .../friendly/drone/extra_drone_types.dm | 1 + .../friendly/drone/interaction.dm | 6 +++++ .../simple_animal/friendly/farm_animals.dm | 6 ++--- icons/mob/actions.dmi | Bin 81631 -> 81990 bytes 9 files changed, 54 insertions(+), 12 deletions(-) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 4e76b773352..4b531f503c8 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -872,6 +872,30 @@ The _flatIcons list is a cache for generated icon files. del(atom_icon) return text_image +var/global/list/friendly_animal_types = list() + +// Pick a random animal instead of the icon, and use that instead +/proc/getRandomAnimalImage(atom/A) + if(!friendly_animal_types.len) + for(var/T in typesof(/mob/living/simple_animal)) + var/mob/living/simple_animal/SA = T + if(initial(SA.gold_core_spawnable) == 2) + friendly_animal_types += SA + + + var/mob/living/simple_animal/SA = pick(friendly_animal_types) + + var/icon = initial(SA.icon) + var/icon_state = initial(SA.icon_state) + + var/image/final_image = image(icon, icon_state=icon_state, loc = A) + + if(ispath(SA, /mob/living/simple_animal/butterfly)) + final_image.color = rgb(rand(0,255), rand(0,255), rand(0,255)) + + // For debugging + final_image.text = initial(SA.name) + return final_image //Find's the average colour of the icon //By vg's ComicIronic diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 09e31dacd2a..2cb75a65e7c 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -38,9 +38,9 @@ name = "\improper rabbit" desc = "The hippiest hop around." icon = 'icons/mob/Easter.dmi' - icon_state = "rabbit" - icon_living = "rabbit" - icon_dead = "rabbit_dead" + icon_state = "rabbit_white" + icon_living = "rabbit_white" + icon_dead = "rabbit_white_dead" speak = list("Hop into Easter!","Come get your eggs!","Prizes for everyone!") speak_emote = list("sniffles","twitches") emote_hear = list("hops.") @@ -56,13 +56,13 @@ /mob/living/simple_animal/chicken/rabbit/space icon_prefix = "s_rabbit" - icon_state = "s_rabbit" - icon_living = "s_rabbit" - icon_dead = "s_rabbit_dead" + icon_state = "s_rabbit_white" + icon_living = "s_rabbit_white" + icon_dead = "s_rabbit_white_dead" atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - unsuitable_atmos_damage = 0 //This damage is taken when atmos doesn't fit all the requirements above + unsuitable_atmos_damage = 0 //Easter Baskets /obj/item/weapon/storage/bag/easterbasket diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 589b69e52cb..00ecdd0ff92 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -824,6 +824,10 @@ staticOverlay.override = 1 staticOverlays["letter"] = staticOverlay + staticOverlay = getRandomAnimalImage(src) + staticOverlay.override = 1 + staticOverlays["animal"] = staticOverlay + /mob/living/carbon/human/cuff_resist(obj/item/I) if(dna && dna.check_mutation(HULK)) say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index de6de0bd39b..64351823b7c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -41,7 +41,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/generateStaticOverlay() - staticOverlays.Add(list("static", "blank", "letter")) + staticOverlays.Add(list("static", "blank", "letter", "animal")) var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) staticOverlay.override = 1 staticOverlays["static"] = staticOverlay @@ -54,6 +54,10 @@ Sorry Giacom. Please don't be mad :( staticOverlay.override = 1 staticOverlays["letter"] = staticOverlay + staticOverlay = getRandomAnimalImage(src) + staticOverlay.override = 1 + staticOverlays["animal"] = staticOverlay + //Generic Bump(). Override MobBump() and ObjBump() instead of this. /mob/living/Bump(atom/A, yes) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index ef1fa6cea17..4d6632dec56 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -43,7 +43,7 @@ damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) staticOverlays = list() var/staticChoice = "static" - var/list/staticChoices = list("static", "blank", "letter") + var/list/staticChoices = list("static", "blank", "letter", "animal") var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) var/list/drone_overlays[DRONE_TOTAL_LAYERS] var/laws = \ @@ -83,6 +83,9 @@ alert_drones(DRONE_NET_CONNECT) + var/datum/action/generic/drone/select_filter/SF = new(src) + SF.Grant(src) + /mob/living/simple_animal/drone/Destroy() qdel(access_card) //Otherwise it ends up on the floor! diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index de35e25ef73..f37da30e127 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -51,6 +51,7 @@ default_hatmask = /obj/item/clothing/head/chameleon/drone /mob/living/simple_animal/drone/snowflake/New() + ..() desc += " This drone appears to have a complex holoprojector built on its 'head'." /obj/item/drone_shell/syndrone diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index a68dcf7516c..cc9b4cb9f84 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -179,3 +179,9 @@ icon_state = icon_dead else icon_state = icon_living + +/datum/action/generic/drone/select_filter + name = "Select Vision Filter" + button_icon_state = "drone_vision" + procname = /mob/living/simple_animal/drone/verb/toggle_statics + diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 2b3760b2dcc..6937b78520c 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -187,9 +187,9 @@ var/global/chicken_count = 0 /mob/living/simple_animal/chicken name = "\improper chicken" desc = "Hopefully the eggs are good this season." - icon_state = "chicken" - icon_living = "chicken" - icon_dead = "chicken_dead" + icon_state = "chicken_brown" + icon_living = "chicken_brown" + icon_dead = "chicken_brown_dead" speak = list("Cluck!","BWAAAAARK BWAK BWAK BWAK!","Bwaak bwak.") speak_emote = list("clucks","croons") emote_hear = list("clucks.") diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 7792eeaab82e4d1d45de93a12346e16d0e456371..7dee0928ecb4a067e16ff01f4cc773d802b7c337 100644 GIT binary patch delta 4435 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 Z{{h(ks%&i2-iiPK002ovPDHLkV1n6XkbeLG delta 4073 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 baj)}#b~_RG)