Merge pull request #796 from TheDZD/shadowling

Port of /tg/station's Shadowlings [WIP]
This commit is contained in:
ZomgPonies
2015-05-04 20:38:20 -04:00
48 changed files with 1415 additions and 78 deletions
+71 -1
View File
@@ -312,6 +312,25 @@ datum/mind
sections["traitor"] = text
/** SHADOWLING **/
text = "shadowling"
if(ticker.mode.config_tag == "shadowling")
text = uppertext(text)
text = "<i><b>[text]</b></i>: "
if(src in ticker.mode.shadows)
text += "<b>SHADOWLING</b>|thrall|<a href='?src=\ref[src];shadowling=clear'>human</a>"
else if(src in ticker.mode.shadowling_thralls)
text += "Shadowling|<b>THRALL</b>|<a href='?src=\ref[src];shadowling=clear'>human</a>"
else
text += "<a href='?src=\ref[src];shadowling=shadowling'>shadowling</a>|<a href='?src=\ref[src];shadowling=thrall'>thrall</a>|<b>HUMAN</b>"
if(current && current.client && current.client.prefs.be_special & BE_SHADOWLING)
text += "|Enabled in Prefs"
else
text += "|Disabled in Prefs"
sections["shadowling"] = text
/** MONKEY ***/
if (istype(current, /mob/living/carbon))
text = "monkey"
@@ -943,9 +962,60 @@ datum/mind
ticker.mode.forge_traitor_objectives(src)
usr << "\blue The objectives for traitor [key] have been generated. You can edit them and anounce manually."
else if(href_list["shadowling"])
switch(href_list["shadowling"])
if("clear")
ticker.mode.update_shadow_icons_removed(src)
current.spell_list.Cut()
if(src in ticker.mode.shadows)
ticker.mode.shadows -= src
special_role = null
current << "<span class='userdanger'>Your powers have been quenched! You are no longer a shadowling!</span>"
current.spell_list.Cut()
message_admins("[key_name_admin(usr)] has de-shadowling'ed [current].")
log_admin("[key_name(usr)] has de-shadowling'ed [current].")
current.verbs -= /mob/living/carbon/human/proc/shadowling_hatch
current.verbs -= /mob/living/carbon/human/proc/shadowling_ascendance
if(current.languages)
for(var/datum/language/L in current.languages)
if(L.name == "Shadowling Hivemind")
del(L)
else if(src in ticker.mode.shadowling_thralls)
ticker.mode.shadowling_thralls -= src
special_role = null
if(current.languages)
for(var/datum/language/L in current.languages)
if(L.name == "Shadowling Hivemind")
del(L)
current << "<span class='userdanger'>You have been brainwashed! You are no longer a thrall!</span>"
message_admins("[key_name_admin(usr)] has de-thrall'ed [current].")
log_admin("[key_name(usr)] has de-thrall'ed [current].")
if("shadowling")
if(!ishuman(current))
usr << "<span class='warning'>This only works on humans!</span>"
return
ticker.mode.shadows += src
special_role = "shadowling"
current << "<span class='deadsay'><b>You notice a brightening around you. No, it isn't that. The shadows grow, darken, swirl. The darkness has a new welcome for you, and you realize with a \
start that you can't be human. No, you are a shadowling, a harbringer of the shadows! Your alien abilities have been unlocked from within, and you may both commune with your allies and use \
a chrysalis to reveal your true form. You are to ascend at all costs.</b></span>"
ticker.mode.finalize_shadowling(src)
ticker.mode.update_shadow_icons_added(src)
if("thrall")
if(!ishuman(current))
usr << "<span class='warning'>This only works on humans!</span>"
return
ticker.mode.add_thrall(src)
special_role = "thrall"
current << "<span class='deadsay'>All at once it becomes clear to you. Where others see darkness, you see an ally. You realize that the shadows are not dead and dark as one would think, but \
living, and breathing, and <b>eating</b>. Their children, the Shadowlings, are to be obeyed and protected at all costs.</span>"
current << "<span class='danger'>You may use the Hivemind Commune ability to communicate with your fellow enlightened ones.</span>"
message_admins("[key_name_admin(usr)] has thrall'ed [current].")
log_admin("[key_name(usr)] has thrall'ed [current].")
else if (href_list["monkey"])
var/mob/living/L = current
if (L.monkeyizing)
if (L.notransform)
return
switch(href_list["monkey"])
if("healthy")