Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
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
1 change: 1 addition & 0 deletions code/__DEFINES/language.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
#define LANGUAGE_EMP "emp"
#define LANGUAGE_TONGUE "tongue"
#define LANGUAGE_BLOOD_WORM "blood_worm"
#define LANGUAGE_FRENZY "frenzy"
Comment thread
Uristthedorf marked this conversation as resolved.
Outdated

// Language flags. Used in granting and removing languages.
/// This language can be spoken.
Expand Down
16 changes: 16 additions & 0 deletions modular_darkpack/modules/frenzy/code/beast_language.dm
Comment thread
Uristthedorf marked this conversation as resolved.
Outdated
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/datum/language/frenzy
name = "Frenzy"
desc = "The language of the Beast."
key = "q"
flags = LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD
space_chance = 100
sentence_chance = 0
between_word_sentence_chance = 0
between_word_space_chance = 100
additional_syllable_low = 0
additional_syllable_high = 0
syllables = list("raaagh", "hiss") //What are hungry noises?
default_priority = 100
always_use_default_namelist = TRUE // Shouldn't generate names for this anyways

icon_state = "animal"
16 changes: 15 additions & 1 deletion modular_darkpack/modules/frenzy/code/frenzy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,22 @@
if(IS_UNCONSCIOUS(src))
return
add_traits(list(TRAIT_IN_FRENZY, TRAIT_NOSOFTCRIT, TRAIT_ANALGESIA), FRENZY_TRAIT)

set_jitter_if_lower(1 SCENES)

add_blocked_language(subtypesof(/datum/language) - /datum/language/frenzy, LANGUAGE_FRENZY)
grant_language(/datum/language/frenzy, source = LANGUAGE_FRENZY)
AddComponentFrom("frenzy", /datum/component/speechmod, replacements = list("." = "!"), end_string = "!!", uppercase = TRUE) //Not perfect as two vampires in frenzy could have a legible conversation with each other, maybe if a fire happened and every vampire went rotschreck.
Comment thread
Uristthedorf marked this conversation as resolved.
Outdated

message_admins("[ADMIN_LOOKUPFLW(src)] has entered frenzy[target ? " targeting [ADMIN_LOOKUPFLW(target)]": ""]. ([source])")
log_combat(src, (src || target), "has frenzied on because of \"[source]\" on")

if(fleeing)
to_chat(src, span_danger("FLEE."))
add_traits(list(TRAIT_PACIFISM), FRENZY_TRAIT) //Lore inaccurate, but this forces them to flee instead of ignoring rotshreck and continuing to fight.
else
to_chat(src, span_bolddanger("FRENZY."))
add_traits(list(TRAIT_PERMAFANGS), FRENZY_TRAIT) //You're hangry and can't wait to eat.
Comment thread
Uristthedorf marked this conversation as resolved.
Outdated

SEND_SOUND(src, sound('modular_darkpack/modules/frenzy/sounds/frenzy.ogg', volume = 50))

Expand All @@ -25,9 +34,14 @@
/mob/living/proc/exit_frenzy_mode()
if(!HAS_TRAIT(src, TRAIT_IN_FRENZY))
return
remove_traits(list(TRAIT_IN_FRENZY, TRAIT_NOSOFTCRIT, TRAIT_ANALGESIA), FRENZY_TRAIT)
remove_traits(list(TRAIT_IN_FRENZY, TRAIT_NOSOFTCRIT, TRAIT_ANALGESIA, TRAIT_PACIFISM, TRAIT_PERMAFANGS), FRENZY_TRAIT)
log_message("exited frenzy.", LOG_ATTACK, color="red")

RemoveComponentSource("frenzy", /datum/component/speechmod)

remove_blocked_language(subtypesof(/datum/language), source = LANGUAGE_FRENZY)
remove_language(/datum/language/frenzy, source = LANGUAGE_FRENZY)

remove_status_effect(/datum/status_effect/frenzy)

/datum/storyteller_roll/frenzy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
var/hostile = FALSE
/// If use of this power creates a visible Masquerade breach.
var/violates_masquerade = FALSE
/// Can this be used while in frenzy
var/frenzy_usable = TRUE

/* HOW AND WHEN IT'S ACTIVATED AND DEACTIVATED */
/// If this Discipline doesn't automatically expire, but rather periodically drains blood.
Expand Down Expand Up @@ -269,6 +271,10 @@
//feedback is sent by the proc preventing activation
return FALSE

if(!frenzy_usable && HAS_TRAIT(owner, TRAIT_IN_FRENZY))
to_chat(owner, span_warning("You cannot do this while in frenzy!"))
Comment thread
Uristthedorf marked this conversation as resolved.
Outdated
return FALSE

//can't activate if the owner isn't capable of it
if (!can_activate_untargeted(alert))
return FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
name = "Animalism power name"
desc = "Animalism power description"
effect_sound = 'modular_darkpack/modules/werewolf_the_apocalypse/sounds/gifts/wolves.ogg'
frenzy_usable = FALSE
Comment thread
Uristthedorf marked this conversation as resolved.
Outdated

