diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 8f8d350c927..f58a5def187 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -17,7 +17,7 @@ var/tk_throw_range = 10 var/mob/pulledby = null /// What language holder type to init as - var/initial_language_holder = /datum/language_holder + var/initial_language_holder = /datum/language_holder/atom_basic /// Holds all languages this mob can speak and understand VAR_PRIVATE/datum/language_holder/language_holder /// The list of factions this atom belongs to diff --git a/code/modules/antagonists/heretic/magic/void_prison.dm b/code/modules/antagonists/heretic/magic/void_prison.dm index 22a4d17eb88..211a747c800 100644 --- a/code/modules/antagonists/heretic/magic/void_prison.dm +++ b/code/modules/antagonists/heretic/magic/void_prison.dm @@ -56,8 +56,7 @@ owner.apply_status_effect(/datum/status_effect/void_chill, 3) if(stasis_overlay) //Free our prisoner - owner.status_flags &= ~GODMODE - owner.remove_traits(list(TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), REF(src)) + owner.remove_traits(list(TRAIT_GODMODE, TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), REF(src)) owner.forceMove(get_turf(stasis_overlay)) stasis_overlay.forceMove(owner) owner.vis_contents += stasis_overlay @@ -72,8 +71,7 @@ /datum/status_effect/void_prison/proc/enter_prison(mob/living/prisoner) stasis_overlay.forceMove(prisoner.loc) prisoner.forceMove(stasis_overlay) - prisoner.add_traits(list(TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), REF(src)) - prisoner.status_flags |= GODMODE + prisoner.add_traits(list(TRAIT_GODMODE, TRAIT_NO_TRANSFORM, TRAIT_SOFTSPOKEN), REF(src)) ///Makes sure to clear the ref in case the voidball ever suddenly disappears /datum/status_effect/void_prison/proc/clear_overlay() diff --git a/code/modules/language/_language_holder.dm b/code/modules/language/_language_holder.dm index b6dea2d4e0e..a368186a513 100644 --- a/code/modules/language/_language_holder.dm +++ b/code/modules/language/_language_holder.dm @@ -37,10 +37,10 @@ Key procs /datum/language_holder /// Lazyassoclist of all understood languages - var/list/understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + var/list/understood_languages /// Lazyassoclist of languages that can be spoken. /// Tongue organ may also set limits beyond this list. - var/list/spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + var/list/spoken_languages /// Lazyassoclist of blocked languages. /// Used to prevent understanding and speaking certain languages, ie for certain mobs, mutations etc. var/list/blocked_languages @@ -503,14 +503,21 @@ GLOBAL_LIST_INIT(prototype_language_holders, init_language_holder_prototypes()) /datum/language/nekomimetic = list(LANGUAGE_ATOM), ) +// Given to atoms by default +/datum/language_holder/atom_basic + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) + +// Explicitly empty one for readability /datum/language_holder/empty understood_languages = null spoken_languages = null +// Has all the languages known (via "mind") /datum/language_holder/universal understood_languages = null spoken_languages = null /datum/language_holder/universal/New() . = ..() - grant_all_languages() + grant_all_languages(source = LANGUAGE_MIND)