mirror of
https://github.com/ZhengPeiRu21/mod-individual-progression
synced 2025-11-29 23:44:51 +08:00
Fix Vanilla damage scaling and properly implement Quest XP values
This commit is contained in:
@@ -36,6 +36,17 @@ IndividualProgression.EnforceGroupRules = 1
|
||||
IndividualProgression.VanillaPowerAdjustment = 0.6
|
||||
#
|
||||
#
|
||||
# IndividualProgression.VanillaHealingAdjustment
|
||||
# Description: Adjustment to player's healing power before completing Vanilla content
|
||||
# This is meant to provide a more accurate Vanilla feeling in Vanilla content
|
||||
# Applied linearly per level between levels 11 and 60
|
||||
# Set to 1 (100% of regular damage) to disable
|
||||
#
|
||||
# Default: 0.5 - 50% of regular healing
|
||||
#
|
||||
IndividualProgression.VanillaHealingAdjustmnet = 0.5
|
||||
#
|
||||
#
|
||||
# IndividualProgression.VanillaHealthAdjustmnet
|
||||
# Description: Adjustment to player's max HP before completing Vanilla content
|
||||
# This is meant to provide a more accurate Vanilla feeling in Vanilla content
|
||||
@@ -57,6 +68,16 @@ IndividualProgression.VanillaHealthAdjustment = 0.5
|
||||
#
|
||||
IndividualProgression.TBCPowerAdjustment = 0.6
|
||||
#
|
||||
# IndividualProgression.TBCHealingAdjustment
|
||||
# Description: Adjustment to player's healing power before completing TBC content
|
||||
# This is meant to provide a more accurate TBC feeling in TBC content
|
||||
# Unlike Vanilla adjustment, a flat value is always used
|
||||
# Set to 1 (100% of regular damage) to disable
|
||||
#
|
||||
# Default: 0.5 - 50% of regular healing
|
||||
#
|
||||
IndividualProgression.TBCHealingAdjustment = 0.5
|
||||
#
|
||||
#
|
||||
# IndividualProgression.TBCHealthAdjustment
|
||||
# Description: Adjustment to player's max HP before completing TBC content
|
||||
|
||||
13
sql/world/base/adjustment_auras.sql
Normal file
13
sql/world/base/adjustment_auras.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
DELETE FROM `spell_dbc` WHERE `ID` IN (89501,89502,89503,89504,89505,89506);
|
||||
|
||||
INSERT INTO `spell_dbc`(`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`EffectBonusMultiplier_1`,`EffectBonusMultiplier_2`,`EffectBonusMultiplier_3`,`SpellDescriptionVariableID`,`SpellDifficultyID`) VALUES
|
||||
(89501,0,0,0,128,268435456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,1,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,3,1,0,1,0,0,0,19,0,29,0,0,0,1,0,0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,0,50,'Increased Health','','','','','','','','',0,0,0,0,0,0,0,16712190,'','','','','','','','','',0,0,0,0,0,0,0,16712172,'','','','','','','','','',0,0,0,0,0,0,0,16712188,'$s1% increased health.','','','','','','','','',0,0,0,0,0,0,0,16712190,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0),
|
||||
(89502,0,0,0,67108944,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,0,1,1,0,0,0,0,99,-51,0,0,0,0,1,1,0,0,0,0,0,0,0,87,79,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1761,0,0,'Hallucinatory Creature','','','','','','','','',0,0,0,0,0,0,0,16712190,'','','','','','','','','',0,0,0,0,0,0,0,16712190,'Damage taken increased by $s1%.\r\nDamage dealt reduced by $s2%.','','','','','','','','',0,0,0,0,0,0,0,16712190,'Damage taken increased by $s1%.\r\nDamage dealt reduced by $s2%.','','','','','','','','',0,0,0,0,0,0,0,16712190,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0),
|
||||
(89503,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,6,6,1,1,1,0,0,0,7,7,7,0,0,0,1,1,0,0,0,0,0,0,0,137,166,167,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3783,0,0,'Shirt of Uber Aura','','','','','','','','',0,0,0,0,0,0,0,16712190,'','','','','','','','','',0,0,0,0,0,0,0,16712188,'Increases all statistics by 8% and all ratings by 130.','','','','','','','','',0,0,0,0,0,0,0,16712190,'','','','','','','','','',0,0,0,0,0,0,0,16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0),
|
||||
(89504,0,0,0,464,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,0,1,0,0,0,0,0,24,0,0,0,0,0,1,0,0,0,0,0,0,0,0,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1962,0,0,'Endless Rage','','','','','','','','',0,0,0,0,0,0,0,16712190,'','','','','','','','','',0,0,0,0,0,0,0,16712190,'You generate $s1% more rage from damage dealt.','','','','','','','','',0,0,0,0,0,0,0,16712190,'','','','','','','','','',0,0,0,0,0,0,0,16712190,0,0,0,0,4,1048576,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0);
|
||||
|
||||
INSERT INTO `spell_dbc` (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`EffectBonusMultiplier_1`,`EffectBonusMultiplier_2`,`EffectBonusMultiplier_3`,`SpellDescriptionVariableID`,`SpellDifficultyID`) VALUES
|
||||
(89505,0,0,0,746586496,136,0,1048576,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,1,0.0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,6,0,0,0,0,0,0.0,0.0,0.0,-1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,108,0,0,0,0,0,-1.0,0.0,0.0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'ZoneDebuff SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL pct',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0,0,0,0,0,0,127,0,0,0,0.0,0.0,0.0,0,0);
|
||||
|
||||
INSERT INTO `spell_dbc` (`ID`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`ShapeshiftExclude`,`Targets`,`CastingTimeIndex`,`AuraInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`RangeIndex`,`CumulativeAura`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`RequiredAreasID`,`SchoolMask`,`Name_Lang_enUS`) VALUES
|
||||
(89506,0,0,746586496,136,0,1048576,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,21,1,100,-1,0,0,6,0,0,0,0,0,0.0,0.0,0.0,-1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,118,0,0,0,0,0,-1.0,0.0,0.0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0,127,'ZoneDebuff SPELL_AURA_MOD_HEALING_PCT pct');
|
||||
@@ -14,12 +14,12 @@ DELETE FROM creature_questender WHERE id = 4968 and quest = 11223;
|
||||
INSERT INTO creature_questender(id, quest) VALUES (1748, 11222);
|
||||
INSERT INTO creature_questender(id, quest) VALUES (4968, 11223);
|
||||
|
||||
UPDATE creature_questender SET id=1748 WHERE quest=396;
|
||||
# UPDATE creature_questender SET id=1748 WHERE quest=396;
|
||||
UPDATE creature_questender SET id=1748 WHERE quest=6186;
|
||||
UPDATE creature_questender SET id=1748 WHERE quest=6187;
|
||||
UPDATE creature_questender SET id=1748 WHERE quest=7781;
|
||||
|
||||
UPDATE creature_queststarter SET id=1748 WHERE quest=396;
|
||||
UPDATE creature_queststarter SET id=1748 WHERE quest=6182;
|
||||
# UPDATE creature_queststarter SET id=1748 WHERE quest=396;
|
||||
# UPDATE creature_queststarter SET id=1748 WHERE quest=6182;
|
||||
UPDATE creature_queststarter SET id=1748 WHERE quest=6187;
|
||||
UPDATE creature_queststarter SET id=1748 WHERE quest=7782;
|
||||
# UPDATE creature_queststarter SET id=1748 WHERE quest=7782;
|
||||
|
||||
5672
sql/world/base/quest_xp_table.sql
Normal file
5672
sql/world/base/quest_xp_table.sql
Normal file
File diff suppressed because it is too large
Load Diff
@@ -304,9 +304,6 @@ UPDATE quest_template SET RequiredItemId1 = 10699, RequiredItemId2 = 0, Required
|
||||
/* Rise, Obsidion! */
|
||||
UPDATE quest_template SET QuestLevel = 52 WHERE ID=3566;
|
||||
|
||||
/* <UNUSED> */
|
||||
UPDATE quest_template SET LogTitle = Plainsrunning, QuestLevel = 60, MinLevel = 45 WHERE ID=3581;
|
||||
|
||||
/* Bring the Light */
|
||||
UPDATE quest_template SET QuestLevel = 42, MinLevel = 39 WHERE ID=3636;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "IndividualProgression.h"
|
||||
|
||||
static float vanillaPowerAdjustment, vanillaHealthAdjustment, tbcPowerAdjustment, tbcHealthAdjustment;
|
||||
static float vanillaPowerAdjustment, vanillaHealthAdjustment, tbcPowerAdjustment, tbcHealthAdjustment, vanillaHealingAdjustment, tbcHealingAdjustment;
|
||||
static bool enabled, questXpFix, hunterPetLevelFix, requirePreAQQuests, enforceGroupRules;
|
||||
|
||||
class gobject_ipp_wotlk : public GameObjectScript
|
||||
@@ -118,8 +118,10 @@ private:
|
||||
{
|
||||
enabled = sConfigMgr->GetOption<bool>("IndividualProgression.Enable", true);
|
||||
vanillaPowerAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaPowerAdjustment", 1);
|
||||
vanillaHealingAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaHealingAdjustment", 1);
|
||||
vanillaHealthAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.VanillaHealthAdjustment", 1);
|
||||
tbcPowerAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.TBCPowerAdjustment", 1);
|
||||
tbcHealingAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.TBCHealingAdjustment", 1);
|
||||
tbcHealthAdjustment = sConfigMgr->GetOption<float>("IndividualProgression.TBCHealthAdjustment", 1);
|
||||
questXpFix = sConfigMgr->GetOption<bool>("IndividualProgression.QuestXPFix", true);
|
||||
hunterPetLevelFix = sConfigMgr->GetOption<bool>("IndividualProgression.HunterPetLevelFix", true);
|
||||
@@ -127,12 +129,111 @@ private:
|
||||
enforceGroupRules = sConfigMgr->GetOption<bool>("IndividualProgression.EnforceGroupRules", true);
|
||||
}
|
||||
|
||||
void LoadXpValues()
|
||||
{
|
||||
if (enabled && questXpFix)
|
||||
{
|
||||
LOG_INFO("module", "Loading Quest XP cache....");
|
||||
uint32 questXpAmount = 0;
|
||||
QueryResult result = WorldDatabase.Query("SELECT entry, xpValue FROM custom_quest_xp");
|
||||
if (result)
|
||||
{
|
||||
do
|
||||
{
|
||||
uint32 questId = (*result)[0].Get<uint32>();
|
||||
uint32 xpValue = (*result)[1].Get<uint32>();
|
||||
questXpMap.insert({questId, xpValue});
|
||||
questXpAmount++;
|
||||
} while (result->NextRow());
|
||||
}
|
||||
LOG_INFO("module", "Loaded {} quest XP values into cache", questXpAmount);
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
IndividualPlayerProgression_WorldScript() : WorldScript("IndividualProgression_WorldScript") { }
|
||||
|
||||
void OnBeforeConfigLoad(bool /*reload*/) override
|
||||
{
|
||||
LoadConfig();
|
||||
LoadXpValues();
|
||||
}
|
||||
};
|
||||
|
||||
class IndividualPlayerProgression_PetScript : public PetScript
|
||||
{
|
||||
private:
|
||||
bool hasPassedProgression(Player* player, ProgressionState state)
|
||||
{
|
||||
return player->GetPlayerSetting("mod-individual-progression", SETTING_PROGRESSION_STATE).value >= state;
|
||||
}
|
||||
|
||||
void CheckAdjustments(Pet* pet)
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!pet || !pet->GetOwner())
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!hasPassedProgression(pet->GetOwner(), PROGRESSION_NAXX40))
|
||||
{
|
||||
AdjustVanillaStats(pet);
|
||||
}
|
||||
else if (!hasPassedProgression(pet->GetOwner(), PROGRESSION_TBC_TIER_5))
|
||||
{
|
||||
AdjustTBCStats(pet);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void AdjustVanillaStats(Pet* pet)
|
||||
{
|
||||
float adjustmentValue = -100.0 * (1.0 - vanillaPowerAdjustment);
|
||||
float adjustmentApplyPercent = (pet->getLevel() - 10.0) / 50.0;
|
||||
float computedAdjustment = pet->getLevel() > 10 ? (adjustmentValue * adjustmentApplyPercent) : 0;
|
||||
float hpAdjustmentValue = -100.0 * (1.0 - vanillaHealthAdjustment);
|
||||
float hpAdjustment = pet->getLevel() > 10 ? (hpAdjustmentValue * adjustmentApplyPercent) : 0;
|
||||
AdjustStats(pet, computedAdjustment, hpAdjustment);
|
||||
}
|
||||
|
||||
void AdjustTBCStats(Pet* pet)
|
||||
{
|
||||
float adjustmentValue = -100.0 * (1.0 - tbcPowerAdjustment);
|
||||
float adjustmentApplyPercent = 1;
|
||||
float computedAdjustment = pet->getLevel() > 10 ? (adjustmentValue * adjustmentApplyPercent) : 0;
|
||||
float hpAdjustmentValue = -100.0 * (1.0 - tbcHealthAdjustment);
|
||||
float hpAdjustment = pet->getLevel() > 10 ? (hpAdjustmentValue * adjustmentApplyPercent) : 0;
|
||||
AdjustStats(pet, computedAdjustment, hpAdjustment);
|
||||
}
|
||||
|
||||
void AdjustStats(Pet* pet, float computedAdjustment, float hpAdjustment)
|
||||
{
|
||||
int32 bp0 = 0; // This would be the damage taken adjustment value, but we are already adjusting health
|
||||
int32 bp1 = static_cast<int32>(computedAdjustment);
|
||||
int32 bp2 = static_cast<int32>(hpAdjustment);
|
||||
|
||||
pet->RemoveAura(DAMAGE_DONE_TAKEN_SPELL);
|
||||
pet->CastCustomSpell(pet, DAMAGE_DONE_TAKEN_SPELL, &bp0, &bp1, nullptr, false);
|
||||
|
||||
pet->RemoveAura(ABSORB_SPELL);
|
||||
pet->CastCustomSpell(pet, ABSORB_SPELL, &bp1, nullptr, nullptr, false);
|
||||
|
||||
pet->RemoveAura(HEALING_DONE_SPELL);
|
||||
pet->CastCustomSpell(pet, HEALING_DONE_SPELL, &bp1, nullptr, nullptr, false);
|
||||
|
||||
pet->RemoveAura(HP_AURA_SPELL);
|
||||
pet->CastCustomSpell(pet, HP_AURA_SPELL, &bp2, nullptr, nullptr, false);
|
||||
}
|
||||
|
||||
public:
|
||||
IndividualPlayerProgression_PetScript() : PetScript("IndividualProgression_PetScript") { }
|
||||
|
||||
void OnPetAddToWorld(Pet* pet) override
|
||||
{
|
||||
CheckAdjustments(pet);
|
||||
}
|
||||
};
|
||||
// Add player scripts
|
||||
@@ -152,26 +253,76 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
IndividualPlayerProgression() : PlayerScript("IndividualProgression") { }
|
||||
|
||||
void OnAfterUpdateAttackPowerAndDamage(Player* player, float& /*level*/, float& base_attPower, float& attPowerMod, float& attPowerMultiplier, bool /*ranged*/) override
|
||||
void CheckAdjustments(Player* player)
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Player is still in Vanilla content - give Vanilla damage adjustment
|
||||
if (!hasPassedProgression(player, PROGRESSION_NAXX40))
|
||||
{
|
||||
float computedAdjustment = player->getLevel() > 10 ? 1 - ((player->getLevel() - 10) / 50) * (1 - vanillaPowerAdjustment) : 1;
|
||||
base_attPower *= computedAdjustment;
|
||||
AdjustVanillaStats(player);
|
||||
}
|
||||
// Player is in TBC content - give TBC damage adjustment
|
||||
else if (!hasPassedProgression(player, PROGRESSION_TBC_TIER_5))
|
||||
{
|
||||
base_attPower *= tbcPowerAdjustment;
|
||||
AdjustTBCStats(player);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void AdjustVanillaStats(Player* player)
|
||||
{
|
||||
float adjustmentValue = -100.0 * (1.0 - vanillaPowerAdjustment);
|
||||
float adjustmentApplyPercent = (player->getLevel() - 10.0) / 50.0;
|
||||
float computedAdjustment = player->getLevel() > 10 ? (adjustmentValue * adjustmentApplyPercent) : 0;
|
||||
AdjustStats(player, computedAdjustment);
|
||||
}
|
||||
|
||||
void AdjustTBCStats(Player* player)
|
||||
{
|
||||
float adjustmentValue = -100.0 * (1.0 - tbcPowerAdjustment);
|
||||
float adjustmentApplyPercent = 1;
|
||||
float computedAdjustment = player->getLevel() > 10 ? (adjustmentValue * adjustmentApplyPercent) : 0;
|
||||
AdjustStats(player, computedAdjustment);
|
||||
}
|
||||
|
||||
void AdjustStats(Player* player, float computedAdjustment)
|
||||
{
|
||||
int32 bp0 = 0; // This would be the damage taken adjustment value, but we are already adjusting health
|
||||
int32 bp1 = static_cast<int32>(computedAdjustment);
|
||||
|
||||
player->RemoveAura(DAMAGE_DONE_TAKEN_SPELL);
|
||||
player->CastCustomSpell(player, DAMAGE_DONE_TAKEN_SPELL, &bp0, &bp1, nullptr, false);
|
||||
|
||||
player->RemoveAura(ABSORB_SPELL);
|
||||
player->CastCustomSpell(player, ABSORB_SPELL, &bp1, nullptr, nullptr, false);
|
||||
|
||||
player->RemoveAura(HEALING_DONE_SPELL);
|
||||
player->CastCustomSpell(player, HEALING_DONE_SPELL, &bp1, nullptr, nullptr, false);
|
||||
}
|
||||
|
||||
|
||||
public:
|
||||
IndividualPlayerProgression() : PlayerScript("IndividualProgression") { }
|
||||
|
||||
void OnLogin(Player* player) override
|
||||
{
|
||||
CheckAdjustments(player);
|
||||
}
|
||||
|
||||
void OnMapChanged(Player* player) override
|
||||
{
|
||||
CheckAdjustments(player);
|
||||
}
|
||||
|
||||
void OnLevelChanged(Player* player, uint8 /*oldLevel*/) override
|
||||
{
|
||||
CheckAdjustments(player);
|
||||
}
|
||||
|
||||
void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool /*applySickness*/) override
|
||||
{
|
||||
CheckAdjustments(player);
|
||||
}
|
||||
|
||||
void OnAfterUpdateMaxHealth(Player* player, float& value) override
|
||||
@@ -199,11 +350,15 @@ public:
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Note that this current implementation is too wide and will affect some undesired quests
|
||||
int32 quest_level = quest->GetQuestLevel();
|
||||
if (quest_level < 71 && quest_level > 29)
|
||||
if (questXpMap.count(quest->GetQuestId()))
|
||||
{
|
||||
xpValue = xpValue * 0.6;
|
||||
uint32 vanillaXpValue = questXpMap[quest->GetQuestId()];
|
||||
// If XP was already reduced due to out-leveling the quest or other reasons, use the reduced value
|
||||
if (vanillaXpValue < xpValue)
|
||||
{
|
||||
// Otherwise, return the correct Vanilla/TBC Quest XP
|
||||
xpValue = vanillaXpValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,20 +380,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void OnBeforeGuardianInitStatsForLevel(Player* player, Guardian* guardian, CreatureTemplate const* cinfo, PetType& petType) override
|
||||
{
|
||||
// Currently bugged - disabled for now
|
||||
// if (!enabled || !hunterPetLevelFix)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// // We don't want to scale hunter pet to its owners level, but we don't know of the original level, so use the maximum from the creature_template
|
||||
// if (guardian->IsPet() && player->getClass() == CLASS_HUNTER && guardian->getLevel() > cinfo->maxlevel)
|
||||
// {
|
||||
// guardian->SetLevel(cinfo->maxlevel);
|
||||
// }
|
||||
}
|
||||
|
||||
bool OnBeforeTeleport(Player* player, uint32 mapid, float x, float y, float z, float /*orientation*/, uint32 /*options*/, Unit* /*target*/) override
|
||||
{
|
||||
if (!enabled || player->IsGameMaster())
|
||||
@@ -411,6 +552,7 @@ void AddSC_mod_individual_progression()
|
||||
{
|
||||
new IndividualPlayerProgression();
|
||||
new IndividualPlayerProgression_WorldScript();
|
||||
new IndividualPlayerProgression_PetScript();
|
||||
new npc_ipp_aq();
|
||||
new npc_ipp_tbc();
|
||||
new gobject_ipp_tbc();
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
#include "MapMgr.h"
|
||||
#include "ObjectAccessor.h"
|
||||
#include "Group.h"
|
||||
#include "Pet.h"
|
||||
|
||||
typedef std::unordered_map<uint32, uint32> questXpMapType;
|
||||
questXpMapType questXpMap;
|
||||
|
||||
enum ProgressionBossIDs
|
||||
{
|
||||
@@ -29,6 +33,16 @@ enum ProgressionBossIDs
|
||||
HALION = 39863
|
||||
};
|
||||
|
||||
enum BuffSpells
|
||||
{
|
||||
HP_AURA_SPELL = 89501,
|
||||
DAMAGE_DONE_TAKEN_SPELL = 89502,
|
||||
BASE_STAT_AP_SPELL = 89503,
|
||||
RAGE_FROM_DAMAGE_SPELL = 89504,
|
||||
ABSORB_SPELL = 89505,
|
||||
HEALING_DONE_SPELL = 89506
|
||||
};
|
||||
|
||||
enum ProgressionQuestIDs
|
||||
{
|
||||
MIGHT_OF_KALIMDOR = 8742
|
||||
|
||||
Reference in New Issue
Block a user