mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-14 03:11:28 +00:00
Merge pull request #381 from noudess/master
Allow server customization of swimming start value.
This commit is contained in:
commit
bd9665e35b
@ -18,6 +18,13 @@ Notes:
|
|||||||
- Wearable equipment types still register as valid light sources when in general slots (needs exemption criteria)
|
- Wearable equipment types still register as valid light sources when in general slots (needs exemption criteria)
|
||||||
|
|
||||||
== 02/23/2015 ==
|
== 02/23/2015 ==
|
||||||
|
Noudess: Allow for a rule to set starting swimming && SenseHeading value.
|
||||||
|
I moved the swimming override to char create instead of setting it
|
||||||
|
every time a char enters a zone.
|
||||||
|
|
||||||
|
Also added rules to not ignore, but rather forrce sense heading packets to be
|
||||||
|
used to train it instead of maxing it out like before.
|
||||||
|
|
||||||
Uleat: Fix for RoF+ clients showing active 'Return Home' button when action is not available (swapped 'GoHome' and 'Enabled' fields in RoF-era CharacterSelectEntry structs)
|
Uleat: Fix for RoF+ clients showing active 'Return Home' button when action is not available (swapped 'GoHome' and 'Enabled' fields in RoF-era CharacterSelectEntry structs)
|
||||||
|
|
||||||
== 02/21/2015 ==
|
== 02/21/2015 ==
|
||||||
|
|||||||
@ -133,6 +133,9 @@ RULE_INT ( Skills, MaxTrainTradeskills, 21 )
|
|||||||
RULE_BOOL ( Skills, UseLimitTradeskillSearchSkillDiff, true )
|
RULE_BOOL ( Skills, UseLimitTradeskillSearchSkillDiff, true )
|
||||||
RULE_INT ( Skills, MaxTradeskillSearchSkillDiff, 50 )
|
RULE_INT ( Skills, MaxTradeskillSearchSkillDiff, 50 )
|
||||||
RULE_INT ( Skills, MaxTrainSpecializations, 50 ) // Max level a GM trainer will train casting specializations
|
RULE_INT ( Skills, MaxTrainSpecializations, 50 ) // Max level a GM trainer will train casting specializations
|
||||||
|
RULE_INT ( Skills, SwimmingStartValue, 100 )
|
||||||
|
RULE_BOOL ( Skills, TrainSenseHeading, false )
|
||||||
|
RULE_INT ( Skills, SenseHeadingStartValue, 200 )
|
||||||
RULE_CATEGORY_END()
|
RULE_CATEGORY_END()
|
||||||
|
|
||||||
RULE_CATEGORY( Pets )
|
RULE_CATEGORY( Pets )
|
||||||
|
|||||||
@ -1430,7 +1430,10 @@ bool Client::OPCharCreate(char *name, CharCreate_Struct *cc)
|
|||||||
SetRaceStartingSkills(&pp);
|
SetRaceStartingSkills(&pp);
|
||||||
SetClassStartingSkills(&pp);
|
SetClassStartingSkills(&pp);
|
||||||
SetClassLanguages(&pp);
|
SetClassLanguages(&pp);
|
||||||
pp.skills[SkillSenseHeading] = 200;
|
|
||||||
|
pp.skills[SkillSwimming] = RuleI(Skills, SwimmingStartValue);
|
||||||
|
pp.skills[SkillSenseHeading] = RuleI(Skills, SenseHeadingStartValue);
|
||||||
|
|
||||||
// strcpy(pp.servername, WorldConfig::get()->ShortName.c_str());
|
// strcpy(pp.servername, WorldConfig::get()->ShortName.c_str());
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -332,7 +332,13 @@ void MapOpcodes()
|
|||||||
ConnectedOpcodes[OP_Save] = &Client::Handle_OP_Save;
|
ConnectedOpcodes[OP_Save] = &Client::Handle_OP_Save;
|
||||||
ConnectedOpcodes[OP_SaveOnZoneReq] = &Client::Handle_OP_SaveOnZoneReq;
|
ConnectedOpcodes[OP_SaveOnZoneReq] = &Client::Handle_OP_SaveOnZoneReq;
|
||||||
ConnectedOpcodes[OP_SelectTribute] = &Client::Handle_OP_SelectTribute;
|
ConnectedOpcodes[OP_SelectTribute] = &Client::Handle_OP_SelectTribute;
|
||||||
ConnectedOpcodes[OP_SenseHeading] = &Client::Handle_OP_Ignore;
|
|
||||||
|
// Use or Ignore sense heading based on rule.
|
||||||
|
bool train=RuleB(Skills, TrainSenseHeading);
|
||||||
|
|
||||||
|
ConnectedOpcodes[OP_SenseHeading] =
|
||||||
|
(train) ? &Client::Handle_OP_SenseHeading : &Client::Handle_OP_Ignore;
|
||||||
|
|
||||||
ConnectedOpcodes[OP_SenseTraps] = &Client::Handle_OP_SenseTraps;
|
ConnectedOpcodes[OP_SenseTraps] = &Client::Handle_OP_SenseTraps;
|
||||||
ConnectedOpcodes[OP_SetGuildMOTD] = &Client::Handle_OP_SetGuildMOTD;
|
ConnectedOpcodes[OP_SetGuildMOTD] = &Client::Handle_OP_SetGuildMOTD;
|
||||||
ConnectedOpcodes[OP_SetRunMode] = &Client::Handle_OP_SetRunMode;
|
ConnectedOpcodes[OP_SetRunMode] = &Client::Handle_OP_SetRunMode;
|
||||||
@ -1431,10 +1437,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_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; }
|
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 */
|
/* Initialize AA's : Move to function eventually */
|
||||||
for (uint32 a = 0; a < MAX_PP_AA_ARRAY; a++){ aa[a] = &m_pp.aa_array[a]; }
|
for (uint32 a = 0; a < MAX_PP_AA_ARRAY; a++){ aa[a] = &m_pp.aa_array[a]; }
|
||||||
query = StringFormat(
|
query = StringFormat(
|
||||||
@ -11653,6 +11655,27 @@ void Client::Handle_OP_SelectTribute(const EQApplicationPacket *app)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Client::Handle_OP_SenseHeading(const EQApplicationPacket *app)
|
||||||
|
{
|
||||||
|
if (!HasSkill(SkillSenseHeading))
|
||||||
|
return;
|
||||||
|
|
||||||
|
int chancemod=0;
|
||||||
|
|
||||||
|
// The client seems to limit sense heading packets based on skill
|
||||||
|
// level. So if we're really low, we don't hit this routine very often.
|
||||||
|
// I think it's the GUI deciding when to skill you up.
|
||||||
|
// So, I'm adding a mod here which is larger at lower levels so
|
||||||
|
// very low levels get a much better chance to skill up when the GUI
|
||||||
|
// eventually sends a message.
|
||||||
|
if (GetLevel() <= 8)
|
||||||
|
chancemod += (9-level) * 10;
|
||||||
|
|
||||||
|
CheckIncreaseSkill(SkillSenseHeading, nullptr, chancemod);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void Client::Handle_OP_SenseTraps(const EQApplicationPacket *app)
|
void Client::Handle_OP_SenseTraps(const EQApplicationPacket *app)
|
||||||
{
|
{
|
||||||
if (!HasSkill(SkillSenseTraps))
|
if (!HasSkill(SkillSenseTraps))
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
set to nullptr and 0 respectively since they aren't used when adding
|
set to nullptr and 0 respectively since they aren't used when adding
|
||||||
an alias. The function pointers being equal is makes it an alias.
|
an alias. The function pointers being equal is makes it an alias.
|
||||||
The access level you set with command_add is only a default if
|
The access level you set with command_add is only a default if
|
||||||
the command isn't listed in the addon.ini file.
|
the command isn't listed in the commands db table.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user