Merge pull request #1319 from Cheridan/revert

Revert "Merge pull request #689 from dumpdavidson/changeling_voices_squa...
This commit is contained in:
Aranclanos
2013-09-08 05:11:21 -07:00
11 changed files with 29 additions and 203 deletions
-2
View File
@@ -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)
-3
View File
@@ -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
@@ -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)
..()
@@ -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 << "<span class='notice'>The [P.real_name] is now with us.</span>"
P << "<span class='notice'>You are now a part of the changeling's mind. Type 'Ghost' to escape this existence.</span>"
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 << "<span class='notice'>We will now absorb the memories of our victims.</span>"
else
src << "<span class='notice'>We will no longer absorb the memories of our victims.</span>"
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 << "<span class='notice'>Your memories fade from [src]'s mind!</span>"
del(Svoice)
src << "<span class='notice'>[S] will no longer bother us.</span>"
return 1
@@ -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()
+3 -5
View File
@@ -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
+1 -2
View File
@@ -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 << "<i><font color=#800080><b>[mind.changeling.changelingID]:</b> [message]</font></i>"
return
////SPECIAL HEADSETS START
else
//world << "SPECIAL HEADSETS"
-21
View File
@@ -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 = "<i><font color=#643200><b>[capitalize(src.real_name)]:</b> [message]</font></i>"
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
-86
View File
@@ -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 << "<span class='notice'>\The [src.real_name] fades away.</span>" // 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
+2 -11
View File
@@ -271,16 +271,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
<h2 class='date'>2 June 2013</h2>
<h3 class='author'>Ikarrus updated:</h3>
<ul class='changes bgimages16'>
<li class='rscadd'>To reduce costs of security equipment, mounted flashers have been adjusted to use common handheld flashes as their flashbulbs. Although these flashbulbs are more prone to burnout, they can easily be replaced with wirecutters.</li>
</ul>
</div>
<div class='commit sansserif'>
<h2 class='date'>31 May 2013</h2>
<h3 class='author'>Dumpdavidson updated:</h3>
<ul class='changes bgimages16'>
<li class='rscadd'>Changelings can now absorb the living memory of their victims to talk to them. This is strictily voluntary as both sides have a verb to cancel that relationship. The victim can then re-enter its old body.</li>
<li class='tweak'>To reduce costs of security equipment, mounted flashers have been adjusted to use common handheld flashes as their flashbulbs. Although these flashbulbs are more prone to burnout, they can easily be replaced with wirecutters.</li>
</ul>
</div>
@@ -2991,4 +2982,4 @@ should be listed in the changelog upon commit tho. Thanks. -->
<p class="lic">Some icons by <a href="http://p.yusukekamiyamane.com/">Yusuke Kamiyamane</a>. All rights reserved. Licensed under a <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 License</a>.</p>
</td></tr></table>
</body>
</html>
</html>
-2
View File
@@ -977,8 +977,6 @@
#include "code\modules\mob\living\simple_animal\hostile\tree.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
#include "code\modules\mob\living\voices\say.dm"
#include "code\modules\mob\living\voices\voices.dm"
#include "code\modules\mob\new_player\hud.dm"
#include "code\modules\mob\new_player\login.dm"
#include "code\modules\mob\new_player\logout.dm"