From aeab6e362d17cbc3c66bb5687b17b9ac4a0673df Mon Sep 17 00:00:00 2001 From: Atermonera Date: Mon, 25 Sep 2017 11:38:12 -0700 Subject: [PATCH 1/4] AI can speak station languages, excluding rootspeak --- code/modules/mob/living/silicon/ai/ai.dm | 14 +++++++------- code/modules/mob/transform_procs.dm | 13 +++++++++++++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 8583521f854..53ad3896cb3 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -149,15 +149,15 @@ var/list/ai_verbs_hidden = list( // For why this exists, refer to https://xkcd.c //Languages add_language("Robot Talk", 1) add_language(LANGUAGE_GALCOM, 1) - add_language(LANGUAGE_SOL_COMMON, 0) - add_language(LANGUAGE_UNATHI, 0) - add_language(LANGUAGE_SIIK, 0) - add_language(LANGUAGE_SKRELLIAN, 0) + add_language(LANGUAGE_SOL_COMMON, 1) + add_language(LANGUAGE_UNATHI, 1) + add_language(LANGUAGE_SIIK, 1) + add_language(LANGUAGE_SKRELLIAN, 1) add_language(LANGUAGE_TRADEBAND, 1) - add_language(LANGUAGE_GUTTER, 0) + add_language(LANGUAGE_GUTTER, 1) add_language(LANGUAGE_EAL, 1) - add_language(LANGUAGE_SCHECHI, 0) - add_language(LANGUAGE_SIGN, 0) + add_language(LANGUAGE_SCHECHI, 1) + add_language(LANGUAGE_SIGN, 1) if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index ccf46782163..2cae8f15079 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -77,6 +77,19 @@ else O.key = key + //Languages + add_language("Robot Talk", 1) + add_language(LANGUAGE_GALCOM, 1) + add_language(LANGUAGE_SOL_COMMON, 1) + add_language(LANGUAGE_UNATHI, 1) + add_language(LANGUAGE_SIIK, 1) + add_language(LANGUAGE_SKRELLIAN, 1) + add_language(LANGUAGE_TRADEBAND, 1) + add_language(LANGUAGE_GUTTER, 1) + add_language(LANGUAGE_EAL, 1) + add_language(LANGUAGE_SCHECHI, 1) + add_language(LANGUAGE_SIGN, 1) + if(move) var/obj/loc_landmark for(var/obj/effect/landmark/start/sloc in landmarks_list) From a4fd97ca14cdf5bfd705a5026c6b4f2021bea5ac Mon Sep 17 00:00:00 2001 From: Atermonera Date: Mon, 25 Sep 2017 13:48:34 -0700 Subject: [PATCH 2/4] Rootlocal and -global can also be used by AI --- code/modules/mob/transform_procs.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 40ca2be7006..a068a5616a5 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -90,6 +90,14 @@ add_language(LANGUAGE_SCHECHI, 1) add_language(LANGUAGE_SIGN, 1) + // Lorefolks say it may be so. + if(O.client && O.client.prefs) + var/datum/preferences/B = O.client.prefs + if(LANGUAGE_ROOTGLOBAL in B.alternate_languages) + O.add_language(LANGUAGE_ROOTGLOBAL, 1) + if(LANGUAGE_ROOTLOCAL in B.alternate_languages) + O.add_language(LANGUAGE_ROOTLOCAL, 1) + if(move) var/obj/loc_landmark for(var/obj/effect/landmark/start/sloc in landmarks_list) From 650d2a73211d740b7748ca0be3cdcadaf647ee35 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Mon, 25 Sep 2017 13:49:10 -0700 Subject: [PATCH 3/4] indents --- code/modules/mob/transform_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index a068a5616a5..9d30ef72447 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -92,7 +92,7 @@ // Lorefolks say it may be so. if(O.client && O.client.prefs) - var/datum/preferences/B = O.client.prefs + var/datum/preferences/B = O.client.prefs if(LANGUAGE_ROOTGLOBAL in B.alternate_languages) O.add_language(LANGUAGE_ROOTGLOBAL, 1) if(LANGUAGE_ROOTLOCAL in B.alternate_languages) From 9f806e2f675fcaa8cccbdc28ed67a28c8d40243c Mon Sep 17 00:00:00 2001 From: Woodratt Date: Mon, 25 Sep 2017 17:01:55 -0700 Subject: [PATCH 4/4] Syndicate ID changes - Added a Syndicate ID with all access (admin spawn only). - Port of 'Syndicate id cards now listen for owner destruction' from Bay. Link https://github.com/Baystation12/Baystation12/pull/11563 --- .../items/weapons/cards_ids_syndicate.dm | 41 +++++++++++-------- html/changelogs/Woodrat-SyndIDs.yml | 37 +++++++++++++++++ 2 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 html/changelogs/Woodrat-SyndIDs.yml diff --git a/code/game/objects/items/weapons/cards_ids_syndicate.dm b/code/game/objects/items/weapons/cards_ids_syndicate.dm index 300926d08e7..b5c874868e7 100644 --- a/code/game/objects/items/weapons/cards_ids_syndicate.dm +++ b/code/game/objects/items/weapons/cards_ids_syndicate.dm @@ -1,28 +1,21 @@ -var/list/syndicate_ids = list() - /obj/item/weapon/card/id/syndicate name = "agent card" icon_state = "syndicate" assignment = "Agent" origin_tech = list(TECH_ILLEGAL = 3) var/electronic_warfare = 1 - var/registered_user = null + var/mob/registered_user = null /obj/item/weapon/card/id/syndicate/New(mob/user as mob) ..() - syndicate_ids += src access = syndicate_access.Copy() -/obj/item/weapon/card/id/syndicate/Destroy() - syndicate_ids -= src - registered_user = null - return ..() +/obj/item/weapon/card/id/syndicate/station_access/New() + ..() // Same as the normal Syndicate id, only already has all station access + access |= get_all_station_access() -// On mob destruction, ensure any references are cleared -/mob/Destroy() - for(var/obj/item/weapon/card/id/syndicate/SID in syndicate_ids) - if(SID.registered_user == src) - SID.registered_user = null +/obj/item/weapon/card/id/syndicate/Destroy() + unset_registered_user(registered_user) return ..() /obj/item/weapon/card/id/syndicate/prevent_tracking() @@ -37,9 +30,8 @@ var/list/syndicate_ids = list() user << "The microscanner activates as you pass it over the ID, copying its access." /obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob) - if(!registered_user) - registered_user = user - user.set_id_info(src) + // We use the fact that registered_name is not unset should the owner be vaporized, to ensure the id doesn't magically become unlocked. + if(!registered_user && register_user(user)) user << "The microscanner marks you as its owner, preventing others from accessing its internals." if(registered_user == user) switch(alert("Would you like edit the ID, or show it?","Show or Edit?", "Edit","Show")) @@ -72,6 +64,21 @@ var/list/syndicate_ids = list() ui.set_initial_data(data) ui.open() +/obj/item/weapon/card/id/syndicate/proc/register_user(var/mob/user) + if(!istype(user) || user == registered_user) + return FALSE + unset_registered_user() + registered_user = user + user.set_id_info(src) + user.register(OBSERVER_EVENT_DESTROY, src, /obj/item/weapon/card/id/syndicate/proc/unset_registered_user) + return TRUE + +/obj/item/weapon/card/id/syndicate/proc/unset_registered_user(var/mob/user) + if(!registered_user || (user && user != registered_user)) + return + registered_user.unregister(OBSERVER_EVENT_DESTROY, src) + registered_user = null + /obj/item/weapon/card/id/syndicate/CanUseTopic(mob/user) if(user != registered_user) return STATUS_CLOSE @@ -172,7 +179,7 @@ var/list/syndicate_ids = list() icon_state = initial(icon_state) name = initial(name) registered_name = initial(registered_name) - registered_user = null + unset_registered_user() sex = initial(sex) user << "All information has been deleted from \the [src]." . = 1 diff --git a/html/changelogs/Woodrat-SyndIDs.yml b/html/changelogs/Woodrat-SyndIDs.yml new file mode 100644 index 00000000000..fba90ab1fd7 --- /dev/null +++ b/html/changelogs/Woodrat-SyndIDs.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Woodrat + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added a Syndicate ID with all access (admin spawn only)." + - tweak: "Port of 'Syndicate id cards now listen for owner destruction' from Bay."