diff --git a/code/datums/supplypacks/contraband_vr.dm b/code/datums/supplypacks/contraband_vr.dm index 3d13903d47a..e5e1d256988 100644 --- a/code/datums/supplypacks/contraband_vr.dm +++ b/code/datums/supplypacks/contraband_vr.dm @@ -19,3 +19,16 @@ containertype = /obj/structure/largecrate/animal/catgirl containername = "Catgirl crate" contraband = 1 + +/datum/supply_pack/randomised/hospitality/pizzavouchers //WE ALWAYS DELIVER WE ALWAYS DELIVER WE ALWAYS DELIVER WE ALWAYS DELIVER WE ALWAYS DELIVER + num_contained = 3 + contains = list( + /obj/item/pizzavoucher, + /obj/item/pizzavoucher, + /obj/item/pizzavoucher + ) + name = "FANTASTIC PIZZA PIE VOUCHER CRATE!" + cost = 60 + containertype = /obj/structure/closet/crate + containername = "WE ALWAYS DELIVER!" + contraband = 1 diff --git a/code/game/objects/items/falling_object_vr.dm b/code/game/objects/items/falling_object_vr.dm new file mode 100644 index 00000000000..3c8c6e39aa5 --- /dev/null +++ b/code/game/objects/items/falling_object_vr.dm @@ -0,0 +1,66 @@ +/obj/effect/falling_effect + name = "you should not see this" + desc = "no data" + invisibility = 101 + anchored = TRUE + density = FALSE + unacidable = TRUE + var/falling_type = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + var/crushing = TRUE + +/obj/effect/falling_effect/Initialize(mapload, type = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita) + ..() + falling_type = type + return INITIALIZE_HINT_LATELOAD + +/obj/effect/falling_effect/LateInitialize() + new falling_type(src) + var/atom/movable/dropped = pick(contents) // Stupid, but allows to get spawn result without efforts if it is other type(Or if it was randomly generated). + dropped.loc = get_turf(src) + var/initial_x = dropped.pixel_x + var/initial_y = dropped.pixel_y + dropped.plane = 1 + dropped.pixel_x = rand(-150, 150) + dropped.pixel_y = 500 // When you think that pixel_z is height but you are wrong + dropped.density = FALSE + dropped.opacity = FALSE + animate(dropped, pixel_y = initial_y, pixel_x = initial_x , time = 7) + spawn(7) + dropped.end_fall(crushing) + qdel(src) + +/atom/movable/proc/end_fall(var/crushing = FALSE) + if(crushing) + for(var/atom/movable/AM in loc) + if(AM != src) + AM.ex_act(1) + + for(var/mob/living/M in oviewers(3, src)) + shake_camera(M, 2, 2) + + playsound(loc, 'sound/effects/meteorimpact.ogg', 50, 1) + density = initial(density) + opacity = initial(opacity) + plane = initial(plane) + +/obj/effect/falling_effect/singularity_act() + return + +/obj/effect/falling_effect/singularity_pull() + return + +/obj/effect/falling_effect/ex_act() + return + + +/obj/effect/falling_effect/pizza_delivery + name = "PIZZA PIE POWER!" + crushing = FALSE + +/obj/effect/falling_effect/pizza_delivery/Initialize(mapload) + ..() + falling_type = pick(prob(25);/obj/item/pizzabox/meat, + prob(25);/obj/item/pizzabox/margherita, + prob(25);/obj/item/pizzabox/vegetable, + prob(25);/obj/item/pizzabox/mushroom) + return INITIALIZE_HINT_LATELOAD diff --git a/code/game/objects/items/pizza_voucher_vr.dm b/code/game/objects/items/pizza_voucher_vr.dm new file mode 100644 index 00000000000..c7e75680e11 --- /dev/null +++ b/code/game/objects/items/pizza_voucher_vr.dm @@ -0,0 +1,61 @@ +/obj/item/pizzavoucher + name = "free pizza voucher" + desc = "A pocket-sized plastic slip with a button in the middle. The writing on it seems to have faded." + icon = 'icons/obj/items.dmi' + icon_state = "pizza_voucher" + var/spent = FALSE + var/special_delivery = FALSE + w_class = ITEMSIZE_SMALL + +/obj/item/pizzavoucher/New() + var/list/descstrings = list("24/7 PIZZA PIE HEAVEN", + "WE ALWAYS DELIVER!", + "24-HOUR PIZZA PIE POWER!", + "TOMATO SAUCE, CHEESE, WE'VE BOTH BOTH OF THESE!", + "COOKED WITH LOVE INSIDE A BIG OVEN!", + "WHEN YOU NEED A SLICE OF JOY IN YOUR LIFE!", + "WHEN YOU NEED A DISK OF OVEN BAKED BLISS!", + "EVERY TIME YOU DREAM OF CIRCULAR CUISINE!", + "WE ALWAYS DELIVER! WE ALWAYS DELIVER! WE ALWAYS DELIVER!") + desc = "A pocket-sized plastic slip with a button in the middle. \"[pick(descstrings)]\" is written on the back." + +/obj/item/pizzavoucher/attack_self(mob/user) + add_fingerprint(user) + if(!spent) + user.visible_message("[user] presses a button on [src]!") + desc = desc + " This one seems to be used-up." + spent = TRUE + if(special_delivery) + var/delivery = pick(prob(25);/obj/item/pizzabox/meat, + prob(25);/obj/item/pizzabox/margherita, + prob(25);/obj/item/pizzabox/vegetable, + prob(25);/obj/item/pizzabox/mushroom) + command_announcement.Announce("SPECIAL DELIVERY PIZZA ORDER #[rand(1000,9999)]-[rand(100,999)] HAS BEEN RECIEVED. SHIPMENT DISPATCHED VIA BALLISTIC SUPPLY POD FOR IMMEDIATE DELIVERY! THANK YOU AND ENJOY YOUR PIZZA!", "WE ALWAYS DELIVER!") + var/crash_x = user.x + var/crash_y = user.y + var/crash_z = user.z + spawn(rand(30, 75)) + new /datum/random_map/droppod/pizza(null, crash_x, crash_y, crash_z, automated = TRUE, supplied_drop = delivery) // Splat. + else + user.visible_message("A small bluespace rift opens just above your head and spits out a pizza box!") + new /obj/effect/falling_effect/pizza_delivery(user.loc) + else + to_chat(user, "The [src] is spent!") + +/obj/item/pizzavoucher/emag_act(var/remaining_charges, var/mob/user) + if(spent) + to_chat(user, "The [src] is spent!") + return + if(!special_delivery) + to_chat(user, "You activate the special delivery protocol on the [src]!") + special_delivery = TRUE + return 1 + else + to_chat(user, "The [src] is already in special delivery mode!") + + +/datum/random_map/droppod/pizza + placement_explosion_dev = 0 + placement_explosion_heavy = 1 + placement_explosion_light = 2 + placement_explosion_flash = 4 \ No newline at end of file diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm index e7e45a87916..4ee11fb8cb5 100644 --- a/code/game/objects/random/maintenance.dm +++ b/code/game/objects/random/maintenance.dm @@ -106,7 +106,8 @@ something, make sure it's not in one of the other lists.*/ prob(1);/obj/item/weapon/card/emag_broken, prob(2);/obj/item/device/camera, prob(3);/obj/item/device/pda, - prob(3);/obj/item/device/radio/headset) + prob(3);/obj/item/device/radio/headset, + prob(1);/obj/item/pizzavoucher) /obj/random/maintenance/security /*Maintenance loot list. This one is for around security areas*/ diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index 37fe77ef2d6..f7cedabdb3c 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -212,7 +212,8 @@ prob(1);/obj/item/weapon/spacecash/c100, prob(1);/obj/item/weapon/spacecash/c50, prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie, - prob(1);/obj/item/weapon/storage/box/cups) + prob(1);/obj/item/weapon/storage/box/cups, + prob(1);/obj/item/pizzavoucher) var/obj/item/I = new path() return I diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 62df1721365..4d346eda5d4 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/vorestation.dme b/vorestation.dme index cf94b1ca2a9..7746ce5e778 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1008,12 +1008,14 @@ #include "code\game\objects\items\contraband.dm" #include "code\game\objects\items\contraband_vr.dm" #include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\falling_object_vr.dm" #include "code\game\objects\items\glassjar.dm" #include "code\game\objects\items\godfigures.dm" #include "code\game\objects\items\gunbox.dm" #include "code\game\objects\items\gunbox_vr.dm" #include "code\game\objects\items\latexballoon.dm" #include "code\game\objects\items\paintkit.dm" +#include "code\game\objects\items\pizza_voucher_vr.dm" #include "code\game\objects\items\poi_items.dm" #include "code\game\objects\items\robobag.dm" #include "code\game\objects\items\shooting_range.dm"