Merge pull request #16038 from SandPoot/fix-lava+borgs

Deals with lava plus a lot of borg stuff
This commit is contained in:
deathride58
2023-12-12 19:25:13 -05:00
committed by GitHub
12 changed files with 417 additions and 285 deletions
+55 -15
View File
@@ -50,15 +50,12 @@
"lockdown" = borg.locked_down,
"scrambledcodes" = borg.scrambledcodes
)
.["upgrades"] = list()
for (var/upgradetype in subtypesof(/obj/item/borg/upgrade)-/obj/item/borg/upgrade/hypospray) //hypospray is a dummy parent for hypospray upgrades
var/obj/item/borg/upgrade/upgrade = upgradetype
if (initial(upgrade.module_type) && !is_type_in_list(borg.module, initial(upgrade.module_type))) // Upgrade requires a different module
continue
var/installed = FALSE
if (locate(upgradetype) in borg)
installed = TRUE
.["upgrades"] += list(list("name" = initial(upgrade.name), "installed" = installed, "type" = upgradetype))
var/obj/item/gun/energy/kinetic_accelerator/kinetic_accelerator = locate(/obj/item/gun/energy/kinetic_accelerator) in borg.module
if(kinetic_accelerator)
.["ka_remaining_capacity"] = kinetic_accelerator.get_remaining_mod_capacity()
.["active_upgrades"] = list()
for (var/obj/item/borg/upgrade/upgrade as anything in borg.upgrades) // put a non-upgrade here, i dare you.
.["active_upgrades"] += list(list("type" = upgrade.type))
.["laws"] = borg.laws ? borg.laws.get_law_list(include_zeroth = TRUE, render_html = FALSE) : list()
.["channels"] = list()
for (var/k in GLOB.radiochannels)
@@ -77,6 +74,28 @@
for(var/mob/living/silicon/ai/ai in GLOB.ai_list)
.["ais"] += list(list("name" = ai.name, "ref" = REF(ai), "connected" = (borg.connected_ai == ai)))
/datum/borgpanel/ui_static_data(mob/user)
. = ..()
.["upgrades"] = list()
for(var/obj/item/borg/upgrade/upgrade as anything in GLOB.borg_upgrades)
if(upgrade.type == upgrade.abstract_type)
continue
var/obj/item/borg/upgrade/modkit/modkit
if(istype(upgrade, /obj/item/borg/upgrade/modkit))
modkit = upgrade
if(modkit.minebot_exclusive)
continue
modkit = upgrade
.["upgrades"] += list(
list(
"name" = upgrade.name,
"type" = upgrade.type,
"module_type" = upgrade.module_type,
"maximum_of_type" = modkit ? modkit.maximum_of_type : null,
"denied_type" = modkit ? modkit.denied_type : null,
"cost" = modkit ? modkit.cost : null
)
)
/datum/borgpanel/ui_act(action, params)
if(..())
@@ -148,17 +167,31 @@
var/upgradepath = text2path(params["upgrade"])
var/obj/item/borg/upgrade/installedupgrade = locate(upgradepath) in borg
if (installedupgrade)
installedupgrade.deactivate(borg, user)
borg.upgrades -= installedupgrade
qdel(installedupgrade)
message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] removed the [installedupgrade] upgrade from [key_name(borg)].")
qdel(installedupgrade)
else
var/obj/item/borg/upgrade/upgrade = new upgradepath(borg)
upgrade.action(borg, user)
borg.upgrades += upgrade
var/obj/item/borg/upgrade/upgrade = new upgradepath()
if(!borg.apply_upgrade(upgrade, user, TRUE))
to_chat(user, span_danger("Upgrade error."))
return
message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] added the [upgrade] borg upgrade to [key_name(borg)].")
if ("add_upgrade")
var/upgradepath = text2path(params["upgrade"])
var/obj/item/borg/upgrade/upgrade = new upgradepath()
if(!borg.apply_upgrade(upgrade, user, TRUE))
to_chat(user, span_danger("Upgrade error."))
return
message_admins("[key_name_admin(user)] added the [upgrade] borg upgrade to [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] added the [upgrade] borg upgrade to [key_name(borg)].")
if ("remove_upgrade")
var/upgradepath = text2path(params["upgrade"])
var/obj/item/borg/upgrade/installedupgrade = locate(upgradepath) in borg
if (installedupgrade)
qdel(installedupgrade)
message_admins("[key_name_admin(user)] removed the [installedupgrade] upgrade from [ADMIN_LOOKUPFLW(borg)].")
log_admin("[key_name(user)] removed the [installedupgrade] upgrade from [key_name(borg)].")
if ("toggle_radio")
var/channel = params["channel"]
if (channel in borg.radio.channels) // We're removing a channel
@@ -236,3 +269,10 @@
message_admins("[key_name_admin(usr)] added [chosenboard] to [ADMIN_LOOKUPFLW(beepboop)].")
log_admin("[key_name(usr)] added [chosenboard] to [key_name(beepboop)].")
qdel(new_board)
GLOBAL_LIST_INIT(borg_upgrades, populate_borg_upgrades())
/proc/populate_borg_upgrades()
. = list()
for(var/type in typesof(/obj/item/borg/upgrade))
. += new type