diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 3401fdf9cf0..8980e3f5d88 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -1641,4 +1641,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Object is dangerous to mobs buckled to it #define TRAIT_DANGEROUS_BUCKLE "dangerous_buckle" +/// Makes the owner desensetized to death, but happy whenever someone gets blown to pieces (as a sacrifice to the necropolis) unless its another worshipper +#define TRAIT_NECROPOLIS_WORSHIP "necropolis_worship" + // END TRAIT DEFINES diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 93dba65dd44..0bed48f0616 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -658,6 +658,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FAT_IGNORE_SLOWDOWN" = TRAIT_FAT_IGNORE_SLOWDOWN, "TRAIT_SPACE_ANT_IMMUNITY" = TRAIT_SPACE_ANT_IMMUNITY, "TRAIT_BRAIN_TRAUMA_IMMUNITY" = TRAIT_BRAIN_TRAUMA_IMMUNITY, + "TRAIT_NECROPOLIS_WORSHIP" = TRAIT_NECROPOLIS_WORSHIP, ), /mob/living/carbon = list( "TRAIT_BRAINLESS_CARBON" = TRAIT_BRAINLESS_CARBON, diff --git a/code/datums/mood_events/death.dm b/code/datums/mood_events/death.dm index 8f64808da33..e8da1c07b52 100644 --- a/code/datums/mood_events/death.dm +++ b/code/datums/mood_events/death.dm @@ -5,6 +5,7 @@ #define PET_PRIORITY 30 #define XENO_PRIORITY 35 #define DONTCARE_PRIORITY 40 +#define ASHWALKER_PRIORITY 50 #define GAMER_PRIORITY 80 #define REVOLUTIONARY_PRIORITY 85 #define CULT_PRIORITY 90 @@ -25,7 +26,7 @@ return TRUE /datum/mood_event/conditional/see_death/add_effects(mob/dead_mob, dusted, gibbed) - update_effect(dead_mob) + update_effect(dead_mob, dusted, gibbed) if(HAS_TRAIT(dead_mob, TRAIT_SPAWNED_MOB)) mood_change *= 0.25 @@ -50,7 +51,7 @@ description = capitalize(replacetext(description, "%DEAD_MOB%", get_descriptor(dead_mob))) /// Blank proc which allows conditional effects to modify mood, timeout, or description before the main effect is applied -/datum/mood_event/conditional/see_death/proc/update_effect(mob/dead_mob) +/datum/mood_event/conditional/see_death/proc/update_effect(mob/dead_mob, dusted, gibbed) return /// Checks if the dead mob is a pet @@ -94,7 +95,7 @@ /datum/mood_event/conditional/see_death/naive/condition_fulfilled(mob/living/who, mob/dead_mob, dusted, gibbed) return HAS_MIND_TRAIT(who, TRAIT_NAIVE) && !dusted && !gibbed -/datum/mood_event/conditional/see_death/naive/update_effect(mob/dead_mob) +/datum/mood_event/conditional/see_death/naive/update_effect(mob/dead_mob, dusted, gibbed) description = "Have a good nap, [get_descriptor(dead_mob)]." /// Cultists are super brainwashed so they get buffs instead @@ -118,7 +119,7 @@ /datum/mood_event/conditional/see_death/revolutionary/condition_fulfilled(mob/living/who, mob/dead_mob, dusted, gibbed) return IS_REVOLUTIONARY(who) && (dead_mob.mind?.assigned_role.job_flags & JOB_HEAD_OF_STAFF) -/datum/mood_event/conditional/see_death/revolutionary/update_effect(mob/dead_mob) +/datum/mood_event/conditional/see_death/revolutionary/update_effect(mob/dead_mob, dusted, gibbed) var/datum/job/possible_head_job = dead_mob.mind?.assigned_role description = "[possible_head_job.title ? "The [LOWER_TEXT(possible_head_job.title)]" : "Another head of staff"] is dead! Long live the revolution!" @@ -152,6 +153,23 @@ else description = "Oh, %DEAD_MOB% died. Shame, I guess." +/// Ashwalkers get a small boost from sacrificing people to the necropolis spire, and don't care otherwise +/datum/mood_event/conditional/see_death/ashwalker + priority = ASHWALKER_PRIORITY + mood_change = 0 + +/datum/mood_event/conditional/see_death/ashwalker/condition_fulfilled(mob/living/who, mob/dead_mob, dusted, gibbed) + return HAS_TRAIT(who, TRAIT_NECROPOLIS_WORSHIP) && !HAS_TRAIT(dead_mob, TRAIT_NECROPOLIS_WORSHIP) + +/datum/mood_event/conditional/see_death/ashwalker/update_effect(mob/dead_mob, dusted, gibbed) + if(gibbed) + description = "%DEAD_MOB% hasss been torn asssunder, glory to the Necropolisss!" + mood_change = /datum/mood_event/conditional/see_death::mood_change * -0.5 + else if(dusted) + description = "Oh, %DEAD_MOB% wasss vaporized." + else + description = "Oh, %DEAD_MOB% died. Ssshame, I guesss." + /// Pets take priority over normal death moodlets /datum/mood_event/conditional/see_death/pet priority = PET_PRIORITY @@ -276,6 +294,7 @@ #undef PET_PRIORITY #undef XENO_PRIORITY #undef DONTCARE_PRIORITY +#undef ASHWALKER_PRIORITY #undef GAMER_PRIORITY #undef REVOLUTIONARY_PRIORITY #undef CULT_PRIORITY diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 4864a5fb05e..c4c9193d7de 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -506,6 +506,7 @@ TRAIT_EXPERT_FISHER, // live off land, fish from river TRAIT_ROUGHRIDER, // ride beast, chase down prey, flee from danger TRAIT_BEAST_EMPATHY, // know the way of beast, calm with food + TRAIT_NECROPOLIS_WORSHIP, TRAIT_TACKLING_TAILED_DEFENDER, )