summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/dat/speak.txt503
-rw-r--r--crawl-ref/source/it_use3.cc164
-rw-r--r--crawl-ref/source/item_use.cc2
3 files changed, 569 insertions, 100 deletions
diff --git a/crawl-ref/source/dat/speak.txt b/crawl-ref/source/dat/speak.txt
index d58da9d2d6..76214f39ac 100644
--- a/crawl-ref/source/dat/speak.txt
+++ b/crawl-ref/source/dat/speak.txt
@@ -1802,3 +1802,506 @@ yak
@The_monster@ snorts and paws the @surface@.
%%%%
+##############################################
+##############################################
+# Weapons that make noises.
+##############################################
+# The Singing Sword loves to sing and sometimes talks.
+singing sword
+
+w:4
+@weapon_sings@
+
+w:1
+@weapon_talks@
+
+%%%%
+# Noisy weapons like to chatter and imitate dungeon noises.
+noisy weapon
+
+w:2
+@weapon_talks@
+
+w:1
+SOUND:You hear @weapon_noise@
+%%%%
+# for the Singing Sword only!
+weapon_sings
+
+#sings
+@The_weapon@ hums a little @tune_or_melody@.
+
+@The_weapon@ breaks into glorious song!
+
+@The_weapon@ sings.
+
+@The_weapon@ sings loudly.
+
+@The_weapon@ sings off-key.
+
+@The_weapon@ sings, "Tra-la-la..."
+
+@The_weapon@ sings a lullaby.
+
+@The_weapon@ whines plaintively.
+
+@The_weapon@ wails mournfully.
+
+@The_weapon@ practices its scales.
+
+@The_weapon@ lilts tunefully.
+
+@The_weapon@ yodels.
+
+@The_weapon@ hums tunelessly.
+
+@The_weapon@ makes a painfully high-pitched squeak.
+
+@The_weapon@ sings a sudden staccato note.
+
+@The_weapon@ sings a catchy @tune_or_melody@.
+
+@The_weapon@ hums a slow waltz.
+
+@The_weapon@ whistles merrily.
+
+#Beethoven
+@The_weapon@ goes "Da-da-da-dum".
+
+@The_weapon@ chants serenely.
+
+@The_weapon@ trills happily.
+
+@The_weapon@ chants a little melody.
+
+@The_weapon@ sings a deeply moving song.
+
+@The_weapon@ hums an eerie @tune_or_melody@.
+
+@The_weapon@ hums a slow and mournful tune.
+
+@The_weapon@ launches into yet another solo.
+
+@The_weapon@ strikes up a merry @tune_or_melody@.
+
+@The_weapon@ emits a series of high-pitched trills.
+
+@The_weapon@ composes a new song.
+
+@The_weapon@ makes a sound as if to clear its throat.
+
+@The_weapon@ sings a quivering drawn-out note.
+
+@The_weapon@ sings a little jingle.
+
+@The_weapon@ strikes up a funeral march.
+
+@The_weapon@ merrily whistles a melody.
+
+In a hysteric voice, @the_weapon@ strikes up a march.
+
+@The_weapon@ sings @several@ chords at once.
+
+@The_weapon@ trains the @kind_of_scales@ scales.
+
+@The_weapon@ pulls out all the stops.
+
+@The_weapon@ sets up a furious crescendo.
+
+@The_weapon@ plays a requiem for the unknown sword.
+
+@The_weapon@ strikes up a @dance@.
+
+@The_weapon@ intonates @an_aria_or_fugue@.
+
+@The_weapon@ @nearly_or_clearly@ @hits_or_misses@ the concert pitch.
+
+#imitates instruments
+@The_weapon@ makes a twanging sound.
+
+@The_weapon@ chimes melodiously.
+
+@The_weapon@ chimes harmoniously.
+
+@The_weapon@ makes beautiful music.
+
+@The_weapon@ produces a loud orchestral chord.
+
+@The_weapon@ tinkles.
+
+@The_weapon@ rings like a bell.
+
+@The_weapon@ imitates a saxophone.
+
+@The_weapon@ chimes like a gong.
+
+@The_weapon@ applauds itself.
+
+@The_weapon@ goes toot-toot!
+
+@The_weapon@ does a drum roll.
+
+@The_weapon@ holds a dissonant chord.
+
+@The_weapon@ beats time.
+
+#speaks
+@The_weapon@ says, "Hi! I'm the Singing Sword!"
+
+@The_weapon@ shouts, "Sing along with me!"
+
+@The_weapon@ shouts, "One, two, three..."
+
+@The_weapon@ spouts musical wisdom.
+
+@The_weapon@ chants, "I am golden and pointed, and with blood well anointed."
+
+@The_weapon@ dictates a lengthy tome entitled 'The Well-Tempered Blade'.
+
+@The_weapon@ @points_out@ the lack of singing @not_swords@.
+
+@The_weapon@ embarks on a lenghty monologue about murderous music.
+
+@The_weapon@ curses its smith: "I was supposed to be the Stinging Sword!"
+
+@The_weapon@ muses how they don't make such fine swords anymore.
+
+@The_weapon@ tries to improvise rhymes, and fails miserably.
+
+@The_weapon@ complains about @double_or_triple@ swords.
+
+@The_weapon@ derides short swords.
+
+@The_weapon@ yells, "Ploughshares to swords!" and giggles.
+
+@The_weapon@ chants, "Rather stab than club, rather slice than rub!"
+
+# end Singing Sword
+%%%%
+# general chatter for noisy weapons,
+# including Singing Sword
+weapon_talks
+
+#speaks
+@Your_weapon@ shouts, "Whoopee!"
+
+@Your_weapon@ argues with itself.
+
+@Your_weapon@ complains about the scenery.
+
+@Your_weapon@ says, "I'm bored."
+
+@Your_weapon@ shouts out instructions!
+
+@Your_weapon@ says, "Ssh! Did you hear that?"
+
+@Your_weapon@ cheers you on.
+
+@Your_weapon@ calls out a warning!
+
+@Your_weapon@ hurls insults at you.
+
+@Your_weapon@ chatters happily.
+
+@Your_weapon@ recites a poem.
+
+@Your_weapon@ prattles on and on.
+
+@Your_weapon@ regales you with its life story.
+
+@Your_weapon@ speaks gibberish.
+
+@Your_weapon@ raves incoherently.
+
+@Your_weapon@ shouts, "Help!"
+
+@Your_weapon@ happily shouts, "Violence is virtue, silence is sin."
+
+@Your_weapon@ says, "They will have to pry me from your cold, dead hands."
+
+@Your_weapon@ longs back for the days in the arena.
+
+#song by the Misfits
+@Your_weapon@ asks plaintively, "Mommy, can I go out and kill tonight?"
+
+@Your_weapon@ cries, "Don't ditch me yet! I promise to be forever silent."
+
+@Your_weapon@ amuses itself with detailed descriptions of past executions.
+
+@Your_weapon@ wails, "I am too young to rust!"
+
+@Your_weapon@ wishes everyone in the dungeon @unpleasant_or_sudden@ @demise_or_death@.
+
+@Your_weapon@ fumes, "Being battered, bent and broken sure is better than this boredom!"
+
+@Your_weapon@ yells, "No battle, no fun!"
+
+@Your_weapon@ shouts, "This level is mine! Um, ours."
+
+@Your_weapon@ cracks jokes of @questionable@ humour.
+
+@Your_weapon@ dwells on sagas on the glory of old.
+
+@Your_weapon@ belts out, "Dying in battle is most honourable!"
+
+@Your_weapon@ gleefully confesses its misdeeds.
+
+@Your_weapon@ groans, "That's what you call fighting?"
+
+@Your_weapon@ shouts, "Left! No, no, right!".
+
+@Your_weapon@ says, "How I wish you were a better fighter."
+
+@Your_weapon@ grouses, "Could you please kill something? I'm itching all over."
+
+@Your_weapon@ shouts, "Make war, not love!"
+
+#makes noises
+@Your_weapon@ growls menacingly.
+
+@Your_weapon@ sputters and hisses.
+
+@Your_weapon@ hollers!
+
+@Your_weapon@ pants and wheezes.
+
+@Your_weapon@ barks abruptly.
+
+@Your_weapon@ sighs.
+
+@Your_weapon@ wails.
+
+@Your_weapon@ howls with laughter!
+
+@Your_weapon@ laughs crazily.
+
+@Your_weapon@ burps!
+
+@Your_weapon@ goes snicker-snack!
+
+@Your_weapon@ lets out a mournful sigh.
+
+@Your_weapon@ yells in some weird language.
+
+@Your_weapon@ makes a horrible noise.
+
+@Your_weapon@ makes a deep moaning sound.
+
+@Your_weapon@ gives off a wolf whistle.
+
+@Your_weapon@ wails.
+
+@Your_weapon@ giggles.
+
+@Your_weapon@ lets out a whoop!
+
+@Your_weapon@ yawns loudly.
+
+@Your_weapon@ intones a prayer.
+
+@Your_weapon@ cries out!
+
+@Your_weapon@ swears loudly.
+
+@Your_weapon@ inquires about your family.
+
+@Your_weapon@ coughs loudly.
+
+@Your_weapon@ burbles away merrily.
+
+@Your_weapon@ gurgles.
+
+@Your_weapon@ suddenly shrieks!
+
+@Your_weapon@ cackles.
+
+@Your_weapon@ warbles.
+
+@Your_weapon@ suddenly bursts into laughter!
+
+@Your_weapon@ snorts.
+
+@Your_weapon@ comments on the weather.
+
+@Your_weapon@ makes a deep, guttural noise.
+
+@Your_weapon@ gives off a sizzling sound.
+
+@Your_weapon@ whistles innocently.
+
+@Your_weapon@ makes a popping sound.
+
+@Your_weapon@ yelps loudly!
+
+@Your_weapon@ lets out a series of bird calls.
+
+# end weapon chatter
+%%%%
+# noises for weapons with NOISES property (not Singing Sword!)
+weapon_noise
+
+#dungeon noises
+a shout.
+
+an angry hiss.
+
+a high-pitched scream!
+
+a roar!
+
+a hideous shriek!
+
+a piteous moan.
+
+a screech!
+
+a bellow!
+
+a loud, deep croak!
+
+an angry buzzing noise.
+
+an irritating high-pitched whine.
+
+a splashing noise.
+
+a sizzling sound.
+
+a loud clanging noise!
+
+a grinding noise.
+
+a mighty clap of thunder!
+
+a hideous screaming!
+
+a bark!
+
+a rumbling sound.
+
+a crunching sound.
+
+a distant "Zot"!
+
+the distant roaring of an enraged frog.
+
+# other noises, usually not found in the dungeon
+a voice call your name.
+
+a very strange noise.
+
+someone snoring.
+
+the sound of rushing water.
+
+someone calling for help!
+
+strange voices.
+
+a knock.
+
+maniacal laughter.
+
+snatches of song.
+
+a twanging sound.
+
+the chiming of a distant gong.
+
+the tinkle of an enormous bell.
+
+an echo.
+
+the wailing of sirens.
+
+a flourish of trumpets!
+
+# end weapon noises
+%%%%
+#synonyms for weapon noises
+several
+
+several
+
+three or four
+
+a multitude of
+%%%%
+kind_of_scales
+
+pentatonic
+
+chromatic
+
+diatonic
+%%%%
+not_swords
+
+clubs
+
+axes
+
+polearms
+%%%%
+points_out
+
+points out
+
+remarks in passing on
+%%%%
+dance
+
+bossanova
+
+waltz
+
+menuet
+%%%%
+an_aria_or_fugue
+
+an aria
+
+a fugue
+%%%%
+nearly_or_clearly
+
+nearly
+
+clearly
+%%%%
+hits_or_misses
+
+hits
+
+misses
+%%%%
+tune_or_melody
+
+tune
+
+melody
+%%%%
+unpleasant_or_sudden
+
+an unpleasant
+
+a sudden
+%%%%
+demise_or_death
+
+demise
+
+death
+%%%%
+questionable
+
+questionable
+
+doubtful
+%%%%
+double_or_triple
+
+double
+
+triple
+%%%% \ No newline at end of file
diff --git a/crawl-ref/source/it_use3.cc b/crawl-ref/source/it_use3.cc
index 96b5bc1f98..79b0ba0cde 100644
--- a/crawl-ref/source/it_use3.cc
+++ b/crawl-ref/source/it_use3.cc
@@ -23,6 +23,7 @@
#include "beam.h"
#include "cloud.h"
+#include "database.h"
#include "decks.h"
#include "direct.h"
#include "effects.h"
@@ -78,118 +79,83 @@ void special_wielded()
if (makes_noise)
{
- // Singing Sword only: singing and other musical noises
- const char* suffixes_sing[] = {
- "hums a little tune.", "breaks into glorious song!",
- "sings.", "sings loudly.", "chimes melodiously.",
- "sings off-key.", "sings 'tra-la-la'.", "sings a lullaby.",
- "chimes harmoniously.", "makes beautiful music.",
- "produces a loud orchestral chord.", "whines plaintively.",
- "tinkles.", "rings like a bell.", "wails mournfully.",
- "practices its scales.", "lilts tunefully.", "yodels.",
- "hums tunelessly.", "makes a painfully high-pitched squeak.",
- "sings a sudden staccato note.", "sings a catchy tune.",
- "says 'Hi! I'm the Singing Sword!'", "hums a slow waltz.",
- "imitates a saxophone.", "shouts 'Sing with me!'",
- "chimes like a gong.", "applauds itself.", "whistles merrily.",
- "goes 'Da-da-da-dum.", "goes toot-toot!", "chants serenely.",
- "trills happily.", "shouts 'One, two, three...'",
- "chants a little melody.", "sings a deeply moving song.",
- "hums an eerie melody.", "hums a slow and mournful tune.",
- "launches into yet another solo.", "strikes up a merry tune.",
- "emits a series of high-pitched trills.", "does a drum roll.",
- "holds a dissonant chord.", "composes a new song.",
- "makes a sound as if to clear its throat.", "beats time.",
- "sings a quivering drawn-out note.", "sings a little jingle.",
- "makes a twanging sound.", "spouts musical wisdom."
- };
-
- // mostly chatter and other human-like sounds
- const char* suffixes_talk[] = {
- "speaks gibberish.", "raves incoherently.", "shouts 'Help!'",
- "growls menacingly.", "sputters and hisses.", "hollers!",
- "pants and wheezes.", "barks abruptly.", "sighs.", "wails.",
- "howls with laughter!", "laughs crazily.", "burps!",
- "goes snicker-snack!", "lets out a mournful sigh.",
- "yells in some weird language.", "makes a horrible noise.",
- "makes a deep moaning sound.", "gives off a wolf whistle.",
- "wails.", "giggles.", "lets out a whoop!", "yawns loudly.",
- "chatters happily.", "recites a poem.", "prattles on and on.",
- "regales you with its life story.", "intones a prayer.",
- "shouts 'Whoopee!'", "hurls insults at you.", "cries out!",
- "argues with itself.", "complains about the scenery.",
- "says 'I'm bored.'", "calls out a warning!", "swears loudly.",
- "inquires about your family.", "coughs loudly.",
- "burbles away merrily.", "gurgles.", "suddenly shrieks!",
- "cackles.", "warbles.", "suddenly bursts into laughter!",
- "shouts out instructions!", "cheers you on.", "snorts.",
- "comments on the weather.", "makes a deep, guttural noise.",
- "gives off a sizzling sound.", "whistles innocently.",
- "makes a popping sound.", "says 'Ssh! Did you hear that?'",
- "yelps loudly!", "lets out a series of bird calls."
- };
-
- // noises in the form "Your hear ...", mostly in-game noises
- const char* suffixes_sounds[] = {
- "a voice call your name.", "a shout.", "an angry hiss.",
- "a very strange noise.", "a high-pitched scream!",
- "a roar!", "someone snoring.", "a hideous shriek!",
- "a piteous moan.", "a screech!", "a bellow!",
- "a loud, deep croak!", "an angry buzzing noise.",
- "an irritating high-pitched whine.", "a splashing noise.",
- "the sound of rushing water.", "a sizzling sound.",
- "someone calling for help!", "strange voices.",
- "a loud clanging noise!", "a grinding noise.", "a knock.",
- "a mighty clap of thunder!", "maniacal laughter.",
- "a hideous screaming!", "snatches of song.", "a bark!",
- "a rumbling sound.", "a twanging sound.", "an echo. Echo.",
- "the chiming of a distant gong.", "a crunching sound.",
- "the tinkle of an enormous bell.", "a distant \"Zot\"!",
- "the distant roaring of an enraged frog.", "an echo.",
- "the wailing of sirens.", "a flourish of trumpets!"
- };
-
- int num_suffixes;
- std::string message;
- msg_channel_type channel = MSGCH_TALK;
-
+ std::string msg;
+
if (you.special_wield == SPWLD_SING)
{
- message = "The Singing Sword ";
- if (!one_chance_in(5)) // sings
+ msg = getSpeakString("Singing Sword");
+ if (msg != "")
{
- num_suffixes = sizeof(suffixes_sing)
- / sizeof(suffixes_sing[0]);
- message += suffixes_sing[random2(num_suffixes)];
+ // "Your Singing Sword" sounds disrespectful
+ // (as if there could be more than one!)
+ msg = replace_all(msg, "@Your_weapon@", "@The_weapon@");
+ msg = replace_all(msg, "@your_weapon@", "@the_weapon@");
}
- else // talks
+ }
+ else // SPWLD_NOISE
+ {
+ msg = getSpeakString("noisy weapon");
+ if (msg != "")
{
- num_suffixes = sizeof(suffixes_talk)
- / sizeof(suffixes_talk[0]);
- message += suffixes_talk[random2(num_suffixes)];
+ msg = replace_all(msg, "@Your_weapon@", "Your @weapon@");
+ msg = replace_all(msg, "@your_weapon@", "your @weapon@");
}
}
- else // SPWLD_NOISE
+
+ // set appropriate channel (will usually be TALK)
+ msg_channel_type channel = MSGCH_TALK;
+
+ // disallow anything with VISUAL in it;
+ if (msg != "" && msg.find("VISUAL") != std::string::npos)
+ msg = "";
+
+ if (msg != "")
{
- if (one_chance_in(3)) // "You hear..." noises
+ std::string param = "";
+ std::string::size_type pos = msg.find(":");
+
+ if (pos != std::string::npos)
+ param = msg.substr(0, pos);
+
+ if (!param.empty())
{
- message = "You hear ";
- num_suffixes = sizeof(suffixes_sounds)
- / sizeof(suffixes_sounds[0]);
- message += suffixes_sounds[random2(num_suffixes)];
- channel = MSGCH_SOUND;
+ bool match = true;
+
+ if (param == "DANGER")
+ channel = MSGCH_DANGER;
+ else if (param == "WARN")
+ channel = MSGCH_WARN;
+ else if (param == "SOUND")
+ channel = MSGCH_SOUND;
+ else if (param == "PLAIN")
+ channel = MSGCH_PLAIN;
+ else if (param == "SPELL" || param == "ENCHANT")
+ msg = ""; // disallow these as well, channel stays TALK
+ else if (param != "TALK")
+ match = false;
+
+ if (match && msg != "")
+ msg = msg.substr(pos + 1);
}
- else // normal chatter
+ }
+
+ if (msg == "") // give default noises
+ {
+ if (you.special_wield == SPWLD_SING)
+ msg = "@The_weapon@ sings.";
+ else
{
- message = "Your ";
- message += you.inv[wpn].name(DESC_BASENAME);
- message += " ";
- num_suffixes = sizeof(suffixes_talk)
- / sizeof(suffixes_talk[0]);
- message += suffixes_talk[random2(num_suffixes)];
+ channel = MSGCH_SOUND;
+ msg = "You hear a strange noise.";
}
}
- mpr(message.c_str(), channel);
+
+ // replace weapon references
+ msg = replace_all(msg, "@The_weapon@", "The @weapon@");
+ msg = replace_all(msg, "@the_weapon@", "the @weapon@");
+ msg = replace_all(msg, "@weapon@", you.inv[wpn].name(DESC_BASENAME));
+
+ mpr(msg.c_str(), channel);
} // makes_noise
break;
diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc
index e1cdbb2bce..ed073cc415 100644
--- a/crawl-ref/source/item_use.cc
+++ b/crawl-ref/source/item_use.cc
@@ -540,7 +540,7 @@ void wield_effects(int item_wield_2, bool showMsgs)
case SPWPN_SINGING_SWORD:
if (!was_known)
- mprf(MSGCH_TALK, "%s says, 'Hi! I'm the Singing Sword!'", old_desc);
+ mprf(MSGCH_TALK, "%s says, \"Hi! I'm the Singing Sword!\"", old_desc);
else
mpr("The Singing Sword hums in delight!", MSGCH_TALK);
break;