aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorSubv <s.v.h21@hotmail.com>2012-08-04 11:33:49 -0500
committerSubv <s.v.h21@hotmail.com>2012-08-04 11:33:49 -0500
commitd9da2e8e50f32601247641b921fa693f33d93033 (patch)
tree54a3d867ecd8bcded04a983b6fdb10460f9e57eb /src/server/game/Entities/Player
parent5518daa74b6db8852ca000ee4e3a3fee0418596b (diff)
Core/Player: Use DBC data to set the correct amount of hp and mana based on player level and class
Diffstat (limited to 'src/server/game/Entities/Player')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp22
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h14
2 files changed, 11 insertions, 25 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 6b786b79985..d9f0935633a 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -3062,15 +3062,15 @@ void Player::GiveLevel(uint8 level)
PlayerLevelInfo info;
sObjectMgr->GetPlayerLevelInfo(getRace(), getClass(), level, &info);
- PlayerClassLevelInfo classInfo;
- sObjectMgr->GetPlayerClassLevelInfo(getClass(), level, &classInfo);
+ uint32 basehp = 0, basemana = 0;
+ sObjectMgr->GetPlayerClassLevelInfo(getClass(), level, basehp, basemana);
// send levelup info to client
WorldPacket data(SMSG_LEVELUP_INFO, (4+4+MAX_STORED_POWERS*4+MAX_STATS*4));
data << uint32(level);
- data << uint32(int32(classInfo.basehealth) - int32(GetCreateHealth()));
+ data << uint32(int32(basehp) - int32(GetCreateHealth()));
// for (int i = 0; i < MAX_STORED_POWERS; ++i) // Powers loop (0-10)
- data << uint32(int32(classInfo.basemana) - int32(GetCreateMana()));
+ data << uint32(int32(basemana) - int32(GetCreateMana()));
data << uint32(0);
data << uint32(0);
data << uint32(0);
@@ -3096,8 +3096,8 @@ void Player::GiveLevel(uint8 level)
for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i)
SetCreateStat(Stats(i), info.stats[i]);
- SetCreateHealth(classInfo.basehealth);
- SetCreateMana(classInfo.basemana);
+ SetCreateHealth(basehp);
+ SetCreateMana(basemana);
InitTalentForLevel();
InitTaxiNodesForLevel();
@@ -3191,8 +3191,8 @@ void Player::InitStatsForLevel(bool reapplyMods)
if (reapplyMods) //reapply stats values only on .reset stats (level) command
_RemoveAllStatBonuses();
- PlayerClassLevelInfo classInfo;
- sObjectMgr->GetPlayerClassLevelInfo(getClass(), getLevel(), &classInfo);
+ uint32 basehp = 0, basemana = 0;
+ sObjectMgr->GetPlayerClassLevelInfo(getClass(), getLevel(), basehp, basemana);
PlayerLevelInfo info;
sObjectMgr->GetPlayerLevelInfo(getRace(), getClass(), getLevel(), &info);
@@ -3219,10 +3219,10 @@ void Player::InitStatsForLevel(bool reapplyMods)
for (uint8 i = STAT_STRENGTH; i < MAX_STATS; ++i)
SetStat(Stats(i), info.stats[i]);
- SetCreateHealth(classInfo.basehealth);
+ SetCreateHealth(basehp);
//set create powers
- SetCreateMana(classInfo.basemana);
+ SetCreateMana(basemana);
SetArmor(int32(m_createStats[STAT_AGILITY]*2));
@@ -3302,7 +3302,7 @@ void Player::InitStatsForLevel(bool reapplyMods)
for (uint8 i = POWER_MANA; i < MAX_POWERS; ++i)
SetMaxPower(Powers(i), GetCreatePowers(Powers(i)));
- SetMaxHealth(classInfo.basehealth); // stamina bonus will applied later
+ SetMaxHealth(basehp); // stamina bonus will applied later
// cleanup mounted state (it will set correctly at aura loading if player saved at mount.
SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 48249a56c60..87b459f0642 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -221,20 +221,6 @@ struct PlayerCreateInfoItem
typedef std::list<PlayerCreateInfoItem> PlayerCreateInfoItems;
-struct PlayerClassLevelInfo
-{
- PlayerClassLevelInfo() : basehealth(0), basemana(0) {}
- uint16 basehealth;
- uint16 basemana;
-};
-
-struct PlayerClassInfo
-{
- PlayerClassInfo() : levelInfo(NULL) { }
-
- PlayerClassLevelInfo* levelInfo; //[level-1] 0..MaxPlayerLevel-1
-};
-
struct PlayerLevelInfo
{
PlayerLevelInfo() { for (uint8 i=0; i < MAX_STATS; ++i) stats[i] = 0; }