From 2b52489e1de44d93ad947c7e892dfccfb2b80205 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Sun, 6 Jun 2021 00:42:26 -0700 Subject: [PATCH 01/20] Merge pull request #8080 from Atermonera/dbcon_onebuttonfix Adds admin verb to hopefully fix database connection failures --- code/modules/admin/admin_verb_lists.dm | 3 +- code/modules/admin/verbs/dbcon_fix.dm | 39 ++++++++++++++++++++++++++ vorestation.dme | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 code/modules/admin/verbs/dbcon_fix.dm diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index bee29ed14f..aa37774d35 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -186,7 +186,8 @@ var/list/admin_verbs_server = list( /client/proc/panicbunker, /client/proc/paranoia_logging, /client/proc/ip_reputation, - /client/proc/debug_global_variables + /client/proc/debug_global_variables, + /client/proc/dbcon_fix ) var/list/admin_verbs_debug = list( diff --git a/code/modules/admin/verbs/dbcon_fix.dm b/code/modules/admin/verbs/dbcon_fix.dm new file mode 100644 index 0000000000..1d52314520 --- /dev/null +++ b/code/modules/admin/verbs/dbcon_fix.dm @@ -0,0 +1,39 @@ +// Will hoepfully fix the database when it breaks +// Use case: if the server is left in the lobby for long enough, players that join will see player_age = 0, restricting them from all age-locked jobs. +/client/proc/dbcon_fix() + set name = "Fix Database Connection" + set category = "Server" + set desc = "Experimental: Will hopefully perform a one-button fix for a database connection that has timed out." + + if(!check_rights(R_ADMIN|R_DEBUG|R_FUN)) + to_chat(src, "You must be an admin to do this.") + return FALSE + + log_admin("Attempting to fix database connection") + if(dbcon.IsConnected()) + dbcon.Disconnect() + else + log_admin("Database already disconnected") + + establish_db_connection() + var/errno = dbcon.ErrorMsg() + if(errno) + log_admin("Database connection returned error message `[errno]`. Aborting.") + return FALSE + if(!dbcon.IsConnected()) + log_admin("Database could not be reconnected! Aborting.") + return FALSE + log_admin("Database reconnected. Fixing player ages...") + + var/num = 0 + for(var/client/C in GLOB.clients) + C.log_client_to_db() + errno = dbcon.ErrorMsg() + if(errno) + log_admin("Database connection returned error message `[errno]` after adjusting player ages for [num] players. [C] was being updated when the error struck. Aborting.") + return FALSE + if(C.player_age) + num++ + + log_admin("Successfully updated non-0 player age for [num] clients.") + return FALSE \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 3b344e3491..773fff24ba 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1678,6 +1678,7 @@ #include "code\modules\admin\verbs\check_customitem_activity.dm" #include "code\modules\admin\verbs\cinematic.dm" #include "code\modules\admin\verbs\custom_event.dm" +#include "code\modules\admin\verbs\dbcon_fix.dm" #include "code\modules\admin\verbs\deadsay.dm" #include "code\modules\admin\verbs\debug.dm" #include "code\modules\admin\verbs\debug_vr.dm" From 228c1b699998b450cc2a6a02672d70396a5c3499 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Sun, 6 Jun 2021 02:16:55 -0700 Subject: [PATCH 03/20] Merge pull request #8104 from Cerebulon/rocknroll Adds new rocks + resprites mining outcrops --- code/game/objects/structures/props/rocks.dm | 41 ++++++++++++++++++++ icons/obj/flora/rocks.dmi | Bin 68537 -> 73393 bytes icons/obj/outcrop.dmi | Bin 3071 -> 6552 bytes vorestation.dme | 1 + 4 files changed, 42 insertions(+) create mode 100644 code/game/objects/structures/props/rocks.dm diff --git a/code/game/objects/structures/props/rocks.dm b/code/game/objects/structures/props/rocks.dm new file mode 100644 index 0000000000..5d343c0744 --- /dev/null +++ b/code/game/objects/structures/props/rocks.dm @@ -0,0 +1,41 @@ +/obj/structure/prop/rock + name = "rock" + desc = "A hard place." + icon = 'icons/obj/flora/rocks.dmi' + icon_state = "basalt2" + +/obj/structure/prop/rock/sharp + icon_state = "basalt1" + +/obj/structure/prop/rock/flat + icon_state = "basalt3" + +/obj/structure/prop/rock/round + icon_state = "basalt4" + +/obj/structure/prop/rock/small + name = "small rocks" + icon_state = "lavarocks1" + density = FALSE + +/obj/structure/prop/rock/small/alt + icon_state = "lavarocks2" + +//Water-trim versions for placing in water + +/obj/structure/prop/rock/water + icon_state = "basalt_water2" + +/obj/structure/prop/rock/watersharp + icon_state = "basalt_water1" + +/obj/structure/prop/rock/waterflat + icon_state = "basalt_water3" + +/obj/structure/prop/rock/small/water + name = "submerged rocks" + icon_state = "waterrocks1" + density = FALSE + +/obj/structure/prop/rock/small/wateralt + icon_state = "waterrocks2" \ No newline at end of file diff --git a/icons/obj/flora/rocks.dmi b/icons/obj/flora/rocks.dmi index 12d4f2c8ee1dc55e74744004802d27d0d3fef1b6..4713360313f725719630a372a313110bb1e03d3d 100644 GIT binary patch literal 73393 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 literal 68537 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�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≫P>aPtpjYRP+VCD-&y+{ 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 diff --git a/icons/obj/outcrop.dmi b/icons/obj/outcrop.dmi index bea3810fe8a07e7ca662ae30ff0d5b0eeb8aeac2..eacb7bc4fee33aca6ce66d3dfc2795d775dbe93e 100644 GIT binary patch literal 6552 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 N002ovPDHLkV1hI1$_M}e diff --git a/vorestation.dme b/vorestation.dme index 3b344e3491..bb70947253 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1536,6 +1536,7 @@ #include "code\game\objects\structures\props\projectile_lock.dm" #include "code\game\objects\structures\props\prop.dm" #include "code\game\objects\structures\props\puzzledoor.dm" +#include "code\game\objects\structures\props\rocks.dm" #include "code\game\objects\structures\props\swarm.dm" #include "code\game\objects\structures\props\transmitter.dm" #include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" From 97abfd0549b15f25e43a2b98ca9d52ee8a4e9219 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Sun, 6 Jun 2021 05:22:27 -0400 Subject: [PATCH 05/20] Add Secret ZLevels --- code/game/objects/effects/landmarks.dm | 10 + code/modules/mob/dead/observer/observer.dm | 963 +++++++++++++++++++++ maps/~map_system/maps.dm | 1 + 3 files changed, 974 insertions(+) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index c4d2071c8a..19dc4afa27 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -108,6 +108,16 @@ return 1 +/obj/effect/landmark/forbidden_level + delete_me = 1 +/obj/effect/landmark/forbidden_level/Initialize() + . = ..() + if(using_map) + using_map.secret_levels |= z + else + log_error("[type] mapped in but no using_map") + + /obj/effect/landmark/virtual_reality name = "virtual_reality" icon = 'icons/mob/screen1.dmi' diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c4484d4007..37c459b0ac 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /mob/observer name = "observer" desc = "This shouldn't appear" @@ -967,3 +968,965 @@ mob/observer/dead/MayRespawn(var/feedback = 0) set name = "Respawn" set category = "Ghost" src.abandon_mob() +======= +/mob/observer + name = "observer" + desc = "This shouldn't appear" + density = 0 + +/mob/observer/dead + name = "ghost" + desc = "It's a g-g-g-g-ghooooost!" //jinkies! + icon = 'icons/mob/ghost.dmi' + icon_state = "ghost" + stat = DEAD + canmove = 0 + blinded = 0 + anchored = 1 // don't get pushed around + + var/can_reenter_corpse + var/datum/hud/living/carbon/hud = null // hud + var/bootime = 0 + var/started_as_observer //This variable is set to 1 when you enter the game as an observer. + //If you died in the game and are a ghsot - this will remain as null. + //Note that this is not a reliable way to determine if admins started as observers, since they change mobs a lot. + var/has_enabled_antagHUD = 0 + var/medHUD = 0 + var/secHUD = 0 + var/antagHUD = 0 + universal_speak = 1 + var/atom/movable/following = null + var/admin_ghosted = 0 + var/anonsay = 0 + var/ghostvision = 1 //is the ghost able to see things humans can't? + incorporeal_move = 1 + + var/is_manifest = 0 //If set to 1, the ghost is able to whisper. Usually only set if a cultist drags them through the veil. + var/ghost_sprite = null + var/global/list/possible_ghost_sprites = list( + "Clear" = "blank", + "Green Blob" = "otherthing", + "Bland" = "ghost", + "Robed-B" = "ghost1", + "Robed-BAlt" = "ghost2", + "King" = "ghostking", + "Shade" = "shade", + "Hecate" = "ghost-narsie", + "Glowing Statue" = "armour", + "Artificer" = "artificer", + "Behemoth" = "behemoth", + "Harvester" = "harvester", + "Wraith" = "wraith", + "Viscerator" = "viscerator", + "Corgi" = "corgi", + "Tamaskan" = "tamaskan", + "Black Cat" = "blackcat", + "Lizard" = "lizard", + "Goat" = "goat", + "Space Bear" = "bear", + "Bats" = "bat", + "Chicken" = "chicken_white", + "Parrot"= "parrot_fly", + "Goose" = "goose", + "Penguin" = "penguin", + "Brown Crab" = "crab", + "Gray Crab" = "evilcrab", + "Trout" = "trout-swim", + "Salmon" = "salmon-swim", + "Pike" = "pike-swim", + "Koi" = "koi-swim", + "Carp" = "carp", + "Red Robes" = "robe_red", + "Faithless" = "faithless", + "Shadowform" = "forgotten", + "Dark Ethereal" = "bloodguardian", + "Holy Ethereal" = "lightguardian", + "Red Elemental" = "magicRed", + "Blue Elemental" = "magicBlue", + "Pink Elemental" = "magicPink", + "Orange Elemental" = "magicOrange", + "Green Elemental" = "magicGreen", + "Daemon" = "daemon", + "Guard Spider" = "guard", + "Hunter Spider" = "hunter", + "Nurse Spider" = "nurse", + "Rogue Drone" = "drone", + "ED-209" = "ed209", + "Beepsky" = "secbot" + ) + var/last_revive_notification = null // world.time of last notification, used to avoid spamming players from defibs or cloners. + var/cleanup_timer // Refernece to a timer that will delete this mob if no client returns + +/mob/observer/dead/New(mob/body) + + appearance = body + invisibility = INVISIBILITY_OBSERVER + layer = BELOW_MOB_LAYER + plane = PLANE_GHOSTS + alpha = 127 + + sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF + see_invisible = SEE_INVISIBLE_OBSERVER + see_in_dark = world.view //I mean. I don't even know if byond has occlusion culling... but... + verbs += /mob/observer/dead/proc/dead_tele + + var/turf/T + if(ismob(body)) + T = get_turf(body) //Where is the body located? + attack_log = body.attack_log //preserve our attack logs by copying them to our ghost + gender = body.gender + if(body.mind && body.mind.name) + name = body.mind.name + else + if(body.real_name) + name = body.real_name + else + if(gender == MALE) + name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + else + name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) + + mind = body.mind //we don't transfer the mind but we keep a reference to it. + + // Fix for naked ghosts. + // Unclear why this isn't being grabbed by appearance. + if(ishuman(body)) + var/mob/living/carbon/human/H = body + add_overlay(H.overlays_standing) + + if(!T) T = pick(latejoin) //Safety in case we cannot find the body's position + forceMove(T) + + if(!name) //To prevent nameless ghosts + name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + real_name = name + animate(src, pixel_y = 2, time = 10, loop = -1) + ..() + +/mob/observer/dead/Topic(href, href_list) + if (href_list["track"]) + var/mob/target = locate(href_list["track"]) in mob_list + if(target) + ManualFollow(target) + if(href_list["reenter"]) + reenter_corpse() + return + +/mob/observer/dead/attackby(obj/item/W, mob/user) + if(istype(W,/obj/item/weapon/book/tome)) + var/mob/observer/dead/M = src + M.manifest(user) + +/mob/observer/dead/CanPass(atom/movable/mover, turf/target) + return TRUE + +/mob/observer/dead/set_stat(var/new_stat) + if(new_stat != DEAD) + CRASH("It is best if observers stay dead, thank you.") + +/mob/observer/dead/examine_icon() + var/icon/I = get_cached_examine_icon(src) + if(!I) + I = getFlatIcon(src, defdir = SOUTH, no_anim = TRUE) + set_cached_examine_icon(src, I, 200 SECONDS) + return I + +/mob/observer/dead/examine(mob/user) + . = ..() + + if(is_admin(user)) + . += "\t>[ADMIN_FULLMONTY(src)]" + +/* +Transfer_mind is there to check if mob is being deleted/not going to have a body. +Works together with spawning an observer, noted above. +*/ + +/mob/observer/dead/Life() + ..() + if(!loc) return + if(!client) return 0 + + handle_regular_hud_updates() + handle_vision() + +/mob/proc/ghostize(var/can_reenter_corpse = 1) + if(key) + if(ishuman(src)) + var/mob/living/carbon/human/H = src + if(H.vr_holder && !can_reenter_corpse) + H.exit_vr() + return 0 + var/mob/observer/dead/ghost = new(src) //Transfer safety to observer spawning proc. + ghost.can_reenter_corpse = can_reenter_corpse + ghost.timeofdeath = src.timeofdeath //BS12 EDIT + ghost.key = key + if(istype(loc, /obj/structure/morgue)) + var/obj/structure/morgue/M = loc + M.update() + else if(istype(loc, /obj/structure/closet/body_bag)) + var/obj/structure/closet/body_bag/B = loc + B.update() + if(ghost.client) + ghost.client.time_died_as_mouse = ghost.timeofdeath + if(ghost.client && !ghost.client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed. + ghost.verbs -= /mob/observer/dead/verb/toggle_antagHUD // Poor guys, don't know what they are missing! + return ghost + +/* +This is the proc mobs get to turn into a ghost. Forked from ghostize due to compatibility issues. +*/ +/mob/living/verb/ghost() + set category = "OOC" + set name = "Ghost" + set desc = "Relinquish your life and enter the land of the dead." + + if(stat == DEAD && !forbid_seeing_deadchat) + announce_ghost_joinleave(ghostize(1)) + else + var/response + if(src.client && src.client.holder) + response = alert(src, "You have the ability to Admin-Ghost. The regular Ghost verb will announce your presence to dead chat. Both variants will allow you to return to your body using 'aghost'.\n\nWhat do you wish to do?", "Are you sure you want to ghost?", "Ghost", "Admin Ghost", "Stay in body") + if(response == "Admin Ghost") + if(!src.client) + return + src.client.admin_ghost() + else + response = alert(src, "Are you -sure- you want to ghost?\n(You are alive, or otherwise have the potential to become alive. If you ghost, you won't be able to play this round until you respawn as a new character! You can't change your mind so choose wisely!)", "Are you sure you want to ghost?", "Ghost", "Stay in body") + if(response != "Ghost") + return + resting = 1 + var/turf/location = get_turf(src) + var/special_role = check_special_role() + if(!istype(loc,/obj/machinery/cryopod)) + log_and_message_admins("has ghosted outside cryo[special_role ? " as [special_role]" : ""]. (JMP)",usr) + else if(special_role) + log_and_message_admins("has ghosted in cryo as [special_role]. (JMP)",usr) + var/mob/observer/dead/ghost = ghostize(0) // 0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3 + if(ghost) + ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly. + ghost.set_respawn_timer() + announce_ghost_joinleave(ghost) + +/mob/observer/dead/can_use_hands() return 0 +/mob/observer/dead/is_active() return 0 + +/mob/observer/dead/Stat() + ..() + if(statpanel("Status")) + if(emergency_shuttle) + var/eta_status = emergency_shuttle.get_status_panel_eta() + if(eta_status) + stat(null, eta_status) + +/mob/observer/dead/verb/reenter_corpse() + set category = "Ghost" + set name = "Re-enter Corpse" + if(!client) return + if(!(mind && mind.current && can_reenter_corpse)) + to_chat(src, "You have no body.") + return + if(mind.current.key && copytext(mind.current.key,1,2)!="@") //makes sure we don't accidentally kick any clients + to_chat(usr, "Another consciousness is in your body... it is resisting you.") + return + if(mind.current.ajourn && mind.current.stat != DEAD) //check if the corpse is astral-journeying (it's client ghosted using a cultist rune). + var/found_rune + for(var/obj/effect/rune/R in mind.current.loc) //whilst corpse is alive, we can only reenter the body if it's on the rune + if(R && R.word1 == cultwords["hell"] && R.word2 == cultwords["travel"] && R.word3 == cultwords["self"]) // Found an astral journey rune. + found_rune = 1 + break + if(!found_rune) + to_chat(usr, "The astral cord that ties your body and your spirit has been severed. You are likely to wander the realm beyond until your body is finally dead and thus reunited with you.") + return + mind.current.ajourn=0 + mind.current.key = key + mind.current.teleop = null + if(istype(mind.current.loc, /obj/structure/morgue)) + var/obj/structure/morgue/M = mind.current.loc + M.update(1) + else if(istype(mind.current.loc, /obj/structure/closet/body_bag)) + var/obj/structure/closet/body_bag/B = mind.current.loc + B.update(1) + if(!admin_ghosted) + announce_ghost_joinleave(mind, 0, "They now occupy their body again.") + return 1 + +/mob/observer/dead/verb/toggle_medHUD() + set category = "Ghost" + set name = "Toggle MedicHUD" + set desc = "Toggles Medical HUD allowing you to see how everyone is doing" + + medHUD = !medHUD + plane_holder.set_vis(VIS_CH_HEALTH, medHUD) + plane_holder.set_vis(VIS_CH_STATUS_OOC, medHUD) + to_chat(src, "Medical HUD [medHUD ? "Enabled" : "Disabled"]") + +/mob/observer/dead/verb/toggle_secHUD() + set category = "Ghost" + set name = "Toggle Security HUD" + set desc = "Toggles Security HUD allowing you to see people's displayed ID's job, wanted status, etc" + + secHUD = !secHUD + plane_holder.set_vis(VIS_CH_ID, secHUD) + plane_holder.set_vis(VIS_CH_WANTED, secHUD) + plane_holder.set_vis(VIS_CH_IMPTRACK, secHUD) + plane_holder.set_vis(VIS_CH_IMPLOYAL, secHUD) + plane_holder.set_vis(VIS_CH_IMPCHEM, secHUD) + to_chat(src, "Security HUD [secHUD ? "Enabled" : "Disabled"]") + +/mob/observer/dead/verb/toggle_antagHUD() + set category = "Ghost" + set name = "Toggle AntagHUD" + set desc = "Toggles AntagHUD allowing you to see who is the antagonist" + + if(!config.antag_hud_allowed && !client.holder) + to_chat(src, "Admins have disabled this for this round.") + return + if(jobban_isbanned(src, "AntagHUD")) + to_chat(src, "You have been banned from using this feature") + return + if(config.antag_hud_restricted && !has_enabled_antagHUD && !client.holder) + var/response = alert(src, "If you turn this on, you will not be able to take any part in the round.","Are you sure you want to turn this feature on?","Yes","No") + if(response == "No") return + can_reenter_corpse = FALSE + set_respawn_timer(-1) // Foreeeever + if(!has_enabled_antagHUD && !client.holder) + has_enabled_antagHUD = TRUE + + antagHUD = !antagHUD + plane_holder.set_vis(VIS_CH_SPECIAL, antagHUD) + to_chat(src, "AntagHUD [antagHUD ? "Enabled" : "Disabled"]") + +/mob/observer/dead/proc/jumpable_areas() + var/list/areas = return_sorted_areas() + if(client?.holder) + return areas + + for(var/area/A as anything in areas) + if(A.z in using_map?.secret_levels) + areas -= A + return areas + +/mob/observer/dead/proc/jumpable_mobs() + var/list/mobs = getmobs() + if(client?.holder) + return mobs + + for(var/key in mobs) + var/mobz = get_z(mobs[key]) + if(mobz in using_map?.secret_levels) + mobs -= key + return mobs + +/mob/observer/dead/proc/dead_tele(var/area/A in jumpable_areas()) + set category = "Ghost" + set name = "Teleport" + set desc = "Teleport to a location" + + if(!istype(usr, /mob/observer/dead)) + to_chat(usr, "Not when you're not dead!") + return + + if(!A) + A = input(usr, "Select an area:", "Ghost Teleport") as null|anything in jumpable_areas() + if(!A) + return + + usr.forceMove(pick(get_area_turfs(A))) + usr.on_mob_jump() + +/mob/observer/dead/verb/follow(input in jumpable_mobs()) + set category = "Ghost" + set name = "Follow" // "Haunt" + set desc = "Follow and haunt a mob." + + if(!input) + input = input(usr, "Select a mob:", "Ghost Follow") as null|anything in jumpable_mobs() + if(!input) + return + + var/target = jumpable_mobs()[input] + if(!target) return + ManualFollow(target) + +/mob/observer/dead/forceMove(atom/destination) + if(client?.holder) + return ..() + + if(get_z(destination) in using_map?.secret_levels) + to_chat(src,SPAN_WARNING("Sorry, that z-level does not allow ghosts.")) + if(following) + stop_following() + return + + return ..() + +/mob/observer/dead/Move(atom/newloc, direct = 0, movetime) + if(client?.holder) + return ..() + + if(get_z(newloc) in using_map?.secret_levels) + to_chat(src,SPAN_WARNING("Sorry, that z-level does not allow ghosts.")) + if(following) + stop_following() + return + + return ..() + +// This is the ghost's follow verb with an argument +/mob/observer/dead/proc/ManualFollow(var/atom/movable/target) + if(!target) + return + + var/turf/targetloc = get_turf(target) + if(check_holy(targetloc)) + to_chat(usr, "You cannot follow a mob standing on holy grounds!") + return + if(get_z(target) in using_map?.secret_levels) + to_chat(src, SPAN_WARNING("Sorry, that target is in an area that ghosts aren't allowed to go.")) + return + if(target != src) + if(following && following == target) + return + following = target + to_chat(src, "Now following [target]") + if(ismob(target)) + forceMove(get_turf(target)) + var/mob/M = target + M.following_mobs += src + else + spawn(0) + while(target && following == target && client) + var/turf/T = get_turf(target) + if(!T) + break + // To stop the ghost flickering. + if(loc != T) + forceMove(T) + sleep(15) + + var/icon/I = icon(target.icon,target.icon_state,target.dir) + + var/orbitsize = (I.Width()+I.Height())*0.5 + orbitsize -= (orbitsize/world.icon_size)*(world.icon_size*0.25) + + var/rot_seg + + /* We don't have this pref yet + switch(ghost_orbit) + if(GHOST_ORBIT_TRIANGLE) + rot_seg = 3 + if(GHOST_ORBIT_SQUARE) + rot_seg = 4 + if(GHOST_ORBIT_PENTAGON) + rot_seg = 5 + if(GHOST_ORBIT_HEXAGON) + rot_seg = 6 + else //Circular + rot_seg = 36 //360/10 bby, smooth enough aproximation of a circle + */ + + orbit(target, orbitsize, FALSE, 20, rot_seg) + +/mob/observer/dead/orbit() + set_dir(2) //reset dir so the right directional sprites show up + return ..() + +/mob/observer/dead/stop_orbit() + . = ..() + //restart our floating animation after orbit is done. + pixel_y = 0 + pixel_x = 0 + transform = null + animate(src, pixel_y = 2, time = 10, loop = -1) + +/mob/observer/dead/proc/stop_following() + following = null + stop_orbit() + +/mob/proc/update_following() + . = get_turf(src) + for(var/mob/observer/dead/M in following_mobs) + if(M.following != src) + following_mobs -= M + else + if(M.loc != .) + M.forceMove(.) + +/mob + var/list/following_mobs = list() + +/mob/Destroy() + for(var/mob/observer/dead/M in following_mobs) + M.stop_following() + following_mobs = null + return ..() + +/mob/observer/dead/Destroy() + if(ismob(following)) + var/mob/M = following + M.following_mobs -= src + stop_following() + return ..() + +/mob/Moved(atom/old_loc, direction, forced = FALSE) + . = ..() + update_following() + +/mob/Life() + // to catch teleports etc which directly set loc + update_following() + return ..() + +/mob/proc/check_holy(var/turf/T) + return 0 + +/mob/observer/dead/check_holy(var/turf/T) + if(check_rights(R_ADMIN|R_FUN|R_EVENT, 0, src)) + return 0 + + return (T && T.holy) && (is_manifest || (mind in cult.current_antagonists)) + +/mob/observer/dead/verb/jumptomob(input in jumpable_mobs()) //Moves the ghost instead of just changing the ghosts's eye -Nodrak + set category = "Ghost" + set name = "Jump to Mob" + set desc = "Teleport to a mob" + set popup_menu = FALSE + + if(!istype(usr, /mob/observer/dead)) //Make sure they're an observer! + return + + if(!input) + input = input(usr, "Select a mob:", "Ghost Jump") as null|anything in jumpable_mobs() + if(!input) + return + + var/target = jumpable_mobs()[input] + if (!target)//Make sure we actually have a target + return + else + var/mob/M = target //Destination mob + var/turf/T = get_turf(M) //Turf of the destination mob + + if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination. + forceMove(T) + stop_following() + else + to_chat(src, "This mob is not located in the game world.") + +/mob/observer/dead/memory() + set hidden = 1 + to_chat(src, "You are dead! You have no mind to store memory!") + +/mob/observer/dead/add_memory() + set hidden = 1 + to_chat(src, "You are dead! You have no mind to store memory!") + +/mob/observer/dead/Post_Incorpmove() + stop_following() + +/mob/observer/dead/verb/analyze_air() + set name = "Analyze Air" + set category = "Ghost" + + if(!istype(usr, /mob/observer/dead)) return + + // Shamelessly copied from the Gas Analyzers + if (!( istype(usr.loc, /turf) )) + return + + var/datum/gas_mixture/environment = usr.loc.return_air() + + var/pressure = environment.return_pressure() + var/total_moles = environment.total_moles + + to_chat(src, "Results:") + if(abs(pressure - ONE_ATMOSPHERE) < 10) + to_chat(src, "Pressure: [round(pressure,0.1)] kPa") + else + to_chat(src, "Pressure: [round(pressure,0.1)] kPa") + if(total_moles) + for(var/g in environment.gas) + to_chat(src, "[gas_data.name[g]]: [round((environment.gas[g] / total_moles) * 100)]% ([round(environment.gas[g], 0.01)] moles)") + to_chat(src, "Temperature: [round(environment.temperature-T0C,0.1)]°C ([round(environment.temperature,0.1)]K)") + to_chat(src, "Heat Capacity: [round(environment.heat_capacity(),0.1)]") + +/mob/observer/dead/verb/check_radiation() + set name = "Check Radiation" + set category = "Ghost" + + var/turf/t = get_turf(src) + if(t) + var/rads = SSradiation.get_rads_at_turf(t) + to_chat(src, "Radiation level: [rads ? rads : "0"] Bq.") + + +/mob/observer/dead/verb/become_mouse() + set name = "Become mouse" + set category = "Ghost" + + if(config.disable_player_mice) + to_chat(src, "Spawning as a mouse is currently disabled.") + return + + if(!MayRespawn(1)) + return + + var/turf/T = get_turf(src) + if(!T || (T.z in using_map.admin_levels)) + to_chat(src, "You may not spawn as a mouse on this Z-level.") + return + + var/timedifference = world.time - client.time_died_as_mouse + if(client.time_died_as_mouse && timedifference <= mouse_respawn_time * 600) + var/timedifference_text + timedifference_text = time2text(mouse_respawn_time * 600 - timedifference,"mm:ss") + to_chat(src, "You may only spawn again as a mouse more than [mouse_respawn_time] minutes after your death. You have [timedifference_text] left.") + return + + var/response = alert(src, "Are you -sure- you want to become a mouse?","Are you sure you want to squeek?","Squeek!","Nope!") + if(response != "Squeek!") return //Hit the wrong key...again. + + + //find a viable mouse candidate + var/mob/living/simple_mob/animal/passive/mouse/host + var/obj/machinery/atmospherics/unary/vent_pump/vent_found + var/list/found_vents = list() + for(var/obj/machinery/atmospherics/unary/vent_pump/v in machines) + if(!v.welded && v.z == T.z && v.network && v.network.normal_members.len > 20) + found_vents.Add(v) + if(found_vents.len) + vent_found = pick(found_vents) + host = new /mob/living/simple_mob/animal/passive/mouse(vent_found) + else + to_chat(src, "Unable to find any unwelded vents to spawn mice at.") + + if(host) + if(config.uneducated_mice) + host.universal_understand = 0 + announce_ghost_joinleave(src, 0, "They are now a mouse.") + host.ckey = src.ckey + host.add_ventcrawl(vent_found) + to_chat(host, "You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.") + +/mob/observer/dead/verb/view_manfiest() + set name = "Show Crew Manifest" + set category = "Ghost" + + var/dat + dat += "

