From 5b704dbf5d0f3d4cf81c34e55edff6b9f8717bb1 Mon Sep 17 00:00:00 2001 From: forest2001 Date: Mon, 30 Oct 2023 16:29:08 +0000 Subject: [PATCH 1/5] pda --- code/game/machinery/ARES/ARES_procs.dm | 34 +++ code/game/machinery/ARES/apollo_pda.dm | 393 +++++++++++++++++++++++++ colonialmarines.dme | 1 + icons/obj/items/synth/wj_pda.dmi | Bin 0 -> 928 bytes 4 files changed, 428 insertions(+) create mode 100644 code/game/machinery/ARES/apollo_pda.dm create mode 100644 icons/obj/items/synth/wj_pda.dmi diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index 4dbcf794f7be..831f76e48930 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -258,3 +258,37 @@ GLOBAL_LIST_INIT(maintenance_categories, list( return "Working Joe" if(APOLLO_ACCESS_DEBUG)//6 return "AI Service Technician" + +/obj/item/device/working_joe_pda/proc/get_ares_access(obj/item/card/id/card) + if(ACCESS_ARES_DEBUG in card.access) + return APOLLO_ACCESS_DEBUG + switch(card.assignment) + if(JOB_WORKING_JOE) + return APOLLO_ACCESS_JOE + if(JOB_CHIEF_ENGINEER, JOB_SYNTH, JOB_CO) + return APOLLO_ACCESS_AUTHED + if(ACCESS_MARINE_AI in card.access) + return APOLLO_ACCESS_AUTHED + if(ACCESS_MARINE_AI_TEMP in card.access) + return APOLLO_ACCESS_TEMP + if((ACCESS_MARINE_SENIOR in card.access ) || (ACCESS_MARINE_ENGINEERING in card.access) || (ACCESS_WY_GENERAL in card.access)) + return APOLLO_ACCESS_REPORTER + else + return APOLLO_ACCESS_REQUEST + +/obj/item/device/working_joe_pda/proc/ares_auth_to_text(access_level) + switch(access_level) + if(APOLLO_ACCESS_LOGOUT)//0 + return "Logged Out" + if(APOLLO_ACCESS_REQUEST)//1 + return "Unauthorized Personnel" + if(APOLLO_ACCESS_REPORTER)//2 + return "Validated Incident Reporter" + if(APOLLO_ACCESS_TEMP)//3 + return "Authorized Visitor" + if(APOLLO_ACCESS_AUTHED)//4 + return "Certified Personnel" + if(APOLLO_ACCESS_JOE)//5 + return "Working Joe" + if(APOLLO_ACCESS_DEBUG)//6 + return "AI Service Technician" diff --git a/code/game/machinery/ARES/apollo_pda.dm b/code/game/machinery/ARES/apollo_pda.dm new file mode 100644 index 000000000000..e28481266795 --- /dev/null +++ b/code/game/machinery/ARES/apollo_pda.dm @@ -0,0 +1,393 @@ +/obj/item/device/working_joe_pda + icon = 'icons/obj/items/synth/wj_pda.dmi' + name = "karnak pda" + desc = "A portable interface used by Working Joes, capable of connecting to the local command AI to relay tasking information. Built to withstand a nuclear bomb." + icon_state = "karnak_off" + item_state = "Cotablet" + unacidable = TRUE + indestructible = TRUE + req_one_access = list(ACCESS_MARINE_AI_TEMP, ACCESS_MARINE_AI, ACCESS_ARES_DEBUG) + + /// The ID used to link all devices. + var/datum/ares_link/link + /// The datacore storing all the information. + var/datum/ares_datacore/datacore + + var/current_menu = "login" + var/last_menu = "" + + var/authentication = ARES_ACCESS_BASIC + /// The last person to login. + var/last_login + + +/obj/item/device/working_joe_pda/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) + if(link && !override) + return FALSE + if(new_link) + new_link.ticket_computers += src + link = new_link + new_link.linked_systems += src + if(!datacore) + datacore = GLOB.ares_datacore + return TRUE + +/obj/item/device/working_joe_pda/Initialize(mapload, ...) + link_systems(override = FALSE) + . = ..() + +/obj/item/device/working_joe_pda/proc/delink() + if(link) + link.ticket_computers -= src + link.linked_systems -= src + link = null + datacore = null + +/obj/item/device/working_joe_pda/Destroy() + delink() + return ..() + +// ------ Maintenance Controller UI ------ // +/obj/item/device/working_joe_pda/attack_self(mob/user) + if(..() || !allowed(usr)) + return FALSE + + tgui_interact(user) + return TRUE + +/obj/item/device/working_joe_pda/tgui_interact(mob/user, datum/tgui/ui, datum/ui_state/state) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "WorkingJoe", name) + ui.open() + +/obj/item/device/working_joe_pda/ui_data(mob/user) + var/list/data = list() + + data["current_menu"] = current_menu + data["last_page"] = last_menu + + data["logged_in"] = last_login + + data["access_text"] = "access level [authentication], [ares_auth_to_text(authentication)]." + data["access_level"] = authentication + + data["alert_level"] = security_level + data["worldtime"] = world.time + + data["access_log"] = list() + data["access_log"] += datacore.apollo_login_list + + data["apollo_log"] = list() + data["apollo_log"] += datacore.apollo_log + + var/list/logged_maintenance = list() + for(var/datum/ares_ticket/maintenance/maint_ticket as anything in link.tickets_maintenance) + if(!istype(maint_ticket)) + continue + var/lock_status = TICKET_OPEN + switch(maint_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_COMPLETED) + lock_status = TICKET_CLOSED + + var/list/current_maint = list() + current_maint["id"] = maint_ticket.ticket_id + current_maint["time"] = maint_ticket.ticket_time + current_maint["priority_status"] = maint_ticket.ticket_priority + current_maint["category"] = maint_ticket.ticket_name + current_maint["details"] = maint_ticket.ticket_details + current_maint["status"] = maint_ticket.ticket_status + current_maint["submitter"] = maint_ticket.ticket_submitter + current_maint["assignee"] = maint_ticket.ticket_assignee + current_maint["lock_status"] = lock_status + current_maint["ref"] = "\ref[maint_ticket]" + logged_maintenance += list(current_maint) + data["maintenance_tickets"] = logged_maintenance + + var/list/logged_access = list() + var/list/requesting_access = list() + for(var/datum/ares_ticket/access/access_ticket as anything in link.tickets_access) + var/lock_status = TICKET_OPEN + switch(access_ticket.ticket_status) + if(TICKET_REJECTED, TICKET_CANCELLED, TICKET_REVOKED) + lock_status = TICKET_CLOSED + + var/list/current_ticket = list() + current_ticket["id"] = access_ticket.ticket_id + current_ticket["time"] = access_ticket.ticket_time + current_ticket["priority_status"] = access_ticket.ticket_priority + current_ticket["title"] = access_ticket.ticket_name + current_ticket["details"] = access_ticket.ticket_details + current_ticket["status"] = access_ticket.ticket_status + current_ticket["submitter"] = access_ticket.ticket_submitter + current_ticket["assignee"] = access_ticket.ticket_assignee + current_ticket["lock_status"] = lock_status + current_ticket["ref"] = "\ref[access_ticket]" + logged_access += list(current_ticket) + + if(lock_status == TICKET_OPEN) + requesting_access += access_ticket.ticket_name + data["access_tickets"] = logged_access + + return data + +/obj/item/device/working_joe_pda/ui_status(mob/user, datum/ui_state/state) + . = ..() + if(!allowed(user)) + return UI_UPDATE + +/obj/item/device/working_joe_pda/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/playsound = TRUE + var/mob/living/carbon/human/operator = usr + + switch (action) + if("go_back") + if(!last_menu) + return to_chat(usr, SPAN_WARNING("Error, no previous page detected.")) + var/temp_holder = current_menu + current_menu = last_menu + last_menu = temp_holder + + if("login") + + var/obj/item/card/id/idcard = operator.get_active_hand() + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + authentication = get_ares_access(idcard) + last_login = idcard.registered_name + else + to_chat(operator, SPAN_WARNING("You require an ID card to access this terminal!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(authentication) + datacore.apollo_login_list += "[last_login] at [worldtime2text()], Access Level [authentication] - [ares_auth_to_text(authentication)]." + current_menu = "main" + + if("logout") + last_menu = current_menu + current_menu = "login" + datacore.apollo_login_list += "[last_login] logged out at [worldtime2text()]." + + if("home") + last_menu = current_menu + current_menu = "main" + if("page_logins") + last_menu = current_menu + current_menu = "login_records" + if("page_apollo") + last_menu = current_menu + current_menu = "apollo" + if("page_request") + last_menu = current_menu + current_menu = "access_requests" + if("page_report") + last_menu = current_menu + current_menu = "maint_reports" + if("page_tickets") + last_menu = current_menu + current_menu = "access_tickets" + if("page_maintenance") + last_menu = current_menu + current_menu = "maint_claim" + + if("new_report") + var/priority_report = FALSE + var/maint_type = tgui_input_list(operator, "What is the type of maintenance item you wish to report?", "Report Category", GLOB.maintenance_categories, 30 SECONDS) + switch(maint_type) + if("Major Structural Damage", "Fire", "Communications Failure", "Power Generation Failure") + priority_report = TRUE + + if(!maint_type) + return FALSE + var/details = tgui_input_text(operator, "What are the details for this report?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + if((authentication >= APOLLO_ACCESS_REPORTER) && !priority_report) + var/is_priority = tgui_alert(operator, "Is this a priority report?", "Priority designation", list("Yes", "No")) + if(is_priority == "Yes") + priority_report = TRUE + + var/confirm = alert(operator, "Please confirm the submission of your maintenance report. \n\n Priority: [priority_report ? "Yes" : "No"]\n Category: '[maint_type]'\n Details: '[details]'\n\n Is this correct?", "Confirmation", "Yes", "No") + if(confirm == "Yes") + if(link) + var/datum/ares_ticket/maintenance/maint_ticket = new(last_login, maint_type, details, priority_report) + link.tickets_maintenance += maint_ticket + if(priority_report) + ares_apollo_talk("Priority Maintenance Report: [maint_type] - ID [maint_ticket.ticket_id]. Seek and resolve.") + log_game("ARES: Maintenance Ticket '\ref[maint_ticket]' created by [key_name(operator)] as [last_login] with Category '[maint_type]' and Details of '[details]'.") + return TRUE + return FALSE + + if("claim_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + var/claim = TRUE + var/assigned = ticket.ticket_assignee + if(assigned) + if(assigned == last_login) + var/prompt = tgui_alert(usr, "You already claimed this ticket! Do you wish to drop your claim?", "Unclaim ticket", list("Yes", "No")) + if(prompt != "Yes") + return FALSE + /// set ticket back to pending + ticket.ticket_assignee = null + ticket.ticket_status = TICKET_PENDING + return claim + var/choice = tgui_alert(usr, "This ticket has already been claimed by [assigned]! Do you wish to override their claim?", "Claim Override", list("Yes", "No")) + if(choice != "Yes") + claim = FALSE + if(claim) + ticket.ticket_assignee = last_login + ticket.ticket_status = TICKET_ASSIGNED + return claim + + if("cancel_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + if(ticket.ticket_submitter != last_login) + to_chat(usr, SPAN_WARNING("You cannot cancel a ticket that does not belong to you!")) + return FALSE + to_chat(usr, SPAN_WARNING("[ticket.ticket_type] [ticket.ticket_id] has been cancelled.")) + ticket.ticket_status = TICKET_CANCELLED + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been cancelled.") + return TRUE + + if("mark_ticket") + var/datum/ares_ticket/ticket = locate(params["ticket"]) + if(!istype(ticket)) + return FALSE + if(ticket.ticket_assignee != last_login && ticket.ticket_assignee) //must be claimed by you or unclaimed.) + to_chat(usr, SPAN_WARNING("You cannot update a ticket that is not assigned to you!")) + return FALSE + var/choice = tgui_alert(usr, "What do you wish to mark the ticket as?", "Mark", list(TICKET_COMPLETED, TICKET_REJECTED), 20 SECONDS) + switch(choice) + if(TICKET_COMPLETED) + ticket.ticket_status = TICKET_COMPLETED + if(TICKET_REJECTED) + ticket.ticket_status = TICKET_REJECTED + else + return FALSE + if(ticket.ticket_priority) + ares_apollo_talk("Priority [ticket.ticket_type] [ticket.ticket_id] has been [choice] by [last_login].") + to_chat(usr, SPAN_NOTICE("[ticket.ticket_type] [ticket.ticket_id] marked as [choice].")) + return TRUE + + if("new_access") + var/obj/item/card/id/idcard = operator.get_active_hand() + var/has_id = FALSE + if(istype(idcard)) + has_id = TRUE + else if(operator.wear_id) + idcard = operator.wear_id + if(istype(idcard)) + has_id = TRUE + if(!has_id) + to_chat(operator, SPAN_WARNING("You require an ID card to request an access ticket!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(idcard.registered_name != last_login) + to_chat(operator, SPAN_WARNING("This ID card does not match the active login!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + var/details = tgui_input_text(operator, "What is the purpose of this access ticket?", "Ticket Details", encode = FALSE) + if(!details) + return FALSE + + var/confirm = alert(operator, "Please confirm the submission of your access ticket request.\n\nHolder: '[last_login]'\nDetails: '[details]'\n\nIs this correct?", "Confirmation", "Yes", "No") + if(confirm != "Yes" || !link) + return FALSE + var/datum/ares_ticket/access/access_ticket = new(last_login, details, FALSE, idcard.registered_gid) + link.waiting_ids += idcard + link.tickets_access += access_ticket + log_game("ARES: Access Ticket '\ref[access_ticket]' created by [key_name(operator)] as [last_login] with Details of '[details]'.") + message_admins(SPAN_STAFF_IC("[key_name_admin(operator)] created a new ARES Access Ticket."), 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] requesting access for '[details].") + return TRUE + + if("return_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket + for(var/datum/ares_ticket/access/possible_ticket in link.tickets_access) + if(possible_ticket.ticket_status != TICKET_GRANTED) + continue + if(possible_ticket.ticket_name != last_login) + continue + access_ticket = possible_ticket + break + + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + + access_ticket.ticket_status = TICKET_RETURNED + identification.access -= ACCESS_MARINE_AI_TEMP + identification.modification_log += "Temporary AI Access self-returned by [key_name(operator)]." + + to_chat(operator, SPAN_NOTICE("Temporary Access Ticket surrendered.")) + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] surrendered their access.") + + authentication = get_ares_access(identification) + if(authentication) + datacore.apollo_login_list += "[last_login] at [worldtime2text()], Surrendered Temporary Access Ticket." + return TRUE + + to_chat(operator, SPAN_WARNING("This ID card does not have an access ticket!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + + if("auth_access") + playsound = FALSE + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!access_ticket) + return FALSE + for(var/obj/item/card/id/identification in link.waiting_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(last_login, operator) + access_ticket.ticket_status = TICKET_GRANTED + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] was granted access by [last_login].") + return TRUE + for(var/obj/item/card/id/identification in link.active_ids) + if(!istype(identification)) + continue + if(identification.registered_gid != access_ticket.user_id_num) + continue + identification.handle_ares_access(last_login, operator) + access_ticket.ticket_status = TICKET_REVOKED + playsound(src, 'sound/machines/chime.ogg', 15, 1) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] had access revoked by [last_login].") + return TRUE + return FALSE + + if("reject_access") + var/datum/ares_ticket/access/access_ticket = locate(params["ticket"]) + if(!istype(access_ticket)) + return FALSE + if(access_ticket.ticket_assignee != last_login && access_ticket.ticket_assignee) //must be claimed by you or unclaimed.) + to_chat(usr, SPAN_WARNING("You cannot update a ticket that is not assigned to you!")) + return FALSE + access_ticket.ticket_status = TICKET_REJECTED + to_chat(usr, SPAN_NOTICE("[access_ticket.ticket_type] [access_ticket.ticket_id] marked as rejected.")) + ares_apollo_talk("Access Ticket [access_ticket.ticket_id]: [access_ticket.ticket_submitter] was rejected access by [last_login].") + return TRUE + + if(playsound) + playsound(src, "keyboard_alt", 15, 1) diff --git a/colonialmarines.dme b/colonialmarines.dme index fe2fadba5c0e..aff37ba64c06 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -827,6 +827,7 @@ #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\washing_machine.dm" #include "code\game\machinery\weather_siren.dm" +#include "code\game\machinery\ARES\apollo_pda.dm" #include "code\game\machinery\ARES\ARES.dm" #include "code\game\machinery\ARES\ARES_interface.dm" #include "code\game\machinery\ARES\ARES_interface_apollo.dm" diff --git a/icons/obj/items/synth/wj_pda.dmi b/icons/obj/items/synth/wj_pda.dmi new file mode 100644 index 0000000000000000000000000000000000000000..48cb5cb7142c3ebf5b5075d90482e8470b254bd7 GIT binary patch literal 928 zcmeAS@N?(olHy`uVBq!ia0vp^3qY8I8A$FCoGuTf%mREuTn`*Lpdv42Z)xP`W?PaO z{p-mwO-)T>W8+U-Vx~=-wr$%sSy@?bZf=j1+Wf9%b#wNFg@pmNOgqTd3N(SSB*-tA z!Qt7BG$3bMRY*jMOKNd)QD#9&W_}(6L&conu!5q}?_YuoK7M_o<*loA?#%h%4WR}X zjUPPHIq#!+lA)-lcZY>>knv?>FNHaeCLNg+q7bZUy-`Eo(Av&k*SE9VSatIX35|>s zM`wmjnK7FyFs&_f&K%{QsZbyvNU0!628v z-TLj-C#T(>Go)^6YipbkXVI(g7yInFc&FH{p9b@mi$CAEJEpcp%k4vYm%j0NwY$!D zYb2K6|6w%!_1C0jM_8wPHaKD?^8d(O~y{^9N&V7;k zm<3-rj`8iNer9|vfo1P`u?2s1*Zt(+=u7x-{wj6m^yk&f+gDZo(5-px_-T8Px%{KY zH*E6TuRNZRCpSOi?4}uCC)7O(J)6v&-4o0Il6%Foj}xmmnXO^ZIWxKc$*RhXkACfz ziY+y^zy9^tO#s7y>YJSUcT|gS-1mIGVgKZFSC?RS9q^Q7W?`)}<5>+GC*zeH<( z-#6ucd74LU%M13G>|6iJ|5f)ZgQ6-QVy>VSo57`yZ8cJ@-$) zm%sDq497a%E8qC@c*{P${jx`%H0ceH%knq2naL2ydH4Q^_LBX|Do2@9rrcOnURVLjatxlXelF{r5}E*a<;6V! literal 0 HcmV?d00001 From e198fa9615e971269695c68d0e55a85033b0b8e7 Mon Sep 17 00:00:00 2001 From: forest2001 Date: Mon, 30 Oct 2023 17:15:30 +0000 Subject: [PATCH 2/5] Icons and Presets --- code/game/machinery/ARES/apollo_pda.dm | 33 +++++++++++++++--- .../game/objects/items/stacks/sheets/glass.dm | 3 ++ code/modules/gear_presets/synths.dm | 16 +++++---- icons/obj/items/synth/wj_pda.dmi | Bin 928 -> 902 bytes 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/ARES/apollo_pda.dm b/code/game/machinery/ARES/apollo_pda.dm index e28481266795..da8e820a31ca 100644 --- a/code/game/machinery/ARES/apollo_pda.dm +++ b/code/game/machinery/ARES/apollo_pda.dm @@ -1,9 +1,8 @@ /obj/item/device/working_joe_pda icon = 'icons/obj/items/synth/wj_pda.dmi' - name = "karnak pda" - desc = "A portable interface used by Working Joes, capable of connecting to the local command AI to relay tasking information. Built to withstand a nuclear bomb." + name = "KN5500 PDA" + desc = "A portable interface used by Working-Joes, capable of connecting to the local command AI to relay tasking information. Built to withstand a nuclear bomb." icon_state = "karnak_off" - item_state = "Cotablet" unacidable = TRUE indestructible = TRUE req_one_access = list(ACCESS_MARINE_AI_TEMP, ACCESS_MARINE_AI, ACCESS_ARES_DEBUG) @@ -14,7 +13,7 @@ var/datum/ares_datacore/datacore var/current_menu = "login" - var/last_menu = "" + var/last_menu = "off" var/authentication = ARES_ACCESS_BASIC /// The last person to login. @@ -47,11 +46,24 @@ delink() return ..() +/obj/item/device/working_joe_pda/update_icon() + . = ..() + if(last_menu == "off") + icon_state = "karnak_off" + else if(current_menu == "login") + icon_state = "karnak_login_anim" + else + icon_state = "karnak_on_anim" + // ------ Maintenance Controller UI ------ // /obj/item/device/working_joe_pda/attack_self(mob/user) if(..() || !allowed(usr)) return FALSE + if((last_menu == "off") && (current_menu == "login")) + last_menu = "main" + update_icon() + tgui_interact(user) return TRUE @@ -61,6 +73,16 @@ ui = new(user, src, "WorkingJoe", name) ui.open() +/obj/item/device/working_joe_pda/ui_close(mob/user) + . = ..() + + current_menu = "login" + last_menu = "off" + if(last_login) + datacore.apollo_login_list += "[last_login] logged out at [worldtime2text()]." + last_login = null + update_icon() + /obj/item/device/working_joe_pda/ui_data(mob/user) var/list/data = list() @@ -170,11 +192,14 @@ if(authentication) datacore.apollo_login_list += "[last_login] at [worldtime2text()], Access Level [authentication] - [ares_auth_to_text(authentication)]." current_menu = "main" + last_menu = "main" + update_icon() if("logout") last_menu = current_menu current_menu = "login" datacore.apollo_login_list += "[last_login] logged out at [worldtime2text()]." + update_icon() if("home") last_menu = current_menu diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 972898e6449b..e89ececb5422 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -189,6 +189,9 @@ is_reinforced = 1 construction_options = list("One Direction", "Full Window", "Windoor") +/obj/item/stack/sheet/glass/reinforced/medium_stack + amount = 25 + /obj/item/stack/sheet/glass/reinforced/cyborg matter = null diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index c686ae91bb78..bf88ce982477 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -487,7 +487,8 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mt(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/electronics(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/sling(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/working_joe_pda(new_human.back), WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/spray/cleaner(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/spray/cleaner(new_human.back), WEAR_IN_BACK) @@ -496,13 +497,13 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/wet_sign(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/box/lights/mixed(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/bag/trash(new_human), WEAR_L_HAND) - new_human.equip_to_slot_or_del(new /obj/item/circuitboard/apc(new_human.back), WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/circuitboard/airlock(new_human.back), WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/cell(new_human.back), WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/cell(new_human.back), WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/droppouch(new_human), WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/circuitboard/apc(new_human.back), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/circuitboard/airlock(new_human.back), WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/cell(new_human.back), WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/device/lightreplacer(new_human.back), WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/medium_stack(new_human.back), WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/medium_stack(new_human.back), WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/reinforced/medium_stack(new_human.back), WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/maintenance_jack(new_human), WEAR_J_STORE) @@ -529,7 +530,8 @@ if(2) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/synthetic/joe/engi/overalls(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tank(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/sling(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/working_joe_pda(new_human.back), WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/device/lightreplacer(new_human.back), WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack(new_human.back), WEAR_IN_R_STORE) diff --git a/icons/obj/items/synth/wj_pda.dmi b/icons/obj/items/synth/wj_pda.dmi index 48cb5cb7142c3ebf5b5075d90482e8470b254bd7..6bd7205e9a94db528a1292abf0e72b3d77c99e45 100644 GIT binary patch delta 729 zcmZ3$-o`#5KqbFxS>2pH9x1h9VPOXj9QeA#SeJo;fw3gWFPOpM*^M+HXV%1$-1@jQ zy|Sm%94=m&bHr=H20p1H2Ab;jwv#im4|aXLk(1GIJZr(zQ(Wun^d1~wVF;NT|0;Y> zXFLM~Q-r6BV@SoEx3ey8YElq!J-erZTk!w?Z2b&BTLq(eeY2yhO@D6cv^6f9Kuz=9g8i z7@j9~ZJ7tEb4yoSebLB1?+YBz;o^Yf_cm8X6=_&Zh7`_|A$nTlmESP?j3m>aew{v zD`gzBkISyDpQ*Mv=8|<>hMaUn@|z;ha)z^yr|sTsHitdu%;e~z47sR1L5Y4Git+sS z{$J$31cr{h6Z}el@2CGbc=W&Q_vTraHEs8vuzxRl{_T_DZl~M-1nr!^ zG=FK%`0sA-VbAfs{!4RMopS zdA5hi{j=#gUW4sNzS^&N$qs{@iY|hC{x6na0){T~)(iiwzrg?KPy9^z`YAu{ul|w! z=Wp8nd%u!>$CrB7x(&Z}N4)qSQv9QNM%{!ufw%u(08QdleDZqYFYDYR-#n!^?!Wv@ z{>*|4_g9K*d@aA#@prD-qvVBkjfW=xmt^hwa~Di-vYtX^h1H99|Cw9Y2y|NNKR=Km zZg1Xeec=}QwOg2L%1`UuC;$BRI{mVC3i`vi_0^4pIed$D15+u3r>mdKI;Vst0Hx|~ AtpET3 delta 755 zcmVb`4~IML)#S@Y=Ky80hK7NVUO0^} zPF?2b7l{_y`7oZR7w56NTz!NpM(}5fFMl)7Cf!5bd>E(S_%fI4^tD9-nBn!A@4u-hfuCQLXGrWDS!9Al;3w|NPUFp2k8g3{U7}x{h+%4qaP%MkOKPt zkA9GTkbaPUPlFT6`TkAVCjzgOBn_<4Se-^=eG+~Uj#t}WE|4{i;1^6m7z9|Zhf zY5yRUH`zak6v@%@8qgWUC(+^n>(++RIK+zju%yl=FMX_`%ZugB9}{zo(ju`@KW_prqeB#1D4=EiU~(STk3@ z5z`OS4{G~A`a$|ZLJ0YKP=6;4Y@eio{hc)bU<5&bCte`x@1%kKoiy;WP`*HL<=>(} z$ltXn5b}2o3dHN|%-^*ru={T@@8k;v{au3s lF@Glw?(f7aq`xC1#RFuN*s6DNcpm@&002ovPDHLkV1hS6h3o(T From 2ffa614b5be9baf55df1a5700eed171cc560fc38 Mon Sep 17 00:00:00 2001 From: forest2001 Date: Mon, 30 Oct 2023 17:17:19 +0000 Subject: [PATCH 3/5] large glass --- code/game/objects/items/stacks/sheets/glass.dm | 4 ++++ code/modules/gear_presets/synths.dm | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index e89ececb5422..6d0736f8aeb2 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -192,6 +192,10 @@ /obj/item/stack/sheet/glass/reinforced/medium_stack amount = 25 +/obj/item/stack/sheet/glass/reinforced/large_stack + amount = 50 + + /obj/item/stack/sheet/glass/reinforced/cyborg matter = null diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index bf88ce982477..be0efb1bccaa 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -535,7 +535,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/device/lightreplacer(new_human.back), WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack(new_human.back), WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/large_stack(new_human.back), WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/glass/reinforced/large_stack(new_human.back), WEAR_IN_R_STORE) /datum/equipment_preset/synth/working_joe/load_race(mob/living/carbon/human/new_human) . = ..() From a6167f8748c99409974adc658b1cfc267d8cdef2 Mon Sep 17 00:00:00 2001 From: forest2001 Date: Mon, 30 Oct 2023 17:34:43 +0000 Subject: [PATCH 4/5] default auth --- code/game/machinery/ARES/ARES_interface_apollo.dm | 2 +- code/game/machinery/ARES/apollo_pda.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/ARES/ARES_interface_apollo.dm b/code/game/machinery/ARES/ARES_interface_apollo.dm index ad4df31c35a8..3bbc6065a88a 100644 --- a/code/game/machinery/ARES/ARES_interface_apollo.dm +++ b/code/game/machinery/ARES/ARES_interface_apollo.dm @@ -14,7 +14,7 @@ var/current_menu = "login" var/last_menu = "" - var/authentication = ARES_ACCESS_BASIC + var/authentication = APOLLO_ACCESS_LOGOUT /// The last person to login. var/last_login diff --git a/code/game/machinery/ARES/apollo_pda.dm b/code/game/machinery/ARES/apollo_pda.dm index da8e820a31ca..885c41583680 100644 --- a/code/game/machinery/ARES/apollo_pda.dm +++ b/code/game/machinery/ARES/apollo_pda.dm @@ -15,7 +15,7 @@ var/current_menu = "login" var/last_menu = "off" - var/authentication = ARES_ACCESS_BASIC + var/authentication = APOLLO_ACCESS_LOGOUT /// The last person to login. var/last_login From f1d1399c8ffd42ca36036f04fc0722d303d25b60 Mon Sep 17 00:00:00 2001 From: forest2001 Date: Wed, 1 Nov 2023 15:43:49 +0000 Subject: [PATCH 5/5] sound tweak --- code/game/machinery/ARES/apollo_pda.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/ARES/apollo_pda.dm b/code/game/machinery/ARES/apollo_pda.dm index 885c41583680..26ec9d5120bd 100644 --- a/code/game/machinery/ARES/apollo_pda.dm +++ b/code/game/machinery/ARES/apollo_pda.dm @@ -415,4 +415,5 @@ return TRUE if(playsound) - playsound(src, "keyboard_alt", 15, 1) + var/sound = pick('sound/machines/pda_button1.ogg', 'sound/machines/pda_button2.ogg') + playsound(src, sound, 15, TRUE)