From 331a6bfc9a07d5b8b6476915a342b92b0d3ceb62 Mon Sep 17 00:00:00 2001
From: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Date: Wed, 2 Apr 2025 19:04:45 -0500
Subject: [PATCH] Consistency pass on spell invocations (punctuation) (#90386)
## About The Pull Request
Recent events on the station have left me very - unimpressed, as it
comes to our spells.
Some have backticks, most use apostrophes. Some have punctuation, many
don't. Some are in all caps, others aren't.
So I went through and basically just tweaked all the invocations
slightly to make them more consistent. They're all punctuated now, with
whispered invocations preferring periods and shouting invocations
preferring exclamation (though this is not a set rule, as sometimes a
period gets the message across stronger than an exclamation point."
I also made it a bit easier to work with emote invocations. Which in
turn involved me touching the human `p_x` procs.
## Why It's Good For The Game
Spell invocations are wildly inconsistent style wise, tightening them up
helps towards muh immersions. Makes it feel more like a system and less
like stuff thrown together.
## Changelog
:cl: Melbert
qol: All spell invocations have been made a bit more consistent - some
have changed slightly, some are now punctuated. "Dragon Form" and "Bear
Form" are now emotes invocations.
qol: "Unknown" mobs are now properly referred to as they/them
/:cl:
---
code/__HELPERS/pronouns.dm | 69 +++++++------------
code/game/objects/items/dice.dm | 2 +-
.../heretic/magic/aggressive_spread.dm | 2 +-
.../heretic/magic/ash_ascension.dm | 6 +-
.../antagonists/heretic/magic/blood_siphon.dm | 2 +-
.../heretic/magic/cosmic_expansion.dm | 2 +-
.../antagonists/heretic/magic/cosmic_runes.dm | 2 +-
.../heretic/magic/eldritch_blind.dm | 2 +-
.../heretic/magic/eldritch_emplosion.dm | 2 +-
.../heretic/magic/eldritch_shapeshift.dm | 2 +-
.../antagonists/heretic/magic/mind_gate.dm | 2 +-
.../antagonists/heretic/magic/moon_parade.dm | 2 +-
.../heretic/magic/moon_ringleader.dm | 2 +-
.../antagonists/heretic/magic/moon_smile.dm | 2 +-
.../heretic/magic/nightwatcher_rebirth.dm | 2 +-
.../heretic/magic/rust_construction.dm | 1 +
.../antagonists/heretic/magic/rust_wave.dm | 4 +-
.../antagonists/heretic/magic/void_prison.dm | 2 +-
.../heretic/magic/wolves_among_sheep.dm | 2 +-
code/modules/spells/spell.dm | 6 +-
.../spells/spell_types/aoe_spell/knock.dm | 2 +-
.../spell_types/aoe_spell/magic_missile.dm | 2 +-
.../spells/spell_types/aoe_spell/repulse.dm | 2 +-
.../spell_types/aoe_spell/sacred_flame.dm | 2 +-
.../spells/spell_types/conjure/bees.dm | 2 +-
.../spells/spell_types/conjure/carp.dm | 2 +-
.../spells/spell_types/conjure/cheese.dm | 2 +-
.../spells/spell_types/conjure/creatures.dm | 2 +-
.../spell_types/conjure/invisible_chair.dm | 6 +-
.../spell_types/conjure/invisible_wall.dm | 6 +-
.../spells/spell_types/conjure/link_worlds.dm | 2 +-
.../spells/spell_types/conjure/presents.dm | 2 +-
.../spells/spell_types/conjure/the_traps.dm | 2 +-
.../spell_types/conjure_item/invisible_box.dm | 6 +-
.../spells/spell_types/pointed/blind.dm | 2 +-
.../spells/spell_types/pointed/finger_guns.dm | 11 +--
.../spell_types/pointed/mind_transfer.dm | 2 +-
.../modules/spells/spell_types/self/charge.dm | 2 +-
.../spells/spell_types/self/disable_tech.dm | 2 +-
.../spells/spell_types/self/forcewall.dm | 10 +--
.../modules/spells/spell_types/self/mutate.dm | 2 +-
.../spell_types/self/sanguine_strike.dm | 2 +-
.../spells/spell_types/self/summonitem.dm | 2 +-
.../spells/spell_types/shapeshift/dragon.dm | 5 +-
.../spell_types/shapeshift/polar_bear.dm | 5 +-
.../spells/spell_types/teleport/teleport.dm | 2 +-
46 files changed, 83 insertions(+), 120 deletions(-)
diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm
index 6568909c964..9c238ed45db 100644
--- a/code/__HELPERS/pronouns.dm
+++ b/code/__HELPERS/pronouns.dm
@@ -88,7 +88,7 @@
return
gender = targeted_gender
else
- gender = targeted_atom.gender
+ gender = targeted_atom.get_visible_gender()
///The pronouns are ordered by their length to avoid %PRONOUN_Theyve being translated to "Heve" instead of "He's", for example
var/regex/pronoun_regex = regex("%PRONOUN(_(theirs|Theirs|theyve|Theyve|theyre|Theyre|their|Their|they|They|them|Them|have|were|are|do|es|s))")
while(pronoun_regex.Find(target_string))
@@ -300,82 +300,61 @@
else
return "itself"
+/// Reports what gender this atom appears to be
+/atom/proc/get_visible_gender()
+ return gender
+
+/mob/living/carbon/human/get_visible_gender()
+ if(HAS_TRAIT(src, TRAIT_UNKNOWN))
+ return PLURAL
+ var/face_hidden = (wear_mask?.flags_inv & HIDEFACE) || (head?.flags_inv & HIDEFACE)
+ if(face_hidden && (check_obscured_slots() & ITEM_SLOT_ICLOTHING))
+ return PLURAL
+ return gender
+
//humans need special handling, because they can have their gender hidden
/mob/living/carbon/human/p_they(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_their(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_theirs(capitalized, temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_them(capitalized, temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_have(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_are(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_were(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_do(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_s(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_es(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
/mob/living/carbon/human/p_themselves(temp_gender)
- var/obscured = check_obscured_slots()
- var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE))
- if((obscured & ITEM_SLOT_ICLOTHING) && skipface)
- temp_gender = PLURAL
+ temp_gender ||= get_visible_gender()
return ..()
//clothing need special handling due to pairs of items, ie gloves vs a singular glove, shoes, ect.
diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm
index e65b4bada08..c0de4d76383 100644
--- a/code/game/objects/items/dice.dm
+++ b/code/game/objects/items/dice.dm
@@ -482,7 +482,7 @@
school = SCHOOL_CONJURATION
cooldown_time = 10 SECONDS
- invocation = "JE VES"
+ invocation = "JE VES?"
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
spell_max_level = 0 //cannot be improved
diff --git a/code/modules/antagonists/heretic/magic/aggressive_spread.dm b/code/modules/antagonists/heretic/magic/aggressive_spread.dm
index 77c6a6227de..8f775f871f3 100644
--- a/code/modules/antagonists/heretic/magic/aggressive_spread.dm
+++ b/code/modules/antagonists/heretic/magic/aggressive_spread.dm
@@ -10,7 +10,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
- invocation = "A'GRSV SPR'D"
+ invocation = "A'GRSV SPR'D."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/ash_ascension.dm b/code/modules/antagonists/heretic/magic/ash_ascension.dm
index 9d69acdd258..dcedaf03cec 100644
--- a/code/modules/antagonists/heretic/magic/ash_ascension.dm
+++ b/code/modules/antagonists/heretic/magic/ash_ascension.dm
@@ -10,7 +10,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 70 SECONDS
- invocation = "FL'MS"
+ invocation = "FL'MS."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
@@ -72,7 +72,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
- invocation = "C'SC'DE"
+ invocation = "C'SC'D."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
@@ -112,7 +112,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 300
- invocation = "F'RE"
+ invocation = "F'R."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/blood_siphon.dm b/code/modules/antagonists/heretic/magic/blood_siphon.dm
index 1801b6d9dbc..c63b17a703f 100644
--- a/code/modules/antagonists/heretic/magic/blood_siphon.dm
+++ b/code/modules/antagonists/heretic/magic/blood_siphon.dm
@@ -11,7 +11,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 15 SECONDS
- invocation = "FL'MS O'ET'RN'ITY."
+ invocation = "FL'MS O' 'T'RN'TY."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm
index 9baf3366f4b..a3330aefabd 100644
--- a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm
+++ b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm
@@ -11,7 +11,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 45 SECONDS
- invocation = "C'SM'S 'XP'ND"
+ invocation = "C'SM'S 'XP'ND!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/cosmic_runes.dm b/code/modules/antagonists/heretic/magic/cosmic_runes.dm
index 7eee200dd4a..af023e73a03 100644
--- a/code/modules/antagonists/heretic/magic/cosmic_runes.dm
+++ b/code/modules/antagonists/heretic/magic/cosmic_runes.dm
@@ -11,7 +11,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 15 SECONDS
- invocation = "ST'R R'N'"
+ invocation = "ST'R R'N."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/eldritch_blind.dm b/code/modules/antagonists/heretic/magic/eldritch_blind.dm
index 8df20503821..facde89ade7 100644
--- a/code/modules/antagonists/heretic/magic/eldritch_blind.dm
+++ b/code/modules/antagonists/heretic/magic/eldritch_blind.dm
@@ -5,7 +5,7 @@
overlay_icon_state = "bg_heretic_border"
school = SCHOOL_FORBIDDEN
- invocation = "E'E'S"
+ invocation = "E'E'S."
spell_requirements = NONE
cast_range = 10
diff --git a/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm b/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm
index c68ed07c81f..35d7f600081 100644
--- a/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm
+++ b/code/modules/antagonists/heretic/magic/eldritch_emplosion.dm
@@ -8,7 +8,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
- invocation = "E'P"
+ invocation = "E'P."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm b/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm
index e598f1f9215..514236771e2 100644
--- a/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm
+++ b/code/modules/antagonists/heretic/magic/eldritch_shapeshift.dm
@@ -7,7 +7,7 @@
overlay_icon_state = "bg_heretic_border"
school = SCHOOL_FORBIDDEN
- invocation = "SH'PE"
+ invocation = "SH'PE."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/mind_gate.dm b/code/modules/antagonists/heretic/magic/mind_gate.dm
index 7963c4d6c02..74a04eba396 100644
--- a/code/modules/antagonists/heretic/magic/mind_gate.dm
+++ b/code/modules/antagonists/heretic/magic/mind_gate.dm
@@ -11,7 +11,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 20 SECONDS
- invocation = "Op' 'oY 'Mi'd"
+ invocation = "Op'n y'r m'd."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
cast_range = 6
diff --git a/code/modules/antagonists/heretic/magic/moon_parade.dm b/code/modules/antagonists/heretic/magic/moon_parade.dm
index d8873c816cc..48df0ab58df 100644
--- a/code/modules/antagonists/heretic/magic/moon_parade.dm
+++ b/code/modules/antagonists/heretic/magic/moon_parade.dm
@@ -11,7 +11,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
- invocation = "L'N'R P'RAD"
+ invocation = "L'N'R P'R'D!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/moon_ringleader.dm b/code/modules/antagonists/heretic/magic/moon_ringleader.dm
index beacd0f5afa..130212f9455 100644
--- a/code/modules/antagonists/heretic/magic/moon_ringleader.dm
+++ b/code/modules/antagonists/heretic/magic/moon_ringleader.dm
@@ -12,7 +12,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 1 MINUTES
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND
- invocation = "R''S 'E"
+ invocation = "R'S 'E!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/moon_smile.dm b/code/modules/antagonists/heretic/magic/moon_smile.dm
index 62e1fa6747e..fd98dc0d841 100644
--- a/code/modules/antagonists/heretic/magic/moon_smile.dm
+++ b/code/modules/antagonists/heretic/magic/moon_smile.dm
@@ -12,7 +12,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 20 SECONDS
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND
- invocation = "Mo'N S'M'LE"
+ invocation = "M'N S'M'LE!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
cast_range = 6
diff --git a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
index 4e37f5db17f..6b156e01653 100644
--- a/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
+++ b/code/modules/antagonists/heretic/magic/nightwatcher_rebirth.dm
@@ -11,7 +11,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 1 MINUTES
- invocation = "GL'RY T' TH' N'GHT'W'TCH'ER"
+ invocation = "GL'RY T' TH' N'GHT'W'TCH'ER."
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_REQUIRES_HUMAN
diff --git a/code/modules/antagonists/heretic/magic/rust_construction.dm b/code/modules/antagonists/heretic/magic/rust_construction.dm
index 72546f66592..59aeacf3004 100644
--- a/code/modules/antagonists/heretic/magic/rust_construction.dm
+++ b/code/modules/antagonists/heretic/magic/rust_construction.dm
@@ -10,6 +10,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 8 SECONDS
+ // Both of these are changed in before_cast
invocation = "Someone raises a wall of rust."
invocation_self_message = "You raise a wall of rust."
invocation_type = INVOCATION_EMOTE
diff --git a/code/modules/antagonists/heretic/magic/rust_wave.dm b/code/modules/antagonists/heretic/magic/rust_wave.dm
index 1464829aa4c..45f1f878cff 100644
--- a/code/modules/antagonists/heretic/magic/rust_wave.dm
+++ b/code/modules/antagonists/heretic/magic/rust_wave.dm
@@ -13,7 +13,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 30 SECONDS
- invocation = "'NTR'P'C PL'M'"
+ invocation = "'NTR'P'C PL'M!"
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
@@ -78,7 +78,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 35 SECONDS
- invocation = "SPR'D TH' WO'D"
+ invocation = "SPR'D TH' W'D."
invocation_type = INVOCATION_WHISPER
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/void_prison.dm b/code/modules/antagonists/heretic/magic/void_prison.dm
index 517fdc2984c..a70c4e36ffa 100644
--- a/code/modules/antagonists/heretic/magic/void_prison.dm
+++ b/code/modules/antagonists/heretic/magic/void_prison.dm
@@ -15,7 +15,7 @@
sound = null
school = SCHOOL_FORBIDDEN
- invocation = "V''D PR'S'N!"
+ invocation = "V'D PR'S'N!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
diff --git a/code/modules/antagonists/heretic/magic/wolves_among_sheep.dm b/code/modules/antagonists/heretic/magic/wolves_among_sheep.dm
index 031c641724a..ab52bbf4152 100644
--- a/code/modules/antagonists/heretic/magic/wolves_among_sheep.dm
+++ b/code/modules/antagonists/heretic/magic/wolves_among_sheep.dm
@@ -16,7 +16,7 @@
school = SCHOOL_FORBIDDEN
cooldown_time = 5 MINUTES
- invocation = "D`M``N `XP`NS``N!"
+ invocation = "D'M'N XP'NS'N!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
/// Max distance our effect is expected to reach
diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm
index 1ef4cf33aa3..eb83e8ae139 100644
--- a/code/modules/spells/spell.dm
+++ b/code/modules/spells/spell.dm
@@ -404,7 +404,11 @@
invoker.whisper(used_invocation_message, forced = "spell ([src])")
if(INVOCATION_EMOTE)
- invoker.visible_message(used_invocation_message, invocation_self_message)
+ invoker.visible_message(
+ capitalize(REPLACE_PRONOUNS(replacetext(used_invocation_message, "%CASTER", invoker.name), invoker)),
+ capitalize(REPLACE_PRONOUNS(replacetext(invocation_self_message, "%CASTER", invoker.name), invoker)),
+ visible_message_flags = ALWAYS_SHOW_SELF_MESSAGE,
+ )
/// Checks if the current OWNER of the spell is in a valid state to say the spell's invocation
/datum/action/cooldown/spell/proc/try_invoke(mob/living/invoker, feedback = TRUE)
diff --git a/code/modules/spells/spell_types/aoe_spell/knock.dm b/code/modules/spells/spell_types/aoe_spell/knock.dm
index 8e4f453b5d6..49b20555c27 100644
--- a/code/modules/spells/spell_types/aoe_spell/knock.dm
+++ b/code/modules/spells/spell_types/aoe_spell/knock.dm
@@ -8,7 +8,7 @@
cooldown_time = 10 SECONDS
cooldown_reduction_per_rank = 2 SECONDS
- invocation = "AULIE OXIN FIERA"
+ invocation = "AULIE OXIN FIERA!"
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
aoe_radius = 3
diff --git a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
index 743ea8b23d8..7272b2ff267 100644
--- a/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
+++ b/code/modules/spells/spell_types/aoe_spell/magic_missile.dm
@@ -8,7 +8,7 @@
cooldown_time = 20 SECONDS
cooldown_reduction_per_rank = 3.5 SECONDS
- invocation = "FORTI GY AMA"
+ invocation = "FORTI GY AMA!"
invocation_type = INVOCATION_SHOUT
aoe_radius = 7
diff --git a/code/modules/spells/spell_types/aoe_spell/repulse.dm b/code/modules/spells/spell_types/aoe_spell/repulse.dm
index 453b9475b6c..df52547f28f 100644
--- a/code/modules/spells/spell_types/aoe_spell/repulse.dm
+++ b/code/modules/spells/spell_types/aoe_spell/repulse.dm
@@ -76,7 +76,7 @@
sound = 'sound/effects/magic/repulse.ogg'
school = SCHOOL_EVOCATION
- invocation = "GITTAH WEIGH"
+ invocation = "GITTAH WEIGH!"
invocation_type = INVOCATION_SHOUT
aoe_radius = 5
diff --git a/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm b/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm
index e0041525839..59fbb22e547 100644
--- a/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm
+++ b/code/modules/spells/spell_types/aoe_spell/sacred_flame.dm
@@ -7,7 +7,7 @@
school = SCHOOL_EVOCATION
cooldown_time = 6 SECONDS
- invocation = "FI'RAN DADISKO"
+ invocation = "FI'RAN DADISKO!"
invocation_type = INVOCATION_SHOUT
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
diff --git a/code/modules/spells/spell_types/conjure/bees.dm b/code/modules/spells/spell_types/conjure/bees.dm
index 28636cde709..5d803c0d060 100644
--- a/code/modules/spells/spell_types/conjure/bees.dm
+++ b/code/modules/spells/spell_types/conjure/bees.dm
@@ -10,7 +10,7 @@
cooldown_time = 1 MINUTES
cooldown_reduction_per_rank = 10 SECONDS
- invocation = "NOT THE BEES"
+ invocation = "NOT THE BEES!"
invocation_type = INVOCATION_SHOUT
summon_radius = 3
diff --git a/code/modules/spells/spell_types/conjure/carp.dm b/code/modules/spells/spell_types/conjure/carp.dm
index 85257914051..b48842bfb8e 100644
--- a/code/modules/spells/spell_types/conjure/carp.dm
+++ b/code/modules/spells/spell_types/conjure/carp.dm
@@ -6,7 +6,7 @@
school = SCHOOL_CONJURATION
cooldown_time = 2 MINUTES
- invocation = "NOUK FHUNMM SACP RISSKA"
+ invocation = "NOUK FHUNMM SACP RISSKA!"
invocation_type = INVOCATION_SHOUT
summon_radius = 1
diff --git a/code/modules/spells/spell_types/conjure/cheese.dm b/code/modules/spells/spell_types/conjure/cheese.dm
index c017ebb6c20..879f00472c8 100644
--- a/code/modules/spells/spell_types/conjure/cheese.dm
+++ b/code/modules/spells/spell_types/conjure/cheese.dm
@@ -8,7 +8,7 @@
cooldown_time = 1 MINUTES
spell_requirements = null
- invocation = "PL`YR DOT PL`CTM` OOO`BEE G" //player.placeatme 00064B33 9
+ invocation = "PL'YR DOT PL'CTM' OOO'BEE G!" //player.placeatme 00064B33 9
invocation_type = INVOCATION_SHOUT
garbled_invocation_prob = 0 //i'd rather it remain like this
diff --git a/code/modules/spells/spell_types/conjure/creatures.dm b/code/modules/spells/spell_types/conjure/creatures.dm
index 1fcd11c579d..e8f0df41a08 100644
--- a/code/modules/spells/spell_types/conjure/creatures.dm
+++ b/code/modules/spells/spell_types/conjure/creatures.dm
@@ -6,7 +6,7 @@
school = SCHOOL_CONJURATION
cooldown_time = 2 MINUTES
- invocation = "IA IA"
+ invocation = "IA IA!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
diff --git a/code/modules/spells/spell_types/conjure/invisible_chair.dm b/code/modules/spells/spell_types/conjure/invisible_chair.dm
index 125cd4cf75f..cadb99a7476 100644
--- a/code/modules/spells/spell_types/conjure/invisible_chair.dm
+++ b/code/modules/spells/spell_types/conjure/invisible_chair.dm
@@ -11,7 +11,7 @@
school = SCHOOL_MIME
cooldown_time = 30 SECONDS
- invocation = "Someone does a weird gesture." // Overriden in before cast
+ invocation = span_notice("%CASTER pulls out an invisible chair and sits down.")
invocation_self_message = span_notice("You conjure an invisible chair and sit down.")
invocation_type = INVOCATION_EMOTE
@@ -23,10 +23,6 @@
summon_type = list(/obj/structure/chair/mime)
summon_lifespan = 25 SECONDS
-/datum/action/cooldown/spell/conjure/invisible_chair/before_cast(atom/cast_on)
- . = ..()
- invocation = span_notice("[cast_on] pulls out an invisible chair and sits down.")
-
/datum/action/cooldown/spell/conjure/invisible_chair/post_summon(atom/summoned_object, mob/living/carbon/human/cast_on)
if(!isobj(summoned_object))
return
diff --git a/code/modules/spells/spell_types/conjure/invisible_wall.dm b/code/modules/spells/spell_types/conjure/invisible_wall.dm
index a61db7cf74e..41fc8d74f3e 100644
--- a/code/modules/spells/spell_types/conjure/invisible_wall.dm
+++ b/code/modules/spells/spell_types/conjure/invisible_wall.dm
@@ -11,7 +11,7 @@
school = SCHOOL_MIME
cooldown_time = 30 SECONDS
- invocation = "Someone does a weird gesture." // Overriden in before cast
+ invocation = span_notice("%CASTER looks as if a wall is in front of %PRONOUN_them.")
invocation_self_message = span_notice("You form a wall in front of yourself.")
invocation_type = INVOCATION_EMOTE
@@ -22,7 +22,3 @@
summon_radius = 0
summon_type = list(/obj/effect/forcefield/mime)
summon_lifespan = 30 SECONDS
-
-/datum/action/cooldown/spell/conjure/invisible_wall/before_cast(atom/cast_on)
- . = ..()
- invocation = span_notice("[cast_on] looks as if a wall is in front of [cast_on.p_them()].")
diff --git a/code/modules/spells/spell_types/conjure/link_worlds.dm b/code/modules/spells/spell_types/conjure/link_worlds.dm
index 242227c4d0a..c3f8aafcbc9 100644
--- a/code/modules/spells/spell_types/conjure/link_worlds.dm
+++ b/code/modules/spells/spell_types/conjure/link_worlds.dm
@@ -6,7 +6,7 @@
button_icon_state = "nether"
cooldown_time = 1 MINUTES
cooldown_reduction_per_rank = 10 SECONDS
- invocation = "FL'NT N' ST'L"
+ invocation = "FL'NT N' ST'L!"
invocation_type = INVOCATION_SHOUT
spell_requirements = NONE
summon_radius = 1
diff --git a/code/modules/spells/spell_types/conjure/presents.dm b/code/modules/spells/spell_types/conjure/presents.dm
index b630c43225c..3b3cea99300 100644
--- a/code/modules/spells/spell_types/conjure/presents.dm
+++ b/code/modules/spells/spell_types/conjure/presents.dm
@@ -6,7 +6,7 @@
cooldown_time = 1 MINUTES
cooldown_reduction_per_rank = 13.75 SECONDS
- invocation = "HO HO HO"
+ invocation = "HO HO HO!"
invocation_type = INVOCATION_SHOUT
summon_radius = 3
diff --git a/code/modules/spells/spell_types/conjure/the_traps.dm b/code/modules/spells/spell_types/conjure/the_traps.dm
index bd25d163a56..d780a8185c3 100644
--- a/code/modules/spells/spell_types/conjure/the_traps.dm
+++ b/code/modules/spells/spell_types/conjure/the_traps.dm
@@ -6,7 +6,7 @@
cooldown_time = 25 SECONDS
cooldown_reduction_per_rank = 5 SECONDS
- invocation = "CAVERE INSIDIAS"
+ invocation = "CAVERE INSIDIAS!"
invocation_type = INVOCATION_SHOUT
summon_radius = 3
diff --git a/code/modules/spells/spell_types/conjure_item/invisible_box.dm b/code/modules/spells/spell_types/conjure_item/invisible_box.dm
index 42da02121d3..979a0de033f 100644
--- a/code/modules/spells/spell_types/conjure_item/invisible_box.dm
+++ b/code/modules/spells/spell_types/conjure_item/invisible_box.dm
@@ -13,7 +13,7 @@
school = SCHOOL_MIME
cooldown_time = 30 SECONDS
- invocation = "Someone does a weird gesture." // Overriden in before cast
+ invocation = span_notice("%CASTER moves %PRONOUN_their hands in the shape of a box, pressing a box out of the air.")
invocation_self_message = span_notice("You conjure up an invisible box, large enough to store a few things.")
invocation_type = INVOCATION_EMOTE
@@ -26,10 +26,6 @@
/// How long boxes last before going away
var/box_lifespan = 50 SECONDS
-/datum/action/cooldown/spell/conjure_item/invisible_box/before_cast(atom/cast_on)
- . = ..()
- invocation = span_notice("[cast_on] moves [cast_on.p_their()] hands in the shape of a cube, pressing a box out of the air.")
-
/datum/action/cooldown/spell/conjure_item/invisible_box/make_item(atom/caster)
. = ..()
var/obj/item/made_box = .
diff --git a/code/modules/spells/spell_types/pointed/blind.dm b/code/modules/spells/spell_types/pointed/blind.dm
index 208564d250a..2f5361e3520 100644
--- a/code/modules/spells/spell_types/pointed/blind.dm
+++ b/code/modules/spells/spell_types/pointed/blind.dm
@@ -9,7 +9,7 @@
cooldown_time = 30 SECONDS
cooldown_reduction_per_rank = 6.25 SECONDS
- invocation = "STI KALY"
+ invocation = "STI KALY."
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
diff --git a/code/modules/spells/spell_types/pointed/finger_guns.dm b/code/modules/spells/spell_types/pointed/finger_guns.dm
index cf80489fc91..ed44f2578ce 100644
--- a/code/modules/spells/spell_types/pointed/finger_guns.dm
+++ b/code/modules/spells/spell_types/pointed/finger_guns.dm
@@ -13,9 +13,9 @@
school = SCHOOL_MIME
cooldown_time = 30 SECONDS
- invocation = ""
- invocation_type = INVOCATION_EMOTE
+ invocation = span_notice("%CASTER fires %PRONOUN_their finger gun!")
invocation_self_message = span_danger("You fire your finger gun!")
+ invocation_type = INVOCATION_EMOTE
spell_requirements = SPELL_REQUIRES_HUMAN|SPELL_REQUIRES_MIME_VOW
antimagic_flags = NONE
@@ -43,10 +43,3 @@
return FALSE
return ..()
-
-/datum/action/cooldown/spell/pointed/projectile/finger_guns/before_cast(atom/cast_on)
- . = ..()
- if(isnull(owner))
- invocation = initial(invocation)
- else
- invocation = span_notice("[owner] fires [owner.p_their()] finger gun!")
diff --git a/code/modules/spells/spell_types/pointed/mind_transfer.dm b/code/modules/spells/spell_types/pointed/mind_transfer.dm
index 0d5fece02d1..bb632140c9e 100644
--- a/code/modules/spells/spell_types/pointed/mind_transfer.dm
+++ b/code/modules/spells/spell_types/pointed/mind_transfer.dm
@@ -11,7 +11,7 @@
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND
check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_PHASED|AB_CHECK_OPEN_TURF
- invocation = "GIN'YU CAPAN"
+ invocation = "GIN'YU CAPAN."
invocation_type = INVOCATION_WHISPER
antimagic_flags = MAGIC_RESISTANCE|MAGIC_RESISTANCE_MIND
diff --git a/code/modules/spells/spell_types/self/charge.dm b/code/modules/spells/spell_types/self/charge.dm
index af345f8cb13..050e835b2cc 100644
--- a/code/modules/spells/spell_types/self/charge.dm
+++ b/code/modules/spells/spell_types/self/charge.dm
@@ -10,7 +10,7 @@
cooldown_time = 60 SECONDS
cooldown_reduction_per_rank = 5 SECONDS
- invocation = "DIRI CEL"
+ invocation = "Diri Cel!"
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
diff --git a/code/modules/spells/spell_types/self/disable_tech.dm b/code/modules/spells/spell_types/self/disable_tech.dm
index c357ef9a749..6eea25d6638 100644
--- a/code/modules/spells/spell_types/self/disable_tech.dm
+++ b/code/modules/spells/spell_types/self/disable_tech.dm
@@ -23,7 +23,7 @@
cooldown_time = 40 SECONDS
cooldown_reduction_per_rank = 5 SECONDS
- invocation = "NEC CANTIO"
+ invocation = "NEC CANTIO!"
invocation_type = INVOCATION_SHOUT
emp_heavy = 6
diff --git a/code/modules/spells/spell_types/self/forcewall.dm b/code/modules/spells/spell_types/self/forcewall.dm
index 3bacb58e6a0..1907f2e0af5 100644
--- a/code/modules/spells/spell_types/self/forcewall.dm
+++ b/code/modules/spells/spell_types/self/forcewall.dm
@@ -8,7 +8,7 @@
cooldown_time = 10 SECONDS
cooldown_reduction_per_rank = 1.25 SECONDS
- invocation = "TARCOL MINTI ZHERI"
+ invocation = "TARCOL MINTI ZHERI!"
invocation_type = INVOCATION_SHOUT
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
@@ -59,13 +59,9 @@
spell_requirements = SPELL_REQUIRES_HUMAN|SPELL_REQUIRES_MIME_VOW
antimagic_flags = NONE
- invocation = ""
- invocation_type = INVOCATION_EMOTE
+ invocation = span_notice("%CASTER looks as if a blockade is in front of %PRONOUN_them.")
invocation_self_message = span_notice("You form a blockade in front of yourself.")
+ invocation_type = INVOCATION_EMOTE
spell_max_level = 1
wall_type = /obj/effect/forcefield/mime/advanced
-
-/datum/action/cooldown/spell/forcewall/mime/before_cast(atom/cast_on)
- . = ..()
- invocation = span_notice("[cast_on] looks as if a blockade is in front of [cast_on.p_them()].")
diff --git a/code/modules/spells/spell_types/self/mutate.dm b/code/modules/spells/spell_types/self/mutate.dm
index cb976875dec..e7392a986d8 100644
--- a/code/modules/spells/spell_types/self/mutate.dm
+++ b/code/modules/spells/spell_types/self/mutate.dm
@@ -43,7 +43,7 @@
cooldown_reduction_per_rank = 5 SECONDS
spell_max_level = 3
- invocation = "BIRUZ BENNAR"
+ invocation = "BIRUZ BENNAR!"
invocation_type = INVOCATION_SHOUT
mutations_to_add = list(/datum/mutation/human/laser_eyes, /datum/mutation/human/hulk/wizardly, /datum/mutation/human/gigantism)
diff --git a/code/modules/spells/spell_types/self/sanguine_strike.dm b/code/modules/spells/spell_types/self/sanguine_strike.dm
index 64cb2a11d6a..5cd95862fbb 100644
--- a/code/modules/spells/spell_types/self/sanguine_strike.dm
+++ b/code/modules/spells/spell_types/self/sanguine_strike.dm
@@ -15,7 +15,7 @@
cooldown_time = 60 SECONDS
cooldown_reduction_per_rank = 10 SECONDS
- invocation = "SHAPSDAY"
+ invocation = "SHAPSDAY."
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
diff --git a/code/modules/spells/spell_types/self/summonitem.dm b/code/modules/spells/spell_types/self/summonitem.dm
index acea28fc19b..e05486db5c0 100644
--- a/code/modules/spells/spell_types/self/summonitem.dm
+++ b/code/modules/spells/spell_types/self/summonitem.dm
@@ -6,7 +6,7 @@
school = SCHOOL_TRANSMUTATION
cooldown_time = 10 SECONDS
- invocation = "GAR YOK"
+ invocation = "Gar Yok!"
invocation_type = INVOCATION_WHISPER
spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC
diff --git a/code/modules/spells/spell_types/shapeshift/dragon.dm b/code/modules/spells/spell_types/shapeshift/dragon.dm
index 061a342d1d3..948bbc41dd8 100644
--- a/code/modules/spells/spell_types/shapeshift/dragon.dm
+++ b/code/modules/spells/spell_types/shapeshift/dragon.dm
@@ -2,8 +2,9 @@
/datum/action/cooldown/spell/shapeshift/dragon
name = "Dragon Form"
desc = "Take on the shape a lesser ash drake."
- invocation = "RAAAAAAAAWR!"
- invocation_type = INVOCATION_SHOUT
+ invocation = span_danger("%CASTER lets out a mighty roar!")
+ invocation_self_message = span_danger("You let out a mighty roar!")
+ invocation_type = INVOCATION_EMOTE
spell_requirements = NONE
possible_shapes = list(/mob/living/simple_animal/hostile/megafauna/dragon/lesser)
diff --git a/code/modules/spells/spell_types/shapeshift/polar_bear.dm b/code/modules/spells/spell_types/shapeshift/polar_bear.dm
index af3efc878d3..93e1f6cea91 100644
--- a/code/modules/spells/spell_types/shapeshift/polar_bear.dm
+++ b/code/modules/spells/spell_types/shapeshift/polar_bear.dm
@@ -1,8 +1,9 @@
/datum/action/cooldown/spell/shapeshift/polar_bear
name = "Polar Bear Form"
desc = "Take on the shape of a polar bear."
- invocation = "RAAAAAAAAWR!"
- invocation_type = INVOCATION_SHOUT
+ invocation = span_danger("%CASTER lets out a mighty roar!")
+ invocation_self_message = span_danger("You let out a mighty roar!")
+ invocation_type = INVOCATION_EMOTE
spell_requirements = NONE
possible_shapes = list(/mob/living/simple_animal/hostile/asteroid/polarbear/lesser)
diff --git a/code/modules/spells/spell_types/teleport/teleport.dm b/code/modules/spells/spell_types/teleport/teleport.dm
index eaf71109808..ea7ba3c486a 100644
--- a/code/modules/spells/spell_types/teleport/teleport.dm
+++ b/code/modules/spells/spell_types/teleport/teleport.dm
@@ -10,7 +10,7 @@
cooldown_reduction_per_rank = 20 SECONDS
spell_max_level = 3
- invocation = "SCYAR NILA"
+ invocation = "SCYAR NILA" // gets punctuation auto applied
invocation_type = INVOCATION_SHOUT
smoke_type = /datum/effect_system/fluid_spread/smoke