/obj/machinery/vending/snack name = "\improper Getmore Chocolate Corp" desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars." product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" icon_state = "snack" products = list(/obj/item/reagent_containers/food/snacks/candy = 6, /obj/item/reagent_containers/food/drinks/dry_ramen = 6, /obj/item/reagent_containers/food/snacks/chips = 6, /obj/item/reagent_containers/food/snacks/sosjerky = 6, /obj/item/reagent_containers/food/snacks/no_raisin = 6, /obj/item/reagent_containers/food/snacks/spacetwinkie = 6, /obj/item/reagent_containers/food/snacks/cheesiehonkers = 6) contraband = list(/obj/item/reagent_containers/food/snacks/syndicake = 6) refill_canister = /obj/item/vending_refill/snack var/chef_compartment_access = "28" /obj/item/vending_refill/snack machine_name = "Getmore Chocolate Corp" charges = list(12, 2, 0)//of 36 standard, 6 contraband init_charges = list(12, 2, 0) /obj/machinery/vending/snack/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/reagent_containers/food/snacks)) if(!compartment_access_check(user)) return var/obj/item/reagent_containers/food/snacks/S = W if(!S.junkiness) if(!iscompartmentfull(user)) if(!user.transferItemToLoc(W, src)) return food_load(W) to_chat(user, "You insert [W] into [src]'s chef compartment.") else to_chat(user, "[src]'s chef compartment does not accept junk food.") else if(istype(W, /obj/item/storage/bag/tray)) if(!compartment_access_check(user)) return var/obj/item/storage/T = W var/loaded = 0 var/denied_items = 0 for(var/obj/item/reagent_containers/food/snacks/S in T.contents) if(iscompartmentfull(user)) break if(!S.junkiness) T.SendSignal(COMSIG_TRY_STORAGE_TAKE, S, src, TRUE) food_load(S) loaded++ else denied_items++ if(denied_items) to_chat(user, "[src] refuses some items.") if(loaded) to_chat(user, "You insert [loaded] dishes into [src]'s chef compartment.") updateUsrDialog() return else return ..() /obj/machinery/vending/snack/Destroy() for(var/obj/item/reagent_containers/food/snacks/S in contents) S.forceMove(get_turf(src)) return ..() /obj/machinery/vending/snack/proc/compartment_access_check(user) req_access_txt = chef_compartment_access if(!allowed(user) && !(obj_flags & EMAGGED) && scan_id) to_chat(user, "[src]'s chef compartment blinks red: Access denied.") req_access_txt = "0" return 0 req_access_txt = "0" return 1 /obj/machinery/vending/snack/proc/iscompartmentfull(mob/user) if(contents.len >= 30) // no more than 30 dishes can fit inside to_chat(user, "[src]'s chef compartment is full.") return 1 return 0 /obj/machinery/vending/snack/proc/food_load(obj/item/reagent_containers/food/snacks/S) if(dish_quants[S.name]) dish_quants[S.name]++ else dish_quants[S.name] = 1 sortList(dish_quants) /obj/machinery/vending/snack/random name = "\improper Random Snackies" icon_state = "random_snack" desc = "Uh oh!" /obj/machinery/vending/snack/random/Initialize() ..() var/T = pick(subtypesof(/obj/machinery/vending/snack) - /obj/machinery/vending/snack/random) new T(loc) return INITIALIZE_HINT_QDEL /obj/machinery/vending/snack/blue icon_state = "snackblue" /obj/machinery/vending/snack/orange icon_state = "snackorange" /obj/machinery/vending/snack/green icon_state = "snackgreen" /obj/machinery/vending/snack/teal icon_state = "snackteal"