From 1bb98edc0d157bbd019f3c73dc480a4722ba3968 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Thu, 10 Mar 2016 03:09:07 -0500 Subject: [PATCH 1/3] Refactors vampire abiliies to be spells --- code/__DEFINES/mob.dm | 14 - code/datums/mind.dm | 5 +- code/datums/spell.dm | 7 +- code/game/gamemodes/vampire/vampire.dm | 357 ++++---- code/game/gamemodes/vampire/vampire_powers.dm | 856 +++++++++--------- code/game/objects/items/weapons/weaponry.dm | 2 +- .../living/carbon/human/human_attackhand.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 2 +- .../living/carbon/human/species/species.dm | 8 +- .../oldchem/reagents/reagents_water.dm | 62 +- icons/mob/actions.dmi | Bin 50699 -> 53928 bytes 11 files changed, 651 insertions(+), 664 deletions(-) diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index 5442c621e1b..11500e125e4 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -1,17 +1,3 @@ -// Vampire power defines -#define VAMP_REJUV 1 -#define VAMP_GLARE 2 -#define VAMP_HYPNO 3 -#define VAMP_SHAPE 4 -#define VAMP_VISION 5 -#define VAMP_DISEASE 6 -#define VAMP_CLOAK 7 -#define VAMP_BATS 8 -#define VAMP_SCREAM 9 -#define VAMP_JAUNT 10 -#define VAMP_SLAVE 11 -#define VAMP_BLINK 12 -#define VAMP_FULL 13 ///////////////////ORGAN DEFINES/////////////////// // Organ defines. diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 56d8fac2d57..cfe913bd94e 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -886,9 +886,10 @@ if(src in ticker.mode.vampires) ticker.mode.vampires -= src special_role = null - current.remove_vampire_powers() + if(vampire) + vampire.remove_vampire_powers() + qdel(vampire) ticker.mode.update_vampire_icons_removed(src) - if(vampire) qdel(vampire) current << "You grow weak and lose your powers! You are no longer a vampire and are stuck in your current form!" log_admin("[key_name(usr)] has de-vampired [key_name(current)]") message_admins("[key_name_admin(usr)] has de-vampired [key_name_admin(current)]") diff --git a/code/datums/spell.dm b/code/datums/spell.dm index f129f085bdc..31da89fd424 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -88,10 +88,9 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin user << "Not when you're incapacitated." return 0 - if(ishuman(user)) - if(user.is_muzzled()) - user << "Mmmf mrrfff!" - return 0 + if(ishuman(user) && (invocation_type == "whisper" || invocation_type == "shout") && user.is_muzzled()) + user << "Mmmf mrrfff!" + return 0 var/obj/effect/proc_holder/spell/noclothes/spell = locate() in (user.spell_list | (user.mind ? user.mind.spell_list : list())) if(clothes_req && !(spell && istype(spell)))//clothes check if(!istype(user, /mob/living/carbon/human)) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index 7d304204613..16ef84e7064 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -37,7 +37,6 @@ var/vampire_amount = 4 - /datum/game_mode/vampire/announce() world << "The current game mode is - Vampires!" world << "There are Vampires from Space Transylvania on the station, keep your blood close and neck safe!" @@ -171,7 +170,8 @@ return /datum/game_mode/proc/grant_vampire_powers(mob/living/carbon/vampire_mob) - if(!istype(vampire_mob)) return + if(!istype(vampire_mob)) + return vampire_mob.make_vampire() /datum/game_mode/proc/greet_vampire(var/datum/mind/vampire, var/you_are=1) @@ -200,188 +200,131 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha var/mob/living/owner = null var/gender = FEMALE var/iscloaking = 0 // handles the vampire cloak toggle - var/list/powers = list() // list of available powers and passives, see defines in setup.dm + var/list/powers = list() // list of available powers and passives var/mob/living/carbon/human/draining // who the vampire is draining of blood var/nullified = 0 //Nullrod makes them useless for a short while. - var/upgradedRegen = 0 + var/list/upgrade_tiers = list( + /obj/effect/proc_holder/spell/vampire/self/rejuvinate = 0, + /obj/effect/proc_holder/spell/vampire/targetted/hypnotise = 0, + /obj/effect/proc_holder/spell/vampire/mob_aoe/glare = 0, + /datum/vampire_passive/vision = 100, + /obj/effect/proc_holder/spell/vampire/self/shapeshift = 100, + /obj/effect/proc_holder/spell/vampire/self/cloak = 150, + /obj/effect/proc_holder/spell/vampire/targetted/disease = 150, + /obj/effect/proc_holder/spell/vampire/bats = 200, + /obj/effect/proc_holder/spell/vampire/self/screech = 200, + /datum/vampire_passive/regen = 200, + /obj/effect/proc_holder/spell/vampire/shadowstep = 250, + /obj/effect/proc_holder/spell/vampire/self/jaunt = 300, + /obj/effect/proc_holder/spell/vampire/targetted/enthrall = 300, + /datum/vampire_passive/full = 500) + /datum/vampire/New(gend = FEMALE) gender = gend +/datum/vampire/proc/force_add_ability(path) + var/spell = new path(owner) + if(istype(spell, /obj/effect/proc_holder/spell)) + owner.mind.AddSpell(spell) + powers += spell + +/datum/vampire/proc/get_ability(path) + for(var/P in powers) + var/datum/power = P + if(power.type == path) + return power + return null + +/datum/vampire/proc/add_ability(path) + if(!get_ability(path)) + force_add_ability(path) + +/datum/vampire/proc/remove_ability(path) + var/A = get_ability(path) + if(A) + powers -= A + owner.spell_list.Remove(A) + qdel(A) + /mob/proc/make_vampire() - if(!mind) return + if(!mind) + return + var/datum/vampire/vamp if(!mind.vampire) - mind.vampire = new /datum/vampire(gender) - mind.vampire.owner = src - verbs += /client/vampire/proc/vampire_rejuvinate - verbs += /client/vampire/proc/vampire_hypnotise - verbs += /client/vampire/proc/vampire_glare - //testing purposes REMOVE BEFORE PUSH TO MASTER - /*for(var/handler in typesof(/client/proc)) - if(findtext("[handler]","vampire_")) - verbs += handler*/ - for(var/i = 1; i <= 3; i++) // CHANGE TO 3 RATHER THAN 12 AFTER TESTING IS DONE - if(!(i in mind.vampire.powers)) - mind.vampire.powers.Add(i) + vamp = new /datum/vampire(gender) + vamp.owner = src + mind.vampire = vamp + else + vamp = mind.vampire + vamp.powers.Cut() + vamp.check_vampire_upgrade(0) - for(var/n in mind.vampire.powers) - switch(n) - if(VAMP_SHAPE) - verbs += /client/vampire/proc/vampire_shapeshift - if(VAMP_VISION) - continue - if(VAMP_DISEASE) - verbs += /client/vampire/proc/vampire_disease - if(VAMP_CLOAK) - verbs += /client/vampire/proc/vampire_cloak - if(VAMP_BATS) - verbs += /client/vampire/proc/vampire_bats - if(VAMP_SCREAM) - verbs += /client/vampire/proc/vampire_screech - if(VAMP_JAUNT) - verbs += /client/vampire/proc/vampire_jaunt - if(VAMP_BLINK) - verbs += /client/vampire/proc/vampire_shadowstep - if(VAMP_SLAVE) - verbs += /client/vampire/proc/vampire_enthrall - if(VAMP_FULL) - continue -/mob/proc/remove_vampire_powers() - for(var/handler in typesof(/client/vampire/proc)) - if(findtext("[handler]","vampire_")) - verbs -= handler +/datum/vampire/proc/remove_vampire_powers() + for(var/P in powers) + remove_ability(P) + owner.alpha = 255 -/mob/proc/handle_bloodsucking(mob/living/carbon/human/H) - src.mind.vampire.draining = H +/datum/vampire/proc/handle_bloodsucking(mob/living/carbon/human/H) + draining = H var/blood = 0 - var/bloodtotal = 0 //used to see if we increased our blood total - var/bloodusable = 0 //used to see if we increased our blood usable - src.attack_log += text("\[[time_stamp()]\] Bit [src.name] ([src.ckey]) in the neck and draining their blood") - H.attack_log += text("\[[time_stamp()]\] Has been bit in the neck by [src.name] ([src.ckey])") - log_attack("[src.name] ([src.ckey]) bit [H.name] ([H.ckey]) in the neck") - src.visible_message("\red [src.name] bites [H.name]'s neck!", "\red You bite [H.name]'s neck and begin to drain their blood.", "\blue You hear a soft puncture and a wet sucking noise") - if(!iscarbon(src)) + var/old_bloodtotal = 0 //used to see if we increased our blood total + var/old_bloodusable = 0 //used to see if we increased our blood usable + owner.attack_log += text("\[[time_stamp()]\] Bit [H] ([H.ckey]) in the neck and draining their blood") + H.attack_log += text("\[[time_stamp()]\] Has been bit in the neck by [owner] ([owner.ckey])") + log_attack("[owner] ([owner.ckey]) bit [H] ([H.ckey]) in the neck") + owner.visible_message("[owner] bites [H]'s neck!", "You bite [H]'s neck and begin to drain their blood.", "You hear a soft puncture and a wet sucking noise.") + if(!iscarbon(owner)) H.LAssailant = null else - H.LAssailant = src - while(do_mob(src, H, 50)) - if(!mind.vampire || !(mind in ticker.mode.vampires)) - src << "\red Your fangs have disappeared!" - return 0 - bloodtotal = src.mind.vampire.bloodtotal - bloodusable = src.mind.vampire.bloodusable + H.LAssailant = owner + while(do_mob(owner, H, 50)) + if(!(owner.mind in ticker.mode.vampires)) + owner << "Your fangs have disappeared!" + return + old_bloodtotal = bloodtotal + old_bloodusable = bloodusable if(!H.vessel.get_reagent_amount("blood")) - src << "\red They've got no blood left to give." + src << "They've got no blood left to give." break - if(H.stat < 2) //alive + if(H.stat < DEAD) blood = min(20, H.vessel.get_reagent_amount("blood")) // if they have less than 20 blood, give them the remnant else they get 20 blood - src.mind.vampire.bloodtotal += blood/2 //divide by 2 to counted the double suction since removing cloneloss -Melandor0 - src.mind.vampire.bloodusable += blood/2 - //H.adjust CloneLoss(10) No cloneloss -Melandor0 + bloodtotal += blood / 2 //divide by 2 to counted the double suction since removing cloneloss -Melandor0 + bloodusable += blood / 2 else blood = min(5, H.vessel.get_reagent_amount("blood")) // The dead only give 5 bloods - src.mind.vampire.bloodtotal += blood - if(bloodtotal != src.mind.vampire.bloodtotal) - src << "\blue You have accumulated [src.mind.vampire.bloodtotal] [src.mind.vampire.bloodtotal > 1 ? "units" : "unit"] of blood[src.mind.vampire.bloodusable != bloodusable ?", and have [src.mind.vampire.bloodusable] left to use" : "."]" - check_vampire_upgrade(mind) - H.vessel.remove_reagent("blood",25) - if(ishuman(src)) - var/mob/living/carbon/human/V = src - V.nutrition = min(450,V.nutrition+(blood/2)) + bloodtotal += blood + if(old_bloodtotal != bloodtotal) + owner << "You have accumulated [bloodtotal] [bloodtotal > 1 ? "units" : "unit"] of blood[bloodusable != old_bloodusable ? ", and have [bloodusable] left to use" : ""]." + check_vampire_upgrade() + H.vessel.remove_reagent("blood", 25) + if(ishuman(owner)) + var/mob/living/carbon/human/V = owner + V.nutrition = min(450, V.nutrition + (blood / 2)) - src.mind.vampire.draining = null - src << "\blue You stop draining [H.name] of blood." - return 1 + draining = null + owner << "You stop draining [H.name] of blood." -/mob/proc/check_vampire_upgrade(datum/mind/v) - if(!v) return - if(!v.vampire) return - var/datum/vampire/vamp = v.vampire - var/list/old_powers = vamp.powers.Copy() +/datum/vampire/proc/check_vampire_upgrade(announce = 1) + var/list/old_powers = powers.Copy() - // This used to be a switch statement. - // Don't use switch statements for shit like this, since blood can be any random-ass value. - // if(100) requires the blood to be at EXACTLY 100 units to trigger. - // if(blud >= 100) activates when blood is at or over 100 units. - // TODO: Make this modular. + for(var/ptype in upgrade_tiers) + var/level = upgrade_tiers[ptype] + if(bloodtotal >= level) + add_ability(ptype) - // TIER 1 - if(vamp.bloodtotal >= 100) - if(!(VAMP_VISION in vamp.powers)) - vamp.powers.Add(VAMP_VISION) - if(!(VAMP_SHAPE in vamp.powers)) - vamp.powers.Add(VAMP_SHAPE) + if(announce) + announce_new_power(old_powers) - // TIER 2 - if(vamp.bloodtotal >= 150) - if(!(VAMP_CLOAK in vamp.powers)) - vamp.powers.Add(VAMP_CLOAK) - if(!(VAMP_DISEASE in vamp.powers)) - vamp.powers.Add(VAMP_DISEASE) - - // TIER 3 - if(vamp.bloodtotal >= 200) - if(!(VAMP_BATS in vamp.powers)) - vamp.powers.Add(VAMP_BATS) - if(!(VAMP_SCREAM in vamp.powers)) - vamp.powers.Add(VAMP_SCREAM) - if(!(vamp.upgradedRegen)) // to prevent spamming - src << "Your rejuvination abilities have improved and will now heal you over time when used." - vamp.upgradedRegen = 1 - - // TIER 3.5 (/vg/) - if(vamp.bloodtotal >= 250) - if(!(VAMP_BLINK in vamp.powers)) - vamp.powers.Add(VAMP_BLINK) - - // TIER 4 - if(vamp.bloodtotal >= 300) - if(!(VAMP_JAUNT in vamp.powers)) - vamp.powers.Add(VAMP_JAUNT) - if(!(VAMP_SLAVE in vamp.powers)) - vamp.powers.Add(VAMP_SLAVE) - - // TIER 5 - if(vamp.bloodtotal >= 500) - if(!(VAMP_FULL in vamp.powers)) - vamp.powers.Add(VAMP_FULL) - - announce_new_power(old_powers, vamp.powers) - -/mob/proc/announce_new_power(list/old_powers, list/new_powers) - for(var/n in new_powers) - if(!(n in old_powers)) - switch(n) - if(VAMP_SHAPE) - src << "\blue You have gained the shapeshifting ability, at the cost of stored blood you can change your form permanently." - verbs += /client/vampire/proc/vampire_shapeshift - if(VAMP_VISION) - src << "\blue Your vampiric vision has improved." - //no verb - if(VAMP_DISEASE) - src << "\blue You have gained the Diseased Touch ability which causes those you touch to die shortly after unless treated medically." - verbs += /client/vampire/proc/vampire_disease - if(VAMP_CLOAK) - src << "\blue You have gained the Cloak of Darkness ability which when toggled makes you near invisible in the shroud of darkness." - verbs += /client/vampire/proc/vampire_cloak - if(VAMP_BATS) - src << "\blue You have gained the Summon Bats ability." - verbs += /client/vampire/proc/vampire_bats // work in progress - if(VAMP_SCREAM) - src << "\blue You have gained the Chriopteran Screech ability which stuns anything with ears in a large radius and shatters glass in the process." - verbs += /client/vampire/proc/vampire_screech - if(VAMP_JAUNT) - src << "\blue You have gained the Mist Form ability which allows you to take on the form of mist for a short period and pass over any obstacle in your path." - verbs += /client/vampire/proc/vampire_jaunt - if(VAMP_SLAVE) - src << "\blue You have gained the Enthrall ability which at a heavy blood cost allows you to enslave a human that is not loyal to any other for a random period of time." - verbs += /client/vampire/proc/vampire_enthrall - if(VAMP_BLINK) - src << "\blue You have gained the ability to shadowstep, which makes you disappear into nearby shadows at the cost of blood." - verbs += /client/vampire/proc/vampire_shadowstep - if(VAMP_FULL) - src << "\blue You have reached your full potential and are no longer weak to the effects of anything holy and your vision has been improved greatly." - //no verb +/datum/vampire/proc/announce_new_power(list/old_powers) + for(var/p in powers) + if(!(p in old_powers)) + if(istype(p, /obj/effect/proc_holder/spell/vampire)) + var/obj/effect/proc_holder/spell/vampire/power = p + owner << "[power.gain_desc]" + else if(istype(p, /datum/vampire_passive)) + var/datum/vampire_passive/power = p + owner << "[power.gain_desc]" //prepare for copypaste /datum/game_mode/proc/update_vampire_icons_added(datum/mind/vampire_mind) @@ -411,55 +354,79 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha //world << "Removed [vampire_mind.current.name] from vampire shit" vampire_mind.current << "\red The fog clouding your mind clears. You remember nothing from the moment you were enthralled until now." -/mob/living/carbon/human/proc/check_sun() - - var/ax = x - var/ay = y +/datum/vampire/proc/check_sun() + var/ax = owner.x + var/ay = owner.y for(var/i = 1 to 20) ax += sun.dx ay += sun.dy - var/turf/T = locate( round(ax,0.5),round(ay,0.5),z) + var/turf/T = locate(round(ax, 0.5), round(ay, 0.5), owner.z) - if(T.x == 1 || T.x==world.maxx || T.y==1 || T.y==world.maxy) + if(T.x == 1 || T.x == world.maxx || T.y == 1 || T.y == world.maxy) break if(T.density) return vamp_burn() -/mob/living/carbon/human/proc/handle_vampire() - if(hud_used) - if(!hud_used.vampire_blood_display) - hud_used.vampire_hud() - hud_used.vampire_blood_display.maptext = "
[mind.vampire.bloodusable]
" +/datum/vampire/proc/handle_vampire() + if(owner.hud_used) + var/datum/hud/hud = owner.hud_used + if(!hud.vampire_blood_display) + hud.vampire_hud() + hud.vampire_blood_display.maptext = "
[bloodusable]
" handle_vampire_cloak() - if(istype(loc, /turf/space)) + if(istype(owner.loc, /turf/space)) check_sun() - if(istype(loc.loc, /area/chapel) && !(VAMP_FULL in src.mind.vampire.powers)) + if(istype(owner.loc.loc, /area/chapel) && !get_ability(/datum/vampire_passive/full)) vamp_burn() - mind.vampire.nullified = max(0, mind.vampire.nullified - 1) + nullified = max(0, nullified - 1) -mob/living/carbon/human/proc/vamp_burn() - if(prob(35)) - switch(health) - if(80 to 100) - src << "\red Your skin flakes away..." - if(60 to 80) - src << "Your skin sizzles!" - if((-INFINITY) to 60) - if(!on_fire) - src << "\red Your skin catches fire!" - else - src << "\red You continue to burn!" - fire_stacks += 5 - IgniteMob() - emote("scream") +/datum/vampire/proc/handle_vampire_cloak() + if(!ishuman(owner)) + owner.alpha = 255 + return + var/turf/simulated/T = get_turf(owner) + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T + var/light_available + if(L) + light_available = L.get_clamped_lum(0.5) * 10 else - switch(health) + light_available = 10 + + if(!istype(T)) + return 0 + + if(!iscloaking) + owner.alpha = 255 + return 0 + if(light_available <= 2) + owner.alpha = round((255 * 0.15)) + return 1 + else + owner.alpha = round((255 * 0.80)) + +/datum/vampire/proc/vamp_burn() + if(prob(35)) + switch(owner.health) + if(80 to 100) + owner << "Your skin flakes away..." + if(60 to 80) + owner << "Your skin sizzles!" if((-INFINITY) to 60) - fire_stacks++ - IgniteMob() - adjustFireLoss(3) - return + if(!owner.on_fire) + owner << "Your skin catches fire!" + else + owner << "You continue to burn!" + owner.fire_stacks += 5 + owner.IgniteMob() + owner.emote("scream") + else + switch(owner.health) + if((-INFINITY) to 60) + owner.fire_stacks++ + owner.IgniteMob() + owner.adjustFireLoss(3) + return \ No newline at end of file diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 5794b144d51..13894ddf025 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -1,296 +1,307 @@ //This should hold all the vampire related powers +/obj/effect/proc_holder/spell/vampire + panel = "Vampire" + school = "vampire" + clothes_req = 0 + range = 1 + charge_max = 1800 + action_background_icon_state = "bg_vampire" + var/required_blood = 0 + var/gain_desc = null -/mob/proc/vampire_power(required_blood=0, max_stat=0) +/obj/effect/proc_holder/spell/vampire/New() + ..() + if(!gain_desc) + gain_desc = "You have gained \the [src] ability." - if(!src.mind) return 0 - if(!ishuman(src)) - src << "You are in too weak of a form to do this!" +/obj/effect/proc_holder/spell/vampire/cast_check(skipcharge = 0, mob/living/user = usr) + if(!user.mind) + return 0 + if(!ishuman(user)) + user << "You are in too weak of a form to do this!" return 0 - var/datum/vampire/vampire = src.mind.vampire + var/datum/vampire/vampire = user.mind.vampire if(!vampire) - log_to_dd("[src] has vampire verbs but isn't a vampire.") return 0 - var/fullpower = (VAMP_FULL in vampire.powers) + var/fullpower = vampire.get_ability(/datum/vampire_passive/full) - if(src.stat > max_stat) - src << "You are incapacitated." + if(user.stat >= DEAD) + user << "Not when you're dead!" return 0 - if(vampire.nullified) - if(!fullpower) - src << "Something is blocking your powers!" - return 0 + if(vampire.nullified && !fullpower) + user << "Something is blocking your powers!" + return 0 if(vampire.bloodusable < required_blood) - src << "You require at least [required_blood] units of usable blood to do that!" + user << "You require at least [required_blood] units of usable blood to do that!" return 0 //chapel check - if(istype(loc.loc, /area/chapel)) - if(!fullpower) - src << "Your powers are useless on this holy ground." - return 0 - return 1 + if(istype(loc.loc, /area/chapel) && !fullpower) + user << "Your powers are useless on this holy ground." + return 0 + return ..() -/mob/proc/vampire_affected(datum/mind/M) +/obj/effect/proc_holder/spell/vampire/can_cast(mob/user = usr) + if(!user.mind) + return 0 + if(!ishuman(user)) + return 0 + + var/datum/vampire/vampire = user.mind.vampire + + if(!vampire) + return 0 + + var/fullpower = vampire.get_ability(/datum/vampire_passive/full) + + if(user.stat >= DEAD) + return 0 + + if(vampire.nullified && !fullpower) + return 0 + if(vampire.bloodusable < required_blood) + return 0 + if(istype(loc.loc, /area/chapel) && !fullpower) + return 0 + return ..() + +/obj/effect/proc_holder/spell/vampire/proc/affects(mob/target, mob/user = usr) //Other vampires aren't affected - if(mind && mind.vampire) return 0 + if(target.mind && target.mind.vampire) + return 0 //Vampires who have reached their full potential can affect nearly everything - if(M && M.vampire && (VAMP_FULL in M.vampire.powers)) + if(user.mind.vampire.get_ability(/datum/vampire_passive/full)) return 1 //Chaplains are resistant to vampire powers - if(mind && mind.assigned_role == "Chaplain") + if(target.mind && target.mind.assigned_role == "Chaplain") return 0 return 1 -/mob/proc/vampire_can_reach(mob/M as mob, active_range = 1) - if(M.loc == src.loc) return 1 //target and source are in the same thing - if(!isturf(src.loc) || !isturf(M.loc)) return 0 //One is inside, the other is outside something. - if(Adjacent(M))//if(AStar(src.loc, M.loc, /turf/proc/AdjacentTurfs, /turf/proc/Distance, active_range)) //If a path exists, good! - return 1 - return 0 +/obj/effect/proc_holder/spell/vampire/proc/can_reach(mob/M as mob) + if(M.loc == usr.loc) + return 1 //target and source are in the same thing + return M in oview_or_orange(range, usr, selection_type) -/mob/proc/vampire_active(required_blood=0, max_stat=0, active_range=1) - var/pass = vampire_power(required_blood, max_stat) - if(!pass) return - var/datum/vampire/vampire = mind.vampire - if(!vampire) return - var/list/victims = list() - for(var/mob/living/carbon/C in view(active_range)) - victims += C - var/mob/living/carbon/T = input(src, "Victim?") as null|anything in victims +/obj/effect/proc_holder/spell/vampire/before_cast(list/targets) + // sanity check before we cast + if(!usr.mind || !usr.mind.vampire) + targets.Cut() + return - if(!T) return - if(!(T in view(active_range))) return - if(!vampire_can_reach(T, active_range)) return - if(!vampire_power(required_blood, max_stat)) return - return T + if(!required_blood) + return -/client/vampire/proc/vampire_rejuvinate() - set category = "Abilities" - set name = "Rejuvinate " - set desc= "Flush your system with spare blood to remove any incapacitating effects" - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(0, 1)) - M.current.SetWeakened(0) - M.current.SetStunned(0) - M.current.SetParalysis(0) - M.current.adjustStaminaLoss(-75) - //M.vampire.bloodusable -= 10 - M.current << "\blue You flush your system with clean blood and remove any incapacitating effects." - spawn(1) - if(M.vampire.bloodtotal >= 200) - for(var/i = 0; i < 5; i++) - M.current.adjustBruteLoss(-2) - M.current.adjustOxyLoss(-5) - M.current.adjustToxLoss(-2) - M.current.adjustFireLoss(-2) - sleep(35) - M.current.verbs -= /client/vampire/proc/vampire_rejuvinate - spawn(200) - M.current.verbs += /client/vampire/proc/vampire_rejuvinate + // enforce blood + var/datum/vampire/vampire = usr.mind.vampire -/client/vampire/proc/vampire_hypnotise() - set category = "Abilities" - set name = "Hypnotise (20)" - set desc= "A piercing stare that incapacitates your victim for a good length of time." - var/datum/mind/M = usr.mind - if(!M) return + if(required_blood <= vampire.bloodusable) + vampire.bloodusable -= required_blood + else + // stop!! + targets.Cut() - var/mob/living/carbon/C = M.current.vampire_active(20, 0, 1) + if(targets.len) + usr << "You have [vampire.bloodusable] left to use." - if(!C) return - M.current.visible_message("[M]'s eyes flash briefly as he stares into [C.name]'s eyes") - M.current.remove_vampire_blood(20) - M.current.verbs -= /client/vampire/proc/vampire_hypnotise - spawn(1800) - M.current.verbs += /client/vampire/proc/vampire_hypnotise - if(do_mob(M.current, C, 50)) - if(C.mind && C.mind.vampire) - M.current << "\red Your piercing gaze fails to knock out [C.name]." - C << "\blue [M.current]'s feeble gaze is ineffective." - return +/obj/effect/proc_holder/spell/vampire/targetted/choose_targets(mob/user = usr) + var/list/possible_targets[0] + for(var/mob/living/carbon/C in oview_or_orange(range, user, selection_type)) + possible_targets += C + var/mob/living/carbon/T = input(user, "Choose your victim.", name) as null|mob in possible_targets + + if(!T || !can_reach(T)) + revert_cast(user) + return + + perform(list(T)) + +/obj/effect/proc_holder/spell/vampire/self/choose_targets(mob/user = usr) + perform(list(user)) + +/obj/effect/proc_holder/spell/vampire/mob_aoe/choose_targets(mob/user = usr) + var/list/targets[0] + for(var/mob/living/carbon/C in oview_or_orange(range, user, selection_type)) + targets += C + + if(!targets.len) + revert_cast(user) + return + + perform(targets) + +/datum/vampire_passive + var/gain_desc + +/datum/vampire_passive/New() + ..() + if(!gain_desc) + gain_desc = "You have gained \the [src] ability." + +//////////////////////////////////////////////////////////////////////////////////////////////////////// + +/obj/effect/proc_holder/spell/vampire/self/rejuvinate + name = "Rejuvinate" + desc= "Flush your system with spare blood to remove any incapacitating effects." + action_icon_state = "vampire_rejuvinate" + charge_max = 200 + stat_allowed = 1 + +/obj/effect/proc_holder/spell/vampire/self/rejuvinate/cast() + var/mob/living/U = usr + + usr.SetWeakened(0) + usr.SetStunned(0) + usr.SetParalysis(0) + U.adjustStaminaLoss(-75) + usr << "You flush your system with clean blood and remove any incapacitating effects." + spawn(1) + if(usr.mind.vampire.get_ability(/datum/vampire_passive/regen)) + for(var/i = 1 to 5) + U.adjustBruteLoss(-2) + U.adjustOxyLoss(-5) + U.adjustToxLoss(-2) + U.adjustFireLoss(-2) + sleep(35) + +/obj/effect/proc_holder/spell/vampire/targetted/hypnotise + name = "Hypnotise (20)" + desc= "A piercing stare that incapacitates your victim for a good length of time." + action_icon_state = "vampire_hypnotise" + required_blood = 20 + +/obj/effect/proc_holder/spell/vampire/targetted/hypnotise/cast(list/targets) + for(var/mob/living/target in targets) + usr.visible_message("[usr]'s eyes flash briefly as he stares into [target]'s eyes") + if(do_mob(usr, target, 50)) + if(!affects(target)) + usr << "Your piercing gaze fails to knock out [target]." + target << "\blue [usr]'s feeble gaze is ineffective." + else + usr << "Your piercing gaze knocks out [target]." + target << "You find yourself unable to move and barely able to speak." + target.Weaken(10) + target.Stun(10) + target.stuttering = 10 else - M.current << "\red Your piercing gaze knocks out [C.name]." - C << "\red You find yourself unable to move and barely able to speak" - C.Weaken(10) - C.Stun(10) - C.stuttering = 10 - else - M.current << "\red You broke your gaze." + revert_cast(usr) + usr << "You broke your gaze." + +/obj/effect/proc_holder/spell/vampire/targetted/disease + name = "Diseased Touch (100)" + desc = "Touches your victim with infected blood giving them the Shutdown Syndrome which quickly shutsdown their major organs resulting in a quick painful death." + gain_desc = "You have gained the Diseased Touch ability which causes those you touch to die shortly after unless treated medically." + action_icon_state = "vampire_disease" + required_blood = 100 + +/obj/effect/proc_holder/spell/vampire/targetted/disease/cast(list/targets) + for(var/mob/living/carbon/target in targets) + usr << "You stealthily infect [target] with your diseased touch." + target.help_shake_act(usr) + if(!affects(target)) + usr << "They seem to be unaffected." + continue + var/datum/disease2/disease/shutdown = new /datum/disease2/disease + var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder + var/datum/disease2/effect/organs/vampire/O = new /datum/disease2/effect/organs/vampire + holder.effect += O + holder.chance = 10 + shutdown.infectionchance = 100 + shutdown.antigen |= text2num(pick(ANTIGENS)) + shutdown.antigen |= text2num(pick(ANTIGENS)) + shutdown.spreadtype = "None" + shutdown.uniqueID = rand(0,10000) + shutdown.effects += holder + shutdown.speed = 1 + shutdown.stage = 2 + shutdown.clicks = 185 + infect_virus2(target, shutdown, 0) + +/obj/effect/proc_holder/spell/vampire/mob_aoe/glare + name = "Glare" + desc = "A scary glare that incapacitates people for a short while around you." + action_icon_state = "vampire_glare" + charge_max = 300 + stat_allowed = 1 + +/obj/effect/proc_holder/spell/vampire/mob_aoe/glare/cast(list/targets) + usr.visible_message("[usr]'s eyes emit a blinding flash!") + if(istype(usr:glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) + usr << "You're blindfolded!" return + for(var/mob/living/target in targets) + if(!affects(target)) + continue + target.Stun(5) + target.Weaken(5) + target.stuttering = 20 + target << "You are blinded by [usr]'s glare." -/client/vampire/proc/vampire_disease() - set category = "Abilities" - set name = "Diseased Touch (100)" - set desc = "Touches your victim with infected blood giving them the Shutdown Syndrome which quickly shutsdown their major organs resulting in a quick painful death." - var/datum/mind/M = usr.mind - if(!M) return +/obj/effect/proc_holder/spell/vampire/self/shapeshift + name = "Shapeshift (50)" + desc = "Changes your name and appearance at the cost of 50 blood and has a cooldown of 3 minutes." + gain_desc = "You have gained the shapeshifting ability, at the cost of stored blood you can change your form permanently." + action_icon_state = "genetic_poly" + required_blood = 50 - var/mob/living/carbon/C = M.current.vampire_active(100, 0, 1) - if(!C) return - if(!M.current.vampire_can_reach(C, 1)) - M.current << "\red You cannot touch [C.name] from where you are standing!" - return - M.current << "\red You stealthily infect [C.name] with your diseased touch." - /*var/t_him = "it" - if (src.gender == MALE) - t_him = "him" - else if (src.gender == FEMALE) - t_him = "her" - M.current.visible_message("\blue [M] shakes [src] trying to wake [t_him] up!" ) - playsound(get_turf(src), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)*/ - C.help_shake_act(M.current) // i use da colon - if(!C.vampire_affected(M)) - M.current << "\red They seem to be unaffected." - return - var/datum/disease2/disease/shutdown = new /datum/disease2/disease - var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder - var/datum/disease2/effect/organs/vampire/O = new /datum/disease2/effect/organs/vampire - holder.effect += O - holder.chance = 10 - shutdown.infectionchance = 100 - shutdown.antigen |= text2num(pick(ANTIGENS)) - shutdown.antigen |= text2num(pick(ANTIGENS)) - shutdown.spreadtype = "None" - shutdown.uniqueID = rand(0,10000) - shutdown.effects += holder - shutdown.speed = 1 - shutdown.stage = 2 - shutdown.clicks = 185 - infect_virus2(C,shutdown,0) - M.current.remove_vampire_blood(100) - M.current.verbs -= /client/vampire/proc/vampire_disease - spawn(1800) M.current.verbs += /client/vampire/proc/vampire_disease +/obj/effect/proc_holder/spell/vampire/self/shapeshift/cast() + usr.visible_message("[usr] transforms!") + usr.client.prefs.real_name = usr.generate_name() + usr.client.prefs.random_character() + usr.client.prefs.copy_to(usr) + usr.regenerate_icons() -/client/vampire/proc/vampire_glare() - set category = "Abilities" - set name = "Glare" - set desc= "A scary glare that incapacitates people for a short while around you." - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(0, 1)) - M.current.visible_message("\red [M.current]'s eyes emit a blinding flash!") - //M.vampire.bloodusable -= 10 - M.current.verbs -= /client/vampire/proc/vampire_glare - spawn(300) - M.current.verbs += /client/vampire/proc/vampire_glare - if(istype(M.current:glasses, /obj/item/clothing/glasses/sunglasses/blindfold)) - M.current << "You're blindfolded!" - return - for(var/mob/living/carbon/C in view(1)) - if(!C.vampire_affected(M)) continue - if(!M.current.vampire_can_reach(C, 1)) continue - C.Stun(5) - C.Weaken(5) - C.stuttering = 20 - C << "\red You are blinded by [M.current]'s glare" +/obj/effect/proc_holder/spell/vampire/self/screech + name = "Chiroptean Screech (30)" + desc = "An extremely loud shriek that stuns nearby humans and breaks windows as well." + gain_desc = "You have gained the Chriopteran Screech ability which stuns anything with ears in a large radius and shatters glass in the process." + action_icon_state = "vampire_screech" + required_blood = 30 -/client/vampire/proc/vampire_shapeshift() - set category = "Abilities" - set name = "Shapeshift (50)" - set desc = "Changes your name and appearance at the cost of 50 blood and has a cooldown of 3 minutes." - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(50, 0)) - M.current.visible_message("[M.current.name] transforms!") - M.current.client.prefs.real_name = M.current.generate_name() //random_name(M.current.gender) - M.current.client.prefs.random_character() - M.current.client.prefs.copy_to(M.current) - M.current.regenerate_icons() - M.current.remove_vampire_blood(50) - M.current.verbs -= /client/vampire/proc/vampire_shapeshift - spawn(1800) M.current.verbs += /client/vampire/proc/vampire_shapeshift +/obj/effect/proc_holder/spell/vampire/self/screech/cast() + usr.visible_message("[usr] lets out an ear piercing shriek!", "You let out a loud shriek.", "You hear a loud painful shriek!") + for(var/mob/living/carbon/C in hearers(4)) + if(C == usr) + continue + if(ishuman(C) && (C:l_ear || C:r_ear) && istype((C:l_ear || C:r_ear), /obj/item/clothing/ears/earmuffs)) + continue + if(!affects(C)) + continue + C << "You hear a ear piercing shriek and your senses dull!" + C.Weaken(4) + C.ear_deaf = 20 + C.stuttering = 20 + C.Stun(4) + C.Jitter(150) + for(var/obj/structure/window/W in view(4)) + W.destroy() + playsound(usr.loc, 'sound/effects/creepyshriek.ogg', 100, 1) -/client/vampire/proc/vampire_screech() - set category = "Abilities" - set name = "Chiroptean Screech (30)" - set desc = "An extremely loud shriek that stuns nearby humans and breaks windows as well." - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(30, 0)) - M.current.visible_message("\red [M.current.name] lets out an ear piercing shriek!", "\red You let out a loud shriek.", "\red You hear a loud painful shriek!") - for(var/mob/living/carbon/C in hearers(4, M.current)) - if(C == M.current) continue - if(ishuman(C) && (C:l_ear || C:r_ear) && istype((C:l_ear || C:r_ear), /obj/item/clothing/ears/earmuffs)) continue - if(!C.vampire_affected(M)) continue - C << "You hear a ear piercing shriek and your senses dull!" - C.Weaken(4) - C.ear_deaf = 20 - C.stuttering = 20 - C.Stun(4) - C.Jitter(150) - for(var/obj/structure/window/W in view(4)) - W.destroy() - playsound(M.current.loc, 'sound/effects/creepyshriek.ogg', 100, 1) - M.current.remove_vampire_blood(30) - M.current.verbs -= /client/vampire/proc/vampire_screech - spawn(1800) M.current.verbs += /client/vampire/proc/vampire_screech +/obj/effect/proc_holder/spell/vampire/targetted/enthrall + name = "Enthrall (300)" + desc = "You use a large portion of your power to sway those loyal to none to be loyal to you only." + gain_desc = "You have gained the Enthrall ability which at a heavy blood cost allows you to enslave a human that is not loyal to any other for a random period of time." + action_icon_state = "vampire_enthrall" + required_blood = 300 -/client/vampire/proc/vampire_enthrall() - set category = "Abilities" - set name = "Enthrall (300)" - set desc = "You use a large portion of your power to sway those loyal to none to be loyal to you only." - var/datum/mind/M = usr.mind - if(!M) return - var/mob/living/carbon/C = M.current.vampire_active(300, 0, 1) - if(!C) return - M.current.visible_message("\red [M.current.name] bites [C.name]'s neck!", "\red You bite [C.name]'s neck and begin the flow of power.") - C << "You feel the tendrils of evil invade your mind." - if(!ishuman(C)) - M.current << "\red You can only enthrall humans" - return +/obj/effect/proc_holder/spell/vampire/targetted/enthrall/cast(list/targets) + for(var/mob/living/target in targets) + usr.visible_message("[usr] bites [target]'s neck!", "You bite [target]'s neck and begin the flow of power.") + target << "You feel the tendrils of evil invade your mind." + if(!ishuman(target)) + usr << "You can only enthrall humans." + break + if(do_mob(usr, target, 50)) + if(can_enthrall(usr, target)) + handle_enthrall(usr, target) + else + revert_cast(usr) + usr << "You or your target either moved or you dont have enough usable blood." - if(do_mob(M.current, C, 50)) - if(M.current.can_enthrall(C) && M.current.vampire_power(300, 0)) // recheck - M.current.handle_enthrall(C) - M.current.remove_vampire_blood(300) - M.current.verbs -= /client/vampire/proc/vampire_enthrall - spawn(1800) M.current.verbs += /client/vampire/proc/vampire_enthrall - else - M.current << "\red You or your target either moved or you dont have enough usable blood." - return - - - -/client/vampire/proc/vampire_cloak() - set category = "Abilities" - set name = "Cloak of Darkness (toggle)" - set desc = "Toggles whether you are currently cloaking yourself in darkness." - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(0, 0)) - M.vampire.iscloaking = !M.vampire.iscloaking - M.current << "\blue You will now be [M.vampire.iscloaking ? "hidden" : "seen"] in darkness." - -/mob/proc/handle_vampire_cloak() - if(!mind || !mind.vampire || !ishuman(src)) - alpha = 255 - return - var/turf/simulated/T = get_turf(src) - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T - var/light_available - if(L) - light_available = L.get_clamped_lum(0.5)*10 - else - light_available = 10 - - if(!istype(T)) - return 0 - - if(!mind.vampire.iscloaking) - alpha = 255 - return 0 - if(light_available <= 2) - alpha = round((255 * 0.15)) - return 1 - else - alpha = round((255 * 0.80)) - -/mob/proc/can_enthrall(mob/living/carbon/C) +/obj/effect/proc_holder/spell/vampire/targetted/enthrall/proc/can_enthrall(mob/living/user, mob/living/carbon/C) var/enthrall_safe = 0 for(var/obj/item/weapon/implant/loyalty/L in C) if(L && L.implanted) @@ -301,197 +312,226 @@ enthrall_safe = 1 break if(!C) - log_to_dd("something bad happened on enthralling a mob src is [src] [src.key] \ref[src]") + log_to_dd("something bad happened on enthralling a mob, attacker is [user] [user.key] \ref[user]") return 0 if(!C.mind) - src << "\red [C.name]'s mind is not there for you to enthrall." + user << "" return 0 if(enthrall_safe || ( C.mind in ticker.mode.vampires )||( C.mind.vampire )||( C.mind in ticker.mode.vampire_enthralled )) - C.visible_message("\red [C] seems to resist the takeover!", "\blue You feel a familiar sensation in your skull that quickly dissipates.") + C.visible_message("[C] seems to resist the takeover!", "You feel a familiar sensation in your skull that quickly dissipates.") return 0 - if(!C.vampire_affected(mind)) - C.visible_message("\red [C] seems to resist the takeover!", "\blue Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil") + if(!affects(C)) + C.visible_message("[C] seems to resist the takeover!", "Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil.") if(!ishuman(C)) - src << "\red You can only enthrall humans!" + user << "You can only enthrall humans!" return 0 return 1 -/mob/proc/handle_enthrall(mob/living/carbon/human/H as mob) +/obj/effect/proc_holder/spell/vampire/targetted/enthrall/proc/handle_enthrall(mob/living/user, mob/living/carbon/human/H as mob) if(!istype(H)) - src << "\red SOMETHING WENT WRONG, YELL AT POMF OR NEXIS" return 0 - var/ref = "\ref[src.mind]" + var/ref = "\ref[user.mind]" if(!(ref in ticker.mode.vampire_thralls)) ticker.mode.vampire_thralls[ref] = list(H.mind) else ticker.mode.vampire_thralls[ref] += H.mind ticker.mode.update_vampire_icons_added(H.mind) - ticker.mode.update_vampire_icons_added(src.mind) - var/datum/mindslaves/slaved = src.mind.som + ticker.mode.update_vampire_icons_added(user.mind) + var/datum/mindslaves/slaved = user.mind.som H.mind.som = slaved slaved.serv += H - slaved.add_serv_hud(src.mind,"vampire")//handles master servent icons - slaved.add_serv_hud(H.mind,"vampthrall") + slaved.add_serv_hud(user.mind, "vampire")//handles master servent icons + slaved.add_serv_hud(H.mind, "vampthrall") ticker.mode.vampire_enthralled.Add(H.mind) - ticker.mode.vampire_enthralled[H.mind] = src.mind + ticker.mode.vampire_enthralled[H.mind] = user.mind H.mind.special_role = "VampThrall" - H << "\red You have been Enthralled by [name]. Follow their every command." - src << "\red You have successfully Enthralled [H.name]. If they refuse to do as you say just adminhelp." - log_admin("[ckey(src.key)] has mind-slaved [ckey(H.key)].") + H << "You have been Enthralled by [user]. Follow their every command." + src << "You have successfully Enthralled [H]. If they refuse to do as you say just adminhelp." + log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].") -/client/vampire/proc/vampire_bats() - set category = "Abilities" - set name = "Summon Bats (75)" - set desc = "You summon a pair of space bats who attack nearby targets until they or their target is dead." - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(75, 0)) - var/list/turf/locs = new - var/number = 0 - for(var/direction in alldirs) //looking for bat spawns - if(locs.len == 2) //we found 2 locations and thats all we need - break - var/turf/T = get_step(M.current,direction) //getting a loc in that direction - if(AStar(M.current.loc, T, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 1, simulated_only = 0)) // if a path exists, so no dense objects in the way its valid salid - locs += T - if(locs.len) - for(var/turf/tospawn in locs) - number++ - new /mob/living/simple_animal/hostile/scarybat(tospawn, M.current) - if(number != 2) //if we only found one location, spawn one on top of our tile so we dont get stacked bats - new /mob/living/simple_animal/hostile/scarybat(M.current.loc, M.current) - else // we had no good locations so make two on top of us - new /mob/living/simple_animal/hostile/scarybat(M.current.loc, M.current) - new /mob/living/simple_animal/hostile/scarybat(M.current.loc, M.current) - M.current.remove_vampire_blood(75) - M.current.verbs -= /client/vampire/proc/vampire_bats - spawn(1200) M.current.verbs += /client/vampire/proc/vampire_bats +/obj/effect/proc_holder/spell/vampire/self/cloak + name = "Cloak of Darkness" + desc = "Toggles whether you are currently cloaking yourself in darkness." + gain_desc = "You have gained the Cloak of Darkness ability which when toggled makes you near invisible in the shroud of darkness." + action_icon_state = "vampire_cloak" + charge_max = 10 -/client/vampire/proc/vampire_jaunt() - //AHOY COPY PASTE INCOMING - set category = "Abilities" - set name = "Mist Form (30)" - set desc = "You take on the form of mist for a short period of time." +/obj/effect/proc_holder/spell/vampire/self/cloak/New() + ..() + update_name() + +/obj/effect/proc_holder/spell/vampire/self/cloak/proc/update_name() + var/mob/living/user = loc + if(!ishuman(user) || !user.mind || !user.mind.vampire) + return + name = "[initial(name)] ([user.mind.vampire.iscloaking ? "Deactivate" : "Activate"])" + +/obj/effect/proc_holder/spell/vampire/self/cloak/cast() + var/datum/vampire/V = usr.mind.vampire + V.iscloaking = !V.iscloaking + update_name() + usr << "You will now be [V.iscloaking ? "hidden" : "seen"] in darkness." + +/obj/effect/proc_holder/spell/vampire/bats + name = "Summon Bats (75)" + desc = "You summon a pair of space bats who attack nearby targets until they or their target is dead." + gain_desc = "You have gained the Summon Bats ability." + action_icon_state = "vampire_bats" + charge_max = 1200 + required_blood = 75 + var/num_bats = 2 + +/obj/effect/proc_holder/spell/vampire/bats/choose_targets(mob/user = usr) + var/list/turf/locs = new + for(var/direction in alldirs) //looking for bat spawns + if(locs.len == num_bats) //we found 2 locations and thats all we need + break + var/turf/T = get_step(usr, direction) //getting a loc in that direction + if(AStar(usr.loc, T, /turf/proc/AdjacentTurfs, /turf/proc/Distance, 1, simulated_only = 0)) // if a path exists, so no dense objects in the way its valid salid + locs += T + + // pad with player location + for(var/i = locs.len + 1 to num_bats) + locs += user.loc + + perform(locs) + +/obj/effect/proc_holder/spell/vampire/bats/cast(list/targets) + for(var/T in targets) + new /mob/living/simple_animal/hostile/scarybat(T, usr) + +/obj/effect/proc_holder/spell/vampire/self/jaunt + name = "Mist Form (30)" + desc = "You take on the form of mist for a short period of time." + gain_desc = "You have gained the Mist Form ability which allows you to take on the form of mist for a short period and pass over any obstacle in your path." + action_icon_state = "jaunt" + charge_max = 600 + required_blood = 30 var/jaunt_duration = 50 //in deciseconds - var/datum/mind/M = usr.mind - if(!M) return - if(M.current.vampire_power(30, 0)) - if(M.current.buckled) M.current.buckled.unbuckle_mob() - spawn(0) - var/originalloc = get_turf(M.current.loc) - var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt( originalloc ) - var/atom/movable/overlay/animation = new /atom/movable/overlay( originalloc ) - animation.name = "water" - animation.density = 0 - animation.anchored = 1 - animation.icon = 'icons/mob/mob.dmi' - animation.icon_state = "liquify" - animation.layer = 5 - animation.master = holder - M.current.ExtinguishMob() - if(M.current.buckled) - M.current.buckled.unbuckle_mob() - flick("liquify",animation) - M.current.loc = holder - M.current.client.eye = holder - var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() - steam.set_up(10, 0, originalloc) - steam.start() - sleep(jaunt_duration) - var/mobloc = get_turf(M.current.loc) - if(get_area(mobloc) == /area/security/armoury/gamma) - M << "A strange energy repels you!" - mobloc = originalloc - animation.loc = mobloc - steam.location = mobloc - steam.start() - M.current.canmove = 0 - sleep(20) - flick("reappear",animation) - sleep(5) - if(!M.current.Move(mobloc)) - for(var/direction in list(1,2,4,8,5,6,9,10)) - var/turf/T = get_step(mobloc, direction) - if(T) - if(M.current.Move(T)) - break - M.current.canmove = 1 - M.current.client.eye = M.current - qdel(animation) - qdel(holder) - M.current.remove_vampire_blood(30) - M.current.verbs -= /client/vampire/proc/vampire_jaunt - spawn(600) M.current.verbs += /client/vampire/proc/vampire_jaunt +/obj/effect/proc_holder/spell/vampire/self/jaunt/cast() + if(usr.buckled) + usr.buckled.unbuckle_mob() + spawn(0) + var/mob/living/U = usr + var/originalloc = get_turf(usr.loc) + var/obj/effect/dummy/spell_jaunt/holder = new /obj/effect/dummy/spell_jaunt(originalloc) + var/atom/movable/overlay/animation = new /atom/movable/overlay(originalloc) + animation.name = "water" + animation.density = 0 + animation.anchored = 1 + animation.icon = 'icons/mob/mob.dmi' + animation.icon_state = "liquify" + animation.layer = 5 + animation.master = holder + U.ExtinguishMob() + if(usr.buckled) + usr.buckled.unbuckle_mob() + flick("liquify", animation) + usr.forceMove(holder) + usr.client.eye = holder + var/datum/effect/system/steam_spread/steam = new /datum/effect/system/steam_spread() + steam.set_up(10, 0, originalloc) + steam.start() + sleep(jaunt_duration) + var/mobloc = get_turf(usr.loc) + if(get_area(mobloc) == /area/security/armoury/gamma) + usr << "A strange energy repels you!" + mobloc = originalloc + animation.loc = mobloc + steam.location = mobloc + steam.start() + usr.canmove = 0 + sleep(20) + flick("reappear",animation) + sleep(5) + if(!usr.Move(mobloc)) + for(var/direction in list(1,2,4,8,5,6,9,10)) + var/turf/T = get_step(mobloc, direction) + if(T) + if(usr.Move(T)) + break + usr.canmove = 1 + usr.client.eye = usr + qdel(animation) + qdel(holder) // Blink for vamps // Less smoke spam. -/client/vampire/proc/vampire_shadowstep() - set category = "Abilities" - set name = "Shadowstep (30)" - set desc = "Vanish into the shadows." - var/datum/mind/M = usr.mind - if(!M) return +/obj/effect/proc_holder/spell/vampire/shadowstep + name = "Shadowstep (30)" + desc = "Vanish into the shadows." + gain_desc = "You have gained the ability to shadowstep, which makes you disappear into nearby shadows at the cost of blood." + action_icon_state = "blink" + charge_max = 20 + required_blood = 30 // Teleport radii var/inner_tele_radius = 0 var/outer_tele_radius = 6 - // Maximum lighting_lumcount. var/max_lum = 1 - if(M.current.vampire_power(30, 0)) - if(M.current.buckled) M.current.buckled.unbuckle_mob() - spawn(0) - var/list/turfs = new/list() - for(var/turf/T in range(usr,outer_tele_radius)) - if(T in range(usr,inner_tele_radius)) continue - if(istype(T,/turf/space)) continue - if(T.density) continue - if(T.x>world.maxx-outer_tele_radius || T.xworld.maxy-outer_tele_radius || T.y world.maxx-outer_tele_radius || T.x < outer_tele_radius) + continue //putting them at the edge is dumb + if(T.y > world.maxy-outer_tele_radius || T.y < outer_tele_radius) + continue - var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T - var/lightingcount = L.get_clamped_lum(0.5)*10 + var/atom/movable/lighting_overlay/L = locate(/atom/movable/lighting_overlay) in T + var/lightingcount = L.get_clamped_lum(0.5) * 10 - // LIGHTING CHECK - if(lightingcount > max_lum) continue - turfs += T + // LIGHTING CHECK + if(lightingcount > max_lum) + continue + turfs += T - if(!turfs.len) - usr << "\red You cannot find darkness to step to." - return - - var/turf/picked = pick(turfs) - - if(!picked || !isturf(picked)) - return - M.current.ExtinguishMob() - if(M.current.buckled) - M.current.buckled.unbuckle_mob() - var/atom/movable/overlay/animation = new /atom/movable/overlay( get_turf(usr) ) - animation.name = usr.name - animation.density = 0 - animation.anchored = 1 - animation.icon = usr.icon - animation.alpha = 127 - animation.layer = 5 - //animation.master = src - usr.loc = picked - spawn(10) - qdel(animation) - M.current.remove_vampire_blood(30) - M.current.verbs -= /client/vampire/proc/vampire_shadowstep - spawn(20) - M.current.verbs += /client/vampire/proc/vampire_shadowstep - -/mob/proc/remove_vampire_blood(amount = 0) - var/bloodold - if(!mind || !mind.vampire) + if(!turfs.len) + revert_cast(user) + user << "\red You cannot find darkness to step to." return - bloodold = mind.vampire.bloodusable - mind.vampire.bloodusable = max(0, (mind.vampire.bloodusable - amount)) - if(bloodold != mind.vampire.bloodusable) - src << "\blue You have [mind.vampire.bloodusable] left to use." \ No newline at end of file + + perform(turfs) + +/obj/effect/proc_holder/spell/vampire/shadowstep/cast(list/targets) + if(usr.buckled) + usr.buckled.unbuckle_mob() + spawn(0) + var/turf/picked = pick(targets) + + if(!picked || !isturf(picked)) + return + var/mob/living/U = usr + U.ExtinguishMob() + if(usr.buckled) + usr.buckled.unbuckle_mob() + var/atom/movable/overlay/animation = new /atom/movable/overlay(get_turf(usr)) + animation.name = usr.name + animation.density = 0 + animation.anchored = 1 + animation.icon = usr.icon + animation.alpha = 127 + animation.layer = 5 + //animation.master = src + usr.forceMove(picked) + spawn(10) + qdel(animation) + +/datum/vampire_passive/regen + gain_desc = "Your rejuvination abilities have improved and will now heal you over time when used." + +/datum/vampire_passive/vision + gain_desc = "Your vampiric vision has improved." + +/datum/vampire_passive/full + gain_desc = "You have reached your full potential and are no longer weak to the effects of anything holy and your vision has been improved greatly." diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index f0579af36b4..9202405cb2f 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -55,7 +55,7 @@ if(M.mind) if(M.mind.vampire) if(ishuman(M)) - if(!(VAMP_FULL in M.mind.vampire.powers)) + if(!M.mind.vampire.get_ability(/datum/vampire_passive/full)) M << "The nullrod's power interferes with your own!" M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) ..() diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index e8ca0524f01..fa4e557a200 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -135,7 +135,7 @@ M << "Blood from a monkey is useless!" return 0 //we're good to suck the blood, blaah - M.handle_bloodsucking(src) + M.mind.vampire.handle_bloodsucking(src) add_logs(src, M, "vampirebit") msg_admin_attack("[key_name_admin(M)] vampirebit [key_name_admin(src)]") return diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 22c7ed648ae..7ed777ebf77 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -88,7 +88,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc pulse = handle_pulse() if(mind && mind.vampire) - handle_vampire() + mind.vampire.handle_vampire() if(life_tick == 1) regenerate_icons() // Make sure the inventory updates diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 2aa84f9c95e..dddd2522ff2 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -423,14 +423,12 @@ H.see_invisible = SEE_INVISIBLE_LIVING if(H.mind && H.mind.vampire) - if((VAMP_VISION in H.mind.vampire.powers) && (!(VAMP_FULL in H.mind.vampire.powers))) - H.sight |= SEE_MOBS - - else if(VAMP_FULL in H.mind.vampire.powers) + if(H.mind.vampire.get_ability(/datum/vampire_passive/full)) H.sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS H.see_in_dark = 8 H.see_invisible = SEE_INVISIBLE_MINIMUM - + else if(H.mind.vampire.get_ability(/datum/vampire_passive/vision)) + H.sight |= SEE_MOBS if(XRAY in H.mutations) H.sight |= SEE_TURFS|SEE_MOBS|SEE_OBJS diff --git a/code/modules/reagents/oldchem/reagents/reagents_water.dm b/code/modules/reagents/oldchem/reagents/reagents_water.dm index b7c296443b5..c0b2de12fc3 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_water.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_water.dm @@ -264,44 +264,40 @@ M.stuttering = 0 M.confused = 0 return - if(ishuman(M) && M.mind) . - if(((M.mind in ticker.mode.vampires) || M.mind.vampire) && (!(VAMP_FULL in M.mind.vampire.powers)) && prob(80)) - switch(data) - if(1 to 4) - M << "Something sizzles in your veins!" - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - if(5 to 12) - M << "You feel an intense burning inside of you!" - M.adjustFireLoss(1) - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - if(13 to INFINITY) - M << "You suddenly ignite in a holy fire!" - for(var/mob/O in viewers(M, null)) - O.show_message(text("[] suddenly bursts into flames!", M), 1) - M.fire_stacks = min(5,M.fire_stacks + 3) - M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire - M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard? - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80)) + switch(data) + if(1 to 4) + M << "Something sizzles in your veins!" + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + if(5 to 12) + M << "You feel an intense burning inside of you!" + M.adjustFireLoss(1) + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) + if(13 to INFINITY) + M << "You suddenly ignite in a holy fire!" + for(var/mob/O in viewers(M, null)) + O.show_message(text("[] suddenly bursts into flames!", M), 1) + M.fire_stacks = min(5,M.fire_stacks + 3) + M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire + M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard? + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) ..() - return /datum/reagent/holywater/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) // Vampires have their powers weakened by holy water applied to the skin. - if(ishuman(M)) - if((M.mind in ticker.mode.vampires) && !(VAMP_FULL in M.mind.vampire.powers)) - var/mob/living/carbon/human/H=M - if(method == TOUCH) - if(H.wear_mask) - H << "\red Your mask protects you from the holy water!" - return - else if(H.head) - H << "\red Your helmet protects you from the holy water!" - return - else - M << "Something holy interferes with your powers!" - M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) - return + if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full)) + var/mob/living/carbon/human/H=M + if(method == TOUCH) + if(H.wear_mask) + H << "\red Your mask protects you from the holy water!" + return + else if(H.head) + H << "\red Your helmet protects you from the holy water!" + return + else + M << "Something holy interferes with your powers!" + M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2) /datum/reagent/holywater/reaction_turf(var/turf/simulated/T, var/volume) diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index a45ae88ca5894b9e48cf7d1b6e57dd6384a418f5..22d7d9cd166a39f17d17980534ecacbf2826b7cb 100644 GIT binary patch literal 53928 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

