summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/dat/database/speak.txt182
-rw-r--r--crawl-ref/source/monspeak.cc33
2 files changed, 204 insertions, 11 deletions
diff --git a/crawl-ref/source/dat/database/speak.txt b/crawl-ref/source/dat/database/speak.txt
index ce3df80539..9108c3d088 100644
--- a/crawl-ref/source/dat/database/speak.txt
+++ b/crawl-ref/source/dat/database/speak.txt
@@ -1827,3 +1827,185 @@ yak
@The_monster@ snorts and paws the @surface@.
%%%%
+##############################################
+# Special orc speech
+##############################################
+orc_shouts
+
+grunts
+
+@shouts@
+
+@mutters@
+
+complains
+
+cheers
+
+jeers
+
+curses
+%%%%
+loudly_or_repeatedly
+
+loudly
+
+w:5
+repeatedly
+%%%%
+orc_modifier
+
+.
+
+w:4
+, as Orcs often do.
+
+%%%%
+_generic_orc_speech_
+
+w:50
+@The_monster@ @orc_shouts@ @loudly_or_repeatedly@@orc_modifier@
+
+w:20
+@The_monster@ suddenly @orc_shouts@@orc_modifier@
+
+w:5
+@The_monster@ @orc_shouts@ to no one in particular.
+
+@The_monster@ @loudly_or_repeatedly@ @shouts@ encouragement@orc_modifier@
+
+w:2
+@The_monster@ @loudly_or_repeatedly@ @shouts@ encouragement to no one in particular.
+
+@The_monster@ sings a few bars from the Orcish anthem.
+%%%%
+######################################################
+# General, non-descript orcs
+######################################################
+orc
+
+# stay silent most of the time
+w:9
+__NONE
+
+w:1
+@_generic_orc_speech_@
+%%%%
+#######################################################
+# Heretic orcs, not believing in Beogh or doubting the
+# saviour story.
+#######################################################
+beogh orc
+
+# hostile orcs shouldn't be too talkative
+w:60
+__NONE
+
+w:30
+@_generic_orc_speech_@
+
+# unbelievers
+@The_monster@ shouts, "I don't believe in Beogh!"
+
+@The_monster@ sneers, "Orcs don't need Beogh!"
+
+@The_monster@ says, "Beogh's messiah is just a fairy-tale."
+
+# orcs doubting you
+@The_monster@ mutters, "You're NOT the saviour of the Orcs."
+
+@The_monster@ shouts, "You're not the messiah, I am!"
+
+@The_monster@ laughs, "You, our saviour!?"
+
+@The_monster@ grumbles, "You're not even a proper Orc..."
+
+@The_monster@ shouts, "How could Beogh possibly chose you?"
+
+@The_monster@ mutters something uncomplimentary.
+
+@The_monster@ shouts, "Beogh will surely punish you for your arrogance!"
+
+@The_monster@ says, "Even if there was a messiah, it couldn't be you."
+
+@The_monster@ shouts, "Orcs! @player_name@ is lying!"
+
+@The_monster@ grunts, "You, the messiah? You don't even look the part!"
+
+VISUAL:@The_monster@ grimaces.
+
+VISUAL:@The_monster@ shakes @possessive@ head.
+
+VISUAL:@The_monster@ quizzically stares at you.
+%%%%
+friendly beogh orc
+
+# general friendly speech
+w:30
+@default friendly humanoid@
+
+w:30
+@_generic_orc_speech_@
+
+@The_monster@ says, "Beogh is great, and so are you!"
+
+@The_monster@ shouts, "Orcs kill for Beogh, Orcs die for Beogh!"
+
+# messages submitted by Lemuel
+@The_monster@ says, "I'm proud to serve, I'm ready to die."
+
+@The_monster@ says, "May Beogh smile on you, @player_name@."
+
+@The_monster@ shouts, "Fear not, @player_name@! Beogh smiles on those who fall in battle!"
+
+@The_monster@ lets loose a series of foul curses in the name of Beogh.
+
+@The_monster@ says, "@Monster@ fights for @player_name@, and Beogh rules over all."
+
+@The_monster@ says, "Orcs will kill them all!"
+
+@The_monster@ @shouts@, "Orcs rule!"
+
+@The_monster@ says, "I just want to die in your service, @player_name@!"
+
+@The_monster@ says, "I'd rather not die in your service, @player_name@."
+
+@The_monster@ says, "Um, some of the gold is for me, right?"
+
+@The_monster@ chants, "I shall fear no evil, for @player_name@ is my saviour."
+
+@The_monster@ says, "Beogh doesn't mind all this killing, you know."
+
+@The_monster@ says, "Orcs get a bad rep."
+
+@The_monster@ @mutters@, "It's always elves, elves, elves."
+
+@The_monster@ says, "I'm an Orc, you're an Orc, it's OK."
+
+@The_monster@ seems like @pronoun@ is about to say something to you, then stops.
+
+@The_monster@ says, "When this is all over, I'm going to start a fungus farm."
+%%%%
+friendly beogh orc sorcerer
+
+@_wizard_@
+
+@friendly beogh orc@
+%%%%
+beogh orc sorcerer
+
+@_wizard_@
+
+w:3
+@beogh orc@
+%%%%
+orc sorcerer
+
+@_wizard_@
+
+w:1
+@_generic_orc_@
+
+w:1
+__NONE
+%%%%
diff --git a/crawl-ref/source/monspeak.cc b/crawl-ref/source/monspeak.cc
index 70a9c6643b..b0f82bfafc 100644
--- a/crawl-ref/source/monspeak.cc
+++ b/crawl-ref/source/monspeak.cc
@@ -160,17 +160,6 @@ bool mons_speaks(const monsters *monster)
&& monster->has_ench(ENCH_CONFUSION)))
return false;
- // Dealing with the monster not being silenced while the player
- // *is* silenced, and is hence able to see the monsters' gestures
- // and such but not hear any sounds it makes, would be a big
- // headache to deal with, so skip it.
-
- // [jpeg] Why? Only print visible stuff! :p
-/*
- if (!silenced(monster->x, monster->y)
- && silenced(you.x_pos, you.y_pos))
- return false;
-*/
// Silenced monsters only "speak" 1/3 as often as non-silenced,
// unless they're normally silent (S_SILENT). Use
// get_monster_data(monster->type) to bypass mon_shouts()
@@ -206,6 +195,12 @@ bool mons_speaks(const monsters *monster)
if (monster->has_ench(ENCH_CONFUSION))
prefixes.push_back("confused");
+
+ // Add Beogh to list of prefixes for orcs (hostile and friendly) if you
+ // worship Beogh. (This assumes you being a Hill Orc, so might have odd
+ // results in wizard mode.)
+ if (you.religion == GOD_BEOGH && mons_genus(monster->type) == MONS_ORC)
+ prefixes.push_back("beogh");
std::string msg;
@@ -227,6 +222,22 @@ bool mons_speaks(const monsters *monster)
if (msg == "__NONE")
return false;
+ // The exact name brought no results, try species.
+ if (msg.empty() || msg == "__NEXT")
+ {
+ msg = get_speak_string(prefixes,
+ mons_type_name(mons_species(monster->type), DESC_PLAIN),
+ monster);
+
+ // Still nothing found? Try monster genus!
+ if (msg.empty() || msg == "__NEXT")
+ {
+ msg = get_speak_string(prefixes,
+ mons_type_name(mons_genus(monster->type), DESC_PLAIN),
+ monster);
+ }
+ }
+
// Now that we're not dealing with a specific monster name, include
// whether or not it can move in the prefix
if (mons_is_stationary(monster))