您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DoStartNoMovement函数代码示例

51自学网 2021-06-01 20:29:09
  C++
这篇教程C++ DoStartNoMovement函数代码示例写得很实用,希望能帮到您。

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

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

示例1: DoStartNoMovement

void Scripted_NoMovementAI::AttackStart(Unit* pWho){    if (!m_creature->CanAttackByItself())        return;    if (pWho && m_creature->Attack(pWho, true))    {        m_creature->AddThreat(pWho);        m_creature->SetInCombatWith(pWho);        pWho->SetInCombatWith(m_creature);        DoStartNoMovement(pWho);    }}
开发者ID:AwkwardDev,项目名称:mangos-d3,代码行数:14,


示例2: DoStartNoMovement

void Scripted_NoMovementAI::AttackStart(Unit* who){    if (!who)        return;    if (m_creature->Attack(who, true))    {        m_creature->AddThreat(who, 0.0f);        m_creature->SetInCombatWith(who);        who->SetInCombatWith(m_creature);        DoStartNoMovement(who);    }}
开发者ID:Trizzor,项目名称:uecore,代码行数:14,


示例3: Reset

        void Reset()        {            m_uiColdFlameTimer = 900;            SpellEntry* spell = GET_SPELL(SPELL_COLD_FLAME);            if (spell)                spell->EffectRadiusIndex[0] = 16; //prevent stack damage            DoCast(me, SPELL_COLD_FLAME);            me->SetVisible(false);            DoStartNoMovement(me->getVictim());            m_uiStage = 1;            m_uiRadius = 2;            m_uiOwnerEntry = 0;        }
开发者ID:ice74,项目名称:blizzwow,代码行数:16,


示例4: AttackStart

    void AttackStart(Unit* pWho) override    {        if (m_bIsIntroEvent || !m_bIsMainEvent)            return;        if (m_creature->Attack(pWho, true))        {            m_creature->AddThreat(pWho);            m_creature->SetInCombatWith(pWho);            pWho->SetInCombatWith(m_creature);            if (m_bPhase)                DoStartNoMovement(pWho);            else                DoStartMovement(pWho);        }    }
开发者ID:mynew4,项目名称:RustEmu-Core,代码行数:17,


示例5: AttackStart

    void AttackStart(Unit* who)    {        if (IsIntroEvent || !IsMainEvent)            return;        if (m_creature->Attack(who, true))        {            m_creature->AddThreat(who);            m_creature->SetInCombatWith(who);            who->SetInCombatWith(m_creature);            if (Phase)                DoStartNoMovement(who);            else                DoStartMovement(who);        }    }
开发者ID:Subv,项目名称:diamondcore,代码行数:17,


示例6: MoveInLineOfSight

        void MoveInLineOfSight(Unit* who) override        {            if (!who || me->GetVictim())                return;            if (me->CanCreatureAttack(who))            {                float attackRadius = me->GetAttackDistance(who);                if (me->IsWithinDistInMap(who, attackRadius) && me->GetDistanceZ(who) <= CREATURE_Z_ATTACK_RANGE && me->IsWithinLOSInMap(who))                {                    if (!me->IsInCombat())                    {                        DoStartNoMovement(who);                    }                }            }            else if (IntroStepCounter == 10 && me->IsWithinLOSInMap(who)&& me->IsWithinDistInMap(who, 30))                IntroStepCounter = 0;        }
开发者ID:DSlayerMan,项目名称:ArkCORE-NG,代码行数:19,


示例7: AttackStart

        void AttackStart(Unit* who)        {            if (!who)                return;            if (me->GetPositionZ() > 518.63f)                DoStartNoMovement(who);            if (me->GetPositionZ() < 518.63f)            {                if (me->Attack(who, true))                {                    Talk(SAY_AGGRO);                    me->SetInCombatWith(who);                    who->SetInCombatWith(me);                    me->GetMotionMaster()->MoveChase(who, 0, 0);                }            }        }
开发者ID:AlucardVoss,项目名称:Patchs,代码行数:21,


示例8: EnterCombat

            void EnterCombat(Unit* who)            {                events.Reset();                events.SetPhase(PHASE_ONE);                // phase-independent events                events.ScheduleEvent(EVENT_BERSERK, 600000);                events.ScheduleEvent(EVENT_DEATH_AND_DECAY, 10000);                // phase one only                events.ScheduleEvent(EVENT_P1_SUMMON_WAVE, 5000, 0, PHASE_ONE);                events.ScheduleEvent(EVENT_P1_SHADOW_BOLT, urand(5500, 6000), 0, PHASE_ONE);                events.ScheduleEvent(EVENT_P1_EMPOWER_CULTIST, urand(20000, 30000), 0, PHASE_ONE);                if (getDifficulty() != RAID_DIFFICULTY_10MAN_NORMAL)                    events.ScheduleEvent(EVENT_DOMINATE_MIND_H, 27000);                DoScriptText(SAY_AGGRO, me);                DoStartNoMovement(who);                me->RemoveAurasDueToSpell(SPELL_SHADOW_CHANNELING);                DoCast(me, SPELL_MANA_BARRIER, true);                instance->SetBossState(DATA_LADY_DEATHWHISPER, IN_PROGRESS);            }
开发者ID:Bes666,项目名称:sc406,代码行数:21,


示例9: AttackStart

        void AttackStart(Unit* pWho)        {            if (!pWho)                return;            if (me->GetPositionZ() > 518.63f)                DoStartNoMovement(pWho);            if (me->GetPositionZ() < 518.63f)            {                if (me->Attack(pWho, true))                {                    DoScriptText(SayAggro[3], me);                    me->SetInCombatWith(pWho);                    pWho->SetInCombatWith(me);                    me->GetMotionMaster()->MoveChase(pWho, 0, 0);                }            }        }
开发者ID:AwkwardDev,项目名称:CataOld,代码行数:21,


示例10: UpdateAI

    void UpdateAI(const uint32 diff) override    {        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())            return;        // Shoot        if (m_uiShootTimer < diff)        {            if (m_creature->GetDistance2d(m_creature->getVictim()) >= 5.0f && DoCastSpellIfCan(m_creature->getVictim(), SPELL_SHOOT_2) == CAST_OK)                m_uiShootTimer = urand(2500, 3500);        }        else             m_uiShootTimer -= diff;        if (!IsCombatMovement())        { //Melee            if (!m_bInMelee && (m_creature->GetDistance2d(m_creature->getVictim()) < 5.0f || m_creature->GetDistance2d(m_creature->getVictim()) > 95.0f || !m_creature->IsWithinLOSInMap(m_creature->getVictim())))            {                SetCombatMovement(true);                DoStartMovement(m_creature->getVictim());                m_bInMelee = true;                return;            }        }        else        { //Range            if (m_bInMelee && m_creature->GetDistance2d(m_creature->getVictim()) >= 5.0f && m_creature->GetDistance2d(m_creature->getVictim()) <= 95.0f && m_creature->IsWithinLOSInMap(m_creature->getVictim()))            {                SetCombatMovement(false);                m_bInMelee = false;                DoStartNoMovement(m_creature->getVictim());                return;            }        }                DoMeleeAttackIfReady();    }
开发者ID:Maduse,项目名称:server,代码行数:37,


示例11: UpdateAI

        void UpdateAI(const uint32 diff)        {            if (!Phase)                return;            if (me->getThreatManager().getThreatList().empty()) // Reset if event is begun and we don't have a threatlist            {                EnterEvadeMode();                return;            }            Creature* Essence = NULL;            if (EssenceGUID)            {                Essence = Unit::GetCreature(*me, EssenceGUID);                if (!Essence)                {                    EnterEvadeMode();                    return;                }            }            if (Timer <= diff)            {                switch (Counter)                {                case 0:                    me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);  // I R ANNNGRRRY!                    DoStartNoMovement(me);                    Timer = 3000;                    break;                case 1:                    Timer = 2800;                    me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SUBMERGE);  // Release the cube                    DoCast(me, SPELL_SUBMERGE);                    DoStartNoMovement(me);                    break;                case 2:                    Timer = 5000;                    if (Creature* Summon = DoSpawnCreature(23417+Phase, 0, 0, 0, 0, TEMPSUMMON_DEAD_DESPAWN, 0))                    {                        me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_SUBMERGED);  // Ribs: open                        Summon->AI()->AttackStart(SelectTarget(SELECT_TARGET_TOPAGGRO, 0));                        EssenceGUID = Summon->GetGUID();                        DoStartNoMovement(me);                    } else EnterEvadeMode();                    break;                case 3:                    Timer = 1000;                    if (Phase == 3)                    {                        if (!Essence->isAlive())                            DoCast(me, 7, true);                        else return;                    }                    else                    {                        if (Essence->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))                        {                            MergeThreatList(Essence);                            Essence->RemoveAllAuras();                            Essence->DeleteThreatList();                            Essence->GetMotionMaster()->MoveFollow(me, 0.0f, 0.0f);                        } else return;                    }                    break;                case 4:                    Timer = 1500;                    if (Essence->IsWithinDistInMap(me, 10))                    {                        Essence->SetUInt32Value(UNIT_NPC_EMOTESTATE, 374); //rotate and disappear                        Timer = 2000;                        me->RemoveAurasDueToSpell(SPELL_SUBMERGE);                    }                    else                    {                        MergeThreatList(Essence);                        Essence->RemoveAllAuras();                        Essence->DeleteThreatList();                        Essence->GetMotionMaster()->MoveFollow(me, 0, 0);                        return;                    }                    break;                case 5:                    if (Phase == 1)                    {                        DoScriptText(SUFF_SAY_AFTER, Essence);                    }                    else                    {                        DoScriptText(DESI_SAY_AFTER, Essence);                    }                    Essence->DespawnOrUnsummon();                    me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);                    EssenceGUID = 0;                    SoulCount = 0;                    SoulDeathCount = 0;                    Timer = 3000;                    break;                case 6://.........这里部分代码省略.........
开发者ID:Hellzfires,项目名称:TrinityCore,代码行数:101,


示例12: UpdateAI

        void UpdateAI(const uint32 uiDiff)        {            if (!UpdateVictim())                return;            if (m_uiBerserkTimer <= uiDiff)            {                DoScriptText(SAY_BERSERK, me);                DoCast(SPELL_BERSERK);                m_uiBerserkTimer = 600000;            } else m_uiBerserkTimer -= uiDiff;            if (IsHeroic() || !me->HasAura(SPELL_BONE_STORM))            {                if (m_uiBoneSpikeGraveyardTimer < uiDiff)                {                    for (uint8 i = 1; i <= m_uiBoneCount; ++i)                    {                        if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true, -SPELL_SPIKE_IMPALING))                        {                            Creature* pBone = me->SummonCreature(CREATURE_BONE_SPIKE, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 999999);                            CAST_AI(npc_bone_spike::npc_bone_spikeAI, pBone->AI())->SetPrisoner(pTarget->GetGUID());                            pTarget->AddAura(SPELL_SPIKE_IMPALING, pTarget);                        }                    }                    DoScriptText(RAND(SAY_SPIKE_1,SAY_SPIKE_2,SAY_SPIKE_3), me);                    m_uiBoneSpikeGraveyardTimer = 15000;                } else m_uiBoneSpikeGraveyardTimer -= uiDiff;            }            if (!me->HasAura(SPELL_BONE_STORM))            {                if (m_uiBoneStormTimer <= uiDiff)                {                    DoCast(SPELL_BONE_STORM);                    DoScriptText(SAY_STORM, me);                    DoScriptText(STORM_EMOTE, me);                    DoStartNoMovement(me->getVictim());                    me->SetSpeed(MOVE_RUN, fBaseSpeed*3.0f, true);                    m_uiBoneStormTimer = 45000; //bone storm 30 second + other spell casting time                } else m_uiBoneStormTimer -= uiDiff;                if (m_uiColdFlameTimer <= uiDiff)                {                    if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, -8.0f, true))                    {                        pInstance->SetData(DATA_ANGLE, (me->GetAngle(pTarget)*1000));                        DoCast(pTarget, SPELL_COLD_FLAME_SPAWN);                    }                    else                    {                        pInstance->SetData(DATA_ANGLE, (me->GetAngle(me->getVictim())*1000));                        DoCast(me->getVictim(), SPELL_COLD_FLAME_SPAWN);                    }                    m_uiColdFlameTimer = 10000;                } else m_uiColdFlameTimer -= uiDiff;                if (m_uiSaberSlashTimer <= uiDiff)                {                    DoCast(me->getVictim(), SPELL_SABER_SLASH);                    m_uiSaberSlashTimer = 7000;                } else m_uiSaberSlashTimer -= uiDiff;            }            else            {                if (m_uiBoneStormRemoveTimer <= uiDiff)                {                    me->RemoveAurasDueToSpell(SPELL_BONE_STORM);                    DoStartMovement(me->getVictim());                    me->SetSpeed(MOVE_RUN, fBaseSpeed, true);                    m_uiBoneStormRemoveTimer = RAID_MODE(20000,30000,20000,30000);                } else m_uiBoneStormRemoveTimer -= uiDiff;                if(m_uiMoveTimer <= uiDiff)                {                    float x, y, z;                    if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))                    {                        pTarget->GetPosition(x, y, z);                        me->GetMotionMaster()->MovePoint(0, x, y, z);                    }                    DoCast(SPELL_COLD_FLAME_SPAWN_B);                    m_uiMoveTimer = 5000;                } else m_uiMoveTimer -= uiDiff;            }            DoMeleeAttackIfReady();        }
开发者ID:ice74,项目名称:blizzwow,代码行数:88,


示例13: UpdateAI

		void UpdateAI(const uint32 diff)		{			if (!UpdateVictim())				return;			if (!m_pInstance || m_pInstance->GetData(DATA_VALITHRIA_DREAMWALKER_EVENT) != IN_PROGRESS)				summons.DespawnAll();			if (m_uiResetTimer <= diff)			{				if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 90)					EnterEvadeMode();				m_uiResetTimer = 5000;			} else m_uiResetTimer -= diff;			if (Phase == 1)			{				DoStartNoMovement(me->getVictim());				me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);				m_uiEndTimer = 999999999;				if (m_uiSummonTimer <= diff)				{					if (getDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL || getDifficulty() == RAID_DIFFICULTY_10MAN_HEROIC)					{						DoSummon(CREATURE_ZOMBIE, Pos[RAND(0,4)]);						DoSummon(CREATURE_SKELETON, Pos[RAND(0,4)]);						DoSummon(CREATURE_ARCHMAGE, Pos[RAND(0,4)]);						DoSummon(CREATURE_SUPPRESSER, Pos[RAND(0,4)]);						DoSummon(CREATURE_ABOMINATION, Pos[RAND(0,4)]);					}					if (getDifficulty() == RAID_DIFFICULTY_25MAN_NORMAL || getDifficulty() == RAID_DIFFICULTY_25MAN_HEROIC)					{						DoSummon(CREATURE_ZOMBIE, Pos[RAND(0,1,2,3)]);						DoSummon(CREATURE_SKELETON, Pos[RAND(0,1,2,3)]);						DoSummon(CREATURE_ARCHMAGE, Pos[RAND(0,1,2,3)]);						DoSummon(CREATURE_SUPPRESSER, Pos[RAND(0,1,2,3)]);						DoSummon(CREATURE_ABOMINATION, Pos[RAND(0,1,2,3)]);					}					m_uiSummonTimer = 28000;				} else m_uiSummonTimer -= diff;				if (m_uiPortalTimer <= diff)				{					DoScriptText(SAY_OPEN_PORTAL, me);					me->SummonCreature(CREATURE_PORTAL, me->GetPositionX()+15, me->GetPositionY()+15, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 15000);					me->SummonCreature(CREATURE_PORTAL, me->GetPositionX()+10, me->GetPositionY()+25, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 15000);					me->SummonCreature(CREATURE_PORTAL, me->GetPositionX()+15, me->GetPositionY()-25, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 15000);					m_uiPortalTimer = 30000;				} else m_uiPortalTimer -= diff;				if (!ABOVEHP && (me->GetHealth()*100 / me->GetMaxHealth()) > 75)				{					DoScriptText(SAY_ABOVE_75, me);					ABOVEHP = true;				}				if (!BELOWHP && (me->GetHealth()*100 / me->GetMaxHealth()) < 25)				{					DoScriptText(SAY_BELOW_25, me);					BELOWHP = true;				}				if ((me->GetHealth()*100 / me->GetMaxHealth()) > 99)				{					Phase = 2;					me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);					me->RemoveAurasDueToSpell(SPELL_CORRUPTION);					end = true;				}				if ((me->GetHealth()*100 / me->GetMaxHealth()) > 2)				{					Phase = 4;					m_uiEndTimer = 2000;					me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);					me->SetReactState(REACT_PASSIVE);					me->RemoveAurasDueToSpell(SPELL_CORRUPTION);				}			}			if (Phase == 2)			{				Phase = 3;				m_uiEnd2Timer = 1000;				m_uiEnd3Timer = 8000;				DoScriptText(SAY_END, me);			}			if (Phase == 4)			{				if (m_uiEndTimer <= diff)				{					Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0);					if(pTarget && !pTarget->IsFriendlyTo(me))					{//.........这里部分代码省略.........
开发者ID:InkVisible,项目名称:wow,代码行数:101,


示例14: UpdateAI

            void UpdateAI(const uint32 uiDiff)            {                if(m_uiPhase == 1)                    DoStartNoMovement(me->getVictim());                else if(m_uiPhase == 2)                    DoStartMovement(me->getVictim());                if (m_uiIntroTimer <= uiDiff && bIntro && m_uiIntroPhase < 7)                {                    switch (m_uiIntroPhase)                    {                        case 1: DoScriptText(SAY_INTRO_2, me); m_uiIntroTimer = 10000; break;                        case 2: DoScriptText(SAY_INTRO_3, me); m_uiIntroTimer = 7000;  break;                        case 3: DoScriptText(SAY_INTRO_4, me); m_uiIntroTimer = 12000; break;                        case 4: DoScriptText(SAY_INTRO_5, me); m_uiIntroTimer = 7000;  break;                        case 5: DoScriptText(SAY_INTRO_6, me); m_uiIntroTimer = 11000; break;                        case 6: DoScriptText(SAY_INTRO_7, me); m_uiIntroTimer = 20000; break;                    }                    ++m_uiIntroPhase;                } else m_uiIntroTimer -= uiDiff;                if (!UpdateVictim())                    return;                if (m_uiBerserkTimer < uiDiff)                {                    DoCast(me, SPELL_BERSERK);                    DoScriptText(SAY_BERSERK, me);                    m_uiBerserkTimer = 600000;                } else m_uiBerserkTimer -= uiDiff;                if (m_uiCultTimer < uiDiff)                {                    EmpowerCultist();                    m_uiCultTimer = urand(20000, 23000);                } else m_uiCultTimer -= uiDiff;                if (m_uiDeathandDecayTimer < uiDiff)                {                    if(Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))                        DoCast(pTarget, SPELL_DEATH_AND_DECAY);                    m_uiDeathandDecayTimer = 11000;                } else m_uiDeathandDecayTimer -= uiDiff;                if (m_uiDominateMindTimer < uiDiff)                {                    for (uint8 i = 1; i <= RAID_MODE(0,1,1,3); ++i)                    {                        if(Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true, -SPELL_DOMINATE_MIND))                            DoCast(pTarget, SPELL_DOMINATE_MIND);                    }                    DoScriptText(SAY_DOMINATE_MIND, me);                    m_uiDominateMindTimer = 15000;                } else m_uiDominateMindTimer -= uiDiff;                if (m_uiPhase == 1)                {                    if (m_uiShadowBoltTimer < uiDiff)                    {                        if(Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))                            DoCast(pTarget, SPELL_SHADOW_BOLT);                        m_uiShadowBoltTimer = 6000;                    } else m_uiShadowBoltTimer -= uiDiff;                    if (m_uiSummonWaveTimer < uiDiff)                    {                        if (Difficulty() == RAID_DIFFICULTY_10MAN_NORMAL || Difficulty() == RAID_DIFFICULTY_10MAN_HEROIC)                            RandomSpawn();                        else                        {                            DoSummon(CREATURE_FANATIC, SpawnLoc[0]);                            DoSummon(CREATURE_ADHERENT, SpawnLoc[1]);                            DoSummon(CREATURE_FANATIC, SpawnLoc[2]);                            DoSummon(CREATURE_ADHERENT, SpawnLoc[3]);                            DoSummon(CREATURE_FANATIC, SpawnLoc[4]);                            DoSummon(CREATURE_ADHERENT, SpawnLoc[5]);                            DoSummon(RAND(CREATURE_FANATIC,CREATURE_ADHERENT), SpawnLoc[6]);                        }                        bFirstSummon = false ? true : true;                        m_uiSummonWaveTimer = !bFirstSummon ? 10000 : 60000;                    } else m_uiSummonWaveTimer -= uiDiff;                }                if (m_uiPhase == 2)                {                    if (m_uiFrostBoltTimer < uiDiff)                    {                        DoCast(me->getVictim(), SPELL_FROST_BOLT);                        m_uiFrostBoltTimer = 10000;                    } else m_uiFrostBoltTimer -= uiDiff;                    if (m_uiFrostValleyTimer < uiDiff)                    {                        DoCast(SPELL_FROST_BOLT_VALLEY);                        m_uiFrostValleyTimer = 19000;                    } else m_uiFrostValleyTimer -= uiDiff;                    if (m_uiInsignificanceTimer < uiDiff)                    {                        DoCast(me->getVictim(), SPELL_INSIGNIFICANCE);//.........这里部分代码省略.........
开发者ID:ice74,项目名称:blizzwow,代码行数:101,


示例15: UpdateAI

//.........这里部分代码省略.........                    Blizzard->SetInCombatWithZone();                    Blizzard->SetFaction(me->GetFaction());                    me->CastSpell(Blizzard, SPELL_SUMMON_BLIZZ, false);                    Blizzard->CastSpell(Blizzard, SPELL_CIRCULAR_BLIZZARD, false);                    Blizzard->GetMotionMaster()->MovePath(110110101, false);                }                break;            }            SuperCastTimer = urand(35000, 40000);        }        else SuperCastTimer -= diff;        if (!ElementalsSpawned && HealthBelowPct(40))        {            ElementalsSpawned = true;            Creature* ElementalOne   = NULL;            Creature* ElementalTwo   = NULL;            Creature* ElementalThree = NULL;            Creature* ElementalFour  = NULL;            ElementalOne     = me->SummonCreature(NPC_WATER_ELEMENTAL, -11168.1f, -1939.29f, 232.092f, 1.46f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000);            ElementalTwo     = me->SummonCreature(NPC_WATER_ELEMENTAL, -11138.2f, -1915.38f, 232.092f, 3.00f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000);            ElementalThree   = me->SummonCreature(NPC_WATER_ELEMENTAL, -11161.7f, -1885.36f, 232.092f, 4.59f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000);            ElementalFour    = me->SummonCreature(NPC_WATER_ELEMENTAL, -11192.4f, -1909.36f, 232.092f, 6.19f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 90000);            if (ElementalOne)            {                Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);                if (!pTarget)                    return;                DoStartNoMovement(pTarget);                ElementalOne->SetInCombatWithZone();                ElementalOne->CombatStart(pTarget);                ElementalOne->SetFaction(me->GetFaction());                ElementalOne->SetRooted(true);                ElementalOne->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);                ElementalOne->SetModifierValue(UNIT_MOD_RESISTANCE_FROST,  BASE_VALUE, 0);            }            if (ElementalTwo)            {                Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);                if (!pTarget)                    return;                DoStartNoMovement(pTarget);                ElementalTwo->SetInCombatWithZone();                ElementalTwo->CombatStart(pTarget);                ElementalTwo->SetFaction(me->GetFaction());                ElementalTwo->SetRooted(true);                ElementalTwo->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);                ElementalTwo->SetModifierValue(UNIT_MOD_RESISTANCE_FROST,  BASE_VALUE, 0);            }            if (ElementalThree)            {                Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);                if (!pTarget)                    return;                DoStartNoMovement(pTarget);                ElementalThree->SetInCombatWithZone();                ElementalThree->CombatStart(pTarget);
开发者ID:Phentora,项目名称:OregonCore,代码行数:67,


示例16: UpdateAI

        void UpdateAI(const uint32 diff)        {            if(!UpdateVictim())                return;            events.Update(diff);            if(enrageTimer <= diff)            {                DoCast(SPELL_BERSERK);                enrageTimer = 600000;            }else enrageTimer -= diff;            if(uint32 eventId = events.ExecuteEvent())            {                switch(eventId)                {                    case EVENT_LAVA_SPEW:                        DoCast(me, SPELL_LAVA_SPEW);                        events.ScheduleEvent(EVENT_LAVA_SPEW, urand(15000, 20000), 0, PHASE_NORMAL);                        break;                    case EVENT_MAGMA_SPIT:                        if(Unit * victim = me->GetVictim())                        {                            float dist = me->GetDistance(victim);                            if(dist >= 60.0f)                                EnterEvadeMode();                            else if(dist >= INTERACTION_DISTANCE)                                DoCast(victim, SPELL_MAGMA_SPIT, true);                        }                        events.ScheduleEvent(EVENT_MAGMA_SPIT, urand(3000, 5000), 0, PHASE_NORMAL);                        break;                    case EVENT_PILLAR_OF_FLAME:                        {                            Unit * target = SelectTarget(SELECT_TARGET_RANDOM, 0, -15.0f, true);                            if(!target)                                target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true);                            if(target)                                me->SummonCreature(NPC_PILLAR_OF_FLAME_TRIGGER, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 20000);                            Talk(EMOTE_PILLAR);                            DoCast(me, SPELL_PILLAR_OF_FLAME);                            events.ScheduleEvent(EVENT_PILLAR_OF_FLAME, 30000, 0, PHASE_NORMAL);                        }                        break;                    case EVENT_MANGLE:                        DoCastVictim(SPELL_MANGLE, true);                        SetIdle();                        events.ScheduleEvent(EVENT_MANGLE, 95000);                        events.ScheduleEvent(EVENT_IGNITION, 2000);                        events.SetPhase(PHASE_HEAD);                        break;                    case EVENT_IGNITION:                    {                        bool pos = urand(0, 1);                        Movement::MoveSplineInit init(me);                        init.SetFacing(pos ? 4.7f : 3.47f);                        std::list<Position> summonPos;                          for (uint8 i = 0; i < 8; i++)                            me->SummonCreature(NPC_IGNITION_TRIGGER, me->GetPositionX() + i, me->GetPositionY() + i, me->GetPositionZ(), 1.5f, TEMPSUMMON_TIMED_DESPAWN, 65100);                            summonPos.clear();                        events.DelayEvents(10000);                        events.ScheduleEvent(EVENT_MASSIVE_CRASH, 3000);                        events.ScheduleEvent(EVENT_EJECT, 40000);                        break;                    }                    case EVENT_MASSIVE_CRASH:                        Talk(EMOTE_CRASH);                        DoCast(SPELL_MASSIVE_CRASH);                        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                        SetPincers(true);                        events.ScheduleEvent(EVENT_MASSIVE_CRASH_END, 10000);                        break;                    case EVENT_IMPALE_END:                        if(Unit * head = veh->GetPassenger(4)) // make the head unattackable                        {                            head->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);                            head->CastSpell(head, SPELL_QUEST_INVIS_5, true);                        }                        me->RemoveAurasDueToSpell(SPELL_CHAIN_R);                        me->RemoveAurasDueToSpell(SPELL_CHAIN_L);                        events.RescheduleEvent(EVENT_MAGMA_SPIT, 5000);                        events.RescheduleEvent(EVENT_LAVA_SPEW, 8000);                        events.RescheduleEvent(EVENT_MAGMA_SPIT, urand(8000, 10000));                        events.RescheduleEvent(EVENT_PILLAR_OF_FLAME, urand(8000, 12000));                        events.RescheduleEvent(EVENT_MANGLE, urand(25000, 30000));                    case EVENT_MASSIVE_CRASH_END:                        me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);                        me->SetReactState(REACT_AGGRESSIVE);                        events.SetPhase(PHASE_NORMAL);                        if(Unit * victim = me->GetVictim()) // resume combat                        {                            DoStartNoMovement(victim);                            me->SetUInt64Value(UNIT_FIELD_TARGET, victim->GetGUID());                        }                        break;                    case EVENT_EJECT:                        // Tank in seat 3 will be dead by then                        SetPincers(false);//.........这里部分代码省略.........
开发者ID:AwkwardDev,项目名称:WoWSource434,代码行数:101,


示例17: UpdateAI

    void UpdateAI(const uint32 uiDiff)    {        if (IntroText == 1 || IntroText == 2)        {            if (IntroText_Timer < uiDiff)            {                switch(IntroText)                {                    case 1: DoScriptText(SAY_INTRO2, m_creature); break;                    case 2: DoScriptText(SAY_INTRO3, m_creature); break;                }                IntroText++;                IntroText_Timer = 8000;            }            else IntroText_Timer -= uiDiff;        }        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())            return;        if (Phase == 1)        {            if ((m_creature->GetPower(POWER_MANA)*100 / m_creature->GetMaxPower(POWER_MANA)) < 1)            {                DoScriptText(SAY_PHASE2, m_creature);                Phase = 2;                return;            }            if (!m_creature->HasAura(SPELL_MANA_BARRIER))                 DoCastSpellIfCan(m_creature, SPELL_MANA_BARRIER);            if (Summon_Cult_Timer < uiDiff)            {                if (SpawnLeft)                {                    m_creature->SummonCreature(NPC_CULT_FANATIC,ADD_1X,ADD_1Y,ADD_1Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);                    m_creature->SummonCreature(NPC_CULT_ADHERENT,ADD_2X,ADD_2Y,ADD_2Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);                    m_creature->SummonCreature(NPC_CULT_FANATIC,ADD_3X,ADD_3Y,ADD_3Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);                    SpawnLeft = false;                }                else                {                    m_creature->SummonCreature(NPC_CULT_ADHERENT,ADD_4X,ADD_4Y,ADD_4Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);                    m_creature->SummonCreature(NPC_CULT_FANATIC,ADD_5X,ADD_5Y,ADD_5Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);                    m_creature->SummonCreature(NPC_CULT_ADHERENT,ADD_6X,ADD_6Y,ADD_6Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);                    SpawnLeft = true;                }                Summon_Cult_Count++;                Summon_Cult_Timer = 60000;            }            else Summon_Cult_Timer -= uiDiff;            if (ShadowBolt_Timer < uiDiff)            {                if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))                     DoCastSpellIfCan(target, m_bIsRegularMode ? SPELL_SHADOW_BOLT : H_SPELL_SHADOW_BOLT);                ShadowBolt_Timer = 5000;            }            else ShadowBolt_Timer -= uiDiff;            DoStartNoMovement(m_creature->getVictim());        }        if (Phase == 2)        {            if (m_creature->HasAura(SPELL_MANA_BARRIER))                m_creature->RemoveAurasDueToSpell(SPELL_MANA_BARRIER);            if (Insignificance_Timer < uiDiff)            {                 DoCastSpellIfCan(m_creature->getVictim(), SPELL_INSIGNIFICANCE);                Insignificance_Timer = 5000+rand()%40000;            }            else Insignificance_Timer -= uiDiff;            if (FrostboltVolley_Timer < uiDiff)            {                if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))                     DoCastSpellIfCan(target, m_bIsRegularMode ? SPELL_FROSTBOLT_VOLLEY : H_SPELL_FROSTBOLT_VOLLEY);                FrostboltVolley_Timer = 40000;            }            else FrostboltVolley_Timer -= uiDiff;            if (Summon_Shade_Count < Summon_Cult_Count)            {                if (Summon_Shade_Timer < uiDiff)                {                     DoCastSpellIfCan(m_creature, SPELL_VENGEFUL_SHADE);                    Summon_Shade_Count++;                    Summon_Shade_Timer = 25000;                }                else Summon_Shade_Timer -= uiDiff;            }            if (Frostbolt_Timer < uiDiff)            {                if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))                     DoCastSpellIfCan(target, m_bIsRegularMode ? SPELL_FROSTBOLT : H_SPELL_FROSTBOLT);//.........这里部分代码省略.........
开发者ID:Asandru,项目名称:Script-Land,代码行数:101,


示例18: AttackStart

 void AttackStart(Unit * target) {     if (me->Attack(target, true))         DoStartNoMovement(target); }
开发者ID:AwkwardDev,项目名称:WoWSource434,代码行数:5,



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


C++ DoStatusMessage函数代码示例
C++ DoStartMovement函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。