当前位置: 首页>>代码示例>>C++>>正文


C++ randtime函数代码示例

本文整理汇总了C++中randtime函数的典型用法代码示例。如果您正苦于以下问题:C++ randtime函数的具体用法?C++ randtime怎么用?C++ randtime使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了randtime函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: UpdateAI

            void UpdateAI(uint32 diff) override
            {
                if (!UpdateVictim())
                    return;

                _events.Update(diff);

                if (me->HasUnitState(UNIT_STATE_CASTING))
                    return;

                while (uint32 eventId = _events.ExecuteEvent())
                {
                    switch (eventId)
                    {
                        case EVENT_CLEAVE:
                            DoCastVictim(SPELL_CLEAVE);
                            _events.Repeat(randtime(Seconds(10), Seconds(16)));
                            break;
                        case EVENT_STRIKE:
                            DoCastVictim(SPELL_STRIKE);
                            _events.Repeat(randtime(Seconds(15), Seconds(19)));
                            break;
                        default:
                            break;
                    }

                    if (me->HasUnitState(UNIT_STATE_CASTING))
                        return;
                }

                DoMeleeAttackIfReady();
            }
开发者ID:Declipe,项目名称:ElunaTrinityWotlk,代码行数:32,代码来源:boss_krikthir_the_gatewatcher.cpp

示例2: EnterCombat

        void EnterCombat(Unit* who) override
        {
            BossAI::EnterCombat(who);

            if (GameObject* door = instance->GetGameObject(DATA_ANUBARAK_WALL))
                door->SetGoState(GO_STATE_ACTIVE); // open door for now

            Talk(SAY_AGGRO);
            instance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_GOTTA_GO_START_EVENT);

            events.SetPhase(PHASE_EMERGE);
            events.ScheduleEvent(EVENT_CLOSE_DOOR, Seconds(5));
            events.ScheduleEvent(EVENT_POUND, randtime(Seconds(2), Seconds(4)), 0, PHASE_EMERGE);
            events.ScheduleEvent(EVENT_LEECHING_SWARM, randtime(Seconds(5), Seconds(7)), 0, PHASE_EMERGE);
            events.ScheduleEvent(EVENT_CARRION_BEETLES, randtime(Seconds(14), Seconds(17)), 0, PHASE_EMERGE);

            // set up world triggers
            std::list<TempSummon*> summoned;
            me->SummonCreatureGroup(SUMMON_GROUP_WORLD_TRIGGER_GUARDIAN, &summoned);
            if (summoned.empty()) // something went wrong
            {
                EnterEvadeMode(EVADE_REASON_OTHER);
                return;
            }
            _guardianTrigger = (*summoned.begin())->GetGUID();
            
            if (Creature* trigger = DoSummon(NPC_WORLD_TRIGGER, me->GetPosition(), 0u, TEMPSUMMON_MANUAL_DESPAWN))
                _assassinTrigger = trigger->GetGUID();
            else
            {
                EnterEvadeMode(EVADE_REASON_OTHER);
                return;
            }
        }
开发者ID:Declipe,项目名称:ElunaTrinityWotlk,代码行数:34,代码来源:boss_anubarak.cpp

示例3: DoAction

 void DoAction(int32 action) override
 {
     switch (action)
     {
         case ACTION_PET_DIED:
             if (!_petCount) // underflow check - something has gone horribly wrong
             {
                 EnterEvadeMode(EVADE_REASON_OTHER);
                 return;
             }
             if (!--_petCount) // last pet died, emerge
             {
                 me->RemoveAurasDueToSpell(SPELL_SUBMERGE);
                 me->RemoveAurasDueToSpell(SPELL_IMPALE_AURA);
                 me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
                 DoCastSelf(SPELL_EMERGE);
                 events.SetPhase(PHASE_EMERGE);
                 events.ScheduleEvent(EVENT_POUND, randtime(Seconds(13), Seconds(18)), 0, PHASE_EMERGE);
                 events.ScheduleEvent(EVENT_LEECHING_SWARM, randtime(Seconds(3), Seconds(7)), 0, PHASE_EMERGE);
                 events.ScheduleEvent(EVENT_CARRION_BEETLES, randtime(Seconds(10), Seconds(15)), 0, PHASE_EMERGE);
             }
             break;
         case ACTION_PET_EVADE:
             EnterEvadeMode(EVADE_REASON_OTHER);
             break;
     }
 }
开发者ID:Declipe,项目名称:ElunaTrinityWotlk,代码行数:27,代码来源:boss_anubarak.cpp

