From eff037c632cc4a748eb7a053884eca80f04a788c Mon Sep 17 00:00:00 2001
From: CygnusB <39594514+MalricB@users.noreply.github.com>
Date: Fri, 4 Dec 2020 15:23:39 -0300
Subject: [PATCH 1/3] Delete bloodsucker_coffin.dm
duplicate that for some reason is in the code???
---
.../bloodsucker/items/bloodsucker_coffin.dm | 247 ------------------
1 file changed, 247 deletions(-)
delete mode 100644 code/modules/antagonists/bloodsucker/items/bloodsucker_coffin.dm
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
From f63219fc0749c8bae7224d9f30ce6acf65823358 Mon Sep 17 00:00:00 2001
From: CygnusB <39594514+MalricB@users.noreply.github.com>
Date: Fri, 4 Dec 2020 16:07:03 -0300
Subject: [PATCH 2/3] YIKESSSSSSSSSSSSSS
bigggg faaaat yikkkeeeesssss
---
code/modules/antagonists/bloodsucker/datum_bloodsucker.dm | 2 +-
code/modules/antagonists/bloodsucker/powers/bs_brawn.dm | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
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/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)
From ae2e3db2653ff06c9df2e9017fcd014b825c4b23 Mon Sep 17 00:00:00 2001
From: CygnusB <39594514+MalricB@users.noreply.github.com>
Date: Fri, 4 Dec 2020 16:13:43 -0300
Subject: [PATCH 3/3] also nerfs stamina regen a fair bit
yeah
---
code/modules/antagonists/bloodsucker/bloodsucker_life.dm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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.