diff --git a/code/datums/spells/chaplain.dm b/code/datums/spells/chaplain.dm
index 1dc4a7fd934..1793f8cf321 100644
--- a/code/datums/spells/chaplain.dm
+++ b/code/datums/spells/chaplain.dm
@@ -4,7 +4,7 @@
desc = "Blesses a single person."
school = "transmutation"
- charge_max = 600
+ charge_max = 60
clothes_req = 0
invocation = "none"
invocation_type = "none"
@@ -22,163 +22,57 @@
if(!istype(user))
to_chat(user, "Somehow, you are not a living mob. This should never happen. Report this bug.")
+ revert_cast()
return
if(!user.mind)
to_chat(user, "Somehow, you are mindless. This should never happen. Report this bug.")
+ revert_cast()
return
if(!user.mind.isholy)
to_chat(user, "Somehow, you are not holy enough to use this ability. This should never happen. Report this bug.")
+ revert_cast()
return
var/mob/living/carbon/human/target = targets[range]
if(!istype(target))
to_chat(user, "No target.")
+ revert_cast()
return
if(!(target in oview(range)) && !distanceoverride)//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it.
to_chat(user, "[target] is too far away!")
+ revert_cast()
return
if(!target.mind)
to_chat(user, "[target] appears to be catatonic. Your blessing would have no effect.")
+ revert_cast()
return
if(!target.ckey)
to_chat(user, "[target] appears to be too out of it to benefit from this.")
+ revert_cast()
return
if(target.stat == DEAD)
to_chat(user, "[target] is already dead. There is no point.")
+ revert_cast()
return
if(target.mind.isblessed)
to_chat(user, "[target] already has the aura of one who is blessed. Blessing them again would be pointless.")
+ revert_cast()
return
spawn(0) // allows cast to complete even if recipient ignores the prompt
if(alert(target, "[user] wants to bless you, in the name of their religion. Accept?","Accept Blessing?","Yes","No") == "Yes") // prevents forced conversions
user.visible_message("[user] starts blessing [target] in the name of [ticker.Bible_deity_name].", "You start blessing [target] in the name of [ticker.Bible_deity_name].")
- if(do_after(user, 100, target = target))
+ if(do_after(user, 150, target = target))
user.visible_message("[user] has blessed [target] in the name of [ticker.Bible_deity_name].", "You have blessed [target] in the name of [ticker.Bible_deity_name].")
target.mind.isblessed = TRUE
user.mind.religious_favor++
to_chat(user, "You now have [user.mind.religious_favor] points of favor with your god.")
-
-/obj/effect/proc_holder/spell/targeted/chaplain_grantheal
- name = "Grant Favor"
- desc = "Bestows the favor of your god on a single creature. Extremely powerful. Can only be applied to one creature at once."
-
- school = "transmutation"
- charge_max = 600
- clothes_req = 0
- invocation = "none"
- invocation_type = "none"
-
- max_targets = 1
- include_user = 0
- humans_only = 1
-
- range = 1
- cooldown_min = 20
- action_icon_state = "mech_defense_mode_off"
- var/datum/mind/favored_mind
-
-
-/obj/effect/proc_holder/spell/targeted/chaplain_grantheal/cast(list/targets, mob/living/user = usr, distanceoverride)
-
- if(!istype(user))
- to_chat(user, "Somehow, you are not a living mob. This should never happen. Report this bug.")
- return
-
- if(!user.mind)
- to_chat(user, "Somehow, you are mindless. This should never happen. Report this bug.")
- return
-
- if(!user.mind.isholy)
- to_chat(user, "Somehow, you are not holy enough to use this ability. This should never happen. Report this bug.")
- return
-
- var/mob/living/carbon/human/target = targets[range]
-
- if(!istype(target))
- to_chat(user, "No target.")
- return
-
- if(!(target in oview(range)) && !distanceoverride)//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it.
- to_chat(user, "[target] is too far away!")
- return
-
- if(!target.mind)
- to_chat(user, "[target] appears to be catatonic. Your blessing would have no effect.")
- return
-
- if(!target.ckey)
- to_chat(user, "[target] appears to be too out of it to benefit from this.")
- return
-
- if(target.stat == DEAD)
- to_chat(user, "[target] is already dead. There is no point.")
- return
-
- if(!target.mind.isblessed)
- to_chat(user, "[target] must be blessed first.")
- return
-
- if(istype(favored_mind))
- for(var/obj/effect/proc_holder/spell/targeted/chaplain_heal/S in favored_mind.spell_list)
- favored_mind.RemoveSpell(S)
- to_chat(favored_mind.current, "You are no longer favored by [ticker.Bible_deity_name].")
- to_chat(user, "You are no longer favoring [favored_mind].")
- favored_mind = target.mind
- target.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/chaplain_heal(null))
- user.visible_message("[user] appeals to [ticker.Bible_deity_name] to grant [target] whatever favor they can!", "You appeal to [ticker.Bible_deity_name] to grant [target] whatever favor they can!")
-
-
-/obj/effect/proc_holder/spell/targeted/chaplain_heal
- name = "Invoke Favor"
- desc = ""
-
- school = "transmutation"
- charge_max = 1
- clothes_req = 0
- invocation = "none"
- invocation_type = "none"
-
- max_targets = 1
- include_user = 1
- humans_only = 1
- stat_allowed = TRUE
-
- range = -1
- cooldown_min = 20
- action_icon_state = "mech_defense_mode_off"
-
-/obj/effect/proc_holder/spell/targeted/chaplain_heal/can_cast(mob/user = usr)
- if(user.stat == DEAD)
- return FALSE
- if(ishuman(user))
- var/mob/living/carbon/human/H = user
- if (H.health <= config.health_threshold_softcrit)
- return TRUE
- else if(isliving(user))
- var/mob/living/L = user
- if(L.health < (L.maxHealth / 2))
- return TRUE
- return FALSE
-
-/obj/effect/proc_holder/spell/targeted/chaplain_heal/cast(list/targets, mob/living/user = usr, distanceoverride)
- user.SetWeakened(0)
- user.SetStunned(0)
- user.SetParalysis(0)
- user.adjustStaminaLoss(-75)
- user.adjustBruteLoss(-10)
- user.adjustOxyLoss(-10)
- user.adjustToxLoss(-10)
- user.adjustFireLoss(-10)
- SEND_SOUND(user, 'sound/effects/hallelujah.ogg')
- to_chat(user, "You feel invigorated!")
- user.mind.RemoveSpell(src)
\ No newline at end of file
diff --git a/code/game/jobs/job/support_chaplain.dm b/code/game/jobs/job/support_chaplain.dm
index 25571a599b9..d4f260ac25b 100644
--- a/code/game/jobs/job/support_chaplain.dm
+++ b/code/game/jobs/job/support_chaplain.dm
@@ -56,6 +56,7 @@
if(!new_religion)
new_religion = religion_name
+
switch(lowertext(new_religion))
if("christianity")
B.name = pick("The Holy Bible")
@@ -103,9 +104,8 @@
H.AddSpell(new /obj/effect/proc_holder/spell/targeted/chaplain_bless(null))
if(religion_type == ALIGNMENT_GOOD)
- H.AddSpell(new /obj/effect/proc_holder/spell/targeted/chaplain_grantheal(null))
+ H.equip_to_slot_or_del(new /obj/item/flashlight/holy_torch(H), slot_in_backpack)
else if(religion_type == ALIGNMENT_NEUTRAL)
- // neutral: give templar armor
H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/riot/knight/templar(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/riot/knight/templar(H), slot_in_backpack)
else if(religion_type == ALIGNMENT_EVIL)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 6c1fa89a4c6..603088851fb 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -123,6 +123,13 @@
materials = list()
on = 1
+/obj/item/flashlight/holy_torch
+ name = "blessed torch"
+ desc = "A high-power, blessed, electric torch with a built-in power source. Modeled to look like an ancient torch."
+ icon_state = "torch"
+ item_state = "torch"
+ brightness_on = 9 // High power.
+ light_color = "#ffffb3" // Yellow tint.
// green-shaded desk lamp
/obj/item/flashlight/lamp/green
diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm
index c8d559a23c6..9a0ca77089d 100644
--- a/code/game/objects/items/weapons/holy_weapons.dm
+++ b/code/game/objects/items/weapons/holy_weapons.dm
@@ -135,7 +135,7 @@
alignment_prohibited = ALIGNMENT_GODLESS
/obj/item/nullrod/claymore/glowing
- name = "force weapon"
+ name = "force blade"
icon_state = "swordon"
item_state = "swordon"
desc = "The blade glows with the power of faith. Or possibly a battery."
@@ -156,7 +156,7 @@
slot_flags = SLOT_BELT
/obj/item/nullrod/claymore/saber
- name = "light energy sword"
+ name = "light energy blade"
hitsound = 'sound/weapons/blade1.ogg'
icon_state = "swordblue"
item_state = "swordblue"
@@ -164,7 +164,7 @@
slot_flags = SLOT_BELT
/obj/item/nullrod/claymore/saber/red
- name = "dark energy sword"
+ name = "dark energy blade"
icon_state = "swordred"
item_state = "swordred"
desc = "Woefully ineffective when used on steep terrain."
@@ -278,6 +278,7 @@
sharp = 1
attack_verb = list("sawed", "torn", "cut", "chopped", "diced")
hitsound = 'sound/weapons/chainsaw.ogg'
+ alignment_required = ALIGNMENT_EVIL
/obj/item/nullrod/clown
name = "clown dagger"
@@ -291,16 +292,17 @@
/obj/item/nullrod/whip
name = "holy whip"
- desc = "What a terrible night to be in spess"
+ desc = "A whip, blessed with the power to banish evil shadowy creatures. What a terrible night to be in spess."
icon_state = "chain"
item_state = "chain"
slot_flags = SLOT_BELT
attack_verb = list("whipped", "lashed")
hitsound = 'sound/weapons/slash.ogg'
+ alignment_required = ALIGNMENT_GOOD
/obj/item/nullrod/whip/New()
..()
- desc = "What a terrible night to be on the [station_name()]."
+ desc = " What a terrible night to be on the [station_name()]."
/obj/item/nullrod/whip/afterattack(atom/movable/AM, mob/user, proximity)
if(!proximity)
@@ -310,7 +312,7 @@
if(is_shadow(H))
var/phrase = pick("Die monster! You don't belong in this world!!!", "You steal men's souls and make them your slaves!!!", "Your words are as empty as your soul!!!", "Mankind ill needs a savior such as you!!!")
user.say("[phrase]")
- H.adjustBruteLoss(8) //Bonus damage
+ H.adjustBruteLoss(12) //Bonus damage
/obj/item/nullrod/fedora
name = "athiest's fedora"
@@ -322,7 +324,7 @@
force = 0
throw_speed = 4
throw_range = 7
- throwforce = 20
+ throwforce = 25 // Yes, this is high, since you can typically only use it once in a fight.
alignment_required = ALIGNMENT_GODLESS
/obj/item/nullrod/armblade
diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm
index 5624d4cdeea..eb3a7a0e021 100644
--- a/code/modules/admin/verbs/pray.dm
+++ b/code/modules/admin/verbs/pray.dm
@@ -33,11 +33,8 @@
prayer_type = "CULTIST PRAYER"
deity = ticker.cultdat.entity_name
- var/religious_favor = 0
- if(mind && mind.religious_favor != 0)
- religious_favor = mind.religious_favor
log_say("(PRAYER) [msg]", usr)
- msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""][religious_favor != 0 ? " (favor: [religious_favor])" : ""]: [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (CA) ([ADMIN_SC(src,"SC")]) (BLESS) (SMITE): [msg]"
+ msg = "[bicon(cross)][prayer_type][deity ? " (to [deity])" : ""][mind && mind.alignment ? " (alignment: [mind.alignment])" : ""][mind && mind.religious_favor ? " (favor: [mind.religious_favor])" : ""]: [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (CA) ([ADMIN_SC(src,"SC")]) (BLESS) (SMITE): [msg]"
for(var/client/X in GLOB.admins)
if(check_rights(R_EVENT,0,X.mob))
diff --git a/sound/effects/hallelujah.ogg b/sound/effects/hallelujah.ogg
deleted file mode 100644
index f022c1d5939..00000000000
Binary files a/sound/effects/hallelujah.ogg and /dev/null differ