mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Vampires bugfixes (#29349)
This commit is contained in:
@@ -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())
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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>")
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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>")
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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]
|
||||||
|
|||||||
@@ -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("")
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user