Crew Manifest

" + dat += data_core.get_manifest() + + src << browse(dat, "window=manifest;size=370x420;can_close=1") + +//This is called when a ghost is drag clicked to something. +/mob/observer/dead/MouseDrop(atom/over) + if(!usr || !over) return + if (isobserver(usr) && usr.client && usr.client.holder && isliving(over)) + if (usr.client.holder.cmd_ghost_drag(src,over)) + return + + return ..() + +//Used for drawing on walls with blood puddles as a spooky ghost. +/mob/observer/dead/verb/bloody_doodle() + + set category = "Ghost" + set name = "Write in blood" + set desc = "If the round is sufficiently spooky, write a short message in blood on the floor or a wall. Remember, no IC in OOC or OOC in IC." + + if(!(config.cult_ghostwriter)) + to_chat(src, "That verb is not currently permitted.") + return + + if (!src.stat) + return + + if (usr != src) + return 0 //something is terribly wrong + + var/ghosts_can_write + if(ticker.mode.name == "cult") + if(cult.current_antagonists.len > config.cult_ghostwriter_req_cultists) + ghosts_can_write = 1 + + if(!ghosts_can_write && !check_rights(R_ADMIN|R_EVENT|R_FUN, 0)) //Let's allow for admins to write in blood for events and the such. + to_chat(src, "The veil is not thin enough for you to do that.") + return + + var/list/choices = list() + for(var/obj/effect/decal/cleanable/blood/B in view(1,src)) + if(B.amount > 0) + choices += B + + if(!choices.len) + to_chat(src, "There is no blood to use nearby.") + return + + var/obj/effect/decal/cleanable/blood/choice = input(src,"What blood would you like to use?") in null|choices + + var/direction = input(src,"Which way?","Tile selection") as anything in list("Here","North","South","East","West") + var/turf/simulated/T = src.loc + if (direction != "Here") + T = get_step(T,text2dir(direction)) + + if (!istype(T)) + to_chat(src, "You cannot doodle there.") + return + + if(!choice || choice.amount == 0 || !(src.Adjacent(choice))) + return + + var/doodle_color = (choice.basecolor) ? choice.basecolor : "#A10808" + + var/num_doodles = 0 + for (var/obj/effect/decal/cleanable/blood/writing/W in T) + num_doodles++ + if (num_doodles > 4) + to_chat(src, "There is no space to write on!") + return + + var/max_length = 50 + + var/message = sanitize(input("Write a message. It cannot be longer than [max_length] characters.","Blood writing", "")) + + if (message) + + if (length(message) > max_length) + message += "-" + to_chat(src, "You ran out of blood to write with!") + + var/obj/effect/decal/cleanable/blood/writing/W = new(T) + W.basecolor = doodle_color + W.update_icon() + W.message = message + W.add_hiddenprint(src) + W.visible_message("Invisible fingers crudely paint something in blood on [T]...") + +/mob/observer/dead/pointed(atom/A as mob|obj|turf in view()) + if(!..()) + return 0 + usr.visible_message("[src] points to [A]") + return 1 + +/mob/observer/dead/proc/manifest(mob/user) + is_manifest = TRUE + verbs |= /mob/observer/dead/proc/toggle_visibility + verbs |= /mob/observer/dead/proc/ghost_whisper + to_chat(src, "As you are now in the realm of the living, you can whisper to the living with the Spectral Whisper verb, inside the IC tab.") + if(plane != PLANE_WORLD) + user.visible_message( \ + "\The [user] drags ghost, [src], to our plane of reality!", \ + "You drag [src] to our plane of reality!" \ + ) + toggle_visibility(TRUE) + else + var/datum/gender/T = gender_datums[user.get_visible_gender()] + user.visible_message ( \ + "\The [user] just tried to smash [T.his] book into that ghost! It's not very effective.", \ + "You get the feeling that the ghost can't become any more visible." \ + ) + +/mob/observer/dead/proc/toggle_icon(var/icon) + if(!client) + return + + var/iconRemoved = 0 + for(var/image/I in client.images) + if(I.icon_state == icon) + iconRemoved = 1 + qdel(I) + + if(!iconRemoved) + var/image/J = image('icons/mob/mob.dmi', loc = src, icon_state = icon) + client.images += J + +/mob/observer/dead/proc/toggle_visibility(var/forced = 0) + set category = "Ghost" + set name = "Toggle Visibility" + set desc = "Allows you to turn (in)visible (almost) at will." + + var/toggled_invisible + if(!forced && plane == PLANE_GHOSTS && world.time < toggled_invisible + 600) + to_chat(src, "You must gather strength before you can turn visible again...") + return + + if(plane == PLANE_WORLD) + toggled_invisible = world.time + visible_message("It fades from sight...", "You are now invisible.") + else + to_chat(src, "You are now visible!") + + plane = (plane == PLANE_GHOSTS) ? PLANE_WORLD : PLANE_GHOSTS + invisibility = (plane == PLANE_WORLD) ? 0 : INVISIBILITY_OBSERVER + + // Give the ghost a cult icon which should be visible only to itself + toggle_icon("cult") + +/mob/observer/dead/verb/toggle_anonsay() + set category = "Ghost" + set name = "Toggle Anonymous Chat" + set desc = "Toggles showing your key in dead chat." + + src.anonsay = !src.anonsay + if(anonsay) + to_chat(src, "Your key won't be shown when you speak in dead chat.") + else + to_chat(src, "Your key will be publicly visible again.") + +/mob/observer/dead/canface() + return 1 + +/mob/observer/dead/proc/can_admin_interact() + return check_rights(R_ADMIN|R_EVENT, 0, src) + +/mob/observer/dead/verb/toggle_ghostsee() + set name = "Toggle Ghost Vision" + set desc = "Toggles your ability to see things only ghosts can see, like other ghosts" + set category = "Ghost" + ghostvision = !ghostvision + updateghostsight() + to_chat(src, "You [ghostvision ? "now" : "no longer"] have ghost vision.") + +/mob/observer/dead/verb/toggle_darkness() + set name = "Toggle Darkness" + set desc = "Toggles your ability to see lighting overlays, and the darkness they create." + set category = "Ghost" + seedarkness = !seedarkness + updateghostsight() + to_chat(src, "You [seedarkness ? "now" : "no longer"] see darkness.") + +/mob/observer/dead/proc/updateghostsight() + plane_holder.set_vis(VIS_FULLBRIGHT, !seedarkness) //Inversion, because "not seeing" the darkness is "seeing" the lighting plane master. + plane_holder.set_vis(VIS_GHOSTS, ghostvision) + +mob/observer/dead/MayRespawn(var/feedback = 0) + if(!client) + return 0 + if(mind && mind.current && mind.current.stat != DEAD && can_reenter_corpse) + if(feedback) + to_chat(src, "Your non-dead body prevent you from respawning.") + return 0 + if(config.antag_hud_restricted && has_enabled_antagHUD == 1) + if(feedback) + to_chat(src, "antagHUD restrictions prevent you from respawning.") + return 0 + return 1 + +/atom/proc/extra_ghost_link() + return + +/mob/extra_ghost_link(var/atom/ghost) + if(client && eyeobj) + return "|eye" + +/mob/observer/dead/extra_ghost_link(var/atom/ghost) + if(mind && mind.current) + return "|body" + +/proc/ghost_follow_link(var/atom/target, var/atom/ghost) + if((!target) || (!ghost)) return + . = "follow" + . += target.extra_ghost_link(ghost) + +//Culted Ghosts + +/mob/observer/dead/proc/ghost_whisper() + set name = "Spectral Whisper" + set category = "IC" + + if(is_manifest) //Only able to whisper if it's hit with a tome. + var/list/options = list() + for(var/mob/living/Ms in view(src)) + options += Ms + var/mob/living/M = input(src, "Select who to whisper to:", "Whisper to?", null) as null|mob in options + if(!M) + return 0 + var/msg = sanitize(input(src, "Message:", "Spectral Whisper") as text|null) + if(msg) + log_say("(SPECWHISP to [key_name(M)]): [msg]", src) + to_chat(M, " You hear a strange, unidentifiable voice in your head... [msg]") + to_chat(src, " You said: '[msg]' to [M].") + else + return + return 1 + else + to_chat(src, "You have not been pulled past the veil!") + +/mob/observer/dead/verb/choose_ghost_sprite() + set category = "Ghost" + set name = "Choose Sprite" + + var/choice + var/previous_state + var/finalized = "No" + + while(finalized == "No" && src.client) + choice = input(usr,"What would you like to use for your ghost sprite?") as null|anything in possible_ghost_sprites + if(!choice) + return + + if(choice) + icon = 'icons/mob/ghost.dmi' + overlays.Cut() + + if(icon_state && icon) + previous_state = icon_state + + icon_state = possible_ghost_sprites[choice] + finalized = alert("Look at your sprite. Is this what you wish to use?",,"No","Yes") + + ghost_sprite = possible_ghost_sprites[choice] + + if(finalized == "No") + icon_state = previous_state + +/mob/observer/dead/is_blind() + return FALSE + +/mob/observer/dead/is_deaf() + return FALSE + +/mob/observer/dead/verb/paialert() + set category = "Ghost" + set name = "Blank pAI alert" + set desc = "Flash an indicator light on available blank pAI devices for a smidgen of hope." + + if(usr.client.prefs?.be_special & BE_PAI) + var/count = 0 + for(var/obj/item/device/paicard/p in all_pai_cards) + var/obj/item/device/paicard/PP = p + if(PP.pai == null) + count++ + PP.overlays += "pai-ghostalert" + spawn(54) + PP.overlays.Cut() + to_chat(usr,"Flashing the displays of [count] unoccupied PAIs.") + else + to_chat(usr,"You have 'Be pAI' disabled in your character prefs, so we can't help you.") + +/mob/observer/dead/speech_bubble_appearance() + return "ghost" + +// Lets a ghost know someone's trying to bring them back, and for them to get into their body. +// Mostly the same as TG's sans the hud element, since we don't have TG huds. +/mob/observer/dead/proc/notify_revive(var/message, var/sound, flashwindow = TRUE, var/atom/source) + if((last_revive_notification + 2 MINUTES) > world.time) + return + last_revive_notification = world.time + + if(flashwindow) + window_flash(client) + if(message) + to_chat(src, "[message]") + if(source) + throw_alert("\ref[source]_notify_revive", /obj/screen/alert/notify_cloning, new_master = source) + to_chat(src, "(Click to re-enter)") + if(sound) + SEND_SOUND(src, sound(sound)) + +/mob/observer/dead/verb/respawn() + set name = "Respawn" + set category = "Ghost" + src.abandon_mob() +>>>>>>> 51011c9... Add Secret ZLevels (#8111) diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index 84e390f010..f0ada2b3bf 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -34,6 +34,7 @@ var/list/all_maps = list() var/static/list/sealed_levels = list() // Z-levels that don't allow random transit at edge var/static/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning. var/static/list/persist_levels = list() // Z-levels where SSpersistence should persist between rounds. Defaults to station_levels if unset. + var/static/list/secret_levels = list() // Z-levels that (non-admin) ghosts can't get to var/static/list/empty_levels = list() // Empty Z-levels that may be used for various things var/static/list/mappable_levels = list()// List of levels where mapping or other similar devices might work fully var/static/list/secret_levels = list() // Z-levels that (non-admin) ghosts can't get to From 6da5c20322443ebb4f4935c504a0abbe74f25011 Mon Sep 17 00:00:00 2001 From: Casey Date: Sun, 6 Jun 2021 05:23:09 -0400 Subject: [PATCH 06/20] Random mob spawners can accept faction input now (#8115) * Random mob spawners can accept faction input now The variable was there, just not used for anything, so I fix * Update code/game/objects/random/mob.dm Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> --- code/game/objects/random/mob.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index bd720faed4..0699dfb9a1 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -60,6 +60,10 @@ M.pixel_x = pixel_x M.pixel_y = pixel_y + if(mob_faction) + M.faction = mob_faction + + /obj/random/mob/sif name = "Random Sif Animal" From da5a8ea4ef527fda1c3fa5a3d88c8b926e50d4fd Mon Sep 17 00:00:00 2001 From: Shadow-Quill <44811257+Shadow-Quill@users.noreply.github.com> Date: Sun, 6 Jun 2021 04:34:37 -0500 Subject: [PATCH 08/20] Adds new UI for secure stuff --- .../objects/items/weapons/storage/secure.dm | 181 +++++++++--------- tgui/packages/tgui/interfaces/SecureSafe.js | 106 ++++++++++ tgui/packages/tgui/public/tgui.bundle.js | 14 +- 3 files changed, 210 insertions(+), 91 deletions(-) create mode 100644 tgui/packages/tgui/interfaces/SecureSafe.js diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 7519525dd2..436b1da8c6 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -28,80 +28,84 @@ max_storage_space = ITEMSIZE_SMALL * 7 use_sound = 'sound/items/storage/briefcase.ogg' - examine(mob/user) - . = ..() - if(Adjacent(user)) - . += "The service panel is [src.open ? "open" : "closed"]." +/obj/item/weapon/storage/secure/examine(mob/user) + . = ..() + if(Adjacent(user)) + . += "The service panel is [src.open ? "open" : "closed"]." - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(locked) - if (istype(W, /obj/item/weapon/melee/energy/blade) && emag_act(INFINITY, user, "You slice through the lock of \the [src]")) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src, "sparks", 50, 1) - return - - if (W.is_screwdriver()) - if (do_after(user, 20 * W.toolspeed)) - src.open =! src.open - playsound(src, W.usesound, 50, 1) - user.show_message(text("You [] the service panel.", (src.open ? "open" : "close"))) - return - if (istype(W, /obj/item/device/multitool) && (src.open == 1)&& (!src.l_hacking)) - user.show_message("Now attempting to reset internal memory, please hold.", 1) - src.l_hacking = 1 - if (do_after(usr, 100)) - if (prob(40)) - src.l_setshort = 1 - src.l_set = 0 - user.show_message("Internal memory reset. Please give it a few seconds to reinitialize.", 1) - sleep(80) - src.l_setshort = 0 - src.l_hacking = 0 - else - user.show_message("Unable to reset internal memory.", 1) - src.l_hacking = 0 - else src.l_hacking = 0 - return - //At this point you have exhausted all the special things to do when locked - // ... but it's still locked. +/obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(locked) + if (istype(W, /obj/item/weapon/melee/energy/blade) && emag_act(INFINITY, user, "You slice through the lock of \the [src]")) + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + spark_system.set_up(5, 0, src.loc) + spark_system.start() + playsound(src, 'sound/weapons/blade1.ogg', 50, 1) + playsound(src, "sparks", 50, 1) return - // -> storage/attackby() what with handle insertion, etc - ..() - - - MouseDrop(over_object, src_location, over_location) - if (locked) - src.add_fingerprint(usr) + if (W.is_screwdriver()) + if (do_after(user, 20 * W.toolspeed)) + src.open =! src.open + playsound(src, W.usesound, 50, 1) + user.show_message(text("You [] the service panel.", (src.open ? "open" : "close"))) return - ..() - - - attack_self(mob/user as mob) - user.set_machine(src) - var/dat = text("[]
\n\nLock Status: []",src, (src.locked ? "LOCKED" : "UNLOCKED")) - var/message = "Code" - if ((src.l_set == 0) && (!src.emagged) && (!src.l_setshort)) - dat += text("

