Skip to content
Permalink
Browse files

[c3143] Improve BRD Arena event (last part)

* Cosmetic changes in BRD Arena event:
- All texts for High Justice Grimstone are now in and in the right order
- Emotes for High Justice Grimstone are now in
- High Justice Grimstone will now cast his visual spell when
spawning/despawning
- Gate opening visual spells are now in
- Some of the arena spectators now cheers at event start
* Fixes temporary faction ID for arena spectators from previous commit

Data come from official data. Results are close to what is visible in:
https://www.youtube.com/watch?v=w965TeVu56w

(based on commit 2aaf76e)

Signed-off-by: Xfurry <xfurry@scriptdev2.com>

(based on commit [3143] - 4c83ba9)

Signed-off-by: Xfurry <xfurry@scriptdev2.com>
  • Loading branch information...
cala authored and xfurry committed Jul 19, 2015
1 parent 4afd55e commit 95bf9c81fb92ef2df59f6d28e727cd1c2a42a609
@@ -98,13 +98,14 @@ enum
MAX_POSSIBLE_THELDREN_ADDS = 8,

SPELL_SUMMON_THELRIN_DND = 27517,
/* Other spells used by Grimstone
SPELL_ASHCROMBES_TELEPORT_A = 15742
// Other spells used by Grimstone
SPELL_ASHCROMBES_TELEPORT_A = 15742,
SPELL_ASHCROMBES_TELEPORT_B = 6422,
SPELL_ARENA_FLASH_A = 15737,
SPELL_ARENA_FLASH_B = 15739,
*/

SPELL_ARENA_FLASH_C = 15740,
SPELL_ARENA_FLASH_D = 15741,

QUEST_THE_CHALLENGE = 9015,
NPC_THELDREN_QUEST_CREDIT = 16166,
};
@@ -191,6 +192,7 @@ struct npc_grimstoneAI : public npc_escortAI
uint32 m_uiGladiatorId[MAX_THELDREN_ADDS];

GuidList m_lSummonedGUIDList;
GuidSet m_lArenaCrowd;

