diff --git a/code/datums/supplypacks/contraband_vr.dm b/code/datums/supplypacks/contraband_vr.dm index a70b380309..cf93f2598b 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 0000000000..3c8c6e39aa --- /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 0000000000..c7e75680e1 --- /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 e7e45a8791..4ee11fb8cb 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/ghost_pods/silicon_vr.dm b/code/game/objects/structures/ghost_pods/silicon_vr.dm index b836d3c5ed..865d678294 100644 --- a/code/game/objects/structures/ghost_pods/silicon_vr.dm +++ b/code/game/objects/structures/ghost_pods/silicon_vr.dm @@ -2,7 +2,7 @@ remains_active = TRUE /obj/structure/ghost_pod/manual/lost_drone/dogborg/create_occupant(var/mob/M) - var/response = alert(M, "What type of lost drone are you? Do note, that dogborgs may have experienced different type of corruption ((Potential for having vore-related laws))", "Drone Type", "Regular", "Dogborg") + var/response = alert(M, "What type of lost drone are you? Do note, that dogborgs may have experienced different type of corruption ((High potential for having vore-related laws))", "Drone Type", "Regular", "Dogborg") if(!(response == "Dogborg")) // No response somehow or Regular return ..() else diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index 4d88b066cd..007343f175 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -213,7 +213,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 @@ -244,7 +245,8 @@ prob(1);/obj/item/weapon/material/knife/tacknife, prob(1);/obj/item/weapon/storage/box/survival/space, prob(1);/obj/item/weapon/storage/secure/briefcase/trashmoney, - prob(1);/obj/item/weapon/reagent_containers/syringe/steroid) + prob(1);/obj/item/weapon/reagent_containers/syringe/steroid, + prob(1);/obj/item/seeds/gnomes) var/obj/item/I = new path() return I diff --git a/code/modules/events/drone_pod_vr.dm b/code/modules/events/drone_pod_vr.dm index 45ce01684b..6b61ec693b 100644 --- a/code/modules/events/drone_pod_vr.dm +++ b/code/modules/events/drone_pod_vr.dm @@ -1,10 +1,10 @@ /datum/event/drone_pod_drop - announceWhen = 1 var/turf/land_target = null var/attempt_amount = 10 /datum/event/drone_pod_drop/setup() startWhen = rand(8,15) + announceWhen = startWhen + 5 if(LAZYLEN(using_map.meteor_strike_areas)) var/turf/potential_target = null for(var/i=1, i <= attempt_amount, i++) @@ -28,4 +28,4 @@ if(!land_target) kill() - new /datum/random_map/droppod/supply(null, land_target.x-2, land_target.y-2, land_target.z, supplied_drops = list(/obj/structure/ghost_pod/manual/lost_drone)) \ No newline at end of file + new /datum/random_map/droppod/supply(null, land_target.x-2, land_target.y-2, land_target.z, supplied_drops = list(/obj/structure/ghost_pod/manual/lost_drone/dogborg)) \ No newline at end of file diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index f0f186e949..874d3dcb10 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -25,6 +25,7 @@ var/apply_color_to_mob = TRUE // Do we color the mob to match the plant? var/has_item_product // Item products. (Eggy) var/force_layer + var/harvest_sound = null //Vorestation edit - sound the plant makes when harvested // Making the assumption anything in HYDRO-ponics is capable of processing water, and nutrients commonly associated with it, leaving us with the below to be tweaked. var/list/beneficial_reagents // Reagents considered uniquely 'beneficial' by a plant. @@ -769,6 +770,10 @@ var/turf/T = get_turf(user) create_spores(T) + if(harvest_sound)//Vorestation edit + var/turf/M = get_turf(user) + playsound(M, harvest_sound, 50, 1, -1) + if(!force_amount && get_trait(TRAIT_YIELD) == 0 && !harvest_sample) if(istype(user)) user << "You fail to harvest anything useful." else diff --git a/code/modules/hydroponics/seed_datums_vr.dm b/code/modules/hydroponics/seed_datums_vr.dm index a39c18c44f..5fcf7c4432 100644 --- a/code/modules/hydroponics/seed_datums_vr.dm +++ b/code/modules/hydroponics/seed_datums_vr.dm @@ -39,3 +39,6 @@ set_trait(TRAIT_PRODUCT_ICON,"mushroom6") set_trait(TRAIT_PLANT_ICON,"tree") set_trait(TRAIT_PRODUCT_COLOUR,"#DADA00") + +/datum/seed/gnomes + harvest_sound = 'sound/items/hooh.ogg' \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm index e0b050a49b..048408773f 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm @@ -117,7 +117,7 @@ return // VOREStation Addition Start - if(isnum(src.client.player_age)) + if(config.use_age_restriction_for_jobs && isnum(src.client.player_age)) var/time_till_play = max(0, 3 - src.client.player_age) if(time_till_play) to_chat(usr, "You have not been playing on the server long enough to join as drone.") diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm index 18561f02e9..1af34a5ef6 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/lost_drone_vr.dm @@ -32,7 +32,7 @@ ..() laws = give_random_lawset_vore() -/mob/living/silicon/proc/give_random_lawset_vore() // Should be filled out with more vorish possibilities later +/mob/living/silicon/proc/give_random_lawset_vore() // Decide what kind of laws we want to draw from. var/law_class = pick( prob(25);"good", @@ -41,7 +41,7 @@ prob(15);"corrupted", prob(10);"bad") - var/vore_law = prob(50) // 1/2 chance of having vore-related laws + var/vore_law = prob(60) // 3/5 chance of having vore-related laws if(vore_law) switch(law_class) @@ -187,4 +187,4 @@ - return \ No newline at end of file + return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index d0d19369fc..9659d84844 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -3535,4 +3535,4 @@ taste_mult = 2 reagent_state = LIQUID nutriment_factor = 40 //very filling - color = "#d169b2" \ No newline at end of file + color = "#d169b2" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm index 0485b231e2..a18207b6e4 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm @@ -101,4 +101,12 @@ M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. if(M.species.gets_food_nutrition) if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein - M.nutrition += (alt_nutriment_factor * removed) \ No newline at end of file + M.nutrition += (alt_nutriment_factor * removed) + + + +/datum/reagent/nutriment/magicdust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) + ..() + playsound(M.loc, 'sound/items/hooh.ogg', 50, 1, -1) + if(prob(5)) + to_chat(M, "You feel like you've been gnomed...") \ No newline at end of file diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 62df172136..4d346eda5d 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/sound/items/hooh.ogg b/sound/items/hooh.ogg new file mode 100644 index 0000000000..aa707eeb5c Binary files /dev/null and b/sound/items/hooh.ogg differ diff --git a/vorestation.dme b/vorestation.dme index bea3e9e4b6..399aa2ebc3 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1026,6 +1026,7 @@ #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" @@ -1033,6 +1034,7 @@ #include "code\game\objects\items\gunbox_yw.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"