Copy-Paste Port of /tg/station's Shadowlings

Ports tgstation/-tg-station#8157

This won't compile, needs to be bugfixed and tested. The only reason I
am PRing  this right now is so that we don't have multiple people
working on the same thing.

@ZomgPonies This will require PROBABILITY SHADOWLING # to be added to
game_options.txt, and will likely require SQL database additions for the
BE_SHADOWLING antag preference.
This commit is contained in:
DZD
2015-04-12 13:15:40 -04:00
parent dfaad7168d
commit 0ab3a54fcb
14 changed files with 1227 additions and 1 deletions
+63
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.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,6 +962,50 @@ 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")
src.spell_list = null
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>"
src.spell_list = null
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
else if(src in ticker.mode.thralls)
ticker.mode.thralls -= src
special_role = null
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>"
src.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind
src.spell_list += new /obj/effect/proc_holder/spell/targeted/enthrall
current.verbs += /mob/living/carbon/human/proc/shadowling_hatch
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].")
src.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind
else if (href_list["monkey"])
var/mob/living/L = current
if (L.monkeyizing)