diff --git a/code/datums/elements/squish.dm b/code/datums/elements/squish.dm new file mode 100644 index 00000000..823d391e --- /dev/null +++ b/code/datums/elements/squish.dm @@ -0,0 +1,28 @@ +#define SHORT 5/7 +#define TALL 7/5 + +/datum/element/squish + element_flags = ELEMENT_DETACH + +/datum/element/squish/Attach(datum/target, duration) + . = ..() + if(!iscarbon(target)) + return ELEMENT_INCOMPATIBLE + + var/mob/living/carbon/C = target + var/was_lying = (C.lying != 0) + addtimer(CALLBACK(src, .proc/Detach, C, was_lying), duration) + + C.transform = C.transform.Scale(TALL, SHORT) + +/datum/element/squish/Detach(mob/living/carbon/C, was_lying) + . = ..() + if(istype(C)) + var/is_lying = (C.lying != 0) + if(was_lying == is_lying) + C.transform = C.transform.Scale(SHORT, TALL) + else + C.transform = C.transform.Scale(TALL, SHORT) + +#undef SHORT +#undef TALL diff --git a/tgstation.dme b/tgstation.dme index 4e0c3088..0bca9ad0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -477,6 +477,7 @@ #include "code\datums\elements\flavor_text.dm" #include "code\datums\elements\ghost_role_eligibility.dm" #include "code\datums\elements\mob_holder.dm" +#include "code\datums\elements\squish.dm" #include "code\datums\elements\swimming.dm" #include "code\datums\elements\wuv.dm" #include "code\datums\helper_datums\events.dm"