diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index dfdf03c421e..248dd31c2a8 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -1313,6 +1313,52 @@ class spell_gen_vehicle_scaling : public SpellScriptLoader } }; + +class spell_gen_oracle_wolvar_reputation: public SpellScriptLoader +{ +public: + spell_gen_oracle_wolvar_reputation() : SpellScriptLoader("spell_gen_oracle_wolvar_reputation") { } + + class spell_gen_oracle_wolvar_reputation_SpellScript : public SpellScript + { + PrepareSpellScript(spell_gen_oracle_wolvar_reputation_SpellScript) + + void HandleDummy(SpellEffIndex effIndex) + { + + if (Player* player = GetCaster()->ToPlayer()) + { + + uint32 factionId = GetSpellInfo()->Effects[effIndex].CalcValue(); + int32 repChange = GetSpellInfo()->Effects[EFFECT_1].CalcValue(); + + FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId); + + if (!factionEntry) + return; + + // Set rep to baserep + basepoints (expecting spillover for oposite faction -> become hated) + // Not when player already has equal or higher rep with this faction + if (player->GetReputationMgr().GetBaseReputation(factionEntry) < repChange) + player->GetReputationMgr().SetReputation(factionEntry, repChange); + + // EFFECT_INDEX_2 most likely update at war state, we already handle this in SetReputation + } + + } + + void Register() + { + OnEffect += SpellEffectFn(spell_gen_oracle_wolvar_reputation_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_gen_oracle_wolvar_reputation_SpellScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -1343,4 +1389,5 @@ void AddSC_generic_spell_scripts() new spell_gen_allow_cast_from_item_only(); new spell_gen_launch(); new spell_gen_vehicle_scaling(); + new spell_gen_oracle_wolvar_reputation(); } |