Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

Спелл "приста Исповедь" - Форум

  • Сторінка 1 з 1
  • 1
Спелл "приста Исповедь"
pro[100]DeadlyДата: Неділя, 05.12.2010, 19:43 | Сообщение # 1



pro[100]Deadly
Группа: Видалені

Замечания:






Залить в базу :
Code
DELETE FROM spell_script_names WHERE spell_id=-47540 AND ScriptName='spell_pri_penance';
DELETE FROM spell_script_names WHERE spell_id=53005 AND ScriptName='spell_pri_penance';
DELETE FROM spell_script_names WHERE spell_id=53006 AND ScriptName='spell_pri_penance';
DELETE FROM spell_script_names WHERE spell_id=53007 AND ScriptName='spell_pri_penance';
INSERT INTO spell_script_names (spell_id, ScriptName) VALUES
(-47540,'spell_pri_penance'),
(53005,'spell_pri_penance'),
(53006,'spell_pri_penance'),
(53007,'spell_pri_penance');

Код:

Code
diff -ur a/spell_priest.cpp b/spell_priest.cpp
--- a/spell_priest.cpp    2010-08-13 12:24:45.000000000 +0400
+++ b/spell_priest.cpp    2010-08-13 12:13:14.000000000 +0400
@@ -29,6 +29,16 @@
      PRIEST_SPELL_PENANCE_R1                      = 47540,
      PRIEST_SPELL_PENANCE_R1_DAMAGE               = 47758,
      PRIEST_SPELL_PENANCE_R1_HEAL                 = 47757,
+    PRIEST_SPELL_PENANCE_R2                      = 53005,
+    PRIEST_SPELL_PENANCE_R2_DAMAGE               = 53001,
+    PRIEST_SPELL_PENANCE_R2_HEAL                 = 52986,
+    PRIEST_SPELL_PENANCE_R3                      = 53006,
+    PRIEST_SPELL_PENANCE_R3_DAMAGE               = 53002,
+    PRIEST_SPELL_PENANCE_R3_HEAL                 = 52987,
+    PRIEST_SPELL_PENANCE_R4                      = 53007,
+    PRIEST_SPELL_PENANCE_R4_DAMAGE               = 53003,
+    PRIEST_SPELL_PENANCE_R4_HEAL                 = 52988,
+
  };
   
  class spell_pri_pain_and_suffering_proc : public SpellHandlerScript
@@ -68,36 +78,76 @@
          {
              bool Validate(SpellEntry const * spellEntry)
              {
-                if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R1))
-                    return false;
-                // can't use other spell than this penance due to spell_ranks dependency
-                if (sSpellMgr.GetFirstSpellInChain(PRIEST_SPELL_PENANCE_R1) != sSpellMgr.GetFirstSpellInChain(spellEntry->Id))
-                    return false;
-
-                uint8 rank = sSpellMgr.GetSpellRank(spellEntry->Id);
-                if (!sSpellMgr.GetSpellWithRank(PRIEST_SPELL_PENANCE_R1_DAMAGE, rank, true))
-                    return false;
-                if (!sSpellMgr.GetSpellWithRank(PRIEST_SPELL_PENANCE_R1_HEAL, rank, true))
-                    return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R1))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R1_DAMAGE))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R1_HEAL))
+            return false;
+
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R2))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R2_DAMAGE))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R2_HEAL))
+            return false;
+
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R3))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R3_DAMAGE))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R3_HEAL))
+            return false;
+
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R4))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R4_DAMAGE))
+            return false;
+        if (!sSpellStore.LookupEntry(PRIEST_SPELL_PENANCE_R4_HEAL))
+            return false;
   
                  return true;
              }
   
              void HandleDummy(SpellEffIndex effIndex)
              {
-                Unit *unitTarget = GetHitUnit();
-                if (!unitTarget || !unitTarget->isAlive())
-                    return;
-
-                Unit *caster = GetCaster();
-
-                uint8 rank = sSpellMgr.GetSpellRank(GetSpellInfo()->Id);
-
-                if (caster->IsFriendlyTo(unitTarget))
-                    caster->CastSpell(unitTarget, sSpellMgr.GetSpellWithRank(PRIEST_SPELL_PENANCE_R1_HEAL, rank), false, 0);
-                else
-                    caster->CastSpell(unitTarget, sSpellMgr.GetSpellWithRank(PRIEST_SPELL_PENANCE_R1_DAMAGE, rank), false, 0);
-            }
+        Unit *unitTarget = GetHitUnit();
+        if (!unitTarget || !unitTarget->isAlive())
+            return;
+
+        Unit *caster = GetCaster();
+        SpellEntry const *spellInfo = GetSpellInfo();
+
+        int hurt = 0;
+        int heal = 0;
+        switch(spellInfo->Id)
+        {
+            case PRIEST_SPELL_PENANCE_R1:
+                hurt = PRIEST_SPELL_PENANCE_R1_DAMAGE;
+                heal = PRIEST_SPELL_PENANCE_R1_HEAL;
+                break;
+            case PRIEST_SPELL_PENANCE_R2:
+                hurt = PRIEST_SPELL_PENANCE_R2_DAMAGE;
+                heal = PRIEST_SPELL_PENANCE_R2_HEAL;
+                break;
+            case PRIEST_SPELL_PENANCE_R3:
+                hurt = PRIEST_SPELL_PENANCE_R3_DAMAGE;
+                heal = PRIEST_SPELL_PENANCE_R3_HEAL;
+                break;
+            case PRIEST_SPELL_PENANCE_R4:
+                hurt = PRIEST_SPELL_PENANCE_R4_DAMAGE;
+                heal = PRIEST_SPELL_PENANCE_R4_HEAL;
+                break;
+            default:
+                sLog.outError("spell_pri_penance_SpellScript::HandleDummy: Spell %u Penance need set correct heal/damage spell", spellInfo->Id);
+                return;
+        }
+
+        if (caster->IsFriendlyTo(unitTarget))
+            caster->CastSpell(unitTarget, heal, false, 0);
+        else
+            caster->CastSpell(unitTarget, hurt, false, 0);
+    }
   
              void Register()
              {   


penance_all_ranks_patch.diff
penance_all_ranks_fix.sql
 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2026 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz