From 2e670ba6d103e4ce34ea67c9d8211357db875c20 Mon Sep 17 00:00:00 2001 From: SomeguyManperson Date: Sun, 15 Mar 2020 09:58:18 -0400 Subject: [PATCH] vampire is a terrible gamemode --- yogstation/code/datums/antagonists/vampire.dm | 17 ++-- .../game/gamemodes/vampire/vampire_powers.dm | 95 ++++++++++--------- 2 files changed, 60 insertions(+), 52 deletions(-) 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."