From 4d3c3b29e4472453b2dfc17c404bd30910b95402 Mon Sep 17 00:00:00 2001 From: Mars Date: Wed, 15 Aug 2018 23:57:46 +0200 Subject: [PATCH 001/148] Quick Regex replace action Used Regex to replace all hrefs with \ref and the same displayed text with the corresponding UID macros --- code/__HELPERS/mobs.dm | 2 +- code/game/gamemodes/revolution/revolution.dm | 2 +- code/game/mecha/equipment/tools/other_tools.dm | 2 +- code/game/objects/items/stacks/sheets/mineral.dm | 2 +- code/game/objects/items/weapons/explosives.dm | 4 ++-- .../objects/items/weapons/grenades/chem_grenade.dm | 2 +- code/game/objects/structures/statues.dm | 6 +++--- code/game/turfs/simulated/floor/mineral.dm | 2 +- code/game/verbs/who.dm | 2 +- code/modules/admin/verbs/adminhelp.dm | 4 ++-- code/modules/admin/verbs/pray.dm | 12 ++++++------ code/modules/hydroponics/grown/kudzu.dm | 2 +- code/modules/mining/mine_items.dm | 2 +- code/modules/mob/living/carbon/human/emote.dm | 2 +- code/modules/paperwork/faxmachine.dm | 2 +- code/modules/reagents/chemistry/recipes.dm | 4 ++-- 16 files changed, 26 insertions(+), 26 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 3d495964cb0..29f2062dd82 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -445,7 +445,7 @@ This is always put in the attack log. to_chat(user, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") to_chat(user, "Location = [location_description];") to_chat(user, "[special_role_description]") - to_chat(user, "(PM) (PP) (VV) (SM) (FLW) (CA)") + to_chat(user, "(PM) [ADMIN_PP(M)] [ADMIN_VV(M)] [ADMIN_SM(M)] [ADMIN_FLW(M)] (CA)") // Gets the first mob contained in an atom, and warns the user if there's not exactly one /proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 089cad71a3a..cc7fc9bc64e 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -267,7 +267,7 @@ if(beingborged) to_chat(rev_mind.current, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]") - message_admins("[key_name_admin(rev_mind.current)] ? (FLW) has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") + message_admins("[key_name_admin(rev_mind.current)] ? [ADMIN_FLW(rev_mind.current)] has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") else rev_mind.current.Paralyse(5) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 501b41be4cb..5a97e5811c3 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -69,7 +69,7 @@ P.failchance = 0 P.icon_state = "anom" P.name = "wormhole" - message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)](?) (FLW) used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) + message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)][ADMIN_QUE(chassis.occupant)] [ADMIN_FLW(chassis.occupant)] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) log_game("[key_name(chassis.occupant)] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z])") src = null spawn(rand(150,300)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index d5719261ec8..58eeb1b1d0b 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -166,7 +166,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma sheets ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma sheets ignited by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") fire_act() diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index edf7e0fc32b..cddb8171ca9 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -79,7 +79,7 @@ src.target = AM loc = null - message_admins("[key_name_admin(user)](?) (FLW) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) + message_admins("[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) log_game("[key_name(user)] planted [name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse") target.overlays += image_overlay @@ -88,7 +88,7 @@ addtimer(CALLBACK(src, .proc/prime), det_time*10) /obj/item/grenade/plastic/suicide_act(mob/user) - message_admins("[key_name_admin(user)](?) (FLW) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) log_game("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])") user.visible_message("[user] activates the [name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") var/message_say = "FOR NO RAISIN!" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 9e836fecc87..964b2da1d86 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -419,7 +419,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) (FLW) and last touched by [key_name_admin(last)](?) (FLW) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) [ADMIN_FLW(M)] and last touched by [key_name_admin(last)](?) [ADMIN_FLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 60a02ed2f31..64dac1dd617 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -182,17 +182,17 @@ burn = TRUE if(burn) if(Proj.firer) - message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)][ADMIN_QUE(Proj.firer)] [ADMIN_FLW(Proj.firer)] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(Proj.firer)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(Proj.firer)]","atmos") else - message_admins("Plasma statue ignited by [Proj]. No known firer.(?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [Proj]. No known firer.[ADMIN_QUE(Proj.firer)] [ADMIN_FLW(Proj.firer)] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [Proj] in ([x],[y],[z]). No known firer.") ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma statue ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index 35b7960b742..eef67b583da 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -38,7 +38,7 @@ /turf/simulated/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma flooring was ignited by [key_name_admin(user)](?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma flooring was ignited by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma flooring was ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index dd8123b2876..9356edb6016 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -47,7 +47,7 @@ if(is_special_character(C.mob)) entry += " - Antagonist" - entry += " (?)" + entry += " [ADMIN_QUE(C.mob)]" Lines += entry else for(var/client/C in clients) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index c38b42ad9b5..f67a5989398 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -109,7 +109,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Mentorhelp") - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) (VV) (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob)] (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" for(var/client/X in mentorholders + modholders + adminholders) if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' @@ -123,7 +123,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," T.addResponse(usr.client, msg) else ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned. - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) (VV) (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob)] (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" //Open a new adminticket and inform the user. globAdminTicketHolder.newTicket(src, prunedmsg, msg) for(var/client/X in modholders + adminholders) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 0cf729f1e57..c4152a19171 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -28,7 +28,7 @@ prayer_type = "CULTIST PRAYER" deity = ticker.cultdat.entity_name - msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SC) (BLESS) (SMITE): [msg]" + msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] [ADMIN_QUE(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] ([admin_jump_link(src)]) (CA) [ADMIN_SC(src)] (BLESS) (SMITE): [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) @@ -40,7 +40,7 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "CENTCOMM: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) [ADMIN_CENTCOM_REPLY(Sender)]): [msg]" + msg = "CENTCOMM: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -49,7 +49,7 @@ /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" + msg = "SYNDICATE: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) @@ -58,7 +58,7 @@ /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "HONK: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" + msg = "HONK: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] (RPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -67,7 +67,7 @@ /proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "ERT REQUEST: [key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RESPOND): [msg]" + msg = "ERT REQUEST: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] (RESPOND): [msg]" if(repeat_warning) msg += "
WARNING: ERT request has gone 5 minutes with no reply!" for(var/client/X in admins) @@ -79,7 +79,7 @@ /proc/Nuke_request(text , mob/Sender) var/nuke_code = get_nuke_code() var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "NUKE CODE REQUEST: [key_name(Sender)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" + msg = "NUKE CODE REQUEST: [key_name(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 09c16544396..35eb3ac1c64 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -30,7 +30,7 @@ if(istype(user.loc, /turf/space)) return var/turf/T = get_turf(src) - message_admins("Kudzu planted by [key_name_admin(user)](?) (FLW) at ([T.x],[T.y],[T.z] - (JMP))",0,1) + message_admins("Kudzu planted by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] at ([T.x],[T.y],[T.z] - (JMP))",0,1) investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu") new /obj/structure/spacevine_controller(user.loc, mutations, potency, production) user.drop_item() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index c4487d61948..26f9bb307b4 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -326,7 +326,7 @@ var/turf/T = deploy_location if(!is_mining_level(T.z))//only report capsules away from the mining/lavaland level - message_admins("[key_name_admin(usr)] (?) (FLW) activated a bluespace capsule away from the mining level! (JMP)") + message_admins("[key_name_admin(usr)] [ADMIN_QUE(usr)] [ADMIN_FLW(usr)] activated a bluespace capsule away from the mining level! (JMP)") log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [T.x], [T.y], [T.z]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index c1eb8641820..05646a673b7 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -836,7 +836,7 @@ if(locate(/obj/item/storage/bible) in get_turf(src)) to_chat(viewers(src), "[src] farts on the Bible!") var/image/cross = image('icons/obj/storage.dmi', "bible") - var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src)]) (CA) (SMITE):
" + var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) [ADMIN_VV(src)] (SM) ([admin_jump_link(src)]) (CA) (SMITE):" for(var/client/X in admins) if(check_rights(R_EVENT, 0, X.mob)) to_chat(X, adminbfmessage) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 201455f7a9e..5b4e504696b 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -316,7 +316,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") - var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) (SM) | REJECT: (TEMPLATE) (BSA) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" + var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) [ADMIN_SM(sender)] | REJECT: (TEMPLATE) [ADMIN_BSA(sender)] (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) if(check_rights(R_EVENT, 0, C.mob)) to_chat(C, msg) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 28994d10fb2..609ee30a2e9 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -38,11 +38,11 @@ var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs var/turf/T = get_turf(A) var/area/my_area = get_area(T) var/message = "A [reaction_name] reaction has occured in [my_area.name]. (JMP)" - message += " (VV)" + message += " [ADMIN_VV(A)]" var/mob/M = get(A, /mob) if(M) - message += " - Carried By: [key_name_admin(M)](?) (FLW)" + message += " - Carried By: [key_name_admin(M)][ADMIN_QUE(M)] [ADMIN_FLW(M)]" else message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" From e8d92b3ceded41197789d1e309c85054aafce75b Mon Sep 17 00:00:00 2001 From: Mars Date: Thu, 16 Aug 2018 11:37:03 +0200 Subject: [PATCH 002/148] More flexible macro --- code/__DEFINES/admin.dm | 28 +++++++++---------- code/__HELPERS/mobs.dm | 2 +- code/game/gamemodes/revolution/revolution.dm | 2 +- .../game/machinery/computer/communications.dm | 4 +-- .../game/mecha/equipment/tools/other_tools.dm | 2 +- .../objects/items/stacks/sheets/mineral.dm | 2 +- code/game/objects/items/weapons/explosives.dm | 4 +-- .../items/weapons/grenades/chem_grenade.dm | 2 +- code/game/objects/structures/statues.dm | 6 ++-- code/game/turfs/simulated/floor/mineral.dm | 2 +- code/game/verbs/who.dm | 2 +- code/modules/admin/verbs/adminhelp.dm | 4 +-- code/modules/admin/verbs/pray.dm | 12 ++++---- code/modules/events/brand_intelligence.dm | 2 +- code/modules/hydroponics/grown/kudzu.dm | 2 +- code/modules/mining/mine_items.dm | 2 +- code/modules/mob/living/carbon/human/emote.dm | 2 +- code/modules/paperwork/faxmachine.dm | 2 +- code/modules/reagents/chemistry/recipes.dm | 4 +-- 19 files changed, 43 insertions(+), 43 deletions(-) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 0397b5bcdde..215056bf7a4 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -45,19 +45,19 @@ #define R_HOST 65535 -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_BSA(user) "(BSA)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" -#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" -#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)]" +#define ADMIN_QUE(user,display) "([display])" +#define ADMIN_FLW(user,display) "([display]/a>)" +#define ADMIN_PP(user,display) "([display])" +#define ADMIN_VV(atom,display) "([display])" +#define ADMIN_SM(user,display) "([display])" +#define ADMIN_TP(user,display) "([display])" +#define ADMIN_BSA(user,display) "([display])" +#define ADMIN_CENTCOM_REPLY(user,display) "([display])" +#define ADMIN_SYNDICATE_REPLY(user,display) "([display])" +#define ADMIN_SC(user,display) "([display])" +#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user,"?")]" +#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")]" +#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_QUE(user,"?")] [ADMIN_PP(user,"PP")] [ADMIN_VV(user,"VV")] [ADMIN_SM(user,"SM")] [ADMIN_FLW(user,"FLW")] [ADMIN_TP(user,"TP")]" #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" -#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" \ No newline at end of file +#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 29f2062dd82..c877d23220e 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -445,7 +445,7 @@ This is always put in the attack log. to_chat(user, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") to_chat(user, "Location = [location_description];") to_chat(user, "[special_role_description]") - to_chat(user, "(PM) [ADMIN_PP(M)] [ADMIN_VV(M)] [ADMIN_SM(M)] [ADMIN_FLW(M)] (CA)") + to_chat(user, "(PM) [ADMIN_PP(M,"PP")] [ADMIN_VV(M,"VV")] [ADMIN_SM(M,"SM")] [ADMIN_FLW(M,"FLW")] (CA)") // Gets the first mob contained in an atom, and warns the user if there's not exactly one /proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index cc7fc9bc64e..c63147d240b 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -267,7 +267,7 @@ if(beingborged) to_chat(rev_mind.current, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]") - message_admins("[key_name_admin(rev_mind.current)] ? [ADMIN_FLW(rev_mind.current)] has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") + message_admins("[key_name_admin(rev_mind.current)] ? [ADMIN_FLW(rev_mind.current,"FLW")] has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") else rev_mind.current.Paralyse(5) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 865f683946e..6bc661c7706 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -502,11 +502,11 @@ if(shuttle_master.cancelEvac(user)) log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle - [ADMIN_FLW(user)].", 1) + message_admins("[key_name_admin(user)] has recalled the shuttle - [ADMIN_FLW(user,"FLW")].", 1) else to_chat(user, "Central Command has refused the recall request!") log_game("[key_name(user)] has tried and failed to recall the shuttle.") - message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - [ADMIN_FLW(user)].", 1) + message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - [ADMIN_FLW(user,"FLW")].", 1) /proc/post_status(command, data1, data2, mob/user = null) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 5a97e5811c3..d08922d2b39 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -69,7 +69,7 @@ P.failchance = 0 P.icon_state = "anom" P.name = "wormhole" - message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)][ADMIN_QUE(chassis.occupant)] [ADMIN_FLW(chassis.occupant)] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) + message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)][ADMIN_QUE(chassis.occupant,"?")] [ADMIN_FLW(chassis.occupant,"FLW")] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) log_game("[key_name(chassis.occupant)] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z])") src = null spawn(rand(150,300)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 58eeb1b1d0b..f7fb3173145 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -166,7 +166,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma sheets ignited by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma sheets ignited by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") fire_act() diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index cddb8171ca9..baec32ab1a1 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -79,7 +79,7 @@ src.target = AM loc = null - message_admins("[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) + message_admins("[key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) log_game("[key_name(user)] planted [name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse") target.overlays += image_overlay @@ -88,7 +88,7 @@ addtimer(CALLBACK(src, .proc/prime), det_time*10) /obj/item/grenade/plastic/suicide_act(mob/user) - message_admins("[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) log_game("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])") user.visible_message("[user] activates the [name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") var/message_say = "FOR NO RAISIN!" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 964b2da1d86..44f9326b167 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -419,7 +419,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) [ADMIN_FLW(M)] and last touched by [key_name_admin(last)](?) [ADMIN_FLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) [ADMIN_FLW(M,"FLW")] and last touched by [key_name_admin(last)](?) [ADMIN_FLW(last,"FLW")] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 64dac1dd617..cc9c775bd86 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -182,17 +182,17 @@ burn = TRUE if(burn) if(Proj.firer) - message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)][ADMIN_QUE(Proj.firer)] [ADMIN_FLW(Proj.firer)] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)][ADMIN_QUE(Proj.firer,"?")] [ADMIN_FLW(Proj.firer,"FLW")] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(Proj.firer)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(Proj.firer)]","atmos") else - message_admins("Plasma statue ignited by [Proj]. No known firer.[ADMIN_QUE(Proj.firer)] [ADMIN_FLW(Proj.firer)] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [Proj]. No known firer.[ADMIN_QUE(Proj.firer,"?")] [ADMIN_FLW(Proj.firer,"FLW")] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [Proj] in ([x],[y],[z]). No known firer.") ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma statue ignited by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index eef67b583da..24e44a07622 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -38,7 +38,7 @@ /turf/simulated/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma flooring was ignited by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma flooring was ignited by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] in ([x],[y],[z] - JMP)",0,1) log_game("Plasma flooring was ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 9356edb6016..2ecb8ba4eef 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -47,7 +47,7 @@ if(is_special_character(C.mob)) entry += " - Antagonist" - entry += " [ADMIN_QUE(C.mob)]" + entry += " [ADMIN_QUE(C.mob,"?")]" Lines += entry else for(var/client/C in clients) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index f67a5989398..ecdc727d83a 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -109,7 +109,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Mentorhelp") - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob)] (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob,"VV")] (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" for(var/client/X in mentorholders + modholders + adminholders) if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' @@ -123,7 +123,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," T.addResponse(usr.client, msg) else ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned. - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob)] (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob,"VV")] (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" //Open a new adminticket and inform the user. globAdminTicketHolder.newTicket(src, prunedmsg, msg) for(var/client/X in modholders + adminholders) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index c4152a19171..322aaa4ffb8 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -28,7 +28,7 @@ prayer_type = "CULTIST PRAYER" deity = ticker.cultdat.entity_name - msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] [ADMIN_QUE(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] ([admin_jump_link(src)]) (CA) [ADMIN_SC(src)] (BLESS) (SMITE): [msg]" + msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] [ADMIN_QUE(src,"?")] [ADMIN_PP(src,"PP")] [ADMIN_VV(src,"VV")] [ADMIN_SM(src,"SM")] ([admin_jump_link(src)]) (CA) [ADMIN_SC(src,"SC")] (BLESS) (SMITE): [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) @@ -40,7 +40,7 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "CENTCOMM: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]): [msg]" + msg = "CENTCOMM: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] [ADMIN_CENTCOM_REPLY(Sender,"RPLY")]): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -49,7 +49,7 @@ /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "SYNDICATE: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] [ADMIN_SYNDICATE_REPLY(Sender)]: [msg]" + msg = "SYNDICATE: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] [ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]: [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) @@ -58,7 +58,7 @@ /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "HONK: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] (RPLY): [msg]" + msg = "HONK: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] (RPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -67,7 +67,7 @@ /proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "ERT REQUEST: [key_name(Sender, 1)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] (RESPOND): [msg]" + msg = "ERT REQUEST: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] (RESPOND): [msg]" if(repeat_warning) msg += "
WARNING: ERT request has gone 5 minutes with no reply!" for(var/client/X in admins) @@ -79,7 +79,7 @@ /proc/Nuke_request(text , mob/Sender) var/nuke_code = get_nuke_code() var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "NUKE CODE REQUEST: [key_name(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender)] [ADMIN_CENTCOM_REPLY(Sender)]: [msg]" + msg = "NUKE CODE REQUEST: [key_name(Sender)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] [ADMIN_CENTCOM_REPLY(Sender,"RPLY")]: [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index f687f33803d..520c98f53a4 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -29,7 +29,7 @@ vendingMachines.Remove(originMachine) originMachine.shut_up = 0 originMachine.shoot_inventory = 1 - log_debug("Original brand intelligence machine: [originMachine] [ADMIN_VV(originMachine)] [ADMIN_JMP(originMachine)]") + log_debug("Original brand intelligence machine: [originMachine] [ADMIN_VV(originMachine,"VV")] [ADMIN_JMP(originMachine)]") /datum/event/brand_intelligence/tick() if(!originMachine || QDELETED(originMachine) || originMachine.shut_up || originMachine.wires.IsAllCut()) //if the original vending machine is missing or has it's voice switch flipped diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 35eb3ac1c64..1f19773961c 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -30,7 +30,7 @@ if(istype(user.loc, /turf/space)) return var/turf/T = get_turf(src) - message_admins("Kudzu planted by [key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)] at ([T.x],[T.y],[T.z] - (JMP))",0,1) + message_admins("Kudzu planted by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] at ([T.x],[T.y],[T.z] - (JMP))",0,1) investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu") new /obj/structure/spacevine_controller(user.loc, mutations, potency, production) user.drop_item() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 26f9bb307b4..ad2a4e5b5ab 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -326,7 +326,7 @@ var/turf/T = deploy_location if(!is_mining_level(T.z))//only report capsules away from the mining/lavaland level - message_admins("[key_name_admin(usr)] [ADMIN_QUE(usr)] [ADMIN_FLW(usr)] activated a bluespace capsule away from the mining level! (JMP)") + message_admins("[key_name_admin(usr)] [ADMIN_QUE(usr,"?")] [ADMIN_FLW(usr,"FLW")] activated a bluespace capsule away from the mining level! (JMP)") log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [T.x], [T.y], [T.z]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 05646a673b7..bd00f87cf27 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -836,7 +836,7 @@ if(locate(/obj/item/storage/bible) in get_turf(src)) to_chat(viewers(src), "[src] farts on the Bible!") var/image/cross = image('icons/obj/storage.dmi', "bible") - var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) [ADMIN_VV(src)] (SM) ([admin_jump_link(src)]) (CA) (SMITE):
" + var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) [ADMIN_VV(src,"VV")] (SM) ([admin_jump_link(src)]) (CA) (SMITE):" for(var/client/X in admins) if(check_rights(R_EVENT, 0, X.mob)) to_chat(X, adminbfmessage) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 5b4e504696b..715fc39f0f1 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -316,7 +316,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") - var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) [ADMIN_SM(sender)] | REJECT: (TEMPLATE) [ADMIN_BSA(sender)] (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" + var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) [ADMIN_SM(sender,"SM")] | REJECT: (TEMPLATE) [ADMIN_BSA(sender,"BSA")] (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) if(check_rights(R_EVENT, 0, C.mob)) to_chat(C, msg) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 609ee30a2e9..92b0a00f249 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -38,11 +38,11 @@ var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs var/turf/T = get_turf(A) var/area/my_area = get_area(T) var/message = "A [reaction_name] reaction has occured in [my_area.name]. (JMP)" - message += " [ADMIN_VV(A)]" + message += " [ADMIN_VV(A,"VV")]" var/mob/M = get(A, /mob) if(M) - message += " - Carried By: [key_name_admin(M)][ADMIN_QUE(M)] [ADMIN_FLW(M)]" + message += " - Carried By: [key_name_admin(M)][ADMIN_QUE(M,"?")] [ADMIN_FLW(M,"FLW")]" else message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" From b5b09b435cb7979510f506fcabdc9aec53d5ba56 Mon Sep 17 00:00:00 2001 From: Mars Date: Thu, 16 Aug 2018 11:51:52 +0200 Subject: [PATCH 003/148] No hard-coded format in the macros anymore --- code/__DEFINES/admin.dm | 26 +++++++++---------- code/__HELPERS/mobs.dm | 2 +- code/game/gamemodes/revolution/revolution.dm | 2 +- .../game/machinery/computer/communications.dm | 4 +-- .../game/mecha/equipment/tools/other_tools.dm | 2 +- .../objects/items/stacks/sheets/mineral.dm | 2 +- code/game/objects/items/weapons/explosives.dm | 4 +-- .../items/weapons/grenades/chem_grenade.dm | 2 +- code/game/objects/structures/statues.dm | 6 ++--- code/game/turfs/simulated/floor/mineral.dm | 2 +- code/game/verbs/who.dm | 2 +- code/modules/admin/verbs/adminhelp.dm | 4 +-- code/modules/admin/verbs/pray.dm | 12 ++++----- code/modules/events/brand_intelligence.dm | 2 +- code/modules/hydroponics/grown/kudzu.dm | 2 +- code/modules/mining/mine_items.dm | 2 +- code/modules/mob/living/carbon/human/emote.dm | 2 +- code/modules/paperwork/faxmachine.dm | 2 +- code/modules/reagents/chemistry/recipes.dm | 4 +-- 19 files changed, 42 insertions(+), 42 deletions(-) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 215056bf7a4..fbbf27afe3b 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -45,19 +45,19 @@ #define R_HOST 65535 -#define ADMIN_QUE(user,display) "([display])" -#define ADMIN_FLW(user,display) "([display]/a>)" -#define ADMIN_PP(user,display) "([display])" -#define ADMIN_VV(atom,display) "([display])" -#define ADMIN_SM(user,display) "([display])" -#define ADMIN_TP(user,display) "([display])" -#define ADMIN_BSA(user,display) "([display])" -#define ADMIN_CENTCOM_REPLY(user,display) "([display])" -#define ADMIN_SYNDICATE_REPLY(user,display) "([display])" -#define ADMIN_SC(user,display) "([display])" -#define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user,"?")]" -#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")]" -#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_QUE(user,"?")] [ADMIN_PP(user,"PP")] [ADMIN_VV(user,"VV")] [ADMIN_SM(user,"SM")] [ADMIN_FLW(user,"FLW")] [ADMIN_TP(user,"TP")]" +#define ADMIN_QUE(user,display) "[display]" +#define ADMIN_FLW(user,display) "[display]/a>" +#define ADMIN_PP(user,display) "[display]" +#define ADMIN_VV(atom,display) "[display]" +#define ADMIN_SM(user,display) "[display]" +#define ADMIN_TP(user,display) "[display]" +#define ADMIN_BSA(user,display) "[display]" +#define ADMIN_CENTCOM_REPLY(user,display) "[display]" +#define ADMIN_SYNDICATE_REPLY(user,display) "[display]" +#define ADMIN_SC(user,display) "[display]" +#define ADMIN_LOOKUP(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")])" +#define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")])" +#define ADMIN_FULLMONTY(user) "[key_name_admin(user)] ([ADMIN_QUE(user,"?")]) ([ADMIN_PP(user,"PP")]) ([ADMIN_VV(user,"VV")]) ([ADMIN_SM(user,"SM")]) ([ADMIN_FLW(user,"FLW")]) ([ADMIN_TP(user,"TP")])" #define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index c877d23220e..665e9376d86 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -445,7 +445,7 @@ This is always put in the attack log. to_chat(user, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") to_chat(user, "Location = [location_description];") to_chat(user, "[special_role_description]") - to_chat(user, "(PM) [ADMIN_PP(M,"PP")] [ADMIN_VV(M,"VV")] [ADMIN_SM(M,"SM")] [ADMIN_FLW(M,"FLW")] (CA)") + to_chat(user, "(PM) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")]) (CA)") // Gets the first mob contained in an atom, and warns the user if there's not exactly one /proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index c63147d240b..2f526503046 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -267,7 +267,7 @@ if(beingborged) to_chat(rev_mind.current, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]") - message_admins("[key_name_admin(rev_mind.current)] ? [ADMIN_FLW(rev_mind.current,"FLW")] has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") + message_admins("[key_name_admin(rev_mind.current)] ? ([ADMIN_FLW(rev_mind.current,"FLW")]) has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") else rev_mind.current.Paralyse(5) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 6bc661c7706..843a13262a9 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -502,11 +502,11 @@ if(shuttle_master.cancelEvac(user)) log_game("[key_name(user)] has recalled the shuttle.") - message_admins("[key_name_admin(user)] has recalled the shuttle - [ADMIN_FLW(user,"FLW")].", 1) + message_admins("[key_name_admin(user)] has recalled the shuttle - ([ADMIN_FLW(user,"FLW")]).", 1) else to_chat(user, "Central Command has refused the recall request!") log_game("[key_name(user)] has tried and failed to recall the shuttle.") - message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - [ADMIN_FLW(user,"FLW")].", 1) + message_admins("[key_name_admin(user)] has tried and failed to recall the shuttle - ([ADMIN_FLW(user,"FLW")]).", 1) /proc/post_status(command, data1, data2, mob/user = null) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index d08922d2b39..a42e76015c1 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -69,7 +69,7 @@ P.failchance = 0 P.icon_state = "anom" P.name = "wormhole" - message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)][ADMIN_QUE(chassis.occupant,"?")] [ADMIN_FLW(chassis.occupant,"FLW")] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) + message_admins("[key_name_admin(chassis.occupant, chassis.occupant.client)]([ADMIN_QUE(chassis.occupant,"?")]) ([ADMIN_FLW(chassis.occupant,"FLW")]) used a Wormhole Generator in ([loc.x],[loc.y],[loc.z] - JMP)",0,1) log_game("[key_name(chassis.occupant)] used a Wormhole Generator in ([loc.x],[loc.y],[loc.z])") src = null spawn(rand(150,300)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index f7fb3173145..1d9c4017c58 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -166,7 +166,7 @@ var/global/list/datum/stack_recipe/abductor_recipes = list ( \ /obj/item/stack/sheet/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma sheets ignited by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma sheets ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma sheets ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") fire_act() diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index baec32ab1a1..465b5b273c6 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -79,7 +79,7 @@ src.target = AM loc = null - message_admins("[key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) + message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [det_time] second fuse",0,1) log_game("[key_name(user)] planted [name] on [target.name] at ([target.x],[target.y],[target.z]) with [det_time] second fuse") target.overlays += image_overlay @@ -88,7 +88,7 @@ addtimer(CALLBACK(src, .proc/prime), det_time*10) /obj/item/grenade/plastic/suicide_act(mob/user) - message_admins("[key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) log_game("[key_name(user)] suicided with [name] at ([user.x],[user.y],[user.z])") user.visible_message("[user] activates the [name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") var/message_say = "FOR NO RAISIN!" diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 44f9326b167..933fc79674b 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -419,7 +419,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) [ADMIN_FLW(M,"FLW")] and last touched by [key_name_admin(last)](?) [ADMIN_FLW(last,"FLW")] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) ([ADMIN_FLW(M,"FLW")]) and last touched by [key_name_admin(last)](?) ([ADMIN_FLW(last,"FLW")]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index cc9c775bd86..811f5d72627 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -182,17 +182,17 @@ burn = TRUE if(burn) if(Proj.firer) - message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)][ADMIN_QUE(Proj.firer,"?")] [ADMIN_FLW(Proj.firer,"FLW")] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(Proj.firer)]([ADMIN_QUE(Proj.firer,"?")]) ([ADMIN_FLW(Proj.firer,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(Proj.firer)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(Proj.firer)]","atmos") else - message_admins("Plasma statue ignited by [Proj]. No known firer.[ADMIN_QUE(Proj.firer,"?")] [ADMIN_FLW(Proj.firer,"FLW")] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [Proj]. No known firer.([ADMIN_QUE(Proj.firer,"?")]) ([ADMIN_FLW(Proj.firer,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [Proj] in ([x],[y],[z]). No known firer.") ..() /obj/structure/statue/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma statue ignited by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma statue ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma statue ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index 24e44a07622..46718813cef 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -38,7 +38,7 @@ /turf/simulated/floor/mineral/plasma/attackby(obj/item/W, mob/user, params) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite - message_admins("Plasma flooring was ignited by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] in ([x],[y],[z] - JMP)",0,1) + message_admins("Plasma flooring was ignited by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) in ([x],[y],[z] - JMP)",0,1) log_game("Plasma flooring was ignited by [key_name(user)] in ([x],[y],[z])") investigate_log("was ignited by [key_name(user)]","atmos") ignite(is_hot(W)) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 2ecb8ba4eef..c1b76a733a7 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -47,7 +47,7 @@ if(is_special_character(C.mob)) entry += " - Antagonist" - entry += " [ADMIN_QUE(C.mob,"?")]" + entry += " ([ADMIN_QUE(C.mob,"?")])" Lines += entry else for(var/client/C in clients) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index ecdc727d83a..053933bc74a 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -109,7 +109,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Mentorhelp") - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob,"VV")] (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) ([ADMIN_VV(mob,"VV")]) (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" for(var/client/X in mentorholders + modholders + adminholders) if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' @@ -123,7 +123,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," T.addResponse(usr.client, msg) else ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned. - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) [ADMIN_VV(mob,"VV")] (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) ([ADMIN_VV(mob,"VV")]) (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" //Open a new adminticket and inform the user. globAdminTicketHolder.newTicket(src, prunedmsg, msg) for(var/client/X in modholders + adminholders) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 322aaa4ffb8..1ec575046d6 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -28,7 +28,7 @@ prayer_type = "CULTIST PRAYER" deity = ticker.cultdat.entity_name - msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] [ADMIN_QUE(src,"?")] [ADMIN_PP(src,"PP")] [ADMIN_VV(src,"VV")] [ADMIN_SM(src,"SM")] ([admin_jump_link(src)]) (CA) [ADMIN_SC(src,"SC")] (BLESS) (SMITE): [msg]" + msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""]:[key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (CA) ([ADMIN_SC(src,"SC")]) (BLESS) (SMITE): [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) @@ -40,7 +40,7 @@ /proc/Centcomm_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "CENTCOMM: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] [ADMIN_CENTCOM_REPLY(Sender,"RPLY")]): [msg]" + msg = "CENTCOMM: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")])): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -49,7 +49,7 @@ /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "SYNDICATE: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] [ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]: [msg]" + msg = "SYNDICATE: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_SYNDICATE_REPLY(Sender,"RPLY")]): [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) @@ -58,7 +58,7 @@ /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "HONK: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] (RPLY): [msg]" + msg = "HONK: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -67,7 +67,7 @@ /proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "ERT REQUEST: [key_name(Sender, 1)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] (RESPOND): [msg]" + msg = "ERT REQUEST: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RESPOND): [msg]" if(repeat_warning) msg += "
WARNING: ERT request has gone 5 minutes with no reply!" for(var/client/X in admins) @@ -79,7 +79,7 @@ /proc/Nuke_request(text , mob/Sender) var/nuke_code = get_nuke_code() var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "NUKE CODE REQUEST: [key_name(Sender)] [ADMIN_PP(Sender,"PP")] [ADMIN_VV(Sender,"VV")] [ADMIN_SM(Sender,"SM")] ([admin_jump_link(Sender)]) (CA) [ADMIN_BSA(Sender,"BSA")] [ADMIN_CENTCOM_REPLY(Sender,"RPLY")]: [msg]" + msg = "NUKE CODE REQUEST: [key_name(Sender)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) ([ADMIN_CENTCOM_REPLY(Sender,"RPLY")]): [msg]" for(var/client/X in admins) if(check_rights(R_EVENT,0,X.mob)) to_chat(X, msg) diff --git a/code/modules/events/brand_intelligence.dm b/code/modules/events/brand_intelligence.dm index 520c98f53a4..fc5b8112282 100644 --- a/code/modules/events/brand_intelligence.dm +++ b/code/modules/events/brand_intelligence.dm @@ -29,7 +29,7 @@ vendingMachines.Remove(originMachine) originMachine.shut_up = 0 originMachine.shoot_inventory = 1 - log_debug("Original brand intelligence machine: [originMachine] [ADMIN_VV(originMachine,"VV")] [ADMIN_JMP(originMachine)]") + log_debug("Original brand intelligence machine: [originMachine] ([ADMIN_VV(originMachine,"VV")]) [ADMIN_JMP(originMachine)]") /datum/event/brand_intelligence/tick() if(!originMachine || QDELETED(originMachine) || originMachine.shut_up || originMachine.wires.IsAllCut()) //if the original vending machine is missing or has it's voice switch flipped diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 1f19773961c..855ca829bfa 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -30,7 +30,7 @@ if(istype(user.loc, /turf/space)) return var/turf/T = get_turf(src) - message_admins("Kudzu planted by [key_name_admin(user)][ADMIN_QUE(user,"?")] [ADMIN_FLW(user,"FLW")] at ([T.x],[T.y],[T.z] - (JMP))",0,1) + message_admins("Kudzu planted by [key_name_admin(user)]([ADMIN_QUE(user,"?")]) ([ADMIN_FLW(user,"FLW")]) at ([T.x],[T.y],[T.z] - (JMP))",0,1) investigate_log("was planted by [key_name(user)] at ([T.x],[T.y],[T.z])","kudzu") new /obj/structure/spacevine_controller(user.loc, mutations, potency, production) user.drop_item() diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index ad2a4e5b5ab..a89685715bb 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -326,7 +326,7 @@ var/turf/T = deploy_location if(!is_mining_level(T.z))//only report capsules away from the mining/lavaland level - message_admins("[key_name_admin(usr)] [ADMIN_QUE(usr,"?")] [ADMIN_FLW(usr,"FLW")] activated a bluespace capsule away from the mining level! (JMP)") + message_admins("[key_name_admin(usr)] ([ADMIN_QUE(usr,"?")]) ([ADMIN_FLW(usr,"FLW")]) activated a bluespace capsule away from the mining level! (JMP)") log_admin("[key_name(usr)] activated a bluespace capsule away from the mining level at [T.x], [T.y], [T.z]") template.load(deploy_location, centered = TRUE) new /obj/effect/particle_effect/smoke(get_turf(src)) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index bd00f87cf27..cca8fc6a4e3 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -836,7 +836,7 @@ if(locate(/obj/item/storage/bible) in get_turf(src)) to_chat(viewers(src), "[src] farts on the Bible!") var/image/cross = image('icons/obj/storage.dmi', "bible") - var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) [ADMIN_VV(src,"VV")] (SM) ([admin_jump_link(src)]) (CA) (SMITE):
" + var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) ([ADMIN_VV(src,"VV")]) (SM) ([admin_jump_link(src)]) (CA) (SMITE):" for(var/client/X in admins) if(check_rights(R_EVENT, 0, X.mob)) to_chat(X, adminbfmessage) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 715fc39f0f1..0e6b8d3caff 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -316,7 +316,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") - var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) [ADMIN_SM(sender,"SM")] | REJECT: (TEMPLATE) [ADMIN_BSA(sender,"BSA")] (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" + var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) ([ADMIN_SM(sender,"SM")]) | REJECT: (TEMPLATE) ([ADMIN_BSA(sender,"BSA")]) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) if(check_rights(R_EVENT, 0, C.mob)) to_chat(C, msg) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 92b0a00f249..281bed84b0e 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -38,11 +38,11 @@ var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs var/turf/T = get_turf(A) var/area/my_area = get_area(T) var/message = "A [reaction_name] reaction has occured in [my_area.name]. (JMP)" - message += " [ADMIN_VV(A,"VV")]" + message += " ([ADMIN_VV(A,"VV")])" var/mob/M = get(A, /mob) if(M) - message += " - Carried By: [key_name_admin(M)][ADMIN_QUE(M,"?")] [ADMIN_FLW(M,"FLW")]" + message += " - Carried By: [key_name_admin(M)]([ADMIN_QUE(M,"?")]) ([ADMIN_FLW(M,"FLW")])" else message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]" From 4fa906951a380d38bb7d55102c1f2b58147ba60b Mon Sep 17 00:00:00 2001 From: Mars Date: Thu, 16 Aug 2018 20:04:53 +0200 Subject: [PATCH 004/148] Use of the flexible macro Mostly regex to catch every \ref with the same formatting, with their reference and display name. --- code/__DEFINES/admin.dm | 2 +- code/defines/procs/admin.dm | 5 ++++- code/game/gamemodes/revolution/revolution.dm | 2 +- .../objects/items/weapons/grenades/chem_grenade.dm | 4 ++-- code/modules/admin/admin.dm | 10 +++++----- code/modules/admin/player_panel.dm | 2 +- code/modules/admin/verbs/randomverbs.dm | 2 +- code/modules/food_and_drinks/drinks/drinks/bottle.dm | 2 +- code/modules/paperwork/fax.dm | 4 ++-- 9 files changed, 18 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index fbbf27afe3b..d692e81c6c6 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -46,7 +46,7 @@ #define R_HOST 65535 #define ADMIN_QUE(user,display) "[display]" -#define ADMIN_FLW(user,display) "[display]/a>" +#define ADMIN_FLW(user,display) "[display]" #define ADMIN_PP(user,display) "[display]" #define ADMIN_VV(atom,display) "[display]" #define ADMIN_SM(user,display) "[display]" diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index cdf25ce9651..3c09e6213de 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -68,7 +68,10 @@ return . /proc/key_name_admin(whom) - var/message = "[key_name(whom, 1)](?)[isAntag(whom) ? "(A)" : ""][isLivingSSD(whom) ? "(SSD!)" : ""] ([admin_jump_link(whom)])" + var/mob/whom_mob = whom //Should be always be a mob. + if(!istype(whom_mob)) //Best to check anyway + return "key_name_admin did get a non-mob as argument. Argument is [whom]. Report it to a coder." + var/message = "[key_name(whom, 1)]([ADMIN_QUE(whom_mob,"?")])[isAntag(whom) ? "(A)" : ""][isLivingSSD(whom) ? "(SSD!)" : ""] ([admin_jump_link(whom)])" return message /proc/key_name_mentor(whom) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 2f526503046..3b66393c7f6 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -267,7 +267,7 @@ if(beingborged) to_chat(rev_mind.current, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing[remove_head ? "." : " but the name of the one who flashed you."]") - message_admins("[key_name_admin(rev_mind.current)] ? ([ADMIN_FLW(rev_mind.current,"FLW")]) has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") + message_admins("[key_name_admin(rev_mind.current)] [ADMIN_QUE(rev_mind.current,"?")] ([ADMIN_FLW(rev_mind.current,"FLW")]) has been borged while being a [remove_head ? "leader" : " member"] of the revolution.") else rev_mind.current.Paralyse(5) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 933fc79674b..6d2bd3649cf 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -289,7 +289,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) ([admin_jump_link(M)]) and last touched by [key_name_admin(last)](?) ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([admin_jump_link(M)]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([admin_jump_link(last)]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP). [contained]") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z]) [contained]") update_mob() @@ -419,7 +419,7 @@ var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) var/turf/T = get_turf(src) var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [key_name_admin(M)](?) ([ADMIN_FLW(M,"FLW")]) and last touched by [key_name_admin(last)](?) ([ADMIN_FLW(last,"FLW")]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") + message_admins("grenade primed by an assembly, attached by [key_name_admin(M)][ADMIN_QUE(M,"(?)")] ([ADMIN_FLW(M,"FLW")]) and last touched by [key_name_admin(last)][ADMIN_QUE(last,"(?)")] ([ADMIN_FLW(last,"FLW")]) ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] (JMP).") log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] ([T.x], [T.y], [T.z])") else addtimer(CALLBACK(src, .proc/prime), det_time) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 84120c2c669..0579497d32e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -57,9 +57,9 @@ var/global/nologevent = 0 body += "

