diff --git a/yogstation/code/datums/antagonists/vampire.dm b/yogstation/code/datums/antagonists/vampire.dm
index 0b7bb8367cbc..b141c832495e 100644
--- a/yogstation/code/datums/antagonists/vampire.dm
+++ b/yogstation/code/datums/antagonists/vampire.dm
@@ -25,16 +25,16 @@
/datum/vampire_passive/vision = 75,
/obj/effect/proc_holder/spell/self/shapeshift = 75,
/obj/effect/proc_holder/spell/self/cloak = 100,
- /obj/effect/proc_holder/spell/targeted/disease = 175,
- /obj/effect/proc_holder/spell/bats = 250,
+ /obj/effect/proc_holder/spell/self/revive = 100,
+ /obj/effect/proc_holder/spell/targeted/disease = 200,//why is spell-that-kills-people unlocked so early what the fuck
/obj/effect/proc_holder/spell/self/batform = 200,
/obj/effect/proc_holder/spell/self/screech = 215,
+ /obj/effect/proc_holder/spell/bats = 250,
/datum/vampire_passive/regen = 255,
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/mistform = 300,
/datum/vampire_passive/full = 420,
/obj/effect/proc_holder/spell/self/summon_coat = 420,
- /obj/effect/proc_holder/spell/targeted/vampirize = 450,
- /obj/effect/proc_holder/spell/self/revive = 0)
+ /obj/effect/proc_holder/spell/targeted/vampirize = 450)
/datum/antagonist/vampire/get_admin_commands()
. = ..()
@@ -202,6 +202,7 @@
C.adjustFireLoss(-4)
C.adjustToxLoss(-4)
C.adjustOxyLoss(-4)
+ C.adjustCloneLoss(-4)
return
if(!get_ability(/datum/vampire_passive/full) && istype(get_area(C.loc), /area/chapel))
vamp_burn()
@@ -232,9 +233,9 @@
to_chat(O, "They've got no blood left to give.")
break
if(H.stat != DEAD)
- blood = min(20, H.blood_volume)// if they have less than 20 blood, give them the remnant else they get 20 blood
- total_blood += blood / 2 //divide by 2 to counted the double suction since removing cloneloss -Melandor0
- usable_blood += blood / 2
+ blood = min(20, H.blood_volume) // if they have less than 20 blood, give them the remnant else they get 20 blood
+ total_blood += blood //get total blood 100% efficiency because fuck waiting out 5 fucking minutes and 1500 actual blood to get your 600 blood for the objective
+ usable_blood += blood * 0.75 //75% usable blood since it's actually used for stuff
else
blood = min(5, H.blood_volume) // The dead only give 5 blood
total_blood += blood
@@ -244,7 +245,7 @@
H.blood_volume = max(H.blood_volume - 25, 0)
if(ishuman(O))
O.nutrition = min(O.nutrition + (blood / 2), NUTRITION_LEVEL_WELL_FED)
- playsound(O.loc, 'sound/items/eatfood.ogg', 40, 1)
+ playsound(O.loc, 'sound/items/eatfood.ogg', 40, 1, extrarange = -4)//have to be within 3 tiles to hear the sucking
draining = null
to_chat(owner, "You stop draining [H.name] of blood.")
diff --git a/yogstation/code/game/gamemodes/vampire/vampire_powers.dm b/yogstation/code/game/gamemodes/vampire/vampire_powers.dm
index 9a0a21c7dde7..68f2a279c51f 100644
--- a/yogstation/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/yogstation/code/game/gamemodes/vampire/vampire_powers.dm
@@ -112,17 +112,18 @@
vamp_req = TRUE
/obj/effect/proc_holder/spell/targeted/hypnotise/cast(list/targets, mob/user = usr)
- for(var/mob/living/target in targets)
+ for(var/mob/living/carbon/target in targets)
user.visible_message("[user]'s eyes flash briefly as he stares into [target]'s eyes")
if(do_mob(user, target, 30))
to_chat(user, "Your piercing gaze knocks out [target].")
- to_chat(target, "You find yourself unable to move and barely able to speak.")
+ to_chat(target, "You find yourself unable to move or speak.")
target.Paralyze(150)
- target.stuttering = 10
+ target.silent = 10 //finally makes this stupid spell USEFUL
else
revert_cast(usr)
to_chat(usr, "You broke your gaze.")
+
/obj/effect/proc_holder/spell/self/shapeshift
name = "Shapeshift (50)"
desc = "Changes your name and appearance at the cost of 50 blood and has a cooldown of 3 minutes."
@@ -140,6 +141,7 @@
randomize_human(H)
user.regenerate_icons()
+
/obj/effect/proc_holder/spell/self/cloak
name = "Cloak of Darkness"
desc = "Toggles whether you are currently cloaking yourself in darkness."
@@ -169,6 +171,49 @@
update_name()
to_chat(user, "You will now be [V.iscloaking ? "hidden" : "seen"] in darkness.")
+
+/obj/effect/proc_holder/spell/self/revive
+ name = "Revive"
+ gain_desc = "You have gained the ability to revive after death... However you can still be cremated/gibbed, and you will disintergrate if you're in the chapel!"
+ desc = "Revives you, provided you are not in the chapel!"
+ blood_used = 0
+ stat_allowed = TRUE
+ charge_max = 1000
+ action_icon = 'yogstation/icons/mob/vampire.dmi'
+ action_icon_state = "coffin"
+ action_background_icon_state = "bg_demon"
+ vamp_req = TRUE
+
+/obj/effect/proc_holder/spell/self/revive/cast(list/targets, mob/user = usr)
+ if(!is_vampire(user) || !isliving(user))
+ revert_cast()
+ return
+ if(user.stat != DEAD)
+ to_chat(user, "We aren't dead enough to do that yet!")
+ revert_cast()
+ return
+ if(user.reagents.has_reagent("holywater"))
+ to_chat(user, "We cannot revive, holy water is in our system!")
+ return
+ var/mob/living/L = user
+ if(istype(get_area(L.loc), /area/chapel))
+ L.visible_message("[L] disintergrates into dust!", "Holy energy seeps into our very being, disintergrating us instantly!", "You hear sizzling.")
+ new /obj/effect/decal/remains/human(L.loc)
+ L.dust()
+ to_chat(L, "We begin to reanimate... this will take 1 minute.")
+ addtimer(CALLBACK(src, /obj/effect/proc_holder/spell/self/revive.proc/revive, L), 600)
+
+/obj/effect/proc_holder/spell/self/revive/proc/revive(mob/living/user)
+ user.revive(full_heal = TRUE)
+ user.visible_message("[user] reanimates from death!", "We get back up.")
+ var/list/missing = user.get_missing_limbs()
+ if(missing.len)
+ playsound(user, 'sound/magic/demon_consume.ogg', 50, 1)
+ user.visible_message("Shadowy matter takes the place of [user]'s missing limbs as they reform!")
+ user.regenerate_limbs(0, list(BODY_ZONE_HEAD))
+ user.regenerate_organs()
+
+
/obj/effect/proc_holder/spell/targeted/disease
name = "Diseased Touch (50)"
desc = "Touches your victim with infected blood giving them Grave Fever, which will, left untreated, causes toxic building and frequent collapsing."
@@ -189,6 +234,7 @@
var/datum/disease/D = new /datum/disease/vampire
target.ForceContractDisease(D)
+
/obj/effect/proc_holder/spell/self/screech
name = "Chiropteran Screech (20)"
desc = "An extremely loud shriek that stuns nearby humans and breaks windows as well."
@@ -214,6 +260,7 @@
W.take_damage(75)
playsound(user.loc, 'sound/effects/screech.ogg', 100, 1)
+
/obj/effect/proc_holder/spell/bats
name = "Summon Bats (30)"
desc = "You summon a pair of space bats who attack nearby targets until they or their target is dead."
@@ -258,6 +305,7 @@
range = -1
addtimer(VARSET_CALLBACK(src, range, -1), 10) //Avoid fuckery
+
/obj/effect/proc_holder/spell/targeted/vampirize
name = "Lilith's Pact (400)"
desc = "You drain a victim's blood, and fill them with new blood, blessed by Lilith, turning them into a new vampire."
@@ -305,47 +353,6 @@
add_vampire(target)
-/obj/effect/proc_holder/spell/self/revive
- name = "Revive"
- gain_desc = "You have gained the ability to revive after death... However you can still be cremated/gibbed, and you will disintergrate if you're in the chapel!"
- desc = "Revives you, provided you are not in the chapel!"
- blood_used = 0
- stat_allowed = TRUE
- charge_max = 1000
- action_icon = 'yogstation/icons/mob/vampire.dmi'
- action_icon_state = "coffin"
- action_background_icon_state = "bg_demon"
- vamp_req = TRUE
-
-/obj/effect/proc_holder/spell/self/revive/cast(list/targets, mob/user = usr)
- if(!is_vampire(user) || !isliving(user))
- revert_cast()
- return
- if(user.stat != DEAD)
- to_chat(user, "We aren't dead enough to do that yet!")
- revert_cast()
- return
- if(user.reagents.has_reagent("holywater"))
- to_chat(user, "We cannot revive, holy water is in our system!")
- return
- var/mob/living/L = user
- if(istype(get_area(L.loc), /area/chapel))
- L.visible_message("[L] disintergrates into dust!", "Holy energy seeps into our very being, disintergrating us instantly!", "You hear sizzling.")
- new /obj/effect/decal/remains/human(L.loc)
- L.dust()
- to_chat(L, "We begin to reanimate... this will take a minute.")
- addtimer(CALLBACK(src, /obj/effect/proc_holder/spell/self/revive.proc/revive, L), 600)
-
-/obj/effect/proc_holder/spell/self/revive/proc/revive(mob/living/user)
- user.revive(full_heal = TRUE)
- user.visible_message("[user] reanimates from death!", "We get back up.")
- var/list/missing = user.get_missing_limbs()
- if(missing.len)
- playsound(user, 'sound/magic/demon_consume.ogg', 50, 1)
- user.visible_message("Shadowy matter takes the place of [user]'s missing limbs as they reform!")
- user.regenerate_limbs(0, list(BODY_ZONE_HEAD))
- user.regenerate_organs()
-
/obj/effect/proc_holder/spell/self/summon_coat
name = "Summon Dracula Coat (100)"
desc = "Allows you to summon a Vampire Coat providing passive usable blood restoration when your usable blood is very low."