Scripting/The Arcatraz: Add text scripting for deaths

This commit is contained in:
Malcrom
2013-11-10 10:00:47 -03:30
parent 2d28d0c109
commit c2db6d49ce
2 changed files with 85 additions and 7 deletions

View File

@@ -17,8 +17,8 @@
/* ScriptData
SDName: boss_dalliah_the_doomsayer
SD%Complete: 95%
SDComment: soccothrates death left to script
SD%Complete: 100%
SDComment:
SDCategory: Tempest Keep, The Arcatraz
EndScriptData */
@@ -33,7 +33,7 @@ enum Say
SAY_WHIRLWIND = 3,
SAY_HEAL = 4,
SAY_DEATH = 5,
SAY_SOCCOTHRATES_DEATH = 7, // To be scripted
SAY_SOCCOTHRATES_DEATH = 7,
// boss_wrath_scryer_soccothrates
SAY_AGGRO_DALLIAH_FIRST = 0,
@@ -54,7 +54,8 @@ enum Events
EVENT_WHIRLWIND = 2,
EVENT_HEAL = 3,
EVENT_SHADOW_WAVE = 4, // Heroic only
EVENT_ME_FIRST = 5
EVENT_ME_FIRST = 5,
EVENT_SOCCOTHRATES_DEATH = 6
};
class boss_dalliah_the_doomsayer : public CreatureScript
@@ -69,12 +70,17 @@ class boss_dalliah_the_doomsayer : public CreatureScript
void Reset() OVERRIDE
{
_Reset();
soccothratesDeath = false;
}
void JustDied(Unit* /*killer*/) OVERRIDE
{
_JustDied();
Talk(SAY_DEATH);
if (Creature* soccothrates = me->GetCreature(*me, soccothratesGUID))
if (soccothrates->IsAlive() && !soccothrates->IsInCombat())
soccothrates->AI()->SetData(1, 1);
}
void EnterCombat(Unit* /*who*/) OVERRIDE
@@ -96,10 +102,43 @@ class boss_dalliah_the_doomsayer : public CreatureScript
Talk(SAY_SLAY);
}
void SetData(uint32 /*type*/, uint32 data) OVERRIDE
{
switch (data)
{
case 1:
events.ScheduleEvent(EVENT_SOCCOTHRATES_DEATH, 6000);
soccothratesDeath = true;
break;
break;
default:
break;
}
}
void UpdateAI(uint32 diff) OVERRIDE
{
if (!UpdateVictim())
{
if (soccothratesDeath)
{
events.Update(diff);
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_SOCCOTHRATES_DEATH:
Talk(SAY_SOCCOTHRATES_DEATH);
break;
default:
break;
}
}
}
return;
}
events.Update(diff);
@@ -150,6 +189,7 @@ class boss_dalliah_the_doomsayer : public CreatureScript
private:
bool soccothratesTaunt;
bool soccothratesDeath;
uint64 soccothratesGUID;
};

View File

@@ -17,8 +17,8 @@
/* ScriptData
SDName: boss_wrath_scryer_soccothrates
SD%Complete: 85%
SDComment: charge and dalliah death left to script
SD%Complete: 95%
SDComment: charge left to script
SDCategory: Tempest Keep, The Arcatraz
EndScriptData */
@@ -33,7 +33,7 @@ enum Say
SAY_SLAY = 2,
SAY_KNOCK_AWAY = 3,
SAY_DEATH = 4,
SAY_DALLIAH_DEATH = 6, // To be scripted
SAY_DALLIAH_DEATH = 6,
SAY_SOCCOTHRATES_CONVO_1 = 7,
SAY_SOCCOTHRATES_CONVO_2 = 8,
SAY_SOCCOTHRATES_CONVO_3 = 9,
@@ -72,6 +72,7 @@ enum Events
EVENT_PREFIGHT_8 = 10,
EVENT_PREFIGHT_9 = 11,
EVENT_ME_FIRST = 12,
EVENT_DALLIAH_DEATH = 13
};
class boss_wrath_scryer_soccothrates : public CreatureScript
@@ -88,6 +89,7 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
_Reset();
preFight = false;
dalliahTaunt = false;
dalliahDeath = false;
DoCast(me, SPELL_FEL_IMMOLATION);
}
@@ -95,6 +97,10 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
{
_JustDied();
Talk(SAY_DEATH);
if (Creature* dalliah = me->GetCreature(*me, dalliahGUID))
if (dalliah->IsAlive() && !dalliah->IsInCombat())
dalliah->AI()->SetData(1, 1);
}
void EnterCombat(Unit* /*who*/) OVERRIDE
@@ -131,6 +137,20 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
}
}
void SetData(uint32 /*type*/, uint32 data) OVERRIDE
{
switch (data)
{
case 1:
events.ScheduleEvent(EVENT_DALLIAH_DEATH, 6000);
dalliahDeath = true;
break;
break;
default:
break;
}
}
void UpdateAI(uint32 diff) OVERRIDE
{
if (!UpdateVictim())
@@ -195,6 +215,23 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
}
}
if (dalliahDeath)
{
events.Update(diff);
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_DALLIAH_DEATH:
Talk(SAY_DALLIAH_DEATH);
break;
default:
break;
}
}
}
return;
}
@@ -239,6 +276,7 @@ class boss_wrath_scryer_soccothrates : public CreatureScript
private:
bool preFight;
bool dalliahTaunt;
bool dalliahDeath;
uint64 dalliahGUID;
};