diff --git a/changelog.txt b/changelog.txt index f12dfd0ae..e27e7f44a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,11 @@ EQEMu Changelog (Started on Sept 24, 2003 15:50) ------------------------------------------------------- +== 02/23/2015 == +Noudess: Allow for a rule to set starting swimming value. +If the rule does not exist, it uses the old hard coded overrides. I moved +the swimming override to char create instead of setting it every time a char +enters a zone. + == 02/21/2015 == Noudess: Starting erudites that were supposed to start in paineel were landing in erudin on Titanium. Fixed to be paineel. diff --git a/common/ruletypes.h b/common/ruletypes.h index 12a8a0737..7be048385 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -133,6 +133,7 @@ RULE_INT ( Skills, MaxTrainTradeskills, 21 ) RULE_BOOL ( Skills, UseLimitTradeskillSearchSkillDiff, true ) RULE_INT ( Skills, MaxTradeskillSearchSkillDiff, 50 ) RULE_INT ( Skills, MaxTrainSpecializations, 50 ) // Max level a GM trainer will train casting specializations +RULE_INT ( Skills, SwimmingStartValue, 100 ) RULE_CATEGORY_END() RULE_CATEGORY( Pets ) diff --git a/world/client.cpp b/world/client.cpp index 540dfa683..2fbb6ffb9 100644 --- a/world/client.cpp +++ b/world/client.cpp @@ -1430,6 +1430,13 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc) SetClassStartingSkills(&pp); SetClassLanguages(&pp); pp.skills[SkillSenseHeading] = 200; + + // Allow server to force swimming training from a configured level + std::string value; + bool userule; + userule=RuleManager::Instance()->GetRule("Skills:SwimmingStartValue", value); + pp.skills[SkillSwimming] = (userule) ? atoi(value.c_str()) : 100; + // strcpy(pp.servername, WorldConfig::get()->ShortName.c_str()); diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index f93f83018..bd856fc45 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -1431,10 +1431,6 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) if (m_pp.ldon_points_tak < 0 || m_pp.ldon_points_tak > 2000000000){ m_pp.ldon_points_tak = 0; } if (m_pp.ldon_points_available < 0 || m_pp.ldon_points_available > 2000000000){ m_pp.ldon_points_available = 0; } - /* Set Swimming Skill 100 by default if under 100 */ - if (GetSkill(SkillSwimming) < 100) - SetSkill(SkillSwimming, 100); - /* Initialize AA's : Move to function eventually */ for (uint32 a = 0; a < MAX_PP_AA_ARRAY; a++){ aa[a] = &m_pp.aa_array[a]; } query = StringFormat(