Core/Level: Fixes crash when trying to GM level over max level of the current Expansion
This commit is contained in:
@@ -6147,79 +6147,78 @@ namespace Game
|
|||||||
|
|
||||||
if (level <= WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel))
|
if (level <= WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel))
|
||||||
return pInfo.levelInfo[level - 1];
|
return pInfo.levelInfo[level - 1];
|
||||||
//else
|
else
|
||||||
//return BuildPlayerLevelInfo(race, _class, level, info);
|
return BuildPlayerLevelInfo(race, _class, level);
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
void BuildPlayerLevelInfo(byte race, Class _class, byte level, PlayerLevelInfo info)
|
PlayerLevelInfo BuildPlayerLevelInfo(Race race, Class _class, uint level)
|
||||||
{
|
{
|
||||||
// base data (last known level)
|
// base data (last known level)
|
||||||
info = _playerInfo[race][_class].levelInfo[WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel) - 1];
|
var info = _playerInfo[(byte)race][(int)_class].levelInfo[WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel) - 1];
|
||||||
|
|
||||||
// if conversion from uint32 to uint8 causes unexpected behaviour, change lvl to uint32
|
|
||||||
for (int lvl = WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel) - 1; lvl < level; ++lvl)
|
for (int lvl = WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel) - 1; lvl < level; ++lvl)
|
||||||
{
|
{
|
||||||
switch (_class)
|
switch (_class)
|
||||||
{
|
{
|
||||||
case Class.Warrior:
|
case Class.Warrior:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 23 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[0] += (lvl > 23 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
info.stats[STAT_STAMINA] += (lvl > 23 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[1] += (lvl > 23 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
info.stats[STAT_AGILITY] += (lvl > 36 ? 1 : (lvl > 6 && (lvl % 2) ? 1 : 0));
|
info.stats[2] += (lvl > 36 ? 1 : (lvl > 6 && (lvl % 2) != 0 ? 1 : 0));
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 9 && !(lvl % 2) ? 1 : 0);
|
info.stats[3] += (lvl > 9 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
case CLASS_PALADIN:
|
case Class.Paladin:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 3 ? 1 : 0);
|
info.stats[0] += (lvl > 3 ? 1 : 0);
|
||||||
info.stats[STAT_STAMINA] += (lvl > 33 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[1] += (lvl > 33 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
info.stats[STAT_AGILITY] += (lvl > 38 ? 1 : (lvl > 7 && !(lvl % 2) ? 1 : 0));
|
info.stats[2] += (lvl > 38 ? 1 : (lvl > 7 && (lvl % 2) == 0 ? 1 : 0));
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 6 && (lvl % 2) ? 1 : 0);
|
info.stats[3] += (lvl > 6 && (lvl % 2) != 0 ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
case CLASS_HUNTER:
|
case Class.Hunter:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 4 ? 1 : 0);
|
info.stats[0] += (lvl > 4 ? 1 : 0);
|
||||||
info.stats[STAT_STAMINA] += (lvl > 4 ? 1 : 0);
|
info.stats[1] += (lvl > 4 ? 1 : 0);
|
||||||
info.stats[STAT_AGILITY] += (lvl > 33 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[2] += (lvl > 33 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 8 && (lvl % 2) ? 1 : 0);
|
info.stats[3] += (lvl > 8 && (lvl % 2) != 0 ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
case CLASS_ROGUE:
|
case Class.Rogue:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 5 ? 1 : 0);
|
info.stats[0] += (lvl > 5 ? 1 : 0);
|
||||||
info.stats[STAT_STAMINA] += (lvl > 4 ? 1 : 0);
|
info.stats[1] += (lvl > 4 ? 1 : 0);
|
||||||
info.stats[STAT_AGILITY] += (lvl > 16 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[2] += (lvl > 16 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 8 && !(lvl % 2) ? 1 : 0);
|
info.stats[3] += (lvl > 8 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
case CLASS_PRIEST:
|
case Class.Priest:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 9 && !(lvl % 2) ? 1 : 0);
|
info.stats[0] += (lvl > 9 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
info.stats[STAT_STAMINA] += (lvl > 5 ? 1 : 0);
|
info.stats[1] += (lvl > 5 ? 1 : 0);
|
||||||
info.stats[STAT_AGILITY] += (lvl > 38 ? 1 : (lvl > 8 && (lvl % 2) ? 1 : 0));
|
info.stats[2] += (lvl > 38 ? 1 : (lvl > 8 && (lvl % 2) != 0 ? 1 : 0));
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 22 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[3] += (lvl > 22 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
break;
|
break;
|
||||||
case CLASS_SHAMAN:
|
case Class.Shaman:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 34 ? 1 : (lvl > 6 && (lvl % 2) ? 1 : 0));
|
info.stats[0] += (lvl > 34 ? 1 : (lvl > 6 && (lvl % 2) != 0 ? 1 : 0));
|
||||||
info.stats[STAT_STAMINA] += (lvl > 4 ? 1 : 0);
|
info.stats[1] += (lvl > 4 ? 1 : 0);
|
||||||
info.stats[STAT_AGILITY] += (lvl > 7 && !(lvl % 2) ? 1 : 0);
|
info.stats[2] += (lvl > 7 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 5 ? 1 : 0);
|
info.stats[3] += (lvl > 5 ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
case CLASS_MAGE:
|
case Class.Mage:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 9 && !(lvl % 2) ? 1 : 0);
|
info.stats[0] += (lvl > 9 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
info.stats[STAT_STAMINA] += (lvl > 5 ? 1 : 0);
|
info.stats[1] += (lvl > 5 ? 1 : 0);
|
||||||
info.stats[STAT_AGILITY] += (lvl > 9 && !(lvl % 2) ? 1 : 0);
|
info.stats[2] += (lvl > 9 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 24 ? 2 : (lvl > 1 ? 1 : 0));
|
info.stats[3] += (lvl > 24 ? 2 : (lvl > 1 ? 1 : 0));
|
||||||
break;
|
break;
|
||||||
case CLASS_WARLOCK:
|
case Class.Warlock:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 9 && !(lvl % 2) ? 1 : 0);
|
info.stats[0] += (lvl > 9 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
info.stats[STAT_STAMINA] += (lvl > 38 ? 2 : (lvl > 3 ? 1 : 0));
|
info.stats[1] += (lvl > 38 ? 2 : (lvl > 3 ? 1 : 0));
|
||||||
info.stats[STAT_AGILITY] += (lvl > 9 && !(lvl % 2) ? 1 : 0);
|
info.stats[2] += (lvl > 9 && (lvl % 2) == 0 ? 1 : 0);
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 33 ? 2 : (lvl > 2 ? 1 : 0));
|
info.stats[3] += (lvl > 33 ? 2 : (lvl > 2 ? 1 : 0));
|
||||||
break;
|
break;
|
||||||
case CLASS_DRUID:
|
case Class.Druid:
|
||||||
info.stats[STAT_STRENGTH] += (lvl > 38 ? 2 : (lvl > 6 && (lvl % 2) ? 1 : 0));
|
info.stats[0] += (lvl > 38 ? 2 : (lvl > 6 && (lvl % 2) != 0 ? 1 : 0));
|
||||||
info.stats[STAT_STAMINA] += (lvl > 32 ? 2 : (lvl > 4 ? 1 : 0));
|
info.stats[1] += (lvl > 32 ? 2 : (lvl > 4 ? 1 : 0));
|
||||||
info.stats[STAT_AGILITY] += (lvl > 38 ? 2 : (lvl > 8 && (lvl % 2) ? 1 : 0));
|
info.stats[2] += (lvl > 38 ? 2 : (lvl > 8 && (lvl % 2) != 0 ? 1 : 0));
|
||||||
info.stats[STAT_INTELLECT] += (lvl > 38 ? 3 : (lvl > 4 ? 1 : 0));
|
info.stats[3] += (lvl > 38 ? 3 : (lvl > 4 ? 1 : 0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return info;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
//Pets
|
//Pets
|
||||||
public void LoadPetLevelInfo()
|
public void LoadPetLevelInfo()
|
||||||
|
|||||||
Reference in New Issue
Block a user