|
|
Модератор форума: Dimitro |
Форум TrinityCore Патчи / Моды / Фиксы для Trinity [FIX] Баг с пристом (Набивание килов и хонора) |
[FIX] Баг с пристом |
Собственно кто не вкурсе - юзаем этот поисковик
Сам фикс: Код @@ -0,0 +1,5 @@ +-- Spell script assignment +SET @ENTRY := 27827; +DELETE FROM spell_script_names WHERE spell_id = @ENTRY; +INSERT INTO spell_script_names (spell_id, ScriptName) VALUES +(@ENTRY, 'spell_priest_spirit_of_redemption'); ------------------ src/server/scripts/Spells/spell_priest.cpp ------------------ index aee3889..eeb04fd 100644 @@ -39,6 +39,7 @@ enum PriestSpells PRIEST_ICON_ID_EMPOWERED_RENEW_TALENT = 3021, PRIEST_ICON_ID_PAIN_AND_SUFFERING = 2874, PRIEST_SHADOW_WORD_DEATH = 32409, + PRIEST_SPIRIT_OF_REDEMPTION = 27827, }; // Guardian Spirit @@ -449,6 +450,51 @@ class spell_pri_shadow_word_death : public SpellScriptLoader } }; +class spell_priest_spirit_of_redemption : public SpellScriptLoader +{ + public: + spell_priest_spirit_of_redemption() : SpellScriptLoader("spell_priest_spirit_of_redemption") { } + + class spell_priest_spirit_of_redemption_AuraScript : public AuraScript + { + PrepareAuraScript(spell_priest_spirit_of_redemption_AuraScript); + + bool Load() + { + return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; + } + + void HandleApplyEffect(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) + { + if (Player* caster = GetCaster()->ToPlayer()) + { + caster->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); + caster->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); + } + } + + void HandleRemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Player* caster = GetCaster()->ToPlayer()) + { + caster->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); + caster->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); + } + } + + void Register() + { + OnEffectApply += AuraEffectApplyFn(spell_priest_spirit_of_redemption_AuraScript::HandleApplyEffect, EFFECT_1, SPELL_AURA_WATER_BREATHING, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + OnEffectRemove += AuraEffectRemoveFn(spell_priest_spirit_of_redemption_AuraScript::HandleRemoveEffect, EFFECT_1, SPELL_AURA_WATER_BREATHING, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_priest_spirit_of_redemption_AuraScript(); + } +}; + void AddSC_priest_spell_scripts() { new spell_pri_guardian_spirit(); @@ -461,4 +507,5 @@ void AddSC_priest_spell_scripts() new spell_pri_vampiric_touch(); new spell_priest_renew(); new spell_pri_shadow_word_death(); + new spell_priest_spirit_of_redemption(); } |
Цитата (error_404) + PRIEST_SPIRIT_OF_REDEMPTION = 27827, Это зачем? Бездумно копипастим? Это, кстати, хак. Существует спелл, который должен использоваться на приста в форме ангела, который как раз и дает иммунитет ко всем атакам. Следовательно не хаковое решение займет одну строку. Копать в сторону метода Unit::Kill, там есть обработки ситуации смерти жреца с данным талантом.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку. |
Сообщение # 4 написано 27.02.2013 в 23:02
|
| |||
| |||