Porting the musician and curator beacons.

This commit is contained in:
Ghommie
2020-03-07 00:12:50 +01:00
parent 5250fa1db1
commit a817bd6115
8 changed files with 161 additions and 46 deletions
+3 -3
View File
@@ -106,9 +106,9 @@
/datum/quirk/musician/on_spawn()
var/mob/living/carbon/human/H = quirk_holder
var/obj/item/instrument/guitar/guitar = new(get_turf(H))
H.put_in_hands(guitar)
H.equip_to_slot(guitar, SLOT_IN_BACKPACK)
var/obj/item/choice_beacon/music/B = new(get_turf(H))
H.put_in_hands(B)
H.equip_to_slot(B, SLOT_IN_BACKPACK)
var/obj/item/musicaltuner/musicaltuner = new(get_turf(H))
H.put_in_hands(musicaltuner)
H.equip_to_slot(musicaltuner, SLOT_IN_BACKPACK)
@@ -289,3 +289,29 @@
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
/obj/item/choice_beacon/music
name = "instrument delivery beacon"
desc = "Summon your tool of art."
icon_state = "gangtool-red"
/obj/item/choice_beacon/music/generate_display_names()
var/static/list/instruments
if(!instruments)
instruments = list()
var/list/templist = list(/obj/item/instrument/violin,
/obj/item/instrument/piano_synth,
/obj/item/instrument/guitar,
/obj/item/instrument/eguitar,
/obj/item/instrument/glockenspiel,
/obj/item/instrument/accordion,
/obj/item/instrument/trumpet,
/obj/item/instrument/saxophone,
/obj/item/instrument/trombone,
/obj/item/instrument/recorder,
/obj/item/instrument/harmonica
)
for(var/V in templist)
var/atom/A = V
instruments[initial(A.name)] = A
return instruments
+22 -28
View File
@@ -51,43 +51,37 @@
item_state = "knight_hospitaller"
// CITADEL CHANGES ENDS HERE
/obj/item/holybeacon
/obj/item/choice_beacon/holy
name = "armaments beacon"
desc = "Contains a set of armaments for the chaplain."
icon = 'icons/obj/device.dmi'
icon_state = "gangtool-red"
item_state = "radio"
/obj/item/holybeacon/attack_self(mob/user)
if(user.mind && (user.mind.isholy) && !GLOB.holy_armor_type)
beacon_armor(user)
/obj/item/choice_beacon/holy/canUseBeacon(mob/living/user)
if(user.mind && user.mind.isholy)
return ..()
else
playsound(src, 'sound/machines/buzz-sigh.ogg', 40, 1)
return FALSE
/obj/item/holybeacon/proc/beacon_armor(mob/living/L)
var/list/holy_armor_list = typesof(/obj/item/storage/box/holy)
var/list/display_names = list()
for(var/V in holy_armor_list)
var/atom/A = V
display_names += list(initial(A.name) = A)
/obj/item/choice_beacon/holy/generate_display_names()
var/static/list/holy_item_list
if(!holy_item_list)
holy_item_list = list()
var/list/templist = typesof(/obj/item/storage/box/holy)
for(var/V in templist)
var/atom/A = V
holy_item_list[initial(A.name)] = A
return holy_item_list
var/choice = input(L,"What holy armor kit would you like to order?","Holy Armor Theme") as null|anything in display_names
var/turf/T = get_turf(src)
if(!T || QDELETED(src) || !choice || !CHECK_MOBILITY(L, MOBILITY_USE) || !in_range(L, src) || GLOB.holy_armor_type)
/obj/item/choice_beacon/holy/spawn_option(obj/choice,mob/living/M)
if(!GLOB.holy_armor_type)
..()
playsound(src, 'sound/effects/pray_chaplain.ogg', 40, 1)
SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]")
GLOB.holy_armor_type = choice
else
to_chat(M, "<span class='warning'>A selection has already been made. Self-Destructing...</span>")
return
var/index = display_names.Find(choice)
var/A = holy_armor_list[index]
GLOB.holy_armor_type = A
var/holy_armor_box = new A(T)
SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]")
if(holy_armor_box)
qdel(src)
L.put_in_hands(holy_armor_box)
/obj/item/storage/box/holy
name = "Templar Kit"
+89
View File
@@ -12,6 +12,95 @@
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/abstract/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/emergency_oxygen/double(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"
+6
View File
@@ -314,3 +314,9 @@
desc = "This one is rusted."
force = 30
armour_penetration = 15
/obj/item/claymore/weak/ceremonial
desc = "A rusted claymore, once at the heart of a powerful scottish clan struck down and oppressed by tyrants, it has been passed down the ages as a symbol of defiance."
force = 15
block_chance = 30
armour_penetration = 5
@@ -107,7 +107,7 @@
icon_door = "black"
/obj/structure/closet/wardrobe/chaplain_black/PopulateContents()
new /obj/item/holybeacon(src)
new /obj/item/choice_beacon/holy(src)
new /obj/item/clothing/accessory/pocketprotector/cosmetology(src)
new /obj/item/clothing/under/rank/chaplain(src)
new /obj/item/clothing/shoes/sneakers/black(src)
+1 -1
View File
@@ -29,7 +29,7 @@
l_pocket = /obj/item/laser_pointer
accessory = /obj/item/clothing/accessory/pocketprotector/full
backpack_contents = list(
/obj/item/melee/curator_whip = 1,
/obj/item/choice_beacon/hero = 1,
/obj/item/soapstone = 1,
/obj/item/barcodescanner = 1
)
+13 -13
View File
@@ -190,17 +190,18 @@
name = "CuraDrobe"
desc = "A lowstock vendor only capable of vending clothing for curators and librarians."
icon_state = "curadrobe"
product_ads = "Our clothes are endorsed by treasure hunters everywhere!"
product_ads = "Glasses for your eyes and literature for your soul, Curadrobe has it all!; Impress & enthrall your library guests with Curadrobe's extended line of pens!"
vend_reply = "Thank you for using the CuraDrobe!"
products = list(/obj/item/clothing/head/fedora/curator = 2,
/obj/item/clothing/suit/curator = 2,
/obj/item/clothing/under/rank/curator/skirt = 2,
/obj/item/clothing/under/gimmick/rank/captain/suit/skirt = 2,
/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt = 2,
/obj/item/clothing/under/rank/curator/treasure_hunter = 2,
/obj/item/clothing/shoes/workboots/mining = 2,
/obj/item/storage/backpack/satchel/explorer = 2,
/obj/item/storage/bag/books = 2)
products = list(/obj/item/pen = 4,
/obj/item/pen/red = 2,
/obj/item/pen/blue = 2,
/obj/item/pen/fourcolor = 1,
/obj/item/pen/fountain = 2,
/obj/item/clothing/accessory/pocketprotector = 2,
/obj/item/storage/backpack/satchel/explorer = 1,
/obj/item/clothing/glasses/regular = 2,
/obj/item/clothing/glasses/regular/jamjar = 1,
/obj/item/storage/bag/books = 1)
refill_canister = /obj/item/vending_refill/wardrobe/curator_wardrobe
/obj/item/vending_refill/wardrobe/curator_wardrobe
@@ -327,7 +328,7 @@
icon_state = "chapdrobe"
product_ads = "Are you being bothered by cultists or pesky revenants? Then come and dress like the holy man!;Clothes for men of the cloth!"
vend_reply = "Thank you for using the ChapDrobe!"
products = list(/obj/item/holybeacon = 1,
products = list(/obj/item/choice_beacon/holy = 1,
/obj/item/storage/backpack/cultpack = 2,
/obj/item/clothing/accessory/pocketprotector/cosmetology = 2,
/obj/item/clothing/under/rank/chaplain = 2,
@@ -415,7 +416,7 @@
req_access = list(ACCESS_CAPTAIN)
vend_reply = "A wonderful day to you, great leader."
products = list(/obj/item/clothing/suit/hooded/wintercoat/captain = 1,
/obj/item/storage/backpack/captain = 1,
/obj/item/storage/backpack/captain = 1,
/obj/item/storage/backpack/satchel/cap = 1,
/obj/item/storage/backpack/duffelbag/captain = 1,
/obj/item/clothing/neck/cloak/cap = 1,
@@ -436,4 +437,3 @@
/obj/item/vending_refill/wardrobe/cap_wardrobe
machine_name = "Captain's Wardrobe"
icon_state = "refill_caps"