diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 9174692b..f5b2efcc 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -84,8 +84,8 @@ //It is called from your coffin on close (by you only) if(poweron_masquerade == TRUE || owner.current.AmStaked()) return FALSE - owner.current.adjustStaminaLoss(-2 + (regenRate * -10) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. - owner.current.adjustCloneLoss(-1 * (regenRate * 4) * mult, 0) + 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) // No Bleeding if(ishuman(owner.current)) //NOTE Current bleeding is horrible, not to count the amount of blood ballistics delete. diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm index 13fced16..2332b8d6 100644 --- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm +++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm @@ -319,7 +319,7 @@ datum/antagonist/bloodsucker/proc/SpendRank() if(ishuman(owner.current)) var/mob/living/carbon/human/H = owner.current var/datum/species/S = H.dna.species - S.burnmod *= 0.025 // Slightly more burn damage + S.burnmod *= 1.025 // Slightly more burn damage S.stunmod *= 0.95 // Slightly less stun time. S.punchdamagelow += 0.75 S.punchdamagehigh += 0.75 // NOTE: This affects the hitting power of Brawn. diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_coffin.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_coffin.dm deleted file mode 100644 index 19799bc3..00000000 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_coffin.dm +++ /dev/null @@ -1,247 +0,0 @@ - - -// TRAIT_DEATHCOMA - Activate this when you're in your coffin to simulate sleep/death. - - -// Coffins... -// -heal all wounds, and quickly. -// -restore limbs & organs -// - -// Without Coffins... -// - -// -limbs stay lost - - - -// To put to sleep: use owner.current.fakedeath("bloodsucker") but change name to "bloodsucker_coffin" so you continue to stay fakedeath despite healing in the main thread! - - -/datum/antagonist/bloodsucker/proc/ClaimCoffin(obj/structure/closet/crate/claimed) // NOTE: This can be any "closet" that you are resting AND inside of. - // ALREADY CLAIMED - if(claimed.resident) - if(claimed.resident == owner.current) - to_chat(owner, "This is your [src].") - else - to_chat(owner, "This [src] has already been claimed by another.") - return FALSE - // Bloodsucker Learns new Recipes! - owner.teach_crafting_recipe(/datum/crafting_recipe/bloodsucker/vassalrack) - owner.teach_crafting_recipe(/datum/crafting_recipe/bloodsucker/candelabrum) - // This is my Lair - coffin = claimed - lair = get_area(claimed) - // 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 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 - -// crate.dm -/obj/structure/closet/crate - var/mob/living/resident // This lets bloodsuckers claim any "closet" as a Coffin, so long as they could get into it and close it. This locks it in place, too. - -/obj/structure/closet/crate/coffin - var/pryLidTimer = 250 - can_weld_shut = FALSE - breakout_time = 200 - - -/obj/structure/closet/crate/coffin/blackcoffin - name = "black coffin" - desc = "For those departed who are not so dear." - icon_state = "coffin" - icon = 'icons/obj/vamp_obj.dmi' - can_weld_shut = FALSE - resistance_flags = 0 // Start off with no bonuses. - open_sound = 'sound/bloodsucker/coffin_open.ogg' - close_sound = 'sound/bloodsucker/coffin_close.ogg' - breakout_time = 600 - pryLidTimer = 400 - resistance_flags = NONE - integrity_failure = 70 - armor = list("melee" = 50, "bullet" = 20, "laser" = 30, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60) - -/obj/structure/closet/crate/coffin/meatcoffin - name = "meat coffin" - desc = "When you're ready to meat your maker, the steaks can never be too high." - icon_state = "meatcoffin" - icon = 'icons/obj/vamp_obj.dmi' - can_weld_shut = FALSE - resistance_flags = 0 // Start off with no bonuses. - open_sound = 'sound/effects/footstep/slime1.ogg' - close_sound = 'sound/effects/footstep/slime1.ogg' - breakout_time = 200 - pryLidTimer = 200 - resistance_flags = NONE - material_drop = /obj/item/reagent_containers/food/snacks/meat/slab - material_drop_amount = 3 - integrity_failure = 40 - armor = list("melee" = 70, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100) - - -/obj/structure/closet/crate/coffin/metalcoffin - name = "metal coffin" - desc = "A big metal sardine can inside of another big metal sardine can, in space." - icon_state = "metalcoffin" - icon = 'icons/obj/vamp_obj.dmi' - can_weld_shut = FALSE - resistance_flags = FIRE_PROOF | LAVA_PROOF - open_sound = 'sound/effects/pressureplate.ogg' - close_sound = 'sound/effects/pressureplate.ogg' - breakout_time = 300 - pryLidTimer = 200 - resistance_flags = NONE - material_drop = /obj/item/stack/sheet/metal - material_drop_amount = 5 - -////////////////////////////////////////////// - -/obj/structure/closet/crate/proc/ClaimCoffin(mob/living/claimant) // NOTE: This can be any "closet" that you are resting AND inside of. - // Bloodsucker Claim - var/datum/antagonist/bloodsucker/bloodsuckerdatum = claimant.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) - if(bloodsuckerdatum) - // Vamp Successfuly Claims Me? - if(bloodsuckerdatum.ClaimCoffin(src)) - resident = claimant - anchored = 1 // No moving this - -/obj/structure/closet/crate/coffin/Destroy() - UnclaimCoffin() - return ..() - -/obj/structure/closet/crate/proc/UnclaimCoffin() - if (resident) - // Vamp Un-Claim - if (resident.mind) - var/datum/antagonist/bloodsucker/bloodsuckerdatum = resident.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) - if (bloodsuckerdatum && bloodsuckerdatum.coffin == src) - bloodsuckerdatum.coffin = null - bloodsuckerdatum.lair = null - to_chat(resident, "You sense that the link with your coffin, your sacred place of rest, has been brokem! You will need to seek another.") - resident = null // Remove resident. Because this object isnt removed from the game immediately (GC?) we need to give them a way to see they don't have a home anymore. - -/obj/structure/closet/crate/coffin/can_open(mob/living/user) - // You cannot lock in/out a coffin's owner. SORRY. - if (locked) - if(user == resident) - if (welded) - welded = FALSE - update_icon() - //to_chat(user, "You flip a secret latch and unlock [src].") // Don't bother. We know it's unlocked. - locked = FALSE - return 1 - else - playsound(get_turf(src), 'sound/machines/door_locked.ogg', 20, 1) - to_chat(user, "[src] is locked tight from the inside.") - return ..() - -/obj/structure/closet/crate/coffin/close(mob/living/user) - var/turf/Turf = get_turf(src) - var/area/A = get_area(src) - if (!..()) - return FALSE - // Only the User can put themself into Torpor (if you're already in it, you'll start to heal) - if((user in src)) - // Bloodsucker Only - var/datum/antagonist/bloodsucker/bloodsuckerdatum = user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) - if(bloodsuckerdatum) - LockMe(user) - Turf = get_turf(user) //we may have moved. adjust as needed... - A = get_area(src) - // Claim? - if(!bloodsuckerdatum.coffin && !resident && (is_station_level(Turf.z) || !A.map_name == "Space")) - switch(alert(user,"Do you wish to claim this as your coffin? [get_area(src)] will be your lair.","Claim Lair","Yes", "No")) - if("Yes") - ClaimCoffin(user) - if (user.AmStaked()) // Stake? No Heal! - to_chat(bloodsuckerdatum.owner.current, "You are staked! Remove the offending weapon from your heart before sleeping.") - return - // Heal - if(bloodsuckerdatum.HandleHealing(0)) // Healing Mult 0 <--- We only want to check if healing is valid! - to_chat(bloodsuckerdatum.owner.current, "You enter the horrible slumber of deathless Torpor. You will heal until you are renewed.") - bloodsuckerdatum.Torpor_Begin() - // Level Up? - bloodsuckerdatum.SpendRank() // Auto-Fails if not appropriate - return TRUE - -/obj/structure/closet/crate/coffin/attackby(obj/item/W, mob/user, params) - // You cannot weld or deconstruct an owned coffin. STILL NOT SORRY. - if (resident != null && user != resident) // Owner can destroy their own coffin. - if(opened) - if(istype(W, cutting_tool)) - to_chat(user, "This is a much more complex mechanical structure than you thought. You don't know where to begin cutting [src].") - return - else if(anchored && istype(W, /obj/item/wrench)) // Can't unanchor unless owner. - to_chat(user, "The coffin won't come unanchored from the floor.") - return - - if(locked && istype(W, /obj/item/crowbar)) - var/pry_time = pryLidTimer * W.toolspeed // Pry speed must be affected by the speed of the tool. - user.visible_message("[user] tries to pry the lid off of [src] with [W].", \ - "You begin prying the lid off of [src] with [W]. This should take about [DisplayTimeText(pry_time)].") - if (!do_mob(user,src,pry_time)) - return - bust_open() - user.visible_message("[user] snaps the door of [src] wide open.", \ - "The door of [src] snaps open.") - return - ..() - - - -/obj/structure/closet/crate/coffin/AltClick(mob/user) - // Distance Check (Inside Of) - if (user in src) // user.Adjacent(src) - LockMe(user, !locked) - -/obj/structure/closet/crate/proc/LockMe(mob/user, inLocked = TRUE) - // Lock - if (user == resident) - if (!broken) - locked = inLocked - to_chat(user, "You flip a secret latch and [locked?"":"un"]lock yourself inside [src].") - else - to_chat(resident, "The secret latch to lock [src] from the inside is broken. You set it back into place...") - if (do_mob(resident, src, 50))//sleep(10) - if (broken) // Spam Safety - to_chat(resident, "You fix the mechanism and lock it.") - broken = FALSE - locked = TRUE - -// Look up recipes.dm OR pneumaticCannon.dm -/datum/crafting_recipe/bloodsucker/blackcoffin - name = "Black Coffin" - result = /obj/structure/closet/crate/coffin/blackcoffin - tools = list(/obj/item/weldingtool, - /obj/item/screwdriver) - reqs = list(/obj/item/stack/sheet/cloth = 1, - /obj/item/stack/sheet/mineral/wood = 5, - /obj/item/stack/sheet/metal = 1) - ///obj/item/stack/packageWrap = 8, - ///obj/item/pipe = 2) - time = 150 - category = CAT_MISC - always_availible = TRUE - -/datum/crafting_recipe/bloodsucker/meatcoffin - name = "Meat Coffin" - result =/obj/structure/closet/crate/coffin/meatcoffin - tools = list(/obj/item/kitchen/knife, - /obj/item/kitchen/rollingpin) - reqs = list(/obj/item/reagent_containers/food/snacks/meat/slab = 5, - /obj/item/restraints/handcuffs/cable = 1) - time = 150 - category = CAT_MISC - always_availible = TRUE - -/datum/crafting_recipe/bloodsucker/metalcoffin - name = "Metal Coffin" - result =/obj/structure/closet/crate/coffin/metalcoffin - tools = list(/obj/item/weldingtool, - /obj/item/screwdriver) - reqs = list(/obj/item/stack/sheet/metal = 5) - time = 100 - category = CAT_MISC - always_availible = TRUE diff --git a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm index 5a40e556..4084ff0c 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_brawn.dm @@ -69,12 +69,12 @@ var/hitStrength = user_C.dna.species.punchdamagehigh * 2.0 + 5 // Knockdown! var/powerlevel = min(5, 1 + level_current) - if(rand(5 + powerlevel) >= 5) - target.visible_message("[user] lands a vicious punch, sending [target] away!", \ + target.visible_message("[user] lands a vicious punch, sending [target] away!", \ "[user] has landed a horrifying punch on you, sending you flying!!", null, COMBAT_MESSAGE_RANGE) + if(rand(0, 5 + powerlevel) >= 5) target.Knockdown(min(5, rand(10, 10 * powerlevel)) ) // Chance of KO - if(rand(6 + powerlevel) >= 6 && target.stat <= UNCONSCIOUS) + if(rand(0, 6 + powerlevel) >= 6 && target.stat <= UNCONSCIOUS) target.Unconscious(40) // Attack! playsound(get_turf(target), 'sound/weapons/punch4.ogg', 60, 1, -1)