\n5-DIGIT PASSCODE NOT SET.
ENTER NEW PASSCODE.
") - if (src.emagged) - dat += text("

\nLOCKING SYSTEM ERROR - 1701") - if (src.l_setshort) - dat += text("

\nALERT: MEMORY SYSTEM ERROR - 6040 201") - message = text("[]", src.code) - if (!src.locked) - message = "*****" - dat += text("


\n>[]
\n1-2-3
\n4-5-6
\n7-8-9
\nR-0-E
\n
", message, src, src, src, src, src, src, src, src, src, src, src, src) - user << browse(dat, "window=caselock;size=300x280") - - Topic(href, href_list) - ..() - if ((usr.stat || usr.restrained()) || (get_dist(src, usr) > 1)) + if (istype(W, /obj/item/device/multitool) && (src.open == 1)&& (!src.l_hacking)) + user.show_message("Now attempting to reset internal memory, please hold.", 1) + src.l_hacking = 1 + if (do_after(usr, 100)) + if (prob(40)) + src.l_setshort = 1 + src.l_set = 0 + src.code = "" + user.show_message("Internal memory reset. Please give it a few seconds to reinitialize.", 1) + sleep(80) + src.l_setshort = 0 + src.l_hacking = 0 + else + user.show_message("Unable to reset internal memory.", 1) + src.l_hacking = 0 + else src.l_hacking = 0 return - if (href_list["type"]) - if (href_list["type"] == "E") + //At this point you have exhausted all the special things to do when locked + // ... but it's still locked. + return + + // -> storage/attackby() what with handle insertion, etc + ..() + + +/obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location) + if (locked) + src.add_fingerprint(usr) + return + ..() + + +/obj/item/weapon/storage/secure/attack_self(mob/user as mob) + tgui_interact(user) + +/obj/item/weapon/storage/secure/tgui_interact(mob/user, datum/tgui/ui = null) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "SecureSafe", name) + ui.open() + +/obj/item/weapon/storage/secure/tgui_data(mob/user) + var/list/data = list() + data["locked"] = locked + data["code"] = code + data["emagged"] = emagged + data["l_setshort"] = l_setshort + data["l_set"] = l_set + return data + +/obj/item/weapon/storage/secure/tgui_act(action, params) + if(..()) + return TRUE + switch (action) + if("type") + var/digit = params["digit"] + if(digit == "E") if ((src.l_set == 0) && (length(src.code) == 5) && (!src.l_setshort) && (src.code != "ERROR")) src.l_code = src.code src.l_set = 1 @@ -113,21 +117,18 @@ else src.code = "ERROR" else - if ((href_list["type"] == "R") && (src.emagged == 0) && (!src.l_setshort)) + if ((digit == "R") && (src.emagged == 0) && (!src.l_setshort)) src.locked = 1 src.overlays = null src.code = null src.close(usr) else - src.code += text("[]", href_list["type"]) + src.code += text("[]", digit) if (length(src.code) > 5) src.code = "ERROR" - src.add_fingerprint(usr) - for(var/mob/M in viewers(1, src.loc)) - if ((M.client && M.machine == src)) - src.attack_self(M) - return - return + src.add_fingerprint(usr) + . = TRUE + return /obj/item/weapon/storage/secure/emag_act(var/remaining_charges, var/mob/user, var/feedback) if(!emagged) @@ -156,18 +157,18 @@ w_class = ITEMSIZE_LARGE max_storage_space = ITEMSIZE_COST_NORMAL * 4 - attack_hand(mob/user as mob) - if ((src.loc == user) && (src.locked == 1)) - to_chat(user, "[src] is locked and cannot be opened!") - else if ((src.loc == user) && (!src.locked)) - src.open(usr) - else - ..() - for(var/mob/M in range(1)) - if (M.s_active == src) - src.close(M) - src.add_fingerprint(user) - return +/obj/item/weapon/storage/secure/briefcase/attack_hand(mob/user as mob) + if ((src.loc == user) && (src.locked == 1)) + to_chat(user, "[src] is locked and cannot be opened!") + else if ((src.loc == user) && (!src.locked)) + src.open(usr) + else + ..() + for(var/mob/M in range(1)) + if (M.s_active == src) + src.close(M) + src.add_fingerprint(user) + return // ----------------------------- // Secure Safe @@ -194,4 +195,4 @@ ) /obj/item/weapon/storage/secure/safe/attack_hand(mob/user as mob) - return attack_self(user) + tgui_interact(user) diff --git a/tgui/packages/tgui/interfaces/SecureSafe.js b/tgui/packages/tgui/interfaces/SecureSafe.js new file mode 100644 index 0000000000..4837aeff80 --- /dev/null +++ b/tgui/packages/tgui/interfaces/SecureSafe.js @@ -0,0 +1,106 @@ +import { useBackend } from '../backend'; +import { Box, Button, Flex, Grid, NoticeBox, Section } from '../components'; +import { Window } from '../layouts'; + +const NukeKeypad = (props, context) => { + const { act, data } = useBackend(context); + const keypadKeys = [ + ['1', '4', '7', 'R'], + ['2', '5', '8', '0'], + ['3', '6', '9', 'E'], + ]; + const { + locked, + l_setshort, + code, + emagged, + } = data; + return ( + + + {keypadKeys.map(keyColumn => ( + + {keyColumn.map(key => ( +