summaryrefslogtreecommitdiffstats
path: root/crawl-ref
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-19 16:20:19 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-19 16:20:19 +0000
commit6bd53ca4cc1bc582b1204fc68134533c5b86ba60 (patch)
treeeb51fba2eaa0bd1fdce047fa13a7f3cab368d36c /crawl-ref
parent7f3aa8091bff87364d2c3eaa6de0f20b47f90d51 (diff)
downloadcrawl-ref-6bd53ca4cc1bc582b1204fc68134533c5b86ba60.tar.gz
crawl-ref-6bd53ca4cc1bc582b1204fc68134533c5b86ba60.zip
Outsourcing Xom speech.
"You hear the rejoicing of dolorous and dpeg!" Xom is fascinated! git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3723 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref')
-rw-r--r--crawl-ref/source/dat/database/godspeak.txt340
-rw-r--r--crawl-ref/source/database.cc24
-rw-r--r--crawl-ref/source/xom.cc231
3 files changed, 403 insertions, 192 deletions
diff --git a/crawl-ref/source/dat/database/godspeak.txt b/crawl-ref/source/dat/database/godspeak.txt
new file mode 100644
index 0000000000..6cec978fa1
--- /dev/null
+++ b/crawl-ref/source/dat/database/godspeak.txt
@@ -0,0 +1,340 @@
+############################################################
+# godspeak.txt contains the messages for divine speech,
+# though currently only for Xom.
+#
+# For an explanation of how to read godspeak.txt and how to
+# add new messages, see monster_speech.txt in the docs
+# directory.
+############################################################
+%%%%
+# fall-back in case a keyword can't be found
+Xom general effect
+
+Xom snickers.
+
+"How about this?"
+
+"Let's try an experiment, hmm?"
+
+"I wonder... What does this button do?"
+
+%%%%
+##############################
+# Xom throwing stuff at you.
+##############################
+Xom general gift
+
+Xom grants you a gift!
+
+"Here."
+
+Xom's generous nature manifests itself.
+
+Xom grants you an implement of some kind.
+
+"Take this instrument of something!"
+
+"Take this token of my esteem."
+
+Xom smiles on you.
+
+%%%%
+# Xom will give you a ring or amulet you can't currently use due to
+# cursed equipment.
+Xom cursed gift
+
+"Perhaps you should try this instead."
+
+"Maybe this would work better."
+
+"Catch!"
+
+%%%%
+# If you're wearing a cursed ring Xom will give you another ring.
+Xom ring gift
+
+"Try this."
+
+"Catch!"
+
+"Take this!"
+
+%%%%
+# Xom will choose a weapon of a different subtype than the one you're
+# currently wielding.
+Xom weapon gift
+
+"Perhaps you should try this instead."
+
+"Have you considered using one of these?"
+
+"How about this?"
+
+%%%%
+# If you're wearing a cursed cloak, Xom will give you either a cloak
+# or body armour.
+Xom armour gift
+
+"Perhaps you should try this instead."
+
+"Have you considered wearing one of these?"
+
+"Here you go."
+
+%%%%
+####################
+# friendly summons
+####################
+Xom single summon
+
+"Serve the mortal, my child!"
+
+"Serve the toy, my child!"
+
+Xom opens a gate.
+
+%%%%
+Xom single holy summon
+
+"Serve the mortal, my confused child!"
+
+"Serve the toy, my child of exile!"
+
+Xom calls in a curious servant of another god.
+
+Xom lures something onto this plane.
+
+"A toy for the toy!"
+
+"I wonder which toy lasts longer."
+
+Xom opens a gate.
+
+%%%%
+# higher demonic being
+Xom single demon summon
+
+Xom grants you a demonic assistant.
+
+Xom grants you a demonic servitor.",
+
+Xom opens a gate.
+
+%%%%
+Xom single major holy summon
+
+Xom grants you an assistant from another god.
+
+Xom beguiles another god's servant into helping you.
+
+"Where'd that come from? Oh, well."
+
+You wonder where Xom got that toy from.
+
+Xom seems to have successfully tricked another god.
+
+Xom opens a gate.
+
+%%%%
+# several demons
+Xom multiple summons
+
+"Serve the mortal, my children!"
+
+Xom grants you some temporary aid.
+
+Xom momentarily opens a gate.
+
+%%%%
+# holy beings and demons at the same time
+Xom multiple mixed summons
+
+Xom calls in some mixed company.
+
+"Serve the toy, my motley children!"
+
+Xom sends help from the ranks of the outcast.
+
+"Oh, what a happy playground."
+
+Xom manages to trick several beings into existence.
+
+Xom snickers at the variety.
+
+Xom momentarily opens several gates.
+
+%%%%
+Xom multiple holy summons
+
+Xom stirs up dislodged servants of other gods.
+
+Xom summons wayward servants of other gods.
+
+Xom tricks other gods for their servants.
+
+"Different god, different toy."
+
+Xom momentarily opens a gate.
+
+%%%%
+##################
+# Xom nastiness
+##################
+# miscast strength 0, mostly harmless
+Xom zero miscast effect
+
+Xom almost notices you.
+
+Xom's attention almost turns to you for a moment.
+
+Xom's power almost touches on you for a moment.
+
+You almost hear Xom's maniacal laughter.
+
+%%%%
+# miscast strength random2(2), harmless/annoying
+Xom minor miscast effect
+
+Xom notices you.
+
+Xom's attention turns to you for a moment.
+
+Xom's power touches on you for a moment.
+
+You hear Xom's maniacal laughter.
+
+%%%%
+# miscast strength random2(3), mostly annoying
+Xom medium miscast effect
+
+@Xom minor miscast effect@
+
+%%%%
+# miscast strength random2(4), up to really nasty
+Xom major miscast effect
+
+"Try this!"
+
+Xom's attention turns to you.
+
+Xom's power touches on you.
+
+Xom giggles.
+
+%%%%
+Xom lose stats
+
+"Suffer!"
+
+Xom's malign attention turns to you for a moment.
+
+Xom's power touches on you for a moment.
+
+You hear Xom's maniacal laughter.
+
+%%%%
+# 25% chance of draining, else torment
+Xom draining or torment
+
+"You have displeased me, mortal."
+
+"You have grown too confident for your meagre worth."
+
+Xom's power touches on you for a moment.
+
+You hear Xom's maniacal laughter.
+
+%%%%
+# 25% chance dancing weapon, else summon hostile monster
+Xom hostile monster
+
+"Time to have some fun!"
+
+"Fight to survive, mortal."
+
+"Let's see if it's strong enough to survive yet."
+
+You hear Xom's maniacal laughter.
+
+%%%%
+Xom banishment
+
+"You have grown too comfortable in your little world, mortal!"
+
+Xom casts you into the Abyss!
+
+The world seems to spin as Xom's maniacal laughter rings in your ears.
+
+%%%%
+#####################
+# other effects
+#####################
+Xom potion effect
+
+"Go forth and destroy!"
+
+"Go forth and cause havoc, mortal!"
+
+Xom grants you a minor favour.
+
+Xom smiles on you.
+
+%%%%
+# cast a random spell
+Xom spell effect
+
+Xom's power flows through you!
+
+%%%%
+# turns walls into glass
+Xom vitrification
+
+You feel watched.
+
+Everything around seems to assume a strange transparency.
+
+All the walls suddenly lose part of their structure.
+
+Xom alters the dungeon around you.
+
+%%%%
+# strengthens friendlies, weakens hostiles
+Xom better monster polymorph
+
+"This might be better!"
+
+"Hum-dee-hum-dee-hum..."
+
+Xom's power touches on a nearby monster.
+
+You hear Xom's avuncular chuckle.
+
+%%%%
+# weakens friendlies, strengthens hostiles
+Xom worse monster polymorph
+
+@Xom better monster polymorph@
+%%%%
+Xom good mutations
+
+"You need some minor adjustments, mortal!"
+
+"Let me alter your pitiful body."
+
+Xom's power touches on you for a moment.
+
+You hear Xom's maniacal cackling.
+
+%%%%
+Xom random mutations
+
+"You need some minor improvements, mortal!"
+
+"Let me alter your body."
+
+Xom's power brushes against you for a moment.
+
+You hear Xom's avuncular chuckle.
+
+%%%%
+
diff --git a/crawl-ref/source/database.cc b/crawl-ref/source/database.cc
index e566d5a7ea..beafcdfbdd 100644
--- a/crawl-ref/source/database.cc
+++ b/crawl-ref/source/database.cc
@@ -66,29 +66,36 @@ static TextDB AllDBs[] =
"descript/gods.txt",
"descript/branches.txt",
0),
+
TextDB( "db/randart",
"database/randname.txt",
"database/rand_wpn.txt", // mostly weapons
"database/rand_arm.txt", // mostly armour
"database/rand_all.txt", // jewellery and general
0),
+
TextDB( "db/speak",
"database/monspeak.txt", // monster speech
"database/wpnnoise.txt", // noisy weapon speech
"database/insult.txt", // imp/demon taunts
+ "database/godspeak.txt", // god speech
0),
+
TextDB( "db/shout",
"database/shout.txt",
"database/insult.txt", // imp/demon taunts, again
0),
- TextDB( "db/help", "database/help.txt", 0),
+
+ TextDB( "db/help",
+ "database/help.txt",
+ 0),
};
static TextDB& DescriptionDB = AllDBs[0];
-static TextDB& RandartDB = AllDBs[1];
-static TextDB& SpeakDB = AllDBs[2];
-static TextDB& ShoutDB = AllDBs[3];
-static TextDB& HelpDB = AllDBs[4];
+static TextDB& RandartDB = AllDBs[1];
+static TextDB& SpeakDB = AllDBs[2];
+static TextDB& ShoutDB = AllDBs[3];
+static TextDB& HelpDB = AllDBs[4];
// ----------------------------------------------------------------------
// TextDB
@@ -103,7 +110,10 @@ TextDB::TextDB(const char* db_name, ...)
while (true)
{
const char* input_file = va_arg(args, const char *);
- if (input_file == 0) break;
+
+ if (input_file == 0)
+ break;
+
ASSERT( strstr(input_file, ".txt") != 0 ); // probably forgot the terminating 0
_input_files.push_back(input_file);
}
@@ -114,8 +124,10 @@ void TextDB::init()
{
if (_needs_update())
_regenerate_db();
+
const std::string full_db_path = get_savedir_path(_db_name);
_db = dbm_open(full_db_path.c_str(), O_RDONLY, 0660);
+
if (_db == NULL)
end(1, true, "Failed to open DB: %s", full_db_path.c_str());
}
diff --git a/crawl-ref/source/xom.cc b/crawl-ref/source/xom.cc
index 4bb53a73cd..934198ab95 100644
--- a/crawl-ref/source/xom.cc
+++ b/crawl-ref/source/xom.cc
@@ -10,6 +10,7 @@
#include "beam.h"
#include "branch.h"
+#include "database.h"
#include "effects.h"
#include "it_use2.h"
#include "items.h"
@@ -63,107 +64,6 @@ static const spell_type xom_spells[] =
SPELL_NECROMUTATION
};
-static const char *xom_single_normal_summons[] =
-{
- "\"Serve the mortal, my child!\"",
- "\"Serve the toy, my child!\"",
- "Xom opens a gate."
-};
-
-static const char *xom_single_normal_diff_summons[] =
-{
- "\"Serve the mortal, my confused child!\"",
- "\"Serve the toy, my child of exile!\"",
- "Xom calls in a curious servant of another god.",
- "Xom lures something onto this plane.",
- "\"A toy for the toy!\"",
- "\"I wonder which toy lasts longer.\"",
- "Xom opens a gate."
-};
-
-static const char *xom_single_high_summons[] =
-{
- "Xom grants you a demonic assistant.",
- "Xom grants you a demonic servitor.",
- "Xom opens a gate."
-};
-
-static const char *xom_single_high_diff_summons[] =
-{
- "Xom grants you an assistant from another god.",
- "Xom beguiles another god's servant into helping you.",
- "\"Where'd that come from? Oh, well.\"",
- "You wonder where Xom got that toy from.",
- "Xom seems to have successfully tricked another god.",
- "Xom opens a gate."
-};
-
-static const char *xom_multiple_summons[] =
-{
- "\"Serve the mortal, my children!\"",
- "Xom grants you some temporary aid.",
- "Xom momentarily opens a gate."
-};
-
-static const char *xom_multiple_some_diff_summons[] =
-{
- "Xom calls in some mixed company.",
- "\"Serve the toy, my motley children!\"",
- "Xom sends help from the ranks of the outcast.",
- "\"Oh, what a happy playground.\"",
- "Xom manages to trick several beings into existence.",
- "Xom snickers at the variety.",
- "Xom momentarily opens several gates."
-};
-
-static const char *xom_multiple_all_diff_summons[] =
-{
- "Xom stirs up dislodged servants of other gods.",
- "Xom summons wayward servants of other gods.",
- "Xom tricks other gods for their servants.",
- "\"Different god, different toy.\"",
- "Xom momentarily opens a gate."
-};
-
-static const char *xom_try_this[] =
-{
- "\"Perhaps you should try this instead.\"",
- "\"Maybe this would work better.\"",
- "\"Catch!\""
-};
-
-static const char *xom_try_this_ring[] =
-{
- "\"Try this.\"",
- "\"Catch!\"",
- "\"Take this!\""
-};
-
-static const char *xom_try_this_other_thing[] =
-{
- "\"Perhaps you should try this instead.\"",
- "\"Have you considered using one of these?\"",
- "\"How about this?\""
-};
-
-static const char *xom_try_these_duds[] =
-{
- "\"Perhaps you should try this instead.\"",
- "\"Have you considered wearing one of these?\"",
- "\"Here you go.\""
-};
-
-static const char *xom_generic_beneficence[] =
-{
- "Xom grants you a gift!",
- "\"Here.\"",
- "Xom's generous nature manifests itself.",
- "Xom grants you an implement of some kind.",
- "\"Take this instrument of something!\"",
- "\"Take this token of my esteem.\"",
- "Xom smiles on you."
-};
-
const char *describe_xom_favour()
{
return (you.piety > 160) ? "A beloved toy of Xom." :
@@ -208,6 +108,19 @@ static const char* xom_message_arrays[NUM_XOM_MESSAGE_TYPES][6] =
}
};
+static const char* _get_xom_speech(const std::string key)
+{
+ std::string result = getSpeakString("Xom " + key);
+
+ if (result.empty())
+ result = getSpeakString("Xom general effect");
+
+ if (!result.empty())
+ return (result.c_str());
+
+ return ("Xom makes something happen.");
+}
+
static void _xom_is_stimulated(int maxinterestingness,
const char* message_array[],
bool force_message)
@@ -277,7 +190,7 @@ void xom_makes_you_cast_random_spell(int sever)
const spell_type spell = xom_spells[random2(spellenum)];
- god_speaks(GOD_XOM, "Xom's power flows through you!");
+ god_speaks(GOD_XOM, _get_xom_speech("spell effect"));
#if DEBUG_DIAGNOSTICS || DEBUG_RELIGION || DEBUG_XOM
mprf(MSGCH_DIAGNOSTICS,
@@ -352,7 +265,7 @@ static bool xom_annoyance_gift(int power)
{
// If you are wielding a cursed item then Xom will give
// you an item of that same type. Ha ha!
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_try_this));
+ god_speaks(GOD_XOM, _get_xom_speech("cursed gift"));
if (coinflip())
// For added humour, give the same sub-type.
xom_make_item(weapon->base_type, weapon->sub_type, power * 3);
@@ -368,7 +281,7 @@ static bool xom_annoyance_gift(int power)
// a ring. Ha ha!
//
// A random ring. (Not necessarily a good one.)
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_try_this));
+ god_speaks(GOD_XOM, _get_xom_speech("cursed gift"));
xom_make_item(OBJ_JEWELLERY, get_random_ring_type(), power * 3);
return (true);
};
@@ -378,7 +291,7 @@ static bool xom_annoyance_gift(int power)
{
// If you are wearing a cursed amulet then Xom will give
// you an amulet. Ha ha!
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_try_this));
+ god_speaks(GOD_XOM, _get_xom_speech("cursed gift"));
xom_make_item(OBJ_JEWELLERY, get_random_amulet_type(), power * 3);
return (true);
};
@@ -390,7 +303,7 @@ static bool xom_annoyance_gift(int power)
{
// If you are wearing a cursed ring then Xom will give you
// a ring. Ha ha!
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_try_this_ring));
+ god_speaks(GOD_XOM, _get_xom_speech("ring gift"));
xom_make_item(OBJ_JEWELLERY, get_random_ring_type(), power * 3);
return (true);
}
@@ -399,7 +312,7 @@ static bool xom_annoyance_gift(int power)
{
// Xom will give you a wielded item of a type different
// than what you are currently wielding.
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_try_this_other_thing));
+ god_speaks(GOD_XOM, _get_xom_speech("weapon gift"));
const object_class_type objtype =
get_unrelated_wield_class(weapon->base_type);
@@ -425,7 +338,7 @@ bool xom_gives_item(int power)
{
// If you are wearing a cursed cloak then Xom will give you a
// cloak or body armour . Ha ha!
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_try_these_duds));
+ god_speaks(GOD_XOM, _get_xom_speech("xom armour gift"));
xom_make_item(OBJ_ARMOUR,
random2(10)?
get_random_body_armour_type(you.your_level * 2)
@@ -434,7 +347,7 @@ bool xom_gives_item(int power)
return (true);
}
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_generic_beneficence));
+ god_speaks(GOD_XOM, _get_xom_speech("general gift"));
// There are two kinds of Xom gifts: acquirement and random
// object. The result from acquirement is very good (usually as
@@ -562,11 +475,7 @@ static bool xom_is_good(int sever)
you.berserk_penalty = NO_BERSERK_PENALTY;
}
- god_speaks(GOD_XOM, random_choose_string(
- "\"Go forth and destroy!\"",
- "\"Go forth and cause havoc, mortal!\"",
- "Xom grants you a minor favour.",
- "Xom smiles on you.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("potion effect"));
potion_effect(type, 150);
done = true;
@@ -595,11 +504,11 @@ static bool xom_is_good(int sever)
}
if (numdifferent == numdemons)
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_multiple_all_diff_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("multiple holy summons"));
else if (numdifferent > 0)
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_multiple_some_diff_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("multiple mixed summons"));
else
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_multiple_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("multiple summons"));
done = true;
}
@@ -609,11 +518,7 @@ static bool xom_is_good(int sever)
if (!vitrify_area(radius)) // can fail with radius 1 or in open areas
goto try_again;
- god_speaks(GOD_XOM, random_choose_string(
- "You feel watched.",
- "Everything around seems to assume a strange transparency.",
- "All the walls suddenly lose part of their structure.",
- "Xom alters the dungeon around you.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("vitrification"));
done = true;
}
else if (random2(sever) <= 5)
@@ -636,9 +541,9 @@ static bool xom_is_good(int sever)
you.pet_target, MONS_PROGRAM_BUG) != -1)
{
if (different)
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_single_normal_diff_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("single holy summon"));
else
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_single_normal_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("single summon"));
done = true;
}
@@ -654,11 +559,8 @@ static bool xom_is_good(int sever)
if (mon)
{
- god_speaks(GOD_XOM, random_choose_string(
- "\"This might be better!\"",
- "\"Hum-dee-hum-dee-hum...\"",
- "Xom's power touches on a nearby monster.",
- "You hear Xom's avuncular chuckle.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("weaker monster polymorph"));
+
if (mons_friendly(mon))
monster_polymorph(mon, RANDOM_MONSTER, PPT_MORE);
else
@@ -676,11 +578,7 @@ static bool xom_is_good(int sever)
if (you.is_undead)
goto try_again;
- god_speaks(GOD_XOM, random_choose_string(
- "\"You need some minor adjustments, mortal!\"",
- "\"Let me alter your pitiful body.\"",
- "Xom's power touches on you for a moment.",
- "You hear Xom's maniacal cackling.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("good mutations"));
mpr("Your body is suffused with distortional energy.");
set_hp(1 + random2(you.hp), false);
@@ -712,9 +610,9 @@ static bool xom_is_good(int sever)
MONS_PROGRAM_BUG ) != -1)
{
if (different)
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_single_high_diff_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("single major holy summon"));
else
- god_speaks(GOD_XOM, RANDOM_ELEMENT(xom_single_high_summons));
+ god_speaks(GOD_XOM, _get_xom_speech("single demon summon"));
done = true;
}
@@ -765,11 +663,7 @@ static bool xom_is_bad(int sever)
{
if (random2(sever) <= 2)
{
- god_speaks(GOD_XOM, random_choose_string(
- "Xom almost notices you.",
- "Xom's attention almost turns to you for a moment.",
- "Xom's power almost touches on you for a moment.",
- "You almost hear Xom's maniacal laughter.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("zero miscast effect"));
miscast_effect( SPTYP_RANDOM, 0, 0, 0, "the mischief of Xom" );
@@ -777,11 +671,7 @@ static bool xom_is_bad(int sever)
}
else if (random2(sever) <= 3)
{
- god_speaks(GOD_XOM, random_choose_string(
- "Xom notices you.",
- "Xom's attention turns to you for a moment.",
- "Xom's power touches on you for a moment.",
- "You hear Xom's maniacal laughter.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("minor miscast effect"));
miscast_effect( SPTYP_RANDOM, 0, 0, random2(2),
"the capriciousness of Xom" );
@@ -790,11 +680,7 @@ static bool xom_is_bad(int sever)
}
else if (random2(sever) <= 4)
{
- god_speaks(GOD_XOM, random_choose_string(
- "\"Suffer!\"",
- "Xom's malign attention turns to you for a moment.",
- "Xom's power touches on you for a moment.",
- "You hear Xom's maniacal laughter.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("lose stats"));
lose_stat(STAT_RANDOM, 1 + random2(3), true,
"the capriciousness of Xom" );
@@ -803,11 +689,7 @@ static bool xom_is_bad(int sever)
}
else if (random2(sever) <= 5)
{
- god_speaks(GOD_XOM, random_choose_string(
- "Xom notices you.",
- "Xom's attention turns to you for a moment.",
- "Xom's power touches on you for a moment.",
- "You hear Xom's maniacal laughter.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("medium miscast effect"));
miscast_effect( SPTYP_RANDOM, 0, 0, random2(3),
"the capriciousness of Xom" );
@@ -818,11 +700,7 @@ static bool xom_is_bad(int sever)
{
if (you.is_undead)
goto try_again;
- god_speaks(GOD_XOM, random_choose_string(
- "\"You need some minor improvements, mortal!\"",
- "\"Let me alter your body.\"",
- "Xom's power brushes against you for a moment.",
- "You hear Xom's avuncular chuckle.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("random mutations"));
mpr("Your body is suffused with distortional energy.");
set_hp(1 + random2(you.hp), false);
@@ -848,11 +726,7 @@ static bool xom_is_bad(int sever)
if (mon)
{
- god_speaks(GOD_XOM, random_choose_string(
- "\"This might be better!\"",
- "\"Hum-dee-hum-dee-hum...\"",
- "Xom's power touches on a nearby monster.",
- "You hear Xom's avuncular chuckle.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("stronger monster polymorph"));
if (mons_friendly(mon))
monster_polymorph(mon, RANDOM_MONSTER, PPT_LESS);
@@ -865,11 +739,7 @@ static bool xom_is_bad(int sever)
{
if (you.is_undead)
goto try_again;
- god_speaks(GOD_XOM, random_choose_string(
- "\"You have displeased me, mortal.\"",
- "\"You have grown too confident for your meagre worth.\"",
- "Xom's power touches on you for a moment.",
- "You hear Xom's maniacal laughter.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("draining or torment"));
if (one_chance_in(4))
{
@@ -889,11 +759,7 @@ static bool xom_is_bad(int sever)
}
else if (random2(sever) <= 9)
{
- god_speaks(GOD_XOM, random_choose_string(
- "\"Time to have some fun!\"",
- "\"Fight to survive, mortal.\"",
- "\"Let's see if it's strong enough to survive yet.\"",
- "You hear Xom's maniacal laughter.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("hostile monster"));
if (one_chance_in(4))
dancing_weapon(100, true); // nasty, but fun
@@ -914,12 +780,8 @@ static bool xom_is_bad(int sever)
}
else if (random2(sever) <= 10)
{
- god_speaks(GOD_XOM, random_choose_string(
- "\"Try this!\"",
- "Xom's attention turns to you.",
- "Xom's power touches on you.",
- "Xom giggles.", NULL));
-
+ god_speaks(GOD_XOM, _get_xom_speech("major miscast effect"));
+
miscast_effect( SPTYP_RANDOM, 0, 0, random2(4),
"the severe capriciousness of Xom" );
@@ -927,10 +789,7 @@ static bool xom_is_bad(int sever)
}
else if (one_chance_in(sever) && (you.level_type != LEVEL_ABYSS))
{
- god_speaks(GOD_XOM, random_choose_string(
- "\"You have grown too comfortable in your little world, mortal!\"",
- "Xom casts you into the Abyss!",
- "The world seems to spin as Xom's maniacal laughter rings in your ears.", NULL));
+ god_speaks(GOD_XOM, _get_xom_speech("banishment"));
banished(DNGN_ENTER_ABYSS, "Xom");