示例4: UpdateAI

        void UpdateAI(uint32 diff) override
        {
            if (!UpdateVictim())
                return;

            events.Update(diff);

            while (uint32 eventId = events.ExecuteEvent())
            {
                switch (eventId)
                {
                    case EVENT_IMPALE:
                        if (events.GetTimeUntilEvent(EVENT_LOCUST) < 5 * IN_MILLISECONDS) break; // don't chain impale tank -> locust swarm
                        if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
                            DoCast(target, SPELL_IMPALE);
                        else
                            EnterEvadeMode();

                        events.Repeat(randtime(Seconds(10), Seconds(20)));
                        break;
                    case EVENT_SCARABS:
                        if (!guardCorpses.empty())
                        {
                            if (ObjectGuid target = Trinity::Containers::SelectRandomContainerElement(guardCorpses))
                                if (Creature* creatureTarget = ObjectAccessor::GetCreature(*me, target))
                                {
                                    creatureTarget->CastSpell(creatureTarget, SPELL_SUMMON_CORPSE_SCARABS_MOB, me->GetGUID());
                                    creatureTarget->AI()->Talk(EMOTE_SCARAB);
                                    creatureTarget->DespawnOrUnsummon();
                                }
                        }
                        events.Repeat(randtime(Seconds(40), Seconds(60)));
                        break;
                    case EVENT_LOCUST:
                        Talk(EMOTE_LOCUST);
                        events.SetPhase(PHASE_SWARM);
                        DoCast(me, SPELL_LOCUST_SWARM);

                        events.ScheduleEvent(EVENT_SPAWN_GUARD, 3s);
                        events.ScheduleEvent(EVENT_LOCUST_ENDS, RAID_MODE(Seconds(19), Seconds(23)));
                        events.Repeat(Minutes(1)+Seconds(30));
                        break;
                    case EVENT_LOCUST_ENDS:
                        events.SetPhase(PHASE_NORMAL);
                        events.ScheduleEvent(EVENT_IMPALE, randtime(Seconds(10), Seconds(20)), 0, PHASE_NORMAL);
                        events.ScheduleEvent(EVENT_SCARABS, randtime(Seconds(20), Seconds(30)), 0, PHASE_NORMAL);
                        break;
                    case EVENT_SPAWN_GUARD:
                        me->SummonCreatureGroup(GROUP_SINGLE_SPAWN);
                        break;
                    case EVENT_BERSERK:
                        DoCast(me, SPELL_BERSERK, true);
                        events.ScheduleEvent(EVENT_BERSERK, 10min);
                        break;
                }
            }

            if (events.IsInPhase(PHASE_NORMAL))
                DoMeleeAttackIfReady();
        }
开发者ID:ElunaLuaEngine,项目名称:ElunaTrinityWotlk,代码行数:60,代码来源:boss_anubrekhan.cpp

示例5: EnterCombat

        void EnterCombat(Unit* /*who*/) override
        {
            _EnterCombat();
            Talk(SAY_AGGRO);

            _safeSection = 0;
            events.ScheduleEvent(EVENT_DISRUPT, randtime(Seconds(15), Seconds(20)), 0, PHASE_FIGHT);
            events.ScheduleEvent(EVENT_FEVER, randtime(Seconds(10), Seconds(20)), 0, PHASE_FIGHT);
            events.ScheduleEvent(EVENT_DANCE, Minutes(1) + Seconds(30), 0, PHASE_FIGHT);
            events.ScheduleEvent(EVENT_ERUPT, Seconds(15));

            _safetyDance = true;

            // figure out the current GUIDs of our eruption tiles and which segment they belong in
            std::unordered_multimap<uint32, GameObject*> const& mapGOs = me->GetMap()->GetGameObjectBySpawnIdStore();
            uint32 spawnId = firstEruptionDBGUID;
            for (uint8 section = 0; section < numSections; ++section)
            {
                _eruptTiles[section].clear();
                for (uint8 i = 0; i < numEruptions[section]; ++i)
                {
                    auto tileIt = mapGOs.equal_range(spawnId++);
                    for (auto it = tileIt.first; it != tileIt.second; ++it)
                        _eruptTiles[section].push_back(it->second->GetGUID());
                }
            }
        }
开发者ID:kemlg,项目名称:trinitycore-conciens,代码行数:27,代码来源:boss_heigan.cpp

示例6: EnterCombat

 void EnterCombat(Unit* /*who*/) override
 {
     _EnterCombat();
     Talk(SAY_AGGRO);
     summons.DoZoneInCombat();
     events.ScheduleEvent(EVENT_POISON, randtime(Seconds(10), Seconds(15)));
     events.ScheduleEvent(EVENT_FIRE, randtime(Seconds(6), Seconds(18)));
     events.ScheduleEvent(EVENT_FRENZY, Minutes(1)+randtime(Seconds(0), Seconds(20)));
 }
