mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Merge pull request #3769 from PrismaticGynoid/forgottenlanguages
Brain transplants, synthetics, and languages
This commit is contained in:
@@ -176,6 +176,8 @@
|
|||||||
var/mob/living/silicon/ai/A = new /mob/living/silicon/ai ( loc, laws, brain )
|
var/mob/living/silicon/ai/A = new /mob/living/silicon/ai ( loc, laws, brain )
|
||||||
if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created
|
if(A) //if there's no brain, the mob is deleted and a structure/AIcore is created
|
||||||
A.rename_self("ai", 1)
|
A.rename_self("ai", 1)
|
||||||
|
for(var/datum/language/L in brain.brainmob.languages)
|
||||||
|
A.add_language(L.name)
|
||||||
feedback_inc("cyborg_ais_created",1)
|
feedback_inc("cyborg_ais_created",1)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
|||||||
@@ -208,6 +208,9 @@
|
|||||||
|
|
||||||
O.job = "Cyborg"
|
O.job = "Cyborg"
|
||||||
|
|
||||||
|
for(var/datum/language/L in M.brainmob.languages)
|
||||||
|
O.add_language(L.name)
|
||||||
|
|
||||||
O.cell = chest.cell
|
O.cell = chest.cell
|
||||||
O.cell.loc = O
|
O.cell.loc = O
|
||||||
W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
|
W.loc = O//Should fix cybros run time erroring when blown up. It got deleted before, along with the frame.
|
||||||
|
|||||||
@@ -120,4 +120,8 @@
|
|||||||
signlang_verb = list("gestures")
|
signlang_verb = list("gestures")
|
||||||
colour = "say_quote"
|
colour = "say_quote"
|
||||||
key = "s"
|
key = "s"
|
||||||
flags = SIGNLANG|NO_STUTTER|NONVERBAL
|
flags = SIGNLANG|NO_STUTTER|NONVERBAL
|
||||||
|
|
||||||
|
/datum/language/sign/can_speak_special(var/mob/speaker)
|
||||||
|
var/obj/item/organ/external/hand/hands = locate() in speaker //you can't sign without hands
|
||||||
|
return (hands || !iscarbon(speaker))
|
||||||
|
|||||||
@@ -177,6 +177,7 @@
|
|||||||
/obj/item/device/mmi/digital/New()
|
/obj/item/device/mmi/digital/New()
|
||||||
src.brainmob = new(src)
|
src.brainmob = new(src)
|
||||||
src.brainmob.add_language("Robot Talk")
|
src.brainmob.add_language("Robot Talk")
|
||||||
|
src.brainmob.add_language(LANGUAGE_GALCOM)
|
||||||
src.brainmob.add_language(LANGUAGE_EAL)
|
src.brainmob.add_language(LANGUAGE_EAL)
|
||||||
src.brainmob.loc = src
|
src.brainmob.loc = src
|
||||||
src.brainmob.container = src
|
src.brainmob.container = src
|
||||||
|
|||||||
@@ -58,7 +58,7 @@
|
|||||||
return canmove
|
return canmove
|
||||||
|
|
||||||
/mob/living/carbon/brain/isSynthetic()
|
/mob/living/carbon/brain/isSynthetic()
|
||||||
return istype(loc, /obj/item/device/mmi/digital)
|
return istype(loc, /obj/item/device/mmi)
|
||||||
|
|
||||||
/mob/living/carbon/brain/binarycheck()
|
/mob/living/carbon/brain/binarycheck()
|
||||||
return isSynthetic()
|
return isSynthetic()
|
||||||
|
|||||||
@@ -102,6 +102,7 @@
|
|||||||
spark_system.attach(src)
|
spark_system.attach(src)
|
||||||
|
|
||||||
add_language("Robot Talk", 1)
|
add_language("Robot Talk", 1)
|
||||||
|
add_language(LANGUAGE_GALCOM, 1)
|
||||||
add_language(LANGUAGE_EAL, 1)
|
add_language(LANGUAGE_EAL, 1)
|
||||||
|
|
||||||
wires = new(src)
|
wires = new(src)
|
||||||
@@ -219,6 +220,12 @@
|
|||||||
var/turf/T = get_turf(loc)//To hopefully prevent run time errors.
|
var/turf/T = get_turf(loc)//To hopefully prevent run time errors.
|
||||||
if(T) mmi.loc = T
|
if(T) mmi.loc = T
|
||||||
if(mmi.brainmob)
|
if(mmi.brainmob)
|
||||||
|
var/obj/item/weapon/robot_module/M = locate() in contents
|
||||||
|
if(M)
|
||||||
|
mmi.brainmob.languages = M.original_languages
|
||||||
|
else
|
||||||
|
mmi.brainmob.languages = languages
|
||||||
|
mmi.brainmob.remove_language("Robot Talk")
|
||||||
mind.transfer_to(mmi.brainmob)
|
mind.transfer_to(mmi.brainmob)
|
||||||
else
|
else
|
||||||
src << "<span class='danger'>Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.</span>"
|
src << "<span class='danger'>Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.</span>"
|
||||||
|
|||||||
@@ -232,7 +232,7 @@
|
|||||||
default_str = " - <a href='byond://?src=\ref[src];default_lang=\ref[L]'>set default</a>"
|
default_str = " - <a href='byond://?src=\ref[src];default_lang=\ref[L]'>set default</a>"
|
||||||
|
|
||||||
var/synth = (L in speech_synthesizer_langs)
|
var/synth = (L in speech_synthesizer_langs)
|
||||||
dat += "<b>[L.name] (:[L.key])</b>[synth ? default_str : null]<br/>Speech Synthesizer: <i>[synth ? "YES" : "NOT SUPPORTED"]</i><br/>[L.desc]<br/><br/>"
|
dat += "<b>[L.name] ([get_language_prefix()][L.key])</b>[synth ? default_str : null]<br/>Speech Synthesizer: <i>[synth ? "YES" : "NOT SUPPORTED"]</i><br/>[L.desc]<br/><br/>"
|
||||||
|
|
||||||
src << browse(dat, "window=checklanguage")
|
src << browse(dat, "window=checklanguage")
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -150,6 +150,7 @@
|
|||||||
src.mind.key = M.brainmob.key
|
src.mind.key = M.brainmob.key
|
||||||
src.ckey = M.brainmob.ckey
|
src.ckey = M.brainmob.ckey
|
||||||
src.name = "spider-bot ([M.brainmob.name])"
|
src.name = "spider-bot ([M.brainmob.name])"
|
||||||
|
src.languages = M.brainmob.languages
|
||||||
|
|
||||||
/mob/living/simple_animal/spiderbot/proc/explode() //When emagged.
|
/mob/living/simple_animal/spiderbot/proc/explode() //When emagged.
|
||||||
src.visible_message("<span class='danger'>\The [src] makes an odd warbling noise, fizzles, and explodes!</span>")
|
src.visible_message("<span class='danger'>\The [src] makes an odd warbling noise, fizzles, and explodes!</span>")
|
||||||
|
|||||||
@@ -77,6 +77,11 @@
|
|||||||
else
|
else
|
||||||
O.key = key
|
O.key = key
|
||||||
|
|
||||||
|
if(O.client && O.client.prefs)
|
||||||
|
var/datum/preferences/B = O.client.prefs
|
||||||
|
for(var/language in B.alternate_languages)
|
||||||
|
O.add_language(language)
|
||||||
|
|
||||||
if(move)
|
if(move)
|
||||||
var/obj/loc_landmark
|
var/obj/loc_landmark
|
||||||
for(var/obj/effect/landmark/start/sloc in landmarks_list)
|
for(var/obj/effect/landmark/start/sloc in landmarks_list)
|
||||||
@@ -154,6 +159,11 @@
|
|||||||
|
|
||||||
O.mmi.transfer_identity(src)
|
O.mmi.transfer_identity(src)
|
||||||
|
|
||||||
|
if(O.client && O.client.prefs)
|
||||||
|
var/datum/preferences/B = O.client.prefs
|
||||||
|
for(var/language in B.alternate_languages)
|
||||||
|
O.add_language(language)
|
||||||
|
|
||||||
callHook("borgify", list(O))
|
callHook("borgify", list(O))
|
||||||
O.Namepick()
|
O.Namepick()
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,8 @@
|
|||||||
if(H.mind)
|
if(H.mind)
|
||||||
H.mind.transfer_to(brainmob)
|
H.mind.transfer_to(brainmob)
|
||||||
|
|
||||||
|
brainmob.languages = H.languages
|
||||||
|
|
||||||
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just \a [initial(src.name)].</span>"
|
brainmob << "<span class='notice'>You feel slightly disoriented. That's normal when you're just \a [initial(src.name)].</span>"
|
||||||
callHook("debrain", list(brainmob))
|
callHook("debrain", list(brainmob))
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,8 @@
|
|||||||
stored_mmi.icon_state = "mmi_full"
|
stored_mmi.icon_state = "mmi_full"
|
||||||
icon_state = stored_mmi.icon_state
|
icon_state = stored_mmi.icon_state
|
||||||
|
|
||||||
|
stored_mmi.brainmob.languages = owner.languages
|
||||||
|
|
||||||
if(owner && owner.stat == DEAD)
|
if(owner && owner.stat == DEAD)
|
||||||
owner.stat = 0
|
owner.stat = 0
|
||||||
dead_mob_list -= owner
|
dead_mob_list -= owner
|
||||||
@@ -91,6 +93,8 @@
|
|||||||
stored_mmi.icon_state = "posibrain-occupied"
|
stored_mmi.icon_state = "posibrain-occupied"
|
||||||
icon_state = stored_mmi.icon_state
|
icon_state = stored_mmi.icon_state
|
||||||
|
|
||||||
|
stored_mmi.brainmob.languages = owner.languages
|
||||||
|
|
||||||
/obj/item/organ/internal/mmi_holder/robot
|
/obj/item/organ/internal/mmi_holder/robot
|
||||||
name = "digital brain interface"
|
name = "digital brain interface"
|
||||||
brain_type = /obj/item/device/mmi/digital/robot
|
brain_type = /obj/item/device/mmi/digital/robot
|
||||||
@@ -99,4 +103,6 @@
|
|||||||
/obj/item/organ/internal/mmi_holder/robot/update_from_mmi()
|
/obj/item/organ/internal/mmi_holder/robot/update_from_mmi()
|
||||||
..()
|
..()
|
||||||
stored_mmi.icon_state = "mainboard"
|
stored_mmi.icon_state = "mainboard"
|
||||||
icon_state = stored_mmi.icon_state
|
icon_state = stored_mmi.icon_state
|
||||||
|
|
||||||
|
stored_mmi.brainmob.languages = owner.languages
|
||||||
|
|||||||
@@ -421,6 +421,7 @@
|
|||||||
|
|
||||||
if(M.brainmob && M.brainmob.mind)
|
if(M.brainmob && M.brainmob.mind)
|
||||||
M.brainmob.mind.transfer_to(target)
|
M.brainmob.mind.transfer_to(target)
|
||||||
|
target.languages = M.brainmob.languages
|
||||||
|
|
||||||
spawn(0) //Name yourself on your own damn time
|
spawn(0) //Name yourself on your own damn time
|
||||||
var/new_name = ""
|
var/new_name = ""
|
||||||
|
|||||||
7
html/changelogs/PrismaticGynoid-forgottenlanguages.yml
Normal file
7
html/changelogs/PrismaticGynoid-forgottenlanguages.yml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
author: PrismaticGynoid
|
||||||
|
delete-after: True
|
||||||
|
changes:
|
||||||
|
- tweak: "You now keep your languages when removed from/transplanted into a body."
|
||||||
|
- tweak: "AIs and borgs load languages from preferences when spawning."
|
||||||
|
- bugfix: "Fixed sign language being usable while lacking both hands."
|
||||||
|
|
||||||
Reference in New Issue
Block a user