t3-JR=} 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 Date: Thu, 10 Mar 2016 23:31:54 -0500 Subject: [PATCH 2/3] Rejuventate spelling --- code/game/gamemodes/vampire/vampire.dm | 2 +- code/game/gamemodes/vampire/vampire_powers.dm | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index 16ef84e7064..c1d23e0c1b0 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -204,7 +204,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha var/mob/living/carbon/human/draining // who the vampire is draining of blood var/nullified = 0 //Nullrod makes them useless for a short while. var/list/upgrade_tiers = list( - /obj/effect/proc_holder/spell/vampire/self/rejuvinate = 0, + /obj/effect/proc_holder/spell/vampire/self/rejuvenate = 0, /obj/effect/proc_holder/spell/vampire/targetted/hypnotise = 0, /obj/effect/proc_holder/spell/vampire/mob_aoe/glare = 0, /datum/vampire_passive/vision = 100, diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index 13894ddf025..d8dc1211b7b 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -143,14 +143,14 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////// -/obj/effect/proc_holder/spell/vampire/self/rejuvinate - name = "Rejuvinate" +/obj/effect/proc_holder/spell/vampire/self/rejuvenate + name = "Rejuvenate" desc= "Flush your system with spare blood to remove any incapacitating effects." action_icon_state = "vampire_rejuvinate" charge_max = 200 stat_allowed = 1 -/obj/effect/proc_holder/spell/vampire/self/rejuvinate/cast() +/obj/effect/proc_holder/spell/vampire/self/rejuvenate/cast() var/mob/living/U = usr usr.SetWeakened(0) From 1030cd1c4d280c238a14488e90add2ad10c68c44 Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Fri, 11 Mar 2016 18:29:14 -0500 Subject: [PATCH 3/3] Fixes admin removing vamp --- code/game/gamemodes/vampire/vampire.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index c1d23e0c1b0..264a280e3e0 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -243,7 +243,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha var/A = get_ability(path) if(A) powers -= A - owner.spell_list.Remove(A) + owner.mind.spell_list.Remove(A) qdel(A) /mob/proc/make_vampire()