From 1f124358b059827df8f176a259b57e5c8370f6a9 Mon Sep 17 00:00:00 2001 From: Archie Date: Fri, 11 Jun 2021 21:00:35 -0300 Subject: [PATCH] Mimic behavioral changes and a runtime --- code/game/objects/items/devices/scanners.dm | 2 +- hyperstation/code/mobs/mimic.dm | 55 +++++++++++++++------ 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index d2c9f5a1..56237527 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -232,7 +232,7 @@ GENE SCANNER msg += "\tSubject has abnormal brain fuctions.\n" //Astrogen shenanigans - if(M.reagents.has_reagent(/datum/reagent/fermi/astral)) + if(M.reagents?.has_reagent(/datum/reagent/fermi/astral)) if(M.mind) msg += "\tWarning: subject may be possesed.\n" else diff --git a/hyperstation/code/mobs/mimic.dm b/hyperstation/code/mobs/mimic.dm index b94cf367..7b9c346a 100644 --- a/hyperstation/code/mobs/mimic.dm +++ b/hyperstation/code/mobs/mimic.dm @@ -7,12 +7,13 @@ icon_dead = "mimic_dead" gender = NEUTER speak_chance = 0 + maxHealth = 38 + health = 38 turns_per_move = 5 - maxHealth = 50 - health = 50 - //move_to_delay = 4 - speed = 0 - see_in_dark = 3 + move_to_delay = 3 + speed = 1 + see_in_dark = 6 + pass_flags = PASSTABLE butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab/xeno = 2) response_help = "prods" response_disarm = "pushes aside" @@ -21,12 +22,17 @@ melee_damage_upper = 12 attacktext = "slams" attack_sound = 'sound/weapons/punch1.ogg' + 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) ventcrawler = VENTCRAWLER_ALWAYS + blood_volume = 0 faction = list("mimic") gold_core_spawnable = NO_SPAWN vision_range = 2 aggro_vision_range = 9 wander = TRUE + minbodytemp = 250 //VERY weak to cold + maxbodytemp = 1500 + pressure_resistance = 600 var/unstealth = FALSE var/knockdown_people = 1 @@ -36,9 +42,13 @@ unstealth = FALSE Mimictransform() -/mob/living/simple_animal/hostile/hs13mimic/proc/Mimictransform() //The list of default things to transform needs to be bigger, consider this in the future. +/mob/living/simple_animal/hostile/hs13mimic/attack_hand(mob/living/carbon/human/M) + . = ..() + trigger() +/mob/living/simple_animal/hostile/hs13mimic/proc/Mimictransform() //The list of default things to transform needs to be bigger, consider this in the future. var/transformitem = rand(1,100) + medhudupdate() if(unstealth == FALSE) wander = FALSE vision_range = initial(vision_range) @@ -123,16 +133,31 @@ else if(!target && unstealth) trytftorandomobject() -/mob/living/simple_animal/hostile/hs13mimic/adjust_bodytemperature() +/mob/living/simple_animal/hostile/hs13mimic/death(gibbed) + restore() . = ..() - var/mod = 0 - else if(bodytemperature < 183.222) - mod = (283.222 - bodytemperature) / 10 * 1.75 - if(mod) - add_movespeed_modifier(MOVESPEED_ID_SLIME_TEMPMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = mod) + +/mob/living/simple_animal/hostile/hs13mimic/med_hud_set_health() + if(!unstealth) + var/image/holder = hud_list[HEALTH_HUD] + holder.icon_state = null + return //we hide medical hud while morphed + ..() + +/mob/living/simple_animal/hostile/hs13mimic/med_hud_set_status() + if(!unstealth) + var/image/holder = hud_list[STATUS_HUD] + holder.icon_state = null + return //we hide medical hud while morphed + ..() + +/mob/living/simple_animal/hostile/hs13mimic/proc/medhudupdate() + med_hud_set_health() + med_hud_set_status() /mob/living/simple_animal/hostile/hs13mimic/proc/restore() - //back to normal + //back to normal mimic sprite + medhudupdate() name = initial(name) icon = 'hyperstation/icons/mobs/mimic.dmi' icon_state = "mimic" @@ -155,12 +180,13 @@ C.trigger() /mob/living/simple_animal/hostile/hs13mimic/proc/trytftorandomobject() + unstealth = FALSE + medhudupdate() var/list/obj/item/listItems = list() for(var/obj/item/I in oview(9,src.loc)) listItems += I if(LAZYLEN(listItems)) var/obj/item/changedReference = pick(listItems) - unstealth = FALSE wander = FALSE vision_range = initial(vision_range) name = changedReference.name @@ -168,5 +194,4 @@ icon_state = changedReference.icon_state desc = changedReference.desc else - unstealth = FALSE Mimictransform()