\[ " body += "VV - " - body += "TP - " + body += "[ADMIN_TP(M,"TP")] - " body += "PM - " - body += "SM - " + body += "[ADMIN_SM(M,"SM")] - " body += "[admin_jump_link(M)]\]
" if(ishuman(M) && M.mind) body += "HM" @@ -106,9 +106,9 @@ var/global/nologevent = 0 Get | Send To

- [check_rights(R_ADMIN,0) ? "Traitor panel | " : "" ] + [check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ] Narrate to | - Subtle message + [ADMIN_SM(M,"Subtle message")] "} if(check_rights(R_EVENT, 0)) @@ -953,7 +953,7 @@ var/gamma_ship_location = 1 // 0 = station , 1 = space return "[A.name] - [loc.x],[loc.y],[loc.z]" /proc/formatPlayerPanel(var/mob/U,var/text="PP") - return "[text]" + return "[ADMIN_PP(U,"[text]")]" //Kicks all the clients currently in the lobby. The second parameter (kick_only_afk) determins if an is_afk() check is ran, or if all clients are kicked //defaults to kicking everyone (afk + non afk clients in the lobby) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index b03f35b6091..db9ccfeb9a1 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -472,7 +472,7 @@ for(var/datum/mind/blob in mode.infected_crew) var/mob/M = blob.current if(M) - dat += "[M.real_name][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" + dat += "[ADMIN_PP(M,"[M.real_name]")][M.client ? "" : " (ghost)"][M.stat == 2 ? " (DEAD)" : ""]" dat += "PM" else dat += "Blob not found!" diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 2f794dafbd0..3e6f5ba412f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -979,7 +979,7 @@ Traitors and the like can also be revived with the previous role mostly intact. if(!H.key && H.mind.key) key_string = H.mind.key msg += "[key_string][H.real_name][job_string][mins_ssd][role_string]" - msg += "[get_area(H)]PP" + msg += "[get_area(H)][ADMIN_PP(H,"PP")]" if(istype(H.loc, /obj/machinery/cryopod)) msg += "In Cryo" else diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index d9c59a46d58..cbf06629954 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -329,7 +329,7 @@ active = 1 var/turf/bombturf = get_turf(src) var/area/bombarea = get_area(bombturf) - message_admins("[key_name(user)]? has primed a [name] for detonation at [bombarea] (JMP).") + message_admins("[key_name(user)][ADMIN_QUE(user,"?")] has primed a [name] for detonation at [bombarea] (JMP).") log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] ([bombturf.x],[bombturf.y],[bombturf.z]).") to_chat(user, "You light [src] on fire.") diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index ade10febd2c..4b8d4f9db6e 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -45,7 +45,7 @@ var/list/adminfaxes = list() html += "[station_time_timestamp("hh:mm:ss", A.sent_at)]" if(A.sent_by) var/mob/living/S = A.sent_by - html += "[S.name]" + html += "[ADMIN_PP(S,"[S.name]")]" else html += "Unknown" html += "View" @@ -74,7 +74,7 @@ var/list/adminfaxes = list() html += "[station_time_timestamp("hh:mm:ss", F.sent_at)]" if(F.sent_by) var/mob/living/S = F.sent_by - html += "[S.name]" + html += "[ADMIN_PP(S,"[S.name]")]" else html += "Unknown" html += "View" From 6a77df8792c6b84805543fd956099e4671393c8b Mon Sep 17 00:00:00 2001 From: Mars Date: Fri, 17 Aug 2018 12:31:26 +0200 Subject: [PATCH 005/148] UID usage for a number of hrefs. There should be only UID usage now for the hrefs: adminmoreinfo, adminplayerobservefollow, adminplayeropts, vars, subtlemessage, traitor, BlueSpaceArtillery, CentcommReply, SyndicateReply, adminspawncookie, priv_msg, revive, follow. --- code/__HELPERS/mobs.dm | 4 +- code/defines/procs/admin.dm | 2 +- code/game/gamemodes/cult/cult_comms.dm | 4 +- .../gamemodes/miniantags/revenant/revenant.dm | 2 +- code/modules/admin/admin.dm | 4 +- code/modules/admin/player_panel.dm | 42 +++++++++---------- code/modules/admin/topic.dm | 12 ++---- code/modules/admin/verbs/adminhelp.dm | 4 +- code/modules/admin/verbs/freeze.dm | 16 +++---- code/modules/error_handler/error_viewer.dm | 10 ++--- code/modules/mob/dead/observer/observer.dm | 10 ++--- code/modules/mob/living/carbon/human/emote.dm | 2 +- .../hostile/megafauna/megafauna.dm | 2 +- code/modules/mob/login.dm | 4 +- 14 files changed, 56 insertions(+), 62 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 665e9376d86..1ac07146e96 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -445,7 +445,7 @@ This is always put in the attack log. to_chat(user, "Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];") to_chat(user, "Location = [location_description];") to_chat(user, "[special_role_description]") - to_chat(user, "(PM) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")]) (CA)") + to_chat(user, "(PM) ([ADMIN_PP(M,"PP")]) ([ADMIN_VV(M,"VV")]) ([ADMIN_SM(M,"SM")]) ([ADMIN_FLW(M,"FLW")]) (CA)") // Gets the first mob contained in an atom, and warns the user if there's not exactly one /proc/get_mob_in_atom_with_warning(atom/A, mob/user = usr) @@ -503,4 +503,4 @@ This is always put in the attack log. var/list/viewrangelist = splittext(view, "x") viewX = text2num(viewrangelist[1]) viewY = text2num(viewrangelist[2]) - return list(viewX, viewY) \ No newline at end of file + return list(viewX, viewY) diff --git a/code/defines/procs/admin.dm b/code/defines/procs/admin.dm index 3c09e6213de..312d6cbc2e3 100644 --- a/code/defines/procs/admin.dm +++ b/code/defines/procs/admin.dm @@ -46,7 +46,7 @@ . += "Administrator" else if(include_link && C) - . += "" + . += "" . += key if(include_link) diff --git a/code/game/gamemodes/cult/cult_comms.dm b/code/game/gamemodes/cult/cult_comms.dm index c854693c86e..175e650d84e 100644 --- a/code/game/gamemodes/cult/cult_comms.dm +++ b/code/game/gamemodes/cult/cult_comms.dm @@ -34,6 +34,6 @@ if(iscultist(M)) to_chat(M, my_message) else if(M in dead_mob_list) - to_chat(M, " (F) [my_message] ") + to_chat(M, " (F) [my_message] ") - log_say("(CULT) [message]") \ No newline at end of file + log_say("(CULT) [message]") diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index 953e6e91762..7f6df567d61 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -102,7 +102,7 @@ if(istype(M, /mob/living/simple_animal/revenant)) to_chat(M, rendered) if(isobserver(M)) - to_chat(M, "(F) [rendered]") + to_chat(M, "(F) [rendered]") return /mob/living/simple_animal/revenant/Stat() diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 0579497d32e..5f170b9ceec 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -53,12 +53,12 @@ var/global/nologevent = 0 if(istype(M, /mob/new_player)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " body += "

\[ " body += "VV - " body += "[ADMIN_TP(M,"TP")] - " - body += "PM - " + body += "PM - " body += "[ADMIN_SM(M,"SM")] - " body += "[admin_jump_link(M)]\]
" if(ishuman(M) && M.mind) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index db9ccfeb9a1..e5ac6958e34 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -61,7 +61,7 @@ } - function expand(id,job,name,real_name,image,key,ip,antagonist,ref,eyeref){ + function expand(id,job,name,real_name,image,key,ip,antagonist,UID,eyeUID){ clearAll(); @@ -75,15 +75,15 @@ body += ""; - body += "PP - " + body += "PP - " body += "N - " - body += "VV - " - body += "TP - " - body += "PM - " - body += "SM - " - body += "FLW" - if(eyeref) - body += "|EYE" + body += "VV - " + body += "TP - " + body += "PM - " + body += "SM - " + body += "FLW" + if(eyeUID) + body += "|EYE" body += "
" if(antagonist > 0) body += "Antagonist"; @@ -288,11 +288,11 @@ M_key = replacetext(M_key, "\"", "") M_key = replacetext(M_key, "\\", "") - var/M_eyeref = "" + var/M_eyeUID = "" if(isAI(M)) var/mob/living/silicon/ai/A = M if(A.client && A.eyeobj) // No point following clientless AI eyes - M_eyeref = "\ref[A.eyeobj]" + M_eyeUID = "[A.eyeobj.UID()]" //output for each mob dat += {" @@ -300,7 +300,7 @@ [M_name] - [M_rname] - [M_key] ([M_job]) @@ -370,16 +370,16 @@ dat += {"[(M.client ? "[M.client]" : "No client")] - X - PM + X + PM "} switch(is_special_character(M)) if(0) - dat += {"Traitor?"} + dat += {"Traitor?"} if(1) - dat += {"Traitor?"} + dat += {"Traitor?"} if(2) - dat += {"Traitor?"} + dat += {"Traitor?"} dat += "" @@ -397,8 +397,8 @@ if(!dname) dname = M - return {"[dname][caption][logout_status][M.stat == 2 ? " (DEAD)" : ""] - PM[close ? "" : ""]"} + return {"[dname][caption][logout_status][M.stat == 2 ? " (DEAD)" : ""] + PM[close ? "" : ""]"} /datum/admins/proc/check_antagonists() if(!check_rights(R_ADMIN)) return @@ -433,7 +433,7 @@ while(!istype(disk_loc, /turf)) if(istype(disk_loc, /mob)) var/mob/M = disk_loc - dat += "carried by [M.real_name] " + dat += "carried by [M.real_name] " if(istype(disk_loc, /obj)) var/obj/O = disk_loc dat += "in \a [O.name] " @@ -563,7 +563,7 @@ if(show_objectives) txt += {" - Show Objective + Show Objective "} diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 9a526c4a7c2..d9e17cc7bf3 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -3365,19 +3365,13 @@ /proc/admin_jump_link(var/atom/target) if(!target) return // The way admin jump links handle their src is weirdly inconsistent... - var/source = "_src_=holder" + . = ADMIN_FLW(target,"FLW") if(isAI(target)) // AI core/eye follow links var/mob/living/silicon/ai/A = target - . = "FLW" if(A.client && A.eyeobj) // No point following clientless AI eyes - . += "|EYE" - return + . += "|[ADMIN_FLW(A.eyeobj,"EYE")]" else if(istype(target, /mob/dead/observer)) var/mob/dead/observer/O = target - . = "FLW" if(O.mind && O.mind.current) - . += "|BDY" - return - else - return "FLW" + . += "|[ADMIN_FLW(O.mind.current,"BDY")]" diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 053933bc74a..5601d10b083 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -109,7 +109,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Mentorhelp") - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) ([ADMIN_VV(mob,"VV")]) (SM) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) : [msg]" for(var/client/X in mentorholders + modholders + adminholders) if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' @@ -123,7 +123,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," T.addResponse(usr.client, msg) else ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned. - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] (?) (PP) ([ADMIN_VV(mob,"VV")]) (SM) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" //Open a new adminticket and inform the user. globAdminTicketHolder.newTicket(src, prunedmsg, msg) for(var/client/X in modholders + adminholders) diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 9439c63e861..4ffa207c3f4 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -9,12 +9,12 @@ var/global/list/frozen_mob_list = list() /client/proc/freeze(var/mob/living/M as mob in mob_list) set category = "Admin" set name = "Freeze" - + if(!check_rights(R_ADMIN)) return - - if(!istype(M)) - return + + if(!istype(M)) + return if(M in frozen_mob_list) M.admin_unFreeze(src) @@ -89,8 +89,8 @@ var/global/list/frozen_mob_list = list() set name = "Freeze Mech" if(!check_rights(R_ADMIN)) - return - + return + var/obj/mecha/M = O if(!istype(M,/obj/mecha)) to_chat(src, "This can only be used on mechs!") @@ -105,7 +105,7 @@ var/global/list/frozen_mob_list = list() M.overlays += adminomaly if(M.occupant) M.removeVerb(/obj/mecha/verb/eject) - to_chat(M.occupant, "You have been frozen by [key]") + to_chat(M.occupant, "You have been frozen by [key]") message_admins("[key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]") log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]") else @@ -116,7 +116,7 @@ var/global/list/frozen_mob_list = list() M.overlays -= adminomaly if(M.occupant) M.addVerb(/obj/mecha/verb/eject) - to_chat(M.occupant, "You have been unfrozen by [key]") + to_chat(M.occupant, "You have been unfrozen by [key]") message_admins("[key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]") log_admin("[key_name(usr)] unfroze [key_name(M.occupant)] in a [M.name]") else diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index d17b75b986e..146a69c9774 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -14,7 +14,7 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = new() var/global/datum/ErrorViewer/ErrorCache/error_cache = null #endif -// - ErrorSource datums exist for each line (of code) that generates an error, +// - ErrorSource datums exist for each line (of code) that generates an error, // and keep track of all errors generated by that line. // // - ErrorEntry datums exist for each logged error, and keep track of all @@ -181,15 +181,15 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null if(srcRef) html += "
src: VV" if(ispath(srcType, /mob)) - html += " PP" - html += " Follow" + html += " PP" + html += " Follow" if(istype(srcLoc)) html += "
src.loc: VV" html += " JMP" if(usrRef) html += "
usr: VV" - html += " PP" - html += " Follow" + html += " PP" + html += " Follow" if(istype(usrLoc)) html += "
usr.loc: VV" html += " JMP" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 933ef9a6403..1cf9ca1a3b9 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -541,18 +541,18 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if((!target) || (!ghost)) return if(isAI(target)) // AI core/eye follow links var/mob/living/silicon/ai/A = target - . = "core" + . = "core" if(A.client && A.eyeobj) // No point following clientless AI eyes - . += "|eye" + . += "|eye" return else if(istype(target, /mob/dead/observer)) var/mob/dead/observer/O = target - . = "follow" + . = "follow" if(O.mind && O.mind.current) - . += "|body" + . += "|body" return else - return "follow" + return "follow" //BEGIN TELEPORT HREF CODE /mob/dead/observer/Topic(href, href_list) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index cca8fc6a4e3..069dc76b3b7 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -836,7 +836,7 @@ if(locate(/obj/item/storage/bible) in get_turf(src)) to_chat(viewers(src), "[src] farts on the Bible!") var/image/cross = image('icons/obj/storage.dmi', "bible") - var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] (?) (PP) ([ADMIN_VV(src,"VV")]) (SM) ([admin_jump_link(src)]) (CA) (SMITE):" + var/adminbfmessage = "[bicon(cross)] Bible Fart: [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (CA) (SMITE):" for(var/client/X in admins) if(check_rights(R_EVENT, 0, X.mob)) to_chat(X, adminbfmessage) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 23a25d6df28..4b5c77de933 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -86,7 +86,7 @@ return var/turf/newloc = loc message_admins("Megafauna [src] \ - (FLW) \ + ([ADMIN_FLW(src,"FLW")]) \ moved via shuttle from ([oldloc.x], [oldloc.y], [oldloc.z]) to \ ([newloc.x], [newloc.y], [newloc.z])") diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index a5883fe93f2..1e06d4547d9 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -19,10 +19,10 @@ spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!") if(matches) if(M.client) - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1) + message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1) log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)].") else - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1) + message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1) log_adminwarn("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).") /mob/Login() From bedaad976f72965b5d487c128ab1b219859c4310 Mon Sep 17 00:00:00 2001 From: Mars Date: Fri, 17 Aug 2018 20:06:22 +0200 Subject: [PATCH 006/148] Ensure admin\topic.dm uses mostly locateUID --- code/modules/admin/admin.dm | 116 +++++++------- code/modules/admin/topic.dm | 171 ++++++++++----------- code/modules/admin/verbs/adminhelp.dm | 7 +- code/modules/admin/verbs/pray.dm | 4 +- code/modules/error_handler/error_viewer.dm | 4 +- code/modules/paperwork/faxmachine.dm | 2 +- 6 files changed, 145 insertions(+), 159 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 5f170b9ceec..1014e4e7030 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -70,44 +70,44 @@ var/global/nologevent = 0 if(M.client.related_accounts_ip.len) body += "Related accounts by IP: [jointext(M.client.related_accounts_ip, " - ")]

" - body += "Kick | " + body += "Kick | " body += "Warn | " - body += "Ban | " - body += "Jobban | " - body += "Appearance Ban | " + body += "Ban | " + body += "Jobban | " + body += "Appearance Ban | " body += "Notes | " if(M.client) if(M.client.check_watchlist(M.client.ckey)) body += "Remove from Watchlist | " body += "Edit Watchlist Reason " else - body += "Add to Watchlist " + body += "Add to Watchlist " if(M.client) - body += "| Prison | " - body += "\ Send back to Lobby | " + body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += {"
Mute: - \[IC | - OOC | - PRAY | - ADMINHELP | - DEADCHAT\] - (toggle all) + \[IC | + OOC | + PRAY | + ADMINHELP | + DEADCHAT\] + (toggle all) "} var/jumptoeye = "" if(isAI(M)) var/mob/living/silicon/ai/A = M if(A.client && A.eyeobj) // No point following clientless AI eyes - jumptoeye = " (Eye)" + jumptoeye = " (Eye)" body += {"

- Jump to[jumptoeye] | - Get | - Send To + Jump to[jumptoeye] | + Get | + Send To

[check_rights(R_ADMIN,0) ? "[ADMIN_TP(M,"Traitor panel")] | " : "" ] - Narrate to | + Narrate to | [ADMIN_SM(M,"Subtle message")] "} @@ -128,39 +128,39 @@ var/global/nologevent = 0 if(issmall(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(isAI(M)) body += "Is an AI " else if(ishuman(M)) - body += {"Make AI | - Make Mask | - Make Robot | - Make Alien | - Make Slime | - Make Superhero + body += {"Make AI | + Make Mask | + Make Robot | + Make Alien | + Make Slime | + Make Superhero "} //Simple Animals if(isanimal(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " if(istype(M, /mob/dead/observer)) - body += "Re-incarnate | " + body += "Re-incarnate | " if(ispAI(M)) body += "Is a pAI " else - body += "Make pAI | " + body += "Make pAI | " // DNA2 - Admin Hax if(M.dna && iscarbon(M)) @@ -175,7 +175,7 @@ var/global/nologevent = 0 if(bname) var/bstate=M.dna.GetSEState(block) var/bcolor="[(bstate)?"#006600":"#ff0000"]" - body += "[bname][block]" + body += "[bname][block]" else body += "[block]" body+="" @@ -183,39 +183,39 @@ var/global/nologevent = 0 body += {"

Rudimentary transformation:
These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

- Observer | - \[ Alien: Drone, - Hunter, - Queen, - Sentinel, - Larva \] - Human - \[ slime: Baby, - Adult \] - Monkey | - Cyborg | - Cat | - Runtime | - Corgi | - Ian | - Crab | - Coffee | - \[ Construct: Armoured , - Builder , - Wraith \] - Shade + Observer | + \[ Alien: Drone, + Hunter, + Queen, + Sentinel, + Larva \] + Human + \[ slime: Baby, + Adult \] + Monkey | + Cyborg | + Cat | + Runtime | + Corgi | + Ian | + Crab | + Coffee | + \[ Construct: Armoured , + Builder , + Wraith \] + Shade "} if(M.client) body += {"

