Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ulduar: Convert Iron Council to BossAI and Spell Lists #431

Draft
wants to merge 24 commits into
base: master
Choose a base branch
from

Conversation

insunaa
Copy link
Contributor

@insunaa insunaa commented Jan 19, 2023

🍰 Pullrequest

This PR converts the Iron Council to BossAI + Spell Lists

Todo / Checklist

  • Implement 25-Man spell list
  • Add Spell Scripts to SQL
  • Test the combat
DELETE FROM `creature_spell_list` WHERE `Id` IN (3285700, 3286700, 3292700);
INSERT INTO `creature_spell_list` (`Id`, `Position`, `SpellId`, `InitialMin`, `InitialMax`, `RepeatMin`, `RepeatMax`, `Flags`, `TargetId`, `ScriptId`, `Availability`, `Probability`, `Comments`) VALUES
(3285700, 0, 61879,     0,     0,  2000,  2000, 2, 100, 0, 100, 0, 'Stormcaller Brundir (10) - Chain Lightning'),
(3285700, 1, 61869, 35000, 35000, 80000, 80000, 2,   0, 0, 100, 0, 'Stormcaller Brundir (10) - Overload'),
(3285700, 2, 61915,  4000,  4000, 30000, 30000, 2,   0, 0, 100, 0, 'Stormcaller Brundir (10) - Lightning Whirl'),
(3285700, 3, 61887, 60000, 60000, 90000, 90000, 2,   0, 0, 100, 0, 'Stormcaller Brundir (10) - Lightning Tendrils'),
(3286700, 0, 61903, 15000, 15000, 15000, 15000, 0,   1, 0, 100, 0, 'Steelbreaker (10) - Fusion Punch'),
(3286700, 1, 64641, 15000, 15000, 10000, 15000, 0,   0, 0, 100, 0, 'Steelbreaker (10) - Static  Disruption'),
(3286700, 2, 64637, 10000, 10000, 60000, 60000, 0,   1, 0, 100, 0, 'Steelbreaker (10) - Overwhelming Power'),
(3292700, 0, 61973, 15000, 15000, 45000, 45000, 3,   5, 0, 100, 0, 'Runemaster Molgeim (10) - Rune of Power'),
(3292700, 1, 62274, 25000, 25000, 40000, 40000, 2,   0, 0, 100, 0, 'Runemaster Molgeim (10) - Shield of Runes'),
(3292700, 2, 62269, 30000, 30000, 30000, 30000, 2, 100, 0, 100, 0, 'Runemaster Molgeim (10) - Rune of Death'),
(3292700, 3, 62273, 10000, 10000, 30000, 30000, 2, 100, 0, 100, 0, 'Runemaster Molgeim (10) - Rune of Summoning');

INSERT INTO `creature_spell_list_entry` VALUES
(3285700, 'Ulduar - Stormcaller Brundir (10)', 100, 100),
(3292700, 'Ulduar - Runemaster Molgeim (10)', 100, 100),
(3286700, 'Ulduar - Steelbreaker (10)', 100, 100);

UPDATE `creature_template` SET `SpellList`=3285700 WHERE `entry`=32857;
UPDATE `creature_template` SET `SpellList`=3292700 WHERE `entry`=32927;
UPDATE `creature_template` SET `SpellList`=3286700 WHERE `entry`=32867;

DELETE FROM `creature_spell_list` WHERE `Id` IN (3369400, 3369300, 3369200);
INSERT INTO `creature_spell_list` (`Id`, `Position`, `SpellId`, `InitialMin`, `InitialMax`, `RepeatMin`, `RepeatMax`, `Flags`, `TargetId`, `ScriptId`, `Availability`, `Probability`, `Comments`) VALUES
(3369400, 0, 63479,     0,     0,  2000,  2000, 2, 100, 0, 100, 0, 'Stormcaller Brundir (25) - Chain Lightning'),
(3369400, 1, 61869, 35000, 35000, 80000, 80000, 2,   0, 0, 100, 0, 'Stormcaller Brundir (25) - Overload'),
(3369400, 2, 63483,  4000,  4000, 30000, 30000, 2,   0, 0, 100, 0, 'Stormcaller Brundir (25) - Lightning Whirl'),
(3369400, 3, 63486, 60000, 60000, 90000, 90000, 2,   0, 0, 100, 0, 'Stormcaller Brundir (25) - Lightning Tendrils'),
(3369300, 0, 63493, 15000, 15000, 15000, 15000, 0,   1, 0, 100, 0, 'Steelbreaker (25) - Fusion Punch'),
(3369300, 1, 64641, 15000, 15000, 10000, 15000, 0,   0, 0, 100, 0, 'Steelbreaker (25) - Static  Disruption'),
(3369300, 2, 61888, 10000, 10000, 35000, 35000, 0,   1, 0, 100, 0, 'Steelbreaker (25) - Overwhelming Power'),
(3369200, 0, 61973, 15000, 15000, 45000, 45000, 3,   5, 0, 100, 0, 'Runemaster Molgeim (25) - Rune of Power'),
(3369200, 1, 63489, 25000, 25000, 40000, 40000, 2,   0, 0, 100, 0, 'Runemaster Molgeim (25) - Shield of Runes'),
(3369200, 2, 63490, 30000, 30000, 30000, 30000, 2, 100, 0, 100, 0, 'Runemaster Molgeim (25) - Rune of Death'),
(3369200, 3, 62273, 10000, 10000, 30000, 30000, 2, 100, 0, 100, 0, 'Runemaster Molgeim (25) - Rune of Summoning');

