From f9ba03152554cf15694a1a4ec23e06ed909650a9 Mon Sep 17 00:00:00 2001 From: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com> Date: Sat, 28 Mar 2020 20:00:16 -0700 Subject: [PATCH] Delete split_personality.dm --- code/datums/brain_damage/split_personality.dm | 224 ------------------ 1 file changed, 224 deletions(-) delete mode 100644 code/datums/brain_damage/split_personality.dm diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm deleted file mode 100644 index a1284319f1..0000000000 --- a/code/datums/brain_damage/split_personality.dm +++ /dev/null @@ -1,224 +0,0 @@ -#define OWNER 0 -#define STRANGER 1 - -/datum/brain_trauma/severe/split_personality - name = "Split Personality" - desc = "Patient's brain is split into two personalities, which randomly switch control of the body." - scan_desc = "complete lobe separation" - gain_text = "You feel like your mind was split in two." - lose_text = "You feel alone again." - var/current_controller = OWNER - var/initialized = FALSE //to prevent personalities deleting themselves while we wait for ghosts - var/mob/living/split_personality/stranger_backseat //there's two so they can swap without overwriting - var/mob/living/split_personality/owner_backseat - -/datum/brain_trauma/severe/split_personality/on_gain() - var/mob/living/M = owner - if(M.stat == DEAD) //No use assigning people to a corpse - qdel(src) - return - ..() - make_backseats() - get_ghost() - -/datum/brain_trauma/severe/split_personality/proc/make_backseats() - stranger_backseat = new(owner, src) - owner_backseat = new(owner, src) - -/datum/brain_trauma/severe/split_personality/proc/get_ghost() - set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s split personality?", ROLE_PAI, null, null, 75, stranger_backseat, POLL_IGNORE_SPLITPERSONALITY) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - C.transfer_ckey(stranger_backseat, FALSE) - log_game("[key_name(stranger_backseat)] became [key_name(owner)]'s split personality.") - message_admins("[ADMIN_LOOKUPFLW(stranger_backseat)] became [ADMIN_LOOKUPFLW(owner)]'s split personality.") - else - qdel(src) - -/datum/brain_trauma/severe/split_personality/on_life() - if(owner.stat == DEAD) - if(current_controller != OWNER) - switch_personalities() - qdel(src) - else if(prob(3)) - switch_personalities() - ..() - -/datum/brain_trauma/severe/split_personality/on_lose() - if(current_controller != OWNER) //it would be funny to cure a guy only to be left with the other personality, but it seems too cruel - switch_personalities() - QDEL_NULL(stranger_backseat) - QDEL_NULL(owner_backseat) - ..() - -/datum/brain_trauma/severe/split_personality/proc/switch_personalities() - if(QDELETED(owner) || owner.stat == DEAD || QDELETED(stranger_backseat) || QDELETED(owner_backseat)) - return - - var/mob/living/split_personality/current_backseat - var/mob/living/split_personality/free_backseat - if(current_controller == OWNER) - current_backseat = stranger_backseat - free_backseat = owner_backseat - else - current_backseat = owner_backseat - free_backseat = stranger_backseat - - log_game("[key_name(current_backseat)] assumed control of [key_name(owner)] due to [src]. (Original owner: [current_controller == OWNER ? owner.key : current_backseat.key])") - to_chat(owner, "You feel your control being taken away... your other personality is in charge now!") - to_chat(current_backseat, "You manage to take control of your body!") - - //Body to backseat - - var/h2b_id = owner.computer_id - var/h2b_ip= owner.lastKnownIP - owner.computer_id = null - owner.lastKnownIP = null - - free_backseat.ckey = owner.ckey - - free_backseat.name = owner.name - - if(owner.mind) - free_backseat.mind = owner.mind - - if(!free_backseat.computer_id) - free_backseat.computer_id = h2b_id - - if(!free_backseat.lastKnownIP) - free_backseat.lastKnownIP = h2b_ip - - //Backseat to body - - var/s2h_id = current_backseat.computer_id - var/s2h_ip= current_backseat.lastKnownIP - current_backseat.computer_id = null - current_backseat.lastKnownIP = null - - owner.ckey = current_backseat.ckey - owner.mind = current_backseat.mind - - if(!owner.computer_id) - owner.computer_id = s2h_id - - if(!owner.lastKnownIP) - owner.lastKnownIP = s2h_ip - - current_controller = !current_controller - - -/mob/living/split_personality - name = "split personality" - real_name = "unknown conscience" - var/mob/living/carbon/body - var/datum/brain_trauma/severe/split_personality/trauma - -/mob/living/split_personality/Initialize(mapload, _trauma) - if(iscarbon(loc)) - body = loc - name = body.real_name - real_name = body.real_name - trauma = _trauma - return ..() - -/mob/living/split_personality/Life() - if(QDELETED(body)) - qdel(src) //in case trauma deletion doesn't already do it - - if((body.stat == DEAD && trauma.owner_backseat == src)) - trauma.switch_personalities() - qdel(trauma) - - //if one of the two ghosts, the other one stays permanently - if(!body.client && trauma.initialized) - trauma.switch_personalities() - qdel(trauma) - - ..() - -/mob/living/split_personality/Login() - ..() - to_chat(src, "As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.") - to_chat(src, "Do not commit suicide or put the body in a deadly position. Behave like you care about it as much as the owner.") - -/mob/living/split_personality/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) - to_chat(src, "You cannot speak, your other self is controlling your body!") - return FALSE - -/mob/living/split_personality/emote(act, m_type = null, message = null, intentional = FALSE) - return - -///////////////BRAINWASHING//////////////////// - -/datum/brain_trauma/severe/split_personality/brainwashing - name = "Split Personality" - desc = "Patient's brain is split into two personalities, which randomly switch control of the body." - scan_desc = "complete lobe separation" - gain_text = "" - lose_text = "You are free of your brainwashing." - can_gain = FALSE - var/codeword - var/objective - -/datum/brain_trauma/severe/split_personality/brainwashing/New(obj/item/organ/brain/B, _permanent, _codeword, _objective) - ..() - if(_codeword) - codeword = _codeword - else - codeword = pick(strings("ion_laws.json", "ionabstract")\ - | strings("ion_laws.json", "ionobjects")\ - | strings("ion_laws.json", "ionadjectives")\ - | strings("ion_laws.json", "ionthreats")\ - | strings("ion_laws.json", "ionfood")\ - | strings("ion_laws.json", "iondrinks")) - -/datum/brain_trauma/severe/split_personality/brainwashing/on_gain() - ..() - var/mob/living/split_personality/traitor/traitor_backseat = stranger_backseat - traitor_backseat.codeword = codeword - traitor_backseat.objective = objective - -/datum/brain_trauma/severe/split_personality/brainwashing/make_backseats() - stranger_backseat = new /mob/living/split_personality/traitor(owner, src, codeword, objective) - owner_backseat = new(owner, src) - -/datum/brain_trauma/severe/split_personality/brainwashing/get_ghost() - set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [owner]'s brainwashed mind?", null, null, null, 75, stranger_backseat) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - C.transfer_ckey(stranger_backseat, FALSE) - else - qdel(src) - -/datum/brain_trauma/severe/split_personality/brainwashing/on_life() - return //no random switching - -/datum/brain_trauma/severe/split_personality/brainwashing/handle_hearing(datum/source, list/hearing_args) - if(HAS_TRAIT(owner, TRAIT_DEAF) || owner == hearing_args[HEARING_SPEAKER]) - return - var/message = hearing_args[HEARING_RAW_MESSAGE] - if(findtext(message, codeword)) - hearing_args[HEARING_RAW_MESSAGE] = replacetext(message, codeword, "[codeword]") - addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10) - -/datum/brain_trauma/severe/split_personality/brainwashing/handle_speech(datum/source, list/speech_args) - if(findtext(speech_args[SPEECH_MESSAGE], codeword)) - speech_args[SPEECH_MESSAGE] = "" //oh hey did you want to tell people about the secret word to bring you back? - -/mob/living/split_personality/traitor - name = "split personality" - real_name = "unknown conscience" - var/objective - var/codeword - -/mob/living/split_personality/traitor/Login() - ..() - to_chat(src, "As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality.") - to_chat(src, "Your activation codeword is: [codeword]") - if(objective) - to_chat(src, "Your master left you an objective: [objective]. Follow it at all costs when in control.") - -#undef OWNER -#undef STRANGER