本文整理汇总了C++中BossSpellWorker::resetTimer方法的典型用法代码示例。如果您正苦于以下问题:C++ BossSpellWorker::resetTimer方法的具体用法?C++ BossSpellWorker::resetTimer怎么用?C++ BossSpellWorker::resetTimer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BossSpellWorker
的用法示例。
在下文中一共展示了BossSpellWorker::resetTimer方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateAI
void UpdateAI(const uint32 uiDiff)
{
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
switch (stage)
{
case 0:
{
bsw->timedCast(SPELL_FEROCIOUS_BUTT, uiDiff);
bsw->timedCast(SPELL_ARCTIC_BREATH, uiDiff);
bsw->timedCast(SPELL_WHIRL, uiDiff);
if (bsw->timedQuery(SPELL_MASSIVE_CRASH, uiDiff)) stage = 1;
bsw->timedCast(SPELL_FROTHING_RAGE, uiDiff);
DoMeleeAttackIfReady();
break;
}
case 1:
{
if (bsw->doCast(SPELL_MASSIVE_CRASH) == CAST_OK)
stage = 2;
break;
}
case 2:
{
if (pTarget = bsw->SelectUnit())
{
TrampleCasted = false;
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
stage = 3;
bsw->resetTimer(SPELL_TRAMPLE);
DoScriptText(-1713506,m_creature,pTarget);
SetCombatMovement(false);
m_creature->GetMotionMaster()->MoveIdle();
}
break;
}
case 3:
{
if (bsw->timedQuery(SPELL_TRAMPLE,uiDiff))
{
pTarget->GetPosition(fPosX, fPosY, fPosZ);
TrampleCasted = false;
MovementStarted = true;
m_creature->GetMotionMaster()->MovePoint(1, fPosX, fPosY, fPosZ);
DoScriptText(-1713508,m_creature);
bsw->doCast(SPELL_ADRENALINE);
stage = 4;
}
break;
}
case 4:
{
if (MovementStarted)
{
Map* pMap = m_creature->GetMap();
Map::PlayerList const &lPlayers = pMap->GetPlayers();
for(Map::PlayerList::const_iterator itr = lPlayers.begin(); itr != lPlayers.end(); ++itr)
{
Unit* pPlayer = itr->getSource();
if (!pPlayer) continue;
if (pPlayer->isAlive() && pPlayer->IsWithinDistInMap(m_creature, 5.0f))
{
bsw->doCast(SPELL_TRAMPLE, pPlayer);
TrampleCasted = true;
MovementStarted = false;
m_creature->GetMotionMaster()->MovementExpired();
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
}
}
} else stage = 5;
if (TrampleCasted) stage = 5;
break;
}
case 5:
{
if (!TrampleCasted)
{
bsw->doCast(SPELL_STAGGERED_DAZE);
DoScriptText(-1713507,m_creature);
}
MovementStarted = false;
m_creature->GetMotionMaster()->MovementExpired();
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
SetCombatMovement(true);
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
stage = 0;
break;
}
}
}
示例2: UpdateAI
void UpdateAI(const uint32 uiDiff)
{
if (m_pInstance && !Unit::GetCreature((*me), m_pInstance->GetData64(NPC_ACIDMAW)))
this->JustReachedHome();
if (!UpdateVictim())
return;
switch (stage)
{
case 0: {
bsw->timedCast(SPELL_BURNING_BITE, uiDiff);
bsw->timedCast(SPELL_MOLTEN_SPEW, uiDiff);
bsw->timedCast(SPELL_FIRE_SPIT, uiDiff);
bsw->timedCast(SPELL_BURNING_SPRAY, uiDiff);
bsw->timedCast(SPELL_SWEEP_0, uiDiff);
if (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == DREADSCALE_SUBMERGED)
stage = 1;
break;}
case 1: {
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
bsw->doCast(SPELL_SUBMERGE_0);
stage = 2;
DoScriptText(-1713557,me);
m_pInstance->SetData(TYPE_NORTHREND_BEASTS, DREADSCALE_SUBMERGED);
break;}
case 2: {
if (bsw->timedQuery(SPELL_SLIME_POOL, uiDiff))
bsw->doCast(NPC_SLIME_POOL);
if (bsw->timedQuery(SPELL_SUBMERGE_0, uiDiff) && m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == DREADSCALE_SUBMERGED)
stage = 3;
break;}
case 3: {
DoScriptText(-1713559,me);
bsw->doRemove(SPELL_SUBMERGE_0);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
bsw->resetTimer(SPELL_SLIME_POOL);
stage = 0;
m_pInstance->SetData(TYPE_NORTHREND_BEASTS, ACIDMAW_SUBMERGED);
break;}
}
if (m_pInstance->GetData(TYPE_NORTHREND_BEASTS) == SNAKES_SPECIAL && !enraged)
{
DoScriptText(-1713559,me);
bsw->doRemove(SPELL_SUBMERGE_0);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
bsw->doCast(SPELL_ENRAGE);
enraged = true;
stage = 0;
DoScriptText(-1713504,me);
};
DoMeleeAttackIfReady();
}