summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-09 00:43:03 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-09 00:43:03 +0000
commitdacc5311c59ec11e3bb4ce2f63a6e1985cf24bcc (patch)
tree9dbb19006303df12e977cbe7f9f5a593ae910ba9
parent836f5b7754e361f5482f17b199647ace667bbd3b (diff)
downloadcrawl-ref-dacc5311c59ec11e3bb4ce2f63a6e1985cf24bcc.tar.gz
crawl-ref-dacc5311c59ec11e3bb4ce2f63a6e1985cf24bcc.zip
FR 1833480: Implement Lemuel's Beogh specific orc speech.
Orcs can now give different speech, depending on whether you worship Beogh or not, and of whether they are hostile or friendly. (Neutrals are treated as hostile, in this case.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3547 c06c8d41-db1a-0410-9941-cceddc491573
-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))