diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm index 639bd65dd57..68b63af1ac3 100644 --- a/code/game/objects/items/weapons/RSF.dm +++ b/code/game/objects/items/weapons/RSF.dm @@ -1,8 +1,8 @@ /* CONTAINS: RSF - */ + /obj/item/weapon/rsf name = "\improper Rapid-Service-Fabricator" desc = "A device used to rapidly deploy service items." @@ -14,9 +14,21 @@ RSF var/matter = 0 var/mode = 1 w_class = WEIGHT_CLASS_NORMAL + var/list/configured_items = list() /obj/item/weapon/rsf/New() desc = "A RSF. It currently holds [matter]/30 fabrication-units." + // configured_items[ID_NUMBER] = list("Human-readable name", price in energy, /type/path) + configured_items[++configured_items.len] = list("Dosh", 50, /obj/item/stack/spacecash/c10) + configured_items[++configured_items.len] = list("Drinking Glass", 50, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass) + configured_items[++configured_items.len] = list("Paper", 50, /obj/item/weapon/paper) + configured_items[++configured_items.len] = list("Pen", 50, /obj/item/weapon/pen) + configured_items[++configured_items.len] = list("Dice Pack", 50, /obj/item/weapon/storage/pill_bottle/dice) + configured_items[++configured_items.len] = list("Cigarette", 50, /obj/item/clothing/mask/cigarette) + configured_items[++configured_items.len] = list("Snack - Newdles", 4000, /obj/item/weapon/reagent_containers/food/snacks/chinese/newdles) + configured_items[++configured_items.len] = list("Snack - Donut", 4000, /obj/item/weapon/reagent_containers/food/snacks/donut) + configured_items[++configured_items.len] = list("Snack - Chicken Soup", 4000, /obj/item/weapon/reagent_containers/food/drinks/chicken_soup) + configured_items[++configured_items.len] = list("Snack - Turkey Burger", 4000, /obj/item/weapon/reagent_containers/food/snacks/tofuburger) return /obj/item/weapon/rsf/attackby(obj/item/weapon/W as obj, mob/user as mob, params) @@ -34,204 +46,39 @@ RSF /obj/item/weapon/rsf/attack_self(mob/user as mob) playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - if(mode == 1) - mode = 2 - to_chat(user, "Changed dispensing mode to 'Drinking Glass'") - return - if(mode == 2) - mode = 3 - to_chat(user, "Changed dispensing mode to 'Paper'") - return - if(mode == 3) - mode = 4 - to_chat(user, "Changed dispensing mode to 'Pen'") - return - if(mode == 4) - mode = 5 - to_chat(user, "Changed dispensing mode to 'Dice Pack'") - return - if(mode == 5) - mode = 6 - to_chat(user, "Changed dispensing mode to 'Cigarette'") - return - if(mode == 6) + if(mode == configured_items.len) mode = 1 - to_chat(user, "Changed dispensing mode to 'Dosh'") - return - // Change mode + else + mode++ + to_chat(user, "Changed dispensing mode to '" + configured_items[mode][1] + "'") + /obj/item/weapon/rsf/afterattack(atom/A, mob/user as mob, proximity) if(!proximity) return if(!(istype(A, /obj/structure/table) || istype(A, /turf/simulated/floor))) return - if(istype(A, /obj/structure/table) && mode == 1) - if(istype(A, /obj/structure/table) && matter >= 1) - to_chat(user, "Dispensing Dosh...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/stack/spacecash/c10( A.loc ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 //once money becomes useful, I guess changing this to a high ammount, like 500 units a kick, till then, enjoy dosh! - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." + var spawn_location + if(istype(A, /obj/structure/table)) + spawn_location = A.loc + else if (istype(A, /obj/structure/table)) + spawn_location = A + else + to_chat(user, "The RSF can only create service items on tables, or floors.") return - else if(istype(A, /turf/simulated/floor) && mode == 1) - if(istype(A, /turf/simulated/floor) && matter >= 1) - to_chat(user, "Dispensing Dosh...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/stack/spacecash/c10( A ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 //once money becomes useful, I guess changing this to a high ammount, like 500 units a kick, till then, enjoy dosh! - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return + to_chat(user, "Dispensing " + configured_items[mode][1] + "...") + playsound(src.loc, 'sound/machines/click.ogg', 10, 1) + var type_path = configured_items[mode][3] + new type_path(spawn_location) + if(isrobot(user)) + var/mob/living/silicon/robot/engy = user + engy.cell.charge -= configured_items[mode][2] + else + matter-- + to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") + desc = "A RSF. It currently holds [matter]/30 fabrication-units." - else if(istype(A, /obj/structure/table) && mode == 2) - if(istype(A, /obj/structure/table) && matter >= 1) - to_chat(user, "Dispensing Drinking Glass...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A.loc ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /turf/simulated/floor) && mode == 2) - if(istype(A, /turf/simulated/floor) && matter >= 1) - to_chat(user, "Dispensing Drinking Glass...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass( A ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /obj/structure/table) && mode == 3) - if(istype(A, /obj/structure/table) && matter >= 1) - to_chat(user, "Dispensing Paper Sheet...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/paper( A.loc ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /turf/simulated/floor) && mode == 3) - if(istype(A, /turf/simulated/floor) && matter >= 1) - to_chat(user, "Dispensing Paper Sheet...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/paper( A ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /obj/structure/table) && mode == 4) - if(istype(A, /obj/structure/table) && matter >= 1) - to_chat(user, "Dispensing Pen...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/pen( A.loc ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /turf/simulated/floor) && mode == 4) - if(istype(A, /turf/simulated/floor) && matter >= 1) - to_chat(user, "Dispensing Pen...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/pen( A ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 50 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /obj/structure/table) && mode == 5) - if(istype(A, /obj/structure/table) && matter >= 1) - to_chat(user, "Dispensing Dice Pack...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/storage/pill_bottle/dice( A.loc ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /turf/simulated/floor) && mode == 5) - if(istype(A, /turf/simulated/floor) && matter >= 1) - to_chat(user, "Dispensing Dice Pack...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/weapon/storage/pill_bottle/dice( A ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 200 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /obj/structure/table) && mode == 6) - if(istype(A, /obj/structure/table) && matter >= 1) - to_chat(user, "Dispensing Cigarette...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/clothing/mask/cigarette( A.loc ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return - - else if(istype(A, /turf/simulated/floor) && mode == 6) - if(istype(A, /turf/simulated/floor) && matter >= 1) - to_chat(user, "Dispensing Cigarette...") - playsound(src.loc, 'sound/machines/click.ogg', 10, 1) - new /obj/item/clothing/mask/cigarette( A ) - if(isrobot(user)) - var/mob/living/silicon/robot/engy = user - engy.cell.charge -= 10 - else - matter-- - to_chat(user, "The RSF now holds [matter]/30 fabrication-units.") - desc = "A RSF. It currently holds [matter]/30 fabrication-units." - return /obj/item/weapon/cookiesynth name = "\improper Cookie Synthesizer" diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index e9dcf825aad..c25e5c5a5d3 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -283,6 +283,14 @@ isGlass = 0 list_reagents = list("limejuice" = 100) +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk + name = "Milk" + desc = "Soothing milk." + icon_state = "milk" + item_state = "carton" + isGlass = 0 + list_reagents = list("milk" = 100) + ////////////////////////// MOLOTOV /////////////////////// /obj/item/weapon/reagent_containers/food/drinks/bottle/molotov name = "molotov cocktail" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 83467748888..1b3f0b96313 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -270,10 +270,27 @@ /obj/item/weapon/robot_module/butler/New() ..() modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/cola(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/sodawater(src) modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice(src) // -0.3 oxy/sec + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice(src) // -0.2 fire/sec + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice(src) // -0.2 tox/sec + modules += new /obj/item/weapon/reagent_containers/food/drinks/coffee(src) // -1 paralysis stunned & weakened/sec + modules += new /obj/item/weapon/reagent_containers/food/drinks/tea(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/milk(src) // -0.2 brute/sec + modules += new /obj/item/weapon/reagent_containers/food/condiment/sugar(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/ice(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/cream(src) + + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/tequila(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/vodka(src) + modules += new /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(src) + modules += new /obj/item/weapon/pen(src) modules += new /obj/item/weapon/razor(src) modules += new /obj/item/device/instrument/piano_synth(src) + modules += new /obj/item/device/healthanalyzer/advanced(src) var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src) M.matter = 30 diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 5d6523f7913..17bd4bde862 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -323,12 +323,12 @@ M.EyeBlurry(3) ..() -/datum/reagent/beer2 //disguised as normal beer for use by emagged brobots +/datum/reagent/beer2 //disguised as normal beer for use by emagged service borgs name = "Beer" id = "beer2" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." color = "#664300" // rgb: 102, 67, 0 - metabolization_rate = 1.5 * REAGENTS_METABOLISM + metabolization_rate = 0.1 * REAGENTS_METABOLISM drink_icon ="beerglass" drink_name = "Beer glass" drink_desc = "A freezing pint of beer"