mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Merge pull request #1319 from Cheridan/revert
Revert "Merge pull request #689 from dumpdavidson/changeling_voices_squa...
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user