mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
63add43ec2 | ||
|
|
1cf462d6ee |
2
sql/world/base/dungeon_karazhan.sql
Normal file
2
sql/world/base/dungeon_karazhan.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Restore Enchanting formula drops to their pre-3.1 rates
|
||||||
|
UPDATE `creature_loot_template` SET `Chance` = 5 WHERE `Item` IN (22559, 22561, 22545, 22560);
|
||||||
@@ -143,6 +143,12 @@ void IndividualProgression::AdjustStats(Player* player, float computedAdjustment
|
|||||||
player->CastCustomSpell(player, ABSORB_SPELL, &bp1, nullptr, nullptr, false);
|
player->CastCustomSpell(player, ABSORB_SPELL, &bp1, nullptr, nullptr, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float IndividualProgression::ComputeVanillaAdjustment(Player *player, float configAdjustmentValue)
|
||||||
|
{
|
||||||
|
float adjustmentApplyPercent = (player->getLevel() - 10.0f) / 50.0f;
|
||||||
|
return player->getLevel() > 10 ? (1.0f - (configAdjustmentValue * adjustmentApplyPercent)) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the highest progression level achieved by an account
|
* Gets the highest progression level achieved by an account
|
||||||
* Note that this method makes a direct, non-sync DB call and should be used sparingly
|
* Note that this method makes a direct, non-sync DB call and should be used sparingly
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ enum BuffSpells
|
|||||||
ABSORB_SPELL = 89505,
|
ABSORB_SPELL = 89505,
|
||||||
RANGED_HASTE_SPELL = 89507,
|
RANGED_HASTE_SPELL = 89507,
|
||||||
SPELL_RUNE_TAP = 48982,
|
SPELL_RUNE_TAP = 48982,
|
||||||
|
SPELL_LIFE_STEAL = 20004,
|
||||||
IPP_PHASE = 89509
|
IPP_PHASE = 89509
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -161,6 +162,7 @@ public:
|
|||||||
void checkKillProgression(Player* player, Creature* killed);
|
void checkKillProgression(Player* player, Creature* killed);
|
||||||
static void LoadCustomProgressionEntries(const std::string& customProgressionString);
|
static void LoadCustomProgressionEntries(const std::string& customProgressionString);
|
||||||
static void AdjustStats(Player* player, float computedAdjustment, float computedHealingAdjustment);
|
static void AdjustStats(Player* player, float computedAdjustment, float computedHealingAdjustment);
|
||||||
|
static float ComputeVanillaAdjustment(Player* player, float configAdjustmentValue);
|
||||||
static uint8 GetAccountProgression(uint32 accountId);
|
static uint8 GetAccountProgression(uint32 accountId);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -475,7 +475,13 @@ public:
|
|||||||
void ModifyHealReceived(Unit* /*target*/, Unit *healer, uint32 &heal, SpellInfo const *spellInfo) override
|
void ModifyHealReceived(Unit* /*target*/, Unit *healer, uint32 &heal, SpellInfo const *spellInfo) override
|
||||||
{
|
{
|
||||||
// Skip potions, bandages, percentage based heals like Rune Tap, etc.
|
// Skip potions, bandages, percentage based heals like Rune Tap, etc.
|
||||||
if (!sIndividualProgression->enabled || spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) || spellInfo->Mechanic == MECHANIC_BANDAGE || spellInfo->Id == SPELL_RUNE_TAP)
|
if (!sIndividualProgression->enabled || spellInfo->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES) || spellInfo->Mechanic == MECHANIC_BANDAGE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip percentage based heals or spells already nerfed by damage reduction
|
||||||
|
if (spellInfo->Id == SPELL_RUNE_TAP || spellInfo->Id == SPELL_LIFE_STEAL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -493,7 +499,7 @@ public:
|
|||||||
float gearAdjustment = computeTotalGearTuning(player);
|
float gearAdjustment = computeTotalGearTuning(player);
|
||||||
if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40))
|
if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40))
|
||||||
{
|
{
|
||||||
heal *= (sIndividualProgression->vanillaHealingAdjustment - gearAdjustment);
|
heal *= (sIndividualProgression->ComputeVanillaAdjustment(player, sIndividualProgression->vanillaHealingAdjustment) - gearAdjustment);
|
||||||
}
|
}
|
||||||
else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
||||||
{
|
{
|
||||||
@@ -519,7 +525,7 @@ public:
|
|||||||
float gearAdjustment = computeTotalGearTuning(player);
|
float gearAdjustment = computeTotalGearTuning(player);
|
||||||
if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40))
|
if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40))
|
||||||
{
|
{
|
||||||
damage *= (sIndividualProgression->vanillaPowerAdjustment - gearAdjustment);
|
damage *= (sIndividualProgression->ComputeVanillaAdjustment(player, sIndividualProgression->vanillaPowerAdjustment) - gearAdjustment);
|
||||||
}
|
}
|
||||||
else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
||||||
{
|
{
|
||||||
@@ -545,7 +551,7 @@ public:
|
|||||||
float gearAdjustment = computeTotalGearTuning(player);
|
float gearAdjustment = computeTotalGearTuning(player);
|
||||||
if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40))
|
if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_NAXX40))
|
||||||
{
|
{
|
||||||
damage *= (sIndividualProgression->vanillaPowerAdjustment - gearAdjustment);
|
damage *= (sIndividualProgression->ComputeVanillaAdjustment(player, sIndividualProgression->vanillaPowerAdjustment) - gearAdjustment);
|
||||||
}
|
}
|
||||||
else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
else if (!sIndividualProgression->hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user