//SUMMON RAT
/datum/discipline_power/animalism/summon_rat
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@
check_flags = DISC_CHECK_CONSCIOUS
vitae_cost = 0
cooldown_length = 1 TURNS
frenzy_usable = FALSE

toggled = TRUE

Expand Down Expand Up @@ -274,6 +275,7 @@
var/datum/storyteller_roll/disguise_voice_roll/disguise_roll
COOLDOWN_DECLARE(mind_read_cd)
COOLDOWN_DECLARE(implant_tht_cd)
frenzy_usable = FALSE

/datum/storyteller_roll/telepathy_success
bumper_text = "mind reading"
Expand Down Expand Up @@ -416,6 +418,7 @@
check_flags = DISC_CHECK_CONSCIOUS
vitae_cost = 0
cooldown_length = 1 TURNS
frenzy_usable = FALSE

/datum/discipline_power/auspex/psychic_projection/activate()
. = ..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
range = 7
level = 1
vitae_cost = 0
frenzy_usable = FALSE

cancelable = TRUE
var/datum/storyteller_roll/sense_the_sin/sense_the_sin_roll
Expand Down Expand Up @@ -260,6 +261,7 @@
vitae_cost = 0
var/datum/storyteller_roll/condemnation/condemnation_roll
var/list/available_curses
frenzy_usable = FALSE

/datum/storyteller_roll/condemnation
bumper_text = "condemnation"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
name = "Dominate power name"
desc = "Dominate power description"
vitae_cost = 0 //No Dominate 1-5 abilities cost blood.
frenzy_usable = FALSE

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

Expand Down Expand Up @@ -122,6 +123,9 @@
if(HAS_TRAIT(target, TRAIT_WEAK_WILLED))
theirpower -= 2

if(HAS_TRAIT(target, TRAIT_IN_FRENZY))
theirpower += 2

if((!(owner.obscured_slots & HIDEFACE))&(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE))) // Are we visibly disfigured?
theirpower += 2

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@

aggravating = TRUE
hostile = TRUE
frenzy = FALSE

cooldown_length = 20 SECONDS

Expand All @@ -71,6 +72,7 @@
range = 1

violates_masquerade = TRUE
frenzy = FALSE

cooldown_length = 5 SECONDS

Expand Down Expand Up @@ -112,6 +114,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND
target_type = TARGET_LIVING
range = 1
frenzy = FALSE

cooldown_length = 5 SECONDS

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

vitae_cost = 1 // All Melpominee powers below 5 dots cost blood except for Missing Voice
var/obj/effect/abstract/particle_holder/particle_generator
frenzy_usable = FALSE

/datum/discipline_power/melpominee/proc/setup_particles()
if(!particle_generator)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE
target_type = TARGET_MOB
range = 7
frenzy_usable = FALSE

cooldown_length = 10 SECONDS

Expand All @@ -45,6 +46,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND | DISC_CHECK_LYING
target_type = TARGET_LIVING
range = 3
frenzy_usable = FALSE

cooldown_length = 30 SECONDS

Expand Down Expand Up @@ -78,6 +80,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_FREE_HAND
target_type = TARGET_MOB
range = 5
frenzy_usable = FALSE

aggravating = TRUE
hostile = TRUE
Expand Down Expand Up @@ -154,6 +157,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE
target_type = TARGET_LIVING
range = 5
frenzy_usable = FALSE

aggravating = TRUE
hostile = TRUE
Expand All @@ -175,6 +179,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_SPEAK
target_type = TARGET_LIVING
range = 7
frenzy_usable = FALSE

cooldown_length = 0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
/datum/discipline_power/necromancy
name = "Necromancy power name"
desc = "Necromancy power description"
frenzy_usable = FALSE

//SHROUDSIGHT V20 p. 163
/datum/storyteller_roll/shroudsight
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@
var/successes = 0
var/datum/storyteller_roll/anesthetic_touch/touch_roll // these are defined in valeren.dm
var/datum/storyteller_roll/anesthetic_touch/unwilling/touch_roll_unwilling
frenzy_usable = FALSE

/datum/discipline_power/obeah/anesthetic_touch/pre_activation_checks(mob/living/target)
. = ..()
Expand Down Expand Up @@ -222,6 +223,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_FREE_HAND | DISC_CHECK_IMMOBILE
target_type = TARGET_LIVING
range = 1
frenzy_usable = FALSE

violates_masquerade = TRUE
cooldown_length = 1 TURNS
Expand Down Expand Up @@ -249,6 +251,7 @@
willpower_cost = 2
cancelable = TRUE
var/datum/proximity_monitor/advanced/shepherds_watch/area_of_effect
frenzy_usable = FALSE

