Skip to content
82 changes: 56 additions & 26 deletions code/__DEFINES/~darkpack/auras.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,29 +40,59 @@
#define AURA_FAERIE (FALSE) // Rainbow highlights in aura -- Not implemented. Changelings.

GLOBAL_LIST_INIT(aura_list, sort_list(list(
"Afraid" = AURA_AFRAID,
"Aggressive" = AURA_AGGRESSIVE,
"Angry" = AURA_ANGRY,
"Bitter" = AURA_BITTER,
"Calm" = AURA_CALM,
"Compassionate" = AURA_COMPASSIONATE,
"Conservative" = AURA_CONSERVATIVE,
"Depressed" = AURA_DEPRESSED,
"Desirous" = AURA_DESIROUS,
"Distrustful" = AURA_DISTRUSTFUL,
"Envious" = AURA_ENVIOUS,
"Excited" = AURA_EXCITED,
"Generous" = AURA_GENEROUS,
"Happy" = AURA_HAPPY,
"Hateful" = AURA_HATEFUL,
"Idealistic" = AURA_IDEALISTIC,
"Innocent" = AURA_INNOCENT,
"Lovestruck" = AURA_LOVESTRUCK,
"Obsessed" = AURA_OBSESSED,
"Sad" = AURA_SAD,
"Spiritual" = AURA_SPIRITUAL,
"Suspicious" = AURA_SUSPICIOUS,
"Anxious" = AURA_ANXIOUS,
"Confused" = AURA_CONFUSED,
"Daydreaming" = AURA_DAYDREAMING,
"Psychotic" = AURA_PSYCHOTIC)))
"Afraid" = AURA_AFRAID,
"Aggressive" = AURA_AGGRESSIVE,
"Angry" = AURA_ANGRY,
"Bitter" = AURA_BITTER,
"Calm" = AURA_CALM,
"Compassionate" = AURA_COMPASSIONATE,
"Conservative" = AURA_CONSERVATIVE,
"Depressed" = AURA_DEPRESSED,
"Desirous" = AURA_DESIROUS,
"Distrustful" = AURA_DISTRUSTFUL,
"Envious" = AURA_ENVIOUS,
"Excited" = AURA_EXCITED,
"Generous" = AURA_GENEROUS,
"Happy" = AURA_HAPPY,
"Hateful" = AURA_HATEFUL,
"Idealistic" = AURA_IDEALISTIC,
"Innocent" = AURA_INNOCENT,
"Lovestruck" = AURA_LOVESTRUCK,
"Obsessed" = AURA_OBSESSED,
"Sad" = AURA_SAD,
"Spiritual" = AURA_SPIRITUAL,
"Suspicious" = AURA_SUSPICIOUS,
"Anxious" = AURA_ANXIOUS,
"Confused" = AURA_CONFUSED,
"Daydreaming" = AURA_DAYDREAMING,
"Psychotic" = AURA_PSYCHOTIC
)))

GLOBAL_LIST_INIT(emotion_to_quality, sort_list(list(
"Afraid" = "fear",
"Aggressive" = "aggressiveness",
"Angry" = "anger",
"Bitter" = "bitterness",
"Calm" = "calmness",
"Compassionate" = "compassion",
"Conservative" = "conservativeness",
"Depressed" = "depression",
"Desirous" = "desire",
"Distrustful" = "distrust",
"Envious" = "envy",
"Excited" = "excitement",
"Generous" = "generosity",
"Happy" = "happiness",
"Hateful" = "hate",
"Idealistic" = "idealism",
"Innocent" = "innocence",
"Lovestruck" = "love",
"Obsessed" = "obsessiveness",
"Sad" = "sadness",
"Spiritual" = "spirituality",
"Suspicious" = "suspicion",
"Anxious" = "anxiety",
"Confused" = "confusion",
"Daydreaming" = "absentmindedness",
"Psychotic" = "psychosis"
)))
5 changes: 5 additions & 0 deletions code/__DEFINES/~darkpack/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
// Is the Vampire currently hungry? Hunger is defined at a bloodpool rating of 7 - self control (if humanity alignment) or instincts (enlightenment alignment)
// its called this because theres apparently already a defined quirk called 'hungry' which appears to lower your blood drawn from biting by half.
#define TRAIT_NEEDS_BLOOD "vampire_hungry"

// Is the character's emotion currently forced? Blocks emotion panel usage - Melpominee
#define TRAIT_FORCED_EMOTION "forced_emotion"
// Are we under the effects of Melpominee 5?
#define TRAIT_VIRTUOSA "virtuosa"
// END TRAIT DEFINES
2 changes: 2 additions & 0 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -725,6 +725,8 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_WEAK_TO_DOMINATE" = TRAIT_WEAK_TO_DOMINATE, // DARKPACK EDIT ADD - Dominate
"TRAIT_ILLEGAL_IDENTITY" = TRAIT_ILLEGAL_IDENTITY, // DARKPACK EDIT ADD - GOVERMENT
"TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP,
"TRAIT_FORCED_EMOTION" = TRAIT_FORCED_EMOTION, // DARKPACK EDIT ADD - Melpominee
"TRAIT_VIRTUOSA" = TRAIT_VIRTUOSA, // DARKPACK EDIT ADD - Melpominee
),
/mob/living/carbon = list(
"TRAIT_BRAINLESS_CARBON" = TRAIT_BRAINLESS_CARBON,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
/mob/dead/observer
has_emotion = TRUE
var/soul_taken = FALSE //prevents necromancers from farming souls off one singular ghost

/mob/dead/observer/Initialize(mapload)
. = ..()
AddComponent(/datum/component/aura)
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/mob/living/Initialize(mapload)
. = ..()
storyteller_stats = create_new_stat_prefs(storyteller_stats)
AddComponent(/datum/component/aura)
become_area_sensitive("zone_hud")
update_zone_hud(src, get_area(src))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/mob/living
has_emotion = TRUE

var/mob/living/lastattacked

var/bloodquality = 1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/mob
/// Emotion currently felt by the mob (for Auspex auras etc.) // (AS A COLOR... ≧ཀ≦)
var/current_emotion = "Innocent"
/// If the mob has emotions and therefore is granted a aura.
var/has_emotion = FALSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/mob/Initialize(mapload)
. = ..()
if(has_emotion)
AddComponent(/datum/component/aura)
Binary file modified modular_darkpack/modules/deprecated/icons/particle_effects.dmi
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,9 @@
* duration_timer expire without calling the relevant proc.
*/
/datum/discipline_power/proc/clear_duration_timer(to_clear = 1)
if(duration_override)
return

if (toggled && (duration_length == 0))
return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
var/datum/atom_hud/data/auspex_aura/target_hud = GLOB.huds[DATA_HUD_AUSPEX_AURAS]
target_hud.add_atom_to_hud(parent_mob)

add_verb(parent_mob, /mob/verb/emotion_panel)
RegisterSignal(parent_mob, COMSIG_MOB_EMOTION_CHANGED, PROC_REF(update_emotions))
RegisterSignal(parent_mob, COMSIG_MOB_UPDATE_AURA, PROC_REF(update_aura))
update_aura()
Expand All @@ -21,7 +20,6 @@
var/datum/atom_hud/data/auspex_aura/target_hud = GLOB.huds[DATA_HUD_AUSPEX_AURAS]
target_hud.remove_atom_from_hud(parent_mob)

remove_verb(parent_mob, /mob/verb/emotion_panel)
UnregisterSignal(parent_mob, list(COMSIG_MOB_EMOTION_CHANGED, COMSIG_MOB_UPDATE_AURA))
return ..()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,8 @@

var/list/heard = orange(DEFAULT_MESSAGE_RANGE, owner)
for(var/mob/living/hearer in heard)
hearer.apply_status_effect(/datum/status_effect/question_emotion)
if(!HAS_TRAIT(src, TRAIT_FORCED_EMOTION))
hearer.apply_status_effect(/datum/status_effect/question_emotion)

/datum/discipline_power/auspex/aura_perception/deactivate()
. = ..()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,21 @@
set category = "IC"
set desc = "Change your character's emotions."

if(HAS_TRAIT(src, TRAIT_FORCED_EMOTION))
to_chat(src, span_warning("You cannot change emotions right now."))
return FALSE

// This really shouldnt be using aura here. it needs to be detached and made unrelenient on aura/auspex. - Fallcon
var/new_emotion = tgui_input_list(src, "What are you feeling?", "Feelings", GLOB.aura_list)
if(isnull(new_emotion))
return FALSE
set_emotion(new_emotion)

/mob/proc/set_emotion(new_emotion)
if(current_emotion == new_emotion)
return

current_emotion = new_emotion
SEND_SIGNAL(src, COMSIG_MOB_EMOTION_CHANGED, new_emotion)

/datum/status_effect/question_emotion
Expand Down Expand Up @@ -34,3 +46,18 @@
attached_effect.owner.emotion_panel()
// Regardless if they acctually end up setting anything, clear the status effect
qdel(attached_effect)

/datum/status_effect/forced_emotion
id = "question_emotion"
// Nothing says it needs to be a scene, I just like using our defines to create nice standards of time.
duration = 1 SCENES

status_type = STATUS_EFFECT_REPLACE

alert_type = /atom/movable/screen/alert/status_effect/forced_emotion

/atom/movable/screen/alert/status_effect/forced_emotion
name = "Forced emotion"
desc = "Something is forcing your mind into a particular emotion."
icon = 'modular_darkpack/modules/deprecated/icons/hud/screen_alert.dmi'
icon_state = "in_love"
Loading
Loading