From 46dbb9345d8da9a3ef7eff1d0a7955abda5e7aa5 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sun, 1 Nov 2020 20:40:58 +0000 Subject: [PATCH] slime puddles look better and cant be abused by lings (#13567) * perfect * further changes * no squeaking please * no more squeaking damnit * no more squeaking damnit * slower * they get broken armor * broken armor application * Apply suggestions from code review * add a comma * make crossed work properly * Update squeak.dm Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com> --- code/__DEFINES/traits.dm | 7 ++-- code/datums/components/squeak.dm | 15 +++++++ code/datums/mutations/_mutations.dm | 1 - code/modules/mob/living/carbon/human/human.dm | 1 + .../mob/living/carbon/human/human_defense.dm | 3 +- .../carbon/human/species_types/jellypeople.dm | 37 +++++++++++++----- code/modules/movespeed/modifiers/innate.dm | 3 +- icons/mob/mob.dmi | Bin 294018 -> 294183 bytes 8 files changed, 51 insertions(+), 16 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 520f205381..82302a2e06 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -208,10 +208,9 @@ #define TRAIT_FAST_PUMP "fast_pump" #define TRAIT_NO_PROCESS_FOOD "no-process-food" // You don't get benefits from nutriment, nor nutrition from reagent consumables #define TRAIT_NICE_SHOT "nice_shot" //hnnnnnnnggggg..... you're pretty good... -/// Prevents stamina buffer regeneration -#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" -/// Prevents stamina regeneration -#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" +#define TRAIT_NO_STAMINA_BUFFER_REGENERATION "block_stamina_buffer_regen" /// Prevents stamina buffer regeneration +#define TRAIT_NO_STAMINA_REGENERATION "block_stamina_regen" /// Prevents stamina regeneration +#define TRAIT_ARMOR_BROKEN "armor_broken" //acts as if you are wearing no clothing when taking damage, does not affect non-clothing sources of protection // mobility flag traits // IN THE FUTURE, IT WOULD BE NICE TO DO SOMETHING SIMILAR TO https://github.com/tgstation/tgstation/pull/48923/files (ofcourse not nearly the same because I have my.. thoughts on it) diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index b8191a377b..0552a791ea 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -46,6 +46,21 @@ if(isnum(use_delay_override)) use_delay = use_delay_override +/datum/component/squeak/UnregisterFromParent() + if(!isatom(parent)) + return + UnregisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY)) + if(ismovable(parent)) + UnregisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT, + COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED, COMSIG_MOVABLE_CROSS, + COMSIG_CROSS_SQUEAKED, COMSIG_MOVABLE_DISPOSING)) + if(isitem(parent)) + UnregisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT, COMSIG_ITEM_ATTACK_SELF, + COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) + if(istype(parent, /obj/item/clothing/shoes)) + UnregisterSignal(parent, COMSIG_SHOES_STEP_ACTION) + return ..() + /datum/component/squeak/proc/play_squeak() do_play_squeak() diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 3bddfdaa63..b72874c329 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -150,7 +150,6 @@ overlays_standing[CM.layer_used] = mut_overlay apply_overlay(CM.layer_used) - /datum/mutation/human/proc/modify() //called when a genome is applied so we can properly update some stats without having to remove and reapply the mutation from someone if(modified || !power || !owner) return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 710d49c075..301a9bd7c8 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -212,6 +212,7 @@ // called when something steps onto a human // this could be made more general, but for now just handle mulebot /mob/living/carbon/human/Crossed(atom/movable/AM) + ..() var/mob/living/simple_animal/bot/mulebot/MB = AM if(istype(MB)) MB.RunOver(src) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 76a9c00ed1..10295a7de4 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -1,4 +1,6 @@ /mob/living/carbon/human/getarmor(def_zone, type) + if(HAS_TRAIT(src, TRAIT_ARMOR_BROKEN)) //trait that makes it act as if you have no armor at all, you take natural damage from all sources + return 0 var/armorval = 0 var/organnum = 0 @@ -18,7 +20,6 @@ organnum++ return (armorval/max(organnum, 1)) - /mob/living/carbon/human/proc/checkarmor(obj/item/bodypart/def_zone, d_type) if(!d_type || !def_zone) return 0 diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index a87c92bdb9..ecac5fda10 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -714,18 +714,25 @@ return FALSE /datum/action/innate/slime_puddle/Activate() + var/mob/living/carbon/human/H = owner + //if they have anything stuck to their hands, we immediately say 'no' and return + for(var/obj/item/I in H.held_items) + if(HAS_TRAIT(I, TRAIT_NODROP)) + to_chat(owner, "There's something stuck to your hand, stopping you from transforming!") + return if(isjellyperson(owner) && IsAvailable()) transforming = TRUE UpdateButtonIcon() - var/mob/living/carbon/human/H = owner var/mutcolor = "#" + H.dna.features["mcolor"] if(!is_puddle) - if(CHECK_MOBILITY(H, MOBILITY_USE)) - is_puddle = TRUE - owner.cut_overlays() + if(CHECK_MOBILITY(H, MOBILITY_USE)) //if we can use items, we can turn into a puddle + is_puddle = TRUE //so we know which transformation to use when its used + owner.cut_overlays() //we dont show our normal sprite, we show a puddle sprite var/obj/effect/puddle_effect = new puddle_into_effect(get_turf(owner), owner.dir) puddle_effect.color = mutcolor - H.Stun(in_transformation_duration, ignore_canstun = TRUE) + H.Stun(in_transformation_duration, ignore_canstun = TRUE) //cant move while transforming + + //series of traits that make up the puddle behaviour ADD_TRAIT(H, TRAIT_PARALYSIS_L_ARM, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_PARALYSIS_R_ARM, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_MOBILITY_NOPICKUP, SLIMEPUDDLE_TRAIT) @@ -733,19 +740,30 @@ ADD_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT) ADD_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT) + ADD_TRAIT(H, TRAIT_ARMOR_BROKEN, SLIMEPUDDLE_TRAIT) + H.update_disabled_bodyparts(silent = TRUE) //silently update arms to be paralysed + H.add_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) - H.update_disabled_bodyparts(silent = TRUE) + H.layer -= 1 //go one layer down so people go over you - ENABLE_BITFIELD(H.pass_flags, PASSMOB) - squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) - sleep(in_transformation_duration) + ENABLE_BITFIELD(H.pass_flags, PASSMOB) //this actually lets people pass over you + squeak = H.AddComponent(/datum/component/squeak, custom_sounds = list('sound/effects/blobattack.ogg')) //blorble noise when people step on you + + //if the user is a changeling, retract their sting + H.unset_sting() + + sleep(in_transformation_duration) //wait for animation to end + + //set the puddle overlay up var/mutable_appearance/puddle_overlay = mutable_appearance(icon = puddle_icon, icon_state = puddle_state) puddle_overlay.color = mutcolor tracked_overlay = puddle_overlay owner.add_overlay(puddle_overlay) + transforming = FALSE UpdateButtonIcon() else + //like the above, but reverse everything done! owner.cut_overlay(tracked_overlay) var/obj/effect/puddle_effect = new puddle_from_effect(get_turf(owner), owner.dir) puddle_effect.color = mutcolor @@ -758,6 +776,7 @@ REMOVE_TRAIT(H, TRAIT_SPRINT_LOCKED, SLIMEPUDDLE_TRAIT) REMOVE_TRAIT(H, TRAIT_COMBAT_MODE_LOCKED, SLIMEPUDDLE_TRAIT) REMOVE_TRAIT(H, TRAIT_MOBILITY_NOREST, SLIMEPUDDLE_TRAIT) + REMOVE_TRAIT(H, TRAIT_ARMOR_BROKEN, SLIMEPUDDLE_TRAIT) H.update_disabled_bodyparts(silent = TRUE) H.remove_movespeed_modifier(/datum/movespeed_modifier/slime_puddle) H.layer += 1 //go one layer back above! diff --git a/code/modules/movespeed/modifiers/innate.dm b/code/modules/movespeed/modifiers/innate.dm index 946d93e96b..f5a599f940 100644 --- a/code/modules/movespeed/modifiers/innate.dm +++ b/code/modules/movespeed/modifiers/innate.dm @@ -20,5 +20,6 @@ flags = IGNORE_NOSLOW /datum/movespeed_modifier/slime_puddle - multiplicative_slowdown = 2 + multiplicative_slowdown = 4.5 flags = IGNORE_NOSLOW + variable = TRUE diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 10b733bae4e6221e36ab95f79ddda19526221b65..3d1cbfa273e654ab1b23a36d49c1b91f38526a62 100644 GIT binary patch delta 13825 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 aSqI$eH#*ru_NDC2VrFDzSbFjHqyGmdh`k*E