diff --git a/code/__DEFINES/traits/definitions.dm b/code/__DEFINES/traits/definitions.dm index 3a30bf775e9..44c821a1da5 100644 --- a/code/__DEFINES/traits/definitions.dm +++ b/code/__DEFINES/traits/definitions.dm @@ -352,6 +352,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_CRITICAL_RESISTANCE "Critical Resistance" #define TRAIT_CRITICAL_WEAKNESS "Critical Weakness" #define TRAIT_MANIAC_AWOKEN "Awoken" +/// for faith conversions +#define TRAIT_SHEPERD "Sheperd" /// Doesn't consume stamina #define TRAIT_NOSTAMINA "Indefatigable" /// Can't fall asleep diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 50bb4158c86..94bff20a616 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -188,6 +188,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "Recognized" = TRAIT_RECOGNIZED, "Member of the Oratorium Throni Vacui" = TRAIT_INQUISITION, "Inflexible" = TRAIT_UNDODGING, + "Soul Shepherd" = TRAIT_SHEPERD, ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS @@ -318,6 +319,7 @@ GLOBAL_LIST_INIT(roguetraits, list( TRAIT_COIN_ILLITERATE = span_info("I care little for the concept of coins and prefer to barter via other means."), TRAIT_LUCKY_COOK = span_info("Xylix smiles upon my cooking, I often end up with impossible amounts of extra goods..."), TRAIT_ABOMINATION = span_info("I am an abomination, others will recognise me for what I am"), + TRAIT_SHEPERD = span_notice("I have been chosen by the gods to enact their word. I can manipulate their faith"), )) /// value -> trait name, generated on use from trait_by_type global diff --git a/code/game/objects/items/books.dm b/code/game/objects/items/books.dm index 98db6e226cb..f47915590e2 100644 --- a/code/game/objects/items/books.dm +++ b/code/game/objects/items/books.dm @@ -1685,13 +1685,27 @@ ____________End of Example*/ verses_file = "strings/psybibble.txt" /obj/item/book/bibble/psy/attack(mob/living/M, mob/living/user, list/modifiers) - if(istype(user) && istype(user.patron, /datum/patron/psydon)) - if(!user.can_read(src)) + var/datum/patron/old_patron = M.patron + var/datum/patron/new_patron = user.patron + if(open && HAS_TRAIT(user, TRAIT_SHEPERD)) + if(old_patron == new_patron) + return + if(alert(M, "Accept [new_patron.name] as your new master?", "BAPTIZE", "YES", "NO") != "NO") + ADD_TRAIT(M, TRAIT_DIVINE_CONVERT, DEVOTION_TRAIT) + to_chat(M, "You have devoted yourself to [new_patron.name]!") + log_game("PATRON: [key_name(M)] changed their patron from [old_patron.name] to [new_patron.name]") + visible_message("A bright light flashes out from [M] as it channels divine focus.") + playsound(src, 'sound/magic/bless.ogg', 50, TRUE) + M.set_patron(new_patron) + + else + if(istype(user) && istype(user.patron, /datum/patron/psydon)) + if(!user.can_read(src)) + return + M.apply_status_effect(/datum/status_effect/buff/blessed) + user.visible_message(span_notice("[user] blesses [M].")) + playsound(user, 'sound/magic/bless.ogg', 100, FALSE) return - M.apply_status_effect(/datum/status_effect/buff/blessed) - user.visible_message(span_notice("[user] blesses [M].")) - playsound(user, 'sound/magic/bless.ogg', 100, FALSE) - return /datum/status_effect/buff/blessed id = "blessed" diff --git a/code/modules/jobs/job_types/adventurer/types/pilgrim/rare/preacher.dm b/code/modules/jobs/job_types/adventurer/types/pilgrim/rare/preacher.dm index c6a699e3c81..53e2507d6f8 100644 --- a/code/modules/jobs/job_types/adventurer/types/pilgrim/rare/preacher.dm +++ b/code/modules/jobs/job_types/adventurer/types/pilgrim/rare/preacher.dm @@ -11,14 +11,16 @@ allowed_patrons = list(/datum/patron/psydon, /datum/patron/psydon/extremist) skills = list( - /datum/skill/misc/reading = 4, + /datum/skill/misc/reading = 6, /datum/skill/misc/music = 1, /datum/skill/combat/wrestling = 2, - /datum/skill/combat/unarmed = 2 + /datum/skill/combat/unarmed = 2, + /datum/skill/combat/whipsflails = 2 ) traits = list( - TRAIT_FOREIGNER + TRAIT_FOREIGNER, + TRAIT_SHEPERD, ) languages = list(/datum/language/newpsydonic) @@ -33,7 +35,7 @@ name = "Preacher (Pilgrim)" shoes = /obj/item/clothing/shoes/shortboots belt = /obj/item/storage/belt/leather/rope - beltr = /obj/item/flashlight/flare/torch/lantern + beltr = /obj/item/flashlight/flare/torch/lantern/copper shirt = /obj/item/clothing/shirt/undershirt/priest pants = /obj/item/clothing/pants/tights/colored/black neck = /obj/item/clothing/neck/psycross