Other actions:
- Forcesay | - Admin Room | - Thunderdome 1 | - Thunderdome 2 | - Thunderdome Admin | - Thunderdome Observer | + Forcesay | + Admin Room | + Thunderdome 1 | + Thunderdome 2 | + Thunderdome Admin | + Thunderdome Observer | "} body += {"
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index d9e17cc7bf3..966e167f1b2 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -13,7 +13,7 @@ if(href_list["rejectadminhelp"]) if(!check_rights(R_ADMIN|R_MOD)) return - var/client/C = locate(href_list["rejectadminhelp"]) + var/client/C = locateUID(href_list["rejectadminhelp"]) if(!C) return @@ -317,7 +317,7 @@ else if(href_list["simplemake"]) if(!check_rights(R_SPAWN)) return - var/mob/M = locate(href_list["mob"]) + var/mob/M = locateUID(href_list["mob"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -426,7 +426,7 @@ else if(href_list["appearanceban"]) if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["appearanceban"]) + var/mob/M = locateUID(href_list["appearanceban"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -475,7 +475,7 @@ else if(href_list["jobban2"]) // if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["jobban2"]) + var/mob/M = locateUID(href_list["jobban2"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -501,17 +501,17 @@ //Regular jobs //Command (Blue) jobs += "" - jobs += "" + jobs += "" for(var/jobPos in command_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 6) //So things dont get squiiiiished! @@ -522,17 +522,17 @@ //Security (Red) counter = 0 jobs += "
Command Positions
Command Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in security_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -543,17 +543,17 @@ //Engineering (Yellow) counter = 0 jobs += "
Security Positions
Security Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in engineering_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -564,17 +564,17 @@ //Medical (White) counter = 0 jobs += "
Engineering Positions
Engineering Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in medical_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -585,17 +585,17 @@ //Science (Purple) counter = 0 jobs += "
Medical Positions
Medical Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in science_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -606,17 +606,17 @@ //Support (Grey) counter = 0 jobs += "
Science Positions
Science Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in support_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -627,17 +627,17 @@ //Non-Human (Green) counter = 0 jobs += "
Support Positions
Support Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in nonhuman_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -646,29 +646,29 @@ //Drone if(jobban_isbanned(M, "Drone")) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" //pAI if(jobban_isbanned(M, "pAI")) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" jobs += "
Non-human Positions
Non-human Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]DroneDroneDroneDronepAIpAIpAIpAI
" //Antagonist (Orange) var/isbanned_dept = jobban_isbanned(M, "Syndicate") jobs += "" - jobs += "" + jobs += "" counter = 0 for(var/role in antag_roles) if(jobban_isbanned(M, role) || isbanned_dept) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -683,9 +683,9 @@ counter = 0 for(var/role in other_roles) if(jobban_isbanned(M, role) || isbanned_dept) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -696,17 +696,17 @@ //Whitelisted positions counter = 0 jobs += "
Antagonist Positions
Antagonist Positions
[replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")][replacetext(role, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in whitelisted_positions) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" counter++ else - jobs += "" + jobs += "" counter++ if(counter >= 5) //So things dont get squiiiiished! @@ -723,7 +723,7 @@ else if(href_list["jobban3"]) if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["jobban4"]) + var/mob/M = locateUID(href_list["jobban4"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -885,10 +885,10 @@ return 0 //we didn't do anything! else if(href_list["boot2"]) - var/mob/M = locate(href_list["boot2"]) + var/mob/M = locateUID(href_list["boot2"]) if(ismob(M)) if(M.client && M.client.holder && (M.client.holder.rights & R_BAN)) - to_chat(src, "[key_name_admin(M)] cannot be kicked from the server.") + to_chat(usr, "[key_name_admin(M)] cannot be kicked from the server.") return to_chat(M, "You have been kicked from the server") log_admin("[key_name(usr)] booted [key_name(M)].") @@ -958,7 +958,7 @@ else if(href_list["newban"]) if(!check_rights(R_BAN)) return - var/mob/M = locate(href_list["newban"]) + var/mob/M = locateUID(href_list["newban"]) if(!ismob(M)) return switch(alert("Temporary Ban?",,"Yes","No", "Cancel")) @@ -1016,7 +1016,7 @@ //Watchlist else if(href_list["watchadd"]) - var/target_ckey = locate(href_list["watchadd"]) + var/target_ckey = href_list["watchadd"] usr.client.watchlist_add(target_ckey) else if(href_list["watchremove"]) @@ -1062,7 +1062,7 @@ if(!check_rights(R_ADMIN|R_MOD)) return - var/mob/M = locate(href_list["mute"]) + var/mob/M = locateUID(href_list["mute"]) if(!ismob(M)) return if(!M.client) return @@ -1128,7 +1128,7 @@ else if(href_list["monkeyone"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["monkeyone"]) + var/mob/living/carbon/human/H = locateUID(href_list["monkeyone"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1143,7 +1143,7 @@ else if(href_list["corgione"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["corgione"]) + var/mob/living/carbon/human/H = locateUID(href_list["corgione"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1158,7 +1158,7 @@ else if(href_list["makePAI"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makePAI"]) + var/mob/living/carbon/human/H = locateUID(href_list["makePAI"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1182,7 +1182,7 @@ else if(href_list["forcespeech"]) if(!check_rights(R_SERVER|R_EVENT)) return - var/mob/M = locate(href_list["forcespeech"]) + var/mob/M = locateUID(href_list["forcespeech"]) if(!ismob(M)) to_chat(usr, "this can only be used on instances of type /mob") @@ -1199,7 +1199,7 @@ if(alert(usr, "Send to admin prison for the round?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["sendtoprison"]) + var/mob/M = locateUID(href_list["sendtoprison"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1243,7 +1243,7 @@ if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["sendbacktolobby"]) + var/mob/M = locateUID(href_list["sendbacktolobby"]) if(!isobserver(M)) to_chat(usr, "You can only send ghost players back to the Lobby.") @@ -1270,7 +1270,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdome1"]) + var/mob/M = locateUID(href_list["tdome1"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1300,7 +1300,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdome2"]) + var/mob/M = locateUID(href_list["tdome2"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1330,7 +1330,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdomeadmin"]) + var/mob/M = locateUID(href_list["tdomeadmin"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1352,7 +1352,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["tdomeobserve"]) + var/mob/M = locateUID(href_list["tdomeobserve"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1386,7 +1386,7 @@ if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["aroomwarp"]) + var/mob/M = locateUID(href_list["aroomwarp"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob") return @@ -1406,7 +1406,7 @@ else if(href_list["revive"]) if(!check_rights(R_REJUVINATE)) return - var/mob/living/L = locate(href_list["revive"]) + var/mob/living/L = locateUID(href_list["revive"]) if(!istype(L)) to_chat(usr, "This can only be used on instances of type /mob/living") return @@ -1418,7 +1418,7 @@ else if(href_list["makeai"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makeai"]) + var/mob/living/carbon/human/H = locateUID(href_list["makeai"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1434,7 +1434,7 @@ else if(href_list["makealien"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makealien"]) + var/mob/living/carbon/human/H = locateUID(href_list["makealien"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1446,7 +1446,7 @@ else if(href_list["makeslime"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makeslime"]) + var/mob/living/carbon/human/H = locateUID(href_list["makeslime"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1458,7 +1458,7 @@ else if(href_list["makesuper"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makesuper"]) + var/mob/living/carbon/human/H = locateUID(href_list["makesuper"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1471,7 +1471,7 @@ else if(href_list["makerobot"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["makerobot"]) + var/mob/living/carbon/human/H = locateUID(href_list["makerobot"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1483,7 +1483,7 @@ else if(href_list["makeanimal"]) if(!check_rights(R_SPAWN)) return - var/mob/M = locate(href_list["makeanimal"]) + var/mob/M = locateUID(href_list["makeanimal"]) if(istype(M, /mob/new_player)) to_chat(usr, "This cannot be used on instances of type /mob/new_player") return @@ -1495,7 +1495,7 @@ else if(href_list["incarn_ghost"]) if(!check_rights(R_SPAWN)) return - var/mob/dead/observer/G = locate(href_list["incarn_ghost"]) + var/mob/dead/observer/G = locateUID(href_list["incarn_ghost"]) if(!istype(G)) to_chat(usr, "This will only work on /mob/dead/observer") log_admin("[key_name(G)] was incarnated by [key_name(src.owner)]") @@ -1505,7 +1505,7 @@ else if(href_list["togmutate"]) if(!check_rights(R_SPAWN)) return - var/mob/living/carbon/human/H = locate(href_list["togmutate"]) + var/mob/living/carbon/human/H = locateUID(href_list["togmutate"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1516,25 +1516,14 @@ //H.regenerate_icons() else if(href_list["adminplayeropts"]) - var/mob/M = locate(href_list["adminplayeropts"]) + var/mob/M = locateUID(href_list["adminplayeropts"]) show_player_panel(M) - else if(href_list["adminplayerobservejump"]) - if(!check_rights(R_ADMIN|R_MOD)) - return - - var/mob/M = locate(href_list["adminplayerobservejump"]) - - var/client/C = usr.client - if(!isobserver(usr)) C.admin_ghost() - sleep(2) - C.jumptomob(M) - else if(href_list["adminplayerobservefollow"]) if(!check_rights(R_ADMIN|R_MOD)) return - var/mob/M = locate(href_list["adminplayerobservefollow"]) + var/mob/M = locateUID(href_list["adminplayerobservefollow"]) var/client/C = usr.client if(!isobserver(usr)) C.admin_ghost() @@ -1606,13 +1595,13 @@ output_ai_laws() else if(href_list["adminmoreinfo"]) - var/mob/M = locate(href_list["adminmoreinfo"]) + var/mob/M = locateUID(href_list["adminmoreinfo"]) admin_mob_info(M) else if(href_list["adminspawncookie"]) if(!check_rights(R_ADMIN|R_EVENT)) return - var/mob/living/carbon/human/H = locate(href_list["adminspawncookie"]) + var/mob/living/carbon/human/H = locateUID(href_list["adminspawncookie"]) if(!ishuman(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1636,7 +1625,7 @@ else if(href_list["BlueSpaceArtillery"]) if(!check_rights(R_ADMIN|R_EVENT)) return - var/mob/living/M = locate(href_list["BlueSpaceArtillery"]) + var/mob/living/M = locateUID(href_list["BlueSpaceArtillery"]) if(!isliving(M)) to_chat(usr, "This can only be used on instances of type /mob/living") return @@ -1695,7 +1684,7 @@ else if(href_list["EvilFax"]) if(!check_rights(R_ADMIN)) return - var/mob/living/carbon/human/H = locate(href_list["EvilFax"]) + var/mob/living/carbon/human/H = locateUID(href_list["EvilFax"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -1980,7 +1969,7 @@ else if(href_list["FaxReplyTemplate"]) if(!check_rights(R_ADMIN)) return - var/mob/living/carbon/human/H = locate(href_list["FaxReplyTemplate"]) + var/mob/living/carbon/human/H = locateUID(href_list["FaxReplyTemplate"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -2034,7 +2023,7 @@ message_admins("[key_name_admin(src.owner)] replied to [key_name_admin(H)] with a standard '[stype]' fax") else if(href_list["HONKReply"]) - var/mob/living/carbon/human/H = locate(href_list["HONKReply"]) + var/mob/living/carbon/human/H = locateUID(href_list["HONKReply"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -2054,7 +2043,7 @@ return if(alert(src.owner, "Accept or Deny ERT request?", "CentComm Response", "Accept", "Deny") == "Deny") - var/mob/living/carbon/human/H = locate(href_list["ErtReply"]) + var/mob/living/carbon/human/H = locateUID(href_list["ErtReply"]) if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return @@ -2283,32 +2272,32 @@ else if(href_list["jumpto"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["jumpto"]) + var/mob/M = locateUID(href_list["jumpto"]) usr.client.jumptomob(M) else if(href_list["getmob"]) if(!check_rights(R_ADMIN)) return if(alert(usr, "Confirm?", "Message", "Yes", "No") != "Yes") return - var/mob/M = locate(href_list["getmob"]) + var/mob/M = locateUID(href_list["getmob"]) usr.client.Getmob(M) else if(href_list["sendmob"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["sendmob"]) + var/mob/M = locateUID(href_list["sendmob"]) usr.client.sendmob(M) else if(href_list["narrateto"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["narrateto"]) + var/mob/M = locateUID(href_list["narrateto"]) usr.client.cmd_admin_direct_narrate(M) else if(href_list["subtlemessage"]) if(!check_rights(R_ADMIN)) return - var/mob/M = locate(href_list["subtlemessage"]) + var/mob/M = locateUID(href_list["subtlemessage"]) usr.client.cmd_admin_subtle_message(M) else if(href_list["traitor"]) @@ -2318,7 +2307,7 @@ alert("The game hasn't started yet!") return - var/mob/M = locate(href_list["traitor"]) + var/mob/M = locateUID(href_list["traitor"]) if(!ismob(M)) to_chat(usr, "This can only be used on instances of type /mob.") return @@ -3222,12 +3211,12 @@ return 1 else if(href_list["viewruntime"]) - var/datum/ErrorViewer/error_viewer = locate(href_list["viewruntime"]) + var/datum/ErrorViewer/error_viewer = locateUID(href_list["viewruntime"]) if(!istype(error_viewer)) to_chat(usr, "That runtime viewer no longer exists.") return if(href_list["viewruntime_backto"]) - error_viewer.showTo(usr, locate(href_list["viewruntime_backto"]), href_list["viewruntime_linear"]) + error_viewer.showTo(usr, locateUID(href_list["viewruntime_backto"]), href_list["viewruntime_linear"]) else error_viewer.showTo(usr, null, href_list["viewruntime_linear"]) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 5601d10b083..00ab4aa3867 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -86,9 +86,6 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," if(!mob) return //this doesn't happen - var/ref_mob = "\ref[mob]" - var/ref_client = "\ref[src]" - //send this msg to all admins var/admin_number_afk = 0 var/list/mentorholders = list() @@ -109,7 +106,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," switch(selected_type) if("Mentorhelp") - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) :[msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (REJT) [ai_found ? " (CL)" : ""] (TAKE) :[msg]" for(var/client/X in mentorholders + modholders + adminholders) if(X.prefs.sound & SOUND_ADMINHELP) X << 'sound/effects/adminhelp.ogg' @@ -123,7 +120,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," T.addResponse(usr.client, msg) else ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned. - msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) :[msg]" + msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) :[msg]" //Open a new adminticket and inform the user. globAdminTicketHolder.newTicket(src, prunedmsg, msg) for(var/client/X in modholders + adminholders) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 1ec575046d6..82d73499eb5 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -58,7 +58,7 @@ /proc/HONK_announce(var/text , var/mob/Sender) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "HONK: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RPLY): [msg]" + msg = "HONK: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RPLY): [msg]" for(var/client/X in admins) if(R_EVENT & X.holder.rights) to_chat(X, msg) @@ -67,7 +67,7 @@ /proc/ERT_Announce(var/text , var/mob/Sender, var/repeat_warning) var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) - msg = "ERT REQUEST: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RESPOND): [msg]" + msg = "ERT REQUEST: [key_name(Sender, 1)] ([ADMIN_PP(Sender,"PP")]) ([ADMIN_VV(Sender,"VV")]) ([ADMIN_SM(Sender,"SM")]) ([admin_jump_link(Sender)]) (CA) ([ADMIN_BSA(Sender,"BSA")]) (RESPOND): [msg]" if(repeat_warning) msg += "
WARNING: ERT request has gone 5 minutes with no reply!" for(var/client/X in admins) diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index 146a69c9774..fdcbe6056b5 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -68,10 +68,10 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null if(!linktext) linktext = name if(istype(back_to)) - back_to_param = ";viewruntime_backto=\ref[back_to]" + back_to_param = ";viewruntime_backto=[back_to.UID()]" if(linear) back_to_param += ";viewruntime_linear=1" - return "[html_encode(linktext)]" + return "[html_encode(linktext)]" /datum/ErrorViewer/ErrorCache var/list/errors = list() diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 0e6b8d3caff..9999d3306ed 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -316,7 +316,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#9A04D1") - var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) ([ADMIN_SM(sender,"SM")]) | REJECT: (TEMPLATE) ([ADMIN_BSA(sender,"BSA")]) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" + var/msg = "[faxname]: [key_name_admin(sender)] | REPLY: (RADIO) (FAX) ([ADMIN_SM(sender,"SM")]) | REJECT: (TEMPLATE) ([ADMIN_BSA(sender,"BSA")]) (EVILFAX) : Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) if(check_rights(R_EVENT, 0, C.mob)) to_chat(C, msg) From 244eed8f31c96b7885d59a823194f6de28aeee9c Mon Sep 17 00:00:00 2001 From: FreeStylaLT Date: Mon, 20 Aug 2018 17:39:54 +0300 Subject: [PATCH 007/148] crunch --- code/modules/surgery/organs/organ_external.dm | 2 ++ sound/effects/bone_break_1.ogg | Bin 0 -> 10011 bytes sound/effects/bone_break_2.ogg | Bin 0 -> 9115 bytes sound/effects/bone_break_3.ogg | Bin 0 -> 11306 bytes sound/effects/bone_break_4.ogg | Bin 0 -> 11599 bytes sound/effects/bone_break_5.ogg | Bin 0 -> 16103 bytes sound/effects/bone_break_6.ogg | Bin 0 -> 14194 bytes 7 files changed, 2 insertions(+) create mode 100644 sound/effects/bone_break_1.ogg create mode 100644 sound/effects/bone_break_2.ogg create mode 100644 sound/effects/bone_break_3.ogg create mode 100644 sound/effects/bone_break_4.ogg create mode 100644 sound/effects/bone_break_5.ogg create mode 100644 sound/effects/bone_break_6.ogg diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 04ce880d5f5..24627260bff 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -607,6 +607,8 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") + var/S = pick('sound/effects/bone_break_1.ogg','sound/effects/bone_break_2.ogg','sound/effects/bone_break_3.ogg','sound/effects/bone_break_4.ogg','sound/effects/bone_break_5.ogg','sound/effects/bone_break_6.ogg') + playsound(owner,S, 150, 1) if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits)) owner.emote("scream") diff --git a/sound/effects/bone_break_1.ogg b/sound/effects/bone_break_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..71bbcabde77460d06788e6370e8b110278369619 GIT binary patch literal 10011 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 literal 0 HcmV?d00001 diff --git a/sound/effects/bone_break_2.ogg b/sound/effects/bone_break_2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3277636622769fa716ea71be122a718d4d140db8 GIT binary patch literal 9115 zcmeHscT|%}*Z3r%1PGWwz<|Ie5PC6zpn$TQK&XO3C{h-IK$MQs6ci2B5RnB0qze&{ z>H-QXwx~3fUIYad5Wy}hu4OI!o&dYQ-S>RweD68m``35AIg@#2?!9yG%$<8@?o4*< z+2ai0U@c+vS1V2->H#oiSZqWjGbl;`g3}w;NZ!L%Di>ip1U>&sf}R2lKJc!-%(CqA zzoe~*RbDy}iF?rAK>Zz&d+?z_Ot%#Ycw4*yiEKbJAQ|E{cZ7up?TutbvBIOZL?Lnl z^z)Bo`9%jsg!@DXg|W;a+Rb`o13j_{o=h^O7@AVZD2OQ3FMLmo-yW7(On3kqYKQp+ zM@0HCBmKey%)<6k4Au!?LE#WAmK7NVaWf++2zW z^79xc1?_G@Ej68#E1znX_rUWd;lz~r3$q1fq@;&1w4#8DB&1*&HiXna3$3aGCReMv zfO$vjjAB$Txf`D>W%{i0grm8bR;8nzc5P)Y!%pv>XVjakq7S3q(mvr+(B=@6KZ})l z;GwZVzy+3R$Hf$_EY}{?7;uhx77B>0MyfSq>43w*yPltlGw-6`xWFB~k2 z>bFG|RjtDuxYlk72{6dLTm%JZD7c^WXT6^Ce>gzFBG+%QG3)Rwdi#1v=xvcVA zVH(w6yQ`%ChRF=nBmF^f$R#mvsP;LaSS6!hP%n2?5JatLQiBE_|9Ds#Bn zcQnuS8r;OB$j zcs$|p_;H{0X)KTYf8^DvLo)#acUp1BTxJHjyCiwLx!CFguX&F3K5Tck;_YnWwicqp zux{Tw%8n(MNd8TUhqImiI57Qy$1YQ@}mL;Vy78HPiEh(u?XY z@j~yMecArs=D$1#au_IEGKiM{@Ekr_(E@Uw7F~y>)j66CLAyh=<@&!b008_f)HcCZ zLUdy2jWLYI7<#TQX0HET8WXq{q}V(F&Ker`B&;CQ)>wsq^h9H*zmPDKT7d6HX{ zq%4JFdyK#oC#aM2rA(_!Mird3S zT1P>$9RYny;O^3D3s8qC{C5=U($=;1|L8+>Ku`t*d5sGsXa^Ps<<&O--B!Mg8DGZo ze8jx9&1(uXB)%7Q6en| zZ#zg~2Y3up0u}6K@E&p$$s&=F)#F{D4eC1xL6PJkvncC|L>!Ve{|b2lJ_te-i8u+_ z2oTk@KYa-5HE1uxLpr4d!MBd2XqsdFivDZGvH@VjL;)Mf+@bz8CZ4+-0LD4~9#DK? zoWp_vHp_zto%Z=v=_>y&$ zJqgTTNatx5RoB&NLxKiYjwn}G@4%upaJ&B2fi-IH^<@ijJWXzOZQWT3C#)qD_&^)@ zxG=;N0@b}}rwU*Y$a_6!mF3x&@HL`5Z+1{!T^)4Zz+E7M@fenTxuDBgox5N>#(O-E zbQPPAe92D8qV*Ld%PHqkv3Us#HJuiS@8dU+k5bOlQR1o~wYE?x;Bv5Q^{!B3% zia$!Dq|9M}x~gq%=ysB{%Zj>X0e@PsTxA;E>LA;k>bSCn^y<3coXQnQZQWn`6d+dg z6zRRDO|`qcK!JMeBm_aFi|cr*Ai%AwdwH`>pw{sizez}mke2w6${-c?2##-E2>^EN z1wgyWFDB&#ubB@Wba26WnLWY`2Jo?|2>$jI$$Hfi>~Uc^g%)Xmgzk+QG!FS05sK$h(f)(BHdU=SofKTM zqn%x2Yr)n9#T15TuwK`k$pXG|)H8#uJ`T;KDxZ0*`J$Y;wpQysX2We<9wS(<4Hxpd zvnJPW8@US?Lh70q5a07WMmD`5y)A>><(Y!%>Xh?uXdPF{z_fG@dp5R;_-8ax1-Bz)lA&`O@+N*TuM?FIz_N#P3jgTNat-MwC(6*b1 z08}<6PmXy;ey4Jxs<^y*`HJlY0DwB3%dpk6Oj4=BRpy(k$woOcxSCN?jD}kCe*8Q! zk4sL;O?EL5&13Y^#0e~WEs@4NoM~6V>4ISG3V*>f0S$n}EHNSRaz0fADB_7WFpw&o zCWTRGjp%cmml ze|h=n;GXzvfd@{-ZO*#DX~T(-$1f*-;$cP(zWqbKCD85hvGqwG3-96Q4-L*fr1z}% zF*V1*uI|TQJAm=eh?X(@^!|~6988}Rk<%05+}OV?db4{@3HJR9_`dVukslDpW-w?3 zp9)_7dK@SmK3S5Fn}x^RaEQv|si&O!(vFIg1Q1P0C1X3nMN4 z@#-3%gIlsx?W7&c{{AL5G(PeCzbWo zlL9jsjD=B|`WsR4Gcc+mr_+L9G&Gq`rvpnTvcrf9)S}k#zPA|<5d2I{At4&d951a(XA851fE$s-u2ZQl)vi`!TN6eG0LMH@6J`zycd)9V zorF*3Z5pac0i>D=wx0wH>vE&bol~CA3x2foff7mbG9Fojm$896;yQg%IPi)C<_52) z{$POd`@$2(`&>c{E5iZa(*MDxIsj_CbvtkvTt0$;pfjbdcz)<47>NY7o)s1XS+XKS zj(+W5B?;;%CL0j8Us_%!92!1;C`tOfe1gMs#pn}3hJO?dn>PK{zaKAdXdfuvwRlEXw~4IR=+J<%mb>${Z|zee!G8k#0f@=^Dg-xg zdEn5P*vxZ{j#Tj3@v+{9ZBfzJQ{OL<#gkjQ{oHdQ2%EE8k?}BH0r^@sUcGypp;YY~ zx@5`+akCRou3CEJruJxtoa=3=I>l@YIl5@xEj5EtCJ<^;M3E>^hjcqm?sC6@Q%Q4B zdgWH^in{!ed5dHN*fCHCg17}(QgW*PMzSI zT&g`hpKBqk>V*j<6sC!9fAsAn`T6LtKqQ^hBpI($Rw6$Y`YBCa_?`yr_T?X~&pmuA zEBOK`Jv#Wl13)juH2a?HNzstjGIAN{c zBh~cn6X$HxKDvDgwqSpOo@kGN_ev4s4eAarw>-kSI~2tZYe;Gx*h^}@FIhZ;wnW~V zT6$3Swno?{>h5^j{^|Ac2OplBPEZiewgK2(%ettR6ENAeZz;2zn=0B=)2Z%e^fZtt zJ%Zu*>ZS@+sHPMz^z;W_=JPty)}&ph zM8k3zk$C4Z%4m4~#_+)_p-)eKzCw9o`m6ZwL$@9u{t}Zy63H~La|P{|Q>c24w^9cR z7SI3x>if)gR$7my#28PvWxVJEDeemTfKnN~tWn{>6)^yOGioqS844~LLC*E3PxpoU z8Yu}I@|{F0k_r<2jZv72eSw96Z0e~$gl=V>ws=*qw3~V(@W{|_j#HDErewqZXuZnD z;1Qz)pBWblKNBaR>tkb^<7(EwnJi8EbhgHNGV8$DY0v(PBXi`Sn9++W62cEvj{7Xq zIGivYI9@{4F6MB&#FP5UghR6F`(=z|4h2-#XOF0#gE#mF&Q$%@Yj0z>&*j8d81g>) zxRuhKOnN0A1;>hmSQ{6w=j$I*2Pc`Rqx9Ci!$XonSM|CU&yKoqv$VK8O%;xE=oP-| z)|;o3pxyD8^>e>LTL#XRmI1RwhtvooVwxsjr4gz-Z+11&B%8I}i>YXGBwEBN7545` z|B(iI_KsuvFIo3xH=pV+^)F121v`IxYPMV$v44}F)VE36<#nIrm->)TM{ZVsq4kXu z>-M71QYf}++T1(%i?;(6ueW7}o`gB(-u@N5s~Aw!R4>O{KW-AgvDdKmnrRO@Ug$P! z8oF}?DCFNWxq9%8TR_GSWlu)T`}?(R=&oA5qDUT16MBmE9FbEAU)T`n;KjLEx^c7U zw5;g)61Js`D%Nu7`-WLgSLEpY^Ie@!f2KyAknypF>oT9xMw{NwskkZACBJMhlgMg{ zWXpjlXT()E%{#{?+ZEzJKCfN;Jx(;J`sv1p`v7rQ6{^1BtH$alDhep_lso}Ngxlq! z(=mSishwo+zSPod=EtLa3z0qKCY~E0G7IH8mA}~8cNpk#%|7HE&<9dv(Lk7EhMqhg z>u}=mWs=^fs#_1P5LCUoi+_9zSKMXG$KRhlx>K5D)As2SIHV~Ws0E9nh%@R%z7-?X zi5wwZ(60C)V1g{`{nYfr!%1G}+X9@Jx8*#Mjj68FrU;q!26J|PSyH;cywFYZ z&62~wd0?y6H#laX|2N$467;QGy4PhLkkY9E@8u+;xsEKfF%e(%*6_-w655eT0zKey zh(8u4il*Ht#w~A#xx_wJ4%EM_eK}$s<)rt8cmq{Kl-4J3x{K*zFW72PGEO$rdw#ui zZQ;oGlU_$M{UXDy5%*!Qf4nRvWcs+Q&UJSYbz#!E^^W}#0%fr{RRQDMklkWx5@oeB zrrCJ$(4}>nbtK>Ui1tUm29Jd3VQ?N7V>hH}@ClXRRqUSiK?na#XPWVPT<% zn*qo<9wwqZ^Ba=z?$ZM*Wif^X0Hr=ROXWtL8`eV4t+*58971z<>^(p4c{P#J>gy}t ze4eSmRONErxo{oqCPJo&R1-M`<}@jyD4Z~#!x_gda|RP35fQ`8*YWHLbGe#`ZO zxyZ*~p1=d}CCvgbck9SQcVd7jNLuc7(@ z4oDUwV~$M}Q-To0@V>nJomFPiG8g9WyqX z_6?ZpgeL*@eseNFG5olg*KX0STa9GDyRY~M^w|}P<&ylCbW4{;#~nBAB5P*`G(#e8 zp|vMwZRp|qj*)+TUCy1FmGj> zbaJyCn20&gvGkBN^B*5tSFZF6%mJu(#W(WAc}e`>gFeTcC5-*Gs+--%MD?j-BEm#Z zr%l_oi(aGa+}VBmxxoBWB9E%`lhSJwc^Es?@PmzK{qKKFXlPd(KNkcNPXpri+o9^e z1Z-LC&?@Yk%MKO&j##wlFdhXIIlXP^R;reKr?V$5g@iC-g`}H5i_dpD*lYNzYsu1e zJFH~q)HcBM=bx^WN~7V)?`FyTH=40d#c`JkeIzhPH7ODC(;Ra+rZm_|iH6?j zRzew))*ayu*JbvE8mq+me=9W>ZOx!|PThD@&NQy`p6VYks?0NU>_{sMu|9rR3gJj( zmI!~u*sqV@b0a}$B=r%^q!KIbt`t^{lX`J5T*mIaxar7DsW?{ox5g^7Lz0idmi*Cg z3fEw1`tH}CA5_jJFMwV#GiJ#6k5Tg}%FV4Ir%X27 z;u0s?g3l<)sl=A*I8v|`2=7ucRdX7Zg0jS?`aHPsbAOiUv1b$5_ufDGSuMA`e17@x z&5ZA?@pJ2Re)D>?pc-GyyJzX&5TFN*Z>d%&QHA};UBv9dCkiEpSKeq7 zynH*#(l~Xlv_=j&$w)~_H#68UG}y_4>Ler=BbS^qr`i*# zP8E1mfbMwGO+Hs4B^kZx>sW}|S7uZ0Ast0>O9txGzBdCZU3QsyX#_F6*T=khxUDkz5-c)db}4iLT;IJ!a4r*;`Gi39x`NHRt-(Q5ejH>}}+kG6`~j07o?CvEO)pOM<2pWWiR zJ)y0}&UTS0<=d#Ot^GOw<m*xw|zuPsK3lF8jBC({NPekTTbL!h0@EPJ8cb421fxpU(rrf)9^G5}mQ|NZZ@i;~YMsza zN>Ncr;qChH&2`5ypEQgGr*Th2#C_c@(vtQ#RfQCIPOKvSDt%7aN%Dt3&OZUq)l@ce zf8HbgSwwCWiX&vDCY}#NLodgUtw}gbp=Nj4R_1Z{ zPEG-{ATy0y5lnLpn8UR>pplgIzb5N+=o`n5)M!zcwlyRv&DHOUjlV7@V|x{~Bt}4T zdNp>tyd>4v{NDPiD8}t_TVcVMnu#Ufcka6r>zgDu`@A_+T-tF&E`aU)NDV*I)X1&l zx>^9Nh!s(62*>^iH~v~A0;ctZ%<;mQpeFG#-&CiJW)gBa>dR==@{UI8*z#K#Xuzz; znJK*WQq?ELQy%SatIo2eGv1V|Fgx8hAy@}4zVw?@#@gzHJbr!D$=n~&E2fi_>zxyI zlZ$7aoP&8{7O5ALPtRy(rj1Qa+`r~Mt!dt4rY!Bw;_EyC*6`K$2cZTl$m^gacz+N$ zU>XSfS(HrD)6+LHoD)lc_ulb)m+~WQ_fyiDS26@;(aR3HnQjs}h~gS#JmcVx)%#!k zTpv?mf^L#&#zGrZ0)o&VZm98IGR63E-?5@xgSgHq7+Fq7oirV2^EwEHE;OpN&l3&~ zE7zo_03i`)k?;a>R5faf6yp}Qn~t=+lzhXtxuooV`&pmsycaiTkWzj;z!jop07Yq? z%({zD3C*)LT(7de_Cj{@oRn3Dt4>>+pP$7+Va9aeaQ5427j!n$3U*$2Kb~@>Meib_ zVkS?t^@5(-YhO#n(98+s<-->X+N@}9Cj!RqKB#rG3Dn{NEL?_N^4W_(g7p+$FZE0i z>3rf#-q+;WV6KVTH)@RJl?Pq>M1H*UYR$0#jccbkJoVUY)RfqztvM2p;xy*o+2|iw qppB?oPLug(3u5WZs*`W?zFYjVoUDDl{_DYx!uK0xp-s^%|NjA{H!mpw literal 0 HcmV?d00001 diff --git a/sound/effects/bone_break_3.ogg b/sound/effects/bone_break_3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5724955fe73220a4fc15f5450a9c635fb368ea5b GIT binary patch literal 11306 zcmeHtcU03$)9^1LK!AV=1PBP2K=irTFW`O7eV+54^Sy0jp0S>J#({Td*2#k$Xa;V}s&?_QY!ngXB2y7Z4l7 zj1P_4vnxI{GRPdH-KtB}*CiTbi3AhU784Q?0TM+p_XO`{1_zn%-4loe`;pABsMuYs zSmvHU^T=qD{sulQbPoti2#SpZxtSB>`Mjedqe14Zh@f@aIP=iBs7U^RO&~UCPe4>) zP^`H#GajluJ-xC=+WN8WDu0#YP40 z4G0RvvXZcNQBlDWK{{9iT_RBzTmlgyxXwe9V(kS1-~hl@cE${{Ckj0Q0Gxky>(;X5 z(Vmt2$*GNY=wuGR^|;k;Vn3%FY`yL|C7*m1gvDV=fzki~1K67Iir59pa?gsA+#-rD zuQkGNWo8pfW5&CL}!u3go>+clCQL1!F)k%HbX@-IO7IRMzn^_OfZJxfq ziIKAjk+WryH@(&xUXk0oBJccrURydA0#vIQ7prI%D{B@%HY$c?WVJ$pK)y<fQ5ZIOZy6flZw~Mic_H#4gb?j4jI(~ z$e=DqVieZ1T`XRBO~a!AxTjH64R+8j#;kKqJ5GJ>DLSk5s3DSj5RR}lT_6EmppQu=D>_&sF?2_Z^o!uVm{MMMp z-DvVVaih=pAvhv?{&;w|h%eas8hGOMbrC)cl>567Su-CpxNpo`nBkLY*pvbx78=)p zJE9c-hs2R;;;3ewQhtH0V^cbfA*Ws+pSHGgEC6I6|7pdzEDVc-J9Q#fRI9PBI7e$t z%a|@7iR{L)(GO+DMuZHS+9Wn&c({O)5iAU^__D*+V!A;Yu2xO6u7C_ zz(Ok_xi$aDDvt%dqB>3VpBwiUKaNtI{6`*trvMuBx;?KMv*)&i$n8h>-Z_`)du#85 zn<)=&=I@ft3ff-wZ+U&`;7S0#JFU562`i5{aw6T8BC@{0zdgq;20c=waHR z&E4FHvC}Uu{I~gEo&!1zm~9w%n}72h9#O#>be=zTTt2L?(R>m-9pY_d|G5DGz$-*J z@sAQbouNC+FqmcNdU}|9{X?^>W@O94O*00z!JnTj3HueR5+>zpg5KgACz$mdk2 zdBurKlQ<5!IF=|*jaVjO(r{u%-d$5J&Lb`Y=fQChH)&vK3hBZ@yM+Taa)87L1b-EZ zcM<^ik)Ir=pxA_4wnC^a~3DBB1E z9L8G}V;v?)?7;04q!4*$DeQI`l6ZyC^!oMA*9Q4Lh#-k`;f16P6+$lQ8vhD;0ccWtG|5+95vxA#f8%|LZN2U85$Hcv*N#2EE@pW5Mh7~NR5&IH7BmO3;-Av z2W$u93!~y72*3{7&IND#vifZ0|C-JJ9Qq#uA#4o*I1CDmR=5f+2-r?8))DjH4qO)q zktd@ed}1hnb{k2mGQt|9Kve)K2rSUhSEoqyCq`xUq1@3T9j9q(QBY{b(lIsC^$*S{ z?ov{N$oL0v-Jv<$W+-^QfNB@ytKBffQAdInGU^Cm@c{3kQQ6ZZ?z1FrNJaBljLy{$ zR65$l-P5!5aY)%xHdmvfp}AQL6g0keMR|JqhE)6pU(hof|4r>HTe+0P)yQdRYCbJS zN85mb4|ssz6a<-qpyuTZWIhZ8`O0$ES)P6Y{Y_Nr%MNXBZU*lgs0T=Jb8nDbHGjxy z?W@4ey}ma~gSHDTfY`A=b-<0_K>#cdZgQpZPxwZc^KSvP{GZAI2egGerX#T)5g~Vn%hL&c%C`C)PlwoCGU&qjQ)U7XL2;xeM9hak@VBc{J*Oemp|~Nbaw)r^Ijp#D z4bs&7FMaY6YkG?H{jE*atK1O2dYi@gL8XW1%}joP+uZ!3zl*Qdn|qmeKqZ1&;(;my zRXEDOzIDU^z%3d8w9YX1W*p&m@W6`>%D*o&h;U6X<{HJ;Au0BnnT7vu{t&hY2tbCn zfdN&xcmP;{Ey<-;es>M_zglUfzMzc!pOOF^{BF#%;t-$V!FVnc z88G2sU*Cz*&cLM8939&_%gvS)G8jH#y2DS5m#}p+K6ym7o8U_7%UHP`=Vd5bnw@j3 z)+?A&Mwo6FCj8YyvF06=D=N@ZB5_iY-?85mMWVjWag3J}rz(R!8@4g+}SQ(uz6`$j%xb{8A768B~55JL2rIO+l6qPn% zamp%qRWUAn3)sxw^)%a&CHFhjZLkrOf4yv76d(WOLLN`Db>VGj{t~DfXT4zN7N2Wl3;|t z&esQB2SY?}0gZ#z7#twP*B}6R=ABu19IgWVV)t>Lu4>J5%6o6#lT!gq&abAtvqAG7 ztb*`Ez_0j>PfO{2@LwP71WxBLzqkWgke3>N?3=xEtKdCn+sV8p(TU=pd#~K}3;duy zd-7#_?mIs!e{CG)--a8{%YkETj*9-(5ysDnam)-(Tb=% zpdx&D?C@rWurK_) zaypUL>n6YNYXi7M5~uF(Aau&nGcBvyKQzL~k~w?&-L=5m#deG;@IGU*Xq zK$wZlKXCmJkmqP8Sb6w(u!o7(TeG`n>XCDz@d#elbBzWo>S!uXUL+s`mVrbLj3P_% zY2}{>N*JE197-O~qa{JUS;*NUN}c0hTz=rbE3ywCqsQZIkf2Et&SLX3o9Pwi);3VN zAK!*r!m>mH#w5f6X33EkHbDj&*^b4^VT3x@L^j&yPB>xj1%Wz^dB1dF5t+>FtrcaNa5Yfp>~v31E-LuCsIpJ~t`%qG zrwU)z$q3ttfj8uvB;k(k#biY&s%|>vkz#E_Z;I~Xj$#&Us>%&A7^@xT-g#AA=4xA` z%dFnkTcO`@x-S7xX$v7ak|L^7XU8AEnU%EVF7UjKSmSoTwjKZQVSJ}B6R`R?3f<{t zr?13Rd>phF{}?q#tla-E-f%#%Y`?t%ZN`eJMu{OMZIj z!&9l@H>I?Ur}m^Oq_g2g{h6L+uG{ars_h6$E_+EpT(UC9<8zR4nJoY9b?Zo z6xwnHJlHk@Ol+o~l(YopV~NlN3UmB!`?TfXN;zkb2Jv-Z(RkMGd1x3R}xP~tTN!< zjk0ijng$T2>(eKkvAas+dila#9nyDd=rC+)_u-#-)fjbQ;fu|+wene^0ioWg-tsSB z@4p?oXz1|((;RV$`t4^Y>b6(4MGVwA?7>Im-XCtRzw2MX4??w-w0~b(^DJCSbx>LU zos|ok3(2^ZGd3e6cPkb>-(KF9UdMj+ux(aB5O15e zKqA7bMAMs1&m5mW)nC0V@$&XOXB43=sKk>G$ftjJ{&TeKB|HI-5P|<__ItYXhJ6uWu^!KHeZ;iqKYy(D zh9Qs3UOy!o?|MYYhg4x|a>_wKSN^(UyV@28MI{;7y~7eQqbc?B5L zGvJxG+@63$X*l}zjr+E7-KedN(oT1T&{}qwzKSr>Qk6V^7lS3}0xv;BBt$nfgF7AO z(QEjn6z2? zo7dFU@@y-MHi=XH1d&H*LJ_XwRR`y+y#Bi0^l*CIWHcfIO9 zyAM^5g{NVs{4YL~jk({xEAh~;-q$C;a8Z$i91H;4Z5b4(dvYT6wwv5`C-sjTcyjq@ zL%>IBh~|m*ETBr;UW&tLceQyNI433NV&MJNy2Z(RTg&#}_PNySaD3YdKiNF1iYpIX z+r@^l*Ple4arD?eosdR3#dSE@$ZI7r)tfK-gwhK0MGl zkJf9Ll`6u8DQooupLN@2Vd(*nuSQFdZJBs96Di&wBWPx8Cw;*9pi*tE=w$^dSxnyuONK}tf^TLU`-pdbw~iJAHeM5I-HW-LR{ ze{Jn^OV<1ZgdOAAUwOk`VQdnQ9j`0wWFJ*(n7GzjW!vPg38OZ zRE|l1u-zX7$t-0;E4*vytQUZH?CmRTioD@caxfj|e&Dm-{F6oPiI^J?dw0BfO~7+t)LI-RL5AwHf-C-ZsHQ#$6RVWB->cr{HZq9t>|6OcfXO1Ke0o8>#yY_k(qC8#JtDk`8I|&*f zBQD)@-@7G?iLo6Z{J79AyV>t9aZxcU^xJnu5OTI>UNQ|UNmVAM$reGJS-mlZDY6o- zzw65V8?!9@l?V}r7l$Sb`$ScYC>%<~j$1fn)6Wy8OI*OhIDoi!zGAu~QLm=?8r4+2q}oMDST^<92#8-xKO46ihT z$WdIK%N`-7vqpM9-M(;4j?vG88fb}TSf%`>u=6id?eqGjKEXQPJKCMO1ED}JdBe^I{i{nPV}%*h8mRVU9j zLe0Vsi9UO7)gk}Kd=+&6ep>5rOTP25?k^<-OnM_mYMvM%ghS$x{iq!|XZL4DaEYum zku>YuUAD;+y;W{<_=AVE@FpKr*Q=BBQ-wk$rsZC_p?@`l0ge@tn*F@Ii`Mz@T#|41 zCb|x)&N?vq3dJsAH zrIV|79Ju$*B}t7(lok>~7*>U8sCuMdKPB%dGP~gnEw9^Jn;hbt!F|?g$i$1nh+KUQ zNzswOKt(~SNE*i>#o5nnir$aS0i0c<?^_j{neCo!AD#>eak#6GrmUEUetatH2fw#cH+gi|7x0jE*=MEA zE1p@Fw(cRMrg75LhKaMy^Nsc0cQ(O_u*fg>MkWwWJ;v5h!2+C|T_m7DIjZDSddB+M zly!^b=VjZHV$xfq)IRyn#x{=i_i+7dxkIr?p~-D&0jt}J2+>F(iQ~tFq)2h6VRtNgy~rLU|Se2E~8?DMWwL*#L-kb3=R!hDW98sC@|5Xc$yz{9Sz zUVI^|3*1FT$(?Zx3x~Du(6MT zC#Wdn2zj?-NrO8ijt{#pTJ^v-7C?m5!gAj2SDen;*52H8!G1Wp?2r;&XZB1Ru=al+ zuv|L-9ROH+iQxYcDt>>^BMm(hb88D@OG`5wijj$>DZ$9h(9CQVX{bk_n45q|8w(RX z17j2GCvsK(m1!dS<6mGO(9VUy;o3!3LUTkiU1#oEvfg4t!^T&%5n3yE+10s&4kkorj?iRt&`eFO= zQ}1+voeVn>+u0|WH^nB7gl4soeeIR#W196iN&kEn0wrgfw|n}H$gTtRH$`@7=1Ibs zA4Tqdbn>%&qrLB>%VwCNoo|WJo)?ISf(sfkcjuCXz4gp!P9om=)*4gx0a#2}qyd4N z`4TJN@#9y58a9s|kWo~g8g%LXueeNhx<+rFzz>5&gVxWBU&3F9dB3{;PN3DiM$yNS z>|OlqP^(8YK{hIa(Pt%D4WM79Zfn&e-os-iAmsUBXd2La$YEy>B(ziikt;VTTIfY3}Ol z)haN+o`i@3J;*E}hBn0}f-(fJwPIH~NYUZU>$xi}+se}Ig^lr&`L>*F@*56-aO|CI z9k=Jm9-w{8-<@JhxwO!3=;(k*4-pQxq1DP*q0y4ad`!yCbRtn;{;2QX=Y3~XCNVgo zVxQsMWk5mAU2ex-?1m#vd2J?zOVGEPI555^7|`=c&9<{E%d?l?=)nUpL)(mLucntw z)t-bkrZS!K%Zq4mz?qR~7P0h@7FvAaG1GLzVaN9S%7MGz7fnE5o&otHki(PDZg;2K z<0av}7Rjx@_V~dbyqG@LFA*@DC)b${cAo#;u=c6cRuA(8M-Ao{+Ia3dhK zB|rsNkD#E8vUcf(hRQl2q>ux{IpsNYq%`wsXRO>4EP_kqreWo0u0nJiSBg=^%{I^d z^eK!_0(DP#kP1LdD5r)y9TFWf1h-DRsj&3ZbE3VsXa9qZ!qtT#mk}R!^}wjCDtowP zD+~WQJLBzu)-OQwm{21y1l`|8!eeO~+|#!L4<(MszDrKIfAuW<&5ci#1k&yh^reY- z9Y&RYa}U#3w#iLy_WqgEmSi6h#cGGNIY~81&3;}gNA6wnO0%bbYQH@?RbaOTJ?gvU zF>FZy#wMKrJqj_i6_>G=xj)j_#~SVbF7Vc9%7}l+vHUZX(~%s>OWpWPR2l)Jl=A$3 zR+RfU$ug7n;33A0o{S6}uk79=XfGD14Bjp5v*gOQd}oNnD{NSsPk5SkSj`{jqOw

