Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/~darkpack/traits/macros.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/// Trait applied by element
#define DISCIPLINE_TRAIT(source) "discipline_trait_[source]"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for this we should likely be consistent about if we use the /discipline vs the /discipline_power right?
right now your just using the type of whatever you happen to be in like proximity_monitor rn lol

Copy link
Collaborator Author

@XeonMations XeonMations Feb 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we use type, as all other macros use, after all it doesnt matter what it is, aslong as it lines up with the removal as well.

plus uh, discipline_power is better since discipline doesnt have proper procs like discpline_power does.

1 change: 0 additions & 1 deletion code/__DEFINES/~darkpack/traits/sources.dm
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

/// Trait given by a vampire's Clan
#define CLAN_TRAIT "clan"
#define DISCIPLINE_TRAIT "discipline"

#define STAKE_TRAIT "stake"
#define DAMAGE_TRAIT "damage"
Expand Down
Binary file modified modular_darkpack/modules/deprecated/icons/UI/actions.dmi
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,18 @@

if(SENSE_VISION in output_senses)
owner.client?.view_size?.setTo(2) // This increases the view size of the player by 2 tiles in each direction. I dont know why it's called Set if it Adds.
ADD_TRAIT(owner, TRAIT_REFLECTIVE_EYES, DISCIPLINE_TRAIT)
ADD_TRAIT(owner, TRAIT_REFLECTIVE_EYES, DISCIPLINE_TRAIT(type))
var/obj/item/organ/eyes/kindred_eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
if(kindred_eyes)
kindred_eyes.flash_protect = max(kindred_eyes.flash_protect += -2, FLASH_PROTECTION_HYPER_SENSITIVE)
if(SENSE_HEARING in output_senses)
ADD_TRAIT(owner, TRAIT_GOOD_HEARING, DISCIPLINE_TRAIT)
ADD_TRAIT(owner, TRAIT_GOOD_HEARING, DISCIPLINE_TRAIT(type))
var/obj/item/organ/ears/kindred_ears = owner.get_organ_slot(ORGAN_SLOT_EARS)
kindred_ears.damage_multiplier = kindred_ears.damage_multiplier + 1
if(SENSE_SMELL in output_senses)
owner.dna?.add_mutation(/datum/mutation/olfaction, DISCIPLINE_TRAIT)
owner.dna?.add_mutation(/datum/mutation/olfaction, DISCIPLINE_TRAIT(type))
if(SENSE_TASTE in output_senses)
ADD_TRAIT(owner, TRAIT_REAGENT_SCANNER, DISCIPLINE_TRAIT)
ADD_TRAIT(owner, TRAIT_REAGENT_SCANNER, DISCIPLINE_TRAIT(type))
if(SENSE_TOUCH in output_senses)
RegisterSignals(owner, list(COMSIG_CARBON_HELP_ACT, COMSIG_ON_CARBON_SLIP, COMSIG_LIVING_DISARM_HIT, COMSIG_LIVING_TRYING_TO_PULL), PROC_REF(on_touch))
owner.AddComponent(/datum/component/heartbeat_sensing, color_path = /datum/client_colour/psyker)
Expand All @@ -73,17 +73,17 @@
if(mutation)
owner.dna?.remove_mutation(mutation, mutation.sources)
// Hearing
REMOVE_TRAIT(owner, TRAIT_GOOD_HEARING, DISCIPLINE_TRAIT)
REMOVE_TRAIT(owner, TRAIT_GOOD_HEARING, DISCIPLINE_TRAIT(type))
var/obj/item/organ/ears/kindred_ears = owner.get_organ_slot(ORGAN_SLOT_EARS)
kindred_ears.damage_multiplier = initial(kindred_ears.damage_multiplier)
// Vision
owner.client?.view_size?.resetToDefault()
REMOVE_TRAIT(owner, TRAIT_REFLECTIVE_EYES, DISCIPLINE_TRAIT)
REMOVE_TRAIT(owner, TRAIT_REFLECTIVE_EYES, DISCIPLINE_TRAIT(type))
var/obj/item/organ/eyes/kindred_eyes = owner.get_organ_slot(ORGAN_SLOT_EYES)
if(kindred_eyes)
kindred_eyes.flash_protect = max(kindred_eyes.flash_protect += 2, FLASH_PROTECTION_NONE)
// Taste
REMOVE_TRAIT(owner, TRAIT_REAGENT_SCANNER, DISCIPLINE_TRAIT)
REMOVE_TRAIT(owner, TRAIT_REAGENT_SCANNER, DISCIPLINE_TRAIT(type))
// Touch
UnregisterSignal(owner, list(COMSIG_CARBON_HELP_ACT, COMSIG_ON_CARBON_SLIP, COMSIG_LIVING_DISARM_HIT, COMSIG_LIVING_TRYING_TO_PULL))
qdel(owner.GetComponent(/datum/component/heartbeat_sensing))
Expand Down
154 changes: 0 additions & 154 deletions modular_darkpack/modules/powers/code/discipline/healer_valeren.dm

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

owner.add_faction(VAMPIRE_CLAN_GIOVANNI)
var/datum/action/ritual_drawing/necromancy/ritualist = new()
ADD_TRAIT(owner, TRAIT_NECROMANCY_KNOWLEDGE, DISCIPLINE_TRAIT)
ADD_TRAIT(owner, TRAIT_NECROMANCY_KNOWLEDGE, DISCIPLINE_TRAIT(type))
ritualist.Grant(owner)
ritualist.level = level

