diff --git a/code/datums/action.dm b/code/datums/action.dm index d3ee25bbd76..27c38793562 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -335,6 +335,9 @@ /datum/action/item_action/YEEEAAAAAHHHHHHHHHHHHH name = "YEAH!" +/datum/action/item_action/laugh_track + name = "Laugh Track" + /datum/action/item_action/adjust /datum/action/item_action/adjust/New(Target) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 28110116ab4..dc149d1d75b 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -61,3 +61,40 @@ if(!H.can_hear()) continue M.emote("flip") + +#define LAUGH_COOLDOWN 30 SECONDS +#define LAUGH_COOLDOWN_CMAG 10 SECONDS + +/obj/item/clown_recorder + name = "clown recorder" + desc = "When you just can't get those laughs coming the natural way!" + icon = 'icons/obj/device.dmi' + icon_state = "clown_recorder" + item_state = "analyzer" + w_class = WEIGHT_CLASS_SMALL + slot_flags = SLOT_BELT + materials = list(MAT_METAL = 180, MAT_GLASS = 90) + force = 2 + throwforce = 0 + drop_sound = 'sound/items/handling/taperecorder_drop.ogg' + pickup_sound = 'sound/items/handling/taperecorder_pickup.ogg' + actions_types = list(/datum/action/item_action/laugh_track) + var/cooldown = 0 + +/obj/item/clown_recorder/attack_self(mob/user) + if(cooldown > world.time) + to_chat(user, "The tape is still winding back.") + return + playsound(src, pick('sound/voice/sitcom_laugh.ogg', 'sound/voice/sitcom_laugh2.ogg'), 50, FALSE) + if(!HAS_TRAIT(src, TRAIT_CMAGGED)) + cooldown = world.time + LAUGH_COOLDOWN + else + cooldown = world.time + LAUGH_COOLDOWN_CMAG + +/obj/item/clown_recorder/cmag_act(mob/user) + if(!HAS_TRAIT(src, TRAIT_CMAGGED)) + to_chat(user, "Winding back speed has been improved by the bananium ooze!") + ADD_TRAIT(src, TRAIT_CMAGGED, CLOWN_EMAG) + +#undef LAUGH_COOLDOWN +#undef LAUGH_COOLDOWN_CMAG diff --git a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm index 9a40c3bc0ce..c4f81f18415 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm @@ -10,6 +10,7 @@ new /obj/item/clothing/shoes/clown_shoes(src) new /obj/item/radio/headset/headset_service(src) new /obj/item/clothing/mask/gas/clown_hat(src) + new /obj/item/clown_recorder(src) new /obj/item/bikehorn(src) new /obj/item/reagent_containers/spray/waterflower(src) new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(src) diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 36026dade05..d6a323d4c06 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/sound/voice/sitcom_laugh.ogg b/sound/voice/sitcom_laugh.ogg new file mode 100644 index 00000000000..4a0e035e0e5 Binary files /dev/null and b/sound/voice/sitcom_laugh.ogg differ diff --git a/sound/voice/sitcom_laugh2.ogg b/sound/voice/sitcom_laugh2.ogg new file mode 100644 index 00000000000..af35ec4d585 Binary files /dev/null and b/sound/voice/sitcom_laugh2.ogg differ