diff --git a/GainStation13/code/machinery/feeding_tube.dm b/GainStation13/code/machinery/feeding_tube.dm index 293e8f98..498b174c 100644 --- a/GainStation13/code/machinery/feeding_tube.dm +++ b/GainStation13/code/machinery/feeding_tube.dm @@ -1,7 +1,7 @@ /obj/machinery/iv_drip/feeding_tube name = "\improper Feeding tube" desc = "Originally meant to automatically feed cattle and farm animals, this model was repurposed for more... personal usage." - icon = 'icons/obj/feeding_tube.dmi' + icon = 'GainStation13/icons/obj/feeding_tube.dmi' icon_state = "feeding_tube" var/static/list/food_containers = typecacheof(list(/obj/item/reagent_containers/food, /obj/item/reagent_containers/glass,)) @@ -23,7 +23,7 @@ else add_overlay("beakeridle") if(beaker.reagents.total_volume) - var/mutable_appearance/filling_overlay = mutable_appearance('icons/obj/feeding_tube.dmi', "reagent") + var/mutable_appearance/filling_overlay = mutable_appearance('GainStation13/icons/obj/feeding_tube.dmi', "reagent") var/percent = round((beaker.reagents.total_volume / beaker.volume) * 100) switch(percent) diff --git a/GainStation13/code/modules/food_and_drinks/food.dm b/GainStation13/code/modules/food_and_drinks/food.dm index 07d828dd..824cb2c7 100644 --- a/GainStation13/code/modules/food_and_drinks/food.dm +++ b/GainStation13/code/modules/food_and_drinks/food.dm @@ -8,3 +8,131 @@ tastes = list("refried beans","grease" = 1) foodtype = MEAT price = 3 + +//these have been ported from CHOMPstation / Virgo +/obj/item/reagent_containers/food/snacks/doner_kebab + name = "doner kebab" + icon = 'icons/obj/food/ported_meals.dmi' + desc = "A delicious sandwich-like food from ancient Earth. The meat is typically cooked on a vertical rotisserie." + icon_state = "doner_kebab" + trash = null + list_reagents = list(/datum/reagent/consumable/nutriment = 10) + filling_color = "#93684d" + tastes = list("thinly sliced meat","meat" = 1) + foodtype = GRAIN | VEGETABLES | MEAT | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/lasagna + name = "lasagna" + desc = "Meaty, tomato-y, and ready to eat-y. Favorite of cats." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "lasagna" + list_reagents = list(/datum/reagent/consumable/nutriment = 10) + filling_color = "#872020" + tastes = list("italian cuisine" = 1) + foodtype = GRAIN | VEGETABLES | MEAT + +/obj/item/reagent_containers/food/snacks/corndog + name = "corn dog" + desc = "A cornbread covered sausage deepfried in oil." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "corndog" + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + filling_color = "#df9745" + tastes = list("corn batter", "sausage" = 1) + foodtype = GRAIN | MEAT | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/turkey + name = "turkey" + desc = "Tastes like chicken. It can be sliced!" + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "turkey" + slice_path = /obj/item/reagent_containers/food/snacks/turkey_leg + slices_num = 4 + list_reagents = list(/datum/reagent/consumable/nutriment = 15) + filling_color = "#d4864b" + tastes = list("turkey" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/turkey_leg + name = "turkey leg" + desc = "Tastes like chicken." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "turkey_slice" + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + filling_color = "#ae6941" + tastes = list("turkey" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/brownies + name = "brownies" + desc = "Halfway to fudge, or halfway to cake? Who cares!" + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "brownies" + slice_path = /obj/item/reagent_containers/food/snacks/brownies_slice + slices_num = 6 + list_reagents = list(/datum/reagent/consumable/nutriment = 30) + filling_color = "#392f27" + tastes = list("chocolate" = 1) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/brownies_slice + name = "brownie" + desc = "a dense, decadent chocolate brownie." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "browniesslice" + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + filling_color = "#392f27" + tastes = list("chocolate" = 1) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/brownies_cosmic + name = "cosmic brownies" + desc = "The power of cosmos likes within your hand." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "cosmicbrownies" + slice_path = /obj/item/reagent_containers/food/snacks/brownies_slice_cosmic + slices_num = 6 + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/medicine/omnizine = 5) + filling_color = "#392f27" + tastes = list("chocolate" = 1) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/brownies_slice_cosmic + name = "cosmic brownie" + desc = "a dense, decadent and fun-looking chocolate brownie." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "cosmicbrownieslice" + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/omnizine = 1) + filling_color = "#392f27" + tastes = list("chocolate" = 1) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/bacon_and_eggs + name = "bacon and eggs" + desc = "A staple of every breakfast." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "bacon_and_eggs" + list_reagents = list(/datum/reagent/consumable/nutriment = 8) + filling_color = "#e9e6e3" + tastes = list("eggs", "bacon" = 1) + foodtype = BREAKFAST | MEAT + +/obj/item/reagent_containers/food/snacks/eggmuffin + name = "egg muffin" + desc = "A staple of every breakfast." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "eggmuffin" + list_reagents = list(/datum/reagent/consumable/nutriment = 8) + filling_color = "#e9e6e3" + tastes = list("eggs", "breakfast" = 1) + foodtype = BREAKFAST | MEAT + +/obj/item/reagent_containers/food/snacks/cinammonbun + name = "cinammon bun" + desc = "Careful not to have it stolen." + icon = 'icons/obj/food/ported_meals.dmi' + icon_state = "cinammonbun" + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + filling_color = "#e9e6e3" + tastes = list("eggs", "breakfast" = 1) + foodtype = GRAIN | SUGAR diff --git a/GainStation13/code/modules/food_and_drinks/recipes/recipes_ported.dm b/GainStation13/code/modules/food_and_drinks/recipes/recipes_ported.dm new file mode 100644 index 00000000..22f2e2c2 --- /dev/null +++ b/GainStation13/code/modules/food_and_drinks/recipes/recipes_ported.dm @@ -0,0 +1,113 @@ +//this is a recipe file for just random shit we've ported from other servers +//you can call me lazy if you'd like but I didn't really feel like making 10 different folders and files just to port a couple simple meals + +//writing down recipe categories, should be handy +//CAT_FOOD,CAT_BREAD,CAT_BURGER,CAT_CAKE,CAT_EGG,CAT_MEAT,CAT_MISCFOOD,CAT_PASTRY,CAT_PIE,CAT_PIZZ,CAT_SALAD,CAT_SANDWICH,CAT_SOUP,CAT_SPAGHETTI,CAT_FISH,CAT_ICE + + +/datum/crafting_recipe/food/doner + name = "Doner Kebab" + reqs = list( + /obj/item/reagent_containers/food/snacks/bun = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 1, + /obj/item/reagent_containers/food/snacks/grown/tomato = 1 + ) + result = /obj/item/reagent_containers/food/snacks/doner_kebab + subcategory = CAT_BURGER + + +/datum/crafting_recipe/food/lasagna + name = "Lasagna" + reqs = list( + /obj/item/reagent_containers/food/snacks/boiledspaghetti = 1, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 1, + /obj/item/reagent_containers/food/snacks/grown/tomato = 1, + /obj/item/reagent_containers/food/snacks/cheesewedge = 1 + ) + result = /obj/item/reagent_containers/food/snacks/lasagna + subcategory = CAT_SPAGHETTI + + +/datum/crafting_recipe/food/corndog + name = "Corndog" + reqs = list( + /datum/reagent/consumable/flour = 5, + /obj/item/reagent_containers/food/snacks/sausage = 1, + /datum/reagent/consumable/cooking_oil = 5 + ) + result = /obj/item/reagent_containers/food/snacks/corndog + subcategory = CAT_MEAT + + +/datum/crafting_recipe/food/turkey + name = "Whole Turkey" + reqs = list( + /obj/item/reagent_containers/food/snacks/meat/slab/chicken = 2, + /obj/item/reagent_containers/food/snacks/sausage = 1, + /obj/item/reagent_containers/food/snacks/grown/potato = 2, + ) + result = /obj/item/reagent_containers/food/snacks/turkey + subcategory = CAT_MEAT + + +/datum/crafting_recipe/food/brownies + name = "Brownies" + reqs = list( + /datum/reagent/consumable/flour = 5, + /datum/reagent/consumable/ethanol/creme_de_cacao = 10, + /datum/reagent/consumable/sugar = 5, + /obj/item/reagent_containers/food/snacks/butter = 2 + ) + result = /obj/item/reagent_containers/food/snacks/brownies + subcategory = CAT_CAKE + + +/datum/crafting_recipe/food/cosmic_brownies + name = "Cosmic Brownies" + reqs = list( + /obj/item/reagent_containers/food/snacks/brownies = 1, + /datum/reagent/consumable/sprinkles = 10 + ) + result = /obj/item/reagent_containers/food/snacks/brownies_cosmic + subcategory = CAT_CAKE + + +/datum/crafting_recipe/food/cosmic_brownies + name = "Cosmic Brownies" + reqs = list( + /obj/item/reagent_containers/food/snacks/brownies = 1, + /datum/reagent/consumable/sprinkles = 10 + ) + result = /obj/item/reagent_containers/food/snacks/brownies_cosmic + subcategory = CAT_CAKE + + +/datum/crafting_recipe/food/bacon_and_eggs + name = "Bacon and Eggs" + reqs = list( + /obj/item/reagent_containers/food/snacks/friedegg = 2, + /obj/item/reagent_containers/food/snacks/meat/bacon = 1 + ) + result = /obj/item/reagent_containers/food/snacks/bacon_and_eggs + subcategory = CAT_EGG + + +/datum/crafting_recipe/food/egg_muffin + name = "Egg muffin" + reqs = list( + /obj/item/reagent_containers/food/snacks/friedegg = 1, + /obj/item/reagent_containers/food/snacks/muffin = 1 + ) + result = /obj/item/reagent_containers/food/snacks/eggmuffin + subcategory = CAT_EGG + + +/datum/crafting_recipe/food/cinnamon_roll + name = "Cinnamon roll" + reqs = list( + /datum/reagent/consumable/sugar = 3, + /datum/reagent/consumable/vanilla = 2, + /obj/item/reagent_containers/food/snacks/pastrybase = 1 + ) + result = /obj/item/reagent_containers/food/snacks/cinammonbun + subcategory = CAT_PASTRY diff --git a/GainStation13/code/modules/food_and_drinks/recipes_bigpizza.dm b/GainStation13/code/modules/food_and_drinks/recipes_bigpizza.dm new file mode 100644 index 00000000..85635d8a --- /dev/null +++ b/GainStation13/code/modules/food_and_drinks/recipes_bigpizza.dm @@ -0,0 +1,93 @@ + +// see code/module/crafting/table.dm + +////////////////////////////////////////////////PIZZA!!!//////////////////////////////////////////////// + +//GS13 - this has been ported from CHOMP/Virgo, but I've decided to adjust the recipe a bit +// there's both the recipe and the defines for the pizza itself here + +/obj/item/reagent_containers/food/snacks/pizza/framewrecker + name = "Framewrecker Pizza" + desc = "You feel your arteries clogging just by merely looking at this monster. Is this even real, or a mere hallucination?" + icon = 'icons/obj/food/food64x64.dmi' + icon_state = "theonepizza" + pixel_x = -16 + pixel_y = -16 + inhand_x_dimension = 64 + inhand_y_dimension = 64 + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 200, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 20) + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "overwhelming surge of calories" = 10) + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD | ANTITOXIC + + var/slicelist = list(/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/mushroom, + /obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/veggie, + /obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/cheese, + /obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/pineapple, + /obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/meat) + + + +//slices +/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker + name = "Framewrecker Pizza Slice" + desc = "This mere slice is the size of pizza on its own!" + icon = 'icons/obj/food/ported_meals.dmi' + list_reagents = list(/datum/reagent/consumable/nutriment = 60) + icon_state = "big_mushroom_slice" + filling_color = "#FFA500" + +/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/mushroom + name = "Giant mushroom pizza slice" + icon_state = "big_mushroom_slice" + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushrooms" = 1, "delight" = 5) + foodtype = GRAIN | VEGETABLES | DAIRY | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/veggie + name = "Giant veggie pizza slice" + icon_state = "big_veggie_slice" + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "veggies" = 1, "delight" = 5) + foodtype = GRAIN | VEGETABLES | DAIRY | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/pineapple + name = "Giant pineapple pizza slice" + icon_state = "big_pineapple_slice" + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "ham" = 1, "pineapple" = 5) + foodtype = GRAIN | VEGETABLES | DAIRY | JUNKFOOD | FRUIT +/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/meat + name = "Giant meat pizza slice" + icon_state = "big_veggie_slice" + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "delight" = 5) + foodtype = GRAIN | VEGETABLES | DAIRY | JUNKFOOD | MEAT +/obj/item/reagent_containers/food/snacks/pizzaslice/framewrecker/cheese + name = "Giant cheese pizza slice" + icon_state = "big_cheese_slice" + tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "delight" = 5) + foodtype = GRAIN | VEGETABLES | DAIRY | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/pizza/framewrecker/attackby(var/obj/item/weapon/W, var/mob/living/user) + if(istype(W,/obj/item/kitchen/knife)) + user.visible_message("\The [user] starts to slowly cut through The One Pizza.", "You start to slowly cut through The One Pizza.") + if(!src) + return // We got disappeared already + user.visible_message("\The [user] successfully cuts The One Pizza.", "You successfully cut The One Pizza.") + for(var/slicetype in slicelist) + new slicetype(src.loc) + qdel(src) + + + +// recipe + +/datum/crafting_recipe/food/framewrecker_pizza + name = "Framewrecker Pizza" + reqs = list( + /obj/item/reagent_containers/food/snacks/pizzabread = 4, + /obj/item/reagent_containers/food/snacks/meat/cutlet = 4, + /obj/item/reagent_containers/food/snacks/cheesewedge = 8, + /obj/item/reagent_containers/food/snacks/grown/tomato = 8, + /obj/item/reagent_containers/food/snacks/pineappleslice = 2, + /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle = 2 + ) + result = /obj/item/reagent_containers/food/snacks/pizza/framewrecker + subcategory = CAT_PIZZA diff --git a/icons/obj/feeding_tube.dmi b/GainStation13/icons/obj/feeding_tube.dmi similarity index 100% rename from icons/obj/feeding_tube.dmi rename to GainStation13/icons/obj/feeding_tube.dmi diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 4351a82c..f45755bb 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -1,5 +1,4 @@ - /atom/movable var/can_buckle = 0 var/buckle_lying = -1 //bed-like behaviour, forces mob.lying = buckle_lying if != -1 @@ -108,18 +107,35 @@ /atom/movable/proc/post_unbuckle_mob(mob/living/M) //Wrapper procs that handle sanity and user feedback -/atom/movable/proc/user_buckle_mob(mob/living/M, mob/user, check_loc = TRUE) +/atom/movable/proc/user_buckle_mob(mob/living/carbon/M, mob/user, check_loc = TRUE) if(!in_range(user, src) || !isturf(user.loc) || user.incapacitated() || M.anchored) return FALSE add_fingerprint(user) . = buckle_mob(M, check_loc = check_loc) if(.) - if(M == user) + if (M == user && M.fatness >= 3440 && istype(src, /obj/structure/chair)) //GS13 stuff - chair breaking mechanics M.visible_message(\ - "[M] buckles [M.p_them()]self to [src].",\ - "You buckle yourself to [src].",\ + "[M] slowly buckles [M.p_them()]self to [src]. their movements slow and deliberate. As [M] settles into the seat, a sudden, violent crash echoes through the air. [M]'s massive weight mercilessly crushes the poor [src], reducing it to pieces! ",\ + "You slowly try to buckle yourself to [src]. But it breaks under your massive ass!",\ "You hear metal clanking.") + playsound(loc, 'sound/effects/snap.ogg', 50, 1) + playsound(loc, 'sound/effects/woodhit.ogg', 50, 1) + playsound(loc, 'sound/effects/bodyfall4.ogg', 50, 1) + // Destroy the src object + src.Destroy() + else if(M == user && M.fatness >= 1840) + M.visible_message(\ + "[M] buckles [M.p_them()]self to the creaking [src]. The [src] protests audibly under the weight as [M]'s ample form settles onto its surface. .",\ + "You buckle yourself to [src].The [src] is cracking and is barely able to hold your weight ",\ + "You hear metal clanking.") + playsound(loc, 'sound/effects/crossed.ogg', 50, 1) + else if(M == user && M.fatness >= 840) + M.visible_message(\ + "[M] buckles [M.p_them()]self to the creaking [src] as their weight spreads all over it.",\ + "You buckle yourself to [src].The [src] is creaking as you shuffle a bit ",\ + "You hear metal clanking.") + playsound(loc, 'sound/effects/crossed.ogg', 50, 1) else M.visible_message(\ "[user] buckles [M] to [src]!",\ diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 23db6cb5..919619c8 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -1050,6 +1050,12 @@ item_state = "kinichi" attack_verb = list("hissed","squished", "hugged") +/obj/item/toy/plush/lgo + desc = "An attempt to market one of cleaning machines from the local market, in the form of a purchasable plushie." + icon_state = "lgo" + item_state = "lgo" + attack_verb = list("gronkled","beeped", "brushed") + /obj/item/toy/plush/mammal/fox icon_state = "fox" item_state = "fox" diff --git a/code/modules/antagonists/valentines/heartbreaker.dm b/code/modules/antagonists/valentines/heartbreaker.dm index 4f228910..2433c916 100644 --- a/code/modules/antagonists/valentines/heartbreaker.dm +++ b/code/modules/antagonists/valentines/heartbreaker.dm @@ -1,20 +1,22 @@ -/datum/antagonist/heartbreaker - name = "heartbreaker" - roundend_category = "valentines" - show_in_antagpanel = FALSE - show_name_in_check_antagonists = TRUE +// /datum/antagonist/heartbreaker +// name = "heartbreaker" +// roundend_category = "valentines" +// show_in_antagpanel = FALSE +// show_name_in_check_antagonists = TRUE -/datum/antagonist/heartbreaker/proc/forge_objectives() - var/datum/objective/martyr/normiesgetout = new - normiesgetout.owner = owner - objectives += normiesgetout - owner.objectives += objectives +// /datum/antagonist/heartbreaker/proc/forge_objectives() +// var/datum/objective/martyr/normiesgetout = new +// normiesgetout.owner = owner +// objectives += normiesgetout +// owner.objectives += objectives -/datum/antagonist/heartbreaker/on_gain() - forge_objectives() - . = ..() +// /datum/antagonist/heartbreaker/on_gain() +// forge_objectives() +// . = ..() -/datum/antagonist/heartbreaker/greet() - to_chat(owner, "You didn't get a date! They're all having fun without you! you'll show them though...") - owner.announce_objectives() \ No newline at end of file +// /datum/antagonist/heartbreaker/greet() +// to_chat(owner, "You didn't get a date! They're all having fun without you! you'll show them though...") +// owner.announce_objectives() + +//GS13 - commented out cuz it's kinda weird and too prefbreaky diff --git a/code/modules/antagonists/valentines/valentine.dm b/code/modules/antagonists/valentines/valentine.dm index 21e54374..437a258c 100644 --- a/code/modules/antagonists/valentines/valentine.dm +++ b/code/modules/antagonists/valentines/valentine.dm @@ -1,63 +1,65 @@ -/datum/antagonist/valentine - name = "valentine" - roundend_category = "valentines" //there's going to be a ton of them so put them in separate category - show_in_antagpanel = FALSE - var/datum/mind/date +// /datum/antagonist/valentine +// name = "valentine" +// roundend_category = "valentines" //there's going to be a ton of them so put them in separate category +// show_in_antagpanel = FALSE +// var/datum/mind/date -/datum/antagonist/valentine/proc/forge_objectives() - var/datum/objective/protect/protect_objective = new /datum/objective/protect - protect_objective.owner = owner - protect_objective.target = date - if(!ishuman(date.current)) - protect_objective.human_check = FALSE - protect_objective.explanation_text = "Protect [date.name], your date." - objectives += protect_objective - owner.objectives += objectives +// /datum/antagonist/valentine/proc/forge_objectives() +// var/datum/objective/protect/protect_objective = new /datum/objective/protect +// protect_objective.owner = owner +// protect_objective.target = date +// if(!ishuman(date.current)) +// protect_objective.human_check = FALSE +// protect_objective.explanation_text = "Protect [date.name], your date." +// objectives += protect_objective +// owner.objectives += objectives -/datum/antagonist/valentine/on_gain() - forge_objectives() - if(isliving(owner)) - var/mob/living/L = owner - L.apply_status_effect(STATUS_EFFECT_INLOVE, date) - . = ..() +// /datum/antagonist/valentine/on_gain() +// forge_objectives() +// if(isliving(owner)) +// var/mob/living/L = owner +// L.apply_status_effect(STATUS_EFFECT_INLOVE, date) +// . = ..() -/datum/antagonist/valentine/on_removal() - . = ..() - if(isliving(owner)) - var/mob/living/L = owner - L.remove_status_effect(STATUS_EFFECT_INLOVE) +// /datum/antagonist/valentine/on_removal() +// . = ..() +// if(isliving(owner)) +// var/mob/living/L = owner +// L.remove_status_effect(STATUS_EFFECT_INLOVE) -/datum/antagonist/valentine/greet() - to_chat(owner, "You're on a date with [date.name]! Protect [date.p_them()] at all costs. This takes priority over all other loyalties.") +// /datum/antagonist/valentine/greet() +// to_chat(owner, "You're on a date with [date.name]! Protect [date.p_them()] at all costs. This takes priority over all other loyalties.") -//Squashed up a bit -/datum/antagonist/valentine/roundend_report() - var/objectives_complete = TRUE - if(owner.objectives.len) - for(var/datum/objective/objective in owner.objectives) - if(!objective.check_completion()) - objectives_complete = FALSE - break +// //Squashed up a bit +// /datum/antagonist/valentine/roundend_report() +// var/objectives_complete = TRUE +// if(owner.objectives.len) +// for(var/datum/objective/objective in owner.objectives) +// if(!objective.check_completion()) +// objectives_complete = FALSE +// break - if(objectives_complete) - return "[owner.name] protected [owner.p_their()] date" - else - return "[owner.name] date failed!" +// if(objectives_complete) +// return "[owner.name] protected [owner.p_their()] date" +// else +// return "[owner.name] date failed!" -//Just so it's distinct, basically. -/datum/antagonist/valentine/chem/greet() - to_chat(owner, "You're in love with [date.name]! Protect [date.p_them()] at all costs. This takes priority over all other loyalties.") +// //Just so it's distinct, basically. +// /datum/antagonist/valentine/chem/greet() +// to_chat(owner, "You're in love with [date.name]! Protect [date.p_them()] at all costs. This takes priority over all other loyalties.") -/datum/antagonist/valentine/chem/roundend_report() - var/objectives_complete = TRUE - if(owner.objectives.len) - for(var/datum/objective/objective in owner.objectives) - if(!objective.check_completion()) - objectives_complete = FALSE - break +// /datum/antagonist/valentine/chem/roundend_report() +// var/objectives_complete = TRUE +// if(owner.objectives.len) +// for(var/datum/objective/objective in owner.objectives) +// if(!objective.check_completion()) +// objectives_complete = FALSE +// break - if(objectives_complete) - return "[owner.name] protected [owner.p_their()] love: [date.name]! What a cutie!" - else - return "[owner.name] date failed!" +// if(objectives_complete) +// return "[owner.name] protected [owner.p_their()] love: [date.name]! What a cutie!" +// else +// return "[owner.name] date failed!" + +//GS13 - commented out cuz it's kinda weird and too prefbreaky diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index ac0a7605..ce24646f 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -4,56 +4,58 @@ // valentine / candy heart distribution // -/datum/round_event_control/valentines - name = "Valentines!" - holidayID = VALENTINES - typepath = /datum/round_event/valentines - weight = -1 //forces it to be called, regardless of weight - max_occurrences = 1 - earliest_start = 0 MINUTES +// /datum/round_event_control/valentines +// name = "Valentines!" +// holidayID = VALENTINES +// typepath = /datum/round_event/valentines +// weight = -1 //forces it to be called, regardless of weight +// max_occurrences = 1 +// earliest_start = 0 MINUTES -/datum/round_event/valentines/start() - ..() - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - H.put_in_hands(new /obj/item/valentine) - var/obj/item/storage/backpack/b = locate() in H.contents - new /obj/item/reagent_containers/food/snacks/candyheart(b) - new /obj/item/storage/fancy/heart_box(b) +// /datum/round_event/valentines/start() +// ..() +// for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) +// H.put_in_hands(new /obj/item/valentine) +// var/obj/item/storage/backpack/b = locate() in H.contents +// new /obj/item/reagent_containers/food/snacks/candyheart(b) +// new /obj/item/storage/fancy/heart_box(b) - var/list/valentines = list() - for(var/mob/living/M in GLOB.player_list) - if(!M.stat && M.client && M.mind) - valentines |= M +// var/list/valentines = list() +// for(var/mob/living/M in GLOB.player_list) +// if(!M.stat && M.client && M.mind) +// valentines |= M - while(valentines.len) - var/mob/living/L = pick_n_take(valentines) - if(valentines.len) - var/mob/living/date = pick_n_take(valentines) +// while(valentines.len) +// var/mob/living/L = pick_n_take(valentines) +// if(valentines.len) +// var/mob/living/date = pick_n_take(valentines) - forge_valentines_objective(L, date) - forge_valentines_objective(date, L) +// forge_valentines_objective(L, date) +// forge_valentines_objective(date, L) - if(valentines.len && prob(4)) - var/mob/living/notgoodenough = pick_n_take(valentines) - forge_valentines_objective(notgoodenough, date) - else - L.mind.add_antag_datum(/datum/antagonist/heartbreaker) +// if(valentines.len && prob(4)) +// var/mob/living/notgoodenough = pick_n_take(valentines) +// forge_valentines_objective(notgoodenough, date) +// else +// L.mind.add_antag_datum(/datum/antagonist/heartbreaker) -/proc/forge_valentines_objective(mob/living/lover,mob/living/date,var/chemLove = FALSE) - lover.mind.special_role = "valentine" - if (chemLove == TRUE) - var/datum/antagonist/valentine/chem/V = new //Changes text and EOG check basically. - V.date = date.mind - lover.mind.add_antag_datum(V) - else - var/datum/antagonist/valentine/V = new - V.date = date.mind - lover.mind.add_antag_datum(V) //These really should be teams but i can't be assed to incorporate third wheels right now +// /proc/forge_valentines_objective(mob/living/lover,mob/living/date,var/chemLove = FALSE) +// lover.mind.special_role = "valentine" +// if (chemLove == TRUE) +// var/datum/antagonist/valentine/chem/V = new //Changes text and EOG check basically. +// V.date = date.mind +// lover.mind.add_antag_datum(V) +// else +// var/datum/antagonist/valentine/V = new +// V.date = date.mind +// lover.mind.add_antag_datum(V) //These really should be teams but i can't be assed to incorporate third wheels right now -/datum/round_event/valentines/announce(fake) - priority_announce("It's Valentine's Day! Give a valentine to that special someone!") +// /datum/round_event/valentines/announce(fake) +// priority_announce("It's Valentine's Day! Give a valentine to that special someone!") + +//GS13 - commented out cuz it's kinda weird and too prefbreaky /obj/item/valentine name = "valentine" diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index d8cc92e1..4ffd0495 100644 Binary files a/icons/obj/crates.dmi and b/icons/obj/crates.dmi differ diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi index 7ce0cd49..d146c6eb 100644 Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index 76756e6c..940cdb4a 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/icons/obj/food/food64x64.dmi b/icons/obj/food/food64x64.dmi new file mode 100644 index 00000000..a575437e Binary files /dev/null and b/icons/obj/food/food64x64.dmi differ diff --git a/icons/obj/food/piecake.dmi b/icons/obj/food/piecake.dmi index 378bd079..9f0a1e11 100644 Binary files a/icons/obj/food/piecake.dmi and b/icons/obj/food/piecake.dmi differ diff --git a/icons/obj/food/ported_meals.dmi b/icons/obj/food/ported_meals.dmi new file mode 100644 index 00000000..063a2d5e Binary files /dev/null and b/icons/obj/food/ported_meals.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index eb7825ec..105e759e 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/plushes.dmi b/icons/obj/plushes.dmi index 95518935..7fc77ad4 100644 Binary files a/icons/obj/plushes.dmi and b/icons/obj/plushes.dmi differ diff --git a/icons/obj/ported/decor.dmi b/icons/obj/ported/decor.dmi new file mode 100644 index 00000000..48bf2d67 Binary files /dev/null and b/icons/obj/ported/decor.dmi differ diff --git a/icons/obj/ported/decor32x64.dmi b/icons/obj/ported/decor32x64.dmi new file mode 100644 index 00000000..9ee71374 Binary files /dev/null and b/icons/obj/ported/decor32x64.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index d34a17ed..e4b7fb34 100644 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index b9415d3e..69014109 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -225,3 +225,24 @@ datum/gear/lyricalpawsring /obj/item/crowbar/bronze/glaug name = "Milwaukee Pocket Crowbar" desc = "Much more expensive. Still serves the same function." + + +//metha rossi you fat hog + +/datum/gear/wgspell_add + name = "Weight Gain Spellbook" + category = SLOT_IN_BACKPACK + path = /obj/item/book/granter/spell/fattening + ckeywhitelist = list("sonoida", "themrsky") + +/datum/gear/wgspell_transfer + name = "Weight Transfer Spellbook" + category = SLOT_IN_BACKPACK + path = /obj/item/book/granter/spell/fattening/transfer + ckeywhitelist = list("sonoida", "themrsky") + +/datum/gear/wgspell_take + name = "Weight Steal Spellbook" + category = SLOT_IN_BACKPACK + path = /obj/effect/proc_holder/spell/targeted/touch/add_weight/steal + ckeywhitelist = list("sonoida", "themrsky") diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index e8f3b78f..7de30e71 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -342,7 +342,7 @@ Creating a chem with a low purity will make you permanently fall in love with so Lover.mind.store_memory("You are in love with [Love].") Lover.faction |= "[REF(Love)]" Lover.apply_status_effect(STATUS_EFFECT_INLOVE, Love) - forge_valentines_objective(Lover, Love, TRUE) + // forge_valentines_objective(Lover, Love, TRUE) SSblackbox.record_feedback("tally", "fermi_chem", 1, "Times people have become infatuated.") log_game("FERMICHEM: [Lover] ckey: [Lover.key] has been chemically made to fall for [Love] ckey: [Love.key]") return diff --git a/strings/tips.txt b/strings/tips.txt index ad66cd13..8effc50d 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -19,7 +19,6 @@ Maintenance is full of equipment that is randomized every round. Look around and Some roles cannot be antagonists by default, but antag selection is decided first. For instance, you can set Security Officer to High without affecting your chances of becoming an antag -- the game will just select a different role. There are many places around the station to hide contraband. A few for starters: linen boxes, toilet cisterns, body bags. Experiment to find more! On all maps, you can use a machine in the vault to deposit space cash for cargo points. Otherwise, use it to steal the station's cash and get out before the alarm goes off. -As the Captain, you are one of the highest priority targets on the station. Everything from revolutions, to nuclear operatives, to traitors that need to rob you of your unique lasgun or your life are things to worry about. As the Captain, always take the nuclear disk and pinpointer with you every shift. It's a good idea to give one of these to another head you can trust with keeping it safe, such as the Head of Security. As the Captain, you have absolute access and control over the station, but this does not mean that being a horrible person won't result in mutiny and a ban. As the Captain, you have a fancy pen that can be used as a holdout dagger or even as a scalpel in surgery! @@ -42,13 +41,12 @@ As a Chemist, some chemicals can only be synthesized by heating up the contents As a Chemist, you will be expected to supply crew with certain chemicals. For example, clonexadone and mannitol for the cryo tubes, unstable mutagen and saltpetre for botany as well as healing pills and patches for the front desk. As a Chemist, you can make 100u bottles from plastic sheets. The ChemMaster can produce infinite 30u glass bottles as well. As a Geneticist, you can eject someone from cloning early by clicking on the cloner pod with your ID. Note that they will suffer more genetic damage and may lose vital organs from this. -As a Geneticist, becoming a hulk makes you capable of dealing high melee damage, stunlocking people, and punching through walls. However, you can't fire guns, will lose your hulk status if you take too much damage, and are not considered a human by the AI while you are a hulk. As the Virologist, your viruses can range from healing powers so great that you can heal out of critical status, or diseases so dangerous they can kill the entire crew with airborne spontaneous combustion. Experiment! As the Virologist, you only require small amounts of vaccine to heal a sick patient. Work with the Chemist to distribute your cures more efficiently. As the Research Director, you can take AIs out of their cores by loading them into an intelliCard, and then from there into an AI system integrity restorer computer to revive and/or repair them. As the Research Director, you can lock down cyborgs instead of blowing them up. Then you can have their laws reset or if that doesn't work, safely dismantled. As the Research Director, you can upgrade your modular console with better computer parts to speed up its functions. This can be useful when using the AI system integrity restorer. -As the Research Director, your console's NTnet monitoring tool can be used to retrieve airlock passkeys, provided that someone used a door remote. +As the Research Director, your console's GATOnet monitoring tool can be used to retrieve airlock passkeys, provided that someone used a door remote. As a Scientist, you can use the mutation toxin obtained from green slimes to turn yourself into a jelly mutant. Each subspecies has unique features - for example telepathic powers, duplicating bodies or integrating slime extracts! As a Scientist, you can maximize the number of uses you get out of a slime by feeding it slime steroid, created from purple slimes, while alive. You can then apply extract enhancer, created from cerulean slimes, on each extract. As a Scientist, you can disable anomalies by scanning them with an analyzer, then send a signal on the frequency it gives you with a remote signalling device. This will leave behind an anomaly core, which can be used to construct a Phazon mech, or be used in the destructive analyzer for a 10,000 point bonus! @@ -101,7 +99,6 @@ As an Atmospheric Technician, your ATMOS holofan projector blocks gases while al As an Atmospheric Technician, burning a plasma/oxygen mix inside the incinerator will not only produce power, but also gases such as tritium and water vapor. As an Atmospheric Technician, you can change the layer of a pipe by clicking with it on a wrenched pipe or other atmos component of the desired layer. As an Atmospheric Technician, you can take a few cans worth of N2/N2O and cool it down at local freezers. This is a good idea when dealing with (or preparing for) a supermatter meltdown. -As the Head of Security, you are expected to coordinate your security force to handle any threat that comes to the station. Sometimes it means making use of the armory to handle a blob, sometimes it means being ruthless during a revolution or cult. As the Head of Security, you can call for executions or forced cyborgization, but may require the Captain's approval. As the Head of Security, don't let the power go to your head. You may have high access, great equipment, and a miniature army at your side, but being a terrible person without a good reason is grounds for banning. As the Warden, your duty is to be the watchdog of the brig and handler of prisoners when little is happening, and to hand out equipment and weapons to the security officers when a crisis strikes. @@ -117,12 +114,9 @@ As the Warden, chemical implants can be loaded with a cocktail of healing or com As the Warden, tracker implants can be used on sec officers. Doing this will let you be able to message them when telecoms are out, or when you suspect coms are compromised. This is also good against rogue AIs as the prisoner tracker doesn't leave logs or alarms for the AI. As a Security Officer, remember that correlation does not equal causation. Someone may have just been at the wrong place at the wrong time! As a Security Officer, remember that your belt can hold more then one stun baton. -As a Security Officer, remember harm battoning someone in the head can deconvert them form a being a rev! This sadly doesn't work against the cult, nor does this protect them from getting reconverted. As a Security Officer, remember that you can attach a sec-lite to your taser or your helmet! As a Security Officer, communicate and coordinate with your fellow officers using the security channel (:s) to avoid confusion. -As a Security Officer, your sechuds or HUDsunglasses can not only see crewmates' job assignments and criminal status, but also if they are mindshield implanted. Use this to your advantage in a revolution to definitively tell who is on your side! -As a Security Officer, mindshield implants can only prevent someone from being turned into a cultist: unlike revolutionaries, it will not de-cult them if they have already been converted. -As a Security Officer, examining someone while wearing sechuds or HUDsunglasses will let you set their arrest level, which will cause Beepsky and other security bots to chase after them. +As a Security Officer, your sechuds or HUDsunglasses can not only see crewmates' job assignments and criminal status, but also if they are mindshield implanted. Use this to your advantage in a revolution to definitively tell who is on your side!As a Security Officer, examining someone while wearing sechuds or HUDsunglasses will let you set their arrest level, which will cause Beepsky and other security bots to chase after them. As a Security Officer, you can take out the power cell on your baton to replace it with a better or fully charged one. Just use a screwdriver on your baton to remove the old cell As a Security Officer, you can place riot shotguns on your armor, this even works with winter sec coats! As the Detective, people leave fingerprints everywhere and on everything. With the exception of white latex, gloves will hide them. All is not lost, however, as gloves leave fibers specific to their kind such as black or nitrile, pointing to a general department. @@ -141,7 +135,6 @@ As the Clown, your Holy Grail is the mineral bananium, which can be given to the As the Clown, you can use your stamp on a sheet of cardboard as the first step of making a honkbot. Fun for the whole crew! As the Chaplain, your null rod has a lot of functions: it can convert water into holy water, which if spread on the ground prevents wizards from jaunting away, can destroy cultist runes by hitting them, and is a very powerful weapon to boot! The Chaplain can bless any container with water by hitting it with their bible. Holy water has a myriad of uses against both cults and large amounts of it are a great contributor to success against them. -The Chaplain's holy weapon will kill clockwork marauders in two hits. As the Chaplain, your bible is also a container that can store small items. Depending on your god, your starting bible may come with a surprise! As the Chaplain, you are much more likely to get a response by praying to the gods than most people. To boost your chances, make altars with colorful crayon runes, lit candles, and wire art. As a Botanist, you can hack the MegaSeed Vendor to get access to more exotic seeds. These seeds can alternatively be ordered from cargo. @@ -173,96 +166,14 @@ As a Shaft Miner, every monster on Lavaland has a pattern you can exploit to min As a Shaft Miner, you can harvest goliath plates from goliaths and upgrade your explorer's suit, mining hardsuits as well as Firefighter APLUs with them, greatly reducing incoming melee damage. As a Shaft Miner, always have a GPS on you, so a fellow miner or cyborg can come to save you if you die. As a Shaft Miner, you can craft a variety of equipment from the local fauna. Bone axes, lava boats and ash drake armour are just a few of them! -As a Traitor, the cryptographic sequencer (emag) can not only open doors, but also lockers, crates, APCs and more. It can hack cyborgs, and even cause bots to go berserk. Use it on the right machines, and you can even order more traitor gear or contact the Syndicate. Experiment! -As a Traitor, subverting the AI to serve you can make it an extremely powerful ally. However, be careful of the wording in the laws you give it, as it may use your poorly written laws against you! -As a Traitor, the Captain and the Head of Security are two of the most difficult to kill targets on the station. If either one is your target, plan carefully. -As a Traitor, you can manufacture and recycle revolver bullets at a hacked autolathe, making the revolver an extremely powerful tool. -As a Traitor, you may sometimes be assigned to hunt other traitors, and in turn be hunted by others. -As a Traitor, the syndicate encryption key is very useful for coordinating plans with your fellow traitors -- or, of course, betraying them. -As a Traitor, plasma can be injected into many things to sabotage them. Power cells, light bulbs, cigars and e-cigs will all explode when used. -As a Nuclear Operative, communication is key! Use :t or :h to speak to your fellow operatives and coordinate an attack plan. -As a Nuclear Operative, you should look into purchasing a syndicate cyborg, as they can provide heavy fire support, full access, are immune to conventional stuns, and can easily take down the AI. -As a Nuclear Operative, stick together! While your equipment is robust, your fellow operatives are much better at saving your life: they can drag you away from danger while stunned and provide cover fire. -As a Nuclear Operative, you might end up in a situation where the AI has bolted you into a room. Having some spare C4 in your pocket can save your life. -As a Monkey, you can crawl through air or scrubber vents by alt+left clicking them. You must drop everything you are wearing and holding to do this, however. -As a Monkey, you can still wear a few human items, such as backpacks, gas masks and hats, and still have two free hands. -As the Malfunctioning AI, you can shunt to an APC if the situation gets bad. This disables your doomsday device if it is active. -As the Malfunctioning AI, you should either order your cyborgs to dismantle the robotics console or blow it up yourself in order to protect them. -As the Malfunctioning AI, look into flooding the station with plasma fires to kill off large portions of the crew, letting you pick off the remaining few with space suits who escaped. -Xenomorphs? Science can craft deadly tech shells like pulse slugs and laser scatter shot that are highly effective against any alien threat. -When fighting aliens, it can be a good idea to turn off the gravity due to the alien's lack of zero-gravity control. -When fighting xenomorph aliens, consider a shield. Shields can block their pounces and be worn on the back, but beware of neurotoxin. -As an Alien, your melee prowess is unmatched, but your ranged abilities are sorely lacking. Make use of corners to force a melee confrontation! -As an Alien, you take double damage from all burn attacks, such as lasers, welding tools, and fires. Furthermore, fire can destroy your resin and eggs. Expose areas to space to starve away any flamethrower fires before they can do damage! -As an Alien, resin floors not only regenerate your plasma supply, but also passively heal you. Fight on resin floors to gain a home turf advantage! -As an Alien, the facehugger is by far your most powerful weapon because of its ability to instantly win a fight. Remember however that certain helmets, such as biohoods or space helmets will completely block facehugger attacks. -As an Alien, you are unable to pick up or use any human items or machinery. Instead, you should focus on sabotaging APCs, computers, cameras and either stowing, spacing, or melting any weapons you find. -When fighting the Blob, you can hit it with an analyzer to check its chemical effects and the type of blob analyzed. Examining it with a research scanner or medical hud active will also reveal this information. -As the Blob, you can place your core at any clear, unobserved, spot you can move to after 3 minutes have passed. If you wait too long, you will be automatically placed at a random location. Use this wait time to coordinate with any other overminds. -As the Blob, keep your core some distance from space, as it is both expensive to expand onto space, easy to be attacked from, and does not count towards your win condition. Emitter platforms built in space are especially dangerous. -As the Blob, you can randomly repick your reagent type if the crew has adapted and protected themselves against your current one. -As the Blob, you fight a war of attrition: Take out medbay and fight in chokepoints to prevent continued assaults and coordinated burst damage attacks! -As the Blob, you can attack anything next to a blob tile, but can only expand in cardinal directions, and diagonal attacks are slightly weaker. -As the Blob, don't neglect the creation of factories. These create spores that carry your reagent and can chase crewmembers far further than you. Spores can also be rallied to swarm the crew and cause panic, and can even take over corpses to create much more dangerous blob zombies! -As the Blob, you can produce a Blobbernaut from a factory for 40 resources. Blobbernauts are player-controlled, gradually regenerate near nodes, and apply your chemical when attacking, but die when too far from the blob or if their factory is killed. However, the factory used becomes fragile and stops spawning spores. -As the Blob, you can expand by clicking, create strong blobs with ctrl-click, rally spores with middle-click, and remove blobs with alt-click. You do not need to have your camera over the tile to do this. -As the Blob, removing strong blobs, resource nodes, factories, and nodes will give you 4, 15, 25, and 25 resources back, respectively. -As the Blob, talking will send a message to all other overminds and all Blobbernauts, allowing you to direct attacks and coordinate. -As a Blobbernaut, you can communicate with overminds and other Blobbernauts via :b. -As a Blobbernaut, your HUD shows your health and the core health of the overmind that created you. -As a Revolutionary, you cannot convert a head of staff or someone who has a mindshield implant, such as a security officer or those they implant. Implants can however be surgically removed, and do not carry over with cloning. Take control of medbay to keep control of conversions! -During a revolution, you cannot convert someone with brain damage, making an un-upgraded cloner a makeshift deconversion device. -As a Revolutionary, cargo can be your best friend or your worst nightmare. In the best case scenario you will be able to order a limitless amount of guns and armor, in the worst case scenario security will take control and order a limitless number of mindshield implants to turn your fellow revolutionaries against you. -As a Revolutionary, your main power comes from how quickly you spread. Convert people as fast as you can and overwhelm the heads of staff before security can arm up. -As a Changeling, the Extract DNA sting counts for your genome absorb objective, but does not let you respec your powers. -As a Changeling, you can absorb someone by strangling them and using the Absorb verb; this gives you the ability to rechoose your powers, the DNA of whoever you absorbed, the memory of the absorbed, and some samples of things the absorbed said. -As a Cultist, do not cause too much chaos before your objective is completed. If the shuttle gets called too soon, you may not have enough time to win. -As a Cultist, your team starts off very weak, but if necessary can quickly convert everything they have into raw power. Make sure you have the numbers and equipment to support going loud, or the cult will fall flat on its face. -As a Cultist, the Blood Boil rune will deal massive amounts of brute damage to non-cultists, stamina damage to Ratvarian scum, and some damage to fellow cultists of Nar-Sie nearby, but will create a fire where the rune stands on use. -As a Cultist, you can create an army of manifested goons using a combination of the Manifest rune, which creates homunculi from ghosts, and the Blood Drain rune, which drains life from anyone standing on any blood drain rune. -As a Cultist or Servant, check the alert in the upper-right of your screen for all the details about your cult's current status and objective. -As a Servant, your jumpsuit functions like a chameleon suit and can take on a lot of different appearances. Use this for stealth and disguise! -As a Servant, you can unlock scripture tiers early by stockpiling large amounts of power. -As a Servant, integration cogs are your primary source of power generation, and you should use as many as possible. -As a Servant, Abscond also brings anyone you're dragging to Reebe at the cost of some extra power. -As a Servant, wraith spectacles let you see everything through walls at virtually no drawback. Just take them off if someone might see you! -As a Servant, declaring war empowers a huge amount of your tools and constructs, and makes you into a spaceproof, armored clockwork automaton. -As a Servant, converting or sabotaging Science and Genetics can make defending the Ark much easier. -As a Servant, the Clockwork Armaments scripture allows you to summon armor and/or a weapon at will. Use it whenever you unlock it! -As a Servant, Brass created from your replica fabricators can be ground down in reagent grinders for teslium and iron. -You can bypass Servant created pressure sensors if you walk instead of jog on them. Alternatively, you can also become a Servant of Ratvar. -You can deconvert Cultists of Nar-Sie and Servants of Ratvar by feeding them large amounts of holy water. Unlike revolutionaries, implanting them with mindshield implants won't do it! -Tiles sprayed with holy water will permanently block Servants of Ratvar from teleporting onto them. -As a Wizard, you can turn people to stone, then animate the resulting statue with a staff of animation to create an extremely powerful minion, for all of 5 minutes at least. -As a Wizard, the fireball spell performs very poorly at close range, as it can easily catch you in the blast. It is best used as a form of artillery down long hallways. -As a Wizard, summoning guns will turn a large portion of the crew against themselves, but will also give everyone anything from a pea shooter to a BFG 9000. Use at your own risk! -As a Wizard, the staff of chaos can fire any type of bolts from the magical wands. This can range from bolts of instant death to healing or reviving someone. -As a Wizard, most spells become unusable if you are not wearing your robe, hat, and sandals. -As an Abductor, you can select where your victims will be sent on the ship control console. -As an Abductor Agent, the combat mode vest has much higher resistance to every kind of weapon, and your helmet prevents the AI from tracking you. -As an Abductor, the baton can cycle between four modes: stun, sleep, cuff and probe. -As a Revenant, the Chaplain is your worst enemy, as they can damage you massively with the null rod and make large swaths of the station impassable with holy water. -As a Revenant, your essence is also your health, so revealing yourself in front of humans to harvest the essence of the living is much safer if you've already stocked up on essences from poorly guarded corpses. -As a Revenant, your Defile ability removes holy water from tiles in a small radius, allowing you to reclaim the station from the chaplain if they've been covering the station in holy water. -As a Revenant, your Overload Lights ability will only shock humans with lights if the lights are still on after a brief delay. -As a Revenant, your Malfunction ability in general damages machinery and mechanical objects, possibly even emagging some objects. Experiment! -As a Revenant, the illness inflicted on humans by Blight can be easily cured by lying down or with holy water, making it best used on targets that have no time to lie down, such as humans in combat. -As a Swarmer, you can deconstruct more things than you think. Try deconstructing light switches, buttons, air alarms and more. Experiment! -As a Swarmer, you can teleport fellow swarmers away if you think they are in danger. -As a Swarmer, you are weak to EMP and lasers. Upon death, you will drop a bluespace crystal. -As a Swarmer, use your ability to consume guns and other weapons to disarm the crew to keep your numbers high! -As a Morph, you can talk while disguised, but your words have a chance of being slurred, giving you away! -As a Drone, you can ping other drones to alert them of areas in the station in need of repair. -As a Drone, you can repair yourself by using a screwdriver on yourself and standing still! -As a Ghost, you can see the inside of a container on the ground by clicking on it. -As a Ghost, you can double click on just about anything to follow it. Or just warp around! -As a Devil, you gain power for every three souls you control, however you also become more obvious. -As a Devil, as long as you control at least one other soul, you will automatically resurrect, as long as a banishment ritual is not performed. -At which time a Devil's nameth is spake on the tongue of man, the Devil may appeareth. You can swap floor tiles by holding a crowbar in one hand and a stack of tiles in the other. When hacking doors, cutting and mending the "test light wire" will restore power to the door. When crafting most items, you can either manually combine parts or use the crafting menu. Suit storage units not only remove blood and dirt from clothing, but also radiation! Remote devices will work when used through cameras. For example: Bluespace RPEDs and door remotes. Laser pointers can be upgraded by replacing its micro laser with a better one from RnD! Use a screwdriver on it to remove the old laser. Upgrading the laser pointer gives you better odds of stunning a cyborg, and even blinding people with sunglasses. -The nuclear reactor blew up and now there's plutonium everywhere? Shovels and radsuits will do the trick. Just... Make sure to decontaminate or get rid of that gear afterwards. \ No newline at end of file +The nuclear reactor blew up and now there's plutonium everywhere? Shovels and radsuits will do the trick. Just... Make sure to decontaminate or get rid of that gear afterwards. +Wondering how to obtain Fatorays? You can uncover the hidden tech-node in the research console using Destructive Analyzer and raygun scraps, which are usually found in maints or as ruin loot. +Make sure to coordinate your RPs with your partner by using either LOOC chat or DMing them on Discord! Communication is key to good RP! +Remember to keep an eye out for shuttle call votes! +If you need to temporarily leave the round, find a safe spot to sleep in or go to Dormitories to rest. diff --git a/tgstation.dme b/tgstation.dme index 4feb4645..87b3b646 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3095,6 +3095,7 @@ #include "GainStation13\code\modules\clothing\under\jobs\modcivilian.dm" #include "GainStation13\code\modules\food_and_drinks\drinks.dm" #include "GainStation13\code\modules\food_and_drinks\food.dm" +#include "GainStation13\code\modules\food_and_drinks\recipes_bigpizza.dm" #include "GainStation13\code\modules\food_and_drinks\objects\candy_flora.dm" #include "GainStation13\code\modules\mob\living\emote.dm" #include "GainStation13\code\modules\reagents\chemistry\reagents\consumable_reagents.dm"