Update to SE_BalanaceMana, SE_BalanceHP to support limit value which caps max mana/hp that can be taken per player.

This commit is contained in:
KayenEQ
2014-06-23 08:37:23 -04:00
parent 41b190930f
commit 58175a5442
7 changed files with 47 additions and 21 deletions
+17 -6
View File
@@ -504,7 +504,7 @@ void Raid::HealGroup(uint32 heal_amt, Mob* caster, uint32 gid, int32 range)
}
void Raid::BalanceHP(int32 penalty, uint32 gid, int32 range, Mob* caster)
void Raid::BalanceHP(int32 penalty, uint32 gid, int32 range, Mob* caster, int32 limit)
{
if (!caster)
return;
@@ -512,7 +512,7 @@ void Raid::BalanceHP(int32 penalty, uint32 gid, int32 range, Mob* caster)
if (!range)
range = 200;
int dmgtaken = 0, numMem = 0;
int dmgtaken = 0, numMem = 0, dmgtaken_tmp = 0;
int gi = 0;
float distance;
@@ -525,7 +525,12 @@ void Raid::BalanceHP(int32 penalty, uint32 gid, int32 range, Mob* caster)
{
distance = caster->DistNoRoot(*members[gi].member);
if(distance <= range2){
dmgtaken += (members[gi].member->GetMaxHP() - members[gi].member->GetHP());
dmgtaken_tmp = members[gi].member->GetMaxHP() - members[gi].member->GetHP();
if (limit && (dmgtaken_tmp > limit))
dmgtaken_tmp = limit;
dmgtaken += (dmgtaken_tmp);
numMem += 1;
}
}
@@ -555,7 +560,7 @@ void Raid::BalanceHP(int32 penalty, uint32 gid, int32 range, Mob* caster)
}
}
void Raid::BalanceMana(int32 penalty, uint32 gid, int32 range, Mob* caster)
void Raid::BalanceMana(int32 penalty, uint32 gid, int32 range, Mob* caster, int32 limit)
{
if (!caster)
return;
@@ -566,7 +571,7 @@ void Raid::BalanceMana(int32 penalty, uint32 gid, int32 range, Mob* caster)
float distance;
float range2 = range*range;
int manataken = 0, numMem = 0;
int manataken = 0, numMem = 0, manataken_tmp = 0;
int gi = 0;
for(; gi < MAX_RAID_MEMBERS; gi++)
{
@@ -575,7 +580,12 @@ void Raid::BalanceMana(int32 penalty, uint32 gid, int32 range, Mob* caster)
{
distance = caster->DistNoRoot(*members[gi].member);
if(distance <= range2){
manataken += (members[gi].member->GetMaxMana() - members[gi].member->GetMana());
manataken_tmp = members[gi].member->GetMaxMana() - members[gi].member->GetMana();
if (limit && (manataken_tmp > limit))
manataken_tmp = limit;
manataken += (manataken_tmp);
numMem += 1;
}
}
@@ -584,6 +594,7 @@ void Raid::BalanceMana(int32 penalty, uint32 gid, int32 range, Mob* caster)
manataken += manataken * penalty / 100;
manataken /= numMem;
for(gi = 0; gi < MAX_RAID_MEMBERS; gi++)
{
if(members[gi].member){