From 07dbf66a1886e3816c4d4c6ce7e37a16710a2c0a Mon Sep 17 00:00:00 2001 From: Couls Date: Mon, 29 Jul 2019 03:16:18 -0400 Subject: [PATCH] Waddling! --- code/datums/components/waddling.dm | 15 ++++++++++++ code/modules/clothing/shoes/miscellaneous.dm | 24 +++++++++++++++++++ .../living/simple_animal/friendly/penguin.dm | 4 ++++ paradise.dme | 1 + 4 files changed, 44 insertions(+) create mode 100644 code/datums/components/waddling.dm diff --git a/code/datums/components/waddling.dm b/code/datums/components/waddling.dm new file mode 100644 index 00000000000..a1f538e4dd7 --- /dev/null +++ b/code/datums/components/waddling.dm @@ -0,0 +1,15 @@ +/datum/component/waddling + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + +/datum/component/waddling/Initialize() + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Waddle) + +/datum/component/waddling/proc/Waddle() + var/mob/living/L = parent + if(L.incapacitated() || L.lying) + return + animate(L, pixel_z = 4, time = 0) + animate(pixel_z = 0, transform = turn(matrix(), pick(-12, 0, 12)), time=2) + animate(pixel_z = 0, transform = matrix(), time = 0) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index f878ec0d65e..3b8c23bfca2 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -63,6 +63,30 @@ item_color = "clown" var/footstep = 1 //used for squeeks whilst walking shoe_sound = "clownstep" + var/enabled_waddle = TRUE + var/datum/component/waddle + +/obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot) + . = ..() + if(slot == slot_shoes && enabled_waddle) + user.AddComponent(/datum/component/waddling) + +/obj/item/clothing/shoes/clown_shoes/dropped(mob/user) + . = ..() + QDEL_NULL(waddle) + +/obj/item/clothing/shoes/clown_shoes/CtrlClick(mob/living/user) + if(!isliving(user)) + return + if(user.get_active_hand() != src) + to_chat(user, "You must hold the [src] in your hand to do this.") + return + if(!enabled_waddle) + to_chat(user, "You switch off the waddle dampeners!") + enabled_waddle = TRUE + else + to_chat(user, "You switch on the waddle dampeners!") + enabled_waddle = FALSE /obj/item/clothing/shoes/clown_shoes/magical name = "magical clown shoes" diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index 545866858ca..d408045a923 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -16,6 +16,10 @@ turns_per_move = 10 icon = 'icons/mob/penguins.dmi' +/mob/living/simple_animal/pet/penguin/Initialize(mapload) + . = ..() + AddComponent(/datum/component/waddling) + /mob/living/simple_animal/pet/penguin/emperor name = "Emperor penguin" real_name = "penguin" diff --git a/paradise.dme b/paradise.dme index 270d843845c..9c6f9268da9 100644 --- a/paradise.dme +++ b/paradise.dme @@ -278,6 +278,7 @@ #include "code\datums\components\jestosterone.dm" #include "code\datums\components\material_container.dm" #include "code\datums\components\squeak.dm" +#include "code\datums\components\waddling.dm" #include "code\datums\diseases\_disease.dm" #include "code\datums\diseases\_MobProcs.dm" #include "code\datums\diseases\anxiety.dm"