Files
VMSolidus fe4f84703c 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 |
2026-05-27 15:38:57 +00:00

40 lines
2.7 KiB
Plaintext

#define COMSIG_BASENAME_RENAME "base_name_rename"
#define COMSIG_BASENAME_SETNAME "base_name_setname"
#define ARMED_COMBAT_SKILL_COMPONENT /datum/component/skill/armed_combat
#define FIREARMS_SKILL_COMPONENT /datum/component/skill/firearms
#define UNARMED_COMBAT_SKILL_COMPONENT /datum/component/skill/unarmed_combat
#define PILOT_MECHS_SKILL_COMPONENT /datum/component/skill/pilot_mechs
#define PILOT_SPACECRAFT_SKILL_COMPONENT /datum/component/skill/pilot_spacecraft
#define ROBOTICS_SKILL_COMPONENT /datum/component/skill/robotics
#define ARCHAOLOGY_SKILL_COMPONENT /datum/component/skill/archaology
#define RESEARCH_SKILL_COMPONENT /datum/component/skill/research
#define XENOBIOLOGY_SKILL_COMPONENT /datum/component/skill/xenobiology
#define XENOBOTANY_SKILL_COMPONENT /datum/component/skill/xenobotany
#define BARTENDING_SKILL_COMPONENT /datum/component/skill/bartending
#define COOKING_SKILL_COMPONENT /datum/component/skill/cooking
#define ENTERTAINING_SKILL_COMPONENT /datum/component/skill/entertaining
#define GARDENING_SKILL_COMPONENT /datum/component/skill/gardening
#define MEDICINE_SKILL_COMPONENT /datum/component/skill/medicine
#define SKILL_COMPONENT /datum/component/skill
#define MORALE_COMPONENT /datum/component/morale
#define ELECTRICAL_ENGINEERING_SKILL_COMPONENT /datum/component/skill/electrical_engineering
#define MECHANICAL_ENGINEERING_SKILL_COMPONENT /datum/component/skill/mechanical_engineering
#define ATMOSPHERICS_SYSTEMS_SKILL_COMPONENT /datum/component/skill/atmospherics_systems
#define REACTOR_SYSTEMS_SKILL_COMPONENT /datum/component/skill/reactor_systems
#define LEADERSHIP_SKILL_COMPONENT /datum/component/skill/leadership
#define ANATOMY_SKILL_COMPONENT /datum/component/skill/anatomy
#define FORENSICS_SKILL_COMPONENT /datum/component/skill/forensics
#define PHARMACOLOGY_SKILL_COMPONENT /datum/component/skill/pharmacology
#define SURGERY_SKILL_COMPONENT /datum/component/skill/surgery
#define TOOL_COMPONENT /datum/component/tool_quality_container
#define CAROUSING_SKILL_COMPONENT /datum/component/skill/carousing
#define TENACITY_SKILL_COMPONENT /datum/component/skill/tenacity
#define MINISTRY_SKILL_COMPONENT /datum/component/skill/ministry
/**
* Trinary-Boolean helper that either returns null, or the skill level of a given skill component(which can be zero).
* It will ALWAYS be null if you try to use this to check for something that isn't a skill component, so just don't. Refer to the list above this function to see what your options are.
* Therefore, merely checking if (!this) is not sufficient to use this function, and instead you should be using isnull() on it to determine whether or not the skill exists.
*/
#define GET_SKILL_LEVEL(user, comp) astype(user.GetComponent(comp), SKILL_COMPONENT)?.skill_level