From fe8119c18c5e95026ebb6c724cd547f78ceeae2f Mon Sep 17 00:00:00 2001 From: SandPoot <43283559+SandPoot@users.noreply.github.com> Date: Fri, 14 Aug 2020 02:01:54 -0300 Subject: [PATCH] Code optimizations + clean-up (#45) --- _maps/map_files/BoxStation/BoxStation.dmm | 5 +- _maps/map_files/CogStation/CogStation.dmm | 9 +- .../map_files/Deltastation/DeltaStation2.dmm | 8 +- _maps/map_files/KiloStation/KiloStation.dmm | 6 +- _maps/map_files/LambdaStation/lambda.dmm | 6 +- _maps/map_files/MetaStation/MetaStation.dmm | 9 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 6 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 6 +- _maps/map_files/SmolStation/SmolStation.dmm | 8 +- _maps/map_files/Snaxi/Snaxi.dmm | 6 +- code/game/machinery/cryopod.dm | 56 +- sandcode/code/__DEFINES/traits.dm | 1 - sandcode/code/datums/traits/negative.dm | 6 +- sandcode/code/game/machinery/autodoc.dm | 6 +- sandcode/code/game/machinery/cryopod.dm | 500 +----------------- sandcode/code/modules/mob/living/emote.dm | 4 +- .../projectiles/guns/ballistic/pistol.dm | 4 +- .../modules/surgery/organs/augments_arms.dm | 19 +- sandcode/code/modules/telescience/telesci.dm | 4 +- .../modules/telescience/telesci_computer.dm | 22 +- sandcode/icons/obj/contraband1.dmi | Bin 536 -> 0 bytes 21 files changed, 90 insertions(+), 601 deletions(-) delete mode 100644 sandcode/icons/obj/contraband1.dmi diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index e7ad547f1f..0280698546 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -59692,9 +59692,6 @@ "vsM" = ( /obj/machinery/power/apc/auto_name/south, /obj/structure/cable, -/obj/machinery/computer/cryopod_tele{ - pixel_y = -37 - }, /turf/open/floor/carpet, /area/crew_quarters/cryopod) "vsT" = ( @@ -60097,7 +60094,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "woR" = ( -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/carpet, /area/crew_quarters/cryopod) "wph" = ( diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm index 8c9aaa7d48..3b13d1cc6b 100644 --- a/_maps/map_files/CogStation/CogStation.dmm +++ b/_maps/map_files/CogStation/CogStation.dmm @@ -15686,10 +15686,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port/fore) "aIv" = ( -/obj/machinery/cryopod_tele, -/obj/machinery/computer/cryopod_tele{ - pixel_y = 27 - }, +/obj/machinery/cryopod/tele, /turf/open/floor/circuit/green, /area/crew_quarters/cryopod) "aIw" = ( @@ -16548,7 +16545,7 @@ dir = 1; pixel_y = -26 }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/circuit/green, /area/crew_quarters/cryopod) "aJX" = ( @@ -71905,7 +71902,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "ePg" = ( -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/circuit/green, /area/crew_quarters/cryopod) "eTZ" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 6c9d5dd96b..7cff8514bc 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -125944,11 +125944,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/cryopod_tele, -/obj/machinery/computer/cryopod_tele{ - dir = 8; - pixel_x = 26 - }, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) "hAf" = ( @@ -127607,7 +127603,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) "voA" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 572e5b248a..8ea2a01a4f 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -54745,10 +54745,6 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "bKj" = ( -/obj/machinery/computer/cryopod_tele{ - dir = 4; - pixel_x = -26 - }, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/locker) "bKk" = ( @@ -65846,7 +65842,7 @@ /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/locker) "cbs" = ( diff --git a/_maps/map_files/LambdaStation/lambda.dmm b/_maps/map_files/LambdaStation/lambda.dmm index 4b9bd43b87..2a595d7136 100644 --- a/_maps/map_files/LambdaStation/lambda.dmm +++ b/_maps/map_files/LambdaStation/lambda.dmm @@ -75545,10 +75545,6 @@ /obj/effect/turf_decal/loading_area{ dir = 4 }, -/obj/machinery/computer/cryopod_tele{ - dir = 1; - pixel_y = -27 - }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "cOu" = ( @@ -81253,7 +81249,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) "nJo" = ( -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "nRc" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 4f00284f54..1b86bfaa03 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -81820,7 +81820,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) "maP" = ( @@ -81889,7 +81889,7 @@ /obj/machinery/camera{ c_tag = "Fitness Room - Fore" }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) "mEe" = ( @@ -82768,10 +82768,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) "vtn" = ( -/obj/machinery/cryopod_tele, -/obj/machinery/computer/cryopod_tele{ - pixel_y = 27 - }, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopod) "vuY" = ( diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 343cca9b69..7222a6abec 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -41454,11 +41454,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, -/obj/machinery/cryopod_tele, -/obj/machinery/computer/cryopod_tele{ - dir = 8; - pixel_x = 26 - }, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) "oGc" = ( diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 6b4966b000..49f526a59e 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -53687,11 +53687,7 @@ /turf/open/floor/wood, /area/lawoffice) "epj" = ( -/obj/machinery/cryopod_tele, -/obj/machinery/computer/cryopod_tele{ - dir = 8; - pixel_x = -24 - }, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "epJ" = ( diff --git a/_maps/map_files/SmolStation/SmolStation.dmm b/_maps/map_files/SmolStation/SmolStation.dmm index 47fa09acb7..b2359f8eaa 100644 --- a/_maps/map_files/SmolStation/SmolStation.dmm +++ b/_maps/map_files/SmolStation/SmolStation.dmm @@ -16560,11 +16560,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/machinery/cryopod_tele, -/obj/machinery/computer/cryopod_tele{ - dir = 1; - pixel_y = -23 - }, +/obj/machinery/cryopod/tele, /turf/open/floor/carpet, /area/crew_quarters/dorms) "lXy" = ( @@ -32348,7 +32344,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer1{ dir = 4 }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/carpet, /area/crew_quarters/dorms) "xEk" = ( diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm index a4d59a9254..c9c5afdb73 100644 --- a/_maps/map_files/Snaxi/Snaxi.dmm +++ b/_maps/map_files/Snaxi/Snaxi.dmm @@ -10506,11 +10506,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "dij" = ( -/obj/machinery/computer/cryopod_tele{ - dir = 1; - pixel_y = -26 - }, -/obj/machinery/cryopod_tele, +/obj/machinery/cryopod/tele, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "diD" = ( diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 9330a30555..36d8e44915 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -9,8 +9,8 @@ //Main cryopod console. /obj/machinery/computer/cryopod - name = "cryogenic oversight console" - desc = "An interface between crew and the cryogenic storage oversight systems." + name = "general oversight console" + desc = "An interface between crew and the cryogenic storage/teleporter storage oversight systems." icon = 'icons/obj/Cryogenic2.dmi' icon_state = "cellconsole_1" circuit = /obj/item/circuitboard/cryopodcontrol @@ -57,7 +57,7 @@ dat += "Recover all objects
" if(2) dat += "<< Back

" - dat += "

Recently stored Crew




" + dat += "

Recently stored/teleported Crew




" if(!frozen_crew.len) dat += "There has been no storage usage at this terminal.
" else @@ -74,7 +74,7 @@ dat += "[I.name]
" dat += "
" - var/datum/browser/popup = new(user, "cryopod_console", "Cryogenic System Control") + var/datum/browser/popup = new(user, "cryopod_console", "General Storage System Control") popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -169,6 +169,7 @@ density = TRUE anchored = TRUE state_open = TRUE + var/tele = FALSE var/on_store_message = "has entered long-term storage." var/on_store_name = "Cryogenic Oversight" @@ -230,8 +231,8 @@ // Don't send messages unless we *need* the computer, and less than five minutes have passed since last time we messaged if(!control_computer && urgent && last_no_computer_message + 5*60*10 < world.time) - log_admin("Cryopod in [get_area(src)] could not find control computer!") - message_admins("Cryopod in [get_area(src)] could not find control computer!") + log_admin("\The [src] in [get_area(src)] could not find control computer!") + message_admins("\The [src] in [get_area(src)] could not find control computer!") last_no_computer_message = world.time return control_computer != null @@ -242,27 +243,33 @@ if((isnull(user) || istype(user)) && state_open && !panel_open) ..(user) var/mob/living/mob_occupant = occupant - investigate_log("Cryogenics machine closed with occupant [key_name(occupant)] by user [key_name(user)].", INVESTIGATE_CRYOGENICS) - if(mob_occupant && mob_occupant.stat != DEAD) + investigate_log("[src] closed with occupant [key_name(occupant)] by user [key_name(user)].", INVESTIGATE_CRYOGENICS) + if(mob_occupant && mob_occupant.stat != DEAD && !(tele)) to_chat(occupant, "You feel cool air surround you. You go numb as your senses turn inward.") if(mob_occupant.client)//if they're logged in despawn_world_time = world.time + (time_till_despawn * 0.1) else despawn_world_time = world.time + time_till_despawn - icon_state = "cryopod" + if(!tele) + icon_state = "cryopod" + else + icon_state = "implantchair_occupied" /obj/machinery/cryopod/open_machine() if(occupant) - investigate_log("Cryogenics machine opened with occupant [key_name(occupant)] inside.", INVESTIGATE_CRYOGENICS) + investigate_log("[src] opened with occupant [key_name(occupant)] inside.", INVESTIGATE_CRYOGENICS) ..() - icon_state = "cryopod-open" + if(!tele) + icon_state = "cryopod-open" + else + icon_state = "implantchair_open" density = TRUE name = initial(name) /obj/machinery/cryopod/container_resist(mob/living/user) - investigate_log("Cryogenics machine container resisted by [key_name(user)] with occupant [key_name(occupant)].", INVESTIGATE_CRYOGENICS) - visible_message("[occupant] emerges from [src]!", - "You climb out of [src]!") + investigate_log("[src] resisted by [key_name(user)] with occupant [key_name(occupant)].", INVESTIGATE_CRYOGENICS) + visible_message("[occupant] emerges from \the [src]!", + "You climb out of \the [src]!") open_machine() /obj/machinery/cryopod/relaymove(mob/user) @@ -287,6 +294,11 @@ despawn_occupant() + if(tele) + despawn_occupant() + do_sparks(2, TRUE, src) + playsound(src, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) + #define CRYO_DESTROY 0 #define CRYO_PRESERVE 1 #define CRYO_OBJECTIVE 2 @@ -407,7 +419,7 @@ if(GLOB.announcement_systems.len) var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) announcer.announce("CRYOSTORAGE", mob_occupant.real_name, announce_rank, list()) - visible_message("\The [src] hums and hisses as it moves [mob_occupant.real_name] into storage.") + visible_message("\The [src] hums and hisses as it [tele ? "teleports" : "moves"] [mob_occupant.real_name] [tele ? "to centcom" : "into storage"].") // Ghost and delete the mob. if(!mob_occupant.get_ghost(1)) @@ -432,11 +444,11 @@ return if(occupant) - to_chat(user, "The cryo pod is already occupied!") + to_chat(user, "\The [src] is already occupied!") return if(target.stat == DEAD) - to_chat(user, "Dead people can not be put into cryo.") + to_chat(user, "Dead people can not be put into [tele ? "teleportation process" : "cryo"].") return if(target.client && user != target) @@ -446,7 +458,7 @@ to_chat(user, "You can't put [target] into [src]. They're conscious.") return else if(target.client) - if(alert(target,"Would you like to enter cryosleep?",,"Yes","No") == "No") + if(alert(target,"Would you like to [tele ? "be teleported out" : "enter cryosleep"]?",,"Yes","No") == "No") return var/generic_plsnoleave_message = " Please adminhelp before leaving the round, even if there are no administrators online!" @@ -478,9 +490,9 @@ //rerun the checks in case of shenanigans if(target == user) - visible_message("[user] starts climbing into the cryo pod.") + visible_message("[user] starts climbing into \the [src].") else - visible_message("[user] starts putting [target] into the cryo pod.") + visible_message("[user] starts putting [target] into \the [src].") if(occupant) to_chat(user, "\The [src] is in use.") @@ -489,8 +501,8 @@ to_chat(target, "If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.") name = "[name] ([occupant.name])" - log_admin("[key_name(target)] entered a stasis pod.") - message_admins("[key_name_admin(target)] entered a stasis pod. (JMP)") + log_admin("[key_name(target)] entered a [src].") + message_admins("[key_name_admin(target)] entered a [src]. (JMP)") add_fingerprint(target) //Attacks/effects. diff --git a/sandcode/code/__DEFINES/traits.dm b/sandcode/code/__DEFINES/traits.dm index de41e25baf..bf7295f45c 100644 --- a/sandcode/code/__DEFINES/traits.dm +++ b/sandcode/code/__DEFINES/traits.dm @@ -1,3 +1,2 @@ //mob traits #define TRAIT_SHELTERED "sheltered" // thanks yog, i want it -#define TRAIT_KNOWSSAGARU "knows sagaru" diff --git a/sandcode/code/datums/traits/negative.dm b/sandcode/code/datums/traits/negative.dm index 596047fd49..cf4c629e1d 100644 --- a/sandcode/code/datums/traits/negative.dm +++ b/sandcode/code/datums/traits/negative.dm @@ -10,10 +10,8 @@ /datum/quirk/sheltered/on_spawn() var/mob/living/carbon/human/H = quirk_holder H.remove_language(/datum/language/common) -/* if(!H.can_speak_language(/datum/language/draconic) && !H.can_speak_language(/datum/language/machine)) - H.grant_language(/datum/language/japanese) -*/ //if doesn't know common wont know anything else unless already does.... like lizards! :3 +// You can pick languages for your character, if you don't pick anything, enjoy the rest of the round understanding nothing. /datum/quirk/sheltered/remove() //i mean, the lose text explains it, so i'm making it actually work var/mob/living/carbon/human/H = quirk_holder - H.grant_language(/datum/language/common) \ No newline at end of file + H.grant_language(/datum/language/common) diff --git a/sandcode/code/game/machinery/autodoc.dm b/sandcode/code/game/machinery/autodoc.dm index 2181c5c673..9e56ce9e50 100644 --- a/sandcode/code/game/machinery/autodoc.dm +++ b/sandcode/code/game/machinery/autodoc.dm @@ -40,7 +40,7 @@ occupant.forceMove(drop_location()) occupant = null return - to_chat(occupant, "You enter [src]") + to_chat(occupant, "You enter [src].") dosurgery() @@ -78,14 +78,14 @@ currentorgan.forceMove(get_turf(src)) storedorgan.Insert(occupant)//insert stored organ into the user storedorgan = null - occupant.visible_message("[src] completes the surgery procedure", "[src] inserts the organ into your body.") + occupant.visible_message("[src] completes the surgery procedure.", "[src] inserts the organ into your body.") playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, 0) processing = FALSE open_machine() /obj/machinery/autodoc/open_machine(mob/user) if(processing) - occupant.visible_message("[user] cancels [src]'s procedure", "[src] stops inserting the organ into your body.") + occupant.visible_message("[user] cancels [src]'s procedure.", "[src] stops inserting the organ into your body.") processing = FALSE if(occupant) occupant.forceMove(drop_location()) diff --git a/sandcode/code/game/machinery/cryopod.dm b/sandcode/code/game/machinery/cryopod.dm index b8a9d9e2e5..45868661a7 100644 --- a/sandcode/code/game/machinery/cryopod.dm +++ b/sandcode/code/game/machinery/cryopod.dm @@ -1,500 +1,10 @@ -/* - * Cryogenic refrigeration unit. Basically a despawner. - * Stealing a lot of concepts/code from sleepers due to massive laziness. - * The despawn tick will only fire if it's been more than time_till_despawned ticks - * since time_entered, which is world.time when the occupant moves in. - * ~ Zuhayr - */ - -//Main cryopod console. - -/obj/machinery/computer/cryopod_tele - name = "teleporter oversight console" - desc = "An interface between crew and the internal storage, because centcom certainly won't let you take some stuff home..." - icon = 'icons/obj/Cryogenic2.dmi' - icon_state = "cellconsole_1" - circuit = /obj/item/circuitboard/cryopodcontrol - density = FALSE - interaction_flags_machine = INTERACT_MACHINE_OFFLINE - req_one_access = list(ACCESS_HEADS, ACCESS_ARMORY) //Heads of staff or the warden can go here to claim recover items from their department that people went were cryodormed with. - - var/menu = 1 //Which menu screen to display - - //Used for logging people entering cryosleep and important items they are carrying. - var/list/frozen_crew = list() - var/list/frozen_items = list() - - // Used for containing rare items traitors need to steal, so it's not - // game-over if they get iced - var/list/objective_items = list() - // A cache of theft datums so you don't have to re-create them for - // each item check - var/list/theft_cache = list() - - var/allow_items = TRUE - -/obj/machinery/computer/cryopod_tele/attack_ai() - attack_hand() - -/obj/machinery/computer/cryopod_tele/ui_interact(mob/user = usr) - if(!is_operational()) - return - - user.set_machine(src) - add_fingerprint(user) - - var/dat = "" - - dat += "

Welcome, [user.real_name].


" - dat += "

" - - switch(src.menu) - if(1) - dat += "View crew storage log

" - if(allow_items) - dat += "View objects storage log

" - dat += "Recover object

" - dat += "Recover all objects
" - if(2) - dat += "<< Back

" - dat += "

Recently teleported Crew




" - if(!frozen_crew.len) - dat += "There has been no storage usage at this terminal.
" - else - for(var/person in frozen_crew) - dat += "[person]
" - dat += "
" - if(3) - dat += "<< Back

" - dat += "

Recently stored objects




" - if(!frozen_items.len) - dat += "There has been no storage usage at this terminal.
" - else - for(var/obj/item/I in frozen_items) - dat += "[I.name]
" - dat += "
" - - var/datum/browser/popup = new(user, "cryopod_console", "CentCom Teleporter System Control") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - -/obj/machinery/computer/cryopod_tele/Topic(href, href_list) - if(..()) - return TRUE - - var/mob/user = usr - - add_fingerprint(user) - - if(href_list["item"]) - if(!allowed(user)) - to_chat(user, "Access Denied.") - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - updateUsrDialog() - return - if(!allow_items) return - - if(frozen_items.len == 0) - to_chat(user, "There is nothing to recover from storage.") - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - updateUsrDialog() - return - - var/obj/item/I = input(user, "Please choose which object to retrieve.","Object recovery",null) as null|anything in frozen_items - playsound(src, "terminal_type", 25, 0) - if(!I) - return - - if(!(I in frozen_items)) - to_chat(user, "\The [I] is no longer in storage.") - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - updateUsrDialog() - return - - visible_message("The console beeps happily as it disgorges \the [I].") - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - - I.forceMove(drop_location()) - if(user && Adjacent(user) && user.can_hold_items()) - user.put_in_hands(I) - frozen_items -= I - updateUsrDialog() - - else if(href_list["allitems"]) - playsound(src, "terminal_type", 25, 0) - if(!allowed(user)) - to_chat(user, "Access Denied.") - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - updateUsrDialog() - return - if(!allow_items) - return - - if(frozen_items.len == 0) - to_chat(user, "There is nothing to recover from storage.") - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - return - - visible_message("The console beeps happily as it disgorges the desired objects.") - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) - - for(var/obj/item/I in frozen_items) - I.forceMove(drop_location()) - frozen_items -= I - updateUsrDialog() - - else if (href_list["menu"]) - src.menu = text2num(href_list["menu"]) - playsound(src, "terminal_type", 25, 0) - updateUsrDialog() - - ui_interact(usr) - updateUsrDialog() - return - -/obj/item/circuitboard/cryopodcontrol_tele - name = "Circuit board (Teleporter Oversight Console)" - build_path = "/obj/machinery/computer/cryopod_tele" - -/obj/machinery/computer/cryopod_tele/contents_explosion() - return - -//Cryopods themselves. -/obj/machinery/cryopod_tele +//Teleporters themselves. Also holy crap, what a code crunch i did on this! +/obj/machinery/cryopod/tele name = "CentCom Teleporter" desc = "Suited for everyone who wishes to leave the station and go back to CentCom.\nThis is not for actually getting into CentCom, you will leave the round." icon = 'icons/obj/machines/implantchair.dmi' icon_state = "implantchair_open" - density = TRUE - anchored = TRUE - state_open = TRUE + tele = TRUE - var/on_store_message = "has been teleported to CentCom." - var/on_store_name = "Teleporter Oversight" - - // 15 minutes-ish safe period before being despawned. - var/time_till_despawn = 15 * 600 // This is reduced by 90% if a player manually enters cryo - var/despawn_world_time = null // Used to keep track of the safe period. - - var/obj/machinery/computer/cryopod_tele/control_computer - var/last_no_computer_message = 0 - - // These items are preserved when the process() despawn proc occurs. - var/static/list/preserve_items = typecacheof(list( - /obj/item/hand_tele, - /obj/item/card/id/captains_spare, - /obj/item/aicard, - /obj/item/mmi, - /obj/item/paicard, - /obj/item/gun, - /obj/item/pinpointer, - /obj/item/clothing/shoes/magboots, - /obj/item/areaeditor/blueprints, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/suit/space, - /obj/item/clothing/suit/armor, - /obj/item/defibrillator/compact, - /obj/item/reagent_containers/hypospray/CMO, - /obj/item/clothing/accessory/medal/gold/captain, - /obj/item/clothing/gloves/krav_maga, - /obj/item/nullrod, - /obj/item/tank/jetpack, - /obj/item/documents, - /obj/item/nuke_core_container - )) - // These items will NOT be preserved - var/static/list/do_not_preserve_items = typecacheof(list( - /obj/item/mmi/posibrain, - /obj/item/gun/energy/laser/mounted, - /obj/item/gun/energy/e_gun/advtaser/mounted, - /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg, - /obj/item/gun/energy/disabler/cyborg, - /obj/item/gun/energy/e_gun/advtaser/cyborg, - /obj/item/gun/energy/printer, - /obj/item/gun/energy/kinetic_accelerator/cyborg, - /obj/item/gun/energy/laser/cyborg - )) - -/obj/machinery/cryopod_tele/Initialize(mapload) - . = ..() - update_icon() - find_control_computer(mapload) - -/obj/machinery/cryopod_tele/proc/find_control_computer(urgent = FALSE) - for(var/obj/machinery/computer/cryopod_tele/C in get_area(src)) - control_computer = C - if(C) - return C - break - - // Don't send messages unless we *need* the computer, and less than five minutes have passed since last time we messaged - if(!control_computer && urgent && last_no_computer_message + 5*60*10 < world.time) - log_admin("CentCom Teleporter in [get_area(src)] could not find control computer!") - message_admins("CentCom Teleporter in [get_area(src)] could not find control computer!") - last_no_computer_message = world.time - - return control_computer != null - -/obj/machinery/cryopod_tele/close_machine(mob/user) - if(!control_computer) - find_control_computer(TRUE) - if((isnull(user) || istype(user)) && state_open && !panel_open) - ..(user) - var/mob/living/mob_occupant = occupant - investigate_log("CentCom Teleporter closed with occupant [key_name(occupant)] by user [key_name(user)].", INVESTIGATE_CRYOGENICS) - if(mob_occupant && mob_occupant.stat != DEAD) - to_chat(occupant, "You feel cool air surround you. You go numb as your senses turn inward.") - if(mob_occupant.client)//if they're logged in - despawn_world_time = world.time + (time_till_despawn * 0.1) - else - despawn_world_time = world.time + time_till_despawn - icon_state = "implantchair_occupied" - -/obj/machinery/cryopod_tele/open_machine() - if(occupant) - investigate_log("CentCom Teleporter opened with occupant [key_name(occupant)] inside.", INVESTIGATE_CRYOGENICS) - ..() - icon_state = "implantchair_open" - density = TRUE - name = initial(name) - -/obj/machinery/cryopod_tele/container_resist(mob/living/user) - investigate_log("CentCom Teleporter container resisted by [key_name(user)] with occupant [key_name(occupant)].", INVESTIGATE_CRYOGENICS) - visible_message("[occupant] emerges from [src]!", - "You climb out of [src]!") - open_machine() - -/obj/machinery/cryopod_tele/relaymove(mob/user) - container_resist(user) - -/obj/machinery/cryopod_tele/process() - if(!occupant) - return - - var/mob/living/mob_occupant = occupant - if(mob_occupant) - // Eject dead people - if(mob_occupant.stat == DEAD) - open_machine() - - if(!(world.time > despawn_world_time + 100))//+ 10 seconds - return - - if(!mob_occupant.client && mob_occupant.stat < 2) //Occupant is living and has no client. - if(!control_computer) - find_control_computer(urgent = TRUE)//better hope you found it this time - - despawn_occupant() - do_sparks(2, TRUE, src) - playsound(src, 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) - -#define CRYO_DESTROY 0 -#define CRYO_PRESERVE 1 -#define CRYO_OBJECTIVE 2 -#define CRYO_IGNORE 3 -#define CRYO_DESTROY_LATER 4 - -/obj/machinery/cryopod_tele/proc/should_preserve_item(obj/item/I) - for(var/datum/objective_item/steal/T in control_computer.theft_cache) - if(istype(I, T.targetitem) && T.check_special_completion(I)) - return CRYO_OBJECTIVE - if(preserve_items[I] && !do_not_preserve_items[I]) - return CRYO_PRESERVE - return CRYO_DESTROY - -// This function can not be undone; do not call this unless you are sure -/obj/machinery/cryopod_tele/proc/despawn_occupant() - if(!control_computer) - find_control_computer() - - var/mob/living/mob_occupant = occupant - var/list/obj/item/cryo_items = list() - - investigate_log("Despawning [key_name(mob_occupant)].", INVESTIGATE_CRYOGENICS) - - //Handle Borg stuff first - if(iscyborg(mob_occupant)) - var/mob/living/silicon/robot/R = mob_occupant - if(R.mmi?.brain) - cryo_items[R.mmi] = CRYO_DESTROY_LATER - cryo_items[R.mmi.brain] = CRYO_DESTROY_LATER - for(var/obj/item/I in R.module) // the tools the borg has; metal, glass, guns etc - for(var/obj/item/O in I) // the things inside the tools, if anything; mainly for janiborg trash bags - cryo_items[O] = should_preserve_item(O) - O.forceMove(src) - R.module.remove_module(I, TRUE) //delete the module itself so it doesn't transfer over. - - //Drop all items into the pod. - for(var/obj/item/I in mob_occupant) - if(cryo_items[I] == CRYO_IGNORE || cryo_items[I] ==CRYO_DESTROY_LATER) - continue - cryo_items[I] = should_preserve_item(I) - mob_occupant.transferItemToLoc(I, src, TRUE) - if(I.contents.len) //Make sure we catch anything not handled by qdel() on the items. - if(cryo_items[I] != CRYO_DESTROY) // Don't remove the contents of things that need preservation - continue - for(var/obj/item/O in I.contents) - cryo_items[O] = should_preserve_item(O) - O.forceMove(src) - - for(var/A in cryo_items) - var/obj/item/I = A - if(QDELETED(I)) //edge cases and DROPDEL. - continue - var/preserve = cryo_items[I] - if(preserve == CRYO_DESTROY_LATER) - continue - if(preserve != CRYO_IGNORE) - if(preserve == CRYO_DESTROY) - qdel(I) - else if(control_computer?.allow_items) - control_computer.frozen_items += I - if(preserve == CRYO_OBJECTIVE) - control_computer.objective_items += I - I.moveToNullspace() - else - I.forceMove(loc) - cryo_items -= I - - //Update any existing objectives involving this mob. - for(var/datum/objective/O in GLOB.objectives) - // We don't want revs to get objectives that aren't for heads of staff. Letting - // them win or lose based on cryo is silly so we remove the objective. - if(istype(O,/datum/objective/mutiny) && O.target == mob_occupant.mind) - qdel(O) - else if(O.target && istype(O.target, /datum/mind)) - if(O.target == mob_occupant.mind) - if(O.owner && O.owner.current) - to_chat(O.owner.current, "
You get the feeling your target is no longer within reach. Time for Plan [pick("A","B","C","D","X","Y","Z")]. Objectives updated!") - O.target = null - spawn(10) //This should ideally fire after the occupant is deleted. - if(!O) - return - O.find_target() - O.update_explanation_text() - if(!(O.target)) - qdel(O) - - if(mob_occupant.mind) - //Handle job slot/tater cleanup. - if(mob_occupant.mind.assigned_role) - var/job = mob_occupant.mind.assigned_role - SSjob.FreeRole(job) - mob_occupant.mind.special_role = null - - // Delete them from datacore. - - var/announce_rank = null - for(var/datum/data/record/R in GLOB.data_core.medical) - if((R.fields["name"] == mob_occupant.real_name)) - qdel(R) - for(var/datum/data/record/T in GLOB.data_core.security) - if((T.fields["name"] == mob_occupant.real_name)) - qdel(T) - for(var/datum/data/record/G in GLOB.data_core.general) - if((G.fields["name"] == mob_occupant.real_name)) - announce_rank = G.fields["rank"] - qdel(G) - - for(var/obj/machinery/computer/cloning/cloner in world) - for(var/datum/data/record/R in cloner.records) - if(R.fields["name"] == mob_occupant.real_name) - cloner.records.Remove(R) - - //Make an announcement and log the person entering storage. - if(control_computer) - control_computer.frozen_crew += "[mob_occupant.real_name]" - - if(GLOB.announcement_systems.len) - var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) - announcer.announce("CRYOSTORAGE", mob_occupant.real_name, announce_rank, list()) - visible_message("\The [src] hums and hisses as it teleports [mob_occupant.real_name] back to CentCom.") - - // Ghost and delete the mob. - if(!mob_occupant.get_ghost(1)) - mob_occupant.ghostize(FALSE, penalize = TRUE, voluntary = TRUE) - - QDEL_NULL(occupant) - for(var/I in cryo_items) //only "CRYO_DESTROY_LATER" atoms are left) - var/atom/A = I - if(!QDELETED(A)) - qdel(A) - open_machine() - name = initial(name) - -#undef CRYO_DESTROY -#undef CRYO_PRESERVE -#undef CRYO_OBJECTIVE -#undef CRYO_IGNORE -#undef CRYO_DESTROY_LATER - -/obj/machinery/cryopod_tele/MouseDrop_T(mob/living/target, mob/user) - if(!istype(target) || user.incapacitated() || !target.Adjacent(user) || !Adjacent(user) || !ismob(target) || (!ishuman(user) && !iscyborg(user)) || !istype(user.loc, /turf) || target.buckled) - return - - if(occupant) - to_chat(user, "The CentCom Teleporter is already occupied!") - return - - if(target.stat == DEAD) - to_chat(user, "Dead people can not be teleported.") - return - - if(target.client && user != target) - if(iscyborg(target)) - to_chat(user, "You can't put [target] into [src]. They're online.") - else - to_chat(user, "You can't put [target] into [src]. They're conscious.") - return - else if(target.client) - if(alert(target,"Would you like to teleport back to CentCom?",,"Yes","No") == "No") - return - - var/generic_plsnoleave_message = " Please adminhelp before leaving the round, even if there are no administrators online!" - - if(target == user && world.time - target.client.cryo_warned > 5 MINUTES)//if we haven't warned them in the last 5 minutes - var/list/caught_string - var/addendum = "" - if(target.mind.assigned_role in GLOB.command_positions) - LAZYADD(caught_string, "Head of Staff") - addendum = " Be sure to put your locker items back into your locker!" - if(iscultist(target) || is_servant_of_ratvar(target)) - LAZYADD(caught_string, "Cultist") - if(is_devil(target)) - LAZYADD(caught_string, "Devil") - if(target.mind.has_antag_datum(/datum/antagonist/gang)) - LAZYADD(caught_string, "Gangster") - if(target.mind.has_antag_datum(/datum/antagonist/rev/head)) - LAZYADD(caught_string, "Head Revolutionary") - if(target.mind.has_antag_datum(/datum/antagonist/rev)) - LAZYADD(caught_string, "Revolutionary") - - if(caught_string) - alert(target, "You're a [english_list(caught_string)]![generic_plsnoleave_message][addendum]") - target.client.cryo_warned = world.time - return - - if(!target || user.incapacitated() || !target.Adjacent(user) || !Adjacent(user) || (!ishuman(user) && !iscyborg(user)) || !istype(user.loc, /turf) || target.buckled) - return - //rerun the checks in case of shenanigans - - if(target == user) - visible_message("[user] starts climbing into the CentCom Teleporter.") - else - visible_message("[user] starts putting [target] into the CentCom Teleporter.") - - if(occupant) - to_chat(user, "\The [src] is in use.") - return - close_machine(target) - - to_chat(target, "If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.") - name = "[name] ([occupant.name])" - log_admin("[key_name(target)] entered a CentCom Teleporter.") - message_admins("[key_name_admin(target)] entered a CentCom Teleporter. (JMP)") - add_fingerprint(target) - -//Attacks/effects. -/obj/machinery/cryopod_tele/blob_act() - return //Sorta gamey, but we don't really want these to be destroyed. + on_store_message = "has been teleported to CentCom." + on_store_name = "Teleporter Oversight" diff --git a/sandcode/code/modules/mob/living/emote.dm b/sandcode/code/modules/mob/living/emote.dm index c231142afc..020df797ab 100644 --- a/sandcode/code/modules/mob/living/emote.dm +++ b/sandcode/code/modules/mob/living/emote.dm @@ -18,5 +18,5 @@ key = "blep" key_third_person = "bleps" message = "bleps!" - emote_type = EMOTE_AUDIBLE | EMOTE_VISIBLE - mob_type_allowed_typecache = list(/mob/living/carbon) + emote_type = EMOTE_VISIBLE + mob_type_allowed_typecache = list(/mob/living) diff --git a/sandcode/code/modules/projectiles/guns/ballistic/pistol.dm b/sandcode/code/modules/projectiles/guns/ballistic/pistol.dm index 6076e1e4e7..915088e34e 100644 --- a/sandcode/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/sandcode/code/modules/projectiles/guns/ballistic/pistol.dm @@ -10,4 +10,6 @@ actions_types = list() icon = 'sandcode/icons/obj/guns/projectile.dmi' spawnwithmagazine = FALSE - var/can_supress = FALSE \ No newline at end of file + var/can_supress = FALSE + +//Note for the future, i didn't know this gun already existed in the code, may be deleted eventually. diff --git a/sandcode/code/modules/surgery/organs/augments_arms.dm b/sandcode/code/modules/surgery/organs/augments_arms.dm index 4e58bf646c..c2efaab34b 100644 --- a/sandcode/code/modules/surgery/organs/augments_arms.dm +++ b/sandcode/code/modules/surgery/organs/augments_arms.dm @@ -5,8 +5,13 @@ /obj/item/organ/cyberimp/arm/toolset/advanced name = "advanced integrated toolset implant" desc = "A very advanced version of the regular toolset implant, has alien stuff!" - contents = newlist(/obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/weldingtool/abductor, - /obj/item/crowbar/abductor, /obj/item/wirecutters/abductor, /obj/item/multitool/abductor, /obj/item/analyzer) + contents = newlist(/obj/item/screwdriver/abductor, + /obj/item/wrench/abductor, + /obj/item/weldingtool/abductor, + /obj/item/crowbar/abductor, + /obj/item/wirecutters/abductor, + /obj/item/multitool/abductor, + /obj/item/analyzer/ranged) /obj/item/organ/cyberimp/arm/toolset/advanced/emag_act() . = ..() @@ -18,9 +23,15 @@ return TRUE /obj/item/organ/cyberimp/arm/surgery/advanced - name = "advanced surgical toolset implant" + name = "advanced integrated surgical implant" desc = "A very advanced version of the regular surgical implant, has alien stuff!" - contents = newlist(/obj/item/retractor/alien, /obj/item/hemostat/alien, /obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/scalpel/alien, /obj/item/circular_saw/alien, /obj/item/surgical_drapes) + contents = newlist(/obj/item/retractor/alien, + /obj/item/hemostat/alien, + /obj/item/cautery/alien, + /obj/item/surgicaldrill/alien, + /obj/item/scalpel/alien, + /obj/item/circular_saw/alien, + /obj/item/surgical_drapes) /obj/item/organ/cyberimp/arm/surgery/emag_act() . = ..() diff --git a/sandcode/code/modules/telescience/telesci.dm b/sandcode/code/modules/telescience/telesci.dm index 6ce5145958..d29c684fd9 100644 --- a/sandcode/code/modules/telescience/telesci.dm +++ b/sandcode/code/modules/telescience/telesci.dm @@ -30,7 +30,7 @@ var/distance = time * power_x - var/dest_x = src_x + distance*sin(rotation); //You can never accurately predict where it lands, at all. - var/dest_y = src_y + distance*cos(rotation); //Telethievery has now been killed, thank me later. + var/dest_x = src_x + distance*sin(rotation); + var/dest_y = src_y + distance*cos(rotation); return new /datum/projectile_data(src_x, src_y, time, distance, power_x, power_y, dest_x, dest_y) diff --git a/sandcode/code/modules/telescience/telesci_computer.dm b/sandcode/code/modules/telescience/telesci_computer.dm index 2cde7f477b..e8941ada81 100644 --- a/sandcode/code/modules/telescience/telesci_computer.dm +++ b/sandcode/code/modules/telescience/telesci_computer.dm @@ -14,9 +14,7 @@ var/z_co = 1 var/power_off var/rotation_off - var/angle_off - var/offsety - var/offsetx + //var/angle_off var/last_target var/in_use @@ -45,8 +43,8 @@ return ..() /obj/machinery/computer/telescience/examine(mob/user) - ..() - to_chat(user, "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots.") + . = ..() + . += "There are [crystals.len ? crystals.len : "no"] bluespace crystal\s in the crystal slots." /obj/machinery/computer/telescience/Initialize(mapload) . = ..() @@ -163,15 +161,13 @@ var/truePower = clamp(power + power_off, 1, 1000) var/trueRotation = rotation + rotation_off - var/trueAngle = clamp(angle + angle_off, 1, 90) - var/trueoffsetx = offsetx + rand(-1,1) // Where will you land? - var/trueoffsety = offsety + rand(-1,1) // You never TRULY know. There are 9 possibilities, IF you calculated the offsetx and offsety. + var/trueAngle = clamp(angle, 1, 90) var/datum/projectile_data/proj_data = projectile_trajectory(telepad.x, telepad.y, trueRotation, trueAngle, truePower) last_tele_data = proj_data - var/trueX = clamp(round(proj_data.dest_x + trueoffsetx, 1), 1, world.maxx) - var/trueY = clamp(round(proj_data.dest_y + trueoffsety, 1), 1, world.maxy) + var/trueX = clamp(round(proj_data.dest_x, 1), 1, world.maxx) + var/trueY = clamp(round(proj_data.dest_y, 1), 1, world.maxy) var/spawn_time = round(proj_data.time) * 10 var/turf/target = locate(trueX, trueY, z_co) @@ -353,9 +349,7 @@ updateDialog() /obj/machinery/computer/telescience/proc/recalibrate() - teles_left = rand(10, 30) - angle_off = rand(-15, 15) + teles_left = rand(30, 40) + //angle_off = rand(-25, 25) power_off = rand(-4, 0) rotation_off = rand(-10, 10) - offsetx = rand(0, 7) - offsety = rand(0, 7) diff --git a/sandcode/icons/obj/contraband1.dmi b/sandcode/icons/obj/contraband1.dmi deleted file mode 100644 index 704bcdbf2c6db6fea522fb1e0cd3b1182c8bec34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 536 zcmV+z0_XjSP)^7Gcz?cH8wUjH#avhFfc7GEg~W!EG#T5D=RcKG&?&x85wSa##bXF zBOo9k85tQ65D+LRCiE-o4x8gd3yb^rhX0d!JMQvg8b*k%9#0CIX%Sad{Xb7OL8aCB*JZU6vyoKseC za&`CgQ*iP1xV24Q< zA{3E0*&iqXB(((6023oDWin(>z7hbk5e##gks;TBVi5q?1`1e(ZHXfQrTRK=Qanxo zY}7P1)hK#r04f8B?gfC@2Cj=g`4il1dw{?nL0^R`1%kkKSo#vo2n}Ets9a0rE^wCv zb