开发者ID:DanielBallaSZTE,项目名称:TrinityCorePreWOTLK,代码行数:9,代码来源:boss_faerlina.cpp

示例7: JustEngagedWith

 void JustEngagedWith(Unit* /*who*/) override
 {
     _JustEngagedWith();
     events.ScheduleEvent(EVENT_WRAP, Seconds(20));
     events.ScheduleEvent(EVENT_SPRAY, Seconds(40));
     events.ScheduleEvent(EVENT_SHOCK, randtime(Seconds(5), Seconds(10)));
     events.ScheduleEvent(EVENT_POISON, randtime(Seconds(10), Seconds(15)));
     events.ScheduleEvent(EVENT_SUMMON, Seconds(30));
 }
开发者ID:Refuge89,项目名称:TrinityCore,代码行数:9,代码来源:boss_maexxna.cpp

示例8: EnterCombat

 void EnterCombat(Unit* /*who*/) override
 {
     _EnterCombat();
     events.ScheduleEvent(EVENT_WRAP, Seconds(20));
     events.ScheduleEvent(EVENT_SPRAY, Seconds(40));
     events.ScheduleEvent(EVENT_SHOCK, randtime(Seconds(5), Seconds(10)));
     events.ScheduleEvent(EVENT_POISON, randtime(Seconds(10), Seconds(15)));
     events.ScheduleEvent(EVENT_SUMMON, Seconds(30));
 }
开发者ID:090809,项目名称:TrinityCore,代码行数:9,代码来源:boss_maexxna.cpp

示例9: EnterPhaseGround

 void EnterPhaseGround(bool initial)
 {
     me->SetReactState(REACT_AGGRESSIVE);
     events.ScheduleEvent(EVENT_CLEAVE, randtime(Seconds(5), Seconds(15)), 0, PHASE_GROUND);
     events.ScheduleEvent(EVENT_TAIL, randtime(Seconds(7), Seconds(10)), 0, PHASE_GROUND);
     events.ScheduleEvent(EVENT_BLIZZARD, randtime(Seconds(5), Seconds(10)), 0, PHASE_GROUND);
     if (initial)
     {
         events.ScheduleEvent(EVENT_DRAIN, randtime(Seconds(22), Seconds(28)));
         events.ScheduleEvent(EVENT_FLIGHT, Seconds(48) + Milliseconds(500), 0, PHASE_GROUND);
     }
     else
         events.ScheduleEvent(EVENT_FLIGHT, Minutes(1), 0, PHASE_GROUND);
 }
开发者ID:Declipe,项目名称:ElunaTrinityWotlk,代码行数:14,代码来源:boss_sapphiron.cpp

示例10: _UpdateAI

            void _UpdateAI(uint32 diff) override
            {
                if (!_ourMovementFinished || !UpdateVictim())
                    return;
                events.Update(diff);

                while (uint32 eventId = events.ExecuteEvent())
                {
                    switch (eventId)
                    {
                        case EVENT_BERSERK:
                            DoCastAOE(SPELL_BERSERK, true);
                            break;
                        case EVENT_MARK:
                            DoCastAOE(SPELL_THANE_MARK, true);
                            events.Repeat(Seconds(12));
                            break;
                        case EVENT_METEOR:
                            if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 20.0f, true))
                            {
                                DoCast(target, SPELL_METEOR);
                                _shouldSay = true;
                            }
                            events.Repeat(randtime(Seconds(13), Seconds(17)));
                            break;
                    }
                }

                if (me->HasUnitState(UNIT_STATE_CASTING))
                    return;
                DoMeleeAttackIfReady();
            }
开发者ID:DanielBallaSZTE,项目名称:TrinityCorePreWOTLK,代码行数:32,代码来源:boss_four_horsemen.cpp

示例11: EnterCombat

        void EnterCombat(Unit* /*who*/) override
        {
            _EnterCombat();
            Talk(SAY_AGGRO);

            summons.DoZoneInCombat();

            events.SetPhase(PHASE_NORMAL);
            events.ScheduleEvent(EVENT_IMPALE, randtime(Seconds(10), Seconds(20)), 0, PHASE_NORMAL);
            events.ScheduleEvent(EVENT_SCARABS, randtime(Seconds(20), Seconds(30)), 0, PHASE_NORMAL);
            events.ScheduleEvent(EVENT_LOCUST, Minutes(1)+randtime(Seconds(40), Seconds(60)), 0, PHASE_NORMAL);
            events.ScheduleEvent(EVENT_BERSERK, Minutes(10));

            if (!Is25ManRaid())
                events.ScheduleEvent(EVENT_SPAWN_GUARD, randtime(Seconds(15), Seconds(20)));
        }
