Override database mount level requirements to match configured values. (#132)

This commit is contained in:
Eva Comaroski 2016-06-01 19:48:01 +03:00 committed by Antz
parent a0a25be120
commit c234125fce
2 changed files with 163 additions and 2 deletions

View File

@ -9809,7 +9809,88 @@ InventoryResult Player::CanUseItem(ItemPrototype const* pProto, bool direct_acti
if (direct_action && GetHonorHighestRankInfo().rank < (uint8)pProto->RequiredHonorRank)
{ return EQUIP_ERR_CANT_EQUIP_RANK; }
if (getLevel() < pProto->RequiredLevel)
// override mount level requirements with the settings from the configuration file
int requiredLevel = pProto->RequiredLevel;
switch(pProto->ItemId) {
case 1132: //regular mounts
case 2411:
case 2414:
case 5655:
case 5656:
case 5665:
case 5668:
case 5864:
case 5872:
case 5873:
case 8563:
case 8588:
case 8591:
case 8592:
case 8595:
case 8629:
case 8631:
case 8632:
case 12325:
case 12326:
case 12327:
case 13321:
case 13322:
case 13331:
case 13332:
case 13333:
case 15277:
case 15290:
case 18241:
case 18242:
case 18243:
case 18244:
case 18245:
case 18246:
case 18247:
case 18248:
requiredLevel = AccountTypes(sWorld.getConfig(CONFIG_UINT32_MIN_TRAIN_MOUNT_LEVEL));
break;
case 12302: // epic mounts
case 12303:
case 12330:
case 12351:
case 12353:
case 12354:
case 13086:
case 13326:
case 13327:
case 13328:
case 13329:
case 13334:
case 13335:
case 18766:
case 18767:
case 18768:
case 18772:
case 18773:
case 18774:
case 18776:
case 18777:
case 18778:
case 18785:
case 18786:
case 18787:
case 18788:
case 18789:
case 18790:
case 18791:
case 18793:
case 18794:
case 18795:
case 18796:
case 18797:
case 18798:
case 18902:
requiredLevel = AccountTypes(sWorld.getConfig(CONFIG_UINT32_MIN_TRAIN_EPIC_MOUNT_LEVEL));
break;
}
if (getLevel() < requiredLevel)
{ return EQUIP_ERR_CANT_EQUIP_LEVEL_I; }
#ifdef ENABLE_ELUNA

View File

@ -302,6 +302,86 @@ void WorldSession::HandleItemQuerySingleOpcode(WorldPacket& recv_data)
std::string description = pProto->Description;
sObjectMgr.GetItemLocaleStrings(pProto->ItemId, loc_idx, &name, &description);
// override mount level requirements with the settings from the configuration file
int requiredLevel = pProto->RequiredLevel;
switch(pProto->ItemId) {
case 1132: //regular mounts
case 2411:
case 2414:
case 5655:
case 5656:
case 5665:
case 5668:
case 5864:
case 5872:
case 5873:
case 8563:
case 8588:
case 8591:
case 8592:
case 8595:
case 8629:
case 8631:
case 8632:
case 12325:
case 12326:
case 12327:
case 13321:
case 13322:
case 13331:
case 13332:
case 13333:
case 15277:
case 15290:
case 18241:
case 18242:
case 18243:
case 18244:
case 18245:
case 18246:
case 18247:
case 18248:
requiredLevel = AccountTypes(sWorld.getConfig(CONFIG_UINT32_MIN_TRAIN_MOUNT_LEVEL));
break;
case 12302: // epic mounts
case 12303:
case 12330:
case 12351:
case 12353:
case 12354:
case 13086:
case 13326:
case 13327:
case 13328:
case 13329:
case 13334:
case 13335:
case 18766:
case 18767:
case 18768:
case 18772:
case 18773:
case 18774:
case 18776:
case 18777:
case 18778:
case 18785:
case 18786:
case 18787:
case 18788:
case 18789:
case 18790:
case 18791:
case 18793:
case 18794:
case 18795:
case 18796:
case 18797:
case 18798:
case 18902:
requiredLevel = AccountTypes(sWorld.getConfig(CONFIG_UINT32_MIN_TRAIN_EPIC_MOUNT_LEVEL));
break;
}
// guess size
WorldPacket data(SMSG_ITEM_QUERY_SINGLE_RESPONSE, 600);
@ -322,7 +402,7 @@ void WorldSession::HandleItemQuerySingleOpcode(WorldPacket& recv_data)
data << pProto->AllowableClass;
data << pProto->AllowableRace;
data << pProto->ItemLevel;
data << pProto->RequiredLevel;
data << requiredLevel;
data << pProto->RequiredSkill;
data << pProto->RequiredSkillRank;
data << pProto->RequiredSpell;