Skip to content
This repository has been archived by the owner on Dec 4, 2020. It is now read-only.

Commit

Permalink
Merge pull request #583 from bruisefest/exp-chain-fix
Browse files Browse the repository at this point in the history
Fix chain exp applying to non-chained kills.
  • Loading branch information
zircon-tpl authored May 7, 2020
2 parents 7fdc91e + d8e9725 commit 87e1ef3
Showing 1 changed file with 102 additions and 99 deletions.
201 changes: 102 additions & 99 deletions src/map/utils/charutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3354,124 +3354,127 @@ namespace charutils
exp = std::fmin(exp, 600.f);
}

if (PMember->expChain.chainTime > gettick() || PMember->expChain.chainTime == 0)
if (mobCheck > EMobDifficulty::DecentChallenge)
{
chainactive = true;
switch (PMember->expChain.chainNumber)

if (PMember->expChain.chainTime > gettick() || PMember->expChain.chainTime == 0)
{
case 0: exp *= 1.0f; break;
case 1: exp *= 1.2f; break;
case 2: exp *= 1.25f; break;
case 3: exp *= 1.3f; break;
case 4: exp *= 1.4f; break;
case 5: exp *= 1.5f; break;
default: exp *= 1.55f; break;
chainactive = true;
switch (PMember->expChain.chainNumber)
{
case 0: exp *= 1.0f; break;
case 1: exp *= 1.2f; break;
case 2: exp *= 1.25f; break;
case 3: exp *= 1.3f; break;
case 4: exp *= 1.4f; break;
case 5: exp *= 1.5f; break;
default: exp *= 1.55f; break;
}
}
else
{
if (PMember->GetMLevel() <= 10) PMember->expChain.chainTime = gettick() + 50000;
else if (PMember->GetMLevel() <= 20) PMember->expChain.chainTime = gettick() + 100000;
else if (PMember->GetMLevel() <= 30) PMember->expChain.chainTime = gettick() + 150000;
else if (PMember->GetMLevel() <= 40) PMember->expChain.chainTime = gettick() + 200000;
else if (PMember->GetMLevel() <= 50) PMember->expChain.chainTime = gettick() + 250000;
else if (PMember->GetMLevel() <= 60) PMember->expChain.chainTime = gettick() + 300000;
else PMember->expChain.chainTime = gettick() + 360000;
PMember->expChain.chainNumber = 1;
}
}
else
{
if (PMember->GetMLevel() <= 10) PMember->expChain.chainTime = gettick() + 50000;
else if (PMember->GetMLevel() <= 20) PMember->expChain.chainTime = gettick() + 100000;
else if (PMember->GetMLevel() <= 30) PMember->expChain.chainTime = gettick() + 150000;
else if (PMember->GetMLevel() <= 40) PMember->expChain.chainTime = gettick() + 200000;
else if (PMember->GetMLevel() <= 50) PMember->expChain.chainTime = gettick() + 250000;
else if (PMember->GetMLevel() <= 60) PMember->expChain.chainTime = gettick() + 300000;
else PMember->expChain.chainTime = gettick() + 360000;
PMember->expChain.chainNumber = 1;
}

