Merge remote-tracking branch 'origin/3.3.5' into 4.3.4

Conflicts:
	sql/base/auth_database.sql
	src/server/game/Instances/InstanceScript.h
	src/server/scripts/Northrend/isle_of_conquest.cpp
	src/server/shared/Database/Implementation/LoginDatabase.cpp
	src/server/shared/Database/Implementation/LoginDatabase.h
This commit is contained in:
DDuarte
2014-10-19 00:18:06 +01:00
39 changed files with 1593 additions and 419 deletions
+309
View File
@@ -3721,6 +3721,314 @@ public:
}
};
enum RequiredMixologySpells
{
SPELL_MIXOLOGY = 53042,
// Flasks
SPELL_FLASK_OF_THE_FROST_WYRM = 53755,
SPELL_FLASK_OF_STONEBLOOD = 53758,
SPELL_FLASK_OF_ENDLESS_RAGE = 53760,
SPELL_FLASK_OF_PURE_MOJO = 54212,
SPELL_LESSER_FLASK_OF_RESISTANCE = 62380,
SPELL_LESSER_FLASK_OF_TOUGHNESS = 53752,
SPELL_FLASK_OF_BLINDING_LIGHT = 28521,
SPELL_FLASK_OF_CHROMATIC_WONDER = 42735,
SPELL_FLASK_OF_FORTIFICATION = 28518,
SPELL_FLASK_OF_MIGHTY_RESTORATION = 28519,
SPELL_FLASK_OF_PURE_DEATH = 28540,
SPELL_FLASK_OF_RELENTLESS_ASSAULT = 28520,
SPELL_FLASK_OF_CHROMATIC_RESISTANCE = 17629,
SPELL_FLASK_OF_DISTILLED_WISDOM = 17627,
SPELL_FLASK_OF_SUPREME_POWER = 17628,
SPELL_FLASK_OF_THE_TITANS = 17626,
// Elixirs
SPELL_ELIXIR_OF_MIGHTY_AGILITY = 28497,
SPELL_ELIXIR_OF_ACCURACY = 60340,
SPELL_ELIXIR_OF_DEADLY_STRIKES = 60341,
SPELL_ELIXIR_OF_MIGHTY_DEFENSE = 60343,
SPELL_ELIXIR_OF_EXPERTISE = 60344,
SPELL_ELIXIR_OF_ARMOR_PIERCING = 60345,
SPELL_ELIXIR_OF_LIGHTNING_SPEED = 60346,
SPELL_ELIXIR_OF_MIGHTY_FORTITUDE = 53751,
SPELL_ELIXIR_OF_MIGHTY_MAGEBLOOD = 53764,
SPELL_ELIXIR_OF_MIGHTY_STRENGTH = 53748,
SPELL_ELIXIR_OF_MIGHTY_TOUGHTS = 60347,
SPELL_ELIXIR_OF_PROTECTION = 53763,
SPELL_ELIXIR_OF_SPIRIT = 53747,
SPELL_GURUS_ELIXIR = 53749,
SPELL_SHADOWPOWER_ELIXIR = 33721,
SPELL_WRATH_ELIXIR = 53746,
SPELL_ELIXIR_OF_EMPOWERMENT = 28514,
SPELL_ELIXIR_OF_MAJOR_MAGEBLOOD = 28509,
SPELL_ELIXIR_OF_MAJOR_SHADOW_POWER = 28503,
SPELL_ELIXIR_OF_MAJOR_DEFENSE = 28502,
SPELL_FEL_STRENGTH_ELIXIR = 38954,
SPELL_ELIXIR_OF_IRONSKIN = 39628,
SPELL_ELIXIR_OF_MAJOR_AGILITY = 54494,
SPELL_ELIXIR_OF_DRAENIC_WISDOM = 39627,
SPELL_ELIXIR_OF_MAJOR_FIREPOWER = 28501,
SPELL_ELIXIR_OF_MAJOR_FROST_POWER = 28493,
SPELL_EARTHEN_ELIXIR = 39626,
SPELL_ELIXIR_OF_MASTERY = 33726,
SPELL_ELIXIR_OF_HEALING_POWER = 28491,
SPELL_ELIXIR_OF_MAJOR_FORTITUDE = 39625,
SPELL_ELIXIR_OF_MAJOR_STRENGTH = 28490,
SPELL_ADEPTS_ELIXIR = 54452,
SPELL_ONSLAUGHT_ELIXIR = 33720,
SPELL_MIGHTY_TROLLS_BLOOD_ELIXIR = 24361,
SPELL_GREATER_ARCANE_ELIXIR = 17539,
SPELL_ELIXIR_OF_THE_MONGOOSE = 17538,
SPELL_ELIXIR_OF_BRUTE_FORCE = 17537,
SPELL_ELIXIR_OF_SAGES = 17535,
SPELL_ELIXIR_OF_SUPERIOR_DEFENSE = 11348,
SPELL_ELIXIR_OF_DEMONSLAYING = 11406,
SPELL_ELIXIR_OF_GREATER_FIREPOWER = 26276,
SPELL_ELIXIR_OF_SHADOW_POWER = 11474,
SPELL_MAGEBLOOD_ELIXIR = 24363,
SPELL_ELIXIR_OF_GIANTS = 11405,
SPELL_ELIXIR_OF_GREATER_AGILITY = 11334,
SPELL_ARCANE_ELIXIR = 11390,
SPELL_ELIXIR_OF_GREATER_INTELLECT = 11396,
SPELL_ELIXIR_OF_GREATER_DEFENSE = 11349,
SPELL_ELIXIR_OF_FROST_POWER = 21920,
SPELL_ELIXIR_OF_AGILITY = 11328,
SPELL_MAJOR_TROLLS_BLLOOD_ELIXIR = 3223,
SPELL_ELIXIR_OF_FORTITUDE = 3593,
SPELL_ELIXIR_OF_OGRES_STRENGTH = 3164,
SPELL_ELIXIR_OF_FIREPOWER = 7844,
SPELL_ELIXIR_OF_LESSER_AGILITY = 3160,
SPELL_ELIXIR_OF_DEFENSE = 3220,
SPELL_STRONG_TROLLS_BLOOD_ELIXIR = 3222,
SPELL_ELIXIR_OF_MINOR_ACCURACY = 63729,
SPELL_ELIXIR_OF_WISDOM = 3166,
SPELL_ELIXIR_OF_GIANTH_GROWTH = 8212,
SPELL_ELIXIR_OF_MINOR_AGILITY = 2374,
SPELL_ELIXIR_OF_MINOR_FORTITUDE = 2378,
SPELL_WEAK_TROLLS_BLOOD_ELIXIR = 3219,
SPELL_ELIXIR_OF_LIONS_STRENGTH = 2367,
SPELL_ELIXIR_OF_MINOR_DEFENSE = 673
};
class spell_gen_mixology_bonus : public SpellScriptLoader
{
public:
spell_gen_mixology_bonus() : SpellScriptLoader("spell_gen_mixology_bonus") { }
class spell_gen_mixology_bonus_AuraScript : public AuraScript
{
PrepareAuraScript(spell_gen_mixology_bonus_AuraScript);
public:
spell_gen_mixology_bonus_AuraScript()
{
bonus = 0;
}
private:
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_MIXOLOGY))
return false;
return true;
}
bool Load() override
{
return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
void SetBonusValueForEffect(SpellEffIndex effIndex, int32 value, AuraEffect const* aurEff)
{
if (aurEff->GetEffIndex() == uint32(effIndex))
bonus = value;
}
void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
{
if (GetCaster()->HasAura(SPELL_MIXOLOGY) && GetCaster()->HasSpell(GetSpellInfo()->Effects[EFFECT_0].TriggerSpell))
{
switch (GetId())
{
case SPELL_WEAK_TROLLS_BLOOD_ELIXIR:
case SPELL_MAGEBLOOD_ELIXIR:
bonus = amount;
break;
case SPELL_ELIXIR_OF_FROST_POWER:
case SPELL_LESSER_FLASK_OF_TOUGHNESS:
case SPELL_LESSER_FLASK_OF_RESISTANCE:
bonus = CalculatePct(amount, 80);
break;
case SPELL_ELIXIR_OF_MINOR_DEFENSE:
case SPELL_ELIXIR_OF_LIONS_STRENGTH:
case SPELL_ELIXIR_OF_MINOR_AGILITY:
case SPELL_MAJOR_TROLLS_BLLOOD_ELIXIR:
case SPELL_ELIXIR_OF_SHADOW_POWER:
case SPELL_ELIXIR_OF_BRUTE_FORCE:
case SPELL_MIGHTY_TROLLS_BLOOD_ELIXIR:
case SPELL_ELIXIR_OF_GREATER_FIREPOWER:
case SPELL_ONSLAUGHT_ELIXIR:
case SPELL_EARTHEN_ELIXIR:
case SPELL_ELIXIR_OF_MAJOR_AGILITY:
case SPELL_FLASK_OF_THE_TITANS:
case SPELL_FLASK_OF_RELENTLESS_ASSAULT:
case SPELL_FLASK_OF_STONEBLOOD:
case SPELL_ELIXIR_OF_MINOR_ACCURACY:
bonus = CalculatePct(amount, 50);
break;
case SPELL_ELIXIR_OF_PROTECTION:
bonus = 280;
break;
case SPELL_ELIXIR_OF_MAJOR_DEFENSE:
bonus = 200;
break;
case SPELL_ELIXIR_OF_GREATER_DEFENSE:
case SPELL_ELIXIR_OF_SUPERIOR_DEFENSE:
bonus = 140;
break;
case SPELL_ELIXIR_OF_FORTITUDE:
bonus = 100;
break;
case SPELL_FLASK_OF_ENDLESS_RAGE:
bonus = 82;
break;
case SPELL_ELIXIR_OF_DEFENSE:
bonus = 70;
break;
case SPELL_ELIXIR_OF_DEMONSLAYING:
bonus = 50;
break;
case SPELL_FLASK_OF_THE_FROST_WYRM:
bonus = 47;
break;
case SPELL_WRATH_ELIXIR:
bonus = 32;
break;
case SPELL_ELIXIR_OF_MAJOR_FROST_POWER:
case SPELL_ELIXIR_OF_MAJOR_FIREPOWER:
case SPELL_ELIXIR_OF_MAJOR_SHADOW_POWER:
bonus = 29;
break;
case SPELL_ELIXIR_OF_MIGHTY_TOUGHTS:
bonus = 27;
break;
case SPELL_FLASK_OF_SUPREME_POWER:
case SPELL_FLASK_OF_BLINDING_LIGHT:
case SPELL_FLASK_OF_PURE_DEATH:
case SPELL_SHADOWPOWER_ELIXIR:
bonus = 23;
break;
case SPELL_ELIXIR_OF_MIGHTY_AGILITY:
case SPELL_FLASK_OF_DISTILLED_WISDOM:
case SPELL_ELIXIR_OF_SPIRIT:
case SPELL_ELIXIR_OF_MIGHTY_STRENGTH:
case SPELL_FLASK_OF_PURE_MOJO:
case SPELL_ELIXIR_OF_ACCURACY:
case SPELL_ELIXIR_OF_DEADLY_STRIKES:
case SPELL_ELIXIR_OF_MIGHTY_DEFENSE:
case SPELL_ELIXIR_OF_EXPERTISE:
case SPELL_ELIXIR_OF_ARMOR_PIERCING:
case SPELL_ELIXIR_OF_LIGHTNING_SPEED:
bonus = 20;
break;
case SPELL_FLASK_OF_CHROMATIC_RESISTANCE:
bonus = 17;
break;
case SPELL_ELIXIR_OF_MINOR_FORTITUDE:
case SPELL_ELIXIR_OF_MAJOR_STRENGTH:
bonus = 15;
break;
case SPELL_FLASK_OF_MIGHTY_RESTORATION:
bonus = 13;
break;
case SPELL_ARCANE_ELIXIR:
bonus = 12;
break;
case SPELL_ELIXIR_OF_GREATER_AGILITY:
case SPELL_ELIXIR_OF_GIANTS:
bonus = 11;
break;
case SPELL_ELIXIR_OF_AGILITY:
case SPELL_ELIXIR_OF_GREATER_INTELLECT:
case SPELL_ELIXIR_OF_SAGES:
case SPELL_ELIXIR_OF_IRONSKIN:
case SPELL_ELIXIR_OF_MIGHTY_MAGEBLOOD:
bonus = 10;
break;
case SPELL_ELIXIR_OF_HEALING_POWER:
bonus = 9;
break;
case SPELL_ELIXIR_OF_DRAENIC_WISDOM:
case SPELL_GURUS_ELIXIR:
bonus = 8;
break;
case SPELL_ELIXIR_OF_FIREPOWER:
case SPELL_ELIXIR_OF_MAJOR_MAGEBLOOD:
case SPELL_ELIXIR_OF_MASTERY:
bonus = 6;
break;
case SPELL_ELIXIR_OF_LESSER_AGILITY:
case SPELL_ELIXIR_OF_OGRES_STRENGTH:
case SPELL_ELIXIR_OF_WISDOM:
case SPELL_ELIXIR_OF_THE_MONGOOSE:
bonus = 5;
break;
case SPELL_STRONG_TROLLS_BLOOD_ELIXIR:
case SPELL_FLASK_OF_CHROMATIC_WONDER:
bonus = 4;
break;
case SPELL_ELIXIR_OF_EMPOWERMENT:
bonus = -10;
break;
case SPELL_ADEPTS_ELIXIR:
SetBonusValueForEffect(EFFECT_0, 13, aurEff);
SetBonusValueForEffect(EFFECT_1, 13, aurEff);
SetBonusValueForEffect(EFFECT_2, 8, aurEff);
break;
case SPELL_ELIXIR_OF_MIGHTY_FORTITUDE:
SetBonusValueForEffect(EFFECT_0, 160, aurEff);
break;
case SPELL_ELIXIR_OF_MAJOR_FORTITUDE:
SetBonusValueForEffect(EFFECT_0, 116, aurEff);
SetBonusValueForEffect(EFFECT_1, 6, aurEff);
break;
case SPELL_FEL_STRENGTH_ELIXIR:
SetBonusValueForEffect(EFFECT_0, 40, aurEff);
SetBonusValueForEffect(EFFECT_1, 40, aurEff);
break;
case SPELL_FLASK_OF_FORTIFICATION:
SetBonusValueForEffect(EFFECT_0, 210, aurEff);
SetBonusValueForEffect(EFFECT_1, 5, aurEff);
break;
case SPELL_GREATER_ARCANE_ELIXIR:
SetBonusValueForEffect(EFFECT_0, 19, aurEff);
SetBonusValueForEffect(EFFECT_1, 19, aurEff);
SetBonusValueForEffect(EFFECT_2, 5, aurEff);
break;
case SPELL_ELIXIR_OF_GIANTH_GROWTH:
SetBonusValueForEffect(EFFECT_0, 5, aurEff);
break;
default:
TC_LOG_ERROR("spells", "SpellId %u couldn't be processed in spell_gen_mixology_bonus", GetId());
break;
}
amount += bonus;
}
}
int32 bonus;
void Register() override
{
DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_mixology_bonus_AuraScript::CalculateAmount, EFFECT_ALL, SPELL_AURA_ANY);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_gen_mixology_bonus_AuraScript();
}
};
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -3805,4 +4113,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_eject_all_passengers();
new spell_gen_gm_freeze();
new spell_gen_stand();
new spell_gen_mixology_bonus();
}