Massive traitor item overhaul

This commit is contained in:
ZomgPonies
2013-09-23 05:41:53 -04:00
parent 3720a8d690
commit b0aff645a3
52 changed files with 1530 additions and 647 deletions
@@ -311,6 +311,60 @@ the implant may become unstable and either pre-maturely inject the subject or si
H << "\blue You feel a surge of loyalty towards Nanotrasen."
return 1
/obj/item/weapon/implant/traitor
name = "Greytide Implant"
desc = "Greytide Station wide"
icon_state = "implant_evil"
get_data()
var/dat = {"
<b>Implant Specifications:</b><BR>
<b>Name:</b> Greytide Mind-Slave Implant<BR>
<b>Life:</b> ??? <BR>
<b>Important Notes:</b> Any humanoid injected with this implant will become loyal to the injector and the greytide, unless of course the host is already loyal to someone else.<BR>
<HR>
<b>Implant Details:</b><BR>
<b>Function:</b> Contains a small pod of nanobots that manipulate the host's mental functions.<BR>
<b>Special Features:</b> Glory to the Greytide!<BR>
<b>Integrity:</b> Implant will last so long as the nanobots are inside the bloodstream."}
return dat
implanted(mob/M, mob/user)
var/list/implanters
var/ref = "\ref[user.mind]"
if(!ishuman(M)) return 0
if(!M.mind) return 0
var/mob/living/carbon/human/H = M
if(locate(/obj/item/weapon/implant/traitor) in H.contents || locate(/obj/item/weapon/implant/traitor) in H.contents)
H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.")
return 0
else if(H.mind in ticker.mode.traitors)
H.visible_message("[H] seems to resist the implant!", "You feel a familiar sensation in your head that quickly dissipates.")
return 0
H.implanting = 1
H << "\blue You feel a surge of loyalty towards [user.name]."
if(!(user.mind in ticker.mode:implanter))
ticker.mode:implanter[ref] = list()
implanters = ticker.mode:implanter[ref]
implanters.Add(H.mind)
ticker.mode.implanted.Add(H.mind)
ticker.mode.implanted[H.mind] = user.mind
//ticker.mode:implanter[user.mind] += H.mind
ticker.mode:implanter[ref] = implanters
ticker.mode.traitors += H.mind
H.mind.special_role = "traitor"
H << "<B>\red You've been shown the Greytide by [user.name]!</B> You now must lay down your life to protect them and assist in their goals at any cost."
var/datum/objective/protect/p = new
p.owner = H.mind
p.target = user:mind
p.explanation_text = "Protect [user:real_name], the [user:mind:assigned_role=="MODE" ? (user:mind:special_role) : (user:mind:assigned_role)]."
H.mind.objectives += p
for(var/datum/objective/objective in H.mind.objectives)
H << "<B>Objective #1</B>: [objective.explanation_text]"
ticker.mode.update_traitor_icons_added(H.mind)
ticker.mode.update_traitor_icons_added(user.mind)
log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
return 1
/obj/item/weapon/implant/adrenalin
name = "adrenalin"
@@ -37,7 +37,7 @@
msg_admin_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
user.show_message("\red You implanted the implant into [M].")
if(src.imp.implanted(M))
if(src.imp.implanted(M, user))
src.imp.loc = M
src.imp.imp_in = M
src.imp.implanted = 1
@@ -47,11 +47,20 @@
affected.implants += src.imp
imp.part = affected
M:implanting = 0
src.imp = null
update()
return
/obj/item/weapon/implanter/traitor
name = "implanter-greytide"
desc = "Greytide Stationwide."
New()
src.imp = new /obj/item/weapon/implant/traitor(src)
..()
update()
return
/obj/item/weapon/implanter/loyalty
name = "implanter-loyalty"