• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
[FIX] Баг с пристом
error_404
Капрал
Собственно кто не вкурсе - юзаем этот поисковик

Сам фикс:

Код
@@ -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();
   }
Сообщение # 1 отредактировано error_404 - Среда, 27.02.2013, 00:00
Dimitro
Praise the sun!
Цитата (error_404)
+ PRIEST_SPIRIT_OF_REDEMPTION = 27827,

Это зачем?
Бездумно копипастим?

Это, кстати, хак.
Существует спелл, который должен использоваться на приста в форме ангела, который как раз и дает иммунитет ко всем атакам.
Следовательно не хаковое решение займет одну строку.
Копать в сторону метода Unit::Kill, там есть обработки ситуации смерти жреца с данным талантом.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 2 отредактировано Dimitro - Среда, 27.02.2013, 03:04
error_404
Капрал
Dimitro, увы я только учусь что-то пилить в ядре, а хаковая реализация намного проще, чем перерывать огромное количество файлов thumb
Сообщение # 3 написано 27.02.2013 в 09:53
The_Guard
Центурион
Цитата (error_404)
увы я только учусь что-то пилить в ядре, а хаковая реализация намного проще, чем перерывать огромное количество файлов

Хак-Враг!!!
Лучше потратить на час больше времени но сделать всё по человечески чем выдумывать велосипед!!!
Полностию поддерживаю Димитро
---Коплю Минусы---
Сообщение # 4 написано 27.02.2013 в 23:02
  • Страница 1 из 1
  • 1
Поиск: