mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Merge pull request #1320 from CHOMPStationBot/upstream-merge-9704
[MIRROR] [MIRROR] Telecrystals are only stored on the mind
This commit is contained in:
@@ -55,6 +55,9 @@
|
|||||||
|
|
||||||
var/rev_cooldown = 0
|
var/rev_cooldown = 0
|
||||||
var/tcrystals = 0
|
var/tcrystals = 0
|
||||||
|
var/list/purchase_log = new
|
||||||
|
var/used_TC = 0
|
||||||
|
|
||||||
|
|
||||||
// the world.time since the mob has been brigged, or -1 if not at all
|
// the world.time since the mob has been brigged, or -1 if not at all
|
||||||
var/brigged_since = -1
|
var/brigged_since = -1
|
||||||
@@ -73,7 +76,7 @@
|
|||||||
|
|
||||||
/datum/mind/New(var/key)
|
/datum/mind/New(var/key)
|
||||||
src.key = key
|
src.key = key
|
||||||
|
purchase_log = list()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/datum/mind/proc/transfer_to(mob/living/new_character)
|
/datum/mind/proc/transfer_to(mob/living/new_character)
|
||||||
|
|||||||
@@ -22,22 +22,22 @@
|
|||||||
desc = "Buys you one random item."
|
desc = "Buys you one random item."
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
|
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
|
||||||
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses)
|
var/datum/uplink_item/item = default_uplink_selection.get_random_item((user ? user.mind.tcrystals : DEFAULT_TELECRYSTAL_AMOUNT), U)
|
||||||
return item.buy(U, user)
|
return item.buy(U, user)
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_one/can_buy(obj/item/device/uplink/U)
|
/datum/uplink_item/item/badassery/random_one/can_buy(var/obj/item/device/uplink/U, var/telecrystals)
|
||||||
return default_uplink_selection.get_random_item(U.uses, U) != null
|
return default_uplink_selection.get_random_item(telecrystals, U) != null
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_many
|
/datum/uplink_item/item/badassery/random_many
|
||||||
name = "Random Items"
|
name = "Random Items"
|
||||||
desc = "Buys you as many random items you can afford. Convenient packaging NOT included."
|
desc = "Buys you as many random items you can afford. Convenient packaging NOT included."
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_many/cost(var/telecrystals)
|
/datum/uplink_item/item/badassery/random_many/cost(obj/item/device/uplink/U, var/telecrystals)
|
||||||
return max(1, telecrystals)
|
return max(1, telecrystals)
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/device/uplink/U, var/loc)
|
/datum/uplink_item/item/badassery/random_many/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/M)
|
||||||
var/list/bought_items = list()
|
var/list/bought_items = list()
|
||||||
for(var/datum/uplink_item/UI in get_random_uplink_items(U, U.uses, loc))
|
for(var/datum/uplink_item/UI in get_random_uplink_items(U, M.mind.tcrystals, loc))
|
||||||
UI.purchase_log(U)
|
UI.purchase_log(U)
|
||||||
var/obj/item/I = UI.get_goods(U, loc)
|
var/obj/item/I = UI.get_goods(U, loc)
|
||||||
if(istype(I))
|
if(istype(I))
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_many/purchase_log(obj/item/device/uplink/U)
|
/datum/uplink_item/item/badassery/random_many/purchase_log(obj/item/device/uplink/U)
|
||||||
feedback_add_details("traitor_uplink_items_bought", "[src]")
|
feedback_add_details("traitor_uplink_items_bought", "[src]")
|
||||||
log_and_message_admins("used \the [U.loc] to buy \a [src]")
|
log_and_message_admins("used \the [U.loc] to buy \a [src] at random")
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Surplus Crate *
|
* Surplus Crate *
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
category = /datum/uplink_category/telecrystals
|
category = /datum/uplink_category/telecrystals
|
||||||
blacklisted = 1
|
blacklisted = 1
|
||||||
|
|
||||||
/datum/uplink_item/item/telecrystal/get_goods(var/obj/item/device/uplink/U, var/loc)
|
/datum/uplink_item/item/telecrystal/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/M)
|
||||||
return new /obj/item/stack/telecrystal(loc, cost(U.uses))
|
return new /obj/item/stack/telecrystal(loc, cost(U, M.mind.tcrystals))
|
||||||
|
|
||||||
/datum/uplink_item/item/telecrystal/one
|
/datum/uplink_item/item/telecrystal/one
|
||||||
name = "Telecrystal - 01"
|
name = "Telecrystal - 01"
|
||||||
@@ -35,5 +35,5 @@
|
|||||||
/datum/uplink_item/item/telecrystal/all
|
/datum/uplink_item/item/telecrystal/all
|
||||||
name = "Telecrystals - Empty Uplink"
|
name = "Telecrystals - Empty Uplink"
|
||||||
|
|
||||||
/datum/uplink_item/item/telecrystal/all/cost(var/telecrystals)
|
/datum/uplink_item/item/telecrystal/all/cost(obj/item/device/uplink/U, mob/M)
|
||||||
return max(1, telecrystals)
|
return max(1, M.mind.tcrystals)
|
||||||
@@ -6,12 +6,6 @@
|
|||||||
..()
|
..()
|
||||||
items = list()
|
items = list()
|
||||||
|
|
||||||
/datum/uplink_category/proc/can_view(obj/item/device/uplink/U)
|
|
||||||
for(var/datum/uplink_item/item in items)
|
|
||||||
if(item.can_view(U))
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
datum/uplink_category/ammunition
|
datum/uplink_category/ammunition
|
||||||
name = "Ammunition"
|
name = "Ammunition"
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ var/datum/uplink/uplink = new()
|
|||||||
var/item_cost = 0
|
var/item_cost = 0
|
||||||
var/datum/uplink_category/category // Item category
|
var/datum/uplink_category/category // Item category
|
||||||
var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all.
|
var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all.
|
||||||
var/blacklisted = 0
|
var/blacklisted = FALSE
|
||||||
|
|
||||||
/datum/uplink_item/item
|
/datum/uplink_item/item
|
||||||
var/path = null
|
var/path = null
|
||||||
@@ -48,50 +48,34 @@ var/datum/uplink/uplink = new()
|
|||||||
if(!extra_args)
|
if(!extra_args)
|
||||||
return
|
return
|
||||||
|
|
||||||
if(!can_buy(U))
|
if(!can_buy(U, user.mind.tcrystals))
|
||||||
return
|
return
|
||||||
|
|
||||||
if(U.tgui_status(user, GLOB.tgui_inventory_state) != STATUS_INTERACTIVE)
|
if(U.tgui_status(user, GLOB.tgui_deep_inventory_state) != STATUS_INTERACTIVE)
|
||||||
return
|
return
|
||||||
|
|
||||||
var/cost = cost(U.uses, U)
|
var/cost = cost(U, user.mind.tcrystals)
|
||||||
|
|
||||||
var/goods = get_goods(U, get_turf(user), user, extra_args)
|
var/goods = get_goods(U, get_turf(user), user, extra_args)
|
||||||
if(!goods)
|
if(!goods)
|
||||||
return
|
return
|
||||||
|
|
||||||
purchase_log(U)
|
purchase_log(user)
|
||||||
user.mind.tcrystals -= cost
|
user.mind.tcrystals -= cost
|
||||||
U.used_TC += cost
|
user.mind.used_TC += cost
|
||||||
return goods
|
return goods
|
||||||
|
|
||||||
// Any additional arguments you wish to send to the get_goods
|
// Any additional arguments you wish to send to the get_goods
|
||||||
/datum/uplink_item/proc/extra_args(var/mob/user)
|
/datum/uplink_item/proc/extra_args(var/mob/user)
|
||||||
return 1
|
return TRUE
|
||||||
|
|
||||||
/datum/uplink_item/proc/can_buy(obj/item/device/uplink/U)
|
/datum/uplink_item/proc/can_buy(var/obj/item/device/uplink/U, var/telecrystals)
|
||||||
if(cost(U.uses, U) > U.uses)
|
if(cost(U, telecrystals) > telecrystals)
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
return can_view(U)
|
return TRUE
|
||||||
|
|
||||||
/datum/uplink_item/proc/can_view(obj/item/device/uplink/U)
|
/datum/uplink_item/proc/cost(obj/item/device/uplink/U, mob/M)
|
||||||
// Making the assumption that if no uplink was supplied, then we don't care about antag roles
|
|
||||||
if(!U || !antag_roles.len)
|
|
||||||
return 1
|
|
||||||
|
|
||||||
// With no owner, there's no need to check antag status.
|
|
||||||
if(!U.uplink_owner)
|
|
||||||
return 0
|
|
||||||
|
|
||||||
for(var/antag_role in antag_roles)
|
|
||||||
var/datum/antagonist/antag = all_antag_types[antag_role]
|
|
||||||
if(!isnull(antag))
|
|
||||||
if(antag.is_antagonist(U.uplink_owner))
|
|
||||||
return 1
|
|
||||||
return 0
|
|
||||||
|
|
||||||
/datum/uplink_item/proc/cost(var/telecrystals, obj/item/device/uplink/U)
|
|
||||||
. = item_cost
|
. = item_cost
|
||||||
if(U)
|
if(U)
|
||||||
. = U.get_item_cost(src, .)
|
. = U.get_item_cost(src, .)
|
||||||
@@ -100,19 +84,19 @@ var/datum/uplink/uplink = new()
|
|||||||
return desc
|
return desc
|
||||||
|
|
||||||
// get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying
|
// get_goods does not necessarily return physical objects, it is simply a way to acquire the uplink item without paying
|
||||||
/datum/uplink_item/proc/get_goods(var/obj/item/device/uplink/U, var/loc)
|
/datum/uplink_item/proc/get_goods(var/obj/item/device/uplink/U, var/loc, mob/user)
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
/datum/uplink_item/proc/log_icon()
|
/datum/uplink_item/proc/log_icon()
|
||||||
return
|
return
|
||||||
|
|
||||||
/datum/uplink_item/proc/purchase_log(obj/item/device/uplink/U)
|
/datum/uplink_item/proc/purchase_log(mob/M)
|
||||||
feedback_add_details("traitor_uplink_items_bought", "[src]")
|
feedback_add_details("traitor_uplink_items_bought", "[src]")
|
||||||
log_and_message_admins("used \the [U.loc] to buy \a [src]")
|
log_and_message_admins("\the [M] bought \a [src] through the uplink")
|
||||||
U.purchase_log[src] = U.purchase_log[src] + 1
|
M.mind.purchase_log[src] += 1
|
||||||
|
|
||||||
datum/uplink_item/dd_SortValue()
|
datum/uplink_item/dd_SortValue()
|
||||||
return cost(INFINITY)
|
return item_cost
|
||||||
|
|
||||||
/********************************
|
/********************************
|
||||||
* *
|
* *
|
||||||
@@ -133,7 +117,7 @@ datum/uplink_item/dd_SortValue()
|
|||||||
A.put_in_any_hand_if_possible(I)
|
A.put_in_any_hand_if_possible(I)
|
||||||
return I
|
return I
|
||||||
|
|
||||||
/datum/uplink_item/item/get_goods(var/obj/item/device/uplink/U, var/loc)
|
/datum/uplink_item/item/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user)
|
||||||
var/obj/item/I = new path(loc)
|
var/obj/item/I = new path(loc)
|
||||||
return I
|
return I
|
||||||
|
|
||||||
@@ -208,7 +192,7 @@ datum/uplink_item/dd_SortValue()
|
|||||||
|
|
||||||
/proc/get_surplus_items(var/obj/item/device/uplink/U, var/remaining_TC, var/loc)
|
/proc/get_surplus_items(var/obj/item/device/uplink/U, var/remaining_TC, var/loc)
|
||||||
var/list/bought_items = list()
|
var/list/bought_items = list()
|
||||||
var/override = 1
|
var/override = TRUE
|
||||||
while(remaining_TC)
|
while(remaining_TC)
|
||||||
var/datum/uplink_item/I = all_uplink_selection.get_random_item(remaining_TC, U, bought_items, override)
|
var/datum/uplink_item/I = all_uplink_selection.get_random_item(remaining_TC, U, bought_items, override)
|
||||||
if(!I)
|
if(!I)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
/datum/antagonist/proc/print_player_summary()
|
/datum/antagonist/proc/print_player_summary()
|
||||||
|
|
||||||
if(!current_antagonists.len)
|
if(!current_antagonists.len)
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
var/text = "<br><br><font size = 2><b>The [current_antagonists.len == 1 ? "[role_text] was" : "[role_text_plural] were"]:</b></font>"
|
var/text = "<br><br><font size = 2><b>The [current_antagonists.len == 1 ? "[role_text] was" : "[role_text_plural] were"]:</b></font>"
|
||||||
for(var/datum/mind/P in current_antagonists)
|
for(var/datum/mind/P in current_antagonists)
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
else
|
else
|
||||||
text += "<font color='red'>Fail.</font>"
|
text += "<font color='red'>Fail.</font>"
|
||||||
feedback_add_details(feedback_tag,"[O.type]|FAIL")
|
feedback_add_details(feedback_tag,"[O.type]|FAIL")
|
||||||
failed = 1
|
failed = TRUE
|
||||||
num++
|
num++
|
||||||
if(failed)
|
if(failed)
|
||||||
text += "<br><font color='red'><B>The [role_text] has failed.</B></font>"
|
text += "<br><font color='red'><B>The [role_text] has failed.</B></font>"
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
text += "<BR><FONT size = 2>Their objectives were:</FONT>"
|
text += "<BR><FONT size = 2>Their objectives were:</FONT>"
|
||||||
var/num = 1
|
var/num = 1
|
||||||
for(var/datum/objective/O in global_objectives)
|
for(var/datum/objective/O in global_objectives)
|
||||||
text += print_objective(O, num, 1)
|
text += print_objective(O, num, TRUE)
|
||||||
num++
|
num++
|
||||||
|
|
||||||
// Display the results.
|
// Display the results.
|
||||||
@@ -68,14 +68,14 @@
|
|||||||
/datum/antagonist/proc/print_player_full(var/datum/mind/ply)
|
/datum/antagonist/proc/print_player_full(var/datum/mind/ply)
|
||||||
var/text = print_player_lite(ply)
|
var/text = print_player_lite(ply)
|
||||||
|
|
||||||
var/TC_uses = 0
|
var/TC_uses = FALSE
|
||||||
var/uplink_true = 0
|
var/uplink_true = FALSE
|
||||||
var/purchases = ""
|
var/purchases = ""
|
||||||
for(var/obj/item/device/uplink/H in GLOB.world_uplinks)
|
for(var/mob/M in player_list)
|
||||||
if(H && H.uplink_owner && H.uplink_owner == ply)
|
if(M.mind && M.mind.used_TC)
|
||||||
TC_uses += H.used_TC
|
TC_uses += M.mind.used_TC
|
||||||
uplink_true = 1
|
uplink_true = TRUE
|
||||||
purchases += get_uplink_purchases(H)
|
purchases += get_uplink_purchases(M.mind)
|
||||||
if(uplink_true)
|
if(uplink_true)
|
||||||
text += " (used [TC_uses] TC)"
|
text += " (used [TC_uses] TC)"
|
||||||
if(purchases)
|
if(purchases)
|
||||||
@@ -83,18 +83,8 @@
|
|||||||
|
|
||||||
return text
|
return text
|
||||||
|
|
||||||
/proc/print_ownerless_uplinks()
|
/proc/get_uplink_purchases(var/datum/mind/M)
|
||||||
var/has_printed = 0
|
|
||||||
for(var/obj/item/device/uplink/H in GLOB.world_uplinks)
|
|
||||||
if(isnull(H.uplink_owner) && H.used_TC)
|
|
||||||
if(!has_printed)
|
|
||||||
has_printed = 1
|
|
||||||
to_world("<b>Ownerless Uplinks</b>")
|
|
||||||
to_world("[H.loc] (used [H.used_TC] TC)")
|
|
||||||
to_world(get_uplink_purchases(H))
|
|
||||||
|
|
||||||
/proc/get_uplink_purchases(var/obj/item/device/uplink/H)
|
|
||||||
var/list/refined_log = new()
|
var/list/refined_log = new()
|
||||||
for(var/datum/uplink_item/UI in H.purchase_log)
|
for(var/datum/uplink_item/UI in M.purchase_log)
|
||||||
refined_log.Add("[H.purchase_log[UI]]x[UI.log_icon()][UI.name]")
|
refined_log.Add("[M.purchase_log[UI]]x[UI.log_icon()][UI.name]")
|
||||||
. = english_list(refined_log, nothing_text = "")
|
. = english_list(refined_log, nothing_text = "")
|
||||||
|
|||||||
@@ -292,7 +292,6 @@ var/global/list/additional_antag_types = list()
|
|||||||
antag.check_victory()
|
antag.check_victory()
|
||||||
antag.print_player_summary()
|
antag.print_player_summary()
|
||||||
sleep(10)
|
sleep(10)
|
||||||
print_ownerless_uplinks()
|
|
||||||
|
|
||||||
var/clients = 0
|
var/clients = 0
|
||||||
var/surviving_humans = 0
|
var/surviving_humans = 0
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|
||||||
|
|
||||||
// I placed this here because of how relevant it is.
|
// I placed this here because of how relevant it is.
|
||||||
// You place this in your uplinkable item to check if an uplink is active or not.
|
// You place this in your uplinkable item to check if an uplink is active or not.
|
||||||
// If it is, it will display the uplink menu and return 1, else it'll return false.
|
// If it is, it will display the uplink menu and return 1, else it'll return false.
|
||||||
@@ -14,29 +12,19 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
|
|
||||||
/obj/item/device/uplink
|
/obj/item/device/uplink
|
||||||
var/welcome = "Welcome, Operative" // Welcoming menu message
|
var/welcome = "Welcome, Operative" // Welcoming menu message
|
||||||
var/uses // Numbers of crystals
|
|
||||||
var/list/ItemsCategory // List of categories with lists of items
|
var/list/ItemsCategory // List of categories with lists of items
|
||||||
var/list/ItemsReference // List of references with an associated item
|
var/list/ItemsReference // List of references with an associated item
|
||||||
var/list/nanoui_items // List of items for NanoUI use
|
var/list/nanoui_items // List of items for NanoUI use
|
||||||
var/faction = "" //Antag faction holder.
|
var/faction = "" //Antag faction holder.
|
||||||
|
|
||||||
var/list/purchase_log = new
|
|
||||||
var/datum/mind/uplink_owner = null
|
|
||||||
var/used_TC = 0
|
|
||||||
var/offer_time = 10 MINUTES //The time increment per discount offered
|
var/offer_time = 10 MINUTES //The time increment per discount offered
|
||||||
var/next_offer_time
|
var/next_offer_time
|
||||||
var/datum/uplink_item/discount_item //The item to be discounted
|
var/datum/uplink_item/discount_item //The item to be discounted
|
||||||
var/discount_amount //The amount as a percent the item will be discounted by
|
var/discount_amount //The amount as a percent the item will be discounted by
|
||||||
var/compact_mode = FALSE
|
var/compact_mode = FALSE
|
||||||
|
|
||||||
/obj/item/device/uplink/Initialize(var/mapload, var/datum/mind/owner = null, var/telecrystals = DEFAULT_TELECRYSTAL_AMOUNT)
|
/obj/item/device/uplink/Initialize(var/mapload)
|
||||||
. = ..()
|
. = ..()
|
||||||
uplink_owner = owner
|
|
||||||
purchase_log = list()
|
|
||||||
if(owner)
|
|
||||||
uses = owner.tcrystals
|
|
||||||
else
|
|
||||||
uses = telecrystals
|
|
||||||
addtimer(CALLBACK(src, .proc/next_offer), offer_time) //It seems like only the /hidden type actually makes use of this...
|
addtimer(CALLBACK(src, .proc/next_offer), offer_time) //It seems like only the /hidden type actually makes use of this...
|
||||||
|
|
||||||
/obj/item/device/uplink/get_item_cost(var/item_type, var/item_cost)
|
/obj/item/device/uplink/get_item_cost(var/item_type, var/item_cost)
|
||||||
@@ -85,7 +73,7 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
/obj/item/device/uplink/hidden/proc/trigger(mob/user as mob)
|
/obj/item/device/uplink/hidden/proc/trigger(mob/user as mob)
|
||||||
if(!active)
|
if(!active)
|
||||||
toggle()
|
toggle()
|
||||||
interact(user)
|
tgui_interact(user)
|
||||||
|
|
||||||
// Checks to see if the value meets the target. Like a frequency being a traitor_frequency, in order to unlock a headset.
|
// Checks to see if the value meets the target. Like a frequency being a traitor_frequency, in order to unlock a headset.
|
||||||
// If true, it accesses trigger() and returns 1. If it fails, it returns false. Use this to see if you need to close the
|
// If true, it accesses trigger() and returns 1. If it fails, it returns false. Use this to see if you need to close the
|
||||||
@@ -93,8 +81,8 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
/obj/item/device/uplink/hidden/proc/check_trigger(mob/user as mob, var/value, var/target)
|
/obj/item/device/uplink/hidden/proc/check_trigger(mob/user as mob, var/value, var/target)
|
||||||
if(value == target)
|
if(value == target)
|
||||||
trigger(user)
|
trigger(user)
|
||||||
return 1
|
return TRUE
|
||||||
return 0
|
return FALSE
|
||||||
|
|
||||||
// Legacy
|
// Legacy
|
||||||
/obj/item/device/uplink/hidden/interact(mob/user)
|
/obj/item/device/uplink/hidden/interact(mob/user)
|
||||||
@@ -107,12 +95,11 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
return loc
|
return loc
|
||||||
|
|
||||||
/obj/item/device/uplink/hidden/tgui_state(mob/user)
|
/obj/item/device/uplink/hidden/tgui_state(mob/user)
|
||||||
return GLOB.tgui_inventory_state
|
return GLOB.tgui_deep_inventory_state
|
||||||
|
|
||||||
/obj/item/device/uplink/hidden/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
|
/obj/item/device/uplink/hidden/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui)
|
||||||
if(!active)
|
if(!active)
|
||||||
toggle()
|
toggle()
|
||||||
uses = user.mind.tcrystals
|
|
||||||
ui = SStgui.try_update_ui(user, src, ui)
|
ui = SStgui.try_update_ui(user, src, ui)
|
||||||
if(!ui)
|
if(!ui)
|
||||||
ui = new(user, src, "Uplink", "Remote Uplink")
|
ui = new(user, src, "Uplink", "Remote Uplink")
|
||||||
@@ -127,7 +114,7 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
|
|
||||||
var/list/data = ..()
|
var/list/data = ..()
|
||||||
|
|
||||||
data["telecrystals"] = uses
|
data["telecrystals"] = user.mind.tcrystals
|
||||||
data["lockable"] = TRUE
|
data["lockable"] = TRUE
|
||||||
data["compactMode"] = compact_mode
|
data["compactMode"] = compact_mode
|
||||||
|
|
||||||
@@ -177,22 +164,19 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
|
|
||||||
data["categories"] = list()
|
data["categories"] = list()
|
||||||
for(var/datum/uplink_category/category in uplink.categories)
|
for(var/datum/uplink_category/category in uplink.categories)
|
||||||
if(category.can_view(src))
|
var/list/cat = list(
|
||||||
var/list/cat = list(
|
|
||||||
"name" = category.name,
|
"name" = category.name,
|
||||||
"items" = (category == selected_cat ? list() : null)
|
"items" = (category == selected_cat ? list() : null)
|
||||||
)
|
)
|
||||||
for(var/datum/uplink_item/item in category.items)
|
for(var/datum/uplink_item/item in category.items)
|
||||||
if(!item.can_view(src))
|
var/cost = item.cost(src, user) || "???"
|
||||||
continue
|
cat["items"] += list(list(
|
||||||
var/cost = item.cost(uses, src) || "???"
|
"name" = item.name,
|
||||||
cat["items"] += list(list(
|
"cost" = cost,
|
||||||
"name" = item.name,
|
"desc" = item.description(),
|
||||||
"cost" = cost,
|
"ref" = REF(item),
|
||||||
"desc" = item.description(),
|
))
|
||||||
"ref" = REF(item),
|
data["categories"] += list(cat)
|
||||||
))
|
|
||||||
data["categories"] += list(cat)
|
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
@@ -228,9 +212,9 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
//
|
//
|
||||||
// Includes normal radio uplink, multitool uplink,
|
// Includes normal radio uplink, multitool uplink,
|
||||||
// implant uplink (not the implant tool) and a preset headset uplink.
|
// implant uplink (not the implant tool) and a preset headset uplink.
|
||||||
/obj/item/device/radio/uplink/New(atom/loc, datum/mind/target_mind, telecrystals)
|
/obj/item/device/radio/uplink/New()
|
||||||
..(loc)
|
..()
|
||||||
hidden_uplink = new(src, target_mind, telecrystals)
|
hidden_uplink = new(src)
|
||||||
icon_state = "radio"
|
icon_state = "radio"
|
||||||
|
|
||||||
/obj/item/device/radio/uplink/attack_self(mob/user as mob)
|
/obj/item/device/radio/uplink/attack_self(mob/user as mob)
|
||||||
@@ -238,6 +222,7 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
hidden_uplink.trigger(user)
|
hidden_uplink.trigger(user)
|
||||||
|
|
||||||
/obj/item/device/multitool/uplink/New()
|
/obj/item/device/multitool/uplink/New()
|
||||||
|
..()
|
||||||
hidden_uplink = new(src)
|
hidden_uplink = new(src)
|
||||||
|
|
||||||
/obj/item/device/multitool/uplink/attack_self(mob/user as mob)
|
/obj/item/device/multitool/uplink/attack_self(mob/user as mob)
|
||||||
@@ -250,4 +235,3 @@ GLOBAL_LIST_BOILERPLATE(world_uplinks, /obj/item/device/uplink)
|
|||||||
/obj/item/device/radio/headset/uplink/New()
|
/obj/item/device/radio/headset/uplink/New()
|
||||||
..()
|
..()
|
||||||
hidden_uplink = new(src)
|
hidden_uplink = new(src)
|
||||||
hidden_uplink.uses = DEFAULT_TELECRYSTAL_AMOUNT
|
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random
|
|||||||
if(!prob(RI.keep_probability))
|
if(!prob(RI.keep_probability))
|
||||||
continue
|
continue
|
||||||
var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item]
|
var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item]
|
||||||
if(I.cost(telecrystals, U) > telecrystals)
|
if(I.cost(U) > telecrystals)
|
||||||
continue
|
continue
|
||||||
if(bought_items && (I in bought_items) && !prob(RI.reselect_probability))
|
if(bought_items && (I in bought_items) && !prob(RI.reselect_probability))
|
||||||
continue
|
continue
|
||||||
if(U && !I.can_buy(U))
|
if(U && !I.can_buy(U, telecrystals))
|
||||||
continue
|
continue
|
||||||
return I
|
return I
|
||||||
|
|
||||||
|
|||||||
@@ -307,5 +307,4 @@ var/list/civilian_cartridges = list(
|
|||||||
name = "F.R.A.M.E. cartridge"
|
name = "F.R.A.M.E. cartridge"
|
||||||
icon_state = "cart"
|
icon_state = "cart"
|
||||||
charges = 5
|
charges = 5
|
||||||
var/telecrystals = 0
|
|
||||||
messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/frame)
|
messenger_plugins = list(new/datum/data/pda/messenger_plugin/virus/frame)
|
||||||
|
|||||||
@@ -85,7 +85,4 @@
|
|||||||
P.lock_code = lock_code
|
P.lock_code = lock_code
|
||||||
// else
|
// else
|
||||||
// P.hidden_uplink.hidden_crystals += P.hidden_uplink.uses //Temporarially hide the PDA's crystals, so you can't steal telecrystals.
|
// P.hidden_uplink.hidden_crystals += P.hidden_uplink.uses //Temporarially hide the PDA's crystals, so you can't steal telecrystals.
|
||||||
var/obj/item/weapon/cartridge/frame/parent_cart = pda.cartridge
|
|
||||||
P.hidden_uplink.uses = parent_cart.telecrystals
|
|
||||||
parent_cart.telecrystals = 0
|
|
||||||
P.hidden_uplink.active = TRUE
|
P.hidden_uplink.active = TRUE
|
||||||
|
|||||||
Reference in New Issue
Block a user