diff options
Diffstat (limited to 'crawl-ref/source')
-rw-r--r-- | crawl-ref/source/dat/database/monspeak.txt | 871 | ||||
-rw-r--r-- | crawl-ref/source/mon-util.cc | 120 | ||||
-rw-r--r-- | crawl-ref/source/monspeak.cc | 253 | ||||
-rw-r--r-- | crawl-ref/source/religion.cc | 1 |
4 files changed, 753 insertions, 492 deletions
diff --git a/crawl-ref/source/dat/database/monspeak.txt b/crawl-ref/source/dat/database/monspeak.txt index 7514873ac7..81eeace28f 100644 --- a/crawl-ref/source/dat/database/monspeak.txt +++ b/crawl-ref/source/dat/database/monspeak.txt @@ -143,7 +143,7 @@ SPELL:@The_monster@ intones a terrible prayer. @The_monster@ starts to sing a prayer. -@The_monster@ says, "All sinners must die." +@The_monster@ says @to_foe@, "All sinners must die." %%%% _high_priest_medium_ @@ -152,20 +152,20 @@ VISUAL:@The_monster@ looks excited. VISUAL:@The_monster@ performs a strange gesture. -@The_monster@ shouts, "You are a heretic and must be destroyed!" +@The_monster@ shouts @at_foe@, "You are a heretic and must be destroyed!" -@The_monster@ says, "You will make a fine sacrifice." +@The_monster@ says @to_foe@, "You will make a fine sacrifice." -@The_monster@ shouts, "You must be punished!" +@The_monster@ shouts @at_foe@, "You must be punished!" %%%% _high_priest_rare_ -@The_monster@ says, "Right in the middle of my sermon, too." +@The_monster@ says @to_foe@, "Right in the middle of my sermon, too." -@The_monster@ says "The wages of sin are death, you know." +@The_monster@ says @to_foe@, "The wages of sin are death, you know." # Mother Theresa -@The_monster@ whispers, "Deep inside, it's sometimes so empty." +@The_monster@ whispers @to_foe@, "Deep inside, it's sometimes so empty." ## END _high_priest_ ## %%%% _mercenary_guard_ @@ -186,41 +186,41 @@ VISUAL:@The_monster@ looks very cold. VISUAL:@The_monster@ grins evilly. -@The_monster@ screams, "One false step and I'll kill you." +@The_monster@ screams @at_foe@, "One false step and I'll kill you." -@The_monster@ screams, "I'm going to kill you! Now!" +@The_monster@ screams @at_foe@, "I'm going to kill you! Now!" -@The_monster@ shouts, "You will never get the Orb!" +@The_monster@ shouts, "You will never get the Orb!" @player_only@ -@The_monster@ says, "No trespassing is allowed here." +@The_monster@ says @to_foe@, "No trespassing is allowed here." -@The_monster@ says, "Drop everything you've found here and return home." +@The_monster@ says @to_foe@, "Drop everything you've found here and return home." -@The_monster@ says, "Return every stolen item!" +@The_monster@ says @to_foe@, "Return every stolen item!" -@The_monster@ shouts, "Intruder!" +@The_monster@ shouts @at_foe@, "Intruder!" -@The_monster@ screams, "You must be punished!" +@The_monster@ screams @at_foe@, "You must be punished!" %%%% _mercenary_guard_medium_ -@The_monster@ says, "Now you've reached the end of your journey." +@The_monster@ says @to_foe@, "Now you've reached the end of your journey." -@The_monster@ says, "It's nothing personal." +@The_monster@ says @to_foe@, "It's nothing personal." -@The_monster@ says, "Coming here was your last mistake." +@The_monster@ says @to_foe@, "Coming here was your last mistake." -@The_monster@ says, "The best offense is a good offense." +@The_monster@ says @to_foe@, "The best offense is a good offense." -@The_monster@ shouts, "Return immediately or I'll kill you!" +@The_monster@ shouts @at_foe@, "Return immediately or I'll kill you!" %%%% _mercenary_guard_rare_ -@The_monster@ says, "A dead adventurer is a good adventurer." +@The_monster@ says, "A dead adventurer is a good adventurer." @player_only@ -@The_monster@ shouts, "It's the end of the party!" +@The_monster@ shouts @at_foe@, "It's the end of the party!" -@The_monster@ shouts, "Surrender and die!" +@The_monster@ shouts @at_foe@, "Surrender and die!" ## END _mercenary_guard_ ## %%%% @@ -264,21 +264,21 @@ ENCHANT:@The_monster@ becomes larger for a moment. VISUAL SPELL:@The_monster@'s eyes start to glow. -VISUAL SPELL:@The_monster@ tries to paralyze you with @possessive@ gaze. +VISUAL SPELL:@The_monster@ tries to paralyze @foe@ with @possessive@ gaze. -@The_monster@ shouts, "You can't withstand my power!" +@The_monster@ shouts @at_foe@, "You can't withstand my power!" -@The_monster@ shouts, "You are history!" +@The_monster@ shouts @at_foe@, "You are history!" %%%% _wizard_rare_ -VISUAL SPELL:@The_monster@ throws some strange powder towards you. +VISUAL SPELL:@The_monster@ throws some strange powder towards @foe@. -SPELL:@The_monster@ says, "Argatax netranoch dertex." +SPELL:@The_monster@ says @to_foe@, "Argatax netranoch dertex." -SPELL:@The_monster@ says, "Dogrw nutew berg." +SPELL:@The_monster@ says @to_foe@, "Dogrw nutew berg." -SPELL:@The_monster@ shouts, "Entram moth deg ulag!" +SPELL:@The_monster@ shouts @at_foe@, "Entram moth deg ulag!" ## END _wizard_ ## %%%% @@ -293,29 +293,29 @@ _hostile_adventurer_common_ VISUAL:@The_monster@ frowns. -@The_monster@ screams, "I was here first!" +@The_monster@ screams, "I was here first!" @player_only@ -@The_monster@ screams, "The Orb is mine!" +@The_monster@ screams, "The Orb is mine!" @player_only@ -@The_monster@ screams, "Go away or die!" +@The_monster@ screams @at_foe@, "Go away or die!" -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" %%%% _hostile_adventurer_rare_ VISUAL:@The_monster@ looks very upset. -@The_monster@ screams, "Return home!" +@The_monster@ screams @at_foe@, "Return home!" -@The_monster@ screams, "Give me all your treasure!" +@The_monster@ screams @at_foe@, "Give me all your treasure!" -@The_monster@ screams, "You will never get the Orb!" +@The_monster@ screams, "You will never get the Orb!" @player_only@ -@The_monster@ screams, "First you have to pass me!" +@The_monster@ screams @at_foe@, "First you have to pass me!" -@The_monster@ screams, "I hate you!" +@The_monster@ screams @at_foe@, "I hate you!" -@The_monster@ laughs, "I am free! Free to kill you!" +@The_monster@ laughs @at_foe@, "I am free! Free to kill you!" ## END _hostile_adventurer_ ## %%%% _friendly_imp_ @@ -373,12 +373,12 @@ VISUAL:@The_monster@ lashes @possessive@ tail. VISUAL:@The_monster@ grinds @possessive@ teeth. -VISUAL:@The_monster@ breathes @smoke_or_steam@ at you. +VISUAL:@The_monster@ breathes @smoke_or_steam@ at @foe@. %%%% _hostile_imp_rare_ -VISUAL:@The_monster@ spits at you. +VISUAL:@The_monster@ spits at @foe@. VISUAL:@The_monster@ picks up a beetle and eats it. @@ -392,11 +392,11 @@ VISUAL:@The_monster@ summons a swarm of flies. %%%% _demon_taunt_ -@The_monster@ @says@, "@demon_taunt@" +@The_monster@ @says@ @to_foe@, "@demon_taunt@" %%%% _imp_taunt_ -@The_monster@ @says@, "@imp_taunt@" +@The_monster@ @says@ @to_foe@, "@imp_taunt@" ########################################## # Messages by monster body shape ########################################## @@ -606,9 +606,9 @@ _confused_humanoid_rare_ VISUAL:@The_monster@ shakes. -@The_monster@ asks, "Who are you?" +@The_monster@ asks @foe,@ "Who are you?" -@The_monster@ asks, "What the hell are we doing here? Hmm, I see..." +@The_monster@ asks @foe,@ "What the hell are we doing here? Hmm, I see..." @The_monster@ cries, "My head! MY HEAD!!!" @@ -670,25 +670,25 @@ VISUAL:@The_monster@ @almost@ stumbles in trying to escape. @The_monster@ @moans@, "Oh dear! Oh dear!" -@The_monster@ @begs@, "Please don't kill me!" +@The_monster@ @begs@ @to_foe@, "Please don't kill me!" @The_monster@ begs for mercy. -@The_monster@ cries, "Mercy!" +@The_monster@ cries @to_foe@, "Mercy!" VISUAL:@The_monster@ tries to recover @possessive@ lost courage. %%%% _fleeing_humanoid_rare_ -@The_monster@ @begs@, "Why can't we all just get along?" +@The_monster@ @begs@ @to_foe@, "Why can't we all just get along?" @The_monster@ @mutters@, "Damn and blast!" -@The_monster@ shouts, "No! I'll never do that again!" +@The_monster@ shouts @at_foe@, "No! I'll never do that again!" @The_monster@ @blubbers@, "@Mommeee@!" -@The_monster@ @begs@, "Please! I have a lot of children..." +@The_monster@ @begs@ @to_foe@, "Please! I have a lot of children..." VISUAL:@The_monster@ looks really @rattled@. ## END fleeing humanoid ## @@ -729,7 +729,7 @@ _friendly_humanoid_common_ @The_monster@ yells, "Run! I'll cover you!" -@The_monster@ shouts, "Die, monster!" +@The_monster@ shouts @at_foe@, "Die, monster!" VISUAL:@The_monster@ looks at you. @@ -941,10 +941,10 @@ w:15 VISUAL SPELL:@The_monster@ stares at you. VISUAL WARN:You feel cold. -VISUAL:@The_monster@ points at you threateningly. +VISUAL:@The_monster@ points at @foe@ threateningly. w:5 -VISUAL:@The_monster@ stares at you while slowly dragging a finger across @possessive@ throat. +VISUAL:@The_monster@ stares at @foe@ while slowly dragging a finger across @possessive@ throat. ## END silenced player ghost ## %%%% player ghost @@ -959,7 +959,7 @@ w:2 %%%% _player_ghost_common_ -SPELL:@The_monster@ stares at you. +SPELL:@The_monster@ stares at @foe@. WARN:You feel cold. @The_monster@ lets out a mournful wail. @@ -972,9 +972,9 @@ WARN:You feel cold. @The_monster@ says very slowly, "There's no hope." -@The_monster@ @wails@, "You will never get the ORB!" +@The_monster@ @wails@, "You will never get the ORB!" @player_only@ -@The_monster@ whispers, "The ORB doesn't exist." +@The_monster@ whispers, "The ORB doesn't exist." @player_only@ @The_monster@ @wails@, "They lied to you. The Dungeon just goes down and down forever." @@ -983,7 +983,7 @@ WARN:You feel cold. @The_monster@ @wails@, "You must not succeed where I failed!" # Sid Vicious II -@The_monster@ whispers, "There is no future for you." +@The_monster@ whispers @to_foe@, "There is no future for you." %%%% _player_ghost_medium_ @@ -1001,11 +1001,11 @@ VISUAL:@The_monster@ grins evilly. @The_monster@ @wails@, "Do you think the gods will protect you?" -@The_monster@ screams, "I'll kill anyone who wants the ORB!" +@The_monster@ screams, "I'll kill anyone who wants the ORB!" @player_only@ -@The_monster@ screams, "Don't try to defend! You have no chance!" +@The_monster@ screams @at_foe@, "Don't try to defend! You have no chance!" -@The_monster@ screams, "Zot is a myth, the ORB is a fable, you'll soon be a tale!" +@The_monster@ screams, "Zot is a myth, the ORB is a fable, you'll soon be a tale!" @player_only@ @The_monster@ whispers, "Death is liberation." @@ -1054,27 +1054,27 @@ _Agnes_common_ VISUAL:@The_monster@ grins evilly. -@The_monster@ says, "I need a new robe. I'll buy it with your money." +@The_monster@ says @to_foe@, "I need a new robe. I'll buy it with your money." -@The_monster@ says, "How can you wear that ugly dress?" +@The_monster@ says @to_foe@, "How can you wear that ugly dress?" -@The_monster@ screams, "Give me all your money!" +@The_monster@ screams @at_foe@, "Give me all your money!" -@The_monster@ screams, "All treasure is mine! Mine!" +@The_monster@ screams @at_foe@, "All treasure is mine! Mine!" -@The_monster@ screams, "Die, beast!" +@The_monster@ screams @at_foe@, "Die, beast!" %%%% _Agnes_rare_ -@The_monster@ screams, "You'll never get my money!" +@The_monster@ screams @at_foe@, "You'll never get my money!" -@The_monster@ screams, "Give me everything and get away!" +@The_monster@ screams @at_foe@, "Give me everything and get away!" -@The_monster@ screams, "If you give me all your money I'll let you live. Maybe." +@The_monster@ screams @at_foe@, "If you give me all your money I'll let you live. Maybe." -@The_monster@ screams, "I want your rings! And amulets! And... EVERYTHING!" +@The_monster@ screams @at_foe@, "I want your rings! And amulets! And... EVERYTHING!" -@The_monster@ screams, "I hate dirty adventurers like you!" +@The_monster@ screams, "I hate dirty adventurers like you!" @player_only@ ## END Agnes ## %%%% @@ -1098,17 +1098,17 @@ _Azrael_common_ @The_monster@ howls in rage. -@The_monster@ screams, "No! No! YES! No!" +@The_monster@ screams @at_foe@, "No! No! YES! No!" -@The_monster@ screams, "Burn! Burn! All of it must BURN!" +@The_monster@ screams @at_foe@, "Burn! Burn! All of it must BURN!" VISUAL:@The_monster@ blows smoke rings. %%%% _Azrael_rare_ -@The_monster@ grins and asks, "Are you @adj_flammable@?" +@The_monster@ grins and asks @foe,@ "Are you @adj_flammable@?" -@The_monster@ says, "We're having tasty @player_genus@ kabobs tonight!" +@The_monster@ says @to_foe@, "We're having tasty @foe_genus@ kabobs tonight!" VISUAL:@The_monster@ whirls about in circles. ## END Azrael ## @@ -1137,36 +1137,36 @@ VISUAL:@The_monster@ frowns. VISUAL:@The_monster@ looks angry. -@The_monster@ screams, "I don't like you!" +@The_monster@ screams @at_foe@, "I don't like you!" -@The_monster@ screams, "I'm going to kill you!" +@The_monster@ screams @at_foe@, "I'm going to kill you!" -@The_monster@ screams, "I'm much stronger than you!" +@The_monster@ screams @at_foe@, "I'm much stronger than you!" -@The_monster@ screams, "I'll eat your brain! And then I'll vomit it back up!" +@The_monster@ screams @at_foe@, "I'll eat your brain! And then I'll vomit it back up!" -@The_monster@ screams, "You are the ugliest creature I've ever seen!" +@The_monster@ screams @at_foe@, "You are the ugliest creature I've ever seen!" -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "I'll cover the dungeon with your blood!" +@The_monster@ screams @at_foe@, "I'll cover the dungeon with your blood!" %%%% _Blork_rare_ -@The_monster@ screams, "I'll cut your head off!" +@The_monster@ screams @at_foe@, "I'll cut your head off!" -@The_monster@ screams, "I'll break your legs!" +@The_monster@ screams @at_foe@, "I'll break your legs!" -@The_monster@ screams, "I'll break your arms!" +@The_monster@ screams @at_foe@, "I'll break your arms!" -@The_monster@ screams, "I'll crush all your ribs! One by one!" +@The_monster@ screams @at_foe@, "I'll crush all your ribs! One by one!" -@The_monster@ screams, "I'll make a cloak from your skin!" +@The_monster@ screams @at_foe@, "I'll make a cloak from your skin!" -@The_monster@ screams, "I'll decorate my home with your organs!" +@The_monster@ screams @at_foe@, "I'll decorate my home with your organs!" -@The_monster@ screams, "I'll drink your blood! Soon!" +@The_monster@ screams @at_foe@, "I'll drink your blood! Soon!" ## END Blork the orc ## %%%% # An ancient lich @@ -1215,35 +1215,35 @@ _Boris_medium_ @The_monster@ laughs. -@The_monster@ says, "You can't imagine my power." +@The_monster@ says @to_foe@, "You can't imagine my power." -@The_monster@ says, "Orb? You want the Orb? You'll never get it." +@The_monster@ says, "Orb? You want the Orb? You'll never get it." @player_only@ -@The_monster@ says, "My power is unlimited." +@The_monster@ says @to_foe@, "My power is unlimited." -@The_monster@ says, "You can't kill me. I'm immortal." +@The_monster@ says @to_foe@, "You can't kill me. I'm immortal." -@The_monster@ says, "I know the secret of eternal life. Do you?" +@The_monster@ says @to_foe@, "I know the secret of eternal life. Do you?" -@The_monster@ says, "I know your future. Your future is death." +@The_monster@ says @to_foe@, "I know your future. Your future is death." -@The_monster@ says, "Who wants to live forever? Me." +@The_monster@ says @to_foe@, "Who wants to live forever? Me." -@The_monster@ says, "There's only one solution for you. To die." +@The_monster@ says @to_foe@, "There's only one solution for you. To die." -@The_monster@ says, "You can never win." +@The_monster@ says @to_foe@, "You can never win." %%%% _Boris_rare_ -@The_monster@ says, "I didn't invite you." +@The_monster@ says @to_foe@, "I didn't invite you." -@The_monster@ says, "The world, the flesh, and the devil." +@The_monster@ says @to_foe@, "The world, the flesh, and the devil." @The_monster@ says "Magic. You know nothing about it." -@The_monster@ says, "I'll be back." +@The_monster@ says @to_foe@, "I'll be back." -@The_monster@ says, "Join the legion of my servants." +@The_monster@ says @to_foe@, "Join the legion of my servants." %%%% Boris return_speech @@ -1254,23 +1254,23 @@ w:5 %%%% _Boris_return_common_ -@The_monster@ says, "You haven't seen the last of me!" +@The_monster@ says @to_foe@, "You haven't seen the last of me!" -@The_monster@ says, "I'll get you next time!" +@The_monster@ says @to_foe@, "I'll get you next time!" -@The_monster@ says, "This isn't over yet!" +@The_monster@ says @to_foe@, "This isn't over yet!" -@The_monster@ says, "I'll be back!" +@The_monster@ says @to_foe@, "I'll be back!" -@The_monster@ says, "This isn't the end, it's only just beginning!" +@The_monster@ says @to_foe@, "This isn't the end, it's only just beginning!" %%%% _Boris_return_rare_ -@The_monster@ says, "Kill me? I think not!" +@The_monster@ says @to_foe@, "Kill me? I think not!" -@The_monster@ says, "You cannot defeat me so easily!" +@The_monster@ says @to_foe@, "You cannot defeat me so easily!" -@The_monster@ says, "We will meet again!" +@The_monster@ says @to_foe@, "We will meet again!" ## END Boris ## %%%% # An adventurer hating competition @@ -1301,27 +1301,27 @@ VISUAL:@The_monster@ looks angry. @The_monster@ laughs wildly. -@The_monster@ says, "I'm so much better than you." +@The_monster@ says @to_foe@, "I'm so much better than you." -@The_monster@ says, "I love to fight, but killing is better." +@The_monster@ says @to_foe@, "I love to fight, but killing is better." -@The_monster@ says, "Fast and perfect. Such is my way of killing." +@The_monster@ says @to_foe@, "Fast and perfect. Such is my way of killing." -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "Do you want it fast or slow?!" +@The_monster@ screams @at_foe@, "Do you want it fast or slow?!" %%%% _Erica_rare_ VISUAL:@The_monster@ drinks a potion. -@The_monster@ screams, "Hurry, death awaits!" +@The_monster@ screams @at_foe@, "Hurry, death awaits!" -@The_monster@ screams, "I'll never tell where it is!" +@The_monster@ screams @at_foe@, "I'll never tell where it is!" -@The_monster@ screams, "You'll never get it!" +@The_monster@ screams @at_foe@, "You'll never get it!" -@The_monster@ screams, "Coming here was suicide! For you!" +@The_monster@ screams @at_foe@, "Coming here was suicide! For you!" ## END Erica ## %%%% # An ugly ogre @@ -1340,25 +1340,25 @@ _Erolcha_common_ VISUAL:@The_monster@ tries to grin evilly. -@The_monster@ screams, "DIE!" +@The_monster@ screams @at_foe@, "DIE!" -@The_monster@ screams, "Lunch!" +@The_monster@ screams @at_foe@, "Lunch!" -@The_monster@ screams, "Erolcha kill you!" +@The_monster@ screams @at_foe@, "Erolcha kill you!" %%%% _Erolcha_rare_ -@The_monster@ screams, "Eat!" +@The_monster@ screams @at_foe@, "Eat!" -@The_monster@ screams, "Stand! Erolcha hit you!" +@The_monster@ screams @at_foe@, "Stand! Erolcha hit you!" -@The_monster@ screams, "Blood!" +@The_monster@ screams @at_foe@, "Blood!" -@The_monster@ screams, "Erolcha crush your head!" +@The_monster@ screams @at_foe@, "Erolcha crush your head!" -@The_monster@ screams, "Erolcha happy to kill you!" +@The_monster@ screams @at_foe@, "Erolcha happy to kill you!" -@The_monster@ screams, "Erolcha angry!" +@The_monster@ screams @at_foe@, "Erolcha angry!" ## END Erolcha ## %%%% # apprentice summoner, has funny ideas about honour @@ -1371,17 +1371,17 @@ w:5 %%%% _Eustachio_common_ -@The_monster@ screams, "At last I'll have my revenge!" +@The_monster@ screams @at_foe@, "At last I'll have my revenge!" -@The_monster@ screams, "Hey, you killed my favorite bat!" +@The_monster@ screams @at_foe@, "Hey, you killed my favorite bat!" -@The_monster@ says, "Summoning is fun!" +@The_monster@ says @to_foe@, "Summoning is fun!" -@The_monster@ says, "My allies will avenge me." +@The_monster@ says @to_foe@, "My allies will avenge me." %%%% _Eustachio_rare_ -@The_monster@ yells, "Perjured traitor, DIE!" +@The_monster@ yells @at_foe@, "Perjured traitor, DIE!" VISUAL:@The_monster@ twirls his moustache. @@ -1415,35 +1415,35 @@ VISUAL:@The_monster@ ponders the situation. VISUAL:@The_monster@ looks for a scalpel. -VISUAL:@The_monster@ throws something at you. +VISUAL:@The_monster@ throws something at @foe@. -@The_monster@ says, "You've got nice eyes. I could use them." +@The_monster@ says @to_foe@, "You've got nice eyes. I could use them." -@The_monster@ says, "I only need a few of your organs!" +@The_monster@ says @to_foe@, "I only need a few of your organs!" -@The_monster@ says, "This won't hurt a bit." +@The_monster@ says @to_foe@, "This won't hurt a bit." -@The_monster@ says, "I have something special for you." +@The_monster@ says @to_foe@, "I have something special for you." -@The_monster@ says, "Don't worry, I'll take only what I need." +@The_monster@ says @to_foe@, "Don't worry, I'll take only what I need." %%%% _Francis_rare_ -@The_monster@ says, "Relax, I know what I'm doing!" +@The_monster@ says @to_foe@, "Relax, I know what I'm doing!" -@The_monster@ asks, "Did you know that corpses are an important natural resource?" +@The_monster@ asks @foe,@ "Did you know that corpses are an important natural resource?" -@The_monster@ asks, "How about a little dissection?" +@The_monster@ asks @foe,@ "How about a little dissection?" -@The_monster@ says, "Excuse me, but I need your head." +@The_monster@ says @to_foe@, "Excuse me, but I need your head." -@The_monster@ says, "I want you in my laboratory!" +@The_monster@ says @to_foe@, "I want you in my laboratory!" -@The_monster@ says, "What about your heart? Do you need it?" +@The_monster@ says @to_foe@, "What about your heart? Do you need it?" -@The_monster@ screams, "Don't move! I want to cut off your ear!" +@The_monster@ screams @at_foe@, "Don't move! I want to cut off your ear!" -@The_monster@ says, "Say, could I borrow your tongue for a while?" +@The_monster@ says @to_foe@, "Say, could I borrow your tongue for a while?" ## END Francis ## %%%% @@ -1469,31 +1469,31 @@ _Ijyb_common_ VISUAL:@The_monster@ grins evilly. -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "Me kill you!" +@The_monster@ screams @at_foe@, "Me kill you!" -@The_monster@ screams, "Me stronger than you!" +@The_monster@ screams @at_foe@, "Me stronger than you!" -@The_monster@ screams, "It's all mine!" +@The_monster@ screams @at_foe@, "It's all mine!" -@The_monster@ screams, "Get away!" +@The_monster@ screams @at_foe@, "Get away!" -@The_monster@ screams, "Level is mine! All mine!" +@The_monster@ screams @at_foe@, "Level is mine! All mine!" -@The_monster@ screams, "You nasty! Big nasty!" +@The_monster@ screams @at_foe@, "You nasty! Big nasty!" %%%% _Ijyb_rare_ -@The_monster@ screams, "I cut your head off!" +@The_monster@ screams @at_foe@, "I cut your head off!" -@The_monster@ screams, "I dance on your bones!" +@The_monster@ screams @at_foe@, "I dance on your bones!" -@The_monster@ screams, "Me very upset!" +@The_monster@ screams @at_foe@, "Me very upset!" -@The_monster@ screams, "No! No, no, no, no!" +@The_monster@ screams @at_foe@, "No! No, no, no, no!" -@The_monster@ screams, "I no like you!" +@The_monster@ screams @at_foe@, "I no like you!" ## END Ijyb ## %%%% # A middle aged man, hired to kill you. He is in a hurry. @@ -1508,35 +1508,35 @@ _Harold_common_ VISUAL:@The_monster@ looks nervous. -@The_monster@ says, "Stand still. I'm trying to kill you." +@The_monster@ says @to_foe@, "Stand still. I'm trying to kill you." -@The_monster@ screams, "Hurry up!" +@The_monster@ screams @at_foe@, "Hurry up!" -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "DIE! Now!" +@The_monster@ screams @at_foe@, "DIE! Now!" -@The_monster@ says, "Only a few hits and it's over." +@The_monster@ says @to_foe@, "Only a few hits and it's over." @The_monster@ sighs, "I don't have time for this!" -@The_monster@ screams, "Could you die a little faster?!" +@The_monster@ screams @at_foe@, "Could you die a little faster?!" -@The_monster@ shouts, "Come on! I've got more names on my list!" +@The_monster@ shouts @at_foe@, "Come on! I've got more names on my list!" %%%% _Harold_rare_ -@The_monster@ says, "You know, I'm in a hurry." +@The_monster@ says @to_foe@, "You know, I'm in a hurry." -@The_monster@ says, "I hope you die faster." +@The_monster@ says @to_foe@, "I hope you die faster." -@The_monster@ screams, "I'll finish you soon!" +@The_monster@ screams @at_foe@, "I'll finish you soon!" -@The_monster@ screams, "Don't delay it!" +@The_monster@ screams @at_foe@, "Don't delay it!" -@The_monster@ nervously moans, "This is taking ages..." +@The_monster@ nervously moans @at_foe@, "This is taking ages..." -@The_monster@ says, "Mine is not to reason why. Mine's to do, yours to die." +@The_monster@ says @to_foe@, "Mine is not to reason why. Mine's to do, yours to die." ## END Harold ## %%%% # a pretty merfolk witch @@ -1549,9 +1549,9 @@ w:5 %%%% _Ilsuiw_common_ -@The_monster@ asks, "Won't you come swim with me?" +@The_monster@ asks @foe,@ "Won't you come swim with me?" -@The_monster@ whispers, "Come on in, the water's fine." +@The_monster@ whispers @to_foe@, "Come on in, the water's fine." @The_monster@ sings a @strange_or_haunting@ @chanty@. @@ -1563,9 +1563,9 @@ VISUAL:@The_monster@ gazes at you @hypnot_or_seductively@. @The_monster@ sings, "To sleep, to sleep ... mayhap to drown." -@The_monster@ says, "It's lovely beneath the waves -- you'll see!" +@The_monster@ says @to_foe@, "It's lovely beneath the waves -- you'll see!" -@The_monster@ asks, "Do you dare to walk upon the beach?" +@The_monster@ asks @foe,@ "Do you dare to walk upon the beach?" %%%% hypnot_or_seductively @@ -1600,7 +1600,7 @@ VISUAL:@The_monster@ grins evilly. VISUAL:@The_monster@ looks very angry. -@The_monster@ shouts, "You're disturbing me! I'll have to kill you!" +@The_monster@ shouts @at_foe@, "You're disturbing me! I'll have to kill you!" SPELL:@The_monster@ gestures wildly. @@ -1608,17 +1608,17 @@ SPELL:@The_monster@ mumbles something strange. %%%% _Jessica_rare_ -@The_monster@ says, "Why did you come here?" +@The_monster@ says @to_foe@, "Why did you come here?" -@The_monster@ says, "I'm really upset." +@The_monster@ says @to_foe@, "I'm really upset." -@The_monster@ very coldly says, "I hate your company." +@The_monster@ very coldly says @to_foe@, "I hate your company." -@The_monster@ shouts, "I don't like beings like you!" +@The_monster@ shouts @at_foe@, "I don't like beings like you!" -@The_monster@ shouts, "Stop bothering me, or I'll kill you!" +@The_monster@ shouts @at_foe@, "Stop bothering me, or I'll kill you!" -@The_monster@ shouts, "You are a ghastly nuisance!" +@The_monster@ shouts @at_foe@, "You are a ghastly nuisance!" ## END Jessica ## %%%% @@ -1638,27 +1638,27 @@ VISUAL:@The_monster@ smiles happily. VISUAL:@The_monster@ tries to grin evilly. -@The_monster@ says, "I'm happy to see you. And I'll be happy to kill you." +@The_monster@ says @to_foe@, "I'm happy to see you. And I'll be happy to kill you." -@The_monster@ says, "I've waited for this moment for such a long time." +@The_monster@ says @to_foe@, "I've waited for this moment for such a long time." -@The_monster@ says, "It's nothing personal, but I have to kill you." +@The_monster@ says @to_foe@, "It's nothing personal, but I have to kill you." -@The_monster@ says, "You will never get the Orb, sorry." +@The_monster@ says, "You will never get the Orb, sorry." @player_only@ -@The_monster@ shouts, "I love to fight! I love killing!" +@The_monster@ shouts @at_foe@, "I love to fight! I love killing!" -@The_monster@ says, "I'm here to kill trespassers. I like my job." +@The_monster@ says @to_foe@, "I'm here to kill trespassers. I like my job." -@The_monster@ says, "You must be punished! Or... I want to punish you!" +@The_monster@ says @to_foe@, "You must be punished! Or... I want to punish you!" %%%% _Joseph_rare_ -@The_monster@ shouts, "At last, some action!" +@The_monster@ shouts @at_foe@, "At last, some action!" -@The_monster@ sighs, "Being a guard is usually so boring..." +@The_monster@ sighs @at_foe@, "Being a guard is usually so boring..." -@The_monster@ shouts, "Wow!" +@The_monster@ shouts @at_foe@, "Wow!" ## END Joseph ## %%%% # An ugly old witch looking for someone to kill @@ -1672,15 +1672,15 @@ VISUAL:@The_monster@ grinds her teeth. @The_monster@ laughs insanely. -@The_monster@ says, "I'll make a rug of your skin." +@The_monster@ says @to_foe@, "I'll make a rug of your skin." -@The_monster@ says, "How about some decapitation?" +@The_monster@ says @to_foe@, "How about some decapitation?" -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "I have something special for you." +@The_monster@ screams @at_foe@, "I have something special for you." -@The_monster@ screams, "I'll use your head as a decoration in my hut!" +@The_monster@ screams @at_foe@, "I'll use your head as a decoration in my hut!" ## END Josephine ## %%%% # A bounty hunter @@ -1695,35 +1695,35 @@ _Jozef_common_ VISUAL:@The_monster@ looks satisfied. -@The_monster@ asks, "You are @player_name@, aren't you?" +@The_monster@ asks @foe,@ "You are @foe_name@, aren't you?" -@The_monster@ says, "You don't look worth it for that money." +@The_monster@ says @to_foe@, "You don't look worth it for that money." -@The_monster@ says, "Really sorry, but I've got to feed my family." +@The_monster@ says @to_foe@, "Really sorry, but I've got to feed my family." -@The_monster@ says, "It's nothing personal. I'm paid for it!" +@The_monster@ says @to_foe@, "It's nothing personal. I'm paid for it!" -@The_monster@ shouts, "I'll get 500 gold for your head!" +@The_monster@ shouts @at_foe@, "I'll get 500 gold for your head!" -@The_monster@ shouts, "Your time has come!" +@The_monster@ shouts @at_foe@, "Your time has come!" -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "At last I found you!" +@The_monster@ screams @at_foe@, "At last I found you!" %%%% _Jozef_rare_ -@The_monster@ says, "I suppose that you are @player_name@. Sorry if I'm wrong." +@The_monster@ says @to_foe@, "I suppose that you are @foe_name@. Sorry if I'm wrong." -@The_monster@ asks, "Did you write a testament? You should." +@The_monster@ asks @foe,@ "Did you write a testament? You should." -@The_monster@ says, "One dead @player_name@, 500 gold pieces. It's in my contract." +@The_monster@ says @to_foe@, "One dead @foe_name@, 500 gold pieces. It's in my contract." -@The_monster@ says, "My job is sometimes very exciting. Sometimes..." +@The_monster@ says @to_foe@, "My job is sometimes very exciting. Sometimes..." -@The_monster@ says, "I think I deserve my money." +@The_monster@ says @to_foe@, "I think I deserve my money." -@The_monster@ screams, "Die! I've got more contracts today." +@The_monster@ screams @at_foe@, "Die! I've got more contracts today." ## END Jozef ## %%%% # A powerful sorceress, guarding the ORB @@ -1765,7 +1765,7 @@ VISUAL SPELL:@The_monster@ gestures. SPELL:@The_monster@ casts a spell. @_Margery_spell_results_@ -VISUAL SPELL:@The_monster@'s eyes start to glow with a @spell_colour_ light. +VISUAL SPELL:@The_monster@'s eyes start to glow with a @spell_colour@ light. VISUAL SPELL:@The_monster@ gestures. VISUAL WARN:You feel @bad_effect@. @@ -1774,33 +1774,33 @@ w:5 VISUAL SPELL:@The_monster@ throws some purple powder towards you. VISUAL WARN:You feel @bad_effect@. -@The_monster@ says, "Die!" +@The_monster@ says @to_foe@, "Die!" -@The_monster@ screams, "You must be punished!" +@The_monster@ screams @at_foe@, "You must be punished!" -@The_monster@ screams, "You can't withstand my power!" +@The_monster@ screams @at_foe@, "You can't withstand my power!" -@The_monster@ screams, "All trespassers must die!" +@The_monster@ screams @at_foe@, "All trespassers must die!" %%%% _Margery_rare_ -SPELL:@The_monster@ screams, "Ergichanteg reztahaw!" +SPELL:@The_monster@ screams @at_foe@, "Ergichanteg reztahaw!" WARN:You feel really bad. VISUAL:@The_monster@ looks very self-confident. -@The_monster@ says, "You are dead." +@The_monster@ says @to_foe@, "You are dead." -@The_monster@ screams, "You'll have to get past me!" +@The_monster@ screams @at_foe@, "You'll have to get past me!" -@The_monster@ screams, "You are doomed!" +@The_monster@ screams @at_foe@, "You are doomed!" -@The_monster@ screams, "Nothing can help you." +@The_monster@ screams @at_foe@, "Nothing can help you." -@The_monster@ screams, "Death is my middle name!" +@The_monster@ screams @at_foe@, "Death is my middle name!" -@The_monster@ screams, "The ORB is only a tale, but I will kill you anyway!" +@The_monster@ screams, "The ORB is only a tale, but I will kill you anyway!" @player_only@ ## END Margery %%%% # A mercenary guarding the dungeon @@ -1822,27 +1822,27 @@ VISUAL:@The_monster@ frowns. VISUAL:@The_monster@ looks upset. -@The_monster@ screams, "'Entarex' is mine!" +@The_monster@ screams @at_foe@, "'Entarex' is mine!" -@The_monster@ screams, "You can't face my power!" +@The_monster@ screams @at_foe@, "You can't face my power!" -@The_monster@ screams, "Give me that sword! Immediately!" +@The_monster@ screams @at_foe@, "Give me that sword! Immediately!" -@The_monster@ screams, "Your life or 'Entarex'! You must choose!" +@The_monster@ screams @at_foe@, "Your life or 'Entarex'! You must choose!" -@The_monster@ screams, "I want it!" +@The_monster@ screams @at_foe@, "I want it!" -@The_monster@ screams, "Die, you thief!" +@The_monster@ screams @at_foe@, "Die, you thief!" %%%% _Maud_rare_ -@The_monster@ screams, "Submit or die!" +@The_monster@ screams @at_foe@, "Submit or die!" -@The_monster@ screams, "Give me 'Entarex'!" +@The_monster@ screams @at_foe@, "Give me 'Entarex'!" -@The_monster@ screams, "If you give me 'Entarex', I'll let you live!" +@The_monster@ screams @at_foe@, "If you give me 'Entarex', I'll let you live!" -@The_monster@ asks, "Will you think of me as you die?" +@The_monster@ asks @foe,@ "Will you think of me as you die?" ## END Maud ## %%%% @@ -1860,7 +1860,7 @@ SPELL:@The_monster@ mumbles some strange words. SPELL:@The_monster@ gestures wildly. -VISUAL SPELL:@The_monster@ points at you. +VISUAL SPELL:@The_monster@ points at @foe@. VISUAL:__YOU_RESIST VISUAL:@The_monster@ looks very angry. @@ -1869,17 +1869,17 @@ VISUAL:@The_monster@ frowns. VISUAL:@The_monster@ looks angry. -@The_monster@ screams, "Get away! Or better yet, die!" -%%% +@The_monster@ screams @at_foe@, "Get away! Or better yet, die!" +%%%% _Michael_rare_ VISUAL:@The_monster@ drinks a potion. VISUAL:@The_monster@ shakes with wrath. -@The_monster@ says, "You really are a nuisance." +@The_monster@ says @to_foe@, "You really are a nuisance." -@The_monster@ screams, "I want to be alone!" +@The_monster@ screams @at_foe@, "I want to be alone!" %%%% # A disembodied skull. @@ -1904,21 +1904,21 @@ VISUAL:@The_monster@ grins evilly. @The_monster@'s teeth chatter loudly. -@The_monster@ cackles, "I will rule the world!" +@The_monster@ cackles @at_foe@, "I will rule the world!" %%%% _Murray_rare_ -@The_monster@ says, "You're the second biggest fool I've ever met!" +@The_monster@ says @to_foe@, "You're the second biggest fool I've ever met!" -@The_monster@ screams, "If I had legs, you would be dead twenty times over!" +@The_monster@ screams @at_foe@, "If I had legs, you would be dead twenty times over!" -@The_monster@ shouts, "Give me your head, so I can impale it on a pike!" +@The_monster@ shouts @at_foe@, "Give me your head, so I can impale it on a pike!" -@The_monster@ shouts, "Let the forces of evil and voodoo overcome you!" +@The_monster@ shouts @at_foe@, "Let the forces of evil and voodoo overcome you!" -@The_monster@ yells, "I'm a mighty demonic power!" +@The_monster@ yells @at_foe@, "I'm a mighty demonic power!" -@The_monster@ yells, "My visage is famous all over the dungeon!" +@The_monster@ yells @at_foe@, "My visage is famous all over the dungeon!" ## END Murray ## %%%% silenced Murray @@ -1949,15 +1949,15 @@ VISUAL:@The_monster@ grimaces horribly. @The_monster@ mutters something to herself. -@The_monster@ asks, "There's a tasty morsel, hm?" +@The_monster@ asks @foe,@ "There's a tasty morsel, hm?" %%%% _Nergalle_rare_ -@The_monster@ yells, "What are YOU looking at?" +@The_monster@ yells @at_foe@, "What are YOU looking at?" -@The_monster@ shouts, "Kill, kill, my pretties!" +@The_monster@ shouts @at_foe@, "Kill, kill, my pretties!" -@The_monster@ says, "THAT's why. How awful. You!" +@The_monster@ says @to_foe@, "THAT's why. How awful. You!" @The_monster@ blows @possessive@ nose. ## END Nergalle ## @@ -1974,31 +1974,31 @@ _Norbert_common_ VISUAL:@The_monster@ smiles happily. -@The_monster@ asks, "Did you write a will? You should." +@The_monster@ asks @foe,@ "Did you write a will? You should." -@The_monster@ says, "I love killing ugly monsters like you." +@The_monster@ says @to_foe@, "I love killing ugly monsters like you." -@The_monster@ says, "Another dead monster... It must be my lucky day!" +@The_monster@ says @to_foe@, "Another dead monster... It must be my lucky day!" -@The_monster@ screams, "Die, monster!" +@The_monster@ screams @at_foe@, "Die, monster!" -@The_monster@ screams, "Blood and destruction!" +@The_monster@ screams @at_foe@, "Blood and destruction!" -@The_monster@ screams, "Pray, because you'll die soon!" +@The_monster@ screams @at_foe@, "Pray, because you'll die soon!" -@The_monster@ shouts, "Your time has come!" +@The_monster@ shouts @at_foe@, "Your time has come!" %%%% _Norbert_rare_ -@The_monster@ says, "A pity your head will make such an ugly trophy." +@The_monster@ says @to_foe@, "A pity your head will make such an ugly trophy." -@The_monster@ says, "You know, it's an honour to die by my hand." +@The_monster@ says @to_foe@, "You know, it's an honour to die by my hand." -@The_monster@ says, "I'm sorry but you don't have a chance." +@The_monster@ says @to_foe@, "I'm sorry but you don't have a chance." -@The_monster@ screams, "I'm a hero!" +@The_monster@ screams @at_foe@, "I'm a hero!" -@The_monster@ shouts, "YES! Another notch!" +@The_monster@ shouts @at_foe@, "YES! Another notch!" ## END Norbert ## %%%% @@ -2016,27 +2016,27 @@ SPELL:@The_monster@ mumbles some mantras. VISUAL:@The_monster@ is surrounded with an aura of peace. -VISUAL:@The_monster@ smiles at you. +VISUAL:@The_monster@ smiles at @foe@. VISUAL:@The_monster@ looks relaxed. @The_monster@ sings, "Peace now, freedom now! Peace now, freedom now!" -@The_monster@ says, "Life is just suffering. I'll help you." +@The_monster@ says @to_foe@, "Life is just suffering. I'll help you." -@The_monster@ says, "Death is just a liberation!" +@The_monster@ says @to_foe@, "Death is just a liberation!" -@The_monster@ says, "Feel free to die. It's a great thing." +@The_monster@ says @to_foe@, "Feel free to die. It's a great thing." -@The_monster@ says, "Breathe deeply." +@The_monster@ says @to_foe@, "Breathe deeply." -@The_monster@ says, "It's all maya." +@The_monster@ says @to_foe@, "It's all maya." -@The_monster@ says, "Drop out!" +@The_monster@ says @to_foe@, "Drop out!" -@The_monster@ screams, "Peace! I bring you eternal peace!" +@The_monster@ screams @at_foe@, "Peace! I bring you eternal peace!" -@The_monster@ screams, "Free your soul! Die!" +@The_monster@ screams @at_foe@, "Free your soul! Die!" %%%% _Norris_rare_ @@ -2044,25 +2044,25 @@ VISUAL:@The_monster@ looks very balanced. @The_monster@ sings, "Hare Rama, Hare Krishna!" -@The_monster@ says, "After death you'll find inner peace." +@The_monster@ says @to_foe@, "After death you'll find inner peace." -@The_monster@ says, "Don't resist. I'll do it for you." +@The_monster@ says @to_foe@, "Don't resist. I'll do it for you." -@The_monster@ says, "OHM MANI PADME HUM!" +@The_monster@ says @to_foe@, "OHM MANI PADME HUM!" -@The_monster@ says, "The Orb is only a myth. Forget about it." +@The_monster@ says @to_foe@, "The Orb is only a myth. Forget about it." @player_only@ -@The_monster@ says, "This is called Combat Meditation." +@The_monster@ says @to_foe@, "This is called Combat Meditation." -@The_monster@ asks, "What is the sound of one hand?" +@The_monster@ asks @foe,@ "What is the sound of one hand?" -@The_monster@ sighs, "Enlightenment is such responsibility." +@The_monster@ sighs @at_foe@, "Enlightenment is such responsibility." -@The_monster@ screams, "Enter NIRVANA! Now!" +@The_monster@ screams @at_foe@, "Enter NIRVANA! Now!" -@The_monster@ screams, "Love! Eternal love!" +@The_monster@ screams @at_foe@, "Love! Eternal love!" -@The_monster@ screams, "Blow your mind!" +@The_monster@ screams @at_foe@, "Blow your mind!" ## END Norris ## %%%% # The King of the Cyclopes from Homer's Odyssey! @@ -2081,30 +2081,30 @@ _Polyphemus_common_ # In the movie, I hear he speaks stupidly, as an unintelligent brute # would. This speech is a compromise, as it reflects neither. :) -VISUAL:@The_monster@ glares at you with his lone eye. +VISUAL:@The_monster@ glares at @foe@ with his lone eye. -VISUAL:@The_monster@ wildly rolls his eye at you. +VISUAL:@The_monster@ wildly rolls his eye at @foe@. @The_monster@ @shouts@ loudly for his pets to attack! -@The_monster@ @shouts@, "You will make a great snack!" +@The_monster@ @shouts@ @at_foe@, "You will make a great snack!" @The_monster@ @shouts@, "Attack, my pets! Attack!" -@The_monster@ says, "Trying to escape from me is @pointless@!" +@The_monster@ says @to_foe@, "Trying to escape from me is @pointless@!" %%%% _Polyphemus_rare_ -VISUAL:@The_monster@ seems to be sizing you up for his next meal. +VISUAL:@The_monster@ seems to be sizing @foe@ up for his next meal. VISUAL:@The_monster@ stomps at the @surface@ furiously. -VISUAL:@The_monster@ looks around for something heavy to throw at you. +VISUAL:@The_monster@ looks around for something heavy to throw at @foe@. -@The_monster@ says, "Do you like to play 'catch'?" +@The_monster@ says @to_foe@, "Do you like to play 'catch'?" #I suppose this line may not fit if the player is of certain species... -@The_monster@ says, "@player_genus@ for dinner? Sounds delicious!" +@The_monster@ says @to_foe@, "@foe_genus@ for dinner? Sounds delicious!" ## END Polyphemus ## %%%% Prince Ribbit @@ -2126,11 +2126,11 @@ VISUAL:@The_monster@ catches a @_frog_food_@ with @possessive@ tongue. %%%% _Prince_Ribbit_rare_ -@The_monster@ asks, "Just a little smooch?" +@The_monster@ asks @foe,@ "Just a little smooch?" -@The_monster@ sighs, "It's not easy being green!" +@The_monster@ sighs @at_foe@, "It's not easy being green!" -@The_monster@ says, "You're just another fly to me." +@The_monster@ says @to_foe@, "You're just another fly to me." %%%% _frog_food_ @@ -2161,42 +2161,42 @@ VISUAL:@The_monster@ cries. @The_monster@ sings a strange song. -@The_monster@ says, "Please, could you die a little faster?" +@The_monster@ says @to_foe@, "Please, could you die a little faster?" -@The_monster@ says, "I'm a bad girl, but I can't do anything about it." +@The_monster@ says @to_foe@, "I'm a bad girl, but I can't do anything about it." -@The_monster@ says, "I'm so lonely. Only corpses are my friends." +@The_monster@ says @to_foe@, "I'm so lonely. Only corpses are my friends." -@The_monster@ says, "Once you're dead we can play together!" +@The_monster@ says @to_foe@, "Once you're dead we can play together!" -@The_monster@ says, "I'll kill you and take you home." +@The_monster@ says @to_foe@, "I'll kill you and take you home." @The_monster@ cries, "I hate blood and violence." -@The_monster@ cries, "You've killed my pet!" +@The_monster@ cries @to_foe@, "You've killed my pet!" %%%% _Psyche_rare_ VISUAL:@The_monster@ smiles happily. -VISUAL:@The_monster@ stares at you for a moment. +VISUAL:@The_monster@ stares at @foe@ for a moment. VISUAL:@The_monster@ bursts into tears. VISUAL:@The_monster@ sucks her thumb. -@The_monster@ screams, "YOU ARE VIOLATING AREA SECURITY!!!" +@The_monster@ screams @at_foe@, "YOU ARE VIOLATING AREA SECURITY!!!" -@The_monster@ screams, "Peace! Flowers! Freedom! Dead adventurers!" +@The_monster@ screams @at_foe@, "Peace! Flowers! Freedom! Dead adventurers!" -@The_monster@ shouts, "Well, maybe I'm a bit nutty, but who cares?!" +@The_monster@ shouts @at_foe@, "Well, maybe I'm a bit nutty, but who cares?!" -@The_monster@ shouts, "I'm not crazy, you are!" +@The_monster@ shouts @at_foe@, "I'm not crazy, you are!" -@The_monster@ shouts, "I hope that you are sorry for that!" +@The_monster@ shouts @at_foe@, "I hope that you are sorry for that!" # Copyright U2? -@The_monster@ whispers, "Hold me, thrill me, kiss me, kill me." +@The_monster@ whispers @to_foe@, "Hold me, thrill me, kiss me, kill me." ## END Psyche ## %%%% # A crazy adventurer @@ -2213,25 +2213,25 @@ VISUAL:@The_monster@ looks excited. VISUAL:@The_monster@ looks confused. -@The_monster@ screams, "Die, monster!" +@The_monster@ screams @at_foe@, "Die, monster!" -@The_monster@ screams, "Give me the Holy Grail!" +@The_monster@ screams @at_foe@, "Give me the Holy Grail!" -@The_monster@ screams, "You killed all those lovely monsters, you murderer!" +@The_monster@ screams @at_foe@, "You killed all those lovely monsters, you murderer!" -@The_monster@ screams, "Hurray!" +@The_monster@ screams @at_foe@, "Hurray!" %%%% _Rupert_rare_ -@The_monster@ asks, "You're a monster, aren't you?" +@The_monster@ asks @foe,@ "You're a monster, aren't you?" -@The_monster@ says, "My Mum always said: 'Kill them all'." +@The_monster@ says @to_foe@, "My Mum always said: 'Kill them all'." -@The_monster@ shouts, "I'm a great and powerful hero!" +@The_monster@ shouts @at_foe@, "I'm a great and powerful hero!" -@The_monster@ screams, "Get ready! I'll kill you! Or something like that..." +@The_monster@ screams @at_foe@, "Get ready! I'll kill you! Or something like that..." -@The_monster@ screams, "Red! No, blue!" +@The_monster@ screams @at_foe@, "Red! No, blue!" ## END Rupert ## %%%% # a sapphire statue of an earth mage @@ -2247,11 +2247,11 @@ w:1 %%%% _Roxanne_common_ -@The_monster@ says, "Come a little closer, will you?" +@The_monster@ says @to_foe@, "Come a little closer, will you?" @The_monster@ mutters, "When I said I wanted to live forever... this was not what I had in mind." -@The_monster@ says, "At least I didn't end up somewhere with nobody to talk to." +@The_monster@ says @to_foe@, "At least I didn't end up somewhere with nobody to talk to." @The_monster@ wails, "NOOOO!" @@ -2260,21 +2260,21 @@ __NONE %%%% _Roxanne_medium_ -@The_monster@ asks, "Could you be a darling and pick up those spellbooks for me?" +@The_monster@ asks @foe,@ "Could you be a darling and pick up those spellbooks for me?" -@The_monster@ asks, "Say, could you scratch my back for me?" +@The_monster@ asks @foe,@ "Say, could you scratch my back for me?" -@The_monster@ sighs and says, "It wouldn't be so bad were it not for the bird droppings." +@The_monster@ sighs and says @to_foe@, "It wouldn't be so bad were it not for the bird droppings." %%%% _Roxanne_rare_ -@The_monster@ shouts, "I'd kick your ass right now if I could just get over there!" +@The_monster@ shouts @at_foe@, "I'd kick your ass right now if I could just get over there!" @The_monster@ prays for a Stone to Flesh spell. -@The_monster@ wonders, "Maybe oil would work? Probably not." +@The_monster@ wonders @to_foe@, "Maybe oil would work? Probably not." -@The_monster@ says, "They said I was crazy for my new spells... Turns out they were right." +@The_monster@ says @to_foe@, "They said I was crazy for my new spells... Turns out they were right." ## END Roxanne ## %%%% # orc warlord @@ -2284,9 +2284,9 @@ Saint Roka w:7 @related Saint Roka@ -@The_monster@ says, "Down here, you're an orc or you're nobody." +@The_monster@ says @to_foe@, "Down here, you're an orc or you're nobody." -@The_monster@ says, "In the orcish mines, orcs kill the likes of you." +@The_monster@ says @to_foe@, "In the orcish mines, orcs kill the likes of you." %%%% related Saint Roka @@ -2297,7 +2297,7 @@ w:2 @The_monster@ calls out, "Only Beogh rules here!" -@The_monster@ says, "I shall smite you and smash you." +@The_monster@ says @to_foe@, "I shall smite you and smash you." @The_monster@ lets out a mighty cry! @@ -2319,7 +2319,7 @@ w:5 @_hostile_orc_beogh_believer_rare_@ w:1 -@The_monster@ shouts, "There can only be one messiah: ME!" +@The_monster@ shouts @at_foe@, "There can only be one messiah: ME!" ## END Saint Roka ## %%%% @@ -2338,17 +2338,17 @@ w:20 VISUAL:@The_monster@ grinds his teeth. -@The_monster@ says, "Don't worry, I'll kill you fast." +@The_monster@ says @to_foe@, "Don't worry, I'll kill you fast." -@The_monster@ says, "You will soon forget everything." +@The_monster@ says @to_foe@, "You will soon forget everything." -@The_monster@ says, "Look into my eyes." +@The_monster@ says @to_foe@, "Look into my eyes." -@The_monster@ says, "I'm your fate." +@The_monster@ says @to_foe@, "I'm your fate." -@The_monster@ screams, "Die, monster!" +@The_monster@ screams @at_foe@, "Die, monster!" -@The_monster@ screams, "Don't try to resist!" +@The_monster@ screams @at_foe@, "Don't try to resist!" SPELL:@The_monster@ casts a spell. ENCHANT:@The_monster@'s eyes start glowing with a red light. @@ -2358,17 +2358,17 @@ ENCHANT:@The_monster@ is suddenly surrounded by pale @spell_colour@ light. %%%% _Sigmund_rare_ -VISUAL:@The_monster@ tries to bite you. +VISUAL:@The_monster@ tries to bite @foe@. -@The_monster@ asks, "Do you like me?" +@The_monster@ asks @foe,@ "Do you like me?" -@The_monster@ screams, "You will never... NEVER!!!" +@The_monster@ screams @at_foe@, "You will never... NEVER!!!" -@The_monster@ screams, "I am the angel of Death!" +@The_monster@ screams @at_foe@, "I am the angel of Death!" -@The_monster@ screams, "Only death can liberate you!" +@The_monster@ screams @at_foe@, "Only death can liberate you!" -@The_monster@ whispers, "You'll know eternity soon." +@The_monster@ whispers @to_foe@, "You'll know eternity soon." ## END Sigmund ## %%%% # female kobold assassin @@ -2381,9 +2381,9 @@ w:5 %%%% _Sonja_common_ -@The_monster@ says, "I'm academy-trained, you know." +@The_monster@ says @to_foe@, "I'm academy-trained, you know." -@The_monster@ shouts, "Too slow!" +@The_monster@ shouts @at_foe@, "Too slow!" VISUAL:@The_monster@ twirls her cape. @@ -2393,15 +2393,15 @@ VISUAL:@The_monster@ plants her feet in a plie. %%%% _Sonja_rare_ -@The_monster@ shouts, "Hah! Missed me again!" +@The_monster@ shouts @at_foe@, "Hah! Missed me again!" -@The_monster@ says, "The Royal Ballet doesn't accept kobolds. That's why I went into killing people." +@The_monster@ says @to_foe@, "The Royal Ballet doesn't accept kobolds. That's why I went into killing people." -@The_monster@ says, "If only old Madame Brzewit could see me now!" +@The_monster@ says @to_foe@, "If only old Madame Brzewit could see me now!" -@The_monster@ shouts, "Some dancing partner you are!" +@The_monster@ shouts @at_foe@, "Some dancing partner you are!" -@The_monster@ says, "Someone hired me to kill you, but I'm not supposed to say who." +@The_monster@ says @to_foe@, "Someone hired me to kill you, but I'm not supposed to say who." ## END Sonja ## %%%% # A fighter who likes to kill @@ -2414,37 +2414,37 @@ w:4 %%%% _Terence_common_ -VISUAL:@The_monster@ looks scornfully at you. +VISUAL:@The_monster@ looks scornfully at @foe@. VISUAL:@The_monster@ bares @possessive@ teeth. -@The_monster@ asks, "Do you want it fast or slow?" +@The_monster@ asks @foe,@ "Do you want it fast or slow?" -@The_monster@ says, "Don't bother to defend, it's @pointless@." +@The_monster@ says @to_foe@, "Don't bother to defend, it's @pointless@." -@The_monster@ says, "I'll show you a few @ploy@s." +@The_monster@ says @to_foe@, "I'll show you a few @ploy@s." -@The_monster@ shouts, "Now you die!" +@The_monster@ shouts @at_foe@, "Now you die!" -@The_monster@ shouts, "@ATTACK@!!!" +@The_monster@ shouts @at_foe@, "@ATTACK@!!!" -@The_monster@ shouts, "Get ready for death!" +@The_monster@ shouts @at_foe@, "Get ready for death!" -@The_monster@ screams, "I want your blood!" +@The_monster@ screams @at_foe@, "I want your blood!" -@The_monster@ screams, "I'm going to kill you!" +@The_monster@ screams @at_foe@, "I'm going to kill you!" %%%% _Terence_rare_ -@The_monster@ says, "Rest in peace." +@The_monster@ says @to_foe@, "Rest in peace." -@The_monster@ says, "How do you enjoy it?" +@The_monster@ says @to_foe@, "How do you enjoy it?" -@The_monster@ says, "You're history." +@The_monster@ says @to_foe@, "You're history." -@The_monster@ says, "Did you write a will? You should..." +@The_monster@ says @to_foe@, "Did you write a will? You should..." -@The_monster@ says, "Time to say good-bye..." +@The_monster@ says @to_foe@, "Time to say good-bye..." ## END Terence ### %%%% @@ -2461,21 +2461,21 @@ VISUAL:@The_monster@ grins evilly. @The_monster@ howls with blood-lust. -@The_monster@ says, "Maybe you aren't @player_name@. It doesn't matter." +@The_monster@ says @to_foe@, "Maybe you aren't @foe_name@. It doesn't matter." -@The_monster@ sneers, "Innocent? I'll kill you anyway." +@The_monster@ sneers @at_foe@, "Innocent? I'll kill you anyway." -@The_monster@ screams, "Die!" +@The_monster@ screams @at_foe@, "Die!" -@The_monster@ screams, "I'm going to kill you! Now!" +@The_monster@ screams @at_foe@, "I'm going to kill you! Now!" -@The_monster@ screams, "Blood and destruction!" +@The_monster@ screams @at_foe@, "Blood and destruction!" -@The_monster@ screams, "I'll get 30 silver pieces for your head!" +@The_monster@ screams @at_foe@, "I'll get 30 silver pieces for your head!" -@The_monster@ screams, "You are already dead." +@The_monster@ screams @at_foe@, "You are already dead." -@The_monster@ screams, "I love blood!" +@The_monster@ screams @at_foe@, "I love blood!" ## END Urug ## %%%% # An adventurer hating competition @@ -2498,27 +2498,27 @@ w:5 @The_monster@ roars horribly. You are afraid. -VISUAL:@The_monster@ glares at you. +VISUAL:@The_monster@ glares at @foe@. -@The_monster@ growls, "YOU BORE ME SO." +@The_monster@ growls @at_foe@, "YOU BORE ME SO." -@The_monster@ roars, "DIE, PUNY ONE!" +@The_monster@ roars @at_foe@, "DIE, PUNY ONE!" -@The_monster@ roars, "FACE MY WRATH!" +@The_monster@ roars @at_foe@, "FACE MY WRATH!" -@The_monster@ roars, "COMING HERE WAS YOUR LAST MISTAKE!" +@The_monster@ roars @at_foe@, "COMING HERE WAS YOUR LAST MISTAKE!" -@The_monster@ roars, "I'VE KILLED HUNDREDS OF ADVENTURERS!" +@The_monster@ roars, "I'VE KILLED HUNDREDS OF ADVENTURERS!" @player_only@ %%%% _Xtahua_rare_ -@The_monster@ rumbles, "YOU'RE BARELY A SNACK." +@The_monster@ rumbles @at_foe@, "YOU'RE BARELY A SNACK." -@The_monster@ roars, "I HATE BEING BOTHERED!" +@The_monster@ roars @at_foe@, "I HATE BEING BOTHERED!" -@The_monster@ roars, "I HOPE YOU'RE TASTY!" +@The_monster@ roars @at_foe@, "I HOPE YOU'RE TASTY!" -@The_monster@ roars, "BAH! BLOODY ADVENTURERS." +@The_monster@ roars, "BAH! BLOODY ADVENTURERS." @player_only@ ## END Xtahua ## ########################################## @@ -2529,7 +2529,7 @@ _Xtahua_rare_ # orderly for beings of pure chaos. chaos spawn -VISUAL:@The_monster@ grows dozens of eye stalks in order to get a better look at you. +VISUAL:@The_monster@ grows dozens of eye stalks in order to get a better look at @foe@. VISUAL:@The_monster@ splits into many small globs of multi-coloured light, then recombines. @@ -2580,21 +2580,21 @@ w:2 ################################## reaper -@The_monster@ whispers, "Time's up, @player_name@!" +@The_monster@ whispers, "Time's up, @foe_name@!" -VISUAL:@The_monster@ beckons to you. +VISUAL:@The_monster@ beckons to @foe@. -@The_monster@ shouts, "I have come for you, @player_name@!" +@The_monster@ shouts @at_foe@, "I have come for you, @foe_name@!" -@The_monster@ shouts, "Death awaits you!" +@The_monster@ shouts @at_foe@, "Death awaits you!" -@The_monster@ says, "Everyone has to die one time, and your time is now." +@The_monster@ says @to_foe@, "Everyone has to die one time, and your time is now." VISUAL:@The_monster@ draws a finger across @possessive@ throat. -@The_monster@ shouts, "You must die NOW!" +@The_monster@ shouts @at_foe@, "You must die NOW!" -@The_monster@ shouts, "Die, @player_name@!" +@The_monster@ shouts @at_foe@, "Die, @foe_name@!" %%%% # Too many killer bees in the hive to have them give messages, unless # they're confused or fleeing. @@ -2614,13 +2614,13 @@ _Killer_Klown_common_ @The_monster@ laughs merrily. -VISUAL:@The_monster@ beckons to you. +VISUAL:@The_monster@ beckons to @foe@. VISUAL:@The_monster@ does a flip. VISUAL:@The_monster@ does a somersault. -VISUAL:@The_monster@ smiles at you. +VISUAL:@The_monster@ smiles at @foe@. VISUAL:@The_monster@ grins with merry abandon. @@ -2634,7 +2634,7 @@ VISUAL:@The_monster@ pantomimes your execution. VISUAL:@The_monster@ pokes out @possessive@ tongue. -@The_monster@ says, "Come and play with me!" +@The_monster@ says @to_foe@, "Come and play with me!" ## END Killer Klown ## %%%% # The moth of wrath doesn't buzz like the other 'y' monsters, what @@ -2681,7 +2681,7 @@ _tormentor_ _tormentor_common_ w:15 -@The_monster@ says, "I'll crush your bones, one by one." +@The_monster@ says @to_foe@, "I'll crush your bones, one by one." VISUAL:@The_monster@ grins evilly. @@ -2689,33 +2689,33 @@ VISUAL:@The_monster@ grins madly. VISUAL:@The_monster@ grins malevolently. -@The_monster@ says, "I will show you what pain is." +@The_monster@ says @to_foe@, "I will show you what pain is." -@The_monster@ says, "You will wish to die when I get to you." +@The_monster@ says @to_foe@, "You will wish to die when I get to you." -@The_monster@ says, "I know your fate. It's pain." +@The_monster@ says @to_foe@, "I know your fate. It's pain." -@The_monster@ screams, "You will die horribly!" +@The_monster@ screams @at_foe@, "You will die horribly!" %%%% _tormentor_rare_ @The_monster@ laughs crazily. -@The_monster@ says, "I am all your nightmares come true." +@The_monster@ says @to_foe@, "I am all your nightmares come true." -@The_monster@ says, "I will drown you in your own blood." +@The_monster@ says @to_foe@, "I will drown you in your own blood." -@The_monster@ says, "I will eat your liver." +@The_monster@ says @to_foe@, "I will eat your liver." -@The_monster@ says, "I know a thousand and one ways to kill you." +@The_monster@ says @to_foe@, "I know a thousand and one ways to kill you." -@The_monster@ says, "I'll show you my torture chamber!" +@The_monster@ says @to_foe@, "I'll show you my torture chamber!" -@The_monster@ says, "Get ready! Throes of agony await you." +@The_monster@ says @to_foe@, "Get ready! Throes of agony await you." -@The_monster@ shouts, "Prepare for my thousand needles of pain!" +@The_monster@ shouts @at_foe@, "Prepare for my thousand needles of pain!" -@The_monster@ shouts, "I'll tear you apart!" +@The_monster@ shouts @at_foe@, "I'll tear you apart!" ## END _tormentor_ ## %%%% white imp @@ -2752,18 +2752,18 @@ SPELL:@The_monster@ intones a prayer. SPELL:A sense of peace washes over you. w:1 -@The_monster@ says, "Thou must remain pure in the battle against evil." +@The_monster@ says @to_foe@, "Thou must remain pure in the battle against evil." w:1 -@The_monster@ says, "May @player_god@ always shine on thee, @player_name@!" +@The_monster@ says @to_foe@, "May @player_god@ always shine on thee, @player_name@!" w:1 -@The_monster@ says, "@player_god@ be with thee, mortal!" +@The_monster@ says @to_foe@, "@player_god@ be with thee, mortal!" # The good gods are assumed to work closely together, so a Daeva praising # Elyvilon is actually flavour. w:1 -@The_monster@ says, "Praised be @good_god@ in the heavens above!" +@The_monster@ says @to_foe@, "Praised be @good_god@ in the heavens above!" %%%% neutral good god 'cap-A' @@ -2795,11 +2795,11 @@ good_god_neutral_holy_being_reaction %%%% good_god_neutral_holy_being_speech -@The_monster@ shouts, "Continue thy quest, mortal!" +@The_monster@ shouts @at_foe@, "Continue thy quest, mortal!" -@The_monster@ says, "Forge ahead, servant of @player_god@!" +@The_monster@ says @to_foe@, "Forge ahead, servant of @player_god@!" -@The_monster@ says, "Carry on, mortal." +@The_monster@ says @to_foe@, "Carry on, mortal." %%%% ############################################################# # evil monsters may also have some choicy things to say... @@ -2810,10 +2810,10 @@ w:20 @_demon_taunt_@ w:1 -@The_monster@ screams, "@player_god@ won't protect you, @player_name@!" +@The_monster@ screams @at_foe@, "@foe_god@ won't protect you, @foe_name@!" w:1 -@The_monster@ screams, "@player_god@ is but a nuisance to me, mortal!" +@The_monster@ screams @at_foe@, "@foe_god@ is but a nuisance to me, mortal!" %%%% ############################################## # Special orc speech @@ -2929,6 +2929,17 @@ friendly related orc w:5 @_generic_orc_speech_@ %%%% +orc_says_to_foe + +shouts @at_foe@ + +says @to_foe@ + +grunts @at_foe@ + +w:5 +sneers @at_foe@ +%%%% orc_says shouts @@ -2981,31 +2992,31 @@ w:4 %%%% _hostile_orc_beogh_unbeliever_common_ -@The_monster@ @orc_says@, "I don't believe in Beogh!" +@The_monster@ @orc_says_to_foe@, "I don't believe in Beogh!" -@The_monster@ @shouts@, "You're not the messiah, I am!" +@The_monster@ @shouts@ @at_foe@, "You're not the messiah, I am!" %%%% _hostile_orc_beogh_believer_common_ -@The_monster@ mutters, "You're NOT the saviour of the Orcs." +@The_monster@ mutters @at_foe@, "You're NOT the saviour of the Orcs." -@The_monster@ grumbles, "You're not even a proper Orc..." +@The_monster@ grumbles @at_foe@, "You're not even a proper Orc..." -@The_monster@ @orc_says@, "How could Beogh possibly choose you?" +@The_monster@ @orc_says_to_foe@, "How could Beogh possibly choose you?" @The_monster@ mutters something uncomplimentary. -@The_monster@ @orc_says@, "Beogh will surely punish you for your arrogance!" +@The_monster@ @orc_says_to_foe@, "Beogh will surely punish you for your arrogance!" -@The_monster@ grunts, "You, the messiah? You don't even look the part!" +@The_monster@ grunts @at_foe@, "You, the messiah? You don't even look the part!" -@The_monster@ @orc_says@, "The messiah will not be a Hill Orc!" +@The_monster@ @orc_says_to_foe@, "The messiah will not be a Hill Orc!" -@The_monster@ @orc_says@, "The messiah will be a true Orc!" +@The_monster@ @orc_says_to_foe@, "The messiah will be a true Orc!" -@The_monster@ @orc_says@, "Turn back to the hills, deceiver!" +@The_monster@ @orc_says_to_foe@, "Turn back to the hills, deceiver!" -@The_monster@ @shouts@, "Die, @orc_heathen@!" +@The_monster@ @shouts@ @at_foe@, "Die, @orc_heathen@!" @The_monster@ @shouts@, "Die, @player_name@, for besmirching Beogh's name!" @@ -3013,23 +3024,23 @@ VISUAL:@The_monster@ grimaces. %%%% _hostile_orc_beogh_unbeliever_rare_ -@The_monster@ @orc_says@, "Orcs don't need Beogh!" +@The_monster@ @orc_says_to_foe@, "Orcs don't need Beogh!" -@The_monster@ @orc_says@, "Beogh's messiah is just a fairy-tale." +@The_monster@ @orc_says_to_foe@, "Beogh's messiah is just a fairy-tale." -@The_monster@ says, "Even if there were a messiah, it wouldn't be you." +@The_monster@ says @to_foe@, "Even if there were a messiah, it wouldn't be you." %%%% _hostile_orc_beogh_believer_rare_ -@The_monster@ laughs, "You, our saviour!?" +@The_monster@ laughs @at_foe@, "You, our saviour!?" -@The_monster@ @shouts@, "Orcs! @player_name@ is lying!" +@The_monster@ @shouts@ @at_foe@, "Orcs! @foe_name@ is lying!" -@The_monster@ @orc_says@, "For a messiah, you look rather @orc_pathetic@." +@The_monster@ @orc_says_to_foe@, "For a messiah, you look rather @orc_pathetic@." -@The_monster@ @orc_says@, "Your @costumes_or_trick@ cannot @fool_or_deceive@ me." +@The_monster@ @orc_says_to_foe@, "Your @costumes_or_trick@ cannot @fool_or_deceive@ me." -@The_monster@ @orc_says@, "I wonder, will Beogh raise you from the dead?" +@The_monster@ @orc_says_to_foe@, "I wonder, will Beogh raise you from the dead?" VISUAL:@The_monster@ shakes @possessive@ head. @@ -3135,7 +3146,7 @@ _friendly_beogh_speech_rare_ @The_monster@ @says_or_shouts@, "Our fallen brethren won't be forgotten." # messages submitted by Lemuel -@The_monster@ says, "I'd rather not die in your service, @player_name@." +@The_monster@ says @to_foe@, "I'd rather not die in your service, @player_name@." @The_monster@ chants, "I shall fear no evil, for @player_name@ is my saviour." diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index d190d7805b..8451b50e37 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -7896,24 +7896,25 @@ void mon_enchant::set_duration(const monsters *mons, const mon_enchant *added) maxduration = duration; } -// Replaces @player_god@ and @god_is@ with player's god name +// Replaces @foe_god@ and @god_is@ with foe's god name // special handling for atheists: use "you"/"You" instead. -static std::string _replace_god_name(bool need_verb = false, +static std::string _replace_god_name(god_type god, bool need_verb = false, bool capital = false) { std::string result = - (you.religion == GOD_NO_GOD ? (capital ? "You" : "you") - : god_name(you.religion, false)); + (god == GOD_NO_GOD ? (capital ? "You" : "you") + : god_name(god, false)); if (need_verb) { result += - (you.religion == GOD_NO_GOD ? " are" : " is"); + (god == GOD_NO_GOD ? " are" : " is"); } return (result); } -static std::string _get_species_insult(const std::string type) +static std::string _get_species_insult(const std::string &species, + const std::string &type) { std::string lookup = "insult "; // Get species genus. @@ -7953,6 +7954,78 @@ std::string do_mon_str_replacements(const std::string &in_msg, const monsters* monster, int s_type) { std::string msg = in_msg; + + const actor* foe = (!crawl_state.arena && mons_wont_attack(monster) + && invalid_monster_index(monster->foe)) ? + &you : monster->get_foe(); + const monsters* m_foe = (foe && foe->atype() == ACT_MONSTER) ? + dynamic_cast<const monsters*>(foe) : NULL; + + std::string foe_species; + + if (foe == NULL) + ; + else if (foe->atype() == ACT_PLAYER) + { + foe_species = species_name(you.species, 1, true); + + msg = replace_all(msg, "@player_only@", ""); + msg = replace_all(msg, " @foe,@", ","); + + msg = replace_all(msg, "@player", "@foe"); + msg = replace_all(msg, "@Player", "@Foe"); + + msg = replace_all(msg, "@foe@", "you"); + msg = replace_all(msg, "@Foe@", "You"); + + msg = replace_all(msg, "@foe_name@", you.your_name); + msg = replace_all(msg, "@foe_species@", species_name(you.species, 1)); + msg = replace_all(msg, "@foe_genus@", foe_species); + msg = replace_all(msg, "@foe_genus_plural@", + _pluralise_player_genus()); + } + else + { + std::string foe_name; + if (you.can_see(m_foe) || crawl_state.arena) + { + if (m_foe->attitude == ATT_FRIENDLY + && !mons_is_unique(m_foe->type) + && !crawl_state.arena) + { + foe_name = m_foe->name(DESC_NOCAP_YOUR); + } + else + foe_name = m_foe->name(DESC_NOCAP_THE); + } + else + foe_name = "something"; + + msg = replace_all(msg, " @to_foe@", " to @foe@"); + msg = replace_all(msg, " @at_foe@", " at @foe@"); + msg = replace_all(msg, "@foe,@", "@foe@,"); + + msg = replace_all(msg, "@foe@", foe_name); + msg = replace_all(msg, "@Foe@", upcase_first(foe_name)); + + if (m_foe->is_named()) + msg = replace_all(msg, "@foe_name@", + m_foe->name(DESC_PLAIN, true)); + + std::string species = mons_type_name(mons_species(m_foe->type), + DESC_PLAIN); + + msg = replace_all(msg, "@foe_species@", species); + + std::string genus = mons_type_name(mons_genus(m_foe->type), + DESC_PLAIN); + + msg = replace_all(msg, "@foe_genus@", genus); + msg = replace_all(msg, "@foe_genus_plural@", pluralise(genus)); + + foe_species = genus; + } + description_level_type nocap = DESC_NOCAP_THE, cap = DESC_CAP_THE; if (monster->is_named() && player_monster_visible(monster)) @@ -8000,13 +8073,6 @@ std::string do_mon_str_replacements(const std::string &in_msg, msg = replace_all(msg, "@feature@", "buggy unseen feature"); } - msg = replace_all(msg, "@player_name@", you.your_name); - msg = replace_all(msg, "@player_species@", - species_name(you.species, 1).c_str()); - msg = replace_all(msg, "@player_genus@", - species_name(you.species, 1, true, false).c_str()); - msg = replace_all(msg, "@player_genus_plural@", - _pluralise_player_genus().c_str()); if (player_monster_visible(monster)) { @@ -8093,13 +8159,21 @@ std::string do_mon_str_replacements(const std::string &in_msg, msg = replace_all(msg, "@feet@", part_str); msg = replace_all(msg, "@Feet@", upcase_first(part_str)); - // Replace with "you are" for atheists. - msg = replace_all(msg, "@god_is@", _replace_god_name(true, false)); - msg = replace_all(msg, "@God_is@", _replace_god_name(true, true)); + if (foe != NULL) + { + const god_type god = foe->deity(); + + // Replace with "you are" for atheists. + msg = replace_all(msg, "@god_is@", + _replace_god_name(god, true, false)); + msg = replace_all(msg, "@God_is@", _replace_god_name(god, true, true)); - // No verb needed, - msg = replace_all(msg, "@player_god@", _replace_god_name(false, false)); - msg = replace_all(msg, "@Player_god@", _replace_god_name(false, true)); + // No verb needed, + msg = replace_all(msg, "@foe_god@", + _replace_god_name(god, false, false)); + msg = replace_all(msg, "@foe_god@", + _replace_god_name(god, false, true)); + } // The monster's god, not the player's. if (monster->god == GOD_NO_GOD) @@ -8108,14 +8182,14 @@ std::string do_mon_str_replacements(const std::string &in_msg, msg = replace_all(msg, "@God@", god_name(monster->god)); // Replace with species specific insults. - if (msg.find("@species_insult_") != std::string::npos) + if (foe != NULL && msg.find("@species_insult_") != std::string::npos) { msg = replace_all(msg, "@species_insult_adj1@", - _get_species_insult("adj1")); + _get_species_insult(foe_species, "adj1")); msg = replace_all(msg, "@species_insult_adj2@", - _get_species_insult("adj2")); + _get_species_insult(foe_species, "adj2")); msg = replace_all(msg, "@species_insult_noun@", - _get_species_insult("noun")); + _get_species_insult(foe_species, "noun")); } static const char * sound_list[] = diff --git a/crawl-ref/source/monspeak.cc b/crawl-ref/source/monspeak.cc index 3b4e45233c..1265e522ca 100644 --- a/crawl-ref/source/monspeak.cc +++ b/crawl-ref/source/monspeak.cc @@ -45,12 +45,12 @@ REVISION("$Rev$"); // Try the exact key lookup along with the entire prefix list. // If that fails, start ignoring hostile/religion/silence, in that order, // first skipping hostile, then hostile *and* religion, then all three. -static std::string _try_exact_string(const std::vector<std::string> prefixes, - const std::string key, - bool ignore_hostile = false, - bool ignore_related = false, - bool ignore_religion = false, - bool ignore_silenced = false) +static std::string __try_exact_string(const std::vector<std::string> &prefixes, + const std::string &key, + bool ignore_hostile = false, + bool ignore_related = false, + bool ignore_religion = false, + bool ignore_silenced = false) { bool hostile = false; bool related = false; @@ -95,29 +95,117 @@ static std::string _try_exact_string(const std::vector<std::string> prefixes, if (msg.empty()) { if (hostile) // skip hostile - msg = _try_exact_string(prefixes, key, true); + msg = __try_exact_string(prefixes, key, true); else if (related) { if (religion) // skip hostile and religion - msg = _try_exact_string(prefixes, key, true, false, true); + msg = __try_exact_string(prefixes, key, true, false, true); else // skip hostile and related - msg = _try_exact_string(prefixes, key, true, true); + msg = __try_exact_string(prefixes, key, true, true); } else if (religion) // skip hostile, related and religion - msg = _try_exact_string(prefixes, key, true, true, true); + msg = __try_exact_string(prefixes, key, true, true, true); // 50% use non-verbal monster speech, // 50% try for more general silenced monster message instead else if (silenced && coinflip()) // skip all - msg = _try_exact_string(prefixes, key, true, true, true, true); + msg = __try_exact_string(prefixes, key, true, true, true, true); } return msg; } -static std::string _get_speak_string(const std::vector<std::string> prefixes, - const std::string key, - const monsters *monster) +static bool _invalid_msg(const std::string &msg, bool no_player, bool no_foe, + bool no_foe_name, bool no_god) +{ + if (no_player + && (msg.find("@player") != std::string::npos + || msg.find("@Player") != std::string::npos + || msg.find(":You") != std::string::npos)) + { + return (true); + } + + if (no_player) + { + std::vector<std::string> lines = split_string("\n", msg); + for (unsigned int i = 0; i < lines.size(); i++) + { + if (starts_with(lines[i], "You") + || ends_with(lines[i], "you.")) + { + return (true); + } + } + } + + if (no_foe && (msg.find("@foe") != std::string::npos + || msg.find("@Foe") != std::string::npos + || msg.find("foe@") != std::string::npos + || msg.find("@species") != std::string::npos)) + { + return (true); + } + + if (no_god && (msg.find("_god@") != std::string::npos + || msg.find("@god_") != std::string::npos)) + { + return (true); + } + + if (no_foe_name && msg.find("@foe_name@") != std::string::npos) + return (true); + + return (false); +} + +static std::string _try_exact_string(const std::vector<std::string> &prefixes, + const std::string &key, + bool no_player, bool no_foe, + bool no_foe_name, bool no_god, + bool ignore_hostile = false, + bool ignore_related = false, + bool ignore_religion = false, + bool ignore_silenced = false) { - std::string msg = _try_exact_string(prefixes, key); + std::string msg; + for (int tries = 0; tries < 10; tries++) + { + msg = + __try_exact_string(prefixes, key, ignore_hostile, ignore_related, + ignore_religion, ignore_silenced); + + // If the first message was non-empty and discarded then discard + // all subsequent empty messages, so as to not replace an + // invalid non-empty message with an empty one. + if (msg.empty()) + { + if (tries == 0) + return (msg); + else + { + tries--; + continue; + } + } + + if (_invalid_msg(msg, no_player, no_foe, no_foe_name, no_god)) + { + msg = ""; + continue; + } + break; + } + + return (msg); +} + +static std::string __get_speak_string(const std::vector<std::string> &prefixes, + const std::string &key, + const monsters *monster, + bool no_player, bool no_foe, + bool no_foe_name, bool no_god) +{ + std::string msg = _try_exact_string(prefixes, key, no_player, no_foe, + no_foe_name, no_god); if (!msg.empty()) return msg; @@ -178,6 +266,45 @@ static std::string _get_speak_string(const std::vector<std::string> prefixes, return msg; } +static std::string _get_speak_string(const std::vector<std::string> &prefixes, + const std::string &key, + const monsters *monster, + bool no_player, bool no_foe, + bool no_foe_name, bool no_god) +{ + std::string msg; + for (int tries = 0; tries < 10; tries++) + { + msg = + __get_speak_string(prefixes, key, monster, no_player, no_foe, + no_foe_name, no_god); + + // If the first message was non-empty and discarded then discard + // all subsequent empty messages, so as to not replace an + // invalid non-empty message with an empty one. + if (msg.empty()) + { + if (tries == 0) + return (msg); + else + { + tries--; + continue; + } + } + + if (_invalid_msg(msg, no_player, no_foe, no_foe_name, no_god)) + { + msg = ""; + continue; + } + + break; + } + + return (msg); +} + // Player ghosts with different classes can potentially speak different // things. static std::string _player_ghost_speak_str(const monsters *monster, @@ -204,7 +331,7 @@ static std::string _player_ghost_speak_str(const monsters *monster, } // If the monster was originally a unique which has been polymorphed into -// a non-unique, is its current monter type capable of using it's old +// a non-unique, is its current monter type capable of using its old // speech? static bool _polyd_can_speak(const monsters* monster) { @@ -287,27 +414,48 @@ bool mons_speaks(const monsters *monster) if (monster->has_ench(ENCH_CONFUSION)) prefixes.push_back("confused"); - // animals only look at the current player form, - // smart monsters at the actual player genus - if (is_player_same_species(monster->type, - mons_intel(monster) <= I_ANIMAL)) + const actor* foe = (!crawl_state.arena && mons_wont_attack(monster) + && invalid_monster_index(monster->foe)) ? + &you : monster->get_foe(); + const monsters* m_foe = (foe && foe->atype() == ACT_MONSTER) ? + dynamic_cast<const monsters*>(foe) : NULL; + + // animals only look at the current player form, smart monsters at the + // actual player genus + if (!foe || foe->atype() == ACT_PLAYER) + { + if (is_player_same_species(monster->type, + mons_intel(monster) <= I_ANIMAL)) + { + prefixes.push_back("related"); // maybe overkill for Beogh? + } + } + else { - prefixes.push_back("related"); // maybe overkill for Beogh? + if (mons_genus(monster->mons_species()) == + mons_genus(foe->mons_species())) + { + prefixes.push_back("related"); + } } + const god_type god = foe ? foe->deity() : + crawl_state.arena ? GOD_NO_GOD : + you.religion; + // Add Beogh to list of prefixes for orcs (hostile and friendly) if you // worship Beogh. (This assumes your being a Hill Orc, so might have odd // results in wizard mode.) Don't count charmed orcs. - if (you.religion == GOD_BEOGH && mons_genus(monster->type) == MONS_ORC + if (god == GOD_BEOGH && mons_genus(monster->type) == MONS_ORC && !monster->has_ench(ENCH_CHARM)) { prefixes.push_back("beogh"); } else { - if (is_good_god(you.religion)) + if (is_good_god(god)) prefixes.push_back("good god"); - else if (is_evil_god(you.religion)) + else if (is_evil_god(god)) prefixes.push_back("evil god"); } @@ -325,6 +473,18 @@ bool mons_speaks(const monsters *monster) } #endif + const bool no_foe = foe == NULL; + const bool no_player = crawl_state.arena + || (!mons_wont_attack(monster) + && (!foe || foe->atype() != ACT_PLAYER)); + const bool mon_foe = m_foe != NULL; + const bool no_god = no_foe || (mon_foe && foe->deity() == GOD_NO_GOD); + const bool named_foe = !no_foe + && (!mon_foe || (m_foe->is_named() + && m_foe->type != MONS_ROYAL_JELLY)); + const bool no_foe_name = !named_foe + || (mon_foe && (m_foe->flags & MF_NAME_MASK)); + std::string msg; // First, try its exact name @@ -337,17 +497,20 @@ bool mons_speaks(const monsters *monster) { // Pandemonium demons have randomly generated names, // so use "pandemonium lord" instead. - msg = _get_speak_string(prefixes, "pandemonium lord", monster); + msg = _get_speak_string(prefixes, "pandemonium lord", monster, + no_player, no_foe, no_foe_name, no_god); } else { if (!monster->mname.empty() && _polyd_can_speak(monster)) msg = _get_speak_string(prefixes, monster->name(DESC_PLAIN), - monster); + monster, no_player, no_foe, no_foe_name, + no_god); if (msg.empty()) msg = _get_speak_string(prefixes, monster->base_name(DESC_PLAIN), - monster); + monster, no_player, no_foe, no_foe_name, + no_god); } // The exact name brought no results, try monster genus. @@ -356,7 +519,7 @@ bool mons_speaks(const monsters *monster) { msg = _get_speak_string(prefixes, mons_type_name(mons_genus(monster->type), DESC_PLAIN), - monster); + monster, no_player, no_foe, no_foe_name, no_god); } // __NONE means to be silent, and __NEXT means to try the next, @@ -388,7 +551,8 @@ bool mons_speaks(const monsters *monster) key += mons_char(monster->type); key += "'"; - msg = _get_speak_string(prefixes, key, monster); + msg = _get_speak_string(prefixes, key, monster, no_player, no_foe, + no_foe_name, no_god); } if (msg == "__NONE") @@ -441,7 +605,8 @@ bool mons_speaks(const monsters *monster) } if (msg.empty() || msg == "__NEXT") - msg = _get_speak_string(prefixes, get_mon_shape_str(shape), monster); + msg = _get_speak_string(prefixes, get_mon_shape_str(shape), monster, + no_player, no_foe, no_foe_name, no_god); if (msg == "__NONE") { @@ -462,18 +627,18 @@ bool mons_speaks(const monsters *monster) if (shape == MON_SHAPE_HUMANOID_WINGED_TAILED) { shape = MON_SHAPE_HUMANOID_TAILED; - msg = _get_speak_string(prefixes, - get_mon_shape_str(shape), - monster); + msg = _get_speak_string(prefixes, get_mon_shape_str(shape), + monster, no_player, no_foe, no_foe_name, + no_god); // Only be silent if both tailed and winged return __NONE if (msg.empty() || msg == "__NONE" || msg == "__NEXT") { shape = MON_SHAPE_HUMANOID_WINGED; std::string msg2; - msg2 = _get_speak_string(prefixes, - get_mon_shape_str(shape), - monster); + msg2 = _get_speak_string(prefixes, get_mon_shape_str(shape), + monster, no_player, no_foe, + no_foe_name, no_god); if (msg == "__NONE" && msg2 == "__NONE") { @@ -492,9 +657,9 @@ bool mons_speaks(const monsters *monster) if (msg.empty() || msg == "__NONE" || msg == "__NEXT") { shape = MON_SHAPE_HUMANOID; - msg = _get_speak_string(prefixes, - get_mon_shape_str(shape), - monster); + msg = _get_speak_string(prefixes, get_mon_shape_str(shape), + monster, no_player, no_foe, no_foe_name, + no_god); } } if (msg.empty() || msg == "__NONE") @@ -514,6 +679,16 @@ bool mons_speaks(const monsters *monster) return (false); } + if (foe == NULL) + msg = replace_all(msg, "__YOU_RESIST", "__NOTHING_HAPPENS"); + else if (foe->atype() == ACT_MONSTER) + { + if (you.can_see(foe)) + msg = replace_all(msg, "__YOU_RESIST", "@The_monster@ resists."); + else + msg = replace_all(msg, "__YOU_RESIST", "__NOTHING_HAPPENS"); + } + mons_speaks_msg(monster, msg, MSGCH_TALK, silence); return (true); } // end mons_speaks = end of routine diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc index 661c0a80df..07edc0d82d 100644 --- a/crawl-ref/source/religion.cc +++ b/crawl-ref/source/religion.cc @@ -2318,6 +2318,7 @@ void god_speaks(god_type god, const char *mesg) fake_mon.hit_points = 1; fake_mon.god = god; fake_mon.position = you.pos(); + fake_mon.foe = MHITYOU; fake_mon.mname = "FAKE GOD MONSTER"; mpr(do_mon_str_replacements(mesg, &fake_mon).c_str(), MSGCH_GOD, god); |