开发者ID:090809,项目名称:TrinityCore,代码行数:16,代码来源:boss_anubrekhan.cpp

示例12: UpdateAI

        void UpdateAI(uint32 diff) override
        {
            if (!UpdateVictim())
                return;

            events.Update(diff);

            while (uint32 eventId = events.ExecuteEvent())
            {
                switch (eventId)
                {
                    case EVENT_ATTACK:
                        SetCombatMovement(true);
                        if (Unit* victim = me->GetVictim())
                            me->GetMotionMaster()->MoveChase(victim);
                        break;
                    case EVENT_STRIKE:
                        DoCastVictim(SPELL_UNBALANCING_STRIKE);
                        events.Repeat(Seconds(6));
                        return;
                    case EVENT_SHOUT:
                        DoCastAOE(SPELL_DISRUPTING_SHOUT);
                        events.Repeat(Seconds(16));
                        return;
                    case EVENT_KNIFE:
                        if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 45.0f))
                            DoCast(target, SPELL_JAGGED_KNIFE);
                        events.Repeat(randtime(Seconds(10), Seconds(15)));
                        return;
                }
            }

            DoMeleeAttackIfReady();
        }
开发者ID:AvariusProject,项目名称:AvariusCore,代码行数:34,代码来源:boss_razuvious.cpp

示例13: EnterCombat

            void EnterCombat(Unit* who) override
            {
                _petsInCombat = false;
                me->SetReactState(REACT_AGGRESSIVE);
                summons.DoZoneInCombat();

                events.CancelEvent(EVENT_SEND_GROUP);
                events.ScheduleEvent(EVENT_SWARM, Seconds(5));
                events.ScheduleEvent(EVENT_MIND_FLAY, randtime(Seconds(1), Seconds(3)));

                BossAI::EnterCombat(who);
            }
开发者ID:Declipe,项目名称:ElunaTrinityWotlk,代码行数:12,代码来源:boss_krikthir_the_gatewatcher.cpp

示例14: UpdateAI

            void UpdateAI(uint32 diff) override
            {
                if (!UpdateVictim())
                    return;

                events.Update(diff);

                if (me->HasUnitState(UNIT_STATE_CASTING))
                    return;

                while (uint32 eventId = events.ExecuteEvent())
                {
                    switch (eventId)
                    {
                        case EVENT_POISON:
                            if (!me->HasAura(SPELL_WIDOWS_EMBRACE_HELPER))
                                DoCastAOE(SPELL_POISON_BOLT_VOLLEY);
                            events.Repeat(randtime(Seconds(8), Seconds(15)));
                            break;
                        case EVENT_FIRE:
                            if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
                                DoCast(target, SPELL_RAIN_OF_FIRE);
                            events.Repeat(randtime(Seconds(6), Seconds(18)));
                            break;
                        case EVENT_FRENZY:
                            if (Aura* widowsEmbrace = me->GetAura(SPELL_WIDOWS_EMBRACE_HELPER))
                                events.ScheduleEvent(EVENT_FRENZY, Milliseconds(widowsEmbrace->GetDuration()+1));
                            else
                            {
                                DoCast(SPELL_FRENZY);
                                Talk(EMOTE_FRENZY);
                                events.Repeat(Minutes(1) + randtime(Seconds(0), Seconds(20)));
                            }
                            break;
                    }
                }

                DoMeleeAttackIfReady();
            }
开发者ID:DanielBallaSZTE,项目名称:TrinityCorePreWOTLK,代码行数:39,代码来源:boss_faerlina.cpp

示例15: BeginFighting

            void BeginFighting() override
            {
                SetCombatMovement(true);
                me->SetReactState(REACT_AGGRESSIVE);
                ThreatManager& threat = me->getThreatManager();
                if (threat.isThreatListEmpty())
                {
                    if (Unit* nearest = me->SelectNearestPlayer(5000.0f))
                    {
                        me->AddThreat(nearest, 1.0f);
                        AttackStart(nearest);
                    }
                    else
                        ResetEncounter();
                }
                else
                    AttackStart(threat.getHostilTarget());

                events.ScheduleEvent(EVENT_BERSERK, Minutes(10));
                events.ScheduleEvent(EVENT_MARK, Seconds(24));
                events.ScheduleEvent(EVENT_METEOR, randtime(Seconds(10), Seconds(25)));
            }
开发者ID:DanielBallaSZTE,项目名称:TrinityCorePreWOTLK,代码行数:22,代码来源:boss_four_horsemen.cpp


注:本文中的randtime函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。