INSERT INTO `creature_spell_list_entry` VALUES
(3369400, 'Ulduar - Stormcaller Brundir (25)', 100, 100),
(3369200, 'Ulduar - Runemaster Molgeim (25)', 100, 100),
(3369300, 'Ulduar - Steelbreaker (25)', 100, 100);

UPDATE `creature_template` SET `SpellList`=3369400 WHERE `entry`=33694;
UPDATE `creature_template` SET `SpellList`=3369200 WHERE `entry`=33692;
UPDATE `creature_template` SET `SpellList`=3369300 WHERE `entry`=33693;

UPDATE `creature_addon` SET `emote`=0 WHERE `guid`=6030087;
UPDATE `creature_model_info` SET `bounding_radius`=0.62,`combat_reach`=2 WHERE `modelid`=28381;
UPDATE `creature_template` SET `UnitFlags`=`UnitFlags`|33554432 WHERE `entry` IN (33705, 32866, 33051);

UPDATE `creature_template` SET `HoverHeight`=10 WHERE `entry` IN (32857, 33694);

UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15684 WHERE Id=34314;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15687 WHERE Id=33962;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15689 WHERE Id=34318;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15690 WHERE Id=34319;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15685 WHERE Id=34315;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15686 WHERE Id=34316;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15691 WHERE Id=34320;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15688 WHERE Id=34317;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15657 WHERE Id=34328;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15662 WHERE Id=34333;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15663 WHERE Id=34334;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15660 WHERE Id=34331;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15661 WHERE Id=34332;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15658 WHERE Id=34329;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15659 WHERE Id=34330;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15664 WHERE Id=34335;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15674 WHERE Id=34321;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15678 WHERE Id=34325;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15679 WHERE Id=34326;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15675 WHERE Id=34322;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15676 WHERE Id=34323;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15677 WHERE Id=34324;
UPDATE `broadcast_text` SET ChatTypeId=1,SoundEntriesID1=15680 WHERE Id=34327;

-- Testing Only!!

DELETE FROM `spell_scripts` WHERE `Id` IN
(61883, 61887, 61888, 61900, 61915, 61920, 62269, 62273, 62535, 63482, 63483, 63486, 63513, 63490, 64568, 64637, 64641);

INSERT INTO `spell_scripts` VALUES
(61883,'spell_lightning_tendrils_visual'),
(61887,'spell_lightning_tendrils'),
(61888,'spell_overwhelming_power'),
(61900,'spell_electrical_charge_council'),
(61915,'spell_lightning_whirl_trigger'),
(61920,'spell_supercharge_iron_council'),
(62269,'spell_rune_of_death_iron_council'),
(62273,'spell_rune_of_summoning_iron_council'),
(62535,'spell_berserk_iron_council'),
(63482,'spell_lightning_whirl_heroic'),
(63483,'spell_lightning_whirl_trigger'),
(63486,'spell_lightning_tendrils'),
(63513,'spell_rune_of_power_council'),
(63490,'spell_rune_of_death_iron_council'),
(64568,'spell_blood_reserve_enchant'),
(64637,'spell_overwhelming_power'),
(64641,'spell_static_disruption');

@insunaa insunaa marked this pull request as ready for review January 20, 2023 18:22
caster->CastSpell(nullptr, SPELL_TENDRILS_VISUAL, TRIGGERED_OLD_TRIGGERED);
DoBroadcastText(SAY_BRUNDIR_FLY, caster);
caster->SetHover(true);
caster->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

already handled by the visual effect
actually requires

caster->SetByteValue(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_MISC_FLAGS, UNIT_BYTE1_FLAG_FLY_ANIM);

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the flag is in sniff, then add it in script.

if (m_pInstance)
m_pInstance->SetData(TYPE_ASSEMBLY, SPECIAL);
}
struct LightningTendrils : public SpellScript, public AuraScript
Copy link
Contributor Author

@insunaa insunaa Oct 29, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

needs to be redone
63486 is casted and hover flag is immediately set, then after 3 ticks (3 seconds) SMSG_ON_MONSTER_MOVE is sent for the hovering waypoint
3 ticks before the aura ends SMSG_MONSTER_MOVE is set for the floor
once the aura disappears the hover flag is immediately unset.
the aura is present for 24 ticks

SetSpecialAchievementCriteria(TYPE_ACHIEV_STEELBREAKER, true);
switch (urand(0,2))
{
case 0: if(Unit* brundir = GetSingleCreatureFromStorage(NPC_BRUNDIR)) DoBroadcastText(34314, brundir); break;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add these texts to enum

m_pInstance->SetData(TYPE_ASSEMBLY, IN_PROGRESS);
BossAI::Aggro();
if (m_instance)
m_instance->SetData(TYPE_ASSEMBLY, IN_PROGRESS);

m_creature->InterruptNonMeleeSpells(false);
DoCastSpellIfCan(m_creature, SPELL_BERSERK, CAST_TRIGGERED);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty sure the berserk spell has self as target in spell data

@killerwife
Copy link
Contributor

Each mob needs 3 spell lists for each level of empowerment. Each phase gives them one additional ability and when they get empowered, the spell lists need to be switched in script.

@insunaa
Copy link
Contributor Author

insunaa commented Nov 9, 2023

I didn't give them separate spell lists because I made the spell impossible to cast if they don't have a set number of auras. Are you sure it's done with separate spell lists?

@killerwife
Copy link
Contributor

Simple, even if spell cast doesnt go through, cooldown still ticks, the empower 1 phase spell for lets say molgheim would go through immediately on him gaining aura empowerment stack 1. Cooldown needs to start in the moment of his empowerment, and that implies him swapping spell lists on moment of empowerment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants