本文整理汇总了C++中RAND函数的典型用法代码示例。如果您正苦于以下问题:C++ RAND函数的具体用法?C++ RAND怎么用?C++ RAND使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RAND函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: KilledUnit
void KilledUnit(Unit* /*victim*/)
{
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2), me);
}
示例2: UpdateAI
// *** HANDLED FUNCTION ***
//Update AI is called Every single map update (roughly once every 50ms if a player is within the grid)
void UpdateAI(const uint32 uiDiff)
{
//Out of combat timers
if (!me->getVictim())
{
//Random Say timer
if (m_uiSayTimer <= uiDiff)
{
//Random switch between 5 outcomes
DoScriptText(RAND(SAY_RANDOM_0, SAY_RANDOM_1, SAY_RANDOM_2, SAY_RANDOM_3, SAY_RANDOM_4), me);
m_uiSayTimer = 45000; //Say something agian in 45 seconds
}
else
m_uiSayTimer -= uiDiff;
//Rebuff timer
if (m_uiRebuffTimer <= uiDiff)
{
DoCast(me, SPELL_BUFF);
m_uiRebuffTimer = 900000; //Rebuff agian in 15 minutes
}
else
m_uiRebuffTimer -= uiDiff;
}
//Return since we have no target
if (!UpdateVictim())
return;
//Spell 1 timer
if (m_uiSpell1Timer <= uiDiff)
{
//Cast spell one on our current target.
if (rand()%50 > 10)
DoCast(me->getVictim(), SPELL_ONE_ALT);
else if (me->IsWithinDist(me->getVictim(), 25.0f))
DoCast(me->getVictim(), SPELL_ONE);
m_uiSpell1Timer = 5000;
}
else
m_uiSpell1Timer -= uiDiff;
//Spell 2 timer
if (m_uiSpell2Timer <= uiDiff)
{
//Cast spell two on our current target.
DoCast(me->getVictim(), SPELL_TWO);
m_uiSpell2Timer = 37000;
}
else
m_uiSpell2Timer -= uiDiff;
//Beserk timer
if (m_uiPhase > 1)
{
//Spell 3 timer
if (m_uiSpell3Timer <= uiDiff)
{
//Cast spell one on our current target.
DoCast(me->getVictim(), SPELL_THREE);
m_uiSpell3Timer = 19000;
}
else
m_uiSpell3Timer -= uiDiff;
if (m_uiBeserkTimer <= uiDiff)
{
//Say our line then cast uber death spell
DoScriptText(SAY_BERSERK, me, me->getVictim());
DoCast(me->getVictim(), SPELL_BERSERK);
//Cast our beserk spell agian in 12 seconds if we didn't kill everyone
m_uiBeserkTimer = 12000;
}
else
m_uiBeserkTimer -= uiDiff;
}
else if (m_uiPhase == 1) //Phase timer
{
if (m_uiPhaseTimer <= uiDiff)
{
//Go to next phase
++m_uiPhase;
DoScriptText(SAY_PHASE, me);
DoCast(me, SPELL_FRENZY);
}
else
m_uiPhaseTimer -= uiDiff;
}
DoMeleeAttackIfReady();
}
示例3: EnterCombat
void EnterCombat(Unit* /*who*/)
{
DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2), me);
_EnterCombat();
}
示例4: KilledUnit
void KilledUnit(Unit* victim)
{
if (victim->GetTypeId() == TYPEID_PLAYER)
Talk(RAND(SAY_PLAYER_KILL_01, SAY_PLAYER_KILL_02));
}
示例5: UpdateAI
void UpdateAI(uint32 diff) override
{
//Check if we have a target
if (!UpdateVictim())
return;
uint32 currentPhase = instance->GetData(DATA_CTHUN_PHASE);
if (currentPhase == PHASE_EYE_GREEN_BEAM || currentPhase == PHASE_EYE_RED_BEAM)
{
// EyeTentacleTimer
if (EyeTentacleTimer <= diff)
{
//Spawn the 8 Eye Tentacles in the corret spots
SpawnEyeTentacle(0, 20); //south
SpawnEyeTentacle(10, 10); //south west
SpawnEyeTentacle(20, 0); //west
SpawnEyeTentacle(10, -10); //north west
SpawnEyeTentacle(0, -20); //north
SpawnEyeTentacle(-10, -10); //north east
SpawnEyeTentacle(-20, 0); // east
SpawnEyeTentacle(-10, 10); // south east
EyeTentacleTimer = 45000;
} else EyeTentacleTimer -= diff;
}
switch (currentPhase)
{
case PHASE_EYE_GREEN_BEAM:
//BeamTimer
if (BeamTimer <= diff)
{
//SPELL_GREEN_BEAM
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
me->InterruptNonMeleeSpells(false);
DoCast(target, SPELL_GREEN_BEAM);
//Correctly update our target
me->SetTarget(target->GetGUID());
}
//Beam every 3 seconds
BeamTimer = 3000;
} else BeamTimer -= diff;
//ClawTentacleTimer
if (ClawTentacleTimer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
Creature* Spawned = NULL;
//Spawn claw tentacle on the random target
Spawned = me->SummonCreature(NPC_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500);
if (Spawned && Spawned->AI())
Spawned->AI()->AttackStart(target);
}
//One claw tentacle every 12.5 seconds
ClawTentacleTimer = 12500;
} else ClawTentacleTimer -= diff;
//PhaseTimer
if (PhaseTimer <= diff)
{
//Switch to Dark Beam
instance->SetData(DATA_CTHUN_PHASE, PHASE_EYE_RED_BEAM);
me->InterruptNonMeleeSpells(false);
me->SetReactState(REACT_PASSIVE);
//Remove any target
me->SetTarget(ObjectGuid::Empty);
//Select random target for dark beam to start on
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
//Face our target
DarkGlareAngle = me->GetAngle(target);
DarkGlareTickTimer = 1000;
DarkGlareTick = 0;
ClockWise = RAND(true, false);
}
//Add red coloration to C'thun
DoCast(me, SPELL_RED_COLORATION, true);
//Freeze animation
DoCast(me, SPELL_FREEZE_ANIM);
me->SetOrientation(DarkGlareAngle);
me->StopMoving();
//Darkbeam for 35 seconds
PhaseTimer = 35000;
} else PhaseTimer -= diff;
break;
//.........这里部分代码省略.........
示例6: KilledUnit
void KilledUnit(Unit* /*Killed*/)
{
DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me);
}
示例7: KilledUnit
void KilledUnit(Unit* /*victim*/)
{
DoScriptText(RAND(YELL_KILL1, YELL_KILL2, YELL_KILL3), me);
}
示例8: UpdateAI
void UpdateAI(const uint32 diff)
{
if (!me->isInCombat())
return;
if (!me->getVictim() && me->getThreatManager().isThreatListEmpty())
{
EnterEvadeMode();
return;
}
events.Update(diff);
if (me->HasUnitState(UNIT_STAT_CASTING))
return;
switch(events.ExecuteEvent())
{
case EVENT_PURSUE:
if (Creature* pKrick = GetKrick())
DoScriptText(RAND(SAY_KRICK_CHASE_1, SAY_KRICK_CHASE_2, SAY_KRICK_CHASE_3), pKrick);
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
{
me->Attack(pTarget, false);
DoScriptText(SAY_ICK_CHASE_1, me, pTarget);
DoCast(pTarget, SPELL_PURSUED);
}
DoCast(SPELL_CONFUSION);
events.ScheduleEvent(EVENT_PURSUE, 30000, GCD_1);
return;
case EVENT_MIGHTY_KICK:
DoCast(me->getVictim(), SPELL_MIGHTY_KICK);
events.ScheduleEvent(EVENT_MIGHTY_KICK, 25000, GCD_1);
return;
case EVENT_POISON_NOVA:
if (Creature* pKrick = GetKrick())
DoScriptText(SAY_KRICK_POISON_NOVA, pKrick);
DoScriptText(SAY_ICK_POISON_NOVA, me);
DoCastAOE(SPELL_POISON_NOVA);
events.ScheduleEvent(EVENT_POISON_NOVA, 30000, GCD_1);
return;
case EVENT_TOXIC_WASTE:
DoCast(me->getVictim(), SPELL_TOXIC_WASTE);
events.ScheduleEvent(EVENT_TOXIC_WASTE, 5000);
return;
case EVENT_SHADOW_BOLT:
DoCast(me->getVictim(), SPELL_SHADOW_BOLT);
events.ScheduleEvent(EVENT_SHADOW_BOLT, 15000);
return;
case EVENT_EXPLOSIVE_BARRAGE:
if (Creature *pKrick = GetKrick())
{
DoScriptText(SAY_KRICK_BARRAGE_1, pKrick);
DoScriptText(SAY_KRICK_BARRAGE_2, pKrick);
}
DoCastAOE(SPELL_EXPLOSIVE_BARRAGE);
me->GetMotionMaster()->MoveIdle();
events.DelayEvents(20000, GCD_1); // 2 sec cast + 18 sec
events.ScheduleEvent(EVENT_END_EXPLOSIVE_BARRAGE, 20000);
return;
case EVENT_END_EXPLOSIVE_BARRAGE:
me->GetMotionMaster()->Clear();
me->GetMotionMaster()->MoveChase(me->getVictim());
events.ScheduleEvent(EVENT_EXPLOSIVE_BARRAGE, 25000);
break;
}
DoMeleeAttackIfReady();
}
示例9: KilledUnit
void KilledUnit(Unit* who)
{
if (who && who->GetEntry() != ENTRY_VAZRUDEN)
DoScriptText(RAND(SAY_KILL_1, SAY_KILL_2), me);
}
示例10: UpdateAI
void UpdateAI(const uint32 diff)
{
switch (Phase)
{
case FLYING:
if (!UpdateVictim())
return;
if (me->GetPositionX() >= 519)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
if (!m_bSaidEmote)
{
DoScriptText(EMOTE_RANGE, me);
m_bSaidEmote = true;
}
}
else
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
m_bSaidEmote = false;
}
if (m_uiMountTimer && m_uiMountTimer <= diff)
{
me->Mount(DATA_MOUNT);
me->SetCanFly(true);
m_uiMountTimer = 0;
} else m_uiMountTimer -= diff;
if (m_uiSummonTimer <= diff)
{
SpawnMobs();
m_uiSummonTimer = 25000;
} else m_uiSummonTimer -= diff;
if (m_uiMovementTimer <= diff)
{
switch (m_uiWaypointId)
{
case 0:
me->GetMotionMaster()->MovePoint(0, Location[1].GetPositionX(), Location[1].GetPositionY(), Location[1].GetPositionZ());
m_uiMovementTimer = 5000;
break;
case 1:
me->GetMotionMaster()->MovePoint(0, Location[2].GetPositionX(), Location[2].GetPositionY(), Location[2].GetPositionZ());
m_uiMovementTimer = 2000;
break;
case 2:
me->GetMotionMaster()->MovePoint(0, Location[3].GetPositionX(), Location[3].GetPositionY(), Location[3].GetPositionZ());
m_uiMovementTimer = 15000;
break;
case 3:
me->GetMotionMaster()->MovePoint(0, Location[69].GetPositionX(), Location[69].GetPositionY(), Location[69].GetPositionZ());
DoScriptText(RAND(SAY_DRAKE_BREATH_1, SAY_DRAKE_BREATH_2), me);
DoScriptText(EMOTE_BREATH, me);
m_uiMovementTimer = 2500;
break;
case 4:
me->GetMotionMaster()->MovePoint(0, Location[70].GetPositionX(), Location[70].GetPositionY(), Location[70].GetPositionZ());
m_uiMovementTimer = 2000;
SpawnTrigger();
break;
case 5:
me->GetMotionMaster()->MovePoint(0, Location[71].GetPositionX(), Location[71].GetPositionY(), Location[71].GetPositionZ());
m_uiMovementTimer = 3000;
break;
case 6:
me->GetMotionMaster()->MovePoint(0, Location[3].GetPositionX(), Location[3].GetPositionY(), Location[3].GetPositionZ());
m_uiWaypointId = 2;
m_uiMovementTimer = 15000;
break;
}
m_uiWaypointId++;
} else m_uiMovementTimer -= diff;
break;
case SKADI:
//Return since we have no target
if (!UpdateVictim())
return;
if (m_uiCrushTimer <= diff)
{
DoCastVictim(SPELL_CRUSH);
m_uiCrushTimer = 8000;
} else m_uiCrushTimer -= diff;
if (m_uiPoisonedSpearTimer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM))
DoCast(target, SPELL_POISONED_SPEAR);
m_uiPoisonedSpearTimer = 10000;
} else m_uiPoisonedSpearTimer -= diff;
if (m_uiWhirlwindTimer <= diff)
{
DoCastAOE(SPELL_WHIRLWIND);
m_uiWhirlwindTimer = 20000;
} else m_uiWhirlwindTimer -= diff;
//.........这里部分代码省略.........
示例11: EnterCombat
void EnterCombat(Unit* who)
{
DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2), me, who);
}
示例12: KilledUnit
void KilledUnit(Unit *victim)
{
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
}
示例13: UpdateAI
void UpdateAI(const uint32 diff)
{
if (IsIntro)
{
if (IntroPhaseTimer <= diff)
DoIntro();
else IntroPhaseTimer -= diff;
if (IntroPhase == 3 + 1)
{
if (IntroFrostBoltTimer <= diff)
{
if (Creature* Madrigosa = Unit::GetCreature(*me, instance ? instance->GetData64(DATA_MADRIGOSA) : 0))
{
Madrigosa->CastSpell(me, SPELL_INTRO_FROSTBOLT, true);
IntroFrostBoltTimer = 2000;
}
} else IntroFrostBoltTimer -= diff;
}
if (!UpdateVictim())
return;
DoMeleeAttackIfReady();
}
if (!UpdateVictim() || IsIntro)
return;
if (SlashTimer <= diff)
{
DoCast(me->getVictim(), SPELL_METEOR_SLASH);
SlashTimer = 11000;
} else SlashTimer -= diff;
if (StompTimer <= diff)
{
DoScriptText(RAND(YELL_LOVE1, YELL_LOVE2, YELL_LOVE3), me);
DoCast(me->getVictim(), SPELL_STOMP);
StompTimer = 30000;
} else StompTimer -= diff;
if (BurnTimer <= diff)
{
std::list<Unit*> targets;
SelectTargetList(targets, 10, SELECT_TARGET_RANDOM, 100, true);
for (std::list<Unit*>::const_iterator i = targets.begin(); i != targets.end(); ++i)
if (!(*i)->HasAura(SPELL_BURN))
{
(*i)->CastSpell((*i), SPELL_BURN, true);
break;
}
BurnTimer = urand(60000, 180000);
} else BurnTimer -= diff;
if (BerserkTimer < diff && !Enraged)
{
DoScriptText(YELL_BERSERK, me);
DoCast(me, SPELL_BERSERK);
Enraged = true;
} else BerserkTimer -= diff;
DoMeleeAttackIfReady();
}
示例14: KilledUnit
void KilledUnit(Unit*)
{
DoScriptText(RAND(SAY_TH_RANDOM_KILL1,SAY_TH_RANDOM_KILL2,SAY_TH_RANDOM_KILL3), me);
}
示例15: EnterCombat
void EnterCombat(Unit* /*who*/)
{
//For an small probability the npc says something when he get aggro
if (urand(0, 9) > 7)
DoScriptText(RAND(SAY_OOX_AGGRO1, SAY_OOX_AGGRO2), me);
}