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