diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm index c0f5f80c1f..08f9a628b6 100644 --- a/code/game/gamemodes/bloodsucker/bloodsucker.dm +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -29,7 +29,8 @@ Bloodsuckers: The crew are cattle, while you are both shepherd and slaughterhouse.\n\ Crew: Put an end to the undead infestation before the station is overcome!" - +/datum/game_mode/traitor/bros/generate_report() + return "Reports indicate that some of your crew may have toppled statues in the past week, angering the gods and becoming cursed with undeath and a desire for blood. Watch out for crewmembers that seem to shun the light or are found pale and delirious." // Seems to be run by game ONCE, and finds all potential players to be antag. /datum/game_mode/bloodsucker/pre_setup() diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index be557148bd..9eaddad5b5 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -23,8 +23,8 @@ while (owner && !AmFinalDeath()) // owner.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) == src // Deduct Blood - if (owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_DEATHCOMA) && !istype(owner.current.loc, /obj/structure/closet/crate/coffin)) - AddBloodVolume(-0.08) // -.15 (before tick went from 10 to 30, but we also charge more for faking life now) + if (owner.current.stat == CONSCIOUS && !poweron_feed && !HAS_TRAIT(owner.current, TRAIT_DEATHCOMA)) + AddBloodVolume(-0.09) // -.15 (before tick went from 10 to 30, but we also charge more for faking life now) // Heal if (HandleHealing(1)) @@ -154,7 +154,7 @@ description = "I slept poorly in a makeshift coffin during the day.\n" mood_change = -3 timeout = 1000 - + /datum/mood_event/daylight_2 description = "I have been scorched by the unforgiving rays of the sun.\n" mood_change = -6 @@ -175,13 +175,10 @@ if (poweron_masquerade == TRUE || owner.current.AmStaked()) return FALSE - owner.current.adjustStaminaLoss(-5 * (regenRate * 4) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. + owner.current.adjustStaminaLoss(-2 * (regenRate * 4) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. owner.current.adjustCloneLoss(-1 * (regenRate * 4) * mult, 0) owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (regenRate * 4) * mult) //adjustBrainLoss(-1 * (regenRate * 4) * mult, 0) - owner.current.setOxyLoss(0) - owner.current.setToxLoss(0) - // No Bleeding if (ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current @@ -364,10 +361,9 @@ /datum/antagonist/bloodsucker/proc/Torpor_Begin(amInCoffin=FALSE) owner.current.stat = UNCONSCIOUS owner.current.fakedeath("bloodsucker") // Come after UNCONSCIOUS or else it fails - //owner.current.update_stat() - ADD_TRAIT(owner.current, TRAIT_NODEATH,"bloodsucker") // Without this, you'll just keep dying while you recover. - ADD_TRAIT(owner.current, TRAIT_RESISTHIGHPRESSURE,"bloodsucker") // So you can heal in 0 G. otherwise you just...heal forever. - ADD_TRAIT(owner.current, TRAIT_RESISTLOWPRESSURE,"bloodsucker") // So you can heal in 0 G. otherwise you just...heal forever. + ADD_TRAIT(owner.current, TRAIT_NODEATH, "bloodsucker") // Without this, you'll just keep dying while you recover. + ADD_TRAIT(owner.current, TRAIT_RESISTHIGHPRESSURE, "bloodsucker") // So you can heal in 0 G. otherwise you just...heal forever. + ADD_TRAIT(owner.current, TRAIT_RESISTLOWPRESSURE, "bloodsucker") // So you can heal in 0 G. otherwise you just...heal forever. // Visuals owner.current.update_sight() owner.current.reload_fullscreen() @@ -380,16 +376,12 @@ /datum/antagonist/bloodsucker/proc/Torpor_End() owner.current.stat = SOFT_CRIT owner.current.cure_fakedeath("bloodsucker") // Come after SOFT_CRIT or else it fails - //owner.current.update_stat() REMOVE_TRAIT(owner.current, TRAIT_NODEATH, "bloodsucker") REMOVE_TRAIT(owner.current, TRAIT_RESISTHIGHPRESSURE, "bloodsucker") // So you can heal in 0 G. otherwise you just...heal forever. REMOVE_TRAIT(owner.current, TRAIT_RESISTLOWPRESSURE, "bloodsucker") // So you can heal in 0 G. otherwise you just...heal forever. to_chat(owner, "You have recovered from Torpor.") - - - /datum/antagonist/proc/AmFinalDeath() // Standard Antags can be dead OR final death return owner && (owner.current && owner.current.stat >= DEAD || owner.AmFinalDeath()) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm index a609a502b3..821df92a19 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_powers.dm @@ -92,10 +92,11 @@ if(!can_be_staked && owner.AmStaked()) if(display_error) to_chat(owner, "You have a stake in your chest! Your powers are useless.") + return FALSE // Incap? if(must_be_capacitated) var/mob/living/L = owner - if (L.incapacitated(TRUE, TRUE) || L.lying && !can_be_immobilized) + if (L.incapacitated(TRUE, TRUE) || L.resting && !can_be_immobilized) if(display_error) to_chat(owner, "Not while you're incapacitated!") return FALSE diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm b/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm index 29af94616f..726eb8c452 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_sunlight.dm @@ -1,4 +1,4 @@ -#define TIME_BLOODSUCKER_NIGHT 1080 // 12 minutes +#define TIME_BLOODSUCKER_NIGHT 900 // 15 minutes #define TIME_BLOODSUCKER_DAY_WARN 90 // 1.5 minutes #define TIME_BLOODSUCKER_DAY_FINAL_WARN 25 // 25 sec #define TIME_BLOODSUCKER_DAY 60 // 1.5 minutes // 10 is a second, 600 is a minute. diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm index 6561c51a6e..8b5c8dff46 100644 --- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm +++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm @@ -79,6 +79,7 @@ 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) owner.current.playsound_local(null, 'sound/bloodsucker/BloodsuckerAlert.ogg', 100, FALSE, pressure_affected = FALSE) @@ -201,7 +202,7 @@ S.brutemod *= 0.5 S.burnmod += 0.2 // <-------------------- Start small, but burn mod increases based on rank! S.coldmod = 0 - S.stunmod *= 0.5 + S.stunmod *= 0.25 S.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 @@ -209,7 +210,6 @@ S.punchdamagehigh += 1 //highest possible punch damage 9 // Clown if(istype(H) && owner.assigned_role == "Clown") - //to_chat(H, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") H.dna.remove_mutation(CLOWNMUT) to_chat(H, "As a vampiric clown, you are no longer a danger to yourself. Your nature is subdued.") // Physiology @@ -217,7 +217,7 @@ // Language owner.current.grant_language(/datum/language/vampiric) // Soul - owner.current.hellbound = TRUE + //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 @@ -256,7 +256,7 @@ // Soul if (owner.soulOwner == owner) // Return soul, if *I* own it. owner.hasSoul = TRUE - owner.current.hellbound = FALSE +//owner.current.hellbound = FALSE datum/antagonist/bloodsucker/proc/RankUp() set waitfor = FALSE diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_coffin.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_coffin.dm index 8ec6c72daf..128398a3b0 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_coffin.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_coffin.dm @@ -36,7 +36,7 @@ // DONE to_chat(owner, "You have claimed the [claimed] as your place of immortal rest! Your lair is now [lair].") to_chat(owner, "You have learned new construction recipes to improve your lair.") - to_chat(owner, "Bloodsucker Tip: Find new lair recipes in the Structures tab of the Crafting Menu at the bottom of the screen, including the Persuasion Rack for converting crew into Vassals.

