diff --git a/code/__DEFINES/dcs/signals/signals_turf.dm b/code/__DEFINES/dcs/signals/signals_turf.dm index e28b392c88a..c6773f8368b 100644 --- a/code/__DEFINES/dcs/signals/signals_turf.dm +++ b/code/__DEFINES/dcs/signals/signals_turf.dm @@ -16,6 +16,8 @@ #define COMSIG_TURF_ON_SHUTTLE_MOVE "turf_on_shuttle_move" ///from /turf/open/temperature_expose(datum/gas_mixture/air, exposed_temperature) #define COMSIG_TURF_EXPOSE "turf_expose" +///called when an industrial lift enters this turf +#define COMSIG_TURF_INDUSTRIAL_LIFT_ENTER "turf_industrial_life_enter" ///from /datum/element/decal/Detach(): (description, cleanable, directional, mutable_appearance/pic) #define COMSIG_TURF_DECAL_DETACHED "turf_decal_detached" diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 358ac827844..a03b8a8601d 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -600,10 +600,22 @@ squeak_override = list('sound/weapons/punch1.ogg'=1) /// Whether or not this goat is currently taking in a monsterous doink var/going_hard = FALSE + /// Whether or not this goat has been flattened like a funny pancake + var/splat = FALSE + +/obj/item/toy/plush/goatplushie/Initialize(mapload) + . = ..() + var/static/list/loc_connections = list( + COMSIG_TURF_INDUSTRIAL_LIFT_ENTER = .proc/splat, + ) + AddElement(/datum/element/connect_loc, loc_connections) /obj/item/toy/plush/goatplushie/attackby(obj/item/clothing/mask/cigarette/rollie/fat_dart, mob/user, params) if(!istype(fat_dart)) return ..() + if(splat) + to_chat(user, span_notice("[src] doesn't seem to be able to go hard right now.")) + return if(going_hard) to_chat(user, span_notice("[src] is already going too hard!")) return @@ -615,8 +627,22 @@ going_hard = TRUE update_icon(UPDATE_OVERLAYS) +/obj/item/toy/plush/goatplushie/proc/splat(datum/source) + SIGNAL_HANDLER + if(splat) + return + if(going_hard) + going_hard = FALSE + update_icon(UPDATE_OVERLAYS) + icon_state = "goat_splat" + playsound(src, "desecration", 50, TRUE) + visible_message(span_danger("[src] gets absolutely flattened!")) + splat = TRUE + /obj/item/toy/plush/goatplushie/examine() . = ..() + if(splat) + . += span_notice("[src] might need medical attention.") if(going_hard) . += span_notice("[src] is going so hard, feel free to take a picture.") diff --git a/code/game/objects/structures/industrial_lift.dm b/code/game/objects/structures/industrial_lift.dm index 1e6fd5b37cf..18b9c9a15dd 100644 --- a/code/game/objects/structures/industrial_lift.dm +++ b/code/game/objects/structures/industrial_lift.dm @@ -233,6 +233,8 @@ GLOBAL_LIST_EMPTY(lifts) destination = get_step_multiz(src, going) else destination = going + ///handles any special interactions objects could have with the lift/tram, handled on the item itself + SEND_SIGNAL(destination, COMSIG_TURF_INDUSTRIAL_LIFT_ENTER) if(istype(destination, /turf/closed/wall)) var/turf/closed/wall/C = destination diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi index 1c815a0dbb8..dfc7e5af8b3 100644 Binary files a/icons/obj/plushes.dmi and b/icons/obj/plushes.dmi differ