本文整理汇总了C++中Creature::AddAura方法的典型用法代码示例。如果您正苦于以下问题:C++ Creature::AddAura方法的具体用法?C++ Creature::AddAura怎么用?C++ Creature::AddAura使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Creature
的用法示例。
在下文中一共展示了Creature::AddAura方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ChangeState
void ChangeState(uint64 guid,bool active,bool finalphase)
{
Creature * creature = instance->GetCreature(guid);
uint16 talkid;
uint16 wayid;
if (finalphase)
{
switch (creature->GetEntry())
{
case BOSS_FELUDIUS:
talkid = SAY_PHASE3_FELUDIUS;
wayid = WALK_FELUDIUS;
break;
}
creature->AI()->Talk(talkid);
creature->UpdateWaypointID(wayid);
}
if (active)
{
creature->RemoveAura(creature->GetAura(8611,guid));
}
else
{
creature->AddAura(8611,creature);
}
}
示例2: UpdateAI
void UpdateAI(const uint32 diff)
{
if (!pInstance)
return;
if (!VashjGUID)
return;
Creature *Vashj = Unit::GetCreature(*me, VashjGUID);
if (move <= diff)
{
me->SetUnitMovementFlags(MOVEFLAG_WALK_MODE);
if (phase == 1)
me->GetMotionMaster()->MovePoint(0, x, y, z);
if (phase == 1 && me->GetDistance(x,y,z) < 0.1f)
phase = 2;
if (phase == 2)
{
me->GetMotionMaster()->MovePoint(0, MIDDLE_X, MIDDLE_Y, MIDDLE_Z);
phase = 3;
}
if (phase == 3)
{
me->GetMotionMaster()->MovePoint(0, MIDDLE_X, MIDDLE_Y, MIDDLE_Z);
if (me->GetDistance(MIDDLE_X, MIDDLE_Y, MIDDLE_Z) < 3)
{
SpellEntry *spell = (SpellEntry *)GetSpellStore()->LookupEntry(SPELL_SURGE);
if (spell)
{
for (uint8 i = 0; i < 3; ++i)
{
if (!spell->Effect[i])
continue;
if (Vashj)
Vashj->AddAura(new VashjSurgeAura(spell, i, NULL, Vashj, Vashj));
}
}
me->Kill(me);
}
}
if (Vashj)
{
if (!Vashj->isInCombat() || CAST_AI(boss_lady_vashjAI, Vashj->AI())->Phase != 2 || Vashj->isDead())
{
//call Unsummon()
me->Kill(me);
}
}
move = 1000;
} else move -= diff;
}
示例3: DoWork
void DoWork()
{
switch (m_phase)
{
case 0: // Time: 07/03/2015 11:08:09.619
if (Creature* npc_trigger = me->FindNearestCreature(50373, 20.0f))
if (m_npc = me->SummonCreature(50414, npc_trigger->GetPosition(), TEMPSUMMON_TIMED_DESPAWN, 40000))
{
Position pos = me->GetNearPosition(1.5f, 1.72f);
m_npc->GetMotionMaster()->MovePoint(0, pos, true);
}
m_phase = 1;
break;
case 1: // Time: 07/03/2015 11:08:10.539
Talk(0);
m_timer = 3000;
m_phase = 2;
break;
case 2: // Time: 07/03/2015 11:08:13.253 Number: 5796
if (m_npc && m_npc->IsAlive())
{
m_npc->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_KNEEL);
m_npc->SetFacingToObject(me);
}
m_timer = 750;
m_phase = 3;
break;
case 3: // Time: 07/03/2015 11:08:14.080 Number: 5805
me->HandleEmoteState(EMOTE_STATE_USE_STANDING);
m_timer = 6000;
m_phase = 4;
break;
case 4: // Time: 07/03/2015 11:08:20.133 Number: 5875
me->HandleEmoteState(EMOTE_ONESHOT_NONE);
m_timer = 750;
m_phase = 5;
break;
case 5: // Time: 07/03/2015 11:08:21.350 Number: 5891
me->HandleEmote(EMOTE_ONESHOT_POINT);
m_timer = 2500;
m_phase = 6;
break;
case 6: // Time: 07/03/2015 11:08:23.908 Number: 5934
Talk(1);
m_timer = 250;
m_phase = 7;
break;
case 7: // 07/03/2015 11:08:24.189 Number: 5935
if (m_npc && m_npc->IsAlive())
{
m_npc->AddAura(93460, m_npc);
m_npc->CastSpell(m_npc, 93460);
m_npc->SetDisplayId(36775);
m_npc->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_STAND);
}
m_timer = 2500;
m_phase = 8;
break;
case 8: // Time: 07/03/2015 11:08:26.607 Number: 5967
if (m_npc && m_npc->IsAlive())
{
m_npc->HandleEmote(EMOTE_ONESHOT_TALK);
m_npc->AI()->Talk(0);
}
m_timer = 3750;
m_phase = 9;
break;
case 9: // Time: 07/03/2015 11:08:30.257 Number: 6015
if (m_npc && m_npc->IsAlive())
m_npc->HandleEmote(EMOTE_ONESHOT_SALUTE);
m_timer = 2500;
m_phase = 10;
break;
case 10: // Time: 07/03/2015 11:08:32.691 Number: 6043
if (m_npc && m_npc->IsAlive())
m_npc->GetMotionMaster()->MovePath(5041401, false);
m_timer = 45000;
m_phase = 11;
break;
case 11: // Time: 07/03/2015 11:09:15.139 Number: 6405
if (m_npc && m_npc->IsAlive())
m_npc->DespawnOrUnsummon();
m_timer = urand(15000, 45000);;
m_phase = 0;
break;
}
}
示例4: UpdateAI
void UpdateAI(uint32 diff)
{
if (timer <= diff)
{
if(eventStep == 0)
{
timer = times[eventStep];
if (Player* target = me->FindNearestPlayer(40.0f, true))
if (target && target->GetDistance(me) < 35.0f && !eventProcessed)
{
atramedes = me->FindNearestCreature(NPC_PRE_ATRAMEDES, 100.0f, true);
eventStep = 1;
eventProcessed = true;
nefarian = me->FindNearestCreature(NPC_PRE_NEFARIAN, 100.0f, true);
maloriak = me->FindNearestCreature(NPC_PRE_MALORIAK, 100.0f, true);
// Ghost visual.
atramedes->AddAura(SPELL_GHOST_VISUAL, atramedes);
nefarian->AddAura(SPELL_GHOST_VISUAL, nefarian);
maloriak->AddAura(SPELL_GHOST_VISUAL, maloriak);
}
}else
{
switch(eventStep)
{
// Nefarian
case 1: nefarian->AI()->Talk(0); break;
case 3: nefarian->AI()->Talk(1); break;
case 9: nefarian->AI()->Talk(2); break;
case 10: nefarian->AI()->Talk(3); break;
case 12: nefarian->AI()->Talk(4); break;
case 13: nefarian->AI()->Talk(5); break;
case 14: nefarian->AI()->Talk(6); break;
// Maloriak
case 2: maloriak->AI()->Talk(0); break;
case 4: maloriak->AI()->Talk(1); break;
case 5: maloriak->AI()->Talk(2); break;
case 6: maloriak->AI()->Talk(3); break;
case 7: maloriak->AI()->Talk(4); break;
case 8:
atramedes->AddAura(SPELL_GLOW_ORANGE, atramedes);
atramedes->AddAura(SPELL_BLIND_WHELP, atramedes);
atramedes->GetMotionMaster()->MovePoint(0,121.493f, -225.428f, 75.4535f);
maloriak->AI()->Talk(5);
break;
case 11:
maloriak->AI()->Talk(6);
break;
case 15:
atramedes->RemoveAura(SPELL_GLOW_ORANGE);
atramedes->RemoveAura(SPELL_BLIND_WHELP);
maloriak->AI()->Talk(7);
break;
// Both
case 16:
atramedes->DespawnOrUnsummon();
nefarian->DespawnOrUnsummon();
maloriak->DespawnOrUnsummon();
if(GameObject* throne = me->FindNearestGameObject(GOB_NEFARIANS_THRONE, 100.0f))
throne->Delete();
me->DespawnOrUnsummon(100);
break;
}
timer = times[eventStep];
if(eventStep<16)
eventStep++;
}
} else timer -= diff;
}
示例5: UpdateAI
void UpdateAI(const uint32 diff)
{
if (!UpdateVictim())
return;
events.Update(diff);
// Wise Mari don't rotate
if (me->GetUInt32Value(UNIT_FIELD_TARGET))
me->SetUInt32Value(UNIT_FIELD_TARGET, 0);
if (me->HasUnitState(UNIT_STATE_CASTING) && phase != 2)
return;
while (uint32 eventId = events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_CALL_WATER:
{
if (phase != 1)
break;
Talk(TEXT_CALL_WATER);
Creature* trigger = me->GetCreature(*me, foutainTrigger[++foutainCount]);
if (trigger)
{
me->CastSpell(trigger, SPELL_CALL_WATER, true);
trigger->AddAura(SPELL_CORRUPTED_FOUTAIN, trigger);
}
if (foutainCount == 4)
{
phase = 2;
events.ScheduleEvent(EVENT_SWITCH_PHASE_TWO, TIMER_SWITCH_PHASE_TWO);
break;
}
events.ScheduleEvent(EVENT_CALL_WATER, TIMER_CALL_WATTER + rand() % 6000);
break;
}
case EVENT_HYDROLANCE_START:
{
if (phase != 1)
break;
float facing = 0.00f;
events.ScheduleEvent(EVENT_HYDROLANCE, TIMER_HYDROLANCE);
switch (hydrolancePhase)
{
case HYDROLANCE_BOTTOM:
{
std::list<Creature*> trigger;
me->GetCreatureListWithEntryInGrid(trigger,CREATURE_HYDROLANCE_BOTTOM_TRIGGER, 50.0f);
for (auto itr : trigger)
itr->CastSpell(itr, SPELL_HYDROLANCE_PRECAST, true);
facing = 1.23f;
break;
}
case HYDROLANCE_RIGHT:
for (int i = 0; i < 5; i++)
me->CastSpell(hydrolanceRightTrigger[i][0], hydrolanceRightTrigger[i][1], hydrolanceRightTrigger[i][2], SPELL_HYDROLANCE_PRECAST, true);
facing = 3.55f;
break;
case HYDROLANCE_LEFT:
for (int i = 0; i < 5; i++)
me->CastSpell(hydrolanceLeftTrigger[i][0], hydrolanceLeftTrigger[i][1], hydrolanceLeftTrigger[i][2], SPELL_HYDROLANCE_PRECAST, true);
facing = 5.25f;
break;
}
me->CastSpell(me, SPELL_HYDROLANCE_VISUAL, false);
me->UpdatePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), facing);
me->SetFacingTo(facing);
break;
}
case EVENT_HYDROLANCE:
{
if (phase != 1)
break;
switch (hydrolancePhase)
{
case HYDROLANCE_BOTTOM:
{
std::list<Creature*> trigger;
me->GetCreatureListWithEntryInGrid(trigger,CREATURE_HYDROLANCE_BOTTOM_TRIGGER, 50.0f);
for (auto itr : trigger)
itr->CastSpell(itr->GetPositionX(), itr->GetPositionY(), itr->GetPositionZ(), SPELL_HYDROLANCE_DMG_BOTTOM, true);
break;
}
case HYDROLANCE_RIGHT:
for (int i = 0; i < 5; i++)
me->CastSpell(hydrolanceRightTrigger[i][0], hydrolanceRightTrigger[i][1], hydrolanceRightTrigger[i][2], SPELL_HYDROLANCE_DMG, true);
break;
case HYDROLANCE_LEFT:
for (int i = 0; i < 5; i++)
me->CastSpell(hydrolanceLeftTrigger[i][0], hydrolanceLeftTrigger[i][1], hydrolanceLeftTrigger[i][2], SPELL_HYDROLANCE_DMG, true);
break;
}
//.........这里部分代码省略.........