Vampires bugfixes (#29349)

This commit is contained in:
ShiftyRail
2021-04-26 17:43:43 +02:00
committed by GitHub
parent cf6151a62a
commit df9c0cdf9e
13 changed files with 46 additions and 45 deletions

View File

@@ -254,14 +254,16 @@
return return
// Vision-related changes. // Vision-related changes.
if (/datum/power/vampire/mature in current_powers) if (locate(/datum/power/vampire/vision) in current_powers)
H.change_sight(adding = SEE_TURFS|SEE_MOBS|SEE_OBJS) H.change_sight(adding = SEE_MOBS)
if (locate(/datum/power/vampire/mature) in current_powers)
H.change_sight(adding = SEE_TURFS|SEE_OBJS)
H.see_in_dark = 8 H.see_in_dark = 8
H.see_invisible = SEE_INVISIBLE_MINIMUM H.see_invisible = SEE_INVISIBLE_MINIMUM
else if (/datum/power/vampire/vision in current_powers) /datum/role/vampire/proc/is_mature_or_has_vision()
H.change_sight(adding = SEE_MOBS) return (locate(/datum/power/vampire/vision) in current_powers) || (locate(/datum/power/vampire/mature) in current_powers)
/datum/role/vampire/proc/handle_enthrall(var/datum/mind/enthralled) /datum/role/vampire/proc/handle_enthrall(var/datum/mind/enthralled)
if (!istype(enthralled)) if (!istype(enthralled))
@@ -312,11 +314,11 @@
if((T.get_lumcount() * 10) <= 2) if((T.get_lumcount() * 10) <= 2)
H.alphas["vampire_cloak"] = round((255 * 0.15)) H.alphas["vampire_cloak"] = round((255 * 0.15))
if(/datum/power/vampire/shadow in current_powers) if(locate(/datum/power/vampire/shadow) in current_powers)
H.color = "#000000" H.color = "#000000"
return TRUE return TRUE
else else
if(/datum/power/vampire/shadow in current_powers) if(locate(/datum/power/vampire/shadow) in current_powers)
H.alphas["vampire_cloak"] = round((255 * 0.15)) H.alphas["vampire_cloak"] = round((255 * 0.15))
else else
H.alphas["vampire_cloak"] = round((255 * 0.80)) H.alphas["vampire_cloak"] = round((255 * 0.80))
@@ -357,7 +359,7 @@
if(prob(35)) if(prob(35))
to_chat(H, "<span class='danger'>This ground is blessed. Get away, or splatter it with blood to make it safe for you.</span>") to_chat(H, "<span class='danger'>This ground is blessed. Get away, or splatter it with blood to make it safe for you.</span>")
if((/datum/power/vampire/mature in current_powers) && (istype(get_area(H), /area/chapel))) //stay out of the chapel unless you want to turn into a pile of ashes if((locate(/datum/power/vampire/mature) in current_powers) && (istype(get_area(H), /area/chapel))) //stay out of the chapel unless you want to turn into a pile of ashes
nullified = max(5, nullified + 2) nullified = max(5, nullified + 2)
if(prob(35)) if(prob(35))
to_chat(H, "<span class='sinister'>You feel yourself growing weaker.</span>") to_chat(H, "<span class='sinister'>You feel yourself growing weaker.</span>")
@@ -367,14 +369,14 @@
*/ */
if(!nullified) //Checks to see if you can benefit from your vamp current_powers here if(!nullified) //Checks to see if you can benefit from your vamp current_powers here
if(!(/datum/power/vampire/mature in current_powers)) if(!(locate(/datum/power/vampire/mature) in current_powers))
smitetemp -= 1 smitetemp -= 1
if(!(/datum/power/vampire/shadow in current_powers)) if(!(locate(/datum/power/vampire/shadow) in current_powers))
var/turf/T = get_turf(H) var/turf/T = get_turf(H)
if((T.get_lumcount() * 10) < 2) if((T.get_lumcount() * 10) < 2)
smitetemp -= 1 smitetemp -= 1
if(!(/datum/power/vampire/undying in current_powers)) if(!(locate(/datum/power/vampire/undying) in current_powers))
smitetemp -= 1 smitetemp -= 1
if(smitetemp <= 0) //if you weren't smote by the tile you're on, remove a little holy if(smitetemp <= 0) //if you weren't smote by the tile you're on, remove a little holy
@@ -446,7 +448,7 @@
var/mob/living/carbon/human/H = antag.current var/mob/living/carbon/human/H = antag.current
if (!istype(H)) if (!istype(H))
return return
if(/datum/power/vampire/mature in current_powers) if(locate(/datum/power/vampire/mature) in current_powers)
to_chat(H, "<span class='danger'>A freezing liquid permeates your bloodstream. Your vampiric powers fade and your insides burn.</span>") to_chat(H, "<span class='danger'>A freezing liquid permeates your bloodstream. Your vampiric powers fade and your insides burn.</span>")
H.take_organ_damage(0, 5) //FIRE, MAGIC FIRE THAT BURNS ROBOTIC LIMBS TOO! H.take_organ_damage(0, 5) //FIRE, MAGIC FIRE THAT BURNS ROBOTIC LIMBS TOO!
smitecounter += 10 //50 units to catch on fire. Generally you'll get fucked up quickly smitecounter += 10 //50 units to catch on fire. Generally you'll get fucked up quickly
@@ -463,7 +465,7 @@
var/mob/living/carbon/human/H = antag.current var/mob/living/carbon/human/H = antag.current
if (!istype(H)) if (!istype(H))
return return
if(!(/datum/power/vampire/undying in current_powers)) if(!(locate(/datum/power/vampire/undying) in current_powers))
if(method == TOUCH) if(method == TOUCH)
if(H.wear_mask) if(H.wear_mask)
to_chat(H, "<span class='warning'>Your mask protects you from the holy water!</span>") to_chat(H, "<span class='warning'>Your mask protects you from the holy water!</span>")
@@ -477,7 +479,7 @@
if(prob(15) && volume >= 30) if(prob(15) && volume >= 30)
var/datum/organ/external/head/head_organ = H.get_organ(LIMB_HEAD) var/datum/organ/external/head/head_organ = H.get_organ(LIMB_HEAD)
if(head_organ) if(head_organ)
if(!(/datum/power/vampire/mature in current_powers)) if(!(locate(/datum/power/vampire/mature) in current_powers))
to_chat(H, "<span class='danger'>A freezing liquid covers your face. Its melting!</span>") to_chat(H, "<span class='danger'>A freezing liquid covers your face. Its melting!</span>")
smitecounter += 60 //Equivalent from metabolizing all this holy water normally smitecounter += 60 //Equivalent from metabolizing all this holy water normally
if(head_organ.take_damage(30, 0)) if(head_organ.take_damage(30, 0))
@@ -485,16 +487,16 @@
head_organ.disfigure("burn") head_organ.disfigure("burn")
H.audible_scream() H.audible_scream()
else else
to_chat(H, "<span class='warning'>A freezing liquid covers your face. Your vampiric current_powers protect you!</span>") to_chat(H, "<span class='warning'>A freezing liquid covers your face. Your vampiric current powers protect you!</span>")
smitecounter += 12 //Ditto above smitecounter += 12 //Ditto above
else else
if(!(/datum/power/vampire/mature in current_powers)) if(!(locate(/datum/power/vampire/mature) in current_powers))
to_chat(H, "<span class='danger'>You are doused with a freezing liquid. You're melting!</span>") to_chat(H, "<span class='danger'>You are doused with a freezing liquid. You're melting!</span>")
H.take_organ_damage(min(15, volume * 2)) //Uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl H.take_organ_damage(min(15, volume * 2)) //Uses min() and volume to make sure they aren't being sprayed in trace amounts (1 unit != insta rape) -- Doohl
smitecounter += volume * 2 smitecounter += volume * 2
else else
to_chat(H, "<span class='warning'>You are doused with a freezing liquid. Your vampiric current_powers protect you!</span>") to_chat(H, "<span class='warning'>You are doused with a freezing liquid. Your vampiric current powers protect you!</span>")
smitecounter += volume * 0.4 smitecounter += volume * 0.4
else else
if(H.acidable()) if(H.acidable())

View File

@@ -367,7 +367,7 @@
/obj/effect/decal/cleanable/salt/proc/checkVamp(var/mob/living/theVamp) /obj/effect/decal/cleanable/salt/proc/checkVamp(var/mob/living/theVamp)
if(isvampire(theVamp)) if(isvampire(theVamp))
var/datum/role/vampire/V = isvampire(theVamp) var/datum/role/vampire/V = isvampire(theVamp)
if(/datum/power/vampire/charisma in V.current_powers) //He's already a powerful vamp, the check is no longer meta if(locate(/datum/power/vampire/charisma) in V.current_powers) //He's already a powerful vamp, the check is no longer meta
return TRUE return TRUE
return FALSE return FALSE

View File

@@ -486,7 +486,7 @@
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
var/datum/role/vampire/V = isvampire(H) var/datum/role/vampire/V = isvampire(H)
if(V) if(V)
if(/datum/power/vampire/mature in V.current_powers) if(locate(/datum/power/vampire/mature) in V.current_powers)
V.smitecounter += 30 //Smithe the shit out of him. Four strikes and he's out V.smitecounter += 30 //Smithe the shit out of him. Four strikes and he's out
if(istype(M,/mob/living/simple_animal)) if(istype(M,/mob/living/simple_animal))
@@ -500,7 +500,7 @@
if(user.mind) if(user.mind)
if(ishuman(user)) if(ishuman(user))
var/datum/role/vampire/V = isvampire(user) var/datum/role/vampire/V = isvampire(user)
if(V && !(/datum/power/vampire/undying in V.current_powers)) if(V && !(locate(/datum/power/vampire/undying) in V.current_powers))
V.smitecounter += 60 V.smitecounter += 60
to_chat(user, "<span class='danger'>\The [src] sears your hand!</span>") to_chat(user, "<span class='danger'>\The [src] sears your hand!</span>")

View File

@@ -500,7 +500,7 @@
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if (isvampire(H)) if (isvampire(H))
var/datum/role/vampire/V = H.mind.GetRole(VAMPIRE) var/datum/role/vampire/V = H.mind.GetRole(VAMPIRE)
if (!(/datum/power/vampire/mature in V.current_powers)) if (!(locate(/datum/power/vampire/mature) in V.current_powers))
to_chat(H, "<span class='notice'>You don't see anything.</span>") to_chat(H, "<span class='notice'>You don't see anything.</span>")
return return

View File

@@ -49,7 +49,7 @@
var/datum/role/vampire/V = isvampire(H) var/datum/role/vampire/V = isvampire(H)
if(V && isReligiousLeader(user)) //Fuck up vampires by smiting the shit out of them. Shock and Awe! if(V && isReligiousLeader(user)) //Fuck up vampires by smiting the shit out of them. Shock and Awe!
if(/datum/power/vampire/mature in V.current_powers) if(locate(/datum/power/vampire/mature) in V.current_powers)
to_chat(H, "<span class='warning'>\The [src]'s power violently interferes with your own!</span>") to_chat(H, "<span class='warning'>\The [src]'s power violently interferes with your own!</span>")
if(V.nullified < 5) //Don't actually reduce their debuff if it's over 5 if(V.nullified < 5) //Don't actually reduce their debuff if it's over 5
V.nullified = min(5, V.nullified + 2) V.nullified = min(5, V.nullified + 2)
@@ -87,7 +87,7 @@
to_chat(user, "<span class='notice'>\The [src] is teeming with divine power. You feel like you could [fluff_pickup] a horde of undead with this.</span>") to_chat(user, "<span class='notice'>\The [src] is teeming with divine power. You feel like you could [fluff_pickup] a horde of undead with this.</span>")
if(ishuman(user)) //Typecasting, only humans can be vampires if(ishuman(user)) //Typecasting, only humans can be vampires
var/datum/role/vampire/V = isvampire(user) var/datum/role/vampire/V = isvampire(user)
if(V && !(/datum/power/vampire/undying in V.current_powers)) if(V && !(locate(/datum/power/vampire/undying) in V.current_powers))
V.smitecounter += 60 V.smitecounter += 60
to_chat(user, "<span class='danger'>You feel an unwanted presence as you pick up the rod. Your body feels like it is burning from the inside!</span>") to_chat(user, "<span class='danger'>You feel an unwanted presence as you pick up the rod. Your body feels like it is burning from the inside!</span>")

View File

@@ -159,7 +159,7 @@
if(ishuman(M)) //Only humans can be vampires or cultists. if(ishuman(M)) //Only humans can be vampires or cultists.
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
V = isvampire(M) V = isvampire(M)
if(V && (/datum/power/vampire/mature in V.current_powers) && my_rel.leadsThisReligion(user)) //The user is a "mature" Vampire, fuck up his vampiric powers and hurt his head if(V && (locate(/datum/power/vampire/mature) in V.current_powers) && my_rel.leadsThisReligion(user)) //The user is a "mature" Vampire, fuck up his vampiric powers and hurt his head
to_chat(H, "<span class='warning'>[my_rel.deity_name]'s power nullifies your own!</span>") to_chat(H, "<span class='warning'>[my_rel.deity_name]'s power nullifies your own!</span>")
if(V.nullified < 5) //Don't actually reduce their debuff if it's over 5 if(V.nullified < 5) //Don't actually reduce their debuff if it's over 5
V.nullified = min(5, V.nullified + 2) V.nullified = min(5, V.nullified + 2)
@@ -213,7 +213,7 @@
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
var/datum/role/vampire/V = isvampire(H) var/datum/role/vampire/V = isvampire(H)
var/datum/role/cultist/C = isanycultist(H) var/datum/role/cultist/C = isanycultist(H)
if(V && (!(/datum/power/vampire/undying in V.current_powers))) //We are a Vampire, we aren't very smart if(V && (!(locate(/datum/power/vampire/undying) in V.current_powers))) //We are a Vampire, we aren't very smart
to_chat(H, "<span class ='danger'>[my_rel.deity_name]'s power channels through \the [src]. You feel extremely uneasy as you grab it!</span>") to_chat(H, "<span class ='danger'>[my_rel.deity_name]'s power channels through \the [src]. You feel extremely uneasy as you grab it!</span>")
V.smitecounter += 10 V.smitecounter += 10
if(C) //We are a Cultist, we aren't very smart either, but at least there will be no consequences for us if(C) //We are a Cultist, we aren't very smart either, but at least there will be no consequences for us

View File

@@ -33,7 +33,7 @@
/obj/structure/mirror/proc/vampire_check(mob/living/user, mob/living/carbon/human/target) /obj/structure/mirror/proc/vampire_check(mob/living/user, mob/living/carbon/human/target)
var/datum/role/vampire/V = isvampire(target) var/datum/role/vampire/V = isvampire(target)
if(V && !(/datum/power/vampire/mature in V.current_powers)) if(V && !(locate(/datum/power/vampire/mature) in V.current_powers))
to_chat(user, "<span class='notice'>You don't see anything in \the [src].</span>") to_chat(user, "<span class='notice'>You don't see anything in \the [src].</span>")
return FALSE return FALSE
return TRUE return TRUE

View File

@@ -71,11 +71,11 @@ var/list/stationary_hearers = list( /obj/item/device/radio/intercom,
sight = copying sight = copying
if(adding) if(adding)
sight |= adding sight |= adding
if(adding & (SEE_TURFS | SEE_MOBS | SEE_OBJS)) if((sight != oldsight) && (adding & (SEE_TURFS | SEE_MOBS | SEE_OBJS)))
sight &= ~SEE_BLACKNESS sight &= ~SEE_BLACKNESS
if(removing) if(removing)
sight &= ~removing sight &= ~removing
if(removing & (SEE_TURFS | SEE_MOBS | SEE_OBJS)) if((sight != oldsight) && (removing & (SEE_TURFS | SEE_MOBS | SEE_OBJS)))
sight |= SEE_BLACKNESS sight |= SEE_BLACKNESS
if(sight != oldsight) if(sight != oldsight)
var/mob/virtualhearer/VH = mob_hearers[src] var/mob/virtualhearer/VH = mob_hearers[src]

View File

@@ -393,7 +393,7 @@
if( head && head.is_hidden_identity()) if( head && head.is_hidden_identity())
return get_worn_id_name("Unknown") //Likewise for hats return get_worn_id_name("Unknown") //Likewise for hats
var/datum/role/vampire/V = isvampire(src) var/datum/role/vampire/V = isvampire(src)
if(V && (/datum/power/vampire/shadow in V.current_powers) && V.ismenacing) if(V && (locate(/datum/power/vampire/shadow) in V.current_powers) && V.ismenacing)
return get_worn_id_name("Unknown") return get_worn_id_name("Unknown")
var/face_name = get_face_name() var/face_name = get_face_name()
var/id_name = get_worn_id_name("") var/id_name = get_worn_id_name("")

View File

@@ -117,14 +117,13 @@
src.client.images += V.cached_images[i] src.client.images += V.cached_images[i]
i++ i++
if (!V || (!(/datum/power/vampire/vision in V.current_powers) && !(/datum/power/vampire/mature in V.current_powers))) // Not a vampire, or a vampire but neither of the spells. if (!V || !V.is_mature_or_has_vision()) // Not a vampire, or a vampire but neither of the spells.
change_sight(removing = SEE_MOBS) change_sight(removing = SEE_MOBS)
if (!V || !(/datum/power/vampire/mature in V.current_powers)) if (!V || !(locate(/datum/power/vampire/mature) in V.current_powers))
change_sight(removing = SEE_TURFS|SEE_OBJS) change_sight(removing = SEE_TURFS|SEE_OBJS)
var/datum/organ/internal/eyes/E = src.internal_organs_by_name["eyes"] var/datum/organ/internal/eyes/E = src.internal_organs_by_name["eyes"]
if(E) if(E)
see_in_dark = E.see_in_dark see_in_dark = E.see_in_dark
see_invisible = see_in_dark > 2 ? SEE_INVISIBLE_LEVEL_ONE : SEE_INVISIBLE_LIVING see_invisible = see_in_dark > 2 ? SEE_INVISIBLE_LEVEL_ONE : SEE_INVISIBLE_LIVING
// Moiving this "see invisble" thing here so that it can be overriden by xrays, vampires... // Moiving this "see invisble" thing here so that it can be overriden by xrays, vampires...
@@ -289,7 +288,7 @@
if(ticker && ticker.hardcore_mode) //Hardcore mode: flashing nutrition indicator when starving! if(ticker && ticker.hardcore_mode) //Hardcore mode: flashing nutrition indicator when starving!
if(nutrition < STARVATION_MIN) if(nutrition < STARVATION_MIN)
throw_alert(SCREEN_ALARM_FOOD, /obj/abstract/screen/alert/carbon/food/starving, 5) throw_alert(SCREEN_ALARM_FOOD, /obj/abstract/screen/alert/carbon/food/starving, 5)
update_pull_icon() update_pull_icon()
if(disabilities & NEARSIGHTED) //This looks meh but saves a lot of memory by not requiring to add var/prescription if(disabilities & NEARSIGHTED) //This looks meh but saves a lot of memory by not requiring to add var/prescription

View File

@@ -67,7 +67,7 @@
C.Stun(distance_value) C.Stun(distance_value)
if(distance_value > 1) if(distance_value > 1)
C.Knockdown(distance_value) C.Knockdown(distance_value)
C.stuttering += 5+distance_value * ((/datum/power/vampire/charisma in V.current_powers) ? 2 : 1) //double stutter time with Charisma C.stuttering += 5+distance_value * ((locate(/datum/power/vampire/charisma) in V.current_powers) ? 2 : 1) //double stutter time with Charisma
if(!C.blinded) if(!C.blinded)
C.blinded = 1 C.blinded = 1
C.blinded += max(1, distance_value) C.blinded += max(1, distance_value)
@@ -81,4 +81,4 @@
user.stuttering += 15 user.stuttering += 15
var/datum/role/vampire/V = isvampire(user) var/datum/role/vampire/V = isvampire(user)
if (V) if (V)
V.remove_blood(3*blood_cost) V.remove_blood(3*blood_cost)

View File

@@ -47,31 +47,31 @@
/spell/targeted/enthrall/cast(var/list/targets, var/mob/user) /spell/targeted/enthrall/cast(var/list/targets, var/mob/user)
if (targets.len > 1) if (targets.len > 1)
return FALSE return FALSE
var/mob/living/target = targets[1] var/mob/living/target = targets[1]
var/datum/role/vampire/V = isvampire(user) var/datum/role/vampire/V = isvampire(user)
if (!V) if (!V)
return FALSE return FALSE
user.visible_message("<span class='warning'>[user] bites \the [target]'s neck!</span>", "<span class='warning'>You bite \the [target]'s neck and begin the flow of power.</span>")
to_chat(target, "<span class='sinister'>You feel the tendrils of evil [(/datum/power/vampire/charisma in V.current_powers) ? "aggressively" : "slowly"] invade your mind.</span>")
if(do_mob(user, target, (/datum/power/vampire/charisma in V.current_powers) ? 150 : 300)) user.visible_message("<span class='warning'>[user] bites \the [target]'s neck!</span>", "<span class='warning'>You bite \the [target]'s neck and begin the flow of power.</span>")
to_chat(target, "<span class='sinister'>You feel the tendrils of evil [(locate(/datum/power/vampire/charisma) in V.current_powers) ? "aggressively" : "slowly"] invade your mind.</span>")
if(do_mob(user, target, (locate(/datum/power/vampire/charisma) in V.current_powers) ? 150 : 300))
if(user.vampire_power(blood_cost, 0)) // recheck if(user.vampire_power(blood_cost, 0)) // recheck
V.handle_enthrall(target.mind) V.handle_enthrall(target.mind)
else else
to_chat(user, "<span class='warning'>Either you or your target moved, and you couldn't finish enthralling them!</span>") to_chat(user, "<span class='warning'>Either you or your target moved, and you couldn't finish enthralling them!</span>")
return FALSE return FALSE
if(!target.client) //There is not a player "in control" of this corpse, so there is no one to inform. if(!target.client) //There is not a player "in control" of this corpse, so there is no one to inform.
var/mob/dead/observer/ghost = mind_can_reenter(target.mind) var/mob/dead/observer/ghost = mind_can_reenter(target.mind)
if(ghost) if(ghost)
var/mob/ghostmob = ghost.get_top_transmogrification() var/mob/ghostmob = ghost.get_top_transmogrification()
if(ghostmob) //A ghost has been found, and it still belongs to this corpse. There's nothing preventing them from being revived. if(ghostmob) //A ghost has been found, and it still belongs to this corpse. There's nothing preventing them from being revived.
to_chat(ghostmob, "<span class='interface big'><span class='bold'>The vampire has enthralled your corpse. You will be their servant when you return to the living. Blood and power to your Lord. (Check your notes for the current identity of your master upon revival.)</span>") to_chat(ghostmob, "<span class='interface big'><span class='bold'>The vampire has enthralled your corpse. You will be their servant when you return to the living. Blood and power to your Lord. (Check your notes for the current identity of your master upon revival.)</span>")
V.remove_blood(blood_cost) V.remove_blood(blood_cost)
/spell/targeted/enthrall/critfail(var/list/targets, var/mob/user) /spell/targeted/enthrall/critfail(var/list/targets, var/mob/user)
@@ -81,4 +81,4 @@
H.confused = max(10, H.confused) H.confused = max(10, H.confused)
var/datum/role/vampire/V = isvampire(user) var/datum/role/vampire/V = isvampire(user)
if (V) if (V)
V.remove_blood(blood_cost) V.remove_blood(blood_cost)

View File

@@ -10,7 +10,7 @@
world.log << "[src] has vampire spells but isn't a vampire." world.log << "[src] has vampire spells but isn't a vampire."
return 0 return 0
var/fullpower = (/datum/power/vampire/jaunt in vampire.current_powers) var/fullpower = (locate(/datum/power/vampire/jaunt) in vampire.current_powers)
if(src.stat > max_stat) if(src.stat > max_stat)
to_chat(src, "<span class='warning'>You are incapacitated.</span>") to_chat(src, "<span class='warning'>You are incapacitated.</span>")
@@ -43,7 +43,7 @@
if(restrained()) if(restrained())
to_chat(src, "<span class ='warning'> You cannot do this while restrained! </span>") to_chat(src, "<span class ='warning'> You cannot do this while restrained! </span>")
return 0 return 0
if(!(/datum/power/vampire/charisma in V.current_powers)) //Charisma allows implanted targets to be enthralled. if(!(locate(/datum/power/vampire/charisma) in V.current_powers)) //Charisma allows implanted targets to be enthralled.
for(var/obj/item/weapon/implant/loyalty/L in H) for(var/obj/item/weapon/implant/loyalty/L in H)
if(L && L.implanted) if(L && L.implanted)
implanted = TRUE implanted = TRUE