Morale Modifying Skills (#22508)

This PR adds a new Everyday skill called Ministry, which is targeted
both for the Chaplain role, as well as for characters with Theological
training in general. It provides a character with a unique action called
"Offer Blessing", appearing in the action bar on the top-left corner of
the screen. When used on an adjacent character, it offers a series of RP
prompts for the user to write a blessing of their choice to said
character.

If the blessing is accepted and received, the recipient gains a small
Morale Modifier that scales with the user's Ministry skill ranks.
The morale modifier is also increased if the two characters involved
share a religion in common.

<img width="1907" height="971" alt="image"
src="https://github.com/user-attachments/assets/fef51432-2206-4513-a734-fe62a3acfc6c"
/>

<img width="357" height="94" alt="image"
src="https://github.com/user-attachments/assets/2f344d04-10c9-4fbc-9183-3471c4b51e7c"
/>

<img width="322" height="148" alt="image"
src="https://github.com/user-attachments/assets/fb5cc21f-60bb-4c9f-ba5b-45f6e3ec94ff"
/>

<img width="703" height="34" alt="image"
src="https://github.com/user-attachments/assets/8df6b6c3-8ea7-4f64-b8c4-a439ccadc076"
/>

<img width="361" height="83" alt="image"
src="https://github.com/user-attachments/assets/fe7b6d32-7cb5-4e60-89d8-38353981ffb2"
/>

There is also now a similar skill for the combat category, called
Leadership.

<img width="1268" height="987" alt="image"
src="https://github.com/user-attachments/assets/44448560-1ff7-4bae-966b-1b8f7481005d"
/>

<img width="912" height="67" alt="image"
src="https://github.com/user-attachments/assets/30531b15-0aa3-4ab6-b75c-3af26f8b5bdd"
/>


I have fully tested this PR to its completion.

### Asset Licenses
The following assets that **have not** been created by myself are
included in this PR:

| Path | Original Author | License |
| icons/hud/action_buttons/skills.dmi | gabrielgabey (Discord) |
CC-BY-SA-3.0 |
This commit is contained in:
VMSolidus
2026-05-27 11:38:57 -04:00
committed by GitHub
parent e9f1bb5709
commit fe4f84703c
13 changed files with 420 additions and 14 deletions
@@ -14,6 +14,9 @@
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power), override = TRUE)
RegisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE)
RegisterSignal(owner, COMSIG_GET_MINISTRY_MODIFIERS, PROC_REF(modify_ministry_empathy), override = TRUE)
RegisterSignal(owner, COMSIG_RECEIVE_MINISTRY_MODIFIERS, PROC_REF(modify_ministry_receiving), override = TRUE)
RegisterSignal(owner, COMSIG_GET_LEADERSHIP_MODIFIERS, PROC_REF(modify_leadership_empathy), override = TRUE)
/obj/item/organ/internal/augment/bioaug/mind_blanker/replaced()
. = ..()
@@ -22,6 +25,9 @@
RegisterSignal(owner, COMSIG_PSI_MIND_POWER, PROC_REF(cancel_power), override = TRUE)
RegisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE)
RegisterSignal(owner, COMSIG_GET_MINISTRY_MODIFIERS, PROC_REF(modify_ministry_empathy), override = TRUE)
RegisterSignal(owner, COMSIG_RECEIVE_MINISTRY_MODIFIERS, PROC_REF(modify_ministry_receiving), override = TRUE)
RegisterSignal(owner, COMSIG_GET_LEADERSHIP_MODIFIERS, PROC_REF(modify_leadership_empathy), override = TRUE)
/obj/item/organ/internal/augment/bioaug/mind_blanker/removed()
if(!owner)
@@ -29,9 +35,12 @@
UnregisterSignal(owner, COMSIG_PSI_MIND_POWER)
UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY)
UnregisterSignal(owner, COMSIG_GET_MINISTRY_MODIFIERS)
UnregisterSignal(owner, COMSIG_RECEIVE_MINISTRY_MODIFIERS)
UnregisterSignal(owner, COMSIG_GET_LEADERSHIP_MODIFIERS)
return ..()
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/cancel_power(var/implantee, var/caster, var/cancelled, var/cancel_return, var/wide_field)
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/cancel_power(implantee, caster, cancelled, cancel_return, wide_field)
SIGNAL_HANDLER
if(is_broken())
return
@@ -42,13 +51,37 @@
to_chat(implantee, SPAN_DANGER("Your mind wriggles as it repulses an outside thought."))
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/modify_sensitivity(var/implantee, var/effective_sensitivity)
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/modify_sensitivity(implantee, effective_sensitivity)
SIGNAL_HANDLER
if(is_broken())
return
*effective_sensitivity += sensitivity_modifier
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/modify_ministry_empathy(minister, ministree, moodlet_value)
SIGNAL_HANDLER
if (!(*moodlet_value))
return
to_chat(minister, SPAN_BAD("Why should you care how [ministree] feels?"))
*moodlet_value = 0
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/modify_ministry_receiving(ministree, minister, moodlet_value)
SIGNAL_HANDLER
if (!(*moodlet_value))
return
to_chat(ministree, SPAN_BAD("You feel nothing from [minister]'s words."))
*moodlet_value = 0
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/modify_leadership_empathy(leader, moodlet_value)
SIGNAL_HANDLER
if (!(*moodlet_value))
return
to_chat(leader, SPAN_BAD("Why should you care about how others feel?"))
*moodlet_value = 0
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal
name = "lethal mind blanker"
desc = "A small, discrete organ attached near the base of the brainstem." \
@@ -82,7 +115,7 @@
UnregisterSignal(owner, COMSIG_PSI_MIND_POWER)
UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/cancel_power_lethal(var/mob/living/carbon/human/implantee, var/caster, var/cancelled, var/cancel_return, var/wide_field)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/cancel_power_lethal(mob/living/carbon/human/implantee, caster, cancelled, cancel_return, wide_field)
SIGNAL_HANDLER
if(is_broken())
return
@@ -98,7 +131,7 @@
victim.confused += 20
*cancel_return = SPAN_DANGER("Agony lances through my brain as their mind clamps down upon me!")
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/modify_sensitivity(var/implantee, var/effective_sensitivity)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/modify_sensitivity(implantee, effective_sensitivity)
SIGNAL_HANDLER
if(is_broken())
return