Files
Bubberstation/code/game/objects/items/miscellaneous.dm
coiax d8dc319b4d Choice beacon explosion changes (#41998)
* Choice beacon explosion changes

🆑 coiax
del: Choice beacons (such as the one the curator, chaplain and people
with the Musican trait have access to) will no longer have pods that
have minor explosive effects.
add: Emagging a choice beacon will cause the pod to be supplied by the
Syndicate, providing the same items, but with a highly explosive
landing.
/🆑

Choice beacons are supposed to be just methods of spawning in a choice
of items, rather than weapons. I've seen traitors use the choice beacon
as a free way of instantly detonating a syndicate bomb they just
deployed, which is cute, but is probably just too powerful for a free
item.

The mild fire/knockback explosion from a choice beacon currently is
enough to set people on fire, burn up items, and throw items around in
your workplace. The focus should be on the items you get, not on the
destructive effects of their delivery.

* Removes emagging
2018-12-23 16:05:48 +11:00

118 lines
4.2 KiB
Plaintext

/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/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"
/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)
var/list/display_names = generate_display_names()
if(!display_names.len)
return
var/choice = input(M,"Which item would you like to order?","Select an Item") as null|anything in display_names
if(!choice || !M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
return
spawn_option(display_names[choice],M)
qdel(src)
/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 = "<span class=danger>After making your selection, you notice a strange target on the ground. It might be best to step back!</span>"
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: <span class='bold'>Item request received. Your package is inbound, please stand back from the landing site.</span> Message ends.\""
to_chat(M, msg)
new /obj/effect/DPtarget(get_turf(src), pod)
/obj/item/choice_beacon/hero
name = "heroic beacon"
desc = "To summon heroes from the past to protect the future."
/obj/item/choice_beacon/hero/generate_display_names()
var/static/list/hero_item_list
if(!hero_item_list)
hero_item_list = list()
var/list/templist = typesof(/obj/item/storage/box/hero) //we have to convert type = name to name = type, how lovely!
for(var/V in templist)
var/atom/A = V
hero_item_list[initial(A.name)] = A
return hero_item_list
/obj/item/storage/box/hero
name = "Courageous Tomb Raider - 1940's."
/obj/item/storage/box/hero/PopulateContents()
new /obj/item/clothing/head/fedora/curator(src)
new /obj/item/clothing/suit/curator(src)
new /obj/item/clothing/under/rank/curator/treasure_hunter(src)
new /obj/item/clothing/shoes/workboots/mining(src)
new /obj/item/melee/curator_whip(src)
/obj/item/storage/box/hero/astronaut
name = "First Man on the Moon - 1960's."
/obj/item/storage/box/hero/astronaut/PopulateContents()
new /obj/item/clothing/suit/space/nasavoid(src)
new /obj/item/clothing/head/helmet/space/nasavoid(src)
new /obj/item/tank/internals/oxygen(src)
new /obj/item/gps(src)
/obj/item/storage/box/hero/scottish
name = "Braveheart, the Scottish rebel - 1300's."
/obj/item/storage/box/hero/scottish/PopulateContents()
new /obj/item/clothing/under/kilt(src)
new /obj/item/claymore/weak/ceremonial(src)
new /obj/item/toy/crayon/spraycan(src)
new /obj/item/clothing/shoes/sandal(src)
/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/skub/suicide_act(mob/living/user)
user.visible_message("<span class='suicide'>[user] has declared themself as anti-skub! The skub tears them apart!</span>")
user.gib()
playsound(src, 'sound/items/eatfood.ogg', 50, 1, -1)
return MANUAL_SUICIDE