summaryrefslogtreecommitdiff
path: root/src/being.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/being.cpp')
-rw-r--r--src/being.cpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/being.cpp b/src/being.cpp
index 98aaeec2..3e621295 100644
--- a/src/being.cpp
+++ b/src/being.cpp
@@ -171,7 +171,39 @@ void Being::setSpeech(const std::string &text, Uint32 time)
{
mSpeech = text;
- mSpeechTime = 500;
+ // Trim whitespace
+ while (mSpeech[0] == ' ')
+ {
+ mSpeech = mSpeech.substr(1, mSpeech.size());
+ }
+ while (mSpeech[mSpeech.size()] == ' ')
+ {
+ mSpeech = mSpeech.substr(0, mSpeech.size() - 1);
+ }
+
+ // check for links
+ const std::string::size_type start = mSpeech.find('[');
+ const std::string::size_type end = mSpeech.find(']', start);
+
+ if (start != std::string::npos && end != std::string::npos)
+ {
+ mSpeech.erase(end);
+ std::string::size_type pos = mSpeech.find('@');
+
+ while (pos != std::string::npos)
+ {
+ mSpeech.erase(pos, 2);
+ pos = mSpeech.find('@');
+ }
+
+ pos = mSpeech.find('|');
+
+ if (pos != std::string::npos)
+ mSpeech = mSpeech.substr(pos + 1, mSpeech.size());
+ }
+
+ if (mSpeech != "")
+ mSpeechTime = 500;
}
void Being::takeDamage(int amount)