") + to_chat(owner, "Bloodsucker Tip: Find new lair recipes in the misc tab of the Crafting Menu at the bottom of the screen, including the Persuasion Rack for converting crew into Vassals.

") RunLair() // Start return TRUE @@ -229,7 +229,7 @@ ///obj/item/stack/packageWrap = 8, ///obj/item/pipe = 2) time = 150 - category = CAT_STRUCTURE + category = CAT_MISC always_availible = TRUE /datum/crafting_recipe/bloodsucker/meatcoffin @@ -240,7 +240,7 @@ reqs = list(/obj/item/reagent_containers/food/snacks/meat/slab = 5, /obj/item/restraints/handcuffs/cable = 1) time = 150 - category = CAT_STRUCTURE + category = CAT_MISC always_availible = TRUE /datum/crafting_recipe/bloodsucker/metalcoffin @@ -250,5 +250,5 @@ /obj/item/screwdriver) reqs = list(/obj/item/stack/sheet/metal = 5) time = 100 - category = CAT_STRUCTURE + category = CAT_MISC always_availible = TRUE diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm index 08d60caa94..2a4e2b31c6 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm @@ -247,12 +247,12 @@ if (bloodsuckerdatum.lair != get_area(src)) to_chat(user, "You may only activate this structure in your lair: [bloodsuckerdatum.lair].") return - switch(alert(user,"Do you wish to afix this structure here?","Secure [src]","Yes", "No")) + switch(alert(user,"Do you wish to afix this structure here? Be aware you wont be able to unsecure it anymore","Secure [src]","Yes", "No")) if("Yes") owner = user density = FALSE anchored = TRUE - return + return //No, you cant move this ever again // No One Home if (!has_buckled_mobs()) @@ -463,7 +463,6 @@ if (HAS_TRAIT(target, TRAIT_MINDSHIELD)) to_chat(target, "You give in to the will of your torturer. If they are successful, you will no longer be loyal to the station!") - /obj/structure/bloodsucker/vassalrack/proc/disloyalty_refuse(mob/living/target) // FAILSAFE: Still on the rack? if (!(locate(target) in buckled_mobs)) @@ -525,45 +524,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -/datum/crafting_recipe/bloodsucker/vassalrack - name = "Persuasion Rack" - //desc = "For converting crewmembers into loyal Vassals." - result = /obj/structure/bloodsucker/vassalrack - tools = list(/obj/item/weldingtool, - ///obj/item/screwdriver, - /obj/item/wrench - ) - reqs = list(/obj/item/stack/sheet/mineral/wood = 3, - /obj/item/stack/sheet/metal = 2, - /obj/item/restraints/handcuffs/cable = 2, - ///obj/item/storage/belt = 1 - ///obj/item/stack/sheet/animalhide = 1, // /obj/item/stack/sheet/leather = 1, - ///obj/item/stack/sheet/plasteel = 5 - ) - //parts = list(/obj/item/storage/belt = 1 - // ) - - time = 150 - category = CAT_STRUCTURE - always_availible = FALSE // Disabled til learned - - -/datum/crafting_recipe/bloodsucker/candelabrum - name = "Candelabrum" - //desc = "For converting crewmembers into loyal Vassals." - result = /obj/structure/bloodsucker/candelabrum - tools = list(/obj/item/weldingtool, - /obj/item/wrench - ) - reqs = list(/obj/item/stack/sheet/metal = 3, - /obj/item/stack/rods = 1, - /obj/item/candle = 1 - ) - time = 100 - category = CAT_STRUCTURE - always_availible = FALSE // Disabled til learned - - // OTHER THINGS TO USE: HUMAN BLOOD. /obj/effect/decal/cleanable/blood diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm index b2b91f8929..63f8838882 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_lair.dm @@ -36,8 +36,8 @@ while (!AmFinalDeath() && coffin && lair) - // WAit 10 Sec and Repeat - sleep(100) + // WAit 1 min and Repeat + sleep(60) // Coffin Moved SOMEHOW? if (lair != get_area(coffin)) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm index a09cc1358c..b5c5c2f265 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm @@ -4,8 +4,8 @@ name = "Brawn"//"Cellular Emporium" desc = "Snap restraints with ease, or deal terrible damage with your bare hands." button_icon_state = "power_strength" - bloodcost = 8 - cooldown = 100 + bloodcost = 10 + cooldown = 600 target_range = 1 power_activates_immediately = TRUE message_Trigger = ""//"Whom will you subvert to your will?" @@ -75,7 +75,7 @@ "[user] has knocked you down!", null, COMBAT_MESSAGE_RANGE) target.Knockdown( min(5, rand(10, 10 * powerlevel)) ) // Chance of KO - if (rand(5 + powerlevel) >= 5 && target.stat <= UNCONSCIOUS) + if (rand(3 + powerlevel) >= 5 && target.stat <= UNCONSCIOUS) target.Unconscious(40) // Attack! playsound(get_turf(target), 'sound/weapons/punch4.ogg', 60, 1, -1) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm index 53db94ef66..c3337eb391 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_haste.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_haste.dm @@ -54,7 +54,7 @@ // Did I get knocked down? if (owner && owner.incapacitated(ignore_restraints=TRUE,ignore_grab=TRUE))// owner.incapacitated()) // We're gonna cancel. But am I on the ground? Spin me! - if (user.lying) + if (user.resting) var/send_dir = get_dir(owner, T) new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) owner.spin(10) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm index e507b3a14f..4a36431b18 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_lunge.dm @@ -46,7 +46,6 @@ /datum/action/bloodsucker/targeted/lunge/FireTargetedPower(atom/A) // set waitfor = FALSE <---- DONT DO THIS!We WANT this power to hold up ClickWithPower(), so that we can unlock the power when it's done. - var/mob/living/user = owner var/mob/living/carbon/target = A var/turf/T = get_turf(target) // Clear Vars @@ -55,26 +54,20 @@ var/do_knockdown = !is_A_facing_B(target,owner) || owner.alpha <= 0 || istype(owner.loc, /obj/structure/closet) // CAUSES: Target has their back to me, I'm invisible, or I'm in a Closet // Step One: Heatseek toward Target's Turf + walk_towards(owner, T, 0.1, 10) // NOTE: this runs in the background! to cancel it, you need to use walk(owner.current,0), or give them a new path. - var/safety = 10 - while(get_turf(owner) != T && safety > 0 && !(isliving(target) && target.Adjacent(owner))) - if(owner.incapacitated()) - sleep(1) - safety -- - // Did I get knocked down? - if (owner && owner.incapacitated()) - if (user.lying) - var/send_dir = get_dir(owner, T) - new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) - owner.spin(10) - break - // Step Two: Check if I'm at/adjectent to Target's CURRENT turf (not original...that was just a destination) - if (target.Adjacent(owner)) + if(get_turf(owner) != T && !(isliving(target) && target.Adjacent(owner)) && owner.incapacitated() && owner.resting) + var/send_dir = get_dir(owner, T) + new /datum/forced_movement(owner, get_ranged_target_turf(owner, send_dir, 1), 1, FALSE) + owner.spin(10) + // Step Two: Check if I'm at/adjectent to Target's CURRENT turf (not original...that was just a destination) + sleep(1) + if(target.Adjacent(owner)) // LEVEL 2: If behind target, mute or unconscious! if (do_knockdown) // && level_current >= 1) target.Knockdown(15 + 10 * level_current,1) // Cancel Walk (we were close enough to contact them) - walk(owner,0) + walk(owner, 0) //target.Paralyze(10,1) target.grabbedby(owner) // Taken from mutations.dm under changelings target.grippedby(owner, instant = TRUE) //instant aggro grab diff --git a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm index fc396dbeea..bd185958d3 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm @@ -53,7 +53,7 @@ to_chat(owner, "Your victim is not [(target.stat == DEAD || HAS_TRAIT(target, TRAIT_FAKEDEATH))?"alive":"conscious"].") return FALSE // Check: Target has eyes? - if (!target.getorganslot("heart")) + if (!target.getorganslot(ORGAN_SLOT_EYES)) if (display_error) to_chat(owner, "They have no eyes!") return FALSE @@ -77,7 +77,7 @@ to_chat(owner, "You must be facing your victim.") return FALSE // Check: Target facing me? - if (!target.lying && !is_A_facing_B(target,owner)) + if (!target.resting && !is_A_facing_B(target,owner)) if (display_error) to_chat(owner, "Your victim must be facing you to see into your eyes.") return FALSE @@ -91,11 +91,13 @@ var/mob/living/carbon/target = A var/mob/living/user = owner - if (istype(target)) - ADD_TRAIT(target, TRAIT_MUTE, "bloodsucker_mesmerize") + if(istype(target)) + target.Stun(40) //Utterly useless without this, its okay since there are so many checks to go through + target.silent += 40 //Shhhh little lamb - if (do_mob(user, target, 40, 0, TRUE, extra_checks=CALLBACK(src, .proc/ContinueActive, user, target))) + if(do_mob(user, target, 40, 0, TRUE, extra_checks=CALLBACK(src, .proc/ContinueActive, user, target))) PowerActivatedSuccessfully() // PAY COST! BEGIN COOLDOWN! + ADD_TRAIT(target, TRAIT_MUTE, "bloodsucker_mesmerize") var/power_time = 90 + level_current * 15 to_chat(user, "[target] is fixed in place by your hypnotic gaze.") target.Stun(power_time) @@ -103,12 +105,12 @@ target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze. spawn(power_time) - if (istype(target)) + if(istype(target)) target.notransform = FALSE - REMOVE_TRAIT(target, TRAIT_MUTE, "bloodsucker_mesmerize") // They Woke Up! (Notice if within view) - if (istype(user) && target.stat == CONSCIOUS && (target in view(10, get_turf(user))) ) + if(istype(user) && target.stat == CONSCIOUS && (target in view(10, get_turf(user))) ) to_chat(user, "[target] has snapped out of their trance.") + REMOVE_TRAIT(target, TRAIT_MUTE, "bloodsucker_mesmerize") /datum/action/bloodsucker/targeted/mesmerize/ContinueActive(mob/living/user, mob/living/target) diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index f310ae3887..0e14f9f5be 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -6,7 +6,6 @@ CAT_WEAPONRY, CAT_ROBOT, CAT_MISC, - CAT_STRUCTURE, CAT_PRIMAL, CAT_FOOD, CAT_CLOTHING) diff --git a/code/modules/crafting/recipes/recipes_misc.dm b/code/modules/crafting/recipes/recipes_misc.dm index fdfb959fe6..5a05375933 100644 --- a/code/modules/crafting/recipes/recipes_misc.dm +++ b/code/modules/crafting/recipes/recipes_misc.dm @@ -315,3 +315,41 @@ reqs = list(/obj/item/stack/rods = 2, /obj/item/clothing/under/rank/security = 1) category = CAT_MISC + + /datum/crafting_recipe/bloodsucker/vassalrack + name = "Persuasion Rack" + //desc = "For converting crewmembers into loyal Vassals." + result = /obj/structure/bloodsucker/vassalrack + tools = list(/obj/item/weldingtool, + ///obj/item/screwdriver, + /obj/item/wrench + ) + reqs = list(/obj/item/stack/sheet/mineral/wood = 3, + /obj/item/stack/sheet/metal = 2, + /obj/item/restraints/handcuffs/cable = 2, + ///obj/item/storage/belt = 1 + ///obj/item/stack/sheet/animalhide = 1, // /obj/item/stack/sheet/leather = 1, + ///obj/item/stack/sheet/plasteel = 5 + ) + //parts = list(/obj/item/storage/belt = 1 + // ) + + time = 150 + category = CAT_MISC + always_availible = FALSE // Disabled til learned + + + /datum/crafting_recipe/bloodsucker/candelabrum + name = "Candelabrum" + //desc = "For converting crewmembers into loyal Vassals." + result = /obj/structure/bloodsucker/candelabrum + tools = list(/obj/item/weldingtool, + /obj/item/wrench + ) + reqs = list(/obj/item/stack/sheet/metal = 3, + /obj/item/stack/rods = 1, + /obj/item/candle = 1 + ) + time = 100 + category = CAT_MISC + always_availible = FALSE // Disabled til learned diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 8042cf1f90..d893108bcd 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -76,7 +76,7 @@ return amount /mob/living/carbon/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE) - if (!forced && amount < 0 && HAS_TRAIT(src,TRAIT_NONATURALHEAL)) // FULPSTATION 5/8/19 - Vamps don't heal naturally. + if (!forced && amount < 0 && HAS_TRAIT(src,TRAIT_NONATURALHEAL)) //Vamps don't heal naturally. return FALSE if(!forced && (status_flags & GODMODE)) return FALSE 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 7d568ed510..ff182b19ea 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) //can't farm slime jelly from a dead slime/jelly person indefinitely + if(H.stat == DEAD && HAS_TRAIT(src, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for vampires return if(!H.blood_volume) H.blood_volume += 5 diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 5177b55183..8ea155256c 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 32af6fb5d0..9219159405 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -25,7 +25,6 @@ #include "code\__DEFINES\antagonists.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" -#include "code\__DEFINES\bloodsucker.dm" #include "code\__DEFINES\bsql.config.dm" #include "code\__DEFINES\bsql.dm" #include "code\__DEFINES\callbacks.dm"