diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 22a76fd8..d8b5ab0b 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -79,6 +79,7 @@ #define ADMIN_PUNISHMENT_FAKEBWOINK "Fake Bwoink" #define ADMIN_PUNISHMENT_NUGGET "Nugget" #define ADMIN_PUNISHMENT_BREADIFY ":b:read" +#define ADMIN_PUNISHMENT_BOOKIFY "Bookify" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 0aaa34e8..1f780448 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1247,6 +1247,11 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/obj/item/reagent_containers/food/snacks/store/bread/plain/funnyBread = new(get_turf(target)) target.forceMove(funnyBread) +/client/proc/bookify(atom/movable/target) + var/obj/item/reagent_containers/food/snacks/store/book/funnyBook = new(get_turf(target)) + target.forceMove(funnyBook) + funnyBook.name = "Book of " + target.name + /client/proc/smite(mob/living/carbon/human/target as mob) set name = "Smite" set category = "Fun" @@ -1268,7 +1273,8 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits ADMIN_PUNISHMENT_TABLETIDESTATIONWIDE, ADMIN_PUNISHMENT_FAKEBWOINK, ADMIN_PUNISHMENT_NUGGET, - ADMIN_PUNISHMENT_BREADIFY) + ADMIN_PUNISHMENT_BREADIFY, + ADMIN_PUNISHMENT_BOOKIFY) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1379,6 +1385,14 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits target.transformation_animation(bread_appearance, time = BREADIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) addtimer(CALLBACK(GLOBAL_PROC, .proc/breadify, target), BREADIFY_TIME) #undef BREADIFY_TIME + if(ADMIN_PUNISHMENT_BOOKIFY) + #define BOOKIFY_TIME (2 SECONDS) + var/mutable_appearance/book_appearance = mutable_appearance('icons/obj/library.dmi', "book") + var/mutable_appearance/transform_scanline = mutable_appearance('icons/effects/effects.dmi', "transform_effect") + target.transformation_animation(book_appearance, time = BOOKIFY_TIME, transform_overlay=transform_scanline, reset_after=TRUE) + addtimer(CALLBACK(GLOBAL_PROC, .proc/bookify, target), BOOKIFY_TIME) + playsound(target, 'hyperstation/sound/misc/bookify.ogg', 60, 1) + #undef BOOKIFY_TIME punish_log(target, punishment) diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index be09a91d..22106266 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -378,3 +378,16 @@ All foods are distributed among various categories. Use common sense. TB.MouseDrop(over) else return ..() + +/obj/item/reagent_containers/food/snacks/store/book + name = "book" + desc = "Could it be? A LoR reference? And is it... Edible?" + icon = 'icons/obj/library.dmi' + icon_state = "book" + tastes = list("broken dreams and promises" = 10) + foodtype = GROSS + dunkable = TRUE + volume = 80 + bitesize = 4 + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 1) diff --git a/hyperstation/sound/misc/bookify.ogg b/hyperstation/sound/misc/bookify.ogg new file mode 100644 index 00000000..bba99ace Binary files /dev/null and b/hyperstation/sound/misc/bookify.ogg differ