From c7ad873581aca1371357f08e95002885782dee93 Mon Sep 17 00:00:00 2001 From: Paul Coene Date: Sun, 24 Sep 2017 16:33:08 -0400 Subject: [PATCH] Rule to dictate if you can teach yourself lang. --- common/ruletypes.h | 1 + zone/client.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/common/ruletypes.h b/common/ruletypes.h index 20bdce740..67591d402 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -186,6 +186,7 @@ RULE_INT(Skills, MaxTrainSpecializations, 50) // Max level a GM trainer will tra RULE_INT(Skills, SwimmingStartValue, 100) RULE_BOOL(Skills, TrainSenseHeading, false) RULE_INT(Skills, SenseHeadingStartValue, 200) +RULE_BOOL(Skills, SelfLanguageLearning, true) RULE_CATEGORY_END() RULE_CATEGORY(Pets) diff --git a/zone/client.cpp b/zone/client.cpp index da95a0ad7..19dfeb711 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -1225,9 +1225,14 @@ void Client::ChannelMessageSend(const char* from, const char* to, uint8 chan_num strcpy(&cm->message[0], buffer); QueuePacket(&app); - if ((chan_num == 2) && (ListenerSkill < 100)) { // group message in unmastered language, check for skill up - if (m_pp.languages[language] <= lang_skill) - CheckLanguageSkillIncrease(language, lang_skill); + bool senderCanTrainSelf = RuleB(Client, SelfLanguageLearning); + bool weAreNotSender = strcmp(this->GetCleanName(), cm->sender); + + if (senderCanTrainSelf || weAreNotSender) { + if ((chan_num == 2) && (ListenerSkill < 100)) { // group message in unmastered language, check for skill up + if (m_pp.languages[language] <= lang_skill) + CheckLanguageSkillIncrease(language, lang_skill); + } } }