本文整理汇总了C++中rand32函数的典型用法代码示例。如果您正苦于以下问题:C++ rand32函数的具体用法?C++ rand32怎么用?C++ rand32使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rand32函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: randf
float randf()
{
int n = (int)rand32();
return n/2147483647.0f;
}
开发者ID:my12doom,项目名称:pilot2,代码行数:6,代码来源:simulator.cpp
示例2: KilledUnit
void KilledUnit(Unit* /*victim*/) override
{
if (!(rand32() % 5))
Talk(SAY_FEUG_SLAY);
}
开发者ID:beyourself,项目名称:DeathCore_6.x,代码行数:5,代码来源:boss_thaddius.cpp
示例3: TC_LOG_DEBUG
//.........这里部分代码省略.........
wd = sWardenCheckMgr->GetWardenDataById(id);
switch (wd->Type)
{
case MPQ_CHECK:
case LUA_STR_CHECK:
case DRIVER_CHECK:
buff << uint8(wd->Str.size());
buff.append(wd->Str.c_str(), wd->Str.size());
break;
default:
break;
}
}
uint8 xorByte = _inputKey[0];
// Add TIMING_CHECK
buff << uint8(0x00);
buff << uint8(TIMING_CHECK ^ xorByte);
uint8 index = 1;
for (std::list<uint16>::iterator itr = _currentChecks.begin(); itr != _currentChecks.end(); ++itr)
{
wd = sWardenCheckMgr->GetWardenDataById(*itr);
type = wd->Type;
buff << uint8(type ^ xorByte);
switch (type)
{
case MEM_CHECK:
{
buff << uint8(0x00);
buff << uint32(wd->Address);
buff << uint8(wd->Length);
break;
}
case PAGE_CHECK_A:
case PAGE_CHECK_B:
{
buff.append(wd->Data.AsByteArray(0, false).get(), wd->Data.GetNumBytes());
buff << uint32(wd->Address);
buff << uint8(wd->Length);
break;
}
case MPQ_CHECK:
case LUA_STR_CHECK:
{
buff << uint8(index++);
break;
}
case DRIVER_CHECK:
{
buff.append(wd->Data.AsByteArray(0, false).get(), wd->Data.GetNumBytes());
buff << uint8(index++);
break;
}
case MODULE_CHECK:
{
uint32 seed = static_cast<uint32>(rand32());
buff << uint32(seed);
HmacHash hmac(4, (uint8*)&seed);
hmac.UpdateData(wd->Str);
hmac.Finalize();
buff.append(hmac.GetDigest(), hmac.GetLength());
break;
}
/*case PROC_CHECK:
{
buff.append(wd->i.AsByteArray(0, false).get(), wd->i.GetNumBytes());
buff << uint8(index++);
buff << uint8(index++);
buff << uint32(wd->Address);
buff << uint8(wd->Length);
break;
}*/
default:
break; // Should never happen
}
}
buff << uint8(xorByte);
buff.hexlike();
// Encrypt with warden RC4 key
EncryptData(buff.contents(), buff.size());
WorldPacket pkt(SMSG_WARDEN_DATA, buff.size());
pkt.append(buff);
_session->SendPacket(&pkt);
_dataSent = true;
std::stringstream stream;
stream << "Sent check id's: ";
for (std::list<uint16>::iterator itr = _currentChecks.begin(); itr != _currentChecks.end(); ++itr)
stream << *itr << " ";
TC_LOG_DEBUG("warden", "%s", stream.str().c_str());
}
开发者ID:ArkaniaTrinityFix,项目名称:Arkania,代码行数:101,代码来源:WardenWin.cpp
示例4: UpdateAI
void UpdateAI(uint32 diff) override
{
if (!Intro)
{
if (Intro_Timer <= diff)
{
switch (Intro_Phase)
{
case 1:
Talk(SAY_INTRO);
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), true);
++Intro_Phase;
Intro_Timer = 25000;
break;
case 2:
Talk(SAY_AGGRO);
if (Unit* mellic = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MELLICHAR)))
{
//should have a better way to do this. possibly spell exist.
mellic->setDeathState(JUST_DIED);
mellic->SetHealth(0);
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), false);
}
++Intro_Phase;
Intro_Timer = 3000;
break;
case 3:
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
Intro = true;
break;
}
}
else
Intro_Timer -=diff;
}
if (!UpdateVictim())
return;
if (!IsImage66 && !HealthAbovePct(66))
{
DoSplit(66);
IsImage66 = true;
}
if (!IsImage33 && !HealthAbovePct(33))
{
DoSplit(33);
IsImage33 = true;
}
if (MindRend_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
DoCast(target, SPELL_MIND_REND);
else
DoCastVictim(SPELL_MIND_REND);
MindRend_Timer = 8000;
}
else
MindRend_Timer -=diff;
if (Fear_Timer <= diff)
{
if (me->IsNonMeleeSpellCast(false))
return;
Talk(SAY_FEAR);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
DoCast(target, SPELL_FEAR);
else
DoCastVictim(SPELL_FEAR);
Fear_Timer = 25000;
}
else
Fear_Timer -=diff;
if (Domination_Timer <= diff)
{
if (me->IsNonMeleeSpellCast(false))
return;
Talk(SAY_MIND);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
DoCast(target, SPELL_DOMINATION);
else
DoCastVictim(SPELL_DOMINATION);
Domination_Timer = 16000 + rand32() % 16000;
}
else
Domination_Timer -=diff;
if (IsHeroic())
{
if (ManaBurn_Timer <= diff)
{
if (me->IsNonMeleeSpellCast(false))
//.........这里部分代码省略.........
开发者ID:mysql1,项目名称:TournamentCore,代码行数:101,代码来源:boss_harbinger_skyriss.cpp
示例5: DEBUG_LOG
void WardenWin::RequestData()
{
DEBUG_LOG("WARDEN: Request data");
if (MemCheck.empty())
MemCheck.assign(WardenDataStorage.MemCheckIds.begin(), WardenDataStorage.MemCheckIds.end());
ServerTicks = WorldTimer::getMSTime();
uint32 maxid = WardenDataStorage.InternalDataID;
uint32 id;
uint8 type;
WardenData *wd;
SendDataId.clear();
for (int i = 0; i < 3; ++i) // for now include 3 MEM_CHECK's
{
if (MemCheck.empty())
break;
id = MemCheck.back();
SendDataId.push_back(id);
MemCheck.pop_back();
}
ByteBuffer buff;
buff << uint8(WARDEN_SMSG_CHEAT_CHECKS_REQUEST);
for (int i = 0; i < 5; ++i) // for now include 5 random checks
{
id = irand(1, maxid - 1);
wd = WardenDataStorage.GetWardenDataById(id);
SendDataId.push_back(id);
switch (wd->Type)
{
case MPQ_CHECK:
case LUA_STR_CHECK:
case DRIVER_CHECK:
buff << uint8(wd->str.size());
buff.append(wd->str.c_str(), wd->str.size());
break;
default:
break;
}
}
uint8 xorByte = InputKey[0];
buff << uint8(0x00);
buff << uint8(TIMING_CHECK ^ xorByte); // check TIMING_CHECK
uint8 index = 1;
for (std::vector<uint32>::iterator itr = SendDataId.begin(); itr != SendDataId.end(); ++itr)
{
wd = WardenDataStorage.GetWardenDataById(*itr);
type = wd->Type;
buff << uint8(type ^ xorByte);
switch (type)
{
case MEM_CHECK:
{
buff << uint8(0x00);
buff << uint32(wd->Address);
buff << uint8(wd->Length);
break;
}
case PAGE_CHECK_A:
case PAGE_CHECK_B:
{
buff.append(wd->i.AsByteArray(0, false), wd->i.GetNumBytes());
buff << uint32(wd->Address);
buff << uint8(wd->Length);
break;
}
case MPQ_CHECK:
case LUA_STR_CHECK:
{
buff << uint8(index++);
break;
}
case DRIVER_CHECK:
{
buff.append(wd->i.AsByteArray(0, false), wd->i.GetNumBytes());
buff << uint8(index++);
break;
}
case MODULE_CHECK:
{
uint32 seed = static_cast<uint32>(rand32());
buff << uint32(seed);
HMACSHA1 hmac(4, (uint8*)&seed);
hmac.UpdateData(wd->str);
hmac.Finalize();
buff.append(hmac.GetDigest(), hmac.GetLength());
break;
}
//.........这里部分代码省略.........
开发者ID:BACKUPLIB,项目名称:Darkportalwow,代码行数:101,代码来源:WardenWin.cpp
示例6: UpdateAI
//.........这里部分代码省略.........
//Normal casts
if (NormalCastTimer <= diff)
{
if (!me->IsNonMeleeSpellCast(false))
{
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
if (!target)
return;
uint32 Spells[3];
uint8 AvailableSpells = 0;
//Check for what spells are not on cooldown
if (!ArcaneCooldown)
{
Spells[AvailableSpells] = SPELL_ARCMISSLE;
++AvailableSpells;
}
if (!FireCooldown)
{
Spells[AvailableSpells] = SPELL_FIREBALL;
++AvailableSpells;
}
if (!FrostCooldown)
{
Spells[AvailableSpells] = SPELL_FROSTBOLT;
++AvailableSpells;
}
//If no available spells wait 1 second and try again
if (AvailableSpells)
{
CurrentNormalSpell = Spells[rand32() % AvailableSpells];
DoCast(target, CurrentNormalSpell);
}
}
NormalCastTimer = 1000;
} else NormalCastTimer -= diff;
if (SecondarySpellTimer <= diff)
{
switch (urand(0, 1))
{
case 0:
DoCast(me, SPELL_AOE_CS);
break;
case 1:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_CHAINSOFICE);
break;
}
SecondarySpellTimer = urand(5000, 20000);
} else SecondarySpellTimer -= diff;
if (SuperCastTimer <= diff)
{
uint8 Available[2];
switch (LastSuperSpell)
{
case SUPER_AE:
Available[0] = SUPER_FLAME;
Available[1] = SUPER_BLIZZARD;
break;
case SUPER_FLAME:
开发者ID:125125,项目名称:TrinityCore,代码行数:67,代码来源:boss_shade_of_aran.cpp
示例7: SpawnMobs
void SpawnMobs()
{
for (uint8 i = 0; i < DUNGEON_MODE(5, 6); ++i)
{
switch (urand(0, 2))
{
case 0:
me->SummonCreature(NPC_YMIRJAR_WARRIOR, SpawnLoc.GetPositionX() + rand32() % 5, SpawnLoc.GetPositionY() + rand32() % 5, SpawnLoc.GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
break;
case 1:
me->SummonCreature(NPC_YMIRJAR_WITCH_DOCTOR, SpawnLoc.GetPositionX() + rand32() % 5, SpawnLoc.GetPositionY() + rand32() % 5, SpawnLoc.GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
break;
case 2:
me->SummonCreature(NPC_YMIRJAR_HARPOONER, SpawnLoc.GetPositionX() + rand32() % 5, SpawnLoc.GetPositionY() + rand32() % 5, SpawnLoc.GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
break;
}
}
}
开发者ID:Archarean,项目名称:TrinityCore,代码行数:20,代码来源:boss_skadi.cpp
示例8: UpdateAI
void UpdateAI(uint32 diff) override
{
if (TalkTimer)
{
if (!TalkSequence)
{
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
me->InterruptNonMeleeSpells(true);
me->RemoveAllAuras();
me->DeleteThreatList();
me->CombatStop();
++TalkSequence;
}
if (TalkTimer <= diff)
{
if (isFriendly)
GoodEnding();
else
BadEnding();
++TalkSequence;
} else TalkTimer -= diff;
}
else
{
if (bJustReset)
{
if (ResetTimer <= diff)
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
me->SetDisableGravity(false);
me->SetVisible(true);
me->SetStandState(UNIT_STAND_STATE_SLEEP);
ResetTimer = 10000;
bJustReset = false;
} else ResetTimer -= diff;
return;
}
if (!UpdateVictim())
return;
if (CheckTimer <= diff)
{
if (me->GetDistance(CENTER_X, CENTER_Y, DRAGON_REALM_Z) >= 75)
{
EnterEvadeMode();
return;
}
if (HealthBelowPct(10) && !isEnraged)
{
if (Creature* Sath = ObjectAccessor::GetCreature(*me, SathGUID))
Sath->AI()->DoAction(DO_ENRAGE);
DoAction(DO_ENRAGE);
}
if (!isBanished && HealthBelowPct(1))
{
if (Creature* Sath = ObjectAccessor::GetCreature(*me, SathGUID))
{
if (Sath->HasAura(SPELL_BANISH))
{
Sath->DealDamage(Sath, Sath->GetHealth());
return;
}
else
DoAction(DO_BANISH);
}
else
{
TC_LOG_ERROR("scripts", "Didn't find Shathrowar. Kalecgos event reseted.");
EnterEvadeMode();
return;
}
}
CheckTimer = 1000;
} else CheckTimer -= diff;
if (ArcaneBuffetTimer <= diff)
{
DoCastAOE(SPELL_ARCANE_BUFFET);
ArcaneBuffetTimer = 8000;
} else ArcaneBuffetTimer -= diff;
if (FrostBreathTimer <= diff)
{
DoCastAOE(SPELL_FROST_BREATH);
FrostBreathTimer = 15000;
} else FrostBreathTimer -= diff;
if (TailLashTimer <= diff)
{
DoCastAOE(SPELL_TAIL_LASH);
TailLashTimer = 15000;
} else TailLashTimer -= diff;
if (WildMagicTimer <= diff)
{
DoCastAOE(WildMagic[rand32() % 6]);
WildMagicTimer = 20000;
} else WildMagicTimer -= diff;
//.........这里部分代码省略.........
开发者ID:125125,项目名称:TrinityCore,代码行数:101,代码来源:boss_kalecgos.cpp
示例9: ExecuteEvent
void ExecuteEvent(uint32 eventId) override
{
switch (eventId)
{
case EVENT_HAND_OF_DEATH:
DoCastAOE(SPELL_HAND_OF_DEATH);
events.ScheduleEvent(EVENT_HAND_OF_DEATH, 2000);
break;
case EVENT_UNLEASH_SOUL_CHARGE:
_chargeSpell = 0;
_unleashSpell = 0;
me->InterruptNonMeleeSpells(false);
switch (urand(0, 2))
{
case 0:
_chargeSpell = SPELL_SOUL_CHARGE_RED;
_unleashSpell = SPELL_UNLEASH_SOUL_RED;
break;
case 1:
_chargeSpell = SPELL_SOUL_CHARGE_YELLOW;
_unleashSpell = SPELL_UNLEASH_SOUL_YELLOW;
break;
case 2:
_chargeSpell = SPELL_SOUL_CHARGE_GREEN;
_unleashSpell = SPELL_UNLEASH_SOUL_GREEN;
break;
}
if (me->HasAura(_chargeSpell))
{
me->RemoveAuraFromStack(_chargeSpell);
DoCastVictim(_unleashSpell);
SoulChargeCount--;
events.ScheduleEvent(EVENT_UNLEASH_SOUL_CHARGE, urand(2000, 30000));
}
break;
case EVENT_FINGER_OF_DEATH:
if (!SelectTarget(SELECT_TARGET_RANDOM, 0, 5.0f)) // Checks if there are no targets in melee range
{
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_FINGER_OF_DEATH);
events.ScheduleEvent(EVENT_FINGER_OF_DEATH, 1000);
}
else
events.ScheduleEvent(EVENT_FINGER_OF_DEATH, 5000);
break;
case EVENT_GRIP_OF_THE_LEGION:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_GRIP_OF_THE_LEGION);
events.ScheduleEvent(EVENT_GRIP_OF_THE_LEGION, urand(5000, 25000));
break;
case EVENT_AIR_BURST:
Talk(SAY_AIR_BURST);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
DoCast(target, SPELL_AIR_BURST); //not on tank
events.ScheduleEvent(EVENT_AIR_BURST, urand(25000, 40000));
break;
case EVENT_FEAR:
DoCastAOE(SPELL_FEAR);
events.ScheduleEvent(EVENT_FEAR, 42000);
break;
case EVENT_DOOMFIRE:
Talk(SAY_DOOMFIRE);
if (Unit* temp = SelectTarget(SELECT_TARGET_RANDOM, 1))
SummonDoomfire(temp);
else
SummonDoomfire(me->GetVictim());
events.ScheduleEvent(EVENT_DOOMFIRE, 20000);
break;
case EVENT_DISTANCE_CHECK:
if (Creature* channelTrigger = instance->GetCreature(DATA_CHANNEL_TARGET))
if (me->IsWithinDistInMap(channelTrigger, 75.0f))
DoAction(ACTION_ENRAGE);
events.ScheduleEvent(EVENT_DISTANCE_CHECK, 5000);
break;
case EVENT_SUMMON_WHISP:
DoSpawnCreature(NPC_ANCIENT_WISP, float(rand32() % 40), float(rand32() % 40), 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000);
++WispCount;
if (WispCount >= 30)
me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
events.ScheduleEvent(EVENT_SUMMON_WHISP, 1500);
break;
default:
break;
}
}
开发者ID:beyourself,项目名称:DeathCore_6.x,代码行数:85,代码来源:boss_archimonde.cpp
示例10: UpdateAI
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
// Evade if too far
if (check_Timer <= diff)
{
float x, y, z, o;
me->GetHomePosition(x, y, z, o);
if (!me->IsWithinDist3d(x, y, z, 60))
{
EnterEvadeMode();
return;
}
check_Timer = 1000;
} else check_Timer -= diff;
// Spore Striders
if (IsHeroic() && SporeStriders_Timer <= diff)
{
DoCast(me, SPELL_SUMMON_SPORE_STRIDER);
SporeStriders_Timer = 10000 + rand32() % 5000;
} else SporeStriders_Timer -= diff;
// Levitate
if (LevitatedTarget)
{
if (LevitatedTarget_Timer <= diff)
{
if (Unit* target = ObjectAccessor::GetUnit(*me, LevitatedTarget))
{
if (!target->HasAura(SPELL_LEVITATE))
{
LevitatedTarget.Clear();
return;
}
if (InAir)
{
target->AddAura(SPELL_SUSPENSION, target);
LevitatedTarget.Clear();
}
else
{
target->CastSpell(target, SPELL_MAGNETIC_PULL, true);
InAir = true;
LevitatedTarget_Timer = 1500;
}
}
else
LevitatedTarget.Clear();
} else LevitatedTarget_Timer -= diff;
}
if (Levitate_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1))
{
DoCast(target, SPELL_LEVITATE);
LevitatedTarget = target->GetGUID();
LevitatedTarget_Timer = 2000;
InAir = false;
}
Levitate_Timer = 12000 + rand32() % 3000;
} else Levitate_Timer -= diff;
// Chain Lightning
if (ChainLightning_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_CHAIN_LIGHTNING);
ChainLightning_Timer = 7000;
} else ChainLightning_Timer -= diff;
// Static Charge
if (StaticCharge_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 30, true))
DoCast(target, SPELL_STATIC_CHARGE);
StaticCharge_Timer = 10000;
} else StaticCharge_Timer -= diff;
DoMeleeAttackIfReady();
}
开发者ID:Rastrian,项目名称:DeathCore_3.3.5,代码行数:83,代码来源:boss_the_black_stalker.cpp
示例11: UpdateAI
void UpdateAI(uint32 diff) override
{
if (Delay_Timer <= diff)
{
Delay_Timer = 3500;
Creature* LeftHead = ObjectAccessor::GetCreature(*me, LeftHeadGUID);
Creature* RightHead = ObjectAccessor::GetCreature(*me, RightHeadGUID);
if (!LeftHead || !RightHead)
return;
if (AggroYell)
{
RightHead->AI()->Talk(GoCombatDelay[iaggro].id);
AggroYell = false;
}
if (ThreatYell2)
{
Creature* source = (LeftHead->GetEntry() == ThreatDelay2[ithreat].creature ? LeftHead : RightHead);
source->AI()->Talk(ThreatDelay2[ithreat].id);
ThreatYell2 = false;
}
if (ThreatYell)
{
Creature* source = (LeftHead->GetEntry() == ThreatDelay1[ithreat].creature ? LeftHead : RightHead);
source->AI()->Talk(ThreatDelay1[ithreat].id);
ThreatYell = false;
ThreatYell2 = true;
}
if (KillingYell)
{
Creature* source = (LeftHead->GetEntry() == KillingDelay[ikilling].creature ? LeftHead : RightHead);
source->AI()->Talk(KillingDelay[ikilling].id);
KillingYell = false;
}
} else Delay_Timer -= diff;
if (!UpdateVictim())
return;
if (BlastCount && BlastWave_Timer <= diff)
{
DoCast(me, SPELL_BLAST_WAVE);
BlastWave_Timer = 5000;
++BlastCount;
if (BlastCount == 3)
BlastCount = 0;
}
else
BlastWave_Timer -= diff;
if (BurningMaul_Timer <= diff)
{
Talk(EMOTE_ENRAGE);
DoCast(me, SPELL_BURNING_MAUL);
BurningMaul_Timer = 40000;
BlastWave_Timer = 16000;
BlastCount = 1;
}
else
BurningMaul_Timer -= diff;
if (ResetThreat_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
{
DoYellForThreat();
DoResetThreat();
me->AddThreat(target, 0.0f);
}
ResetThreat_Timer = 25000 + rand32() % 15000;
}
else
ResetThreat_Timer -= diff;
if (Fear_Timer <= diff)
{
DoCast(me, SPELL_FEAR);
Fear_Timer = 15000 + rand32() % 20000;
}
else
Fear_Timer -= diff;
if (ThunderClap_Timer <= diff)
{
DoCast(me, SPELL_THUNDERCLAP);
ThunderClap_Timer = 15000 + rand32() % 15000;
}
else
ThunderClap_Timer -= diff;
DoMeleeAttackIfReady();
//.........这里部分代码省略.........
开发者ID:Abrek,项目名称:My-WoDCore-6.x.x,代码行数:101,代码来源:boss_warbringer_omrogg.cpp
示例12: UpdateAI
void UpdateAI(uint32 diff) override
{
if (IsIntroEvent)
{
if (instance->GetBossState(DATA_NETHEKURSE) == IN_PROGRESS)
{
if (IntroEvent_Timer <= diff)
DoTauntPeons();
else
IntroEvent_Timer -= diff;
}
}
if (!UpdateVictim())
return;
if (!IsMainEvent)
return;
if (Phase)
{
if (!SpinOnce)
{
DoCastVictim(SPELL_DARK_SPIN);
SpinOnce = true;
}
if (Cleave_Timer <= diff)
{
DoCastVictim(SPELL_SHADOW_CLEAVE);
Cleave_Timer = 6000 + rand32() % 2500;
}
else
Cleave_Timer -= diff;
}
else
{
if (ShadowFissure_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_SHADOW_FISSURE);
ShadowFissure_Timer = urand(7500, 15000);
}
else
ShadowFissure_Timer -= diff;
if (DeathCoil_Timer <= diff)
{
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
DoCast(target, SPELL_DEATH_COIL);
DeathCoil_Timer = urand(15000, 20000);
}
else
DeathCoil_Timer -= diff;
if (!HealthAbovePct(20))
Phase = true;
DoMeleeAttackIfReady();
}
}
开发者ID:Refuge89,项目名称:TrinityCore,代码行数:61,代码来源:boss_nethekurse.cpp
示例13: UpdateAI
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
// Pounding
if (Pounding_Timer <= diff)
{
DoCastVictim(SPELL_POUNDING);
Talk(SAY_POUNDING);
Pounding_Timer = 15000; //cast time(3000) + cooldown time(12000)
}
else
Pounding_Timer -= diff;
// Arcane Orb
if (ArcaneOrb_Timer <= diff)
{
Unit* target = NULL;
std::list<HostileReference*> t_list = me->getThreatManager().getThreatList();
std::vector<Unit*> target_list;
for (std::list<HostileReference*>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
{
target = ObjectAccessor::GetUnit(*me, (*itr)->getUnitGuid());
if (!target)
continue;
// exclude pets & totems, 18 yard radius minimum
if (target->GetTypeId() == TYPEID_PLAYER && target->IsAlive() && !target->IsWithinDist(me, 18, false))
target_list.push_back(target);
target = NULL;
}
if (!target_list.empty())
target = *(target_list.begin() + rand32() % target_list.size());
else
target = me->GetVictim();
if (target)
me->CastSpell(target, SPELL_ARCANE_ORB, false, NULL, NULL, 0);
ArcaneOrb_Timer = 3000;
}
else
ArcaneOrb_Timer -= diff;
// Single Target knock back, reduces aggro
if (KnockAway_Timer <= diff)
{
DoCastVictim(SPELL_KNOCK_AWAY);
//Drop 25% aggro
if (DoGetThreat(me->GetVictim()))
DoModifyThreatPercent(me->GetVictim(), -25);
KnockAway_Timer = 30000;
}
else
KnockAway_Timer -= diff;
//Berserk
if (Berserk_Timer < diff && !Enraged)
{
DoCast(me, SPELL_BERSERK);
Enraged = true;
}
else
Berserk_Timer -= diff;
DoMeleeAttackIfReady();
EnterEvadeIfOutOfCombatArea(diff);
}
开发者ID:125125,项目名称:TrinityCore,代码行数:65,代码来源:boss_void_reaver.cpp
示例14: fill_ctdb_reply_error
static void fill_ctdb_reply_error(TALLOC_CTX *mem_ctx,
struct ctdb_reply_error *c)
{
c->status = rand32();
fill_tdb_data(mem_ctx, &c->msg);
}
开发者ID:m-h-w,项目名称:samba,代码行数:6,代码来源:protocol_client_test.c
示例15: HandleStormSequence
void HandleStormSequence(Unit* Cloud) // 1: begin, 2-9: tick, 10: end
{
if (StormCount < 10 && StormCount > 1)
{
// deal damage
int32 bp0 = 800;
for (uint8 i = 2; i < StormCount; ++i)
bp0 *= 2;
CellCoord p(Trinity::ComputeCellCoord(me->GetPositionX(), me->GetPositionY()));
Cell cell(p);
cell.SetNoCreate();
std::list<Unit*> tempUnitMap;
{
Trinity::AnyAoETargetUnitInObjectRangeCheck u_check(me, me, SIZE_OF_GRIDS);
Trinity::UnitListSearcher<Trinity::AnyAoETargetUnitInObjectRangeCheck> searcher(me, tempUnitMap, u_check);
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyAoETargetUnitInObjectRangeCheck>, WorldTypeMapContainer > world_unit_searcher(searcher);
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyAoETargetUnitInObjectRangeCheck>, GridTypeMapContainer > grid_unit_searcher(searcher);
cell.Visit(p, world_unit_searcher, *me->GetMap(), *me, SIZE_OF_GRIDS);
cell.Visit(p, grid_unit_searcher, *me->GetMap(), *me, SIZE_OF_GRIDS);
}
// deal damage
for (std::list<Unit*>::const_iterator i = tempUnitMap.begin(); i != tempUnitMap.end(); ++i)
{
if (Unit* target = (*i))
{
if (Cloud && !Cloud->IsWithinDist(target, 6, false))
Cloud->CastCustomSpell(target, SPELL_ZAP, &bp0, NULL, NULL, true, 0, 0, me->GetGUID());
}
}
// visual
float x, y, z;
z = me->GetPositionZ();
uint8 maxCount = 5 + rand32() % 5;
for (uint8 i = 0; i < maxCount; ++i)
{
x = 343.0f + rand32() % 60;
y = 1380.0f + rand32() % 60;
if (Unit* trigger = me->SummonTrigger(x, y, z, 0, 2000))
{
trigger->setFaction(35);
trigger->SetMaxHealth(100000);
trigger->SetHealth(100000);
trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
if (Cloud)
Cloud->CastCustomSpell(trigger, /*43661*/SPELL_ZAP, &bp0, NULL, NULL, true, 0, 0, Cloud->GetGUID());
}
}
}
++StormCount;
if (StormCount > 10)
{
StormCount = 0; // finish
events.ScheduleEvent(EVENT_SUMMON_EAGLES, 5000);
me->InterruptNonMeleeSpells(false);
CloudGUID.Clear();
if (Cloud)
Cloud->DealDamage(Cloud, Cloud->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
SetWeather(WEATHER_STATE_FINE, 0.0f);
isRaining = false;
}
events.ScheduleEvent(EVENT_STORM_SEQUENCE, 1000);
}
开发者ID:AwkwardDev,项目名称:RE,代码行数:71,代码来源:boss_akilzon.cpp
示例16: Socket
WorldSocket::WorldSocket(boost::asio::io_service &service, std::function<void (Socket *)> closeHandler)
: Socket(service, closeHandler), m_lastPingTime(std::chrono::system_clock::time_point::min()), m_overSpeedPings(0),
m_useExistingHeader(false), m_session(nullptr), m_sessionFinalized(false), m_seed(static_cast<uint32>(rand32()))
{}
开发者ID:Ccaz,项目名称:mangos-tbc,代码行数:4,代码来源:WorldSocket.cpp
示例17: UpdateAI
void UpdateAI(uint32 diff) override
{
//Return since we have no target
if (!UpdateVictim())
return;
//Pummel
if (Pummel_Timer <= diff)
{
//Cast
if (rand32() % 100 < 90) //90% chance to cast
{
DoCastVictim(SPELL_PUMMEL);
}
//12 seconds until we should cast this again
Pummel_Timer = 12000;
} else Pummel_Timer -= diff;
//KnockAway
if (KnockAway_Timer <= diff)
{
//Cast
if (rand32() % 100 < 80) //80% chance to cast
{
DoCastVictim(SPELL_KNOCKAWAY);
}
//14 seconds until we should cast this again
KnockAway_Timer = 14000;
} else KnockAway_Timer -= diff;
//Shoot
if (Shoot_Timer <= diff)
{
//Cast
DoCastVictim(SPELL_SHOOT);
//1 seconds until we should cast this again
Shoot_Timer = 1000;
} else Shoot_Timer -= diff;
//SummonRifleman
if (SummonRifleman_Timer <= diff)
{
//Cast
switch (rand32() % 9)
{
case 0:
me->SummonCreature(11054, ADD_1X, ADD_1Y, ADD_1Z, ADD_1O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_2X, ADD_2Y, ADD_2Z, ADD_2O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_4X, ADD_4Y, ADD_4Z, ADD_4O, TEMPSUMMON_TIMED_DESPAWN, 240000);
break;
case 1:
me->SummonCreature(11054, ADD_2X, ADD_2Y, ADD_2Z, ADD_2O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_3X, ADD_3Y, ADD_3Z, ADD_3O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_5X, ADD_5Y, ADD_5Z, ADD_5O, TEMPSUMMON_TIMED_DESPAWN, 240000);
break;
case 2:
me->SummonCreature(11054, ADD_3X, ADD_3Y, ADD_3Z, ADD_3O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_4X, ADD_4Y, ADD_4Z, ADD_4O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_6X, ADD_6Y, ADD_6Z, ADD_6O, TEMPSUMMON_TIMED_DESPAWN, 240000);
break;
case 3:
me->SummonCreature(11054, ADD_4X, ADD_4Y, ADD_4Z, ADD_4O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_5X, ADD_5Y, ADD_5Z, ADD_5O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_7X, ADD_7Y, ADD_7Z, ADD_7O, TEMPSUMMON_TIMED_DESPAWN, 240000);
break;
case 4:
me->SummonCreature(11054, ADD_5X, ADD_5Y, ADD_5Z, ADD_5O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_6X, ADD_6Y, ADD_6Z, ADD_6O, TEMPSUMMON_TIMED_DESPAWN, 240000);
me->SummonCreature(11054, ADD_8X, ADD_8Y, ADD_8Z, ADD_8O, TEMPSUMMON_TIMED_DESPAWN, 240000);
|
请发表评论