From fb0cd5d94e1c6efe663c68a83b21aca01c5459fd Mon Sep 17 00:00:00 2001 From: Anasari <13087574+Anasari@users.noreply.github.com> Date: Tue, 31 Jul 2018 13:37:24 +0800 Subject: [PATCH] Fixes & minor uplink items refactor --- code/datums/uplink_item.dm | 12 +++--- code/game/objects/items/devices/uplinks.dm | 44 +++++++++------------- 2 files changed, 23 insertions(+), 33 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index ad805374751..53d82e664be 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -1,16 +1,13 @@ -var/list/uplink_items = list() +GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /proc/get_uplink_items(var/job = null) - // If not already initialized.. + var/list/uplink_items = list() if(!uplink_items.len) - // Fill in the list and order it like this: - // A keyed list, acting as categories, which are lists to the datum. - var/list/last = list() - for(var/item in typesof(/datum/uplink_item)) + for(var/path in GLOB.uplink_items) - var/datum/uplink_item/I = new item() + var/datum/uplink_item/I = new path if(!I.item) continue if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes)) @@ -528,6 +525,7 @@ var/list/uplink_items = list() desc = "A cyborg designed and programmed for systematic extermination of non-Syndicate personnel." reference = "SC" item = /obj/item/antag_spawner/borg_tele + refund_path = /obj/item/antag_spawner/borg_tele cost = 50 gamemodes = list(/datum/game_mode/nuclear) surplus = 0 diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 27810e53452..1c3124a74cb 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -12,7 +12,7 @@ var/list/world_uplinks = list() var/welcome // Welcoming menu message var/uses // Numbers of crystals var/hidden_crystals = 0 - var/list/ItemsCategory // List of categories with lists of items + var/list/uplink_items // List of categories with lists of items var/list/ItemsReference // List of references with an associated item var/list/nanoui_items // List of items for NanoUI use var/nanoui_menu = 0 // The current menu we are in @@ -32,7 +32,7 @@ var/list/world_uplinks = list() ..() welcome = ticker.mode.uplink_welcome uses = ticker.mode.uplink_uses - ItemsCategory = get_uplink_items() + uplink_items = get_uplink_items() world_uplinks += src @@ -57,14 +57,14 @@ var/list/world_uplinks = list() dat += "Each item costs a number of telecrystals as indicated by the number following its name.
" var/category_items = 1 - for(var/category in ItemsCategory) + for(var/category in uplink_items) if(category_items < 1) dat += "We apologize, as you could not afford anything from this category.
" dat += "
" dat += "[category]
" category_items = 0 - for(var/datum/uplink_item/I in ItemsCategory[category]) + for(var/datum/uplink_item/I in uplink_items[category]) if(I.cost > uses) continue if(I.job && I.job.len) @@ -87,9 +87,9 @@ var/list/world_uplinks = list() var/list/nano = new var/list/reference = new - for(var/category in ItemsCategory) + for(var/category in uplink_items) nano[++nano.len] = list("Category" = category, "items" = list()) - for(var/datum/uplink_item/I in ItemsCategory[category]) + for(var/datum/uplink_item/I in uplink_items[category]) if(I.job && I.job.len) if(!(I.job.Find(job))) continue @@ -148,26 +148,18 @@ var/list/world_uplinks = list() /obj/item/uplink/proc/refund(mob/user as mob) var/obj/item/I = user.get_active_hand() if(I) // Make sure there's actually something in the hand before even bothering to check - for(var/item in subtypesof(/datum/uplink_item)) - var/datum/uplink_item/UI = item - var/path = null - if(initial(UI.refund_path)) - path = initial(UI.refund_path) - else - path = initial(UI.item) - var/cost = 0 - if(initial(UI.refund_amount)) - cost = initial(UI.refund_amount) - else - cost = initial(UI.cost) - var/refundable = initial(UI.refundable) - if(I.type == path && refundable && I.check_uplink_validity()) - uses += cost - used_TC -= cost - to_chat(user, "[I] refunded.") - qdel(I) - return - ..() + for(var/category in uplink_items) + for(var/item in uplink_items[category]) + var/datum/uplink_item/UI = item + var/path = UI.refund_path || UI.item + var/cost = UI.refund_amount || UI.cost + if(I.type == path && UI.refundable && I.check_uplink_validity()) + uses += cost + used_TC -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return + ..() // HIDDEN UPLINK - Can be stored in anything but the host item has to have a trigger for it. /* How to create an uplink in 3 easy steps!