mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
Add config option for custom progression
This commit is contained in:
@@ -268,3 +268,27 @@ IndividualProgression.DeathKnightUnlockProgression = 11
|
|||||||
#
|
#
|
||||||
|
|
||||||
IndividualProgression.DeathKnightStartingProgression = 11
|
IndividualProgression.DeathKnightStartingProgression = 11
|
||||||
|
#
|
||||||
|
# IndividualProgression.DisableDefaultProgression
|
||||||
|
# Description: Disable the regular progression flow, so progression must be advanced through custom creature progression entries
|
||||||
|
#
|
||||||
|
# Default: 0 - Disabled
|
||||||
|
# 1 - Enabled
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
IndividualProgression.DisableDefaultProgression = 0
|
||||||
|
#
|
||||||
|
# IndividualProgression.CustomProgression
|
||||||
|
# Description: A list of creature IDs paired to progression states. When a creature on the list is defeated by a player,
|
||||||
|
# the player will be set to that progression state. Used for custom, non-standard progression.
|
||||||
|
# Not needed for regular, Blizz-like progress through expansions, which works by default.
|
||||||
|
# Example: IndividualProgression.CustomProgression="448 6, 639 11"
|
||||||
|
# This example would allow players access to TBC content for defeating Hogger (entry 448), and Northrend content for defeating VanCleef (entry 639)
|
||||||
|
# Leave empty to disable (default.)
|
||||||
|
#
|
||||||
|
# Default: "" - Disabled (default)
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
IndividualProgression.CustomProgression = ""
|
||||||
|
|||||||
@@ -208,12 +208,39 @@ uint8 IndividualProgression::GetAccountProgression(uint32 accountId)
|
|||||||
return progressionLevel;
|
return progressionLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IndividualProgression::LoadCustomProgressionEntries(std::string const& customProgressionString)
|
||||||
|
{
|
||||||
|
std::string delimitedValue;
|
||||||
|
std::stringstream customProgressionStream;
|
||||||
|
|
||||||
|
customProgressionStream.str(customProgressionString);
|
||||||
|
while (std::getline(customProgressionStream, delimitedValue, ','))
|
||||||
|
{
|
||||||
|
std::string pairOne, pairTwo;
|
||||||
|
std::stringstream progressionPairStream(delimitedValue);
|
||||||
|
progressionPairStream>>pairOne>>pairTwo;
|
||||||
|
uint32 creatureEntryId = atoi(pairOne.c_str());
|
||||||
|
uint8 progressionValue = atoi(pairTwo.c_str());
|
||||||
|
sIndividualProgression->customProgressionMap[creatureEntryId] = progressionValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IndividualProgression::hasCustomProgressionValue(uint32 creatureEntry)
|
||||||
|
{
|
||||||
|
if (customProgressionMap.empty())
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return (customProgressionMap.find(creatureEntry) != customProgressionMap.end());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class IndividualPlayerProgression_WorldScript : public WorldScript
|
class IndividualPlayerProgression_WorldScript : public WorldScript
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
static void LoadConfig()
|
static void LoadConfig()
|
||||||
{
|
{
|
||||||
|
sIndividualProgression->customProgressionMap.clear();
|
||||||
sIndividualProgression->enabled = sConfigMgr->GetOption<bool>("IndividualProgression.Enable", true);
|
sIndividualProgression->enabled = sConfigMgr->GetOption<bool>("IndividualProgression.Enable", true);
|
||||||
sIndividualProgression->vanillaPowerAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaPowerAdjustment", 1);
|
sIndividualProgression->vanillaPowerAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaPowerAdjustment", 1);
|
||||||
sIndividualProgression->vanillaHealingAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaHealingAdjustment", 1);
|
sIndividualProgression->vanillaHealingAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaHealingAdjustment", 1);
|
||||||
@@ -232,9 +259,11 @@ private:
|
|||||||
sIndividualProgression->startingProgression = sConfigMgr->GetOption<uint8>("IndividualProgression.StartingProgression", 0);
|
sIndividualProgression->startingProgression = sConfigMgr->GetOption<uint8>("IndividualProgression.StartingProgression", 0);
|
||||||
sIndividualProgression->questMoneyAtLevelCap = sConfigMgr->GetOption<bool>("IndividualProgression.QuestMoneyAtLevelCap", true);
|
sIndividualProgression->questMoneyAtLevelCap = sConfigMgr->GetOption<bool>("IndividualProgression.QuestMoneyAtLevelCap", true);
|
||||||
sIndividualProgression->repeatableVanillaQuestsXp = sConfigMgr->GetOption<bool>("IndividualProgression.RepeatableVanillaQuestsXP", true);
|
sIndividualProgression->repeatableVanillaQuestsXp = sConfigMgr->GetOption<bool>("IndividualProgression.RepeatableVanillaQuestsXP", true);
|
||||||
|
sIndividualProgression->disableDefaultProgression = sConfigMgr->GetOption<bool>("IndividualProgression.DisableDefaultProgression", false);
|
||||||
sIndividualProgression->tbcRacesProgressionLevel = sConfigMgr->GetOption<uint8>("IndividualProgression.TbcRacesUnlockProgression", 0);
|
sIndividualProgression->tbcRacesProgressionLevel = sConfigMgr->GetOption<uint8>("IndividualProgression.TbcRacesUnlockProgression", 0);
|
||||||
sIndividualProgression->deathKnightProgressionLevel = sConfigMgr->GetOption<uint8>("IndividualProgression.DeathKnightUnlockProgression", 11);
|
sIndividualProgression->deathKnightProgressionLevel = sConfigMgr->GetOption<uint8>("IndividualProgression.DeathKnightUnlockProgression", 11);
|
||||||
sIndividualProgression->deathKnightStartingProgression = sConfigMgr->GetOption<uint8>("IndividualProgression.DeathKnightStartingProgression", 11);
|
sIndividualProgression->deathKnightStartingProgression = sConfigMgr->GetOption<uint8>("IndividualProgression.DeathKnightStartingProgression", 11);
|
||||||
|
sIndividualProgression->LoadCustomProgressionEntries(sConfigMgr->GetOption<std::string>("IndividualProgression.CustomProgression", ""));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void LoadXpValues()
|
static void LoadXpValues()
|
||||||
|
|||||||
@@ -117,9 +117,10 @@ class IndividualProgression
|
|||||||
public:
|
public:
|
||||||
static IndividualProgression* instance();
|
static IndividualProgression* instance();
|
||||||
|
|
||||||
|
std::map<uint32, uint8> customProgressionMap;
|
||||||
questXpMapType questXpMap;
|
questXpMapType questXpMap;
|
||||||
float vanillaPowerAdjustment, vanillaHealthAdjustment, tbcPowerAdjustment, tbcHealthAdjustment, vanillaHealingAdjustment, tbcHealingAdjustment, previousGearTuning;
|
float vanillaPowerAdjustment, vanillaHealthAdjustment, tbcPowerAdjustment, tbcHealthAdjustment, vanillaHealingAdjustment, tbcHealingAdjustment, previousGearTuning;
|
||||||
bool enabled, questXpFix, hunterPetLevelFix, requirePreAQQuests, enforceGroupRules, fishingFix, simpleConfigOverride, questMoneyAtLevelCap, repeatableVanillaQuestsXp;
|
bool enabled, questXpFix, hunterPetLevelFix, requirePreAQQuests, enforceGroupRules, fishingFix, simpleConfigOverride, questMoneyAtLevelCap, repeatableVanillaQuestsXp, disableDefaultProgression;
|
||||||
int progressionLimit, startingProgression, tbcRacesProgressionLevel, deathKnightProgressionLevel, deathKnightStartingProgression;
|
int progressionLimit, startingProgression, tbcRacesProgressionLevel, deathKnightProgressionLevel, deathKnightStartingProgression;
|
||||||
|
|
||||||
bool hasPassedProgression(Player* player, ProgressionState state) const;
|
bool hasPassedProgression(Player* player, ProgressionState state) const;
|
||||||
@@ -132,6 +133,8 @@ public:
|
|||||||
void AdjustVanillaStats(Player* player) const;
|
void AdjustVanillaStats(Player* player) const;
|
||||||
void AdjustTBCStats(Player* player) const;
|
void AdjustTBCStats(Player* player) const;
|
||||||
void AdjustWotLKStats(Player* player) const;
|
void AdjustWotLKStats(Player* player) const;
|
||||||
|
bool hasCustomProgressionValue(uint32 creatureEntry);
|
||||||
|
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 uint8 GetAccountProgression(uint32 accountId);
|
static uint8 GetAccountProgression(uint32 accountId);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -209,7 +209,10 @@ public:
|
|||||||
switch (quest->GetQuestId())
|
switch (quest->GetQuestId())
|
||||||
{
|
{
|
||||||
case MIGHT_OF_KALIMDOR:
|
case MIGHT_OF_KALIMDOR:
|
||||||
|
if (!sIndividualProgression->disableDefaultProgression)
|
||||||
|
{
|
||||||
sIndividualProgression->UpdateProgressionState(player, PROGRESSION_PRE_AQ);
|
sIndividualProgression->UpdateProgressionState(player, PROGRESSION_PRE_AQ);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case QUEST_MORROWGRAIN:
|
case QUEST_MORROWGRAIN:
|
||||||
case QUEST_TROLL_NECKLACE:
|
case QUEST_TROLL_NECKLACE:
|
||||||
@@ -257,6 +260,15 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sIndividualProgression->hasCustomProgressionValue(killed->GetEntry()))
|
||||||
|
{
|
||||||
|
sIndividualProgression->UpdateProgressionState(killer, static_cast<ProgressionState>(sIndividualProgression->customProgressionMap[killed->GetEntry()]));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sIndividualProgression->disableDefaultProgression)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
switch (killed->GetEntry())
|
switch (killed->GetEntry())
|
||||||
{
|
{
|
||||||
case RAGNAROS:
|
case RAGNAROS:
|
||||||
|
|||||||
Reference in New Issue
Block a user