if (chainactive && PMember->GetMLevel() <= 10)
{
switch (PMember->expChain.chainNumber)
if (chainactive && PMember->GetMLevel() <= 10)
{
case 0: PMember->expChain.chainTime = gettick() + 50000; break;
case 1: PMember->expChain.chainTime = gettick() + 40000; break;
case 2: PMember->expChain.chainTime = gettick() + 30000; break;
case 3: PMember->expChain.chainTime = gettick() + 20000; break;
case 4: PMember->expChain.chainTime = gettick() + 10000; break;
case 5: PMember->expChain.chainTime = gettick() + 6000; break;
default: PMember->expChain.chainTime = gettick() + 2000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 50000; break;
case 1: PMember->expChain.chainTime = gettick() + 40000; break;
case 2: PMember->expChain.chainTime = gettick() + 30000; break;
case 3: PMember->expChain.chainTime = gettick() + 20000; break;
case 4: PMember->expChain.chainTime = gettick() + 10000; break;
case 5: PMember->expChain.chainTime = gettick() + 6000; break;
default: PMember->expChain.chainTime = gettick() + 2000; break;
}
}
}
else if (chainactive && PMember->GetMLevel() <= 20)
{
switch (PMember->expChain.chainNumber)
else if (chainactive && PMember->GetMLevel() <= 20)
{
case 0: PMember->expChain.chainTime = gettick() + 100000; break;
case 1: PMember->expChain.chainTime = gettick() + 80000; break;
case 2: PMember->expChain.chainTime = gettick() + 60000; break;
case 3: PMember->expChain.chainTime = gettick() + 40000; break;
case 4: PMember->expChain.chainTime = gettick() + 20000; break;
case 5: PMember->expChain.chainTime = gettick() + 8000; break;
default: PMember->expChain.chainTime = gettick() + 4000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 100000; break;
case 1: PMember->expChain.chainTime = gettick() + 80000; break;
case 2: PMember->expChain.chainTime = gettick() + 60000; break;
case 3: PMember->expChain.chainTime = gettick() + 40000; break;
case 4: PMember->expChain.chainTime = gettick() + 20000; break;
case 5: PMember->expChain.chainTime = gettick() + 8000; break;
default: PMember->expChain.chainTime = gettick() + 4000; break;
}
}
}
else if (chainactive && PMember->GetMLevel() <= 30)
{
switch (PMember->expChain.chainNumber)
else if (chainactive && PMember->GetMLevel() <= 30)
{
case 0: PMember->expChain.chainTime = gettick() + 150000; break;
case 1: PMember->expChain.chainTime = gettick() + 120000; break;
case 2: PMember->expChain.chainTime = gettick() + 90000; break;
case 3: PMember->expChain.chainTime = gettick() + 60000; break;
case 4: PMember->expChain.chainTime = gettick() + 30000; break;
case 5: PMember->expChain.chainTime = gettick() + 10000; break;
default: PMember->expChain.chainTime = gettick() + 5000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 150000; break;
case 1: PMember->expChain.chainTime = gettick() + 120000; break;
case 2: PMember->expChain.chainTime = gettick() + 90000; break;
case 3: PMember->expChain.chainTime = gettick() + 60000; break;
case 4: PMember->expChain.chainTime = gettick() + 30000; break;
case 5: PMember->expChain.chainTime = gettick() + 10000; break;
default: PMember->expChain.chainTime = gettick() + 5000; break;
}
}
}
else if (chainactive && PMember->GetMLevel() <= 40)
{
switch (PMember->expChain.chainNumber)
else if (chainactive && PMember->GetMLevel() <= 40)
{
case 0: PMember->expChain.chainTime = gettick() + 200000; break;
case 1: PMember->expChain.chainTime = gettick() + 160000; break;
case 2: PMember->expChain.chainTime = gettick() + 120000; break;
case 3: PMember->expChain.chainTime = gettick() + 80000; break;
case 4: PMember->expChain.chainTime = gettick() + 40000; break;
case 5: PMember->expChain.chainTime = gettick() + 40000; break;
default: PMember->expChain.chainTime = gettick() + 30000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 200000; break;
case 1: PMember->expChain.chainTime = gettick() + 160000; break;
case 2: PMember->expChain.chainTime = gettick() + 120000; break;
case 3: PMember->expChain.chainTime = gettick() + 80000; break;
case 4: PMember->expChain.chainTime = gettick() + 40000; break;
case 5: PMember->expChain.chainTime = gettick() + 40000; break;
default: PMember->expChain.chainTime = gettick() + 30000; break;
}
}
}
else if (chainactive && PMember->GetMLevel() <= 50)
{
switch (PMember->expChain.chainNumber)
else if (chainactive && PMember->GetMLevel() <= 50)
{
case 0: PMember->expChain.chainTime = gettick() + 250000; break;
case 1: PMember->expChain.chainTime = gettick() + 200000; break;
case 2: PMember->expChain.chainTime = gettick() + 150000; break;
case 3: PMember->expChain.chainTime = gettick() + 100000; break;
case 4: PMember->expChain.chainTime = gettick() + 50000; break;
case 5: PMember->expChain.chainTime = gettick() + 50000; break;
default: PMember->expChain.chainTime = gettick() + 50000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 250000; break;
case 1: PMember->expChain.chainTime = gettick() + 200000; break;
case 2: PMember->expChain.chainTime = gettick() + 150000; break;
case 3: PMember->expChain.chainTime = gettick() + 100000; break;
case 4: PMember->expChain.chainTime = gettick() + 50000; break;
case 5: PMember->expChain.chainTime = gettick() + 50000; break;
default: PMember->expChain.chainTime = gettick() + 50000; break;
}
}
}
else if (chainactive && PMember->GetMLevel() <= 60)
{
switch (PMember->expChain.chainNumber)
else if (chainactive && PMember->GetMLevel() <= 60)
{
case 0: PMember->expChain.chainTime = gettick() + 300000; break;
case 1: PMember->expChain.chainTime = gettick() + 240000; break;
case 2: PMember->expChain.chainTime = gettick() + 180000; break;
case 3: PMember->expChain.chainTime = gettick() + 120000; break;
case 4: PMember->expChain.chainTime = gettick() + 90000; break;
case 5: PMember->expChain.chainTime = gettick() + 60000; break;
default: PMember->expChain.chainTime = gettick() + 60000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 300000; break;
case 1: PMember->expChain.chainTime = gettick() + 240000; break;
case 2: PMember->expChain.chainTime = gettick() + 180000; break;
case 3: PMember->expChain.chainTime = gettick() + 120000; break;
case 4: PMember->expChain.chainTime = gettick() + 90000; break;
case 5: PMember->expChain.chainTime = gettick() + 60000; break;
default: PMember->expChain.chainTime = gettick() + 60000; break;
}
}
}
else if (chainactive)
{
switch (PMember->expChain.chainNumber)
else if (chainactive)
{
case 0: PMember->expChain.chainTime = gettick() + 360000; break;
case 1: PMember->expChain.chainTime = gettick() + 300000; break;
case 2: PMember->expChain.chainTime = gettick() + 240000; break;
case 3: PMember->expChain.chainTime = gettick() + 165000; break;
case 4: PMember->expChain.chainTime = gettick() + 105000; break;
case 5: PMember->expChain.chainTime = gettick() + 60000; break;
default: PMember->expChain.chainTime = gettick() + 60000; break;
switch (PMember->expChain.chainNumber)
{
case 0: PMember->expChain.chainTime = gettick() + 360000; break;
case 1: PMember->expChain.chainTime = gettick() + 300000; break;
case 2: PMember->expChain.chainTime = gettick() + 240000; break;
case 3: PMember->expChain.chainTime = gettick() + 165000; break;
case 4: PMember->expChain.chainTime = gettick() + 105000; break;
case 5: PMember->expChain.chainTime = gettick() + 60000; break;
default: PMember->expChain.chainTime = gettick() + 60000; break;
}
}
}

// pet or companion exp penalty needs to be added here
if (distance(PMember->loc.p, PMob->loc.p) > 100)
{
Expand Down

0 comments on commit 87e1ef3

Please sign in to comment.