mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 11:37:40 +01:00
Merge remote-tracking branch 'Paradise/master' into nanoui-is-dead
This commit is contained in:
@@ -1392,9 +1392,9 @@ About the new airlock wires panel:
|
||||
ae = new/obj/item/airlock_electronics(loc)
|
||||
check_access()
|
||||
if(req_access.len)
|
||||
ae.conf_access = req_access
|
||||
ae.selected_accesses = req_access
|
||||
else if(req_one_access.len)
|
||||
ae.conf_access = req_one_access
|
||||
ae.selected_accesses = req_one_access
|
||||
ae.one_access = 1
|
||||
else
|
||||
ae = electronics
|
||||
|
||||
@@ -3,16 +3,29 @@
|
||||
icon = 'icons/obj/doors/door_assembly.dmi'
|
||||
icon_state = "door_electronics"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=50)
|
||||
materials = list(MAT_METAL = 50, MAT_GLASS = 50)
|
||||
origin_tech = "engineering=2;programming=1"
|
||||
req_access = list(ACCESS_ENGINE)
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/deconstruct.ogg'
|
||||
var/list/conf_access = null
|
||||
var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access
|
||||
var/const/max_brain_damage = 60 // Maximum brain damage a mob can have until it can't use the electronics
|
||||
var/unres_sides = 0
|
||||
var/unres_direction = null
|
||||
/// List of accesses currently set
|
||||
var/list/selected_accesses = list()
|
||||
/// Is the door access using req_one_access (TRUE) or req_access (FALSE)
|
||||
var/one_access = FALSE
|
||||
/// An associative list containing all station accesses. Includes their name and access number.
|
||||
var/static/list/door_accesses_list = list()
|
||||
/// Maximum brain damage a mob can have until it can't use the electronics
|
||||
var/const/max_brain_damage = 60
|
||||
/// Which direction has unrestricted access to the airlock (e.g. medbay doors from the inside)
|
||||
var/unres_access_from = null
|
||||
|
||||
/obj/item/airlock_electronics/Initialize(mapload)
|
||||
. = ..()
|
||||
if(!length(door_accesses_list))
|
||||
for(var/access in get_all_accesses())
|
||||
door_accesses_list += list(list(
|
||||
"name" = get_access_desc(access),
|
||||
"id" = access))
|
||||
|
||||
/obj/item/airlock_electronics/attack_self(mob/user)
|
||||
if(!ishuman(user) && !isrobot(user))
|
||||
@@ -21,82 +34,71 @@
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.getBrainLoss() >= max_brain_damage)
|
||||
to_chat(user, "<span class='warning'>You forget how to use \the [src].</span>")
|
||||
to_chat(user, "<span class='warning'>You forget how to use [src].</span>")
|
||||
return
|
||||
tgui_interact(user)
|
||||
|
||||
var/t1 = text("<B>Access control</B><br>\n")
|
||||
t1 += "<hr>"
|
||||
t1 += "<B> Unrestricted Access Settings</B><br>"
|
||||
|
||||
var/list/Directions = list("North","South",,"East",,,,"West")
|
||||
for(var/direction in GLOB.cardinal)
|
||||
if (unres_direction && unres_direction == direction)
|
||||
t1 += "<a style='color: red' href='?src=[UID()];unres_direction=[direction]'>[Directions[direction]]</a><br>"
|
||||
else
|
||||
t1 += "<a href='?src=[UID()];unres_direction=[direction]'>[Directions[direction]]</a><br>"
|
||||
// tgui\packages\tgui\interfaces\AirlockElectronics.js
|
||||
/obj/item/airlock_electronics/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_inventory_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "AirlockElectronics", name, 450, 575, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
t1 += "<hr>"
|
||||
t1 += "Access requirement is set to "
|
||||
t1 += one_access ? "<a style='color: green' href='?src=[UID()];one_access=1'>ONE</a><hr>" : "<a style='color: red' href='?src=[UID()];one_access=1'>ALL</a><hr>"
|
||||
/obj/item/airlock_electronics/tgui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["selected_accesses"] = selected_accesses
|
||||
data["one_access"] = one_access
|
||||
data["unrestricted_dir"] = dir2text(unres_access_from)
|
||||
return data
|
||||
|
||||
t1 += conf_access == null ? "<font color=red>All</font><br>" : "<a href='?src=[UID()];access=all'>All</a><br>"
|
||||
/obj/item/airlock_electronics/tgui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["regions"] = get_accesslist_static_data(REGION_GENERAL, REGION_COMMAND)
|
||||
data["door_access_list"] = door_accesses_list
|
||||
return data
|
||||
|
||||
var/list/accesses = get_all_accesses()
|
||||
for(var/acc in accesses)
|
||||
var/aname = get_access_desc(acc)
|
||||
|
||||
if(!conf_access || !conf_access.len || !(acc in conf_access))
|
||||
t1 += "<a href='?src=[UID()];access=[acc]'>[aname]</a><br>"
|
||||
else if(one_access)
|
||||
t1 += "<a style='color: green' href='?src=[UID()];access=[acc]'>[aname]</a><br>"
|
||||
else
|
||||
t1 += "<a style='color: red' href='?src=[UID()];access=[acc]'>[aname]</a><br>"
|
||||
|
||||
t1 += "<p><a href='?src=[UID()];close=1'>Close</a></p>\n"
|
||||
|
||||
var/datum/browser/popup = new(user, "airlock_electronics", name, 400, 400)
|
||||
popup.set_content(t1)
|
||||
popup.open(0)
|
||||
onclose(user, "airlock")
|
||||
|
||||
/obj/item/airlock_electronics/Topic(href, href_list)
|
||||
..()
|
||||
|
||||
if(usr.incapacitated() || (!ishuman(usr) && !isrobot(usr)))
|
||||
return 1
|
||||
|
||||
if(href_list["close"])
|
||||
usr << browse(null, "window=airlock_electronics")
|
||||
/obj/item/airlock_electronics/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state)
|
||||
if(..())
|
||||
return
|
||||
|
||||
if(href_list["one_access"])
|
||||
one_access = !one_access
|
||||
. = TRUE
|
||||
// Mostly taken from the RCD code
|
||||
switch(action)
|
||||
if("unrestricted_access")
|
||||
var/direction = text2dir(params["unres_dir"])
|
||||
if(direction == unres_access_from)
|
||||
unres_access_from = null // Deselecting
|
||||
return
|
||||
unres_access_from = direction
|
||||
|
||||
if(href_list["access"])
|
||||
toggle_access(href_list["access"])
|
||||
if("set_one_access")
|
||||
one_access = params["access"] == "one" ? TRUE : FALSE
|
||||
|
||||
if(href_list["unres_direction"])
|
||||
unres_direction = text2num(href_list["unres_direction"])
|
||||
if (unres_sides == unres_direction)
|
||||
unres_sides = 0
|
||||
unres_direction = null
|
||||
else
|
||||
unres_sides = unres_direction
|
||||
if("set")
|
||||
var/access = text2num(params["access"])
|
||||
if(isnull(access))
|
||||
return FALSE
|
||||
if(access in selected_accesses)
|
||||
selected_accesses -= access
|
||||
else
|
||||
selected_accesses |= access
|
||||
|
||||
attack_self(usr)
|
||||
if("grant_region")
|
||||
var/region = text2num(params["region"])
|
||||
if(isnull(region) || region < REGION_GENERAL || region > REGION_COMMAND)
|
||||
return FALSE
|
||||
selected_accesses |= get_region_accesses(region)
|
||||
|
||||
/obj/item/airlock_electronics/proc/toggle_access(access)
|
||||
if(access == "all")
|
||||
conf_access = null
|
||||
else
|
||||
var/req = text2num(access)
|
||||
if("deny_region")
|
||||
var/region = text2num(params["region"])
|
||||
if(isnull(region) || region < REGION_GENERAL || region > REGION_COMMAND)
|
||||
return FALSE
|
||||
selected_accesses -= get_region_accesses(region)
|
||||
|
||||
if(conf_access == null)
|
||||
conf_access = list()
|
||||
if("grant_all")
|
||||
selected_accesses = get_all_accesses()
|
||||
|
||||
if(!(req in conf_access))
|
||||
conf_access += req
|
||||
else
|
||||
conf_access -= req
|
||||
if(!conf_access.len)
|
||||
conf_access = null
|
||||
if("clear_all")
|
||||
selected_accesses = list()
|
||||
|
||||
@@ -296,9 +296,9 @@
|
||||
if(!req_access)
|
||||
check_access()
|
||||
if(req_access.len)
|
||||
ae.conf_access = req_access
|
||||
ae.selected_accesses = req_access
|
||||
else if(req_one_access.len)
|
||||
ae.conf_access = req_one_access
|
||||
ae.selected_accesses = req_one_access
|
||||
ae.one_access = 1
|
||||
else
|
||||
ae = electronics
|
||||
|
||||
@@ -283,11 +283,14 @@
|
||||
if(!premium.len)
|
||||
to_chat(user, "<span class='warning'>[src] does not accept coins.</span>")
|
||||
return
|
||||
if(coin)
|
||||
to_chat(user, "<span class='warning'>There is already a coin in this machine!</span>")
|
||||
return
|
||||
if(!user.drop_item())
|
||||
return
|
||||
I.forceMove(src)
|
||||
coin = I
|
||||
to_chat(user, "<span class='notice'>You insert the [I] into the [src]</span>")
|
||||
to_chat(user, "<span class='notice'>You insert [I] into the [src]</span>")
|
||||
SStgui.update_uis(src)
|
||||
return
|
||||
if(refill_canister && istype(I, refill_canister))
|
||||
|
||||
@@ -54,7 +54,8 @@
|
||||
R.name = heldname
|
||||
R.custom_name = heldname
|
||||
R.real_name = heldname
|
||||
|
||||
if(R.mmi && R.mmi.brainmob)
|
||||
R.mmi.brainmob.name = R.name
|
||||
return TRUE
|
||||
|
||||
/obj/item/borg/upgrade/restart
|
||||
|
||||
@@ -201,9 +201,9 @@
|
||||
electronics.forceMove(display)
|
||||
display.electronics = electronics
|
||||
if(electronics.one_access)
|
||||
display.req_one_access = electronics.conf_access
|
||||
display.req_one_access = electronics.selected_accesses
|
||||
else
|
||||
display.req_access = electronics.conf_access
|
||||
display.req_access = electronics.selected_accesses
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -175,13 +175,13 @@
|
||||
door = new airlock_type(loc)
|
||||
door.setDir(dir)
|
||||
door.electronics = electronics
|
||||
door.unres_sides = electronics.unres_sides
|
||||
door.unres_sides = electronics.unres_access_from
|
||||
door.heat_proof = heat_proof_finished
|
||||
if(electronics.one_access)
|
||||
door.req_access = null
|
||||
door.req_one_access = electronics.conf_access
|
||||
door.req_one_access = electronics.selected_accesses
|
||||
else
|
||||
door.req_access = electronics.conf_access
|
||||
door.req_access = electronics.selected_accesses
|
||||
if(created_name)
|
||||
door.name = created_name
|
||||
else
|
||||
|
||||
@@ -203,9 +203,9 @@
|
||||
windoor.density = FALSE
|
||||
|
||||
if(electronics.one_access)
|
||||
windoor.req_one_access = electronics.conf_access
|
||||
windoor.req_one_access = electronics.selected_accesses
|
||||
else
|
||||
windoor.req_access = electronics.conf_access
|
||||
windoor.req_access = electronics.selected_accesses
|
||||
windoor.electronics = src.electronics
|
||||
electronics.forceMove(windoor)
|
||||
electronics = null
|
||||
|
||||
Reference in New Issue
Block a user