Implemented #1107.

This commit is contained in:
cib
2012-05-22 11:24:42 +02:00
parent cb02054845
commit 56b178f396
6 changed files with 99 additions and 14 deletions

View File

@@ -134,6 +134,26 @@ var/global/BSACooldown = 0
M.change_mob_type( /mob/living/simple_animal/constructwraith , null, null, delmob)
if("shade")
M.change_mob_type( /mob/living/simple_animal/shade , null, null, delmob)
if("meme")
var/mob/living/parasite/meme/newmeme = new
M.mind.transfer_to(newmeme)
newmeme.clearHUD()
var/found = 0
for(var/mob/living/carbon/human/H in world) if(H.client && !H.parasites.len)
found = 1
newmeme.enter_host(H)
log_admin("[H] has become [newmeme.key]'s host")
break
// if there was no host, abort
if(!found)
newmeme.mind.transfer_to(M)
log_admin("Failed to find host for meme [M.key]. Aborting.")
if(href_list["view_player_info"])
show_player_info(href_list["view_player_info"])
@@ -2435,6 +2455,7 @@ var/global/BSACooldown = 0
body += "<A href='?src=\ref[src];simplemake=constructbuilder;mob=\ref[M]'>Builder</A> , "
body += "<A href='?src=\ref[src];simplemake=constructwraith;mob=\ref[M]'>Wraith</A> \] "
body += "<A href='?src=\ref[src];simplemake=shade;mob=\ref[M]'>Shade</A>"
body += "<A href='?src=\ref[src];simplemake=meme;mob=\ref[M]'>Meme</A>"
body += "<br>"
if (M.client)

View File

@@ -892,7 +892,7 @@
switch(alert("You sure you wish to edit this mob's appearance?",,"Yes","No"))
if("No")
return
if(istype(M,/mob/living/carbon/human/tajaran) || istype(M,/mob/living/carbon/human/birdman))
if(istype(M,/mob/living/carbon/human/tajaran))
usr << "\red Humanoid aliens do not have an editable appearance... yet!"
else
var/new_facial = input("Please select facial hair color.", "Character Generation") as color

View File

@@ -252,6 +252,28 @@
dat += "<tr><td><i>Changeling not found!</i></td></tr>"
dat += "</table>"
if(ticker.mode.memes.len > 0)
dat += "<br><table cellspacing=5><tr><td><B>Memes</B></td><td></td><td></td></tr>"
for(var/datum/mind/meme in ticker.mode.memes)
var/mob/living/parasite/meme/M = meme.current
if(M)
dat += "<tr><td><a href='?src=\ref[src];adminplayeropts=\ref[M]'>[M.key]</a>[M.client ? "" : " <i>(logged out)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>"
dat += "<td><A HREF='?src=\ref[src];traitor=\ref[M]'>Show Objective</A></td></tr>"
// need this check because the meme may be possessing someone right now
if(istype(M))
dat += "\t<td>Attuned: "
for(var/mob/attuned in M.indoctrinated)
if(attuned.key)
dat += "[attuned.real_name]([attuned.key]) "
else
dat += "[attuned.real_name] "
else
dat += "<tr><td><i>Changeling not found!</i></td></tr>"
dat += "</table>"
if(ticker.mode.wizards.len > 0)
dat += "<br><table cellspacing=5><tr><td><B>Wizards</B></td><td></td><td></td></tr>"
for(var/datum/mind/wizard in ticker.mode.wizards)

View File

@@ -90,8 +90,8 @@ mob/living/parasite/meme/Life()
src.death()
return
if(host.blinded) src.blinded = 1
else src.blinded = 0
if(host.blinded && host.stat != 1) src.blinded = 1
else src.blinded = 0
mob/living/parasite/meme/death()
@@ -382,10 +382,15 @@ mob/living/parasite/meme/verb/SubtleJump(mob/living/carbon/human/target as mob i
src << "<b>Your target doesn't seem to hear you..</b>"
return
if(target.parasites.len > 0)
src << "<b>Your target already is possessed by something..</b>"
return
src.exit_host()
src.enter_host(target)
usr << "<b>You successfully jumped to [target]."
log_admin("[src.key] has jumped to [target]")
// Jump to a distant target through a shout
mob/living/parasite/meme/verb/ObviousJump(mob/living/carbon/human/target as mob in world)
@@ -415,10 +420,15 @@ mob/living/parasite/meme/verb/ObviousJump(mob/living/carbon/human/target as mob
src << "<b>Your target doesn't seem to hear you..</b>"
return
if(target.parasites.len > 0)
src << "<b>Your target already is possessed by something..</b>"
return
src.exit_host()
src.enter_host(target)
usr << "<b>You successfully jumped to [target]."
log_admin("[src.key] has jumped to [target]")
// Jump to an attuned mob for free
mob/living/parasite/meme/verb/AttunedJump(mob/living/carbon/human/target as mob in world)
@@ -441,6 +451,8 @@ mob/living/parasite/meme/verb/AttunedJump(mob/living/carbon/human/target as mob
usr << "<b>You successfully jumped to [target]."
log_admin("[src.key] has jumped to [target]")
// ATTUNE a mob, adding it to the indoctrinated list
mob/living/parasite/meme/verb/Attune()
set category = "Meme"
@@ -459,6 +471,8 @@ mob/living/parasite/meme/verb/Attune()
usr << "<b>You successfully indoctrinated [host]."
host << "\red Your head feels a bit roomier.."
log_admin("[src.key] has attuned [host]")
// Enables the mob to take a lot more damage
mob/living/parasite/meme/verb/Analgesic()
set category = "Meme"
@@ -511,8 +525,12 @@ mob/living/parasite/meme/verb/Possession()
host_mind.current.clearHUD()
host.update_clothing()
log_admin("[meme_mind.key] has taken possession of [host]([host_mind.key])")
sleep(600)
log_admin("[meme_mind.key] has lost possession of [host]([host_mind.key])")
meme_mind.transfer_to(src)
host_mind.transfer_to(host)
meme_mind.current.clearHUD()