Expand Down
139 changes: 139 additions & 0 deletions modular_darkpack/modules/powers/code/discipline/obeah.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
/datum/discipline/obeah
name = "Obeah"
desc = "Use your third eye in healing or protecting needs."
icon_state = "obeah"
clan_restricted = TRUE
power_type = /datum/discipline_power/obeah

/datum/discipline_power/obeah
name = "Valeren power name"
desc = "Valeren power description"

activate_sound = 'modular_darkpack/modules/powers/sounds/obeah.ogg'

//SENSE VITALITY
/datum/discipline_power/obeah/sense_vitality
name = "Sense Vitality"
desc = "Focus your senses to read the vitality of a target."

level = 1
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND
target_type = TARGET_MOB | TARGET_SELF
range = 1
vitae_cost = 0
cooldown_length = 1 TURNS

// perception + empathy at diff 7
// 1 success = splat
// 2 success = splat + vitals
// 3 success = splat + vital + current bloodpool
/datum/discipline_power/obeah/sense_vitality/activate(mob/living/target)
. = ..()
var/datum/storyteller_roll/sense_vitality_roll = new()
sense_vitality_roll.applicable_stats = list(STAT_PERCEPTION, STAT_EMPATHY)
sense_vitality_roll.difficulty = 7
sense_vitality_roll.numerical = TRUE
sense_vitality_roll.roll_output_type = ROLL_PRIVATE_ADMIN
var/roll_result = sense_vitality_roll.st_roll(owner)

var/list/render_list = list()
render_list = do_roll_results(target, roll_result)
to_chat(owner, custom_boxed_message("blue_box", jointext(render_list, "")), type = MESSAGE_TYPE_INFO)

/datum/discipline_power/obeah/sense_vitality/proc/do_roll_results(mob/living/target, roll_result)
var/list/render_list = list()
if(roll_result < 1)
render_list += span_danger("You fail to sense anything.\n")
return render_list

// One Success.
var/datum/splat/sensed_splat = LAZYACCESS(target.splats, 1)
render_list += span_notice("You identify them to be a [sensed_splat ? sensed_splat.name : "Human"].\n")

if(roll_result < 2)
return render_list
// Two Successes.
render_list += custom_boxed_message("blue_box", healthscan(user = owner, target = target, mode = SCANNER_VERBOSE, advanced = TRUE, tochat = FALSE))

if(roll_result < 3)
return render_list
// Three Successes.
var/mob/living/carbon/human/target_human = target
var/bloodpool = target_human?.bloodpool
render_list += span_notice("You sense they have [bloodpool ? bloodpool : "no"] Vitae remaining.\n")
return render_list

//////////////////////////////////////////////////////////////////////////////////////////////////////////

//ANESTHETIC TOUCH
/datum/discipline_power/obeah/anesthetic_touch
name = "Anesthetic Touch"
desc = "Soothe your patient's pain, or put them to peaceful sleep."

level = 2
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND
target_type = TARGET_LIVING
range = 1
cooldown_length = 1 TURNS

// TO DO, make this use two mouse buttons instead of radial menu.
// LMB: Block someone's pain
// RMB: Put mortal to sleep.
/datum/discipline_power/obeah/anesthetic_touch/activate(mob/living/target)
. = ..()
var/chosen_option = show_radial_menu(owner, target, list("Soothe Pain", "Put To Sleep"), radius = 38, require_near = TRUE)
switch(chosen_option)
if("Soothe Pain")
ADD_TRAIT(target, TRAIT_IGNORESLOWDOWN, DISCIPLINE_TRAIT(type))
addtimer(CALLBACK(src, PROC_REF(end_soothe_pain), target), 1 SCENES)
if("Put To Sleep")
if(iskindred(target))
to_chat(owner, span_warning("You can't put a Kindred to sleep with this power!"))
return TRUE
target.SetSleeping(10 SCENES) // 30 minutes if left alone
target.adjust_blood_pool(1) // Mortal regains a blood point.
return TRUE

/datum/discipline_power/obeah/anesthetic_touch/proc/end_soothe_pain(mob/living/target)
REMOVE_TRAIT(target, TRAIT_IGNORESLOWDOWN, DISCIPLINE_TRAIT(type))

//////////////////////////////////////////////////////////////////////////////////////////////////////////

/*
//CORPORE SANO
/datum/discipline_power/obeah/corpore_sano
name = "Corpore Sano"
desc = "Lay hands on your patient and heal their wounds."
Comment on lines +104 to +106
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you get to this, consider using heal_storyteller_health()


level = 3
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE
target_type = TARGET_LIVING
range = 1

violates_masquerade = TRUE

cooldown_length = 5 SECONDS


//SHEPHERD'S WATCH
/datum/discipline_power/obeah/shepherds_watch
name = "Shepherd's Watch"
desc = "Create a supernatural barrier to protect yourself from harm."

level = 4

cooldown_length = 40 SECONDS

//UNBURDEN THE BESTIAL SOUL
/datum/discipline_power/obeah/unburden_the_bestial_soul
name = "Unburden The Bestial Soul"
desc = "Draw out a Kindred's soul and heal it of impurities."

level = 5
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND
target_type = TARGET_LIVING
range = 1

cooldown_length = 5 SECONDS

*/
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
var/datum/action/ritual_drawing/mysticism/mystic = new()
mystic.Grant(owner)
mystic.level = level
ADD_TRAIT(owner, TRAIT_MYSTICISM_KNOWLEDGE, DISCIPLINE_TRAIT)
ADD_TRAIT(owner, TRAIT_MYSTICISM_KNOWLEDGE, DISCIPLINE_TRAIT(type))


/datum/discipline_power/obtenebration
Expand Down
Loading
Loading