void Reset() override
{
@@ -275,7 +277,7 @@ struct npc_grimstoneAI : public npc_escortAI
switch (uiPointId)
{
case 0: // Middle reached first time
DoScriptText(urand(0, 1) ? SAY_START_1 : SAY_START_2, m_creature);
DoScriptText(SAY_START_1, m_creature);
SetEscortPaused(true);
m_uiEventTimer = 5000;
break;
@@ -288,7 +290,7 @@ struct npc_grimstoneAI : public npc_escortAI
SetEscortPaused(true);
break;
case 3: // Middle reached second time
DoScriptText(urand(0, 1) ? SAY_SUMMON_BOSS_1 : SAY_SUMMON_BOSS_2, m_creature);
DoScriptText(SAY_SUMMON_BOSS_1, m_creature);
break;
case 4: // Reached North Gate
DoScriptText(SAY_OPEN_NORTH_GATE, m_creature);
@@ -313,7 +315,7 @@ struct npc_grimstoneAI : public npc_escortAI
if (m_pInstance->GetData(TYPE_RING_OF_LAW) == FAIL)
{
// Reset Doors
if (m_uiEventPhase >= 9) // North Gate is opened
if (m_uiEventPhase >= 10) // North Gate is opened
{
m_pInstance->DoUseDoorOrButton(GO_ARENA_2);
m_pInstance->DoUseDoorOrButton(GO_ARENA_4);
@@ -345,8 +347,20 @@ struct npc_grimstoneAI : public npc_escortAI
{
case 0:
// Shortly after spawn, start walking
// DoScriptText(-1000000, m_creature); // no more text on spawn
m_creature->CastSpell(m_creature, SPELL_ASHCROMBES_TELEPORT_A, true);
DoScriptText(SAY_START_2, m_creature);
m_pInstance->DoUseDoorOrButton(GO_ARENA_4);
// Some of the NPCs in the crowd do cheer emote at event start
// we randomly select 25% of the NPCs to do this
m_lArenaCrowd = m_pInstance->GetArenaCrowdGuid();
for (GuidSet::const_iterator itr = m_lArenaCrowd.begin(); itr != m_lArenaCrowd.end(); ++itr)
{
if (Creature* pSpectator = m_creature->GetMap()->GetCreature(*itr))
{
if (urand(0, 1) < 0.25)
pSpectator->HandleEmote(EMOTE_ONESHOT_CHEER);
}
}
Start(false);
SetEscortPaused(false);
m_uiEventTimer = 0;
@@ -361,41 +375,56 @@ struct npc_grimstoneAI : public npc_escortAI
break;
case 3:
// Open East Gate
m_creature->CastSpell(m_creature, SPELL_ARENA_FLASH_A, true);
m_creature->CastSpell(m_creature, SPELL_ARENA_FLASH_B, true);
m_pInstance->DoUseDoorOrButton(GO_ARENA_1);
m_uiEventTimer = 3000;
break;
case 4:
SetEscortPaused(false);
// timer for teleport out spell which has 2000 ms cast time
m_creature->CastSpell(m_creature, SPELL_ASHCROMBES_TELEPORT_B, true);
m_uiEventTimer = 2500;
break;
case 5:
m_creature->SetVisibility(VISIBILITY_OFF);
SetEscortPaused(false);
// Summon Ring Mob(s)
SummonRingMob(aRingMob[m_uiMobSpawnId], POS_EAST);
m_uiEventTimer = 8000;
break;
case 5:
case 6:
// Summon Ring Mob(s)
SummonRingMob(aRingMob[m_uiMobSpawnId], POS_EAST);
SummonRingMob(aRingMob[m_uiMobSpawnId], POS_EAST);
m_uiEventTimer = 8000;
break;
case 6:
case 7:
// Summon Ring Mob(s)
SummonRingMob(aRingMob[m_uiMobSpawnId], POS_EAST);
m_uiEventTimer = 0;
break;
case 7:
case 8:
// Summoned Mobs are dead, continue event
DoScriptText(SAY_SUMMON_BOSS_2, m_creature);
m_creature->SetVisibility(VISIBILITY_ON);
m_creature->CastSpell(m_creature, SPELL_ASHCROMBES_TELEPORT_A, true);
m_pInstance->DoUseDoorOrButton(GO_ARENA_1);
// DoScriptText(-1000000, m_creature); // after killed the mobs, no say here
SetEscortPaused(false);
m_uiEventTimer = 0;
break;
case 8:
case 9:
// Open North Gate
m_creature->CastSpell(m_creature, SPELL_ARENA_FLASH_C, true);
m_creature->CastSpell(m_creature, SPELL_ARENA_FLASH_D, true);
m_pInstance->DoUseDoorOrButton(GO_ARENA_2);
m_uiEventTimer = 5000;
break;
case 9:
case 10:
// timer for teleport out spell which has 2000 ms cast time
m_creature->CastSpell(m_creature, SPELL_ASHCROMBES_TELEPORT_B, true);
m_uiEventTimer = 2500;
break;
case 11:
// Summon Boss
m_creature->SetVisibility(VISIBILITY_OFF);
// If banner summoned after start, then summon Thelden after the creatures are dead
@@ -413,7 +442,7 @@ struct npc_grimstoneAI : public npc_escortAI
}
m_uiEventTimer = 0;
break;
case 10:
case 12:
// Boss dead
m_lSummonedGUIDList.clear();
m_pInstance->DoUseDoorOrButton(GO_ARENA_2);
@@ -96,7 +96,7 @@ enum
SPELL_STONED = 10255, // Aura of Warbringer Constructs in Relict Vault

FACTION_DWARF_HOSTILE = 754, // Hostile faction for the Tomb of the Seven dwarfs
FACTION_ARENA_NEUTRAL = 674, // Neutral faction for NPC in top of Arena after event complete
FACTION_ARENA_NEUTRAL = 15, // Neutral faction for NPC in top of Arena after event complete
};

struct ArenaCylinder
@@ -179,6 +179,7 @@ class instance_blackrock_depths : public ScriptedInstance
// Arena Event
void SetArenaCenterCoords(float fX, float fY, float fZ) { m_fArenaCenterX = fX; m_fArenaCenterY = fY; m_fArenaCenterZ = fZ; }
void GetArenaCenterCoords(float& fX, float& fY, float& fZ) { fX = m_fArenaCenterX; fY = m_fArenaCenterY; fZ = m_fArenaCenterZ; }
GuidSet GetArenaCrowdGuid() { return m_sArenaCrowdNpcGuids; }

private:
void DoCallNextDwarf();
@@ -1,4 +1,4 @@
#ifndef __SD2_REVISION_NR_H__
#define __SD2_REVISION_NR_H__
#define SD2_REVISION_NR "3142"
#define SD2_REVISION_NR "3143"
#endif // __SD2_REVISION_NR_H__
@@ -1551,12 +1551,12 @@ INSERT INTO script_texts (entry,content_default,sound,type,language,emote,commen
(-1230002,'Hail to the king, baby!',0,1,0,0,'dagran SAY_SLAY'),
(-1230003,'You have challenged the Seven, and now you will die!',0,0,0,0,'doomrel SAY_DOOMREL_START_EVENT'),

(-1230004,'The Sons of Thaurissan shall watch you perish in the Ring of the Law!',0,1,0,0,'grimstone SAY_START_1'),
(-1230005,'You have been sentenced to death for crimes against the Dark Iron Nation!',0,1,0,0,'grimstone SAY_START_2'),
(-1230006,'Unleash the fury and let it be done!',0,1,0,0,'grimstone SAY_OPEN_EAST_GATE'),
(-1230007,'But your real punishment lies ahead.',0,1,0,0,'grimstone SAY_SUMMON_BOSS_1'),
(-1230008,'Haha! I bet you thought you were done!',0,1,0,0,'grimstone SAY_SUMMON_BOSS_2'),
(-1230009,'Good Riddance!',0,1,0,0,'grimstone SAY_OPEN_NORTH_GATE'),
(-1230004,'The Sons of Thaurissan shall watch you perish in the Ring of the Law!',0,1,0,5,'grimstone SAY_START_1'),
(-1230005,'You have been sentenced to death for crimes against the Dark Iron Nation!',0,1,0,25,'grimstone SAY_START_2'),
(-1230006,'Unleash the fury and let it be done!',0,1,0,15,'grimstone SAY_OPEN_EAST_GATE'),
(-1230007,'But your real punishment lies ahead.',0,1,0,1,'grimstone SAY_SUMMON_BOSS_1'),
(-1230008,'Haha! I bet you thought you were done!',0,1,0,153,'grimstone SAY_SUMMON_BOSS_2'),
(-1230009,'Good Riddance!',0,1,0,5,'grimstone SAY_OPEN_NORTH_GATE'),

(-1230010,'Thank you, $N! I\'m free!!!',0,0,0,0,'dughal SAY_FREE'),
(-1230011,'You locked up the wrong Marshal, $N. Prepare to be destroyed!',0,0,0,0,'windsor SAY_AGGRO_1'),
@@ -0,0 +1,6 @@
UPDATE script_texts SET emote=25 WHERE entry=-1230005;
UPDATE script_texts SET emote=5 WHERE entry=-1230004;
UPDATE script_texts SET emote=15 WHERE entry=-1230006;
UPDATE script_texts SET emote=153 WHERE entry=-1230008;
UPDATE script_texts SET emote=1 WHERE entry=-1230007;
UPDATE script_texts SET emote=5 WHERE entry=-1230009;

0 comments on commit 95bf9c8

Please sign in to comment.
You can’t perform that action at this time.