Accentuate the positive with **Personality**: A (soft) mood rework (#92941)

Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
MrMelbert
2025-10-02 19:00:13 +00:00
committed by GitHub
co-authored by SmArtKar
parent 0124adacc7
commit 3ea7b03369
110 changed files with 2557 additions and 314 deletions
@@ -6,7 +6,7 @@
roundend_category = "changelings"
antagpanel_category = "Changeling"
pref_flag = ROLE_CHANGELING
antag_moodlet = /datum/mood_event/focused
antag_moodlet = /datum/mood_event/ling
antag_hud_name = "changeling"
hijack_speed = 0.5
ui_name = "AntagInfoChangeling"
@@ -58,6 +58,7 @@
SEND_SOUND(mind.current, 'sound/music/antag/bloodcult/bloodcult_eyes.ogg')
to_chat(mind.current, span_cult_large(span_warning("The veil weakens as your cult grows, your eyes begin to glow...")))
mind.current.AddElement(/datum/element/cult_eyes)
ADD_TRAIT(mind.current, TRAIT_DESENSITIZED, CULT_TRAIT)
cult_risen = TRUE
log_game("The blood cult has risen with [cultplayers] players.")
@@ -65,6 +65,7 @@
if(cult_team.cult_risen)
current.AddElement(/datum/element/cult_eyes, initial_delay = 0 SECONDS)
ADD_TRAIT(current, TRAIT_DESENSITIZED, CULT_TRAIT)
if(cult_team.cult_ascendent)
current.AddElement(/datum/element/cult_halo, initial_delay = 0 SECONDS)
@@ -87,7 +88,8 @@
if (HAS_TRAIT(current, TRAIT_CULT_HALO))
current.RemoveElement(/datum/element/cult_halo)
REMOVE_TRAIT(owner.current, TRAIT_HEALS_FROM_CULT_PYLONS, CULT_TRAIT)
REMOVE_TRAIT(current, TRAIT_DESENSITIZED, CULT_TRAIT)
REMOVE_TRAIT(current, TRAIT_HEALS_FROM_CULT_PYLONS, CULT_TRAIT)
/datum/antagonist/cult/on_mindshield(mob/implanter)
if(!silent)
+8
View File
@@ -36,6 +36,14 @@
equipERT()
. = ..()
/datum/antagonist/ert/apply_innate_effects(mob/living/mob_override)
var/mob/living/carbon/human/officer = mob_override || owner.current
ADD_TRAIT(officer, TRAIT_DESENSITIZED, REF(src))
/datum/antagonist/ert/remove_innate_effects(mob/living/mob_override)
var/mob/living/carbon/human/officer = mob_override || owner.current
REMOVE_TRAIT(officer, TRAIT_DESENSITIZED, REF(src))
/datum/antagonist/ert/get_team()
return ert_team
@@ -606,6 +606,7 @@
if(!isnull(ascension_achievement))
user.client?.give_award(ascension_achievement, user)
heretic_datum.increase_rust_strength()
ADD_TRAIT(user, TRAIT_DESENSITIZED, type)
return TRUE
/datum/heretic_knowledge/ultimate/cleanup_atoms(list/selected_atoms)
@@ -62,6 +62,7 @@
on_made_callback?.Invoke(human_target)
ADD_TRAIT(human_target, TRAIT_FAKEDEATH, TRAIT_STATUS_EFFECT(id))
ADD_TRAIT(human_target, TRAIT_HERETIC_SUMMON, TRAIT_STATUS_EFFECT(id))
ADD_TRAIT(human_target, TRAIT_DESENSITIZED, TRAIT_STATUS_EFFECT(id))
human_target.become_husk(TRAIT_STATUS_EFFECT(id))
human_target.faction |= FACTION_HERETIC
@@ -92,6 +93,7 @@
on_lost_callback?.Invoke(human_target)
REMOVE_TRAIT(human_target, TRAIT_FAKEDEATH, TRAIT_STATUS_EFFECT(id))
REMOVE_TRAIT(human_target, TRAIT_HERETIC_SUMMON, TRAIT_STATUS_EFFECT(id))
REMOVE_TRAIT(human_target, TRAIT_DESENSITIZED, TRAIT_STATUS_EFFECT(id))
human_target.cure_husk(TRAIT_STATUS_EFFECT(id))
human_target.faction -= FACTION_HERETIC
human_target.mind?.remove_antag_datum(/datum/antagonist/heretic_monster)
@@ -8,12 +8,13 @@
antag_flags = ANTAG_FAKE|ANTAG_SKIP_GLOBAL_LIST
/// Traits we apply/remove to our target on-demand.
var/static/list/applicable_traits = list(
TRAIT_DESENSITIZED,
TRAIT_NOBREATH,
TRAIT_NODISMEMBER,
TRAIT_NOFIRE,
TRAIT_NOGUNS,
TRAIT_TOSS_GUN_HARD,
TRAIT_SHOCKIMMUNE,
TRAIT_TOSS_GUN_HARD,
)
/datum/antagonist/highlander/apply_innate_effects(mob/living/mob_override)
@@ -17,6 +17,14 @@
forge_objectives()
. = ..()
/datum/antagonist/nightmare/apply_innate_effects(mob/living/mob_override)
var/mob/living/nightmare = mob_override || owner.current
nightmare.mob_mood.mood_modifier -= 1
/datum/antagonist/nightmare/remove_innate_effects(mob/living/mob_override)
var/mob/living/nightmare = mob_override || owner.current
nightmare.mob_mood.mood_modifier += 1
/datum/outfit/nightmare
name = "Nightmare (Preview only)"
@@ -40,6 +40,7 @@
/datum/antagonist/nukeop/on_gain()
give_alias()
forge_objectives()
owner.current.add_personality(/datum/personality/callous)
. = ..()
owner.set_assigned_role(SSjob.get_job_type(job_type))
equip_op()
@@ -129,6 +130,7 @@
var/mob/living/carbon/human/operative = owner.current
ADD_TRAIT(operative, TRAIT_NOFEAR_HOLDUPS, INNATE_TRAIT)
ADD_TRAIT(operative, TRAIT_DESENSITIZED, INNATE_TRAIT)
if(!nukeop_outfit) // this variable is null in instances where an antagonist datum is granted via enslaving the mind (/datum/mind/proc/enslave_mind_to_creator), like in golems.
return
+3 -2
View File
@@ -46,11 +46,12 @@
var/datum/language_holder/holder = owner_mob.get_language_holder()
holder.grant_language(/datum/language/piratespeak, source = LANGUAGE_PIRATE)
holder.selected_language = /datum/language/piratespeak
ADD_TRAIT(owner_mob, TRAIT_DESENSITIZED, REF(src))
/datum/antagonist/pirate/remove_innate_effects(mob/living/mob_override)
var/mob/living/owner_mob = mob_override || owner.current
if (owner_mob)
owner_mob.remove_language(/datum/language/piratespeak, source = LANGUAGE_PIRATE)
owner_mob.remove_language(/datum/language/piratespeak, source = LANGUAGE_PIRATE)
REMOVE_TRAIT(owner_mob, TRAIT_DESENSITIZED, REF(src))
/datum/team/pirate
name = "\improper Pirate crew"
@@ -73,6 +73,10 @@ GLOBAL_DATUM(revolution_handler, /datum/revolution_handler)
if(isnull(real_headrev))
continue
add_memory_in_range(real_headrev, 5, /datum/memory/revolution_rev_victory, protagonist = real_headrev)
add_personality_mood_to_viewers(real_headrev, "revwin", list(
/datum/personality/nt/loyalist = /datum/mood_event/loyalist_revs_win,
/datum/personality/nt/disillusioned = /datum/mood_event/disillusioned_revs_win,
), range = 5)
result = REVOLUTION_VICTORY
@@ -99,6 +103,10 @@ GLOBAL_DATUM(revolution_handler, /datum/revolution_handler)
var/mob/living/head_of_staff = head_tracker.target?.current
if(!isnull(head_of_staff))
add_memory_in_range(head_of_staff, 5, /datum/memory/revolution_heads_victory, protagonist = head_of_staff)
add_personality_mood_to_viewers(head_of_staff, "revlost", list(
/datum/personality/nt/loyalist = /datum/mood_event/loyalist_revs_lost,
/datum/personality/nt/disillusioned = /datum/mood_event/disillusioned_revs_lost
), range = 5)
priority_announce("It appears the mutiny has been quelled. Please return yourself and your incapacitated colleagues to work. \
We have remotely blacklisted the head revolutionaries in your medical records to prevent accidental revival.", null, null, null, "[command_name()] Loyalty Monitoring Division")
@@ -15,6 +15,14 @@
///Whether or not this ninja will obtain objectives
var/give_objectives = TRUE
/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override)
var/mob/ninja = mob_override || owner.current
ADD_TRAIT(ninja, TRAIT_DESENSITIZED, REF(src))
/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override)
var/mob/ninja = mob_override || owner.current
REMOVE_TRAIT(ninja, TRAIT_DESENSITIZED, REF(src))
/**
* Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum.
*
+2 -1
View File
@@ -84,7 +84,8 @@ GLOBAL_LIST_EMPTY(wizard_spellbook_purchases_by_key)
CRASH("Wizard datum with no owner.")
assign_ritual()
equip_wizard()
owner.current.add_quirk(/datum/quirk/introvert, announce = FALSE)
owner.current.add_personality(/datum/personality/introvert)
owner.current.add_personality(/datum/personality/callous) // no sense of right and wrong
if(give_objectives)
create_objectives()
if(move_to_lair)