/datum/discipline_power/obeah/shepherds_watch/activate(atom/target)
. = ..()
Expand Down Expand Up @@ -282,6 +285,7 @@
target_type = TARGET_LIVING
range = 1
var/datum/storyteller_roll/mens_sana/discipline_roll
frenzy_usable = FALSE

/datum/storyteller_roll/mens_sana
bumper_text = "mens sana"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
/datum/discipline_power/obfuscate/vanish_from_the_minds_eye,
/datum/discipline_power/obfuscate/cloak_the_gathering
)
frenzy_usable = FALSE

/datum/discipline_power/obfuscate/cloak_of_shadows/pre_activation_checks()
. = ..()
Expand Down Expand Up @@ -136,6 +137,7 @@
level = 2
check_flags = DISC_CHECK_CAPABLE
vitae_cost = 0
frenzy_usable = FALSE

toggled = TRUE

Expand Down Expand Up @@ -189,6 +191,7 @@
level = 3
check_flags = DISC_CHECK_CAPABLE
vitae_cost = 0 // vitae cost handled in activate()
frenzy_usable = FALSE

toggled = TRUE
grouped_powers = list(
Expand Down Expand Up @@ -359,6 +362,7 @@
level = 5
check_flags = DISC_CHECK_CAPABLE
vitae_cost = 0
frenzy_usable = FALSE

toggled = TRUE

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
multi_activate = TRUE
duration_length = 1 SCENES
cooldown_length = 1 TURNS
frenzy_usable = FALSE

var/list/shadows = list() // A list of all active shadows
var/datum/action/clear_shadows/cbutton // The button to clear everything
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
if((!(owner.obscured_slots & HIDEFACE))&(HAS_TRAIT(owner, TRAIT_DISFIGURED_APPEARANCE))) // Are we visibly disfigured?
theirpower += 2 // Increase the difficulty by two.

if(HAS_TRAIT(target, TRAIT_IN_FRENZY))
theirpower += 2

if(!get_kindred_splat(target)) // Is our target mortal?
if(HAS_TRAIT(owner, TRAIT_GRAVE_SMELL)) // Are we stinky?
theirpower += 1
Expand Down Expand Up @@ -102,6 +105,7 @@
vitae_cost = 1
var/successes = 0
var/list/affected_targets = list()
frenzy_usable = FALSE

/datum/discipline_power/presence/awe/pre_activation_checks()
. = ..()
Expand Down Expand Up @@ -221,6 +225,7 @@
duration_length = 5 SECONDS
vitae_cost = 1
var/successes = 0
frenzy_usable = FALSE

/datum/discipline_power/presence/entrancement/pre_activation_checks(mob/living/target)

Expand Down Expand Up @@ -265,6 +270,7 @@
vitae_cost = 1
var/successes = 0
var/mob/living/carbon/human/summon_target
frenzy_usable = FALSE

/datum/discipline_power/presence/summon/pre_activation_checks(mob/living/target)
var/summon_target_name = tgui_input_text(owner, "Summon Target:", "Summon Target")
Expand Down Expand Up @@ -335,6 +341,7 @@
willpower_cost = 1
violates_masquerade = TRUE
var/list/affected_targets = list()
frenzy_usable = FALSE

/datum/discipline_power/presence/majesty/pre_activation_checks(mob/living/target)
return TRUE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
duration_length = 1 SCENES
cooldown_length = 2 SCENES
var/datum/proximity_monitor/advanced/silence_of_death/silence_field
frenzy_usable = FALSE

/datum/discipline_power/quietus/silence_of_death/activate()
. = ..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
aggravating = FALSE
hostile = FALSE
violates_masquerade = TRUE
frenzy_usable = FALSE

multi_activate = TRUE
duration_length = 5 SECONDS
Expand Down Expand Up @@ -266,6 +267,7 @@
vitae_cost = 0

violates_masquerade = TRUE
frenzy_usable = FALSE

cooldown_length = 20 SECONDS

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
vitae_cost = 0 //You *can* spend a BP to boost this, but it'd extend time to hours or a day.

hostile = TRUE
frenzy_usable = FALSE

cooldown_length = 15 SECONDS

Expand Down Expand Up @@ -125,6 +126,7 @@
check_flags = DISC_CHECK_CONSCIOUS | DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE

violates_masquerade = TRUE
frenzy_usable = FALSE

cancelable = TRUE
duration_length = 10 SECONDS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
cancelable = TRUE
duration_length = 1 HOURS
var/datum/storyteller_roll/hags_wrinkles/hags_wrinkles_roll
frenzy_usable = FALSE

/datum/storyteller_roll/hags_wrinkles
bumper_text = "hag's wrinkles"
Expand Down Expand Up @@ -156,6 +157,7 @@
cancelable = TRUE
duration_length = 0
cooldown_length = 1 TURNS
frenzy_usable = FALSE

var/datum/action/cooldown/spell/shapeshift/samedi_ash/dust_transformation

Expand Down
Loading
Loading