diff --git a/sql/world/base/naxx40_spells.sql b/sql/world/base/naxx40_spells.sql new file mode 100644 index 0000000..11929e2 --- /dev/null +++ b/sql/world/base/naxx40_spells.sql @@ -0,0 +1,6 @@ +DELETE FROM `spell_dbc` WHERE `ID` BETWEEN 90000 AND 90002; + +INSERT INTO spell_dbc (`ID`,`Category`,`DispelType`,`Mechanic`,`Attributes`,`AttributesEx`,`AttributesEx2`,`AttributesEx3`,`AttributesEx4`,`AttributesEx5`,`AttributesEx6`,`AttributesEx7`,`ShapeshiftMask`,`unk_320_2`,`ShapeshiftExclude`,`unk_320_3`,`Targets`,`TargetCreatureType`,`RequiresSpellFocus`,`FacingCasterFlags`,`CasterAuraState`,`TargetAuraState`,`ExcludeCasterAuraState`,`ExcludeTargetAuraState`,`CasterAuraSpell`,`TargetAuraSpell`,`ExcludeCasterAuraSpell`,`ExcludeTargetAuraSpell`,`CastingTimeIndex`,`RecoveryTime`,`CategoryRecoveryTime`,`InterruptFlags`,`AuraInterruptFlags`,`ChannelInterruptFlags`,`ProcTypeMask`,`ProcChance`,`ProcCharges`,`MaxLevel`,`BaseLevel`,`SpellLevel`,`DurationIndex`,`PowerType`,`ManaCost`,`ManaCostPerLevel`,`ManaPerSecond`,`ManaPerSecondPerLevel`,`RangeIndex`,`Speed`,`ModalNextSpell`,`CumulativeAura`,`Totem_1`,`Totem_2`,`Reagent_1`,`Reagent_2`,`Reagent_3`,`Reagent_4`,`Reagent_5`,`Reagent_6`,`Reagent_7`,`Reagent_8`,`ReagentCount_1`,`ReagentCount_2`,`ReagentCount_3`,`ReagentCount_4`,`ReagentCount_5`,`ReagentCount_6`,`ReagentCount_7`,`ReagentCount_8`,`EquippedItemClass`,`EquippedItemSubclass`,`EquippedItemInvTypes`,`Effect_1`,`Effect_2`,`Effect_3`,`EffectDieSides_1`,`EffectDieSides_2`,`EffectDieSides_3`,`EffectRealPointsPerLevel_1`,`EffectRealPointsPerLevel_2`,`EffectRealPointsPerLevel_3`,`EffectBasePoints_1`,`EffectBasePoints_2`,`EffectBasePoints_3`,`EffectMechanic_1`,`EffectMechanic_2`,`EffectMechanic_3`,`ImplicitTargetA_1`,`ImplicitTargetA_2`,`ImplicitTargetA_3`,`ImplicitTargetB_1`,`ImplicitTargetB_2`,`ImplicitTargetB_3`,`EffectRadiusIndex_1`,`EffectRadiusIndex_2`,`EffectRadiusIndex_3`,`EffectAura_1`,`EffectAura_2`,`EffectAura_3`,`EffectAuraPeriod_1`,`EffectAuraPeriod_2`,`EffectAuraPeriod_3`,`EffectMultipleValue_1`,`EffectMultipleValue_2`,`EffectMultipleValue_3`,`EffectChainTargets_1`,`EffectChainTargets_2`,`EffectChainTargets_3`,`EffectItemType_1`,`EffectItemType_2`,`EffectItemType_3`,`EffectMiscValue_1`,`EffectMiscValue_2`,`EffectMiscValue_3`,`EffectMiscValueB_1`,`EffectMiscValueB_2`,`EffectMiscValueB_3`,`EffectTriggerSpell_1`,`EffectTriggerSpell_2`,`EffectTriggerSpell_3`,`EffectPointsPerCombo_1`,`EffectPointsPerCombo_2`,`EffectPointsPerCombo_3`,`EffectSpellClassMaskA_1`,`EffectSpellClassMaskA_2`,`EffectSpellClassMaskA_3`,`EffectSpellClassMaskB_1`,`EffectSpellClassMaskB_2`,`EffectSpellClassMaskB_3`,`EffectSpellClassMaskC_1`,`EffectSpellClassMaskC_2`,`EffectSpellClassMaskC_3`,`SpellVisualID_1`,`SpellVisualID_2`,`SpellIconID`,`ActiveIconID`,`SpellPriority`,`Name_Lang_enUS`,`Name_Lang_enGB`,`Name_Lang_koKR`,`Name_Lang_frFR`,`Name_Lang_deDE`,`Name_Lang_enCN`,`Name_Lang_zhCN`,`Name_Lang_enTW`,`Name_Lang_zhTW`,`Name_Lang_esES`,`Name_Lang_esMX`,`Name_Lang_ruRU`,`Name_Lang_ptPT`,`Name_Lang_ptBR`,`Name_Lang_itIT`,`Name_Lang_Unk`,`Name_Lang_Mask`,`NameSubtext_Lang_enUS`,`NameSubtext_Lang_enGB`,`NameSubtext_Lang_koKR`,`NameSubtext_Lang_frFR`,`NameSubtext_Lang_deDE`,`NameSubtext_Lang_enCN`,`NameSubtext_Lang_zhCN`,`NameSubtext_Lang_enTW`,`NameSubtext_Lang_zhTW`,`NameSubtext_Lang_esES`,`NameSubtext_Lang_esMX`,`NameSubtext_Lang_ruRU`,`NameSubtext_Lang_ptPT`,`NameSubtext_Lang_ptBR`,`NameSubtext_Lang_itIT`,`NameSubtext_Lang_Unk`,`NameSubtext_Lang_Mask`,`Description_Lang_enUS`,`Description_Lang_enGB`,`Description_Lang_koKR`,`Description_Lang_frFR`,`Description_Lang_deDE`,`Description_Lang_enCN`,`Description_Lang_zhCN`,`Description_Lang_enTW`,`Description_Lang_zhTW`,`Description_Lang_esES`,`Description_Lang_esMX`,`Description_Lang_ruRU`,`Description_Lang_ptPT`,`Description_Lang_ptBR`,`Description_Lang_itIT`,`Description_Lang_Unk`,`Description_Lang_Mask`,`AuraDescription_Lang_enUS`,`AuraDescription_Lang_enGB`,`AuraDescription_Lang_koKR`,`AuraDescription_Lang_frFR`,`AuraDescription_Lang_deDE`,`AuraDescription_Lang_enCN`,`AuraDescription_Lang_zhCN`,`AuraDescription_Lang_enTW`,`AuraDescription_Lang_zhTW`,`AuraDescription_Lang_esES`,`AuraDescription_Lang_esMX`,`AuraDescription_Lang_ruRU`,`AuraDescription_Lang_ptPT`,`AuraDescription_Lang_ptBR`,`AuraDescription_Lang_itIT`,`AuraDescription_Lang_Unk`,`AuraDescription_Lang_Mask`,`ManaCostPct`,`StartRecoveryCategory`,`StartRecoveryTime`,`MaxTargetLevel`,`SpellClassSet`,`SpellClassMask_1`,`SpellClassMask_2`,`SpellClassMask_3`,`MaxTargets`,`DefenseType`,`PreventionType`,`StanceBarOrder`,`EffectChainAmplitude_1`,`EffectChainAmplitude_2`,`EffectChainAmplitude_3`,`MinFactionID`,`MinReputation`,`RequiredAuraVision`,`RequiredTotemCategoryID_1`,`RequiredTotemCategoryID_2`,`RequiredAreasID`,`SchoolMask`,`RuneCostID`,`SpellMissileID`,`PowerDisplayID`,`EffectBonusMultiplier_1`,`EffectBonusMultiplier_2`,`EffectBonusMultiplier_3`,`SpellDescriptionVariableID`,`SpellDifficultyID`) VALUES +(90001,0,0,0,8388864,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,28,0,0,1,0,0,0,0,0,4,0,0,0,0,0,18,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,351083,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7626,0,1,0,0,'Summon Corpse Scarabs (5)','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0), # 29105 - Corpse Scarabs (5) +(90002,0,0,0,8388864,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,101,0,0,0,0,21,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,28,0,0,1,0,0,0,0,0,9,0,0,0,0,0,18,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,351083,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7626,0,1,0,0,'Summon Corpse Scarabs (10)','','','','','','','','','','','','','','','',16712190,'','','','','','','','','','','','','','','','',16712172,'','','','','','','','','','','','','','','','',16712188,'','','','','','','','','','','','','','','','',16712188,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0); # 28864 - Corpse Scarabs (10 + diff --git a/src/naxx40Scripts/boss_anubrekhan_40.cpp b/src/naxx40Scripts/boss_anubrekhan_40.cpp index 619c4a4..1a60b7c 100644 --- a/src/naxx40Scripts/boss_anubrekhan_40.cpp +++ b/src/naxx40Scripts/boss_anubrekhan_40.cpp @@ -35,13 +35,19 @@ enum GuardSays enum Spells { - SPELL_IMPALE_10 = 28783, - SPELL_LOCUST_SWARM_10 = 28785, - SPELL_SUMMON_CORPSE_SCRABS_5 = 29105, - SPELL_SUMMON_CORPSE_SCRABS_10 = 28864, + SPELL_IMPALE = 28783, + SPELL_LOCUST_SWARM = 28785, + SPELL_SUMMON_CORPSE_SCRABS_5 = 90001, // Changed from 29105 to Level 60 Mob ID for summon + SPELL_SUMMON_CORPSE_SCRABS_10 = 90002, // Changed from 29105 to Level 60 Mob ID for summon SPELL_BERSERK = 26662 }; +enum SpellValues : int32 +{ + IMPALE_BP1 = 3937, + IMPALE_BP2 = 299 +}; + enum Events { EVENT_IMPALE = 1, @@ -219,13 +225,15 @@ public: case EVENT_IMPALE: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) { - me->CastSpell(target, SPELL_IMPALE_10, false); + int32 bp1 = IMPALE_BP1; + int32 bp2 = IMPALE_BP2; + me->CastCustomSpell(target, SPELL_IMPALE, 0, &bp1, &bp2, false, nullptr, nullptr, ObjectGuid::Empty); } events.RepeatEvent(20000); break; case EVENT_LOCUST_SWARM: Talk(EMOTE_LOCUST); - me->CastSpell(me, SPELL_LOCUST_SWARM_10, false); + me->CastSpell(me, SPELL_LOCUST_SWARM, false); events.ScheduleEvent(EVENT_SPAWN_GUARD, 3000); events.RepeatEvent(90000); break; diff --git a/src/naxx40Scripts/boss_faerlina_40.cpp b/src/naxx40Scripts/boss_faerlina_40.cpp index f326e3c..038df06 100644 --- a/src/naxx40Scripts/boss_faerlina_40.cpp +++ b/src/naxx40Scripts/boss_faerlina_40.cpp @@ -33,12 +33,22 @@ enum Yells enum Spells { - SPELL_POISON_BOLT_VOLLEY_10 = 28796, - SPELL_RAIN_OF_FIRE_10 = 28794, - SPELL_FRENZY_10 = 28798, + SPELL_POISON_BOLT_VOLLEY = 28796, + SPELL_RAIN_OF_FIRE = 28794, + SPELL_FRENZY = 28798, SPELL_WIDOWS_EMBRACE = 28732 }; +enum SpellValues : int32 +{ + POISON_BOLT_VOLLEY_BP0 = 1224, + POISON_BOLT_VOLLEY_BP1 = 416, + RAIN_OF_FIRE_BP0 = 1849, + FRENZY_BP0 = 149, + FRENZY_BP1 = 74, + FRENZY_BP2 = 49 +}; + enum Events { EVENT_POISON_BOLT = 1, @@ -194,23 +204,33 @@ public: case EVENT_POISON_BOLT: if (!me->HasAura(SPELL_WIDOWS_EMBRACE)) { - me->CastCustomSpell(SPELL_POISON_BOLT_VOLLEY_10, SPELLVALUE_MAX_TARGETS, 10, me, false); + CustomSpellValues values; + int32 bp0 = POISON_BOLT_VOLLEY_BP0; + int32 bp1 = POISON_BOLT_VOLLEY_BP1; + values.AddSpellMod(SPELLVALUE_MAX_TARGETS, 10); + values.AddSpellMod(SPELLVALUE_BASE_POINT0, bp0); + values.AddSpellMod(SPELLVALUE_BASE_POINT1, bp1); + me->CastCustomSpell(SPELL_POISON_BOLT_VOLLEY, values, me, TRIGGERED_NONE, nullptr, nullptr, ObjectGuid::Empty); } events.RepeatEvent(urand(7000, 12000)); break; case EVENT_RAIN_OF_FIRE: if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) { - me->CastSpell(target, SPELL_RAIN_OF_FIRE_10, false); + int32 bp0 = RAIN_OF_FIRE_BP0; + me->CastCustomSpell(target, SPELL_RAIN_OF_FIRE, &bp0, 0, 0, false, nullptr, nullptr, ObjectGuid::Empty); } events.RepeatEvent(urand(8000, 12000)); break; case EVENT_FRENZY: - if (!me->HasAura(SPELL_FRENZY_10)) + if (!me->HasAura(SPELL_FRENZY)) { Talk(SAY_FRENZY); Talk(EMOTE_FRENZY); - me->CastSpell(me, SPELL_FRENZY_10, true); + int32 bp0 = FRENZY_BP0; + int32 bp1 = FRENZY_BP1; + int32 bp2 = FRENZY_BP2; + me->CastCustomSpell(me, SPELL_FRENZY, &bp0, &bp1, &bp2, true, nullptr, nullptr, ObjectGuid::Empty); events.RepeatEvent(60000); } else @@ -227,9 +247,9 @@ public: if (spell->Id == SPELL_WIDOWS_EMBRACE) { Talk(EMOTE_WIDOWS_EMBRACE); - if (me->HasAura(SPELL_FRENZY_10)) + if (me->HasAura(SPELL_FRENZY)) { - me->RemoveAurasDueToSpell(SPELL_FRENZY_10); + me->RemoveAurasDueToSpell(SPELL_FRENZY); events.RescheduleEvent(EVENT_FRENZY, 60000); } pInstance->SetData(DATA_FRENZY_REMOVED, 0);