diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm index ba89e970de8..fdb30eaae8e 100644 --- a/code/game/objects/items/weapons/implants/implant_traitor.dm +++ b/code/game/objects/items/weapons/implants/implant_traitor.dm @@ -17,62 +17,64 @@ return dat /obj/item/weapon/implant/traitor/implant(mob/M, mob/user) - var/mob/living/carbon/human/H = M - if(ismindslave(H)) - H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.") - qdel(src) - return -1 - if(..()) - var/list/implanters - var/ref = "\ref[user.mind]" - if(!ishuman(M)) - return 0 - if(!M.mind) - return 0 - if(M == user) - user << "Making yourself loyal to yourself was a great idea! Perhaps even the best idea ever! Actually, you just feel like an idiot." - if(isliving(user)) - var/mob/living/L = user - L.adjustBrainLoss(20) - removed(M) - qdel(src) - return -1 - if(isloyal(H)) + if(!activated) //So you can't just keep taking it out and putting it back into other people. + var/mob/living/carbon/human/H = M + if(ismindslave(H)) H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.") - removed(M) qdel(src) return -1 - H.implanting = 1 - H << "You feel completely loyal to [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 << "You're now completely loyal to [user.name]! 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 = "Obey every order from and 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 << "Objective #1: [objective.explanation_text]" + if(..()) + var/list/implanters + var/ref = "\ref[user.mind]" + if(!ishuman(M)) + return 0 + if(!M.mind) + return 0 + if(M == user) + user << "Making yourself loyal to yourself was a great idea! Perhaps even the best idea ever! Actually, you just feel like an idiot." + if(isliving(user)) + var/mob/living/L = user + L.adjustBrainLoss(20) + removed(M) + qdel(src) + return -1 + if(isloyal(H)) + H.visible_message("[H] seems to resist the implant!", "You feel a strange sensation in your head that quickly dissipates.") + removed(M) + qdel(src) + return -1 + H.implanting = 1 + H << "You feel completely loyal to [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 << "You're now completely loyal to [user.name]! 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 = "Obey every order from and 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 << "Objective #1: [objective.explanation_text]" - ticker.mode.update_traitor_icons_added(user.mind) - ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds + ticker.mode.update_traitor_icons_added(user.mind) + ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds - if(user.mind.som)//do not add if not a traitor..and you just picked up an implanter in the hall... - var/datum/mindslaves/slaved = user.mind.som - H.mind.som = slaved - slaved.serv += H - slaved.add_serv_hud(user.mind,"syndicate")//handles master servent icons - slaved.add_serv_hud(H.mind,"mindslave") + if(user.mind.som)//do not add if not a traitor..and you just picked up an implanter in the hall... + var/datum/mindslaves/slaved = user.mind.som + H.mind.som = slaved + slaved.serv += H + slaved.add_serv_hud(user.mind,"syndicate")//handles master servent icons + slaved.add_serv_hud(H.mind,"mindslave") - log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].") - return 1 - return 0 \ No newline at end of file + log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].") + activated = 1 + return 1 + return 0 \ No newline at end of file