diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 030dbdfdeaa..b8293b49925 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -433,8 +433,6 @@ Turf and target are seperate in case you want to teleport some distance from a t moblist.Add(M) for(var/mob/living/simple_animal/M in sortmob) moblist.Add(M) - for(var/mob/living/voices/M in sortmob) - moblist.Add(M) // for(var/mob/living/silicon/hivebot/M in world) // mob_list.Add(M) // for(var/mob/living/silicon/hive_mainframe/M in world) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 308714a6b1e..bce844da53c 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -59,9 +59,6 @@ datum/mind error("transfer_to(): Some idiot has tried to transfer_to() a non mob/living mob. Please inform Carn") if(current) //remove ourself from our old body's mind variable - for(var/mob/living/voices/V in current.contents) - V.transfer(new_character) - if(changeling) current.remove_changeling_powers() current.verbs -= /datum/changeling/proc/EvolutionMenu diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index c13211870dc..b533cb9df4f 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -231,7 +231,6 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/purchasedpowers = list() var/mimicing = "" var/canrespec = 0 - var/acceptvoices = 0 /datum/changeling/New(var/gender=FEMALE) ..() diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 637f0791a15..57b5a00202d 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -127,11 +127,6 @@ changeling.isabsorbing = 0 changeling.canrespec = 1 - if (T.mind && (changeling.acceptvoices == 1)) - var/mob/living/voices/P = T.becomevoice(src, "memory") - src << "The [P.real_name] is now with us." - P << "You are now a part of the changeling's mind. Type 'Ghost' to escape this existence." - T.death(0) T.Drain() return 1 @@ -675,39 +670,4 @@ var/list/datum/dna/hivemind_bank = list() T.reagents.add_reagent("ice", 30) feedback_add_details("changeling_powers","CS") - return 1 - -//Voices/living memory related verbs - -/mob/proc/changeling_toggle_memoryabsorb() - set category = "Changeling" - set name = "Toggle Memory Absorption" - set desc="Turns absorbing living memories along with DNA on or off." - - var/datum/changeling/changeling = changeling_power() - changeling.acceptvoices = !(changeling.acceptvoices) - if (changeling.acceptvoices==1) - src << "We will now absorb the memories of our victims." - else - src << "We will no longer absorb the memories of our victims." - return 1 - -/mob/proc/changeling_kickvoice() - set category = "Changeling" - set name = "Purge Memory" - set desc="Remove an unwanted voice from your mind." - - var/list/voices = list() - var/list/voices_ref = list() - for(var/mob/living/voices/V in src.contents) - voices += "[V.real_name]" - voices_ref += V - - var/mob/living/voices/S = input("Select the voice you want to remove: ", "Target voice", null) as null|anything in voices - if(!S) return - var/index = voices.Find(S) - var/mob/living/voices/Svoice = voices_ref[index] - Svoice << "Your memories fade from [src]'s mind!" - del(Svoice) - src << "[S] will no longer bother us." return 1 \ No newline at end of file diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm index 2718c1e57a2..68450590a44 100644 --- a/code/game/gamemodes/changeling/modularchangling.dm +++ b/code/game/gamemodes/changeling/modularchangling.dm @@ -7,7 +7,7 @@ var/list/powerinstances var/desc = "Placeholder" var/helptext = "" var/isVerb = 1 // Is it an active power, or passive? - var/list/verbpath = list() // Pathes to verbs that contain the effects. + var/verbpath // Path to a verb that contains the effects. /datum/power/changeling var/allowduringlesserform = 0 @@ -17,7 +17,7 @@ var/list/powerinstances name = "Absorb DNA" desc = "Permits us to siphon the DNA from a human. They become one with us, and the new energy lets us change our abilities." genomecost = 0 - verbpath = list(/mob/living/carbon/proc/changeling_absorb_dna) + verbpath = /mob/living/carbon/proc/changeling_absorb_dna /datum/power/changeling/extractdna name = "Extract DNA Strand" @@ -25,13 +25,13 @@ var/list/powerinstances helptext = "Will give you the DNA of your target, allowing you to transform into them." genomecost = 0 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_extract_dna_sting) + verbpath = /mob/living/carbon/proc/changeling_extract_dna_sting /datum/power/changeling/transform name = "Transform" desc = "We take on the appearance and voice of one we have absorbed." genomecost = 0 - verbpath = list(/mob/living/carbon/proc/changeling_transform) + verbpath = /mob/living/carbon/proc/changeling_transform /datum/power/changeling/fakedeath name = "Regenerative Stasis" @@ -39,14 +39,7 @@ var/list/powerinstances helptext = "Can be used before or after death. Duration varies greatly. Can be used in lesser form." genomecost = 0 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_fakedeath) - -/datum/power/changeling/memoryabsorb - name = "Memory Absorption" - desc = "The memories of our victims join our conciousness after syphoning their DNA." - genomecost = 0 - allowduringlesserform = 1 - verbpath = list(/mob/proc/changeling_toggle_memoryabsorb, /mob/proc/changeling_kickvoice) + verbpath = /mob/living/carbon/proc/changeling_fakedeath // Hivemind /datum/power/changeling/hive_upload @@ -55,7 +48,7 @@ var/list/powerinstances helptext = "Allows other changelings to absorb the DNA you channel from the airwaves. Will not help them towards their absorb objectives." genomecost = 0 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_hiveupload) + verbpath = /mob/living/carbon/proc/changeling_hiveupload /datum/power/changeling/hive_download name = "Hive Absorb" @@ -63,34 +56,34 @@ var/list/powerinstances helptext = "Allows you to absorb a single DNA and use it. Does not count towards your absorb objective." genomecost = 0 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_hivedownload) + verbpath = /mob/living/carbon/proc/changeling_hivedownload /datum/power/changeling/lesser_form name = "Lesser Form" desc = "We debase ourselves and become lesser. We become a monkey." genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_lesser_form) + verbpath = /mob/living/carbon/proc/changeling_lesser_form /datum/power/changeling/mimicvoice name = "Mimic Voice" desc = "We shape our vocal glands to sound like a desired voice." helptext = "Will turn your voice into the name that you enter. We must constantly expend chemicals to maintain our form like this" genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_mimicvoice) + verbpath = /mob/living/carbon/proc/changeling_mimicvoice /datum/power/changeling/transformation_sting name = "Transformation Sting" desc = "We silently sting a human, injecting a retrovirus that forces them to transform into another." helptext = "Does not provide a warning to others. The victim will transform much like a changeling would." genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_transformation_sting) + verbpath = /mob/living/carbon/proc/changeling_transformation_sting /datum/power/changeling/Epinephrine name = "Epinephrine Sacs" desc = "We evolve additional sacs of adrenaline throughout our body." helptext = "Removes all stuns instantly, and adds a short-term reduction in further stuns. Can be used while unconscious." genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_unstun) + verbpath = /mob/living/carbon/proc/changeling_unstun /datum/power/changeling/EngorgedGlands name = "Engorged Chemical Glands" @@ -98,7 +91,7 @@ var/list/powerinstances helptext = "Allows us to store an extra 25 units of chemicals, and doubles production rate." genomecost = 1 isVerb = 0 - verbpath = list(/mob/proc/changeling_advglands) + verbpath = /mob/proc/changeling_advglands /datum/power/changeling/DigitalCamouflage name = "Digital Camouflage" @@ -106,28 +99,28 @@ var/list/powerinstances helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us... uncanny." genomecost = 1 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_digitalcamo) + verbpath = /mob/living/carbon/proc/changeling_digitalcamo /datum/power/changeling/fleshmend name = "Fleshmend" desc = "We evolve the ability to rapidly regenerate, restoring the health of the body we use." helptext = "Heals a moderate amount of damage every tick. Can be used while unconscious." genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_fleshmend) + verbpath = /mob/living/carbon/proc/changeling_fleshmend /datum/power/changeling/panacea name = "Anatomic Panacea" desc = "Expels impurifications from our form; curing diseases, genetic disabilities, and removing toxins and radiation." helptext = "Can be used while unconscious." genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_panacea) + verbpath = /mob/living/carbon/proc/changeling_panacea /datum/power/changeling/shriek name = "Resonant Shriek" desc = "Our lungs and vocal chords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." helptext = "The high-frequency sounds cannot be heard by humans, but will blow out lights nearby. Cyborgs will have their sensors overloaded and become stunned." genomecost = 1 - verbpath = list(/mob/living/carbon/proc/changeling_shriek) + verbpath = /mob/living/carbon/proc/changeling_shriek /datum/power/changeling/spiders name = "Spread Infestation" @@ -135,7 +128,7 @@ var/list/powerinstances helptext = "The spiders are thoughtless creatures, and may attack their creators when fully grown. Requires at least 5 DNA absorptions." genomecost = 1 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_spiders) + verbpath = /mob/living/carbon/proc/changeling_spiders /datum/power/changeling/lsd_sting name = "Hallucination Sting" @@ -143,14 +136,14 @@ var/list/powerinstances helptext = "The target does not notice they have been stung. The effect occurs after 30 to 60 seconds." genomecost = 1 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_lsd_sting) + verbpath = /mob/living/carbon/proc/changeling_lsd_sting /datum/power/changeling/blind_sting name = "Blind Sting" desc = "We silently sting a human, completely blinding them for a short time." genomecost = 1 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_blind_sting) + verbpath = /mob/living/carbon/proc/changeling_blind_sting /datum/power/changeling/cryo_sting name = "Cryogenic Sting" @@ -158,7 +151,7 @@ var/list/powerinstances helptext = "Does not provide a warning to a victim, though they will likely realize they are suddenly freezing." genomecost = 1 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_cryo_sting) + verbpath = /mob/living/carbon/proc/changeling_cryo_sting /datum/power/changeling/mute_sting name = "Mute Sting" @@ -166,7 +159,7 @@ var/list/powerinstances helptext = "Does not provide a warning to a victim that they have been stung, until they try to speak and cannot." genomecost = 1 allowduringlesserform = 1 - verbpath = list(/mob/living/carbon/proc/changeling_mute_sting) + verbpath = /mob/living/carbon/proc/changeling_mute_sting // Modularchangling, totally stolen from the new player panel. YAYY @@ -503,8 +496,8 @@ var/list/powerinstances purchasedpowers += thepower - if(!thepower.isVerb && (thepower.verbpath.len == 1)) - call(C, thepower.verbpath[1])() + if(!thepower.isVerb && thepower.verbpath) + call(C, thepower.verbpath)() else if(remake_verbs) C.make_changeling() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c603939df23..6052046534f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -56,11 +56,9 @@ Transfer_mind is there to check if mob is being deleted/not going to have a body Works together with spawning an observer, noted above. */ -/mob/proc/ghostize(var/can_reenter_corpse = 1, datum/mind/newmind = null) +/mob/proc/ghostize(var/can_reenter_corpse = 1) if(key) - var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc - if (newmind) - ghost.mind = newmind + var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc. ghost.can_reenter_corpse = can_reenter_corpse ghost.key = key return ghost @@ -260,4 +258,4 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if (see_invisible == SEE_INVISIBLE_OBSERVER_NOLIGHTING) see_invisible = SEE_INVISIBLE_OBSERVER else - see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING + see_invisible = SEE_INVISIBLE_OBSERVER_NOLIGHTING \ No newline at end of file diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index dfbb6cf2714..2eda94c37f1 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -132,7 +132,7 @@ var/list/department_radio_keys = list( //world << "channel_prefix=[channel_prefix]; message_mode=[message_mode]" if (message_mode) message = trim(copytext(message, 3)) - if (!(ishuman(src) || (message_mode=="changeling") || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department" || (message_mode in radiochannels)))) + if (!(ishuman(src) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department" || (message_mode in radiochannels)))) message_mode = null //only humans can use headsets // Check changed so that parrots can use headsets. Other simple animals do not have ears and will cause runtimes. // And borgs -Sieve @@ -250,7 +250,6 @@ var/list/department_radio_keys = list( if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer)) Changeling << "[mind.changeling.changelingID]: [message]" return - ////SPECIAL HEADSETS START else //world << "SPECIAL HEADSETS" diff --git a/code/modules/mob/living/voices/say.dm b/code/modules/mob/living/voices/say.dm deleted file mode 100644 index bcdf6c0f22c..00000000000 --- a/code/modules/mob/living/voices/say.dm +++ /dev/null @@ -1,21 +0,0 @@ -/mob/living/voices/say_understands(var/other) - if (src.current_host && !istype(src.current_host, /mob/living/voices/)) - return src.current_host.say_understands(other) // you can understand what you host can, you're sharing a brain - else - return 1 // A voice with no host or a voice as host? Let it understand anything - -/mob/living/voices/say(var/message) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - if (!message) - return - - log_say("Voice [src.name]/[src.key] inside [src.current_host]: [message]") - var/tdisplay = "[capitalize(src.real_name)]: [message]" - - for(var/mob/M in mob_list) //speak to your host, and dead guys - if ( (M==src.current_host) || (istype(M, /mob/dead/observer)) ) - M << tdisplay - - for (var/mob/living/voices/P in src.current_host) // also speak to all voices in your current host - P << tdisplay - return \ No newline at end of file diff --git a/code/modules/mob/living/voices/voices.dm b/code/modules/mob/living/voices/voices.dm deleted file mode 100644 index 3457a1df4c9..00000000000 --- a/code/modules/mob/living/voices/voices.dm +++ /dev/null @@ -1,86 +0,0 @@ -/mob/living/voices - name = "voice" - desc = "The voice of a deceased person." //should not be needed - layer = 4 - density = 0 - canmove = 0 - blinded = 0 - anchored = 1 - see_in_dark = 0 - mind = null - - var/can_reenter_corpse = 1 - var/mob/current_host = null - var/old_mind = null - //var/cantalk = 1 //unused right now, intended for a mute verb - -/mob/living/voices/New(mob/host, mob/body, title=null) - if (!host) - return //voices need hosts - loc = host - current_host = host - - //if there is a body transfer relevant stuff here, if not we're done - if (!body) - ..() - attack_log = body.attack_log //preserve attack log - gender = body.gender - for(var/mob/living/voices/V in body.contents) //transfer voices as well (e.g. ling absorbing a ling gains his victims) - V.transfer(host) - old_mind = body.mind - if (body.mind) //take the name from the body's mind if there is one - name = body.mind.name - else - name = body.name - if (title) - name = "[title] of [name]" - real_name = name - ..() - -/mob/proc/becomevoice(mob/host, title=null) - var/mob/living/voices/newvoice = new(host, src, title) - if(key) - newvoice.key = key - return newvoice - -/mob/living/voices/proc/transfer(mob/newhost) - if (newhost && !istype(newhost, /mob/living/voices) ) //don't allow voices to have voices - current_host = newhost - loc = current_host - if (client) - client.eye = current_host - return 1 - else - return 0 - -/mob/living/voices/Del() - ghostize(can_reenter_corpse, src.old_mind) - src.current_host << "\The [src.real_name] fades away." // tell the host he ghosted - ..() - -/mob/living/voices/ghost() //a way for a voice to become a ghost - set category = "OOC" - set name = "Ghost" - set desc = "Enter the land of the dead." - - del(src) - return - -/mob/living/voices/add_memory() - set hidden = 1 - src << "\red Your mind is no longer your own!" - return - -/mob/living/voices/can_use_hands() return 0 -/mob/living/voices/is_active() return 0 - -/proc/create_voice(host, mob/body, name) // use for admin buttons to set a new name - if (body.mind) - body.mind.name = name - else - body.name = name - var/mob/living/voices/nv = body.becomevoice(host, null) - nv.can_reenter_corpse = 0 - if (istype(body, /mob/dead/observer)) - body.Logout() - return 1 \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index a2e22aeae99..50be9a36013 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -271,16 +271,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.