/obj/item/choice_beacon name = "choice beacon" desc = "Hey, why are you viewing this?!! Please let Centcom know about this odd occurance." icon = 'icons/obj/device.dmi' icon_state = "gangtool-blue" item_state = "radio" var/list/stored_options var/force_refresh = FALSE //if set to true, the beacon will recalculate its display options whenever opened /obj/item/choice_beacon/attack_self(mob/user) if(canUseBeacon(user)) generate_options(user) /obj/item/choice_beacon/proc/generate_display_names() // return the list that will be used in the choice selection. entries should be in (type.name = type) fashion. see choice_beacon/hero for how this is done. return list() /obj/item/choice_beacon/proc/canUseBeacon(mob/living/user) if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return TRUE else playsound(src, 'sound/machines/buzz-sigh.ogg', 40, 1) return FALSE /obj/item/choice_beacon/proc/generate_options(mob/living/M) if(!stored_options || force_refresh) stored_options = generate_display_names() if(!stored_options.len) return var/choice = input(M,"Which item would you like to order?","Select an Item") as null|anything in stored_options if(!choice || !M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return spawn_option(stored_options[choice],M) qdel(src) /obj/item/choice_beacon/proc/create_choice_atom(atom/choice, mob/owner) return new choice() /obj/item/choice_beacon/proc/spawn_option(obj/choice,mob/living/M) var/obj/new_item = new choice() var/obj/structure/closet/supplypod/bluespacepod/pod = new() pod.explosionSize = list(0,0,0,0) new_item.forceMove(pod) var/msg = "After making your selection, you notice a strange target on the ground. It might be best to step back!" if(ishuman(M)) var/mob/living/carbon/human/H = M if(istype(H.ears, /obj/item/radio/headset)) msg = "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows: Item request received. Your package is inbound, please stand back from the landing site. Message ends.\"" to_chat(M, msg) new /obj/effect/abstract/DPtarget(get_turf(src), pod) /obj/item/caution desc = "Caution! Wet Floor!" name = "wet floor sign" icon = 'icons/obj/janitor.dmi' icon_state = "caution" lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi' force = 1 throwforce = 3 throw_speed = 2 throw_range = 5 w_class = WEIGHT_CLASS_SMALL attack_verb = list("warned", "cautioned", "smashed") /obj/item/skub desc = "It's skub." name = "skub" icon = 'icons/obj/items_and_weapons.dmi' icon_state = "skub" w_class = WEIGHT_CLASS_BULKY attack_verb = list("skubbed") /obj/item/choice_beacon/hosgun name = "personal weapon beacon" desc = "Use this to summon your personal Head of Security issued firearm!" /obj/item/choice_beacon/hosgun/generate_display_names() var/static/list/hos_gun_list if(!hos_gun_list) hos_gun_list = list() var/list/templist = subtypesof(/obj/item/storage/secure/briefcase/hos/) //we have to convert type = name to name = type, how lovely! for(var/V in templist) var/atom/A = V hos_gun_list[initial(A.name)] = A return hos_gun_list // Bouquets /obj/item/bouquet name = "mixed bouquet" desc = "A bouquet of sunflowers, lilies, and geraniums. How delightful." icon = 'icons/obj/items_and_weapons.dmi' icon_state = "mixedbouquet" /obj/item/bouquet/sunflower name = "sunflower bouquet" desc = "A bright bouquet of sunflowers." icon_state = "sunbouquet" /obj/item/bouquet/poppy name = "poppy bouquet" desc = "A bouquet of poppies. You feel loved just looking at it." icon_state = "poppybouquet" /obj/item/bouquet/rose name = "rose bouquet" desc = "A bouquet of roses. A bundle of love." icon_state = "rosebouquet"