diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index e0300eca10..1240c38d93 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1573,11 +1573,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
return TRUE
if(check_neck)
if(istype(target.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
- to_chat(src, "[target] is wearing a garlic clove around their neck! You cant drink from them while it is on them!")
return FALSE
if(check_blood)
if(target.reagents.has_reagent(/datum/reagent/consumable/garlic))
- to_chat(target, "[src] tries to bite you, but recoils in disgust!")
- to_chat(src, "[target] reeks of garlic! you can't bring yourself to drain such tainted blood.")
return FALSE
return TRUE
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index 490f0aa0f0..328e008f10 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -367,7 +367,7 @@
blood_display.hud = src
infodisplay += blood_display
- vamprank_display = new /obj/screen/bloodsucker/rank_counter // Vampire Rank
+ vamprank_display = new /obj/screen/bloodsucker/rank_counter // Bloodsucker Rank
vamprank_display.hud = src
infodisplay += vamprank_display
diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm
index 7f9873cfb0..adcb80ff07 100644
--- a/code/game/gamemodes/bloodsucker/bloodsucker.dm
+++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm
@@ -133,7 +133,7 @@
// Not High Enough
if(creator)
var/datum/antagonist/bloodsucker/creator_bloodsucker = creator.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)
- if(!istype(creator_bloodsucker) || creator_bloodsucker.vamplevel < BLOODSUCKER_LEVEL_TO_EMBRACE)
+ if(!istype(creator_bloodsucker) || creator_bloodsucker.bloodsucker_level < BLOODSUCKER_LEVEL_TO_EMBRACE)
to_chat(creator, "Your blood is too thin to turn this corpse!")
return FALSE
return TRUE
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
index 01e8774c27..90919a4e80 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm
@@ -15,7 +15,7 @@
var/notice_healing
while(owner && !AmFinalDeath()) // owner.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) == src
if(owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_DEATHCOMA)) // Deduct Blood
- AddBloodVolume(-0.1) // -.15 (before tick went from 10 to 30, but we also charge more for faking life now)
+ AddBloodVolume(passive_blood_drain) // -.1 currently
if(HandleHealing(1)) // Heal
if(notice_healing == FALSE && owner.current.blood_volume > 0)
to_chat(owner, "The power of your blood begins knitting your wounds...")
@@ -39,12 +39,12 @@
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/datum/antagonist/bloodsucker/proc/AddBloodVolume(value)
- owner.current.blood_volume = CLAMP(owner.current.blood_volume + value, 0, maxBloodVolume)
+ owner.current.blood_volume = CLAMP(owner.current.blood_volume + value, 0, max_blood_volume)
update_hud()
/datum/antagonist/bloodsucker/proc/HandleFeeding(mob/living/carbon/target, mult=1)
// mult: SILENT feed is 1/3 the amount
- var/blood_taken = min(feedAmount, target.blood_volume) * mult // Starts at 15 (now 8 since we doubled the Feed time)
+ var/blood_taken = min(feed_amount, target.blood_volume) * mult // Starts at 15 (now 8 since we doubled the Feed time)
target.blood_volume -= blood_taken
// Simple Animals lose a LOT of blood, and take damage. This is to keep cats, cows, and so forth from giving you insane amounts of blood.
if(!ishuman(target))
@@ -82,32 +82,21 @@
/datum/antagonist/bloodsucker/proc/HandleHealing(mult = 1)
// NOTE: Mult of 0 is just a TEST to see if we are injured and need to go into Torpor!
//It is called from your coffin on close (by you only)
- var/notice_garlic
- var/notice_necklace
+ var/actual_regen = regen_rate + additional_regen
if(poweron_masquerade == TRUE || owner.current.AmStaked())
return FALSE
- if(owner.current.reagents?.has_reagent(/datum/reagent/consumable/garlic))
- if(notice_garlic)
- to_chat(owner.current, "Garlic in your blood is interfering with your regeneration!")
- notice_garlic = TRUE
+ if(owner.current.reagents.has_reagent(/datum/reagent/consumable/garlic))
return FALSE
if(istype(owner.current.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
- if(notice_necklace)
- to_chat(owner.current, "The necklace on your neck is interrupting your healing!")
- notice_necklace = TRUE
return FALSE
- owner.current.adjustStaminaLoss(-1.5 + (regenRate * -7) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more.
- owner.current.adjustCloneLoss(-0.1 * (regenRate * 2) * mult, 0)
- owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (regenRate * 4) * mult) //adjustBrainLoss(-1 * (regenRate * 4) * mult, 0)
- if(notice_garlic)
- notice_garlic = FALSE
- if(notice_necklace)
- notice_necklace = FALSE
+ owner.current.adjustStaminaLoss(-1.5 + (actual_regen * -7) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more.
+ owner.current.adjustCloneLoss(-0.1 * (actual_regen * 2) * mult, 0)
+ owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (actual_regen * 4) * mult)
// No Bleeding
if(ishuman(owner.current)) //NOTE Current bleeding is horrible, not to count the amount of blood ballistics delete.
var/mob/living/carbon/human/H = owner.current
if(H.bleed_rate > 0) //Only heal bleeding if we are actually bleeding
- H.bleed_rate =- 0.5 + regenRate * 0.2 * mult
+ H.bleed_rate =- 0.5 + actual_regen * 0.2 * mult
if(iscarbon(owner.current)) // Damage Heal: Do I have damage to ANY bodypart?
var/mob/living/carbon/C = owner.current
var/costMult = 1 // Coffin makes it cheaper
@@ -115,7 +104,7 @@
var/amInCoffinWhileTorpor = istype(C.loc, /obj/structure/closet/crate/coffin) && (mult == 0 || HAS_TRAIT(C, TRAIT_DEATHCOMA)) // Check for mult 0 OR death coma. (mult 0 means we're testing from coffin)
if(amInCoffinWhileTorpor)
mult *= 4 // Increase multiplier if we're sleeping in a coffin.
- fireheal = min(C.getFireLoss(), regenRate) // NOTE: Burn damage ONLY heals in torpor.
+ fireheal = min(C.getFireLoss(), actual_regen) // NOTE: Burn damage ONLY heals in torpor.
costMult = 0.25
C.ExtinguishMob()
CureDisabilities() // Extinguish Fire
@@ -125,12 +114,10 @@
else
if(owner.current.blood_volume <= 0) // No Blood? Lower Mult
mult = 0.25
- // Crit from burn? Lower damage to maximum allowed.
- //if (C.getFireLoss() > owner.current.getMaxHealth())
- // fireheal = regenRate / 2
+
// BRUTE: Always Heal
- var/bruteheal = min(C.getBruteLoss(), regenRate)
- var/toxinheal = min(C.getToxLoss(), regenRate)
+ var/bruteheal = min(C.getBruteLoss(), actual_regen)
+ var/toxinheal = min(C.getToxLoss(), actual_regen)
// Heal if Damaged
if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return.
if(mult == 0)
@@ -195,10 +182,14 @@
if(owner.current.blood_volume < BLOOD_VOLUME_BAD / 2)
owner.current.blur_eyes(8 - 8 * (owner.current.blood_volume / BLOOD_VOLUME_BAD))
// Nutrition
+ owner.current.nutrition = clamp(owner.current.blood_volume, 545, 0) //The amount of blood is how full we are.
+ //A bit higher regeneration based on blood volume
if(owner.current.blood_volume < BLOOD_VOLUME_NORMAL)
- owner.current.nutrition = min(owner.current.blood_volume, NUTRITION_LEVEL_WELL_FED)
- else if(owner.current.blood_volume < BLOOD_VOLUME_SAFE)
- owner.current.nutrition = min(owner.current.blood_volume, NUTRITION_LEVEL_FED) // <-- 350 //NUTRITION_LEVEL_FULL
+ additional_regen = 0.3
+ else if(owner.current.blood_volume < BLOOD_VOLUME_OKAY)
+ additional_regen = 0.2
+ else if(owner.current.blood_volume < BLOOD_VOLUME_BAD)
+ additional_regen = 0.1
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// DEATH
@@ -300,7 +291,7 @@
// Free my Vassals!
FreeAllVassals()
// Elders get Dusted
- if(vamplevel >= 4) // (vamptitle)
+ if(bloodsucker_level >= 4) // (bloodsucker_title)
owner.current.visible_message("[owner.current]'s skin crackles and dries, their skin and bones withering to dust. A hollow cry whips from what is now a sandy pile of remains.", \
"Your soul escapes your withering body as the abyss welcomes you to your Final Death.", \
"You hear a dry, crackling sound.")
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
index abfd2d120f..5c4b1f2b9f 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm
@@ -94,10 +94,12 @@
to_chat(owner, "You have a stake in your chest! Your powers are useless.")
return FALSE
if(istype(owner.get_item_by_slot(SLOT_NECK), /obj/item/clothing/neck/garlic_necklace))
- to_chat(owner, "")
+ if(display_error)
+ to_chat(owner, "")
return FALSE
if(owner.reagents?.has_reagent(/datum/reagent/consumable/garlic))
- to_chat(owner, "Garlic in your blood is interfering with your powers!")
+ if(display_error)
+ to_chat(owner, "Garlic in your blood is interfering with your powers!")
return FALSE
// Incap?
if(must_be_capacitated)
diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm b/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm
index 263f91a9a6..b7d98c6783 100644
--- a/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm
+++ b/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm
@@ -141,23 +141,23 @@
if(!bloodsuckerdatum.warn_sun_locker)
to_chat(M, "Your skin sizzles. The [M.current.loc] doesn't protect well against UV bombardment.")
bloodsuckerdatum.warn_sun_locker = TRUE
- M.current.adjustFireLoss(0.5 + bloodsuckerdatum.vamplevel / 2) // M.current.fireloss += 0.5 + bloodsuckerdatum.vamplevel / 2 // Do DIRECT damage. Being spaced was causing this to not occur. setFireLoss(bloodsuckerdatum.vamplevel)
+ M.current.adjustFireLoss(0.5 + bloodsuckerdatum.bloodsucker_level / 2) // M.current.fireloss += 0.5 + bloodsuckerdatum.bloodsucker_level / 2 // Do DIRECT damage. Being spaced was causing this to not occur. setFireLoss(bloodsuckerdatum.bloodsucker_level)
M.current.updatehealth()
SEND_SIGNAL(M.current, COMSIG_ADD_MOOD_EVENT, "vampsleep", /datum/mood_event/daylight_1)
// Out in the Open? Buh Bye
else
if(!bloodsuckerdatum.warn_sun_burn)
- if(bloodsuckerdatum.vamplevel > 0)
+ if(bloodsuckerdatum.bloodsucker_level > 0)
to_chat(M, "The solar flare sets your skin ablaze!")
else
to_chat(M, "The solar flare scalds your neophyte skin!")
bloodsuckerdatum.warn_sun_burn = TRUE
if(M.current.fire_stacks <= 0)
M.current.fire_stacks = 0
- if(bloodsuckerdatum.vamplevel > 0)
- M.current.adjust_fire_stacks(0.2 + bloodsuckerdatum.vamplevel / 10)
+ if(bloodsuckerdatum.bloodsucker_level > 0)
+ M.current.adjust_fire_stacks(0.2 + bloodsuckerdatum.bloodsucker_level / 10)
M.current.IgniteMob()
- M.current.adjustFireLoss(2 + bloodsuckerdatum.vamplevel) // M.current.fireloss += 2 + bloodsuckerdatum.vamplevel // Do DIRECT damage. Being spaced was causing this to not occur. //setFireLoss(2 + bloodsuckerdatum.vamplevel)
+ M.current.adjustFireLoss(2 + bloodsuckerdatum.bloodsucker_level) // M.current.fireloss += 2 + bloodsuckerdatum.bloodsucker_level // Do DIRECT damage. Being spaced was causing this to not occur. //setFireLoss(2 + bloodsuckerdatum.bloodsucker_level)
M.current.updatehealth()
SEND_SIGNAL(M.current, COMSIG_ADD_MOOD_EVENT, "vampsleep", /datum/mood_event/daylight_2)
diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
index 1821ec2f3d..f8c35f7938 100644
--- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
+++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm
@@ -8,9 +8,9 @@
job_rank = ROLE_BLOODSUCKER
// NAME
- var/vampname // My Dracula name
- var/vamptitle // My Dracula title
- var/vampreputation // My "Surname" or description of my deeds
+ var/bloodsucker_name // My Dracula style name
+ var/bloodsucker_title // My Dracula style title
+ var/bloodsucker_reputation // My "Surname" or description of my deeds
// CLAN
var/datum/team/vampireclan/clan
var/list/datum/antagonist/vassal/vassals = list()// Vassals under my control. Periodically remove the dead ones.
@@ -20,28 +20,26 @@
var/poweron_feed = FALSE // Am I feeding?
var/poweron_masquerade = FALSE
// STATS
- var/vamplevel = 0
- var/vamplevel_unspent = 1
- var/regenRate = 0.4 // How fast do I regenerate?
- var/feedAmount = 15 // Amount of blood drawn from a target per tick.
- var/maxBloodVolume = 600 // Maximum blood a Vamp can hold via feeding. // BLOOD_VOLUME_NORMAL 550 // BLOOD_VOLUME_SAFE 475 //BLOOD_VOLUME_OKAY 336 //BLOOD_VOLUME_BAD 224 // BLOOD_VOLUME_SURVIVE 122
+ var/bloodsucker_level
+ var/bloodsucker_level_unspent = 1
+ var/regen_rate = 0.4 // How fast do I regenerate?
+ var/additional_regen // How much additional blood regen we gain from bonuses such as high blood.
+ var/feed_amount = 15 // Amount of blood drawn from a target per tick.
+ var/max_blood_volume = 600 // Maximum blood a Vamp can hold via feeding.
// OBJECTIVES
var/list/datum/objective/objectives_given = list() // For removal if needed.
var/area/lair
var/obj/structure/closet/crate/coffin
// TRACKING
- var/foodInGut = 0 // How much food to throw up later. You shouldn't have eaten that.
- var/warn_sun_locker = FALSE // So we only get the locker burn message once per day.
- var/warn_sun_burn = FALSE // So we only get the sun burn message once per day.
- var/had_toxlover = FALSE
+ var/foodInGut // How much food to throw up later. You shouldn't have eaten that.
+ var/warn_sun_locker // So we only get the locker burn message once per day.
+ var/warn_sun_burn // So we only get the sun burn message once per day.
+ var/had_toxlover
var/level_bloodcost
+ var/passive_blood_drain = -0.1 //The amount of blood we loose each bloodsucker life() tick
// LISTS
var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_NIGHT_VISION, \
TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_VIRUSIMMUNE)
- // NOTES: TRAIT_AGEUSIA <-- Doesn't like flavors.
- // REMOVED: TRAIT_NODEATH
- // TO ADD:
- //var/static/list/defaultOrgans = list (/obj/item/organ/heart/vampheart,/obj/item/organ/heart/vampeyes)
/datum/antagonist/bloodsucker/on_gain()
SSticker.mode.bloodsuckers |= owner // Add if not already in here (and you might be, if you were picked at round start)
@@ -68,18 +66,18 @@
/datum/antagonist/bloodsucker/greet()
var/fullname = ReturnFullName(TRUE)
- to_chat(owner, "You are [fullname], a bloodsucking vampire!
")
+ to_chat(owner, "You are [fullname], a strain of vampire dubbed bloodsucker!
")
owner.announce_objectives()
to_chat(owner, "* You regenerate your health slowly, you're weak to fire, and you depend on blood to survive. Allow your stolen blood to run too low, and you will find yourself at \
risk of being discovered!
")
//to_chat(owner, "As an immortal, your power is linked to your age. The older you grow, the more abilities you will have access to.")
- var/vamp_greet
- vamp_greet += "* Other Bloodsuckers are not necessarily your friends, but your survival may depend on cooperation. Betray them at your own discretion and peril.
"
- vamp_greet += "* Use \",b\" to speak your ancient Bloodsucker language.
"
- vamp_greet += "Bloodsucker Tip: Rest in a Coffin to claim it, and that area, as your lair.
"
- vamp_greet += "Bloodsucker Tip: Fear the daylight! Solar flares will bombard the station periodically, and only your coffin can guarantee your safety.
"
- vamp_greet += "Bloodsucker Tip: You wont loose blood if you are unconcious or sleeping. Use this to your advantage to conserve blood.
"
- to_chat(owner, vamp_greet)
+ var/bloodsucker_greet
+ bloodsucker_greet += "* Other Bloodsuckers are not necessarily your friends, but your survival may depend on cooperation. Betray them at your own discretion and peril.
"
+ bloodsucker_greet += "* Use \",b\" to speak your ancient Bloodsucker language.
"
+ bloodsucker_greet += "Bloodsucker Tip: Rest in a Coffin to claim it, and that area, as your lair.
"
+ bloodsucker_greet += "Bloodsucker Tip: Fear the daylight! Solar flares will bombard the station periodically, and only your coffin can guarantee your safety.
"
+ bloodsucker_greet += "Bloodsucker Tip: You wont loose blood if you are unconcious or sleeping. Use this to your advantage to conserve blood.
"
+ to_chat(owner, bloodsucker_greet)
owner.current.playsound_local(null, 'sound/bloodsucker/BloodsuckerAlert.ogg', 100, FALSE, pressure_affected = FALSE)
antag_memory += "Although you were born a mortal, in un-death you earned the name [fullname].
"
@@ -100,7 +98,7 @@
/datum/antagonist/bloodsucker/proc/SelectFirstName()
// Names (EVERYONE gets one))
if(owner.current.gender == MALE)
- vampname = pick("Desmond","Rudolph","Dracul","Vlad","Pyotr","Gregor","Cristian","Christoff","Marcu","Andrei","Constantin","Gheorghe","Grigore","Ilie","Iacob","Luca","Mihail","Pavel","Vasile","Octavian","Sorin", \
+ bloodsucker_name = pick("Desmond","Rudolph","Dracul","Vlad","Pyotr","Gregor","Cristian","Christoff","Marcu","Andrei","Constantin","Gheorghe","Grigore","Ilie","Iacob","Luca","Mihail","Pavel","Vasile","Octavian","Sorin", \
"Sveyn","Aurel","Alexe","Iustin","Theodor","Dimitrie","Octav","Damien","Magnus","Caine","Abel", // Romanian/Ancient
"Lucius","Gaius","Otho","Balbinus","Arcadius","Romanos","Alexios","Vitellius", // Latin
"Melanthus","Teuthras","Orchamus","Amyntor","Axion", // Greek
@@ -108,7 +106,7 @@
"Dio")
else
- vampname = pick("Islana","Tyrra","Greganna","Pytra","Hilda","Andra","Crina","Viorela","Viorica","Anemona","Camelia","Narcisa","Sorina","Alessia","Sophia","Gladda","Arcana","Morgan","Lasarra","Ioana","Elena", \
+ bloodsucker_name = pick("Islana","Tyrra","Greganna","Pytra","Hilda","Andra","Crina","Viorela","Viorica","Anemona","Camelia","Narcisa","Sorina","Alessia","Sophia","Gladda","Arcana","Morgan","Lasarra","Ioana","Elena", \
"Alina","Rodica","Teodora","Denisa","Mihaela","Svetla","Stefania","Diyana","Kelssa","Lilith", // Romanian/Ancient
"Alexia","Athanasia","Callista","Karena","Nephele","Scylla","Ursa", // Latin
"Alcestis","Damaris","Elisavet","Khthonia","Teodora", // Greek
@@ -116,57 +114,57 @@
/datum/antagonist/bloodsucker/proc/SelectTitle(am_fledgling = 0, forced = FALSE)
// Already have Title
- if (!forced && vamptitle != null)
+ if(!forced && bloodsucker_title != null)
return
// Titles [Master]
- if (!am_fledgling)
+ if(!am_fledgling)
if(owner.current.gender == MALE)
- vamptitle = pick ("Count","Baron","Viscount","Prince","Duke","Tzar","Dreadlord","Lord","Master")
+ bloodsucker_title = pick ("Count","Baron","Viscount","Prince","Duke","Tzar","Dreadlord","Lord","Master")
else
- vamptitle = pick ("Countess","Baroness","Viscountess","Princess","Duchess","Tzarina","Dreadlady","Lady","Mistress")
+ bloodsucker_title = pick ("Countess","Baroness","Viscountess","Princess","Duchess","Tzarina","Dreadlady","Lady","Mistress")
to_chat(owner, "You have earned a title! You are now known as [ReturnFullName(TRUE)]!")
// Titles [Fledgling]
else
- vamptitle = null
+ bloodsucker_title = null
/datum/antagonist/bloodsucker/proc/SelectReputation(am_fledgling = 0, forced=FALSE)
// Already have Reputation
- if(!forced && vampreputation != null)
+ if(!forced && bloodsucker_reputation != null)
return
// Reputations [Master]
if(!am_fledgling)
- vampreputation = pick("Butcher","Blood Fiend","Crimson","Red","Black","Terror","Nightman","Feared","Ravenous","Fiend","Malevolent","Wicked","Ancient","Plaguebringer","Sinister","Forgotten","Wretched","Baleful", \
+ bloodsucker_reputation = pick("Butcher","Blood Fiend","Crimson","Red","Black","Terror","Nightman","Feared","Ravenous","Fiend","Malevolent","Wicked","Ancient","Plaguebringer","Sinister","Forgotten","Wretched","Baleful", \
"Inqisitor","Harvester","Reviled","Robust","Betrayer","Destructor","Damned","Accursed","Terrible","Vicious","Profane","Vile","Depraved","Foul","Slayer","Manslayer","Sovereign","Slaughterer", \
"Forsaken","Mad","Dragon","Savage","Villainous","Nefarious","Inquisitor","Marauder","Horrible","Immortal","Undying","Overlord","Corrupt","Hellspawn","Tyrant","Sanguineous")
if(owner.current.gender == MALE)
if(prob(10)) // Gender override
- vampreputation = pick("King of the Damned", "Blood King", "Emperor of Blades", "Sinlord", "God-King")
+ bloodsucker_reputation = pick("King of the Damned", "Blood King", "Emperor of Blades", "Sinlord", "God-King")
else
if(prob(10)) // Gender override
- vampreputation = pick("Queen of the Damned", "Blood Queen", "Empress of Blades", "Sinlady", "God-Queen")
+ bloodsucker_reputation = pick("Queen of the Damned", "Blood Queen", "Empress of Blades", "Sinlady", "God-Queen")
to_chat(owner, "You have earned a reputation! You are now known as [ReturnFullName(TRUE)]!")
// Reputations [Fledgling]
else
- vampreputation = pick ("Crude","Callow","Unlearned","Neophyte","Novice","Unseasoned","Fledgling","Young","Neonate","Scrapling","Untested","Unproven","Unknown","Newly Risen","Born","Scavenger","Unknowing",\
+ bloodsucker_reputation = pick ("Crude","Callow","Unlearned","Neophyte","Novice","Unseasoned","Fledgling","Young","Neonate","Scrapling","Untested","Unproven","Unknown","Newly Risen","Born","Scavenger","Unknowing",\
"Unspoiled","Disgraced","Defrocked","Shamed","Meek","Timid","Broken")//,"Fresh")
/datum/antagonist/bloodsucker/proc/AmFledgling()
- return !vamptitle
+ return !bloodsucker_title
/datum/antagonist/bloodsucker/proc/ReturnFullName(var/include_rep=0)
var/fullname
// Name First
- fullname = (vampname ? vampname : owner.current.name)
+ fullname = (bloodsucker_name ? bloodsucker_name : owner.current.name)
// Title
- if(vamptitle)
- fullname = vamptitle + " " + fullname
+ if(bloodsucker_title)
+ fullname = bloodsucker_title + " " + fullname
// Rep
- if(include_rep && vampreputation)
- fullname = fullname + " the " + vampreputation
+ if(include_rep && bloodsucker_reputation)
+ fullname = fullname + " the " + bloodsucker_reputation
return fullname
@@ -201,15 +199,12 @@
var/mob/living/carbon/human/H = owner.current
var/datum/species/S = H.dna.species
// Make Changes
- H.physiology.brute_mod *= 0.8 // <-------------------- Start small, but burn mod increases based on rank!
+ H.physiology.brute_mod *= 0.8
H.physiology.cold_mod = 0
H.physiology.stun_mod *= 0.5
H.physiology.siemens_coeff *= 0.75 //base electrocution coefficient 1
- //S.heatmod += 0.5 // Heat shouldn't affect. Only Fire.
- //S.punchstunthreshold = 8 //damage at which punches from this race will stun 9
S.punchdamagelow += 1 //lowest possible punch damage 0
S.punchdamagehigh += 1 //highest possible punch damage 9
- // Clown
if(istype(H) && owner.assigned_role == "Clown")
H.dna.remove_mutation(CLOWNMUT)
to_chat(H, "As a vampiric clown, you are no longer a danger to yourself. Your nature is subdued.")
@@ -217,8 +212,6 @@
CheckVampOrgans() // Heart, Eyes
// Language
owner.current.grant_language(/datum/language/vampiric)
- // Soul
- //owner.current.hellbound = TRUE Causes wierd stuff
owner.hasSoul = FALSE // If false, renders the character unable to sell their soul.
owner.isholy = FALSE // is this person a chaplain or admin role allowed to use bibles
// Disabilities
@@ -250,7 +243,6 @@
// Clown
if(istype(H) && owner.assigned_role == "Clown")
H.dna.add_mutation(CLOWNMUT)
- // NOTE: Use initial() to return things to default!
// Physiology
owner.current.regenerate_organs()
// Update Health
@@ -266,13 +258,13 @@
set waitfor = FALSE
if(!owner || !owner.current)
return
- vamplevel_unspent ++
+ bloodsucker_level_unspent ++
// Spend Rank Immediately?
if(istype(owner.current.loc, /obj/structure/closet/crate/coffin))
SpendRank()
else
to_chat(owner, "You have grown more ancient! Sleep in a coffin that you have claimed to thicken your blood and become more powerful.")
- if(vamplevel_unspent >= 2)
+ if(bloodsucker_level_unspent >= 2)
to_chat(owner, "Bloodsucker Tip: If you cannot find or steal a coffin to use, you can build one from wooden planks.
")
/datum/antagonist/bloodsucker/proc/LevelUpPowers()
@@ -281,10 +273,10 @@
/datum/antagonist/bloodsucker/proc/SpendRank()
set waitfor = FALSE
- if(vamplevel_unspent <= 0 || !owner || !owner.current || !owner.current.client || !isliving(owner.current))
+ if(bloodsucker_level_unspent <= 0 || !owner || !owner.current || !owner.current.client || !isliving(owner.current))
return
var/mob/living/L = owner.current
- level_bloodcost = maxBloodVolume * 0.2
+ level_bloodcost = max_blood_volume * 0.2
//If the blood volume of the bloodsucker is lower than the cost to level up, return and inform the bloodsucker
//TODO: Make this into a radial, or perhaps a tgui next UI
@@ -300,7 +292,7 @@
if(options.len > 1)
var/choice = input(owner.current, "You have the opportunity to grow more ancient at the cost of [level_bloodcost] units of blood. Select a power to advance your Rank.", "Your Blood Thickens...") in options
// Cheat-Safety: Can't keep opening/closing coffin to spam levels
- if(vamplevel_unspent <= 0) // Already spent all your points, and tried opening/closing your coffin, pal.
+ if(bloodsucker_level_unspent <= 0) // Already spent all your points, and tried opening/closing your coffin, pal.
return
if(!istype(owner.current.loc, /obj/structure/closet/crate/coffin))
to_chat(owner.current, "Return to your coffin to advance your Rank.")
@@ -331,17 +323,17 @@
// More Health
owner.current.setMaxHealth(owner.current.maxHealth + 10)
// Vamp Stats
- regenRate += 0.05 // Points of brute healed (starts at 0.3)
- feedAmount += 2 // Increase how quickly I munch down vics (15)
- maxBloodVolume += 100 // Increase my max blood (600)
+ regen_rate += 0.05 // Points of brute healed (starts at 0.3)
+ feed_amount += 2 // Increase how quickly I munch down vics (15)
+ max_blood_volume += 100 // Increase my max blood (600)
/////////
- vamplevel ++
- vamplevel_unspent --
+ bloodsucker_level ++
+ bloodsucker_level_unspent --
// Assign True Reputation
- if(vamplevel == 4)
+ if(bloodsucker_level == 4)
SelectReputation(am_fledgling = FALSE, forced = TRUE)
- to_chat(owner.current, "You are now a rank [vamplevel] Bloodsucker. Your strength, health, feed rate, regen rate, can have up to [vamplevel - count_vassals(owner.current.mind)] vassals, and maximum blood have all increased!")
+ to_chat(owner.current, "You are now a rank [bloodsucker_level] Bloodsucker. Your strength, health, feed rate, regen rate, can have up to [bloodsucker_level - count_vassals(owner.current.mind)] vassals, and maximum blood have all increased!")
to_chat(owner.current, "Your existing powers have all ranked up as well!")
update_hud(TRUE)
owner.current.playsound_local(null, 'sound/effects/pope_entry.ogg', 25, TRUE, pressure_affected = FALSE)
@@ -707,10 +699,10 @@
// Update Rank Counter
if(owner.current.hud_used.vamprank_display)
- var/valuecolor = vamplevel_unspent ? "#FFFF00" : "#FF0000"
- owner.current.hud_used.vamprank_display.update_counter(vamplevel, valuecolor)
+ var/valuecolor = bloodsucker_level_unspent ? "#FFFF00" : "#FF0000"
+ owner.current.hud_used.vamprank_display.update_counter(bloodsucker_level, valuecolor)
if(updateRank) // Only change icon on special request.
- owner.current.hud_used.vamprank_display.icon_state = (vamplevel_unspent > 0) ? "rank_up" : "rank"
+ owner.current.hud_used.vamprank_display.icon_state = (bloodsucker_level_unspent > 0) ? "rank_up" : "rank"
/obj/screen/bloodsucker
diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm
index c5f24ab537..7998a33c7b 100644
--- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm
+++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm
@@ -123,7 +123,7 @@
. += {"Simply click and hold on a victim, and then drag their sprite on the vassal rack. Alt click on the vassal rack to unbuckle them."}
. += {"Make sure that the victim is handcuffed, or else they can simply run away or resist, as the process is not instant."}
. += {"To convert the victim, simply click on the vassal rack itself. Sharp weapons work faster than other tools."}
- . += {" You have only the power for [B.vamplevel - B.count_vassals(user.mind)] vassals"}
+ . += {" You have only the power for [B.bloodsucker_level - B.count_vassals(user.mind)] vassals"}
/* if(user.mind.has_antag_datum(ANTAG_DATUM_VASSAL)
. += {"This is the vassal rack, which allows your master to thrall crewmembers into his minions.\n
Aid your master in bringing their victims here and keeping them secure.\n
@@ -265,7 +265,7 @@
if(user.blood_volume < CONVERT_COST + 5)
to_chat(user, "You don't have enough blood to initiate the Dark Communion with [target].")
return
- if(B.count_vassals(user.mind) > B.vamplevel)
+ if(B.count_vassals(user.mind) > B.bloodsucker_level)
to_chat(user, "Your power is yet too weak to bring more vassals under your control....")
return
// Prep...
diff --git a/code/modules/antagonists/bloodsucker/powers/feed.dm b/code/modules/antagonists/bloodsucker/powers/feed.dm
index b0678d5ff4..5e82a282b2 100644
--- a/code/modules/antagonists/bloodsucker/powers/feed.dm
+++ b/code/modules/antagonists/bloodsucker/powers/feed.dm
@@ -263,7 +263,7 @@
to_chat(user, "Your victim is dead. [target.p_their(TRUE)] blood barely nourishes you.")
warning_target_dead = TRUE
// Full?
- if(!warning_full && user.blood_volume >= bloodsuckerdatum.maxBloodVolume)
+ if(!warning_full && user.blood_volume >= bloodsuckerdatum.max_blood_volume)
to_chat(user, "You are full. Further blood will be wasted.")
warning_full = TRUE
// Blood Remaining? (Carbons/Humans only)
@@ -300,7 +300,7 @@
/datum/action/bloodsucker/feed/proc/CheckKilledTarget(mob/living/user, mob/living/target)
- // Bad Vampire. You shouldn't do that.
+ // Bad Bloodsucker. You shouldn't do that.
if(target && target.stat >= DEAD && ishuman(target))
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "drankkilled", /datum/mood_event/drankkilled) // BAD // in bloodsucker_life.dm
diff --git a/code/modules/language/vampiric.dm b/code/modules/language/vampiric.dm
index 6da54ce844..ab48a17d2f 100644
--- a/code/modules/language/vampiric.dm
+++ b/code/modules/language/vampiric.dm
@@ -1,4 +1,4 @@
-// VAMPIRE LANGUAGE //
+// BLOODSUCKER LANGUAGE //
/datum/language/vampiric
name = "Blah-Sucker"
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 147cb30772..d81251eca9 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -44,7 +44,7 @@
C.faction |= "slime"
/datum/species/jelly/spec_life(mob/living/carbon/human/H)
- if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for vampires
+ if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for blooduskers
return
if(!H.blood_volume)
H.blood_volume += 5
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index ce276a0d8b..c003fc7111 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -448,8 +448,8 @@
. = 1
..()
-/datum/reagent/consumable/condensedcapsaicin/reaction_mob(mob/living/M, method, reac_volume)
- if(AmBloodsucker(M))
+/datum/reagent/consumable/garlic/reaction_mob(mob/living/M, method, reac_volume)
+ if(AmBloodsucker(M, TRUE)) //Theyll be immune to garlic as long as they masquarade, but they cant do it if they already have it.
switch(method)
if(INGEST)
if(prob(min(30, current_cycle)))
@@ -467,7 +467,7 @@
to_chat(M, "You feel like your veins are boiling!")
M.emote("scream")
M.adjustFireLoss(5)
-
+ ..()
/datum/reagent/consumable/sprinkles
name = "Sprinkles"
value = 3