G`&|_8wE4Ov>6PJ(%+qnJp1=j71-poy%Jf0C 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 literal 0 HcmV?d00001 From 6ab1fc1642e27eae9a9fb0aa6096700b7b4402a8 Mon Sep 17 00:00:00 2001 From: FreeStylaLT Date: Mon, 20 Aug 2018 18:02:04 +0300 Subject: [PATCH 008/148] considered --- code/modules/surgery/organs/organ_external.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 24627260bff..3302a67ca4d 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -607,7 +607,7 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") - var/S = pick('sound/effects/bone_break_1.ogg','sound/effects/bone_break_2.ogg','sound/effects/bone_break_3.ogg','sound/effects/bone_break_4.ogg','sound/effects/bone_break_5.ogg','sound/effects/bone_break_6.ogg') + var/S = "sound/effects/bone_break_[rand(1,6)].ogg" playsound(owner,S, 150, 1) if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits)) owner.emote("scream") From 36a336b62ca752dd4a0d2ca34d874da9673afca1 Mon Sep 17 00:00:00 2001 From: FreeStylaLT Date: Tue, 21 Aug 2018 14:52:52 +0300 Subject: [PATCH 009/148] fixed channels and normalized volume --- sound/effects/bone_break_1.ogg | Bin 10011 -> 11955 bytes sound/effects/bone_break_2.ogg | Bin 9115 -> 9813 bytes sound/effects/bone_break_3.ogg | Bin 11306 -> 12525 bytes sound/effects/bone_break_4.ogg | Bin 11599 -> 10940 bytes sound/effects/bone_break_5.ogg | Bin 16103 -> 16124 bytes sound/effects/bone_break_6.ogg | Bin 14194 -> 12320 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/effects/bone_break_1.ogg b/sound/effects/bone_break_1.ogg index 71bbcabde77460d06788e6370e8b110278369619..0c7d31a97697473b4e7292c3bcd5403550d09d77 100644 GIT binary patch delta 7480 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 RQTZucbF$#o1ltAl{|EEfRWkqp delta 5512 zcmX|Fc|4Tg_rEj77|dt}qp{U6ldLr(OHqtnQDjR~VMcZ>DzvC)Fc_14OMGNaK8B37 zoe`p^1ovNuyOQ92{uOjdZ|+Q-&4gn%yrGXnzzGe(00Y$tey7qd_9yWRN=(e|dboY~ zoA|6tVC1b{c5^+!#?C_6*`~uLUg!TN@n3|m@wCfX3)iE3FRO}h7z7inC>Rw3H?rnx z>SIG69iAgFf`$=K~4@^S)iY)njv8eXsp_i}dh6qDhECkNQJK(yzS2r+K%A($T{|+K3Sr;?> z0r(vaz+w^165)!MG@fQ|4AMRkY;W1GhsOcY)$ntVL^pJA>M>E7810#t+fBP<`G*a0 zJmEl(UVur@+3gYcdYgKblH_r-Pf`Fl!U2}ASc-pu2LQ`cK>@i$JnXT(pJw;x&IE5; zGpr?BHXetHvL&n1VAyz=kXp=&_D6GmO8ZaW80^?*inWBp00Oo%Pz5$7s2daEH?xW@ ziCAJg5RCbwq_Nf~mZf$pnthndd4W|Cm%+OzuR1g>fTF_R=Yx2kW-R4G-1bDKa*wdNy5U49l zVWDhnS`X^Pa*W)kcdB2^^U&9$_9`41&_c@T3^C%$89CgWuFj6}2rALBwJ?$P?&Bs&vn{xs|en3~pQ6Z6r3IBF$|Fyf<|UrCkcclL5n(zn+)hy3Ad>c83$A4c(cG zh<3H(85EV%eU->o29MQg6wm7+DYAp8V$d8hy3RMGgCO)MK^uvT{gr6!Fe9L|Dhce$@ls@OJmudCV5_RI$mXuE=4*6( zjLUhPY)D$SAtWvJr(1tk+@v2XM$n0OoBE4~+J%he}YHw%jt+$nncy7mu-gzn{ps4b;| zmedrgirTr~iQNxJU$rkX?ak2lLtM){?|5H)Vj8ymet3Z@vdDeuvB!wa*86A7uOMh%|S#uuE%qGT_Pgm_BN4L%qbsXZgSgy z)T1J#xr6#pa~XlB$u3lt*iW>vh;r%t^l8Dxc@Z+Vw7^=>II{8a(KL>T(#3_Y;nmv@ z*t_Ota__7h3l~4@cQLh z9?*dtRkZ<4Seow$Hk+uJfsD`nANr$a;i6@g#;x(AtA=7CVg-`{DJe9RRp|Y7K5>Kv z>9`5XTzTVOZOl8lN##r&pQr4`r|xelSI!#XHU>XER27!>*P_||OG%5R>5^Hboir?4 z);K%IaIF;mN4@3K#oCHx*}AJ^K7mqJB__{!VP8qSSq)xNeEJbZ3ItH8>J+%2x^N>> zS}0XyE3hPShNP*{92iL{QHVf9#(3#A`Ny*YPAIICUk2_$je-5iTM5FX_VLCHun9aq24k{GkE zYqkHyb@nEc`&O;5E7S=fLVkgIUbJ!hqzST05Z+Kx!is+fm@bu6>%J*r|$**jw0;TXn%e<%v<+ksLMk#m`bqj;stw zPzk5LdudWheYY)kdGJ=~Ho)CG(`_JdaX0^n$I)lCVw5qFF`6G_`g&DKr?JjR(7ENZ z?epz~OVkf(CMEATCOpbE6>yX8Sv&>4S=!Oe5?X;R!H7+W#K)j?uZ)*xU-KtwV0(Z5 zz5t1;Ck%m%T?;E3hN~;{T4!heIGV`sF6hdK z1>F&?=_;mUfkz^pLsH3LB zw_cr&6H%;ck$fnXJn>_wyFs?C{mVTG0K6znzPmueO<70IMof&?hV84%2~$+$x#{eu zeAV0Us;?})1BEAuH@|P9+LVr`?{Gn(7*<=Zc_xB0vlhEN9aR(;Gmwmg_UF*OW0RjR zIcivmvb3KU1#&9Y4(z0!Yee(%8mI5gAfnAtBotpLu9<^q6tAffZTVp%LSTDa1MJ=! zw!_E#pv_7&grXuV9T3F@2Zu)>6T40|B+ZSC*a<*xnU9L^g1YWL7Q(B@T*d-PSeOx_ z07^DqfdM3d(90^^3wn!eXeXz=G}zYRe~AA-^c@e@Pi(c#Rej^B1?-8`#MdX+gHe>0 z!QOJ!$inWTB;Bqw%N|dvJa9s#L8pJ{K)sA&{R!_|Hv_z$nyMOMG8PL87Iy^flWmr@8jG4BC&9-dH}`R<#4@hFIojhv35#G`5cb0 zVUyhAod?w$}} z5F%EoecQsYhdh@mItZJO>?j+t)m9=QWw-fsvKMozPHT9pL7lH7s!BCwcE*deDg?E< zpO$^stasmcHhmT~5fEJ^HFH9+3ZIkTAH}GQXn5%_jShNW`vLA%F;WORLmvz5xBfP{ zRA_L&=Gnl;yS_7YvO^>yDWD&-u+uH$erU^{B>c^pzw5`yQ@}th*zKwnSrwUgNW#y= zXQ_X)a_%Gf+mNeCKdfE0I_KtRmN(bE%V~RHG!at@@caT52G-(Z;LvPyI2LEn=-EEC zwSE3>QmfJZ(wOnK&{OFlBISVZ8jipkQD%{9-M7>Pq2$q&cowPQ?3`T*p2oX@% zVhwd?+MH*%w@>0!RciBWZ#b{tHpvCY&HH;!)(%gX4k=^muTLphIM>-GMpmb8vC@Yf zQB!rR)X~9gz;`TK5!AmiNHId*`;PXF82Jaj)KUEA81NI`e zGP9VWa-+uJP{Du(djD6C~+wYH;qCZTW!|lFdc*U=@U*V+w zNl9RDNcjy16t0FjtV1p-9srbCk_u_gfEo!4wla^C!`UdYQ@cA<5y#D$SnGIm^t$OC zHQHLG-s_&fo+7sRw@R@A1^MxG2nsa#c7D$8^pHKAtS3g_;Tvl2yPaEMlOqCM76JbC z7b6G9C3kOfFo`A;EU}wJ0Z0*dl=M1FsZ2^TkO?jd%iVHTMDmFfwVQD=@VI|jB7tpX zNsW1I+sUacD@Fw?nGwBJM2yoK@C=h5L%D^BYIL-nUIeUg*; zkb+xOt`w`kNESIO)<;nmoOJy#)}Z`(CcR7Qbdoiu;E0rRG!gXUo$GbwN^s|oQC+pX z%@iV=Dk@cjE7(cVbW)T;Atzp5v;u=pT)9MXLdOAi(vzQS0|{`frIKh+pOmDQCO{|* z_Be$S{AW;lP)+g8&y?`YcL<5wL+Ls7CI`CU{0LX7MYl#Ypip z{pya!Iy#s>Y1lGO{;c^jo%a8Fq^QD-&^yr%nz?24g9zRLTrEmz*tAh^`yL3eVF%j~ zk}w!69=9VFFIiuy2L7!wAolqIXnoND_@{dCPl~UD+vzR6LZ$53wq1MA?r)u`uzy9` z@16dEkME9#1>a6fcb`mn_(VMKujff!u4kmb*!T`S?da$zlhX~v`yA(F1j||(Mf#12 zisv)AqtokSa)_*IYuv$u30{dDSLze5Ve`tItUx+Fr}QRW-vWxurkJavd-A^K!)dJ& zKB)Mhu&xeO4pPqiN^R8fjS(2`GlIwy$_}>ce9gGz$|2dgwH?61#F^$sV_Pve)W(-+~|K(c~!2W)ygR^qDL zwaXl_ZrW)y401s>)Fl#`M_l=UCJ{pPwi5AXpnQl41pZ@|zZb~fg9dC|_+6rR2L&R8 z#7XMLqGvagozp1c{HsFc>1PXX&y_7Z)t-OJ`=)0QdwHCw0M$dgS@FVWOI)4u3 z(Ft>Wz~CN>InI%iI<^pOA&X8+_~d>YvN|so2~)yA&-9t6-QO0EJKVEIOFe&(%2yBP zGlfE{uS|j-SEg28^veCH!hMrQiM3Qqc5x&q!PqE0ZTIbqB_+M{t`!@^sytJ+53MuS z9B_F)ZAfb5nQqx^x+}$+z?9$&feOq<)LhRQzY}+91<6^)Vgb!t-%BxZ54s>nlBZmF zX=0J}cPqGWC(m)?nu?MLtOOUXe|qZXzfWaaZhzZ|8O~x_PPy@dUlQERrQ_%0hJ+o` z<5JVv1i;>spA+=ytMK>ZG>5MGxv=1fTjEaNc8l?auJ*b3D4H2oJZg1jWj-K9HPzM& zqoFGPaOKj64#34#Zbd-sy{7t`pVMm^v}Dy*`XjW1o(|paep;e;?uMWoDK!DO*7jp- zqekZ*)oClW?k-T`5);_Qdh9m<_te11S1IMI!q+qS`lh2Utbop)#9{rR_nLvwy)w|3 z>*B%^I*n?hia@KdNM||z@HdRxqYd0`J77GVc8;w z6q5feiFM7#1aw1zv7zRY);eRdtjN7-zsq70RfulYj`pZ6>m1B9Vxp|n<*|FB%)-!d zH8Aitv$ZecWM}3;p{J4l-RXT30Val1`@VE<&r>)$qnNxkS)EEin^mk=K?-7Tx>xgb zoGabA3fyeD^%LtAH!&u_z232JNOPc}(o2F{pqgO01tLj`dEh&tjL5mF!NE6>r;lA@ z@E0F??JaVC*0GL(2U-ui?p`SSWvXtU>tOK6a4P*wZhrgS1-G{mpN?&~6m@*olcjk+ zne>jmFsM6wRkI2I@aqq$mw#MDYySj}B#C4n8XSVjgdJVP7n43in^R67rVYuV`YO8pB@#ZIEen!TsXV;mK!<+WRe69bP uYgqX<|E{md`_?N}dp1$3W`)?(-NCS6ndEkFx!uy)vWor^A7E1d%KrhhNLzCN diff --git a/sound/effects/bone_break_2.ogg b/sound/effects/bone_break_2.ogg index 3277636622769fa716ea71be122a718d4d140db8..0e0c71def8852d91db54f759a4776df56f1ec17c 100644 GIT binary patch delta 5380 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 I)npv_A8c@RKL7v# delta 4677 zcmYLNc{tSF`~J+r42EVb(v#Wg?&qBIJlDCdbFTZouJepq7nn;QJAK+700aL5 zrTM?WEpL{=D6{m@fiiLMvK8?*glLJLjsLY-7kIrsi4;kP3I8DEJI;zz-^7@5?nfI8D z7(v3z=D1A`YWU*nk3F@%POsB;$A8OzfnAIqoO?y--R*8@f&sNeU|S!1eaFI^}~b$EHlUOcM8)J|bHDHpW!2!r7u5}g*oGr)wKigv1D z(47^!Jsxb7qF`CFABc=3P$(3DYDcgcR**E6s2=qHl3ZTyZ2N4LJptios6wG+gb7w$ zk-`vQKmjKuJflLPyhyElKf_#pcmQCU#H)f#fc#@V5v+1X(yfT8u0OXH8*xr_p zex4p3FJ8YV#^$}u`OAJfKdwDDc&EG$xgk$C5F~<}YY{!-uu}Qt;;}v<(NBIp`O@zS_Kn2_>ozUalj!{UqkzH~sa6~k}!rKH?`llx) zISz|=eMsA#qSE&lD@alZsSFSPAiFp3OhRX0fF{qEGgBnf_ms5_8)mbKgbK3GZWo&J4 zZ_|Md*%09>Wt)#i(~{0M*TSExh#rVMgRdDEEto}8;hj_K6UD1sx`4&Gr!SKuW_Cwi zd{s9SBQ20+0Z6)St0QVJgQWiDBHANX5{$>~R(8@|@Kq8YMln6qlc1%Fi3RowS2-+7 zYNBVCC${;Z0oj3k1&b&shIAQk&z3k1e$-j{z6;h6?{*y)lzsdx)_#;Y5?rYjJoqqh zA@}=3;v2f*UEwc7ov&lJ!V>X<8738uKofNeQK_;j7MZtJ|Nr4eMw3r+ud2u>N4@st zwXgUK50R0w#gyV|>Bxsd0N}yqqU_kx4s1XB%CfR&!5+G@0y=yZVRT}D> z@5>-v{{ijHEHhoIls!di_oWYgqT5bQqId~9{pU4qRQnI>#<@eYh5nGK>M z1GoZ^Fy7=+vV3`WM-PuITBGJ%KtdAEA_eV|K%bZT=~a}hV`-Wnea58@UhgmR%8!u( zPJCK0-p&t+(DM}gMV}-$@7mn6{tUh_+)=(oe)dwS;tT>QhF~Zr&wmDgSRE)`K9Uib z3$nfP_%86dbU;Q`xddzenkU?TMyH|GuooExee5%{A3%CbUwvWFa&g7Uo4v32&9F&- zznTTb@jxF8&LOLU0I16_S|RxDUSAtm=KUhAgRmJXSbZUbPL)uUqz?VwJICxfJF@uR zt$X1g(z(kL?v`M6+5&lmw>q!jBu5e5I$A7}$vewH1Ly1^El#RW(k7dvqrSbrz4qk- z%&&Yw>s2VAUE9tT|4%eDn8(Z0~6qE?gia~}EdUILHf z1SrvI`RH!BEi3CTZ4H+3*PKXAK#TzM1=+GS_FyG#F2^?GH8yW{PCS%XbbVBCcoi(; zX358n&!wCY$6GXRJ^-RsVZH}I=ZM0`D+PZQK$Ml3P>i2j)R4X|CU&}oDCzVIxB_bJ zsMyEQ=0|9fShl`GB^dv72gjUyxFbz#bj8*&r$pXmt(5zpXUqYplQB-s>*im)4}aV3 z!Tov*R?0D|S7M;bE7XWk<34}piLG_n@$I*d@E)0H6qo}XGW!Ka4fKD)d=a4>GJ3Qt zGg1u41vb#4=UKKsNPQ*jwN;&mn}uZhq&&s@b%2*72!474%UBM7a?J1F?0IvgVwk7-?^^z49~N{=8$pF^5JG7sNw74 z3dd8|NN*?Y8=hFNLlCBGQ>7rj1;Htd8z-g4o?&2x1J`${R^UArLz<>Nw5OqzATWo8 zvKms=-bBQ>7C2{q#bMvk1+SNe1W1THj}?HvItT#S=|O^Wv!CGdpEoB+#I-Oy01zv$ zWGb{*I7ymnI2ClG>;uTowte-BE-i7y1`m%tHT5)Unj(wk%mU*i_2e@I#dw57klm!9 zj6i}Et(F!icqTs@7z4aVA5Mi$T(*0ey@3Z(NT#_fi1QLV@sI;*Hq8~&l_*u?)_f2DQiF=Dr zmgb(zrB2Cs(5aX~!IGgp{u?H~a!GJO5CP&T*R&VaCjZ8}(sNz{kO@u~ay

>8vJr zK3(ERYBEY?N<{g!sZ@t*+hZM8XK&9As0M^|BGty`EGWUDX@tAWC9J7Aw3pi?IZPAC z;LDT<;qinVmf6$Cu9b#bLcJ=JoqK9BKc2A+f)VMb#wV=9f;!83)Ljd1-wBF5ugOp& z>i{iOuNDQz1wXCqxaCU+oaoW6l!u3s?9^#?PSk<1uzDu-Zz*H1mqWWsWG{hi0Og*j zYK|}`p6`FrJlQb$QpyXnwcjPFnm4bV6>hb$OB1k-&qRfv^y&cCv z(X9~AC$#Q(jem=&YTEy@&JTzy1C)+F4phG6ZM4>PAphBXRv_#*WX-foe*_?+HIAg3 zDN^}%cXFvvC`u?F-|>&|Vz-U8iih$6DT;cRnbiFLy&%oSh5wGSBf$xu=Lq~2)o{Cl z3lH+$MNlcK#E_^NrU@8TmaQggKaJ)!RMnu~?iBRSbu6z(Tb zC2?Ox=Dz!E)jnG_He~&Pe|a<^_PfxHsjtK~gR(`(e6ehz;RqC%i)| zA1!~MxG|UT7U&Z)rUkq_d~PvOuBIX2y20K~meN?G|1DXxLU<9*mMB>YIaws6XhJ3t z5maoF`^3F}`ZEpF-i=9a&`16hmgofYA0K+c|$5uDoU(Bmc+)5lKtc=B7c0u!v> zrT&5dy+~|rxpbi-=rC&y<%W%eCIsJTZ-ngp3T&mw%nC;ja_uZ)Zxf zgQCOGNm=zbT!;q=ju@c?ytrB-|7#n`T8U&=ibZ&@EoV_bHoVUsQE|4gH1fsw4cUiXZ7HcypbPs8M7HW~ z1U%6QWaY8v?y+b11+{IlaZ^75DTpl|FDhkURR#ti9;O(IcJF4B1Pjju-~e79K|}7x zZnT?&0Y1_!R#Q{^e)Z$}F5mN1fvXk? z2E%tvYmNbhq9MEyblvIBz3L6!OXG%AZ)Igd1doYAiF&P=(T~NpXlQdKS+kY$Y!DXW zjk-=c_Ei{i|GN5|#Jk6Cp1`-dER#Oj5iwk{2ClrTp!Y6&@fG@9sDV+acZd)t5edG5 zqKC*je~tF*a)n(reod~?=Dovs=!^#Ei8U?ZELT+qB6wnEnUNK`$Dq4WYu-y0vJ#wM_qqdsDA^z->;y>^xqt$BRLKlPgK(;qFDY}puZnm(EBOiOKWf~=mq)A zq`3MZBmj_X8{#okXpOT}11;UTo0&(;%SdLG`jZ{K=P`{oNH}r#-2_~hrhfP^_W)`A zNL9S-e5G4>R2y2tvIVg&BoAlysho27h_B>+X;``z=G5GnpSQ&wTle_vd@8PzCwkC* zCAy%fi;nhY*wd%?V~2UwtO}N+DIh6mrX)0kVSEGY|GXv$%xFMOumUJQp75wgk{!DS z58pnwHF9(NST$*Mdldv!p>|`8rB_`QHStlz>4?ViOiRk~l@bM7x3eC^C-VMB&v`jX zOI*O~~kF~tWWMd$OW}Vx}QKVn^nz79-SH+Z#_AqYSL>gC+_US z$Gri}!Jz+kGN4svJL22Hp9aMr9VP=o|G)@%4Gm3Qoq3@caNiTp&xwaYrxx(HmL%lm zV9hq_8BQYEkOD3|>iEUO zDG&jTQ^wEuS}gk^komedtaAkXgGy8>i2zj4UNAUM7*URx!iPBpoua_04-(ovY6^?T zo9?)`aXxg+!o@r}01HZH12W>cjEegU@-=f@mTU2|rhG=iyqFo=5!cx0>1ldV;P{O1 z^Q_ew2V@q_3{)==fh9hq*J|8{l+NbB8t!TAU-qEN1ZIrEn`7_iHJXu~E_;tYow)5} z;d_7sNP;C8h2LG}@u1%Pwj!4p!R|L6gixMKm5C}UbVMJ{De-IFB)mS+!cFs5X}!+m zD2Hburi30G$`+Zvpfdm2LNoF$d03e`L*U=Z3#V)=POj$sHob(}PEc#B{CTk}e?v=Z J#~)p<{s;ST=RW`d diff --git a/sound/effects/bone_break_3.ogg b/sound/effects/bone_break_3.ogg index 5724955fe73220a4fc15f5450a9c635fb368ea5b..420c61a9f8d8e77c6f7d2d60d392849924487947 100644 GIT binary patch delta 8095 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 JdmWm<{ttzPnJWMQ diff --git a/sound/effects/bone_break_4.ogg b/sound/effects/bone_break_4.ogg index f885fc83bd530f5271d7a8adf9c99d67beae72eb..93ad793b6a22f753f40a24dff63953667e55fd9e 100644 GIT binary patch delta 6473 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 delta 7161 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 diff --git a/sound/effects/bone_break_5.ogg b/sound/effects/bone_break_5.ogg index 5f3d5258c8dfd19694ceceff9706cf5e1b3033b5..e052c0ba091b3aea1975b5b0c1a1522c3a830dda 100644 GIT binary patch delta 11676 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 delta 11655 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 qc*B-wB(4oUD=rvi}eNc4?#l diff --git a/sound/effects/bone_break_6.ogg b/sound/effects/bone_break_6.ogg index 0f93bcfc48011e2559e2609724cc7672689c38d2..7cba2da19ae2aedea5607f6a327e057b7477dbd0 100644 GIT binary patch delta 7765 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 q-G`^60GVh2_&NI^Nd6BtHU9Jf delta 9654 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 Mb_Dc*RfK{62ly7=TL1t6 From 413cbe00eb977c2c0e2c7e7abe7d412eac1e7eba Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Wed, 29 Aug 2018 22:00:24 +0800 Subject: [PATCH 010/148] Fixes paper bundle runtimes --- code/modules/paperwork/paper.dm | 2 +- code/modules/paperwork/paper_bundle.dm | 8 +++++-- code/modules/paperwork/photocopier.dm | 29 +++++++++++++++----------- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 2fe57c5698f..c7739f7c7b5 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -316,7 +316,7 @@ to_chat(user, "Take off the carbon copy first.") add_fingerprint(user) return - var/obj/item/paper_bundle/B = new(src.loc) + var/obj/item/paper_bundle/B = new(src.loc, default_papers = FALSE) if(name != "paper") B.name = name else if(P.name != "paper" && P.name != "photo") diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 08cb7b6555e..73c9f9459dc 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -11,11 +11,15 @@ layer = 4 pressure_resistance = 1 attack_verb = list("bapped") - var/amount = 0 //Amount of items clipped to the paper + var/amount = 0 //Amount of items clipped to the paper. Note: If you have 2 paper, this should be 1 var/page = 1 var/screen = 0 - +/obj/item/paper_bundle/New(default_papers = TRUE) + if(default_papers) // This is to avoid runtime occuring from a paper bundle being created without a paper in it. + new /obj/item/paper(src) + new /obj/item/paper(src) + amount += 1 /obj/item/paper_bundle/attackby(obj/item/W as obj, mob/user as mob, params) ..() var/obj/item/paper/P diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index ed5b7c1cfd4..b73d6172108 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -73,8 +73,10 @@ sleep(15) else if(istype(copyitem, /obj/item/paper_bundle)) var/obj/item/paper_bundle/B = bundlecopy(copyitem) + if(!B) + return sleep(15*B.amount) - else if(ass && ass.loc == src.loc) + else if(ass && ass.loc == loc) copyass() sleep(15) else @@ -287,7 +289,7 @@ //If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner /obj/machinery/photocopier/proc/bundlecopy(var/obj/item/paper_bundle/bundle, var/need_toner=1) - var/obj/item/paper_bundle/p = new /obj/item/paper_bundle (src) + var/obj/item/paper_bundle/P = new /obj/item/paper_bundle (src, default_papers = FALSE) for(var/obj/item/W in bundle) if(toner <= 0 && need_toner) toner = 0 @@ -298,16 +300,19 @@ W = copy(W) else if(istype(W, /obj/item/photo)) W = photocopy(W) - W.forceMove(p) - p.amount++ - p.amount-- - p.forceMove(get_turf(src)) - p.update_icon() - p.icon_state = "paper_words" - p.name = bundle.name - p.pixel_y = rand(-8, 8) - p.pixel_x = rand(-9, 9) - return p + W.forceMove(P) + P.amount++ + if(!P.amount) + qdel(P) + return null + P.amount-- + P.forceMove(get_turf(src)) + P.update_icon() + P.icon_state = "paper_words" + P.name = bundle.name + P.pixel_y = rand(-8, 8) + P.pixel_x = rand(-9, 9) + return P /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) From bd8f0396c2dd56046bcea1f80c65914c55f4e089 Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Wed, 29 Aug 2018 22:40:16 +0800 Subject: [PATCH 011/148] Photocopier safety check --- code/modules/paperwork/photocopier.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index b73d6172108..7e6d823e4be 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -72,6 +72,10 @@ photocopy(copyitem) sleep(15) else if(istype(copyitem, /obj/item/paper_bundle)) + var/obj/item/paper_bundle/C = copyitem + if(toner < (C.amount + 1)) + visible_message("A yellow light on \the [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle + return var/obj/item/paper_bundle/B = bundlecopy(copyitem) if(!B) return From ade853c742baa2a96c1ced269771dd24f3b67c50 Mon Sep 17 00:00:00 2001 From: variableundefined <40092670+variableundefined@users.noreply.github.com> Date: Tue, 4 Sep 2018 09:41:09 +0800 Subject: [PATCH 012/148] remove excessive the --- code/modules/paperwork/photocopier.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 7e6d823e4be..e23a50cde3c 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -74,7 +74,7 @@ else if(istype(copyitem, /obj/item/paper_bundle)) var/obj/item/paper_bundle/C = copyitem if(toner < (C.amount + 1)) - visible_message("A yellow light on \the [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle + visible_message("A yellow light on [src] flashes, indicating there's not enough toner for the operation.") // It is better to prevent partial bundle than to produce broken paper bundle return var/obj/item/paper_bundle/B = bundlecopy(copyitem) if(!B) From 18216171e6222e5f963f1693055e48dc66ee6ff9 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Thu, 4 Oct 2018 23:32:15 +0200 Subject: [PATCH 013/148] First work --- code/__HELPERS/unsorted.dm | 5 +++ code/game/machinery/doors/airlock.dm | 10 +++--- .../mecha/equipment/tools/medical_tools.dm | 31 +++++++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 1a9ccbe6c2b..4810be3f312 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1150,6 +1150,11 @@ var/global/list/common_tools = list( return 1 return 0 +/proc/ispowertool(O)//used to check if a tool can force powered doors + if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp/)) + return 1 + return 0 + /proc/iswire(O) if(istype(O, /obj/item/stack/cable_coil)) return 1 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a076fcec8fd..0a4c6dc6ae9 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -670,12 +670,12 @@ About the new airlock wires panel: return FALSE //For the tools being used on the door. Since you don't want to call the attack_hand method if you're using hands. That would be silly -//Also it's a bit inconsistent that when you access the panel you headbutt it. But not while crowbarring +//Also it's a bit inconsistent that when you access the panel you headbutt it. But not while crowbarring //Try to interact with the panel. If the user can't it'll try activating the door /obj/machinery/door/airlock/proc/interact_with_panel(mob/user) if(shock_user(user, 100)) return - + if(panel_open) if(security_level) to_chat(user, "Wires are protected!") @@ -1025,7 +1025,7 @@ About the new airlock wires panel: else if(locked) to_chat(user, "The airlock's bolts prevent it from being forced!") else if(!welded && !operating) - if(!beingcrowbarred) //being fireaxe'd + if(istype(I, /obj/item/twohanded/fireaxe)) //let's make this more specific var/obj/item/twohanded/fireaxe/F = I if(F.wielded) spawn(0) @@ -1042,7 +1042,7 @@ About the new airlock wires panel: else close(1) - if(istype(I, /obj/item/crowbar/power)) + if(ispowertool(I)) //jaws of life and rescue claw if(isElectrified()) shock(user, 100)//it's like sticking a forck in a power socket return @@ -1325,7 +1325,7 @@ About the new airlock wires panel: user.visible_message("[user] removes [note] from [src].", "You remove [note] from [src].") playsound(src, 'sound/items/poster_ripped.ogg', 50, 1) else return FALSE - else + else user.visible_message("[user] cuts down [note] from [src].", "You remove [note] from [src].") playsound(src, 'sound/items/Wirecutter.ogg', 50, 1) note.forceMove(get_turf(user)) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 9e3369f1af9..f296319d14d 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -521,3 +521,34 @@ reagents.add_reagent(reagent,amount) chassis.use_power(energy_drain) +/obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp + name = "rescue clamp" + desc = "Emergency rescue clamp, designed to help first responders reach their patients. Opens doors and removes obstacles." + icon_state = "mecha_clamp" //placeholder for now, add icons later + equip_cooldown = 15 + energy_drain = 10 + var/dam_force = 20 + + +/obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp/action(atom/target) + if(!action_checks(target)) + return + if(istype(target,/obj)) + if(!istype(target,/obj/machinery/door))//early return if we're not trying to open a door + return + var/obj/machinery/door/D = target //the door we want to open + D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function + if(istype(target,/mob/living)) //interact with living beings + var/mob/living/M = target + if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. + target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides kick in.", \ + "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides kick in.") + else + step_away(M,chassis)//out of the way, I have people to save! + occupant_message("You gently push [target] out of the way.") + chassis.visible_message("[chassis] gently pushes [target] out of the way.") + return 1 + + + + From c949829183c07d0c7026bdf4c58473d8bc87f294 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Fri, 5 Oct 2018 01:25:53 +0200 Subject: [PATCH 014/148] Emagging added. --- .../mecha/equipment/tools/medical_tools.dm | 25 ++++++++++++++----- code/game/mecha/mecha.dm | 8 +----- code/game/mecha/medical/odysseus.dm | 18 +++++++++++++ code/game/mecha/working/ripley.dm | 12 ++++++++- .../designs/mechfabricator_designs.dm | 10 ++++++++ 5 files changed, 59 insertions(+), 14 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index f296319d14d..a649a96f39d 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -87,6 +87,10 @@ /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/go_out() if(!patient) return + if(chassis.emagged)//you won't escape this easily... + to_chat(patient, " The [src]'s internal release level refuses to move. You are trapped! ") + chassis.visible_message("You hear someone bang against the inside of [chassis]'s sleeper.")//at least they'll notice your struggles. + return patient.forceMove(get_turf(src)) occupant_message("[patient] ejected. Life support functions disabled.") log_message("[patient] ejected. Life support functions disabled.") @@ -525,6 +529,7 @@ name = "rescue clamp" desc = "Emergency rescue clamp, designed to help first responders reach their patients. Opens doors and removes obstacles." icon_state = "mecha_clamp" //placeholder for now, add icons later + origin_tech = "engineering=4;biotech=3" equip_cooldown = 15 energy_drain = 10 var/dam_force = 20 @@ -540,15 +545,23 @@ D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function if(istype(target,/mob/living)) //interact with living beings var/mob/living/M = target - if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. - target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides kick in.", \ - "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides kick in.") + if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. (unless it is emagged, of course) + if(chassis.emagged == 0) + target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ + "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.") + else + M.take_overall_damage(dam_force)//shamelessly stolen from Ripley code. No oxy loss though. + if(!M) + return + M.updatehealth() + target.visible_message("[chassis] brutally punches [target].", \ + "[chassis] brutally punches [target].",\ + "You hear something crack.") + add_attack_logs(chassis.occupant, M, "Mech-punched with [src] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") + start_cooldown() else step_away(M,chassis)//out of the way, I have people to save! occupant_message("You gently push [target] out of the way.") chassis.visible_message("[chassis] gently pushes [target] out of the way.") - return 1 - - diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index dd7993247b1..b45a340b319 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -852,13 +852,7 @@ /obj/mecha/emag_act(user as mob) - if(istype(src, /obj/mecha/working/ripley) && emagged == 0) - emagged = 1 - to_chat(usr, "You slide the card through the [src]'s ID slot.") - playsound(loc, "sparks", 100, 1) - desc += "
The mech's equipment slots spark dangerously!" - else - to_chat(usr, "The [src]'s ID slot rejects the card.") + to_chat(usr, "The [src]'s ID slot rejects the card.") return diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 333c05fdd5d..3ed2c4cddef 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -44,3 +44,21 @@ . = ..() + + + + +/obj/mecha/medical/odysseus/emag_act(user as mob) + if(emagged == 0) + emagged = 1 + for(var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/I in equipment) //you get some juicy traitor chems for this... + I.add_known_reagent("initropidril", "Initropidril") + I.add_known_reagent("sarin", "Sarin") + to_chat(usr, "The [src]'s speaker chimes in a distorted voice \"First...do harm.\" as you swipe the card through the ID slot.") + playsound(loc, "sparks", 100, 1) + desc += "
The mech's movement is sudden and jerky!" + else + to_chat(usr, "The [src]'s ID slot rejects the card.") + return + + diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index d29bf2ae460..96c51e7f4ba 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -180,4 +180,14 @@ else step_in = 5 for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment) - drill.equip_cooldown = initial(drill.equip_cooldown) \ No newline at end of file + drill.equip_cooldown = initial(drill.equip_cooldown) + +/obj/mecha/working/ripley/emag_act(user as mob) + if(emagged == 0) + emagged = 1 + to_chat(usr, "You slide the card through the [src]'s ID slot.") + playsound(loc, "sparks", 100, 1) + desc += "
The mech's equipment slots spark dangerously!" + else + to_chat(usr, "The [src]'s ID slot rejects the card.") + return diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 1589b78438b..4db352f7785 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -653,6 +653,16 @@ construction_time = 200 category = list("Exosuit Equipment") +/datum/design/medical_clamp + name = "Exosuit Medical Equipment (Rescue Clamp)" + id = "mech_medical_clamp" + build_type = MECHFAB + req_tech = list("biotech" = 4, "engineering" = 4) + build_path = /obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp + materials = list(MAT_METAL=5000,MAT_GLASS=2000,MAT_DIAMOND=1500) + construction_time = 200 + category = list("Exosuit Equipment") + /datum/design/mech_generator name = "Exosuit Equipment (Plasma Generator)" id = "mech_generator" From e813260b97783c5ea4bd639a0e14bd7098cdd5d2 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Sun, 7 Oct 2018 17:36:37 +0200 Subject: [PATCH 015/148] Last tweaks --- code/game/mecha/equipment/tools/medical_tools.dm | 4 ++-- code/game/mecha/medical/odysseus.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index a649a96f39d..c337bf8462b 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -528,7 +528,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp name = "rescue clamp" desc = "Emergency rescue clamp, designed to help first responders reach their patients. Opens doors and removes obstacles." - icon_state = "mecha_clamp" //placeholder for now, add icons later + icon_state = "mecha_clamp" //can work, might use a blue resprite later but I think it works for now origin_tech = "engineering=4;biotech=3" equip_cooldown = 15 energy_drain = 10 @@ -539,7 +539,7 @@ if(!action_checks(target)) return if(istype(target,/obj)) - if(!istype(target,/obj/machinery/door))//early return if we're not trying to open a door + if(!istype(target , /obj/machinery/door))//early return if we're not trying to open a door return var/obj/machinery/door/D = target //the door we want to open D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index 3ed2c4cddef..a7eabc3316d 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -54,7 +54,7 @@ for(var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/I in equipment) //you get some juicy traitor chems for this... I.add_known_reagent("initropidril", "Initropidril") I.add_known_reagent("sarin", "Sarin") - to_chat(usr, "The [src]'s speaker chimes in a distorted voice \"First...do harm.\" as you swipe the card through the ID slot.") + to_chat(usr, "The [src]'s speaker chimes in a distorted voice \"First, do...harm.\" as you swipe the card through the ID slot.") playsound(loc, "sparks", 100, 1) desc += "
The mech's movement is sudden and jerky!" else From e10f0a5def2703ee7235572e77b3a2b845781947 Mon Sep 17 00:00:00 2001 From: alex-gh Date: Tue, 11 Sep 2018 08:41:24 +0200 Subject: [PATCH 016/148] Species damage mod now only affects damage, not healing. --- .../mob/living/carbon/human/human_damage.dm | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index d82fc719d88..d4c14bda32a 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -29,7 +29,7 @@ if(dna.species && dna.species.has_organ["brain"]) var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain) if(sponge) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.brain_mod sponge.receive_damage(amount, 1) if(updating) @@ -43,7 +43,7 @@ if(dna.species && dna.species.has_organ["brain"]) var/obj/item/organ/internal/brain/sponge = get_int_organ(/obj/item/organ/internal/brain) if(sponge) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.brain_mod sponge.damage = min(max(amount, 0), (maxHealth*2)) if(updating) @@ -76,11 +76,10 @@ amount += O.burn_dam return amount - /mob/living/carbon/human/adjustBruteLoss(amount, updating_health = TRUE, damage_source = null, robotic = FALSE) - if(dna.species) - amount = amount * dna.species.brute_mod if(amount > 0) + if(dna.species) + amount = amount * dna.species.brute_mod take_overall_damage(amount, 0, updating_health, used_weapon = damage_source) else heal_overall_damage(-amount, 0, updating_health, FALSE, robotic) @@ -88,9 +87,9 @@ return STATUS_UPDATE_HEALTH /mob/living/carbon/human/adjustFireLoss(amount, updating_health = TRUE, damage_source = null, robotic = FALSE) - if(dna.species) - amount = amount * dna.species.burn_mod if(amount > 0) + if(dna.species) + amount = amount * dna.species.burn_mod take_overall_damage(0, amount, updating_health, used_weapon = damage_source) else heal_overall_damage(0, -amount, updating_health, FALSE, robotic) @@ -98,9 +97,8 @@ return STATUS_UPDATE_HEALTH /mob/living/carbon/human/proc/adjustBruteLossByPart(amount, organ_name, obj/damage_source = null, updating_health = TRUE) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.brute_mod - if(organ_name in bodyparts_by_name) var/obj/item/organ/external/O = get_organ(organ_name) @@ -111,9 +109,8 @@ O.heal_damage(-amount, 0, internal = 0, robo_repair = O.is_robotic(), updating_health = updating_health) return STATUS_UPDATE_HEALTH - /mob/living/carbon/human/proc/adjustFireLossByPart(amount, organ_name, obj/damage_source = null, updating_health = TRUE) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.burn_mod if(organ_name in bodyparts_by_name) @@ -134,7 +131,7 @@ return ..() /mob/living/carbon/human/adjustCloneLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.clone_mod . = ..() @@ -174,22 +171,22 @@ // Defined here solely to take species flags into account without having to recast at mob/living level. /mob/living/carbon/human/adjustOxyLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.oxy_mod . = ..() /mob/living/carbon/human/setOxyLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.oxy_mod . = ..() /mob/living/carbon/human/adjustToxLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.tox_mod . = ..() /mob/living/carbon/human/setToxLoss(amount) - if(dna.species) + if(dna.species && amount > 0) amount = amount * dna.species.tox_mod . = ..() From 97e491c0ee6dbd8a0820e253386ade8efa20621f Mon Sep 17 00:00:00 2001 From: FreeStylaLT Date: Mon, 8 Oct 2018 13:44:58 +0900 Subject: [PATCH 017/148] moves it all to playsound --- code/modules/surgery/organs/organ_external.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 3302a67ca4d..a26fb238537 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -607,8 +607,7 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") - var/S = "sound/effects/bone_break_[rand(1,6)].ogg" - playsound(owner,S, 150, 1) + playsound(owner,"sound/effects/bone_break_[rand(1,6)].ogg", 150, 1) if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits)) owner.emote("scream") From 58a9aed75b5c5dd360c502ccd0ec2f5b84016d28 Mon Sep 17 00:00:00 2001 From: FreeStylaLT Date: Mon, 8 Oct 2018 14:04:28 +0900 Subject: [PATCH 018/148] spacing --- code/modules/surgery/organs/organ_external.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index a26fb238537..35808381075 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -607,7 +607,7 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") - playsound(owner,"sound/effects/bone_break_[rand(1,6)].ogg", 150, 1) + playsound(owner, "sound/effects/bone_break_[rand(1,6)].ogg", 150, 1) if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits)) owner.emote("scream") From 9d6e1bd051516bf913b5571106122ccc46d7ba07 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Mon, 8 Oct 2018 13:27:16 +0200 Subject: [PATCH 019/148] rename, changed chem, replaced usr with user --- code/__HELPERS/unsorted.dm | 2 +- code/game/mecha/equipment/tools/medical_tools.dm | 10 +++++----- code/game/mecha/mecha.dm | 4 ++-- code/game/mecha/medical/odysseus.dm | 8 ++++---- code/game/mecha/working/ripley.dm | 6 +++--- .../modules/research/designs/mechfabricator_designs.dm | 8 ++++---- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index e0c1ac5284d..b17431594d3 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1151,7 +1151,7 @@ var/global/list/common_tools = list( return 0 /proc/ispowertool(O)//used to check if a tool can force powered doors - if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp/)) + if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/)) return 1 return 0 diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 42451e12348..395c38517b8 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -524,9 +524,9 @@ reagents.add_reagent(reagent,amount) chassis.use_power(energy_drain) -/obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp - name = "rescue clamp" - desc = "Emergency rescue clamp, designed to help first responders reach their patients. Opens doors and removes obstacles." +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw + name = "rescue jaw" + desc = "Emergency rescue jaw, designed to help first responders reach their patients. Opens doors and removes obstacles." icon_state = "mecha_clamp" //can work, might use a blue resprite later but I think it works for now origin_tech = "engineering=4;biotech=3" equip_cooldown = 15 @@ -534,7 +534,7 @@ var/dam_force = 20 -/obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp/action(atom/target) +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/action(atom/target) if(!action_checks(target)) return if(istype(target,/obj)) @@ -542,7 +542,7 @@ return var/obj/machinery/door/D = target //the door we want to open D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function - if(istype(target,/mob/living)) //interact with living beings + if(isliving(target)) //interact with living beings var/mob/living/M = target if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. (unless it is emagged, of course) if(chassis.emagged == 0) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index b45a340b319..b29c5bdde5a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -851,8 +851,8 @@ check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) -/obj/mecha/emag_act(user as mob) - to_chat(usr, "The [src]'s ID slot rejects the card.") +/obj/mecha/emag_act(mob/user) + to_chat(user, "The [src]'s ID slot rejects the card.") return diff --git a/code/game/mecha/medical/odysseus.dm b/code/game/mecha/medical/odysseus.dm index a7eabc3316d..10216e3e84f 100644 --- a/code/game/mecha/medical/odysseus.dm +++ b/code/game/mecha/medical/odysseus.dm @@ -48,17 +48,17 @@ -/obj/mecha/medical/odysseus/emag_act(user as mob) +/obj/mecha/medical/odysseus/emag_act(mob/user) if(emagged == 0) emagged = 1 for(var/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/I in equipment) //you get some juicy traitor chems for this... - I.add_known_reagent("initropidril", "Initropidril") + I.add_known_reagent("neurotoxin2", "Neurotoxin") I.add_known_reagent("sarin", "Sarin") - to_chat(usr, "The [src]'s speaker chimes in a distorted voice \"First, do...harm.\" as you swipe the card through the ID slot.") + to_chat(user, "The [src]'s speaker chimes in a distorted voice \"First, do...harm.\" as you swipe the card through the ID slot.") playsound(loc, "sparks", 100, 1) desc += "
The mech's movement is sudden and jerky!" else - to_chat(usr, "The [src]'s ID slot rejects the card.") + to_chat(user, "The [src]'s ID slot rejects the card.") return diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 96c51e7f4ba..ae97d59ea3c 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -182,12 +182,12 @@ for(var/obj/item/mecha_parts/mecha_equipment/drill/drill in equipment) drill.equip_cooldown = initial(drill.equip_cooldown) -/obj/mecha/working/ripley/emag_act(user as mob) +/obj/mecha/working/ripley/emag_act(mob/user) if(emagged == 0) emagged = 1 - to_chat(usr, "You slide the card through the [src]'s ID slot.") + to_chat(user, "You slide the card through the [src]'s ID slot.") playsound(loc, "sparks", 100, 1) desc += "
The mech's equipment slots spark dangerously!" else - to_chat(usr, "The [src]'s ID slot rejects the card.") + to_chat(user, "The [src]'s ID slot rejects the card.") return diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 4db352f7785..28ea2e91e49 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -653,12 +653,12 @@ construction_time = 200 category = list("Exosuit Equipment") -/datum/design/medical_clamp - name = "Exosuit Medical Equipment (Rescue Clamp)" - id = "mech_medical_clamp" +/datum/design/medical_jaw + name = "Exosuit Medical Equipment (Rescue Jaw)" + id = "mech_medical_jaw" build_type = MECHFAB req_tech = list("biotech" = 4, "engineering" = 4) - build_path = /obj/item/mecha_parts/mecha_equipment/medical/rescue_clamp + build_path = /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw materials = list(MAT_METAL=5000,MAT_GLASS=2000,MAT_DIAMOND=1500) construction_time = 200 category = list("Exosuit Equipment") From 8840753608b16e767970754deb92918b18aa2efe Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Mon, 8 Oct 2018 14:36:19 +0200 Subject: [PATCH 020/148] Added timer to struggling out of emagged sleeper --- code/game/mecha/equipment/tools/medical_tools.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 395c38517b8..c9f221600a4 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -88,9 +88,12 @@ if(!patient) return if(chassis.emagged)//you won't escape this easily... - to_chat(patient, " The [src]'s internal release level refuses to move. You are trapped! ") + to_chat(patient, "[src]'s internal release level refuses to move. You look for a way out!") chassis.visible_message("You hear someone bang against the inside of [chassis]'s sleeper.")//at least they'll notice your struggles. - return + do_after(patient, 300, needhand = 0, target = chassis)//progress bar of your struggle to get free + if(!patient)//if the patient was removed, there's no need for this anymore. Otherwise move on to normal release. + return + to_chat(patient, "You finally manage to force open the sleeper's hatch. You are free!") patient.forceMove(get_turf(src)) occupant_message("[patient] ejected. Life support functions disabled.") log_message("[patient] ejected. Life support functions disabled.") From e0ab0e5af0d41b4cd79396a4c36970f9c04be5ec Mon Sep 17 00:00:00 2001 From: Mars Date: Tue, 9 Oct 2018 09:53:35 +0200 Subject: [PATCH 021/148] Wrong varname to get the ticket counter --- code/modules/admin/verbs/adminhelp.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index d7c215caaf8..6fa71afbec3 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -119,7 +119,7 @@ var/list/adminhelp_ignored_words = list("unknown","the","a","an","of","monkey"," ticketNum = T.ticketNum // ticketNum is the number of their ticket. T.addResponse(usr.client, msg) else - ticketNum = globAdminTicketHolder.getTicketCounter() // ticketNum is the ticket ready to be assigned. + ticketNum = SStickets.getTicketCounter() // ticketNum is the ticket ready to be assigned. msg = "[selected_type]: [key_name(src, TRUE, selected_type)] ([ADMIN_QUE(mob,"?")]) ([ADMIN_PP(mob,"PP")]) ([ADMIN_VV(mob,"VV")]) ([ADMIN_SM(mob,"SM")]) ([admin_jump_link(mob)]) (CA) (TICKET) [ai_found ? " (CL)" : ""](TAKE) : [msg]" //Open a new adminticket and inform the user. SStickets.newTicket(src, prunedmsg, msg) From a2b73fcf3179f3684142d9a5854bc5b65811018d Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Wed, 10 Oct 2018 19:54:27 +0200 Subject: [PATCH 022/148] Removed emag functionality from Ody ;_; --- .../mecha/equipment/tools/medical_tools.dm | 31 ++++++------------- code/game/mecha/medical/odysseus.dm | 21 +------------ 2 files changed, 11 insertions(+), 41 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index c9f221600a4..c8bc3dfde98 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -87,13 +87,6 @@ /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/go_out() if(!patient) return - if(chassis.emagged)//you won't escape this easily... - to_chat(patient, "[src]'s internal release level refuses to move. You look for a way out!") - chassis.visible_message("You hear someone bang against the inside of [chassis]'s sleeper.")//at least they'll notice your struggles. - do_after(patient, 300, needhand = 0, target = chassis)//progress bar of your struggle to get free - if(!patient)//if the patient was removed, there's no need for this anymore. Otherwise move on to normal release. - return - to_chat(patient, "You finally manage to force open the sleeper's hatch. You are free!") patient.forceMove(get_turf(src)) occupant_message("[patient] ejected. Life support functions disabled.") log_message("[patient] ejected. Life support functions disabled.") @@ -529,7 +522,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw name = "rescue jaw" - desc = "Emergency rescue jaw, designed to help first responders reach their patients. Opens doors and removes obstacles." + desc = "Emergency rescue jaws, designed to help first responders reach their patients. Opens doors and removes obstacles." icon_state = "mecha_clamp" //can work, might use a blue resprite later but I think it works for now origin_tech = "engineering=4;biotech=3" equip_cooldown = 15 @@ -547,21 +540,17 @@ D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function if(isliving(target)) //interact with living beings var/mob/living/M = target - if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. (unless it is emagged, of course) - if(chassis.emagged == 0) - target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ + if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. + target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.") - else - M.take_overall_damage(dam_force)//shamelessly stolen from Ripley code. No oxy loss though. - if(!M) - return - M.updatehealth() - target.visible_message("[chassis] brutally punches [target].", \ - "[chassis] brutally punches [target].",\ - "You hear something crack.") - add_attack_logs(chassis.occupant, M, "Mech-punched with [src] (INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") - start_cooldown() else step_away(M,chassis)//out of the way, I have people to save! occupant_message("You gently push [target] out of the way.") chassis.visible_message("[chassis] gently pushes [target] out of the way.") + + +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/can_attach(obj/mecha/M) + if(istype(M, /obj/mecha/medical) || istype(M, /obj/mecha/working/ripley/firefighter)) //Odys or firefighters + if(M.equipment.lenThe [src]'s speaker chimes in a distorted voice \"First, do...harm.\" as you swipe the card through the ID slot.") - playsound(loc, "sparks", 100, 1) - desc += "
The mech's movement is sudden and jerky!" - else - to_chat(user, "The [src]'s ID slot rejects the card.") - return - - + . = ..() \ No newline at end of file From f205c03ea7ef532129789bd9caaa85dd8c99aec2 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Thu, 11 Oct 2018 09:12:52 +0200 Subject: [PATCH 023/148] Spacing issues fixed --- code/__HELPERS/unsorted.dm | 6 +++--- code/game/mecha/equipment/tools/medical_tools.dm | 14 +++++++------- code/game/mecha/mecha.dm | 4 ++-- code/game/mecha/working/ripley.dm | 9 ++++----- .../research/designs/mechfabricator_designs.dm | 5 ++--- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index b17431594d3..4a6dce09464 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1151,9 +1151,9 @@ var/global/list/common_tools = list( return 0 /proc/ispowertool(O)//used to check if a tool can force powered doors - if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/)) - return 1 - return 0 + if(istype(O, /obj/item/crowbar/power) || istype(O, /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw)) + return TRUE + return FALSE /proc/iswire(O) if(istype(O, /obj/item/stack/cable_coil)) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index c8bc3dfde98..c28523d80ed 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -524,7 +524,7 @@ name = "rescue jaw" desc = "Emergency rescue jaws, designed to help first responders reach their patients. Opens doors and removes obstacles." icon_state = "mecha_clamp" //can work, might use a blue resprite later but I think it works for now - origin_tech = "engineering=4;biotech=3" + origin_tech = "materials=2;engineering=2" //kind of sad, but identical to jaws of life equip_cooldown = 15 energy_drain = 10 var/dam_force = 20 @@ -533,8 +533,8 @@ /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/action(atom/target) if(!action_checks(target)) return - if(istype(target,/obj)) - if(!istype(target , /obj/machinery/door))//early return if we're not trying to open a door + if(istype(target, /obj)) + if(!istype(target, /obj/machinery/door))//early return if we're not trying to open a door return var/obj/machinery/door/D = target //the door we want to open D.try_to_crowbar(src, chassis.occupant)//use the door's crowbar function @@ -544,13 +544,13 @@ target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.") else - step_away(M,chassis)//out of the way, I have people to save! + step_away(M, chassis)//out of the way, I have people to save! occupant_message("You gently push [target] out of the way.") chassis.visible_message("[chassis] gently pushes [target] out of the way.") /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/can_attach(obj/mecha/M) if(istype(M, /obj/mecha/medical) || istype(M, /obj/mecha/working/ripley/firefighter)) //Odys or firefighters - if(M.equipment.lenThe [src]'s ID slot rejects the card.") + to_chat(user, "[src]'s ID slot rejects the card.") return diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index ae97d59ea3c..407c9cd63dc 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -183,11 +183,10 @@ drill.equip_cooldown = initial(drill.equip_cooldown) /obj/mecha/working/ripley/emag_act(mob/user) - if(emagged == 0) - emagged = 1 - to_chat(user, "You slide the card through the [src]'s ID slot.") + if(!emagged) + emagged = TRUE + to_chat(user, "You slide the card through [src]'s ID slot.") playsound(loc, "sparks", 100, 1) desc += "
The mech's equipment slots spark dangerously!" else - to_chat(user, "The [src]'s ID slot rejects the card.") - return + to_chat(user, "[src]'s ID slot rejects the card.") diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 28ea2e91e49..0253bb32055 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -657,9 +657,8 @@ name = "Exosuit Medical Equipment (Rescue Jaw)" id = "mech_medical_jaw" build_type = MECHFAB - req_tech = list("biotech" = 4, "engineering" = 4) - build_path = /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw - materials = list(MAT_METAL=5000,MAT_GLASS=2000,MAT_DIAMOND=1500) + req_tech = list("materials" = 4, "engineering" = 6, "magnets" = 6) //now same as jaws of life + materials = list(MAT_METAL=5000,MAT_SILVER=2000,MAT_TITANIUM=1500) construction_time = 200 category = list("Exosuit Equipment") From f80cc8ff6e24ba8f52ab477030b702a4091b5955 Mon Sep 17 00:00:00 2001 From: Gwydion Brain Date: Thu, 11 Oct 2018 01:11:11 -0700 Subject: [PATCH 024/148] Sampler Sprite QOL --- code/modules/station_goals/dna_vault.dm | 4 ++-- icons/obj/hypo.dmi | Bin 4799 -> 5154 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index c84742445ed..3a079727d7f 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -60,8 +60,8 @@ name = "DNA Sampler" desc = "Can be used to take chemical and genetic samples of pretty much anything." icon = 'icons/obj/hypo.dmi' - item_state = "hypo" - icon_state = "hypo" + item_state = "sampler_hypo" + icon_state = "sampler_hypo" flags = NOBLUDGEON var/list/animals = list() var/list/plants = list() diff --git a/icons/obj/hypo.dmi b/icons/obj/hypo.dmi index a51a981251de01dd042ba54a17ec86464ef007e7..7dd561de617403b88eae3cf6ec75bbf13da03943 100644 GIT binary patch literal 5154 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 literal 4799 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 Date: Thu, 11 Oct 2018 10:47:53 +0200 Subject: [PATCH 025/148] Pushing to the sides added --- code/game/mecha/equipment/tools/medical_tools.dm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index c28523d80ed..ccb4e593078 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -544,10 +544,22 @@ target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.") else - step_away(M, chassis)//out of the way, I have people to save! + push_aside(chassis, M)//out of the way, I have people to save! occupant_message("You gently push [target] out of the way.") chassis.visible_message("[chassis] gently pushes [target] out of the way.") +/obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/proc/push_aside(obj/mecha/M, mob/living/L) + switch(get_dir(M, L)) + if(NORTH, SOUTH) + if(prob(50)) + step(L, WEST) + else + step(L, EAST) + if(WEST, EAST) + if(prob(50)) + step(L, NORTH) + else + step(L, SOUTH) /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/can_attach(obj/mecha/M) if(istype(M, /obj/mecha/medical) || istype(M, /obj/mecha/working/ripley/firefighter)) //Odys or firefighters From 19f925f52509c49c60355c3bfeb33daa8b72f8e7 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Thu, 11 Oct 2018 18:24:57 +0200 Subject: [PATCH 026/148] added notice span --- code/game/mecha/equipment/tools/medical_tools.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ccb4e593078..9dc6c8e6f11 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -541,12 +541,12 @@ if(isliving(target)) //interact with living beings var/mob/living/M = target if(chassis.occupant.a_intent == INTENT_HARM)//the patented, medical rescue claw is incapable of doing harm. Worry not. - target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ - "[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.") + target.visible_message("[chassis] gently boops [target] on the nose, its hydraulics hissing as safety overrides slow a brutal punch down at the last second.", \ + "") else push_aside(chassis, M)//out of the way, I have people to save! - occupant_message("You gently push [target] out of the way.") - chassis.visible_message("[chassis] gently pushes [target] out of the way.") + occupant_message("You gently push [target] out of the way.") + chassis.visible_message("[chassis] gently pushes [target] out of the way.") /obj/item/mecha_parts/mecha_equipment/medical/rescue_jaw/proc/push_aside(obj/mecha/M, mob/living/L) switch(get_dir(M, L)) From d9ed6ca46a0ddfe025f4be78d268e2611c72e12a Mon Sep 17 00:00:00 2001 From: FlimFlamm Date: Thu, 11 Oct 2018 22:09:18 -0300 Subject: [PATCH 027/148] Fixes newscaster images and spruces up newscaster feed message formatting --- code/game/machinery/newscaster.dm | 10 ++++++++-- nano/templates/newscaster.tmpl | 15 +++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 491cb93018e..a712e033afd 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -241,8 +241,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co data["censored"] = viewing_channel.censored var/list/messages = list() data["messages"] = messages + var/message_number = 0 for(var/datum/feed_message/M in viewing_channel.messages) - messages[++messages.len] = list("title" = M.title, "body" = M.body, "img" = M.img ? icon2base64(M.img) : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count) + if(M.img) + user << browse_rsc(M.img, "tmp_photo[message_number].png") + messages[++messages.len] = list("title" = M.title, "body" = M.body, "img" = M.img ? M.img : null, "message_type" = M.message_type, "author" = M.author, "view_count" = M.view_count, "message_number" = message_number) + message_number += 1 if(8, 9) data["channel_name"] = viewing_channel.channel_name data["ref"] = "\ref[viewing_channel]" @@ -273,7 +277,9 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co data["author"] = news_network.wanted_issue.backup_author data["criminal"] = news_network.wanted_issue.author data["description"] = news_network.wanted_issue.body - data["photo"] = news_network.wanted_issue.img ? icon2base64(news_network.wanted_issue.img) : 0 + if(news_network.wanted_issue.img) + user << browse_rsc(news_network.wanted_issue.img, "tmp_photow.png") + data["photo"] = news_network.wanted_issue.img ? news_network.wanted_issue.img : 0 if(12) var/list/jobs = list() data["jobs"] = jobs diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index 16c201407e3..fb39a6aac3f 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -139,11 +139,14 @@ Property of Nanotrasen
{{else}} {{for data.messages}}

@@ -296,10 +299,10 @@ Property of Nanotrasen
{{:data.description}}
-
Photo:
+
Photo:

{{if data.photo}} - +
{{else}} None {{/if}} From ca22b73a1d9f24be078324b1ae4d73f04bdd21af Mon Sep 17 00:00:00 2001 From: FlimFlamm Date: Fri, 12 Oct 2018 03:24:19 -0300 Subject: [PATCH 028/148] Fixes indentation and adds closing

's --- nano/templates/newscaster.tmpl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index fb39a6aac3f..ff826222bc7 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -140,13 +140,14 @@ Property of Nanotrasen
{{for data.messages}}

- - {{:value.title}}
+ {{:value.title}}
+

{{if value.img}} -
+
{{/if}}

- {{:value.body}}
+ {{:value.body}}
+

[{{:value.message_type}} by {{:value.author}}]
Message view count: {{:value.view_count}}
From 0553de3578520b2fcf83be709a276e4a275f9b58 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 12 Oct 2018 07:59:50 +0000 Subject: [PATCH 029/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 23 +++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 19 +++++++++++++++++++ html/changelogs/AutoChangeLog-pr-9677.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9815.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9817.yml | 5 ----- html/changelogs/AutoChangeLog-pr-9818.yml | 6 ------ html/changelogs/AutoChangeLog-pr-9819.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9820.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9821.yml | 5 ----- 9 files changed, 42 insertions(+), 32 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9677.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9815.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9817.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9818.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9819.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9820.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9821.yml diff --git a/html/changelog.html b/html/changelog.html index 1d19c855ad3..e95fd14f0c2 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -63,6 +63,29 @@
  • META - Cargo shuttle airlocks now bolt properly.
  • META - Cargo shuttle flaps are now airtight. All hail Cargonia.
  • +

    DesolateG updated:

    +
      +
    • Refactors global var lists to use the global subsystem.
    • +
    +

    Farie82 updated:

    +
      +
    • Added the on_give proc for items. Was needed for the fixes
    • +
    • Giving two handed items like the DIY chainsaw and potted plants now works correctly
    • +
    • The DIY chainsaw, doomslayer chainsaw and the potted plants now do damage when given to somebody else and when picked up while the chainsaw was on.
    • +
    +

    Purpose updated:

    +
      +
    • Cyberiad's grimy tiles are now actually dirty and cleanable.
    • +
    • Delta's grimy tiles are now actually dirty and cleanable.
    • +
    • Ironsand is now visible in the Map Maker.
    • +
    • Away missions updated with the appropriate dirt/grime so that it is now cleanable.
    • +
    • Fixes stool's unique suicide message.
    • +
    • Fixes rollerbeds no longer going through plastic flaps.
    • +
    +

    TDSSS updated:

    +
      +
    • Removed Skrell discrimination, allows ! character in IDs (agent IDs or made via ID computer)
    • +

    variableundefined updated:

    • Ore now represented by stack that holds up to 50 items. Should reduce lag with ORM greatly.
    • diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 4a3974e3afd..725a891440b 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7442,6 +7442,25 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: META - Cargo shuttle blast doors now reacts to the right button. - bugfix: META - Cargo shuttle airlocks now bolt properly. - bugfix: META - Cargo shuttle flaps are now airtight. All hail Cargonia. + DesolateG: + - tweak: Refactors global var lists to use the global subsystem. + Farie82: + - rscadd: Added the on_give proc for items. Was needed for the fixes + - bugfix: Giving two handed items like the DIY chainsaw and potted plants now works + correctly + - bugfix: The DIY chainsaw, doomslayer chainsaw and the potted plants now do damage + when given to somebody else and when picked up while the chainsaw was on. + Purpose: + - tweak: Cyberiad's grimy tiles are now actually dirty and cleanable. + - tweak: Delta's grimy tiles are now actually dirty and cleanable. + - bugfix: Ironsand is now visible in the Map Maker. + - bugfix: Away missions updated with the appropriate dirt/grime so that it is now + cleanable. + - bugfix: Fixes stool's unique suicide message. + - bugfix: Fixes rollerbeds no longer going through plastic flaps. + TDSSS: + - bugfix: Removed Skrell discrimination, allows ! character in IDs (agent IDs or + made via ID computer) variableundefined: - tweak: Ore now represented by stack that holds up to 50 items. Should reduce lag with ORM greatly. diff --git a/html/changelogs/AutoChangeLog-pr-9677.yml b/html/changelogs/AutoChangeLog-pr-9677.yml deleted file mode 100644 index ea12e7e55e3..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9677.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DesolateG" -delete-after: True -changes: - - tweak: "Refactors global var lists to use the global subsystem." diff --git a/html/changelogs/AutoChangeLog-pr-9815.yml b/html/changelogs/AutoChangeLog-pr-9815.yml deleted file mode 100644 index 1440dc00ab4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9815.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TDSSS" -delete-after: True -changes: - - bugfix: "Removed Skrell discrimination, allows ! character in IDs (agent IDs or made via ID computer)" diff --git a/html/changelogs/AutoChangeLog-pr-9817.yml b/html/changelogs/AutoChangeLog-pr-9817.yml deleted file mode 100644 index 49b105caa1e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9817.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - bugfix: "Fixes stool's unique suicide message." - - bugfix: "Fixes rollerbeds no longer going through plastic flaps." diff --git a/html/changelogs/AutoChangeLog-pr-9818.yml b/html/changelogs/AutoChangeLog-pr-9818.yml deleted file mode 100644 index b031aaeb7a5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9818.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Farie82" -delete-after: True -changes: - - rscadd: "Added the on_give proc for items. Was needed for the fixes" - - bugfix: "Giving two handed items like the DIY chainsaw and potted plants now works correctly" - - bugfix: "The DIY chainsaw, doomslayer chainsaw and the potted plants now do damage when given to somebody else and when picked up while the chainsaw was on." diff --git a/html/changelogs/AutoChangeLog-pr-9819.yml b/html/changelogs/AutoChangeLog-pr-9819.yml deleted file mode 100644 index 937b4deacbe..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9819.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - tweak: "Cyberiad's grimy tiles are now actually dirty and cleanable." diff --git a/html/changelogs/AutoChangeLog-pr-9820.yml b/html/changelogs/AutoChangeLog-pr-9820.yml deleted file mode 100644 index 33afd4c3702..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9820.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - tweak: "Delta's grimy tiles are now actually dirty and cleanable." diff --git a/html/changelogs/AutoChangeLog-pr-9821.yml b/html/changelogs/AutoChangeLog-pr-9821.yml deleted file mode 100644 index 75bb220f482..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9821.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - bugfix: "Ironsand is now visible in the Map Maker." - - bugfix: "Away missions updated with the appropriate dirt/grime so that it is now cleanable." From 228ba156cac3b08ba536b739144058a2415fe6da Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 12 Oct 2018 15:41:06 +0100 Subject: [PATCH 030/148] adds nullrod to gamma paranormal --- code/modules/response_team/ert_outfits.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm index 93227849f1f..be0a6808c39 100644 --- a/code/modules/response_team/ert_outfits.dm +++ b/code/modules/response_team/ert_outfits.dm @@ -411,6 +411,7 @@ l_pocket = /obj/item/grenade/clusterbuster/holy shoes = /obj/item/clothing/shoes/magboots/advance glasses = /obj/item/clothing/glasses/night + r_pocket = /obj/item/nullrod cybernetic_implants = list( /obj/item/organ/internal/cyberimp/chest/nutriment/plus, From e9d153daf4e9c67f17bceddbc08fafd0b38589d7 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 12 Oct 2018 15:59:30 +0100 Subject: [PATCH 031/148] moves check and add to reagents holder datum --- .../diseases/advance/symptoms/sensory.dm | 26 ++++++++----------- code/modules/reagents/chemistry/holder.dm | 5 ++++ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index e3e50ba468f..c3095a69e08 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -24,35 +24,31 @@ Bonus level = 5 severity = 0 -/datum/symptom/sensory_restoration/proc/check_and_add(reagent, check, add, mob/living/M) - if(M.reagents.get_reagent_amount(reagent) < check) - M.reagents.add_reagent(reagent, add) - return 1 - /datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB * 3)) var/mob/living/M = A.affected_mob + var/datum/reagents/RD = M.reagents switch(A.stage) if(2) - if(check_and_add("oculine", 10, 10, M)) + if(RD.check_and_add("oculine", 10, 10)) to_chat(M, "Your hearing feels clearer and crisp.") if(3) - if(check_and_add("antihol", 10, 10, M)) + if(RD.check_and_add("antihol", 10, 10)) to_chat(M, "You feel sober.") - check_and_add("oculine", 10, 10, M) + RD.check_and_add("oculine", 10, 10) if(4) - if(check_and_add("synaphydramine", 10, 5, M)) + if(RD.check_and_add("synaphydramine", 10, 5)) to_chat(M, "You feel focused.") - check_and_add("antihol", 10, 10, M) - check_and_add("oculine", 10, 10, M) + RD.check_and_add("antihol", 10, 10) + RD.check_and_add("oculine", 10, 10) if(5) - if(check_and_add("mannitol", 10, 10, M)) + if(RD.check_and_add("mannitol", 10, 10)) to_chat(M, "Your mind feels relaxed.") - check_and_add("synaphydramine", 10, 5, M) - check_and_add("antihol", 10, 10, M) - check_and_add("oculine", 10, 10, M) + RD.check_and_add("synaphydramine", 10, 5) + RD.check_and_add("antihol", 10, 10) + RD.check_and_add("oculine", 10, 10) return diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index dacd44a5035..43233df217b 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -594,6 +594,11 @@ var/const/INGEST = 2 return 1 +/datum/reagents/proc/check_and_add(reagent, check, add) + if(get_reagent_amount(reagent) < check) + add_reagent(reagent, add) + return TRUE + /datum/reagents/proc/remove_reagent(reagent, amount, safety)//Added a safety check for the trans_id_to if(!isnum(amount)) From ac5cc480b963eb7e4548256b936b7e81bf2ebec6 Mon Sep 17 00:00:00 2001 From: datlo Date: Fri, 12 Oct 2018 17:02:55 +0100 Subject: [PATCH 032/148] Adds the Honk Brand Infiltration Kit Also adds the clown mask voice changer as part of the kit --- code/datums/uplink_item.dm | 9 +++++++++ code/game/objects/items/devices/megaphone.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 18 ++++++++++++++++++ code/modules/clothing/masks/voice.dm | 9 ++++++++- code/modules/mob/living/carbon/human/say.dm | 2 +- 5 files changed, 37 insertions(+), 3 deletions(-) diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index ef439049611..82af6fef4d9 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -960,6 +960,15 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 1 surplus = 20 +/datum/uplink_item/stealthy_tools/clownkit + name = "Honk Brand Infiltration Kit" + desc = "All the tools you need to play the best prank Nanotrasen has ever seen. Includes a voice changer clown mask, magnetic clown shoes, and standard clown outfit, tools, and backpack." + reference = "HBIK" + item = /obj/item/storage/backpack/clown/syndie + cost = 6 + gamemodes = list(/datum/game_mode/nuclear) + surplus = 0 + // DEVICE AND TOOLS /datum/uplink_item/device_tools diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 175ca0886ad..8b53e3d8ed7 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -35,7 +35,7 @@ return if(H.mind) span = H.mind.speech_span - if((COMIC in H.mutations) || H.get_int_organ(/obj/item/organ/internal/cyberimp/brain/clown_voice)) + if((COMIC in H.mutations) || H.get_int_organ(/obj/item/organ/internal/cyberimp/brain/clown_voice) || istype(H.get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) span = "sans" if(spamcheck) to_chat(user, "\The [src] needs to recharge!") diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 85a0e679bb6..cd2f6dff192 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -89,6 +89,24 @@ icon_state = "clownpack" item_state = "clownpack" +/obj/item/storage/backpack/clown/syndie + +/obj/item/storage/backpack/clown/syndie/New() + ..() + new /obj/item/clothing/under/rank/clown(src) + new /obj/item/clothing/shoes/magboots/clown(src) + new /obj/item/clothing/mask/gas/voice/clown(src) + new /obj/item/radio/headset/headset_service(src) + new /obj/item/pda/clown(src) + new /obj/item/reagent_containers/food/snacks/grown/banana(src) + new /obj/item/stamp/clown(src) + new /obj/item/toy/crayon/rainbow(src) + new /obj/item/storage/fancy/crayons(src) + new /obj/item/reagent_containers/spray/waterflower(src) + new /obj/item/reagent_containers/food/drinks/bottle/bottleofbanana(src) + new /obj/item/instrument/bikehorn(src) + new /obj/item/bikehorn(src) + /obj/item/storage/backpack/mime name = "Parcel Parceaux" desc = "A silent backpack made for those silent workers. Silence Co." diff --git a/code/modules/clothing/masks/voice.dm b/code/modules/clothing/masks/voice.dm index 01dd9a65a99..b5b6298dcb2 100644 --- a/code/modules/clothing/masks/voice.dm +++ b/code/modules/clothing/masks/voice.dm @@ -28,4 +28,11 @@ /obj/item/clothing/mask/gas/voice/New() ..() - changer = new(src) \ No newline at end of file + changer = new(src) + +/obj/item/clothing/mask/gas/voice/clown + name = "clown wig and mask" + desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." + icon_state = "clown" + item_state = "clown_hat" + flags = BLOCK_GAS_SMOKE_EFFECT | AIRTIGHT | BLOCKHAIR \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index a9f93f3d441..70cab4751e2 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -150,7 +150,7 @@ message = uppertext(message) verb = "yells loudly" - if((COMIC in mutations) || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs)) + if((COMIC in mutations) || (locate(/obj/item/organ/internal/cyberimp/brain/clown_voice) in internal_organs) || istype(get_item_by_slot(slot_wear_mask), /obj/item/clothing/mask/gas/voice/clown)) span = "sans" if(span) From 50a13bc37e7f6ce806d4c0e87ba44b1556a1c825 Mon Sep 17 00:00:00 2001 From: FlimFlamm Date: Fri, 12 Oct 2018 18:52:12 -0300 Subject: [PATCH 033/148] Migrates align tags to style tags (future proof) and centers newscaster images. --- nano/templates/newscaster.tmpl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index ff826222bc7..891fcf75a41 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -139,13 +139,13 @@ Property of Nanotrasen
      {{else}} {{for data.messages}}
      -

      +

      {{:value.title}}

      {{if value.img}} -
      +
      {{/if}} -

      +

      {{:value.body}}

      [{{:value.message_type}} by {{:value.author}}]
      From 2bce5e00af288253d790e07a50c8295388a461fe Mon Sep 17 00:00:00 2001 From: FlimFlamm Date: Fri, 12 Oct 2018 19:01:05 -0300 Subject: [PATCH 034/148] deletes extra quotation mark, migrates quotation mark to apostrophe --- nano/templates/newscaster.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index 891fcf75a41..d83344bb0a8 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -139,13 +139,13 @@ Property of Nanotrasen
      {{else}} {{for data.messages}}
      -

      +

      {{:value.title}}

      {{if value.img}}
      {{/if}} -

      +

      {{:value.body}}

      [{{:value.message_type}} by {{:value.author}}]
      From d356346fc693f6cd013296983cb5934ffeb65cca Mon Sep 17 00:00:00 2001 From: FlimFlamm Date: Fri, 12 Oct 2018 19:05:52 -0300 Subject: [PATCH 035/148] adds space after text-align, and semicolons --- nano/templates/newscaster.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nano/templates/newscaster.tmpl b/nano/templates/newscaster.tmpl index d83344bb0a8..4ddf376e71f 100644 --- a/nano/templates/newscaster.tmpl +++ b/nano/templates/newscaster.tmpl @@ -139,13 +139,13 @@ Property of Nanotrasen
      {{else}} {{for data.messages}}
      -

      +

      {{:value.title}}

      {{if value.img}}
      {{/if}} -

      +

      {{:value.body}}

      [{{:value.message_type}} by {{:value.author}}]
      From 49459abbecdfa5f602c58e1632a4189338ad49da Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 12 Oct 2018 18:36:28 -0400 Subject: [PATCH 036/148] Automatic changelog generation for PR #9826 [ci skip] --- html/changelogs/AutoChangeLog-pr-9826.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9826.yml diff --git a/html/changelogs/AutoChangeLog-pr-9826.yml b/html/changelogs/AutoChangeLog-pr-9826.yml new file mode 100644 index 00000000000..22bfe89e3f9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9826.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Gamma ERT Paranormal gets their null rod." From bd99211605f6042dad4edd3064f18ac749b827da Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 12 Oct 2018 18:37:00 -0400 Subject: [PATCH 037/148] Automatic changelog generation for PR #9827 [ci skip] --- html/changelogs/AutoChangeLog-pr-9827.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9827.yml diff --git a/html/changelogs/AutoChangeLog-pr-9827.yml b/html/changelogs/AutoChangeLog-pr-9827.yml new file mode 100644 index 00000000000..6d75583b19d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9827.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - tweak: "Moves check_and_add() to reagents holder" From 54858a45b65b7407715a9ab5749b3ba02ec884a9 Mon Sep 17 00:00:00 2001 From: alex-gh Date: Fri, 12 Oct 2018 16:04:12 +0200 Subject: [PATCH 038/148] Prevents organs from going necrotic during abducter surgery. --- code/game/gamemodes/miniantags/abduction/abduction_gear.dm | 1 + code/game/machinery/OpTable.dm | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 8cde8a9d3d1..1dda6d853f6 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -736,6 +736,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon_state = "bed" no_icon_updates = 1 //no icon updates for this; it's static. injected_reagents = list("corazone","spaceacillin") + injected_target_amount = 31 //the patient needs at least 30u of spaceacillin to prevent necrotization. /obj/structure/closet/abductor name = "alien locker" diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 70afe02762a..e1fa805575d 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -15,6 +15,7 @@ buckle_lying = 90 var/no_icon_updates = 0 //set this to 1 if you don't want the icons ever changing var/list/injected_reagents = list() + var/injected_target_amount = 1 /obj/machinery/optable/New() ..() @@ -107,8 +108,9 @@ if(LAZYLEN(injected_reagents)) for(var/mob/living/carbon/C in get_turf(src)) for(var/chemical in injected_reagents) - if(C.reagents.get_reagent_amount(chemical) < 1) - C.reagents.add_reagent(chemical, 1) + var/current_amount = C.reagents.get_reagent_amount(chemical) + if(current_amount < injected_target_amount) + C.reagents.add_reagent(chemical, injected_target_amount - current_amount) /obj/machinery/optable/proc/take_victim(mob/living/carbon/C, mob/living/carbon/user as mob) if(C == user) From 98a084921f90e00ff8b0d6cb721ba194242fefd5 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Sat, 13 Oct 2018 00:22:03 +0100 Subject: [PATCH 039/148] moves chem master to using update_icon() fixes not using no power sprites --- .../reagents/chemistry/machinery/chem_master.dm | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 2a7dac0f48d..d6dc8f91806 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -20,7 +20,7 @@ /obj/machinery/chem_master/New() create_reagents(100) - overlays += "waitlight" + update_icon() /obj/machinery/chem_master/ex_act(severity) switch(severity) @@ -32,6 +32,12 @@ qdel(src) return +/obj/machinery/chem_master/update_icon() + overlays.Cut() + icon_state = "mixer[beaker ? "1" : "0"][powered() ? "" : "_nopower"]" + if(powered()) + overlays += "waitlight" + /obj/machinery/chem_master/blob_act() if(prob(50)) qdel(src) @@ -57,7 +63,7 @@ B.forceMove(src) to_chat(user, "You add the beaker to the machine!") SSnanoui.update_uis(src) - icon_state = "mixer1" + update_icon() else if(istype(B, /obj/item/storage/pill_bottle)) @@ -184,7 +190,7 @@ beaker.forceMove(get_turf(src)) beaker = null reagents.clear_reagents() - icon_state = "mixer0" + update_icon() else if(href_list["createpill"] || href_list["createpill_multiple"]) if(!condi) var/count = 1 From d206760dc7c072807a42dd3d9d877001dbd9d024 Mon Sep 17 00:00:00 2001 From: alex-gh Date: Sat, 13 Oct 2018 01:23:08 +0200 Subject: [PATCH 040/148] Refactored code to use the reagent check_and_add proc --- .../game/gamemodes/miniantags/abduction/abduction_gear.dm | 3 ++- code/game/machinery/OpTable.dm | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 1dda6d853f6..28f6fd4544a 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -736,7 +736,8 @@ Congratulations! You are now trained for invasive xenobiology research!"} icon_state = "bed" no_icon_updates = 1 //no icon updates for this; it's static. injected_reagents = list("corazone","spaceacillin") - injected_target_amount = 31 //the patient needs at least 30u of spaceacillin to prevent necrotization. + reagent_target_amount = 31 //the patient needs at least 30u of spaceacillin to prevent necrotization. + inject_amount = 10 /obj/structure/closet/abductor name = "alien locker" diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index e1fa805575d..2ee1e93683d 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -15,7 +15,8 @@ buckle_lying = 90 var/no_icon_updates = 0 //set this to 1 if you don't want the icons ever changing var/list/injected_reagents = list() - var/injected_target_amount = 1 + var/reagent_target_amount = 1 + var/inject_amount = 1 /obj/machinery/optable/New() ..() @@ -107,10 +108,9 @@ check_victim() if(LAZYLEN(injected_reagents)) for(var/mob/living/carbon/C in get_turf(src)) + var/datum/reagents/R = C.reagents for(var/chemical in injected_reagents) - var/current_amount = C.reagents.get_reagent_amount(chemical) - if(current_amount < injected_target_amount) - C.reagents.add_reagent(chemical, injected_target_amount - current_amount) + R.check_and_add(chemical,reagent_target_amount,inject_amount) /obj/machinery/optable/proc/take_victim(mob/living/carbon/C, mob/living/carbon/user as mob) if(C == user) From e1b2de4fd2128ca8e75baf3a43d03a4fc6ceeb78 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Fri, 12 Oct 2018 23:55:57 +0000 Subject: [PATCH 041/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 5 +++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-9826.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9827.yml | 4 ---- 4 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9826.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9827.yml diff --git a/html/changelog.html b/html/changelog.html index e95fd14f0c2..e411e7bd57e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -63,6 +63,11 @@
    • META - Cargo shuttle airlocks now bolt properly.
    • META - Cargo shuttle flaps are now airtight. All hail Cargonia.
    +

    Birdtalon updated:

    +
      +
    • Gamma ERT Paranormal gets their null rod.
    • +
    • Moves check_and_add() to reagents holder
    • +

    DesolateG updated:

    Whitelisted Positions
    Whitelisted Positions
    [replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
    " - for(var/i = contents.len, i>=1, i--) - var/obj/item/P = contents[i] - dat += "" - dat += "
    [P.name]
    " - user << browse("[name][dat]", "window=safe;size=350x300") + if(..()) + return 1 + ui_interact(user) + return + +/obj/structure/safe/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1) + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "safe.tmpl", name, 600, 750) + ui.open() + ui.set_auto_update(1) + +/obj/structure/safe/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state) + var/data[0] + var/list/contents_names = list() + for(var/obj/O in contents) + contents_names[++contents_names.len] = list("name" = O.name, "index" = contents.Find(O)) + + data["dial"] = dial + data["open"] = open + data["unlocked"] = unlocked + data["rotation"] = "[-dial*3.6]deg" + data["contents"] = contents_names + + return data /obj/structure/safe/Topic(href, href_list) - if(!ishuman(usr)) return - var/mob/living/carbon/human/user = usr + if(..()) + return 1 var/canhear = 0 + if(!ishuman(usr)) + to_chat(usr, "You don't have hands to operate the safe!") + return 0 + + var/mob/living/carbon/human/user = usr if(istype(user.l_hand, /obj/item/clothing/accessory/stethoscope) || istype(user.r_hand, /obj/item/clothing/accessory/stethoscope)) canhear = 1 if(href_list["open"]) - if(check_unlocked()) + if(check_unlocked() || open) to_chat(user, "You [open ? "close" : "open"] [src].") open = !open update_icon() - updateUsrDialog() - return + .=1 else - to_chat(user, "You can't [open ? "close" : "open"] [src], the lock is engaged!") - return + to_chat(user, "You can't open [src], the lock is engaged!") + .=1 if(href_list["decrement"]) - dial = decrement(dial) - if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 71) - tumbler_1_pos = decrement(tumbler_1_pos) - if(canhear) - to_chat(user, "You hear a [pick("clack", "scrape", "clank")] from [src].") - if(tumbler_1_pos == tumbler_2_pos + 37 || tumbler_1_pos == tumbler_2_pos - 35) - tumbler_2_pos = decrement(tumbler_2_pos) - if(canhear) - to_chat(user, "You hear a [pick("click", "chink", "clink")] from [src].") - check_unlocked(user, canhear) - updateUsrDialog() - return + var/ticks = text2num(href_list["decrement"]) + var/tum1_turns = 0 + var/tum2_turns = 0 + if(open) + return + for(var/i=1 to ticks) + if(!check_unlocked()) + dial = decrement(dial) + if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 99) + tumbler_1_pos = decrement(tumbler_1_pos) + tum1_turns++ + if(tumbler_1_pos == tumbler_2_pos + 51 || tumbler_1_pos == tumbler_2_pos - 49) + tumbler_2_pos = decrement(tumbler_2_pos) + tum2_turns++ + check_unlocked() + make_noise(tum1_turns, tum2_turns, user, canhear) + .=1 if(href_list["increment"]) - dial = increment(dial) - if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 71) - tumbler_1_pos = increment(tumbler_1_pos) - if(canhear) - to_chat(user, "You hear a [pick("clack", "scrape", "clank")] from [src].") - if(tumbler_1_pos == tumbler_2_pos - 37 || tumbler_1_pos == tumbler_2_pos + 35) - tumbler_2_pos = increment(tumbler_2_pos) - if(canhear) - to_chat(user, "You hear a [pick("click", "chink", "clink")] from [src].") - check_unlocked(user, canhear) - updateUsrDialog() - return + var/ticks = text2num(href_list["increment"]) + var/tum1_turns = 0 + var/tum2_turns = 0 + if(open) + return + for(var/i=1 to ticks) + check_unlocked() + dial = increment(dial) + if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 99) + tumbler_1_pos = increment(tumbler_1_pos) + tum1_turns++ + if(tumbler_1_pos == tumbler_2_pos - 51 || tumbler_1_pos == tumbler_2_pos + 49) + tumbler_2_pos = increment(tumbler_2_pos) + tum2_turns++ + make_noise(tum1_turns, tum2_turns, user, canhear) + .=1 if(href_list["retrieve"]) - user << browse("", "window=safe") // Close the menu + var/index = text2num(href_list["retrieve"]) + if(index > 0 && index <= contents.len) + var/obj/item/P = contents[index] + if(open) + if(P && in_range(src, user)) + user.put_in_hands(P) + .=1 - var/obj/item/P = locate(href_list["retrieve"]) in src - if(open) - if(P && in_range(src, user)) - user.put_in_hands(P) - updateUsrDialog() + updateUsrDialog() + SSnanoui.update_uis(src) + return /obj/structure/safe/attackby(obj/item/I, mob/user, params) diff --git a/nano/images/safe_dial.png b/nano/images/safe_dial.png new file mode 100644 index 0000000000000000000000000000000000000000..33b120b44a15b45e01febc76e9ce05511dd1eceb GIT binary patch literal 131827 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�b@v($c$?y?o7^h9IB< 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

    ytbjEi&dv-pg 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 literal 0 HcmV?d00001 diff --git a/nano/templates/safe.tmpl b/nano/templates/safe.tmpl new file mode 100644 index 00000000000..0f59f7652ce --- /dev/null +++ b/nano/templates/safe.tmpl @@ -0,0 +1,63 @@ + + + +{{if data.open == 0}} +

    +
    +
    {{:helper.link('Open', 'caret-square-o-down', {'open': 1})}}
    +
    +
    +
    +
    +
    {{:helper.link('Left 50', 'arrow-left', {'increment': 50})}}
    +
    {{:helper.link('Left 10', 'arrow-left', {'increment': 10})}}
    +
    {{:helper.link('Left 1', 'arrow-left', {'increment': 1})}}
    +
    + {{if data.unlocked}} +
    {{:helper.link('Right 1', 'arrow-right', null, 'disabled')}}
    +
    {{:helper.link('Right 10', 'arrow-right', null, 'disabled')}}
    +
    {{:helper.link('Right 100', 'arrow-right', null, 'disabled')}}
    + {{else}} +
    {{:helper.link('Right 1', 'arrow-right', {'decrement': 1})}}
    +
    {{:helper.link('Right 10', 'arrow-right', {'decrement': 10})}}
    +
    {{:helper.link('Right 50', 'arrow-right', {'decrement': 50})}}
    + {{/if}} +
    +
    +
    + +
    +
    +
    +
    +
    +
    How to open your Scarborough Arms - 2 tumbler safe
    +
    +
    1. Turn the dial to the right past the first number twice
    +
    2. Stop at the first number
    +
    3. Turn the dial to the left past the second number once
    +
    4. Stop at the second number
    +
    5. Turn to the right until the dial stops
    +
    6. Open the safe
    +
    +
    To lock fully turn the dial to the left for three rotations
    +
    +{{/if}} +{{if data.open == 1}} +
    +
    +
    {{:helper.link('Close', 'caret-square-o-up', {'open': 1})}}
    +
    +
    +
    + {{for data.contents}} +
    + {{:helper.link(value.name, 'arrow-left', {'retrieve': value.index})}} +
    + {{/for}} +
    +{{/if}} \ No newline at end of file From 5c37ea54491fbee6adb9245c5f6675be6eb86f74 Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sat, 13 Oct 2018 23:34:03 -0700 Subject: [PATCH 061/148] Small bug fix. --- code/game/objects/structures/safe.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index d50ce11fa1a..949eb3b0242 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -34,12 +34,12 @@ FLOOR SAFES open_pos = rand(0,99) - var/num1 = tumbler_2_open + 53 + var/num1 = tumbler_2_open + 54 if(num1 > 99) - num1 = num1 - 99 - var/num2 = tumbler_1_open + 97 + num1 = num1 - 100 + var/num2 = tumbler_1_open + 98 if(num2 > 99) - num2 = num2 - 99 + num2 = num2 - 100 combo_to_open = "Go right past [num1] twice then stop at [num1]. Go left past [num2] once then stop at [num2]. Turn right till it stops and its open." From 8b83e58ea03a391f1167bedb0ccf019fe574c8df Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sun, 14 Oct 2018 03:09:48 -0700 Subject: [PATCH 062/148] Invalid combinations fixed --- code/game/objects/structures/safe.dm | 42 ++++++++++------------------ 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 949eb3b0242..aad0486bbd0 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -26,14 +26,16 @@ FLOOR SAFES /obj/structure/safe/New() - tumbler_1_pos = rand(0, 99) - tumbler_1_open = rand(0, 99) - - tumbler_2_pos = rand(0, 99) + tumbler_2_pos = rand(0, 99) // first value in the combination set first tumbler_2_open = rand(0, 99) - open_pos = rand(0,99) - + tumbler_1_pos = rand(0, 99) + do + tumbler_1_open = rand(0, 99) + while(tumbler_1_open > Wrap(tumbler_2_open +48, 0, 99) && tumbler_1_open < Wrap(tumbler_2_open + 53, 0, 99)) // prevents a combination that wont open + do + open_pos = rand(0,99) + while(open_pos > Wrap(tumbler_1_open - 2, 0, 99) && open_pos < Wrap(tumbler_1_open + 2, 0, 99)) // prevents a combination that wont open var/num1 = tumbler_2_open + 54 if(num1 > 99) num1 = num1 - 100 @@ -78,22 +80,6 @@ FLOOR SAFES if(unlocked) if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!") - - -/obj/structure/safe/proc/decrement(num) - num -= 1 - if(num < 0) - num = 99 - return num - - -/obj/structure/safe/proc/increment(num) - num += 1 - if(num > 99) - num = 0 - return num - - /obj/structure/safe/update_icon() if(open) icon_state = "[initial(icon_state)]-open" @@ -159,12 +145,12 @@ FLOOR SAFES return for(var/i=1 to ticks) if(!check_unlocked()) - dial = decrement(dial) + dial = Wrap(dial - 1, 0 ,99) if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 99) - tumbler_1_pos = decrement(tumbler_1_pos) + tumbler_1_pos = Wrap(tumbler_1_pos - 1, 0, 99) tum1_turns++ if(tumbler_1_pos == tumbler_2_pos + 51 || tumbler_1_pos == tumbler_2_pos - 49) - tumbler_2_pos = decrement(tumbler_2_pos) + tumbler_2_pos = Wrap(tumbler_1_pos - 1, 0, 99) tum2_turns++ check_unlocked() make_noise(tum1_turns, tum2_turns, user, canhear) @@ -178,12 +164,12 @@ FLOOR SAFES return for(var/i=1 to ticks) check_unlocked() - dial = increment(dial) + dial = Wrap(dial + 1, 0, 99) if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 99) - tumbler_1_pos = increment(tumbler_1_pos) + tumbler_1_pos = Wrap(tumbler_1_pos + 1, 0, 99) tum1_turns++ if(tumbler_1_pos == tumbler_2_pos - 51 || tumbler_1_pos == tumbler_2_pos + 49) - tumbler_2_pos = increment(tumbler_2_pos) + tumbler_2_pos = Wrap(tumbler_2_pos + 1, 0, 99) tum2_turns++ make_noise(tum1_turns, tum2_turns, user, canhear) .=1 From 12c538ea0eebe8e5c79fbbbb6a8dd6638608c7fc Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sun, 14 Oct 2018 03:26:42 -0700 Subject: [PATCH 063/148] Used Wrap incorrectly, max is exclusive --- code/game/objects/structures/safe.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index aad0486bbd0..b0df47bcbd7 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -32,10 +32,10 @@ FLOOR SAFES tumbler_1_pos = rand(0, 99) do tumbler_1_open = rand(0, 99) - while(tumbler_1_open > Wrap(tumbler_2_open +48, 0, 99) && tumbler_1_open < Wrap(tumbler_2_open + 53, 0, 99)) // prevents a combination that wont open + while(tumbler_1_open > Wrap(tumbler_2_open +48, 0, 100) && tumbler_1_open < Wrap(tumbler_2_open + 53, 0, 100)) // prevents a combination that wont open do open_pos = rand(0,99) - while(open_pos > Wrap(tumbler_1_open - 2, 0, 99) && open_pos < Wrap(tumbler_1_open + 2, 0, 99)) // prevents a combination that wont open + while(open_pos > Wrap(tumbler_1_open - 2, 0, 100) && open_pos < Wrap(tumbler_1_open + 2, 0, 100)) // prevents a combination that wont open var/num1 = tumbler_2_open + 54 if(num1 > 99) num1 = num1 - 100 @@ -145,12 +145,12 @@ FLOOR SAFES return for(var/i=1 to ticks) if(!check_unlocked()) - dial = Wrap(dial - 1, 0 ,99) + dial = Wrap(dial - 1, 0 ,100) if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 99) - tumbler_1_pos = Wrap(tumbler_1_pos - 1, 0, 99) + tumbler_1_pos = Wrap(tumbler_1_pos - 1, 0, 100) tum1_turns++ if(tumbler_1_pos == tumbler_2_pos + 51 || tumbler_1_pos == tumbler_2_pos - 49) - tumbler_2_pos = Wrap(tumbler_1_pos - 1, 0, 99) + tumbler_2_pos = Wrap(tumbler_2_pos - 1, 0, 100) tum2_turns++ check_unlocked() make_noise(tum1_turns, tum2_turns, user, canhear) @@ -164,12 +164,12 @@ FLOOR SAFES return for(var/i=1 to ticks) check_unlocked() - dial = Wrap(dial + 1, 0, 99) + dial = Wrap(dial + 1, 0, 100) if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 99) - tumbler_1_pos = Wrap(tumbler_1_pos + 1, 0, 99) + tumbler_1_pos = Wrap(tumbler_1_pos + 1, 0, 100) tum1_turns++ if(tumbler_1_pos == tumbler_2_pos - 51 || tumbler_1_pos == tumbler_2_pos + 49) - tumbler_2_pos = Wrap(tumbler_2_pos + 1, 0, 99) + tumbler_2_pos = Wrap(tumbler_2_pos + 1, 0, 100) tum2_turns++ make_noise(tum1_turns, tum2_turns, user, canhear) .=1 From e5a24dc82d639f19eff217f76c2728302c740552 Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sun, 14 Oct 2018 03:38:55 -0700 Subject: [PATCH 064/148] Adds a comment --- code/game/objects/structures/safe.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index b0df47bcbd7..b9f569963af 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -73,9 +73,9 @@ FLOOR SAFES if(tum2_tmp >= 1) to_chat(user, "You hear a [pick("click", "chink", "clink")] from [src].") tum2_tmp = tum2_tmp - rand(4, 8) - if(tumbler_1_pos == tumbler_1_open && tum1_turns == 1) + if(tumbler_1_pos == tumbler_1_open && tum1_turns == 1) // You cant hear tumblers if you spin fast! to_chat(user, "You hear a [pick("tonk", "krunk", "plunk")] from [src].") - if(tumbler_2_pos == tumbler_2_open && tum1_turns == 1 && tum2_turns == 1) + if(tumbler_2_pos == tumbler_2_open && tum1_turns == 1 && tum2_turns == 1) // You cant hear tumblers if you spin fast! to_chat(user, "You hear a [pick("tink", "krink", "plink")] from [src].") if(unlocked) if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!") From d11a0ac95bff6f584d13374d2824ff59643af1ff Mon Sep 17 00:00:00 2001 From: Purpose Date: Sun, 14 Oct 2018 11:52:09 +0100 Subject: [PATCH 065/148] visibility --- code/game/objects/items/weapons/tools.dm | 16 ++++++++++++---- icons/obj/tools.dmi | Bin 13876 -> 14151 bytes 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 08a6a3e168c..b30d932eed2 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -120,7 +120,7 @@ name = "screwdriver" desc = "You can be totally screwy with this." icon = 'icons/obj/tools.dmi' - icon_state = null + icon_state = "screwdriver_map" flags = CONDUCT slot_flags = SLOT_BELT force = 5 @@ -133,6 +133,7 @@ hitsound = 'sound/weapons/bladeslice.ogg' usesound = 'sound/items/Screwdriver.ogg' toolspeed = 1 + var/random_color = TRUE //if the screwdriver uses random coloring /obj/item/screwdriver/nuke name = "screwdriver" @@ -146,7 +147,7 @@ /obj/item/screwdriver/New(loc, var/param_color = null) ..() - if(!icon_state) + if(random_color) if(!param_color) param_color = pick("red","blue","pink","brown","green","cyan","yellow") icon_state = "screwdriver_[param_color]" @@ -168,6 +169,7 @@ desc = "A screwdriver made of brass. The handle feels freezing cold." icon_state = "screwdriver_brass" toolspeed = 0.5 + random_color = FALSE /obj/item/screwdriver/abductor name = "alien screwdriver" @@ -176,6 +178,7 @@ icon_state = "screwdriver" usesound = 'sound/items/PSHOOM.ogg' toolspeed = 0.1 + random_color = FALSE /obj/item/screwdriver/power name = "hand drill" @@ -192,6 +195,7 @@ hitsound = 'sound/items/drill_hit.ogg' usesound = 'sound/items/drill_use.ogg' toolspeed = 0.25 + random_color = FALSE /obj/item/screwdriver/power/suicide_act(mob/user) user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!") @@ -215,7 +219,7 @@ name = "wirecutters" desc = "This cuts wires." icon = 'icons/obj/tools.dmi' - icon_state = null + icon_state = "cutters" flags = CONDUCT slot_flags = SLOT_BELT force = 6 @@ -229,10 +233,11 @@ usesound = 'sound/items/Wirecutter.ogg' sharp = 1 toolspeed = 1 + var/random_color = TRUE /obj/item/wirecutters/New(loc, param_color = null) ..() - if(!icon_state) + if(random_color) if(!param_color) param_color = pick("yellow", "red") icon_state = "cutters_[param_color]" @@ -258,6 +263,7 @@ desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch." icon_state = "cutters_brass" toolspeed = 0.5 + random_color = FALSE /obj/item/wirecutters/abductor name = "alien wirecutters" @@ -266,6 +272,7 @@ icon_state = "cutters" toolspeed = 0.1 origin_tech = "materials=5;engineering=4;abductor=3" + random_color = FALSE /obj/item/wirecutters/cyborg name = "wirecutters" @@ -281,6 +288,7 @@ materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) usesound = 'sound/items/jaws_cut.ogg' toolspeed = 0.25 + random_color = FALSE /obj/item/wirecutters/power/suicide_act(mob/user) user.visible_message("[user] is wrapping \the [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!") diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index a78a0babdc4ddef4907dac69e134f1455a7a9eff..1111dfb02eeca397b945252cfe62f766ea94a584 100644 GIT binary patch literal 14151 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 K3YBse@BSCBUZUmz From cf5ddc3077196e67f5b13d31dd435285872d2961 Mon Sep 17 00:00:00 2001 From: Purpose Date: Sun, 14 Oct 2018 12:20:46 +0100 Subject: [PATCH 066/148] check --- code/modules/mob/living/carbon/human/death.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index b2d2d24400b..3f138d112ff 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -19,8 +19,9 @@ for(var/obj/item/organ/internal/I in internal_organs) if(isturf(loc)) var/atom/movable/thing = I.remove(src) - thing.forceMove(get_turf(src)) - thing.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) + if(thing) + thing.forceMove(get_turf(src)) + thing.throw_at(get_edge_target_turf(src, pick(alldirs)), rand(1,3), 5) for(var/obj/item/organ/external/E in bodyparts) if(istype(E, /obj/item/organ/external/chest)) From 7030a3ef3149f5d9e647c36e2184bf2c3f02bf7b Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 07:39:15 -0400 Subject: [PATCH 067/148] Automatic changelog generation for PR #9844 [ci skip] --- html/changelogs/AutoChangeLog-pr-9844.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9844.yml diff --git a/html/changelogs/AutoChangeLog-pr-9844.yml b/html/changelogs/AutoChangeLog-pr-9844.yml new file mode 100644 index 00000000000..b5c8b335bcc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9844.yml @@ -0,0 +1,4 @@ +author: "Purpose" +delete-after: True +changes: + - bugfix: "Makes it so that Screwdrivers & Wirecutters are no longer invisible in the map editor." From 4381cc9a295c4d015bb69dc88458ae2f3d2db4af Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 07:39:35 -0400 Subject: [PATCH 068/148] Automatic changelog generation for PR #9846 [ci skip] --- html/changelogs/AutoChangeLog-pr-9846.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9846.yml diff --git a/html/changelogs/AutoChangeLog-pr-9846.yml b/html/changelogs/AutoChangeLog-pr-9846.yml new file mode 100644 index 00000000000..77748a4c16a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9846.yml @@ -0,0 +1,4 @@ +author: "Purpose" +delete-after: True +changes: + - bugfix: "Fixes a gibbing runtime" From 8d7d4b688f80ca018b3b141ea0215761e3e3c032 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 11:48:54 +0000 Subject: [PATCH 069/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 5 +++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/AutoChangeLog-pr-9844.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9846.yml | 4 ---- 4 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9844.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9846.yml diff --git a/html/changelog.html b/html/changelog.html index 5194201df70..85a9540d422 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -57,6 +57,11 @@

    14 October 2018

    +

    Purpose updated:

    +
      +
    • Makes it so that Screwdrivers & Wirecutters are no longer invisible in the map editor.
    • +
    • Fixes a gibbing runtime
    • +

    uc_guy updated:

    • fixed runtime in IsBanned.dm
    • diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 82148ff6207..a536f0567f8 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7498,5 +7498,9 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: You can no longer get an infection and die during abductor surgery. - bugfix: Voice analyzers no longer activate on noise. 2018-10-14: + Purpose: + - bugfix: Makes it so that Screwdrivers & Wirecutters are no longer invisible in + the map editor. + - bugfix: Fixes a gibbing runtime uc_guy: - bugfix: fixed runtime in IsBanned.dm diff --git a/html/changelogs/AutoChangeLog-pr-9844.yml b/html/changelogs/AutoChangeLog-pr-9844.yml deleted file mode 100644 index b5c8b335bcc..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9844.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - bugfix: "Makes it so that Screwdrivers & Wirecutters are no longer invisible in the map editor." diff --git a/html/changelogs/AutoChangeLog-pr-9846.yml b/html/changelogs/AutoChangeLog-pr-9846.yml deleted file mode 100644 index 77748a4c16a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9846.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Purpose" -delete-after: True -changes: - - bugfix: "Fixes a gibbing runtime" From 2930e3ea5970dcfd04d9f6a96d4be1e61dcb78e2 Mon Sep 17 00:00:00 2001 From: realtaac <44135166+realtaac@users.noreply.github.com> Date: Sun, 14 Oct 2018 08:36:18 -0400 Subject: [PATCH 070/148] added description added desc to cryocell --- code/game/machinery/cryo.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 90ce57e880f..c6755d1dbdd 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -1,5 +1,6 @@ /obj/machinery/atmospherics/unary/cryo_cell name = "cryo cell" + desc = "Lowers the body temperature so certain medications may take effect." icon = 'icons/obj/cryogenics.dmi' icon_state = "pod0" density = 1 From 611a069deba9cb5277f528d7ed1271cf1aca62fa Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Sun, 14 Oct 2018 15:00:15 +0200 Subject: [PATCH 071/148] added span class to ripley clamp too --- code/game/mecha/equipment/tools/work_tools.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index ca327fe6ef7..29dd919aa58 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -63,8 +63,8 @@ start_cooldown() else step_away(M,chassis) - occupant_message("You push [target] out of the way.") - chassis.visible_message("[chassis] pushes [target] out of the way.") + occupant_message("You push [target] out of the way.") + chassis.visible_message("[chassis] pushes [target] out of the way.") return 1 From 365ca63b7c0f25aa2fb9a2fa2bedeac6e4f775ab Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 09:23:00 -0400 Subject: [PATCH 072/148] Automatic changelog generation for PR #9847 [ci skip] --- html/changelogs/AutoChangeLog-pr-9847.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9847.yml diff --git a/html/changelogs/AutoChangeLog-pr-9847.yml b/html/changelogs/AutoChangeLog-pr-9847.yml new file mode 100644 index 00000000000..19f2516d977 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9847.yml @@ -0,0 +1,4 @@ +author: "taac" +delete-after: True +changes: + - bugfix: "added cryo cell description" From 38b5775081e2d1aaabf1162e749d51e9619aff1e Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 13:46:46 +0000 Subject: [PATCH 073/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-9847.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9847.yml diff --git a/html/changelog.html b/html/changelog.html index 85a9540d422..81c86c43d94 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -62,6 +62,10 @@
    • Makes it so that Screwdrivers & Wirecutters are no longer invisible in the map editor.
    • Fixes a gibbing runtime
    +

    taac updated:

    +
      +
    • added cryo cell description
    • +

    uc_guy updated:

    • fixed runtime in IsBanned.dm
    • diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index a536f0567f8..58a74411ebd 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7502,5 +7502,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Makes it so that Screwdrivers & Wirecutters are no longer invisible in the map editor. - bugfix: Fixes a gibbing runtime + taac: + - bugfix: added cryo cell description uc_guy: - bugfix: fixed runtime in IsBanned.dm diff --git a/html/changelogs/AutoChangeLog-pr-9847.yml b/html/changelogs/AutoChangeLog-pr-9847.yml deleted file mode 100644 index 19f2516d977..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9847.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "taac" -delete-after: True -changes: - - bugfix: "added cryo cell description" From a39c1737fa9f43d75d6153f5f1c5d049f56e5e48 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Sun, 14 Oct 2018 16:16:12 +0200 Subject: [PATCH 074/148] Added examine text for borg module --- code/modules/mob/living/silicon/robot/examine.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index cb207932a9a..d0029d3ff3e 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -3,6 +3,7 @@ ..(user) var/msg = "" + msg += "It has loaded a [module.name].\n" var/obj/act_module = get_active_hand() if(act_module) msg += "It is holding [bicon(act_module)] \a [act_module].\n" From 739402f986d6b6f9b342a07d9c7f288e13f011f0 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 10:19:39 -0400 Subject: [PATCH 075/148] Automatic changelog generation for PR #9838 [ci skip] --- html/changelogs/AutoChangeLog-pr-9838.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9838.yml diff --git a/html/changelogs/AutoChangeLog-pr-9838.yml b/html/changelogs/AutoChangeLog-pr-9838.yml new file mode 100644 index 00000000000..05874e03145 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9838.yml @@ -0,0 +1,4 @@ +author: "variableundefined" +delete-after: True +changes: + - tweak: "Stacks are split by CtrlShiftClick instead of AltClick now." From a1d248bf1697fcf99ec74f06e859a059f57a1035 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 10:22:40 -0400 Subject: [PATCH 076/148] Automatic changelog generation for PR #9446 [ci skip] --- html/changelogs/AutoChangeLog-pr-9446.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9446.yml diff --git a/html/changelogs/AutoChangeLog-pr-9446.yml b/html/changelogs/AutoChangeLog-pr-9446.yml new file mode 100644 index 00000000000..a9237090fd1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9446.yml @@ -0,0 +1,4 @@ +author: "variableundefined" +delete-after: True +changes: + - bugfix: "A runtime that occurs with paper bundle being created with one or less paper." From b34be9f9e6eef7659e4f74c919ec1e28fa75a457 Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Sun, 14 Oct 2018 16:34:08 +0200 Subject: [PATCH 077/148] woops --- code/modules/mob/living/silicon/robot/examine.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index d0029d3ff3e..6e3e4ba7d95 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -3,7 +3,8 @@ ..(user) var/msg = "" - msg += "It has loaded a [module.name].\n" + if(module) + msg += "It has loaded a [module.name].\n" var/obj/act_module = get_active_hand() if(act_module) msg += "It is holding [bicon(act_module)] \a [act_module].\n" From 49c054d5ac3e6c6fab3a35dd923796ce409bb80f Mon Sep 17 00:00:00 2001 From: TDSSS <32099540+TDSSS@users.noreply.github.com> Date: Sun, 14 Oct 2018 16:58:07 +0200 Subject: [PATCH 078/148] Changed max name length --- code/_compile_options.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_compile_options.dm b/code/_compile_options.dm index c6b63b77271..436970567a0 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -18,7 +18,7 @@ #define MAX_PAPER_MESSAGE_LEN 3072 #define MAX_PAPER_FIELDS 50 #define MAX_BOOK_MESSAGE_LEN 9216 -#define MAX_NAME_LEN 26 +#define MAX_NAME_LEN 50 //diona names can get loooooooong // Version check, terminates compilation if someone is using a version of BYOND that's too old #if DM_VERSION < 510 From 5008318c6ac3ba707fa9724781a4837add57239f Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 16:20:25 +0000 Subject: [PATCH 079/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 5 +++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/AutoChangeLog-pr-9446.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9838.yml | 4 ---- 4 files changed, 9 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9446.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9838.yml diff --git a/html/changelog.html b/html/changelog.html index 81c86c43d94..57fa1006f2e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -70,6 +70,11 @@
      • fixed runtime in IsBanned.dm
      +

      variableundefined updated:

      +
        +
      • Stacks are split by CtrlShiftClick instead of AltClick now.
      • +
      • A runtime that occurs with paper bundle being created with one or less paper.
      • +

      13 October 2018

      Birdtalon updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 58a74411ebd..3796b26e82e 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7506,3 +7506,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: added cryo cell description uc_guy: - bugfix: fixed runtime in IsBanned.dm + variableundefined: + - tweak: Stacks are split by CtrlShiftClick instead of AltClick now. + - bugfix: A runtime that occurs with paper bundle being created with one or less + paper. diff --git a/html/changelogs/AutoChangeLog-pr-9446.yml b/html/changelogs/AutoChangeLog-pr-9446.yml deleted file mode 100644 index a9237090fd1..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9446.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "variableundefined" -delete-after: True -changes: - - bugfix: "A runtime that occurs with paper bundle being created with one or less paper." diff --git a/html/changelogs/AutoChangeLog-pr-9838.yml b/html/changelogs/AutoChangeLog-pr-9838.yml deleted file mode 100644 index 05874e03145..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9838.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "variableundefined" -delete-after: True -changes: - - tweak: "Stacks are split by CtrlShiftClick instead of AltClick now." From 2b53ba43cd4908e9acd7127df8c5abe0af2bd579 Mon Sep 17 00:00:00 2001 From: alex-gh Date: Mon, 15 Oct 2018 01:21:03 +0200 Subject: [PATCH 080/148] You can no longer roll around when dead. --- code/_onclick/click.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 006f350873b..8ce2177751c 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -236,6 +236,8 @@ Makes the mob face the direction of the clicked thing */ /mob/proc/MiddleShiftClickOn(atom/A) + if(incapacitated()) + return var/face_dir = get_cardinal_dir(src, A) if(forced_look == face_dir) forced_look = null From 735dd87b5968a2e71b4adac15bd256c90a055973 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 20:04:43 -0400 Subject: [PATCH 081/148] Automatic changelog generation for PR #9854 [ci skip] --- html/changelogs/AutoChangeLog-pr-9854.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9854.yml diff --git a/html/changelogs/AutoChangeLog-pr-9854.yml b/html/changelogs/AutoChangeLog-pr-9854.yml new file mode 100644 index 00000000000..ffa5c66ffda --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9854.yml @@ -0,0 +1,4 @@ +author: "uc_guy" +delete-after: True +changes: + - bugfix: "You can no longer roll around when dead." From 42f24257cd760621c206d770fc38566e618da7c1 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Sun, 14 Oct 2018 20:06:38 -0400 Subject: [PATCH 082/148] Automatic changelog generation for PR #9851 [ci skip] --- html/changelogs/AutoChangeLog-pr-9851.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9851.yml diff --git a/html/changelogs/AutoChangeLog-pr-9851.yml b/html/changelogs/AutoChangeLog-pr-9851.yml new file mode 100644 index 00000000000..4d81d671f6a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9851.yml @@ -0,0 +1,4 @@ +author: "TDSSS" +delete-after: True +changes: + - tweak: "The maximal length of a name that won't be rejected as a 'bad name' has been raised." From c46e357954b5b6a7e590d881af88023a99797f27 Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sun, 14 Oct 2018 17:39:02 -0700 Subject: [PATCH 083/148] Minor tweaks. --- code/game/objects/structures/safe.dm | 17 +++++++++++++--- nano/templates/safe.tmpl | 29 ++++++++++++++-------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index b9f569963af..934498e2739 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -78,7 +78,8 @@ FLOOR SAFES if(tumbler_2_pos == tumbler_2_open && tum1_turns == 1 && tum2_turns == 1) // You cant hear tumblers if you spin fast! to_chat(user, "You hear a [pick("tink", "krink", "plink")] from [src].") if(unlocked) - if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!") + if(user) + visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!") /obj/structure/safe/update_icon() if(open) @@ -102,8 +103,11 @@ FLOOR SAFES /obj/structure/safe/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state) var/data[0] var/list/contents_names = list() - for(var/obj/O in contents) - contents_names[++contents_names.len] = list("name" = O.name, "index" = contents.Find(O)) + if(open) + for(var/obj/O in contents) + contents_names[++contents_names.len] = list("name" = O.name, "index" = contents.Find(O)) + else + contents_names = list(list("name" = "you're"), list("name" = "a"), list("name" = "cheater")) data["dial"] = dial data["open"] = open @@ -152,6 +156,8 @@ FLOOR SAFES if(tumbler_1_pos == tumbler_2_pos + 51 || tumbler_1_pos == tumbler_2_pos - 49) tumbler_2_pos = Wrap(tumbler_2_pos - 1, 0, 100) tum2_turns++ + sleep(world.tick_lag) + SSnanoui.update_uis(src) check_unlocked() make_noise(tum1_turns, tum2_turns, user, canhear) .=1 @@ -171,6 +177,8 @@ FLOOR SAFES if(tumbler_1_pos == tumbler_2_pos - 51 || tumbler_1_pos == tumbler_2_pos + 49) tumbler_2_pos = Wrap(tumbler_2_pos + 1, 0, 100) tum2_turns++ + sleep(world.tick_lag) + SSnanoui.update_uis(src) make_noise(tum1_turns, tum2_turns, user, canhear) .=1 @@ -206,6 +214,9 @@ FLOOR SAFES if(istype(I, /obj/item/clothing/accessory/stethoscope)) to_chat(user, "Hold [I] in one of your hands while you manipulate the dial!") return + else + to_chat(user, "You can't put [I] in into the safe while it is closed!") + return obj/structure/safe/blob_act() diff --git a/nano/templates/safe.tmpl b/nano/templates/safe.tmpl index 0f59f7652ce..cbb34d93dd0 100644 --- a/nano/templates/safe.tmpl +++ b/nano/templates/safe.tmpl @@ -5,7 +5,20 @@ } -{{if data.open == 0}} +{{if data.open}} +
      +
      +
      {{:helper.link('Close', 'caret-square-o-up', {'open': 1})}}
      +
      +
      +
      + {{for data.contents}} +
      + {{:helper.link(value.name, 'arrow-left', {'retrieve': value.index})}} +
      + {{/for}} +
      +{{else}}
      {{:helper.link('Open', 'caret-square-o-down', {'open': 1})}}
      @@ -46,18 +59,4 @@
      To lock fully turn the dial to the left for three rotations
      -{{/if}} -{{if data.open == 1}} -
      -
      -
      {{:helper.link('Close', 'caret-square-o-up', {'open': 1})}}
      -
      -
      -
      - {{for data.contents}} -
      - {{:helper.link(value.name, 'arrow-left', {'retrieve': value.index})}} -
      - {{/for}} -
      {{/if}} \ No newline at end of file From 4eeb26aa0ff626e627da201e6101e2d369d7b17b Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sun, 14 Oct 2018 17:45:43 -0700 Subject: [PATCH 084/148] Fixed examine_status and changed manufacturer --- code/game/objects/structures/safe.dm | 4 +++- nano/templates/safe.tmpl | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 934498e2739..6f1121d0a54 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -7,7 +7,7 @@ FLOOR SAFES //SAFES /obj/structure/safe name = "\improper Safe" - desc = "A huge chunk of metal with a dial embedded in it. Fine print on the dial reads \"Scarborough Arms - 2 tumbler safe, guaranteed thermite resistant, explosion resistant, and assistant resistant.\"" + desc = "A huge chunk of metal with a dial embedded in it. Fine print on the dial reads \"Nanotrasen Arms - 2 tumbler safe, guaranteed thermite resistant, explosion resistant, and assistant resistant.\"" icon = 'icons/obj/structures.dmi' icon_state = "safe" anchored = 1 @@ -225,6 +225,8 @@ obj/structure/safe/blob_act() obj/structure/safe/ex_act(severity) return +obj/structure/safe/examine_status(mob/user) + return //FLOOR SAFES /obj/structure/safe/floor diff --git a/nano/templates/safe.tmpl b/nano/templates/safe.tmpl index cbb34d93dd0..f878bf8aec1 100644 --- a/nano/templates/safe.tmpl +++ b/nano/templates/safe.tmpl @@ -48,7 +48,7 @@
    -
    How to open your Scarborough Arms - 2 tumbler safe
    +
    How to open your Nanotrasen Arms - 2 tumbler safe
    1. Turn the dial to the right past the first number twice
    2. Stop at the first number
    From 6020c9a794fd8d193dde3a8a2b5e8f8925072fb8 Mon Sep 17 00:00:00 2001 From: Ty-Omaha Date: Sun, 14 Oct 2018 20:46:31 -0400 Subject: [PATCH 085/148] borer fixes --- code/game/gamemodes/miniantags/borer/borer.dm | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 5543a54caa6..cc9a6593df3 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -91,6 +91,7 @@ ) var/talk_inside_host = FALSE // So that borers don't accidentally give themselves away on a botched message var/used_dominate + var/input_open = FALSE // To prevent people from spam opening the Dominate Victim input var/chemicals = 10 // Chemicals used for reproduction and chemical injection. var/max_chems = 250 var/mob/living/carbon/human/host // Human host for the brain worm. @@ -471,7 +472,7 @@ set category = "Borer" set name = "Dominate Victim" set desc = "Freeze the limbs of a potential host with supernatural fear." - + if(world.time - used_dominate < 150) to_chat(src, "You cannot use that ability again so soon.") return @@ -483,23 +484,43 @@ if(stat) to_chat(src, "You cannot do that in your current state.") return - + + if(input_open) + to_chat(src, "You're already targetting someone!") + return + var/list/choices = list() for(var/mob/living/carbon/C in view(3,src)) if(C.stat != DEAD) choices += C - + if(world.time - used_dominate < 300) to_chat(src, "You cannot use that ability again so soon.") return - + + input_open = TRUE + var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices - if(!M || !src) + if(!M) + input_open = FALSE + return + + if(!src) //different statement to avoid a runtime since if the source is deleted then input_open would also be deleted return if(M.has_brain_worms()) to_chat(src, "You cannot dominate someone who is already infested!") + input_open = FALSE + return + + if(stat == DEAD) + input_open = FALSE + return + + if(get_dist(src, M) > 7) //to avoid people remotely doing from across the map etc, 7 is the default view range + to_chat(src, "You're too far away!") + input_open = FALSE return to_chat(src, "You focus your psychic lance on [M] and freeze [M.p_their()] limbs with a wave of terrible dread.") @@ -507,6 +528,7 @@ M.Weaken(3) used_dominate = world.time + input_open = FALSE /mob/living/simple_animal/borer/verb/release_host() set category = "Borer" From 8669cad4d02d2b046d38a092aa3db31c07af37b3 Mon Sep 17 00:00:00 2001 From: Ty-Omaha Date: Sun, 14 Oct 2018 21:07:48 -0400 Subject: [PATCH 086/148] borer fixes 2 --- code/game/gamemodes/miniantags/borer/borer.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index cc9a6593df3..47ce49414b2 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -326,6 +326,9 @@ to_chat(src, "You cannot infest someone who is already infested!") return + if(stat == DEAD) + return + to_chat(src, "You slither up [M] and begin probing at [M.p_their()] ear canal...") if(!do_after(src, 50, target = M)) From 3707242e64d26e7b5da3659cbe87dad1638341c3 Mon Sep 17 00:00:00 2001 From: warior4356 Date: Sun, 14 Oct 2018 18:25:36 -0700 Subject: [PATCH 087/148] Fixed a UI lag issue --- code/game/objects/structures/safe.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 6f1121d0a54..40f459166b9 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -140,6 +140,7 @@ FLOOR SAFES else to_chat(user, "You can't open [src], the lock is engaged!") .=1 + SSnanoui.update_uis(src) if(href_list["decrement"]) var/ticks = text2num(href_list["decrement"]) @@ -157,8 +158,8 @@ FLOOR SAFES tumbler_2_pos = Wrap(tumbler_2_pos - 1, 0, 100) tum2_turns++ sleep(world.tick_lag) + check_unlocked() SSnanoui.update_uis(src) - check_unlocked() make_noise(tum1_turns, tum2_turns, user, canhear) .=1 @@ -190,9 +191,9 @@ FLOOR SAFES if(P && in_range(src, user)) user.put_in_hands(P) .=1 + SSnanoui.update_uis(src) updateUsrDialog() - SSnanoui.update_uis(src) return From 265da844dfd7e50d2b11e52ecd65f1f339233b4d Mon Sep 17 00:00:00 2001 From: Ty-Omaha Date: Sun, 14 Oct 2018 21:25:46 -0400 Subject: [PATCH 088/148] borer fixes 3 (spelling) --- code/game/gamemodes/miniantags/borer/borer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 47ce49414b2..a87008c590b 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -489,7 +489,7 @@ return if(input_open) - to_chat(src, "You're already targetting someone!") + to_chat(src, "You're already targeting someone!") return var/list/choices = list() From 09313bbea17350f2f0279088c0dbeb4b1e3b472f Mon Sep 17 00:00:00 2001 From: Gwydion Brain Date: Sun, 14 Oct 2018 21:04:12 -0700 Subject: [PATCH 089/148] Initial --- code/game/objects/items/weapons/cards_ids.dm | 18 ++++++++++++++---- icons/obj/toy.dmi | Bin 70537 -> 73506 bytes 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index daaa5c3e4c4..1f914466862 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -774,9 +774,9 @@ // Decals /obj/item/id_decal name = "identification card decal" - desc = "A modification kit to make your ID cards look snazzy.." - icon = 'icons/obj/device.dmi' - icon_state = "batterer" + desc = "A nano-cellophane wrap that molds to an ID card to make it look snazzy looking." + icon = 'icons/obj/toy.dmi' + icon_state = "id_decal" var/decal_name = "identification card" var/decal_desc = "A card used to provide ID and determine access across the station." var/decal_icon_state = "id" @@ -784,30 +784,40 @@ var/override_name = 0 /obj/item/id_decal/gold - name = "gold ID card card decal" + name = "gold ID card decal" + icon_state = "id_decal_gold" + desc = "Make your ID look like the Captain's or a self-centered HOP's. Applies to any ID." decal_desc = "A golden card which shows power and might." decal_icon_state = "gold" decal_item_state = "gold_id" /obj/item/id_decal/silver name = "silver ID card decal" + icon_state = "id_decal_silver" + desc = "Make your ID look like HOP's because they wouldn't change it officially. Applies to any ID." decal_desc = "A silver card which shows honour and dedication." decal_icon_state = "silver" decal_item_state = "silver_id" /obj/item/id_decal/prisoner name = "prisoner ID card decal" + icon_state = "id_decal_prisonner" + desc = "All the cool kids have an ID that's this color. Applies to any ID." decal_desc = "You are a number, you are not a free man." decal_icon_state = "prisoner" decal_item_state = "orange-id" /obj/item/id_decal/centcom name = "centcom ID card decal" + icon_state = "id_decal_centcom" + desc = "All the prestige without the responsibility or the access. Applies to any ID." decal_desc = "An ID straight from Cent. Com." decal_icon_state = "centcom" /obj/item/id_decal/emag name = "cryptographic sequencer ID card decal" + icon_state = "id_decal_emag" + desc = "A bundle of wires that you can tape to your ID to look very suspect. Applies to any ID." decal_name = "cryptographic sequencer" decal_desc = "It's a card with a magnetic strip attached to some circuitry." decal_icon_state = "emag" diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index b7f40b4cdbbe4e12865153b969e87d10345fe841..2f4e033917d0838a7a4a154c7b9453e9f8158f2b 100644 GIT binary patch delta 14309 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 delta 11305 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 mlP_$*n*W)?Ke(K{`GQ~!? Date: Sun, 14 Oct 2018 21:06:37 -0700 Subject: [PATCH 090/148] Lil fixo --- code/game/objects/items/weapons/cards_ids.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 1f914466862..92f5c389440 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -774,7 +774,7 @@ // Decals /obj/item/id_decal name = "identification card decal" - desc = "A nano-cellophane wrap that molds to an ID card to make it look snazzy looking." + desc = "A nano-cellophane wrap that molds to an ID card to make it look snazzy." icon = 'icons/obj/toy.dmi' icon_state = "id_decal" var/decal_name = "identification card" From d7ecb3bd8c16aa03ee1942be7f78f9bee4c3be8c Mon Sep 17 00:00:00 2001 From: Gwydion Brain Date: Sun, 14 Oct 2018 21:12:42 -0700 Subject: [PATCH 091/148] Typo --- code/game/objects/items/weapons/cards_ids.dm | 2 +- icons/obj/toy.dmi | Bin 73506 -> 73506 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 92f5c389440..38051dde621 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -801,7 +801,7 @@ /obj/item/id_decal/prisoner name = "prisoner ID card decal" - icon_state = "id_decal_prisonner" + icon_state = "id_decal_prisoner" desc = "All the cool kids have an ID that's this color. Applies to any ID." decal_desc = "You are a number, you are not a free man." decal_icon_state = "prisoner" diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 2f4e033917d0838a7a4a154c7b9453e9f8158f2b..524418ba0e90152a11ee6bbcddb955770e0be0d9 100644 GIT binary patch delta 60 zcmV-C0K@;Hz67Ga1h6p%DVJ=!M~7k;l}{f>js|W8w|Ab^mxS+&FW>HpyRY}x{{x38 S&A5>)DiwoT2De%U0mv9Xz8f$A delta 60 zcmV-C0K@;Hz67Ga1h6p%DR+{6_h?b Date: Mon, 15 Oct 2018 13:33:09 +0900 Subject: [PATCH 092/148] tiger request --- code/game/sound.dm | 3 +++ code/modules/surgery/organs/organ_external.dm | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index 66746ece0ae..4fb7b8814bf 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -146,4 +146,7 @@ 'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg') if("growls") soundin = pick('sound/goonstation/voice/growl1.ogg', 'sound/goonstation/voice/growl2.ogg', 'sound/goonstation/voice/growl3.ogg') + + if("bonebreak") + soundin = pick('sound/effects/bone_break_1.ogg', 'sound/effects/bone_break_2.ogg', 'sound/effects/bone_break_3.ogg', 'sound/effects/bone_break_4.ogg', 'sound/effects/bone_break_5.ogg', 'sound/effects/bone_break_6.ogg') return soundin diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index 35808381075..8ed943e4d1e 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -607,7 +607,7 @@ Note that amputating the affected organ does in fact remove the infection from t "You hear a loud cracking sound coming from \the [owner].",\ "Something feels like it shattered in your [name]!",\ "You hear a sickening crack.") - playsound(owner, "sound/effects/bone_break_[rand(1,6)].ogg", 150, 1) + playsound(owner, "bonebreak", 150, 1) if(owner.dna.species && !(NO_PAIN in owner.dna.species.species_traits)) owner.emote("scream") From a584fe4b7abb9849a5d78cb32273ce2f8eb0b97b Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 00:52:44 -0400 Subject: [PATCH 093/148] Automatic changelog generation for PR #9388 [ci skip] --- html/changelogs/AutoChangeLog-pr-9388.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9388.yml diff --git a/html/changelogs/AutoChangeLog-pr-9388.yml b/html/changelogs/AutoChangeLog-pr-9388.yml new file mode 100644 index 00000000000..75f09ee55e6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9388.yml @@ -0,0 +1,4 @@ +author: "FreeStylaLT" +delete-after: True +changes: + - rscadd: "Crunchy sounds when bones are broken" From adbf0bb2ccb084062db51472b651840cf5812cd2 Mon Sep 17 00:00:00 2001 From: Ty-Omaha Date: Mon, 15 Oct 2018 00:54:17 -0400 Subject: [PATCH 094/148] stunbaton runtime fix --- code/game/objects/items/weapons/stunbaton.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 56bf5538b02..18053e9c0ca 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -139,12 +139,15 @@ /obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user) + if(!ismob(L)) + return + if(ishuman(L)) var/mob/living/carbon/human/H = L if(H.check_shields(0, "[user]'s [name]", src, MELEE_ATTACK)) //No message; check_shields() handles that playsound(L, 'sound/weapons/Genhit.ogg', 50, 1) return - + L.Stun(stunforce) L.Weaken(stunforce) L.apply_effect(STUTTER, stunforce) From 2862503d2b3a999840327cbc6ff1c3efc7c0b427 Mon Sep 17 00:00:00 2001 From: Ty-Omaha Date: Mon, 15 Oct 2018 01:01:39 -0400 Subject: [PATCH 095/148] stunbaton runtime comment --- code/game/objects/items/weapons/stunbaton.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 18053e9c0ca..b9d383b9308 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -139,7 +139,7 @@ /obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user) - if(!ismob(L)) + if(!ismob(L)) //because this was being called on turfs for some reason return if(ishuman(L)) From aa82f61248e0a471972e2a85cb5ea522fd55678a Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 01:17:31 -0400 Subject: [PATCH 096/148] Automatic changelog generation for PR #9858 [ci skip] --- html/changelogs/AutoChangeLog-pr-9858.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9858.yml diff --git a/html/changelogs/AutoChangeLog-pr-9858.yml b/html/changelogs/AutoChangeLog-pr-9858.yml new file mode 100644 index 00000000000..65d6a9273ba --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9858.yml @@ -0,0 +1,4 @@ +author: "Ty-Omaha" +delete-after: True +changes: + - bugfix: "Fixes stunbaton runtime (Stun() being called on a turf)" From bd4680e0e1b56e1d156b0d35e2a85b71d3c1e1db Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 06:03:53 +0000 Subject: [PATCH 097/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 18 ++++++++++++++++++ html/changelogs/.all_changelog.yml | 10 ++++++++++ html/changelogs/AutoChangeLog-pr-9388.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9851.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9854.yml | 4 ---- html/changelogs/AutoChangeLog-pr-9858.yml | 4 ---- 6 files changed, 28 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9388.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9851.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9854.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-9858.yml diff --git a/html/changelog.html b/html/changelog.html index 57fa1006f2e..a6eba366ceb 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,24 @@ -->
    +

    15 October 2018

    +

    FreeStylaLT updated:

    +
      +
    • Crunchy sounds when bones are broken
    • +
    +

    TDSSS updated:

    +
      +
    • The maximal length of a name that won't be rejected as a 'bad name' has been raised.
    • +
    +

    Ty-Omaha updated:

    +
      +
    • Fixes stunbaton runtime (Stun() being called on a turf)
    • +
    +

    uc_guy updated:

    +
      +
    • You can no longer roll around when dead.
    • +
    +

    14 October 2018

    Purpose updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 3796b26e82e..037dc72732d 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7510,3 +7510,13 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: Stacks are split by CtrlShiftClick instead of AltClick now. - bugfix: A runtime that occurs with paper bundle being created with one or less paper. +2018-10-15: + FreeStylaLT: + - rscadd: Crunchy sounds when bones are broken + TDSSS: + - tweak: The maximal length of a name that won't be rejected as a 'bad name' has + been raised. + Ty-Omaha: + - bugfix: Fixes stunbaton runtime (Stun() being called on a turf) + uc_guy: + - bugfix: You can no longer roll around when dead. diff --git a/html/changelogs/AutoChangeLog-pr-9388.yml b/html/changelogs/AutoChangeLog-pr-9388.yml deleted file mode 100644 index 75f09ee55e6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9388.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "FreeStylaLT" -delete-after: True -changes: - - rscadd: "Crunchy sounds when bones are broken" diff --git a/html/changelogs/AutoChangeLog-pr-9851.yml b/html/changelogs/AutoChangeLog-pr-9851.yml deleted file mode 100644 index 4d81d671f6a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9851.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TDSSS" -delete-after: True -changes: - - tweak: "The maximal length of a name that won't be rejected as a 'bad name' has been raised." diff --git a/html/changelogs/AutoChangeLog-pr-9854.yml b/html/changelogs/AutoChangeLog-pr-9854.yml deleted file mode 100644 index ffa5c66ffda..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9854.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "uc_guy" -delete-after: True -changes: - - bugfix: "You can no longer roll around when dead." diff --git a/html/changelogs/AutoChangeLog-pr-9858.yml b/html/changelogs/AutoChangeLog-pr-9858.yml deleted file mode 100644 index 65d6a9273ba..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9858.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ty-Omaha" -delete-after: True -changes: - - bugfix: "Fixes stunbaton runtime (Stun() being called on a turf)" From 057b276cf21153fd412b0420801b5f282be9ada5 Mon Sep 17 00:00:00 2001 From: Squirgenheimer Date: Mon, 15 Oct 2018 06:09:00 -0400 Subject: [PATCH 098/148] fixes cling stasis users not waking up --- code/game/gamemodes/changeling/powers/revive.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index fa6a1a93405..9993388afec 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -52,7 +52,8 @@ IO.rejuvenate() IO.trace_chemicals.Cut() H.remove_all_embedded_objects() - user.updatehealth() + user.status_flags &= ~(FAKEDEATH) + user.updatehealth("revive sting") user.update_blind_effects() user.update_blurry_effects() @@ -60,7 +61,6 @@ user.regenerate_icons() - user.status_flags &= ~(FAKEDEATH) user.update_revive() //Handle waking up the changeling after the regenerative stasis has completed. user.mind.changeling.purchasedpowers -= src user.med_hud_set_status() From c2367f2bbfe8ccf62be4f1ea8472c409da3289f7 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 07:03:12 -0400 Subject: [PATCH 099/148] Automatic changelog generation for PR #9859 [ci skip] --- html/changelogs/AutoChangeLog-pr-9859.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9859.yml diff --git a/html/changelogs/AutoChangeLog-pr-9859.yml b/html/changelogs/AutoChangeLog-pr-9859.yml new file mode 100644 index 00000000000..4cb86d89e9f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9859.yml @@ -0,0 +1,4 @@ +author: "Squirgenheimer" +delete-after: True +changes: + - bugfix: "Changelings will now wake up after using Regenerative Stasis." From 434028d5a803da6b6f4874dff957e9306ecc8f7c Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 12:56:28 +0000 Subject: [PATCH 100/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 2 ++ html/changelogs/AutoChangeLog-pr-9859.yml | 4 ---- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9859.yml diff --git a/html/changelog.html b/html/changelog.html index a6eba366ceb..3771d38b119 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -61,6 +61,10 @@
      • Crunchy sounds when bones are broken
      +

      Squirgenheimer updated:

      +
        +
      • Changelings will now wake up after using Regenerative Stasis.
      • +

      TDSSS updated:

      • The maximal length of a name that won't be rejected as a 'bad name' has been raised.
      • diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 037dc72732d..6c62d73b278 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7513,6 +7513,8 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2018-10-15: FreeStylaLT: - rscadd: Crunchy sounds when bones are broken + Squirgenheimer: + - bugfix: Changelings will now wake up after using Regenerative Stasis. TDSSS: - tweak: The maximal length of a name that won't be rejected as a 'bad name' has been raised. diff --git a/html/changelogs/AutoChangeLog-pr-9859.yml b/html/changelogs/AutoChangeLog-pr-9859.yml deleted file mode 100644 index 4cb86d89e9f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9859.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Squirgenheimer" -delete-after: True -changes: - - bugfix: "Changelings will now wake up after using Regenerative Stasis." From cb3f3c88a61dca95205f667f73fe263f5c9da405 Mon Sep 17 00:00:00 2001 From: Ty-Omaha Date: Mon, 15 Oct 2018 17:58:20 -0400 Subject: [PATCH 101/148] borer fixes 4 --- code/game/gamemodes/miniantags/borer/borer.dm | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index a87008c590b..6cdfdc736d9 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -91,7 +91,7 @@ ) var/talk_inside_host = FALSE // So that borers don't accidentally give themselves away on a botched message var/used_dominate - var/input_open = FALSE // To prevent people from spam opening the Dominate Victim input + var/attempting_to_dominate = FALSE // To prevent people from spam opening the Dominate Victim input var/chemicals = 10 // Chemicals used for reproduction and chemical injection. var/max_chems = 250 var/mob/living/carbon/human/host // Human host for the brain worm. @@ -326,7 +326,7 @@ to_chat(src, "You cannot infest someone who is already infested!") return - if(stat == DEAD) + if(incapacitated()) return to_chat(src, "You slither up [M] and begin probing at [M.p_their()] ear canal...") @@ -488,7 +488,7 @@ to_chat(src, "You cannot do that in your current state.") return - if(input_open) + if(attempting_to_dominate) to_chat(src, "You're already targeting someone!") return @@ -501,29 +501,29 @@ to_chat(src, "You cannot use that ability again so soon.") return - input_open = TRUE + attempting_to_dominate = TRUE var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices if(!M) - input_open = FALSE + attempting_to_dominate = FALSE return - if(!src) //different statement to avoid a runtime since if the source is deleted then input_open would also be deleted + if(!src) //different statement to avoid a runtime since if the source is deleted then attempting_to_dominate would also be deleted return if(M.has_brain_worms()) to_chat(src, "You cannot dominate someone who is already infested!") - input_open = FALSE + attempting_to_dominate = FALSE return - if(stat == DEAD) - input_open = FALSE + if(incapacitated()) + attempting_to_dominate = FALSE return if(get_dist(src, M) > 7) //to avoid people remotely doing from across the map etc, 7 is the default view range to_chat(src, "You're too far away!") - input_open = FALSE + attempting_to_dominate = FALSE return to_chat(src, "You focus your psychic lance on [M] and freeze [M.p_their()] limbs with a wave of terrible dread.") @@ -531,7 +531,7 @@ M.Weaken(3) used_dominate = world.time - input_open = FALSE + attempting_to_dominate = FALSE /mob/living/simple_animal/borer/verb/release_host() set category = "Borer" From 449921b6f135baabe489e5f4c7193820d97b4b9d Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 19:56:51 -0400 Subject: [PATCH 102/148] Automatic changelog generation for PR #9856 [ci skip] --- html/changelogs/AutoChangeLog-pr-9856.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9856.yml diff --git a/html/changelogs/AutoChangeLog-pr-9856.yml b/html/changelogs/AutoChangeLog-pr-9856.yml new file mode 100644 index 00000000000..387a9bbe53d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9856.yml @@ -0,0 +1,7 @@ +author: "Ty-Omaha" +delete-after: True +changes: + - bugfix: "Borers with their \"Dominate\" window already open can no longer run across the map and successfully cast the spell on those people, they must be within 7 tiles (default view range)" + - bugfix: "Borers can no longer spam open the \"Dominate\" spell" + - bugfix: "Borers with their \"Dominate\" target window already open can no longer successfully target someone if they are dead" + - bugfix: "Borers no longer \"slither up and probe people's ear canal\" if they select the target of an \"infect host\" spell after they die" From 420ce54889f516646dd64e8fb3af662551538a12 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Mon, 15 Oct 2018 23:59:48 +0000 Subject: [PATCH 103/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 4 ++++ html/changelogs/.all_changelog.yml | 8 ++++++++ html/changelogs/AutoChangeLog-pr-9856.yml | 7 ------- 3 files changed, 12 insertions(+), 7 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9856.yml diff --git a/html/changelog.html b/html/changelog.html index 3771d38b119..7b6525f4b48 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -72,6 +72,10 @@

        Ty-Omaha updated:

        • Fixes stunbaton runtime (Stun() being called on a turf)
        • +
        • Borers with their "Dominate" window already open can no longer run across the map and successfully cast the spell on those people, they must be within 7 tiles (default view range)
        • +
        • Borers can no longer spam open the "Dominate" spell
        • +
        • Borers with their "Dominate" target window already open can no longer successfully target someone if they are dead
        • +
        • Borers no longer "slither up and probe people's ear canal" if they select the target of an "infect host" spell after they die

        uc_guy updated:

          diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 6c62d73b278..b0bfc79bd33 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7520,5 +7520,13 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. been raised. Ty-Omaha: - bugfix: Fixes stunbaton runtime (Stun() being called on a turf) + - bugfix: Borers with their "Dominate" window already open can no longer run across + the map and successfully cast the spell on those people, they must be within + 7 tiles (default view range) + - bugfix: Borers can no longer spam open the "Dominate" spell + - bugfix: Borers with their "Dominate" target window already open can no longer + successfully target someone if they are dead + - bugfix: Borers no longer "slither up and probe people's ear canal" if they select + the target of an "infect host" spell after they die uc_guy: - bugfix: You can no longer roll around when dead. diff --git a/html/changelogs/AutoChangeLog-pr-9856.yml b/html/changelogs/AutoChangeLog-pr-9856.yml deleted file mode 100644 index 387a9bbe53d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-9856.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Ty-Omaha" -delete-after: True -changes: - - bugfix: "Borers with their \"Dominate\" window already open can no longer run across the map and successfully cast the spell on those people, they must be within 7 tiles (default view range)" - - bugfix: "Borers can no longer spam open the \"Dominate\" spell" - - bugfix: "Borers with their \"Dominate\" target window already open can no longer successfully target someone if they are dead" - - bugfix: "Borers no longer \"slither up and probe people's ear canal\" if they select the target of an \"infect host\" spell after they die" From e8bffc5c3d72fbe535bc676ca8fed1a9e5677157 Mon Sep 17 00:00:00 2001 From: warior4356 Date: Mon, 15 Oct 2018 19:13:52 -0700 Subject: [PATCH 104/148] Final tweaks --- code/game/objects/structures/safe.dm | 49 +++++++++++++--------------- nano/templates/safe.tmpl | 6 ++-- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 40f459166b9..5c89a5cd96a 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -62,21 +62,18 @@ FLOOR SAFES unlocked = 0 return 0 -/obj/structure/safe/proc/make_noise(tum1_turns, tum2_turns, mob/user, canhear) +/obj/structure/safe/proc/make_noise(turns, turns_total, tum1 = 0, tum2 = 0, mob/user, canhear) if(user && canhear) - var/tum1_tmp = tum1_turns - var/tum2_tmp = tum2_turns - while(tum1_tmp >= 1 || tum2_tmp >= 1) - if(tum1_tmp >= 1) - to_chat(user, "You hear a [pick("clack", "scrape", "clank")] from [src].") - tum1_tmp = tum1_tmp - rand(4, 8) - if(tum2_tmp >= 1) - to_chat(user, "You hear a [pick("click", "chink", "clink")] from [src].") - tum2_tmp = tum2_tmp - rand(4, 8) - if(tumbler_1_pos == tumbler_1_open && tum1_turns == 1) // You cant hear tumblers if you spin fast! - to_chat(user, "You hear a [pick("tonk", "krunk", "plunk")] from [src].") - if(tumbler_2_pos == tumbler_2_open && tum1_turns == 1 && tum2_turns == 1) // You cant hear tumblers if you spin fast! - to_chat(user, "You hear a [pick("tink", "krink", "plink")] from [src].") + if(turns == 2) + to_chat(user, "The sounds from [src] are too fast and blend together.") + if(tum1 && (turns_total == 1 || prob(10))) // So multi turns dont super spam the chat + to_chat(user, "You hear a [pick("clack", "scrape", "clank")] from [src].") + if(tum2 && (turns_total == 1 || prob(10))) // So multi turns dont super spam the chat + to_chat(user, "You hear a [pick("click", "chink", "clink")] from [src].") + if(tumbler_1_pos == tumbler_1_open && turns_total == 1) // You cant hear tumblers if you spin fast! + to_chat(user, "You hear a [pick("tonk", "krunk", "plunk")] from [src].") + if(tumbler_2_pos == tumbler_2_open && turns_total == 1 ) // You cant hear tumblers if you spin fast! + to_chat(user, "You hear a [pick("tink", "krink", "plink")] from [src].") if(unlocked) if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!") @@ -105,7 +102,8 @@ FLOOR SAFES var/list/contents_names = list() if(open) for(var/obj/O in contents) - contents_names[++contents_names.len] = list("name" = O.name, "index" = contents.Find(O)) + contents_names[++contents_names.len] = list("name" = O.name, "index" = contents.Find(O), "sprite" = O.icon_state) + user << browse_rsc(icon(O.icon, O.icon_state), "[O.icon_state].png") else contents_names = list(list("name" = "you're"), list("name" = "a"), list("name" = "cheater")) @@ -144,8 +142,6 @@ FLOOR SAFES if(href_list["decrement"]) var/ticks = text2num(href_list["decrement"]) - var/tum1_turns = 0 - var/tum2_turns = 0 if(open) return for(var/i=1 to ticks) @@ -153,20 +149,18 @@ FLOOR SAFES dial = Wrap(dial - 1, 0 ,100) if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 99) tumbler_1_pos = Wrap(tumbler_1_pos - 1, 0, 100) - tum1_turns++ + make_noise(i, ticks, 1, 0, user, canhear) if(tumbler_1_pos == tumbler_2_pos + 51 || tumbler_1_pos == tumbler_2_pos - 49) tumbler_2_pos = Wrap(tumbler_2_pos - 1, 0, 100) - tum2_turns++ - sleep(world.tick_lag) + make_noise(0, ticks, 0, 1, user, canhear) + sleep(1) check_unlocked() SSnanoui.update_uis(src) - make_noise(tum1_turns, tum2_turns, user, canhear) + make_noise(0, 0, 0, 0, user, canhear) .=1 if(href_list["increment"]) var/ticks = text2num(href_list["increment"]) - var/tum1_turns = 0 - var/tum2_turns = 0 if(open) return for(var/i=1 to ticks) @@ -174,13 +168,13 @@ FLOOR SAFES dial = Wrap(dial + 1, 0, 100) if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 99) tumbler_1_pos = Wrap(tumbler_1_pos + 1, 0, 100) - tum1_turns++ + make_noise(i, ticks, 1, 0, user, canhear) if(tumbler_1_pos == tumbler_2_pos - 51 || tumbler_1_pos == tumbler_2_pos + 49) tumbler_2_pos = Wrap(tumbler_2_pos + 1, 0, 100) - tum2_turns++ - sleep(world.tick_lag) + make_noise(0, ticks, 0, 1, user, canhear) + sleep(1) SSnanoui.update_uis(src) - make_noise(tum1_turns, tum2_turns, user, canhear) + make_noise(0, 0, 0, 0, user, canhear) .=1 if(href_list["retrieve"]) @@ -190,6 +184,7 @@ FLOOR SAFES if(open) if(P && in_range(src, user)) user.put_in_hands(P) + space -= P.w_class .=1 SSnanoui.update_uis(src) diff --git a/nano/templates/safe.tmpl b/nano/templates/safe.tmpl index f878bf8aec1..ccd790b0d97 100644 --- a/nano/templates/safe.tmpl +++ b/nano/templates/safe.tmpl @@ -1,7 +1,7 @@ @@ -14,7 +14,7 @@
          {{for data.contents}}
          - {{:helper.link(value.name, 'arrow-left', {'retrieve': value.index})}} + {{:helper.link(value.name, 'arrow-left', {'retrieve': value.index})}}
          {{/for}}
          @@ -57,6 +57,6 @@
          5. Turn to the right until the dial stops
          6. Open the safe
    -
    To lock fully turn the dial to the left for three rotations
    +
    To lock fully, turn the dial to the left for three rotations
    {{/if}} \ No newline at end of file From 68eb4fb036327a5646f76a56ba74aea6dcc533c8 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Tue, 16 Oct 2018 01:43:13 -0400 Subject: [PATCH 105/148] Corpse Spawner fixes Fixes multiple issues with corpse spawners - Fixes corpse spawners not spawning corpses at roundstart - Fixes corpses spawned not falling over dead and instead remaining standing (but dead) Fixes an issue where ghosts clicking on a corpse spawner would get a dialog box not informing them of what they are able to become by spawning because there was no mob_name set. - This is a weird 2-part fix. -- The first fix was to set mob_name for the spawners that didn't declare it. As a future failsafe, I also changed the default mob_name value and made the human mob spawners attempt to pull the id_job if the mob_name is blank upon initialization (would require someone to remove the new default value). -- The second fix is actually the fix for corpses not being spawned that was mentioned above. These aren't meant to be living mobs getting spawned. By making them properly spawn their corpse at roundstart, there's nothing for ghosts to click to spawn anymore. Fixes #9863 :cl: bugfix: Corpse spawners (such as those on the Wild West away mission) now properly spawn corpses at roundstart that don't remain standing. /:cl: --- code/modules/awaymissions/corpse.dm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index f67d1ac6c0b..448344761ba 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -9,7 +9,7 @@ icon = 'icons/effects/blood.dmi' icon_state = "remains" var/mob_type = null - var/mob_name = "" + var/mob_name = "unidentified entity" var/mob_gender = null var/death = TRUE //Kill the mob var/roundstart = TRUE //fires on initialize @@ -48,7 +48,7 @@ /obj/effect/mob_spawn/Initialize(mapload) . = ..() - if(instant || (roundstart && (ticker && ticker.current_state > GAME_STATE_SETTING_UP))) + if(instant || roundstart) //at some point we should probably re-introduce the (ticker && ticker.current_state > GAME_STATE_SETTING_UP) portion of this check, but for now it was preventing the corpses from spawning at roundstart and resulting in ghost role spawners that made dead bodies. create() else GLOB.poi_list |= src @@ -83,7 +83,7 @@ if(disease) M.ForceContractDisease(new disease) if(death) - M.death(1) //Kills the new mob + M.death() //Kills the new mob M.adjustOxyLoss(oxy_damage) M.adjustBruteLoss(brute_damage) @@ -155,6 +155,8 @@ outfit = new outfit() if(!outfit) outfit = new /datum/outfit + if(!mob_name) + mob_name = id_job return ..() /obj/effect/mob_spawn/human/equip(mob/living/carbon/human/H) @@ -271,6 +273,7 @@ /obj/effect/mob_spawn/human/corpse/assistant name = "Assistant" + mob_name = "Assistant" id_job = "Assistant" outfit = /datum/outfit/job/assistant @@ -285,11 +288,13 @@ /obj/effect/mob_spawn/human/cook name = "Cook" + mob_name = "Chef" id_job = "Chef" outfit = /datum/outfit/job/chef /obj/effect/mob_spawn/human/doctor name = "Doctor" + mob_name = "Medical Doctor" id_job = "Medical Doctor" outfit = /datum/outfit/job/doctor @@ -313,6 +318,7 @@ /obj/effect/mob_spawn/human/engineer name = "Engineer" + mob_name = "Engineer" id_job = "Engineer" outfit = /datum/outfit/job/engineer @@ -393,16 +399,18 @@ /obj/effect/mob_spawn/human/scientist name = "Scientist" + mob_name = "Scientist" id_job = "Scientist" outfit = /datum/outfit/job/scientist /obj/effect/mob_spawn/human/miner name = "Shaft Miner" + mob_name = "Shaft Miner" id_job = "Shaft Miner" outfit = /datum/outfit/job/mining/suit /datum/outfit/job/mining/suit - name = "Station Engineer" + name = "Shaft Miner" suit = /obj/item/clothing/suit/space/hardsuit/mining head = /obj/item/clothing/head/helmet/space/hardsuit/mining uniform = /obj/item/clothing/under/rank/miner @@ -416,6 +424,7 @@ /obj/effect/mob_spawn/human/bartender name = "Space Bartender" + mob_name = "Bartender" id_job = "Bartender" id_access_list = list(access_bar) outfit = /datum/outfit/spacebartender @@ -479,6 +488,7 @@ /obj/effect/mob_spawn/human/bridgeofficer name = "Bridge Officer" + mob_name = "Bridge Officer" id_job = "Bridge Officer" id_access = "Captain" outfit = /datum/outfit/nanotrasenbridgeofficercorpse @@ -495,6 +505,7 @@ /obj/effect/mob_spawn/human/commander name = "Commander" + mob_name = "Commander" id_job = "Commander" id_access = "Captain" outfit = /datum/outfit/nanotrasencommandercorpse From 44a38918bec07f11bb9b8c21d93e6145b5eac67f Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 16 Oct 2018 02:05:17 -0400 Subject: [PATCH 106/148] Automatic changelog generation for PR #9869 [ci skip] --- html/changelogs/AutoChangeLog-pr-9869.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-9869.yml diff --git a/html/changelogs/AutoChangeLog-pr-9869.yml b/html/changelogs/AutoChangeLog-pr-9869.yml new file mode 100644 index 00000000000..01234cb1e54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9869.yml @@ -0,0 +1,4 @@ +author: "FalseIncarnate" +delete-after: True +changes: + - bugfix: "Corpse spawners (such as those on the Wild West away mission) now properly spawn corpses at roundstart that don't remain standing." From 5a53a2344ceccb5f547d98b767a55ec493734e92 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 16 Oct 2018 06:58:12 +0000 Subject: [PATCH 107/148] Automatic changelog compile, [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/AutoChangeLog-pr-9869.yml | 4 ---- 3 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-9869.yml diff --git a/html/changelog.html b/html/changelog.html index 7b6525f4b48..363cb8d3c09 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
    +

    16 October 2018

    +

    FalseIncarnate updated:

    +
      +
    • Corpse spawners (such as those on the Wild West away mission) now properly spawn corpses at roundstart that don't remain standing.
    • +
    +

    15 October 2018

    FreeStylaLT updated: