Core/InstanceScript: Encounterframe research - extended the EncounterFrameType enum

This commit is contained in:
kaelima
2012-03-16 23:16:22 +01:00
parent 6f031b814e
commit d810acdeea
4 changed files with 30 additions and 24 deletions

View File

@@ -397,22 +397,22 @@ void InstanceScript::SendEncounterUnit(uint32 type, Unit* unit /*= NULL*/, uint8
switch (type)
{
case ENCOUNTER_FRAME_ADD:
case ENCOUNTER_FRAME_REMOVE:
case 2:
case ENCOUNTER_FRAME_ENGAGE:
case ENCOUNTER_FRAME_DISENGAGE:
case ENCOUNTER_FRAME_UPDATE_PRIORITY:
data.append(unit->GetPackGUID());
data << uint8(param1);
break;
case 3:
case 4:
case 6:
case ENCOUNTER_FRAME_ADD_TIMER:
case ENCOUNTER_FRAME_ENABLE_OBJECTIVE:
case ENCOUNTER_FRAME_DISABLE_OBJECTIVE:
data << uint8(param1);
data << uint8(param2);
break;
case 5:
case ENCOUNTER_FRAME_UPDATE_OBJECTIVE:
data << uint8(param1);
break;
case 7:
case ENCOUNTER_FRAME_UNK7:
default:
break;
}

View File

@@ -42,8 +42,14 @@ typedef std::set<Creature*> MinionSet;
enum EncounterFrameType
{
ENCOUNTER_FRAME_ADD = 0,
ENCOUNTER_FRAME_REMOVE = 1,
ENCOUNTER_FRAME_ENGAGE = 0,
ENCOUNTER_FRAME_DISENGAGE = 1,
ENCOUNTER_FRAME_UPDATE_PRIORITY = 2,
ENCOUNTER_FRAME_ADD_TIMER = 3,
ENCOUNTER_FRAME_ENABLE_OBJECTIVE = 4,
ENCOUNTER_FRAME_UPDATE_OBJECTIVE = 5,
ENCOUNTER_FRAME_DISABLE_OBJECTIVE = 6,
ENCOUNTER_FRAME_UNK7 = 7, // Seems to have something to do with sorting the encounter units
};
enum EncounterState

View File

@@ -210,19 +210,19 @@ class boss_blood_council_controller : public CreatureScript
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, keleseth);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, keleseth);
DoZoneInCombat(keleseth);
}
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, taldaram);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, taldaram);
DoZoneInCombat(taldaram);
}
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, valanar);
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, valanar);
DoZoneInCombat(valanar);
}
@@ -412,12 +412,12 @@ class boss_prince_keleseth_icc : public CreatureScript
summons.DespawnAll();
Talk(SAY_KELESETH_DEATH);
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
}
void JustReachedHome()
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
me->SetHealth(_spawnHealth);
_isEmpowered = false;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))
@@ -636,12 +636,12 @@ class boss_prince_taldaram_icc : public CreatureScript
summons.DespawnAll();
Talk(EMOTE_TALDARAM_DEATH);
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
}
void JustReachedHome()
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
me->SetHealth(_spawnHealth);
_isEmpowered = false;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))
@@ -859,12 +859,12 @@ class boss_prince_valanar_icc : public CreatureScript
summons.DespawnAll();
Talk(SAY_VALANAR_DEATH);
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
}
void JustReachedHome()
{
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
me->SetHealth(me->GetMaxHealth());
_isEmpowered = false;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_BLOOD_PRINCES_CONTROL)))

View File

@@ -232,7 +232,7 @@ class ValithriaDespawner : public BasicEvent
{
case NPC_VALITHRIA_DREAMWALKER:
if (InstanceScript* instance = creature->GetInstanceScript())
instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, creature);
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, creature);
break;
case NPC_BLAZING_SKELETON:
case NPC_SUPPRESSER:
@@ -304,7 +304,7 @@ class boss_valithria_dreamwalker : public CreatureScript
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_HEAL_PCT, true);
// Glyph of Dispel Magic - not a percent heal by effect, its cast with custom basepoints
me->ApplySpellImmune(0, IMMUNITY_ID, 56131, true);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
_missedPortals = 0;
_under25PercentTalkDone = false;
_over75PercentTalkDone = false;
@@ -322,7 +322,7 @@ class boss_valithria_dreamwalker : public CreatureScript
return;
DoCast(me, SPELL_COPY_DAMAGE);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ADD, me);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
_events.ScheduleEvent(EVENT_INTRO_TALK, 15000);
_events.ScheduleEvent(EVENT_DREAM_PORTAL, urand(45000, 48000));
if (IsHeroic())
@@ -341,7 +341,7 @@ class boss_valithria_dreamwalker : public CreatureScript
{
_done = true;
Talk(SAY_VALITHRIA_SUCCESS);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
me->RemoveAurasDueToSpell(SPELL_CORRUPTION_VALITHRIA);
DoCast(me, SPELL_ACHIEVEMENT_CHECK);
DoCastAOE(SPELL_DREAMWALKERS_RAGE);
@@ -376,7 +376,7 @@ class boss_valithria_dreamwalker : public CreatureScript
{
_justDied = true;
Talk(SAY_VALITHRIA_DEATH);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_REMOVE, me);
_instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
trigger->AI()->DoAction(ACTION_DEATH);
}